X-Git-Url: http://nitlanguage.org diff --git a/c_src/nit__typing.sep.2.c b/c_src/nit__typing.sep.2.c index 166ac80..fb8d6cb 100644 --- a/c_src/nit__typing.sep.2.c +++ b/c_src/nit__typing.sep.2.c @@ -1,9923 +1,9786 @@ #include "nit__typing.sep.0.h" -/* method typing#AForExpr#do_type_iterator for (self: AForExpr, TypeVisitor, MType) */ -void nit__typing___AForExpr___do_type_iterator(val* self, val* p0, val* p1) { +/* method typing#AVarReassignExpr#accept_typing for (self: AVarReassignExpr, TypeVisitor) */ +void nit__typing___AVarReassignExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var_mtype /* var mtype: MType */; -short int var /* : Bool */; -int cltype; -int idtype; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -static val* varonce5; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : FlatString */; -val* var10 /* : nullable MClass */; -val* var_objcla /* var objcla: nullable MClass */; -val* var11 /* : null */; -short int var12 /* : Bool */; -short int var13 /* : Bool */; +val* var /* : nullable Variable */; +val* var2 /* : nullable Variable */; +val* var_variable /* var variable: nullable Variable */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : nullable MType */; +val* var_readtype /* var readtype: nullable MType */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +val* var_other12 /* var other: nullable Object */; +short int var13 /* : Bool */; short int var15 /* : Bool */; -short int var17 /* : Bool */; -static val* varonce18; -val* var19 /* : String */; -char* var20 /* : NativeString */; -long var21 /* : Int */; -val* var22 /* : FlatString */; -val* var23 /* : AExpr */; -val* var25 /* : AExpr */; -short int var26 /* : Bool */; -int cltype27; -int idtype28; -val* var29 /* : nullable CallSite */; -val* var_itdef /* var itdef: nullable CallSite */; -val* var30 /* : null */; +val* var17 /* : nullable MType */; +val* var19 /* : nullable MType */; +val* var_writetype /* var writetype: nullable MType */; +short int var20 /* : Bool */; +short int var21 /* : Bool */; +short int var23 /* : Bool */; +short int var25 /* : Bool */; +val* var26 /* : nullable MType */; +val* var_rettype /* var rettype: nullable MType */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +short int var30 /* : Bool */; short int var31 /* : Bool */; -short int var32 /* : Bool */; -short int var34 /* : Bool */; -short int var36 /* : Bool */; -static val* varonce37; -val* var38 /* : String */; -char* var39 /* : NativeString */; -long var40 /* : Int */; -val* var41 /* : FlatString */; -static val* varonce42; -val* var43 /* : String */; -char* var44 /* : NativeString */; -long var45 /* : Int */; -val* var46 /* : FlatString */; -val* var47 /* : Array[Object] */; -long var48 /* : Int */; -val* var49 /* : NativeArray[Object] */; -val* var50 /* : String */; -val* var52 /* : MSignature */; -val* var54 /* : MSignature */; -val* var55 /* : nullable MType */; -val* var57 /* : nullable MType */; -val* var_ittype /* var ittype: nullable MType */; -val* var58 /* : null */; -short int var59 /* : Bool */; -short int var60 /* : Bool */; -short int var62 /* : Bool */; -short int var64 /* : Bool */; -static val* varonce65; -val* var66 /* : String */; -char* var67 /* : NativeString */; -long var68 /* : Int */; -val* var69 /* : FlatString */; -static val* varonce70; -val* var71 /* : String */; -char* var72 /* : NativeString */; -long var73 /* : Int */; -val* var74 /* : FlatString */; -val* var75 /* : nullable MClass */; -val* var_colit_cla /* var colit_cla: nullable MClass */; -static val* varonce76; -val* var77 /* : String */; -char* var78 /* : NativeString */; -long var79 /* : Int */; -val* var80 /* : FlatString */; -val* var81 /* : nullable MClass */; -val* var_mapit_cla /* var mapit_cla: nullable MClass */; -short int var82 /* : Bool */; -short int var_is_col /* var is_col: Bool */; -short int var83 /* : Bool */; -short int var_is_map /* var is_map: Bool */; -short int var84 /* : Bool */; -val* var85 /* : null */; -short int var86 /* : Bool */; -short int var87 /* : Bool */; -val* var_other89 /* var other: nullable Object */; -short int var90 /* : Bool */; -short int var91 /* : Bool */; -short int var_ /* var : Bool */; -val* var92 /* : Array[MType] */; -long var93 /* : Int */; -val* var_94 /* var : Array[MType] */; -val* var95 /* : MClassType */; -val* var97 /* : MClassType */; -val* var98 /* : MType */; -val* var99 /* : MClassType */; -short int var100 /* : Bool */; -val* var101 /* : MModule */; -val* var103 /* : MModule */; -val* var104 /* : nullable MClassType */; -val* var106 /* : nullable MClassType */; -val* var107 /* : MClassType */; -val* var_coltype /* var coltype: MClassType */; -val* var108 /* : nullable Array[Variable] */; -val* var110 /* : nullable Array[Variable] */; -val* var_variables /* var variables: nullable Array[Variable] */; -long var111 /* : Int */; -long var113 /* : Int */; -long var114 /* : Int */; -short int var115 /* : Bool */; -short int var117 /* : Bool */; -short int var118 /* : Bool */; -static val* varonce119; -val* var120 /* : String */; -char* var121 /* : NativeString */; -long var122 /* : Int */; -val* var123 /* : FlatString */; -val* var124 /* : nullable Object */; -val* var125 /* : Array[MType] */; -val* var126 /* : nullable Object */; -short int var128 /* : Bool */; -short int var129 /* : Bool */; -val* var130 /* : null */; -short int var131 /* : Bool */; -short int var132 /* : Bool */; -short int var134 /* : Bool */; -short int var135 /* : Bool */; -short int var_136 /* var : Bool */; -val* var137 /* : Array[MType] */; -long var138 /* : Int */; -val* var_139 /* var : Array[MType] */; -val* var140 /* : MClassType */; -val* var142 /* : MClassType */; -val* var143 /* : MType */; -val* var144 /* : MClassType */; -val* var146 /* : MClassType */; -val* var147 /* : MType */; -val* var148 /* : MClassType */; -short int var149 /* : Bool */; -val* var150 /* : MModule */; -val* var152 /* : MModule */; -val* var153 /* : nullable MClassType */; -val* var155 /* : nullable MClassType */; -val* var156 /* : MClassType */; -val* var_coltype157 /* var coltype: MClassType */; -val* var158 /* : nullable Array[Variable] */; -val* var160 /* : nullable Array[Variable] */; -val* var_variables161 /* var variables: nullable Array[Variable] */; -long var162 /* : Int */; -long var164 /* : Int */; -long var165 /* : Int */; -short int var166 /* : Bool */; -short int var168 /* : Bool */; -short int var169 /* : Bool */; -static val* varonce170; -val* var171 /* : String */; -char* var172 /* : NativeString */; -long var173 /* : Int */; -val* var174 /* : FlatString */; -long var175 /* : Int */; -val* var176 /* : nullable Object */; -val* var177 /* : Array[MType] */; -long var178 /* : Int */; -val* var179 /* : nullable Object */; -long var181 /* : Int */; -val* var182 /* : nullable Object */; -val* var183 /* : Array[MType] */; -long var184 /* : Int */; -val* var185 /* : nullable Object */; -short int var187 /* : Bool */; -short int var188 /* : Bool */; -short int var189 /* : Bool */; -short int var_190 /* var : Bool */; -short int var191 /* : Bool */; -static val* varonce192; -val* var193 /* : String */; -char* var194 /* : NativeString */; -long var195 /* : Int */; -val* var196 /* : FlatString */; -short int var197 /* : Bool */; -val* var198 /* : MType */; -val* var199 /* : MType */; -short int var200 /* : Bool */; -int cltype201; -int idtype202; -const char* var_class_name; -static val* varonce204; -val* var205 /* : String */; -char* var206 /* : NativeString */; -long var207 /* : Int */; -val* var208 /* : FlatString */; -short int var209 /* : Bool */; -val* var210 /* : nullable CallSite */; -val* var_ikdef /* var ikdef: nullable CallSite */; -val* var211 /* : null */; -short int var212 /* : Bool */; -short int var213 /* : Bool */; -short int var215 /* : Bool */; -short int var217 /* : Bool */; -static val* varonce218; -val* var219 /* : String */; -char* var220 /* : NativeString */; -long var221 /* : Int */; -val* var222 /* : FlatString */; -static val* varonce223; -val* var224 /* : String */; -char* var225 /* : NativeString */; -long var226 /* : Int */; -val* var227 /* : FlatString */; -val* var228 /* : Array[Object] */; -long var229 /* : Int */; -val* var230 /* : NativeArray[Object] */; -val* var231 /* : String */; -static val* varonce233; -val* var234 /* : String */; -char* var235 /* : NativeString */; -long var236 /* : Int */; -val* var237 /* : FlatString */; -short int var238 /* : Bool */; -val* var239 /* : nullable CallSite */; -val* var_itemdef /* var itemdef: nullable CallSite */; -val* var240 /* : null */; -short int var241 /* : Bool */; -short int var242 /* : Bool */; -short int var244 /* : Bool */; -short int var246 /* : Bool */; -static val* varonce247; -val* var248 /* : String */; -char* var249 /* : NativeString */; -long var250 /* : Int */; -val* var251 /* : FlatString */; -static val* varonce252; -val* var253 /* : String */; -char* var254 /* : NativeString */; -long var255 /* : Int */; -val* var256 /* : FlatString */; -val* var257 /* : Array[Object] */; -long var258 /* : Int */; -val* var259 /* : NativeArray[Object] */; -val* var260 /* : String */; -static val* varonce262; -val* var263 /* : String */; -char* var264 /* : NativeString */; -long var265 /* : Int */; -val* var266 /* : FlatString */; -short int var267 /* : Bool */; -val* var268 /* : nullable CallSite */; -val* var_nextdef /* var nextdef: nullable CallSite */; -val* var269 /* : null */; -short int var270 /* : Bool */; -short int var271 /* : Bool */; -short int var273 /* : Bool */; -short int var275 /* : Bool */; -static val* varonce276; -val* var277 /* : String */; -char* var278 /* : NativeString */; -long var279 /* : Int */; -val* var280 /* : FlatString */; -static val* varonce281; -val* var282 /* : String */; -char* var283 /* : NativeString */; -long var284 /* : Int */; -val* var285 /* : FlatString */; -val* var286 /* : Array[Object] */; -long var287 /* : Int */; -val* var288 /* : NativeArray[Object] */; -val* var289 /* : String */; -static val* varonce291; -val* var292 /* : String */; -char* var293 /* : NativeString */; -long var294 /* : Int */; -val* var295 /* : FlatString */; -short int var296 /* : Bool */; -val* var297 /* : nullable CallSite */; -static val* varonce299; -val* var300 /* : String */; -char* var301 /* : NativeString */; -long var302 /* : Int */; -val* var303 /* : FlatString */; -short int var304 /* : Bool */; -val* var305 /* : nullable CallSite */; -val* var_keydef /* var keydef: nullable CallSite */; -val* var306 /* : null */; -short int var307 /* : Bool */; -short int var308 /* : Bool */; -short int var310 /* : Bool */; -short int var312 /* : Bool */; -static val* varonce313; -val* var314 /* : String */; -char* var315 /* : NativeString */; -long var316 /* : Int */; -val* var317 /* : FlatString */; -static val* varonce318; -val* var319 /* : String */; -char* var320 /* : NativeString */; -long var321 /* : Int */; -val* var322 /* : FlatString */; -val* var323 /* : Array[Object] */; -long var324 /* : Int */; -val* var325 /* : NativeArray[Object] */; -val* var326 /* : String */; -short int var328 /* : Bool */; -val* var329 /* : nullable Array[Variable] */; -val* var331 /* : nullable Array[Variable] */; -long var332 /* : Int */; -long var334 /* : Int */; -long var335 /* : Int */; -short int var336 /* : Bool */; -short int var338 /* : Bool */; -short int var_339 /* var : Bool */; -val* var340 /* : AExpr */; -val* var342 /* : AExpr */; -short int var343 /* : Bool */; -int cltype344; -int idtype345; -val* var346 /* : nullable Array[Variable] */; -val* var348 /* : nullable Array[Variable] */; -val* var349 /* : nullable Object */; -val* var_variable /* var variable: Variable */; -val* var350 /* : nullable MType */; -val* var352 /* : nullable MType */; -val* var_vtype /* var vtype: MType */; -val* var353 /* : AExpr */; -val* var355 /* : AExpr */; -short int var356 /* : Bool */; -int cltype357; -int idtype358; -static val* varonce359; -val* var360 /* : String */; -char* var361 /* : NativeString */; -long var362 /* : Int */; -val* var363 /* : FlatString */; -short int var364 /* : Bool */; -val* var365 /* : nullable CallSite */; -static val* varonce367; -val* var368 /* : String */; -char* var369 /* : NativeString */; -long var370 /* : Int */; -val* var371 /* : FlatString */; -short int var372 /* : Bool */; -val* var373 /* : nullable CallSite */; -static val* varonce375; -val* var376 /* : String */; -char* var377 /* : NativeString */; -long var378 /* : Int */; -val* var379 /* : FlatString */; -short int var380 /* : Bool */; -val* var381 /* : nullable CallSite */; var_v = p0; -var_mtype = p1; -/* isa MNullType */ -cltype = type_nit__MNullType.color; -idtype = type_nit__MNullType.id; -if(cltype >= var_mtype->type->table_size) { -var = 0; -} else { -var = var_mtype->type->type_table[cltype] == idtype; +{ +{ /* Inline scope#AVarFormExpr#variable (self) on */ +var2 = self->attrs[COLOR_nit__scope__AVarFormExpr___variable].val; /* _variable on */ +var = var2; +RET_LABEL1:(void)0; } -if (var){ -if (varonce) { -var1 = varonce; +} +var_variable = var; +if (var_variable == NULL) { +var3 = 0; /* is null */ } else { -var2 = "Type error: \'for\' cannot iterate over \'null\'"; -var3 = 44; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var3 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_variable,((val*)NULL)) on */ +var_other = ((val*)NULL); { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var1); /* Direct call typing#TypeVisitor#error on */ +var6 = ((short int(*)(val* self, val* p0))(var_variable->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_variable, var_other); /* == on */ } -goto RET_LABEL; -} else { +var7 = !var6; +var4 = var7; +goto RET_LABEL5; +RET_LABEL5:(void)0; } -if (varonce5) { -var6 = varonce5; -} else { -var7 = "Object"; -var8 = 6; -var9 = standard___standard__NativeString___to_s_with_length(var7, var8); -var6 = var9; -varonce5 = var6; +var3 = var4; +} +if (unlikely(!var3)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 949); +fatal_exit(1); } { -var10 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var6); +var8 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var_variable); } -var_objcla = var10; -var11 = NULL; -if (var_objcla == NULL) { -var12 = 1; /* is null */ +var_readtype = var8; +if (var_readtype == NULL) { +var9 = 1; /* is null */ } else { -var12 = 0; /* arg is null but recv is not */ +var9 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_objcla,var11) on */ -var_other = var11; +{ /* Inline kernel#Object#== (var_readtype,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_objcla,var_other) on */ -var17 = var_objcla == var_other; -var15 = var17; -goto RET_LABEL16; -RET_LABEL16:(void)0; -} -} +{ /* Inline kernel#Object#is_same_instance (var_readtype,var_other12) on */ +var15 = var_readtype == var_other12; var13 = var15; goto RET_LABEL14; RET_LABEL14:(void)0; } -var12 = var13; } -if (var12){ -goto RET_LABEL; -} else { +var10 = var13; +goto RET_LABEL11; +RET_LABEL11:(void)0; } -if (varonce18) { -var19 = varonce18; +var9 = var10; +} +if (var9){ +goto RET_LABEL; } else { -var20 = "iterator"; -var21 = 8; -var22 = standard___standard__NativeString___to_s_with_length(var20, var21); -var19 = var22; -varonce18 = var19; } { -{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ -var25 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var25 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738); -show_backtrace(1); -} -var23 = var25; -RET_LABEL24:(void)0; -} +{ /* Inline typing#AReassignFormExpr#read_type= (self,var_readtype) on */ +self->attrs[COLOR_nit__typing__AReassignFormExpr___read_type].val = var_readtype; /* _read_type on */ +RET_LABEL16:(void)0; } -/* isa ASelfExpr */ -cltype27 = type_nit__ASelfExpr.color; -idtype28 = type_nit__ASelfExpr.id; -if(cltype27 >= var23->type->table_size) { -var26 = 0; -} else { -var26 = var23->type->type_table[cltype27] == idtype28; } { -var29 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var19, var26); +{ /* Inline typing#Variable#declared_type (var_variable) on */ +var19 = var_variable->attrs[COLOR_nit__typing__Variable___declared_type].val; /* _declared_type on */ +var17 = var19; +RET_LABEL18:(void)0; } -var_itdef = var29; -var30 = NULL; -if (var_itdef == NULL) { -var31 = 1; /* is null */ +} +var_writetype = var17; +if (var_writetype == NULL) { +var20 = 1; /* is null */ } else { -var31 = 0; /* arg is null but recv is not */ +var20 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_itdef,var30) on */ -var_other = var30; +{ /* Inline kernel#Object#== (var_writetype,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_itdef,var_other) on */ -var36 = var_itdef == var_other; -var34 = var36; -goto RET_LABEL35; -RET_LABEL35:(void)0; -} +{ /* Inline kernel#Object#is_same_instance (var_writetype,var_other12) on */ +var25 = var_writetype == var_other12; +var23 = var25; +goto RET_LABEL24; +RET_LABEL24:(void)0; } -var32 = var34; -goto RET_LABEL33; -RET_LABEL33:(void)0; } -var31 = var32; +var21 = var23; +goto RET_LABEL22; +RET_LABEL22:(void)0; } -if (var31){ -if (varonce37) { -var38 = varonce37; -} else { -var39 = "Type Error: \'for\' expects a type providing \'iterator\' method, got \'"; -var40 = 67; -var41 = standard___standard__NativeString___to_s_with_length(var39, var40); -var38 = var41; -varonce37 = var38; +var20 = var21; } -if (varonce42) { -var43 = varonce42; +if (var20){ +goto RET_LABEL; } else { -var44 = "\'."; -var45 = 2; -var46 = standard___standard__NativeString___to_s_with_length(var44, var45); -var43 = var46; -varonce42 = var43; -} -var47 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var47 = array_instance Array[Object] */ -var48 = 3; -var49 = NEW_standard__NativeArray(var48, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var49)->values[0] = (val*) var38; -((struct instance_standard__NativeArray*)var49)->values[1] = (val*) var_mtype; -((struct instance_standard__NativeArray*)var49)->values[2] = (val*) var43; -{ -((void (*)(val* self, val* p0, long p1))(var47->class->vft[COLOR_standard__array__Array__with_native]))(var47, var49, var48) /* with_native on */; -} } { -var50 = ((val* (*)(val* self))(var47->class->vft[COLOR_standard__string__Object__to_s]))(var47) /* to_s on */; +var26 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_readtype, var_writetype); } +var_rettype = var26; { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var50); /* Direct call typing#TypeVisitor#error on */ +nit__typing___nit__typing__TypeVisitor___set_variable(var_v, self, var_variable, var_rettype); /* Direct call typing#TypeVisitor#set_variable on */ } -goto RET_LABEL; +if (var_rettype == NULL) { +var27 = 0; /* is null */ } else { +var27 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_rettype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#AForExpr#method_iterator= (self,var_itdef) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_iterator].val = var_itdef; /* _method_iterator on */ -RET_LABEL51:(void)0; +var30 = ((short int(*)(val* self, val* p0))(var_rettype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_rettype, var_other); /* == on */ } +var31 = !var30; +var28 = var31; +goto RET_LABEL29; +RET_LABEL29:(void)0; +} +var27 = var28; } { -{ /* Inline typing#CallSite#msignature (var_itdef) on */ -var54 = var_itdef->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ -if (unlikely(var54 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494); -show_backtrace(1); +{ /* Inline typing#AExpr#is_typed= (self,var27) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var27; /* _is_typed on */ +RET_LABEL32:(void)0; } -var52 = var54; -RET_LABEL53:(void)0; } +RET_LABEL:; } +/* method typing#AContinueExpr#accept_typing for (self: AContinueExpr, TypeVisitor) */ +void nit__typing___AContinueExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable AExpr */; +val* var2 /* : nullable AExpr */; +val* var_nexpr /* var nexpr: nullable AExpr */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : nullable MType */; +var_v = p0; { -{ /* Inline model#MSignature#return_mtype (var52) on */ -var57 = var52->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ -var55 = var57; -RET_LABEL56:(void)0; +{ /* Inline parser_nodes#AEscapeExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AEscapeExpr___n_expr].val; /* _n_expr on */ +var = var2; +RET_LABEL1:(void)0; } } -var_ittype = var55; -var58 = NULL; -if (var_ittype == NULL) { -var59 = 1; /* is null */ +var_nexpr = var; +if (var_nexpr == NULL) { +var3 = 0; /* is null */ } else { -var59 = 0; /* arg is null but recv is not */ +var3 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_ittype,var58) on */ -var_other = var58; +{ /* Inline kernel#Object#!= (var_nexpr,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_ittype,var_other) on */ -var64 = var_ittype == var_other; -var62 = var64; -goto RET_LABEL63; -RET_LABEL63:(void)0; +var6 = ((short int(*)(val* self, val* p0))(var_nexpr->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nexpr, var_other); /* == on */ } +var7 = !var6; +var4 = var7; +goto RET_LABEL5; +RET_LABEL5:(void)0; } -var60 = var62; -goto RET_LABEL61; -RET_LABEL61:(void)0; +var3 = var4; } -var59 = var60; +if (var3){ +{ +var8 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_nexpr); } -if (var59){ -if (varonce65) { -var66 = varonce65; } else { -var67 = "Type Error: \'for\' expects method \'iterator\' to return an \'Iterator\' or \'MapIterator\' type\'."; -var68 = 91; -var69 = standard___standard__NativeString___to_s_with_length(var67, var68); -var66 = var69; -varonce65 = var66; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var66); /* Direct call typing#TypeVisitor#error on */ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL9:(void)0; } -goto RET_LABEL; -} else { } -if (varonce70) { -var71 = varonce70; -} else { -var72 = "Iterator"; -var73 = 8; -var74 = standard___standard__NativeString___to_s_with_length(var72, var73); -var71 = var74; -varonce70 = var71; +RET_LABEL:; } +/* method typing#ABreakExpr#accept_typing for (self: ABreakExpr, TypeVisitor) */ +void nit__typing___ABreakExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable AExpr */; +val* var2 /* : nullable AExpr */; +val* var_nexpr /* var nexpr: nullable AExpr */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : nullable MType */; +var_v = p0; { -var75 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, self, var71); -} -var_colit_cla = var75; -if (varonce76) { -var77 = varonce76; -} else { -var78 = "MapIterator"; -var79 = 11; -var80 = standard___standard__NativeString___to_s_with_length(var78, var79); -var77 = var80; -varonce76 = var77; +{ /* Inline parser_nodes#AEscapeExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AEscapeExpr___n_expr].val; /* _n_expr on */ +var = var2; +RET_LABEL1:(void)0; } -{ -var81 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, self, var77); } -var_mapit_cla = var81; -var82 = 0; -var_is_col = var82; -var83 = 0; -var_is_map = var83; -var85 = NULL; -if (var_colit_cla == NULL) { -var86 = 0; /* is null */ +var_nexpr = var; +if (var_nexpr == NULL) { +var3 = 0; /* is null */ } else { -var86 = 1; /* arg is null and recv is not */ +var3 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_colit_cla,var85) on */ -var_other89 = var85; +{ /* Inline kernel#Object#!= (var_nexpr,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var90 = ((short int (*)(val* self, val* p0))(var_colit_cla->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_colit_cla, var_other89) /* == on */; +var6 = ((short int(*)(val* self, val* p0))(var_nexpr->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nexpr, var_other); /* == on */ } -var91 = !var90; -var87 = var91; -goto RET_LABEL88; -RET_LABEL88:(void)0; +var7 = !var6; +var4 = var7; +goto RET_LABEL5; +RET_LABEL5:(void)0; } -var86 = var87; +var3 = var4; } -var_ = var86; -if (var86){ -var92 = NEW_standard__Array(&type_standard__Array__nit__MType); -var93 = 1; +if (var3){ { -standard___standard__Array___with_capacity(var92, var93); /* Direct call array#Array#with_capacity on */ +var8 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_nexpr); +} +} else { } -var_94 = var92; { -{ /* Inline model#MClass#mclass_type (var_objcla) on */ -var97 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var97 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL9:(void)0; } -var95 = var97; -RET_LABEL96:(void)0; } +RET_LABEL:; } +/* method typing#AReturnExpr#accept_typing for (self: AReturnExpr, TypeVisitor) */ +void nit__typing___AReturnExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable AExpr */; +val* var2 /* : nullable AExpr */; +val* var_nexpr /* var nexpr: nullable AExpr */; +val* var3 /* : nullable MPropDef */; +val* var5 /* : nullable MPropDef */; +val* var_mpropdef /* var mpropdef: nullable MPropDef */; +short int var6 /* : Bool */; +int cltype; +int idtype; +val* var7 /* : nullable MSignature */; +val* var9 /* : nullable MSignature */; +val* var10 /* : nullable MType */; +val* var12 /* : nullable MType */; +val* var_ret_type /* var ret_type: nullable Object */; +short int var13 /* : Bool */; +int cltype14; +int idtype15; +val* var16 /* : nullable MType */; +val* var18 /* : nullable MType */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var22 /* : Bool */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +short int var25 /* : Bool */; +short int var27 /* : Bool */; +short int var28 /* : Bool */; +val* var29 /* : nullable MType */; +val* var30 /* : nullable MType */; +static val* varonce; +val* var31 /* : String */; +char* var32 /* : NativeString */; +val* var33 /* : FlatString */; +short int var34 /* : Bool */; +short int var35 /* : Bool */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; +static val* varonce39; +val* var40 /* : String */; +char* var41 /* : NativeString */; +val* var42 /* : FlatString */; +var_v = p0; { -var98 = nit___nit__MType___as_nullable(var95); +{ /* Inline parser_nodes#AReturnExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AReturnExpr___n_expr].val; /* _n_expr on */ +var = var2; +RET_LABEL1:(void)0; } -{ -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_94, var98); /* Direct call array#AbstractArray#push on */ } +var_nexpr = var; { -var99 = nit___nit__MClass___get_mtype(var_colit_cla, var_94); +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var5 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var3 = var5; +RET_LABEL4:(void)0; } -{ -var100 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_ittype, var99); } -var84 = var100; +var_mpropdef = var3; +/* isa MMethodDef */ +cltype = type_nit__MMethodDef.color; +idtype = type_nit__MMethodDef.id; +if(var_mpropdef == NULL) { +var6 = 0; } else { -var84 = var_; -} -if (var84){ -{ -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var103 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var103 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); -} -var101 = var103; -RET_LABEL102:(void)0; -} -} -{ -{ /* Inline typing#TypeVisitor#anchor (var_v) on */ -var106 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ -var104 = var106; -RET_LABEL105:(void)0; -} +if(cltype >= var_mpropdef->type->table_size) { +var6 = 0; +} else { +var6 = var_mpropdef->type->type_table[cltype] == idtype; } -{ -var107 = nit___nit__MType___supertype_to(var_ittype, var101, var104, var_colit_cla); } -var_coltype = var107; +if (var6){ { -{ /* Inline scope#AForExpr#variables (self) on */ -var110 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ -var108 = var110; -RET_LABEL109:(void)0; +{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ +var9 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ +var7 = var9; +RET_LABEL8:(void)0; } } -var_variables = var108; -if (var_variables == NULL) { +if (var7 == NULL) { PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 974); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 997); +fatal_exit(1); } else { -{ /* Inline array#AbstractArrayRead#length (var_variables) on */ -if (unlikely(var_variables == NULL)) { +{ /* Inline model#MSignature#return_mtype (var7) on */ +if (unlikely(var7 == NULL)) { PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24); -show_backtrace(1); -} -var113 = var_variables->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var111 = var113; -RET_LABEL112:(void)0; +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768); +fatal_exit(1); } -} -var114 = 1; -{ -{ /* Inline kernel#Int#!= (var111,var114) on */ -var117 = var111 == var114; -var118 = !var117; -var115 = var118; -goto RET_LABEL116; -RET_LABEL116:(void)0; +var12 = var7->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ +var10 = var12; +RET_LABEL11:(void)0; } } -if (var115){ -if (varonce119) { -var120 = varonce119; +var_ret_type = var10; } else { -var121 = "Type Error: \'for\' expects only one variable when using \'Iterator\'."; -var122 = 66; -var123 = standard___standard__NativeString___to_s_with_length(var121, var122); -var120 = var123; -varonce119 = var120; -} -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var120); /* Direct call typing#TypeVisitor#error on */ -} +/* isa MAttributeDef */ +cltype14 = type_nit__MAttributeDef.color; +idtype15 = type_nit__MAttributeDef.id; +if(var_mpropdef == NULL) { +var13 = 0; } else { -if (var_variables == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 977); -show_backtrace(1); +if(cltype14 >= var_mpropdef->type->table_size) { +var13 = 0; } else { -var124 = standard___standard__SequenceRead___Collection__first(var_variables); -} -{ -var125 = ((val* (*)(val* self))(var_coltype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype) /* arguments on */; +var13 = var_mpropdef->type->type_table[cltype14] == idtype15; } -{ -var126 = standard___standard__SequenceRead___Collection__first(var125); } +if (var13){ { -{ /* Inline typing#Variable#declared_type= (var124,var126) on */ -var124->attrs[COLOR_nit__typing__Variable___declared_type].val = var126; /* _declared_type on */ -RET_LABEL127:(void)0; -} +{ /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on */ +var18 = var_mpropdef->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on */ +var16 = var18; +RET_LABEL17:(void)0; } } -var128 = 1; -var_is_col = var128; +var_ret_type = var16; } else { +PRINT_ERROR("Runtime error: %s", "Aborted"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1001); +fatal_exit(1); } -var130 = NULL; -if (var_mapit_cla == NULL) { -var131 = 0; /* is null */ +} +if (var_nexpr == NULL) { +var19 = 0; /* is null */ } else { -var131 = 1; /* arg is null and recv is not */ +var19 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_mapit_cla,var130) on */ -var_other89 = var130; +{ /* Inline kernel#Object#!= (var_nexpr,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var134 = ((short int (*)(val* self, val* p0))(var_mapit_cla->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mapit_cla, var_other89) /* == on */; +var22 = ((short int(*)(val* self, val* p0))(var_nexpr->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nexpr, var_other); /* == on */ } -var135 = !var134; -var132 = var135; -goto RET_LABEL133; -RET_LABEL133:(void)0; +var23 = !var22; +var20 = var23; +goto RET_LABEL21; +RET_LABEL21:(void)0; } -var131 = var132; +var19 = var20; } -var_136 = var131; -if (var131){ -var137 = NEW_standard__Array(&type_standard__Array__nit__MType); -var138 = 2; -{ -standard___standard__Array___with_capacity(var137, var138); /* Direct call array#Array#with_capacity on */ +if (var19){ +if (var_ret_type == NULL) { +var24 = 0; /* is null */ +} else { +var24 = 1; /* arg is null and recv is not */ } -var_139 = var137; +if (0) { +{ /* Inline kernel#Object#!= (var_ret_type,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline model#MClass#mclass_type (var_objcla) on */ -var142 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var142 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); +var27 = ((short int(*)(val* self, val* p0))(var_ret_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret_type, var_other); /* == on */ } -var140 = var142; -RET_LABEL141:(void)0; +var28 = !var27; +var25 = var28; +goto RET_LABEL26; +RET_LABEL26:(void)0; } +var24 = var25; } +if (var24){ { -var143 = nit___nit__MType___as_nullable(var140); +var29 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var_nexpr, var_ret_type); } +} else { { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_139, var143); /* Direct call array#AbstractArray#push on */ +var30 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_nexpr); } -{ -{ /* Inline model#MClass#mclass_type (var_objcla) on */ -var146 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var146 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); +if (likely(varonce!=NULL)) { +var31 = varonce; +} else { +var32 = "Error: `return` with value in a procedure."; +var33 = standard___standard__NativeString___to_s_with_length(var32, 42l); +var31 = var33; +varonce = var31; } -var144 = var146; -RET_LABEL145:(void)0; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, var_nexpr, var31); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; } -{ -var147 = nit___nit__MType___as_nullable(var144); +} else { +if (var_ret_type == NULL) { +var34 = 0; /* is null */ +} else { +var34 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_ret_type,((val*)NULL)) on */ +var_other = ((val*)NULL); { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_139, var147); /* Direct call array#AbstractArray#push on */ +var37 = ((short int(*)(val* self, val* p0))(var_ret_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret_type, var_other); /* == on */ } -{ -var148 = nit___nit__MClass___get_mtype(var_mapit_cla, var_139); +var38 = !var37; +var35 = var38; +goto RET_LABEL36; +RET_LABEL36:(void)0; } -{ -var149 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_ittype, var148); +var34 = var35; } -var129 = var149; +if (var34){ +if (likely(varonce39!=NULL)) { +var40 = varonce39; } else { -var129 = var_136; +var41 = "Error: `return` without value in a function."; +var42 = standard___standard__NativeString___to_s_with_length(var41, 44l); +var40 = var42; +varonce39 = var40; } -if (var129){ { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var152 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var152 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var40); /* Direct call typing#TypeVisitor#error on */ } -var150 = var152; -RET_LABEL151:(void)0; +goto RET_LABEL; +} else { } } { -{ /* Inline typing#TypeVisitor#anchor (var_v) on */ -var155 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ -var153 = var155; -RET_LABEL154:(void)0; +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL43:(void)0; } } -{ -var156 = nit___nit__MType___supertype_to(var_ittype, var150, var153, var_mapit_cla); +RET_LABEL:; } -var_coltype157 = var156; +/* method typing#AAbortExpr#accept_typing for (self: AAbortExpr, TypeVisitor) */ +void nit__typing___AAbortExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +var_v = p0; { -{ /* Inline scope#AForExpr#variables (self) on */ -var160 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ -var158 = var160; -RET_LABEL159:(void)0; -} -} -var_variables161 = var158; -if (var_variables161 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 986); -show_backtrace(1); -} else { -{ /* Inline array#AbstractArrayRead#length (var_variables161) on */ -if (unlikely(var_variables161 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24); -show_backtrace(1); +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL1:(void)0; } -var164 = var_variables161->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var162 = var164; -RET_LABEL163:(void)0; } +RET_LABEL:; } -var165 = 2; +/* method typing#AIfExpr#accept_typing for (self: AIfExpr, TypeVisitor) */ +void nit__typing___AIfExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : nullable AExpr */; +val* var6 /* : nullable AExpr */; +val* var7 /* : nullable AExpr */; +val* var9 /* : nullable AExpr */; +short int var11 /* : Bool */; +val* var12 /* : nullable AExpr */; +val* var14 /* : nullable AExpr */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var18 /* : Bool */; +short int var19 /* : Bool */; +short int var_ /* var : Bool */; +val* var20 /* : nullable AExpr */; +val* var22 /* : nullable AExpr */; +short int var23 /* : Bool */; +short int var24 /* : Bool */; +val* var_other26 /* var other: nullable Object */; +short int var27 /* : Bool */; +short int var29 /* : Bool */; +val* var30 /* : nullable AExpr */; +val* var32 /* : nullable AExpr */; +val* var33 /* : nullable MType */; +var_v = p0; { -{ /* Inline kernel#Int#!= (var162,var165) on */ -var168 = var162 == var165; -var169 = !var168; -var166 = var169; -goto RET_LABEL167; -RET_LABEL167:(void)0; +{ /* Inline parser_nodes#AIfExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1857); +fatal_exit(1); } +var = var2; +RET_LABEL1:(void)0; } -if (var166){ -if (varonce170) { -var171 = varonce170; -} else { -var172 = "Type Error: \'for\' expects two variables when using \'MapIterator\'."; -var173 = 65; -var174 = standard___standard__NativeString___to_s_with_length(var172, var173); -var171 = var174; -varonce170 = var171; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var171); /* Direct call typing#TypeVisitor#error on */ -} -} else { -var175 = 0; -if (var_variables161 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 989); -show_backtrace(1); -} else { -var176 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_variables161, var175); +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } { -var177 = ((val* (*)(val* self))(var_coltype157->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype157) /* arguments on */; +{ /* Inline parser_nodes#AIfExpr#n_then (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on */ +var4 = var6; +RET_LABEL5:(void)0; } -var178 = 0; -{ -var179 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var177, var178); } { -{ /* Inline typing#Variable#declared_type= (var176,var179) on */ -var176->attrs[COLOR_nit__typing__Variable___declared_type].val = var179; /* _declared_type on */ -RET_LABEL180:(void)0; -} -} -var181 = 1; -if (var_variables161 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 990); -show_backtrace(1); -} else { -var182 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_variables161, var181); +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var4); /* Direct call typing#TypeVisitor#visit_stmt on */ } { -var183 = ((val* (*)(val* self))(var_coltype157->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype157) /* arguments on */; +{ /* Inline parser_nodes#AIfExpr#n_else (self) on */ +var9 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_else].val; /* _n_else on */ +var7 = var9; +RET_LABEL8:(void)0; } -var184 = 1; -{ -var185 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var183, var184); } { -{ /* Inline typing#Variable#declared_type= (var182,var185) on */ -var182->attrs[COLOR_nit__typing__Variable___declared_type].val = var185; /* _declared_type on */ -RET_LABEL186:(void)0; -} -} -} -var187 = 1; -var_is_map = var187; -} else { -} -var189 = !var_is_col; -var_190 = var189; -if (var189){ -var191 = !var_is_map; -var188 = var191; -} else { -var188 = var_190; -} -if (var188){ -if (varonce192) { -var193 = varonce192; -} else { -var194 = "Type Error: \'for\' expects method \'iterator\' to return an \'Iterator\' or \'MapIterator\' type\'."; -var195 = 91; -var196 = standard___standard__NativeString___to_s_with_length(var194, var195); -var193 = var196; -varonce192 = var193; +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var7); /* Direct call typing#TypeVisitor#visit_stmt on */ } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var193); /* Direct call typing#TypeVisitor#error on */ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL10:(void)0; } -goto RET_LABEL; -} else { } { -var197 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on */; +{ /* Inline parser_nodes#AIfExpr#n_then (self) on */ +var14 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on */ +var12 = var14; +RET_LABEL13:(void)0; } -if (var197){ -{ -var198 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_mtype); } -var_mtype = var198; +if (var12 == NULL) { +var15 = 0; /* is null */ } else { +var15 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var12,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var199 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on */; +var18 = ((short int(*)(val* self, val* p0))(var12->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var12, var_other); /* == on */ } -var_mtype = var199; -/* isa MClassType */ -cltype201 = type_nit__MClassType.color; -idtype202 = type_nit__MClassType.id; -if(cltype201 >= var_mtype->type->table_size) { -var200 = 0; -} else { -var200 = var_mtype->type->type_table[cltype201] == idtype202; +var19 = !var18; +var16 = var19; +goto RET_LABEL17; +RET_LABEL17:(void)0; } -if (unlikely(!var200)) { -var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1004); -show_backtrace(1); +var15 = var16; } +var_ = var15; +if (var15){ { -{ /* Inline typing#AForExpr#coltype= (self,var_mtype) on */ -self->attrs[COLOR_nit__typing__AForExpr___coltype].val = var_mtype; /* _coltype on */ -RET_LABEL203:(void)0; -} -} -if (varonce204) { -var205 = varonce204; -} else { -var206 = "is_ok"; -var207 = 5; -var208 = standard___standard__NativeString___to_s_with_length(var206, var207); -var205 = var208; -varonce204 = var205; +{ /* Inline parser_nodes#AIfExpr#n_else (self) on */ +var22 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_else].val; /* _n_else on */ +var20 = var22; +RET_LABEL21:(void)0; } -var209 = 0; -{ -var210 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var205, var209); } -var_ikdef = var210; -var211 = NULL; -if (var_ikdef == NULL) { -var212 = 1; /* is null */ +if (var20 == NULL) { +var23 = 1; /* is null */ } else { -var212 = 0; /* arg is null but recv is not */ +var23 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_ikdef,var211) on */ -var_other = var211; +{ /* Inline kernel#Object#== (var20,((val*)NULL)) on */ +var_other26 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_ikdef,var_other) on */ -var217 = var_ikdef == var_other; -var215 = var217; -goto RET_LABEL216; -RET_LABEL216:(void)0; -} +{ /* Inline kernel#Object#is_same_instance (var20,var_other26) on */ +var29 = var20 == var_other26; +var27 = var29; +goto RET_LABEL28; +RET_LABEL28:(void)0; } -var213 = var215; -goto RET_LABEL214; -RET_LABEL214:(void)0; } -var212 = var213; +var24 = var27; +goto RET_LABEL25; +RET_LABEL25:(void)0; } -if (var212){ -if (varonce218) { -var219 = varonce218; -} else { -var220 = "Type Error: \'for\' expects a method \'is_ok\' in \'Iterator\' type "; -var221 = 62; -var222 = standard___standard__NativeString___to_s_with_length(var220, var221); -var219 = var222; -varonce218 = var219; +var23 = var24; } -if (varonce223) { -var224 = varonce223; +var11 = var23; } else { -var225 = "."; -var226 = 1; -var227 = standard___standard__NativeString___to_s_with_length(var225, var226); -var224 = var227; -varonce223 = var224; -} -var228 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var228 = array_instance Array[Object] */ -var229 = 3; -var230 = NEW_standard__NativeArray(var229, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var230)->values[0] = (val*) var219; -((struct instance_standard__NativeArray*)var230)->values[1] = (val*) var_ittype; -((struct instance_standard__NativeArray*)var230)->values[2] = (val*) var224; -{ -((void (*)(val* self, val* p0, long p1))(var228->class->vft[COLOR_standard__array__Array__with_native]))(var228, var230, var229) /* with_native on */; -} +var11 = var_; } +if (var11){ { -var231 = ((val* (*)(val* self))(var228->class->vft[COLOR_standard__string__Object__to_s]))(var228) /* to_s on */; +{ /* Inline parser_nodes#AIfExpr#n_then (self) on */ +var32 = self->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on */ +var30 = var32; +RET_LABEL31:(void)0; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var231); /* Direct call typing#TypeVisitor#error on */ } -goto RET_LABEL; +if (var30 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1037); +fatal_exit(1); } else { +var33 = ((val*(*)(val* self))(var30->class->vft[COLOR_nit__typing__AExpr__mtype]))(var30); /* mtype on */ } { -{ /* Inline typing#AForExpr#method_is_ok= (self,var_ikdef) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_is_ok].val = var_ikdef; /* _method_is_ok on */ -RET_LABEL232:(void)0; -} -} -if (varonce233) { -var234 = varonce233; -} else { -var235 = "item"; -var236 = 4; -var237 = standard___standard__NativeString___to_s_with_length(var235, var236); -var234 = var237; -varonce233 = var234; +{ /* Inline typing#AExpr#mtype= (self,var33) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var33; /* _mtype on */ +RET_LABEL34:(void)0; } -var238 = 0; -{ -var239 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var234, var238); } -var_itemdef = var239; -var240 = NULL; -if (var_itemdef == NULL) { -var241 = 1; /* is null */ } else { -var241 = 0; /* arg is null but recv is not */ -} -if (0) { -{ /* Inline kernel#Object#== (var_itemdef,var240) on */ -var_other = var240; -{ -{ /* Inline kernel#Object#is_same_instance (var_itemdef,var_other) on */ -var246 = var_itemdef == var_other; -var244 = var246; -goto RET_LABEL245; -RET_LABEL245:(void)0; } +RET_LABEL:; } -var242 = var244; -goto RET_LABEL243; -RET_LABEL243:(void)0; -} -var241 = var242; -} -if (var241){ -if (varonce247) { -var248 = varonce247; -} else { -var249 = "Type Error: \'for\' expects a method \'item\' in \'Iterator\' type "; -var250 = 61; -var251 = standard___standard__NativeString___to_s_with_length(var249, var250); -var248 = var251; -varonce247 = var248; -} -if (varonce252) { -var253 = varonce252; -} else { -var254 = "."; -var255 = 1; -var256 = standard___standard__NativeString___to_s_with_length(var254, var255); -var253 = var256; -varonce252 = var253; -} -var257 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var257 = array_instance Array[Object] */ -var258 = 3; -var259 = NEW_standard__NativeArray(var258, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var259)->values[0] = (val*) var248; -((struct instance_standard__NativeArray*)var259)->values[1] = (val*) var_ittype; -((struct instance_standard__NativeArray*)var259)->values[2] = (val*) var253; +/* method typing#AIfexprExpr#accept_typing for (self: AIfexprExpr, TypeVisitor) */ +void nit__typing___AIfexprExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : AExpr */; +val* var6 /* : AExpr */; +val* var7 /* : nullable MType */; +val* var_t1 /* var t1: nullable MType */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; +val* var11 /* : nullable MType */; +val* var_t2 /* var t2: nullable MType */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +short int var14 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +short int var_ /* var : Bool */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +short int var22 /* : Bool */; +short int var24 /* : Bool */; +val* var25 /* : Array[MType] */; +val* var_26 /* var : Array[MType] */; +val* var27 /* : nullable MType */; +val* var_t /* var t: nullable MType */; +short int var28 /* : Bool */; +short int var29 /* : Bool */; +short int var31 /* : Bool */; +short int var33 /* : Bool */; +val* var34 /* : NativeArray[String] */; +static val* varonce; +static val* varonce35; +val* var36 /* : String */; +char* var37 /* : NativeString */; +val* var38 /* : FlatString */; +static val* varonce39; +val* var40 /* : String */; +char* var41 /* : NativeString */; +val* var42 /* : FlatString */; +static val* varonce43; +val* var44 /* : String */; +char* var45 /* : NativeString */; +val* var46 /* : FlatString */; +val* var47 /* : String */; +val* var48 /* : String */; +val* var49 /* : String */; +var_v = p0; { -((void (*)(val* self, val* p0, long p1))(var257->class->vft[COLOR_standard__array__Array__with_native]))(var257, var259, var258) /* with_native on */; +{ /* Inline parser_nodes#AIfexprExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1880); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; } } { -var260 = ((val* (*)(val* self))(var257->class->vft[COLOR_standard__string__Object__to_s]))(var257) /* to_s on */; +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var260); /* Direct call typing#TypeVisitor#error on */ +{ /* Inline parser_nodes#AIfexprExpr#n_then (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_then].val; /* _n_then on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_then"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1886); +fatal_exit(1); +} +var4 = var6; +RET_LABEL5:(void)0; } -goto RET_LABEL; -} else { } { -{ /* Inline typing#AForExpr#method_item= (self,var_itemdef) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_item].val = var_itemdef; /* _method_item on */ -RET_LABEL261:(void)0; +var7 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var4); } +var_t1 = var7; +{ +{ /* Inline parser_nodes#AIfexprExpr#n_else (self) on */ +var10 = self->attrs[COLOR_nit__parser_nodes__AIfexprExpr___n_else].val; /* _n_else on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_else"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1892); +fatal_exit(1); +} +var8 = var10; +RET_LABEL9:(void)0; } -if (varonce262) { -var263 = varonce262; -} else { -var264 = "next"; -var265 = 4; -var266 = standard___standard__NativeString___to_s_with_length(var264, var265); -var263 = var266; -varonce262 = var263; } -var267 = 0; { -var268 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var263, var267); +var11 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var8); } -var_nextdef = var268; -var269 = NULL; -if (var_nextdef == NULL) { -var270 = 1; /* is null */ +var_t2 = var11; +if (var_t1 == NULL) { +var13 = 1; /* is null */ } else { -var270 = 0; /* arg is null but recv is not */ +var13 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_nextdef,var269) on */ -var_other = var269; +{ /* Inline kernel#Object#== (var_t1,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_nextdef,var_other) on */ -var275 = var_nextdef == var_other; -var273 = var275; -goto RET_LABEL274; -RET_LABEL274:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_t1,var_other) on */ +var18 = var_t1 == var_other; +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; } } -var271 = var273; -goto RET_LABEL272; -RET_LABEL272:(void)0; +var14 = var16; +goto RET_LABEL15; +RET_LABEL15:(void)0; } -var270 = var271; +var13 = var14; } -if (var270){ -if (varonce276) { -var277 = varonce276; +var_ = var13; +if (var13){ +var12 = var_; } else { -var278 = "Type Error: \'for\' expects a method \'next\' in \'Iterator\' type "; -var279 = 61; -var280 = standard___standard__NativeString___to_s_with_length(var278, var279); -var277 = var280; -varonce276 = var277; -} -if (varonce281) { -var282 = varonce281; +if (var_t2 == NULL) { +var19 = 1; /* is null */ } else { -var283 = "."; -var284 = 1; -var285 = standard___standard__NativeString___to_s_with_length(var283, var284); -var282 = var285; -varonce281 = var282; +var19 = 0; /* arg is null but recv is not */ } -var286 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var286 = array_instance Array[Object] */ -var287 = 3; -var288 = NEW_standard__NativeArray(var287, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var288)->values[0] = (val*) var277; -((struct instance_standard__NativeArray*)var288)->values[1] = (val*) var_ittype; -((struct instance_standard__NativeArray*)var288)->values[2] = (val*) var282; +if (0) { +{ /* Inline kernel#Object#== (var_t2,((val*)NULL)) on */ +var_other = ((val*)NULL); { -((void (*)(val* self, val* p0, long p1))(var286->class->vft[COLOR_standard__array__Array__with_native]))(var286, var288, var287) /* with_native on */; +{ /* Inline kernel#Object#is_same_instance (var_t2,var_other) on */ +var24 = var_t2 == var_other; +var22 = var24; +goto RET_LABEL23; +RET_LABEL23:(void)0; } } -{ -var289 = ((val* (*)(val* self))(var286->class->vft[COLOR_standard__string__Object__to_s]))(var286) /* to_s on */; +var20 = var22; +goto RET_LABEL21; +RET_LABEL21:(void)0; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var289); /* Direct call typing#TypeVisitor#error on */ +var19 = var20; } +var12 = var19; +} +if (var12){ goto RET_LABEL; } else { } +var25 = NEW_standard__Array(&type_standard__Array__nit__MType); { -{ /* Inline typing#AForExpr#method_next= (self,var_nextdef) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_next].val = var_nextdef; /* _method_next on */ -RET_LABEL290:(void)0; -} +standard___standard__Array___with_capacity(var25, 2l); /* Direct call array#Array#with_capacity on */ } -if (varonce291) { -var292 = varonce291; -} else { -var293 = "finish"; -var294 = 6; -var295 = standard___standard__NativeString___to_s_with_length(var293, var294); -var292 = var295; -varonce291 = var292; -} -var296 = 0; +var_26 = var25; { -var297 = nit__typing___nit__typing__TypeVisitor___try_get_method(var_v, self, var_ittype, var292, var296); +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_26, var_t1); /* Direct call array#AbstractArray#push on */ } { -{ /* Inline typing#AForExpr#method_finish= (self,var297) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_finish].val = var297; /* _method_finish on */ -RET_LABEL298:(void)0; -} -} -if (var_is_map){ -if (varonce299) { -var300 = varonce299; -} else { -var301 = "key"; -var302 = 3; -var303 = standard___standard__NativeString___to_s_with_length(var301, var302); -var300 = var303; -varonce299 = var300; +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_26, var_t2); /* Direct call array#AbstractArray#push on */ } -var304 = 0; { -var305 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var300, var304); +var27 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_26); } -var_keydef = var305; -var306 = NULL; -if (var_keydef == NULL) { -var307 = 1; /* is null */ +var_t = var27; +if (var_t == NULL) { +var28 = 1; /* is null */ } else { -var307 = 0; /* arg is null but recv is not */ +var28 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_keydef,var306) on */ -var_other = var306; +{ /* Inline kernel#Object#== (var_t,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_keydef,var_other) on */ -var312 = var_keydef == var_other; -var310 = var312; -goto RET_LABEL311; -RET_LABEL311:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_t,var_other) on */ +var33 = var_t == var_other; +var31 = var33; +goto RET_LABEL32; +RET_LABEL32:(void)0; } } -var308 = var310; -goto RET_LABEL309; -RET_LABEL309:(void)0; +var29 = var31; +goto RET_LABEL30; +RET_LABEL30:(void)0; } -var307 = var308; +var28 = var29; } -if (var307){ -if (varonce313) { -var314 = varonce313; +if (var28){ +if (unlikely(varonce==NULL)) { +var34 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String); +if (likely(varonce35!=NULL)) { +var36 = varonce35; } else { -var315 = "Type Error: \'for\' expects a method \'key\' in \'Iterator\' type "; -var316 = 60; -var317 = standard___standard__NativeString___to_s_with_length(var315, var316); -var314 = var317; -varonce313 = var314; +var37 = "Type Error: ambiguous type `"; +var38 = standard___standard__NativeString___to_s_with_length(var37, 28l); +var36 = var38; +varonce35 = var36; } -if (varonce318) { -var319 = varonce318; +((struct instance_standard__NativeArray*)var34)->values[0]=var36; +if (likely(varonce39!=NULL)) { +var40 = varonce39; } else { -var320 = "."; -var321 = 1; -var322 = standard___standard__NativeString___to_s_with_length(var320, var321); -var319 = var322; -varonce318 = var319; +var41 = "` vs `"; +var42 = standard___standard__NativeString___to_s_with_length(var41, 6l); +var40 = var42; +varonce39 = var40; } -var323 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var323 = array_instance Array[Object] */ -var324 = 3; -var325 = NEW_standard__NativeArray(var324, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var325)->values[0] = (val*) var314; -((struct instance_standard__NativeArray*)var325)->values[1] = (val*) var_ittype; -((struct instance_standard__NativeArray*)var325)->values[2] = (val*) var319; -{ -((void (*)(val* self, val* p0, long p1))(var323->class->vft[COLOR_standard__array__Array__with_native]))(var323, var325, var324) /* with_native on */; +((struct instance_standard__NativeArray*)var34)->values[2]=var40; +if (likely(varonce43!=NULL)) { +var44 = varonce43; +} else { +var45 = "`."; +var46 = standard___standard__NativeString___to_s_with_length(var45, 2l); +var44 = var46; +varonce43 = var44; } +((struct instance_standard__NativeArray*)var34)->values[4]=var44; +} else { +var34 = varonce; +varonce = NULL; } { -var326 = ((val* (*)(val* self))(var323->class->vft[COLOR_standard__string__Object__to_s]))(var323) /* to_s on */; +var47 = ((val*(*)(val* self))(var_t1->class->vft[COLOR_standard__string__Object__to_s]))(var_t1); /* to_s on */ } +((struct instance_standard__NativeArray*)var34)->values[1]=var47; { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var326); /* Direct call typing#TypeVisitor#error on */ -} -goto RET_LABEL; -} else { +var48 = ((val*(*)(val* self))(var_t2->class->vft[COLOR_standard__string__Object__to_s]))(var_t2); /* to_s on */ } +((struct instance_standard__NativeArray*)var34)->values[3]=var48; { -{ /* Inline typing#AForExpr#method_key= (self,var_keydef) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_key].val = var_keydef; /* _method_key on */ -RET_LABEL327:(void)0; +var49 = ((val*(*)(val* self))(var34->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var34); /* native_to_s on */ } +varonce = var34; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var49); /* Direct call typing#TypeVisitor#error on */ } } else { } { -{ /* Inline scope#AForExpr#variables (self) on */ -var331 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ -var329 = var331; -RET_LABEL330:(void)0; -} -} -if (var329 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1039); -show_backtrace(1); -} else { -{ /* Inline array#AbstractArrayRead#length (var329) on */ -if (unlikely(var329 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24); -show_backtrace(1); +{ /* Inline typing#AExpr#mtype= (self,var_t) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_t; /* _mtype on */ +RET_LABEL50:(void)0; } -var334 = var329->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var332 = var334; -RET_LABEL333:(void)0; } +RET_LABEL:; } -var335 = 1; +/* method typing#ADoExpr#accept_typing for (self: ADoExpr, TypeVisitor) */ +void nit__typing___ADoExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable AExpr */; +val* var2 /* : nullable AExpr */; +var_v = p0; { -{ /* Inline kernel#Int#== (var332,var335) on */ -var338 = var332 == var335; -var336 = var338; -goto RET_LABEL337; -RET_LABEL337:(void)0; +{ /* Inline parser_nodes#ADoExpr#n_block (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ADoExpr___n_block].val; /* _n_block on */ +var = var2; +RET_LABEL1:(void)0; } } -var_339 = var336; -if (var336){ { -{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ -var342 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var342 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738); -show_backtrace(1); -} -var340 = var342; -RET_LABEL341:(void)0; -} -} -/* isa ARangeExpr */ -cltype344 = type_nit__ARangeExpr.color; -idtype345 = type_nit__ARangeExpr.id; -if(cltype344 >= var340->type->table_size) { -var343 = 0; -} else { -var343 = var340->type->type_table[cltype344] == idtype345; -} -var328 = var343; -} else { -var328 = var_339; +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var); /* Direct call typing#TypeVisitor#visit_stmt on */ } -if (var328){ { -{ /* Inline scope#AForExpr#variables (self) on */ -var348 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ -var346 = var348; -RET_LABEL347:(void)0; +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL3:(void)0; } } -if (var346 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1040); -show_backtrace(1); -} else { -var349 = standard___standard__SequenceRead___Collection__first(var346); +RET_LABEL:; } -var_variable = var349; +/* method typing#AWhileExpr#accept_typing for (self: AWhileExpr, TypeVisitor) */ +void nit__typing___AWhileExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var3 /* : AExpr */; +val* var4 /* : nullable MType */; +val* var5 /* : nullable AExpr */; +val* var7 /* : nullable AExpr */; +var_v = p0; { -{ /* Inline typing#Variable#declared_type (var_variable) on */ -var352 = var_variable->attrs[COLOR_nit__typing__Variable___declared_type].val; /* _declared_type on */ -var350 = var352; -RET_LABEL351:(void)0; -} +{ /* Inline typing#TypeVisitor#has_loop= (var_v,1) on */ +var_v->attrs[COLOR_nit__typing__TypeVisitor___has_loop].s = 1; /* _has_loop on */ +RET_LABEL1:(void)0; } -if (unlikely(var350 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Cast failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1041); -show_backtrace(1); } -var_vtype = var350; { -{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ -var355 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var355 == NULL)) { +{ /* Inline parser_nodes#AWhileExpr#n_expr (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var3 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738); -show_backtrace(1); -} -var353 = var355; -RET_LABEL354:(void)0; -} -} -/* isa AOrangeExpr */ -cltype357 = type_nit__AOrangeExpr.color; -idtype358 = type_nit__AOrangeExpr.id; -if(cltype357 >= var353->type->table_size) { -var356 = 0; -} else { -var356 = var353->type->type_table[cltype357] == idtype358; -} -if (var356){ -if (varonce359) { -var360 = varonce359; -} else { -var361 = "<"; -var362 = 1; -var363 = standard___standard__NativeString___to_s_with_length(var361, var362); -var360 = var363; -varonce359 = var360; -} -var364 = 0; -{ -var365 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var360, var364); -} -{ -{ /* Inline typing#AForExpr#method_lt= (self,var365) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = var365; /* _method_lt on */ -RET_LABEL366:(void)0; +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1904); +fatal_exit(1); } +var = var3; +RET_LABEL2:(void)0; } -} else { -if (varonce367) { -var368 = varonce367; -} else { -var369 = "<="; -var370 = 2; -var371 = standard___standard__NativeString___to_s_with_length(var369, var370); -var368 = var371; -varonce367 = var368; } -var372 = 0; { -var373 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var368, var372); +var4 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } { -{ /* Inline typing#AForExpr#method_lt= (self,var373) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = var373; /* _method_lt on */ -RET_LABEL374:(void)0; -} -} +{ /* Inline parser_nodes#AWhileExpr#n_block (self) on */ +var7 = self->attrs[COLOR_nit__parser_nodes__AWhileExpr___n_block].val; /* _n_block on */ +var5 = var7; +RET_LABEL6:(void)0; } -if (varonce375) { -var376 = varonce375; -} else { -var377 = "successor"; -var378 = 9; -var379 = standard___standard__NativeString___to_s_with_length(var377, var378); -var376 = var379; -varonce375 = var376; } -var380 = 0; { -var381 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var376, var380); +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var5); /* Direct call typing#TypeVisitor#visit_stmt on */ } { -{ /* Inline typing#AForExpr#method_successor= (self,var381) on */ -self->attrs[COLOR_nit__typing__AForExpr___method_successor].val = var381; /* _method_successor on */ -RET_LABEL382:(void)0; -} +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL8:(void)0; } -} else { } RET_LABEL:; } -/* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */ -void nit__typing___AForExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#ALoopExpr#accept_typing for (self: ALoopExpr, TypeVisitor) */ +void nit__typing___ALoopExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var_mtype /* var mtype: nullable MType */; -val* var4 /* : null */; -short int var5 /* : Bool */; -short int var6 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var8 /* : Bool */; -short int var10 /* : Bool */; -val* var11 /* : nullable AExpr */; -val* var13 /* : nullable AExpr */; -val* var14 /* : nullable AExpr */; -val* var16 /* : nullable AExpr */; -val* var17 /* : nullable MType */; -short int var19 /* : Bool */; +val* var /* : nullable AExpr */; +val* var3 /* : nullable AExpr */; var_v = p0; { -{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738); -show_backtrace(1); -} -var = var2; +{ /* Inline typing#TypeVisitor#has_loop= (var_v,1) on */ +var_v->attrs[COLOR_nit__typing__TypeVisitor___has_loop].s = 1; /* _has_loop on */ RET_LABEL1:(void)0; } } { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +{ /* Inline parser_nodes#ALoopExpr#n_block (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ALoopExpr___n_block].val; /* _n_block on */ +var = var3; +RET_LABEL2:(void)0; } -var_mtype = var3; -var4 = NULL; -if (var_mtype == NULL) { -var5 = 1; /* is null */ -} else { -var5 = 0; /* arg is null but recv is not */ } -if (0) { -{ /* Inline kernel#Object#== (var_mtype,var4) on */ -var_other = var4; { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ -var10 = var_mtype == var_other; -var8 = var10; -goto RET_LABEL9; -RET_LABEL9:(void)0; +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var); /* Direct call typing#TypeVisitor#visit_stmt on */ } +{ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL4:(void)0; } -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; } -var5 = var6; +RET_LABEL:; } -if (var5){ -goto RET_LABEL; -} else { +/* method typing#AForExpr#coltype= for (self: AForExpr, nullable MClassType) */ +void nit__typing___AForExpr___coltype_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___coltype].val = p0; /* _coltype on */ +RET_LABEL:; } -{ -nit__typing___AForExpr___do_type_iterator(self, var_v, var_mtype); /* Direct call typing#AForExpr#do_type_iterator on */ +/* method typing#AForExpr#method_iterator for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_iterator(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_iterator].val; /* _method_iterator on */ +var = var1; +RET_LABEL:; +return var; } -{ -{ /* Inline parser_nodes#AForExpr#n_block (self) on */ -var13 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on */ -var11 = var13; -RET_LABEL12:(void)0; +/* method typing#AForExpr#method_iterator= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_iterator_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_iterator].val = p0; /* _method_iterator on */ +RET_LABEL:; } +/* method typing#AForExpr#method_is_ok for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_is_ok(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_is_ok].val; /* _method_is_ok on */ +var = var1; +RET_LABEL:; +return var; } -{ -nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var11); /* Direct call typing#TypeVisitor#visit_stmt on */ +/* method typing#AForExpr#method_is_ok= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_is_ok_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_is_ok].val = p0; /* _method_is_ok on */ +RET_LABEL:; } -{ -{ /* Inline parser_nodes#AForExpr#n_block (self) on */ -var16 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on */ -var14 = var16; -RET_LABEL15:(void)0; +/* method typing#AForExpr#method_item for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_item(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_item].val; /* _method_item on */ +var = var1; +RET_LABEL:; +return var; } +/* method typing#AForExpr#method_item= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_item_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_item].val = p0; /* _method_item on */ +RET_LABEL:; } -if (var14 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1061); -show_backtrace(1); -} else { -var17 = ((val* (*)(val* self))(var14->class->vft[COLOR_nit__typing__AExpr__mtype]))(var14) /* mtype on */; +/* method typing#AForExpr#method_next for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_next(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_next].val; /* _method_next on */ +var = var1; +RET_LABEL:; +return var; } -{ -{ /* Inline typing#AExpr#mtype= (self,var17) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var17; /* _mtype on */ -RET_LABEL18:(void)0; +/* method typing#AForExpr#method_next= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_next_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_next].val = p0; /* _method_next on */ +RET_LABEL:; } +/* method typing#AForExpr#method_key for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_key(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_key].val; /* _method_key on */ +var = var1; +RET_LABEL:; +return var; } -var19 = 1; -{ -{ /* Inline typing#AExpr#is_typed= (self,var19) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var19; /* _is_typed on */ -RET_LABEL20:(void)0; +/* method typing#AForExpr#method_key= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_key_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_key].val = p0; /* _method_key on */ +RET_LABEL:; } +/* method typing#AForExpr#method_finish for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_finish(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_finish].val; /* _method_finish on */ +var = var1; +RET_LABEL:; +return var; } +/* method typing#AForExpr#method_finish= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_finish_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_finish].val = p0; /* _method_finish on */ RET_LABEL:; } -/* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */ -void nit__typing___AAssertExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AForExpr#method_lt for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_lt(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_lt].val; /* _method_lt on */ +var = var1; +RET_LABEL:; +return var; +} +/* method typing#AForExpr#method_lt= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_lt_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = p0; /* _method_lt on */ +RET_LABEL:; +} +/* method typing#AForExpr#method_successor for (self: AForExpr): nullable CallSite */ +val* nit__typing___AForExpr___method_successor(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AForExpr___method_successor].val; /* _method_successor on */ +var = var1; +RET_LABEL:; +return var; +} +/* method typing#AForExpr#method_successor= for (self: AForExpr, nullable CallSite) */ +void nit__typing___AForExpr___method_successor_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AForExpr___method_successor].val = p0; /* _method_successor on */ +RET_LABEL:; +} +/* method typing#AForExpr#do_type_iterator for (self: AForExpr, TypeVisitor, MType) */ +void nit__typing___AForExpr___do_type_iterator(val* self, val* p0, val* p1) { val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var4 /* : nullable AExpr */; -val* var6 /* : nullable AExpr */; -short int var7 /* : Bool */; +val* var_mtype /* var mtype: MType */; +short int var /* : Bool */; +int cltype; +int idtype; +static val* varonce; +val* var1 /* : String */; +char* var2 /* : NativeString */; +val* var3 /* : FlatString */; +static val* varonce4; +val* var5 /* : String */; +char* var6 /* : NativeString */; +val* var7 /* : FlatString */; +val* var8 /* : nullable MClass */; +val* var_objcla /* var objcla: nullable MClass */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var12 /* : Bool */; +short int var14 /* : Bool */; +static val* varonce15; +val* var16 /* : String */; +char* var17 /* : NativeString */; +val* var18 /* : FlatString */; +val* var19 /* : AExpr */; +val* var21 /* : AExpr */; +short int var22 /* : Bool */; +int cltype23; +int idtype24; +val* var25 /* : nullable CallSite */; +val* var_itdef /* var itdef: nullable CallSite */; +short int var26 /* : Bool */; +short int var27 /* : Bool */; +short int var29 /* : Bool */; +short int var31 /* : Bool */; +val* var33 /* : NativeArray[String] */; +static val* varonce32; +static val* varonce34; +val* var35 /* : String */; +char* var36 /* : NativeString */; +val* var37 /* : FlatString */; +static val* varonce38; +val* var39 /* : String */; +char* var40 /* : NativeString */; +val* var41 /* : FlatString */; +val* var42 /* : String */; +val* var43 /* : String */; +val* var45 /* : MSignature */; +val* var47 /* : MSignature */; +val* var48 /* : nullable MType */; +val* var50 /* : nullable MType */; +val* var_ittype /* var ittype: nullable MType */; +short int var51 /* : Bool */; +short int var52 /* : Bool */; +short int var54 /* : Bool */; +short int var56 /* : Bool */; +static val* varonce57; +val* var58 /* : String */; +char* var59 /* : NativeString */; +val* var60 /* : FlatString */; +static val* varonce61; +val* var62 /* : String */; +char* var63 /* : NativeString */; +val* var64 /* : FlatString */; +val* var65 /* : nullable MClass */; +val* var_colit_cla /* var colit_cla: nullable MClass */; +static val* varonce66; +val* var67 /* : String */; +char* var68 /* : NativeString */; +val* var69 /* : FlatString */; +val* var70 /* : nullable MClass */; +val* var_mapit_cla /* var mapit_cla: nullable MClass */; +short int var_is_col /* var is_col: Bool */; +short int var_is_map /* var is_map: Bool */; +short int var71 /* : Bool */; +short int var72 /* : Bool */; +short int var73 /* : Bool */; +val* var_other75 /* var other: nullable Object */; +short int var76 /* : Bool */; +short int var77 /* : Bool */; +short int var_ /* var : Bool */; +val* var78 /* : Array[MType] */; +val* var_79 /* var : Array[MType] */; +val* var80 /* : MClassType */; +val* var82 /* : MClassType */; +val* var83 /* : MType */; +val* var84 /* : MClassType */; +short int var85 /* : Bool */; +val* var86 /* : MModule */; +val* var88 /* : MModule */; +val* var89 /* : nullable MClassType */; +val* var91 /* : nullable MClassType */; +val* var92 /* : MClassType */; +val* var_coltype /* var coltype: MClassType */; +val* var93 /* : nullable Array[Variable] */; +val* var95 /* : nullable Array[Variable] */; +val* var_variables /* var variables: nullable Array[Variable] */; +long var96 /* : Int */; +long var98 /* : Int */; +short int var99 /* : Bool */; +short int var101 /* : Bool */; +short int var102 /* : Bool */; +static val* varonce103; +val* var104 /* : String */; +char* var105 /* : NativeString */; +val* var106 /* : FlatString */; +val* var107 /* : nullable Object */; +val* var108 /* : Array[MType] */; +val* var109 /* : nullable Object */; +short int var111 /* : Bool */; +short int var112 /* : Bool */; +short int var113 /* : Bool */; +short int var115 /* : Bool */; +short int var116 /* : Bool */; +short int var_117 /* var : Bool */; +val* var118 /* : Array[MType] */; +val* var_119 /* var : Array[MType] */; +val* var120 /* : MClassType */; +val* var122 /* : MClassType */; +val* var123 /* : MType */; +val* var124 /* : MClassType */; +val* var126 /* : MClassType */; +val* var127 /* : MType */; +val* var128 /* : MClassType */; +short int var129 /* : Bool */; +val* var130 /* : MModule */; +val* var132 /* : MModule */; +val* var133 /* : nullable MClassType */; +val* var135 /* : nullable MClassType */; +val* var136 /* : MClassType */; +val* var_coltype137 /* var coltype: MClassType */; +val* var138 /* : nullable Array[Variable] */; +val* var140 /* : nullable Array[Variable] */; +val* var_variables141 /* var variables: nullable Array[Variable] */; +long var142 /* : Int */; +long var144 /* : Int */; +short int var145 /* : Bool */; +short int var147 /* : Bool */; +short int var148 /* : Bool */; +static val* varonce149; +val* var150 /* : String */; +char* var151 /* : NativeString */; +val* var152 /* : FlatString */; +val* var153 /* : nullable Object */; +val* var154 /* : Array[MType] */; +val* var155 /* : nullable Object */; +val* var157 /* : nullable Object */; +val* var158 /* : Array[MType] */; +val* var159 /* : nullable Object */; +short int var161 /* : Bool */; +short int var162 /* : Bool */; +short int var_163 /* var : Bool */; +short int var164 /* : Bool */; +static val* varonce165; +val* var166 /* : String */; +char* var167 /* : NativeString */; +val* var168 /* : FlatString */; +short int var169 /* : Bool */; +val* var170 /* : MType */; +val* var171 /* : MType */; +short int var172 /* : Bool */; +int cltype173; +int idtype174; +const char* var_class_name; +static val* varonce176; +val* var177 /* : String */; +char* var178 /* : NativeString */; +val* var179 /* : FlatString */; +val* var180 /* : nullable CallSite */; +val* var_ikdef /* var ikdef: nullable CallSite */; +short int var181 /* : Bool */; +short int var182 /* : Bool */; +short int var184 /* : Bool */; +short int var186 /* : Bool */; +val* var188 /* : NativeArray[String] */; +static val* varonce187; +static val* varonce189; +val* var190 /* : String */; +char* var191 /* : NativeString */; +val* var192 /* : FlatString */; +static val* varonce193; +val* var194 /* : String */; +char* var195 /* : NativeString */; +val* var196 /* : FlatString */; +val* var197 /* : String */; +val* var198 /* : String */; +static val* varonce200; +val* var201 /* : String */; +char* var202 /* : NativeString */; +val* var203 /* : FlatString */; +val* var204 /* : nullable CallSite */; +val* var_itemdef /* var itemdef: nullable CallSite */; +short int var205 /* : Bool */; +short int var206 /* : Bool */; +short int var208 /* : Bool */; +short int var210 /* : Bool */; +val* var212 /* : NativeArray[String] */; +static val* varonce211; +static val* varonce213; +val* var214 /* : String */; +char* var215 /* : NativeString */; +val* var216 /* : FlatString */; +static val* varonce217; +val* var218 /* : String */; +char* var219 /* : NativeString */; +val* var220 /* : FlatString */; +val* var221 /* : String */; +val* var222 /* : String */; +static val* varonce224; +val* var225 /* : String */; +char* var226 /* : NativeString */; +val* var227 /* : FlatString */; +val* var228 /* : nullable CallSite */; +val* var_nextdef /* var nextdef: nullable CallSite */; +short int var229 /* : Bool */; +short int var230 /* : Bool */; +short int var232 /* : Bool */; +short int var234 /* : Bool */; +val* var236 /* : NativeArray[String] */; +static val* varonce235; +static val* varonce237; +val* var238 /* : String */; +char* var239 /* : NativeString */; +val* var240 /* : FlatString */; +static val* varonce241; +val* var242 /* : String */; +char* var243 /* : NativeString */; +val* var244 /* : FlatString */; +val* var245 /* : String */; +val* var246 /* : String */; +static val* varonce248; +val* var249 /* : String */; +char* var250 /* : NativeString */; +val* var251 /* : FlatString */; +val* var252 /* : nullable CallSite */; +static val* varonce254; +val* var255 /* : String */; +char* var256 /* : NativeString */; +val* var257 /* : FlatString */; +val* var258 /* : nullable CallSite */; +val* var_keydef /* var keydef: nullable CallSite */; +short int var259 /* : Bool */; +short int var260 /* : Bool */; +short int var262 /* : Bool */; +short int var264 /* : Bool */; +val* var266 /* : NativeArray[String] */; +static val* varonce265; +static val* varonce267; +val* var268 /* : String */; +char* var269 /* : NativeString */; +val* var270 /* : FlatString */; +static val* varonce271; +val* var272 /* : String */; +char* var273 /* : NativeString */; +val* var274 /* : FlatString */; +val* var275 /* : String */; +val* var276 /* : String */; +short int var278 /* : Bool */; +val* var279 /* : nullable Array[Variable] */; +val* var281 /* : nullable Array[Variable] */; +long var282 /* : Int */; +long var284 /* : Int */; +short int var285 /* : Bool */; +short int var287 /* : Bool */; +short int var_288 /* var : Bool */; +val* var289 /* : AExpr */; +val* var291 /* : AExpr */; +short int var292 /* : Bool */; +int cltype293; +int idtype294; +val* var295 /* : nullable Array[Variable] */; +val* var297 /* : nullable Array[Variable] */; +val* var298 /* : nullable Object */; +val* var_variable /* var variable: Variable */; +val* var299 /* : nullable MType */; +val* var301 /* : nullable MType */; +val* var_vtype /* var vtype: MType */; +val* var302 /* : AExpr */; +val* var304 /* : AExpr */; +short int var305 /* : Bool */; +int cltype306; +int idtype307; +static val* varonce308; +val* var309 /* : String */; +char* var310 /* : NativeString */; +val* var311 /* : FlatString */; +val* var312 /* : nullable CallSite */; +static val* varonce314; +val* var315 /* : String */; +char* var316 /* : NativeString */; +val* var317 /* : FlatString */; +val* var318 /* : nullable CallSite */; +static val* varonce320; +val* var321 /* : String */; +char* var322 /* : NativeString */; +val* var323 /* : FlatString */; +val* var324 /* : nullable CallSite */; var_v = p0; +var_mtype = p1; +/* isa MNullType */ +cltype = type_nit__MNullType.color; +idtype = type_nit__MNullType.id; +if(cltype >= var_mtype->type->table_size) { +var = 0; +} else { +var = var_mtype->type->type_table[cltype] == idtype; +} +if (var){ +if (likely(varonce!=NULL)) { +var1 = varonce; +} else { +var2 = "Type Error: `for` cannot iterate over `null`."; +var3 = standard___standard__NativeString___to_s_with_length(var2, 45l); +var1 = var3; +varonce = var1; +} { -{ /* Inline parser_nodes#AAssertExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1758); -show_backtrace(1); +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var1); /* Direct call typing#TypeVisitor#error on */ } -var = var2; -RET_LABEL1:(void)0; +goto RET_LABEL; +} else { } +if (likely(varonce4!=NULL)) { +var5 = varonce4; +} else { +var6 = "Object"; +var7 = standard___standard__NativeString___to_s_with_length(var6, 6l); +var5 = var7; +varonce4 = var5; } { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); +var8 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var5); } +var_objcla = var8; +if (var_objcla == NULL) { +var9 = 1; /* is null */ +} else { +var9 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_objcla,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#AAssertExpr#n_else (self) on */ -var6 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_else].val; /* _n_else on */ -var4 = var6; -RET_LABEL5:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_objcla,var_other) on */ +var14 = var_objcla == var_other; +var12 = var14; +goto RET_LABEL13; +RET_LABEL13:(void)0; } } -{ -nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var4); /* Direct call typing#TypeVisitor#visit_stmt on */ +var10 = var12; +goto RET_LABEL11; +RET_LABEL11:(void)0; } -var7 = 1; -{ -{ /* Inline typing#AExpr#is_typed= (self,var7) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var7; /* _is_typed on */ -RET_LABEL8:(void)0; +var9 = var10; } +if (var9){ +goto RET_LABEL; +} else { } -RET_LABEL:; +if (likely(varonce15!=NULL)) { +var16 = varonce15; +} else { +var17 = "iterator"; +var18 = standard___standard__NativeString___to_s_with_length(var17, 8l); +var16 = var18; +varonce15 = var16; } -/* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */ -void nit__typing___AOrExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var4 /* : AExpr */; -val* var6 /* : AExpr */; -val* var7 /* : nullable MType */; -val* var8 /* : nullable MType */; -var_v = p0; { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { +{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ +var21 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var21 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1940); +fatal_exit(1); } -var = var2; -RET_LABEL1:(void)0; +var19 = var21; +RET_LABEL20:(void)0; } } +/* isa ASelfExpr */ +cltype23 = type_nit__ASelfExpr.color; +idtype24 = type_nit__ASelfExpr.id; +if(cltype23 >= var19->type->table_size) { +var22 = 0; +} else { +var22 = var19->type->type_table[cltype23] == idtype24; +} { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); +var25 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var16, var22); +} +var_itdef = var25; +if (var_itdef == NULL) { +var26 = 1; /* is null */ +} else { +var26 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_itdef,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ -var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ -if (unlikely(var6 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_itdef,var_other) on */ +var31 = var_itdef == var_other; +var29 = var31; +goto RET_LABEL30; +RET_LABEL30:(void)0; } -var4 = var6; -RET_LABEL5:(void)0; } +var27 = var29; +goto RET_LABEL28; +RET_LABEL28:(void)0; +} +var26 = var27; +} +if (var26){ +if (unlikely(varonce32==NULL)) { +var33 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce34!=NULL)) { +var35 = varonce34; +} else { +var36 = "Type Error: `for` expects a type providing an `iterator` method, got `"; +var37 = standard___standard__NativeString___to_s_with_length(var36, 70l); +var35 = var37; +varonce34 = var35; +} +((struct instance_standard__NativeArray*)var33)->values[0]=var35; +if (likely(varonce38!=NULL)) { +var39 = varonce38; +} else { +var40 = "`."; +var41 = standard___standard__NativeString___to_s_with_length(var40, 2l); +var39 = var41; +varonce38 = var39; +} +((struct instance_standard__NativeArray*)var33)->values[2]=var39; +} else { +var33 = varonce32; +varonce32 = NULL; } { -var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4); +var42 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on */ } +((struct instance_standard__NativeArray*)var33)->values[1]=var42; { -var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); +var43 = ((val*(*)(val* self))(var33->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var33); /* native_to_s on */ } +varonce32 = var33; { -{ /* Inline typing#AExpr#mtype= (self,var8) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on */ -RET_LABEL9:(void)0; +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var43); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { +} +{ +{ /* Inline typing#AForExpr#method_iterator= (self,var_itdef) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_iterator].val = var_itdef; /* _method_iterator on */ +RET_LABEL44:(void)0; } -RET_LABEL:; } -/* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */ -void nit__typing___AImpliesExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var4 /* : AExpr */; -val* var6 /* : AExpr */; -val* var7 /* : nullable MType */; -val* var8 /* : nullable MType */; -var_v = p0; { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823); -show_backtrace(1); +{ /* Inline typing#CallSite#msignature (var_itdef) on */ +var47 = var_itdef->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ +if (unlikely(var47 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 631); +fatal_exit(1); } -var = var2; -RET_LABEL1:(void)0; +var45 = var47; +RET_LABEL46:(void)0; } } { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); +{ /* Inline model#MSignature#return_mtype (var45) on */ +var50 = var45->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ +var48 = var50; +RET_LABEL49:(void)0; +} +} +var_ittype = var48; +if (var_ittype == NULL) { +var51 = 1; /* is null */ +} else { +var51 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_ittype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ -var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ -if (unlikely(var6 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_ittype,var_other) on */ +var56 = var_ittype == var_other; +var54 = var56; +goto RET_LABEL55; +RET_LABEL55:(void)0; } -var4 = var6; -RET_LABEL5:(void)0; } +var52 = var54; +goto RET_LABEL53; +RET_LABEL53:(void)0; +} +var51 = var52; } -{ -var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4); +if (var51){ +if (likely(varonce57!=NULL)) { +var58 = varonce57; +} else { +var59 = "Type Error: `for` expects the method `iterator` to return an `Iterator` or `MapIterator` type."; +var60 = standard___standard__NativeString___to_s_with_length(var59, 94l); +var58 = var60; +varonce57 = var58; } { -var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var58); /* Direct call typing#TypeVisitor#error on */ +} +goto RET_LABEL; +} else { +} +if (likely(varonce61!=NULL)) { +var62 = varonce61; +} else { +var63 = "Iterator"; +var64 = standard___standard__NativeString___to_s_with_length(var63, 8l); +var62 = var64; +varonce61 = var62; } { -{ /* Inline typing#AExpr#mtype= (self,var8) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on */ -RET_LABEL9:(void)0; +var65 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, self, var62); +} +var_colit_cla = var65; +if (likely(varonce66!=NULL)) { +var67 = varonce66; +} else { +var68 = "MapIterator"; +var69 = standard___standard__NativeString___to_s_with_length(var68, 11l); +var67 = var69; +varonce66 = var67; } +{ +var70 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, self, var67); } -RET_LABEL:; +var_mapit_cla = var70; +var_is_col = 0; +var_is_map = 0; +if (var_colit_cla == NULL) { +var72 = 0; /* is null */ +} else { +var72 = 1; /* arg is null and recv is not */ } -/* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */ -void nit__typing___AAndExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var4 /* : AExpr */; -val* var6 /* : AExpr */; -val* var7 /* : nullable MType */; -val* var8 /* : nullable MType */; -var_v = p0; +if (0) { +{ /* Inline kernel#Object#!= (var_colit_cla,((val*)NULL)) on */ +var_other75 = ((val*)NULL); { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823); -show_backtrace(1); +var76 = ((short int(*)(val* self, val* p0))(var_colit_cla->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_colit_cla, var_other75); /* == on */ } -var = var2; -RET_LABEL1:(void)0; +var77 = !var76; +var73 = var77; +goto RET_LABEL74; +RET_LABEL74:(void)0; } +var72 = var73; } +var_ = var72; +if (var72){ +var78 = NEW_standard__Array(&type_standard__Array__nit__MType); { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); +standard___standard__Array___with_capacity(var78, 1l); /* Direct call array#Array#with_capacity on */ } +var_79 = var78; { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ -var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ -if (unlikely(var6 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826); -show_backtrace(1); +{ /* Inline model#MClass#mclass_type (var_objcla) on */ +var82 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var82 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); } -var4 = var6; -RET_LABEL5:(void)0; +var80 = var82; +RET_LABEL81:(void)0; } } { -var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4); +var83 = nit___nit__MType___as_nullable(var80); } { -var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_79, var83); /* Direct call array#AbstractArray#push on */ } { -{ /* Inline typing#AExpr#mtype= (self,var8) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on */ -RET_LABEL9:(void)0; +var84 = nit___nit__MClass___get_mtype(var_colit_cla, var_79); } +{ +var85 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_ittype, var84); } -RET_LABEL:; +var71 = var85; +} else { +var71 = var_; } -/* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */ -void nit__typing___ANotExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var4 /* : nullable MType */; -var_v = p0; +if (var71){ { -{ /* Inline parser_nodes#ANotExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ANotExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1857); -show_backtrace(1); +{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ +var88 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var88 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); +fatal_exit(1); } -var = var2; -RET_LABEL1:(void)0; +var86 = var88; +RET_LABEL87:(void)0; } } { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); +{ /* Inline typing#TypeVisitor#anchor (var_v) on */ +var91 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ +var89 = var91; +RET_LABEL90:(void)0; } -{ -var4 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } { -{ /* Inline typing#AExpr#mtype= (self,var4) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var4; /* _mtype on */ -RET_LABEL5:(void)0; +var92 = nit___nit__MType___supertype_to(var_ittype, var86, var89, var_colit_cla); } -} -RET_LABEL:; -} -/* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */ -void nit__typing___AOrElseExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var_t1 /* var t1: nullable MType */; -val* var4 /* : AExpr */; -val* var6 /* : AExpr */; -val* var7 /* : nullable MType */; -val* var_t2 /* var t2: nullable MType */; -short int var8 /* : Bool */; -val* var9 /* : null */; -short int var10 /* : Bool */; -short int var11 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var13 /* : Bool */; -short int var15 /* : Bool */; -short int var_ /* var : Bool */; -val* var16 /* : null */; -short int var17 /* : Bool */; -short int var18 /* : Bool */; -short int var20 /* : Bool */; -short int var22 /* : Bool */; -val* var23 /* : MType */; -val* var24 /* : Array[MType] */; -long var25 /* : Int */; -val* var_26 /* var : Array[MType] */; -val* var27 /* : nullable MType */; -val* var_t /* var t: nullable MType */; -val* var28 /* : null */; -short int var29 /* : Bool */; -short int var30 /* : Bool */; -short int var32 /* : Bool */; -short int var34 /* : Bool */; -val* var35 /* : MModule */; -val* var37 /* : MModule */; -val* var38 /* : MClassType */; -short int var39 /* : Bool */; -int cltype; -int idtype; -val* var40 /* : MType */; -var_v = p0; +var_coltype = var92; { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823); -show_backtrace(1); +{ /* Inline scope#AForExpr#variables (self) on */ +var95 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ +var93 = var95; +RET_LABEL94:(void)0; } -var = var2; -RET_LABEL1:(void)0; } +var_variables = var93; +if (var_variables == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1138); +fatal_exit(1); +} else { +{ /* Inline array#AbstractArrayRead#length (var_variables) on */ +if (unlikely(var_variables == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 26); +fatal_exit(1); +} +var98 = var_variables->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var96 = var98; +RET_LABEL97:(void)0; } -{ -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -var_t1 = var3; { -{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ -var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ -if (unlikely(var6 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826); -show_backtrace(1); +{ /* Inline kernel#Int#!= (var96,1l) on */ +var101 = var96 == 1l; +var102 = !var101; +var99 = var102; +goto RET_LABEL100; +RET_LABEL100:(void)0; } -var4 = var6; -RET_LABEL5:(void)0; } +if (var99){ +if (likely(varonce103!=NULL)) { +var104 = varonce103; +} else { +var105 = "Type Error: `for` expects only one variable when using `Iterator`."; +var106 = standard___standard__NativeString___to_s_with_length(var105, 66l); +var104 = var106; +varonce103 = var104; } { -var7 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var4); +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var104); /* Direct call typing#TypeVisitor#error on */ } -var_t2 = var7; -var9 = NULL; -if (var_t1 == NULL) { -var10 = 1; /* is null */ } else { -var10 = 0; /* arg is null but recv is not */ +if (var_variables == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1141); +fatal_exit(1); +} else { +var107 = standard___standard__SequenceRead___Collection__first(var_variables); } -if (0) { -{ /* Inline kernel#Object#== (var_t1,var9) on */ -var_other = var9; { -{ /* Inline kernel#Object#is_same_instance (var_t1,var_other) on */ -var15 = var_t1 == var_other; -var13 = var15; -goto RET_LABEL14; -RET_LABEL14:(void)0; +var108 = ((val*(*)(val* self))(var_coltype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype); /* arguments on */ } +{ +var109 = standard___standard__SequenceRead___Collection__first(var108); } -var11 = var13; -goto RET_LABEL12; -RET_LABEL12:(void)0; +{ +{ /* Inline typing#Variable#declared_type= (var107,var109) on */ +var107->attrs[COLOR_nit__typing__Variable___declared_type].val = var109; /* _declared_type on */ +RET_LABEL110:(void)0; } -var10 = var11; } -var_ = var10; -if (var10){ -var8 = var_; +} +var_is_col = 1; } else { -var16 = NULL; -if (var_t2 == NULL) { -var17 = 1; /* is null */ +} +if (var_mapit_cla == NULL) { +var112 = 0; /* is null */ } else { -var17 = 0; /* arg is null but recv is not */ +var112 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_t2,var16) on */ -var_other = var16; +{ /* Inline kernel#Object#!= (var_mapit_cla,((val*)NULL)) on */ +var_other75 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_t2,var_other) on */ -var22 = var_t2 == var_other; -var20 = var22; -goto RET_LABEL21; -RET_LABEL21:(void)0; +var115 = ((short int(*)(val* self, val* p0))(var_mapit_cla->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mapit_cla, var_other75); /* == on */ } +var116 = !var115; +var113 = var116; +goto RET_LABEL114; +RET_LABEL114:(void)0; } -var18 = var20; -goto RET_LABEL19; -RET_LABEL19:(void)0; +var112 = var113; } -var17 = var18; +var_117 = var112; +if (var112){ +var118 = NEW_standard__Array(&type_standard__Array__nit__MType); +{ +standard___standard__Array___with_capacity(var118, 2l); /* Direct call array#Array#with_capacity on */ } -var8 = var17; +var_119 = var118; +{ +{ /* Inline model#MClass#mclass_type (var_objcla) on */ +var122 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var122 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); +} +var120 = var122; +RET_LABEL121:(void)0; } -if (var8){ -goto RET_LABEL; -} else { } { -var23 = ((val* (*)(val* self))(var_t1->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_t1) /* as_notnullable on */; +var123 = nit___nit__MType___as_nullable(var120); } -var_t1 = var23; -var24 = NEW_standard__Array(&type_standard__Array__nit__MType); -var25 = 2; { -standard___standard__Array___with_capacity(var24, var25); /* Direct call array#Array#with_capacity on */ +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_119, var123); /* Direct call array#AbstractArray#push on */ } -var_26 = var24; { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_26, var_t1); /* Direct call array#AbstractArray#push on */ +{ /* Inline model#MClass#mclass_type (var_objcla) on */ +var126 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var126 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); +} +var124 = var126; +RET_LABEL125:(void)0; +} } { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_26, var_t2); /* Direct call array#AbstractArray#push on */ +var127 = nit___nit__MType___as_nullable(var124); } { -var27 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_26); +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_119, var127); /* Direct call array#AbstractArray#push on */ } -var_t = var27; -var28 = NULL; -if (var_t == NULL) { -var29 = 1; /* is null */ +{ +var128 = nit___nit__MClass___get_mtype(var_mapit_cla, var_119); +} +{ +var129 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_ittype, var128); +} +var111 = var129; } else { -var29 = 0; /* arg is null but recv is not */ +var111 = var_117; } -if (0) { -{ /* Inline kernel#Object#== (var_t,var28) on */ -var_other = var28; +if (var111){ { -{ /* Inline kernel#Object#is_same_instance (var_t,var_other) on */ -var34 = var_t == var_other; -var32 = var34; -goto RET_LABEL33; -RET_LABEL33:(void)0; -} +{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ +var132 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var132 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); +fatal_exit(1); } -var30 = var32; -goto RET_LABEL31; -RET_LABEL31:(void)0; +var130 = var132; +RET_LABEL131:(void)0; } -var29 = var30; } -if (var29){ { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var37 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var37 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +{ /* Inline typing#TypeVisitor#anchor (var_v) on */ +var135 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ +var133 = var135; +RET_LABEL134:(void)0; } -var35 = var37; -RET_LABEL36:(void)0; } +{ +var136 = nit___nit__MType___supertype_to(var_ittype, var130, var133, var_mapit_cla); } +var_coltype137 = var136; { -var38 = nit__model___MModule___object_type(var35); +{ /* Inline scope#AForExpr#variables (self) on */ +var140 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ +var138 = var140; +RET_LABEL139:(void)0; } -var_t = var38; -/* isa MNullableType */ -cltype = type_nit__MNullableType.color; -idtype = type_nit__MNullableType.id; -if(cltype >= var_t2->type->table_size) { -var39 = 0; +} +var_variables141 = var138; +if (var_variables141 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1150); +fatal_exit(1); } else { -var39 = var_t2->type->type_table[cltype] == idtype; +{ /* Inline array#AbstractArrayRead#length (var_variables141) on */ +if (unlikely(var_variables141 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 26); +fatal_exit(1); +} +var144 = var_variables141->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var142 = var144; +RET_LABEL143:(void)0; +} } -if (var39){ { -var40 = nit___nit__MType___as_nullable(var_t); +{ /* Inline kernel#Int#!= (var142,2l) on */ +var147 = var142 == 2l; +var148 = !var147; +var145 = var148; +goto RET_LABEL146; +RET_LABEL146:(void)0; } -var_t = var40; -} else { } +if (var145){ +if (likely(varonce149!=NULL)) { +var150 = varonce149; } else { +var151 = "Type Error: `for` expects two variables when using `MapIterator`."; +var152 = standard___standard__NativeString___to_s_with_length(var151, 65l); +var150 = var152; +varonce149 = var150; } { -{ /* Inline typing#AExpr#mtype= (self,var_t) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_t; /* _mtype on */ -RET_LABEL41:(void)0; +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var150); /* Direct call typing#TypeVisitor#error on */ } +} else { +if (var_variables141 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1153); +fatal_exit(1); +} else { +var153 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_variables141, 0l); } -RET_LABEL:; +{ +var154 = ((val*(*)(val* self))(var_coltype137->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype137); /* arguments on */ } -/* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */ -void nit__typing___ATrueExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MType */; -var_v = p0; { -var = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); +var155 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var154, 0l); } { -{ /* Inline typing#AExpr#mtype= (self,var) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on */ -RET_LABEL1:(void)0; +{ /* Inline typing#Variable#declared_type= (var153,var155) on */ +var153->attrs[COLOR_nit__typing__Variable___declared_type].val = var155; /* _declared_type on */ +RET_LABEL156:(void)0; } } -RET_LABEL:; +if (var_variables141 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1154); +fatal_exit(1); +} else { +var157 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_variables141, 1l); } -/* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */ -void nit__typing___AFalseExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MType */; -var_v = p0; { -var = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); +var158 = ((val*(*)(val* self))(var_coltype137->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype137); /* arguments on */ } { -{ /* Inline typing#AExpr#mtype= (self,var) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on */ -RET_LABEL1:(void)0; +var159 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var158, 1l); } +{ +{ /* Inline typing#Variable#declared_type= (var157,var159) on */ +var157->attrs[COLOR_nit__typing__Variable___declared_type].val = var159; /* _declared_type on */ +RET_LABEL160:(void)0; } -RET_LABEL:; } -/* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */ -void nit__typing___AIntExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -val* var4 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : MClassType */; -val* var14 /* : MClassType */; -var_v = p0; -if (varonce) { -var = varonce; +} +var_is_map = 1; } else { -var1 = "Int"; -var2 = 3; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; } -{ -var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +var162 = !var_is_col; +var_163 = var162; +if (var162){ +var164 = !var_is_map; +var161 = var164; +} else { +var161 = var_163; } -var_mclass = var4; -var5 = NULL; -if (var_mclass == NULL) { -var6 = 1; /* is null */ +if (var161){ +if (likely(varonce165!=NULL)) { +var166 = varonce165; } else { -var6 = 0; /* arg is null but recv is not */ +var167 = "Type Error: `for` expects the method `iterator` to return an `Iterator` or `MapIterator` type."; +var168 = standard___standard__NativeString___to_s_with_length(var167, 94l); +var166 = var168; +varonce165 = var166; } -if (0) { -{ /* Inline kernel#Object#== (var_mclass,var5) on */ -var_other = var5; { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ -var11 = var_mclass == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var166); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { } -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +{ +var169 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on */ } -var6 = var7; +if (var169){ +{ +var170 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_mtype); } -if (var6){ -goto RET_LABEL; +var_mtype = var170; } else { } { -{ /* Inline model#MClass#mclass_type (var_mclass) on */ -var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); +var171 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on */ } -var12 = var14; -RET_LABEL13:(void)0; +var_mtype = var171; +/* isa MClassType */ +cltype173 = type_nit__MClassType.color; +idtype174 = type_nit__MClassType.id; +if(cltype173 >= var_mtype->type->table_size) { +var172 = 0; +} else { +var172 = var_mtype->type->type_table[cltype173] == idtype174; } +if (unlikely(!var172)) { +var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1168); +fatal_exit(1); } { -{ /* Inline typing#AExpr#mtype= (self,var12) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on */ -RET_LABEL15:(void)0; -} +{ /* Inline typing#AForExpr#coltype= (self,var_mtype) on */ +self->attrs[COLOR_nit__typing__AForExpr___coltype].val = var_mtype; /* _coltype on */ +RET_LABEL175:(void)0; } -RET_LABEL:; } -/* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */ -void nit__typing___AFloatExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -val* var4 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : MClassType */; -val* var14 /* : MClassType */; -var_v = p0; -if (varonce) { -var = varonce; +if (likely(varonce176!=NULL)) { +var177 = varonce176; } else { -var1 = "Float"; -var2 = 5; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; +var178 = "is_ok"; +var179 = standard___standard__NativeString___to_s_with_length(var178, 5l); +var177 = var179; +varonce176 = var177; } { -var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +var180 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var177, 0); } -var_mclass = var4; -var5 = NULL; -if (var_mclass == NULL) { -var6 = 1; /* is null */ +var_ikdef = var180; +if (var_ikdef == NULL) { +var181 = 1; /* is null */ } else { -var6 = 0; /* arg is null but recv is not */ +var181 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_mclass,var5) on */ -var_other = var5; +{ /* Inline kernel#Object#== (var_ikdef,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ -var11 = var_mclass == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_ikdef,var_other) on */ +var186 = var_ikdef == var_other; +var184 = var186; +goto RET_LABEL185; +RET_LABEL185:(void)0; } } -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +var182 = var184; +goto RET_LABEL183; +RET_LABEL183:(void)0; } -var6 = var7; +var181 = var182; } -if (var6){ -goto RET_LABEL; +if (var181){ +if (unlikely(varonce187==NULL)) { +var188 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce189!=NULL)) { +var190 = varonce189; } else { +var191 = "Type Error: `for` expects a method `is_ok` in type `"; +var192 = standard___standard__NativeString___to_s_with_length(var191, 52l); +var190 = var192; +varonce189 = var190; } -{ -{ /* Inline model#MClass#mclass_type (var_mclass) on */ -var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); +((struct instance_standard__NativeArray*)var188)->values[0]=var190; +if (likely(varonce193!=NULL)) { +var194 = varonce193; +} else { +var195 = "`."; +var196 = standard___standard__NativeString___to_s_with_length(var195, 2l); +var194 = var196; +varonce193 = var194; } -var12 = var14; -RET_LABEL13:(void)0; +((struct instance_standard__NativeArray*)var188)->values[2]=var194; +} else { +var188 = varonce187; +varonce187 = NULL; } +{ +var197 = ((val*(*)(val* self))(var_ittype->class->vft[COLOR_standard__string__Object__to_s]))(var_ittype); /* to_s on */ } +((struct instance_standard__NativeArray*)var188)->values[1]=var197; { -{ /* Inline typing#AExpr#mtype= (self,var12) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on */ -RET_LABEL15:(void)0; +var198 = ((val*(*)(val* self))(var188->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var188); /* native_to_s on */ +} +varonce187 = var188; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var198); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { } -RET_LABEL:; +{ +{ /* Inline typing#AForExpr#method_is_ok= (self,var_ikdef) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_is_ok].val = var_ikdef; /* _method_is_ok on */ +RET_LABEL199:(void)0; } -/* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */ -void nit__typing___ACharExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -val* var4 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : MClassType */; -val* var14 /* : MClassType */; -var_v = p0; -if (varonce) { -var = varonce; +} +if (likely(varonce200!=NULL)) { +var201 = varonce200; } else { -var1 = "Char"; -var2 = 4; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; +var202 = "item"; +var203 = standard___standard__NativeString___to_s_with_length(var202, 4l); +var201 = var203; +varonce200 = var201; } { -var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +var204 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var201, 0); } -var_mclass = var4; -var5 = NULL; -if (var_mclass == NULL) { -var6 = 1; /* is null */ +var_itemdef = var204; +if (var_itemdef == NULL) { +var205 = 1; /* is null */ } else { -var6 = 0; /* arg is null but recv is not */ +var205 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_mclass,var5) on */ -var_other = var5; +{ /* Inline kernel#Object#== (var_itemdef,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ -var11 = var_mclass == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_itemdef,var_other) on */ +var210 = var_itemdef == var_other; +var208 = var210; +goto RET_LABEL209; +RET_LABEL209:(void)0; } } -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +var206 = var208; +goto RET_LABEL207; +RET_LABEL207:(void)0; } -var6 = var7; +var205 = var206; } -if (var6){ -goto RET_LABEL; +if (var205){ +if (unlikely(varonce211==NULL)) { +var212 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce213!=NULL)) { +var214 = varonce213; } else { +var215 = "Type Error: `for` expects a method `item` in type `"; +var216 = standard___standard__NativeString___to_s_with_length(var215, 51l); +var214 = var216; +varonce213 = var214; } -{ -{ /* Inline model#MClass#mclass_type (var_mclass) on */ -var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); +((struct instance_standard__NativeArray*)var212)->values[0]=var214; +if (likely(varonce217!=NULL)) { +var218 = varonce217; +} else { +var219 = "`."; +var220 = standard___standard__NativeString___to_s_with_length(var219, 2l); +var218 = var220; +varonce217 = var218; } -var12 = var14; -RET_LABEL13:(void)0; +((struct instance_standard__NativeArray*)var212)->values[2]=var218; +} else { +var212 = varonce211; +varonce211 = NULL; } +{ +var221 = ((val*(*)(val* self))(var_ittype->class->vft[COLOR_standard__string__Object__to_s]))(var_ittype); /* to_s on */ } +((struct instance_standard__NativeArray*)var212)->values[1]=var221; { -{ /* Inline typing#AExpr#mtype= (self,var12) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on */ -RET_LABEL15:(void)0; +var222 = ((val*(*)(val* self))(var212->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var212); /* native_to_s on */ +} +varonce211 = var212; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var222); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { } -RET_LABEL:; +{ +{ /* Inline typing#AForExpr#method_item= (self,var_itemdef) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_item].val = var_itemdef; /* _method_item on */ +RET_LABEL223:(void)0; } -/* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */ -void nit__typing___AStringFormExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -val* var4 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : MClassType */; -val* var14 /* : MClassType */; -var_v = p0; -if (varonce) { -var = varonce; +} +if (likely(varonce224!=NULL)) { +var225 = varonce224; } else { -var1 = "String"; -var2 = 6; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; +var226 = "next"; +var227 = standard___standard__NativeString___to_s_with_length(var226, 4l); +var225 = var227; +varonce224 = var225; } { -var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +var228 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var225, 0); } -var_mclass = var4; -var5 = NULL; -if (var_mclass == NULL) { -var6 = 1; /* is null */ +var_nextdef = var228; +if (var_nextdef == NULL) { +var229 = 1; /* is null */ } else { -var6 = 0; /* arg is null but recv is not */ +var229 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_mclass,var5) on */ -var_other = var5; +{ /* Inline kernel#Object#== (var_nextdef,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ -var11 = var_mclass == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_nextdef,var_other) on */ +var234 = var_nextdef == var_other; +var232 = var234; +goto RET_LABEL233; +RET_LABEL233:(void)0; } } -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +var230 = var232; +goto RET_LABEL231; +RET_LABEL231:(void)0; } -var6 = var7; +var229 = var230; } -if (var6){ -goto RET_LABEL; +if (var229){ +if (unlikely(varonce235==NULL)) { +var236 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce237!=NULL)) { +var238 = varonce237; } else { +var239 = "Type Error: `for` expects a method `next` in type "; +var240 = standard___standard__NativeString___to_s_with_length(var239, 50l); +var238 = var240; +varonce237 = var238; } -{ -{ /* Inline model#MClass#mclass_type (var_mclass) on */ -var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); -} -var12 = var14; -RET_LABEL13:(void)0; +((struct instance_standard__NativeArray*)var236)->values[0]=var238; +if (likely(varonce241!=NULL)) { +var242 = varonce241; +} else { +var243 = "."; +var244 = standard___standard__NativeString___to_s_with_length(var243, 1l); +var242 = var244; +varonce241 = var242; } +((struct instance_standard__NativeArray*)var236)->values[2]=var242; +} else { +var236 = varonce235; +varonce235 = NULL; } { -{ /* Inline typing#AExpr#mtype= (self,var12) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on */ -RET_LABEL15:(void)0; +var245 = ((val*(*)(val* self))(var_ittype->class->vft[COLOR_standard__string__Object__to_s]))(var_ittype); /* to_s on */ } +((struct instance_standard__NativeArray*)var236)->values[1]=var245; +{ +var246 = ((val*(*)(val* self))(var236->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var236); /* native_to_s on */ } -RET_LABEL:; +varonce235 = var236; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var246); /* Direct call typing#TypeVisitor#error on */ } -/* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */ -void nit__typing___ASuperstringExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -val* var4 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : MClassType */; -val* var14 /* : MClassType */; -val* var16 /* : ANodes[AExpr] */; -val* var18 /* : ANodes[AExpr] */; -val* var_ /* var : ANodes[AExpr] */; -val* var19 /* : Iterator[ANode] */; -val* var_20 /* var : Iterator[AExpr] */; -short int var21 /* : Bool */; -val* var22 /* : nullable Object */; -val* var_nexpr /* var nexpr: AExpr */; -val* var23 /* : MModule */; -val* var25 /* : MModule */; -val* var26 /* : MClassType */; -val* var27 /* : nullable MType */; -var_v = p0; -if (varonce) { -var = varonce; +goto RET_LABEL; } else { -var1 = "String"; -var2 = 6; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; } { -var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +{ /* Inline typing#AForExpr#method_next= (self,var_nextdef) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_next].val = var_nextdef; /* _method_next on */ +RET_LABEL247:(void)0; } -var_mclass = var4; -var5 = NULL; -if (var_mclass == NULL) { -var6 = 1; /* is null */ +} +if (likely(varonce248!=NULL)) { +var249 = varonce248; } else { -var6 = 0; /* arg is null but recv is not */ +var250 = "finish"; +var251 = standard___standard__NativeString___to_s_with_length(var250, 6l); +var249 = var251; +varonce248 = var249; } -if (0) { -{ /* Inline kernel#Object#== (var_mclass,var5) on */ -var_other = var5; { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ -var11 = var_mclass == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; -} +var252 = nit__typing___nit__typing__TypeVisitor___try_get_method(var_v, self, var_ittype, var249, 0); } -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +{ +{ /* Inline typing#AForExpr#method_finish= (self,var252) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_finish].val = var252; /* _method_finish on */ +RET_LABEL253:(void)0; } -var6 = var7; } -if (var6){ -goto RET_LABEL; +if (var_is_map){ +if (likely(varonce254!=NULL)) { +var255 = varonce254; } else { +var256 = "key"; +var257 = standard___standard__NativeString___to_s_with_length(var256, 3l); +var255 = var257; +varonce254 = var255; } { -{ /* Inline model#MClass#mclass_type (var_mclass) on */ -var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438); -show_backtrace(1); -} -var12 = var14; -RET_LABEL13:(void)0; +var258 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var255, 0); } +var_keydef = var258; +if (var_keydef == NULL) { +var259 = 1; /* is null */ +} else { +var259 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_keydef,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#AExpr#mtype= (self,var12) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on */ -RET_LABEL15:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_keydef,var_other) on */ +var264 = var_keydef == var_other; +var262 = var264; +goto RET_LABEL263; +RET_LABEL263:(void)0; } } -{ -{ /* Inline parser_nodes#ASuperstringExpr#n_exprs (self) on */ -var18 = self->attrs[COLOR_nit__parser_nodes__ASuperstringExpr___n_exprs].val; /* _n_exprs on */ -if (unlikely(var18 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2277); -show_backtrace(1); +var260 = var262; +goto RET_LABEL261; +RET_LABEL261:(void)0; } -var16 = var18; -RET_LABEL17:(void)0; +var259 = var260; } +if (var259){ +if (unlikely(varonce265==NULL)) { +var266 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce267!=NULL)) { +var268 = varonce267; +} else { +var269 = "Type Error: `for` expects a method `key` in type `"; +var270 = standard___standard__NativeString___to_s_with_length(var269, 50l); +var268 = var270; +varonce267 = var268; } -var_ = var16; -{ -var19 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_); +((struct instance_standard__NativeArray*)var266)->values[0]=var268; +if (likely(varonce271!=NULL)) { +var272 = varonce271; +} else { +var273 = "`."; +var274 = standard___standard__NativeString___to_s_with_length(var273, 2l); +var272 = var274; +varonce271 = var272; } -var_20 = var19; -for(;;) { -{ -var21 = ((short int (*)(val* self))(var_20->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_20) /* is_ok on */; +((struct instance_standard__NativeArray*)var266)->values[2]=var272; +} else { +var266 = varonce265; +varonce265 = NULL; } -if (var21){ { -var22 = ((val* (*)(val* self))(var_20->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_20) /* item on */; +var275 = ((val*(*)(val* self))(var_ittype->class->vft[COLOR_standard__string__Object__to_s]))(var_ittype); /* to_s on */ } -var_nexpr = var22; +((struct instance_standard__NativeArray*)var266)->values[1]=var275; { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var25 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var25 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +var276 = ((val*(*)(val* self))(var266->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var266); /* native_to_s on */ } -var23 = var25; -RET_LABEL24:(void)0; +varonce265 = var266; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var276); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { } { -var26 = nit__model___MModule___object_type(var23); +{ /* Inline typing#AForExpr#method_key= (self,var_keydef) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_key].val = var_keydef; /* _method_key on */ +RET_LABEL277:(void)0; } -{ -var27 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var_nexpr, var26); +} +} else { } { -((void (*)(val* self))(var_20->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_20) /* next on */; +{ /* Inline scope#AForExpr#variables (self) on */ +var281 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ +var279 = var281; +RET_LABEL280:(void)0; } +} +if (var279 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1203); +fatal_exit(1); } else { -goto BREAK_label; +{ /* Inline array#AbstractArrayRead#length (var279) on */ +if (unlikely(var279 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 26); +fatal_exit(1); +} +var284 = var279->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var282 = var284; +RET_LABEL283:(void)0; } } -BREAK_label: (void)0; { -{ /* Inline abstract_collection#Iterator#finish (var_20) on */ -RET_LABEL28:(void)0; +{ /* Inline kernel#Int#== (var282,1l) on */ +var287 = var282 == 1l; +var285 = var287; +goto RET_LABEL286; +RET_LABEL286:(void)0; } } -RET_LABEL:; +var_288 = var285; +if (var285){ +{ +{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ +var291 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var291 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1940); +fatal_exit(1); } -/* method typing#AArrayExpr#with_capacity_callsite for (self: AArrayExpr): nullable CallSite */ -val* nit__typing___AArrayExpr___with_capacity_callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on */ -var = var1; -RET_LABEL:; -return var; +var289 = var291; +RET_LABEL290:(void)0; } -/* method typing#AArrayExpr#with_capacity_callsite= for (self: AArrayExpr, nullable CallSite) */ -void nit__typing___AArrayExpr___with_capacity_callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val = p0; /* _with_capacity_callsite on */ -RET_LABEL:; } -/* method typing#AArrayExpr#push_callsite for (self: AArrayExpr): nullable CallSite */ -val* nit__typing___AArrayExpr___push_callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val; /* _push_callsite on */ -var = var1; -RET_LABEL:; -return var; +/* isa ARangeExpr */ +cltype293 = type_nit__ARangeExpr.color; +idtype294 = type_nit__ARangeExpr.id; +if(cltype293 >= var289->type->table_size) { +var292 = 0; +} else { +var292 = var289->type->type_table[cltype293] == idtype294; } -/* method typing#AArrayExpr#push_callsite= for (self: AArrayExpr, nullable CallSite) */ -void nit__typing___AArrayExpr___push_callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val = p0; /* _push_callsite on */ -RET_LABEL:; +var278 = var292; +} else { +var278 = var_288; } -/* method typing#AArrayExpr#element_mtype for (self: AArrayExpr): nullable MType */ -val* nit__typing___AArrayExpr___element_mtype(val* self) { -val* var /* : nullable MType */; -val* var1 /* : nullable MType */; -var1 = self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val; /* _element_mtype on */ -var = var1; -RET_LABEL:; -return var; +if (var278){ +{ +{ /* Inline scope#AForExpr#variables (self) on */ +var297 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on */ +var295 = var297; +RET_LABEL296:(void)0; } -/* method typing#AArrayExpr#element_mtype= for (self: AArrayExpr, nullable MType) */ -void nit__typing___AArrayExpr___element_mtype_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val = p0; /* _element_mtype on */ -RET_LABEL:; } -/* method typing#AArrayExpr#set_comprehension for (self: AArrayExpr, nullable AExpr) */ -void nit__typing___AArrayExpr___set_comprehension(val* self, val* p0) { -val* var_n /* var n: nullable AExpr */; -val* var /* : null */; -short int var1 /* : Bool */; -short int var2 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var4 /* : Bool */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -int cltype; -int idtype; -val* var8 /* : nullable AExpr */; -val* var10 /* : nullable AExpr */; -short int var11 /* : Bool */; -int cltype12; -int idtype13; -val* var14 /* : nullable AExpr */; -val* var16 /* : nullable AExpr */; -val* var17 /* : nullable AExpr */; -val* var19 /* : nullable AExpr */; -var_n = p0; -var = NULL; -if (var_n == NULL) { -var1 = 1; /* is null */ +if (var295 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1204); +fatal_exit(1); } else { -var1 = 0; /* arg is null but recv is not */ +var298 = standard___standard__SequenceRead___Collection__first(var295); } -if (0) { -{ /* Inline kernel#Object#== (var_n,var) on */ -var_other = var; +var_variable = var298; { -{ /* Inline kernel#Object#is_same_instance (var_n,var_other) on */ -var6 = var_n == var_other; -var4 = var6; -goto RET_LABEL5; -RET_LABEL5:(void)0; +{ /* Inline typing#Variable#declared_type (var_variable) on */ +var301 = var_variable->attrs[COLOR_nit__typing__Variable___declared_type].val; /* _declared_type on */ +var299 = var301; +RET_LABEL300:(void)0; } } -var2 = var4; -goto RET_LABEL3; -RET_LABEL3:(void)0; +if (unlikely(var299 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1205); +fatal_exit(1); +} +var_vtype = var299; +{ +{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ +var304 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var304 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1940); +fatal_exit(1); } -var1 = var2; +var302 = var304; +RET_LABEL303:(void)0; } -if (var1){ -goto RET_LABEL; +} +/* isa AOrangeExpr */ +cltype306 = type_nit__AOrangeExpr.color; +idtype307 = type_nit__AOrangeExpr.id; +if(cltype306 >= var302->type->table_size) { +var305 = 0; } else { -/* isa AForExpr */ -cltype = type_nit__AForExpr.color; -idtype = type_nit__AForExpr.id; -if(cltype >= var_n->type->table_size) { -var7 = 0; +var305 = var302->type->type_table[cltype306] == idtype307; +} +if (var305){ +if (likely(varonce308!=NULL)) { +var309 = varonce308; } else { -var7 = var_n->type->type_table[cltype] == idtype; +var310 = "<"; +var311 = standard___standard__NativeString___to_s_with_length(var310, 1l); +var309 = var311; +varonce308 = var309; } -if (var7){ { -{ /* Inline parser_nodes#AForExpr#n_block (var_n) on */ -var10 = var_n->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on */ -var8 = var10; -RET_LABEL9:(void)0; -} +var312 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var309, 0); } { -nit__typing___AArrayExpr___set_comprehension(self, var8); /* Direct call typing#AArrayExpr#set_comprehension on */ +{ /* Inline typing#AForExpr#method_lt= (self,var312) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = var312; /* _method_lt on */ +RET_LABEL313:(void)0; +} } } else { -/* isa AIfExpr */ -cltype12 = type_nit__AIfExpr.color; -idtype13 = type_nit__AIfExpr.id; -if(cltype12 >= var_n->type->table_size) { -var11 = 0; +if (likely(varonce314!=NULL)) { +var315 = varonce314; } else { -var11 = var_n->type->type_table[cltype12] == idtype13; -} -if (var11){ -{ -{ /* Inline parser_nodes#AIfExpr#n_then (var_n) on */ -var16 = var_n->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on */ -var14 = var16; -RET_LABEL15:(void)0; -} +var316 = "<="; +var317 = standard___standard__NativeString___to_s_with_length(var316, 2l); +var315 = var317; +varonce314 = var315; } { -nit__typing___AArrayExpr___set_comprehension(self, var14); /* Direct call typing#AArrayExpr#set_comprehension on */ +var318 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var315, 0); } { -{ /* Inline parser_nodes#AIfExpr#n_else (var_n) on */ -var19 = var_n->attrs[COLOR_nit__parser_nodes__AIfExpr___n_else].val; /* _n_else on */ -var17 = var19; -RET_LABEL18:(void)0; +{ /* Inline typing#AForExpr#method_lt= (self,var318) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = var318; /* _method_lt on */ +RET_LABEL319:(void)0; } } -{ -nit__typing___AArrayExpr___set_comprehension(self, var17); /* Direct call typing#AArrayExpr#set_comprehension on */ } +if (likely(varonce320!=NULL)) { +var321 = varonce320; } else { -{ -{ /* Inline typing#AExpr#comprehension= (var_n,self) on */ -var_n->attrs[COLOR_nit__typing__AExpr___comprehension].val = self; /* _comprehension on */ -RET_LABEL20:(void)0; +var322 = "successor"; +var323 = standard___standard__NativeString___to_s_with_length(var322, 9l); +var321 = var323; +varonce320 = var321; } +{ +var324 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var321, 0); } +{ +{ /* Inline typing#AForExpr#method_successor= (self,var324) on */ +self->attrs[COLOR_nit__typing__AForExpr___method_successor].val = var324; /* _method_successor on */ +RET_LABEL325:(void)0; } } +} else { } RET_LABEL:; } -/* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */ -void nit__typing___AArrayExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */ +void nit__typing___AForExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : null */; +val* var /* : AExpr */; +val* var3 /* : AExpr */; +val* var4 /* : nullable MType */; val* var_mtype /* var mtype: nullable MType */; -val* var1 /* : nullable AType */; -val* var3 /* : nullable AType */; -val* var_ntype /* var ntype: nullable AType */; -val* var4 /* : null */; short int var5 /* : Bool */; short int var6 /* : Bool */; val* var_other /* var other: nullable Object */; short int var8 /* : Bool */; -short int var9 /* : Bool */; -val* var10 /* : nullable MType */; -val* var11 /* : null */; -short int var12 /* : Bool */; -short int var13 /* : Bool */; -val* var_other15 /* var other: nullable Object */; -short int var16 /* : Bool */; -short int var18 /* : Bool */; -val* var19 /* : Array[nullable MType] */; -val* var_mtypes /* var mtypes: Array[nullable MType] */; -short int var20 /* : Bool */; -short int var_useless /* var useless: Bool */; -val* var21 /* : ANodes[AExpr] */; -val* var23 /* : ANodes[AExpr] */; -val* var_ /* var : ANodes[AExpr] */; -val* var24 /* : Iterator[ANode] */; -val* var_25 /* var : Iterator[AExpr] */; -short int var26 /* : Bool */; -val* var27 /* : nullable Object */; -val* var_e /* var e: AExpr */; -val* var28 /* : nullable MType */; -val* var_t /* var t: nullable MType */; -val* var29 /* : null */; -short int var30 /* : Bool */; -short int var31 /* : Bool */; -short int var33 /* : Bool */; -short int var35 /* : Bool */; -val* var36 /* : null */; -short int var37 /* : Bool */; -short int var38 /* : Bool */; -short int var40 /* : Bool */; -short int var41 /* : Bool */; -val* var42 /* : nullable MType */; -val* var43 /* : null */; -short int var44 /* : Bool */; -short int var45 /* : Bool */; -short int var47 /* : Bool */; -short int var49 /* : Bool */; -short int var50 /* : Bool */; -short int var52 /* : Bool */; -short int var54 /* : Bool */; -short int var55 /* : Bool */; -val* var57 /* : null */; -short int var58 /* : Bool */; -short int var59 /* : Bool */; -short int var61 /* : Bool */; -short int var63 /* : Bool */; -val* var64 /* : nullable MType */; -short int var65 /* : Bool */; -val* var66 /* : null */; -short int var67 /* : Bool */; -short int var68 /* : Bool */; -short int var70 /* : Bool */; -short int var72 /* : Bool */; -short int var_73 /* var : Bool */; -short int var74 /* : Bool */; -int cltype; -int idtype; -static val* varonce; -val* var75 /* : String */; -char* var76 /* : NativeString */; -long var77 /* : Int */; -val* var78 /* : FlatString */; -static val* varonce79; -val* var80 /* : String */; -char* var81 /* : NativeString */; -long var82 /* : Int */; -val* var83 /* : FlatString */; -val* var84 /* : String */; -val* var85 /* : Array[Object] */; -long var86 /* : Int */; -val* var87 /* : NativeArray[Object] */; -val* var88 /* : String */; -val* var89 /* : null */; -short int var90 /* : Bool */; -short int var91 /* : Bool */; -short int var93 /* : Bool */; -short int var94 /* : Bool */; -val* var95 /* : ModelBuilder */; -val* var97 /* : ModelBuilder */; -static val* varonce98; -val* var99 /* : String */; -char* var100 /* : NativeString */; -long var101 /* : Int */; -val* var102 /* : FlatString */; -static val* varonce103; -val* var104 /* : String */; -char* var105 /* : NativeString */; -long var106 /* : Int */; -val* var107 /* : FlatString */; -static val* varonce108; -val* var109 /* : String */; -char* var110 /* : NativeString */; -long var111 /* : Int */; -val* var112 /* : FlatString */; -val* var113 /* : Array[Object] */; -long var114 /* : Int */; -val* var115 /* : NativeArray[Object] */; -val* var116 /* : String */; -static val* varonce118; -val* var119 /* : String */; -char* var120 /* : NativeString */; -long var121 /* : Int */; -val* var122 /* : FlatString */; -val* var123 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var124 /* : null */; -short int var125 /* : Bool */; -short int var126 /* : Bool */; -short int var128 /* : Bool */; -short int var130 /* : Bool */; -val* var131 /* : Array[MType] */; -long var132 /* : Int */; -val* var_133 /* var : Array[MType] */; -val* var134 /* : MClassType */; -val* var_array_mtype /* var array_mtype: MClassType */; -static val* varonce135; -val* var136 /* : String */; -char* var137 /* : NativeString */; -long var138 /* : Int */; -val* var139 /* : FlatString */; -short int var140 /* : Bool */; -val* var141 /* : nullable CallSite */; -static val* varonce143; -val* var144 /* : String */; -char* var145 /* : NativeString */; -long var146 /* : Int */; -val* var147 /* : FlatString */; -short int var148 /* : Bool */; -val* var149 /* : nullable CallSite */; +short int var10 /* : Bool */; +val* var11 /* : nullable AExpr */; +val* var13 /* : nullable AExpr */; +val* var14 /* : nullable AExpr */; +val* var16 /* : nullable AExpr */; +val* var17 /* : nullable MType */; var_v = p0; -var = NULL; -var_mtype = var; { -{ /* Inline parser_nodes#AArrayExpr#n_type (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__AArrayExpr___n_type].val; /* _n_type on */ -var1 = var3; -RET_LABEL2:(void)0; -} +{ /* Inline typing#TypeVisitor#has_loop= (var_v,1) on */ +var_v->attrs[COLOR_nit__typing__TypeVisitor___has_loop].s = 1; /* _has_loop on */ +RET_LABEL1:(void)0; } -var_ntype = var1; -var4 = NULL; -if (var_ntype == NULL) { -var5 = 0; /* is null */ -} else { -var5 = 1; /* arg is null and recv is not */ } -if (0) { -{ /* Inline kernel#Object#!= (var_ntype,var4) on */ -var_other = var4; { -var8 = ((short int (*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other) /* == on */; +{ /* Inline parser_nodes#AForExpr#n_expr (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1940); +fatal_exit(1); } -var9 = !var8; -var6 = var9; -goto RET_LABEL7; -RET_LABEL7:(void)0; +var = var3; +RET_LABEL2:(void)0; } -var5 = var6; } -if (var5){ { -var10 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var_ntype); +var4 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -var_mtype = var10; -var11 = NULL; +var_mtype = var4; if (var_mtype == NULL) { -var12 = 1; /* is null */ +var5 = 1; /* is null */ } else { -var12 = 0; /* arg is null but recv is not */ +var5 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_mtype,var11) on */ -var_other15 = var11; +{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other15) on */ -var18 = var_mtype == var_other15; -var16 = var18; -goto RET_LABEL17; -RET_LABEL17:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ +var10 = var_mtype == var_other; +var8 = var10; +goto RET_LABEL9; +RET_LABEL9:(void)0; } } -var13 = var16; -goto RET_LABEL14; -RET_LABEL14:(void)0; +var6 = var8; +goto RET_LABEL7; +RET_LABEL7:(void)0; } -var12 = var13; +var5 = var6; } -if (var12){ +if (var5){ goto RET_LABEL; } else { } -} else { -} -var19 = NEW_standard__Array(&type_standard__Array__nullable__nit__MType); { -standard___standard__Array___standard__kernel__Object__init(var19); /* Direct call array#Array#init on */ +nit__typing___AForExpr___do_type_iterator(self, var_v, var_mtype); /* Direct call typing#AForExpr#do_type_iterator on */ } -var_mtypes = var19; -var20 = 0; -var_useless = var20; { -{ /* Inline parser_nodes#AArrayExpr#n_exprs (self) on */ -var23 = self->attrs[COLOR_nit__parser_nodes__AArrayExpr___n_exprs].val; /* _n_exprs on */ -if (unlikely(var23 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2160); -show_backtrace(1); -} -var21 = var23; -RET_LABEL22:(void)0; +{ /* Inline parser_nodes#AForExpr#n_block (self) on */ +var13 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on */ +var11 = var13; +RET_LABEL12:(void)0; } } -var_ = var21; { -var24 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_); +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var11); /* Direct call typing#TypeVisitor#visit_stmt on */ } -var_25 = var24; -for(;;) { { -var26 = ((short int (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_25) /* is_ok on */; +{ /* Inline parser_nodes#AForExpr#n_block (self) on */ +var16 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on */ +var14 = var16; +RET_LABEL15:(void)0; } -if (var26){ -{ -var27 = ((val* (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_25) /* item on */; } -var_e = var27; +if (var14 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1227); +fatal_exit(1); +} else { +var17 = ((val*(*)(val* self))(var14->class->vft[COLOR_nit__typing__AExpr__mtype]))(var14); /* mtype on */ +} { -var28 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_e); +{ /* Inline typing#AExpr#mtype= (self,var17) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var17; /* _mtype on */ +RET_LABEL18:(void)0; } -var_t = var28; -var29 = NULL; -if (var_t == NULL) { -var30 = 1; /* is null */ -} else { -var30 = 0; /* arg is null but recv is not */ } -if (0) { -{ /* Inline kernel#Object#== (var_t,var29) on */ -var_other15 = var29; { -{ /* Inline kernel#Object#is_same_instance (var_t,var_other15) on */ -var35 = var_t == var_other15; -var33 = var35; -goto RET_LABEL34; -RET_LABEL34:(void)0; +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL19:(void)0; } } -var31 = var33; -goto RET_LABEL32; -RET_LABEL32:(void)0; +RET_LABEL:; } -var30 = var31; +/* method typing#AWithExpr#method_start for (self: AWithExpr): nullable CallSite */ +val* nit__typing___AWithExpr___method_start(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AWithExpr___method_start].val; /* _method_start on */ +var = var1; +RET_LABEL:; +return var; } -if (var30){ -goto RET_LABEL; -} else { +/* method typing#AWithExpr#method_start= for (self: AWithExpr, nullable CallSite) */ +void nit__typing___AWithExpr___method_start_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AWithExpr___method_start].val = p0; /* _method_start on */ +RET_LABEL:; } -{ -nit__typing___AArrayExpr___set_comprehension(self, var_e); /* Direct call typing#AArrayExpr#set_comprehension on */ +/* method typing#AWithExpr#method_finish for (self: AWithExpr): nullable CallSite */ +val* nit__typing___AWithExpr___method_finish(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AWithExpr___method_finish].val; /* _method_finish on */ +var = var1; +RET_LABEL:; +return var; } -var36 = NULL; -if (var_mtype == NULL) { -var37 = 0; /* is null */ -} else { -var37 = 1; /* arg is null and recv is not */ +/* method typing#AWithExpr#method_finish= for (self: AWithExpr, nullable CallSite) */ +void nit__typing___AWithExpr___method_finish_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AWithExpr___method_finish].val = p0; /* _method_finish on */ +RET_LABEL:; } -if (0) { -{ /* Inline kernel#Object#!= (var_mtype,var36) on */ -var_other = var36; +/* method typing#AWithExpr#accept_typing for (self: AWithExpr, TypeVisitor) */ +void nit__typing___AWithExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var_mtype /* var mtype: nullable MType */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +static val* varonce; +val* var10 /* : String */; +char* var11 /* : NativeString */; +val* var12 /* : FlatString */; +val* var13 /* : AExpr */; +val* var15 /* : AExpr */; +short int var16 /* : Bool */; +int cltype; +int idtype; +val* var17 /* : nullable CallSite */; +static val* varonce19; +val* var20 /* : String */; +char* var21 /* : NativeString */; +val* var22 /* : FlatString */; +val* var23 /* : AExpr */; +val* var25 /* : AExpr */; +short int var26 /* : Bool */; +int cltype27; +int idtype28; +val* var29 /* : nullable CallSite */; +val* var31 /* : nullable AExpr */; +val* var33 /* : nullable AExpr */; +val* var34 /* : nullable AExpr */; +val* var36 /* : nullable AExpr */; +val* var37 /* : nullable MType */; +var_v = p0; { -var40 = ((short int (*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other) /* == on */; +{ /* Inline parser_nodes#AWithExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AWithExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1958); +fatal_exit(1); } -var41 = !var40; -var38 = var41; -goto RET_LABEL39; -RET_LABEL39:(void)0; +var = var2; +RET_LABEL1:(void)0; } -var37 = var38; } -if (var37){ { -var42 = nit__typing___nit__typing__TypeVisitor___check_subtype(var_v, var_e, var_t, var_mtype); +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -var43 = NULL; -if (var42 == NULL) { -var44 = 1; /* is null */ +var_mtype = var3; +if (var_mtype == NULL) { +var4 = 1; /* is null */ } else { -var44 = 0; /* arg is null but recv is not */ +var4 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var42,var43) on */ -var_other15 = var43; +{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var42,var_other15) on */ -var49 = var42 == var_other15; -var47 = var49; -goto RET_LABEL48; -RET_LABEL48:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ +var9 = var_mtype == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } } -var45 = var47; -goto RET_LABEL46; -RET_LABEL46:(void)0; +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; } -var44 = var45; +var4 = var5; } -if (var44){ +if (var4){ goto RET_LABEL; } else { } -{ -{ /* Inline kernel#Object#== (var_t,var_mtype) on */ -var_other15 = var_mtype; -{ -{ /* Inline kernel#Object#is_same_instance (var_t,var_other15) on */ -var54 = var_t == var_other15; -var52 = var54; -goto RET_LABEL53; -RET_LABEL53:(void)0; +if (likely(varonce!=NULL)) { +var10 = varonce; +} else { +var11 = "start"; +var12 = standard___standard__NativeString___to_s_with_length(var11, 5l); +var10 = var12; +varonce = var10; } +{ +{ /* Inline parser_nodes#AWithExpr#n_expr (self) on */ +var15 = self->attrs[COLOR_nit__parser_nodes__AWithExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1958); +fatal_exit(1); } -var50 = var52; -goto RET_LABEL51; -RET_LABEL51:(void)0; +var13 = var15; +RET_LABEL14:(void)0; } } -if (var50){ -var55 = 1; -var_useless = var55; +/* isa ASelfExpr */ +cltype = type_nit__ASelfExpr.color; +idtype = type_nit__ASelfExpr.id; +if(cltype >= var13->type->table_size) { +var16 = 0; } else { +var16 = var13->type->type_table[cltype] == idtype; } -} else { { -standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mtypes, var_t); /* Direct call array#Array#add on */ -} +var17 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var10, var16); } { -((void (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_25) /* next on */; +{ /* Inline typing#AWithExpr#method_start= (self,var17) on */ +self->attrs[COLOR_nit__typing__AWithExpr___method_start].val = var17; /* _method_start on */ +RET_LABEL18:(void)0; } -} else { -goto BREAK_label; } +if (likely(varonce19!=NULL)) { +var20 = varonce19; +} else { +var21 = "finish"; +var22 = standard___standard__NativeString___to_s_with_length(var21, 6l); +var20 = var22; +varonce19 = var20; } -BREAK_label: (void)0; { -{ /* Inline abstract_collection#Iterator#finish (var_25) on */ -RET_LABEL56:(void)0; +{ /* Inline parser_nodes#AWithExpr#n_expr (self) on */ +var25 = self->attrs[COLOR_nit__parser_nodes__AWithExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var25 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1958); +fatal_exit(1); } +var23 = var25; +RET_LABEL24:(void)0; } -var57 = NULL; -if (var_mtype == NULL) { -var58 = 1; /* is null */ +} +/* isa ASelfExpr */ +cltype27 = type_nit__ASelfExpr.color; +idtype28 = type_nit__ASelfExpr.id; +if(cltype27 >= var23->type->table_size) { +var26 = 0; } else { -var58 = 0; /* arg is null but recv is not */ +var26 = var23->type->type_table[cltype27] == idtype28; } -if (0) { -{ /* Inline kernel#Object#== (var_mtype,var57) on */ -var_other15 = var57; { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other15) on */ -var63 = var_mtype == var_other15; -var61 = var63; -goto RET_LABEL62; -RET_LABEL62:(void)0; +var29 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var20, var26); +} +{ +{ /* Inline typing#AWithExpr#method_finish= (self,var29) on */ +self->attrs[COLOR_nit__typing__AWithExpr___method_finish].val = var29; /* _method_finish on */ +RET_LABEL30:(void)0; } } -var59 = var61; -goto RET_LABEL60; -RET_LABEL60:(void)0; +{ +{ /* Inline parser_nodes#AWithExpr#n_block (self) on */ +var33 = self->attrs[COLOR_nit__parser_nodes__AWithExpr___n_block].val; /* _n_block on */ +var31 = var33; +RET_LABEL32:(void)0; } -var58 = var59; } -if (var58){ { -var64 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_mtypes); +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var31); /* Direct call typing#TypeVisitor#visit_stmt on */ } -var_mtype = var64; -} else { +{ +{ /* Inline parser_nodes#AWithExpr#n_block (self) on */ +var36 = self->attrs[COLOR_nit__parser_nodes__AWithExpr___n_block].val; /* _n_block on */ +var34 = var36; +RET_LABEL35:(void)0; } -var66 = NULL; -if (var_mtype == NULL) { -var67 = 1; /* is null */ +} +if (var34 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1245); +fatal_exit(1); } else { -var67 = 0; /* arg is null but recv is not */ +var37 = ((val*(*)(val* self))(var34->class->vft[COLOR_nit__typing__AExpr__mtype]))(var34); /* mtype on */ } -if (0) { -{ /* Inline kernel#Object#== (var_mtype,var66) on */ -var_other15 = var66; { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other15) on */ -var72 = var_mtype == var_other15; -var70 = var72; -goto RET_LABEL71; -RET_LABEL71:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var37) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var37; /* _mtype on */ +RET_LABEL38:(void)0; } } -var68 = var70; -goto RET_LABEL69; -RET_LABEL69:(void)0; +{ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL39:(void)0; } -var67 = var68; } -var_73 = var67; -if (var67){ -var65 = var_73; -} else { -/* isa MNullType */ -cltype = type_nit__MNullType.color; -idtype = type_nit__MNullType.id; -if(cltype >= var_mtype->type->table_size) { -var74 = 0; -} else { -var74 = var_mtype->type->type_table[cltype] == idtype; +RET_LABEL:; } -var65 = var74; +/* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */ +void nit__typing___AAssertExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : nullable AExpr */; +val* var6 /* : nullable AExpr */; +var_v = p0; +{ +{ /* Inline parser_nodes#AAssertExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1978); +fatal_exit(1); } -if (var65){ -if (varonce) { -var75 = varonce; -} else { -var76 = "Type Error: ambiguous array type "; -var77 = 33; -var78 = standard___standard__NativeString___to_s_with_length(var76, var77); -var75 = var78; -varonce = var75; +var = var2; +RET_LABEL1:(void)0; } -if (varonce79) { -var80 = varonce79; -} else { -var81 = " "; -var82 = 1; -var83 = standard___standard__NativeString___to_s_with_length(var81, var82); -var80 = var83; -varonce79 = var80; } { -var84 = standard__string___Collection___join(var_mtypes, var80); +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } -var85 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var85 = array_instance Array[Object] */ -var86 = 2; -var87 = NEW_standard__NativeArray(var86, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var87)->values[0] = (val*) var75; -((struct instance_standard__NativeArray*)var87)->values[1] = (val*) var84; { -((void (*)(val* self, val* p0, long p1))(var85->class->vft[COLOR_standard__array__Array__with_native]))(var85, var87, var86) /* with_native on */; +{ /* Inline parser_nodes#AAssertExpr#n_else (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_else].val; /* _n_else on */ +var4 = var6; +RET_LABEL5:(void)0; } } { -var88 = ((val* (*)(val* self))(var85->class->vft[COLOR_standard__string__Object__to_s]))(var85) /* to_s on */; +nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var4); /* Direct call typing#TypeVisitor#visit_stmt on */ } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var88); /* Direct call typing#TypeVisitor#error on */ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL7:(void)0; } -goto RET_LABEL; -} else { } -if (var_useless){ -var89 = NULL; -if (var_ntype == NULL) { -var90 = 0; /* is null */ -} else { -var90 = 1; /* arg is null and recv is not */ +RET_LABEL:; } -if (0) { -{ /* Inline kernel#Object#!= (var_ntype,var89) on */ -var_other = var89; +/* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */ +void nit__typing___AOrExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : AExpr */; +val* var6 /* : AExpr */; +val* var7 /* : nullable MType */; +val* var8 /* : nullable MType */; +var_v = p0; { -var93 = ((short int (*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other) /* == on */; -} -var94 = !var93; -var91 = var94; -goto RET_LABEL92; -RET_LABEL92:(void)0; +{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053); +fatal_exit(1); } -var90 = var91; +var = var2; +RET_LABEL1:(void)0; } -if (unlikely(!var90)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1255); -show_backtrace(1); } { -{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ -var97 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ -if (unlikely(var97 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); -show_backtrace(1); +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } -var95 = var97; -RET_LABEL96:(void)0; +{ +{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059); +fatal_exit(1); } +var4 = var6; +RET_LABEL5:(void)0; } -if (varonce98) { -var99 = varonce98; -} else { -var100 = "useless-type"; -var101 = 12; -var102 = standard___standard__NativeString___to_s_with_length(var100, var101); -var99 = var102; -varonce98 = var99; } -if (varonce103) { -var104 = varonce103; -} else { -var105 = "Warning: useless type declaration `"; -var106 = 35; -var107 = standard___standard__NativeString___to_s_with_length(var105, var106); -var104 = var107; -varonce103 = var104; +{ +var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4); } -if (varonce108) { -var109 = varonce108; -} else { -var110 = "` in literal Array since it can be inferred from the elements type."; -var111 = 67; -var112 = standard___standard__NativeString___to_s_with_length(var110, var111); -var109 = var112; -varonce108 = var109; +{ +var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } -var113 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var113 = array_instance Array[Object] */ -var114 = 3; -var115 = NEW_standard__NativeArray(var114, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var115)->values[0] = (val*) var104; -((struct instance_standard__NativeArray*)var115)->values[1] = (val*) var_mtype; -((struct instance_standard__NativeArray*)var115)->values[2] = (val*) var109; { -((void (*)(val* self, val* p0, long p1))(var113->class->vft[COLOR_standard__array__Array__with_native]))(var113, var115, var114) /* with_native on */; +{ /* Inline typing#AExpr#mtype= (self,var8) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on */ +RET_LABEL9:(void)0; } } -{ -var116 = ((val* (*)(val* self))(var113->class->vft[COLOR_standard__string__Object__to_s]))(var113) /* to_s on */; +RET_LABEL:; } +/* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */ +void nit__typing___AImpliesExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : AExpr */; +val* var6 /* : AExpr */; +val* var7 /* : nullable MType */; +val* var8 /* : nullable MType */; +var_v = p0; { -nit___nit__ModelBuilder___warning(var95, var_ntype, var99, var116); /* Direct call modelbuilder_base#ModelBuilder#warning on */ +{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; } -} else { } { -{ /* Inline typing#AArrayExpr#element_mtype= (self,var_mtype) on */ -self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val = var_mtype; /* _element_mtype on */ -RET_LABEL117:(void)0; +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } +{ +{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059); +fatal_exit(1); +} +var4 = var6; +RET_LABEL5:(void)0; } -if (varonce118) { -var119 = varonce118; -} else { -var120 = "Array"; -var121 = 5; -var122 = standard___standard__NativeString___to_s_with_length(var120, var121); -var119 = var122; -varonce118 = var119; } { -var123 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var119); +var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4); } -var_mclass = var123; -var124 = NULL; -if (var_mclass == NULL) { -var125 = 1; /* is null */ -} else { -var125 = 0; /* arg is null but recv is not */ +{ +var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } -if (0) { -{ /* Inline kernel#Object#== (var_mclass,var124) on */ -var_other15 = var124; { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other15) on */ -var130 = var_mclass == var_other15; -var128 = var130; -goto RET_LABEL129; -RET_LABEL129:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var8) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on */ +RET_LABEL9:(void)0; } } -var126 = var128; -goto RET_LABEL127; -RET_LABEL127:(void)0; +RET_LABEL:; +} +/* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */ +void nit__typing___AAndExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : AExpr */; +val* var6 /* : AExpr */; +val* var7 /* : nullable MType */; +val* var8 /* : nullable MType */; +var_v = p0; +{ +{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053); +fatal_exit(1); } -var125 = var126; +var = var2; +RET_LABEL1:(void)0; } -if (var125){ -goto RET_LABEL; -} else { } -var131 = NEW_standard__Array(&type_standard__Array__nit__MType); -var132 = 1; { -standard___standard__Array___with_capacity(var131, var132); /* Direct call array#Array#with_capacity on */ +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } -var_133 = var131; { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_133, var_mtype); /* Direct call array#AbstractArray#push on */ +{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var6 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059); +fatal_exit(1); } -{ -var134 = nit___nit__MClass___get_mtype(var_mclass, var_133); +var4 = var6; +RET_LABEL5:(void)0; } -var_array_mtype = var134; -if (varonce135) { -var136 = varonce135; -} else { -var137 = "with_capacity"; -var138 = 13; -var139 = standard___standard__NativeString___to_s_with_length(var137, var138); -var136 = var139; -varonce135 = var136; } -var140 = 0; { -var141 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_array_mtype, var136, var140); +var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4); } { -{ /* Inline typing#AArrayExpr#with_capacity_callsite= (self,var141) on */ -self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val = var141; /* _with_capacity_callsite on */ -RET_LABEL142:(void)0; +var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } +{ +{ /* Inline typing#AExpr#mtype= (self,var8) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on */ +RET_LABEL9:(void)0; } -if (varonce143) { -var144 = varonce143; -} else { -var145 = "push"; -var146 = 4; -var147 = standard___standard__NativeString___to_s_with_length(var145, var146); -var144 = var147; -varonce143 = var144; } -var148 = 0; -{ -var149 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_array_mtype, var144, var148); +RET_LABEL:; } +/* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */ +void nit__typing___ANotExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var4 /* : nullable MType */; +var_v = p0; { -{ /* Inline typing#AArrayExpr#push_callsite= (self,var149) on */ -self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val = var149; /* _push_callsite on */ -RET_LABEL150:(void)0; +{ /* Inline parser_nodes#ANotExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ANotExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2093); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; } } { -{ /* Inline typing#AExpr#mtype= (self,var_array_mtype) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_array_mtype; /* _mtype on */ -RET_LABEL151:(void)0; +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var); } +{ +var4 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } -RET_LABEL:; +{ +{ /* Inline typing#AExpr#mtype= (self,var4) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var4; /* _mtype on */ +RET_LABEL5:(void)0; } -/* method typing#ARangeExpr#init_callsite for (self: ARangeExpr): nullable CallSite */ -val* nit__typing___ARangeExpr___init_callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val; /* _init_callsite on */ -var = var1; -RET_LABEL:; -return var; } -/* method typing#ARangeExpr#init_callsite= for (self: ARangeExpr, nullable CallSite) */ -void nit__typing___ARangeExpr___init_callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val = p0; /* _init_callsite on */ RET_LABEL:; } -/* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */ -void nit__typing___ARangeExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */ +void nit__typing___AOrElseExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -val* var4 /* : nullable MClass */; -val* var_discrete_class /* var discrete_class: nullable MClass */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : MClassDef */; -val* var14 /* : MClassDef */; -val* var15 /* : MClassType */; -val* var17 /* : MClassType */; -val* var_discrete_type /* var discrete_type: MClassType */; -val* var18 /* : AExpr */; -val* var20 /* : AExpr */; -val* var21 /* : nullable MType */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; val* var_t1 /* var t1: nullable MType */; -val* var22 /* : AExpr */; -val* var24 /* : AExpr */; -val* var25 /* : nullable MType */; +val* var4 /* : AExpr */; +val* var6 /* : AExpr */; +val* var7 /* : nullable MType */; val* var_t2 /* var t2: nullable MType */; -short int var26 /* : Bool */; -val* var27 /* : null */; -short int var28 /* : Bool */; -short int var29 /* : Bool */; -short int var31 /* : Bool */; -short int var33 /* : Bool */; +short int var8 /* : Bool */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var12 /* : Bool */; +short int var14 /* : Bool */; short int var_ /* var : Bool */; -val* var34 /* : null */; -short int var35 /* : Bool */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +short int var21 /* : Bool */; +int cltype; +int idtype; +val* var22 /* : AExpr */; +val* var24 /* : AExpr */; +static val* varonce; +val* var25 /* : String */; +char* var26 /* : NativeString */; +val* var27 /* : FlatString */; +val* var28 /* : AExpr */; +val* var30 /* : AExpr */; +short int var31 /* : Bool */; +val* var32 /* : MType */; +val* var33 /* : Array[MType] */; +val* var_34 /* var : Array[MType] */; +val* var35 /* : nullable MType */; +val* var_t /* var t: nullable MType */; short int var36 /* : Bool */; -short int var38 /* : Bool */; -short int var40 /* : Bool */; -static val* varonce41; -val* var42 /* : String */; -char* var43 /* : NativeString */; -long var44 /* : Int */; +short int var37 /* : Bool */; +short int var39 /* : Bool */; +short int var41 /* : Bool */; +static val* varonce42; +val* var43 /* : String */; +char* var44 /* : NativeString */; val* var45 /* : FlatString */; val* var46 /* : nullable MClass */; -val* var_mclass /* var mclass: nullable MClass */; -val* var47 /* : null */; +val* var_c /* var c: nullable MClass */; +short int var47 /* : Bool */; short int var48 /* : Bool */; -short int var49 /* : Bool */; -short int var51 /* : Bool */; -short int var53 /* : Bool */; -short int var54 /* : Bool */; -val* var55 /* : Array[MType] */; -long var56 /* : Int */; -val* var_57 /* var : Array[MType] */; -val* var58 /* : MClassType */; -val* var_mtype /* var mtype: nullable Object */; -short int var59 /* : Bool */; -val* var60 /* : Array[MType] */; -long var61 /* : Int */; -val* var_62 /* var : Array[MType] */; -val* var63 /* : MClassType */; -static val* varonce64; -val* var65 /* : String */; -char* var66 /* : NativeString */; -long var67 /* : Int */; -val* var68 /* : FlatString */; -static val* varonce69; -val* var70 /* : String */; -char* var71 /* : NativeString */; -long var72 /* : Int */; -val* var73 /* : FlatString */; -val* var74 /* : Array[Object] */; -long var75 /* : Int */; -val* var76 /* : NativeArray[Object] */; -val* var77 /* : String */; -short int var79 /* : Bool */; -int cltype; -int idtype; -static val* varonce80; -val* var81 /* : String */; -char* var82 /* : NativeString */; -long var83 /* : Int */; -val* var84 /* : FlatString */; -short int var85 /* : Bool */; -val* var86 /* : nullable CallSite */; -val* var_callsite /* var callsite: nullable Object */; -short int var87 /* : Bool */; -int cltype88; -int idtype89; -static val* varonce90; -val* var91 /* : String */; -char* var92 /* : NativeString */; -long var93 /* : Int */; -val* var94 /* : FlatString */; -short int var95 /* : Bool */; -val* var96 /* : nullable CallSite */; +short int var50 /* : Bool */; +short int var52 /* : Bool */; +val* var53 /* : MClassType */; +val* var55 /* : MClassType */; +short int var56 /* : Bool */; +val* var57 /* : MType */; var_v = p0; -if (varonce) { -var = varonce; -} else { -var1 = "Discrete"; -var2 = 8; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; -} -{ -var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); -} -var_discrete_class = var4; -var5 = NULL; -if (var_discrete_class == NULL) { -var6 = 1; /* is null */ -} else { -var6 = 0; /* arg is null but recv is not */ -} -if (0) { -{ /* Inline kernel#Object#== (var_discrete_class,var5) on */ -var_other = var5; -{ -{ /* Inline kernel#Object#is_same_instance (var_discrete_class,var_other) on */ -var11 = var_discrete_class == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; -} -} -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; -} -var6 = var7; -} -if (var6){ -goto RET_LABEL; -} else { -} -{ -{ /* Inline model#MClass#intro (var_discrete_class) on */ -var14 = var_discrete_class->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423); -show_backtrace(1); -} -var12 = var14; -RET_LABEL13:(void)0; -} -} -{ -{ /* Inline model#MClassDef#bound_mtype (var12) on */ -var17 = var12->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on */ -if (unlikely(var17 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495); -show_backtrace(1); -} -var15 = var17; -RET_LABEL16:(void)0; -} -} -var_discrete_type = var15; { -{ /* Inline parser_nodes#ARangeExpr#n_expr (self) on */ -var20 = self->attrs[COLOR_nit__parser_nodes__ARangeExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var20 == NULL)) { +{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2124); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053); +fatal_exit(1); } -var18 = var20; -RET_LABEL19:(void)0; +var = var2; +RET_LABEL1:(void)0; } } { -var21 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var18, var_discrete_type); +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -var_t1 = var21; +var_t1 = var3; { -{ /* Inline parser_nodes#ARangeExpr#n_expr2 (self) on */ -var24 = self->attrs[COLOR_nit__parser_nodes__ARangeExpr___n_expr2].val; /* _n_expr2 on */ -if (unlikely(var24 == NULL)) { +{ /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on */ +var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var6 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2127); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2059); +fatal_exit(1); } -var22 = var24; -RET_LABEL23:(void)0; +var4 = var6; +RET_LABEL5:(void)0; } } { -var25 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var22, var_discrete_type); +var7 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var4); } -var_t2 = var25; -var27 = NULL; +var_t2 = var7; if (var_t1 == NULL) { -var28 = 1; /* is null */ +var9 = 1; /* is null */ } else { -var28 = 0; /* arg is null but recv is not */ +var9 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_t1,var27) on */ -var_other = var27; +{ /* Inline kernel#Object#== (var_t1,((val*)NULL)) on */ +var_other = ((val*)NULL); { { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on */ -var33 = var_t1 == var_other; -var31 = var33; -goto RET_LABEL32; -RET_LABEL32:(void)0; +var14 = var_t1 == var_other; +var12 = var14; +goto RET_LABEL13; +RET_LABEL13:(void)0; } } -var29 = var31; -goto RET_LABEL30; -RET_LABEL30:(void)0; +var10 = var12; +goto RET_LABEL11; +RET_LABEL11:(void)0; } -var28 = var29; +var9 = var10; } -var_ = var28; -if (var28){ -var26 = var_; +var_ = var9; +if (var9){ +var8 = var_; } else { -var34 = NULL; if (var_t2 == NULL) { -var35 = 1; /* is null */ +var15 = 1; /* is null */ } else { -var35 = 0; /* arg is null but recv is not */ +var15 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_t2,var34) on */ -var_other = var34; +{ /* Inline kernel#Object#== (var_t2,((val*)NULL)) on */ +var_other = ((val*)NULL); { { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on */ -var40 = var_t2 == var_other; -var38 = var40; -goto RET_LABEL39; -RET_LABEL39:(void)0; +var20 = var_t2 == var_other; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; } } -var36 = var38; -goto RET_LABEL37; -RET_LABEL37:(void)0; +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; } -var35 = var36; +var15 = var16; } -var26 = var35; +var8 = var15; } -if (var26){ +if (var8){ goto RET_LABEL; } else { } -if (varonce41) { -var42 = varonce41; +/* isa MNullType */ +cltype = type_nit__MNullType.color; +idtype = type_nit__MNullType.id; +if(cltype >= var_t1->type->table_size) { +var21 = 0; } else { -var43 = "Range"; -var44 = 5; -var45 = standard___standard__NativeString___to_s_with_length(var43, var44); -var42 = var45; -varonce41 = var42; +var21 = var_t1->type->type_table[cltype] == idtype; } +if (var21){ { -var46 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var42); +{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ +var24 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var24 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053); +fatal_exit(1); } -var_mclass = var46; -var47 = NULL; -if (var_mclass == NULL) { -var48 = 1; /* is null */ +var22 = var24; +RET_LABEL23:(void)0; +} +} +if (likely(varonce!=NULL)) { +var25 = varonce; } else { -var48 = 0; /* arg is null but recv is not */ +var26 = "Type Error: `or else` on `null`."; +var27 = standard___standard__NativeString___to_s_with_length(var26, 32l); +var25 = var27; +varonce = var25; } -if (0) { -{ /* Inline kernel#Object#== (var_mclass,var47) on */ -var_other = var47; { -{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ -var53 = var_mclass == var_other; -var51 = var53; -goto RET_LABEL52; -RET_LABEL52:(void)0; +nit__typing___nit__typing__TypeVisitor___error(var_v, var22, var25); /* Direct call typing#TypeVisitor#error on */ } +} else { +{ +{ /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on */ +var30 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2053); +fatal_exit(1); } -var49 = var51; -goto RET_LABEL50; -RET_LABEL50:(void)0; +var28 = var30; +RET_LABEL29:(void)0; } -var48 = var49; } -if (var48){ -goto RET_LABEL; +{ +var31 = nit__typing___nit__typing__TypeVisitor___check_can_be_null(var_v, var28, var_t1); +} +if (var31){ +{ +var32 = ((val*(*)(val* self))(var_t1->class->vft[COLOR_nit__model__MType__as_notnull]))(var_t1); /* as_notnull on */ +} +var_t1 = var32; } else { } +} +var33 = NEW_standard__Array(&type_standard__Array__nit__MType); { -var54 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_t1, var_t2); +standard___standard__Array___with_capacity(var33, 2l); /* Direct call array#Array#with_capacity on */ } -if (var54){ -var55 = NEW_standard__Array(&type_standard__Array__nit__MType); -var56 = 1; +var_34 = var33; { -standard___standard__Array___with_capacity(var55, var56); /* Direct call array#Array#with_capacity on */ +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_34, var_t1); /* Direct call array#AbstractArray#push on */ } -var_57 = var55; { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_57, var_t2); /* Direct call array#AbstractArray#push on */ +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_34, var_t2); /* Direct call array#AbstractArray#push on */ } { -var58 = nit___nit__MClass___get_mtype(var_mclass, var_57); +var35 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_34); } -var_mtype = var58; +var_t = var35; +if (var_t == NULL) { +var36 = 1; /* is null */ } else { -{ -var59 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_t2, var_t1); +var36 = 0; /* arg is null but recv is not */ } -if (var59){ -var60 = NEW_standard__Array(&type_standard__Array__nit__MType); -var61 = 1; +if (0) { +{ /* Inline kernel#Object#== (var_t,((val*)NULL)) on */ +var_other = ((val*)NULL); { -standard___standard__Array___with_capacity(var60, var61); /* Direct call array#Array#with_capacity on */ +{ /* Inline kernel#Object#is_same_instance (var_t,var_other) on */ +var41 = var_t == var_other; +var39 = var41; +goto RET_LABEL40; +RET_LABEL40:(void)0; } -var_62 = var60; -{ -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_62, var_t1); /* Direct call array#AbstractArray#push on */ } -{ -var63 = nit___nit__MClass___get_mtype(var_mclass, var_62); +var37 = var39; +goto RET_LABEL38; +RET_LABEL38:(void)0; } -var_mtype = var63; -} else { -if (varonce64) { -var65 = varonce64; -} else { -var66 = "Type Error: Cannot create range: "; -var67 = 33; -var68 = standard___standard__NativeString___to_s_with_length(var66, var67); -var65 = var68; -varonce64 = var65; +var36 = var37; } -if (varonce69) { -var70 = varonce69; +if (var36){ +if (likely(varonce42!=NULL)) { +var43 = varonce42; } else { -var71 = " vs "; -var72 = 4; -var73 = standard___standard__NativeString___to_s_with_length(var71, var72); -var70 = var73; -varonce69 = var70; +var44 = "Object"; +var45 = standard___standard__NativeString___to_s_with_length(var44, 6l); +var43 = var45; +varonce42 = var43; } -var74 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var74 = array_instance Array[Object] */ -var75 = 4; -var76 = NEW_standard__NativeArray(var75, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var76)->values[0] = (val*) var65; -((struct instance_standard__NativeArray*)var76)->values[1] = (val*) var_t1; -((struct instance_standard__NativeArray*)var76)->values[2] = (val*) var70; -((struct instance_standard__NativeArray*)var76)->values[3] = (val*) var_t2; { -((void (*)(val* self, val* p0, long p1))(var74->class->vft[COLOR_standard__array__Array__with_native]))(var74, var76, var75) /* with_native on */; +var46 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var43); } +var_c = var46; +if (var_c == NULL) { +var47 = 1; /* is null */ +} else { +var47 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_c,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var77 = ((val* (*)(val* self))(var74->class->vft[COLOR_standard__string__Object__to_s]))(var74) /* to_s on */; +{ /* Inline kernel#Object#is_same_instance (var_c,var_other) on */ +var52 = var_c == var_other; +var50 = var52; +goto RET_LABEL51; +RET_LABEL51:(void)0; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var77); /* Direct call typing#TypeVisitor#error on */ } -goto RET_LABEL; +var48 = var50; +goto RET_LABEL49; +RET_LABEL49:(void)0; +} +var47 = var48; } +if (var47){ +goto RET_LABEL; +} else { } { -{ /* Inline typing#AExpr#mtype= (self,var_mtype) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_mtype; /* _mtype on */ -RET_LABEL78:(void)0; +{ /* Inline model#MClass#mclass_type (var_c) on */ +var55 = var_c->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); } +var53 = var55; +RET_LABEL54:(void)0; } -/* isa ACrangeExpr */ -cltype = type_nit__ACrangeExpr.color; -idtype = type_nit__ACrangeExpr.id; -if(cltype >= self->type->table_size) { -var79 = 0; -} else { -var79 = self->type->type_table[cltype] == idtype; } -if (var79){ -if (varonce80) { -var81 = varonce80; -} else { -var82 = "init"; -var83 = 4; -var84 = standard___standard__NativeString___to_s_with_length(var82, var83); -var81 = var84; -varonce80 = var81; +var_t = var53; +{ +var56 = nit__typing___nit__typing__TypeVisitor___can_be_null(var_v, var_t2); } -var85 = 0; +if (var56){ { -var86 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var81, var85); +var57 = nit___nit__MType___as_nullable(var_t); } -var_callsite = var86; -} else { -/* isa AOrangeExpr */ -cltype88 = type_nit__AOrangeExpr.color; -idtype89 = type_nit__AOrangeExpr.id; -if(cltype88 >= self->type->table_size) { -var87 = 0; +var_t = var57; } else { -var87 = self->type->type_table[cltype88] == idtype89; } -if (var87){ -if (varonce90) { -var91 = varonce90; } else { -var92 = "without_last"; -var93 = 12; -var94 = standard___standard__NativeString___to_s_with_length(var92, var93); -var91 = var94; -varonce90 = var91; } -var95 = 0; { -var96 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var91, var95); +{ /* Inline typing#AExpr#mtype= (self,var_t) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_t; /* _mtype on */ +RET_LABEL58:(void)0; } -var_callsite = var96; -} else { -PRINT_ERROR("Runtime error: %s", "Aborted"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1304); -show_backtrace(1); } +RET_LABEL:; +} +/* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */ +void nit__typing___ATrueExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable MType */; +var_v = p0; +{ +var = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } { -{ /* Inline typing#ARangeExpr#init_callsite= (self,var_callsite) on */ -self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val = var_callsite; /* _init_callsite on */ -RET_LABEL97:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on */ +RET_LABEL1:(void)0; } } RET_LABEL:; } -/* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */ -void nit__typing___ANullExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */ +void nit__typing___AFalseExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : MModule */; -val* var2 /* : MModule */; -val* var3 /* : Model */; -val* var5 /* : Model */; -val* var6 /* : MNullType */; -val* var8 /* : MNullType */; +val* var /* : nullable MType */; var_v = p0; { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +var = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } -var = var2; +{ +{ /* Inline typing#AExpr#mtype= (self,var) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on */ RET_LABEL1:(void)0; } } -{ -{ /* Inline mmodule#MModule#model (var) on */ -var5 = var->attrs[COLOR_nit__mmodule__MModule___model].val; /* _model on */ -if (unlikely(var5 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 73); -show_backtrace(1); +RET_LABEL:; } -var3 = var5; -RET_LABEL4:(void)0; +/* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */ +void nit__typing___AIntExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassType */; +val* var12 /* : MClassType */; +var_v = p0; +if (likely(varonce!=NULL)) { +var = varonce; +} else { +var1 = "Int"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 3l); +var = var2; +varonce = var; } +{ +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +} +var_mclass = var3; +if (var_mclass == NULL) { +var4 = 1; /* is null */ +} else { +var4 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline model#Model#null_type (var3) on */ -var8 = var3->attrs[COLOR_nit__model__Model___null_type].val; /* _null_type on */ -if (unlikely(var8 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 94); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var9 = var_mclass == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var6 = var8; -RET_LABEL7:(void)0; } +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +goto RET_LABEL; +} else { } { -{ /* Inline typing#AExpr#mtype= (self,var6) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var6; /* _mtype on */ -RET_LABEL9:(void)0; +{ /* Inline model#MClass#mclass_type (var_mclass) on */ +var12 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); } +var10 = var12; +RET_LABEL11:(void)0; } -RET_LABEL:; } -/* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */ -val* nit__typing___AIsaExpr___cast_type(val* self) { -val* var /* : nullable MType */; -val* var1 /* : nullable MType */; -var1 = self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val; /* _cast_type on */ -var = var1; -RET_LABEL:; -return var; +{ +{ /* Inline typing#AExpr#mtype= (self,var10) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var10; /* _mtype on */ +RET_LABEL13:(void)0; +} } -/* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */ -void nit__typing___AIsaExpr___cast_type_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val = p0; /* _cast_type on */ RET_LABEL:; } -/* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */ -void nit__typing___AIsaExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AByteExpr#accept_typing for (self: AByteExpr, TypeVisitor) */ +void nit__typing___AByteExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : AType */; -val* var5 /* : AType */; -val* var6 /* : nullable MType */; -val* var_mtype /* var mtype: nullable MType */; -val* var8 /* : AExpr */; -val* var10 /* : AExpr */; -val* var11 /* : nullable Variable */; -val* var_variable /* var variable: nullable Variable */; -val* var12 /* : null */; -short int var13 /* : Bool */; -short int var14 /* : Bool */; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; val* var_other /* var other: nullable Object */; -short int var16 /* : Bool */; -short int var17 /* : Bool */; -val* var18 /* : nullable FlowContext */; -val* var20 /* : nullable FlowContext */; -val* var21 /* : FlowContext */; -val* var23 /* : FlowContext */; -val* var24 /* : nullable MType */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassType */; +val* var12 /* : MClassType */; var_v = p0; -{ -{ /* Inline parser_nodes#AIsaExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1905); -show_backtrace(1); -} +if (likely(varonce!=NULL)) { +var = varonce; +} else { +var1 = "Byte"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 4l); var = var2; -RET_LABEL1:(void)0; +varonce = var; +} +{ +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); } +var_mclass = var3; +if (var_mclass == NULL) { +var4 = 1; /* is null */ +} else { +var4 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#AIsaExpr#n_type (self) on */ -var5 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_type].val; /* _n_type on */ -if (unlikely(var5 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1908); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var9 = var_mclass == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var3 = var5; -RET_LABEL4:(void)0; } +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; } -{ -var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_cast(var_v, self, var, var3); +var4 = var5; +} +if (var4){ +goto RET_LABEL; +} else { } -var_mtype = var6; { -{ /* Inline typing#AIsaExpr#cast_type= (self,var_mtype) on */ -self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val = var_mtype; /* _cast_type on */ -RET_LABEL7:(void)0; +{ /* Inline model#MClass#mclass_type (var_mclass) on */ +var12 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); +} +var10 = var12; +RET_LABEL11:(void)0; } } { -{ /* Inline parser_nodes#AIsaExpr#n_expr (self) on */ -var10 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var10 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1905); -show_backtrace(1); +{ /* Inline typing#AExpr#mtype= (self,var10) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var10; /* _mtype on */ +RET_LABEL13:(void)0; } -var8 = var10; -RET_LABEL9:(void)0; } +RET_LABEL:; +} +/* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */ +void nit__typing___AFloatExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassType */; +val* var12 /* : MClassType */; +var_v = p0; +if (likely(varonce!=NULL)) { +var = varonce; +} else { +var1 = "Float"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 5l); +var = var2; +varonce = var; } { -var11 = ((val* (*)(val* self))(var8->class->vft[COLOR_nit__typing__AExpr__its_variable]))(var8) /* its_variable on */; +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); } -var_variable = var11; -var12 = NULL; -if (var_variable == NULL) { -var13 = 0; /* is null */ +var_mclass = var3; +if (var_mclass == NULL) { +var4 = 1; /* is null */ } else { -var13 = 1; /* arg is null and recv is not */ +var4 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_variable,var12) on */ -var_other = var12; +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var16 = ((short int (*)(val* self, val* p0))(var_variable->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_variable, var_other) /* == on */; -} -var17 = !var16; -var14 = var17; -goto RET_LABEL15; -RET_LABEL15:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var9 = var_mclass == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var13 = var14; } -if (var13){ -{ -{ /* Inline flow#AExpr#after_flow_context (self) on */ -var20 = self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on */ -var18 = var20; -RET_LABEL19:(void)0; +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; } +var4 = var5; } -if (var18 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1332); -show_backtrace(1); +if (var4){ +goto RET_LABEL; } else { -{ /* Inline flow#FlowContext#when_true (var18) on */ -if (unlikely(var18 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224); -show_backtrace(1); -} -var23 = var18->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on */ -if (unlikely(var23 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224); -show_backtrace(1); -} -var21 = var23; -RET_LABEL22:(void)0; -} } { -nit__typing___FlowContext___set_var(var21, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on */ +{ /* Inline model#MClass#mclass_type (var_mclass) on */ +var12 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); } -} else { +var10 = var12; +RET_LABEL11:(void)0; } -{ -var24 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } { -{ /* Inline typing#AExpr#mtype= (self,var24) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var24; /* _mtype on */ -RET_LABEL25:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var10) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var10; /* _mtype on */ +RET_LABEL13:(void)0; } } RET_LABEL:; } -/* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */ -void nit__typing___AAsCastExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */ +void nit__typing___ACharExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : AType */; -val* var5 /* : AType */; -val* var6 /* : nullable MType */; -var_v = p0; -{ -{ /* Inline parser_nodes#AAsCastForm#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2299); -show_backtrace(1); -} -var = var2; -RET_LABEL1:(void)0; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassType */; +val* var12 /* : MClassType */; +var_v = p0; +if (likely(varonce!=NULL)) { +var = varonce; +} else { +var1 = "Char"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 4l); +var = var2; +varonce = var; } +{ +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); +} +var_mclass = var3; +if (var_mclass == NULL) { +var4 = 1; /* is null */ +} else { +var4 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#AAsCastExpr#n_type (self) on */ -var5 = self->attrs[COLOR_nit__parser_nodes__AAsCastExpr___n_type].val; /* _n_type on */ -if (unlikely(var5 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2316); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var9 = var_mclass == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var3 = var5; -RET_LABEL4:(void)0; } +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +goto RET_LABEL; +} else { } { -var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_cast(var_v, self, var, var3); +{ /* Inline model#MClass#mclass_type (var_mclass) on */ +var12 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); +} +var10 = var12; +RET_LABEL11:(void)0; +} } { -{ /* Inline typing#AExpr#mtype= (self,var6) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var6; /* _mtype on */ -RET_LABEL7:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var10) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var10; /* _mtype on */ +RET_LABEL13:(void)0; } } RET_LABEL:; } -/* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */ -void nit__typing___AAsNotnullExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */ +void nit__typing___AStringFormExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var_mtype /* var mtype: nullable MType */; -val* var4 /* : null */; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var4 /* : Bool */; short int var5 /* : Bool */; -short int var6 /* : Bool */; val* var_other /* var other: nullable Object */; -short int var8 /* : Bool */; -short int var10 /* : Bool */; -short int var11 /* : Bool */; -int cltype; -int idtype; -static val* varonce; -val* var12 /* : String */; -char* var13 /* : NativeString */; -long var14 /* : Int */; -val* var15 /* : FlatString */; -short int var16 /* : Bool */; -int cltype17; -int idtype18; -val* var19 /* : MType */; -val* var21 /* : MType */; -short int var24 /* : Bool */; -int cltype25; -int idtype26; -val* var27 /* : ModelBuilder */; -val* var29 /* : ModelBuilder */; -static val* varonce30; -val* var31 /* : String */; -char* var32 /* : NativeString */; -long var33 /* : Int */; -val* var34 /* : FlatString */; -static val* varonce35; -val* var36 /* : String */; -char* var37 /* : NativeString */; -long var38 /* : Int */; -val* var39 /* : FlatString */; -static val* varonce40; -val* var41 /* : String */; -char* var42 /* : NativeString */; -long var43 /* : Int */; -val* var44 /* : FlatString */; -val* var45 /* : Array[Object] */; -long var46 /* : Int */; -val* var47 /* : NativeArray[Object] */; -val* var48 /* : String */; -short int var49 /* : Bool */; -val* var50 /* : MType */; -val* var_u /* var u: MType */; -short int var51 /* : Bool */; -int cltype52; -int idtype53; -short int var54 /* : Bool */; -val* var55 /* : ModelBuilder */; -val* var57 /* : ModelBuilder */; -static val* varonce58; -val* var59 /* : String */; -char* var60 /* : NativeString */; -long var61 /* : Int */; -val* var62 /* : FlatString */; -static val* varonce63; -val* var64 /* : String */; -char* var65 /* : NativeString */; -long var66 /* : Int */; -val* var67 /* : FlatString */; -static val* varonce68; -val* var69 /* : String */; -char* var70 /* : NativeString */; -long var71 /* : Int */; -val* var72 /* : FlatString */; -static val* varonce73; -val* var74 /* : String */; -char* var75 /* : NativeString */; -long var76 /* : Int */; -val* var77 /* : FlatString */; -val* var78 /* : Array[Object] */; -long var79 /* : Int */; -val* var80 /* : NativeArray[Object] */; -val* var81 /* : String */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassType */; +val* var12 /* : MClassType */; var_v = p0; -{ -{ /* Inline parser_nodes#AAsCastForm#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2299); -show_backtrace(1); -} +if (likely(varonce!=NULL)) { +var = varonce; +} else { +var1 = "String"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 6l); var = var2; -RET_LABEL1:(void)0; -} +varonce = var; } { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); } -var_mtype = var3; -var4 = NULL; -if (var_mtype == NULL) { -var5 = 1; /* is null */ +var_mclass = var3; +if (var_mclass == NULL) { +var4 = 1; /* is null */ } else { -var5 = 0; /* arg is null but recv is not */ +var4 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_mtype,var4) on */ -var_other = var4; +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ -var10 = var_mtype == var_other; -var8 = var10; -goto RET_LABEL9; -RET_LABEL9:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var9 = var_mclass == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } } -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; } -var5 = var6; +var4 = var5; } -if (var5){ +if (var4){ goto RET_LABEL; } else { } -/* isa MNullType */ -cltype = type_nit__MNullType.color; -idtype = type_nit__MNullType.id; -if(cltype >= var_mtype->type->table_size) { -var11 = 0; -} else { -var11 = var_mtype->type->type_table[cltype] == idtype; +{ +{ /* Inline model#MClass#mclass_type (var_mclass) on */ +var12 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); +} +var10 = var12; +RET_LABEL11:(void)0; } -if (var11){ -if (varonce) { -var12 = varonce; -} else { -var13 = "Type error: as(not null) on null"; -var14 = 32; -var15 = standard___standard__NativeString___to_s_with_length(var13, var14); -var12 = var15; -varonce = var12; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var12); /* Direct call typing#TypeVisitor#error on */ +{ /* Inline typing#AExpr#mtype= (self,var10) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var10; /* _mtype on */ +RET_LABEL13:(void)0; } -goto RET_LABEL; -} else { } -/* isa MNullableType */ -cltype17 = type_nit__MNullableType.color; -idtype18 = type_nit__MNullableType.id; -if(cltype17 >= var_mtype->type->table_size) { -var16 = 0; +RET_LABEL:; +} +/* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */ +void nit__typing___ASuperstringExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +static val* varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassType */; +val* var12 /* : MClassType */; +static val* varonce14; +val* var15 /* : String */; +char* var16 /* : NativeString */; +val* var17 /* : FlatString */; +val* var18 /* : nullable MClass */; +val* var_objclass /* var objclass: nullable MClass */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +short int var22 /* : Bool */; +short int var24 /* : Bool */; +val* var25 /* : MClassType */; +val* var27 /* : MClassType */; +val* var_objtype /* var objtype: MClassType */; +val* var28 /* : ANodes[AExpr] */; +val* var30 /* : ANodes[AExpr] */; +val* var_ /* var : ANodes[AExpr] */; +val* var31 /* : Iterator[ANode] */; +val* var_32 /* var : Iterator[AExpr] */; +short int var33 /* : Bool */; +val* var34 /* : nullable Object */; +val* var_nexpr /* var nexpr: AExpr */; +val* var35 /* : nullable MType */; +var_v = p0; +if (likely(varonce!=NULL)) { +var = varonce; } else { -var16 = var_mtype->type->type_table[cltype17] == idtype18; +var1 = "String"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 6l); +var = var2; +varonce = var; } -if (var16){ { -{ /* Inline model#MNullableType#mtype (var_mtype) on */ -var21 = var_mtype->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on */ -if (unlikely(var21 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506); -show_backtrace(1); -} -var19 = var21; -RET_LABEL20:(void)0; +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); } +var_mclass = var3; +if (var_mclass == NULL) { +var4 = 1; /* is null */ +} else { +var4 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#AExpr#mtype= (self,var19) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var19; /* _mtype on */ -RET_LABEL22:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var9 = var_mclass == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; +} +} +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; } +var4 = var5; } +if (var4){ goto RET_LABEL; } else { } { -{ /* Inline typing#AExpr#mtype= (self,var_mtype) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_mtype; /* _mtype on */ -RET_LABEL23:(void)0; +{ /* Inline model#MClass#mclass_type (var_mclass) on */ +var12 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); } +var10 = var12; +RET_LABEL11:(void)0; } -/* isa MClassType */ -cltype25 = type_nit__MClassType.color; -idtype26 = type_nit__MClassType.id; -if(cltype25 >= var_mtype->type->table_size) { -var24 = 0; -} else { -var24 = var_mtype->type->type_table[cltype25] == idtype26; } -if (var24){ { -{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ -var29 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ -if (unlikely(var29 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); -show_backtrace(1); -} -var27 = var29; -RET_LABEL28:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var10) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var10; /* _mtype on */ +RET_LABEL13:(void)0; } } -if (varonce30) { -var31 = varonce30; +if (likely(varonce14!=NULL)) { +var15 = varonce14; } else { -var32 = "useless-type-test"; -var33 = 17; -var34 = standard___standard__NativeString___to_s_with_length(var32, var33); -var31 = var34; -varonce30 = var31; +var16 = "Object"; +var17 = standard___standard__NativeString___to_s_with_length(var16, 6l); +var15 = var17; +varonce14 = var15; } -if (varonce35) { -var36 = varonce35; -} else { -var37 = "Warning: expression is already not null, since it is a `"; -var38 = 56; -var39 = standard___standard__NativeString___to_s_with_length(var37, var38); -var36 = var39; -varonce35 = var36; +{ +var18 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var15); } -if (varonce40) { -var41 = varonce40; +var_objclass = var18; +if (var_objclass == NULL) { +var19 = 1; /* is null */ } else { -var42 = "`."; -var43 = 2; -var44 = standard___standard__NativeString___to_s_with_length(var42, var43); -var41 = var44; -varonce40 = var41; +var19 = 0; /* arg is null but recv is not */ } -var45 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var45 = array_instance Array[Object] */ -var46 = 3; -var47 = NEW_standard__NativeArray(var46, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var47)->values[0] = (val*) var36; -((struct instance_standard__NativeArray*)var47)->values[1] = (val*) var_mtype; -((struct instance_standard__NativeArray*)var47)->values[2] = (val*) var41; +if (0) { +{ /* Inline kernel#Object#== (var_objclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -((void (*)(val* self, val* p0, long p1))(var45->class->vft[COLOR_standard__array__Array__with_native]))(var45, var47, var46) /* with_native on */; +{ /* Inline kernel#Object#is_same_instance (var_objclass,var_other) on */ +var24 = var_objclass == var_other; +var22 = var24; +goto RET_LABEL23; +RET_LABEL23:(void)0; } } -{ -var48 = ((val* (*)(val* self))(var45->class->vft[COLOR_standard__string__Object__to_s]))(var45) /* to_s on */; +var20 = var22; +goto RET_LABEL21; +RET_LABEL21:(void)0; } -{ -nit___nit__ModelBuilder___warning(var27, self, var31, var48); /* Direct call modelbuilder_base#ModelBuilder#warning on */ +var19 = var20; } +if (var19){ goto RET_LABEL; } else { } { -var49 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on */; -} -if (unlikely(!var49)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1366); -show_backtrace(1); +{ /* Inline model#MClass#mclass_type (var_objclass) on */ +var27 = var_objclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var27 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); } -{ -var50 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_mtype); +var25 = var27; +RET_LABEL26:(void)0; } -var_u = var50; -/* isa MNullableType */ -cltype52 = type_nit__MNullableType.color; -idtype53 = type_nit__MNullableType.id; -if(cltype52 >= var_u->type->table_size) { -var51 = 0; -} else { -var51 = var_u->type->type_table[cltype52] == idtype53; } -var54 = !var51; -if (var54){ +var_objtype = var25; { -{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ -var57 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ -if (unlikely(var57 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); -show_backtrace(1); +{ /* Inline parser_nodes#ASuperstringExpr#n_exprs (self) on */ +var30 = self->attrs[COLOR_nit__parser_nodes__ASuperstringExpr___n_exprs].val; /* _n_exprs on */ +if (unlikely(var30 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2626); +fatal_exit(1); } -var55 = var57; -RET_LABEL56:(void)0; +var28 = var30; +RET_LABEL29:(void)0; } } -if (varonce58) { -var59 = varonce58; -} else { -var60 = "useless-type-test"; -var61 = 17; -var62 = standard___standard__NativeString___to_s_with_length(var60, var61); -var59 = var62; -varonce58 = var59; +var_ = var28; +{ +var31 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_); } -if (varonce63) { -var64 = varonce63; -} else { -var65 = "Warning: expression is already not null, since it is a `"; -var66 = 56; -var67 = standard___standard__NativeString___to_s_with_length(var65, var66); -var64 = var67; -varonce63 = var64; +var_32 = var31; +for(;;) { +{ +var33 = ((short int(*)(val* self))((((long)var_32&3)?class_info[((long)var_32&3)]:var_32->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_32); /* is_ok on */ } -if (varonce68) { -var69 = varonce68; -} else { -var70 = ": "; -var71 = 2; -var72 = standard___standard__NativeString___to_s_with_length(var70, var71); -var69 = var72; -varonce68 = var69; -} -if (varonce73) { -var74 = varonce73; -} else { -var75 = "`."; -var76 = 2; -var77 = standard___standard__NativeString___to_s_with_length(var75, var76); -var74 = var77; -varonce73 = var74; -} -var78 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var78 = array_instance Array[Object] */ -var79 = 5; -var80 = NEW_standard__NativeArray(var79, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var80)->values[0] = (val*) var64; -((struct instance_standard__NativeArray*)var80)->values[1] = (val*) var_mtype; -((struct instance_standard__NativeArray*)var80)->values[2] = (val*) var69; -((struct instance_standard__NativeArray*)var80)->values[3] = (val*) var_u; -((struct instance_standard__NativeArray*)var80)->values[4] = (val*) var74; +if (var33){ { -((void (*)(val* self, val* p0, long p1))(var78->class->vft[COLOR_standard__array__Array__with_native]))(var78, var80, var79) /* with_native on */; -} +var34 = ((val*(*)(val* self))((((long)var_32&3)?class_info[((long)var_32&3)]:var_32->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_32); /* item on */ } +var_nexpr = var34; { -var81 = ((val* (*)(val* self))(var78->class->vft[COLOR_standard__string__Object__to_s]))(var78) /* to_s on */; +var35 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var_nexpr, var_objtype); } { -nit___nit__ModelBuilder___warning(var55, self, var59, var81); /* Direct call modelbuilder_base#ModelBuilder#warning on */ +((void(*)(val* self))((((long)var_32&3)?class_info[((long)var_32&3)]:var_32->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_32); /* next on */ } -goto RET_LABEL; } else { +goto BREAK_label; } -RET_LABEL:; -} -/* method typing#AParExpr#accept_typing for (self: AParExpr, TypeVisitor) */ -void nit__typing___AParExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -var_v = p0; -{ -{ /* Inline parser_nodes#AParExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AParExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2288); -show_backtrace(1); -} -var = var2; -RET_LABEL1:(void)0; -} -} -{ -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } +BREAK_label: (void)0; { -{ /* Inline typing#AExpr#mtype= (self,var3) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var3; /* _mtype on */ -RET_LABEL4:(void)0; -} +((void(*)(val* self))((((long)var_32&3)?class_info[((long)var_32&3)]:var_32->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_32); /* finish on */ } RET_LABEL:; } -/* method typing#AOnceExpr#accept_typing for (self: AOnceExpr, TypeVisitor) */ -void nit__typing___AOnceExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -var_v = p0; -{ -{ /* Inline parser_nodes#AOnceExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AOnceExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1794); -show_backtrace(1); -} -var = var2; -RET_LABEL1:(void)0; -} -} -{ -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +/* method typing#AArrayExpr#with_capacity_callsite for (self: AArrayExpr): nullable CallSite */ +val* nit__typing___AArrayExpr___with_capacity_callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on */ +var = var1; +RET_LABEL:; +return var; } -{ -{ /* Inline typing#AExpr#mtype= (self,var3) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var3; /* _mtype on */ -RET_LABEL4:(void)0; +/* method typing#AArrayExpr#with_capacity_callsite= for (self: AArrayExpr, nullable CallSite) */ +void nit__typing___AArrayExpr___with_capacity_callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val = p0; /* _with_capacity_callsite on */ +RET_LABEL:; } +/* method typing#AArrayExpr#push_callsite for (self: AArrayExpr): nullable CallSite */ +val* nit__typing___AArrayExpr___push_callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val; /* _push_callsite on */ +var = var1; +RET_LABEL:; +return var; } +/* method typing#AArrayExpr#push_callsite= for (self: AArrayExpr, nullable CallSite) */ +void nit__typing___AArrayExpr___push_callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val = p0; /* _push_callsite on */ RET_LABEL:; } -/* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */ -val* nit__typing___ASelfExpr___AExpr__its_variable(val* self) { -val* var /* : nullable Variable */; -val* var1 /* : nullable Variable */; -var1 = self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val; /* _its_variable on */ +/* method typing#AArrayExpr#element_mtype for (self: AArrayExpr): nullable MType */ +val* nit__typing___AArrayExpr___element_mtype(val* self) { +val* var /* : nullable MType */; +val* var1 /* : nullable MType */; +var1 = self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val; /* _element_mtype on */ var = var1; RET_LABEL:; return var; } -/* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */ -void nit__typing___ASelfExpr___its_variable_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = p0; /* _its_variable on */ +/* method typing#AArrayExpr#element_mtype= for (self: AArrayExpr, nullable MType) */ +void nit__typing___AArrayExpr___element_mtype_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val = p0; /* _element_mtype on */ RET_LABEL:; } -/* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */ -void nit__typing___ASelfExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; +/* method typing#AArrayExpr#set_comprehension for (self: AArrayExpr, nullable AExpr) */ +void nit__typing___AArrayExpr___set_comprehension(val* self, val* p0) { +val* var_n /* var n: nullable AExpr */; short int var /* : Bool */; short int var1 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var3 /* : Bool */; -short int var_ /* var : Bool */; -short int var4 /* : Bool */; +short int var5 /* : Bool */; +short int var6 /* : Bool */; int cltype; int idtype; -short int var5 /* : Bool */; -static val* varonce; -val* var6 /* : String */; -char* var7 /* : NativeString */; -long var8 /* : Int */; -val* var9 /* : FlatString */; -val* var10 /* : Variable */; -val* var12 /* : Variable */; -val* var_variable /* var variable: Variable */; -val* var14 /* : nullable MType */; -var_v = p0; +val* var7 /* : nullable AExpr */; +val* var9 /* : nullable AExpr */; +short int var10 /* : Bool */; +int cltype11; +int idtype12; +val* var13 /* : nullable AExpr */; +val* var15 /* : nullable AExpr */; +val* var16 /* : nullable AExpr */; +val* var18 /* : nullable AExpr */; +var_n = p0; +if (var_n == NULL) { +var = 1; /* is null */ +} else { +var = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_n,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#TypeVisitor#is_toplevel_context (var_v) on */ -var3 = var_v->attrs[COLOR_nit__typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on */ +{ /* Inline kernel#Object#is_same_instance (var_n,var_other) on */ +var5 = var_n == var_other; +var3 = var5; +goto RET_LABEL4; +RET_LABEL4:(void)0; +} +} var1 = var3; +goto RET_LABEL2; RET_LABEL2:(void)0; } +var = var1; } -var_ = var1; -if (var1){ -/* isa AImplicitSelfExpr */ -cltype = type_nit__AImplicitSelfExpr.color; -idtype = type_nit__AImplicitSelfExpr.id; -if(cltype >= self->type->table_size) { -var4 = 0; +if (var){ +goto RET_LABEL; } else { -var4 = self->type->type_table[cltype] == idtype; -} -var5 = !var4; -var = var5; +/* isa AForExpr */ +cltype = type_nit__AForExpr.color; +idtype = type_nit__AForExpr.id; +if(cltype >= var_n->type->table_size) { +var6 = 0; } else { -var = var_; +var6 = var_n->type->type_table[cltype] == idtype; +} +if (var6){ +{ +{ /* Inline parser_nodes#AForExpr#n_block (var_n) on */ +var9 = var_n->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on */ +var7 = var9; +RET_LABEL8:(void)0; } -if (var){ -if (varonce) { -var6 = varonce; -} else { -var7 = "Error: self cannot be used in top-level method."; -var8 = 47; -var9 = standard___standard__NativeString___to_s_with_length(var7, var8); -var6 = var9; -varonce = var6; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var6); /* Direct call typing#TypeVisitor#error on */ +nit__typing___AArrayExpr___set_comprehension(self, var7); /* Direct call typing#AArrayExpr#set_comprehension on */ } } else { +/* isa AIfExpr */ +cltype11 = type_nit__AIfExpr.color; +idtype12 = type_nit__AIfExpr.id; +if(cltype11 >= var_n->type->table_size) { +var10 = 0; +} else { +var10 = var_n->type->type_table[cltype11] == idtype12; } +if (var10){ { -{ /* Inline typing#TypeVisitor#selfvariable (var_v) on */ -var12 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on */ -if (unlikely(var12 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50); -show_backtrace(1); +{ /* Inline parser_nodes#AIfExpr#n_then (var_n) on */ +var15 = var_n->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on */ +var13 = var15; +RET_LABEL14:(void)0; } -var10 = var12; -RET_LABEL11:(void)0; } +{ +nit__typing___AArrayExpr___set_comprehension(self, var13); /* Direct call typing#AArrayExpr#set_comprehension on */ } -var_variable = var10; { -{ /* Inline typing#ASelfExpr#its_variable= (self,var_variable) on */ -self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = var_variable; /* _its_variable on */ -RET_LABEL13:(void)0; +{ /* Inline parser_nodes#AIfExpr#n_else (var_n) on */ +var18 = var_n->attrs[COLOR_nit__parser_nodes__AIfExpr___n_else].val; /* _n_else on */ +var16 = var18; +RET_LABEL17:(void)0; } } { -var14 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var_variable); +nit__typing___AArrayExpr___set_comprehension(self, var16); /* Direct call typing#AArrayExpr#set_comprehension on */ } +} else { { -{ /* Inline typing#AExpr#mtype= (self,var14) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var14; /* _mtype on */ -RET_LABEL15:(void)0; +{ /* Inline typing#AExpr#comprehension= (var_n,self) on */ +var_n->attrs[COLOR_nit__typing__AExpr___comprehension].val = self; /* _comprehension on */ +RET_LABEL19:(void)0; +} } } -RET_LABEL:; } -/* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */ -val* nit__typing___ASendExpr___callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__ASendExpr___callsite].val; /* _callsite on */ -var = var1; -RET_LABEL:; -return var; } -/* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */ -void nit__typing___ASendExpr___callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = p0; /* _callsite on */ RET_LABEL:; } -/* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */ -void nit__typing___ASendExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */ +void nit__typing___AArrayExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var_recvtype /* var recvtype: nullable MType */; -val* var4 /* : String */; -val* var_name /* var name: String */; -val* var5 /* : null */; +val* var_mtype /* var mtype: nullable MType */; +val* var /* : nullable AType */; +val* var2 /* : nullable AType */; +val* var_ntype /* var ntype: nullable AType */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; short int var6 /* : Bool */; short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; +val* var8 /* : nullable MType */; short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : AExpr */; -val* var14 /* : AExpr */; +short int var10 /* : Bool */; +val* var_other12 /* var other: nullable Object */; +short int var13 /* : Bool */; short int var15 /* : Bool */; -int cltype; -int idtype; -val* var16 /* : nullable CallSite */; -val* var_callsite /* var callsite: nullable CallSite */; -val* var17 /* : null */; -short int var18 /* : Bool */; -short int var19 /* : Bool */; -short int var21 /* : Bool */; -short int var23 /* : Bool */; -val* var25 /* : MSignature */; -val* var27 /* : MSignature */; -val* var_msignature /* var msignature: MSignature */; -val* var28 /* : Array[AExpr] */; -val* var_args /* var args: Array[AExpr] */; -short int var29 /* : Bool */; -val* var30 /* : MMethod */; -val* var32 /* : MMethod */; -short int var33 /* : Bool */; +val* var16 /* : Array[nullable MType] */; +val* var_mtypes /* var mtypes: Array[nullable MType] */; +short int var_useless /* var useless: Bool */; +val* var17 /* : ANodes[AExpr] */; +val* var19 /* : ANodes[AExpr] */; +val* var_ /* var : ANodes[AExpr] */; +val* var20 /* : Iterator[ANode] */; +val* var_21 /* var : Iterator[AExpr] */; +short int var22 /* : Bool */; +val* var23 /* : nullable Object */; +val* var_e /* var e: AExpr */; +val* var24 /* : nullable MType */; +val* var_t /* var t: nullable MType */; +short int var25 /* : Bool */; +short int var26 /* : Bool */; +short int var28 /* : Bool */; +short int var30 /* : Bool */; +short int var31 /* : Bool */; +short int var32 /* : Bool */; +short int var34 /* : Bool */; short int var35 /* : Bool */; -val* var36 /* : nullable MPropDef */; -val* var38 /* : nullable MPropDef */; -val* var_vmpropdef /* var vmpropdef: nullable MPropDef */; -short int var39 /* : Bool */; +val* var36 /* : nullable MType */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; short int var40 /* : Bool */; -int cltype41; -int idtype42; -short int var_ /* var : Bool */; -val* var43 /* : MProperty */; -val* var45 /* : MProperty */; -short int var46 /* : Bool */; +short int var42 /* : Bool */; +short int var43 /* : Bool */; +short int var45 /* : Bool */; +short int var47 /* : Bool */; short int var48 /* : Bool */; short int var49 /* : Bool */; -static val* varonce; -val* var50 /* : String */; -char* var51 /* : NativeString */; -long var52 /* : Int */; -val* var53 /* : FlatString */; -short int var54 /* : Bool */; -short int var55 /* : Bool */; -short int var56 /* : Bool */; -int cltype57; -int idtype58; -short int var_59 /* var : Bool */; -val* var60 /* : MProperty */; -val* var62 /* : MProperty */; -short int var63 /* : Bool */; -short int var65 /* : Bool */; -short int var_66 /* var : Bool */; -val* var67 /* : MMethod */; -val* var69 /* : MMethod */; +short int var51 /* : Bool */; +short int var53 /* : Bool */; +val* var54 /* : nullable MType */; +val* var56 /* : nullable MType */; +short int var57 /* : Bool */; +short int var58 /* : Bool */; +short int var60 /* : Bool */; +short int var61 /* : Bool */; +val* var62 /* : nullable MType */; +val* var64 /* : nullable MType */; +val* var65 /* : nullable MType */; +short int var66 /* : Bool */; +short int var67 /* : Bool */; +short int var68 /* : Bool */; short int var70 /* : Bool */; short int var72 /* : Bool */; -short int var73 /* : Bool */; -static val* varonce74; -val* var75 /* : String */; -char* var76 /* : NativeString */; -long var77 /* : Int */; -val* var78 /* : FlatString */; -static val* varonce79; -val* var80 /* : String */; -char* var81 /* : NativeString */; -long var82 /* : Int */; +short int var_73 /* var : Bool */; +short int var74 /* : Bool */; +int cltype; +int idtype; +val* var75 /* : NativeArray[String] */; +static val* varonce; +static val* varonce76; +val* var77 /* : String */; +char* var78 /* : NativeString */; +val* var79 /* : FlatString */; +static val* varonce80; +val* var81 /* : String */; +char* var82 /* : NativeString */; val* var83 /* : FlatString */; -val* var84 /* : MMethod */; -val* var86 /* : MMethod */; -val* var87 /* : Array[Object] */; -long var88 /* : Int */; -val* var89 /* : NativeArray[Object] */; -val* var90 /* : String */; -val* var91 /* : nullable MType */; -val* var93 /* : nullable MType */; -val* var_ret /* var ret: nullable MType */; -val* var94 /* : null */; -short int var95 /* : Bool */; -short int var96 /* : Bool */; -val* var_other98 /* var other: nullable Object */; -short int var99 /* : Bool */; -short int var100 /* : Bool */; -short int var102 /* : Bool */; +val* var84 /* : String */; +val* var85 /* : String */; +short int var86 /* : Bool */; +short int var87 /* : Bool */; +short int var89 /* : Bool */; +short int var90 /* : Bool */; +val* var91 /* : ModelBuilder */; +val* var93 /* : ModelBuilder */; +static val* varonce94; +val* var95 /* : String */; +char* var96 /* : NativeString */; +val* var97 /* : FlatString */; +val* var99 /* : NativeArray[String] */; +static val* varonce98; +static val* varonce100; +val* var101 /* : String */; +char* var102 /* : NativeString */; +val* var103 /* : FlatString */; +static val* varonce104; +val* var105 /* : String */; +char* var106 /* : NativeString */; +val* var107 /* : FlatString */; +val* var108 /* : String */; +val* var109 /* : String */; +static val* varonce111; +val* var112 /* : String */; +char* var113 /* : NativeString */; +val* var114 /* : FlatString */; +val* var115 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var116 /* : Bool */; +short int var117 /* : Bool */; +short int var119 /* : Bool */; +short int var121 /* : Bool */; +val* var122 /* : Array[MType] */; +val* var_123 /* var : Array[MType] */; +val* var124 /* : MClassType */; +val* var_array_mtype /* var array_mtype: MClassType */; +static val* varonce125; +val* var126 /* : String */; +char* var127 /* : NativeString */; +val* var128 /* : FlatString */; +val* var129 /* : nullable CallSite */; +static val* varonce131; +val* var132 /* : String */; +char* var133 /* : NativeString */; +val* var134 /* : FlatString */; +val* var135 /* : nullable CallSite */; var_v = p0; +var_mtype = ((val*)NULL); { -{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802); -show_backtrace(1); -} +{ /* Inline parser_nodes#AArrayExpr#n_type (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AArrayExpr___n_type].val; /* _n_type on */ var = var2; RET_LABEL1:(void)0; } } +var_ntype = var; +if (var_ntype == NULL) { +var3 = 0; /* is null */ +} else { +var3 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_ntype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +var6 = ((short int(*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other); /* == on */ } -var_recvtype = var3; +var7 = !var6; +var4 = var7; +goto RET_LABEL5; +RET_LABEL5:(void)0; +} +var3 = var4; +} +if (var3){ { -var4 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_name]))(self) /* property_name on */; +var8 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var_ntype); } -var_name = var4; -var5 = NULL; -if (var_recvtype == NULL) { -var6 = 1; /* is null */ +var_mtype = var8; +if (var_mtype == NULL) { +var9 = 1; /* is null */ } else { -var6 = 0; /* arg is null but recv is not */ +var9 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_recvtype,var5) on */ -var_other = var5; +{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on */ -var11 = var_recvtype == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other12) on */ +var15 = var_mtype == var_other12; +var13 = var15; +goto RET_LABEL14; +RET_LABEL14:(void)0; } } -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +var10 = var13; +goto RET_LABEL11; +RET_LABEL11:(void)0; } -var6 = var7; +var9 = var10; } -if (var6){ +if (var9){ goto RET_LABEL; } else { } +} else { +} +var16 = NEW_standard__Array(&type_standard__Array__nullable__nit__MType); { -{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ -var14 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802); -show_backtrace(1); +standard___standard__Array___standard__kernel__Object__init(var16); /* Direct call array#Array#init on */ } -var12 = var14; -RET_LABEL13:(void)0; +var_mtypes = var16; +var_useless = 0; +{ +{ /* Inline parser_nodes#AArrayExpr#n_exprs (self) on */ +var19 = self->attrs[COLOR_nit__parser_nodes__AArrayExpr___n_exprs].val; /* _n_exprs on */ +if (unlikely(var19 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2456); +fatal_exit(1); } +var17 = var19; +RET_LABEL18:(void)0; } -/* isa ASelfExpr */ -cltype = type_nit__ASelfExpr.color; -idtype = type_nit__ASelfExpr.id; -if(cltype >= var12->type->table_size) { -var15 = 0; -} else { -var15 = var12->type->type_table[cltype] == idtype; } +var_ = var17; { -var16 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var_name, var15); +var20 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_); } -var_callsite = var16; -var17 = NULL; -if (var_callsite == NULL) { -var18 = 1; /* is null */ +var_21 = var20; +for(;;) { +{ +var22 = ((short int(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_21); /* is_ok on */ +} +if (var22){ +{ +var23 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_21); /* item on */ +} +var_e = var23; +{ +var24 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_e); +} +var_t = var24; +if (var_t == NULL) { +var25 = 1; /* is null */ } else { -var18 = 0; /* arg is null but recv is not */ +var25 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_callsite,var17) on */ -var_other = var17; +{ /* Inline kernel#Object#== (var_t,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ -var23 = var_callsite == var_other; -var21 = var23; -goto RET_LABEL22; -RET_LABEL22:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_t,var_other12) on */ +var30 = var_t == var_other12; +var28 = var30; +goto RET_LABEL29; +RET_LABEL29:(void)0; } } -var19 = var21; -goto RET_LABEL20; -RET_LABEL20:(void)0; +var26 = var28; +goto RET_LABEL27; +RET_LABEL27:(void)0; } -var18 = var19; +var25 = var26; } -if (var18){ +if (var25){ goto RET_LABEL; } else { } { -{ /* Inline typing#ASendExpr#callsite= (self,var_callsite) on */ -self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = var_callsite; /* _callsite on */ -RET_LABEL24:(void)0; +nit__typing___AArrayExpr___set_comprehension(self, var_e); /* Direct call typing#AArrayExpr#set_comprehension on */ } +if (var_mtype == NULL) { +var31 = 0; /* is null */ +} else { +var31 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_mtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#CallSite#msignature (var_callsite) on */ -var27 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ -if (unlikely(var27 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494); -show_backtrace(1); -} -var25 = var27; -RET_LABEL26:(void)0; -} +var34 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other); /* == on */ } -var_msignature = var25; -{ -var28 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on */; +var35 = !var34; +var32 = var35; +goto RET_LABEL33; +RET_LABEL33:(void)0; } -var_args = var28; -{ -var29 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); +var31 = var32; } +if (var31){ { -{ /* Inline typing#CallSite#mproperty (var_callsite) on */ -var32 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ -if (unlikely(var32 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487); -show_backtrace(1); -} -var30 = var32; -RET_LABEL31:(void)0; +var36 = nit__typing___nit__typing__TypeVisitor___check_subtype(var_v, var_e, var_t, var_mtype, 0); } +if (var36 == NULL) { +var37 = 1; /* is null */ +} else { +var37 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var36,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -{ /* Inline model#MMethod#is_init (var30) on */ -var35 = var30->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on */ -var33 = var35; -RET_LABEL34:(void)0; +{ /* Inline kernel#Object#is_same_instance (var36,var_other12) on */ +var42 = var36 == var_other12; +var40 = var42; +goto RET_LABEL41; +RET_LABEL41:(void)0; } } -if (var33){ -{ -{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ -var38 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ -var36 = var38; -RET_LABEL37:(void)0; +var38 = var40; +goto RET_LABEL39; +RET_LABEL39:(void)0; } +var37 = var38; } -var_vmpropdef = var36; -/* isa MMethodDef */ -cltype41 = type_nit__MMethodDef.color; -idtype42 = type_nit__MMethodDef.id; -if(var_vmpropdef == NULL) { -var40 = 0; -} else { -if(cltype41 >= var_vmpropdef->type->table_size) { -var40 = 0; +if (var37){ +goto RET_LABEL; } else { -var40 = var_vmpropdef->type->type_table[cltype41] == idtype42; } -} -var_ = var40; -if (var40){ { -{ /* Inline model#MPropDef#mproperty (var_vmpropdef) on */ -var45 = var_vmpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var45 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); +{ /* Inline kernel#Object#== (var_t,var_mtype) on */ +var_other12 = var_mtype; +{ +{ /* Inline kernel#Object#is_same_instance (var_t,var_other12) on */ +var47 = var_t == var_other12; +var45 = var47; +goto RET_LABEL46; +RET_LABEL46:(void)0; +} } var43 = var45; +goto RET_LABEL44; RET_LABEL44:(void)0; } } -{ -{ /* Inline model#MMethod#is_init (var43) on */ -var48 = var43->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on */ -var46 = var48; -RET_LABEL47:(void)0; -} -} -var39 = var46; +if (var43){ +var_useless = 1; } else { -var39 = var_; } -var49 = !var39; -if (var49){ -if (varonce) { -var50 = varonce; } else { -var51 = "Can call a init only in another init"; -var52 = 36; -var53 = standard___standard__NativeString___to_s_with_length(var51, var52); -var50 = var53; -varonce = var50; -} { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var50); /* Direct call typing#TypeVisitor#error on */ -} -} else { -} -/* isa MMethodDef */ -cltype57 = type_nit__MMethodDef.color; -idtype58 = type_nit__MMethodDef.id; -if(var_vmpropdef == NULL) { -var56 = 0; -} else { -if(cltype57 >= var_vmpropdef->type->table_size) { -var56 = 0; -} else { -var56 = var_vmpropdef->type->type_table[cltype57] == idtype58; +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mtypes, var_t); /* Direct call array#Array#add on */ } } -var_59 = var56; -if (var56){ { -{ /* Inline model#MPropDef#mproperty (var_vmpropdef) on */ -var62 = var_vmpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var62 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); +((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_21); /* next on */ } -var60 = var62; -RET_LABEL61:(void)0; +} else { +goto BREAK_label; } } +BREAK_label: (void)0; { -{ /* Inline model#MMethod#is_root_init (var60) on */ -var65 = var60->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ -var63 = var65; -RET_LABEL64:(void)0; +((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_21); /* finish on */ } -} -var55 = var63; +if (var_mtype == NULL) { +var48 = 1; /* is null */ } else { -var55 = var_59; +var48 = 0; /* arg is null but recv is not */ } -var_66 = var55; -if (var55){ +if (0) { +{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -{ /* Inline typing#CallSite#mproperty (var_callsite) on */ -var69 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ -if (unlikely(var69 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487); -show_backtrace(1); -} -var67 = var69; -RET_LABEL68:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other12) on */ +var53 = var_mtype == var_other12; +var51 = var53; +goto RET_LABEL52; +RET_LABEL52:(void)0; } } -{ -{ /* Inline model#MMethod#is_root_init (var67) on */ -var72 = var67->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ -var70 = var72; -RET_LABEL71:(void)0; +var49 = var51; +goto RET_LABEL50; +RET_LABEL50:(void)0; } +var48 = var49; } -var73 = !var70; -var54 = var73; -} else { -var54 = var_66; +if (var48){ +{ +{ /* Inline typing#AArrayExpr#element_mtype (self) on */ +var56 = self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val; /* _element_mtype on */ +var54 = var56; +RET_LABEL55:(void)0; } -if (var54){ -if (varonce74) { -var75 = varonce74; -} else { -var76 = "Error: "; -var77 = 7; -var78 = standard___standard__NativeString___to_s_with_length(var76, var77); -var75 = var78; -varonce74 = var75; } -if (varonce79) { -var80 = varonce79; +if (var54 == NULL) { +var57 = 0; /* is null */ } else { -var81 = " cannot call a factory "; -var82 = 23; -var83 = standard___standard__NativeString___to_s_with_length(var81, var82); -var80 = var83; -varonce79 = var80; +var57 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var54,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#CallSite#mproperty (var_callsite) on */ -var86 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ -if (unlikely(var86 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487); -show_backtrace(1); +var60 = ((short int(*)(val* self, val* p0))(var54->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var54, var_other); /* == on */ } -var84 = var86; -RET_LABEL85:(void)0; +var61 = !var60; +var58 = var61; +goto RET_LABEL59; +RET_LABEL59:(void)0; } +var57 = var58; } -var87 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var87 = array_instance Array[Object] */ -var88 = 4; -var89 = NEW_standard__NativeArray(var88, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var89)->values[0] = (val*) var75; -((struct instance_standard__NativeArray*)var89)->values[1] = (val*) var_vmpropdef; -((struct instance_standard__NativeArray*)var89)->values[2] = (val*) var80; -((struct instance_standard__NativeArray*)var89)->values[3] = (val*) var84; +if (var57){ { -((void (*)(val* self, val* p0, long p1))(var87->class->vft[COLOR_standard__array__Array__with_native]))(var87, var89, var88) /* with_native on */; -} +{ /* Inline typing#AArrayExpr#element_mtype (self) on */ +var64 = self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val; /* _element_mtype on */ +var62 = var64; +RET_LABEL63:(void)0; } -{ -var90 = ((val* (*)(val* self))(var87->class->vft[COLOR_standard__string__Object__to_s]))(var87) /* to_s on */; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var90); /* Direct call typing#TypeVisitor#error on */ -} -} else { +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mtypes, var62); /* Direct call array#Array#add on */ } } else { } { -{ /* Inline model#MSignature#return_mtype (var_msignature) on */ -var93 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ -var91 = var93; -RET_LABEL92:(void)0; +var65 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_mtypes); } +var_mtype = var65; +} else { } -var_ret = var91; -var94 = NULL; -if (var_ret == NULL) { -var95 = 0; /* is null */ +if (var_mtype == NULL) { +var67 = 1; /* is null */ } else { -var95 = 1; /* arg is null and recv is not */ +var67 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_ret,var94) on */ -var_other98 = var94; +{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on */ +var_other12 = ((val*)NULL); { -var99 = ((short int (*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other98) /* == on */; -} -var100 = !var99; -var96 = var100; -goto RET_LABEL97; -RET_LABEL97:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other12) on */ +var72 = var_mtype == var_other12; +var70 = var72; +goto RET_LABEL71; +RET_LABEL71:(void)0; } -var95 = var96; } -if (var95){ -{ -{ /* Inline typing#AExpr#mtype= (self,var_ret) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_ret; /* _mtype on */ -RET_LABEL101:(void)0; +var68 = var70; +goto RET_LABEL69; +RET_LABEL69:(void)0; } +var67 = var68; } +var_73 = var67; +if (var67){ +var66 = var_73; } else { -var102 = 1; -{ -{ /* Inline typing#AExpr#is_typed= (self,var102) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var102; /* _is_typed on */ -RET_LABEL103:(void)0; -} +/* isa MNullType */ +cltype = type_nit__MNullType.color; +idtype = type_nit__MNullType.id; +if(cltype >= var_mtype->type->table_size) { +var74 = 0; +} else { +var74 = var_mtype->type->type_table[cltype] == idtype; } +var66 = var74; } -RET_LABEL:; +if (var66){ +if (unlikely(varonce==NULL)) { +var75 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String); +if (likely(varonce76!=NULL)) { +var77 = varonce76; +} else { +var78 = "Type Error: ambiguous array type "; +var79 = standard___standard__NativeString___to_s_with_length(var78, 33l); +var77 = var79; +varonce76 = var77; } -/* method typing#ASendExpr#raw_arguments for (self: ASendExpr): Array[AExpr] */ -val* nit__typing___ASendExpr___raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : Array[AExpr] */; -{ -var1 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on */; +((struct instance_standard__NativeArray*)var75)->values[0]=var77; +} else { +var75 = varonce; +varonce = NULL; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +if (likely(varonce80!=NULL)) { +var81 = varonce80; +} else { +var82 = " "; +var83 = standard___standard__NativeString___to_s_with_length(var82, 1l); +var81 = var83; +varonce80 = var81; } -/* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */ -val* nit__typing___ABinopExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : Array[AExpr] */; -long var2 /* : Int */; -val* var_ /* var : Array[AExpr] */; -val* var3 /* : AExpr */; -val* var5 /* : AExpr */; -var1 = NEW_standard__Array(&type_standard__Array__nit__AExpr); -var2 = 1; { -standard___standard__Array___with_capacity(var1, var2); /* Direct call array#Array#with_capacity on */ +var84 = standard__string___Collection___join(var_mtypes, var81); } -var_ = var1; +((struct instance_standard__NativeArray*)var75)->values[1]=var84; { -{ /* Inline parser_nodes#ABinopExpr#n_expr2 (self) on */ -var5 = self->attrs[COLOR_nit__parser_nodes__ABinopExpr___n_expr2].val; /* _n_expr2 on */ -if (unlikely(var5 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1809); -show_backtrace(1); -} -var3 = var5; -RET_LABEL4:(void)0; -} +var85 = ((val*(*)(val* self))(var75->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var75); /* native_to_s on */ } +varonce = var75; { -standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var3); /* Direct call array#AbstractArray#push on */ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var85); /* Direct call typing#TypeVisitor#error on */ } -var = var_; goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method typing#AEqExpr#property_name for (self: AEqExpr): String */ -val* nit__typing___AEqExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; } else { -var2 = "=="; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +if (var_useless){ +if (var_ntype == NULL) { +var86 = 0; /* is null */ +} else { +var86 = 1; /* arg is null and recv is not */ } -/* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */ -void nit__typing___AEqExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -var_v = p0; +if (0) { +{ /* Inline kernel#Object#!= (var_ntype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__typing___AEqExpr___AExpr__accept_typing]))(self, p0) /* accept_typing on */; +var89 = ((short int(*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other); /* == on */ +} +var90 = !var89; +var87 = var90; +goto RET_LABEL88; +RET_LABEL88:(void)0; +} +var86 = var87; +} +if (unlikely(!var86)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1459); +fatal_exit(1); } { -nit__typing___nit__typing__TypeVisitor___null_test(var_v, self); /* Direct call typing#TypeVisitor#null_test on */ +{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ +var93 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var93 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); +fatal_exit(1); } -RET_LABEL:; +var91 = var93; +RET_LABEL92:(void)0; } -/* method typing#ANeExpr#property_name for (self: ANeExpr): String */ -val* nit__typing___ANeExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +} +if (likely(varonce94!=NULL)) { +var95 = varonce94; } else { -var2 = "!="; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var96 = "useless-type"; +var97 = standard___standard__NativeString___to_s_with_length(var96, 12l); +var95 = var97; +varonce94 = var95; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +if (unlikely(varonce98==NULL)) { +var99 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce100!=NULL)) { +var101 = varonce100; +} else { +var102 = "Warning: useless type declaration `"; +var103 = standard___standard__NativeString___to_s_with_length(var102, 35l); +var101 = var103; +varonce100 = var101; +} +((struct instance_standard__NativeArray*)var99)->values[0]=var101; +if (likely(varonce104!=NULL)) { +var105 = varonce104; +} else { +var106 = "` in literal Array since it can be inferred from the elements type."; +var107 = standard___standard__NativeString___to_s_with_length(var106, 67l); +var105 = var107; +varonce104 = var105; +} +((struct instance_standard__NativeArray*)var99)->values[2]=var105; +} else { +var99 = varonce98; +varonce98 = NULL; } -/* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */ -void nit__typing___ANeExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -var_v = p0; { -((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__typing___ANeExpr___AExpr__accept_typing]))(self, p0) /* accept_typing on */; +var108 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on */ } +((struct instance_standard__NativeArray*)var99)->values[1]=var108; { -nit__typing___nit__typing__TypeVisitor___null_test(var_v, self); /* Direct call typing#TypeVisitor#null_test on */ +var109 = ((val*(*)(val* self))(var99->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var99); /* native_to_s on */ } -RET_LABEL:; +varonce98 = var99; +{ +nit___nit__ModelBuilder___warning(var91, var_ntype, var95, var109); /* Direct call modelbuilder_base#ModelBuilder#warning on */ } -/* method typing#ALtExpr#property_name for (self: ALtExpr): String */ -val* nit__typing___ALtExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; } else { -var2 = "<"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +{ /* Inline typing#AArrayExpr#element_mtype= (self,var_mtype) on */ +self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val = var_mtype; /* _element_mtype on */ +RET_LABEL110:(void)0; } -/* method typing#ALeExpr#property_name for (self: ALeExpr): String */ -val* nit__typing___ALeExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +} +if (likely(varonce111!=NULL)) { +var112 = varonce111; } else { -var2 = "<="; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var113 = "Array"; +var114 = standard___standard__NativeString___to_s_with_length(var113, 5l); +var112 = var114; +varonce111 = var112; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var115 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var112); } -/* method typing#ALlExpr#property_name for (self: ALlExpr): String */ -val* nit__typing___ALlExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +var_mclass = var115; +if (var_mclass == NULL) { +var116 = 1; /* is null */ } else { -var2 = "<<"; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var116 = 0; /* arg is null but recv is not */ } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +if (0) { +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other12 = ((val*)NULL); +{ +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other12) on */ +var121 = var_mclass == var_other12; +var119 = var121; +goto RET_LABEL120; +RET_LABEL120:(void)0; } -/* method typing#AGtExpr#property_name for (self: AGtExpr): String */ -val* nit__typing___AGtExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = ">"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var117 = var119; +goto RET_LABEL118; +RET_LABEL118:(void)0; } -/* method typing#AGeExpr#property_name for (self: AGeExpr): String */ -val* nit__typing___AGeExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = ">="; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var116 = var117; } -var = var1; +if (var116){ goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method typing#AGgExpr#property_name for (self: AGgExpr): String */ -val* nit__typing___AGgExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; } else { -var2 = ">>"; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var122 = NEW_standard__Array(&type_standard__Array__nit__MType); +{ +standard___standard__Array___with_capacity(var122, 1l); /* Direct call array#Array#with_capacity on */ } -/* method typing#APlusExpr#property_name for (self: APlusExpr): String */ -val* nit__typing___APlusExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = "+"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var_123 = var122; +{ +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_123, var_mtype); /* Direct call array#AbstractArray#push on */ } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var124 = nit___nit__MClass___get_mtype(var_mclass, var_123); } -/* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */ -val* nit__typing___AMinusExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +var_array_mtype = var124; +if (likely(varonce125!=NULL)) { +var126 = varonce125; } else { -var2 = "-"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var127 = "with_capacity"; +var128 = standard___standard__NativeString___to_s_with_length(var127, 13l); +var126 = var128; +varonce125 = var126; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var129 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_array_mtype, var126, 0); } -/* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */ -val* nit__typing___AStarshipExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = "<=>"; -var3 = 3; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +{ +{ /* Inline typing#AArrayExpr#with_capacity_callsite= (self,var129) on */ +self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val = var129; /* _with_capacity_callsite on */ +RET_LABEL130:(void)0; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method typing#AStarExpr#property_name for (self: AStarExpr): String */ -val* nit__typing___AStarExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +if (likely(varonce131!=NULL)) { +var132 = varonce131; } else { -var2 = "*"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var133 = "push"; +var134 = standard___standard__NativeString___to_s_with_length(var133, 4l); +var132 = var134; +varonce131 = var132; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var135 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_array_mtype, var132, 0); } -/* method typing#AStarstarExpr#property_name for (self: AStarstarExpr): String */ -val* nit__typing___AStarstarExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = "**"; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +{ +{ /* Inline typing#AArrayExpr#push_callsite= (self,var135) on */ +self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val = var135; /* _push_callsite on */ +RET_LABEL136:(void)0; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */ -val* nit__typing___ASlashExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = "/"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +{ +{ /* Inline typing#AExpr#mtype= (self,var_array_mtype) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_array_mtype; /* _mtype on */ +RET_LABEL137:(void)0; +} } +RET_LABEL:; +} +/* method typing#ARangeExpr#init_callsite for (self: ARangeExpr): nullable CallSite */ +val* nit__typing___ARangeExpr___init_callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val; /* _init_callsite on */ var = var1; -goto RET_LABEL; RET_LABEL:; return var; } -/* method typing#APercentExpr#property_name for (self: APercentExpr): String */ -val* nit__typing___APercentExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = "%"; -var3 = 1; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; -} -var = var1; -goto RET_LABEL; +/* method typing#ARangeExpr#init_callsite= for (self: ARangeExpr, nullable CallSite) */ +void nit__typing___ARangeExpr___init_callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val = p0; /* _init_callsite on */ RET_LABEL:; -return var; } -/* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */ -val* nit__typing___AUminusExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; +/* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */ +void nit__typing___ARangeExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +val* var /* : String */; +char* var1 /* : NativeString */; +val* var2 /* : FlatString */; +val* var3 /* : nullable MClass */; +val* var_discrete_class /* var discrete_class: nullable MClass */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +val* var10 /* : MClassDef */; +val* var12 /* : MClassDef */; +val* var13 /* : MClassType */; +val* var15 /* : MClassType */; +val* var_discrete_type /* var discrete_type: MClassType */; +val* var16 /* : AExpr */; +val* var18 /* : AExpr */; +val* var19 /* : nullable MType */; +val* var_t1 /* var t1: nullable MType */; +val* var20 /* : AExpr */; +val* var22 /* : AExpr */; +val* var23 /* : nullable MType */; +val* var_t2 /* var t2: nullable MType */; +short int var24 /* : Bool */; +short int var25 /* : Bool */; +short int var26 /* : Bool */; +short int var28 /* : Bool */; +short int var30 /* : Bool */; +short int var_ /* var : Bool */; +short int var31 /* : Bool */; +short int var32 /* : Bool */; +short int var34 /* : Bool */; +short int var36 /* : Bool */; +static val* varonce37; +val* var38 /* : String */; +char* var39 /* : NativeString */; +val* var40 /* : FlatString */; +val* var41 /* : nullable MClass */; +val* var_mclass /* var mclass: nullable MClass */; +short int var42 /* : Bool */; +short int var43 /* : Bool */; +short int var45 /* : Bool */; +short int var47 /* : Bool */; +short int var48 /* : Bool */; +val* var49 /* : Array[MType] */; +val* var_50 /* var : Array[MType] */; +val* var51 /* : MClassType */; +val* var_mtype /* var mtype: nullable Object */; +short int var52 /* : Bool */; +val* var53 /* : Array[MType] */; +val* var_54 /* var : Array[MType] */; +val* var55 /* : MClassType */; +val* var57 /* : NativeArray[String] */; +static val* varonce56; +static val* varonce58; +val* var59 /* : String */; +char* var60 /* : NativeString */; +val* var61 /* : FlatString */; +static val* varonce62; +val* var63 /* : String */; +char* var64 /* : NativeString */; +val* var65 /* : FlatString */; +static val* varonce66; +val* var67 /* : String */; +char* var68 /* : NativeString */; +val* var69 /* : FlatString */; +val* var70 /* : String */; +val* var71 /* : String */; +val* var72 /* : String */; +short int var74 /* : Bool */; +int cltype; +int idtype; +static val* varonce75; +val* var76 /* : String */; +char* var77 /* : NativeString */; +val* var78 /* : FlatString */; +val* var79 /* : nullable CallSite */; +val* var_callsite /* var callsite: nullable Object */; +short int var80 /* : Bool */; +int cltype81; +int idtype82; +static val* varonce83; +val* var84 /* : String */; +char* var85 /* : NativeString */; +val* var86 /* : FlatString */; +val* var87 /* : nullable CallSite */; +var_v = p0; +if (likely(varonce!=NULL)) { +var = varonce; } else { -var2 = "unary -"; -var3 = 7; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var1 = "Discrete"; +var2 = standard___standard__NativeString___to_s_with_length(var1, 8l); +var = var2; +varonce = var; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var3 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var); } -/* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */ -val* nit__typing___AUminusExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : Array[AExpr] */; -var1 = NEW_standard__Array(&type_standard__Array__nit__AExpr); +var_discrete_class = var3; +if (var_discrete_class == NULL) { +var4 = 1; /* is null */ +} else { +var4 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_discrete_class,((val*)NULL)) on */ +var_other = ((val*)NULL); { -standard___standard__Array___standard__kernel__Object__init(var1); /* Direct call array#Array#init on */ +{ /* Inline kernel#Object#is_same_instance (var_discrete_class,var_other) on */ +var9 = var_discrete_class == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var = var1; +} +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ goto RET_LABEL; -RET_LABEL:; -return var; +} else { } -/* method typing#ACallExpr#property_name for (self: ACallExpr): String */ -val* nit__typing___ACallExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -val* var1 /* : TId */; -val* var3 /* : TId */; -val* var4 /* : String */; { -{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1999); -show_backtrace(1); +{ /* Inline model#MClass#intro (var_discrete_class) on */ +var12 = var_discrete_class->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on */ +if (unlikely(var12 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460); +fatal_exit(1); } -var1 = var3; -RET_LABEL2:(void)0; +var10 = var12; +RET_LABEL11:(void)0; } } { -var4 = nit__lexer_work___Token___text(var1); +{ /* Inline model#MClassDef#bound_mtype (var10) on */ +var15 = var10->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on */ +if (unlikely(var15 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556); +fatal_exit(1); } -var = var4; -goto RET_LABEL; -RET_LABEL:; -return var; +var13 = var15; +RET_LABEL14:(void)0; } -/* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */ -val* nit__typing___ACallExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; +} +var_discrete_type = var13; { -{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2002); -show_backtrace(1); +{ /* Inline parser_nodes#ARangeExpr#n_expr (self) on */ +var18 = self->attrs[COLOR_nit__parser_nodes__ARangeExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2417); +fatal_exit(1); } -var1 = var3; -RET_LABEL2:(void)0; +var16 = var18; +RET_LABEL17:(void)0; } } { -var4 = nit__typing___AExprs___to_a(var1); -} -var = var4; -goto RET_LABEL; -RET_LABEL:; -return var; +var19 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var16, var_discrete_type); } -/* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */ -val* nit__typing___ACallAssignExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -val* var1 /* : TId */; -val* var3 /* : TId */; -val* var4 /* : String */; -static val* varonce; -val* var5 /* : String */; -char* var6 /* : NativeString */; -long var7 /* : Int */; -val* var8 /* : FlatString */; -val* var9 /* : String */; +var_t1 = var19; { -{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1999); -show_backtrace(1); +{ /* Inline parser_nodes#ARangeExpr#n_expr2 (self) on */ +var22 = self->attrs[COLOR_nit__parser_nodes__ARangeExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2423); +fatal_exit(1); } -var1 = var3; -RET_LABEL2:(void)0; +var20 = var22; +RET_LABEL21:(void)0; } } { -var4 = nit__lexer_work___Token___text(var1); +var23 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var20, var_discrete_type); } -if (varonce) { -var5 = varonce; +var_t2 = var23; +if (var_t1 == NULL) { +var25 = 1; /* is null */ } else { -var6 = "="; -var7 = 1; -var8 = standard___standard__NativeString___to_s_with_length(var6, var7); -var5 = var8; -varonce = var5; +var25 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_t1,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var9 = ((val* (*)(val* self, val* p0))(var4->class->vft[COLOR_standard__string__String___43d]))(var4, var5) /* + on */; +{ /* Inline kernel#Object#is_same_instance (var_t1,var_other) on */ +var30 = var_t1 == var_other; +var28 = var30; +goto RET_LABEL29; +RET_LABEL29:(void)0; } -var = var9; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */ -val* nit__typing___ACallAssignExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; -val* var_res /* var res: Array[AExpr] */; -val* var5 /* : AExpr */; -val* var7 /* : AExpr */; -{ -{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2002); -show_backtrace(1); +var26 = var28; +goto RET_LABEL27; +RET_LABEL27:(void)0; } -var1 = var3; -RET_LABEL2:(void)0; +var25 = var26; } +var_ = var25; +if (var25){ +var24 = var_; +} else { +if (var_t2 == NULL) { +var31 = 1; /* is null */ +} else { +var31 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_t2,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var4 = nit__typing___AExprs___to_a(var1); +{ /* Inline kernel#Object#is_same_instance (var_t2,var_other) on */ +var36 = var_t2 == var_other; +var34 = var36; +goto RET_LABEL35; +RET_LABEL35:(void)0; } -var_res = var4; -{ -{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on */ -var7 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on */ -if (unlikely(var7 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1772); -show_backtrace(1); } -var5 = var7; -RET_LABEL6:(void)0; +var32 = var34; +goto RET_LABEL33; +RET_LABEL33:(void)0; } +var31 = var32; } -{ -standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var5); /* Direct call array#Array#add on */ +var24 = var31; } -var = var_res; +if (var24){ goto RET_LABEL; -RET_LABEL:; -return var; +} else { } -/* method typing#ABraExpr#property_name for (self: ABraExpr): String */ -val* nit__typing___ABraExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +if (likely(varonce37!=NULL)) { +var38 = varonce37; } else { -var2 = "[]"; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; +var39 = "Range"; +var40 = standard___standard__NativeString___to_s_with_length(var39, 5l); +var38 = var40; +varonce37 = var38; } -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +var41 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var38); } -/* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */ -val* nit__typing___ABraExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; +var_mclass = var41; +if (var_mclass == NULL) { +var42 = 1; /* is null */ +} else { +var42 = 0; /* arg is null but recv is not */ +} +if (0) { +{ /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#ABraFormExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2071); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on */ +var47 = var_mclass == var_other; +var45 = var47; +goto RET_LABEL46; +RET_LABEL46:(void)0; } -var1 = var3; -RET_LABEL2:(void)0; } +var43 = var45; +goto RET_LABEL44; +RET_LABEL44:(void)0; } -{ -var4 = nit__typing___AExprs___to_a(var1); +var42 = var43; } -var = var4; +if (var42){ goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */ -val* nit__typing___ABraAssignExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; } else { -var2 = "[]="; -var3 = 3; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; -} -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */ -val* nit__typing___ABraAssignExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; -val* var_res /* var res: Array[AExpr] */; -val* var5 /* : AExpr */; -val* var7 /* : AExpr */; { -{ /* Inline parser_nodes#ABraFormExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2071); -show_backtrace(1); -} -var1 = var3; -RET_LABEL2:(void)0; -} +var48 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_t1, var_t2); } +if (var48){ +var49 = NEW_standard__Array(&type_standard__Array__nit__MType); { -var4 = nit__typing___AExprs___to_a(var1); +standard___standard__Array___with_capacity(var49, 1l); /* Direct call array#Array#with_capacity on */ } -var_res = var4; +var_50 = var49; { -{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on */ -var7 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on */ -if (unlikely(var7 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1772); -show_backtrace(1); -} -var5 = var7; -RET_LABEL6:(void)0; -} +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_50, var_t2); /* Direct call array#AbstractArray#push on */ } { -standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var5); /* Direct call array#Array#add on */ -} -var = var_res; -goto RET_LABEL; -RET_LABEL:; -return var; -} -/* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */ -val* nit__typing___ASendReassignFormExpr___write_callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on */ -var = var1; -RET_LABEL:; -return var; -} -/* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */ -void nit__typing___ASendReassignFormExpr___write_callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val = p0; /* _write_callsite on */ -RET_LABEL:; +var51 = nit___nit__MClass___get_mtype(var_mclass, var_50); } -/* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */ -void nit__typing___ASendReassignFormExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var_recvtype /* var recvtype: nullable MType */; -val* var4 /* : String */; -val* var_name /* var name: String */; -val* var5 /* : null */; -short int var6 /* : Bool */; -short int var7 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var9 /* : Bool */; -short int var11 /* : Bool */; -val* var12 /* : AExpr */; -val* var14 /* : AExpr */; -short int var15 /* : Bool */; -int cltype; -int idtype; -short int var_for_self /* var for_self: Bool */; -val* var16 /* : nullable CallSite */; -val* var_callsite /* var callsite: nullable CallSite */; -val* var17 /* : null */; -short int var18 /* : Bool */; -short int var19 /* : Bool */; -short int var21 /* : Bool */; -short int var23 /* : Bool */; -val* var25 /* : Array[AExpr] */; -val* var_args /* var args: Array[AExpr] */; -short int var26 /* : Bool */; -val* var27 /* : MSignature */; -val* var29 /* : MSignature */; -val* var30 /* : nullable MType */; -val* var32 /* : nullable MType */; -val* var_readtype /* var readtype: nullable MType */; -val* var33 /* : null */; -short int var34 /* : Bool */; -short int var35 /* : Bool */; -short int var37 /* : Bool */; -short int var39 /* : Bool */; -static val* varonce; -val* var40 /* : String */; -char* var41 /* : NativeString */; -long var42 /* : Int */; -val* var43 /* : FlatString */; -static val* varonce44; -val* var45 /* : String */; -char* var46 /* : NativeString */; -long var47 /* : Int */; -val* var48 /* : FlatString */; -val* var49 /* : Array[Object] */; -long var50 /* : Int */; -val* var51 /* : NativeArray[Object] */; -val* var52 /* : String */; -static val* varonce53; -val* var54 /* : String */; -char* var55 /* : NativeString */; -long var56 /* : Int */; -val* var57 /* : FlatString */; -val* var58 /* : String */; -val* var59 /* : AExpr */; -val* var61 /* : AExpr */; -short int var62 /* : Bool */; -int cltype63; -int idtype64; -val* var65 /* : nullable CallSite */; -val* var_wcallsite /* var wcallsite: nullable CallSite */; -val* var66 /* : null */; -short int var67 /* : Bool */; -short int var68 /* : Bool */; -short int var70 /* : Bool */; -short int var72 /* : Bool */; -val* var74 /* : MSignature */; -val* var76 /* : MSignature */; -val* var77 /* : Array[MParameter] */; -val* var79 /* : Array[MParameter] */; -val* var80 /* : nullable Object */; -val* var81 /* : MType */; -val* var83 /* : MType */; -val* var84 /* : nullable MType */; -val* var_wtype /* var wtype: nullable MType */; -val* var85 /* : null */; -short int var86 /* : Bool */; -short int var87 /* : Bool */; -short int var89 /* : Bool */; -short int var91 /* : Bool */; -val* var92 /* : Array[nullable Object] */; -val* var93 /* : AExpr */; -val* var95 /* : AExpr */; -short int var96 /* : Bool */; -short int var97 /* : Bool */; -var_v = p0; +var_mtype = var51; +} else { { -{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802); -show_backtrace(1); -} -var = var2; -RET_LABEL1:(void)0; -} +var52 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_t2, var_t1); } +if (var52){ +var53 = NEW_standard__Array(&type_standard__Array__nit__MType); { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +standard___standard__Array___with_capacity(var53, 1l); /* Direct call array#Array#with_capacity on */ } -var_recvtype = var3; +var_54 = var53; { -var4 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_name]))(self) /* property_name on */; -} -var_name = var4; -var5 = NULL; -if (var_recvtype == NULL) { -var6 = 1; /* is null */ -} else { -var6 = 0; /* arg is null but recv is not */ +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_54, var_t1); /* Direct call array#AbstractArray#push on */ } -if (0) { -{ /* Inline kernel#Object#== (var_recvtype,var5) on */ -var_other = var5; { -{ /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on */ -var11 = var_recvtype == var_other; -var9 = var11; -goto RET_LABEL10; -RET_LABEL10:(void)0; -} -} -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; -} -var6 = var7; +var55 = nit___nit__MClass___get_mtype(var_mclass, var_54); } -if (var6){ -goto RET_LABEL; +var_mtype = var55; } else { -} -{ -{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ -var14 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var14 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802); -show_backtrace(1); -} -var12 = var14; -RET_LABEL13:(void)0; -} -} -/* isa ASelfExpr */ -cltype = type_nit__ASelfExpr.color; -idtype = type_nit__ASelfExpr.id; -if(cltype >= var12->type->table_size) { -var15 = 0; +if (unlikely(varonce56==NULL)) { +var57 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String); +if (likely(varonce58!=NULL)) { +var59 = varonce58; } else { -var15 = var12->type->type_table[cltype] == idtype; -} -var_for_self = var15; -{ -var16 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var_name, var_for_self); +var60 = "Type Error: cannot create range: `"; +var61 = standard___standard__NativeString___to_s_with_length(var60, 34l); +var59 = var61; +varonce58 = var59; } -var_callsite = var16; -var17 = NULL; -if (var_callsite == NULL) { -var18 = 1; /* is null */ +((struct instance_standard__NativeArray*)var57)->values[0]=var59; +if (likely(varonce62!=NULL)) { +var63 = varonce62; } else { -var18 = 0; /* arg is null but recv is not */ -} -if (0) { -{ /* Inline kernel#Object#== (var_callsite,var17) on */ -var_other = var17; -{ -{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ -var23 = var_callsite == var_other; -var21 = var23; -goto RET_LABEL22; -RET_LABEL22:(void)0; -} -} -var19 = var21; -goto RET_LABEL20; -RET_LABEL20:(void)0; +var64 = "` vs `"; +var65 = standard___standard__NativeString___to_s_with_length(var64, 6l); +var63 = var65; +varonce62 = var63; } -var18 = var19; +((struct instance_standard__NativeArray*)var57)->values[2]=var63; +if (likely(varonce66!=NULL)) { +var67 = varonce66; +} else { +var68 = "`."; +var69 = standard___standard__NativeString___to_s_with_length(var68, 2l); +var67 = var69; +varonce66 = var67; } -if (var18){ -goto RET_LABEL; +((struct instance_standard__NativeArray*)var57)->values[4]=var67; } else { +var57 = varonce56; +varonce56 = NULL; } { -{ /* Inline typing#ASendExpr#callsite= (self,var_callsite) on */ -self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = var_callsite; /* _callsite on */ -RET_LABEL24:(void)0; -} +var70 = ((val*(*)(val* self))(var_t1->class->vft[COLOR_standard__string__Object__to_s]))(var_t1); /* to_s on */ } +((struct instance_standard__NativeArray*)var57)->values[1]=var70; { -var25 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on */; +var71 = ((val*(*)(val* self))(var_t2->class->vft[COLOR_standard__string__Object__to_s]))(var_t2); /* to_s on */ } -var_args = var25; +((struct instance_standard__NativeArray*)var57)->values[3]=var71; { -var26 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); +var72 = ((val*(*)(val* self))(var57->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var57); /* native_to_s on */ } +varonce56 = var57; { -{ /* Inline typing#CallSite#msignature (var_callsite) on */ -var29 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ -if (unlikely(var29 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494); -show_backtrace(1); +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var72); /* Direct call typing#TypeVisitor#error on */ } -var27 = var29; -RET_LABEL28:(void)0; +goto RET_LABEL; } } { -{ /* Inline model#MSignature#return_mtype (var27) on */ -var32 = var27->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ -var30 = var32; -RET_LABEL31:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var_mtype) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_mtype; /* _mtype on */ +RET_LABEL73:(void)0; } } -var_readtype = var30; -var33 = NULL; -if (var_readtype == NULL) { -var34 = 1; /* is null */ +/* isa ACrangeExpr */ +cltype = type_nit__ACrangeExpr.color; +idtype = type_nit__ACrangeExpr.id; +if(cltype >= self->type->table_size) { +var74 = 0; } else { -var34 = 0; /* arg is null but recv is not */ -} -if (0) { -{ /* Inline kernel#Object#== (var_readtype,var33) on */ -var_other = var33; -{ -{ /* Inline kernel#Object#is_same_instance (var_readtype,var_other) on */ -var39 = var_readtype == var_other; -var37 = var39; -goto RET_LABEL38; -RET_LABEL38:(void)0; +var74 = self->type->type_table[cltype] == idtype; } +if (var74){ +if (likely(varonce75!=NULL)) { +var76 = varonce75; +} else { +var77 = "init"; +var78 = standard___standard__NativeString___to_s_with_length(var77, 4l); +var76 = var78; +varonce75 = var76; } -var35 = var37; -goto RET_LABEL36; -RET_LABEL36:(void)0; -} -var34 = var35; +{ +var79 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var76, 0); } -if (var34){ -if (varonce) { -var40 = varonce; +var_callsite = var79; } else { -var41 = "Error: "; -var42 = 7; -var43 = standard___standard__NativeString___to_s_with_length(var41, var42); -var40 = var43; -varonce = var40; +/* isa AOrangeExpr */ +cltype81 = type_nit__AOrangeExpr.color; +idtype82 = type_nit__AOrangeExpr.id; +if(cltype81 >= self->type->table_size) { +var80 = 0; +} else { +var80 = self->type->type_table[cltype81] == idtype82; } -if (varonce44) { -var45 = varonce44; +if (var80){ +if (likely(varonce83!=NULL)) { +var84 = varonce83; } else { -var46 = " is not a function"; -var47 = 18; -var48 = standard___standard__NativeString___to_s_with_length(var46, var47); -var45 = var48; -varonce44 = var45; +var85 = "without_last"; +var86 = standard___standard__NativeString___to_s_with_length(var85, 12l); +var84 = var86; +varonce83 = var84; } -var49 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var49 = array_instance Array[Object] */ -var50 = 3; -var51 = NEW_standard__NativeArray(var50, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var51)->values[0] = (val*) var40; -((struct instance_standard__NativeArray*)var51)->values[1] = (val*) var_name; -((struct instance_standard__NativeArray*)var51)->values[2] = (val*) var45; { -((void (*)(val* self, val* p0, long p1))(var49->class->vft[COLOR_standard__array__Array__with_native]))(var49, var51, var50) /* with_native on */; +var87 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var84, 0); } +var_callsite = var87; +} else { +PRINT_ERROR("Runtime error: %s", "Aborted"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1508); +fatal_exit(1); } -{ -var52 = ((val* (*)(val* self))(var49->class->vft[COLOR_standard__string__Object__to_s]))(var49) /* to_s on */; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var52); /* Direct call typing#TypeVisitor#error on */ -} -goto RET_LABEL; -} else { +{ /* Inline typing#ARangeExpr#init_callsite= (self,var_callsite) on */ +self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val = var_callsite; /* _init_callsite on */ +RET_LABEL88:(void)0; } -if (varonce53) { -var54 = varonce53; -} else { -var55 = "="; -var56 = 1; -var57 = standard___standard__NativeString___to_s_with_length(var55, var56); -var54 = var57; -varonce53 = var54; } -{ -var58 = ((val* (*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__string__String___43d]))(var_name, var54) /* + on */; +RET_LABEL:; } +/* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */ +void nit__typing___ANullExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : MModule */; +val* var2 /* : MModule */; +val* var3 /* : Model */; +val* var5 /* : Model */; +val* var6 /* : MNullType */; +val* var8 /* : MNullType */; +var_v = p0; { -{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ -var61 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var61 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802); -show_backtrace(1); -} -var59 = var61; -RET_LABEL60:(void)0; +{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ +var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); +fatal_exit(1); } +var = var2; +RET_LABEL1:(void)0; } -/* isa ASelfExpr */ -cltype63 = type_nit__ASelfExpr.color; -idtype64 = type_nit__ASelfExpr.id; -if(cltype63 >= var59->type->table_size) { -var62 = 0; -} else { -var62 = var59->type->type_table[cltype63] == idtype64; } { -var65 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var58, var62); +{ /* Inline mmodule#MModule#model (var) on */ +var5 = var->attrs[COLOR_nit__mmodule__MModule___model].val; /* _model on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 73); +fatal_exit(1); +} +var3 = var5; +RET_LABEL4:(void)0; } -var_wcallsite = var65; -var66 = NULL; -if (var_wcallsite == NULL) { -var67 = 1; /* is null */ -} else { -var67 = 0; /* arg is null but recv is not */ } -if (0) { -{ /* Inline kernel#Object#== (var_wcallsite,var66) on */ -var_other = var66; { -{ /* Inline kernel#Object#is_same_instance (var_wcallsite,var_other) on */ -var72 = var_wcallsite == var_other; -var70 = var72; -goto RET_LABEL71; -RET_LABEL71:(void)0; +{ /* Inline model#Model#null_type (var3) on */ +var8 = var3->attrs[COLOR_nit__model__Model___null_type].val; /* _null_type on */ +if (unlikely(var8 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 94); +fatal_exit(1); } +var6 = var8; +RET_LABEL7:(void)0; } -var68 = var70; -goto RET_LABEL69; -RET_LABEL69:(void)0; } -var67 = var68; +{ +{ /* Inline typing#AExpr#mtype= (self,var6) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var6; /* _mtype on */ +RET_LABEL9:(void)0; } -if (var67){ -goto RET_LABEL; -} else { } -{ -{ /* Inline typing#ASendReassignFormExpr#write_callsite= (self,var_wcallsite) on */ -self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val = var_wcallsite; /* _write_callsite on */ -RET_LABEL73:(void)0; +RET_LABEL:; +} +/* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */ +val* nit__typing___AIsaExpr___cast_type(val* self) { +val* var /* : nullable MType */; +val* var1 /* : nullable MType */; +var1 = self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val; /* _cast_type on */ +var = var1; +RET_LABEL:; +return var; } +/* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */ +void nit__typing___AIsaExpr___cast_type_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val = p0; /* _cast_type on */ +RET_LABEL:; } +/* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */ +void nit__typing___AIsaExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : AType */; +val* var5 /* : AType */; +val* var6 /* : nullable MType */; +val* var_mtype /* var mtype: nullable MType */; +val* var8 /* : AExpr */; +val* var10 /* : AExpr */; +val* var11 /* : nullable Variable */; +val* var_variable /* var variable: nullable Variable */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : nullable FlowContext */; +val* var19 /* : nullable FlowContext */; +val* var20 /* : FlowContext */; +val* var22 /* : FlowContext */; +val* var23 /* : nullable MType */; +var_v = p0; { -{ /* Inline typing#CallSite#msignature (var_wcallsite) on */ -var76 = var_wcallsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ -if (unlikely(var76 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494); -show_backtrace(1); +{ /* Inline parser_nodes#AIsaExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2149); +fatal_exit(1); } -var74 = var76; -RET_LABEL75:(void)0; +var = var2; +RET_LABEL1:(void)0; } } { -{ /* Inline model#MSignature#mparameters (var74) on */ -var79 = var74->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on */ -if (unlikely(var79 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592); -show_backtrace(1); +{ /* Inline parser_nodes#AIsaExpr#n_type (self) on */ +var5 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_type].val; /* _n_type on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2155); +fatal_exit(1); } -var77 = var79; -RET_LABEL78:(void)0; +var3 = var5; +RET_LABEL4:(void)0; } } { -var80 = standard___standard__SequenceRead___last(var77); +var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_cast(var_v, self, var, var3); } +var_mtype = var6; { -{ /* Inline model#MParameter#mtype (var80) on */ -var83 = var80->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ -if (unlikely(var83 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690); -show_backtrace(1); +{ /* Inline typing#AIsaExpr#cast_type= (self,var_mtype) on */ +self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val = var_mtype; /* _cast_type on */ +RET_LABEL7:(void)0; } -var81 = var83; -RET_LABEL82:(void)0; +} +{ +{ /* Inline parser_nodes#AIsaExpr#n_expr (self) on */ +var10 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2149); +fatal_exit(1); +} +var8 = var10; +RET_LABEL9:(void)0; } } { -var84 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_readtype, var81); +var11 = ((val*(*)(val* self))(var8->class->vft[COLOR_nit__typing__AExpr__its_variable]))(var8); /* its_variable on */ } -var_wtype = var84; -var85 = NULL; -if (var_wtype == NULL) { -var86 = 1; /* is null */ +var_variable = var11; +if (var_variable == NULL) { +var12 = 0; /* is null */ } else { -var86 = 0; /* arg is null but recv is not */ +var12 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_wtype,var85) on */ -var_other = var85; +{ /* Inline kernel#Object#!= (var_variable,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_wtype,var_other) on */ -var91 = var_wtype == var_other; -var89 = var91; -goto RET_LABEL90; -RET_LABEL90:(void)0; +var15 = ((short int(*)(val* self, val* p0))(var_variable->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_variable, var_other); /* == on */ } +var16 = !var15; +var13 = var16; +goto RET_LABEL14; +RET_LABEL14:(void)0; } -var87 = var89; -goto RET_LABEL88; -RET_LABEL88:(void)0; +var12 = var13; } -var86 = var87; +if (var12){ +{ +{ /* Inline flow#AExpr#after_flow_context (self) on */ +var19 = self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on */ +var17 = var19; +RET_LABEL18:(void)0; } -if (var86){ -goto RET_LABEL; -} else { } -{ -var92 = standard__array___Collection___to_a(var_args); +if (var17 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1536); +fatal_exit(1); +} else { +{ /* Inline flow#FlowContext#when_true (var17) on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225); +fatal_exit(1); } -var_args = var92; -{ -{ /* Inline parser_nodes#AReassignFormExpr#n_value (self) on */ -var95 = self->attrs[COLOR_nit__parser_nodes__AReassignFormExpr___n_value].val; /* _n_value on */ -if (unlikely(var95 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1783); -show_backtrace(1); +var22 = var17->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 225); +fatal_exit(1); } -var93 = var95; -RET_LABEL94:(void)0; +var20 = var22; +RET_LABEL21:(void)0; } } { -standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_args, var93); /* Direct call array#Array#add on */ +nit__typing___FlowContext___set_var(var20, var_v, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on */ +} +} else { } { -var96 = nit___nit__CallSite___check_signature(var_wcallsite, var_v, var_args); +var23 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); } -var97 = 1; { -{ /* Inline typing#AExpr#is_typed= (self,var97) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var97; /* _is_typed on */ -RET_LABEL98:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var23) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var23; /* _mtype on */ +RET_LABEL24:(void)0; } } RET_LABEL:; } -/* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */ -val* nit__typing___ACallReassignExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -val* var1 /* : TId */; -val* var3 /* : TId */; -val* var4 /* : String */; +/* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */ +void nit__typing___AAsCastExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : AType */; +val* var5 /* : AType */; +val* var6 /* : nullable MType */; +var_v = p0; { -{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1999); -show_backtrace(1); -} -var1 = var3; -RET_LABEL2:(void)0; -} +{ /* Inline parser_nodes#AAsCastForm#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2648); +fatal_exit(1); } -{ -var4 = nit__lexer_work___Token___text(var1); +var = var2; +RET_LABEL1:(void)0; } -var = var4; -goto RET_LABEL; -RET_LABEL:; -return var; } -/* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */ -val* nit__typing___ACallReassignExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; { -{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2002); -show_backtrace(1); +{ /* Inline parser_nodes#AAsCastExpr#n_type (self) on */ +var5 = self->attrs[COLOR_nit__parser_nodes__AAsCastExpr___n_type].val; /* _n_type on */ +if (unlikely(var5 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2665); +fatal_exit(1); } -var1 = var3; -RET_LABEL2:(void)0; +var3 = var5; +RET_LABEL4:(void)0; } } { -var4 = nit__typing___AExprs___to_a(var1); +var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_cast(var_v, self, var, var3); } -var = var4; -goto RET_LABEL; -RET_LABEL:; -return var; +{ +{ /* Inline typing#AExpr#mtype= (self,var6) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var6; /* _mtype on */ +RET_LABEL7:(void)0; } -/* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */ -val* nit__typing___ABraReassignExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; -} else { -var2 = "[]"; -var3 = 2; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; } -var = var1; -goto RET_LABEL; RET_LABEL:; -return var; } -/* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */ -val* nit__typing___ABraReassignExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; +/* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */ +void nit__typing___AAsNotnullExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var_mtype /* var mtype: nullable MType */; +short int var4 /* : Bool */; +short int var5 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var7 /* : Bool */; +short int var9 /* : Bool */; +short int var10 /* : Bool */; +int cltype; +int idtype; +static val* varonce; +val* var11 /* : String */; +char* var12 /* : NativeString */; +val* var13 /* : FlatString */; +val* var14 /* : AExpr */; +val* var16 /* : AExpr */; +short int var17 /* : Bool */; +val* var18 /* : MType */; +var_v = p0; { -{ /* Inline parser_nodes#ABraFormExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2071); -show_backtrace(1); +{ /* Inline parser_nodes#AAsCastForm#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2648); +fatal_exit(1); } -var1 = var3; -RET_LABEL2:(void)0; +var = var2; +RET_LABEL1:(void)0; } } { -var4 = nit__typing___AExprs___to_a(var1); -} -var = var4; -goto RET_LABEL; -RET_LABEL:; -return var; +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -/* method typing#AInitExpr#property_name for (self: AInitExpr): String */ -val* nit__typing___AInitExpr___ASendExpr__property_name(val* self) { -val* var /* : String */; -static val* varonce; -val* var1 /* : String */; -char* var2 /* : NativeString */; -long var3 /* : Int */; -val* var4 /* : FlatString */; -if (varonce) { -var1 = varonce; +var_mtype = var3; +if (var_mtype == NULL) { +var4 = 1; /* is null */ } else { -var2 = "init"; -var3 = 4; -var4 = standard___standard__NativeString___to_s_with_length(var2, var3); -var1 = var4; -varonce = var1; -} -var = var1; -goto RET_LABEL; -RET_LABEL:; -return var; +var4 = 0; /* arg is null but recv is not */ } -/* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */ -val* nit__typing___AInitExpr___ASendExpr__compute_raw_arguments(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : AExprs */; -val* var3 /* : AExprs */; -val* var4 /* : Array[AExpr] */; +if (0) { +{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline parser_nodes#AInitExpr#n_args (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__AInitExpr___n_args].val; /* _n_args on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2063); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ +var9 = var_mtype == var_other; +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var1 = var3; -RET_LABEL2:(void)0; } +var5 = var7; +goto RET_LABEL6; +RET_LABEL6:(void)0; +} +var4 = var5; +} +if (var4){ +goto RET_LABEL; +} else { +} +/* isa MNullType */ +cltype = type_nit__MNullType.color; +idtype = type_nit__MNullType.id; +if(cltype >= var_mtype->type->table_size) { +var10 = 0; +} else { +var10 = var_mtype->type->type_table[cltype] == idtype; +} +if (var10){ +if (likely(varonce!=NULL)) { +var11 = varonce; +} else { +var12 = "Type Error: `as(not null)` on `null`."; +var13 = standard___standard__NativeString___to_s_with_length(var12, 37l); +var11 = var13; +varonce = var11; } { -var4 = nit__typing___AExprs___to_a(var1); +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var11); /* Direct call typing#TypeVisitor#error on */ } -var = var4; goto RET_LABEL; -RET_LABEL:; -return var; +} else { } -/* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */ -val* nit__typing___AExprs___to_a(val* self) { -val* var /* : Array[AExpr] */; -val* var1 /* : ANodes[AExpr] */; -val* var3 /* : ANodes[AExpr] */; -val* var4 /* : Array[nullable Object] */; { -{ /* Inline parser_nodes#AExprs#n_exprs (self) on */ -var3 = self->attrs[COLOR_nit__parser_nodes__AExprs___n_exprs].val; /* _n_exprs on */ -if (unlikely(var3 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2408); -show_backtrace(1); +{ /* Inline parser_nodes#AAsCastForm#n_expr (self) on */ +var16 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on */ +if (unlikely(var16 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2648); +fatal_exit(1); } -var1 = var3; -RET_LABEL2:(void)0; +var14 = var16; +RET_LABEL15:(void)0; } } { -var4 = standard__array___Collection___to_a(var1); +var17 = nit__typing___nit__typing__TypeVisitor___check_can_be_null(var_v, var14, var_mtype); } -var = var4; -goto RET_LABEL; -RET_LABEL:; -return var; +if (var17){ +{ +var18 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnull]))(var_mtype); /* as_notnull on */ } -/* method typing#ASuperExpr#callsite for (self: ASuperExpr): nullable CallSite */ -val* nit__typing___ASuperExpr___callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val; /* _callsite on */ -var = var1; -RET_LABEL:; -return var; +var_mtype = var18; +} else { } -/* method typing#ASuperExpr#callsite= for (self: ASuperExpr, nullable CallSite) */ -void nit__typing___ASuperExpr___callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val = p0; /* _callsite on */ -RET_LABEL:; +{ +{ /* Inline typing#AExpr#mtype= (self,var_mtype) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_mtype; /* _mtype on */ +RET_LABEL19:(void)0; } -/* method typing#ASuperExpr#mpropdef for (self: ASuperExpr): nullable MMethodDef */ -val* nit__typing___ASuperExpr___mpropdef(val* self) { -val* var /* : nullable MMethodDef */; -val* var1 /* : nullable MMethodDef */; -var1 = self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val; /* _mpropdef on */ -var = var1; -RET_LABEL:; -return var; } -/* method typing#ASuperExpr#mpropdef= for (self: ASuperExpr, nullable MMethodDef) */ -void nit__typing___ASuperExpr___mpropdef_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val = p0; /* _mpropdef on */ RET_LABEL:; } -/* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */ -void nit__typing___ASuperExpr___AExpr__accept_typing(val* self, val* p0) { +/* method typing#AParExpr#accept_typing for (self: AParExpr, TypeVisitor) */ +void nit__typing___AParExpr___AExpr__accept_typing(val* self, val* p0) { val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MClassType */; -val* var2 /* : nullable MClassType */; -val* var_anchor /* var anchor: nullable MClassType */; -val* var3 /* : null */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var7 /* : Bool */; -short int var8 /* : Bool */; -val* var9 /* : Variable */; -val* var11 /* : Variable */; -val* var12 /* : nullable MType */; -val* var_recvtype /* var recvtype: nullable MType */; -val* var13 /* : null */; -short int var14 /* : Bool */; -short int var15 /* : Bool */; -short int var17 /* : Bool */; -short int var18 /* : Bool */; -val* var19 /* : nullable MPropDef */; -val* var21 /* : nullable MPropDef */; -val* var22 /* : MProperty */; -val* var24 /* : MProperty */; -val* var_mproperty /* var mproperty: MProperty */; -short int var25 /* : Bool */; -int cltype; -int idtype; -short int var26 /* : Bool */; -static val* varonce; -val* var27 /* : String */; -char* var28 /* : NativeString */; -long var29 /* : Int */; -val* var30 /* : FlatString */; -val* var31 /* : MModule */; -val* var33 /* : MModule */; -val* var34 /* : Array[MPropDef] */; -val* var_superprops /* var superprops: Array[MMethodDef] */; -long var35 /* : Int */; -long var37 /* : Int */; -long var38 /* : Int */; -short int var39 /* : Bool */; -short int var41 /* : Bool */; -short int var42 /* : Bool */; -short int var43 /* : Bool */; -short int var45 /* : Bool */; -short int var_ /* var : Bool */; -val* var46 /* : nullable MPropDef */; -val* var48 /* : nullable MPropDef */; -short int var49 /* : Bool */; -static val* varonce50; -val* var51 /* : String */; -char* var52 /* : NativeString */; -long var53 /* : Int */; -val* var54 /* : FlatString */; -static val* varonce55; -val* var56 /* : String */; -char* var57 /* : NativeString */; -long var58 /* : Int */; -val* var59 /* : FlatString */; -val* var60 /* : Array[Object] */; -long var61 /* : Int */; -val* var62 /* : NativeArray[Object] */; -val* var63 /* : String */; -val* var64 /* : nullable Object */; -val* var_superprop /* var superprop: MMethodDef */; -val* var65 /* : nullable MSignature */; -val* var67 /* : nullable MSignature */; -val* var_msignature /* var msignature: MSignature */; -short int var68 /* : Bool */; -val* var69 /* : MType */; -short int var70 /* : Bool */; -int cltype71; -int idtype72; -const char* var_class_name; -val* var73 /* : AExprs */; -val* var75 /* : AExprs */; -val* var76 /* : Array[AExpr] */; -val* var_args /* var args: Array[AExpr] */; -long var77 /* : Int */; -long var79 /* : Int */; -long var80 /* : Int */; -short int var81 /* : Bool */; -short int var83 /* : Bool */; -int cltype84; -int idtype85; -const char* var_class_name86; -short int var87 /* : Bool */; -val* var88 /* : String */; -val* var90 /* : String */; -short int var91 /* : Bool */; -val* var92 /* : nullable MType */; -val* var94 /* : nullable MType */; -short int var96 /* : Bool */; -val* var98 /* : nullable MPropDef */; -val* var100 /* : nullable MPropDef */; -short int var101 /* : Bool */; -val* var103 /* : nullable MPropDef */; -val* var105 /* : nullable MPropDef */; -short int var106 /* : Bool */; -int cltype107; -int idtype108; -const char* var_class_name109; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; var_v = p0; { -{ /* Inline typing#TypeVisitor#anchor (var_v) on */ -var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ +{ /* Inline parser_nodes#AParExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AParExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2637); +fatal_exit(1); +} var = var2; RET_LABEL1:(void)0; } } -var_anchor = var; -var3 = NULL; -if (var_anchor == NULL) { -var4 = 0; /* is null */ -} else { -var4 = 1; /* arg is null and recv is not */ -} -if (0) { -{ /* Inline kernel#Object#!= (var_anchor,var3) on */ -var_other = var3; { -var7 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on */; +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -var8 = !var7; -var5 = var8; -goto RET_LABEL6; -RET_LABEL6:(void)0; +{ +{ /* Inline typing#AExpr#mtype= (self,var3) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var3; /* _mtype on */ +RET_LABEL4:(void)0; } -var4 = var5; } -if (unlikely(!var4)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1622); -show_backtrace(1); +RET_LABEL:; } +/* method typing#AOnceExpr#accept_typing for (self: AOnceExpr, TypeVisitor) */ +void nit__typing___AOnceExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +var_v = p0; { -{ /* Inline typing#TypeVisitor#selfvariable (var_v) on */ -var11 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on */ -if (unlikely(var11 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50); -show_backtrace(1); +{ /* Inline parser_nodes#AOnceExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__AOnceExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2017); +fatal_exit(1); } -var9 = var11; -RET_LABEL10:(void)0; +var = var2; +RET_LABEL1:(void)0; } } { -var12 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var9); -} -var_recvtype = var12; -var13 = NULL; -if (var_recvtype == NULL) { -var14 = 0; /* is null */ -} else { -var14 = 1; /* arg is null and recv is not */ +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); } -if (0) { -{ /* Inline kernel#Object#!= (var_recvtype,var13) on */ -var_other = var13; { -var17 = ((short int (*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_recvtype, var_other) /* == on */; +{ /* Inline typing#AExpr#mtype= (self,var3) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var3; /* _mtype on */ +RET_LABEL4:(void)0; } -var18 = !var17; -var15 = var18; -goto RET_LABEL16; -RET_LABEL16:(void)0; } -var14 = var15; +RET_LABEL:; } -if (unlikely(!var14)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1624); -show_backtrace(1); +/* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */ +val* nit__typing___ASelfExpr___AExpr__its_variable(val* self) { +val* var /* : nullable Variable */; +val* var1 /* : nullable Variable */; +var1 = self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val; /* _its_variable on */ +var = var1; +RET_LABEL:; +return var; +} +/* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */ +void nit__typing___ASelfExpr___its_variable_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = p0; /* _its_variable on */ +RET_LABEL:; } +/* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */ +void nit__typing___ASelfExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +short int var /* : Bool */; +short int var1 /* : Bool */; +short int var3 /* : Bool */; +short int var_ /* var : Bool */; +short int var4 /* : Bool */; +int cltype; +int idtype; +short int var5 /* : Bool */; +static val* varonce; +val* var6 /* : String */; +char* var7 /* : NativeString */; +val* var8 /* : FlatString */; +val* var9 /* : Variable */; +val* var11 /* : Variable */; +val* var_variable /* var variable: Variable */; +val* var13 /* : nullable MType */; +var_v = p0; { -{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ -var21 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ -var19 = var21; -RET_LABEL20:(void)0; +{ /* Inline typing#TypeVisitor#is_toplevel_context (var_v) on */ +var3 = var_v->attrs[COLOR_nit__typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on */ +var1 = var3; +RET_LABEL2:(void)0; } } -if (var19 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1625); -show_backtrace(1); +var_ = var1; +if (var1){ +/* isa AImplicitSelfExpr */ +cltype = type_nit__AImplicitSelfExpr.color; +idtype = type_nit__AImplicitSelfExpr.id; +if(cltype >= self->type->table_size) { +var4 = 0; } else { -{ /* Inline model#MPropDef#mproperty (var19) on */ -if (unlikely(var19 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); -} -var24 = var19->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var24 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); -} -var22 = var24; -RET_LABEL23:(void)0; -} +var4 = self->type->type_table[cltype] == idtype; } -var_mproperty = var22; -/* isa MMethod */ -cltype = type_nit__MMethod.color; -idtype = type_nit__MMethod.id; -if(cltype >= var_mproperty->type->table_size) { -var25 = 0; +var5 = !var4; +var = var5; } else { -var25 = var_mproperty->type->type_table[cltype] == idtype; +var = var_; } -var26 = !var25; -if (var26){ -if (varonce) { -var27 = varonce; +if (var){ +if (likely(varonce!=NULL)) { +var6 = varonce; } else { -var28 = "Error: super only usable in a method"; -var29 = 36; -var30 = standard___standard__NativeString___to_s_with_length(var28, var29); -var27 = var30; -varonce = var27; +var7 = "Error: `self` cannot be used in top-level method."; +var8 = standard___standard__NativeString___to_s_with_length(var7, 49l); +var6 = var8; +varonce = var6; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var27); /* Direct call typing#TypeVisitor#error on */ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var6); /* Direct call typing#TypeVisitor#error on */ } -goto RET_LABEL; } else { } { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var33 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var33 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); -} -var31 = var33; -RET_LABEL32:(void)0; +{ /* Inline typing#TypeVisitor#selfvariable (var_v) on */ +var11 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on */ +if (unlikely(var11 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50); +fatal_exit(1); } +var9 = var11; +RET_LABEL10:(void)0; } -{ -var34 = nit___nit__MProperty___lookup_super_definitions(var_mproperty, var31, var_anchor); } -var_superprops = var34; +var_variable = var9; { -{ /* Inline array#AbstractArrayRead#length (var_superprops) on */ -var37 = var_superprops->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var35 = var37; -RET_LABEL36:(void)0; +{ /* Inline typing#ASelfExpr#its_variable= (self,var_variable) on */ +self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = var_variable; /* _its_variable on */ +RET_LABEL12:(void)0; } } -var38 = 0; { -{ /* Inline kernel#Int#== (var35,var38) on */ -var41 = var35 == var38; -var39 = var41; -goto RET_LABEL40; -RET_LABEL40:(void)0; -} +var13 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var_variable); } -if (var39){ { -{ /* Inline model#MMethod#is_init (var_mproperty) on */ -var45 = var_mproperty->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on */ -var43 = var45; -RET_LABEL44:(void)0; +{ /* Inline typing#AExpr#mtype= (self,var13) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var13; /* _mtype on */ +RET_LABEL14:(void)0; } } -var_ = var43; -if (var43){ -{ -{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ -var48 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ -var46 = var48; -RET_LABEL47:(void)0; +RET_LABEL:; } +/* method typing#AImplicitSelfExpr#is_sys for (self: AImplicitSelfExpr): Bool */ +short int nit__typing___AImplicitSelfExpr___is_sys(val* self) { +short int var /* : Bool */; +short int var1 /* : Bool */; +var1 = self->attrs[COLOR_nit__typing__AImplicitSelfExpr___is_sys].s; /* _is_sys on */ +var = var1; +RET_LABEL:; +return var; } -if (var46 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1632); -show_backtrace(1); -} else { -var49 = nit___nit__MPropDef___is_intro(var46); +/* method typing#AImplicitSelfExpr#is_sys= for (self: AImplicitSelfExpr, Bool) */ +void nit__typing___AImplicitSelfExpr___is_sys_61d(val* self, short int p0) { +self->attrs[COLOR_nit__typing__AImplicitSelfExpr___is_sys].s = p0; /* _is_sys on */ +RET_LABEL:; } -var42 = var49; -} else { -var42 = var_; +/* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */ +val* nit__typing___ASendExpr___callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__ASendExpr___callsite].val; /* _callsite on */ +var = var1; +RET_LABEL:; +return var; } -if (var42){ -{ -nit__typing___ASuperExpr___process_superinit(self, var_v); /* Direct call typing#ASuperExpr#process_superinit on */ +/* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */ +void nit__typing___ASendExpr___callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = p0; /* _callsite on */ +RET_LABEL:; } -goto RET_LABEL; -} else { +/* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */ +void nit__typing___ASendExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var_nrecv /* var nrecv: AExpr */; +val* var3 /* : nullable MType */; +val* var_recvtype /* var recvtype: nullable MType */; +val* var4 /* : String */; +val* var_name /* var name: String */; +val* var5 /* : ANode */; +val* var_node /* var node: ANode */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var9 /* : Bool */; +short int var11 /* : Bool */; +val* var_callsite /* var callsite: nullable Object */; +val* var12 /* : MType */; +val* var_unsafe_type /* var unsafe_type: MType */; +val* var13 /* : nullable MProperty */; +val* var_mproperty /* var mproperty: nullable MProperty */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +short int var_ /* var : Bool */; +short int var21 /* : Bool */; +int cltype; +int idtype; +static val* varonce; +val* var22 /* : String */; +char* var23 /* : NativeString */; +val* var24 /* : FlatString */; +val* var25 /* : nullable MClass */; +val* var_sysclass /* var sysclass: nullable MClass */; +short int var26 /* : Bool */; +short int var27 /* : Bool */; +val* var_other29 /* var other: nullable Object */; +short int var30 /* : Bool */; +short int var31 /* : Bool */; +val* var32 /* : MClassType */; +val* var34 /* : MClassType */; +val* var_systype /* var systype: MClassType */; +val* var35 /* : nullable MProperty */; +short int var36 /* : Bool */; +short int var37 /* : Bool */; +short int var39 /* : Bool */; +short int var40 /* : Bool */; +val* var41 /* : nullable CallSite */; +short int var42 /* : Bool */; +short int var43 /* : Bool */; +short int var45 /* : Bool */; +short int var47 /* : Bool */; +short int var51 /* : Bool */; +short int var52 /* : Bool */; +short int var54 /* : Bool */; +short int var56 /* : Bool */; +short int var57 /* : Bool */; +int cltype58; +int idtype59; +val* var60 /* : nullable CallSite */; +short int var61 /* : Bool */; +short int var62 /* : Bool */; +short int var64 /* : Bool */; +short int var66 /* : Bool */; +val* var68 /* : MSignature */; +val* var70 /* : MSignature */; +val* var_msignature /* var msignature: MSignature */; +val* var71 /* : Array[AExpr] */; +val* var_args /* var args: Array[AExpr] */; +short int var72 /* : Bool */; +val* var73 /* : MMethod */; +val* var75 /* : MMethod */; +short int var76 /* : Bool */; +short int var78 /* : Bool */; +val* var79 /* : nullable MPropDef */; +val* var81 /* : nullable MPropDef */; +val* var_vmpropdef /* var vmpropdef: nullable MPropDef */; +short int var82 /* : Bool */; +short int var83 /* : Bool */; +int cltype84; +int idtype85; +short int var_86 /* var : Bool */; +val* var87 /* : MProperty */; +val* var89 /* : MProperty */; +short int var90 /* : Bool */; +short int var92 /* : Bool */; +short int var93 /* : Bool */; +static val* varonce94; +val* var95 /* : String */; +char* var96 /* : NativeString */; +val* var97 /* : FlatString */; +short int var98 /* : Bool */; +short int var99 /* : Bool */; +short int var100 /* : Bool */; +int cltype101; +int idtype102; +short int var_103 /* var : Bool */; +val* var104 /* : MProperty */; +val* var106 /* : MProperty */; +short int var107 /* : Bool */; +short int var109 /* : Bool */; +short int var_110 /* var : Bool */; +val* var111 /* : MMethod */; +val* var113 /* : MMethod */; +short int var114 /* : Bool */; +short int var116 /* : Bool */; +short int var117 /* : Bool */; +val* var119 /* : NativeArray[String] */; +static val* varonce118; +static val* varonce120; +val* var121 /* : String */; +char* var122 /* : NativeString */; +val* var123 /* : FlatString */; +static val* varonce124; +val* var125 /* : String */; +char* var126 /* : NativeString */; +val* var127 /* : FlatString */; +static val* varonce128; +val* var129 /* : String */; +char* var130 /* : NativeString */; +val* var131 /* : FlatString */; +val* var132 /* : String */; +val* var133 /* : MMethod */; +val* var135 /* : MMethod */; +val* var136 /* : String */; +val* var137 /* : String */; +val* var138 /* : nullable MType */; +val* var140 /* : nullable MType */; +val* var_ret /* var ret: nullable MType */; +short int var141 /* : Bool */; +short int var142 /* : Bool */; +short int var144 /* : Bool */; +short int var145 /* : Bool */; +var_v = p0; +{ +{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2025); +fatal_exit(1); } -if (varonce50) { -var51 = varonce50; -} else { -var52 = "Error: No super method to call for "; -var53 = 35; -var54 = standard___standard__NativeString___to_s_with_length(var52, var53); -var51 = var54; -varonce50 = var51; +var = var2; +RET_LABEL1:(void)0; } -if (varonce55) { -var56 = varonce55; -} else { -var57 = "."; -var58 = 1; -var59 = standard___standard__NativeString___to_s_with_length(var57, var58); -var56 = var59; -varonce55 = var56; } -var60 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var60 = array_instance Array[Object] */ -var61 = 3; -var62 = NEW_standard__NativeArray(var61, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var62)->values[0] = (val*) var51; -((struct instance_standard__NativeArray*)var62)->values[1] = (val*) var_mproperty; -((struct instance_standard__NativeArray*)var62)->values[2] = (val*) var56; +var_nrecv = var; { -((void (*)(val* self, val* p0, long p1))(var60->class->vft[COLOR_standard__array__Array__with_native]))(var60, var62, var61) /* with_native on */; -} +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_nrecv); } +var_recvtype = var3; { -var63 = ((val* (*)(val* self))(var60->class->vft[COLOR_standard__string__Object__to_s]))(var60) /* to_s on */; +var4 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_name]))(self); /* property_name on */ } +var_name = var4; { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var63); /* Direct call typing#TypeVisitor#error on */ +var5 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_node]))(self); /* property_node on */ } -goto RET_LABEL; +var_node = var5; +if (var_recvtype == NULL) { +var6 = 1; /* is null */ } else { +var6 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_recvtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var64 = standard___standard__SequenceRead___Collection__first(var_superprops); -} -var_superprop = var64; -{ -{ /* Inline model#MMethodDef#msignature (var_superprop) on */ -var67 = var_superprop->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ -var65 = var67; -RET_LABEL66:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on */ +var11 = var_recvtype == var_other; +var9 = var11; +goto RET_LABEL10; +RET_LABEL10:(void)0; } } -if (unlikely(var65 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Cast failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1642); -show_backtrace(1); +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var_msignature = var65; -var68 = 1; -{ -var69 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, var68); +var6 = var7; } -/* isa MSignature */ -cltype71 = type_nit__MSignature.color; -idtype72 = type_nit__MSignature.id; -if(cltype71 >= var69->type->table_size) { -var70 = 0; +if (var6){ +goto RET_LABEL; } else { -var70 = var69->type->type_table[cltype71] == idtype72; -} -if (unlikely(!var70)) { -var_class_name = var69 == NULL ? "null" : var69->type->name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1643); -show_backtrace(1); } -var_msignature = var69; +var_callsite = ((val*)NULL); { -{ /* Inline parser_nodes#ASuperExpr#n_args (self) on */ -var75 = self->attrs[COLOR_nit__parser_nodes__ASuperExpr___n_args].val; /* _n_args on */ -if (unlikely(var75 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2051); -show_backtrace(1); -} -var73 = var75; -RET_LABEL74:(void)0; -} +var12 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_recvtype); } +var_unsafe_type = var12; { -var76 = nit__typing___AExprs___to_a(var73); +var13 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, var_node, var_unsafe_type, var_name); } -var_args = var76; -{ -{ /* Inline array#AbstractArrayRead#length (var_args) on */ -var79 = var_args->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var77 = var79; -RET_LABEL78:(void)0; +var_mproperty = var13; +if (var_mproperty == NULL) { +var15 = 1; /* is null */ +} else { +var15 = 0; /* arg is null but recv is not */ } -} -var80 = 0; +if (0) { +{ /* Inline kernel#Object#== (var_mproperty,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Int#> (var77,var80) on */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var83 = 1; /* easy isa OTHER*/ -if (unlikely(!var83)) { -var_class_name86 = type_standard__Int.name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412); -show_backtrace(1); -} -var87 = var77 > var80; -var81 = var87; -goto RET_LABEL82; -RET_LABEL82:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on */ +var20 = var_mproperty == var_other; +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; } } -if (var81){ -{ -{ /* Inline model#MProperty#name (var_mproperty) on */ -var90 = var_mproperty->attrs[COLOR_nit__model__MProperty___name].val; /* _name on */ -if (unlikely(var90 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741); -show_backtrace(1); +var16 = var18; +goto RET_LABEL17; +RET_LABEL17:(void)0; } -var88 = var90; -RET_LABEL89:(void)0; +var15 = var16; +} +var_ = var15; +if (var15){ +/* isa AImplicitSelfExpr */ +cltype = type_nit__AImplicitSelfExpr.color; +idtype = type_nit__AImplicitSelfExpr.id; +if(cltype >= var_nrecv->type->table_size) { +var21 = 0; +} else { +var21 = var_nrecv->type->type_table[cltype] == idtype; } +var14 = var21; +} else { +var14 = var_; +} +if (var14){ +if (likely(varonce!=NULL)) { +var22 = varonce; +} else { +var23 = "Sys"; +var24 = standard___standard__NativeString___to_s_with_length(var23, 3l); +var22 = var24; +varonce = var22; } { -var91 = nit__typing___nit__typing__TypeVisitor___check_signature(var_v, self, var_args, var88, var_msignature); +var25 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, var_node, var22); } +var_sysclass = var25; +if (var_sysclass == NULL) { +var26 = 0; /* is null */ } else { +var26 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_sysclass,((val*)NULL)) on */ +var_other29 = ((val*)NULL); { -{ /* Inline model#MSignature#return_mtype (var_msignature) on */ -var94 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ -var92 = var94; -RET_LABEL93:(void)0; +var30 = ((short int(*)(val* self, val* p0))(var_sysclass->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_sysclass, var_other29); /* == on */ +} +var31 = !var30; +var27 = var31; +goto RET_LABEL28; +RET_LABEL28:(void)0; } +var26 = var27; } +if (var26){ { -{ /* Inline typing#AExpr#mtype= (self,var92) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var92; /* _mtype on */ -RET_LABEL95:(void)0; +{ /* Inline model#MClass#mclass_type (var_sysclass) on */ +var34 = var_sysclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on */ +if (unlikely(var34 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484); +fatal_exit(1); +} +var32 = var34; +RET_LABEL33:(void)0; } } -var96 = 1; +var_systype = var32; { -{ /* Inline typing#AExpr#is_typed= (self,var96) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var96; /* _is_typed on */ -RET_LABEL97:(void)0; +var35 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, var_node, var_systype, var_name); } +var_mproperty = var35; +if (var_mproperty == NULL) { +var36 = 0; /* is null */ +} else { +var36 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_mproperty,((val*)NULL)) on */ +var_other29 = ((val*)NULL); { -{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ -var100 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ -var98 = var100; -RET_LABEL99:(void)0; +var39 = ((short int(*)(val* self, val* p0))(var_mproperty->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mproperty, var_other29); /* == on */ } +var40 = !var39; +var37 = var40; +goto RET_LABEL38; +RET_LABEL38:(void)0; } -var101 = 1; -if (var98 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1650); -show_backtrace(1); -} else { -{ /* Inline modelize_property#MPropDef#has_supercall= (var98,var101) on */ -if (unlikely(var98 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 329); -show_backtrace(1); +var36 = var37; } -var98->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = var101; /* _has_supercall on */ -RET_LABEL102:(void)0; +if (var36){ +{ +var41 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, var_node, var_systype, var_name, 0); } +var_callsite = var41; +if (var_callsite == NULL) { +var42 = 1; /* is null */ +} else { +var42 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ -var105 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ -var103 = var105; -RET_LABEL104:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ +var47 = var_callsite == var_other; +var45 = var47; +goto RET_LABEL46; +RET_LABEL46:(void)0; } } -/* isa MMethodDef */ -cltype107 = type_nit__MMethodDef.color; -idtype108 = type_nit__MMethodDef.id; -if(var103 == NULL) { -var106 = 0; -} else { -if(cltype107 >= var103->type->table_size) { -var106 = 0; -} else { -var106 = var103->type->type_table[cltype107] == idtype108; +var43 = var45; +goto RET_LABEL44; +RET_LABEL44:(void)0; } +var42 = var43; } -if (unlikely(!var106)) { -var_class_name109 = var103 == NULL ? "null" : var103->type->name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name109); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1651); -show_backtrace(1); +if (var42){ +goto RET_LABEL; +} else { } { -{ /* Inline typing#ASuperExpr#mpropdef= (self,var103) on */ -self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val = var103; /* _mpropdef on */ -RET_LABEL110:(void)0; +{ /* Inline typing#AImplicitSelfExpr#is_sys= (var_nrecv,1) on */ +var_nrecv->attrs[COLOR_nit__typing__AImplicitSelfExpr___is_sys].s = 1; /* _is_sys on */ +RET_LABEL48:(void)0; } } -RET_LABEL:; +{ +{ /* Inline typing#ASelfExpr#its_variable= (var_nrecv,((val*)NULL)) on */ +var_nrecv->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = ((val*)NULL); /* _its_variable on */ +RET_LABEL49:(void)0; +} } -/* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */ -void nit__typing___ASuperExpr___process_superinit(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MClassType */; -val* var2 /* : nullable MClassType */; -val* var_anchor /* var anchor: nullable MClassType */; -val* var3 /* : null */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var7 /* : Bool */; -short int var8 /* : Bool */; -val* var9 /* : Variable */; -val* var11 /* : Variable */; -val* var12 /* : nullable MType */; -val* var_recvtype /* var recvtype: nullable MType */; -val* var13 /* : null */; -short int var14 /* : Bool */; -short int var15 /* : Bool */; -short int var17 /* : Bool */; -short int var18 /* : Bool */; -val* var19 /* : nullable MPropDef */; -val* var21 /* : nullable MPropDef */; -val* var_mpropdef /* var mpropdef: nullable MPropDef */; -short int var22 /* : Bool */; -int cltype; -int idtype; -val* var23 /* : MProperty */; -val* var25 /* : MProperty */; -val* var_mproperty /* var mproperty: MMethod */; -val* var26 /* : null */; -val* var_superprop /* var superprop: nullable MMethodDef */; -val* var27 /* : MClassDef */; -val* var29 /* : MClassDef */; -val* var30 /* : Array[MClassType] */; -val* var32 /* : Array[MClassType] */; -val* var_ /* var : Array[MClassType] */; -val* var33 /* : ArrayIterator[nullable Object] */; -val* var_34 /* var : ArrayIterator[MClassType] */; -short int var35 /* : Bool */; -val* var36 /* : nullable Object */; -val* var_msupertype /* var msupertype: MClassType */; -val* var37 /* : MModule */; -val* var39 /* : MModule */; -val* var40 /* : MClassType */; -val* var41 /* : ModelBuilder */; -val* var43 /* : ModelBuilder */; -val* var44 /* : ToolContext */; -val* var46 /* : ToolContext */; -long var47 /* : Int */; -long var49 /* : Int */; -long var_errcount /* var errcount: Int */; -val* var50 /* : String */; -val* var52 /* : String */; -val* var53 /* : nullable MProperty */; -short int var54 /* : Bool */; -int cltype55; -int idtype56; -const char* var_class_name; -val* var_candidate /* var candidate: nullable MMethod */; -val* var57 /* : null */; -short int var58 /* : Bool */; -short int var59 /* : Bool */; -val* var_other61 /* var other: nullable Object */; -short int var62 /* : Bool */; -short int var64 /* : Bool */; -val* var65 /* : ModelBuilder */; -val* var67 /* : ModelBuilder */; -val* var68 /* : ToolContext */; -val* var70 /* : ToolContext */; -long var71 /* : Int */; -long var73 /* : Int */; -short int var74 /* : Bool */; -short int var76 /* : Bool */; -int cltype77; -int idtype78; -const char* var_class_name79; -short int var80 /* : Bool */; -short int var81 /* : Bool */; -val* var82 /* : null */; -short int var83 /* : Bool */; -short int var84 /* : Bool */; -short int var86 /* : Bool */; -short int var87 /* : Bool */; -short int var_88 /* var : Bool */; -short int var89 /* : Bool */; -short int var91 /* : Bool */; -short int var92 /* : Bool */; -short int var93 /* : Bool */; -val* var94 /* : null */; -short int var95 /* : Bool */; -short int var96 /* : Bool */; -short int var98 /* : Bool */; -short int var99 /* : Bool */; -short int var_100 /* var : Bool */; -val* var101 /* : MProperty */; -val* var103 /* : MProperty */; -short int var104 /* : Bool */; -short int var106 /* : Bool */; -short int var107 /* : Bool */; -short int var_108 /* var : Bool */; -val* var109 /* : MProperty */; -val* var111 /* : MProperty */; -short int var112 /* : Bool */; -short int var114 /* : Bool */; -short int var115 /* : Bool */; -static val* varonce; -val* var116 /* : String */; -char* var117 /* : NativeString */; -long var118 /* : Int */; -val* var119 /* : FlatString */; -static val* varonce120; -val* var121 /* : String */; -char* var122 /* : NativeString */; -long var123 /* : Int */; -val* var124 /* : FlatString */; -val* var125 /* : String */; -static val* varonce126; -val* var127 /* : String */; -char* var128 /* : NativeString */; -long var129 /* : Int */; -val* var130 /* : FlatString */; -val* var131 /* : MProperty */; -val* var133 /* : MProperty */; -val* var134 /* : String */; -val* var135 /* : Array[Object] */; -long var136 /* : Int */; -val* var137 /* : NativeArray[Object] */; -val* var138 /* : String */; -val* var139 /* : MModule */; -val* var141 /* : MModule */; -val* var142 /* : Array[MPropDef] */; -val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */; -short int var143 /* : Bool */; -val* var144 /* : null */; -short int var145 /* : Bool */; -short int var146 /* : Bool */; -short int var148 /* : Bool */; -short int var149 /* : Bool */; -short int var_150 /* var : Bool */; -val* var151 /* : MProperty */; -val* var153 /* : MProperty */; -short int var154 /* : Bool */; -short int var156 /* : Bool */; -short int var158 /* : Bool */; -val* var159 /* : nullable Object */; -short int var160 /* : Bool */; -short int var162 /* : Bool */; -short int var164 /* : Bool */; -long var165 /* : Int */; -long var167 /* : Int */; -long var168 /* : Int */; -short int var169 /* : Bool */; -short int var171 /* : Bool */; -int cltype172; -int idtype173; -const char* var_class_name174; -short int var175 /* : Bool */; -static val* varonce176; -val* var177 /* : String */; -char* var178 /* : NativeString */; -long var179 /* : Int */; -val* var180 /* : FlatString */; -static val* varonce181; -val* var182 /* : String */; -char* var183 /* : NativeString */; -long var184 /* : Int */; -val* var185 /* : FlatString */; -static val* varonce186; -val* var187 /* : String */; -char* var188 /* : NativeString */; -long var189 /* : Int */; -val* var190 /* : FlatString */; -static val* varonce191; -val* var192 /* : String */; -char* var193 /* : NativeString */; -long var194 /* : Int */; -val* var195 /* : FlatString */; -val* var196 /* : String */; -val* var197 /* : Array[Object] */; -long var198 /* : Int */; -val* var199 /* : NativeArray[Object] */; -val* var200 /* : String */; -val* var201 /* : nullable Object */; -val* var204 /* : null */; -short int var205 /* : Bool */; -short int var206 /* : Bool */; -short int var208 /* : Bool */; -short int var210 /* : Bool */; -static val* varonce211; -val* var212 /* : String */; -char* var213 /* : NativeString */; -long var214 /* : Int */; -val* var215 /* : FlatString */; -static val* varonce216; -val* var217 /* : String */; -char* var218 /* : NativeString */; -long var219 /* : Int */; -val* var220 /* : FlatString */; -val* var221 /* : Array[Object] */; -long var222 /* : Int */; -val* var223 /* : NativeArray[Object] */; -val* var224 /* : String */; -val* var225 /* : MSignature */; -val* var226 /* : nullable MSignature */; -val* var228 /* : nullable MSignature */; -val* var229 /* : nullable MSignature */; -val* var231 /* : nullable MSignature */; -val* var_msignature /* var msignature: MSignature */; -short int var232 /* : Bool */; -val* var233 /* : MType */; -short int var234 /* : Bool */; -int cltype235; -int idtype236; -const char* var_class_name237; -val* var238 /* : CallSite */; -val* var239 /* : MModule */; -val* var241 /* : MModule */; -val* var242 /* : nullable MClassType */; -val* var244 /* : nullable MClassType */; -short int var245 /* : Bool */; -val* var246 /* : MProperty */; -val* var248 /* : MProperty */; -short int var249 /* : Bool */; -val* var_callsite /* var callsite: CallSite */; -val* var251 /* : AExprs */; -val* var253 /* : AExprs */; -val* var254 /* : Array[AExpr] */; -val* var_args /* var args: Array[AExpr] */; -long var255 /* : Int */; -long var257 /* : Int */; -long var258 /* : Int */; -short int var259 /* : Bool */; -short int var261 /* : Bool */; -int cltype262; -int idtype263; -const char* var_class_name264; -short int var265 /* : Bool */; -short int var266 /* : Bool */; -val* var267 /* : nullable MSignature */; -val* var269 /* : nullable MSignature */; -long var270 /* : Int */; -long var271 /* : Int */; -short int var272 /* : Bool */; -short int var274 /* : Bool */; -int cltype275; -int idtype276; -const char* var_class_name277; -short int var278 /* : Bool */; -static val* varonce279; -val* var280 /* : String */; -char* var281 /* : NativeString */; -long var282 /* : Int */; -val* var283 /* : FlatString */; -val* var284 /* : nullable MSignature */; -val* var286 /* : nullable MSignature */; -long var287 /* : Int */; -static val* varonce288; -val* var289 /* : String */; -char* var290 /* : NativeString */; -long var291 /* : Int */; -val* var292 /* : FlatString */; -long var293 /* : Int */; -static val* varonce294; -val* var295 /* : String */; -char* var296 /* : NativeString */; -long var297 /* : Int */; -val* var298 /* : FlatString */; -val* var299 /* : Array[Object] */; -long var300 /* : Int */; -val* var301 /* : NativeArray[Object] */; -val* var302 /* : Object */; -val* var303 /* : Object */; -val* var304 /* : String */; -long var305 /* : Int */; -long var_i /* var i: Int */; -val* var306 /* : Array[MParameter] */; -val* var308 /* : Array[MParameter] */; -val* var_309 /* var : Array[MParameter] */; -val* var310 /* : ArrayIterator[nullable Object] */; -val* var_311 /* var : ArrayIterator[MParameter] */; -short int var312 /* : Bool */; -val* var313 /* : nullable Object */; -val* var_sp /* var sp: MParameter */; -val* var314 /* : nullable MSignature */; -val* var316 /* : nullable MSignature */; -val* var317 /* : Array[MParameter] */; -val* var319 /* : Array[MParameter] */; -val* var320 /* : nullable Object */; -val* var_p /* var p: MParameter */; -val* var321 /* : MType */; -val* var323 /* : MType */; -val* var324 /* : MType */; -val* var326 /* : MType */; -short int var327 /* : Bool */; -short int var328 /* : Bool */; -static val* varonce329; -val* var330 /* : String */; -char* var331 /* : NativeString */; -long var332 /* : Int */; -val* var333 /* : FlatString */; -static val* varonce334; -val* var335 /* : String */; -char* var336 /* : NativeString */; -long var337 /* : Int */; -val* var338 /* : FlatString */; -val* var339 /* : MType */; -val* var341 /* : MType */; -static val* varonce342; -val* var343 /* : String */; -char* var344 /* : NativeString */; -long var345 /* : Int */; -val* var346 /* : FlatString */; -val* var347 /* : String */; -val* var349 /* : String */; -static val* varonce350; -val* var351 /* : String */; -char* var352 /* : NativeString */; -long var353 /* : Int */; -val* var354 /* : FlatString */; -val* var355 /* : MType */; -val* var357 /* : MType */; -static val* varonce358; -val* var359 /* : String */; -char* var360 /* : NativeString */; -long var361 /* : Int */; -val* var362 /* : FlatString */; -val* var363 /* : Array[Object] */; -long var364 /* : Int */; -val* var365 /* : NativeArray[Object] */; -val* var366 /* : Object */; -val* var367 /* : String */; -long var368 /* : Int */; -long var369 /* : Int */; -short int var371 /* : Bool */; -int cltype372; -int idtype373; -const char* var_class_name374; -long var375 /* : Int */; -short int var378 /* : Bool */; -var_v = p0; { -{ /* Inline typing#TypeVisitor#anchor (var_v) on */ -var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ -var = var2; -RET_LABEL1:(void)0; +{ /* Inline typing#AExpr#mtype= (var_nrecv,var_systype) on */ +var_nrecv->attrs[COLOR_nit__typing__AExpr___mtype].val = var_systype; /* _mtype on */ +RET_LABEL50:(void)0; } } -var_anchor = var; -var3 = NULL; -if (var_anchor == NULL) { -var4 = 0; /* is null */ +var_recvtype = var_systype; } else { -var4 = 1; /* arg is null and recv is not */ -} -if (0) { -{ /* Inline kernel#Object#!= (var_anchor,var3) on */ -var_other = var3; -{ -var7 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on */; } -var8 = !var7; -var5 = var8; -goto RET_LABEL6; -RET_LABEL6:(void)0; +} else { } -var4 = var5; +} else { } -if (unlikely(!var4)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1657); -show_backtrace(1); +if (var_callsite == NULL) { +var51 = 1; /* is null */ +} else { +var51 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#TypeVisitor#selfvariable (var_v) on */ -var11 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on */ -if (unlikely(var11 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ +var56 = var_callsite == var_other; +var54 = var56; +goto RET_LABEL55; +RET_LABEL55:(void)0; } -var9 = var11; -RET_LABEL10:(void)0; } +var52 = var54; +goto RET_LABEL53; +RET_LABEL53:(void)0; +} +var51 = var52; +} +if (var51){ +/* isa ASelfExpr */ +cltype58 = type_nit__ASelfExpr.color; +idtype59 = type_nit__ASelfExpr.id; +if(cltype58 >= var_nrecv->type->table_size) { +var57 = 0; +} else { +var57 = var_nrecv->type->type_table[cltype58] == idtype59; } { -var12 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var9); +var60 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, var_node, var_recvtype, var_name, var57); } -var_recvtype = var12; -var13 = NULL; -if (var_recvtype == NULL) { -var14 = 0; /* is null */ +var_callsite = var60; +if (var_callsite == NULL) { +var61 = 1; /* is null */ } else { -var14 = 1; /* arg is null and recv is not */ +var61 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_recvtype,var13) on */ -var_other = var13; +{ /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var17 = ((short int (*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_recvtype, var_other) /* == on */; +{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ +var66 = var_callsite == var_other; +var64 = var66; +goto RET_LABEL65; +RET_LABEL65:(void)0; } -var18 = !var17; -var15 = var18; -goto RET_LABEL16; -RET_LABEL16:(void)0; } -var14 = var15; +var62 = var64; +goto RET_LABEL63; +RET_LABEL63:(void)0; +} +var61 = var62; } -if (unlikely(!var14)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1659); -show_backtrace(1); +if (var61){ +goto RET_LABEL; +} else { +} +} else { } { -{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ -var21 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ -var19 = var21; -RET_LABEL20:(void)0; +{ /* Inline typing#ASendExpr#callsite= (self,var_callsite) on */ +self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = var_callsite; /* _callsite on */ +RET_LABEL67:(void)0; } } -var_mpropdef = var19; -/* isa MMethodDef */ -cltype = type_nit__MMethodDef.color; -idtype = type_nit__MMethodDef.id; -if(var_mpropdef == NULL) { -var22 = 0; -} else { -if(cltype >= var_mpropdef->type->table_size) { -var22 = 0; -} else { -var22 = var_mpropdef->type->type_table[cltype] == idtype; +{ +{ /* Inline typing#CallSite#msignature (var_callsite) on */ +var70 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ +if (unlikely(var70 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 631); +fatal_exit(1); } +var68 = var70; +RET_LABEL69:(void)0; } -if (unlikely(!var22)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1661); -show_backtrace(1); } +var_msignature = var68; { -{ /* Inline model#MPropDef#mproperty (var_mpropdef) on */ -var25 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var25 == NULL)) { +var71 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self); /* compute_raw_arguments on */ +} +var_args = var71; +{ +var72 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); +} +{ +{ /* Inline typing#CallSite#mproperty (var_callsite) on */ +var75 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ +if (unlikely(var75 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624); +fatal_exit(1); } -var23 = var25; -RET_LABEL24:(void)0; +var73 = var75; +RET_LABEL74:(void)0; } } -var_mproperty = var23; -var26 = NULL; -var_superprop = var26; { -{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on */ -var29 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on */ -if (unlikely(var29 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010); -show_backtrace(1); +{ /* Inline model#MMethod#is_init (var73) on */ +var78 = var73->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on */ +var76 = var78; +RET_LABEL77:(void)0; +} +} +if (var76){ +{ +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var81 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var79 = var81; +RET_LABEL80:(void)0; +} +} +var_vmpropdef = var79; +/* isa MMethodDef */ +cltype84 = type_nit__MMethodDef.color; +idtype85 = type_nit__MMethodDef.id; +if(var_vmpropdef == NULL) { +var83 = 0; +} else { +if(cltype84 >= var_vmpropdef->type->table_size) { +var83 = 0; +} else { +var83 = var_vmpropdef->type->type_table[cltype84] == idtype85; +} +} +var_86 = var83; +if (var83){ +{ +{ /* Inline model#MPropDef#mproperty (var_vmpropdef) on */ +var89 = var_vmpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var89 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); +} +var87 = var89; +RET_LABEL88:(void)0; +} +} +{ +{ /* Inline model#MMethod#is_init (var87) on */ +var92 = var87->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on */ +var90 = var92; +RET_LABEL91:(void)0; +} +} +var82 = var90; +} else { +var82 = var_86; +} +var93 = !var82; +if (var93){ +if (likely(varonce94!=NULL)) { +var95 = varonce94; +} else { +var96 = "Error: an `init` can only be called from another `init`."; +var97 = standard___standard__NativeString___to_s_with_length(var96, 56l); +var95 = var97; +varonce94 = var95; +} +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, var_node, var95); /* Direct call typing#TypeVisitor#error on */ +} +} else { +} +/* isa MMethodDef */ +cltype101 = type_nit__MMethodDef.color; +idtype102 = type_nit__MMethodDef.id; +if(var_vmpropdef == NULL) { +var100 = 0; +} else { +if(cltype101 >= var_vmpropdef->type->table_size) { +var100 = 0; +} else { +var100 = var_vmpropdef->type->type_table[cltype101] == idtype102; +} +} +var_103 = var100; +if (var100){ +{ +{ /* Inline model#MPropDef#mproperty (var_vmpropdef) on */ +var106 = var_vmpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var106 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); +} +var104 = var106; +RET_LABEL105:(void)0; +} +} +{ +{ /* Inline model#MMethod#is_root_init (var104) on */ +var109 = var104->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ +var107 = var109; +RET_LABEL108:(void)0; +} +} +var99 = var107; +} else { +var99 = var_103; +} +var_110 = var99; +if (var99){ +{ +{ /* Inline typing#CallSite#mproperty (var_callsite) on */ +var113 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ +if (unlikely(var113 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624); +fatal_exit(1); +} +var111 = var113; +RET_LABEL112:(void)0; +} +} +{ +{ /* Inline model#MMethod#is_root_init (var111) on */ +var116 = var111->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ +var114 = var116; +RET_LABEL115:(void)0; +} +} +var117 = !var114; +var98 = var117; +} else { +var98 = var_110; +} +if (var98){ +if (unlikely(varonce118==NULL)) { +var119 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String); +if (likely(varonce120!=NULL)) { +var121 = varonce120; +} else { +var122 = "Error: `"; +var123 = standard___standard__NativeString___to_s_with_length(var122, 8l); +var121 = var123; +varonce120 = var121; +} +((struct instance_standard__NativeArray*)var119)->values[0]=var121; +if (likely(varonce124!=NULL)) { +var125 = varonce124; +} else { +var126 = "` cannot call a factory `"; +var127 = standard___standard__NativeString___to_s_with_length(var126, 25l); +var125 = var127; +varonce124 = var125; +} +((struct instance_standard__NativeArray*)var119)->values[2]=var125; +if (likely(varonce128!=NULL)) { +var129 = varonce128; +} else { +var130 = "`."; +var131 = standard___standard__NativeString___to_s_with_length(var130, 2l); +var129 = var131; +varonce128 = var129; +} +((struct instance_standard__NativeArray*)var119)->values[4]=var129; +} else { +var119 = varonce118; +varonce118 = NULL; +} +{ +var132 = ((val*(*)(val* self))(var_vmpropdef->class->vft[COLOR_standard__string__Object__to_s]))(var_vmpropdef); /* to_s on */ +} +((struct instance_standard__NativeArray*)var119)->values[1]=var132; +{ +{ /* Inline typing#CallSite#mproperty (var_callsite) on */ +var135 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ +if (unlikely(var135 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624); +fatal_exit(1); +} +var133 = var135; +RET_LABEL134:(void)0; +} +} +{ +var136 = ((val*(*)(val* self))(var133->class->vft[COLOR_standard__string__Object__to_s]))(var133); /* to_s on */ +} +((struct instance_standard__NativeArray*)var119)->values[3]=var136; +{ +var137 = ((val*(*)(val* self))(var119->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var119); /* native_to_s on */ +} +varonce118 = var119; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, var_node, var137); /* Direct call typing#TypeVisitor#error on */ +} +} else { +} +} else { +} +{ +{ /* Inline model#MSignature#return_mtype (var_msignature) on */ +var140 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ +var138 = var140; +RET_LABEL139:(void)0; +} +} +var_ret = var138; +if (var_ret == NULL) { +var141 = 0; /* is null */ +} else { +var141 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_ret,((val*)NULL)) on */ +var_other29 = ((val*)NULL); +{ +var144 = ((short int(*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other29); /* == on */ +} +var145 = !var144; +var142 = var145; +goto RET_LABEL143; +RET_LABEL143:(void)0; +} +var141 = var142; +} +if (var141){ +{ +{ /* Inline typing#AExpr#mtype= (self,var_ret) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_ret; /* _mtype on */ +RET_LABEL146:(void)0; +} +} +} else { +{ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL147:(void)0; +} +} +} +RET_LABEL:; +} +/* method typing#ASendExpr#property_node for (self: ASendExpr): ANode */ +val* nit__typing___ASendExpr___property_node(val* self) { +val* var /* : ANode */; +var = self; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ASendExpr#raw_arguments for (self: ASendExpr): Array[AExpr] */ +val* nit__typing___ASendExpr___raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : Array[AExpr] */; +{ +var1 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self); /* compute_raw_arguments on */ +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */ +val* nit__typing___ABinopExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : Array[AExpr] */; +val* var_ /* var : Array[AExpr] */; +val* var2 /* : AExpr */; +val* var4 /* : AExpr */; +var1 = NEW_standard__Array(&type_standard__Array__nit__AExpr); +{ +standard___standard__Array___with_capacity(var1, 1l); /* Direct call array#Array#with_capacity on */ +} +var_ = var1; +{ +{ /* Inline parser_nodes#ABinopExpr#n_expr2 (self) on */ +var4 = self->attrs[COLOR_nit__parser_nodes__ABinopExpr___n_expr2].val; /* _n_expr2 on */ +if (unlikely(var4 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2036); +fatal_exit(1); +} +var2 = var4; +RET_LABEL3:(void)0; +} +} +{ +standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var2); /* Direct call array#AbstractArray#push on */ +} +var = var_; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABinopExpr#property_name for (self: ABinopExpr): String */ +val* nit__typing___ABinopExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +val* var1 /* : String */; +{ +var1 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__parser_nodes__ABinopExpr__operator]))(self); /* operator on */ +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABinopExpr#property_node for (self: ABinopExpr): ANode */ +val* nit__typing___ABinopExpr___ASendExpr__property_node(val* self) { +val* var /* : ANode */; +val* var1 /* : Token */; +val* var3 /* : Token */; +{ +{ /* Inline parser_nodes#ABinopExpr#n_op (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ABinopExpr___n_op].val; /* _n_op on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_op"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2033); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */ +void nit__typing___AEqExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +var_v = p0; +{ +((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__typing___AEqExpr___AExpr__accept_typing]))(self, p0); /* accept_typing on */ +} +{ +nit__typing___nit__typing__TypeVisitor___null_test(var_v, self); /* Direct call typing#TypeVisitor#null_test on */ +} +RET_LABEL:; +} +/* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */ +void nit__typing___ANeExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +var_v = p0; +{ +((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit__typing___ANeExpr___AExpr__accept_typing]))(self, p0); /* accept_typing on */ +} +{ +nit__typing___nit__typing__TypeVisitor___null_test(var_v, self); /* Direct call typing#TypeVisitor#null_test on */ +} +RET_LABEL:; +} +/* method typing#AUnaryopExpr#property_name for (self: AUnaryopExpr): String */ +val* nit__typing___AUnaryopExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +val* var1 /* : NativeArray[String] */; +static val* varonce; +static val* varonce2; +val* var3 /* : String */; +char* var4 /* : NativeString */; +val* var5 /* : FlatString */; +val* var6 /* : String */; +val* var7 /* : String */; +if (unlikely(varonce==NULL)) { +var1 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String); +if (likely(varonce2!=NULL)) { +var3 = varonce2; +} else { +var4 = "unary "; +var5 = standard___standard__NativeString___to_s_with_length(var4, 6l); +var3 = var5; +varonce2 = var3; +} +((struct instance_standard__NativeArray*)var1)->values[0]=var3; +} else { +var1 = varonce; +varonce = NULL; +} +{ +var6 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__parser_nodes__AUnaryopExpr__operator]))(self); /* operator on */ +} +((struct instance_standard__NativeArray*)var1)->values[1]=var6; +{ +var7 = ((val*(*)(val* self))(var1->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1); /* native_to_s on */ +} +varonce = var1; +var = var7; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#AUnaryopExpr#compute_raw_arguments for (self: AUnaryopExpr): Array[AExpr] */ +val* nit__typing___AUnaryopExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : Array[AExpr] */; +var1 = NEW_standard__Array(&type_standard__Array__nit__AExpr); +{ +standard___standard__Array___standard__kernel__Object__init(var1); /* Direct call array#Array#init on */ +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ACallExpr#property_name for (self: ACallExpr): String */ +val* nit__typing___ACallExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +val* var1 /* : TId */; +val* var3 /* : TId */; +val* var4 /* : String */; +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2292); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = nit__lexer_work___Token___text(var1); +} +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ACallExpr#property_node for (self: ACallExpr): ANode */ +val* nit__typing___ACallExpr___ASendExpr__property_node(val* self) { +val* var /* : ANode */; +val* var1 /* : TId */; +val* var3 /* : TId */; +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2292); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */ +val* nit__typing___ACallExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; +{ +{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2295); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = nit__typing___AExprs___to_a(var1); +} +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */ +val* nit__typing___ACallAssignExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +val* var1 /* : TId */; +val* var3 /* : TId */; +val* var4 /* : String */; +static val* varonce; +val* var5 /* : String */; +char* var6 /* : NativeString */; +val* var7 /* : FlatString */; +val* var8 /* : String */; +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2292); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = nit__lexer_work___Token___text(var1); +} +if (likely(varonce!=NULL)) { +var5 = varonce; +} else { +var6 = "="; +var7 = standard___standard__NativeString___to_s_with_length(var6, 1l); +var5 = var7; +varonce = var5; +} +{ +var8 = ((val*(*)(val* self, val* p0))(var4->class->vft[COLOR_standard__string__String___43d]))(var4, var5); /* + on */ +} +var = var8; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ACallAssignExpr#property_node for (self: ACallAssignExpr): ANode */ +val* nit__typing___ACallAssignExpr___ASendExpr__property_node(val* self) { +val* var /* : ANode */; +val* var1 /* : TId */; +val* var3 /* : TId */; +{ +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2292); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */ +val* nit__typing___ACallAssignExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; +val* var_res /* var res: Array[AExpr] */; +val* var5 /* : AExpr */; +val* var7 /* : AExpr */; +{ +{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2295); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = nit__typing___AExprs___to_a(var1); +} +var_res = var4; +{ +{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on */ +var7 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1995); +fatal_exit(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var5); /* Direct call array#Array#add on */ +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABraExpr#property_name for (self: ABraExpr): String */ +val* nit__typing___ABraExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +static val* varonce; +val* var1 /* : String */; +char* var2 /* : NativeString */; +val* var3 /* : FlatString */; +if (likely(varonce!=NULL)) { +var1 = varonce; +} else { +var2 = "[]"; +var3 = standard___standard__NativeString___to_s_with_length(var2, 2l); +var1 = var3; +varonce = var1; +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */ +val* nit__typing___ABraExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; +{ +{ /* Inline parser_nodes#ABraFormExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2364); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = nit__typing___AExprs___to_a(var1); +} +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */ +val* nit__typing___ABraAssignExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +static val* varonce; +val* var1 /* : String */; +char* var2 /* : NativeString */; +val* var3 /* : FlatString */; +if (likely(varonce!=NULL)) { +var1 = varonce; +} else { +var2 = "[]="; +var3 = standard___standard__NativeString___to_s_with_length(var2, 3l); +var1 = var3; +varonce = var1; +} +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */ +val* nit__typing___ABraAssignExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; +val* var_res /* var res: Array[AExpr] */; +val* var5 /* : AExpr */; +val* var7 /* : AExpr */; +{ +{ /* Inline parser_nodes#ABraFormExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2364); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; +} +} +{ +var4 = nit__typing___AExprs___to_a(var1); +} +var_res = var4; +{ +{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on */ +var7 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on */ +if (unlikely(var7 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1995); +fatal_exit(1); +} +var5 = var7; +RET_LABEL6:(void)0; +} +} +{ +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var5); /* Direct call array#Array#add on */ +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */ +val* nit__typing___ASendReassignFormExpr___write_callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on */ +var = var1; +RET_LABEL:; +return var; +} +/* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */ +void nit__typing___ASendReassignFormExpr___write_callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val = p0; /* _write_callsite on */ +RET_LABEL:; +} +/* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */ +void nit__typing___ASendReassignFormExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : AExpr */; +val* var2 /* : AExpr */; +val* var3 /* : nullable MType */; +val* var_recvtype /* var recvtype: nullable MType */; +val* var4 /* : String */; +val* var_name /* var name: String */; +val* var5 /* : ANode */; +val* var_node /* var node: ANode */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var9 /* : Bool */; +short int var11 /* : Bool */; +val* var12 /* : AExpr */; +val* var14 /* : AExpr */; +short int var15 /* : Bool */; +int cltype; +int idtype; +short int var_for_self /* var for_self: Bool */; +val* var16 /* : nullable CallSite */; +val* var_callsite /* var callsite: nullable CallSite */; +short int var17 /* : Bool */; +short int var18 /* : Bool */; +short int var20 /* : Bool */; +short int var22 /* : Bool */; +val* var24 /* : Array[AExpr] */; +val* var_args /* var args: Array[AExpr] */; +short int var25 /* : Bool */; +val* var26 /* : MSignature */; +val* var28 /* : MSignature */; +val* var29 /* : nullable MType */; +val* var31 /* : nullable MType */; +val* var_readtype /* var readtype: nullable MType */; +short int var32 /* : Bool */; +short int var33 /* : Bool */; +short int var35 /* : Bool */; +short int var37 /* : Bool */; +val* var38 /* : NativeArray[String] */; +static val* varonce; +static val* varonce39; +val* var40 /* : String */; +char* var41 /* : NativeString */; +val* var42 /* : FlatString */; +static val* varonce43; +val* var44 /* : String */; +char* var45 /* : NativeString */; +val* var46 /* : FlatString */; +val* var47 /* : String */; +static val* varonce48; +val* var49 /* : String */; +char* var50 /* : NativeString */; +val* var51 /* : FlatString */; +val* var52 /* : String */; +val* var53 /* : AExpr */; +val* var55 /* : AExpr */; +short int var56 /* : Bool */; +int cltype57; +int idtype58; +val* var59 /* : nullable CallSite */; +val* var_wcallsite /* var wcallsite: nullable CallSite */; +short int var60 /* : Bool */; +short int var61 /* : Bool */; +short int var63 /* : Bool */; +short int var65 /* : Bool */; +val* var67 /* : MSignature */; +val* var69 /* : MSignature */; +val* var70 /* : Array[MParameter] */; +val* var72 /* : Array[MParameter] */; +val* var73 /* : nullable Object */; +val* var74 /* : MType */; +val* var76 /* : MType */; +val* var77 /* : nullable MType */; +val* var_wtype /* var wtype: nullable MType */; +short int var78 /* : Bool */; +short int var79 /* : Bool */; +short int var81 /* : Bool */; +short int var83 /* : Bool */; +val* var84 /* : Array[nullable Object] */; +val* var85 /* : AExpr */; +val* var87 /* : AExpr */; +short int var88 /* : Bool */; +var_v = p0; +{ +{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ +var2 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var2 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2025); +fatal_exit(1); +} +var = var2; +RET_LABEL1:(void)0; +} +} +{ +var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +} +var_recvtype = var3; +{ +var4 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_name]))(self); /* property_name on */ } -var27 = var29; -RET_LABEL28:(void)0; +var_name = var4; +{ +var5 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_node]))(self); /* property_node on */ } +var_node = var5; +if (var_recvtype == NULL) { +var6 = 1; /* is null */ +} else { +var6 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_recvtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline model#MClassDef#supertypes (var27) on */ -var32 = var27->attrs[COLOR_nit__model__MClassDef___supertypes].val; /* _supertypes on */ -if (unlikely(var32 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 566); -show_backtrace(1); +{ /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on */ +var11 = var_recvtype == var_other; +var9 = var11; +goto RET_LABEL10; +RET_LABEL10:(void)0; } -var30 = var32; -RET_LABEL31:(void)0; } +var7 = var9; +goto RET_LABEL8; +RET_LABEL8:(void)0; } -var_ = var30; -{ -var33 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_); +var6 = var7; } -var_34 = var33; -for(;;) { -{ -var35 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_34); +if (var6){ +goto RET_LABEL; +} else { } -if (var35){ { -var36 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_34); +{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ +var14 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2025); +fatal_exit(1); } -var_msupertype = var36; -{ -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var39 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var39 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +var12 = var14; +RET_LABEL13:(void)0; } -var37 = var39; -RET_LABEL38:(void)0; } +/* isa ASelfExpr */ +cltype = type_nit__ASelfExpr.color; +idtype = type_nit__ASelfExpr.id; +if(cltype >= var12->type->table_size) { +var15 = 0; +} else { +var15 = var12->type->type_table[cltype] == idtype; } +var_for_self = var15; { -var40 = nit___nit__MClassType___MType__anchor_to(var_msupertype, var37, var_anchor); +var16 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, var_node, var_recvtype, var_name, var_for_self); } -var_msupertype = var40; -{ -{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ -var43 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ -if (unlikely(var43 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); -show_backtrace(1); +var_callsite = var16; +if (var_callsite == NULL) { +var17 = 1; /* is null */ +} else { +var17 = 0; /* arg is null but recv is not */ } -var41 = var43; -RET_LABEL42:(void)0; +if (0) { +{ /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on */ +var_other = ((val*)NULL); +{ +{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ +var22 = var_callsite == var_other; +var20 = var22; +goto RET_LABEL21; +RET_LABEL21:(void)0; } } -{ -{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var41) on */ -var46 = var41->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on */ -if (unlikely(var46 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47); -show_backtrace(1); +var18 = var20; +goto RET_LABEL19; +RET_LABEL19:(void)0; } -var44 = var46; -RET_LABEL45:(void)0; +var17 = var18; } +if (var17){ +goto RET_LABEL; +} else { } { -{ /* Inline toolcontext#ToolContext#error_count (var44) on */ -var49 = var44->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on */ -var47 = var49; -RET_LABEL48:(void)0; +{ /* Inline typing#ASendExpr#callsite= (self,var_callsite) on */ +self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = var_callsite; /* _callsite on */ +RET_LABEL23:(void)0; } } -var_errcount = var47; { -{ /* Inline model#MProperty#name (var_mproperty) on */ -var52 = var_mproperty->attrs[COLOR_nit__model__MProperty___name].val; /* _name on */ -if (unlikely(var52 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741); -show_backtrace(1); -} -var50 = var52; -RET_LABEL51:(void)0; +var24 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self); /* compute_raw_arguments on */ } +var_args = var24; +{ +var25 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); } { -var53 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, self, var_msupertype, var50); +{ /* Inline typing#CallSite#msignature (var_callsite) on */ +var28 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ +if (unlikely(var28 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 631); +fatal_exit(1); } -/* isa nullable MMethod */ -cltype55 = type_nullable__nit__MMethod.color; -idtype56 = type_nullable__nit__MMethod.id; -if(var53 == NULL) { -var54 = 1; -} else { -if(cltype55 >= var53->type->table_size) { -var54 = 0; -} else { -var54 = var53->type->type_table[cltype55] == idtype56; +var26 = var28; +RET_LABEL27:(void)0; } } -if (unlikely(!var54)) { -var_class_name = var53 == NULL ? "null" : var53->type->name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1667); -show_backtrace(1); +{ +{ /* Inline model#MSignature#return_mtype (var26) on */ +var31 = var26->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ +var29 = var31; +RET_LABEL30:(void)0; } -var_candidate = var53; -var57 = NULL; -if (var_candidate == NULL) { -var58 = 1; /* is null */ +} +var_readtype = var29; +if (var_readtype == NULL) { +var32 = 1; /* is null */ } else { -var58 = 0; /* arg is null but recv is not */ +var32 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_candidate,var57) on */ -var_other61 = var57; +{ /* Inline kernel#Object#== (var_readtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_candidate,var_other61) on */ -var64 = var_candidate == var_other61; -var62 = var64; -goto RET_LABEL63; -RET_LABEL63:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_readtype,var_other) on */ +var37 = var_readtype == var_other; +var35 = var37; +goto RET_LABEL36; +RET_LABEL36:(void)0; } } -var59 = var62; -goto RET_LABEL60; -RET_LABEL60:(void)0; +var33 = var35; +goto RET_LABEL34; +RET_LABEL34:(void)0; } -var58 = var59; +var32 = var33; } -if (var58){ -{ -{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ -var67 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ -if (unlikely(var67 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); -show_backtrace(1); +if (var32){ +if (unlikely(varonce==NULL)) { +var38 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce39!=NULL)) { +var40 = varonce39; +} else { +var41 = "Error: `"; +var42 = standard___standard__NativeString___to_s_with_length(var41, 8l); +var40 = var42; +varonce39 = var40; +} +((struct instance_standard__NativeArray*)var38)->values[0]=var40; +if (likely(varonce43!=NULL)) { +var44 = varonce43; +} else { +var45 = "` is not a function."; +var46 = standard___standard__NativeString___to_s_with_length(var45, 20l); +var44 = var46; +varonce43 = var44; } -var65 = var67; -RET_LABEL66:(void)0; +((struct instance_standard__NativeArray*)var38)->values[2]=var44; +} else { +var38 = varonce; +varonce = NULL; } +((struct instance_standard__NativeArray*)var38)->values[1]=var_name; +{ +var47 = ((val*(*)(val* self))(var38->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var38); /* native_to_s on */ } +varonce = var38; { -{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var65) on */ -var70 = var65->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on */ -if (unlikely(var70 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47); -show_backtrace(1); +nit__typing___nit__typing__TypeVisitor___error(var_v, var_node, var47); /* Direct call typing#TypeVisitor#error on */ } -var68 = var70; -RET_LABEL69:(void)0; +goto RET_LABEL; +} else { } +if (likely(varonce48!=NULL)) { +var49 = varonce48; +} else { +var50 = "="; +var51 = standard___standard__NativeString___to_s_with_length(var50, 1l); +var49 = var51; +varonce48 = var49; } { -{ /* Inline toolcontext#ToolContext#error_count (var68) on */ -var73 = var68->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on */ -var71 = var73; -RET_LABEL72:(void)0; -} +var52 = ((val*(*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__string__String___43d]))(var_name, var49); /* + on */ } { -{ /* Inline kernel#Int#> (var71,var_errcount) on */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var76 = 1; /* easy isa OTHER*/ -if (unlikely(!var76)) { -var_class_name79 = type_standard__Int.name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name79); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412); -show_backtrace(1); -} -var80 = var71 > var_errcount; -var74 = var80; -goto RET_LABEL75; -RET_LABEL75:(void)0; +{ /* Inline parser_nodes#ASendExpr#n_expr (self) on */ +var55 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on */ +if (unlikely(var55 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2025); +fatal_exit(1); } +var53 = var55; +RET_LABEL54:(void)0; } -if (var74){ -goto RET_LABEL; -} else { } -goto BREAK_label; +/* isa ASelfExpr */ +cltype57 = type_nit__ASelfExpr.color; +idtype58 = type_nit__ASelfExpr.id; +if(cltype57 >= var53->type->table_size) { +var56 = 0; } else { +var56 = var53->type->type_table[cltype57] == idtype58; } -var82 = NULL; -if (var_superprop == NULL) { -var83 = 0; /* is null */ +{ +var59 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, var_node, var_recvtype, var52, var56); +} +var_wcallsite = var59; +if (var_wcallsite == NULL) { +var60 = 1; /* is null */ } else { -var83 = 1; /* arg is null and recv is not */ +var60 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_superprop,var82) on */ -var_other = var82; +{ /* Inline kernel#Object#== (var_wcallsite,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var86 = ((short int (*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other) /* == on */; -} -var87 = !var86; -var84 = var87; -goto RET_LABEL85; -RET_LABEL85:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_wcallsite,var_other) on */ +var65 = var_wcallsite == var_other; +var63 = var65; +goto RET_LABEL64; +RET_LABEL64:(void)0; } -var83 = var84; } -var_88 = var83; -if (var83){ -{ -{ /* Inline model#MMethod#is_root_init (var_candidate) on */ -var91 = var_candidate->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ -var89 = var91; -RET_LABEL90:(void)0; +var61 = var63; +goto RET_LABEL62; +RET_LABEL62:(void)0; } +var60 = var61; } -var81 = var89; +if (var60){ +goto RET_LABEL; } else { -var81 = var_88; } -if (var81){ -goto BREAK_label; -} else { +{ +{ /* Inline typing#ASendReassignFormExpr#write_callsite= (self,var_wcallsite) on */ +self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val = var_wcallsite; /* _write_callsite on */ +RET_LABEL66:(void)0; } -var94 = NULL; -if (var_superprop == NULL) { -var95 = 0; /* is null */ -} else { -var95 = 1; /* arg is null and recv is not */ } -if (0) { -{ /* Inline kernel#Object#!= (var_superprop,var94) on */ -var_other = var94; { -var98 = ((short int (*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other) /* == on */; +{ /* Inline typing#CallSite#msignature (var_wcallsite) on */ +var69 = var_wcallsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ +if (unlikely(var69 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 631); +fatal_exit(1); } -var99 = !var98; -var96 = var99; -goto RET_LABEL97; -RET_LABEL97:(void)0; +var67 = var69; +RET_LABEL68:(void)0; } -var95 = var96; } -var_100 = var95; -if (var95){ { -{ /* Inline model#MPropDef#mproperty (var_superprop) on */ -var103 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var103 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); +{ /* Inline model#MSignature#mparameters (var67) on */ +var72 = var67->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on */ +if (unlikely(var72 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756); +fatal_exit(1); } -var101 = var103; -RET_LABEL102:(void)0; +var70 = var72; +RET_LABEL71:(void)0; } } { -{ /* Inline kernel#Object#!= (var101,var_candidate) on */ -var_other = var_candidate; -{ -var106 = ((short int (*)(val* self, val* p0))(var101->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var101, var_other) /* == on */; +var73 = standard___standard__SequenceRead___last(var70); } -var107 = !var106; -var104 = var107; -goto RET_LABEL105; -RET_LABEL105:(void)0; +{ +{ /* Inline model#MParameter#mtype (var73) on */ +var76 = var73->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var76 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879); +fatal_exit(1); } +var74 = var76; +RET_LABEL75:(void)0; } -var93 = var104; -} else { -var93 = var_100; } -var_108 = var93; -if (var93){ { -{ /* Inline model#MPropDef#mproperty (var_superprop) on */ -var111 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var111 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); -} -var109 = var111; -RET_LABEL110:(void)0; +var77 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_readtype, var74); } +var_wtype = var77; +if (var_wtype == NULL) { +var78 = 1; /* is null */ +} else { +var78 = 0; /* arg is null but recv is not */ } +if (0) { +{ /* Inline kernel#Object#== (var_wtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline model#MMethod#is_root_init (var109) on */ -var114 = var109->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ -var112 = var114; -RET_LABEL113:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_wtype,var_other) on */ +var83 = var_wtype == var_other; +var81 = var83; +goto RET_LABEL82; +RET_LABEL82:(void)0; } } -var115 = !var112; -var92 = var115; -} else { -var92 = var_108; +var79 = var81; +goto RET_LABEL80; +RET_LABEL80:(void)0; } -if (var92){ -if (varonce) { -var116 = varonce; -} else { -var117 = "Error: conflicting super constructor to call for "; -var118 = 49; -var119 = standard___standard__NativeString___to_s_with_length(var117, var118); -var116 = var119; -varonce = var116; +var78 = var79; } -if (varonce120) { -var121 = varonce120; +if (var78){ +goto RET_LABEL; } else { -var122 = ": "; -var123 = 2; -var124 = standard___standard__NativeString___to_s_with_length(var122, var123); -var121 = var124; -varonce120 = var121; } { -var125 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_candidate); -} -if (varonce126) { -var127 = varonce126; -} else { -var128 = ", "; -var129 = 2; -var130 = standard___standard__NativeString___to_s_with_length(var128, var129); -var127 = var130; -varonce126 = var127; +var84 = standard__array___Collection___to_a(var_args); } +var_args = var84; { -{ /* Inline model#MPropDef#mproperty (var_superprop) on */ -var133 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var133 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); +{ /* Inline parser_nodes#AReassignFormExpr#n_value (self) on */ +var87 = self->attrs[COLOR_nit__parser_nodes__AReassignFormExpr___n_value].val; /* _n_value on */ +if (unlikely(var87 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2006); +fatal_exit(1); } -var131 = var133; -RET_LABEL132:(void)0; +var85 = var87; +RET_LABEL86:(void)0; } } { -var134 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var131); +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_args, var85); /* Direct call array#Array#add on */ } -var135 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var135 = array_instance Array[Object] */ -var136 = 6; -var137 = NEW_standard__NativeArray(var136, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var137)->values[0] = (val*) var116; -((struct instance_standard__NativeArray*)var137)->values[1] = (val*) var_mproperty; -((struct instance_standard__NativeArray*)var137)->values[2] = (val*) var121; -((struct instance_standard__NativeArray*)var137)->values[3] = (val*) var125; -((struct instance_standard__NativeArray*)var137)->values[4] = (val*) var127; -((struct instance_standard__NativeArray*)var137)->values[5] = (val*) var134; { -((void (*)(val* self, val* p0, long p1))(var135->class->vft[COLOR_standard__array__Array__with_native]))(var135, var137, var136) /* with_native on */; -} +var88 = nit___nit__CallSite___check_signature(var_wcallsite, var_v, var_args); } { -var138 = ((val* (*)(val* self))(var135->class->vft[COLOR_standard__string__Object__to_s]))(var135) /* to_s on */; +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL89:(void)0; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var138); /* Direct call typing#TypeVisitor#error on */ } -goto RET_LABEL; -} else { +RET_LABEL:; } +/* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */ +val* nit__typing___ACallReassignExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +val* var1 /* : TId */; +val* var3 /* : TId */; +val* var4 /* : String */; { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var141 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var141 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2292); +fatal_exit(1); } -var139 = var141; -RET_LABEL140:(void)0; +var1 = var3; +RET_LABEL2:(void)0; } } { -var142 = nit___nit__MProperty___lookup_definitions(var_candidate, var139, var_anchor); +var4 = nit__lexer_work___Token___text(var1); } -var_candidatedefs = var142; -var144 = NULL; -if (var_superprop == NULL) { -var145 = 0; /* is null */ -} else { -var145 = 1; /* arg is null and recv is not */ +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; } -if (0) { -{ /* Inline kernel#Object#!= (var_superprop,var144) on */ -var_other = var144; +/* method typing#ACallReassignExpr#property_node for (self: ACallReassignExpr): ANode */ +val* nit__typing___ACallReassignExpr___ASendExpr__property_node(val* self) { +val* var /* : ANode */; +val* var1 /* : TId */; +val* var3 /* : TId */; { -var148 = ((short int (*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other) /* == on */; +{ /* Inline parser_nodes#ACallFormExpr#n_id (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2292); +fatal_exit(1); +} +var1 = var3; +RET_LABEL2:(void)0; } -var149 = !var148; -var146 = var149; -goto RET_LABEL147; -RET_LABEL147:(void)0; } -var145 = var146; +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; } -var_150 = var145; -if (var145){ +/* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */ +val* nit__typing___ACallReassignExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; { -{ /* Inline model#MPropDef#mproperty (var_superprop) on */ -var153 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var153 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); +{ /* Inline parser_nodes#ACallFormExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2295); +fatal_exit(1); } -var151 = var153; -RET_LABEL152:(void)0; +var1 = var3; +RET_LABEL2:(void)0; } } { -{ /* Inline kernel#Object#== (var151,var_candidate) on */ -var_other61 = var_candidate; -{ -{ /* Inline kernel#Object#is_same_instance (var151,var_other61) on */ -var158 = var151 == var_other61; -var156 = var158; -goto RET_LABEL157; -RET_LABEL157:(void)0; -} -} -var154 = var156; -goto RET_LABEL155; -RET_LABEL155:(void)0; +var4 = nit__typing___AExprs___to_a(var1); } +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; } -var143 = var154; +/* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */ +val* nit__typing___ABraReassignExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +static val* varonce; +val* var1 /* : String */; +char* var2 /* : NativeString */; +val* var3 /* : FlatString */; +if (likely(varonce!=NULL)) { +var1 = varonce; } else { -var143 = var_150; +var2 = "[]"; +var3 = standard___standard__NativeString___to_s_with_length(var2, 2l); +var1 = var3; +varonce = var1; } -if (var143){ -{ -var159 = standard___standard__SequenceRead___Collection__first(var_candidatedefs); +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; } +/* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */ +val* nit__typing___ABraReassignExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; { -{ /* Inline kernel#Object#== (var_superprop,var159) on */ -var_other61 = var159; -{ -{ /* Inline kernel#Object#is_same_instance (var_superprop,var_other61) on */ -var164 = var_superprop == var_other61; -var162 = var164; -goto RET_LABEL163; -RET_LABEL163:(void)0; -} -} -var160 = var162; -goto RET_LABEL161; -RET_LABEL161:(void)0; +{ /* Inline parser_nodes#ABraFormExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2364); +fatal_exit(1); } +var1 = var3; +RET_LABEL2:(void)0; } -if (var160){ -goto BREAK_label; -} else { } { -standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_candidatedefs, var_superprop); /* Direct call array#Array#add on */ +var4 = nit__typing___AExprs___to_a(var1); } -} else { +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; } -{ -{ /* Inline array#AbstractArrayRead#length (var_candidatedefs) on */ -var167 = var_candidatedefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var165 = var167; -RET_LABEL166:(void)0; +/* method typing#AInitExpr#property_name for (self: AInitExpr): String */ +val* nit__typing___AInitExpr___ASendExpr__property_name(val* self) { +val* var /* : String */; +static val* varonce; +val* var1 /* : String */; +char* var2 /* : NativeString */; +val* var3 /* : FlatString */; +if (likely(varonce!=NULL)) { +var1 = varonce; +} else { +var2 = "init"; +var3 = standard___standard__NativeString___to_s_with_length(var2, 4l); +var1 = var3; +varonce = var1; } +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; } -var168 = 1; +/* method typing#AInitExpr#property_node for (self: AInitExpr): ANode */ +val* nit__typing___AInitExpr___ASendExpr__property_node(val* self) { +val* var /* : ANode */; +val* var1 /* : TKwinit */; +val* var3 /* : TKwinit */; { -{ /* Inline kernel#Int#> (var165,var168) on */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var171 = 1; /* easy isa OTHER*/ -if (unlikely(!var171)) { -var_class_name174 = type_standard__Int.name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name174); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412); -show_backtrace(1); +{ /* Inline parser_nodes#AInitExpr#n_kwinit (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__AInitExpr___n_kwinit].val; /* _n_kwinit on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwinit"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2353); +fatal_exit(1); } -var175 = var165 > var168; -var169 = var175; -goto RET_LABEL170; -RET_LABEL170:(void)0; +var1 = var3; +RET_LABEL2:(void)0; } } -if (var169){ -if (varonce176) { -var177 = varonce176; -} else { -var178 = "Error: conflicting property definitions for property "; -var179 = 53; -var180 = standard___standard__NativeString___to_s_with_length(var178, var179); -var177 = var180; -varonce176 = var177; +var = var1; +goto RET_LABEL; +RET_LABEL:; +return var; } -if (varonce181) { -var182 = varonce181; -} else { -var183 = " in "; -var184 = 4; -var185 = standard___standard__NativeString___to_s_with_length(var183, var184); -var182 = var185; -varonce181 = var182; +/* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */ +val* nit__typing___AInitExpr___ASendExpr__compute_raw_arguments(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : AExprs */; +val* var3 /* : AExprs */; +val* var4 /* : Array[AExpr] */; +{ +{ /* Inline parser_nodes#AInitExpr#n_args (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__AInitExpr___n_args].val; /* _n_args on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2356); +fatal_exit(1); } -if (varonce186) { -var187 = varonce186; -} else { -var188 = ": "; -var189 = 2; -var190 = standard___standard__NativeString___to_s_with_length(var188, var189); -var187 = var190; -varonce186 = var187; +var1 = var3; +RET_LABEL2:(void)0; } -if (varonce191) { -var192 = varonce191; -} else { -var193 = ", "; -var194 = 2; -var195 = standard___standard__NativeString___to_s_with_length(var193, var194); -var192 = var195; -varonce191 = var192; } { -var196 = standard__string___Collection___join(var_candidatedefs, var192); +var4 = nit__typing___AExprs___to_a(var1); +} +var = var4; +goto RET_LABEL; +RET_LABEL:; +return var; } -var197 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var197 = array_instance Array[Object] */ -var198 = 6; -var199 = NEW_standard__NativeArray(var198, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var199)->values[0] = (val*) var177; -((struct instance_standard__NativeArray*)var199)->values[1] = (val*) var_mproperty; -((struct instance_standard__NativeArray*)var199)->values[2] = (val*) var182; -((struct instance_standard__NativeArray*)var199)->values[3] = (val*) var_recvtype; -((struct instance_standard__NativeArray*)var199)->values[4] = (val*) var187; -((struct instance_standard__NativeArray*)var199)->values[5] = (val*) var196; +/* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */ +val* nit__typing___AExprs___to_a(val* self) { +val* var /* : Array[AExpr] */; +val* var1 /* : ANodes[AExpr] */; +val* var3 /* : ANodes[AExpr] */; +val* var4 /* : Array[nullable Object] */; { -((void (*)(val* self, val* p0, long p1))(var197->class->vft[COLOR_standard__array__Array__with_native]))(var197, var199, var198) /* with_native on */; +{ /* Inline parser_nodes#AExprs#n_exprs (self) on */ +var3 = self->attrs[COLOR_nit__parser_nodes__AExprs___n_exprs].val; /* _n_exprs on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2771); +fatal_exit(1); } +var1 = var3; +RET_LABEL2:(void)0; } -{ -var200 = ((val* (*)(val* self))(var197->class->vft[COLOR_standard__string__Object__to_s]))(var197) /* to_s on */; } { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var200); /* Direct call typing#TypeVisitor#error on */ +var4 = standard__array___Collection___to_a(var1); } +var = var4; goto RET_LABEL; -} else { +RET_LABEL:; +return var; } -{ -var201 = standard___standard__SequenceRead___Collection__first(var_candidatedefs); +/* method typing#ASuperExpr#callsite for (self: ASuperExpr): nullable CallSite */ +val* nit__typing___ASuperExpr___callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val; /* _callsite on */ +var = var1; +RET_LABEL:; +return var; } -var_superprop = var201; -BREAK_label: (void)0; -{ -standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_34); /* Direct call array#ArrayIterator#next on */ +/* method typing#ASuperExpr#callsite= for (self: ASuperExpr, nullable CallSite) */ +void nit__typing___ASuperExpr___callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val = p0; /* _callsite on */ +RET_LABEL:; } -} else { -goto BREAK_label202; +/* method typing#ASuperExpr#mpropdef for (self: ASuperExpr): nullable MMethodDef */ +val* nit__typing___ASuperExpr___mpropdef(val* self) { +val* var /* : nullable MMethodDef */; +val* var1 /* : nullable MMethodDef */; +var1 = self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val; /* _mpropdef on */ +var = var1; +RET_LABEL:; +return var; } +/* method typing#ASuperExpr#mpropdef= for (self: ASuperExpr, nullable MMethodDef) */ +void nit__typing___ASuperExpr___mpropdef_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val = p0; /* _mpropdef on */ +RET_LABEL:; } -BREAK_label202: (void)0; +/* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */ +void nit__typing___ASuperExpr___AExpr__accept_typing(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable MClassType */; +val* var2 /* : nullable MClassType */; +val* var_anchor /* var anchor: nullable MClassType */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : Variable */; +val* var10 /* : Variable */; +val* var11 /* : nullable MType */; +val* var_recvtype /* var recvtype: nullable MType */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : nullable MPropDef */; +val* var19 /* : nullable MPropDef */; +val* var20 /* : MProperty */; +val* var22 /* : MProperty */; +val* var_mproperty /* var mproperty: MProperty */; +short int var23 /* : Bool */; +int cltype; +int idtype; +short int var24 /* : Bool */; +static val* varonce; +val* var25 /* : String */; +char* var26 /* : NativeString */; +val* var27 /* : FlatString */; +val* var28 /* : MModule */; +val* var30 /* : MModule */; +val* var31 /* : Array[MPropDef] */; +val* var_superprops /* var superprops: Array[MMethodDef] */; +long var32 /* : Int */; +long var34 /* : Int */; +short int var35 /* : Bool */; +short int var37 /* : Bool */; +short int var38 /* : Bool */; +short int var39 /* : Bool */; +short int var41 /* : Bool */; +short int var_ /* var : Bool */; +val* var42 /* : nullable MPropDef */; +val* var44 /* : nullable MPropDef */; +short int var45 /* : Bool */; +val* var47 /* : NativeArray[String] */; +static val* varonce46; +static val* varonce48; +val* var49 /* : String */; +char* var50 /* : NativeString */; +val* var51 /* : FlatString */; +static val* varonce52; +val* var53 /* : String */; +char* var54 /* : NativeString */; +val* var55 /* : FlatString */; +val* var56 /* : String */; +val* var57 /* : String */; +val* var58 /* : nullable Object */; +val* var_superprop /* var superprop: MMethodDef */; +val* var59 /* : nullable MSignature */; +val* var61 /* : nullable MSignature */; +val* var_msignature /* var msignature: MSignature */; +val* var62 /* : MType */; +short int var63 /* : Bool */; +int cltype64; +int idtype65; +const char* var_class_name; +val* var66 /* : AExprs */; +val* var68 /* : AExprs */; +val* var69 /* : Array[AExpr] */; +val* var_args /* var args: Array[AExpr] */; +long var70 /* : Int */; +long var72 /* : Int */; +short int var73 /* : Bool */; +short int var75 /* : Bool */; +int cltype76; +int idtype77; +const char* var_class_name78; +short int var79 /* : Bool */; +val* var80 /* : nullable SignatureMap */; +val* var82 /* : nullable MType */; +val* var84 /* : nullable MType */; +val* var87 /* : nullable MPropDef */; +val* var89 /* : nullable MPropDef */; +val* var91 /* : nullable MPropDef */; +val* var93 /* : nullable MPropDef */; +short int var94 /* : Bool */; +int cltype95; +int idtype96; +const char* var_class_name97; +var_v = p0; { -{ /* Inline abstract_collection#Iterator#finish (var_34) on */ -RET_LABEL203:(void)0; +{ /* Inline typing#TypeVisitor#anchor (var_v) on */ +var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ +var = var2; +RET_LABEL1:(void)0; } } -var204 = NULL; -if (var_superprop == NULL) { -var205 = 1; /* is null */ +var_anchor = var; +if (var_anchor == NULL) { +var3 = 0; /* is null */ } else { -var205 = 0; /* arg is null but recv is not */ +var3 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_superprop,var204) on */ -var_other61 = var204; +{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_superprop,var_other61) on */ -var210 = var_superprop == var_other61; -var208 = var210; -goto RET_LABEL209; -RET_LABEL209:(void)0; +var6 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other); /* == on */ } +var7 = !var6; +var4 = var7; +goto RET_LABEL5; +RET_LABEL5:(void)0; } -var206 = var208; -goto RET_LABEL207; -RET_LABEL207:(void)0; +var3 = var4; } -var205 = var206; +if (unlikely(!var3)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1822); +fatal_exit(1); } -if (var205){ -if (varonce211) { -var212 = varonce211; -} else { -var213 = "Error: No super method to call for "; -var214 = 35; -var215 = standard___standard__NativeString___to_s_with_length(var213, var214); -var212 = var215; -varonce211 = var212; +{ +{ /* Inline typing#TypeVisitor#selfvariable (var_v) on */ +var10 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50); +fatal_exit(1); +} +var8 = var10; +RET_LABEL9:(void)0; } -if (varonce216) { -var217 = varonce216; -} else { -var218 = "."; -var219 = 1; -var220 = standard___standard__NativeString___to_s_with_length(var218, var219); -var217 = var220; -varonce216 = var217; } -var221 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var221 = array_instance Array[Object] */ -var222 = 3; -var223 = NEW_standard__NativeArray(var222, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var223)->values[0] = (val*) var212; -((struct instance_standard__NativeArray*)var223)->values[1] = (val*) var_mproperty; -((struct instance_standard__NativeArray*)var223)->values[2] = (val*) var217; { -((void (*)(val* self, val* p0, long p1))(var221->class->vft[COLOR_standard__array__Array__with_native]))(var221, var223, var222) /* with_native on */; +var11 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var8); } +var_recvtype = var11; +if (var_recvtype == NULL) { +var12 = 0; /* is null */ +} else { +var12 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_recvtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var224 = ((val* (*)(val* self))(var221->class->vft[COLOR_standard__string__Object__to_s]))(var221) /* to_s on */; +var15 = ((short int(*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_recvtype, var_other); /* == on */ } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var224); /* Direct call typing#TypeVisitor#error on */ +var16 = !var15; +var13 = var16; +goto RET_LABEL14; +RET_LABEL14:(void)0; } -goto RET_LABEL; -} else { +var12 = var13; +} +if (unlikely(!var12)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1824); +fatal_exit(1); } { -{ /* Inline model#MMethodDef#new_msignature (var_superprop) on */ -var228 = var_superprop->attrs[COLOR_nit__model__MMethodDef___new_msignature].val; /* _new_msignature on */ -var226 = var228; -RET_LABEL227:(void)0; +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var19 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var17 = var19; +RET_LABEL18:(void)0; } } -if (var226!=NULL) { -var225 = var226; +if (var17 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1825); +fatal_exit(1); } else { -{ -{ /* Inline model#MMethodDef#msignature (var_superprop) on */ -var231 = var_superprop->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ -var229 = var231; -RET_LABEL230:(void)0; +{ /* Inline model#MPropDef#mproperty (var17) on */ +if (unlikely(var17 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } +var22 = var17->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var22 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } -if (unlikely(var229 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Cast failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1695); -show_backtrace(1); +var20 = var22; +RET_LABEL21:(void)0; } -var225 = var229; } -var_msignature = var225; -var232 = 1; -{ -var233 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, var232); +var_mproperty = var20; +/* isa MMethod */ +cltype = type_nit__MMethod.color; +idtype = type_nit__MMethod.id; +if(cltype >= var_mproperty->type->table_size) { +var23 = 0; +} else { +var23 = var_mproperty->type->type_table[cltype] == idtype; } -/* isa MSignature */ -cltype235 = type_nit__MSignature.color; -idtype236 = type_nit__MSignature.id; -if(cltype235 >= var233->type->table_size) { -var234 = 0; +var24 = !var23; +if (var24){ +if (likely(varonce!=NULL)) { +var25 = varonce; } else { -var234 = var233->type->type_table[cltype235] == idtype236; +var26 = "Error: `super` only usable in a `method`."; +var27 = standard___standard__NativeString___to_s_with_length(var26, 41l); +var25 = var27; +varonce = var25; +} +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var25); /* Direct call typing#TypeVisitor#error on */ } -if (unlikely(!var234)) { -var_class_name237 = var233 == NULL ? "null" : var233->type->name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name237); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1696); -show_backtrace(1); +goto RET_LABEL; +} else { } -var_msignature = var233; -var238 = NEW_nit__CallSite(&type_nit__CallSite); { { /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var241 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var241 == NULL)) { +var30 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var30 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +fatal_exit(1); } -var239 = var241; -RET_LABEL240:(void)0; +var28 = var30; +RET_LABEL29:(void)0; } } { -{ /* Inline typing#TypeVisitor#anchor (var_v) on */ -var244 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ -var242 = var244; -RET_LABEL243:(void)0; +var31 = nit___nit__MProperty___lookup_super_definitions(var_mproperty, var28, var_anchor); } -} -var245 = 1; +var_superprops = var31; { -{ /* Inline model#MPropDef#mproperty (var_superprop) on */ -var248 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ -if (unlikely(var248 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013); -show_backtrace(1); -} -var246 = var248; -RET_LABEL247:(void)0; +{ /* Inline array#AbstractArrayRead#length (var_superprops) on */ +var34 = var_superprops->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var32 = var34; +RET_LABEL33:(void)0; } } -var249 = 0; { -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__node_61d]))(var238, self) /* node= on */; +{ /* Inline kernel#Int#== (var32,0l) on */ +var37 = var32 == 0l; +var35 = var37; +goto RET_LABEL36; +RET_LABEL36:(void)0; } -{ -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__recv_61d]))(var238, var_recvtype) /* recv= on */; } +if (var35){ { -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__mmodule_61d]))(var238, var239) /* mmodule= on */; +{ /* Inline model#MMethod#is_init (var_mproperty) on */ +var41 = var_mproperty->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on */ +var39 = var41; +RET_LABEL40:(void)0; } +} +var_ = var39; +if (var39){ { -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__anchor_61d]))(var238, var242) /* anchor= on */; +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var44 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var42 = var44; +RET_LABEL43:(void)0; +} +} +if (var42 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1832); +fatal_exit(1); +} else { +var45 = nit___nit__MPropDef___is_intro(var42); +} +var38 = var45; +} else { +var38 = var_; } +if (var38){ { -((void (*)(val* self, short int p0))(var238->class->vft[COLOR_nit__typing__CallSite__recv_is_self_61d]))(var238, var245) /* recv_is_self= on */; +nit__typing___ASuperExpr___process_superinit(self, var_v); /* Direct call typing#ASuperExpr#process_superinit on */ +} +goto RET_LABEL; +} else { +} +if (unlikely(varonce46==NULL)) { +var47 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce48!=NULL)) { +var49 = varonce48; +} else { +var50 = "Error: no super method to call for `"; +var51 = standard___standard__NativeString___to_s_with_length(var50, 36l); +var49 = var51; +varonce48 = var49; +} +((struct instance_standard__NativeArray*)var47)->values[0]=var49; +if (likely(varonce52!=NULL)) { +var53 = varonce52; +} else { +var54 = "`."; +var55 = standard___standard__NativeString___to_s_with_length(var54, 2l); +var53 = var55; +varonce52 = var53; +} +((struct instance_standard__NativeArray*)var47)->values[2]=var53; +} else { +var47 = varonce46; +varonce46 = NULL; } { -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__mproperty_61d]))(var238, var246) /* mproperty= on */; +var56 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_standard__string__Object__to_s]))(var_mproperty); /* to_s on */ } +((struct instance_standard__NativeArray*)var47)->values[1]=var56; { -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__mpropdef_61d]))(var238, var_superprop) /* mpropdef= on */; +var57 = ((val*(*)(val* self))(var47->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var47); /* native_to_s on */ } +varonce46 = var47; { -((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__msignature_61d]))(var238, var_msignature) /* msignature= on */; +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var57); /* Direct call typing#TypeVisitor#error on */ +} +goto RET_LABEL; +} else { } { -((void (*)(val* self, short int p0))(var238->class->vft[COLOR_nit__typing__CallSite__erasure_cast_61d]))(var238, var249) /* erasure_cast= on */; +var58 = standard___standard__SequenceRead___Collection__first(var_superprops); } +var_superprop = var58; { -((void (*)(val* self))(var238->class->vft[COLOR_standard__kernel__Object__init]))(var238) /* init on */; +{ /* Inline model#MMethodDef#msignature (var_superprop) on */ +var61 = var_superprop->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ +var59 = var61; +RET_LABEL60:(void)0; +} +} +if (unlikely(var59 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1842); +fatal_exit(1); } -var_callsite = var238; +var_msignature = var59; { -{ /* Inline typing#ASuperExpr#callsite= (self,var_callsite) on */ -self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val = var_callsite; /* _callsite on */ -RET_LABEL250:(void)0; +var62 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, 1); } +/* isa MSignature */ +cltype64 = type_nit__MSignature.color; +idtype65 = type_nit__MSignature.id; +if(cltype64 >= var62->type->table_size) { +var63 = 0; +} else { +var63 = var62->type->type_table[cltype64] == idtype65; +} +if (unlikely(!var63)) { +var_class_name = var62 == NULL ? "null" : var62->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1843); +fatal_exit(1); } +var_msignature = var62; { { /* Inline parser_nodes#ASuperExpr#n_args (self) on */ -var253 = self->attrs[COLOR_nit__parser_nodes__ASuperExpr___n_args].val; /* _n_args on */ -if (unlikely(var253 == NULL)) { +var68 = self->attrs[COLOR_nit__parser_nodes__ASuperExpr___n_args].val; /* _n_args on */ +if (unlikely(var68 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2051); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2344); +fatal_exit(1); } -var251 = var253; -RET_LABEL252:(void)0; +var66 = var68; +RET_LABEL67:(void)0; } } { -var254 = nit__typing___AExprs___to_a(var251); +var69 = nit__typing___AExprs___to_a(var66); } -var_args = var254; +var_args = var69; { { /* Inline array#AbstractArrayRead#length (var_args) on */ -var257 = var_args->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var255 = var257; -RET_LABEL256:(void)0; +var72 = var_args->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var70 = var72; +RET_LABEL71:(void)0; } } -var258 = 0; { -{ /* Inline kernel#Int#> (var255,var258) on */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var261 = 1; /* easy isa OTHER*/ -if (unlikely(!var261)) { -var_class_name264 = type_standard__Int.name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name264); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412); -show_backtrace(1); +{ /* Inline kernel#Int#> (var70,0l) on */ +/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */ +/* <0l:Int> isa OTHER */ +var75 = 1; /* easy <0l:Int> isa OTHER*/ +if (unlikely(!var75)) { +var_class_name78 = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name78); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536); +fatal_exit(1); } -var265 = var255 > var258; -var259 = var265; -goto RET_LABEL260; -RET_LABEL260:(void)0; +var79 = var70 > 0l; +var73 = var79; +goto RET_LABEL74; +RET_LABEL74:(void)0; } } -if (var259){ +if (var73){ { -var266 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); +var80 = nit__typing___nit__typing__TypeVisitor___check_signature(var_v, self, var_args, var_mproperty, var_msignature); } -} else { { -{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ -var269 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ -var267 = var269; -RET_LABEL268:(void)0; +{ /* Inline typing#ASuperExpr#signaturemap= (self,var80) on */ +self->attrs[COLOR_nit__typing__ASuperExpr___signaturemap].val = var80; /* _signaturemap on */ +RET_LABEL81:(void)0; } } -if (var267 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1706); -show_backtrace(1); } else { -var270 = nit___nit__MSignature___arity(var267); } { -var271 = nit___nit__MSignature___arity(var_msignature); +{ /* Inline model#MSignature#return_mtype (var_msignature) on */ +var84 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ +var82 = var84; +RET_LABEL83:(void)0; +} } { -{ /* Inline kernel#Int#< (var270,var271) on */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var274 = 1; /* easy isa OTHER*/ -if (unlikely(!var274)) { -var_class_name277 = type_standard__Int.name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name277); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410); -show_backtrace(1); +{ /* Inline typing#AExpr#mtype= (self,var82) on */ +self->attrs[COLOR_nit__typing__AExpr___mtype].val = var82; /* _mtype on */ +RET_LABEL85:(void)0; } -var278 = var270 < var271; -var272 = var278; -goto RET_LABEL273; -RET_LABEL273:(void)0; } +{ +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL86:(void)0; } -if (var272){ -if (varonce279) { -var280 = varonce279; -} else { -var281 = "Error: Not enough implicit arguments to pass. Got "; -var282 = 50; -var283 = standard___standard__NativeString___to_s_with_length(var281, var282); -var280 = var283; -varonce279 = var280; } { -{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ -var286 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ -var284 = var286; -RET_LABEL285:(void)0; +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var89 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var87 = var89; +RET_LABEL88:(void)0; } } -if (var284 == NULL) { +if (var87 == NULL) { PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1707); -show_backtrace(1); -} else { -var287 = nit___nit__MSignature___arity(var284); -} -if (varonce288) { -var289 = varonce288; +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1850); +fatal_exit(1); } else { -var290 = ", expected at least "; -var291 = 20; -var292 = standard___standard__NativeString___to_s_with_length(var290, var291); -var289 = var292; -varonce288 = var289; +{ /* Inline modelize_property#MPropDef#has_supercall= (var87,1) on */ +if (unlikely(var87 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 482); +fatal_exit(1); } -{ -var293 = nit___nit__MSignature___arity(var_msignature); +var87->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = 1; /* _has_supercall on */ +RET_LABEL90:(void)0; } -if (varonce294) { -var295 = varonce294; -} else { -var296 = ". Signature is "; -var297 = 15; -var298 = standard___standard__NativeString___to_s_with_length(var296, var297); -var295 = var298; -varonce294 = var295; } -var299 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var299 = array_instance Array[Object] */ -var300 = 6; -var301 = NEW_standard__NativeArray(var300, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var301)->values[0] = (val*) var280; -var302 = BOX_standard__Int(var287); /* autobox from Int to Object */ -((struct instance_standard__NativeArray*)var301)->values[1] = (val*) var302; -((struct instance_standard__NativeArray*)var301)->values[2] = (val*) var289; -var303 = BOX_standard__Int(var293); /* autobox from Int to Object */ -((struct instance_standard__NativeArray*)var301)->values[3] = (val*) var303; -((struct instance_standard__NativeArray*)var301)->values[4] = (val*) var295; -((struct instance_standard__NativeArray*)var301)->values[5] = (val*) var_msignature; { -((void (*)(val* self, val* p0, long p1))(var299->class->vft[COLOR_standard__array__Array__with_native]))(var299, var301, var300) /* with_native on */; +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var93 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var91 = var93; +RET_LABEL92:(void)0; } } -{ -var304 = ((val* (*)(val* self))(var299->class->vft[COLOR_standard__string__Object__to_s]))(var299) /* to_s on */; +/* isa MMethodDef */ +cltype95 = type_nit__MMethodDef.color; +idtype96 = type_nit__MMethodDef.id; +if(var91 == NULL) { +var94 = 0; +} else { +if(cltype95 >= var91->type->table_size) { +var94 = 0; +} else { +var94 = var91->type->type_table[cltype95] == idtype96; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var304); /* Direct call typing#TypeVisitor#error on */ } -goto RET_LABEL; -} else { +if (unlikely(!var94)) { +var_class_name97 = var91 == NULL ? "null" : var91->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name97); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1851); +fatal_exit(1); } -var305 = 0; -var_i = var305; { -{ /* Inline model#MSignature#mparameters (var_msignature) on */ -var308 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on */ -if (unlikely(var308 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592); -show_backtrace(1); -} -var306 = var308; -RET_LABEL307:(void)0; +{ /* Inline typing#ASuperExpr#mpropdef= (self,var91) on */ +self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val = var91; /* _mpropdef on */ +RET_LABEL98:(void)0; } } -var_309 = var306; -{ -var310 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_309); +RET_LABEL:; } -var_311 = var310; -for(;;) { -{ -var312 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_311); +/* method typing#ASuperExpr#signaturemap for (self: ASuperExpr): nullable SignatureMap */ +val* nit__typing___ASuperExpr___signaturemap(val* self) { +val* var /* : nullable SignatureMap */; +val* var1 /* : nullable SignatureMap */; +var1 = self->attrs[COLOR_nit__typing__ASuperExpr___signaturemap].val; /* _signaturemap on */ +var = var1; +RET_LABEL:; +return var; } -if (var312){ -{ -var313 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_311); +/* method typing#ASuperExpr#signaturemap= for (self: ASuperExpr, nullable SignatureMap) */ +void nit__typing___ASuperExpr___signaturemap_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ASuperExpr___signaturemap].val = p0; /* _signaturemap on */ +RET_LABEL:; } -var_sp = var313; +/* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */ +void nit__typing___ASuperExpr___process_superinit(val* self, val* p0) { +val* var_v /* var v: TypeVisitor */; +val* var /* : nullable MClassType */; +val* var2 /* : nullable MClassType */; +val* var_anchor /* var anchor: nullable MClassType */; +short int var3 /* : Bool */; +short int var4 /* : Bool */; +val* var_other /* var other: nullable Object */; +short int var6 /* : Bool */; +short int var7 /* : Bool */; +val* var8 /* : Variable */; +val* var10 /* : Variable */; +val* var11 /* : nullable MType */; +val* var_recvtype /* var recvtype: nullable MType */; +short int var12 /* : Bool */; +short int var13 /* : Bool */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : nullable MPropDef */; +val* var19 /* : nullable MPropDef */; +val* var_mpropdef /* var mpropdef: nullable MPropDef */; +short int var20 /* : Bool */; +int cltype; +int idtype; +val* var21 /* : MProperty */; +val* var23 /* : MProperty */; +val* var_mproperty /* var mproperty: MMethod */; +val* var_superprop /* var superprop: nullable MMethodDef */; +val* var24 /* : MClassDef */; +val* var26 /* : MClassDef */; +val* var27 /* : Array[MClassType] */; +val* var29 /* : Array[MClassType] */; +val* var_ /* var : Array[MClassType] */; +val* var30 /* : ArrayIterator[nullable Object] */; +val* var_31 /* var : ArrayIterator[MClassType] */; +short int var32 /* : Bool */; +val* var33 /* : nullable Object */; +val* var_msupertype /* var msupertype: MClassType */; +val* var34 /* : MModule */; +val* var36 /* : MModule */; +val* var37 /* : MClassType */; +val* var38 /* : ModelBuilder */; +val* var40 /* : ModelBuilder */; +val* var41 /* : ToolContext */; +val* var43 /* : ToolContext */; +long var44 /* : Int */; +long var46 /* : Int */; +long var_errcount /* var errcount: Int */; +val* var47 /* : String */; +val* var49 /* : String */; +val* var50 /* : nullable MProperty */; +short int var51 /* : Bool */; +int cltype52; +int idtype53; +const char* var_class_name; +val* var_candidate /* var candidate: nullable MMethod */; +short int var54 /* : Bool */; +short int var55 /* : Bool */; +val* var_other57 /* var other: nullable Object */; +short int var58 /* : Bool */; +short int var60 /* : Bool */; +val* var61 /* : ModelBuilder */; +val* var63 /* : ModelBuilder */; +val* var64 /* : ToolContext */; +val* var66 /* : ToolContext */; +long var67 /* : Int */; +long var69 /* : Int */; +short int var70 /* : Bool */; +short int var72 /* : Bool */; +int cltype73; +int idtype74; +const char* var_class_name75; +short int var76 /* : Bool */; +short int var77 /* : Bool */; +short int var78 /* : Bool */; +short int var79 /* : Bool */; +short int var81 /* : Bool */; +short int var82 /* : Bool */; +short int var_83 /* var : Bool */; +short int var84 /* : Bool */; +short int var86 /* : Bool */; +short int var87 /* : Bool */; +short int var88 /* : Bool */; +short int var89 /* : Bool */; +short int var90 /* : Bool */; +short int var92 /* : Bool */; +short int var93 /* : Bool */; +short int var_94 /* var : Bool */; +val* var95 /* : MProperty */; +val* var97 /* : MProperty */; +short int var98 /* : Bool */; +short int var100 /* : Bool */; +short int var101 /* : Bool */; +short int var_102 /* var : Bool */; +val* var103 /* : MProperty */; +val* var105 /* : MProperty */; +short int var106 /* : Bool */; +short int var108 /* : Bool */; +short int var109 /* : Bool */; +val* var110 /* : NativeArray[String] */; +static val* varonce; +static val* varonce111; +val* var112 /* : String */; +char* var113 /* : NativeString */; +val* var114 /* : FlatString */; +static val* varonce115; +val* var116 /* : String */; +char* var117 /* : NativeString */; +val* var118 /* : FlatString */; +static val* varonce119; +val* var120 /* : String */; +char* var121 /* : NativeString */; +val* var122 /* : FlatString */; +static val* varonce123; +val* var124 /* : String */; +char* var125 /* : NativeString */; +val* var126 /* : FlatString */; +val* var127 /* : String */; +val* var128 /* : String */; +val* var129 /* : MProperty */; +val* var131 /* : MProperty */; +val* var132 /* : String */; +val* var133 /* : String */; +val* var134 /* : MModule */; +val* var136 /* : MModule */; +val* var137 /* : Array[MPropDef] */; +val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */; +short int var138 /* : Bool */; +short int var139 /* : Bool */; +short int var140 /* : Bool */; +short int var142 /* : Bool */; +short int var143 /* : Bool */; +short int var_144 /* var : Bool */; +val* var145 /* : MProperty */; +val* var147 /* : MProperty */; +short int var148 /* : Bool */; +short int var150 /* : Bool */; +short int var152 /* : Bool */; +val* var153 /* : nullable Object */; +short int var154 /* : Bool */; +short int var156 /* : Bool */; +short int var158 /* : Bool */; +long var159 /* : Int */; +long var161 /* : Int */; +short int var162 /* : Bool */; +short int var164 /* : Bool */; +int cltype165; +int idtype166; +const char* var_class_name167; +short int var168 /* : Bool */; +val* var170 /* : NativeArray[String] */; +static val* varonce169; +static val* varonce171; +val* var172 /* : String */; +char* var173 /* : NativeString */; +val* var174 /* : FlatString */; +static val* varonce175; +val* var176 /* : String */; +char* var177 /* : NativeString */; +val* var178 /* : FlatString */; +static val* varonce179; +val* var180 /* : String */; +char* var181 /* : NativeString */; +val* var182 /* : FlatString */; +val* var183 /* : String */; +val* var184 /* : String */; +static val* varonce185; +val* var186 /* : String */; +char* var187 /* : NativeString */; +val* var188 /* : FlatString */; +val* var189 /* : String */; +val* var190 /* : String */; +val* var191 /* : nullable Object */; +short int var193 /* : Bool */; +short int var194 /* : Bool */; +short int var196 /* : Bool */; +short int var198 /* : Bool */; +val* var200 /* : NativeArray[String] */; +static val* varonce199; +static val* varonce201; +val* var202 /* : String */; +char* var203 /* : NativeString */; +val* var204 /* : FlatString */; +static val* varonce205; +val* var206 /* : String */; +char* var207 /* : NativeString */; +val* var208 /* : FlatString */; +val* var209 /* : String */; +val* var210 /* : String */; +val* var211 /* : MSignature */; +val* var212 /* : nullable MSignature */; +val* var214 /* : nullable MSignature */; +val* var215 /* : nullable MSignature */; +val* var217 /* : nullable MSignature */; +val* var_msignature /* var msignature: MSignature */; +val* var218 /* : MType */; +short int var219 /* : Bool */; +int cltype220; +int idtype221; +const char* var_class_name222; +val* var223 /* : CallSite */; +val* var224 /* : MModule */; +val* var226 /* : MModule */; +val* var227 /* : nullable MClassType */; +val* var229 /* : nullable MClassType */; +val* var230 /* : MProperty */; +val* var232 /* : MProperty */; +val* var_callsite /* var callsite: CallSite */; +val* var234 /* : AExprs */; +val* var236 /* : AExprs */; +val* var237 /* : Array[AExpr] */; +val* var_args /* var args: Array[AExpr] */; +long var238 /* : Int */; +long var240 /* : Int */; +short int var241 /* : Bool */; +short int var243 /* : Bool */; +int cltype244; +int idtype245; +const char* var_class_name246; +short int var247 /* : Bool */; +short int var248 /* : Bool */; +val* var249 /* : nullable MSignature */; +val* var251 /* : nullable MSignature */; +long var252 /* : Int */; +long var253 /* : Int */; +short int var254 /* : Bool */; +short int var256 /* : Bool */; +int cltype257; +int idtype258; +const char* var_class_name259; +short int var260 /* : Bool */; +val* var262 /* : NativeArray[String] */; +static val* varonce261; +static val* varonce263; +val* var264 /* : String */; +char* var265 /* : NativeString */; +val* var266 /* : FlatString */; +static val* varonce267; +val* var268 /* : String */; +char* var269 /* : NativeString */; +val* var270 /* : FlatString */; +static val* varonce271; +val* var272 /* : String */; +char* var273 /* : NativeString */; +val* var274 /* : FlatString */; +static val* varonce275; +val* var276 /* : String */; +char* var277 /* : NativeString */; +val* var278 /* : FlatString */; +val* var279 /* : nullable MSignature */; +val* var281 /* : nullable MSignature */; +long var282 /* : Int */; +val* var283 /* : String */; +long var284 /* : Int */; +val* var285 /* : String */; +val* var286 /* : String */; +val* var287 /* : String */; +long var_i /* var i: Int */; +val* var288 /* : Array[MParameter] */; +val* var290 /* : Array[MParameter] */; +val* var_291 /* var : Array[MParameter] */; +val* var292 /* : ArrayIterator[nullable Object] */; +val* var_293 /* var : ArrayIterator[MParameter] */; +short int var294 /* : Bool */; +val* var295 /* : nullable Object */; +val* var_sp /* var sp: MParameter */; +val* var296 /* : nullable MSignature */; +val* var298 /* : nullable MSignature */; +val* var299 /* : Array[MParameter] */; +val* var301 /* : Array[MParameter] */; +val* var302 /* : nullable Object */; +val* var_p /* var p: MParameter */; +val* var303 /* : MType */; +val* var305 /* : MType */; +val* var306 /* : MType */; +val* var308 /* : MType */; +short int var309 /* : Bool */; +short int var310 /* : Bool */; +val* var312 /* : NativeArray[String] */; +static val* varonce311; +static val* varonce313; +val* var314 /* : String */; +char* var315 /* : NativeString */; +val* var316 /* : FlatString */; +static val* varonce317; +val* var318 /* : String */; +char* var319 /* : NativeString */; +val* var320 /* : FlatString */; +static val* varonce321; +val* var322 /* : String */; +char* var323 /* : NativeString */; +val* var324 /* : FlatString */; +static val* varonce325; +val* var326 /* : String */; +char* var327 /* : NativeString */; +val* var328 /* : FlatString */; +static val* varonce329; +val* var330 /* : String */; +char* var331 /* : NativeString */; +val* var332 /* : FlatString */; +val* var333 /* : String */; +val* var334 /* : MType */; +val* var336 /* : MType */; +val* var337 /* : String */; +val* var338 /* : String */; +val* var340 /* : String */; +val* var341 /* : MType */; +val* var343 /* : MType */; +val* var344 /* : String */; +val* var345 /* : String */; +val* var346 /* : String */; +long var347 /* : Int */; +short int var349 /* : Bool */; +int cltype350; +int idtype351; +const char* var_class_name352; +long var353 /* : Int */; +var_v = p0; { -{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ -var316 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ -var314 = var316; -RET_LABEL315:(void)0; +{ /* Inline typing#TypeVisitor#anchor (var_v) on */ +var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ +var = var2; +RET_LABEL1:(void)0; } } -if (var314 == NULL) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1713); -show_backtrace(1); +var_anchor = var; +if (var_anchor == NULL) { +var3 = 0; /* is null */ } else { -{ /* Inline model#MSignature#mparameters (var314) on */ -if (unlikely(var314 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Receiver is null"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592); -show_backtrace(1); -} -var319 = var314->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on */ -if (unlikely(var319 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592); -show_backtrace(1); -} -var317 = var319; -RET_LABEL318:(void)0; -} +var3 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var320 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var317, var_i); +var6 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other); /* == on */ } -var_p = var320; -{ -{ /* Inline model#MParameter#mtype (var_p) on */ -var323 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ -if (unlikely(var323 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690); -show_backtrace(1); +var7 = !var6; +var4 = var7; +goto RET_LABEL5; +RET_LABEL5:(void)0; } -var321 = var323; -RET_LABEL322:(void)0; +var3 = var4; } +if (unlikely(!var3)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1861); +fatal_exit(1); } { -{ /* Inline model#MParameter#mtype (var_sp) on */ -var326 = var_sp->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ -if (unlikely(var326 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690); -show_backtrace(1); +{ /* Inline typing#TypeVisitor#selfvariable (var_v) on */ +var10 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on */ +if (unlikely(var10 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50); +fatal_exit(1); } -var324 = var326; -RET_LABEL325:(void)0; +var8 = var10; +RET_LABEL9:(void)0; } } { -var327 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var321, var324); -} -var328 = !var327; -if (var328){ -if (varonce329) { -var330 = varonce329; -} else { -var331 = "Type error: expected argument #"; -var332 = 31; -var333 = standard___standard__NativeString___to_s_with_length(var331, var332); -var330 = var333; -varonce329 = var330; +var11 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var8); } -if (varonce334) { -var335 = varonce334; +var_recvtype = var11; +if (var_recvtype == NULL) { +var12 = 0; /* is null */ } else { -var336 = " of type "; -var337 = 9; -var338 = standard___standard__NativeString___to_s_with_length(var336, var337); -var335 = var338; -varonce334 = var335; +var12 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_recvtype,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline model#MParameter#mtype (var_sp) on */ -var341 = var_sp->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ -if (unlikely(var341 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690); -show_backtrace(1); +var15 = ((short int(*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_recvtype, var_other); /* == on */ } -var339 = var341; -RET_LABEL340:(void)0; +var16 = !var15; +var13 = var16; +goto RET_LABEL14; +RET_LABEL14:(void)0; } +var12 = var13; } -if (varonce342) { -var343 = varonce342; -} else { -var344 = ", got implicit argument "; -var345 = 24; -var346 = standard___standard__NativeString___to_s_with_length(var344, var345); -var343 = var346; -varonce342 = var343; +if (unlikely(!var12)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1863); +fatal_exit(1); } { -{ /* Inline model#MParameter#name (var_p) on */ -var349 = var_p->attrs[COLOR_nit__model__MParameter___name].val; /* _name on */ -if (unlikely(var349 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1687); -show_backtrace(1); -} -var347 = var349; -RET_LABEL348:(void)0; +{ /* Inline typing#TypeVisitor#mpropdef (var_v) on */ +var19 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on */ +var17 = var19; +RET_LABEL18:(void)0; } } -if (varonce350) { -var351 = varonce350; +var_mpropdef = var17; +/* isa MMethodDef */ +cltype = type_nit__MMethodDef.color; +idtype = type_nit__MMethodDef.id; +if(var_mpropdef == NULL) { +var20 = 0; +} else { +if(cltype >= var_mpropdef->type->table_size) { +var20 = 0; } else { -var352 = " of type "; -var353 = 9; -var354 = standard___standard__NativeString___to_s_with_length(var352, var353); -var351 = var354; -varonce350 = var351; +var20 = var_mpropdef->type->type_table[cltype] == idtype; } -{ -{ /* Inline model#MParameter#mtype (var_p) on */ -var357 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ -if (unlikely(var357 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690); -show_backtrace(1); } -var355 = var357; -RET_LABEL356:(void)0; +if (unlikely(!var20)) { +PRINT_ERROR("Runtime error: %s", "Assert failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1865); +fatal_exit(1); +} +{ +{ /* Inline model#MPropDef#mproperty (var_mpropdef) on */ +var23 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var23 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } +var21 = var23; +RET_LABEL22:(void)0; } -if (varonce358) { -var359 = varonce358; -} else { -var360 = ". Signature is "; -var361 = 15; -var362 = standard___standard__NativeString___to_s_with_length(var360, var361); -var359 = var362; -varonce358 = var359; } -var363 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var363 = array_instance Array[Object] */ -var364 = 10; -var365 = NEW_standard__NativeArray(var364, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var365)->values[0] = (val*) var330; -var366 = BOX_standard__Int(var_i); /* autobox from Int to Object */ -((struct instance_standard__NativeArray*)var365)->values[1] = (val*) var366; -((struct instance_standard__NativeArray*)var365)->values[2] = (val*) var335; -((struct instance_standard__NativeArray*)var365)->values[3] = (val*) var339; -((struct instance_standard__NativeArray*)var365)->values[4] = (val*) var343; -((struct instance_standard__NativeArray*)var365)->values[5] = (val*) var347; -((struct instance_standard__NativeArray*)var365)->values[6] = (val*) var351; -((struct instance_standard__NativeArray*)var365)->values[7] = (val*) var355; -((struct instance_standard__NativeArray*)var365)->values[8] = (val*) var359; -((struct instance_standard__NativeArray*)var365)->values[9] = (val*) var_msignature; +var_mproperty = var21; +var_superprop = ((val*)NULL); { -((void (*)(val* self, val* p0, long p1))(var363->class->vft[COLOR_standard__array__Array__with_native]))(var363, var365, var364) /* with_native on */; +{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on */ +var26 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on */ +if (unlikely(var26 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209); +fatal_exit(1); +} +var24 = var26; +RET_LABEL25:(void)0; } } { -var367 = ((val* (*)(val* self))(var363->class->vft[COLOR_standard__string__Object__to_s]))(var363) /* to_s on */; +{ /* Inline model#MClassDef#supertypes (var24) on */ +var29 = var24->attrs[COLOR_nit__model__MClassDef___supertypes].val; /* _supertypes on */ +if (unlikely(var29 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 627); +fatal_exit(1); } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var367); /* Direct call typing#TypeVisitor#error on */ +var27 = var29; +RET_LABEL28:(void)0; } -goto RET_LABEL; -} else { } -var368 = 1; +var_ = var27; { -{ /* Inline kernel#Int#+ (var_i,var368) on */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var371 = 1; /* easy isa OTHER*/ -if (unlikely(!var371)) { -var_class_name374 = type_standard__Int.name; -PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name374); -PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413); -show_backtrace(1); +var30 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_); } -var375 = var_i + var368; -var369 = var375; -goto RET_LABEL370; -RET_LABEL370:(void)0; +var_31 = var30; +for(;;) { +{ +var32 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_31); } +if (var32){ +{ +var33 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_31); } -var_i = var369; +var_msupertype = var33; { -standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_311); /* Direct call array#ArrayIterator#next on */ +{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ +var36 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var36 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); +fatal_exit(1); } -} else { -goto BREAK_label376; +var34 = var36; +RET_LABEL35:(void)0; } } -BREAK_label376: (void)0; { -{ /* Inline abstract_collection#Iterator#finish (var_311) on */ -RET_LABEL377:(void)0; +var37 = nit___nit__MClassType___MType__anchor_to(var_msupertype, var34, var_anchor); +} +var_msupertype = var37; +{ +{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ +var40 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var40 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); +fatal_exit(1); } +var38 = var40; +RET_LABEL39:(void)0; } } -var378 = 1; { -{ /* Inline typing#AExpr#is_typed= (self,var378) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var378; /* _is_typed on */ -RET_LABEL379:(void)0; +{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var38) on */ +var43 = var38->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var43 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47); +fatal_exit(1); } +var41 = var43; +RET_LABEL42:(void)0; } -RET_LABEL:; } -/* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */ -val* nit__typing___ANewExpr___callsite(val* self) { -val* var /* : nullable CallSite */; -val* var1 /* : nullable CallSite */; -var1 = self->attrs[COLOR_nit__typing__ANewExpr___callsite].val; /* _callsite on */ -var = var1; -RET_LABEL:; -return var; +{ +{ /* Inline toolcontext#ToolContext#error_count (var41) on */ +var46 = var41->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on */ +var44 = var46; +RET_LABEL45:(void)0; } -/* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */ -void nit__typing___ANewExpr___callsite_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ANewExpr___callsite].val = p0; /* _callsite on */ -RET_LABEL:; } -/* method typing#ANewExpr#recvtype for (self: ANewExpr): nullable MClassType */ -val* nit__typing___ANewExpr___recvtype(val* self) { -val* var /* : nullable MClassType */; -val* var1 /* : nullable MClassType */; -var1 = self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val; /* _recvtype on */ -var = var1; -RET_LABEL:; -return var; +var_errcount = var44; +{ +{ /* Inline model#MProperty#name (var_mproperty) on */ +var49 = var_mproperty->attrs[COLOR_nit__model__MProperty___name].val; /* _name on */ +if (unlikely(var49 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933); +fatal_exit(1); +} +var47 = var49; +RET_LABEL48:(void)0; } -/* method typing#ANewExpr#recvtype= for (self: ANewExpr, nullable MClassType) */ -void nit__typing___ANewExpr___recvtype_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val = p0; /* _recvtype on */ -RET_LABEL:; } -/* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */ -void nit__typing___ANewExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AType */; -val* var2 /* : AType */; -val* var3 /* : nullable MType */; -val* var_recvtype /* var recvtype: nullable MType */; -val* var4 /* : null */; -short int var5 /* : Bool */; -short int var6 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var8 /* : Bool */; -short int var10 /* : Bool */; -short int var11 /* : Bool */; -int cltype; -int idtype; -short int var12 /* : Bool */; -short int var13 /* : Bool */; -int cltype14; -int idtype15; -static val* varonce; -val* var16 /* : String */; -char* var17 /* : NativeString */; -long var18 /* : Int */; -val* var19 /* : FlatString */; -static val* varonce20; -val* var21 /* : String */; -char* var22 /* : NativeString */; -long var23 /* : Int */; -val* var24 /* : FlatString */; -val* var25 /* : Array[Object] */; -long var26 /* : Int */; -val* var27 /* : NativeArray[Object] */; -val* var28 /* : String */; -static val* varonce29; -val* var30 /* : String */; -char* var31 /* : NativeString */; -long var32 /* : Int */; -val* var33 /* : FlatString */; -static val* varonce34; -val* var35 /* : String */; -char* var36 /* : NativeString */; -long var37 /* : Int */; -val* var38 /* : FlatString */; -val* var39 /* : Array[Object] */; -long var40 /* : Int */; -val* var41 /* : NativeArray[Object] */; -val* var42 /* : String */; -val* var44 /* : nullable TId */; -val* var46 /* : nullable TId */; -val* var_nid /* var nid: nullable TId */; -val* var47 /* : null */; -short int var48 /* : Bool */; -short int var49 /* : Bool */; -val* var_other51 /* var other: nullable Object */; -short int var52 /* : Bool */; -short int var53 /* : Bool */; -val* var54 /* : String */; -val* var_name /* var name: String */; -static val* varonce55; -val* var56 /* : String */; -char* var57 /* : NativeString */; -long var58 /* : Int */; -val* var59 /* : FlatString */; -short int var60 /* : Bool */; -val* var61 /* : nullable CallSite */; -val* var_callsite /* var callsite: nullable CallSite */; -val* var62 /* : null */; -short int var63 /* : Bool */; -short int var64 /* : Bool */; -short int var66 /* : Bool */; -short int var68 /* : Bool */; -val* var69 /* : MMethod */; -val* var71 /* : MMethod */; -short int var72 /* : Bool */; -short int var74 /* : Bool */; -short int var75 /* : Bool */; -val* var76 /* : MClass */; -val* var78 /* : MClass */; -val* var79 /* : MClassKind */; -val* var81 /* : MClassKind */; -val* var_kind /* var kind: MClassKind */; -val* var82 /* : MClassKind */; -short int var83 /* : Bool */; -short int var85 /* : Bool */; -short int var86 /* : Bool */; -static val* varonce87; -val* var88 /* : String */; -char* var89 /* : NativeString */; -long var90 /* : Int */; -val* var91 /* : FlatString */; -static val* varonce92; -val* var93 /* : String */; -char* var94 /* : NativeString */; -long var95 /* : Int */; -val* var96 /* : FlatString */; -static val* varonce97; -val* var98 /* : String */; -char* var99 /* : NativeString */; -long var100 /* : Int */; -val* var101 /* : FlatString */; -val* var102 /* : Array[Object] */; -long var103 /* : Int */; -val* var104 /* : NativeArray[Object] */; -val* var105 /* : String */; -val* var107 /* : MSignature */; -val* var109 /* : MSignature */; -val* var110 /* : nullable MType */; -val* var112 /* : nullable MType */; -val* var114 /* : nullable MType */; -val* var116 /* : nullable MType */; -val* var117 /* : null */; -short int var118 /* : Bool */; -short int var119 /* : Bool */; -short int var121 /* : Bool */; -short int var122 /* : Bool */; -val* var124 /* : MMethod */; -val* var126 /* : MMethod */; -val* var127 /* : MClass */; -val* var129 /* : MClass */; -short int var130 /* : Bool */; -short int var131 /* : Bool */; -static val* varonce132; -val* var133 /* : String */; -char* var134 /* : NativeString */; -long var135 /* : Int */; -val* var136 /* : FlatString */; -static val* varonce137; -val* var138 /* : String */; -char* var139 /* : NativeString */; -long var140 /* : Int */; -val* var141 /* : FlatString */; -val* var142 /* : Array[Object] */; -long var143 /* : Int */; -val* var144 /* : NativeArray[Object] */; -val* var145 /* : String */; -val* var146 /* : AExprs */; -val* var148 /* : AExprs */; -val* var149 /* : Array[AExpr] */; -val* var_args /* var args: Array[AExpr] */; -short int var150 /* : Bool */; -var_v = p0; { -{ /* Inline parser_nodes#ANewExpr#n_type (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_type].val; /* _n_type on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1962); -show_backtrace(1); +var50 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, self, var_msupertype, var47); } -var = var2; -RET_LABEL1:(void)0; +/* isa nullable MMethod */ +cltype52 = type_nullable__nit__MMethod.color; +idtype53 = type_nullable__nit__MMethod.id; +if(var50 == NULL) { +var51 = 1; +} else { +if(cltype52 >= var50->type->table_size) { +var51 = 0; +} else { +var51 = var50->type->type_table[cltype52] == idtype53; } } -{ -var3 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var); +if (unlikely(!var51)) { +var_class_name = var50 == NULL ? "null" : var50->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1871); +fatal_exit(1); } -var_recvtype = var3; -var4 = NULL; -if (var_recvtype == NULL) { -var5 = 1; /* is null */ +var_candidate = var50; +if (var_candidate == NULL) { +var54 = 1; /* is null */ } else { -var5 = 0; /* arg is null but recv is not */ +var54 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_recvtype,var4) on */ -var_other = var4; +{ /* Inline kernel#Object#== (var_candidate,((val*)NULL)) on */ +var_other57 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on */ -var10 = var_recvtype == var_other; -var8 = var10; -goto RET_LABEL9; -RET_LABEL9:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_candidate,var_other57) on */ +var60 = var_candidate == var_other57; +var58 = var60; +goto RET_LABEL59; +RET_LABEL59:(void)0; } } -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; +var55 = var58; +goto RET_LABEL56; +RET_LABEL56:(void)0; } -var5 = var6; +var54 = var55; } -if (var5){ -goto RET_LABEL; -} else { +if (var54){ +{ +{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ +var63 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ +if (unlikely(var63 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); +fatal_exit(1); } -/* isa MClassType */ -cltype = type_nit__MClassType.color; -idtype = type_nit__MClassType.id; -if(cltype >= var_recvtype->type->table_size) { -var11 = 0; -} else { -var11 = var_recvtype->type->type_table[cltype] == idtype; +var61 = var63; +RET_LABEL62:(void)0; } -var12 = !var11; -if (var12){ -/* isa MNullableType */ -cltype14 = type_nit__MNullableType.color; -idtype15 = type_nit__MNullableType.id; -if(cltype14 >= var_recvtype->type->table_size) { -var13 = 0; -} else { -var13 = var_recvtype->type->type_table[cltype14] == idtype15; } -if (var13){ -if (varonce) { -var16 = varonce; -} else { -var17 = "Type error: cannot instantiate the nullable type "; -var18 = 49; -var19 = standard___standard__NativeString___to_s_with_length(var17, var18); -var16 = var19; -varonce = var16; +{ +{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var61) on */ +var66 = var61->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on */ +if (unlikely(var66 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47); +fatal_exit(1); +} +var64 = var66; +RET_LABEL65:(void)0; } -if (varonce20) { -var21 = varonce20; -} else { -var22 = "."; -var23 = 1; -var24 = standard___standard__NativeString___to_s_with_length(var22, var23); -var21 = var24; -varonce20 = var21; } -var25 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var25 = array_instance Array[Object] */ -var26 = 3; -var27 = NEW_standard__NativeArray(var26, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var27)->values[0] = (val*) var16; -((struct instance_standard__NativeArray*)var27)->values[1] = (val*) var_recvtype; -((struct instance_standard__NativeArray*)var27)->values[2] = (val*) var21; { -((void (*)(val* self, val* p0, long p1))(var25->class->vft[COLOR_standard__array__Array__with_native]))(var25, var27, var26) /* with_native on */; +{ /* Inline toolcontext#ToolContext#error_count (var64) on */ +var69 = var64->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on */ +var67 = var69; +RET_LABEL68:(void)0; } } { -var28 = ((val* (*)(val* self))(var25->class->vft[COLOR_standard__string__Object__to_s]))(var25) /* to_s on */; +{ /* Inline kernel#Int#> (var67,var_errcount) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var72 = 1; /* easy isa OTHER*/ +if (unlikely(!var72)) { +var_class_name75 = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name75); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536); +fatal_exit(1); +} +var76 = var67 > var_errcount; +var70 = var76; +goto RET_LABEL71; +RET_LABEL71:(void)0; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var28); /* Direct call typing#TypeVisitor#error on */ } +if (var70){ goto RET_LABEL; } else { -if (varonce29) { -var30 = varonce29; -} else { -var31 = "Type error: cannot instantiate the formal type "; -var32 = 47; -var33 = standard___standard__NativeString___to_s_with_length(var31, var32); -var30 = var33; -varonce29 = var30; } -if (varonce34) { -var35 = varonce34; +goto BREAK_label; } else { -var36 = "."; -var37 = 1; -var38 = standard___standard__NativeString___to_s_with_length(var36, var37); -var35 = var38; -varonce34 = var35; -} -var39 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var39 = array_instance Array[Object] */ -var40 = 3; -var41 = NEW_standard__NativeArray(var40, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var41)->values[0] = (val*) var30; -((struct instance_standard__NativeArray*)var41)->values[1] = (val*) var_recvtype; -((struct instance_standard__NativeArray*)var41)->values[2] = (val*) var35; -{ -((void (*)(val* self, val* p0, long p1))(var39->class->vft[COLOR_standard__array__Array__with_native]))(var39, var41, var40) /* with_native on */; -} } -{ -var42 = ((val* (*)(val* self))(var39->class->vft[COLOR_standard__string__Object__to_s]))(var39) /* to_s on */; +if (var_superprop == NULL) { +var78 = 0; /* is null */ +} else { +var78 = 1; /* arg is null and recv is not */ } +if (0) { +{ /* Inline kernel#Object#!= (var_superprop,((val*)NULL)) on */ +var_other = ((val*)NULL); { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var42); /* Direct call typing#TypeVisitor#error on */ +var81 = ((short int(*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other); /* == on */ } -goto RET_LABEL; +var82 = !var81; +var79 = var82; +goto RET_LABEL80; +RET_LABEL80:(void)0; } -} else { +var78 = var79; } +var_83 = var78; +if (var78){ { -{ /* Inline typing#ANewExpr#recvtype= (self,var_recvtype) on */ -self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val = var_recvtype; /* _recvtype on */ -RET_LABEL43:(void)0; +{ /* Inline model#MMethod#is_root_init (var_candidate) on */ +var86 = var_candidate->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ +var84 = var86; +RET_LABEL85:(void)0; } } -{ -{ /* Inline parser_nodes#ANewExpr#n_id (self) on */ -var46 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_id].val; /* _n_id on */ -var44 = var46; -RET_LABEL45:(void)0; +var77 = var84; +} else { +var77 = var_83; } +if (var77){ +goto BREAK_label; +} else { } -var_nid = var44; -var47 = NULL; -if (var_nid == NULL) { -var48 = 0; /* is null */ +if (var_superprop == NULL) { +var89 = 0; /* is null */ } else { -var48 = 1; /* arg is null and recv is not */ +var89 = 1; /* arg is null and recv is not */ } if (0) { -{ /* Inline kernel#Object#!= (var_nid,var47) on */ -var_other51 = var47; +{ /* Inline kernel#Object#!= (var_superprop,((val*)NULL)) on */ +var_other = ((val*)NULL); { -var52 = ((short int (*)(val* self, val* p0))(var_nid->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nid, var_other51) /* == on */; +var92 = ((short int(*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other); /* == on */ } -var53 = !var52; -var49 = var53; -goto RET_LABEL50; -RET_LABEL50:(void)0; +var93 = !var92; +var90 = var93; +goto RET_LABEL91; +RET_LABEL91:(void)0; } -var48 = var49; +var89 = var90; } -if (var48){ +var_94 = var89; +if (var89){ { -var54 = nit__lexer_work___Token___text(var_nid); +{ /* Inline model#MPropDef#mproperty (var_superprop) on */ +var97 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var97 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } -var_name = var54; -} else { -if (varonce55) { -var56 = varonce55; -} else { -var57 = "new"; -var58 = 3; -var59 = standard___standard__NativeString___to_s_with_length(var57, var58); -var56 = var59; -varonce55 = var56; +var95 = var97; +RET_LABEL96:(void)0; } -var_name = var56; } -var60 = 0; { -var61 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var_name, var60); -} -var_callsite = var61; -var62 = NULL; -if (var_callsite == NULL) { -var63 = 1; /* is null */ -} else { -var63 = 0; /* arg is null but recv is not */ -} -if (0) { -{ /* Inline kernel#Object#== (var_callsite,var62) on */ -var_other = var62; +{ /* Inline kernel#Object#!= (var95,var_candidate) on */ +var_other = var_candidate; { -{ /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on */ -var68 = var_callsite == var_other; -var66 = var68; -goto RET_LABEL67; -RET_LABEL67:(void)0; +var100 = ((short int(*)(val* self, val* p0))(var95->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var95, var_other); /* == on */ } +var101 = !var100; +var98 = var101; +goto RET_LABEL99; +RET_LABEL99:(void)0; } -var64 = var66; -goto RET_LABEL65; -RET_LABEL65:(void)0; -} -var63 = var64; } -if (var63){ -goto RET_LABEL; +var88 = var98; } else { +var88 = var_94; } +var_102 = var88; +if (var88){ { -{ /* Inline typing#CallSite#mproperty (var_callsite) on */ -var71 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ -if (unlikely(var71 == NULL)) { +{ /* Inline model#MPropDef#mproperty (var_superprop) on */ +var105 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var105 == NULL)) { PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487); -show_backtrace(1); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } -var69 = var71; -RET_LABEL70:(void)0; +var103 = var105; +RET_LABEL104:(void)0; } } { -{ /* Inline model#MMethod#is_new (var69) on */ -var74 = var69->attrs[COLOR_nit__model__MMethod___is_new].s; /* _is_new on */ -var72 = var74; -RET_LABEL73:(void)0; +{ /* Inline model#MMethod#is_root_init (var103) on */ +var108 = var103->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on */ +var106 = var108; +RET_LABEL107:(void)0; } } -var75 = !var72; -if (var75){ -{ -{ /* Inline model#MClassType#mclass (var_recvtype) on */ -var78 = var_recvtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on */ -if (unlikely(var78 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058); -show_backtrace(1); +var109 = !var106; +var87 = var109; +} else { +var87 = var_102; } -var76 = var78; -RET_LABEL77:(void)0; +if (var87){ +if (unlikely(varonce==NULL)) { +var110 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String); +if (likely(varonce111!=NULL)) { +var112 = varonce111; +} else { +var113 = "Error: conflicting super constructor to call for `"; +var114 = standard___standard__NativeString___to_s_with_length(var113, 50l); +var112 = var114; +varonce111 = var112; } +((struct instance_standard__NativeArray*)var110)->values[0]=var112; +if (likely(varonce115!=NULL)) { +var116 = varonce115; +} else { +var117 = "`: `"; +var118 = standard___standard__NativeString___to_s_with_length(var117, 4l); +var116 = var118; +varonce115 = var116; } -{ -{ /* Inline model#MClass#kind (var76) on */ -var81 = var76->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on */ -if (unlikely(var81 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399); -show_backtrace(1); +((struct instance_standard__NativeArray*)var110)->values[2]=var116; +if (likely(varonce119!=NULL)) { +var120 = varonce119; +} else { +var121 = "`, `"; +var122 = standard___standard__NativeString___to_s_with_length(var121, 4l); +var120 = var122; +varonce119 = var120; } -var79 = var81; -RET_LABEL80:(void)0; +((struct instance_standard__NativeArray*)var110)->values[4]=var120; +if (likely(varonce123!=NULL)) { +var124 = varonce123; +} else { +var125 = "`"; +var126 = standard___standard__NativeString___to_s_with_length(var125, 1l); +var124 = var126; +varonce123 = var124; } +((struct instance_standard__NativeArray*)var110)->values[6]=var124; +} else { +var110 = varonce; +varonce = NULL; } -var_kind = var79; { -var82 = nit__model___standard__Object___concrete_kind(self); +var127 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_standard__string__Object__to_s]))(var_mproperty); /* to_s on */ } +((struct instance_standard__NativeArray*)var110)->values[1]=var127; { -{ /* Inline kernel#Object#!= (var_kind,var82) on */ -var_other51 = var82; -{ -var85 = ((short int (*)(val* self, val* p0))(var_kind->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_kind, var_other51) /* == on */; +var128 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_candidate); } -var86 = !var85; -var83 = var86; -goto RET_LABEL84; -RET_LABEL84:(void)0; +((struct instance_standard__NativeArray*)var110)->values[3]=var128; +{ +{ /* Inline model#MPropDef#mproperty (var_superprop) on */ +var131 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var131 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } +var129 = var131; +RET_LABEL130:(void)0; } -if (var83){ -if (varonce87) { -var88 = varonce87; -} else { -var89 = "Type Error: Cannot instantiate "; -var90 = 31; -var91 = standard___standard__NativeString___to_s_with_length(var89, var90); -var88 = var91; -varonce87 = var88; -} -if (varonce92) { -var93 = varonce92; -} else { -var94 = " "; -var95 = 1; -var96 = standard___standard__NativeString___to_s_with_length(var94, var95); -var93 = var96; -varonce92 = var93; -} -if (varonce97) { -var98 = varonce97; -} else { -var99 = "."; -var100 = 1; -var101 = standard___standard__NativeString___to_s_with_length(var99, var100); -var98 = var101; -varonce97 = var98; } -var102 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var102 = array_instance Array[Object] */ -var103 = 5; -var104 = NEW_standard__NativeArray(var103, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var104)->values[0] = (val*) var88; -((struct instance_standard__NativeArray*)var104)->values[1] = (val*) var_kind; -((struct instance_standard__NativeArray*)var104)->values[2] = (val*) var93; -((struct instance_standard__NativeArray*)var104)->values[3] = (val*) var_recvtype; -((struct instance_standard__NativeArray*)var104)->values[4] = (val*) var98; { -((void (*)(val* self, val* p0, long p1))(var102->class->vft[COLOR_standard__array__Array__with_native]))(var102, var104, var103) /* with_native on */; -} +var132 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var129); } +((struct instance_standard__NativeArray*)var110)->values[5]=var132; { -var105 = ((val* (*)(val* self))(var102->class->vft[COLOR_standard__string__Object__to_s]))(var102) /* to_s on */; +var133 = ((val*(*)(val* self))(var110->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var110); /* native_to_s on */ } +varonce = var110; { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var105); /* Direct call typing#TypeVisitor#error on */ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var133); /* Direct call typing#TypeVisitor#error on */ } goto RET_LABEL; } else { } { -{ /* Inline typing#AExpr#mtype= (self,var_recvtype) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_recvtype; /* _mtype on */ -RET_LABEL106:(void)0; +{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ +var136 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var136 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); +fatal_exit(1); +} +var134 = var136; +RET_LABEL135:(void)0; +} } +{ +var137 = nit___nit__MProperty___lookup_definitions(var_candidate, var134, var_anchor); } +var_candidatedefs = var137; +if (var_superprop == NULL) { +var139 = 0; /* is null */ } else { +var139 = 1; /* arg is null and recv is not */ +} +if (0) { +{ /* Inline kernel#Object#!= (var_superprop,((val*)NULL)) on */ +var_other = ((val*)NULL); { -{ /* Inline typing#CallSite#msignature (var_callsite) on */ -var109 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on */ -if (unlikely(var109 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494); -show_backtrace(1); +var142 = ((short int(*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other); /* == on */ } -var107 = var109; -RET_LABEL108:(void)0; +var143 = !var142; +var140 = var143; +goto RET_LABEL141; +RET_LABEL141:(void)0; } +var139 = var140; } +var_144 = var139; +if (var139){ { -{ /* Inline model#MSignature#return_mtype (var107) on */ -var112 = var107->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on */ -var110 = var112; -RET_LABEL111:(void)0; +{ /* Inline model#MPropDef#mproperty (var_superprop) on */ +var147 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var147 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); +} +var145 = var147; +RET_LABEL146:(void)0; } } { -{ /* Inline typing#AExpr#mtype= (self,var110) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var110; /* _mtype on */ -RET_LABEL113:(void)0; +{ /* Inline kernel#Object#== (var145,var_candidate) on */ +var_other57 = var_candidate; +{ +{ /* Inline kernel#Object#is_same_instance (var145,var_other57) on */ +var152 = var145 == var_other57; +var150 = var152; +goto RET_LABEL151; +RET_LABEL151:(void)0; } } -{ -{ /* Inline typing#AExpr#mtype (self) on */ -var116 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on */ -var114 = var116; -RET_LABEL115:(void)0; +var148 = var150; +goto RET_LABEL149; +RET_LABEL149:(void)0; } } -var117 = NULL; -if (var114 == NULL) { -var118 = 0; /* is null */ +var138 = var148; } else { -var118 = 1; /* arg is null and recv is not */ +var138 = var_144; } -if (0) { -{ /* Inline kernel#Object#!= (var114,var117) on */ -var_other51 = var117; +if (var138){ { -var121 = ((short int (*)(val* self, val* p0))(var114->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var114, var_other51) /* == on */; +var153 = standard___standard__SequenceRead___Collection__first(var_candidatedefs); } -var122 = !var121; -var119 = var122; -goto RET_LABEL120; -RET_LABEL120:(void)0; +{ +{ /* Inline kernel#Object#== (var_superprop,var153) on */ +var_other57 = var153; +{ +{ /* Inline kernel#Object#is_same_instance (var_superprop,var_other57) on */ +var158 = var_superprop == var_other57; +var156 = var158; +goto RET_LABEL157; +RET_LABEL157:(void)0; } -var118 = var119; } -if (unlikely(!var118)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1771); -show_backtrace(1); +var154 = var156; +goto RET_LABEL155; +RET_LABEL155:(void)0; } } +if (var154){ +goto BREAK_label; +} else { +} { -{ /* Inline typing#ANewExpr#callsite= (self,var_callsite) on */ -self->attrs[COLOR_nit__typing__ANewExpr___callsite].val = var_callsite; /* _callsite on */ -RET_LABEL123:(void)0; +standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_candidatedefs, var_superprop); /* Direct call array#Array#add on */ } +} else { } { -{ /* Inline typing#CallSite#mproperty (var_callsite) on */ -var126 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on */ -if (unlikely(var126 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487); -show_backtrace(1); -} -var124 = var126; -RET_LABEL125:(void)0; +{ /* Inline array#AbstractArrayRead#length (var_candidatedefs) on */ +var161 = var_candidatedefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var159 = var161; +RET_LABEL160:(void)0; } } { -{ /* Inline model#MClassType#mclass (var_recvtype) on */ -var129 = var_recvtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on */ -if (unlikely(var129 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058); -show_backtrace(1); -} -var127 = var129; -RET_LABEL128:(void)0; +{ /* Inline kernel#Int#> (var159,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var164 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var164)) { +var_class_name167 = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name167); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536); +fatal_exit(1); } +var168 = var159 > 1l; +var162 = var168; +goto RET_LABEL163; +RET_LABEL163:(void)0; } -{ -var130 = nit___nit__MMethod___is_init_for(var124, var127); } -var131 = !var130; -if (var131){ -if (varonce132) { -var133 = varonce132; +if (var162){ +if (unlikely(varonce169==NULL)) { +var170 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String); +if (likely(varonce171!=NULL)) { +var172 = varonce171; } else { -var134 = "Error: "; -var135 = 7; -var136 = standard___standard__NativeString___to_s_with_length(var134, var135); -var133 = var136; -varonce132 = var133; +var173 = "Error: conflicting property definitions for property `"; +var174 = standard___standard__NativeString___to_s_with_length(var173, 54l); +var172 = var174; +varonce171 = var172; } -if (varonce137) { -var138 = varonce137; +((struct instance_standard__NativeArray*)var170)->values[0]=var172; +if (likely(varonce175!=NULL)) { +var176 = varonce175; } else { -var139 = " is not a constructor."; -var140 = 22; -var141 = standard___standard__NativeString___to_s_with_length(var139, var140); -var138 = var141; -varonce137 = var138; +var177 = "` in `"; +var178 = standard___standard__NativeString___to_s_with_length(var177, 6l); +var176 = var178; +varonce175 = var176; } -var142 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var142 = array_instance Array[Object] */ -var143 = 3; -var144 = NEW_standard__NativeArray(var143, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var144)->values[0] = (val*) var133; -((struct instance_standard__NativeArray*)var144)->values[1] = (val*) var_name; -((struct instance_standard__NativeArray*)var144)->values[2] = (val*) var138; -{ -((void (*)(val* self, val* p0, long p1))(var142->class->vft[COLOR_standard__array__Array__with_native]))(var142, var144, var143) /* with_native on */; +((struct instance_standard__NativeArray*)var170)->values[2]=var176; +if (likely(varonce179!=NULL)) { +var180 = varonce179; +} else { +var181 = "`: "; +var182 = standard___standard__NativeString___to_s_with_length(var181, 3l); +var180 = var182; +varonce179 = var180; } +((struct instance_standard__NativeArray*)var170)->values[4]=var180; +} else { +var170 = varonce169; +varonce169 = NULL; } { -var145 = ((val* (*)(val* self))(var142->class->vft[COLOR_standard__string__Object__to_s]))(var142) /* to_s on */; +var183 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_standard__string__Object__to_s]))(var_mproperty); /* to_s on */ } +((struct instance_standard__NativeArray*)var170)->values[1]=var183; { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var145); /* Direct call typing#TypeVisitor#error on */ +var184 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on */ } -goto RET_LABEL; +((struct instance_standard__NativeArray*)var170)->values[3]=var184; +if (likely(varonce185!=NULL)) { +var186 = varonce185; } else { +var187 = ", "; +var188 = standard___standard__NativeString___to_s_with_length(var187, 2l); +var186 = var188; +varonce185 = var186; } { -{ /* Inline parser_nodes#ANewExpr#n_args (self) on */ -var148 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_args].val; /* _n_args on */ -if (unlikely(var148 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1968); -show_backtrace(1); -} -var146 = var148; -RET_LABEL147:(void)0; -} +var189 = standard__string___Collection___join(var_candidatedefs, var186); } +((struct instance_standard__NativeArray*)var170)->values[5]=var189; { -var149 = nit__typing___AExprs___to_a(var146); +var190 = ((val*(*)(val* self))(var170->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var170); /* native_to_s on */ } -var_args = var149; +varonce169 = var170; { -var150 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); -} -RET_LABEL:; -} -/* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */ -val* nit__typing___AAttrFormExpr___mproperty(val* self) { -val* var /* : nullable MAttribute */; -val* var1 /* : nullable MAttribute */; -var1 = self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val; /* _mproperty on */ -var = var1; -RET_LABEL:; -return var; -} -/* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */ -void nit__typing___AAttrFormExpr___mproperty_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val = p0; /* _mproperty on */ -RET_LABEL:; +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var190); /* Direct call typing#TypeVisitor#error on */ } -/* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */ -val* nit__typing___AAttrFormExpr___attr_type(val* self) { -val* var /* : nullable MType */; -val* var1 /* : nullable MType */; -var1 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on */ -var = var1; -RET_LABEL:; -return var; +goto RET_LABEL; +} else { } -/* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */ -void nit__typing___AAttrFormExpr___attr_type_61d(val* self, val* p0) { -self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val = p0; /* _attr_type on */ -RET_LABEL:; +{ +var191 = standard___standard__SequenceRead___Collection__first(var_candidatedefs); } -/* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */ -void nit__typing___AAttrFormExpr___resolve_property(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : AExpr */; -val* var2 /* : AExpr */; -val* var3 /* : nullable MType */; -val* var_recvtype /* var recvtype: nullable MType */; -val* var4 /* : null */; -short int var5 /* : Bool */; -short int var6 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var8 /* : Bool */; -short int var10 /* : Bool */; -val* var11 /* : TAttrid */; -val* var13 /* : TAttrid */; -val* var14 /* : String */; -val* var_name /* var name: String */; -short int var15 /* : Bool */; -int cltype; -int idtype; -static val* varonce; -val* var16 /* : String */; -char* var17 /* : NativeString */; -long var18 /* : Int */; -val* var19 /* : FlatString */; -static val* varonce20; -val* var21 /* : String */; -char* var22 /* : NativeString */; -long var23 /* : Int */; -val* var24 /* : FlatString */; -val* var25 /* : Array[Object] */; -long var26 /* : Int */; -val* var27 /* : NativeArray[Object] */; -val* var28 /* : String */; -val* var29 /* : MType */; -val* var_unsafe_type /* var unsafe_type: MType */; -val* var30 /* : nullable MProperty */; -val* var_mproperty /* var mproperty: nullable MProperty */; -val* var31 /* : null */; -short int var32 /* : Bool */; -short int var33 /* : Bool */; -short int var35 /* : Bool */; -short int var37 /* : Bool */; -val* var38 /* : ModelBuilder */; -val* var40 /* : ModelBuilder */; -static val* varonce41; -val* var42 /* : String */; -char* var43 /* : NativeString */; -long var44 /* : Int */; -val* var45 /* : FlatString */; -static val* varonce46; -val* var47 /* : String */; -char* var48 /* : NativeString */; -long var49 /* : Int */; -val* var50 /* : FlatString */; -static val* varonce51; -val* var52 /* : String */; -char* var53 /* : NativeString */; -long var54 /* : Int */; -val* var55 /* : FlatString */; -val* var56 /* : Array[Object] */; -long var57 /* : Int */; -val* var58 /* : NativeArray[Object] */; -val* var59 /* : String */; -short int var60 /* : Bool */; -int cltype61; -int idtype62; -val* var64 /* : MModule */; -val* var66 /* : MModule */; -val* var67 /* : Array[MPropDef] */; -val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */; -long var68 /* : Int */; -long var70 /* : Int */; -long var71 /* : Int */; -short int var72 /* : Bool */; -short int var74 /* : Bool */; -val* var75 /* : nullable Object */; -val* var_mpropdef /* var mpropdef: MAttributeDef */; -val* var76 /* : nullable MType */; -val* var78 /* : nullable MType */; -val* var_attr_type /* var attr_type: MType */; -val* var79 /* : AExpr */; -val* var81 /* : AExpr */; -short int var82 /* : Bool */; -int cltype83; -int idtype84; -val* var85 /* : MType */; -var_v = p0; +var_superprop = var191; +BREAK_label: (void)0; { -{ /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on */ -var2 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var2 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1976); -show_backtrace(1); +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_31); /* Direct call array#ArrayIterator#next on */ } -var = var2; -RET_LABEL1:(void)0; +} else { +goto BREAK_label192; } } +BREAK_label192: (void)0; { -var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var); +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_31); /* Direct call array#ArrayIterator#finish on */ } -var_recvtype = var3; -var4 = NULL; -if (var_recvtype == NULL) { -var5 = 1; /* is null */ +if (var_superprop == NULL) { +var193 = 1; /* is null */ } else { -var5 = 0; /* arg is null but recv is not */ +var193 = 0; /* arg is null but recv is not */ } if (0) { -{ /* Inline kernel#Object#== (var_recvtype,var4) on */ -var_other = var4; +{ /* Inline kernel#Object#== (var_superprop,((val*)NULL)) on */ +var_other57 = ((val*)NULL); { -{ /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on */ -var10 = var_recvtype == var_other; -var8 = var10; -goto RET_LABEL9; -RET_LABEL9:(void)0; +{ /* Inline kernel#Object#is_same_instance (var_superprop,var_other57) on */ +var198 = var_superprop == var_other57; +var196 = var198; +goto RET_LABEL197; +RET_LABEL197:(void)0; } } -var6 = var8; -goto RET_LABEL7; -RET_LABEL7:(void)0; +var194 = var196; +goto RET_LABEL195; +RET_LABEL195:(void)0; } -var5 = var6; +var193 = var194; } -if (var5){ -goto RET_LABEL; +if (var193){ +if (unlikely(varonce199==NULL)) { +var200 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String); +if (likely(varonce201!=NULL)) { +var202 = varonce201; } else { +var203 = "Error: no super method to call for `"; +var204 = standard___standard__NativeString___to_s_with_length(var203, 36l); +var202 = var204; +varonce201 = var202; } -{ -{ /* Inline parser_nodes#AAttrFormExpr#n_id (self) on */ -var13 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_id].val; /* _n_id on */ -if (unlikely(var13 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1979); -show_backtrace(1); -} -var11 = var13; -RET_LABEL12:(void)0; +((struct instance_standard__NativeArray*)var200)->values[0]=var202; +if (likely(varonce205!=NULL)) { +var206 = varonce205; +} else { +var207 = "`."; +var208 = standard___standard__NativeString___to_s_with_length(var207, 2l); +var206 = var208; +varonce205 = var206; } +((struct instance_standard__NativeArray*)var200)->values[2]=var206; +} else { +var200 = varonce199; +varonce199 = NULL; } { -var14 = nit__lexer_work___Token___text(var11); +var209 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_standard__string__Object__to_s]))(var_mproperty); /* to_s on */ } -var_name = var14; -/* isa MNullType */ -cltype = type_nit__MNullType.color; -idtype = type_nit__MNullType.id; -if(cltype >= var_recvtype->type->table_size) { -var15 = 0; -} else { -var15 = var_recvtype->type->type_table[cltype] == idtype; +((struct instance_standard__NativeArray*)var200)->values[1]=var209; +{ +var210 = ((val*(*)(val* self))(var200->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var200); /* native_to_s on */ } -if (var15){ -if (varonce) { -var16 = varonce; -} else { -var17 = "Error: Attribute \'"; -var18 = 18; -var19 = standard___standard__NativeString___to_s_with_length(var17, var18); -var16 = var19; -varonce = var16; +varonce199 = var200; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var210); /* Direct call typing#TypeVisitor#error on */ } -if (varonce20) { -var21 = varonce20; +goto RET_LABEL; } else { -var22 = "\' access on \'null\'."; -var23 = 19; -var24 = standard___standard__NativeString___to_s_with_length(var22, var23); -var21 = var24; -varonce20 = var21; } -var25 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var25 = array_instance Array[Object] */ -var26 = 3; -var27 = NEW_standard__NativeArray(var26, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var27)->values[0] = (val*) var16; -((struct instance_standard__NativeArray*)var27)->values[1] = (val*) var_name; -((struct instance_standard__NativeArray*)var27)->values[2] = (val*) var21; { -((void (*)(val* self, val* p0, long p1))(var25->class->vft[COLOR_standard__array__Array__with_native]))(var25, var27, var26) /* with_native on */; +{ /* Inline model#MMethodDef#new_msignature (var_superprop) on */ +var214 = var_superprop->attrs[COLOR_nit__model__MMethodDef___new_msignature].val; /* _new_msignature on */ +var212 = var214; +RET_LABEL213:(void)0; } } +if (var212!=NULL) { +var211 = var212; +} else { { -var28 = ((val* (*)(val* self))(var25->class->vft[COLOR_standard__string__Object__to_s]))(var25) /* to_s on */; +{ /* Inline model#MMethodDef#msignature (var_superprop) on */ +var217 = var_superprop->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ +var215 = var217; +RET_LABEL216:(void)0; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var28); /* Direct call typing#TypeVisitor#error on */ } -goto RET_LABEL; -} else { +if (unlikely(var215 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Cast failed"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1899); +fatal_exit(1); } -{ -var29 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_recvtype); +var211 = var215; } -var_unsafe_type = var29; +var_msignature = var211; { -var30 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, self, var_unsafe_type, var_name); +var218 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, 1); } -var_mproperty = var30; -var31 = NULL; -if (var_mproperty == NULL) { -var32 = 1; /* is null */ +/* isa MSignature */ +cltype220 = type_nit__MSignature.color; +idtype221 = type_nit__MSignature.id; +if(cltype220 >= var218->type->table_size) { +var219 = 0; } else { -var32 = 0; /* arg is null but recv is not */ +var219 = var218->type->type_table[cltype220] == idtype221; } -if (0) { -{ /* Inline kernel#Object#== (var_mproperty,var31) on */ -var_other = var31; +if (unlikely(!var219)) { +var_class_name222 = var218 == NULL ? "null" : var218->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name222); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1900); +fatal_exit(1); +} +var_msignature = var218; +var223 = NEW_nit__CallSite(&type_nit__CallSite); { -{ /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on */ -var37 = var_mproperty == var_other; -var35 = var37; -goto RET_LABEL36; -RET_LABEL36:(void)0; +{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ +var226 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ +if (unlikely(var226 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); +fatal_exit(1); } +var224 = var226; +RET_LABEL225:(void)0; } -var33 = var35; -goto RET_LABEL34; -RET_LABEL34:(void)0; } -var32 = var33; +{ +{ /* Inline typing#TypeVisitor#anchor (var_v) on */ +var229 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on */ +var227 = var229; +RET_LABEL228:(void)0; +} } -if (var32){ { -{ /* Inline typing#TypeVisitor#modelbuilder (var_v) on */ -var40 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on */ -if (unlikely(var40 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34); -show_backtrace(1); +{ /* Inline model#MPropDef#mproperty (var_superprop) on */ +var232 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on */ +if (unlikely(var232 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212); +fatal_exit(1); } -var38 = var40; -RET_LABEL39:(void)0; +var230 = var232; +RET_LABEL231:(void)0; } } -if (varonce41) { -var42 = varonce41; -} else { -var43 = "Error: Attribute "; -var44 = 17; -var45 = standard___standard__NativeString___to_s_with_length(var43, var44); -var42 = var45; -varonce41 = var42; +{ +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__node_61d]))(var223, self); /* node= on */ } -if (varonce46) { -var47 = varonce46; -} else { -var48 = " doesn\'t exists in "; -var49 = 19; -var50 = standard___standard__NativeString___to_s_with_length(var48, var49); -var47 = var50; -varonce46 = var47; +{ +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__recv_61d]))(var223, var_recvtype); /* recv= on */ } -if (varonce51) { -var52 = varonce51; -} else { -var53 = "."; -var54 = 1; -var55 = standard___standard__NativeString___to_s_with_length(var53, var54); -var52 = var55; -varonce51 = var52; +{ +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__mmodule_61d]))(var223, var224); /* mmodule= on */ } -var56 = NEW_standard__Array(&type_standard__Array__standard__Object); -{ /* var56 = array_instance Array[Object] */ -var57 = 5; -var58 = NEW_standard__NativeArray(var57, &type_standard__NativeArray__standard__Object); -((struct instance_standard__NativeArray*)var58)->values[0] = (val*) var42; -((struct instance_standard__NativeArray*)var58)->values[1] = (val*) var_name; -((struct instance_standard__NativeArray*)var58)->values[2] = (val*) var47; -((struct instance_standard__NativeArray*)var58)->values[3] = (val*) var_recvtype; -((struct instance_standard__NativeArray*)var58)->values[4] = (val*) var52; { -((void (*)(val* self, val* p0, long p1))(var56->class->vft[COLOR_standard__array__Array__with_native]))(var56, var58, var57) /* with_native on */; +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__anchor_61d]))(var223, var227); /* anchor= on */ } +{ +((void(*)(val* self, short int p0))(var223->class->vft[COLOR_nit__typing__CallSite__recv_is_self_61d]))(var223, 1); /* recv_is_self= on */ } { -var59 = ((val* (*)(val* self))(var56->class->vft[COLOR_standard__string__Object__to_s]))(var56) /* to_s on */; +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__mproperty_61d]))(var223, var230); /* mproperty= on */ } { -nit___nit__ModelBuilder___error(var38, self, var59); /* Direct call modelbuilder_base#ModelBuilder#error on */ +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__mpropdef_61d]))(var223, var_superprop); /* mpropdef= on */ } -goto RET_LABEL; -} else { +{ +((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nit__typing__CallSite__msignature_61d]))(var223, var_msignature); /* msignature= on */ } -/* isa MAttribute */ -cltype61 = type_nit__MAttribute.color; -idtype62 = type_nit__MAttribute.id; -if(cltype61 >= var_mproperty->type->table_size) { -var60 = 0; -} else { -var60 = var_mproperty->type->type_table[cltype61] == idtype62; +{ +((void(*)(val* self, short int p0))(var223->class->vft[COLOR_nit__typing__CallSite__erasure_cast_61d]))(var223, 0); /* erasure_cast= on */ } -if (unlikely(!var60)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1812); -show_backtrace(1); +{ +((void(*)(val* self))(var223->class->vft[COLOR_standard__kernel__Object__init]))(var223); /* init on */ } +var_callsite = var223; { -{ /* Inline typing#AAttrFormExpr#mproperty= (self,var_mproperty) on */ -self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val = var_mproperty; /* _mproperty on */ -RET_LABEL63:(void)0; +{ /* Inline typing#ASuperExpr#callsite= (self,var_callsite) on */ +self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val = var_callsite; /* _callsite on */ +RET_LABEL233:(void)0; } } { -{ /* Inline typing#TypeVisitor#mmodule (var_v) on */ -var66 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on */ -if (unlikely(var66 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36); -show_backtrace(1); +{ /* Inline parser_nodes#ASuperExpr#n_args (self) on */ +var236 = self->attrs[COLOR_nit__parser_nodes__ASuperExpr___n_args].val; /* _n_args on */ +if (unlikely(var236 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2344); +fatal_exit(1); } -var64 = var66; -RET_LABEL65:(void)0; +var234 = var236; +RET_LABEL235:(void)0; } } { -var67 = nit___nit__MProperty___lookup_definitions(var_mproperty, var64, var_unsafe_type); +var237 = nit__typing___AExprs___to_a(var234); } -var_mpropdefs = var67; +var_args = var237; { -{ /* Inline array#AbstractArrayRead#length (var_mpropdefs) on */ -var70 = var_mpropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ -var68 = var70; -RET_LABEL69:(void)0; +{ /* Inline array#AbstractArrayRead#length (var_args) on */ +var240 = var_args->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on */ +var238 = var240; +RET_LABEL239:(void)0; } } -var71 = 1; { -{ /* Inline kernel#Int#== (var68,var71) on */ -var74 = var68 == var71; -var72 = var74; -goto RET_LABEL73; -RET_LABEL73:(void)0; +{ /* Inline kernel#Int#> (var238,0l) on */ +/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */ +/* <0l:Int> isa OTHER */ +var243 = 1; /* easy <0l:Int> isa OTHER*/ +if (unlikely(!var243)) { +var_class_name246 = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name246); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536); +fatal_exit(1); } +var247 = var238 > 0l; +var241 = var247; +goto RET_LABEL242; +RET_LABEL242:(void)0; } -if (unlikely(!var72)) { -PRINT_ERROR("Runtime error: %s", "Assert failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1816); -show_backtrace(1); } +if (var241){ { -var75 = standard___standard__SequenceRead___Collection__first(var_mpropdefs); +var248 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args); } -var_mpropdef = var75; +} else { { -{ /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on */ -var78 = var_mpropdef->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on */ -var76 = var78; -RET_LABEL77:(void)0; +{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ +var251 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ +var249 = var251; +RET_LABEL250:(void)0; } } -if (unlikely(var76 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Cast failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1818); -show_backtrace(1); +if (var249 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1910); +fatal_exit(1); +} else { +var252 = nit___nit__MSignature___arity(var249); } -var_attr_type = var76; { -{ /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on */ -var81 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var81 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1976); -show_backtrace(1); +var253 = nit___nit__MSignature___arity(var_msignature); } -var79 = var81; -RET_LABEL80:(void)0; +{ +{ /* Inline kernel#Int#< (var252,var253) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var256 = 1; /* easy isa OTHER*/ +if (unlikely(!var256)) { +var_class_name259 = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name259); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534); +fatal_exit(1); } +var260 = var252 < var253; +var254 = var260; +goto RET_LABEL255; +RET_LABEL255:(void)0; } -/* isa ASelfExpr */ -cltype83 = type_nit__ASelfExpr.color; -idtype84 = type_nit__ASelfExpr.id; -if(cltype83 >= var79->type->table_size) { -var82 = 0; +} +if (var254){ +if (unlikely(varonce261==NULL)) { +var262 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String); +if (likely(varonce263!=NULL)) { +var264 = varonce263; } else { -var82 = var79->type->type_table[cltype83] == idtype84; +var265 = "Error: not enough implicit arguments to pass. Got `"; +var266 = standard___standard__NativeString___to_s_with_length(var265, 51l); +var264 = var266; +varonce263 = var264; } -{ -var85 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_attr_type, var_recvtype, var82); +((struct instance_standard__NativeArray*)var262)->values[0]=var264; +if (likely(varonce267!=NULL)) { +var268 = varonce267; +} else { +var269 = "`, expected at least `"; +var270 = standard___standard__NativeString___to_s_with_length(var269, 22l); +var268 = var270; +varonce267 = var268; +} +((struct instance_standard__NativeArray*)var262)->values[2]=var268; +if (likely(varonce271!=NULL)) { +var272 = varonce271; +} else { +var273 = "`. Signature is `"; +var274 = standard___standard__NativeString___to_s_with_length(var273, 17l); +var272 = var274; +varonce271 = var272; +} +((struct instance_standard__NativeArray*)var262)->values[4]=var272; +if (likely(varonce275!=NULL)) { +var276 = varonce275; +} else { +var277 = "`."; +var278 = standard___standard__NativeString___to_s_with_length(var277, 2l); +var276 = var278; +varonce275 = var276; +} +((struct instance_standard__NativeArray*)var262)->values[6]=var276; +} else { +var262 = varonce261; +varonce261 = NULL; } -var_attr_type = var85; { -{ /* Inline typing#AAttrFormExpr#attr_type= (self,var_attr_type) on */ -self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val = var_attr_type; /* _attr_type on */ -RET_LABEL86:(void)0; +{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ +var281 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ +var279 = var281; +RET_LABEL280:(void)0; } } -RET_LABEL:; +if (var279 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1911); +fatal_exit(1); +} else { +var282 = nit___nit__MSignature___arity(var279); } -/* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */ -void nit__typing___AAttrExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MType */; -val* var2 /* : nullable MType */; -var_v = p0; +var283 = standard__string___Int___Object__to_s(var282); +((struct instance_standard__NativeArray*)var262)->values[1]=var283; { -nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on */ +var284 = nit___nit__MSignature___arity(var_msignature); } +var285 = standard__string___Int___Object__to_s(var284); +((struct instance_standard__NativeArray*)var262)->values[3]=var285; { -{ /* Inline typing#AAttrFormExpr#attr_type (self) on */ -var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on */ -var = var2; -RET_LABEL1:(void)0; +var286 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_standard__string__Object__to_s]))(var_msignature); /* to_s on */ } +((struct instance_standard__NativeArray*)var262)->values[5]=var286; +{ +var287 = ((val*(*)(val* self))(var262->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var262); /* native_to_s on */ } +varonce261 = var262; { -{ /* Inline typing#AExpr#mtype= (self,var) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on */ -RET_LABEL3:(void)0; +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var287); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { } -RET_LABEL:; +var_i = 0l; +{ +{ /* Inline model#MSignature#mparameters (var_msignature) on */ +var290 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on */ +if (unlikely(var290 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756); +fatal_exit(1); } -/* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */ -void nit__typing___AAttrAssignExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MType */; -val* var2 /* : nullable MType */; -val* var_mtype /* var mtype: nullable MType */; -val* var3 /* : AExpr */; -val* var5 /* : AExpr */; -val* var6 /* : nullable MType */; -short int var7 /* : Bool */; -var_v = p0; +var288 = var290; +RET_LABEL289:(void)0; +} +} +var_291 = var288; { -nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on */ +var292 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_291); } +var_293 = var292; +for(;;) { { -{ /* Inline typing#AAttrFormExpr#attr_type (self) on */ -var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on */ -var = var2; -RET_LABEL1:(void)0; +var294 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_293); } +if (var294){ +{ +var295 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_293); } -var_mtype = var; +var_sp = var295; { -{ /* Inline parser_nodes#AAssignFormExpr#n_value (self) on */ -var5 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on */ -if (unlikely(var5 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1772); -show_backtrace(1); +{ /* Inline model#MMethodDef#msignature (var_mpropdef) on */ +var298 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on */ +var296 = var298; +RET_LABEL297:(void)0; } -var3 = var5; -RET_LABEL4:(void)0; } +if (var296 == NULL) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1917); +fatal_exit(1); +} else { +{ /* Inline model#MSignature#mparameters (var296) on */ +if (unlikely(var296 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Receiver is null"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756); +fatal_exit(1); } -{ -var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var3, var_mtype); +var301 = var296->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on */ +if (unlikely(var301 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756); +fatal_exit(1); } -var7 = 1; -{ -{ /* Inline typing#AExpr#is_typed= (self,var7) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var7; /* _is_typed on */ -RET_LABEL8:(void)0; +var299 = var301; +RET_LABEL300:(void)0; } } -RET_LABEL:; +{ +var302 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var299, var_i); } -/* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */ -void nit__typing___AAttrReassignExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MType */; -val* var2 /* : nullable MType */; -val* var_mtype /* var mtype: nullable MType */; -val* var3 /* : null */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var7 /* : Bool */; -short int var9 /* : Bool */; -val* var10 /* : nullable MType */; -short int var11 /* : Bool */; -var_v = p0; +var_p = var302; { -nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on */ +{ /* Inline model#MParameter#mtype (var_p) on */ +var305 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var305 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879); +fatal_exit(1); +} +var303 = var305; +RET_LABEL304:(void)0; +} } { -{ /* Inline typing#AAttrFormExpr#attr_type (self) on */ -var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on */ -var = var2; -RET_LABEL1:(void)0; +{ /* Inline model#MParameter#mtype (var_sp) on */ +var308 = var_sp->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var308 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879); +fatal_exit(1); } +var306 = var308; +RET_LABEL307:(void)0; } -var_mtype = var; -var3 = NULL; -if (var_mtype == NULL) { -var4 = 1; /* is null */ -} else { -var4 = 0; /* arg is null but recv is not */ } -if (0) { -{ /* Inline kernel#Object#== (var_mtype,var3) on */ -var_other = var3; { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ -var9 = var_mtype == var_other; -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +var309 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var303, var306); +} +var310 = !var309; +if (var310){ +if (unlikely(varonce311==NULL)) { +var312 = NEW_standard__NativeArray(10l, &type_standard__NativeArray__standard__String); +if (likely(varonce313!=NULL)) { +var314 = varonce313; +} else { +var315 = "Type Error: expected argument #"; +var316 = standard___standard__NativeString___to_s_with_length(var315, 31l); +var314 = var316; +varonce313 = var314; } +((struct instance_standard__NativeArray*)var312)->values[0]=var314; +if (likely(varonce317!=NULL)) { +var318 = varonce317; +} else { +var319 = " of type `"; +var320 = standard___standard__NativeString___to_s_with_length(var319, 10l); +var318 = var320; +varonce317 = var318; } -var5 = var7; -goto RET_LABEL6; -RET_LABEL6:(void)0; +((struct instance_standard__NativeArray*)var312)->values[2]=var318; +if (likely(varonce321!=NULL)) { +var322 = varonce321; +} else { +var323 = "`, got implicit argument `"; +var324 = standard___standard__NativeString___to_s_with_length(var323, 26l); +var322 = var324; +varonce321 = var322; } -var4 = var5; +((struct instance_standard__NativeArray*)var312)->values[4]=var322; +if (likely(varonce325!=NULL)) { +var326 = varonce325; +} else { +var327 = "` of type `"; +var328 = standard___standard__NativeString___to_s_with_length(var327, 11l); +var326 = var328; +varonce325 = var326; } -if (var4){ -goto RET_LABEL; +((struct instance_standard__NativeArray*)var312)->values[6]=var326; +if (likely(varonce329!=NULL)) { +var330 = varonce329; } else { +var331 = "`. Signature is "; +var332 = standard___standard__NativeString___to_s_with_length(var331, 16l); +var330 = var332; +varonce329 = var330; } -{ -var10 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_mtype, var_mtype); +((struct instance_standard__NativeArray*)var312)->values[8]=var330; +} else { +var312 = varonce311; +varonce311 = NULL; } -var11 = 1; +var333 = standard__string___Int___Object__to_s(var_i); +((struct instance_standard__NativeArray*)var312)->values[1]=var333; { -{ /* Inline typing#AExpr#is_typed= (self,var11) on */ -self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var11; /* _is_typed on */ -RET_LABEL12:(void)0; +{ /* Inline model#MParameter#mtype (var_sp) on */ +var336 = var_sp->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var336 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879); +fatal_exit(1); } +var334 = var336; +RET_LABEL335:(void)0; } -RET_LABEL:; } -/* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */ -void nit__typing___AIssetAttrExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -val* var /* : nullable MType */; -val* var2 /* : nullable MType */; -val* var_mtype /* var mtype: nullable MType */; -val* var3 /* : null */; -short int var4 /* : Bool */; -short int var5 /* : Bool */; -val* var_other /* var other: nullable Object */; -short int var7 /* : Bool */; -short int var9 /* : Bool */; -val* var10 /* : AExpr */; -val* var12 /* : AExpr */; -val* var13 /* : nullable MType */; -val* var_recvtype /* var recvtype: MType */; -short int var14 /* : Bool */; -val* var15 /* : MType */; -val* var_bound /* var bound: MType */; -short int var16 /* : Bool */; -int cltype; -int idtype; -static val* varonce; -val* var17 /* : String */; -char* var18 /* : NativeString */; -long var19 /* : Int */; -val* var20 /* : FlatString */; -val* var21 /* : nullable MType */; -var_v = p0; { -nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on */ +var337 = ((val*(*)(val* self))(var334->class->vft[COLOR_standard__string__Object__to_s]))(var334); /* to_s on */ } +((struct instance_standard__NativeArray*)var312)->values[3]=var337; { -{ /* Inline typing#AAttrFormExpr#attr_type (self) on */ -var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on */ -var = var2; -RET_LABEL1:(void)0; +{ /* Inline model#MParameter#name (var_p) on */ +var340 = var_p->attrs[COLOR_nit__model__MParameter___name].val; /* _name on */ +if (unlikely(var340 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1876); +fatal_exit(1); } +var338 = var340; +RET_LABEL339:(void)0; } -var_mtype = var; -var3 = NULL; -if (var_mtype == NULL) { -var4 = 1; /* is null */ -} else { -var4 = 0; /* arg is null but recv is not */ } -if (0) { -{ /* Inline kernel#Object#== (var_mtype,var3) on */ -var_other = var3; +((struct instance_standard__NativeArray*)var312)->values[5]=var338; { -{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on */ -var9 = var_mtype == var_other; -var7 = var9; -goto RET_LABEL8; -RET_LABEL8:(void)0; +{ /* Inline model#MParameter#mtype (var_p) on */ +var343 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on */ +if (unlikely(var343 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype"); +PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879); +fatal_exit(1); } +var341 = var343; +RET_LABEL342:(void)0; } -var5 = var7; -goto RET_LABEL6; -RET_LABEL6:(void)0; } -var4 = var5; +{ +var344 = ((val*(*)(val* self))(var341->class->vft[COLOR_standard__string__Object__to_s]))(var341); /* to_s on */ } -if (var4){ -goto RET_LABEL; -} else { +((struct instance_standard__NativeArray*)var312)->values[7]=var344; +{ +var345 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_standard__string__Object__to_s]))(var_msignature); /* to_s on */ } +((struct instance_standard__NativeArray*)var312)->values[9]=var345; { -{ /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on */ -var12 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on */ -if (unlikely(var12 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1976); -show_backtrace(1); +var346 = ((val*(*)(val* self))(var312->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var312); /* native_to_s on */ } -var10 = var12; -RET_LABEL11:(void)0; +varonce311 = var312; +{ +nit__typing___nit__typing__TypeVisitor___error(var_v, self, var346); /* Direct call typing#TypeVisitor#error on */ } +goto RET_LABEL; +} else { } { -var13 = ((val* (*)(val* self))(var10->class->vft[COLOR_nit__typing__AExpr__mtype]))(var10) /* mtype on */; +{ /* Inline kernel#Int#+ (var_i,1l) on */ +/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */ +/* <1l:Int> isa OTHER */ +var349 = 1; /* easy <1l:Int> isa OTHER*/ +if (unlikely(!var349)) { +var_class_name352 = type_standard__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name352); +PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537); +fatal_exit(1); } -if (unlikely(var13 == NULL)) { -PRINT_ERROR("Runtime error: %s", "Cast failed"); -PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1864); -show_backtrace(1); +var353 = var_i + 1l; +var347 = var353; +goto RET_LABEL348; +RET_LABEL348:(void)0; } -var_recvtype = var13; -var14 = 0; +} +var_i = var347; { -var15 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_mtype, var_recvtype, var14); +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_293); /* Direct call array#ArrayIterator#next on */ } -var_bound = var15; -/* isa MNullableType */ -cltype = type_nit__MNullableType.color; -idtype = type_nit__MNullableType.id; -if(cltype >= var_bound->type->table_size) { -var16 = 0; } else { -var16 = var_bound->type->type_table[cltype] == idtype; +goto BREAK_label354; } -if (var16){ -if (varonce) { -var17 = varonce; -} else { -var18 = "Error: isset on a nullable attribute."; -var19 = 37; -var20 = standard___standard__NativeString___to_s_with_length(var18, var19); -var17 = var20; -varonce = var17; } +BREAK_label354: (void)0; { -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var17); /* Direct call typing#TypeVisitor#error on */ +standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_293); /* Direct call array#ArrayIterator#finish on */ } -} else { } { -var21 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self); +{ /* Inline typing#AExpr#is_typed= (self,1) on */ +self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on */ +RET_LABEL355:(void)0; } -{ -{ /* Inline typing#AExpr#mtype= (self,var21) on */ -self->attrs[COLOR_nit__typing__AExpr___mtype].val = var21; /* _mtype on */ -RET_LABEL22:(void)0; } +RET_LABEL:; } +/* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */ +val* nit__typing___ANewExpr___callsite(val* self) { +val* var /* : nullable CallSite */; +val* var1 /* : nullable CallSite */; +var1 = self->attrs[COLOR_nit__typing__ANewExpr___callsite].val; /* _callsite on */ +var = var1; RET_LABEL:; +return var; } -/* method typing#AVarargExpr#accept_typing for (self: AVarargExpr, TypeVisitor) */ -void nit__typing___AVarargExpr___AExpr__accept_typing(val* self, val* p0) { -val* var_v /* var v: TypeVisitor */; -static val* varonce; -val* var /* : String */; -char* var1 /* : NativeString */; -long var2 /* : Int */; -val* var3 /* : FlatString */; -var_v = p0; -if (varonce) { -var = varonce; -} else { -var1 = "Syntax error: unexpected `...`"; -var2 = 30; -var3 = standard___standard__NativeString___to_s_with_length(var1, var2); -var = var3; -varonce = var; +/* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */ +void nit__typing___ANewExpr___callsite_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ANewExpr___callsite].val = p0; /* _callsite on */ +RET_LABEL:; } -{ -nit__typing___nit__typing__TypeVisitor___error(var_v, self, var); /* Direct call typing#TypeVisitor#error on */ +/* method typing#ANewExpr#recvtype for (self: ANewExpr): nullable MClassType */ +val* nit__typing___ANewExpr___recvtype(val* self) { +val* var /* : nullable MClassType */; +val* var1 /* : nullable MClassType */; +var1 = self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val; /* _recvtype on */ +var = var1; +RET_LABEL:; +return var; } +/* method typing#ANewExpr#recvtype= for (self: ANewExpr, nullable MClassType) */ +void nit__typing___ANewExpr___recvtype_61d(val* self, val* p0) { +self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val = p0; /* _recvtype on */ RET_LABEL:; }