misc/vim: inform the user when no results are found
[nit.git] / c_src / nit__typing.sep.2.c
1 #include "nit__typing.sep.0.h"
2 /* method typing#AForExpr#do_type_iterator for (self: AForExpr, TypeVisitor, MType) */
3 void nit__typing___AForExpr___do_type_iterator(val* self, val* p0, val* p1) {
4 val* var_v /* var v: TypeVisitor */;
5 val* var_mtype /* var mtype: MType */;
6 short int var /* : Bool */;
7 int cltype;
8 int idtype;
9 static val* varonce;
10 val* var1 /* : String */;
11 char* var2 /* : NativeString */;
12 long var3 /* : Int */;
13 val* var4 /* : FlatString */;
14 static val* varonce5;
15 val* var6 /* : String */;
16 char* var7 /* : NativeString */;
17 long var8 /* : Int */;
18 val* var9 /* : FlatString */;
19 val* var10 /* : nullable MClass */;
20 val* var_objcla /* var objcla: nullable MClass */;
21 val* var11 /* : null */;
22 short int var12 /* : Bool */;
23 short int var13 /* : Bool */;
24 val* var_other /* var other: nullable Object */;
25 short int var15 /* : Bool */;
26 short int var17 /* : Bool */;
27 static val* varonce18;
28 val* var19 /* : String */;
29 char* var20 /* : NativeString */;
30 long var21 /* : Int */;
31 val* var22 /* : FlatString */;
32 val* var23 /* : AExpr */;
33 val* var25 /* : AExpr */;
34 short int var26 /* : Bool */;
35 int cltype27;
36 int idtype28;
37 val* var29 /* : nullable CallSite */;
38 val* var_itdef /* var itdef: nullable CallSite */;
39 val* var30 /* : null */;
40 short int var31 /* : Bool */;
41 short int var32 /* : Bool */;
42 short int var34 /* : Bool */;
43 short int var36 /* : Bool */;
44 static val* varonce37;
45 val* var38 /* : String */;
46 char* var39 /* : NativeString */;
47 long var40 /* : Int */;
48 val* var41 /* : FlatString */;
49 static val* varonce42;
50 val* var43 /* : String */;
51 char* var44 /* : NativeString */;
52 long var45 /* : Int */;
53 val* var46 /* : FlatString */;
54 val* var47 /* : Array[Object] */;
55 long var48 /* : Int */;
56 val* var49 /* : NativeArray[Object] */;
57 val* var50 /* : String */;
58 val* var52 /* : MSignature */;
59 val* var54 /* : MSignature */;
60 val* var55 /* : nullable MType */;
61 val* var57 /* : nullable MType */;
62 val* var_ittype /* var ittype: nullable MType */;
63 val* var58 /* : null */;
64 short int var59 /* : Bool */;
65 short int var60 /* : Bool */;
66 short int var62 /* : Bool */;
67 short int var64 /* : Bool */;
68 static val* varonce65;
69 val* var66 /* : String */;
70 char* var67 /* : NativeString */;
71 long var68 /* : Int */;
72 val* var69 /* : FlatString */;
73 static val* varonce70;
74 val* var71 /* : String */;
75 char* var72 /* : NativeString */;
76 long var73 /* : Int */;
77 val* var74 /* : FlatString */;
78 val* var75 /* : nullable MClass */;
79 val* var_colit_cla /* var colit_cla: nullable MClass */;
80 static val* varonce76;
81 val* var77 /* : String */;
82 char* var78 /* : NativeString */;
83 long var79 /* : Int */;
84 val* var80 /* : FlatString */;
85 val* var81 /* : nullable MClass */;
86 val* var_mapit_cla /* var mapit_cla: nullable MClass */;
87 short int var82 /* : Bool */;
88 short int var_is_col /* var is_col: Bool */;
89 short int var83 /* : Bool */;
90 short int var_is_map /* var is_map: Bool */;
91 short int var84 /* : Bool */;
92 val* var85 /* : null */;
93 short int var86 /* : Bool */;
94 short int var87 /* : Bool */;
95 val* var_other89 /* var other: nullable Object */;
96 short int var90 /* : Bool */;
97 short int var91 /* : Bool */;
98 short int var_ /* var : Bool */;
99 val* var92 /* : Array[MType] */;
100 long var93 /* : Int */;
101 val* var_94 /* var : Array[MType] */;
102 val* var95 /* : MClassType */;
103 val* var97 /* : MClassType */;
104 val* var98 /* : MType */;
105 val* var99 /* : MClassType */;
106 short int var100 /* : Bool */;
107 val* var101 /* : MModule */;
108 val* var103 /* : MModule */;
109 val* var104 /* : nullable MClassType */;
110 val* var106 /* : nullable MClassType */;
111 val* var107 /* : MClassType */;
112 val* var_coltype /* var coltype: MClassType */;
113 val* var108 /* : nullable Array[Variable] */;
114 val* var110 /* : nullable Array[Variable] */;
115 val* var_variables /* var variables: nullable Array[Variable] */;
116 long var111 /* : Int */;
117 long var113 /* : Int */;
118 long var114 /* : Int */;
119 short int var115 /* : Bool */;
120 short int var117 /* : Bool */;
121 short int var118 /* : Bool */;
122 static val* varonce119;
123 val* var120 /* : String */;
124 char* var121 /* : NativeString */;
125 long var122 /* : Int */;
126 val* var123 /* : FlatString */;
127 val* var124 /* : nullable Object */;
128 val* var125 /* : Array[MType] */;
129 val* var126 /* : nullable Object */;
130 short int var128 /* : Bool */;
131 short int var129 /* : Bool */;
132 val* var130 /* : null */;
133 short int var131 /* : Bool */;
134 short int var132 /* : Bool */;
135 short int var134 /* : Bool */;
136 short int var135 /* : Bool */;
137 short int var_136 /* var : Bool */;
138 val* var137 /* : Array[MType] */;
139 long var138 /* : Int */;
140 val* var_139 /* var : Array[MType] */;
141 val* var140 /* : MClassType */;
142 val* var142 /* : MClassType */;
143 val* var143 /* : MType */;
144 val* var144 /* : MClassType */;
145 val* var146 /* : MClassType */;
146 val* var147 /* : MType */;
147 val* var148 /* : MClassType */;
148 short int var149 /* : Bool */;
149 val* var150 /* : MModule */;
150 val* var152 /* : MModule */;
151 val* var153 /* : nullable MClassType */;
152 val* var155 /* : nullable MClassType */;
153 val* var156 /* : MClassType */;
154 val* var_coltype157 /* var coltype: MClassType */;
155 val* var158 /* : nullable Array[Variable] */;
156 val* var160 /* : nullable Array[Variable] */;
157 val* var_variables161 /* var variables: nullable Array[Variable] */;
158 long var162 /* : Int */;
159 long var164 /* : Int */;
160 long var165 /* : Int */;
161 short int var166 /* : Bool */;
162 short int var168 /* : Bool */;
163 short int var169 /* : Bool */;
164 static val* varonce170;
165 val* var171 /* : String */;
166 char* var172 /* : NativeString */;
167 long var173 /* : Int */;
168 val* var174 /* : FlatString */;
169 long var175 /* : Int */;
170 val* var176 /* : nullable Object */;
171 val* var177 /* : Array[MType] */;
172 long var178 /* : Int */;
173 val* var179 /* : nullable Object */;
174 long var181 /* : Int */;
175 val* var182 /* : nullable Object */;
176 val* var183 /* : Array[MType] */;
177 long var184 /* : Int */;
178 val* var185 /* : nullable Object */;
179 short int var187 /* : Bool */;
180 short int var188 /* : Bool */;
181 short int var189 /* : Bool */;
182 short int var_190 /* var : Bool */;
183 short int var191 /* : Bool */;
184 static val* varonce192;
185 val* var193 /* : String */;
186 char* var194 /* : NativeString */;
187 long var195 /* : Int */;
188 val* var196 /* : FlatString */;
189 short int var197 /* : Bool */;
190 val* var198 /* : MType */;
191 val* var199 /* : MType */;
192 short int var200 /* : Bool */;
193 int cltype201;
194 int idtype202;
195 const char* var_class_name;
196 static val* varonce204;
197 val* var205 /* : String */;
198 char* var206 /* : NativeString */;
199 long var207 /* : Int */;
200 val* var208 /* : FlatString */;
201 short int var209 /* : Bool */;
202 val* var210 /* : nullable CallSite */;
203 val* var_ikdef /* var ikdef: nullable CallSite */;
204 val* var211 /* : null */;
205 short int var212 /* : Bool */;
206 short int var213 /* : Bool */;
207 short int var215 /* : Bool */;
208 short int var217 /* : Bool */;
209 static val* varonce218;
210 val* var219 /* : String */;
211 char* var220 /* : NativeString */;
212 long var221 /* : Int */;
213 val* var222 /* : FlatString */;
214 static val* varonce223;
215 val* var224 /* : String */;
216 char* var225 /* : NativeString */;
217 long var226 /* : Int */;
218 val* var227 /* : FlatString */;
219 val* var228 /* : Array[Object] */;
220 long var229 /* : Int */;
221 val* var230 /* : NativeArray[Object] */;
222 val* var231 /* : String */;
223 static val* varonce233;
224 val* var234 /* : String */;
225 char* var235 /* : NativeString */;
226 long var236 /* : Int */;
227 val* var237 /* : FlatString */;
228 short int var238 /* : Bool */;
229 val* var239 /* : nullable CallSite */;
230 val* var_itemdef /* var itemdef: nullable CallSite */;
231 val* var240 /* : null */;
232 short int var241 /* : Bool */;
233 short int var242 /* : Bool */;
234 short int var244 /* : Bool */;
235 short int var246 /* : Bool */;
236 static val* varonce247;
237 val* var248 /* : String */;
238 char* var249 /* : NativeString */;
239 long var250 /* : Int */;
240 val* var251 /* : FlatString */;
241 static val* varonce252;
242 val* var253 /* : String */;
243 char* var254 /* : NativeString */;
244 long var255 /* : Int */;
245 val* var256 /* : FlatString */;
246 val* var257 /* : Array[Object] */;
247 long var258 /* : Int */;
248 val* var259 /* : NativeArray[Object] */;
249 val* var260 /* : String */;
250 static val* varonce262;
251 val* var263 /* : String */;
252 char* var264 /* : NativeString */;
253 long var265 /* : Int */;
254 val* var266 /* : FlatString */;
255 short int var267 /* : Bool */;
256 val* var268 /* : nullable CallSite */;
257 val* var_nextdef /* var nextdef: nullable CallSite */;
258 val* var269 /* : null */;
259 short int var270 /* : Bool */;
260 short int var271 /* : Bool */;
261 short int var273 /* : Bool */;
262 short int var275 /* : Bool */;
263 static val* varonce276;
264 val* var277 /* : String */;
265 char* var278 /* : NativeString */;
266 long var279 /* : Int */;
267 val* var280 /* : FlatString */;
268 static val* varonce281;
269 val* var282 /* : String */;
270 char* var283 /* : NativeString */;
271 long var284 /* : Int */;
272 val* var285 /* : FlatString */;
273 val* var286 /* : Array[Object] */;
274 long var287 /* : Int */;
275 val* var288 /* : NativeArray[Object] */;
276 val* var289 /* : String */;
277 static val* varonce291;
278 val* var292 /* : String */;
279 char* var293 /* : NativeString */;
280 long var294 /* : Int */;
281 val* var295 /* : FlatString */;
282 short int var296 /* : Bool */;
283 val* var297 /* : nullable CallSite */;
284 static val* varonce299;
285 val* var300 /* : String */;
286 char* var301 /* : NativeString */;
287 long var302 /* : Int */;
288 val* var303 /* : FlatString */;
289 short int var304 /* : Bool */;
290 val* var305 /* : nullable CallSite */;
291 val* var_keydef /* var keydef: nullable CallSite */;
292 val* var306 /* : null */;
293 short int var307 /* : Bool */;
294 short int var308 /* : Bool */;
295 short int var310 /* : Bool */;
296 short int var312 /* : Bool */;
297 static val* varonce313;
298 val* var314 /* : String */;
299 char* var315 /* : NativeString */;
300 long var316 /* : Int */;
301 val* var317 /* : FlatString */;
302 static val* varonce318;
303 val* var319 /* : String */;
304 char* var320 /* : NativeString */;
305 long var321 /* : Int */;
306 val* var322 /* : FlatString */;
307 val* var323 /* : Array[Object] */;
308 long var324 /* : Int */;
309 val* var325 /* : NativeArray[Object] */;
310 val* var326 /* : String */;
311 short int var328 /* : Bool */;
312 val* var329 /* : nullable Array[Variable] */;
313 val* var331 /* : nullable Array[Variable] */;
314 long var332 /* : Int */;
315 long var334 /* : Int */;
316 long var335 /* : Int */;
317 short int var336 /* : Bool */;
318 short int var338 /* : Bool */;
319 short int var_339 /* var : Bool */;
320 val* var340 /* : AExpr */;
321 val* var342 /* : AExpr */;
322 short int var343 /* : Bool */;
323 int cltype344;
324 int idtype345;
325 val* var346 /* : nullable Array[Variable] */;
326 val* var348 /* : nullable Array[Variable] */;
327 val* var349 /* : nullable Object */;
328 val* var_variable /* var variable: Variable */;
329 val* var350 /* : nullable MType */;
330 val* var352 /* : nullable MType */;
331 val* var_vtype /* var vtype: MType */;
332 val* var353 /* : AExpr */;
333 val* var355 /* : AExpr */;
334 short int var356 /* : Bool */;
335 int cltype357;
336 int idtype358;
337 static val* varonce359;
338 val* var360 /* : String */;
339 char* var361 /* : NativeString */;
340 long var362 /* : Int */;
341 val* var363 /* : FlatString */;
342 short int var364 /* : Bool */;
343 val* var365 /* : nullable CallSite */;
344 static val* varonce367;
345 val* var368 /* : String */;
346 char* var369 /* : NativeString */;
347 long var370 /* : Int */;
348 val* var371 /* : FlatString */;
349 short int var372 /* : Bool */;
350 val* var373 /* : nullable CallSite */;
351 static val* varonce375;
352 val* var376 /* : String */;
353 char* var377 /* : NativeString */;
354 long var378 /* : Int */;
355 val* var379 /* : FlatString */;
356 short int var380 /* : Bool */;
357 val* var381 /* : nullable CallSite */;
358 var_v = p0;
359 var_mtype = p1;
360 /* <var_mtype:MType> isa MNullType */
361 cltype = type_nit__MNullType.color;
362 idtype = type_nit__MNullType.id;
363 if(cltype >= var_mtype->type->table_size) {
364 var = 0;
365 } else {
366 var = var_mtype->type->type_table[cltype] == idtype;
367 }
368 if (var){
369 if (varonce) {
370 var1 = varonce;
371 } else {
372 var2 = "Type error: \'for\' cannot iterate over \'null\'";
373 var3 = 44;
374 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
375 var1 = var4;
376 varonce = var1;
377 }
378 {
379 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var1); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
380 }
381 goto RET_LABEL;
382 } else {
383 }
384 if (varonce5) {
385 var6 = varonce5;
386 } else {
387 var7 = "Object";
388 var8 = 6;
389 var9 = standard___standard__NativeString___to_s_with_length(var7, var8);
390 var6 = var9;
391 varonce5 = var6;
392 }
393 {
394 var10 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var6);
395 }
396 var_objcla = var10;
397 var11 = NULL;
398 if (var_objcla == NULL) {
399 var12 = 1; /* is null */
400 } else {
401 var12 = 0; /* arg is null but recv is not */
402 }
403 if (0) {
404 { /* Inline kernel#Object#== (var_objcla,var11) on <var_objcla:nullable MClass> */
405 var_other = var11;
406 {
407 { /* Inline kernel#Object#is_same_instance (var_objcla,var_other) on <var_objcla:nullable MClass(MClass)> */
408 var17 = var_objcla == var_other;
409 var15 = var17;
410 goto RET_LABEL16;
411 RET_LABEL16:(void)0;
412 }
413 }
414 var13 = var15;
415 goto RET_LABEL14;
416 RET_LABEL14:(void)0;
417 }
418 var12 = var13;
419 }
420 if (var12){
421 goto RET_LABEL;
422 } else {
423 }
424 if (varonce18) {
425 var19 = varonce18;
426 } else {
427 var20 = "iterator";
428 var21 = 8;
429 var22 = standard___standard__NativeString___to_s_with_length(var20, var21);
430 var19 = var22;
431 varonce18 = var19;
432 }
433 {
434 { /* Inline parser_nodes#AForExpr#n_expr (self) on <self:AForExpr> */
435 var25 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
436 if (unlikely(var25 == NULL)) {
437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
438 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738);
439 show_backtrace(1);
440 }
441 var23 = var25;
442 RET_LABEL24:(void)0;
443 }
444 }
445 /* <var23:AExpr> isa ASelfExpr */
446 cltype27 = type_nit__ASelfExpr.color;
447 idtype28 = type_nit__ASelfExpr.id;
448 if(cltype27 >= var23->type->table_size) {
449 var26 = 0;
450 } else {
451 var26 = var23->type->type_table[cltype27] == idtype28;
452 }
453 {
454 var29 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var19, var26);
455 }
456 var_itdef = var29;
457 var30 = NULL;
458 if (var_itdef == NULL) {
459 var31 = 1; /* is null */
460 } else {
461 var31 = 0; /* arg is null but recv is not */
462 }
463 if (0) {
464 { /* Inline kernel#Object#== (var_itdef,var30) on <var_itdef:nullable CallSite> */
465 var_other = var30;
466 {
467 { /* Inline kernel#Object#is_same_instance (var_itdef,var_other) on <var_itdef:nullable CallSite(CallSite)> */
468 var36 = var_itdef == var_other;
469 var34 = var36;
470 goto RET_LABEL35;
471 RET_LABEL35:(void)0;
472 }
473 }
474 var32 = var34;
475 goto RET_LABEL33;
476 RET_LABEL33:(void)0;
477 }
478 var31 = var32;
479 }
480 if (var31){
481 if (varonce37) {
482 var38 = varonce37;
483 } else {
484 var39 = "Type Error: \'for\' expects a type providing \'iterator\' method, got \'";
485 var40 = 67;
486 var41 = standard___standard__NativeString___to_s_with_length(var39, var40);
487 var38 = var41;
488 varonce37 = var38;
489 }
490 if (varonce42) {
491 var43 = varonce42;
492 } else {
493 var44 = "\'.";
494 var45 = 2;
495 var46 = standard___standard__NativeString___to_s_with_length(var44, var45);
496 var43 = var46;
497 varonce42 = var43;
498 }
499 var47 = NEW_standard__Array(&type_standard__Array__standard__Object);
500 { /* var47 = array_instance Array[Object] */
501 var48 = 3;
502 var49 = NEW_standard__NativeArray(var48, &type_standard__NativeArray__standard__Object);
503 ((struct instance_standard__NativeArray*)var49)->values[0] = (val*) var38;
504 ((struct instance_standard__NativeArray*)var49)->values[1] = (val*) var_mtype;
505 ((struct instance_standard__NativeArray*)var49)->values[2] = (val*) var43;
506 {
507 ((void (*)(val* self, val* p0, long p1))(var47->class->vft[COLOR_standard__array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
508 }
509 }
510 {
511 var50 = ((val* (*)(val* self))(var47->class->vft[COLOR_standard__string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
512 }
513 {
514 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var50); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
515 }
516 goto RET_LABEL;
517 } else {
518 }
519 {
520 { /* Inline typing#AForExpr#method_iterator= (self,var_itdef) on <self:AForExpr> */
521 self->attrs[COLOR_nit__typing__AForExpr___method_iterator].val = var_itdef; /* _method_iterator on <self:AForExpr> */
522 RET_LABEL51:(void)0;
523 }
524 }
525 {
526 { /* Inline typing#CallSite#msignature (var_itdef) on <var_itdef:nullable CallSite(CallSite)> */
527 var54 = var_itdef->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on <var_itdef:nullable CallSite(CallSite)> */
528 if (unlikely(var54 == NULL)) {
529 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
530 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494);
531 show_backtrace(1);
532 }
533 var52 = var54;
534 RET_LABEL53:(void)0;
535 }
536 }
537 {
538 { /* Inline model#MSignature#return_mtype (var52) on <var52:MSignature> */
539 var57 = var52->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var52:MSignature> */
540 var55 = var57;
541 RET_LABEL56:(void)0;
542 }
543 }
544 var_ittype = var55;
545 var58 = NULL;
546 if (var_ittype == NULL) {
547 var59 = 1; /* is null */
548 } else {
549 var59 = 0; /* arg is null but recv is not */
550 }
551 if (0) {
552 { /* Inline kernel#Object#== (var_ittype,var58) on <var_ittype:nullable MType> */
553 var_other = var58;
554 {
555 { /* Inline kernel#Object#is_same_instance (var_ittype,var_other) on <var_ittype:nullable MType(MType)> */
556 var64 = var_ittype == var_other;
557 var62 = var64;
558 goto RET_LABEL63;
559 RET_LABEL63:(void)0;
560 }
561 }
562 var60 = var62;
563 goto RET_LABEL61;
564 RET_LABEL61:(void)0;
565 }
566 var59 = var60;
567 }
568 if (var59){
569 if (varonce65) {
570 var66 = varonce65;
571 } else {
572 var67 = "Type Error: \'for\' expects method \'iterator\' to return an \'Iterator\' or \'MapIterator\' type\'.";
573 var68 = 91;
574 var69 = standard___standard__NativeString___to_s_with_length(var67, var68);
575 var66 = var69;
576 varonce65 = var66;
577 }
578 {
579 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var66); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
580 }
581 goto RET_LABEL;
582 } else {
583 }
584 if (varonce70) {
585 var71 = varonce70;
586 } else {
587 var72 = "Iterator";
588 var73 = 8;
589 var74 = standard___standard__NativeString___to_s_with_length(var72, var73);
590 var71 = var74;
591 varonce70 = var71;
592 }
593 {
594 var75 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, self, var71);
595 }
596 var_colit_cla = var75;
597 if (varonce76) {
598 var77 = varonce76;
599 } else {
600 var78 = "MapIterator";
601 var79 = 11;
602 var80 = standard___standard__NativeString___to_s_with_length(var78, var79);
603 var77 = var80;
604 varonce76 = var77;
605 }
606 {
607 var81 = nit__typing___nit__typing__TypeVisitor___try_get_mclass(var_v, self, var77);
608 }
609 var_mapit_cla = var81;
610 var82 = 0;
611 var_is_col = var82;
612 var83 = 0;
613 var_is_map = var83;
614 var85 = NULL;
615 if (var_colit_cla == NULL) {
616 var86 = 0; /* is null */
617 } else {
618 var86 = 1; /* arg is null and recv is not */
619 }
620 if (0) {
621 { /* Inline kernel#Object#!= (var_colit_cla,var85) on <var_colit_cla:nullable MClass> */
622 var_other89 = var85;
623 {
624 var90 = ((short int (*)(val* self, val* p0))(var_colit_cla->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_colit_cla, var_other89) /* == on <var_colit_cla:nullable MClass(MClass)>*/;
625 }
626 var91 = !var90;
627 var87 = var91;
628 goto RET_LABEL88;
629 RET_LABEL88:(void)0;
630 }
631 var86 = var87;
632 }
633 var_ = var86;
634 if (var86){
635 var92 = NEW_standard__Array(&type_standard__Array__nit__MType);
636 var93 = 1;
637 {
638 standard___standard__Array___with_capacity(var92, var93); /* Direct call array#Array#with_capacity on <var92:Array[MType]>*/
639 }
640 var_94 = var92;
641 {
642 { /* Inline model#MClass#mclass_type (var_objcla) on <var_objcla:nullable MClass(MClass)> */
643 var97 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_objcla:nullable MClass(MClass)> */
644 if (unlikely(var97 == NULL)) {
645 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
646 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
647 show_backtrace(1);
648 }
649 var95 = var97;
650 RET_LABEL96:(void)0;
651 }
652 }
653 {
654 var98 = nit___nit__MType___as_nullable(var95);
655 }
656 {
657 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_94, var98); /* Direct call array#AbstractArray#push on <var_94:Array[MType]>*/
658 }
659 {
660 var99 = nit___nit__MClass___get_mtype(var_colit_cla, var_94);
661 }
662 {
663 var100 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_ittype, var99);
664 }
665 var84 = var100;
666 } else {
667 var84 = var_;
668 }
669 if (var84){
670 {
671 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
672 var103 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
673 if (unlikely(var103 == NULL)) {
674 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
675 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
676 show_backtrace(1);
677 }
678 var101 = var103;
679 RET_LABEL102:(void)0;
680 }
681 }
682 {
683 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
684 var106 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
685 var104 = var106;
686 RET_LABEL105:(void)0;
687 }
688 }
689 {
690 var107 = nit___nit__MType___supertype_to(var_ittype, var101, var104, var_colit_cla);
691 }
692 var_coltype = var107;
693 {
694 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
695 var110 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
696 var108 = var110;
697 RET_LABEL109:(void)0;
698 }
699 }
700 var_variables = var108;
701 if (var_variables == NULL) {
702 PRINT_ERROR("Runtime error: %s", "Receiver is null");
703 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 974);
704 show_backtrace(1);
705 } else {
706 { /* Inline array#AbstractArrayRead#length (var_variables) on <var_variables:nullable Array[Variable]> */
707 if (unlikely(var_variables == NULL)) {
708 PRINT_ERROR("Runtime error: %s", "Receiver is null");
709 PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
710 show_backtrace(1);
711 }
712 var113 = var_variables->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_variables:nullable Array[Variable]> */
713 var111 = var113;
714 RET_LABEL112:(void)0;
715 }
716 }
717 var114 = 1;
718 {
719 { /* Inline kernel#Int#!= (var111,var114) on <var111:Int> */
720 var117 = var111 == var114;
721 var118 = !var117;
722 var115 = var118;
723 goto RET_LABEL116;
724 RET_LABEL116:(void)0;
725 }
726 }
727 if (var115){
728 if (varonce119) {
729 var120 = varonce119;
730 } else {
731 var121 = "Type Error: \'for\' expects only one variable when using \'Iterator\'.";
732 var122 = 66;
733 var123 = standard___standard__NativeString___to_s_with_length(var121, var122);
734 var120 = var123;
735 varonce119 = var120;
736 }
737 {
738 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var120); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
739 }
740 } else {
741 if (var_variables == NULL) {
742 PRINT_ERROR("Runtime error: %s", "Receiver is null");
743 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 977);
744 show_backtrace(1);
745 } else {
746 var124 = standard___standard__SequenceRead___Collection__first(var_variables);
747 }
748 {
749 var125 = ((val* (*)(val* self))(var_coltype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype) /* arguments on <var_coltype:MClassType>*/;
750 }
751 {
752 var126 = standard___standard__SequenceRead___Collection__first(var125);
753 }
754 {
755 { /* Inline typing#Variable#declared_type= (var124,var126) on <var124:nullable Object(Variable)> */
756 var124->attrs[COLOR_nit__typing__Variable___declared_type].val = var126; /* _declared_type on <var124:nullable Object(Variable)> */
757 RET_LABEL127:(void)0;
758 }
759 }
760 }
761 var128 = 1;
762 var_is_col = var128;
763 } else {
764 }
765 var130 = NULL;
766 if (var_mapit_cla == NULL) {
767 var131 = 0; /* is null */
768 } else {
769 var131 = 1; /* arg is null and recv is not */
770 }
771 if (0) {
772 { /* Inline kernel#Object#!= (var_mapit_cla,var130) on <var_mapit_cla:nullable MClass> */
773 var_other89 = var130;
774 {
775 var134 = ((short int (*)(val* self, val* p0))(var_mapit_cla->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mapit_cla, var_other89) /* == on <var_mapit_cla:nullable MClass(MClass)>*/;
776 }
777 var135 = !var134;
778 var132 = var135;
779 goto RET_LABEL133;
780 RET_LABEL133:(void)0;
781 }
782 var131 = var132;
783 }
784 var_136 = var131;
785 if (var131){
786 var137 = NEW_standard__Array(&type_standard__Array__nit__MType);
787 var138 = 2;
788 {
789 standard___standard__Array___with_capacity(var137, var138); /* Direct call array#Array#with_capacity on <var137:Array[MType]>*/
790 }
791 var_139 = var137;
792 {
793 { /* Inline model#MClass#mclass_type (var_objcla) on <var_objcla:nullable MClass(MClass)> */
794 var142 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_objcla:nullable MClass(MClass)> */
795 if (unlikely(var142 == NULL)) {
796 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
797 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
798 show_backtrace(1);
799 }
800 var140 = var142;
801 RET_LABEL141:(void)0;
802 }
803 }
804 {
805 var143 = nit___nit__MType___as_nullable(var140);
806 }
807 {
808 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_139, var143); /* Direct call array#AbstractArray#push on <var_139:Array[MType]>*/
809 }
810 {
811 { /* Inline model#MClass#mclass_type (var_objcla) on <var_objcla:nullable MClass(MClass)> */
812 var146 = var_objcla->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_objcla:nullable MClass(MClass)> */
813 if (unlikely(var146 == NULL)) {
814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
815 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
816 show_backtrace(1);
817 }
818 var144 = var146;
819 RET_LABEL145:(void)0;
820 }
821 }
822 {
823 var147 = nit___nit__MType___as_nullable(var144);
824 }
825 {
826 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_139, var147); /* Direct call array#AbstractArray#push on <var_139:Array[MType]>*/
827 }
828 {
829 var148 = nit___nit__MClass___get_mtype(var_mapit_cla, var_139);
830 }
831 {
832 var149 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_ittype, var148);
833 }
834 var129 = var149;
835 } else {
836 var129 = var_136;
837 }
838 if (var129){
839 {
840 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
841 var152 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
842 if (unlikely(var152 == NULL)) {
843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
844 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
845 show_backtrace(1);
846 }
847 var150 = var152;
848 RET_LABEL151:(void)0;
849 }
850 }
851 {
852 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
853 var155 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
854 var153 = var155;
855 RET_LABEL154:(void)0;
856 }
857 }
858 {
859 var156 = nit___nit__MType___supertype_to(var_ittype, var150, var153, var_mapit_cla);
860 }
861 var_coltype157 = var156;
862 {
863 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
864 var160 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
865 var158 = var160;
866 RET_LABEL159:(void)0;
867 }
868 }
869 var_variables161 = var158;
870 if (var_variables161 == NULL) {
871 PRINT_ERROR("Runtime error: %s", "Receiver is null");
872 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 986);
873 show_backtrace(1);
874 } else {
875 { /* Inline array#AbstractArrayRead#length (var_variables161) on <var_variables161:nullable Array[Variable]> */
876 if (unlikely(var_variables161 == NULL)) {
877 PRINT_ERROR("Runtime error: %s", "Receiver is null");
878 PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
879 show_backtrace(1);
880 }
881 var164 = var_variables161->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_variables161:nullable Array[Variable]> */
882 var162 = var164;
883 RET_LABEL163:(void)0;
884 }
885 }
886 var165 = 2;
887 {
888 { /* Inline kernel#Int#!= (var162,var165) on <var162:Int> */
889 var168 = var162 == var165;
890 var169 = !var168;
891 var166 = var169;
892 goto RET_LABEL167;
893 RET_LABEL167:(void)0;
894 }
895 }
896 if (var166){
897 if (varonce170) {
898 var171 = varonce170;
899 } else {
900 var172 = "Type Error: \'for\' expects two variables when using \'MapIterator\'.";
901 var173 = 65;
902 var174 = standard___standard__NativeString___to_s_with_length(var172, var173);
903 var171 = var174;
904 varonce170 = var171;
905 }
906 {
907 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var171); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
908 }
909 } else {
910 var175 = 0;
911 if (var_variables161 == NULL) {
912 PRINT_ERROR("Runtime error: %s", "Receiver is null");
913 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 989);
914 show_backtrace(1);
915 } else {
916 var176 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_variables161, var175);
917 }
918 {
919 var177 = ((val* (*)(val* self))(var_coltype157->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype157) /* arguments on <var_coltype157:MClassType>*/;
920 }
921 var178 = 0;
922 {
923 var179 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var177, var178);
924 }
925 {
926 { /* Inline typing#Variable#declared_type= (var176,var179) on <var176:nullable Object(Variable)> */
927 var176->attrs[COLOR_nit__typing__Variable___declared_type].val = var179; /* _declared_type on <var176:nullable Object(Variable)> */
928 RET_LABEL180:(void)0;
929 }
930 }
931 var181 = 1;
932 if (var_variables161 == NULL) {
933 PRINT_ERROR("Runtime error: %s", "Receiver is null");
934 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 990);
935 show_backtrace(1);
936 } else {
937 var182 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_variables161, var181);
938 }
939 {
940 var183 = ((val* (*)(val* self))(var_coltype157->class->vft[COLOR_nit__model__MClassType__arguments]))(var_coltype157) /* arguments on <var_coltype157:MClassType>*/;
941 }
942 var184 = 1;
943 {
944 var185 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var183, var184);
945 }
946 {
947 { /* Inline typing#Variable#declared_type= (var182,var185) on <var182:nullable Object(Variable)> */
948 var182->attrs[COLOR_nit__typing__Variable___declared_type].val = var185; /* _declared_type on <var182:nullable Object(Variable)> */
949 RET_LABEL186:(void)0;
950 }
951 }
952 }
953 var187 = 1;
954 var_is_map = var187;
955 } else {
956 }
957 var189 = !var_is_col;
958 var_190 = var189;
959 if (var189){
960 var191 = !var_is_map;
961 var188 = var191;
962 } else {
963 var188 = var_190;
964 }
965 if (var188){
966 if (varonce192) {
967 var193 = varonce192;
968 } else {
969 var194 = "Type Error: \'for\' expects method \'iterator\' to return an \'Iterator\' or \'MapIterator\' type\'.";
970 var195 = 91;
971 var196 = standard___standard__NativeString___to_s_with_length(var194, var195);
972 var193 = var196;
973 varonce192 = var193;
974 }
975 {
976 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var193); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
977 }
978 goto RET_LABEL;
979 } else {
980 }
981 {
982 var197 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
983 }
984 if (var197){
985 {
986 var198 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_mtype);
987 }
988 var_mtype = var198;
989 } else {
990 }
991 {
992 var199 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
993 }
994 var_mtype = var199;
995 /* <var_mtype:MType> isa MClassType */
996 cltype201 = type_nit__MClassType.color;
997 idtype202 = type_nit__MClassType.id;
998 if(cltype201 >= var_mtype->type->table_size) {
999 var200 = 0;
1000 } else {
1001 var200 = var_mtype->type->type_table[cltype201] == idtype202;
1002 }
1003 if (unlikely(!var200)) {
1004 var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name;
1005 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
1006 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1004);
1007 show_backtrace(1);
1008 }
1009 {
1010 { /* Inline typing#AForExpr#coltype= (self,var_mtype) on <self:AForExpr> */
1011 self->attrs[COLOR_nit__typing__AForExpr___coltype].val = var_mtype; /* _coltype on <self:AForExpr> */
1012 RET_LABEL203:(void)0;
1013 }
1014 }
1015 if (varonce204) {
1016 var205 = varonce204;
1017 } else {
1018 var206 = "is_ok";
1019 var207 = 5;
1020 var208 = standard___standard__NativeString___to_s_with_length(var206, var207);
1021 var205 = var208;
1022 varonce204 = var205;
1023 }
1024 var209 = 0;
1025 {
1026 var210 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var205, var209);
1027 }
1028 var_ikdef = var210;
1029 var211 = NULL;
1030 if (var_ikdef == NULL) {
1031 var212 = 1; /* is null */
1032 } else {
1033 var212 = 0; /* arg is null but recv is not */
1034 }
1035 if (0) {
1036 { /* Inline kernel#Object#== (var_ikdef,var211) on <var_ikdef:nullable CallSite> */
1037 var_other = var211;
1038 {
1039 { /* Inline kernel#Object#is_same_instance (var_ikdef,var_other) on <var_ikdef:nullable CallSite(CallSite)> */
1040 var217 = var_ikdef == var_other;
1041 var215 = var217;
1042 goto RET_LABEL216;
1043 RET_LABEL216:(void)0;
1044 }
1045 }
1046 var213 = var215;
1047 goto RET_LABEL214;
1048 RET_LABEL214:(void)0;
1049 }
1050 var212 = var213;
1051 }
1052 if (var212){
1053 if (varonce218) {
1054 var219 = varonce218;
1055 } else {
1056 var220 = "Type Error: \'for\' expects a method \'is_ok\' in \'Iterator\' type ";
1057 var221 = 62;
1058 var222 = standard___standard__NativeString___to_s_with_length(var220, var221);
1059 var219 = var222;
1060 varonce218 = var219;
1061 }
1062 if (varonce223) {
1063 var224 = varonce223;
1064 } else {
1065 var225 = ".";
1066 var226 = 1;
1067 var227 = standard___standard__NativeString___to_s_with_length(var225, var226);
1068 var224 = var227;
1069 varonce223 = var224;
1070 }
1071 var228 = NEW_standard__Array(&type_standard__Array__standard__Object);
1072 { /* var228 = array_instance Array[Object] */
1073 var229 = 3;
1074 var230 = NEW_standard__NativeArray(var229, &type_standard__NativeArray__standard__Object);
1075 ((struct instance_standard__NativeArray*)var230)->values[0] = (val*) var219;
1076 ((struct instance_standard__NativeArray*)var230)->values[1] = (val*) var_ittype;
1077 ((struct instance_standard__NativeArray*)var230)->values[2] = (val*) var224;
1078 {
1079 ((void (*)(val* self, val* p0, long p1))(var228->class->vft[COLOR_standard__array__Array__with_native]))(var228, var230, var229) /* with_native on <var228:Array[Object]>*/;
1080 }
1081 }
1082 {
1083 var231 = ((val* (*)(val* self))(var228->class->vft[COLOR_standard__string__Object__to_s]))(var228) /* to_s on <var228:Array[Object]>*/;
1084 }
1085 {
1086 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var231); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1087 }
1088 goto RET_LABEL;
1089 } else {
1090 }
1091 {
1092 { /* Inline typing#AForExpr#method_is_ok= (self,var_ikdef) on <self:AForExpr> */
1093 self->attrs[COLOR_nit__typing__AForExpr___method_is_ok].val = var_ikdef; /* _method_is_ok on <self:AForExpr> */
1094 RET_LABEL232:(void)0;
1095 }
1096 }
1097 if (varonce233) {
1098 var234 = varonce233;
1099 } else {
1100 var235 = "item";
1101 var236 = 4;
1102 var237 = standard___standard__NativeString___to_s_with_length(var235, var236);
1103 var234 = var237;
1104 varonce233 = var234;
1105 }
1106 var238 = 0;
1107 {
1108 var239 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var234, var238);
1109 }
1110 var_itemdef = var239;
1111 var240 = NULL;
1112 if (var_itemdef == NULL) {
1113 var241 = 1; /* is null */
1114 } else {
1115 var241 = 0; /* arg is null but recv is not */
1116 }
1117 if (0) {
1118 { /* Inline kernel#Object#== (var_itemdef,var240) on <var_itemdef:nullable CallSite> */
1119 var_other = var240;
1120 {
1121 { /* Inline kernel#Object#is_same_instance (var_itemdef,var_other) on <var_itemdef:nullable CallSite(CallSite)> */
1122 var246 = var_itemdef == var_other;
1123 var244 = var246;
1124 goto RET_LABEL245;
1125 RET_LABEL245:(void)0;
1126 }
1127 }
1128 var242 = var244;
1129 goto RET_LABEL243;
1130 RET_LABEL243:(void)0;
1131 }
1132 var241 = var242;
1133 }
1134 if (var241){
1135 if (varonce247) {
1136 var248 = varonce247;
1137 } else {
1138 var249 = "Type Error: \'for\' expects a method \'item\' in \'Iterator\' type ";
1139 var250 = 61;
1140 var251 = standard___standard__NativeString___to_s_with_length(var249, var250);
1141 var248 = var251;
1142 varonce247 = var248;
1143 }
1144 if (varonce252) {
1145 var253 = varonce252;
1146 } else {
1147 var254 = ".";
1148 var255 = 1;
1149 var256 = standard___standard__NativeString___to_s_with_length(var254, var255);
1150 var253 = var256;
1151 varonce252 = var253;
1152 }
1153 var257 = NEW_standard__Array(&type_standard__Array__standard__Object);
1154 { /* var257 = array_instance Array[Object] */
1155 var258 = 3;
1156 var259 = NEW_standard__NativeArray(var258, &type_standard__NativeArray__standard__Object);
1157 ((struct instance_standard__NativeArray*)var259)->values[0] = (val*) var248;
1158 ((struct instance_standard__NativeArray*)var259)->values[1] = (val*) var_ittype;
1159 ((struct instance_standard__NativeArray*)var259)->values[2] = (val*) var253;
1160 {
1161 ((void (*)(val* self, val* p0, long p1))(var257->class->vft[COLOR_standard__array__Array__with_native]))(var257, var259, var258) /* with_native on <var257:Array[Object]>*/;
1162 }
1163 }
1164 {
1165 var260 = ((val* (*)(val* self))(var257->class->vft[COLOR_standard__string__Object__to_s]))(var257) /* to_s on <var257:Array[Object]>*/;
1166 }
1167 {
1168 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var260); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1169 }
1170 goto RET_LABEL;
1171 } else {
1172 }
1173 {
1174 { /* Inline typing#AForExpr#method_item= (self,var_itemdef) on <self:AForExpr> */
1175 self->attrs[COLOR_nit__typing__AForExpr___method_item].val = var_itemdef; /* _method_item on <self:AForExpr> */
1176 RET_LABEL261:(void)0;
1177 }
1178 }
1179 if (varonce262) {
1180 var263 = varonce262;
1181 } else {
1182 var264 = "next";
1183 var265 = 4;
1184 var266 = standard___standard__NativeString___to_s_with_length(var264, var265);
1185 var263 = var266;
1186 varonce262 = var263;
1187 }
1188 var267 = 0;
1189 {
1190 var268 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var263, var267);
1191 }
1192 var_nextdef = var268;
1193 var269 = NULL;
1194 if (var_nextdef == NULL) {
1195 var270 = 1; /* is null */
1196 } else {
1197 var270 = 0; /* arg is null but recv is not */
1198 }
1199 if (0) {
1200 { /* Inline kernel#Object#== (var_nextdef,var269) on <var_nextdef:nullable CallSite> */
1201 var_other = var269;
1202 {
1203 { /* Inline kernel#Object#is_same_instance (var_nextdef,var_other) on <var_nextdef:nullable CallSite(CallSite)> */
1204 var275 = var_nextdef == var_other;
1205 var273 = var275;
1206 goto RET_LABEL274;
1207 RET_LABEL274:(void)0;
1208 }
1209 }
1210 var271 = var273;
1211 goto RET_LABEL272;
1212 RET_LABEL272:(void)0;
1213 }
1214 var270 = var271;
1215 }
1216 if (var270){
1217 if (varonce276) {
1218 var277 = varonce276;
1219 } else {
1220 var278 = "Type Error: \'for\' expects a method \'next\' in \'Iterator\' type ";
1221 var279 = 61;
1222 var280 = standard___standard__NativeString___to_s_with_length(var278, var279);
1223 var277 = var280;
1224 varonce276 = var277;
1225 }
1226 if (varonce281) {
1227 var282 = varonce281;
1228 } else {
1229 var283 = ".";
1230 var284 = 1;
1231 var285 = standard___standard__NativeString___to_s_with_length(var283, var284);
1232 var282 = var285;
1233 varonce281 = var282;
1234 }
1235 var286 = NEW_standard__Array(&type_standard__Array__standard__Object);
1236 { /* var286 = array_instance Array[Object] */
1237 var287 = 3;
1238 var288 = NEW_standard__NativeArray(var287, &type_standard__NativeArray__standard__Object);
1239 ((struct instance_standard__NativeArray*)var288)->values[0] = (val*) var277;
1240 ((struct instance_standard__NativeArray*)var288)->values[1] = (val*) var_ittype;
1241 ((struct instance_standard__NativeArray*)var288)->values[2] = (val*) var282;
1242 {
1243 ((void (*)(val* self, val* p0, long p1))(var286->class->vft[COLOR_standard__array__Array__with_native]))(var286, var288, var287) /* with_native on <var286:Array[Object]>*/;
1244 }
1245 }
1246 {
1247 var289 = ((val* (*)(val* self))(var286->class->vft[COLOR_standard__string__Object__to_s]))(var286) /* to_s on <var286:Array[Object]>*/;
1248 }
1249 {
1250 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var289); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1251 }
1252 goto RET_LABEL;
1253 } else {
1254 }
1255 {
1256 { /* Inline typing#AForExpr#method_next= (self,var_nextdef) on <self:AForExpr> */
1257 self->attrs[COLOR_nit__typing__AForExpr___method_next].val = var_nextdef; /* _method_next on <self:AForExpr> */
1258 RET_LABEL290:(void)0;
1259 }
1260 }
1261 if (varonce291) {
1262 var292 = varonce291;
1263 } else {
1264 var293 = "finish";
1265 var294 = 6;
1266 var295 = standard___standard__NativeString___to_s_with_length(var293, var294);
1267 var292 = var295;
1268 varonce291 = var292;
1269 }
1270 var296 = 0;
1271 {
1272 var297 = nit__typing___nit__typing__TypeVisitor___try_get_method(var_v, self, var_ittype, var292, var296);
1273 }
1274 {
1275 { /* Inline typing#AForExpr#method_finish= (self,var297) on <self:AForExpr> */
1276 self->attrs[COLOR_nit__typing__AForExpr___method_finish].val = var297; /* _method_finish on <self:AForExpr> */
1277 RET_LABEL298:(void)0;
1278 }
1279 }
1280 if (var_is_map){
1281 if (varonce299) {
1282 var300 = varonce299;
1283 } else {
1284 var301 = "key";
1285 var302 = 3;
1286 var303 = standard___standard__NativeString___to_s_with_length(var301, var302);
1287 var300 = var303;
1288 varonce299 = var300;
1289 }
1290 var304 = 0;
1291 {
1292 var305 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_ittype, var300, var304);
1293 }
1294 var_keydef = var305;
1295 var306 = NULL;
1296 if (var_keydef == NULL) {
1297 var307 = 1; /* is null */
1298 } else {
1299 var307 = 0; /* arg is null but recv is not */
1300 }
1301 if (0) {
1302 { /* Inline kernel#Object#== (var_keydef,var306) on <var_keydef:nullable CallSite> */
1303 var_other = var306;
1304 {
1305 { /* Inline kernel#Object#is_same_instance (var_keydef,var_other) on <var_keydef:nullable CallSite(CallSite)> */
1306 var312 = var_keydef == var_other;
1307 var310 = var312;
1308 goto RET_LABEL311;
1309 RET_LABEL311:(void)0;
1310 }
1311 }
1312 var308 = var310;
1313 goto RET_LABEL309;
1314 RET_LABEL309:(void)0;
1315 }
1316 var307 = var308;
1317 }
1318 if (var307){
1319 if (varonce313) {
1320 var314 = varonce313;
1321 } else {
1322 var315 = "Type Error: \'for\' expects a method \'key\' in \'Iterator\' type ";
1323 var316 = 60;
1324 var317 = standard___standard__NativeString___to_s_with_length(var315, var316);
1325 var314 = var317;
1326 varonce313 = var314;
1327 }
1328 if (varonce318) {
1329 var319 = varonce318;
1330 } else {
1331 var320 = ".";
1332 var321 = 1;
1333 var322 = standard___standard__NativeString___to_s_with_length(var320, var321);
1334 var319 = var322;
1335 varonce318 = var319;
1336 }
1337 var323 = NEW_standard__Array(&type_standard__Array__standard__Object);
1338 { /* var323 = array_instance Array[Object] */
1339 var324 = 3;
1340 var325 = NEW_standard__NativeArray(var324, &type_standard__NativeArray__standard__Object);
1341 ((struct instance_standard__NativeArray*)var325)->values[0] = (val*) var314;
1342 ((struct instance_standard__NativeArray*)var325)->values[1] = (val*) var_ittype;
1343 ((struct instance_standard__NativeArray*)var325)->values[2] = (val*) var319;
1344 {
1345 ((void (*)(val* self, val* p0, long p1))(var323->class->vft[COLOR_standard__array__Array__with_native]))(var323, var325, var324) /* with_native on <var323:Array[Object]>*/;
1346 }
1347 }
1348 {
1349 var326 = ((val* (*)(val* self))(var323->class->vft[COLOR_standard__string__Object__to_s]))(var323) /* to_s on <var323:Array[Object]>*/;
1350 }
1351 {
1352 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var326); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1353 }
1354 goto RET_LABEL;
1355 } else {
1356 }
1357 {
1358 { /* Inline typing#AForExpr#method_key= (self,var_keydef) on <self:AForExpr> */
1359 self->attrs[COLOR_nit__typing__AForExpr___method_key].val = var_keydef; /* _method_key on <self:AForExpr> */
1360 RET_LABEL327:(void)0;
1361 }
1362 }
1363 } else {
1364 }
1365 {
1366 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1367 var331 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1368 var329 = var331;
1369 RET_LABEL330:(void)0;
1370 }
1371 }
1372 if (var329 == NULL) {
1373 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1374 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1039);
1375 show_backtrace(1);
1376 } else {
1377 { /* Inline array#AbstractArrayRead#length (var329) on <var329:nullable Array[Variable]> */
1378 if (unlikely(var329 == NULL)) {
1379 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1380 PRINT_ERROR(" (%s:%d)\n", FILE_standard__array, 24);
1381 show_backtrace(1);
1382 }
1383 var334 = var329->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var329:nullable Array[Variable]> */
1384 var332 = var334;
1385 RET_LABEL333:(void)0;
1386 }
1387 }
1388 var335 = 1;
1389 {
1390 { /* Inline kernel#Int#== (var332,var335) on <var332:Int> */
1391 var338 = var332 == var335;
1392 var336 = var338;
1393 goto RET_LABEL337;
1394 RET_LABEL337:(void)0;
1395 }
1396 }
1397 var_339 = var336;
1398 if (var336){
1399 {
1400 { /* Inline parser_nodes#AForExpr#n_expr (self) on <self:AForExpr> */
1401 var342 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
1402 if (unlikely(var342 == NULL)) {
1403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1404 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738);
1405 show_backtrace(1);
1406 }
1407 var340 = var342;
1408 RET_LABEL341:(void)0;
1409 }
1410 }
1411 /* <var340:AExpr> isa ARangeExpr */
1412 cltype344 = type_nit__ARangeExpr.color;
1413 idtype345 = type_nit__ARangeExpr.id;
1414 if(cltype344 >= var340->type->table_size) {
1415 var343 = 0;
1416 } else {
1417 var343 = var340->type->type_table[cltype344] == idtype345;
1418 }
1419 var328 = var343;
1420 } else {
1421 var328 = var_339;
1422 }
1423 if (var328){
1424 {
1425 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1426 var348 = self->attrs[COLOR_nit__scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1427 var346 = var348;
1428 RET_LABEL347:(void)0;
1429 }
1430 }
1431 if (var346 == NULL) {
1432 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1433 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1040);
1434 show_backtrace(1);
1435 } else {
1436 var349 = standard___standard__SequenceRead___Collection__first(var346);
1437 }
1438 var_variable = var349;
1439 {
1440 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:Variable> */
1441 var352 = var_variable->attrs[COLOR_nit__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
1442 var350 = var352;
1443 RET_LABEL351:(void)0;
1444 }
1445 }
1446 if (unlikely(var350 == NULL)) {
1447 PRINT_ERROR("Runtime error: %s", "Cast failed");
1448 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1041);
1449 show_backtrace(1);
1450 }
1451 var_vtype = var350;
1452 {
1453 { /* Inline parser_nodes#AForExpr#n_expr (self) on <self:AForExpr> */
1454 var355 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
1455 if (unlikely(var355 == NULL)) {
1456 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1457 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738);
1458 show_backtrace(1);
1459 }
1460 var353 = var355;
1461 RET_LABEL354:(void)0;
1462 }
1463 }
1464 /* <var353:AExpr> isa AOrangeExpr */
1465 cltype357 = type_nit__AOrangeExpr.color;
1466 idtype358 = type_nit__AOrangeExpr.id;
1467 if(cltype357 >= var353->type->table_size) {
1468 var356 = 0;
1469 } else {
1470 var356 = var353->type->type_table[cltype357] == idtype358;
1471 }
1472 if (var356){
1473 if (varonce359) {
1474 var360 = varonce359;
1475 } else {
1476 var361 = "<";
1477 var362 = 1;
1478 var363 = standard___standard__NativeString___to_s_with_length(var361, var362);
1479 var360 = var363;
1480 varonce359 = var360;
1481 }
1482 var364 = 0;
1483 {
1484 var365 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var360, var364);
1485 }
1486 {
1487 { /* Inline typing#AForExpr#method_lt= (self,var365) on <self:AForExpr> */
1488 self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = var365; /* _method_lt on <self:AForExpr> */
1489 RET_LABEL366:(void)0;
1490 }
1491 }
1492 } else {
1493 if (varonce367) {
1494 var368 = varonce367;
1495 } else {
1496 var369 = "<=";
1497 var370 = 2;
1498 var371 = standard___standard__NativeString___to_s_with_length(var369, var370);
1499 var368 = var371;
1500 varonce367 = var368;
1501 }
1502 var372 = 0;
1503 {
1504 var373 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var368, var372);
1505 }
1506 {
1507 { /* Inline typing#AForExpr#method_lt= (self,var373) on <self:AForExpr> */
1508 self->attrs[COLOR_nit__typing__AForExpr___method_lt].val = var373; /* _method_lt on <self:AForExpr> */
1509 RET_LABEL374:(void)0;
1510 }
1511 }
1512 }
1513 if (varonce375) {
1514 var376 = varonce375;
1515 } else {
1516 var377 = "successor";
1517 var378 = 9;
1518 var379 = standard___standard__NativeString___to_s_with_length(var377, var378);
1519 var376 = var379;
1520 varonce375 = var376;
1521 }
1522 var380 = 0;
1523 {
1524 var381 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_vtype, var376, var380);
1525 }
1526 {
1527 { /* Inline typing#AForExpr#method_successor= (self,var381) on <self:AForExpr> */
1528 self->attrs[COLOR_nit__typing__AForExpr___method_successor].val = var381; /* _method_successor on <self:AForExpr> */
1529 RET_LABEL382:(void)0;
1530 }
1531 }
1532 } else {
1533 }
1534 RET_LABEL:;
1535 }
1536 /* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */
1537 void nit__typing___AForExpr___AExpr__accept_typing(val* self, val* p0) {
1538 val* var_v /* var v: TypeVisitor */;
1539 val* var /* : AExpr */;
1540 val* var2 /* : AExpr */;
1541 val* var3 /* : nullable MType */;
1542 val* var_mtype /* var mtype: nullable MType */;
1543 val* var4 /* : null */;
1544 short int var5 /* : Bool */;
1545 short int var6 /* : Bool */;
1546 val* var_other /* var other: nullable Object */;
1547 short int var8 /* : Bool */;
1548 short int var10 /* : Bool */;
1549 val* var11 /* : nullable AExpr */;
1550 val* var13 /* : nullable AExpr */;
1551 val* var14 /* : nullable AExpr */;
1552 val* var16 /* : nullable AExpr */;
1553 val* var17 /* : nullable MType */;
1554 short int var19 /* : Bool */;
1555 var_v = p0;
1556 {
1557 { /* Inline parser_nodes#AForExpr#n_expr (self) on <self:AForExpr> */
1558 var2 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_expr].val; /* _n_expr on <self:AForExpr> */
1559 if (unlikely(var2 == NULL)) {
1560 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1561 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1738);
1562 show_backtrace(1);
1563 }
1564 var = var2;
1565 RET_LABEL1:(void)0;
1566 }
1567 }
1568 {
1569 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
1570 }
1571 var_mtype = var3;
1572 var4 = NULL;
1573 if (var_mtype == NULL) {
1574 var5 = 1; /* is null */
1575 } else {
1576 var5 = 0; /* arg is null but recv is not */
1577 }
1578 if (0) {
1579 { /* Inline kernel#Object#== (var_mtype,var4) on <var_mtype:nullable MType> */
1580 var_other = var4;
1581 {
1582 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
1583 var10 = var_mtype == var_other;
1584 var8 = var10;
1585 goto RET_LABEL9;
1586 RET_LABEL9:(void)0;
1587 }
1588 }
1589 var6 = var8;
1590 goto RET_LABEL7;
1591 RET_LABEL7:(void)0;
1592 }
1593 var5 = var6;
1594 }
1595 if (var5){
1596 goto RET_LABEL;
1597 } else {
1598 }
1599 {
1600 nit__typing___AForExpr___do_type_iterator(self, var_v, var_mtype); /* Direct call typing#AForExpr#do_type_iterator on <self:AForExpr>*/
1601 }
1602 {
1603 { /* Inline parser_nodes#AForExpr#n_block (self) on <self:AForExpr> */
1604 var13 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on <self:AForExpr> */
1605 var11 = var13;
1606 RET_LABEL12:(void)0;
1607 }
1608 }
1609 {
1610 nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var11); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
1611 }
1612 {
1613 { /* Inline parser_nodes#AForExpr#n_block (self) on <self:AForExpr> */
1614 var16 = self->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on <self:AForExpr> */
1615 var14 = var16;
1616 RET_LABEL15:(void)0;
1617 }
1618 }
1619 if (var14 == NULL) {
1620 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1621 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1061);
1622 show_backtrace(1);
1623 } else {
1624 var17 = ((val* (*)(val* self))(var14->class->vft[COLOR_nit__typing__AExpr__mtype]))(var14) /* mtype on <var14:nullable AExpr>*/;
1625 }
1626 {
1627 { /* Inline typing#AExpr#mtype= (self,var17) on <self:AForExpr> */
1628 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var17; /* _mtype on <self:AForExpr> */
1629 RET_LABEL18:(void)0;
1630 }
1631 }
1632 var19 = 1;
1633 {
1634 { /* Inline typing#AExpr#is_typed= (self,var19) on <self:AForExpr> */
1635 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var19; /* _is_typed on <self:AForExpr> */
1636 RET_LABEL20:(void)0;
1637 }
1638 }
1639 RET_LABEL:;
1640 }
1641 /* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */
1642 void nit__typing___AAssertExpr___AExpr__accept_typing(val* self, val* p0) {
1643 val* var_v /* var v: TypeVisitor */;
1644 val* var /* : AExpr */;
1645 val* var2 /* : AExpr */;
1646 val* var3 /* : nullable MType */;
1647 val* var4 /* : nullable AExpr */;
1648 val* var6 /* : nullable AExpr */;
1649 short int var7 /* : Bool */;
1650 var_v = p0;
1651 {
1652 { /* Inline parser_nodes#AAssertExpr#n_expr (self) on <self:AAssertExpr> */
1653 var2 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_expr].val; /* _n_expr on <self:AAssertExpr> */
1654 if (unlikely(var2 == NULL)) {
1655 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1656 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1758);
1657 show_backtrace(1);
1658 }
1659 var = var2;
1660 RET_LABEL1:(void)0;
1661 }
1662 }
1663 {
1664 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var);
1665 }
1666 {
1667 { /* Inline parser_nodes#AAssertExpr#n_else (self) on <self:AAssertExpr> */
1668 var6 = self->attrs[COLOR_nit__parser_nodes__AAssertExpr___n_else].val; /* _n_else on <self:AAssertExpr> */
1669 var4 = var6;
1670 RET_LABEL5:(void)0;
1671 }
1672 }
1673 {
1674 nit__typing___nit__typing__TypeVisitor___visit_stmt(var_v, var4); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
1675 }
1676 var7 = 1;
1677 {
1678 { /* Inline typing#AExpr#is_typed= (self,var7) on <self:AAssertExpr> */
1679 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var7; /* _is_typed on <self:AAssertExpr> */
1680 RET_LABEL8:(void)0;
1681 }
1682 }
1683 RET_LABEL:;
1684 }
1685 /* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */
1686 void nit__typing___AOrExpr___AExpr__accept_typing(val* self, val* p0) {
1687 val* var_v /* var v: TypeVisitor */;
1688 val* var /* : AExpr */;
1689 val* var2 /* : AExpr */;
1690 val* var3 /* : nullable MType */;
1691 val* var4 /* : AExpr */;
1692 val* var6 /* : AExpr */;
1693 val* var7 /* : nullable MType */;
1694 val* var8 /* : nullable MType */;
1695 var_v = p0;
1696 {
1697 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AOrExpr> */
1698 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AOrExpr> */
1699 if (unlikely(var2 == NULL)) {
1700 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1701 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
1702 show_backtrace(1);
1703 }
1704 var = var2;
1705 RET_LABEL1:(void)0;
1706 }
1707 }
1708 {
1709 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var);
1710 }
1711 {
1712 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AOrExpr> */
1713 var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AOrExpr> */
1714 if (unlikely(var6 == NULL)) {
1715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
1716 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
1717 show_backtrace(1);
1718 }
1719 var4 = var6;
1720 RET_LABEL5:(void)0;
1721 }
1722 }
1723 {
1724 var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4);
1725 }
1726 {
1727 var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
1728 }
1729 {
1730 { /* Inline typing#AExpr#mtype= (self,var8) on <self:AOrExpr> */
1731 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on <self:AOrExpr> */
1732 RET_LABEL9:(void)0;
1733 }
1734 }
1735 RET_LABEL:;
1736 }
1737 /* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */
1738 void nit__typing___AImpliesExpr___AExpr__accept_typing(val* self, val* p0) {
1739 val* var_v /* var v: TypeVisitor */;
1740 val* var /* : AExpr */;
1741 val* var2 /* : AExpr */;
1742 val* var3 /* : nullable MType */;
1743 val* var4 /* : AExpr */;
1744 val* var6 /* : AExpr */;
1745 val* var7 /* : nullable MType */;
1746 val* var8 /* : nullable MType */;
1747 var_v = p0;
1748 {
1749 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AImpliesExpr> */
1750 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AImpliesExpr> */
1751 if (unlikely(var2 == NULL)) {
1752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1753 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
1754 show_backtrace(1);
1755 }
1756 var = var2;
1757 RET_LABEL1:(void)0;
1758 }
1759 }
1760 {
1761 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var);
1762 }
1763 {
1764 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AImpliesExpr> */
1765 var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AImpliesExpr> */
1766 if (unlikely(var6 == NULL)) {
1767 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
1768 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
1769 show_backtrace(1);
1770 }
1771 var4 = var6;
1772 RET_LABEL5:(void)0;
1773 }
1774 }
1775 {
1776 var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4);
1777 }
1778 {
1779 var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
1780 }
1781 {
1782 { /* Inline typing#AExpr#mtype= (self,var8) on <self:AImpliesExpr> */
1783 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on <self:AImpliesExpr> */
1784 RET_LABEL9:(void)0;
1785 }
1786 }
1787 RET_LABEL:;
1788 }
1789 /* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */
1790 void nit__typing___AAndExpr___AExpr__accept_typing(val* self, val* p0) {
1791 val* var_v /* var v: TypeVisitor */;
1792 val* var /* : AExpr */;
1793 val* var2 /* : AExpr */;
1794 val* var3 /* : nullable MType */;
1795 val* var4 /* : AExpr */;
1796 val* var6 /* : AExpr */;
1797 val* var7 /* : nullable MType */;
1798 val* var8 /* : nullable MType */;
1799 var_v = p0;
1800 {
1801 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AAndExpr> */
1802 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AAndExpr> */
1803 if (unlikely(var2 == NULL)) {
1804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1805 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
1806 show_backtrace(1);
1807 }
1808 var = var2;
1809 RET_LABEL1:(void)0;
1810 }
1811 }
1812 {
1813 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var);
1814 }
1815 {
1816 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AAndExpr> */
1817 var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AAndExpr> */
1818 if (unlikely(var6 == NULL)) {
1819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
1820 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
1821 show_backtrace(1);
1822 }
1823 var4 = var6;
1824 RET_LABEL5:(void)0;
1825 }
1826 }
1827 {
1828 var7 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var4);
1829 }
1830 {
1831 var8 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
1832 }
1833 {
1834 { /* Inline typing#AExpr#mtype= (self,var8) on <self:AAndExpr> */
1835 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var8; /* _mtype on <self:AAndExpr> */
1836 RET_LABEL9:(void)0;
1837 }
1838 }
1839 RET_LABEL:;
1840 }
1841 /* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */
1842 void nit__typing___ANotExpr___AExpr__accept_typing(val* self, val* p0) {
1843 val* var_v /* var v: TypeVisitor */;
1844 val* var /* : AExpr */;
1845 val* var2 /* : AExpr */;
1846 val* var3 /* : nullable MType */;
1847 val* var4 /* : nullable MType */;
1848 var_v = p0;
1849 {
1850 { /* Inline parser_nodes#ANotExpr#n_expr (self) on <self:ANotExpr> */
1851 var2 = self->attrs[COLOR_nit__parser_nodes__ANotExpr___n_expr].val; /* _n_expr on <self:ANotExpr> */
1852 if (unlikely(var2 == NULL)) {
1853 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1854 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1857);
1855 show_backtrace(1);
1856 }
1857 var = var2;
1858 RET_LABEL1:(void)0;
1859 }
1860 }
1861 {
1862 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr_bool(var_v, var);
1863 }
1864 {
1865 var4 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
1866 }
1867 {
1868 { /* Inline typing#AExpr#mtype= (self,var4) on <self:ANotExpr> */
1869 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var4; /* _mtype on <self:ANotExpr> */
1870 RET_LABEL5:(void)0;
1871 }
1872 }
1873 RET_LABEL:;
1874 }
1875 /* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */
1876 void nit__typing___AOrElseExpr___AExpr__accept_typing(val* self, val* p0) {
1877 val* var_v /* var v: TypeVisitor */;
1878 val* var /* : AExpr */;
1879 val* var2 /* : AExpr */;
1880 val* var3 /* : nullable MType */;
1881 val* var_t1 /* var t1: nullable MType */;
1882 val* var4 /* : AExpr */;
1883 val* var6 /* : AExpr */;
1884 val* var7 /* : nullable MType */;
1885 val* var_t2 /* var t2: nullable MType */;
1886 short int var8 /* : Bool */;
1887 val* var9 /* : null */;
1888 short int var10 /* : Bool */;
1889 short int var11 /* : Bool */;
1890 val* var_other /* var other: nullable Object */;
1891 short int var13 /* : Bool */;
1892 short int var15 /* : Bool */;
1893 short int var_ /* var : Bool */;
1894 val* var16 /* : null */;
1895 short int var17 /* : Bool */;
1896 short int var18 /* : Bool */;
1897 short int var20 /* : Bool */;
1898 short int var22 /* : Bool */;
1899 val* var23 /* : MType */;
1900 val* var24 /* : Array[MType] */;
1901 long var25 /* : Int */;
1902 val* var_26 /* var : Array[MType] */;
1903 val* var27 /* : nullable MType */;
1904 val* var_t /* var t: nullable MType */;
1905 val* var28 /* : null */;
1906 short int var29 /* : Bool */;
1907 short int var30 /* : Bool */;
1908 short int var32 /* : Bool */;
1909 short int var34 /* : Bool */;
1910 val* var35 /* : MModule */;
1911 val* var37 /* : MModule */;
1912 val* var38 /* : MClassType */;
1913 short int var39 /* : Bool */;
1914 int cltype;
1915 int idtype;
1916 val* var40 /* : MType */;
1917 var_v = p0;
1918 {
1919 { /* Inline parser_nodes#ABinBoolExpr#n_expr (self) on <self:AOrElseExpr> */
1920 var2 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr].val; /* _n_expr on <self:AOrElseExpr> */
1921 if (unlikely(var2 == NULL)) {
1922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1923 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1823);
1924 show_backtrace(1);
1925 }
1926 var = var2;
1927 RET_LABEL1:(void)0;
1928 }
1929 }
1930 {
1931 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
1932 }
1933 var_t1 = var3;
1934 {
1935 { /* Inline parser_nodes#ABinBoolExpr#n_expr2 (self) on <self:AOrElseExpr> */
1936 var6 = self->attrs[COLOR_nit__parser_nodes__ABinBoolExpr___n_expr2].val; /* _n_expr2 on <self:AOrElseExpr> */
1937 if (unlikely(var6 == NULL)) {
1938 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
1939 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1826);
1940 show_backtrace(1);
1941 }
1942 var4 = var6;
1943 RET_LABEL5:(void)0;
1944 }
1945 }
1946 {
1947 var7 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var4);
1948 }
1949 var_t2 = var7;
1950 var9 = NULL;
1951 if (var_t1 == NULL) {
1952 var10 = 1; /* is null */
1953 } else {
1954 var10 = 0; /* arg is null but recv is not */
1955 }
1956 if (0) {
1957 { /* Inline kernel#Object#== (var_t1,var9) on <var_t1:nullable MType> */
1958 var_other = var9;
1959 {
1960 { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
1961 var15 = var_t1 == var_other;
1962 var13 = var15;
1963 goto RET_LABEL14;
1964 RET_LABEL14:(void)0;
1965 }
1966 }
1967 var11 = var13;
1968 goto RET_LABEL12;
1969 RET_LABEL12:(void)0;
1970 }
1971 var10 = var11;
1972 }
1973 var_ = var10;
1974 if (var10){
1975 var8 = var_;
1976 } else {
1977 var16 = NULL;
1978 if (var_t2 == NULL) {
1979 var17 = 1; /* is null */
1980 } else {
1981 var17 = 0; /* arg is null but recv is not */
1982 }
1983 if (0) {
1984 { /* Inline kernel#Object#== (var_t2,var16) on <var_t2:nullable MType> */
1985 var_other = var16;
1986 {
1987 { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
1988 var22 = var_t2 == var_other;
1989 var20 = var22;
1990 goto RET_LABEL21;
1991 RET_LABEL21:(void)0;
1992 }
1993 }
1994 var18 = var20;
1995 goto RET_LABEL19;
1996 RET_LABEL19:(void)0;
1997 }
1998 var17 = var18;
1999 }
2000 var8 = var17;
2001 }
2002 if (var8){
2003 goto RET_LABEL;
2004 } else {
2005 }
2006 {
2007 var23 = ((val* (*)(val* self))(var_t1->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_t1) /* as_notnullable on <var_t1:nullable MType(MType)>*/;
2008 }
2009 var_t1 = var23;
2010 var24 = NEW_standard__Array(&type_standard__Array__nit__MType);
2011 var25 = 2;
2012 {
2013 standard___standard__Array___with_capacity(var24, var25); /* Direct call array#Array#with_capacity on <var24:Array[MType]>*/
2014 }
2015 var_26 = var24;
2016 {
2017 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_26, var_t1); /* Direct call array#AbstractArray#push on <var_26:Array[MType]>*/
2018 }
2019 {
2020 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_26, var_t2); /* Direct call array#AbstractArray#push on <var_26:Array[MType]>*/
2021 }
2022 {
2023 var27 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_26);
2024 }
2025 var_t = var27;
2026 var28 = NULL;
2027 if (var_t == NULL) {
2028 var29 = 1; /* is null */
2029 } else {
2030 var29 = 0; /* arg is null but recv is not */
2031 }
2032 if (0) {
2033 { /* Inline kernel#Object#== (var_t,var28) on <var_t:nullable MType> */
2034 var_other = var28;
2035 {
2036 { /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:nullable MType(MType)> */
2037 var34 = var_t == var_other;
2038 var32 = var34;
2039 goto RET_LABEL33;
2040 RET_LABEL33:(void)0;
2041 }
2042 }
2043 var30 = var32;
2044 goto RET_LABEL31;
2045 RET_LABEL31:(void)0;
2046 }
2047 var29 = var30;
2048 }
2049 if (var29){
2050 {
2051 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
2052 var37 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
2053 if (unlikely(var37 == NULL)) {
2054 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2055 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
2056 show_backtrace(1);
2057 }
2058 var35 = var37;
2059 RET_LABEL36:(void)0;
2060 }
2061 }
2062 {
2063 var38 = nit__model___MModule___object_type(var35);
2064 }
2065 var_t = var38;
2066 /* <var_t2:nullable MType(MType)> isa MNullableType */
2067 cltype = type_nit__MNullableType.color;
2068 idtype = type_nit__MNullableType.id;
2069 if(cltype >= var_t2->type->table_size) {
2070 var39 = 0;
2071 } else {
2072 var39 = var_t2->type->type_table[cltype] == idtype;
2073 }
2074 if (var39){
2075 {
2076 var40 = nit___nit__MType___as_nullable(var_t);
2077 }
2078 var_t = var40;
2079 } else {
2080 }
2081 } else {
2082 }
2083 {
2084 { /* Inline typing#AExpr#mtype= (self,var_t) on <self:AOrElseExpr> */
2085 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_t; /* _mtype on <self:AOrElseExpr> */
2086 RET_LABEL41:(void)0;
2087 }
2088 }
2089 RET_LABEL:;
2090 }
2091 /* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */
2092 void nit__typing___ATrueExpr___AExpr__accept_typing(val* self, val* p0) {
2093 val* var_v /* var v: TypeVisitor */;
2094 val* var /* : nullable MType */;
2095 var_v = p0;
2096 {
2097 var = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
2098 }
2099 {
2100 { /* Inline typing#AExpr#mtype= (self,var) on <self:ATrueExpr> */
2101 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on <self:ATrueExpr> */
2102 RET_LABEL1:(void)0;
2103 }
2104 }
2105 RET_LABEL:;
2106 }
2107 /* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */
2108 void nit__typing___AFalseExpr___AExpr__accept_typing(val* self, val* p0) {
2109 val* var_v /* var v: TypeVisitor */;
2110 val* var /* : nullable MType */;
2111 var_v = p0;
2112 {
2113 var = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
2114 }
2115 {
2116 { /* Inline typing#AExpr#mtype= (self,var) on <self:AFalseExpr> */
2117 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on <self:AFalseExpr> */
2118 RET_LABEL1:(void)0;
2119 }
2120 }
2121 RET_LABEL:;
2122 }
2123 /* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */
2124 void nit__typing___AIntExpr___AExpr__accept_typing(val* self, val* p0) {
2125 val* var_v /* var v: TypeVisitor */;
2126 static val* varonce;
2127 val* var /* : String */;
2128 char* var1 /* : NativeString */;
2129 long var2 /* : Int */;
2130 val* var3 /* : FlatString */;
2131 val* var4 /* : nullable MClass */;
2132 val* var_mclass /* var mclass: nullable MClass */;
2133 val* var5 /* : null */;
2134 short int var6 /* : Bool */;
2135 short int var7 /* : Bool */;
2136 val* var_other /* var other: nullable Object */;
2137 short int var9 /* : Bool */;
2138 short int var11 /* : Bool */;
2139 val* var12 /* : MClassType */;
2140 val* var14 /* : MClassType */;
2141 var_v = p0;
2142 if (varonce) {
2143 var = varonce;
2144 } else {
2145 var1 = "Int";
2146 var2 = 3;
2147 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
2148 var = var3;
2149 varonce = var;
2150 }
2151 {
2152 var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var);
2153 }
2154 var_mclass = var4;
2155 var5 = NULL;
2156 if (var_mclass == NULL) {
2157 var6 = 1; /* is null */
2158 } else {
2159 var6 = 0; /* arg is null but recv is not */
2160 }
2161 if (0) {
2162 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
2163 var_other = var5;
2164 {
2165 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2166 var11 = var_mclass == var_other;
2167 var9 = var11;
2168 goto RET_LABEL10;
2169 RET_LABEL10:(void)0;
2170 }
2171 }
2172 var7 = var9;
2173 goto RET_LABEL8;
2174 RET_LABEL8:(void)0;
2175 }
2176 var6 = var7;
2177 }
2178 if (var6){
2179 goto RET_LABEL;
2180 } else {
2181 }
2182 {
2183 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2184 var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2185 if (unlikely(var14 == NULL)) {
2186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2187 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
2188 show_backtrace(1);
2189 }
2190 var12 = var14;
2191 RET_LABEL13:(void)0;
2192 }
2193 }
2194 {
2195 { /* Inline typing#AExpr#mtype= (self,var12) on <self:AIntExpr> */
2196 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on <self:AIntExpr> */
2197 RET_LABEL15:(void)0;
2198 }
2199 }
2200 RET_LABEL:;
2201 }
2202 /* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */
2203 void nit__typing___AFloatExpr___AExpr__accept_typing(val* self, val* p0) {
2204 val* var_v /* var v: TypeVisitor */;
2205 static val* varonce;
2206 val* var /* : String */;
2207 char* var1 /* : NativeString */;
2208 long var2 /* : Int */;
2209 val* var3 /* : FlatString */;
2210 val* var4 /* : nullable MClass */;
2211 val* var_mclass /* var mclass: nullable MClass */;
2212 val* var5 /* : null */;
2213 short int var6 /* : Bool */;
2214 short int var7 /* : Bool */;
2215 val* var_other /* var other: nullable Object */;
2216 short int var9 /* : Bool */;
2217 short int var11 /* : Bool */;
2218 val* var12 /* : MClassType */;
2219 val* var14 /* : MClassType */;
2220 var_v = p0;
2221 if (varonce) {
2222 var = varonce;
2223 } else {
2224 var1 = "Float";
2225 var2 = 5;
2226 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
2227 var = var3;
2228 varonce = var;
2229 }
2230 {
2231 var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var);
2232 }
2233 var_mclass = var4;
2234 var5 = NULL;
2235 if (var_mclass == NULL) {
2236 var6 = 1; /* is null */
2237 } else {
2238 var6 = 0; /* arg is null but recv is not */
2239 }
2240 if (0) {
2241 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
2242 var_other = var5;
2243 {
2244 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2245 var11 = var_mclass == var_other;
2246 var9 = var11;
2247 goto RET_LABEL10;
2248 RET_LABEL10:(void)0;
2249 }
2250 }
2251 var7 = var9;
2252 goto RET_LABEL8;
2253 RET_LABEL8:(void)0;
2254 }
2255 var6 = var7;
2256 }
2257 if (var6){
2258 goto RET_LABEL;
2259 } else {
2260 }
2261 {
2262 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2263 var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2264 if (unlikely(var14 == NULL)) {
2265 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2266 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
2267 show_backtrace(1);
2268 }
2269 var12 = var14;
2270 RET_LABEL13:(void)0;
2271 }
2272 }
2273 {
2274 { /* Inline typing#AExpr#mtype= (self,var12) on <self:AFloatExpr> */
2275 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on <self:AFloatExpr> */
2276 RET_LABEL15:(void)0;
2277 }
2278 }
2279 RET_LABEL:;
2280 }
2281 /* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */
2282 void nit__typing___ACharExpr___AExpr__accept_typing(val* self, val* p0) {
2283 val* var_v /* var v: TypeVisitor */;
2284 static val* varonce;
2285 val* var /* : String */;
2286 char* var1 /* : NativeString */;
2287 long var2 /* : Int */;
2288 val* var3 /* : FlatString */;
2289 val* var4 /* : nullable MClass */;
2290 val* var_mclass /* var mclass: nullable MClass */;
2291 val* var5 /* : null */;
2292 short int var6 /* : Bool */;
2293 short int var7 /* : Bool */;
2294 val* var_other /* var other: nullable Object */;
2295 short int var9 /* : Bool */;
2296 short int var11 /* : Bool */;
2297 val* var12 /* : MClassType */;
2298 val* var14 /* : MClassType */;
2299 var_v = p0;
2300 if (varonce) {
2301 var = varonce;
2302 } else {
2303 var1 = "Char";
2304 var2 = 4;
2305 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
2306 var = var3;
2307 varonce = var;
2308 }
2309 {
2310 var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var);
2311 }
2312 var_mclass = var4;
2313 var5 = NULL;
2314 if (var_mclass == NULL) {
2315 var6 = 1; /* is null */
2316 } else {
2317 var6 = 0; /* arg is null but recv is not */
2318 }
2319 if (0) {
2320 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
2321 var_other = var5;
2322 {
2323 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2324 var11 = var_mclass == var_other;
2325 var9 = var11;
2326 goto RET_LABEL10;
2327 RET_LABEL10:(void)0;
2328 }
2329 }
2330 var7 = var9;
2331 goto RET_LABEL8;
2332 RET_LABEL8:(void)0;
2333 }
2334 var6 = var7;
2335 }
2336 if (var6){
2337 goto RET_LABEL;
2338 } else {
2339 }
2340 {
2341 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2342 var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2343 if (unlikely(var14 == NULL)) {
2344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2345 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
2346 show_backtrace(1);
2347 }
2348 var12 = var14;
2349 RET_LABEL13:(void)0;
2350 }
2351 }
2352 {
2353 { /* Inline typing#AExpr#mtype= (self,var12) on <self:ACharExpr> */
2354 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on <self:ACharExpr> */
2355 RET_LABEL15:(void)0;
2356 }
2357 }
2358 RET_LABEL:;
2359 }
2360 /* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */
2361 void nit__typing___AStringFormExpr___AExpr__accept_typing(val* self, val* p0) {
2362 val* var_v /* var v: TypeVisitor */;
2363 static val* varonce;
2364 val* var /* : String */;
2365 char* var1 /* : NativeString */;
2366 long var2 /* : Int */;
2367 val* var3 /* : FlatString */;
2368 val* var4 /* : nullable MClass */;
2369 val* var_mclass /* var mclass: nullable MClass */;
2370 val* var5 /* : null */;
2371 short int var6 /* : Bool */;
2372 short int var7 /* : Bool */;
2373 val* var_other /* var other: nullable Object */;
2374 short int var9 /* : Bool */;
2375 short int var11 /* : Bool */;
2376 val* var12 /* : MClassType */;
2377 val* var14 /* : MClassType */;
2378 var_v = p0;
2379 if (varonce) {
2380 var = varonce;
2381 } else {
2382 var1 = "String";
2383 var2 = 6;
2384 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
2385 var = var3;
2386 varonce = var;
2387 }
2388 {
2389 var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var);
2390 }
2391 var_mclass = var4;
2392 var5 = NULL;
2393 if (var_mclass == NULL) {
2394 var6 = 1; /* is null */
2395 } else {
2396 var6 = 0; /* arg is null but recv is not */
2397 }
2398 if (0) {
2399 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
2400 var_other = var5;
2401 {
2402 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2403 var11 = var_mclass == var_other;
2404 var9 = var11;
2405 goto RET_LABEL10;
2406 RET_LABEL10:(void)0;
2407 }
2408 }
2409 var7 = var9;
2410 goto RET_LABEL8;
2411 RET_LABEL8:(void)0;
2412 }
2413 var6 = var7;
2414 }
2415 if (var6){
2416 goto RET_LABEL;
2417 } else {
2418 }
2419 {
2420 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2421 var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2422 if (unlikely(var14 == NULL)) {
2423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2424 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
2425 show_backtrace(1);
2426 }
2427 var12 = var14;
2428 RET_LABEL13:(void)0;
2429 }
2430 }
2431 {
2432 { /* Inline typing#AExpr#mtype= (self,var12) on <self:AStringFormExpr> */
2433 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on <self:AStringFormExpr> */
2434 RET_LABEL15:(void)0;
2435 }
2436 }
2437 RET_LABEL:;
2438 }
2439 /* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */
2440 void nit__typing___ASuperstringExpr___AExpr__accept_typing(val* self, val* p0) {
2441 val* var_v /* var v: TypeVisitor */;
2442 static val* varonce;
2443 val* var /* : String */;
2444 char* var1 /* : NativeString */;
2445 long var2 /* : Int */;
2446 val* var3 /* : FlatString */;
2447 val* var4 /* : nullable MClass */;
2448 val* var_mclass /* var mclass: nullable MClass */;
2449 val* var5 /* : null */;
2450 short int var6 /* : Bool */;
2451 short int var7 /* : Bool */;
2452 val* var_other /* var other: nullable Object */;
2453 short int var9 /* : Bool */;
2454 short int var11 /* : Bool */;
2455 val* var12 /* : MClassType */;
2456 val* var14 /* : MClassType */;
2457 val* var16 /* : ANodes[AExpr] */;
2458 val* var18 /* : ANodes[AExpr] */;
2459 val* var_ /* var : ANodes[AExpr] */;
2460 val* var19 /* : Iterator[ANode] */;
2461 val* var_20 /* var : Iterator[AExpr] */;
2462 short int var21 /* : Bool */;
2463 val* var22 /* : nullable Object */;
2464 val* var_nexpr /* var nexpr: AExpr */;
2465 val* var23 /* : MModule */;
2466 val* var25 /* : MModule */;
2467 val* var26 /* : MClassType */;
2468 val* var27 /* : nullable MType */;
2469 var_v = p0;
2470 if (varonce) {
2471 var = varonce;
2472 } else {
2473 var1 = "String";
2474 var2 = 6;
2475 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
2476 var = var3;
2477 varonce = var;
2478 }
2479 {
2480 var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var);
2481 }
2482 var_mclass = var4;
2483 var5 = NULL;
2484 if (var_mclass == NULL) {
2485 var6 = 1; /* is null */
2486 } else {
2487 var6 = 0; /* arg is null but recv is not */
2488 }
2489 if (0) {
2490 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
2491 var_other = var5;
2492 {
2493 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2494 var11 = var_mclass == var_other;
2495 var9 = var11;
2496 goto RET_LABEL10;
2497 RET_LABEL10:(void)0;
2498 }
2499 }
2500 var7 = var9;
2501 goto RET_LABEL8;
2502 RET_LABEL8:(void)0;
2503 }
2504 var6 = var7;
2505 }
2506 if (var6){
2507 goto RET_LABEL;
2508 } else {
2509 }
2510 {
2511 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2512 var14 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2513 if (unlikely(var14 == NULL)) {
2514 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2515 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
2516 show_backtrace(1);
2517 }
2518 var12 = var14;
2519 RET_LABEL13:(void)0;
2520 }
2521 }
2522 {
2523 { /* Inline typing#AExpr#mtype= (self,var12) on <self:ASuperstringExpr> */
2524 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var12; /* _mtype on <self:ASuperstringExpr> */
2525 RET_LABEL15:(void)0;
2526 }
2527 }
2528 {
2529 { /* Inline parser_nodes#ASuperstringExpr#n_exprs (self) on <self:ASuperstringExpr> */
2530 var18 = self->attrs[COLOR_nit__parser_nodes__ASuperstringExpr___n_exprs].val; /* _n_exprs on <self:ASuperstringExpr> */
2531 if (unlikely(var18 == NULL)) {
2532 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
2533 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2277);
2534 show_backtrace(1);
2535 }
2536 var16 = var18;
2537 RET_LABEL17:(void)0;
2538 }
2539 }
2540 var_ = var16;
2541 {
2542 var19 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
2543 }
2544 var_20 = var19;
2545 for(;;) {
2546 {
2547 var21 = ((short int (*)(val* self))(var_20->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_20) /* is_ok on <var_20:Iterator[AExpr]>*/;
2548 }
2549 if (var21){
2550 {
2551 var22 = ((val* (*)(val* self))(var_20->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_20) /* item on <var_20:Iterator[AExpr]>*/;
2552 }
2553 var_nexpr = var22;
2554 {
2555 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
2556 var25 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
2557 if (unlikely(var25 == NULL)) {
2558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2559 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
2560 show_backtrace(1);
2561 }
2562 var23 = var25;
2563 RET_LABEL24:(void)0;
2564 }
2565 }
2566 {
2567 var26 = nit__model___MModule___object_type(var23);
2568 }
2569 {
2570 var27 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var_nexpr, var26);
2571 }
2572 {
2573 ((void (*)(val* self))(var_20->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_20) /* next on <var_20:Iterator[AExpr]>*/;
2574 }
2575 } else {
2576 goto BREAK_label;
2577 }
2578 }
2579 BREAK_label: (void)0;
2580 {
2581 { /* Inline abstract_collection#Iterator#finish (var_20) on <var_20:Iterator[AExpr]> */
2582 RET_LABEL28:(void)0;
2583 }
2584 }
2585 RET_LABEL:;
2586 }
2587 /* method typing#AArrayExpr#with_capacity_callsite for (self: AArrayExpr): nullable CallSite */
2588 val* nit__typing___AArrayExpr___with_capacity_callsite(val* self) {
2589 val* var /* : nullable CallSite */;
2590 val* var1 /* : nullable CallSite */;
2591 var1 = self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on <self:AArrayExpr> */
2592 var = var1;
2593 RET_LABEL:;
2594 return var;
2595 }
2596 /* method typing#AArrayExpr#with_capacity_callsite= for (self: AArrayExpr, nullable CallSite) */
2597 void nit__typing___AArrayExpr___with_capacity_callsite_61d(val* self, val* p0) {
2598 self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val = p0; /* _with_capacity_callsite on <self:AArrayExpr> */
2599 RET_LABEL:;
2600 }
2601 /* method typing#AArrayExpr#push_callsite for (self: AArrayExpr): nullable CallSite */
2602 val* nit__typing___AArrayExpr___push_callsite(val* self) {
2603 val* var /* : nullable CallSite */;
2604 val* var1 /* : nullable CallSite */;
2605 var1 = self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val; /* _push_callsite on <self:AArrayExpr> */
2606 var = var1;
2607 RET_LABEL:;
2608 return var;
2609 }
2610 /* method typing#AArrayExpr#push_callsite= for (self: AArrayExpr, nullable CallSite) */
2611 void nit__typing___AArrayExpr___push_callsite_61d(val* self, val* p0) {
2612 self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val = p0; /* _push_callsite on <self:AArrayExpr> */
2613 RET_LABEL:;
2614 }
2615 /* method typing#AArrayExpr#element_mtype for (self: AArrayExpr): nullable MType */
2616 val* nit__typing___AArrayExpr___element_mtype(val* self) {
2617 val* var /* : nullable MType */;
2618 val* var1 /* : nullable MType */;
2619 var1 = self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val; /* _element_mtype on <self:AArrayExpr> */
2620 var = var1;
2621 RET_LABEL:;
2622 return var;
2623 }
2624 /* method typing#AArrayExpr#element_mtype= for (self: AArrayExpr, nullable MType) */
2625 void nit__typing___AArrayExpr___element_mtype_61d(val* self, val* p0) {
2626 self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val = p0; /* _element_mtype on <self:AArrayExpr> */
2627 RET_LABEL:;
2628 }
2629 /* method typing#AArrayExpr#set_comprehension for (self: AArrayExpr, nullable AExpr) */
2630 void nit__typing___AArrayExpr___set_comprehension(val* self, val* p0) {
2631 val* var_n /* var n: nullable AExpr */;
2632 val* var /* : null */;
2633 short int var1 /* : Bool */;
2634 short int var2 /* : Bool */;
2635 val* var_other /* var other: nullable Object */;
2636 short int var4 /* : Bool */;
2637 short int var6 /* : Bool */;
2638 short int var7 /* : Bool */;
2639 int cltype;
2640 int idtype;
2641 val* var8 /* : nullable AExpr */;
2642 val* var10 /* : nullable AExpr */;
2643 short int var11 /* : Bool */;
2644 int cltype12;
2645 int idtype13;
2646 val* var14 /* : nullable AExpr */;
2647 val* var16 /* : nullable AExpr */;
2648 val* var17 /* : nullable AExpr */;
2649 val* var19 /* : nullable AExpr */;
2650 var_n = p0;
2651 var = NULL;
2652 if (var_n == NULL) {
2653 var1 = 1; /* is null */
2654 } else {
2655 var1 = 0; /* arg is null but recv is not */
2656 }
2657 if (0) {
2658 { /* Inline kernel#Object#== (var_n,var) on <var_n:nullable AExpr> */
2659 var_other = var;
2660 {
2661 { /* Inline kernel#Object#is_same_instance (var_n,var_other) on <var_n:nullable AExpr(AExpr)> */
2662 var6 = var_n == var_other;
2663 var4 = var6;
2664 goto RET_LABEL5;
2665 RET_LABEL5:(void)0;
2666 }
2667 }
2668 var2 = var4;
2669 goto RET_LABEL3;
2670 RET_LABEL3:(void)0;
2671 }
2672 var1 = var2;
2673 }
2674 if (var1){
2675 goto RET_LABEL;
2676 } else {
2677 /* <var_n:nullable AExpr(AExpr)> isa AForExpr */
2678 cltype = type_nit__AForExpr.color;
2679 idtype = type_nit__AForExpr.id;
2680 if(cltype >= var_n->type->table_size) {
2681 var7 = 0;
2682 } else {
2683 var7 = var_n->type->type_table[cltype] == idtype;
2684 }
2685 if (var7){
2686 {
2687 { /* Inline parser_nodes#AForExpr#n_block (var_n) on <var_n:nullable AExpr(AForExpr)> */
2688 var10 = var_n->attrs[COLOR_nit__parser_nodes__AForExpr___n_block].val; /* _n_block on <var_n:nullable AExpr(AForExpr)> */
2689 var8 = var10;
2690 RET_LABEL9:(void)0;
2691 }
2692 }
2693 {
2694 nit__typing___AArrayExpr___set_comprehension(self, var8); /* Direct call typing#AArrayExpr#set_comprehension on <self:AArrayExpr>*/
2695 }
2696 } else {
2697 /* <var_n:nullable AExpr(AExpr)> isa AIfExpr */
2698 cltype12 = type_nit__AIfExpr.color;
2699 idtype13 = type_nit__AIfExpr.id;
2700 if(cltype12 >= var_n->type->table_size) {
2701 var11 = 0;
2702 } else {
2703 var11 = var_n->type->type_table[cltype12] == idtype13;
2704 }
2705 if (var11){
2706 {
2707 { /* Inline parser_nodes#AIfExpr#n_then (var_n) on <var_n:nullable AExpr(AIfExpr)> */
2708 var16 = var_n->attrs[COLOR_nit__parser_nodes__AIfExpr___n_then].val; /* _n_then on <var_n:nullable AExpr(AIfExpr)> */
2709 var14 = var16;
2710 RET_LABEL15:(void)0;
2711 }
2712 }
2713 {
2714 nit__typing___AArrayExpr___set_comprehension(self, var14); /* Direct call typing#AArrayExpr#set_comprehension on <self:AArrayExpr>*/
2715 }
2716 {
2717 { /* Inline parser_nodes#AIfExpr#n_else (var_n) on <var_n:nullable AExpr(AIfExpr)> */
2718 var19 = var_n->attrs[COLOR_nit__parser_nodes__AIfExpr___n_else].val; /* _n_else on <var_n:nullable AExpr(AIfExpr)> */
2719 var17 = var19;
2720 RET_LABEL18:(void)0;
2721 }
2722 }
2723 {
2724 nit__typing___AArrayExpr___set_comprehension(self, var17); /* Direct call typing#AArrayExpr#set_comprehension on <self:AArrayExpr>*/
2725 }
2726 } else {
2727 {
2728 { /* Inline typing#AExpr#comprehension= (var_n,self) on <var_n:nullable AExpr(AExpr)> */
2729 var_n->attrs[COLOR_nit__typing__AExpr___comprehension].val = self; /* _comprehension on <var_n:nullable AExpr(AExpr)> */
2730 RET_LABEL20:(void)0;
2731 }
2732 }
2733 }
2734 }
2735 }
2736 RET_LABEL:;
2737 }
2738 /* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */
2739 void nit__typing___AArrayExpr___AExpr__accept_typing(val* self, val* p0) {
2740 val* var_v /* var v: TypeVisitor */;
2741 val* var /* : null */;
2742 val* var_mtype /* var mtype: nullable MType */;
2743 val* var1 /* : nullable AType */;
2744 val* var3 /* : nullable AType */;
2745 val* var_ntype /* var ntype: nullable AType */;
2746 val* var4 /* : null */;
2747 short int var5 /* : Bool */;
2748 short int var6 /* : Bool */;
2749 val* var_other /* var other: nullable Object */;
2750 short int var8 /* : Bool */;
2751 short int var9 /* : Bool */;
2752 val* var10 /* : nullable MType */;
2753 val* var11 /* : null */;
2754 short int var12 /* : Bool */;
2755 short int var13 /* : Bool */;
2756 val* var_other15 /* var other: nullable Object */;
2757 short int var16 /* : Bool */;
2758 short int var18 /* : Bool */;
2759 val* var19 /* : Array[nullable MType] */;
2760 val* var_mtypes /* var mtypes: Array[nullable MType] */;
2761 short int var20 /* : Bool */;
2762 short int var_useless /* var useless: Bool */;
2763 val* var21 /* : ANodes[AExpr] */;
2764 val* var23 /* : ANodes[AExpr] */;
2765 val* var_ /* var : ANodes[AExpr] */;
2766 val* var24 /* : Iterator[ANode] */;
2767 val* var_25 /* var : Iterator[AExpr] */;
2768 short int var26 /* : Bool */;
2769 val* var27 /* : nullable Object */;
2770 val* var_e /* var e: AExpr */;
2771 val* var28 /* : nullable MType */;
2772 val* var_t /* var t: nullable MType */;
2773 val* var29 /* : null */;
2774 short int var30 /* : Bool */;
2775 short int var31 /* : Bool */;
2776 short int var33 /* : Bool */;
2777 short int var35 /* : Bool */;
2778 val* var36 /* : null */;
2779 short int var37 /* : Bool */;
2780 short int var38 /* : Bool */;
2781 short int var40 /* : Bool */;
2782 short int var41 /* : Bool */;
2783 val* var42 /* : nullable MType */;
2784 val* var43 /* : null */;
2785 short int var44 /* : Bool */;
2786 short int var45 /* : Bool */;
2787 short int var47 /* : Bool */;
2788 short int var49 /* : Bool */;
2789 short int var50 /* : Bool */;
2790 short int var52 /* : Bool */;
2791 short int var54 /* : Bool */;
2792 short int var55 /* : Bool */;
2793 val* var57 /* : null */;
2794 short int var58 /* : Bool */;
2795 short int var59 /* : Bool */;
2796 short int var61 /* : Bool */;
2797 short int var63 /* : Bool */;
2798 val* var64 /* : nullable MType */;
2799 short int var65 /* : Bool */;
2800 val* var66 /* : null */;
2801 short int var67 /* : Bool */;
2802 short int var68 /* : Bool */;
2803 short int var70 /* : Bool */;
2804 short int var72 /* : Bool */;
2805 short int var_73 /* var : Bool */;
2806 short int var74 /* : Bool */;
2807 int cltype;
2808 int idtype;
2809 static val* varonce;
2810 val* var75 /* : String */;
2811 char* var76 /* : NativeString */;
2812 long var77 /* : Int */;
2813 val* var78 /* : FlatString */;
2814 static val* varonce79;
2815 val* var80 /* : String */;
2816 char* var81 /* : NativeString */;
2817 long var82 /* : Int */;
2818 val* var83 /* : FlatString */;
2819 val* var84 /* : String */;
2820 val* var85 /* : Array[Object] */;
2821 long var86 /* : Int */;
2822 val* var87 /* : NativeArray[Object] */;
2823 val* var88 /* : String */;
2824 val* var89 /* : null */;
2825 short int var90 /* : Bool */;
2826 short int var91 /* : Bool */;
2827 short int var93 /* : Bool */;
2828 short int var94 /* : Bool */;
2829 val* var95 /* : ModelBuilder */;
2830 val* var97 /* : ModelBuilder */;
2831 static val* varonce98;
2832 val* var99 /* : String */;
2833 char* var100 /* : NativeString */;
2834 long var101 /* : Int */;
2835 val* var102 /* : FlatString */;
2836 static val* varonce103;
2837 val* var104 /* : String */;
2838 char* var105 /* : NativeString */;
2839 long var106 /* : Int */;
2840 val* var107 /* : FlatString */;
2841 static val* varonce108;
2842 val* var109 /* : String */;
2843 char* var110 /* : NativeString */;
2844 long var111 /* : Int */;
2845 val* var112 /* : FlatString */;
2846 val* var113 /* : Array[Object] */;
2847 long var114 /* : Int */;
2848 val* var115 /* : NativeArray[Object] */;
2849 val* var116 /* : String */;
2850 static val* varonce118;
2851 val* var119 /* : String */;
2852 char* var120 /* : NativeString */;
2853 long var121 /* : Int */;
2854 val* var122 /* : FlatString */;
2855 val* var123 /* : nullable MClass */;
2856 val* var_mclass /* var mclass: nullable MClass */;
2857 val* var124 /* : null */;
2858 short int var125 /* : Bool */;
2859 short int var126 /* : Bool */;
2860 short int var128 /* : Bool */;
2861 short int var130 /* : Bool */;
2862 val* var131 /* : Array[MType] */;
2863 long var132 /* : Int */;
2864 val* var_133 /* var : Array[MType] */;
2865 val* var134 /* : MClassType */;
2866 val* var_array_mtype /* var array_mtype: MClassType */;
2867 static val* varonce135;
2868 val* var136 /* : String */;
2869 char* var137 /* : NativeString */;
2870 long var138 /* : Int */;
2871 val* var139 /* : FlatString */;
2872 short int var140 /* : Bool */;
2873 val* var141 /* : nullable CallSite */;
2874 static val* varonce143;
2875 val* var144 /* : String */;
2876 char* var145 /* : NativeString */;
2877 long var146 /* : Int */;
2878 val* var147 /* : FlatString */;
2879 short int var148 /* : Bool */;
2880 val* var149 /* : nullable CallSite */;
2881 var_v = p0;
2882 var = NULL;
2883 var_mtype = var;
2884 {
2885 { /* Inline parser_nodes#AArrayExpr#n_type (self) on <self:AArrayExpr> */
2886 var3 = self->attrs[COLOR_nit__parser_nodes__AArrayExpr___n_type].val; /* _n_type on <self:AArrayExpr> */
2887 var1 = var3;
2888 RET_LABEL2:(void)0;
2889 }
2890 }
2891 var_ntype = var1;
2892 var4 = NULL;
2893 if (var_ntype == NULL) {
2894 var5 = 0; /* is null */
2895 } else {
2896 var5 = 1; /* arg is null and recv is not */
2897 }
2898 if (0) {
2899 { /* Inline kernel#Object#!= (var_ntype,var4) on <var_ntype:nullable AType> */
2900 var_other = var4;
2901 {
2902 var8 = ((short int (*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other) /* == on <var_ntype:nullable AType(AType)>*/;
2903 }
2904 var9 = !var8;
2905 var6 = var9;
2906 goto RET_LABEL7;
2907 RET_LABEL7:(void)0;
2908 }
2909 var5 = var6;
2910 }
2911 if (var5){
2912 {
2913 var10 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var_ntype);
2914 }
2915 var_mtype = var10;
2916 var11 = NULL;
2917 if (var_mtype == NULL) {
2918 var12 = 1; /* is null */
2919 } else {
2920 var12 = 0; /* arg is null but recv is not */
2921 }
2922 if (0) {
2923 { /* Inline kernel#Object#== (var_mtype,var11) on <var_mtype:nullable MType> */
2924 var_other15 = var11;
2925 {
2926 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other15) on <var_mtype:nullable MType(MType)> */
2927 var18 = var_mtype == var_other15;
2928 var16 = var18;
2929 goto RET_LABEL17;
2930 RET_LABEL17:(void)0;
2931 }
2932 }
2933 var13 = var16;
2934 goto RET_LABEL14;
2935 RET_LABEL14:(void)0;
2936 }
2937 var12 = var13;
2938 }
2939 if (var12){
2940 goto RET_LABEL;
2941 } else {
2942 }
2943 } else {
2944 }
2945 var19 = NEW_standard__Array(&type_standard__Array__nullable__nit__MType);
2946 {
2947 standard___standard__Array___standard__kernel__Object__init(var19); /* Direct call array#Array#init on <var19:Array[nullable MType]>*/
2948 }
2949 var_mtypes = var19;
2950 var20 = 0;
2951 var_useless = var20;
2952 {
2953 { /* Inline parser_nodes#AArrayExpr#n_exprs (self) on <self:AArrayExpr> */
2954 var23 = self->attrs[COLOR_nit__parser_nodes__AArrayExpr___n_exprs].val; /* _n_exprs on <self:AArrayExpr> */
2955 if (unlikely(var23 == NULL)) {
2956 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
2957 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2160);
2958 show_backtrace(1);
2959 }
2960 var21 = var23;
2961 RET_LABEL22:(void)0;
2962 }
2963 }
2964 var_ = var21;
2965 {
2966 var24 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
2967 }
2968 var_25 = var24;
2969 for(;;) {
2970 {
2971 var26 = ((short int (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_25) /* is_ok on <var_25:Iterator[AExpr]>*/;
2972 }
2973 if (var26){
2974 {
2975 var27 = ((val* (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_25) /* item on <var_25:Iterator[AExpr]>*/;
2976 }
2977 var_e = var27;
2978 {
2979 var28 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var_e);
2980 }
2981 var_t = var28;
2982 var29 = NULL;
2983 if (var_t == NULL) {
2984 var30 = 1; /* is null */
2985 } else {
2986 var30 = 0; /* arg is null but recv is not */
2987 }
2988 if (0) {
2989 { /* Inline kernel#Object#== (var_t,var29) on <var_t:nullable MType> */
2990 var_other15 = var29;
2991 {
2992 { /* Inline kernel#Object#is_same_instance (var_t,var_other15) on <var_t:nullable MType(MType)> */
2993 var35 = var_t == var_other15;
2994 var33 = var35;
2995 goto RET_LABEL34;
2996 RET_LABEL34:(void)0;
2997 }
2998 }
2999 var31 = var33;
3000 goto RET_LABEL32;
3001 RET_LABEL32:(void)0;
3002 }
3003 var30 = var31;
3004 }
3005 if (var30){
3006 goto RET_LABEL;
3007 } else {
3008 }
3009 {
3010 nit__typing___AArrayExpr___set_comprehension(self, var_e); /* Direct call typing#AArrayExpr#set_comprehension on <self:AArrayExpr>*/
3011 }
3012 var36 = NULL;
3013 if (var_mtype == NULL) {
3014 var37 = 0; /* is null */
3015 } else {
3016 var37 = 1; /* arg is null and recv is not */
3017 }
3018 if (0) {
3019 { /* Inline kernel#Object#!= (var_mtype,var36) on <var_mtype:nullable MType> */
3020 var_other = var36;
3021 {
3022 var40 = ((short int (*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other) /* == on <var_mtype:nullable MType(MType)>*/;
3023 }
3024 var41 = !var40;
3025 var38 = var41;
3026 goto RET_LABEL39;
3027 RET_LABEL39:(void)0;
3028 }
3029 var37 = var38;
3030 }
3031 if (var37){
3032 {
3033 var42 = nit__typing___nit__typing__TypeVisitor___check_subtype(var_v, var_e, var_t, var_mtype);
3034 }
3035 var43 = NULL;
3036 if (var42 == NULL) {
3037 var44 = 1; /* is null */
3038 } else {
3039 var44 = 0; /* arg is null but recv is not */
3040 }
3041 if (0) {
3042 { /* Inline kernel#Object#== (var42,var43) on <var42:nullable MType> */
3043 var_other15 = var43;
3044 {
3045 { /* Inline kernel#Object#is_same_instance (var42,var_other15) on <var42:nullable MType(MType)> */
3046 var49 = var42 == var_other15;
3047 var47 = var49;
3048 goto RET_LABEL48;
3049 RET_LABEL48:(void)0;
3050 }
3051 }
3052 var45 = var47;
3053 goto RET_LABEL46;
3054 RET_LABEL46:(void)0;
3055 }
3056 var44 = var45;
3057 }
3058 if (var44){
3059 goto RET_LABEL;
3060 } else {
3061 }
3062 {
3063 { /* Inline kernel#Object#== (var_t,var_mtype) on <var_t:nullable MType(MType)> */
3064 var_other15 = var_mtype;
3065 {
3066 { /* Inline kernel#Object#is_same_instance (var_t,var_other15) on <var_t:nullable MType(MType)> */
3067 var54 = var_t == var_other15;
3068 var52 = var54;
3069 goto RET_LABEL53;
3070 RET_LABEL53:(void)0;
3071 }
3072 }
3073 var50 = var52;
3074 goto RET_LABEL51;
3075 RET_LABEL51:(void)0;
3076 }
3077 }
3078 if (var50){
3079 var55 = 1;
3080 var_useless = var55;
3081 } else {
3082 }
3083 } else {
3084 {
3085 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mtypes, var_t); /* Direct call array#Array#add on <var_mtypes:Array[nullable MType]>*/
3086 }
3087 }
3088 {
3089 ((void (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_25) /* next on <var_25:Iterator[AExpr]>*/;
3090 }
3091 } else {
3092 goto BREAK_label;
3093 }
3094 }
3095 BREAK_label: (void)0;
3096 {
3097 { /* Inline abstract_collection#Iterator#finish (var_25) on <var_25:Iterator[AExpr]> */
3098 RET_LABEL56:(void)0;
3099 }
3100 }
3101 var57 = NULL;
3102 if (var_mtype == NULL) {
3103 var58 = 1; /* is null */
3104 } else {
3105 var58 = 0; /* arg is null but recv is not */
3106 }
3107 if (0) {
3108 { /* Inline kernel#Object#== (var_mtype,var57) on <var_mtype:nullable MType> */
3109 var_other15 = var57;
3110 {
3111 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other15) on <var_mtype:nullable MType(MType)> */
3112 var63 = var_mtype == var_other15;
3113 var61 = var63;
3114 goto RET_LABEL62;
3115 RET_LABEL62:(void)0;
3116 }
3117 }
3118 var59 = var61;
3119 goto RET_LABEL60;
3120 RET_LABEL60:(void)0;
3121 }
3122 var58 = var59;
3123 }
3124 if (var58){
3125 {
3126 var64 = nit__typing___nit__typing__TypeVisitor___merge_types(var_v, self, var_mtypes);
3127 }
3128 var_mtype = var64;
3129 } else {
3130 }
3131 var66 = NULL;
3132 if (var_mtype == NULL) {
3133 var67 = 1; /* is null */
3134 } else {
3135 var67 = 0; /* arg is null but recv is not */
3136 }
3137 if (0) {
3138 { /* Inline kernel#Object#== (var_mtype,var66) on <var_mtype:nullable MType> */
3139 var_other15 = var66;
3140 {
3141 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other15) on <var_mtype:nullable MType(MType)> */
3142 var72 = var_mtype == var_other15;
3143 var70 = var72;
3144 goto RET_LABEL71;
3145 RET_LABEL71:(void)0;
3146 }
3147 }
3148 var68 = var70;
3149 goto RET_LABEL69;
3150 RET_LABEL69:(void)0;
3151 }
3152 var67 = var68;
3153 }
3154 var_73 = var67;
3155 if (var67){
3156 var65 = var_73;
3157 } else {
3158 /* <var_mtype:nullable MType(MType)> isa MNullType */
3159 cltype = type_nit__MNullType.color;
3160 idtype = type_nit__MNullType.id;
3161 if(cltype >= var_mtype->type->table_size) {
3162 var74 = 0;
3163 } else {
3164 var74 = var_mtype->type->type_table[cltype] == idtype;
3165 }
3166 var65 = var74;
3167 }
3168 if (var65){
3169 if (varonce) {
3170 var75 = varonce;
3171 } else {
3172 var76 = "Type Error: ambiguous array type ";
3173 var77 = 33;
3174 var78 = standard___standard__NativeString___to_s_with_length(var76, var77);
3175 var75 = var78;
3176 varonce = var75;
3177 }
3178 if (varonce79) {
3179 var80 = varonce79;
3180 } else {
3181 var81 = " ";
3182 var82 = 1;
3183 var83 = standard___standard__NativeString___to_s_with_length(var81, var82);
3184 var80 = var83;
3185 varonce79 = var80;
3186 }
3187 {
3188 var84 = standard__string___Collection___join(var_mtypes, var80);
3189 }
3190 var85 = NEW_standard__Array(&type_standard__Array__standard__Object);
3191 { /* var85 = array_instance Array[Object] */
3192 var86 = 2;
3193 var87 = NEW_standard__NativeArray(var86, &type_standard__NativeArray__standard__Object);
3194 ((struct instance_standard__NativeArray*)var87)->values[0] = (val*) var75;
3195 ((struct instance_standard__NativeArray*)var87)->values[1] = (val*) var84;
3196 {
3197 ((void (*)(val* self, val* p0, long p1))(var85->class->vft[COLOR_standard__array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
3198 }
3199 }
3200 {
3201 var88 = ((val* (*)(val* self))(var85->class->vft[COLOR_standard__string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
3202 }
3203 {
3204 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var88); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
3205 }
3206 goto RET_LABEL;
3207 } else {
3208 }
3209 if (var_useless){
3210 var89 = NULL;
3211 if (var_ntype == NULL) {
3212 var90 = 0; /* is null */
3213 } else {
3214 var90 = 1; /* arg is null and recv is not */
3215 }
3216 if (0) {
3217 { /* Inline kernel#Object#!= (var_ntype,var89) on <var_ntype:nullable AType> */
3218 var_other = var89;
3219 {
3220 var93 = ((short int (*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other) /* == on <var_ntype:nullable AType(AType)>*/;
3221 }
3222 var94 = !var93;
3223 var91 = var94;
3224 goto RET_LABEL92;
3225 RET_LABEL92:(void)0;
3226 }
3227 var90 = var91;
3228 }
3229 if (unlikely(!var90)) {
3230 PRINT_ERROR("Runtime error: %s", "Assert failed");
3231 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1255);
3232 show_backtrace(1);
3233 }
3234 {
3235 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
3236 var97 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
3237 if (unlikely(var97 == NULL)) {
3238 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3239 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
3240 show_backtrace(1);
3241 }
3242 var95 = var97;
3243 RET_LABEL96:(void)0;
3244 }
3245 }
3246 if (varonce98) {
3247 var99 = varonce98;
3248 } else {
3249 var100 = "useless-type";
3250 var101 = 12;
3251 var102 = standard___standard__NativeString___to_s_with_length(var100, var101);
3252 var99 = var102;
3253 varonce98 = var99;
3254 }
3255 if (varonce103) {
3256 var104 = varonce103;
3257 } else {
3258 var105 = "Warning: useless type declaration `";
3259 var106 = 35;
3260 var107 = standard___standard__NativeString___to_s_with_length(var105, var106);
3261 var104 = var107;
3262 varonce103 = var104;
3263 }
3264 if (varonce108) {
3265 var109 = varonce108;
3266 } else {
3267 var110 = "` in literal Array since it can be inferred from the elements type.";
3268 var111 = 67;
3269 var112 = standard___standard__NativeString___to_s_with_length(var110, var111);
3270 var109 = var112;
3271 varonce108 = var109;
3272 }
3273 var113 = NEW_standard__Array(&type_standard__Array__standard__Object);
3274 { /* var113 = array_instance Array[Object] */
3275 var114 = 3;
3276 var115 = NEW_standard__NativeArray(var114, &type_standard__NativeArray__standard__Object);
3277 ((struct instance_standard__NativeArray*)var115)->values[0] = (val*) var104;
3278 ((struct instance_standard__NativeArray*)var115)->values[1] = (val*) var_mtype;
3279 ((struct instance_standard__NativeArray*)var115)->values[2] = (val*) var109;
3280 {
3281 ((void (*)(val* self, val* p0, long p1))(var113->class->vft[COLOR_standard__array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
3282 }
3283 }
3284 {
3285 var116 = ((val* (*)(val* self))(var113->class->vft[COLOR_standard__string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
3286 }
3287 {
3288 nit___nit__ModelBuilder___warning(var95, var_ntype, var99, var116); /* Direct call modelbuilder_base#ModelBuilder#warning on <var95:ModelBuilder>*/
3289 }
3290 } else {
3291 }
3292 {
3293 { /* Inline typing#AArrayExpr#element_mtype= (self,var_mtype) on <self:AArrayExpr> */
3294 self->attrs[COLOR_nit__typing__AArrayExpr___element_mtype].val = var_mtype; /* _element_mtype on <self:AArrayExpr> */
3295 RET_LABEL117:(void)0;
3296 }
3297 }
3298 if (varonce118) {
3299 var119 = varonce118;
3300 } else {
3301 var120 = "Array";
3302 var121 = 5;
3303 var122 = standard___standard__NativeString___to_s_with_length(var120, var121);
3304 var119 = var122;
3305 varonce118 = var119;
3306 }
3307 {
3308 var123 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var119);
3309 }
3310 var_mclass = var123;
3311 var124 = NULL;
3312 if (var_mclass == NULL) {
3313 var125 = 1; /* is null */
3314 } else {
3315 var125 = 0; /* arg is null but recv is not */
3316 }
3317 if (0) {
3318 { /* Inline kernel#Object#== (var_mclass,var124) on <var_mclass:nullable MClass> */
3319 var_other15 = var124;
3320 {
3321 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other15) on <var_mclass:nullable MClass(MClass)> */
3322 var130 = var_mclass == var_other15;
3323 var128 = var130;
3324 goto RET_LABEL129;
3325 RET_LABEL129:(void)0;
3326 }
3327 }
3328 var126 = var128;
3329 goto RET_LABEL127;
3330 RET_LABEL127:(void)0;
3331 }
3332 var125 = var126;
3333 }
3334 if (var125){
3335 goto RET_LABEL;
3336 } else {
3337 }
3338 var131 = NEW_standard__Array(&type_standard__Array__nit__MType);
3339 var132 = 1;
3340 {
3341 standard___standard__Array___with_capacity(var131, var132); /* Direct call array#Array#with_capacity on <var131:Array[MType]>*/
3342 }
3343 var_133 = var131;
3344 {
3345 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_133, var_mtype); /* Direct call array#AbstractArray#push on <var_133:Array[MType]>*/
3346 }
3347 {
3348 var134 = nit___nit__MClass___get_mtype(var_mclass, var_133);
3349 }
3350 var_array_mtype = var134;
3351 if (varonce135) {
3352 var136 = varonce135;
3353 } else {
3354 var137 = "with_capacity";
3355 var138 = 13;
3356 var139 = standard___standard__NativeString___to_s_with_length(var137, var138);
3357 var136 = var139;
3358 varonce135 = var136;
3359 }
3360 var140 = 0;
3361 {
3362 var141 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_array_mtype, var136, var140);
3363 }
3364 {
3365 { /* Inline typing#AArrayExpr#with_capacity_callsite= (self,var141) on <self:AArrayExpr> */
3366 self->attrs[COLOR_nit__typing__AArrayExpr___with_capacity_callsite].val = var141; /* _with_capacity_callsite on <self:AArrayExpr> */
3367 RET_LABEL142:(void)0;
3368 }
3369 }
3370 if (varonce143) {
3371 var144 = varonce143;
3372 } else {
3373 var145 = "push";
3374 var146 = 4;
3375 var147 = standard___standard__NativeString___to_s_with_length(var145, var146);
3376 var144 = var147;
3377 varonce143 = var144;
3378 }
3379 var148 = 0;
3380 {
3381 var149 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_array_mtype, var144, var148);
3382 }
3383 {
3384 { /* Inline typing#AArrayExpr#push_callsite= (self,var149) on <self:AArrayExpr> */
3385 self->attrs[COLOR_nit__typing__AArrayExpr___push_callsite].val = var149; /* _push_callsite on <self:AArrayExpr> */
3386 RET_LABEL150:(void)0;
3387 }
3388 }
3389 {
3390 { /* Inline typing#AExpr#mtype= (self,var_array_mtype) on <self:AArrayExpr> */
3391 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_array_mtype; /* _mtype on <self:AArrayExpr> */
3392 RET_LABEL151:(void)0;
3393 }
3394 }
3395 RET_LABEL:;
3396 }
3397 /* method typing#ARangeExpr#init_callsite for (self: ARangeExpr): nullable CallSite */
3398 val* nit__typing___ARangeExpr___init_callsite(val* self) {
3399 val* var /* : nullable CallSite */;
3400 val* var1 /* : nullable CallSite */;
3401 var1 = self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:ARangeExpr> */
3402 var = var1;
3403 RET_LABEL:;
3404 return var;
3405 }
3406 /* method typing#ARangeExpr#init_callsite= for (self: ARangeExpr, nullable CallSite) */
3407 void nit__typing___ARangeExpr___init_callsite_61d(val* self, val* p0) {
3408 self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val = p0; /* _init_callsite on <self:ARangeExpr> */
3409 RET_LABEL:;
3410 }
3411 /* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */
3412 void nit__typing___ARangeExpr___AExpr__accept_typing(val* self, val* p0) {
3413 val* var_v /* var v: TypeVisitor */;
3414 static val* varonce;
3415 val* var /* : String */;
3416 char* var1 /* : NativeString */;
3417 long var2 /* : Int */;
3418 val* var3 /* : FlatString */;
3419 val* var4 /* : nullable MClass */;
3420 val* var_discrete_class /* var discrete_class: nullable MClass */;
3421 val* var5 /* : null */;
3422 short int var6 /* : Bool */;
3423 short int var7 /* : Bool */;
3424 val* var_other /* var other: nullable Object */;
3425 short int var9 /* : Bool */;
3426 short int var11 /* : Bool */;
3427 val* var12 /* : MClassDef */;
3428 val* var14 /* : MClassDef */;
3429 val* var15 /* : MClassType */;
3430 val* var17 /* : MClassType */;
3431 val* var_discrete_type /* var discrete_type: MClassType */;
3432 val* var18 /* : AExpr */;
3433 val* var20 /* : AExpr */;
3434 val* var21 /* : nullable MType */;
3435 val* var_t1 /* var t1: nullable MType */;
3436 val* var22 /* : AExpr */;
3437 val* var24 /* : AExpr */;
3438 val* var25 /* : nullable MType */;
3439 val* var_t2 /* var t2: nullable MType */;
3440 short int var26 /* : Bool */;
3441 val* var27 /* : null */;
3442 short int var28 /* : Bool */;
3443 short int var29 /* : Bool */;
3444 short int var31 /* : Bool */;
3445 short int var33 /* : Bool */;
3446 short int var_ /* var : Bool */;
3447 val* var34 /* : null */;
3448 short int var35 /* : Bool */;
3449 short int var36 /* : Bool */;
3450 short int var38 /* : Bool */;
3451 short int var40 /* : Bool */;
3452 static val* varonce41;
3453 val* var42 /* : String */;
3454 char* var43 /* : NativeString */;
3455 long var44 /* : Int */;
3456 val* var45 /* : FlatString */;
3457 val* var46 /* : nullable MClass */;
3458 val* var_mclass /* var mclass: nullable MClass */;
3459 val* var47 /* : null */;
3460 short int var48 /* : Bool */;
3461 short int var49 /* : Bool */;
3462 short int var51 /* : Bool */;
3463 short int var53 /* : Bool */;
3464 short int var54 /* : Bool */;
3465 val* var55 /* : Array[MType] */;
3466 long var56 /* : Int */;
3467 val* var_57 /* var : Array[MType] */;
3468 val* var58 /* : MClassType */;
3469 val* var_mtype /* var mtype: nullable Object */;
3470 short int var59 /* : Bool */;
3471 val* var60 /* : Array[MType] */;
3472 long var61 /* : Int */;
3473 val* var_62 /* var : Array[MType] */;
3474 val* var63 /* : MClassType */;
3475 static val* varonce64;
3476 val* var65 /* : String */;
3477 char* var66 /* : NativeString */;
3478 long var67 /* : Int */;
3479 val* var68 /* : FlatString */;
3480 static val* varonce69;
3481 val* var70 /* : String */;
3482 char* var71 /* : NativeString */;
3483 long var72 /* : Int */;
3484 val* var73 /* : FlatString */;
3485 val* var74 /* : Array[Object] */;
3486 long var75 /* : Int */;
3487 val* var76 /* : NativeArray[Object] */;
3488 val* var77 /* : String */;
3489 short int var79 /* : Bool */;
3490 int cltype;
3491 int idtype;
3492 static val* varonce80;
3493 val* var81 /* : String */;
3494 char* var82 /* : NativeString */;
3495 long var83 /* : Int */;
3496 val* var84 /* : FlatString */;
3497 short int var85 /* : Bool */;
3498 val* var86 /* : nullable CallSite */;
3499 val* var_callsite /* var callsite: nullable Object */;
3500 short int var87 /* : Bool */;
3501 int cltype88;
3502 int idtype89;
3503 static val* varonce90;
3504 val* var91 /* : String */;
3505 char* var92 /* : NativeString */;
3506 long var93 /* : Int */;
3507 val* var94 /* : FlatString */;
3508 short int var95 /* : Bool */;
3509 val* var96 /* : nullable CallSite */;
3510 var_v = p0;
3511 if (varonce) {
3512 var = varonce;
3513 } else {
3514 var1 = "Discrete";
3515 var2 = 8;
3516 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
3517 var = var3;
3518 varonce = var;
3519 }
3520 {
3521 var4 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var);
3522 }
3523 var_discrete_class = var4;
3524 var5 = NULL;
3525 if (var_discrete_class == NULL) {
3526 var6 = 1; /* is null */
3527 } else {
3528 var6 = 0; /* arg is null but recv is not */
3529 }
3530 if (0) {
3531 { /* Inline kernel#Object#== (var_discrete_class,var5) on <var_discrete_class:nullable MClass> */
3532 var_other = var5;
3533 {
3534 { /* Inline kernel#Object#is_same_instance (var_discrete_class,var_other) on <var_discrete_class:nullable MClass(MClass)> */
3535 var11 = var_discrete_class == var_other;
3536 var9 = var11;
3537 goto RET_LABEL10;
3538 RET_LABEL10:(void)0;
3539 }
3540 }
3541 var7 = var9;
3542 goto RET_LABEL8;
3543 RET_LABEL8:(void)0;
3544 }
3545 var6 = var7;
3546 }
3547 if (var6){
3548 goto RET_LABEL;
3549 } else {
3550 }
3551 {
3552 { /* Inline model#MClass#intro (var_discrete_class) on <var_discrete_class:nullable MClass(MClass)> */
3553 var14 = var_discrete_class->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_discrete_class:nullable MClass(MClass)> */
3554 if (unlikely(var14 == NULL)) {
3555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3556 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
3557 show_backtrace(1);
3558 }
3559 var12 = var14;
3560 RET_LABEL13:(void)0;
3561 }
3562 }
3563 {
3564 { /* Inline model#MClassDef#bound_mtype (var12) on <var12:MClassDef> */
3565 var17 = var12->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var12:MClassDef> */
3566 if (unlikely(var17 == NULL)) {
3567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3568 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
3569 show_backtrace(1);
3570 }
3571 var15 = var17;
3572 RET_LABEL16:(void)0;
3573 }
3574 }
3575 var_discrete_type = var15;
3576 {
3577 { /* Inline parser_nodes#ARangeExpr#n_expr (self) on <self:ARangeExpr> */
3578 var20 = self->attrs[COLOR_nit__parser_nodes__ARangeExpr___n_expr].val; /* _n_expr on <self:ARangeExpr> */
3579 if (unlikely(var20 == NULL)) {
3580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3581 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2124);
3582 show_backtrace(1);
3583 }
3584 var18 = var20;
3585 RET_LABEL19:(void)0;
3586 }
3587 }
3588 {
3589 var21 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var18, var_discrete_type);
3590 }
3591 var_t1 = var21;
3592 {
3593 { /* Inline parser_nodes#ARangeExpr#n_expr2 (self) on <self:ARangeExpr> */
3594 var24 = self->attrs[COLOR_nit__parser_nodes__ARangeExpr___n_expr2].val; /* _n_expr2 on <self:ARangeExpr> */
3595 if (unlikely(var24 == NULL)) {
3596 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
3597 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2127);
3598 show_backtrace(1);
3599 }
3600 var22 = var24;
3601 RET_LABEL23:(void)0;
3602 }
3603 }
3604 {
3605 var25 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var22, var_discrete_type);
3606 }
3607 var_t2 = var25;
3608 var27 = NULL;
3609 if (var_t1 == NULL) {
3610 var28 = 1; /* is null */
3611 } else {
3612 var28 = 0; /* arg is null but recv is not */
3613 }
3614 if (0) {
3615 { /* Inline kernel#Object#== (var_t1,var27) on <var_t1:nullable MType> */
3616 var_other = var27;
3617 {
3618 { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
3619 var33 = var_t1 == var_other;
3620 var31 = var33;
3621 goto RET_LABEL32;
3622 RET_LABEL32:(void)0;
3623 }
3624 }
3625 var29 = var31;
3626 goto RET_LABEL30;
3627 RET_LABEL30:(void)0;
3628 }
3629 var28 = var29;
3630 }
3631 var_ = var28;
3632 if (var28){
3633 var26 = var_;
3634 } else {
3635 var34 = NULL;
3636 if (var_t2 == NULL) {
3637 var35 = 1; /* is null */
3638 } else {
3639 var35 = 0; /* arg is null but recv is not */
3640 }
3641 if (0) {
3642 { /* Inline kernel#Object#== (var_t2,var34) on <var_t2:nullable MType> */
3643 var_other = var34;
3644 {
3645 { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
3646 var40 = var_t2 == var_other;
3647 var38 = var40;
3648 goto RET_LABEL39;
3649 RET_LABEL39:(void)0;
3650 }
3651 }
3652 var36 = var38;
3653 goto RET_LABEL37;
3654 RET_LABEL37:(void)0;
3655 }
3656 var35 = var36;
3657 }
3658 var26 = var35;
3659 }
3660 if (var26){
3661 goto RET_LABEL;
3662 } else {
3663 }
3664 if (varonce41) {
3665 var42 = varonce41;
3666 } else {
3667 var43 = "Range";
3668 var44 = 5;
3669 var45 = standard___standard__NativeString___to_s_with_length(var43, var44);
3670 var42 = var45;
3671 varonce41 = var42;
3672 }
3673 {
3674 var46 = nit__typing___nit__typing__TypeVisitor___get_mclass(var_v, self, var42);
3675 }
3676 var_mclass = var46;
3677 var47 = NULL;
3678 if (var_mclass == NULL) {
3679 var48 = 1; /* is null */
3680 } else {
3681 var48 = 0; /* arg is null but recv is not */
3682 }
3683 if (0) {
3684 { /* Inline kernel#Object#== (var_mclass,var47) on <var_mclass:nullable MClass> */
3685 var_other = var47;
3686 {
3687 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
3688 var53 = var_mclass == var_other;
3689 var51 = var53;
3690 goto RET_LABEL52;
3691 RET_LABEL52:(void)0;
3692 }
3693 }
3694 var49 = var51;
3695 goto RET_LABEL50;
3696 RET_LABEL50:(void)0;
3697 }
3698 var48 = var49;
3699 }
3700 if (var48){
3701 goto RET_LABEL;
3702 } else {
3703 }
3704 {
3705 var54 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_t1, var_t2);
3706 }
3707 if (var54){
3708 var55 = NEW_standard__Array(&type_standard__Array__nit__MType);
3709 var56 = 1;
3710 {
3711 standard___standard__Array___with_capacity(var55, var56); /* Direct call array#Array#with_capacity on <var55:Array[MType]>*/
3712 }
3713 var_57 = var55;
3714 {
3715 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_57, var_t2); /* Direct call array#AbstractArray#push on <var_57:Array[MType]>*/
3716 }
3717 {
3718 var58 = nit___nit__MClass___get_mtype(var_mclass, var_57);
3719 }
3720 var_mtype = var58;
3721 } else {
3722 {
3723 var59 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var_t2, var_t1);
3724 }
3725 if (var59){
3726 var60 = NEW_standard__Array(&type_standard__Array__nit__MType);
3727 var61 = 1;
3728 {
3729 standard___standard__Array___with_capacity(var60, var61); /* Direct call array#Array#with_capacity on <var60:Array[MType]>*/
3730 }
3731 var_62 = var60;
3732 {
3733 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_62, var_t1); /* Direct call array#AbstractArray#push on <var_62:Array[MType]>*/
3734 }
3735 {
3736 var63 = nit___nit__MClass___get_mtype(var_mclass, var_62);
3737 }
3738 var_mtype = var63;
3739 } else {
3740 if (varonce64) {
3741 var65 = varonce64;
3742 } else {
3743 var66 = "Type Error: Cannot create range: ";
3744 var67 = 33;
3745 var68 = standard___standard__NativeString___to_s_with_length(var66, var67);
3746 var65 = var68;
3747 varonce64 = var65;
3748 }
3749 if (varonce69) {
3750 var70 = varonce69;
3751 } else {
3752 var71 = " vs ";
3753 var72 = 4;
3754 var73 = standard___standard__NativeString___to_s_with_length(var71, var72);
3755 var70 = var73;
3756 varonce69 = var70;
3757 }
3758 var74 = NEW_standard__Array(&type_standard__Array__standard__Object);
3759 { /* var74 = array_instance Array[Object] */
3760 var75 = 4;
3761 var76 = NEW_standard__NativeArray(var75, &type_standard__NativeArray__standard__Object);
3762 ((struct instance_standard__NativeArray*)var76)->values[0] = (val*) var65;
3763 ((struct instance_standard__NativeArray*)var76)->values[1] = (val*) var_t1;
3764 ((struct instance_standard__NativeArray*)var76)->values[2] = (val*) var70;
3765 ((struct instance_standard__NativeArray*)var76)->values[3] = (val*) var_t2;
3766 {
3767 ((void (*)(val* self, val* p0, long p1))(var74->class->vft[COLOR_standard__array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
3768 }
3769 }
3770 {
3771 var77 = ((val* (*)(val* self))(var74->class->vft[COLOR_standard__string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
3772 }
3773 {
3774 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var77); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
3775 }
3776 goto RET_LABEL;
3777 }
3778 }
3779 {
3780 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:ARangeExpr> */
3781 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:ARangeExpr> */
3782 RET_LABEL78:(void)0;
3783 }
3784 }
3785 /* <self:ARangeExpr> isa ACrangeExpr */
3786 cltype = type_nit__ACrangeExpr.color;
3787 idtype = type_nit__ACrangeExpr.id;
3788 if(cltype >= self->type->table_size) {
3789 var79 = 0;
3790 } else {
3791 var79 = self->type->type_table[cltype] == idtype;
3792 }
3793 if (var79){
3794 if (varonce80) {
3795 var81 = varonce80;
3796 } else {
3797 var82 = "init";
3798 var83 = 4;
3799 var84 = standard___standard__NativeString___to_s_with_length(var82, var83);
3800 var81 = var84;
3801 varonce80 = var81;
3802 }
3803 var85 = 0;
3804 {
3805 var86 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var81, var85);
3806 }
3807 var_callsite = var86;
3808 } else {
3809 /* <self:ARangeExpr> isa AOrangeExpr */
3810 cltype88 = type_nit__AOrangeExpr.color;
3811 idtype89 = type_nit__AOrangeExpr.id;
3812 if(cltype88 >= self->type->table_size) {
3813 var87 = 0;
3814 } else {
3815 var87 = self->type->type_table[cltype88] == idtype89;
3816 }
3817 if (var87){
3818 if (varonce90) {
3819 var91 = varonce90;
3820 } else {
3821 var92 = "without_last";
3822 var93 = 12;
3823 var94 = standard___standard__NativeString___to_s_with_length(var92, var93);
3824 var91 = var94;
3825 varonce90 = var91;
3826 }
3827 var95 = 0;
3828 {
3829 var96 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_mtype, var91, var95);
3830 }
3831 var_callsite = var96;
3832 } else {
3833 PRINT_ERROR("Runtime error: %s", "Aborted");
3834 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1304);
3835 show_backtrace(1);
3836 }
3837 }
3838 {
3839 { /* Inline typing#ARangeExpr#init_callsite= (self,var_callsite) on <self:ARangeExpr> */
3840 self->attrs[COLOR_nit__typing__ARangeExpr___init_callsite].val = var_callsite; /* _init_callsite on <self:ARangeExpr> */
3841 RET_LABEL97:(void)0;
3842 }
3843 }
3844 RET_LABEL:;
3845 }
3846 /* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */
3847 void nit__typing___ANullExpr___AExpr__accept_typing(val* self, val* p0) {
3848 val* var_v /* var v: TypeVisitor */;
3849 val* var /* : MModule */;
3850 val* var2 /* : MModule */;
3851 val* var3 /* : Model */;
3852 val* var5 /* : Model */;
3853 val* var6 /* : MNullType */;
3854 val* var8 /* : MNullType */;
3855 var_v = p0;
3856 {
3857 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
3858 var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
3859 if (unlikely(var2 == NULL)) {
3860 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3861 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
3862 show_backtrace(1);
3863 }
3864 var = var2;
3865 RET_LABEL1:(void)0;
3866 }
3867 }
3868 {
3869 { /* Inline mmodule#MModule#model (var) on <var:MModule> */
3870 var5 = var->attrs[COLOR_nit__mmodule__MModule___model].val; /* _model on <var:MModule> */
3871 if (unlikely(var5 == NULL)) {
3872 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
3873 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 73);
3874 show_backtrace(1);
3875 }
3876 var3 = var5;
3877 RET_LABEL4:(void)0;
3878 }
3879 }
3880 {
3881 { /* Inline model#Model#null_type (var3) on <var3:Model> */
3882 var8 = var3->attrs[COLOR_nit__model__Model___null_type].val; /* _null_type on <var3:Model> */
3883 if (unlikely(var8 == NULL)) {
3884 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type");
3885 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 94);
3886 show_backtrace(1);
3887 }
3888 var6 = var8;
3889 RET_LABEL7:(void)0;
3890 }
3891 }
3892 {
3893 { /* Inline typing#AExpr#mtype= (self,var6) on <self:ANullExpr> */
3894 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var6; /* _mtype on <self:ANullExpr> */
3895 RET_LABEL9:(void)0;
3896 }
3897 }
3898 RET_LABEL:;
3899 }
3900 /* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */
3901 val* nit__typing___AIsaExpr___cast_type(val* self) {
3902 val* var /* : nullable MType */;
3903 val* var1 /* : nullable MType */;
3904 var1 = self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val; /* _cast_type on <self:AIsaExpr> */
3905 var = var1;
3906 RET_LABEL:;
3907 return var;
3908 }
3909 /* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */
3910 void nit__typing___AIsaExpr___cast_type_61d(val* self, val* p0) {
3911 self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val = p0; /* _cast_type on <self:AIsaExpr> */
3912 RET_LABEL:;
3913 }
3914 /* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */
3915 void nit__typing___AIsaExpr___AExpr__accept_typing(val* self, val* p0) {
3916 val* var_v /* var v: TypeVisitor */;
3917 val* var /* : AExpr */;
3918 val* var2 /* : AExpr */;
3919 val* var3 /* : AType */;
3920 val* var5 /* : AType */;
3921 val* var6 /* : nullable MType */;
3922 val* var_mtype /* var mtype: nullable MType */;
3923 val* var8 /* : AExpr */;
3924 val* var10 /* : AExpr */;
3925 val* var11 /* : nullable Variable */;
3926 val* var_variable /* var variable: nullable Variable */;
3927 val* var12 /* : null */;
3928 short int var13 /* : Bool */;
3929 short int var14 /* : Bool */;
3930 val* var_other /* var other: nullable Object */;
3931 short int var16 /* : Bool */;
3932 short int var17 /* : Bool */;
3933 val* var18 /* : nullable FlowContext */;
3934 val* var20 /* : nullable FlowContext */;
3935 val* var21 /* : FlowContext */;
3936 val* var23 /* : FlowContext */;
3937 val* var24 /* : nullable MType */;
3938 var_v = p0;
3939 {
3940 { /* Inline parser_nodes#AIsaExpr#n_expr (self) on <self:AIsaExpr> */
3941 var2 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_expr].val; /* _n_expr on <self:AIsaExpr> */
3942 if (unlikely(var2 == NULL)) {
3943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3944 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1905);
3945 show_backtrace(1);
3946 }
3947 var = var2;
3948 RET_LABEL1:(void)0;
3949 }
3950 }
3951 {
3952 { /* Inline parser_nodes#AIsaExpr#n_type (self) on <self:AIsaExpr> */
3953 var5 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_type].val; /* _n_type on <self:AIsaExpr> */
3954 if (unlikely(var5 == NULL)) {
3955 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
3956 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1908);
3957 show_backtrace(1);
3958 }
3959 var3 = var5;
3960 RET_LABEL4:(void)0;
3961 }
3962 }
3963 {
3964 var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_cast(var_v, self, var, var3);
3965 }
3966 var_mtype = var6;
3967 {
3968 { /* Inline typing#AIsaExpr#cast_type= (self,var_mtype) on <self:AIsaExpr> */
3969 self->attrs[COLOR_nit__typing__AIsaExpr___cast_type].val = var_mtype; /* _cast_type on <self:AIsaExpr> */
3970 RET_LABEL7:(void)0;
3971 }
3972 }
3973 {
3974 { /* Inline parser_nodes#AIsaExpr#n_expr (self) on <self:AIsaExpr> */
3975 var10 = self->attrs[COLOR_nit__parser_nodes__AIsaExpr___n_expr].val; /* _n_expr on <self:AIsaExpr> */
3976 if (unlikely(var10 == NULL)) {
3977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3978 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1905);
3979 show_backtrace(1);
3980 }
3981 var8 = var10;
3982 RET_LABEL9:(void)0;
3983 }
3984 }
3985 {
3986 var11 = ((val* (*)(val* self))(var8->class->vft[COLOR_nit__typing__AExpr__its_variable]))(var8) /* its_variable on <var8:AExpr>*/;
3987 }
3988 var_variable = var11;
3989 var12 = NULL;
3990 if (var_variable == NULL) {
3991 var13 = 0; /* is null */
3992 } else {
3993 var13 = 1; /* arg is null and recv is not */
3994 }
3995 if (0) {
3996 { /* Inline kernel#Object#!= (var_variable,var12) on <var_variable:nullable Variable> */
3997 var_other = var12;
3998 {
3999 var16 = ((short int (*)(val* self, val* p0))(var_variable->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
4000 }
4001 var17 = !var16;
4002 var14 = var17;
4003 goto RET_LABEL15;
4004 RET_LABEL15:(void)0;
4005 }
4006 var13 = var14;
4007 }
4008 if (var13){
4009 {
4010 { /* Inline flow#AExpr#after_flow_context (self) on <self:AIsaExpr> */
4011 var20 = self->attrs[COLOR_nit__flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AIsaExpr> */
4012 var18 = var20;
4013 RET_LABEL19:(void)0;
4014 }
4015 }
4016 if (var18 == NULL) {
4017 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4018 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1332);
4019 show_backtrace(1);
4020 } else {
4021 { /* Inline flow#FlowContext#when_true (var18) on <var18:nullable FlowContext> */
4022 if (unlikely(var18 == NULL)) {
4023 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4024 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
4025 show_backtrace(1);
4026 }
4027 var23 = var18->attrs[COLOR_nit__flow__FlowContext___when_true].val; /* _when_true on <var18:nullable FlowContext> */
4028 if (unlikely(var23 == NULL)) {
4029 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
4030 PRINT_ERROR(" (%s:%d)\n", FILE_nit__flow, 224);
4031 show_backtrace(1);
4032 }
4033 var21 = var23;
4034 RET_LABEL22:(void)0;
4035 }
4036 }
4037 {
4038 nit__typing___FlowContext___set_var(var21, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on <var21:FlowContext>*/
4039 }
4040 } else {
4041 }
4042 {
4043 var24 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
4044 }
4045 {
4046 { /* Inline typing#AExpr#mtype= (self,var24) on <self:AIsaExpr> */
4047 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var24; /* _mtype on <self:AIsaExpr> */
4048 RET_LABEL25:(void)0;
4049 }
4050 }
4051 RET_LABEL:;
4052 }
4053 /* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */
4054 void nit__typing___AAsCastExpr___AExpr__accept_typing(val* self, val* p0) {
4055 val* var_v /* var v: TypeVisitor */;
4056 val* var /* : AExpr */;
4057 val* var2 /* : AExpr */;
4058 val* var3 /* : AType */;
4059 val* var5 /* : AType */;
4060 val* var6 /* : nullable MType */;
4061 var_v = p0;
4062 {
4063 { /* Inline parser_nodes#AAsCastForm#n_expr (self) on <self:AAsCastExpr> */
4064 var2 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on <self:AAsCastExpr> */
4065 if (unlikely(var2 == NULL)) {
4066 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4067 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2299);
4068 show_backtrace(1);
4069 }
4070 var = var2;
4071 RET_LABEL1:(void)0;
4072 }
4073 }
4074 {
4075 { /* Inline parser_nodes#AAsCastExpr#n_type (self) on <self:AAsCastExpr> */
4076 var5 = self->attrs[COLOR_nit__parser_nodes__AAsCastExpr___n_type].val; /* _n_type on <self:AAsCastExpr> */
4077 if (unlikely(var5 == NULL)) {
4078 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
4079 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2316);
4080 show_backtrace(1);
4081 }
4082 var3 = var5;
4083 RET_LABEL4:(void)0;
4084 }
4085 }
4086 {
4087 var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_cast(var_v, self, var, var3);
4088 }
4089 {
4090 { /* Inline typing#AExpr#mtype= (self,var6) on <self:AAsCastExpr> */
4091 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var6; /* _mtype on <self:AAsCastExpr> */
4092 RET_LABEL7:(void)0;
4093 }
4094 }
4095 RET_LABEL:;
4096 }
4097 /* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */
4098 void nit__typing___AAsNotnullExpr___AExpr__accept_typing(val* self, val* p0) {
4099 val* var_v /* var v: TypeVisitor */;
4100 val* var /* : AExpr */;
4101 val* var2 /* : AExpr */;
4102 val* var3 /* : nullable MType */;
4103 val* var_mtype /* var mtype: nullable MType */;
4104 val* var4 /* : null */;
4105 short int var5 /* : Bool */;
4106 short int var6 /* : Bool */;
4107 val* var_other /* var other: nullable Object */;
4108 short int var8 /* : Bool */;
4109 short int var10 /* : Bool */;
4110 short int var11 /* : Bool */;
4111 int cltype;
4112 int idtype;
4113 static val* varonce;
4114 val* var12 /* : String */;
4115 char* var13 /* : NativeString */;
4116 long var14 /* : Int */;
4117 val* var15 /* : FlatString */;
4118 short int var16 /* : Bool */;
4119 int cltype17;
4120 int idtype18;
4121 val* var19 /* : MType */;
4122 val* var21 /* : MType */;
4123 short int var24 /* : Bool */;
4124 int cltype25;
4125 int idtype26;
4126 val* var27 /* : ModelBuilder */;
4127 val* var29 /* : ModelBuilder */;
4128 static val* varonce30;
4129 val* var31 /* : String */;
4130 char* var32 /* : NativeString */;
4131 long var33 /* : Int */;
4132 val* var34 /* : FlatString */;
4133 static val* varonce35;
4134 val* var36 /* : String */;
4135 char* var37 /* : NativeString */;
4136 long var38 /* : Int */;
4137 val* var39 /* : FlatString */;
4138 static val* varonce40;
4139 val* var41 /* : String */;
4140 char* var42 /* : NativeString */;
4141 long var43 /* : Int */;
4142 val* var44 /* : FlatString */;
4143 val* var45 /* : Array[Object] */;
4144 long var46 /* : Int */;
4145 val* var47 /* : NativeArray[Object] */;
4146 val* var48 /* : String */;
4147 short int var49 /* : Bool */;
4148 val* var50 /* : MType */;
4149 val* var_u /* var u: MType */;
4150 short int var51 /* : Bool */;
4151 int cltype52;
4152 int idtype53;
4153 short int var54 /* : Bool */;
4154 val* var55 /* : ModelBuilder */;
4155 val* var57 /* : ModelBuilder */;
4156 static val* varonce58;
4157 val* var59 /* : String */;
4158 char* var60 /* : NativeString */;
4159 long var61 /* : Int */;
4160 val* var62 /* : FlatString */;
4161 static val* varonce63;
4162 val* var64 /* : String */;
4163 char* var65 /* : NativeString */;
4164 long var66 /* : Int */;
4165 val* var67 /* : FlatString */;
4166 static val* varonce68;
4167 val* var69 /* : String */;
4168 char* var70 /* : NativeString */;
4169 long var71 /* : Int */;
4170 val* var72 /* : FlatString */;
4171 static val* varonce73;
4172 val* var74 /* : String */;
4173 char* var75 /* : NativeString */;
4174 long var76 /* : Int */;
4175 val* var77 /* : FlatString */;
4176 val* var78 /* : Array[Object] */;
4177 long var79 /* : Int */;
4178 val* var80 /* : NativeArray[Object] */;
4179 val* var81 /* : String */;
4180 var_v = p0;
4181 {
4182 { /* Inline parser_nodes#AAsCastForm#n_expr (self) on <self:AAsNotnullExpr> */
4183 var2 = self->attrs[COLOR_nit__parser_nodes__AAsCastForm___n_expr].val; /* _n_expr on <self:AAsNotnullExpr> */
4184 if (unlikely(var2 == NULL)) {
4185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4186 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2299);
4187 show_backtrace(1);
4188 }
4189 var = var2;
4190 RET_LABEL1:(void)0;
4191 }
4192 }
4193 {
4194 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
4195 }
4196 var_mtype = var3;
4197 var4 = NULL;
4198 if (var_mtype == NULL) {
4199 var5 = 1; /* is null */
4200 } else {
4201 var5 = 0; /* arg is null but recv is not */
4202 }
4203 if (0) {
4204 { /* Inline kernel#Object#== (var_mtype,var4) on <var_mtype:nullable MType> */
4205 var_other = var4;
4206 {
4207 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
4208 var10 = var_mtype == var_other;
4209 var8 = var10;
4210 goto RET_LABEL9;
4211 RET_LABEL9:(void)0;
4212 }
4213 }
4214 var6 = var8;
4215 goto RET_LABEL7;
4216 RET_LABEL7:(void)0;
4217 }
4218 var5 = var6;
4219 }
4220 if (var5){
4221 goto RET_LABEL;
4222 } else {
4223 }
4224 /* <var_mtype:nullable MType(MType)> isa MNullType */
4225 cltype = type_nit__MNullType.color;
4226 idtype = type_nit__MNullType.id;
4227 if(cltype >= var_mtype->type->table_size) {
4228 var11 = 0;
4229 } else {
4230 var11 = var_mtype->type->type_table[cltype] == idtype;
4231 }
4232 if (var11){
4233 if (varonce) {
4234 var12 = varonce;
4235 } else {
4236 var13 = "Type error: as(not null) on null";
4237 var14 = 32;
4238 var15 = standard___standard__NativeString___to_s_with_length(var13, var14);
4239 var12 = var15;
4240 varonce = var12;
4241 }
4242 {
4243 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var12); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
4244 }
4245 goto RET_LABEL;
4246 } else {
4247 }
4248 /* <var_mtype:nullable MType(MType)> isa MNullableType */
4249 cltype17 = type_nit__MNullableType.color;
4250 idtype18 = type_nit__MNullableType.id;
4251 if(cltype17 >= var_mtype->type->table_size) {
4252 var16 = 0;
4253 } else {
4254 var16 = var_mtype->type->type_table[cltype17] == idtype18;
4255 }
4256 if (var16){
4257 {
4258 { /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:nullable MType(MNullableType)> */
4259 var21 = var_mtype->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_mtype:nullable MType(MNullableType)> */
4260 if (unlikely(var21 == NULL)) {
4261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4262 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
4263 show_backtrace(1);
4264 }
4265 var19 = var21;
4266 RET_LABEL20:(void)0;
4267 }
4268 }
4269 {
4270 { /* Inline typing#AExpr#mtype= (self,var19) on <self:AAsNotnullExpr> */
4271 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var19; /* _mtype on <self:AAsNotnullExpr> */
4272 RET_LABEL22:(void)0;
4273 }
4274 }
4275 goto RET_LABEL;
4276 } else {
4277 }
4278 {
4279 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AAsNotnullExpr> */
4280 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AAsNotnullExpr> */
4281 RET_LABEL23:(void)0;
4282 }
4283 }
4284 /* <var_mtype:nullable MType(MType)> isa MClassType */
4285 cltype25 = type_nit__MClassType.color;
4286 idtype26 = type_nit__MClassType.id;
4287 if(cltype25 >= var_mtype->type->table_size) {
4288 var24 = 0;
4289 } else {
4290 var24 = var_mtype->type->type_table[cltype25] == idtype26;
4291 }
4292 if (var24){
4293 {
4294 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
4295 var29 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
4296 if (unlikely(var29 == NULL)) {
4297 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4298 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
4299 show_backtrace(1);
4300 }
4301 var27 = var29;
4302 RET_LABEL28:(void)0;
4303 }
4304 }
4305 if (varonce30) {
4306 var31 = varonce30;
4307 } else {
4308 var32 = "useless-type-test";
4309 var33 = 17;
4310 var34 = standard___standard__NativeString___to_s_with_length(var32, var33);
4311 var31 = var34;
4312 varonce30 = var31;
4313 }
4314 if (varonce35) {
4315 var36 = varonce35;
4316 } else {
4317 var37 = "Warning: expression is already not null, since it is a `";
4318 var38 = 56;
4319 var39 = standard___standard__NativeString___to_s_with_length(var37, var38);
4320 var36 = var39;
4321 varonce35 = var36;
4322 }
4323 if (varonce40) {
4324 var41 = varonce40;
4325 } else {
4326 var42 = "`.";
4327 var43 = 2;
4328 var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
4329 var41 = var44;
4330 varonce40 = var41;
4331 }
4332 var45 = NEW_standard__Array(&type_standard__Array__standard__Object);
4333 { /* var45 = array_instance Array[Object] */
4334 var46 = 3;
4335 var47 = NEW_standard__NativeArray(var46, &type_standard__NativeArray__standard__Object);
4336 ((struct instance_standard__NativeArray*)var47)->values[0] = (val*) var36;
4337 ((struct instance_standard__NativeArray*)var47)->values[1] = (val*) var_mtype;
4338 ((struct instance_standard__NativeArray*)var47)->values[2] = (val*) var41;
4339 {
4340 ((void (*)(val* self, val* p0, long p1))(var45->class->vft[COLOR_standard__array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
4341 }
4342 }
4343 {
4344 var48 = ((val* (*)(val* self))(var45->class->vft[COLOR_standard__string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
4345 }
4346 {
4347 nit___nit__ModelBuilder___warning(var27, self, var31, var48); /* Direct call modelbuilder_base#ModelBuilder#warning on <var27:ModelBuilder>*/
4348 }
4349 goto RET_LABEL;
4350 } else {
4351 }
4352 {
4353 var49 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:nullable MType(MType)>*/;
4354 }
4355 if (unlikely(!var49)) {
4356 PRINT_ERROR("Runtime error: %s", "Assert failed");
4357 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1366);
4358 show_backtrace(1);
4359 }
4360 {
4361 var50 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_mtype);
4362 }
4363 var_u = var50;
4364 /* <var_u:MType> isa MNullableType */
4365 cltype52 = type_nit__MNullableType.color;
4366 idtype53 = type_nit__MNullableType.id;
4367 if(cltype52 >= var_u->type->table_size) {
4368 var51 = 0;
4369 } else {
4370 var51 = var_u->type->type_table[cltype52] == idtype53;
4371 }
4372 var54 = !var51;
4373 if (var54){
4374 {
4375 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
4376 var57 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
4377 if (unlikely(var57 == NULL)) {
4378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4379 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
4380 show_backtrace(1);
4381 }
4382 var55 = var57;
4383 RET_LABEL56:(void)0;
4384 }
4385 }
4386 if (varonce58) {
4387 var59 = varonce58;
4388 } else {
4389 var60 = "useless-type-test";
4390 var61 = 17;
4391 var62 = standard___standard__NativeString___to_s_with_length(var60, var61);
4392 var59 = var62;
4393 varonce58 = var59;
4394 }
4395 if (varonce63) {
4396 var64 = varonce63;
4397 } else {
4398 var65 = "Warning: expression is already not null, since it is a `";
4399 var66 = 56;
4400 var67 = standard___standard__NativeString___to_s_with_length(var65, var66);
4401 var64 = var67;
4402 varonce63 = var64;
4403 }
4404 if (varonce68) {
4405 var69 = varonce68;
4406 } else {
4407 var70 = ": ";
4408 var71 = 2;
4409 var72 = standard___standard__NativeString___to_s_with_length(var70, var71);
4410 var69 = var72;
4411 varonce68 = var69;
4412 }
4413 if (varonce73) {
4414 var74 = varonce73;
4415 } else {
4416 var75 = "`.";
4417 var76 = 2;
4418 var77 = standard___standard__NativeString___to_s_with_length(var75, var76);
4419 var74 = var77;
4420 varonce73 = var74;
4421 }
4422 var78 = NEW_standard__Array(&type_standard__Array__standard__Object);
4423 { /* var78 = array_instance Array[Object] */
4424 var79 = 5;
4425 var80 = NEW_standard__NativeArray(var79, &type_standard__NativeArray__standard__Object);
4426 ((struct instance_standard__NativeArray*)var80)->values[0] = (val*) var64;
4427 ((struct instance_standard__NativeArray*)var80)->values[1] = (val*) var_mtype;
4428 ((struct instance_standard__NativeArray*)var80)->values[2] = (val*) var69;
4429 ((struct instance_standard__NativeArray*)var80)->values[3] = (val*) var_u;
4430 ((struct instance_standard__NativeArray*)var80)->values[4] = (val*) var74;
4431 {
4432 ((void (*)(val* self, val* p0, long p1))(var78->class->vft[COLOR_standard__array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
4433 }
4434 }
4435 {
4436 var81 = ((val* (*)(val* self))(var78->class->vft[COLOR_standard__string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
4437 }
4438 {
4439 nit___nit__ModelBuilder___warning(var55, self, var59, var81); /* Direct call modelbuilder_base#ModelBuilder#warning on <var55:ModelBuilder>*/
4440 }
4441 goto RET_LABEL;
4442 } else {
4443 }
4444 RET_LABEL:;
4445 }
4446 /* method typing#AParExpr#accept_typing for (self: AParExpr, TypeVisitor) */
4447 void nit__typing___AParExpr___AExpr__accept_typing(val* self, val* p0) {
4448 val* var_v /* var v: TypeVisitor */;
4449 val* var /* : AExpr */;
4450 val* var2 /* : AExpr */;
4451 val* var3 /* : nullable MType */;
4452 var_v = p0;
4453 {
4454 { /* Inline parser_nodes#AParExpr#n_expr (self) on <self:AParExpr> */
4455 var2 = self->attrs[COLOR_nit__parser_nodes__AParExpr___n_expr].val; /* _n_expr on <self:AParExpr> */
4456 if (unlikely(var2 == NULL)) {
4457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4458 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2288);
4459 show_backtrace(1);
4460 }
4461 var = var2;
4462 RET_LABEL1:(void)0;
4463 }
4464 }
4465 {
4466 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
4467 }
4468 {
4469 { /* Inline typing#AExpr#mtype= (self,var3) on <self:AParExpr> */
4470 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var3; /* _mtype on <self:AParExpr> */
4471 RET_LABEL4:(void)0;
4472 }
4473 }
4474 RET_LABEL:;
4475 }
4476 /* method typing#AOnceExpr#accept_typing for (self: AOnceExpr, TypeVisitor) */
4477 void nit__typing___AOnceExpr___AExpr__accept_typing(val* self, val* p0) {
4478 val* var_v /* var v: TypeVisitor */;
4479 val* var /* : AExpr */;
4480 val* var2 /* : AExpr */;
4481 val* var3 /* : nullable MType */;
4482 var_v = p0;
4483 {
4484 { /* Inline parser_nodes#AOnceExpr#n_expr (self) on <self:AOnceExpr> */
4485 var2 = self->attrs[COLOR_nit__parser_nodes__AOnceExpr___n_expr].val; /* _n_expr on <self:AOnceExpr> */
4486 if (unlikely(var2 == NULL)) {
4487 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4488 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1794);
4489 show_backtrace(1);
4490 }
4491 var = var2;
4492 RET_LABEL1:(void)0;
4493 }
4494 }
4495 {
4496 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
4497 }
4498 {
4499 { /* Inline typing#AExpr#mtype= (self,var3) on <self:AOnceExpr> */
4500 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var3; /* _mtype on <self:AOnceExpr> */
4501 RET_LABEL4:(void)0;
4502 }
4503 }
4504 RET_LABEL:;
4505 }
4506 /* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */
4507 val* nit__typing___ASelfExpr___AExpr__its_variable(val* self) {
4508 val* var /* : nullable Variable */;
4509 val* var1 /* : nullable Variable */;
4510 var1 = self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val; /* _its_variable on <self:ASelfExpr> */
4511 var = var1;
4512 RET_LABEL:;
4513 return var;
4514 }
4515 /* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */
4516 void nit__typing___ASelfExpr___its_variable_61d(val* self, val* p0) {
4517 self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = p0; /* _its_variable on <self:ASelfExpr> */
4518 RET_LABEL:;
4519 }
4520 /* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */
4521 void nit__typing___ASelfExpr___AExpr__accept_typing(val* self, val* p0) {
4522 val* var_v /* var v: TypeVisitor */;
4523 short int var /* : Bool */;
4524 short int var1 /* : Bool */;
4525 short int var3 /* : Bool */;
4526 short int var_ /* var : Bool */;
4527 short int var4 /* : Bool */;
4528 int cltype;
4529 int idtype;
4530 short int var5 /* : Bool */;
4531 static val* varonce;
4532 val* var6 /* : String */;
4533 char* var7 /* : NativeString */;
4534 long var8 /* : Int */;
4535 val* var9 /* : FlatString */;
4536 val* var10 /* : Variable */;
4537 val* var12 /* : Variable */;
4538 val* var_variable /* var variable: Variable */;
4539 val* var14 /* : nullable MType */;
4540 var_v = p0;
4541 {
4542 { /* Inline typing#TypeVisitor#is_toplevel_context (var_v) on <var_v:TypeVisitor> */
4543 var3 = var_v->attrs[COLOR_nit__typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <var_v:TypeVisitor> */
4544 var1 = var3;
4545 RET_LABEL2:(void)0;
4546 }
4547 }
4548 var_ = var1;
4549 if (var1){
4550 /* <self:ASelfExpr> isa AImplicitSelfExpr */
4551 cltype = type_nit__AImplicitSelfExpr.color;
4552 idtype = type_nit__AImplicitSelfExpr.id;
4553 if(cltype >= self->type->table_size) {
4554 var4 = 0;
4555 } else {
4556 var4 = self->type->type_table[cltype] == idtype;
4557 }
4558 var5 = !var4;
4559 var = var5;
4560 } else {
4561 var = var_;
4562 }
4563 if (var){
4564 if (varonce) {
4565 var6 = varonce;
4566 } else {
4567 var7 = "Error: self cannot be used in top-level method.";
4568 var8 = 47;
4569 var9 = standard___standard__NativeString___to_s_with_length(var7, var8);
4570 var6 = var9;
4571 varonce = var6;
4572 }
4573 {
4574 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var6); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
4575 }
4576 } else {
4577 }
4578 {
4579 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
4580 var12 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
4581 if (unlikely(var12 == NULL)) {
4582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
4583 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50);
4584 show_backtrace(1);
4585 }
4586 var10 = var12;
4587 RET_LABEL11:(void)0;
4588 }
4589 }
4590 var_variable = var10;
4591 {
4592 { /* Inline typing#ASelfExpr#its_variable= (self,var_variable) on <self:ASelfExpr> */
4593 self->attrs[COLOR_nit__typing__ASelfExpr___its_variable].val = var_variable; /* _its_variable on <self:ASelfExpr> */
4594 RET_LABEL13:(void)0;
4595 }
4596 }
4597 {
4598 var14 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var_variable);
4599 }
4600 {
4601 { /* Inline typing#AExpr#mtype= (self,var14) on <self:ASelfExpr> */
4602 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var14; /* _mtype on <self:ASelfExpr> */
4603 RET_LABEL15:(void)0;
4604 }
4605 }
4606 RET_LABEL:;
4607 }
4608 /* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */
4609 val* nit__typing___ASendExpr___callsite(val* self) {
4610 val* var /* : nullable CallSite */;
4611 val* var1 /* : nullable CallSite */;
4612 var1 = self->attrs[COLOR_nit__typing__ASendExpr___callsite].val; /* _callsite on <self:ASendExpr> */
4613 var = var1;
4614 RET_LABEL:;
4615 return var;
4616 }
4617 /* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */
4618 void nit__typing___ASendExpr___callsite_61d(val* self, val* p0) {
4619 self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = p0; /* _callsite on <self:ASendExpr> */
4620 RET_LABEL:;
4621 }
4622 /* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */
4623 void nit__typing___ASendExpr___AExpr__accept_typing(val* self, val* p0) {
4624 val* var_v /* var v: TypeVisitor */;
4625 val* var /* : AExpr */;
4626 val* var2 /* : AExpr */;
4627 val* var3 /* : nullable MType */;
4628 val* var_recvtype /* var recvtype: nullable MType */;
4629 val* var4 /* : String */;
4630 val* var_name /* var name: String */;
4631 val* var5 /* : null */;
4632 short int var6 /* : Bool */;
4633 short int var7 /* : Bool */;
4634 val* var_other /* var other: nullable Object */;
4635 short int var9 /* : Bool */;
4636 short int var11 /* : Bool */;
4637 val* var12 /* : AExpr */;
4638 val* var14 /* : AExpr */;
4639 short int var15 /* : Bool */;
4640 int cltype;
4641 int idtype;
4642 val* var16 /* : nullable CallSite */;
4643 val* var_callsite /* var callsite: nullable CallSite */;
4644 val* var17 /* : null */;
4645 short int var18 /* : Bool */;
4646 short int var19 /* : Bool */;
4647 short int var21 /* : Bool */;
4648 short int var23 /* : Bool */;
4649 val* var25 /* : MSignature */;
4650 val* var27 /* : MSignature */;
4651 val* var_msignature /* var msignature: MSignature */;
4652 val* var28 /* : Array[AExpr] */;
4653 val* var_args /* var args: Array[AExpr] */;
4654 short int var29 /* : Bool */;
4655 val* var30 /* : MMethod */;
4656 val* var32 /* : MMethod */;
4657 short int var33 /* : Bool */;
4658 short int var35 /* : Bool */;
4659 val* var36 /* : nullable MPropDef */;
4660 val* var38 /* : nullable MPropDef */;
4661 val* var_vmpropdef /* var vmpropdef: nullable MPropDef */;
4662 short int var39 /* : Bool */;
4663 short int var40 /* : Bool */;
4664 int cltype41;
4665 int idtype42;
4666 short int var_ /* var : Bool */;
4667 val* var43 /* : MProperty */;
4668 val* var45 /* : MProperty */;
4669 short int var46 /* : Bool */;
4670 short int var48 /* : Bool */;
4671 short int var49 /* : Bool */;
4672 static val* varonce;
4673 val* var50 /* : String */;
4674 char* var51 /* : NativeString */;
4675 long var52 /* : Int */;
4676 val* var53 /* : FlatString */;
4677 short int var54 /* : Bool */;
4678 short int var55 /* : Bool */;
4679 short int var56 /* : Bool */;
4680 int cltype57;
4681 int idtype58;
4682 short int var_59 /* var : Bool */;
4683 val* var60 /* : MProperty */;
4684 val* var62 /* : MProperty */;
4685 short int var63 /* : Bool */;
4686 short int var65 /* : Bool */;
4687 short int var_66 /* var : Bool */;
4688 val* var67 /* : MMethod */;
4689 val* var69 /* : MMethod */;
4690 short int var70 /* : Bool */;
4691 short int var72 /* : Bool */;
4692 short int var73 /* : Bool */;
4693 static val* varonce74;
4694 val* var75 /* : String */;
4695 char* var76 /* : NativeString */;
4696 long var77 /* : Int */;
4697 val* var78 /* : FlatString */;
4698 static val* varonce79;
4699 val* var80 /* : String */;
4700 char* var81 /* : NativeString */;
4701 long var82 /* : Int */;
4702 val* var83 /* : FlatString */;
4703 val* var84 /* : MMethod */;
4704 val* var86 /* : MMethod */;
4705 val* var87 /* : Array[Object] */;
4706 long var88 /* : Int */;
4707 val* var89 /* : NativeArray[Object] */;
4708 val* var90 /* : String */;
4709 val* var91 /* : nullable MType */;
4710 val* var93 /* : nullable MType */;
4711 val* var_ret /* var ret: nullable MType */;
4712 val* var94 /* : null */;
4713 short int var95 /* : Bool */;
4714 short int var96 /* : Bool */;
4715 val* var_other98 /* var other: nullable Object */;
4716 short int var99 /* : Bool */;
4717 short int var100 /* : Bool */;
4718 short int var102 /* : Bool */;
4719 var_v = p0;
4720 {
4721 { /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:ASendExpr> */
4722 var2 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:ASendExpr> */
4723 if (unlikely(var2 == NULL)) {
4724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4725 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802);
4726 show_backtrace(1);
4727 }
4728 var = var2;
4729 RET_LABEL1:(void)0;
4730 }
4731 }
4732 {
4733 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
4734 }
4735 var_recvtype = var3;
4736 {
4737 var4 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendExpr>*/;
4738 }
4739 var_name = var4;
4740 var5 = NULL;
4741 if (var_recvtype == NULL) {
4742 var6 = 1; /* is null */
4743 } else {
4744 var6 = 0; /* arg is null but recv is not */
4745 }
4746 if (0) {
4747 { /* Inline kernel#Object#== (var_recvtype,var5) on <var_recvtype:nullable MType> */
4748 var_other = var5;
4749 {
4750 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
4751 var11 = var_recvtype == var_other;
4752 var9 = var11;
4753 goto RET_LABEL10;
4754 RET_LABEL10:(void)0;
4755 }
4756 }
4757 var7 = var9;
4758 goto RET_LABEL8;
4759 RET_LABEL8:(void)0;
4760 }
4761 var6 = var7;
4762 }
4763 if (var6){
4764 goto RET_LABEL;
4765 } else {
4766 }
4767 {
4768 { /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:ASendExpr> */
4769 var14 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:ASendExpr> */
4770 if (unlikely(var14 == NULL)) {
4771 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4772 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802);
4773 show_backtrace(1);
4774 }
4775 var12 = var14;
4776 RET_LABEL13:(void)0;
4777 }
4778 }
4779 /* <var12:AExpr> isa ASelfExpr */
4780 cltype = type_nit__ASelfExpr.color;
4781 idtype = type_nit__ASelfExpr.id;
4782 if(cltype >= var12->type->table_size) {
4783 var15 = 0;
4784 } else {
4785 var15 = var12->type->type_table[cltype] == idtype;
4786 }
4787 {
4788 var16 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var_name, var15);
4789 }
4790 var_callsite = var16;
4791 var17 = NULL;
4792 if (var_callsite == NULL) {
4793 var18 = 1; /* is null */
4794 } else {
4795 var18 = 0; /* arg is null but recv is not */
4796 }
4797 if (0) {
4798 { /* Inline kernel#Object#== (var_callsite,var17) on <var_callsite:nullable CallSite> */
4799 var_other = var17;
4800 {
4801 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
4802 var23 = var_callsite == var_other;
4803 var21 = var23;
4804 goto RET_LABEL22;
4805 RET_LABEL22:(void)0;
4806 }
4807 }
4808 var19 = var21;
4809 goto RET_LABEL20;
4810 RET_LABEL20:(void)0;
4811 }
4812 var18 = var19;
4813 }
4814 if (var18){
4815 goto RET_LABEL;
4816 } else {
4817 }
4818 {
4819 { /* Inline typing#ASendExpr#callsite= (self,var_callsite) on <self:ASendExpr> */
4820 self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = var_callsite; /* _callsite on <self:ASendExpr> */
4821 RET_LABEL24:(void)0;
4822 }
4823 }
4824 {
4825 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
4826 var27 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
4827 if (unlikely(var27 == NULL)) {
4828 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
4829 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494);
4830 show_backtrace(1);
4831 }
4832 var25 = var27;
4833 RET_LABEL26:(void)0;
4834 }
4835 }
4836 var_msignature = var25;
4837 {
4838 var28 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
4839 }
4840 var_args = var28;
4841 {
4842 var29 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args);
4843 }
4844 {
4845 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
4846 var32 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
4847 if (unlikely(var32 == NULL)) {
4848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4849 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
4850 show_backtrace(1);
4851 }
4852 var30 = var32;
4853 RET_LABEL31:(void)0;
4854 }
4855 }
4856 {
4857 { /* Inline model#MMethod#is_init (var30) on <var30:MMethod> */
4858 var35 = var30->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var30:MMethod> */
4859 var33 = var35;
4860 RET_LABEL34:(void)0;
4861 }
4862 }
4863 if (var33){
4864 {
4865 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
4866 var38 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
4867 var36 = var38;
4868 RET_LABEL37:(void)0;
4869 }
4870 }
4871 var_vmpropdef = var36;
4872 /* <var_vmpropdef:nullable MPropDef> isa MMethodDef */
4873 cltype41 = type_nit__MMethodDef.color;
4874 idtype42 = type_nit__MMethodDef.id;
4875 if(var_vmpropdef == NULL) {
4876 var40 = 0;
4877 } else {
4878 if(cltype41 >= var_vmpropdef->type->table_size) {
4879 var40 = 0;
4880 } else {
4881 var40 = var_vmpropdef->type->type_table[cltype41] == idtype42;
4882 }
4883 }
4884 var_ = var40;
4885 if (var40){
4886 {
4887 { /* Inline model#MPropDef#mproperty (var_vmpropdef) on <var_vmpropdef:nullable MPropDef(MMethodDef)> */
4888 var45 = var_vmpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_vmpropdef:nullable MPropDef(MMethodDef)> */
4889 if (unlikely(var45 == NULL)) {
4890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4891 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
4892 show_backtrace(1);
4893 }
4894 var43 = var45;
4895 RET_LABEL44:(void)0;
4896 }
4897 }
4898 {
4899 { /* Inline model#MMethod#is_init (var43) on <var43:MProperty(MMethod)> */
4900 var48 = var43->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var43:MProperty(MMethod)> */
4901 var46 = var48;
4902 RET_LABEL47:(void)0;
4903 }
4904 }
4905 var39 = var46;
4906 } else {
4907 var39 = var_;
4908 }
4909 var49 = !var39;
4910 if (var49){
4911 if (varonce) {
4912 var50 = varonce;
4913 } else {
4914 var51 = "Can call a init only in another init";
4915 var52 = 36;
4916 var53 = standard___standard__NativeString___to_s_with_length(var51, var52);
4917 var50 = var53;
4918 varonce = var50;
4919 }
4920 {
4921 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var50); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
4922 }
4923 } else {
4924 }
4925 /* <var_vmpropdef:nullable MPropDef> isa MMethodDef */
4926 cltype57 = type_nit__MMethodDef.color;
4927 idtype58 = type_nit__MMethodDef.id;
4928 if(var_vmpropdef == NULL) {
4929 var56 = 0;
4930 } else {
4931 if(cltype57 >= var_vmpropdef->type->table_size) {
4932 var56 = 0;
4933 } else {
4934 var56 = var_vmpropdef->type->type_table[cltype57] == idtype58;
4935 }
4936 }
4937 var_59 = var56;
4938 if (var56){
4939 {
4940 { /* Inline model#MPropDef#mproperty (var_vmpropdef) on <var_vmpropdef:nullable MPropDef(MMethodDef)> */
4941 var62 = var_vmpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_vmpropdef:nullable MPropDef(MMethodDef)> */
4942 if (unlikely(var62 == NULL)) {
4943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4944 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
4945 show_backtrace(1);
4946 }
4947 var60 = var62;
4948 RET_LABEL61:(void)0;
4949 }
4950 }
4951 {
4952 { /* Inline model#MMethod#is_root_init (var60) on <var60:MProperty(MMethod)> */
4953 var65 = var60->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var60:MProperty(MMethod)> */
4954 var63 = var65;
4955 RET_LABEL64:(void)0;
4956 }
4957 }
4958 var55 = var63;
4959 } else {
4960 var55 = var_59;
4961 }
4962 var_66 = var55;
4963 if (var55){
4964 {
4965 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
4966 var69 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
4967 if (unlikely(var69 == NULL)) {
4968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4969 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
4970 show_backtrace(1);
4971 }
4972 var67 = var69;
4973 RET_LABEL68:(void)0;
4974 }
4975 }
4976 {
4977 { /* Inline model#MMethod#is_root_init (var67) on <var67:MMethod> */
4978 var72 = var67->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var67:MMethod> */
4979 var70 = var72;
4980 RET_LABEL71:(void)0;
4981 }
4982 }
4983 var73 = !var70;
4984 var54 = var73;
4985 } else {
4986 var54 = var_66;
4987 }
4988 if (var54){
4989 if (varonce74) {
4990 var75 = varonce74;
4991 } else {
4992 var76 = "Error: ";
4993 var77 = 7;
4994 var78 = standard___standard__NativeString___to_s_with_length(var76, var77);
4995 var75 = var78;
4996 varonce74 = var75;
4997 }
4998 if (varonce79) {
4999 var80 = varonce79;
5000 } else {
5001 var81 = " cannot call a factory ";
5002 var82 = 23;
5003 var83 = standard___standard__NativeString___to_s_with_length(var81, var82);
5004 var80 = var83;
5005 varonce79 = var80;
5006 }
5007 {
5008 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
5009 var86 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
5010 if (unlikely(var86 == NULL)) {
5011 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5012 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
5013 show_backtrace(1);
5014 }
5015 var84 = var86;
5016 RET_LABEL85:(void)0;
5017 }
5018 }
5019 var87 = NEW_standard__Array(&type_standard__Array__standard__Object);
5020 { /* var87 = array_instance Array[Object] */
5021 var88 = 4;
5022 var89 = NEW_standard__NativeArray(var88, &type_standard__NativeArray__standard__Object);
5023 ((struct instance_standard__NativeArray*)var89)->values[0] = (val*) var75;
5024 ((struct instance_standard__NativeArray*)var89)->values[1] = (val*) var_vmpropdef;
5025 ((struct instance_standard__NativeArray*)var89)->values[2] = (val*) var80;
5026 ((struct instance_standard__NativeArray*)var89)->values[3] = (val*) var84;
5027 {
5028 ((void (*)(val* self, val* p0, long p1))(var87->class->vft[COLOR_standard__array__Array__with_native]))(var87, var89, var88) /* with_native on <var87:Array[Object]>*/;
5029 }
5030 }
5031 {
5032 var90 = ((val* (*)(val* self))(var87->class->vft[COLOR_standard__string__Object__to_s]))(var87) /* to_s on <var87:Array[Object]>*/;
5033 }
5034 {
5035 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var90); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
5036 }
5037 } else {
5038 }
5039 } else {
5040 }
5041 {
5042 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
5043 var93 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
5044 var91 = var93;
5045 RET_LABEL92:(void)0;
5046 }
5047 }
5048 var_ret = var91;
5049 var94 = NULL;
5050 if (var_ret == NULL) {
5051 var95 = 0; /* is null */
5052 } else {
5053 var95 = 1; /* arg is null and recv is not */
5054 }
5055 if (0) {
5056 { /* Inline kernel#Object#!= (var_ret,var94) on <var_ret:nullable MType> */
5057 var_other98 = var94;
5058 {
5059 var99 = ((short int (*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other98) /* == on <var_ret:nullable MType(MType)>*/;
5060 }
5061 var100 = !var99;
5062 var96 = var100;
5063 goto RET_LABEL97;
5064 RET_LABEL97:(void)0;
5065 }
5066 var95 = var96;
5067 }
5068 if (var95){
5069 {
5070 { /* Inline typing#AExpr#mtype= (self,var_ret) on <self:ASendExpr> */
5071 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_ret; /* _mtype on <self:ASendExpr> */
5072 RET_LABEL101:(void)0;
5073 }
5074 }
5075 } else {
5076 var102 = 1;
5077 {
5078 { /* Inline typing#AExpr#is_typed= (self,var102) on <self:ASendExpr> */
5079 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var102; /* _is_typed on <self:ASendExpr> */
5080 RET_LABEL103:(void)0;
5081 }
5082 }
5083 }
5084 RET_LABEL:;
5085 }
5086 /* method typing#ASendExpr#raw_arguments for (self: ASendExpr): Array[AExpr] */
5087 val* nit__typing___ASendExpr___raw_arguments(val* self) {
5088 val* var /* : Array[AExpr] */;
5089 val* var1 /* : Array[AExpr] */;
5090 {
5091 var1 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
5092 }
5093 var = var1;
5094 goto RET_LABEL;
5095 RET_LABEL:;
5096 return var;
5097 }
5098 /* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */
5099 val* nit__typing___ABinopExpr___ASendExpr__compute_raw_arguments(val* self) {
5100 val* var /* : Array[AExpr] */;
5101 val* var1 /* : Array[AExpr] */;
5102 long var2 /* : Int */;
5103 val* var_ /* var : Array[AExpr] */;
5104 val* var3 /* : AExpr */;
5105 val* var5 /* : AExpr */;
5106 var1 = NEW_standard__Array(&type_standard__Array__nit__AExpr);
5107 var2 = 1;
5108 {
5109 standard___standard__Array___with_capacity(var1, var2); /* Direct call array#Array#with_capacity on <var1:Array[AExpr]>*/
5110 }
5111 var_ = var1;
5112 {
5113 { /* Inline parser_nodes#ABinopExpr#n_expr2 (self) on <self:ABinopExpr> */
5114 var5 = self->attrs[COLOR_nit__parser_nodes__ABinopExpr___n_expr2].val; /* _n_expr2 on <self:ABinopExpr> */
5115 if (unlikely(var5 == NULL)) {
5116 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
5117 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1809);
5118 show_backtrace(1);
5119 }
5120 var3 = var5;
5121 RET_LABEL4:(void)0;
5122 }
5123 }
5124 {
5125 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var3); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
5126 }
5127 var = var_;
5128 goto RET_LABEL;
5129 RET_LABEL:;
5130 return var;
5131 }
5132 /* method typing#AEqExpr#property_name for (self: AEqExpr): String */
5133 val* nit__typing___AEqExpr___ASendExpr__property_name(val* self) {
5134 val* var /* : String */;
5135 static val* varonce;
5136 val* var1 /* : String */;
5137 char* var2 /* : NativeString */;
5138 long var3 /* : Int */;
5139 val* var4 /* : FlatString */;
5140 if (varonce) {
5141 var1 = varonce;
5142 } else {
5143 var2 = "==";
5144 var3 = 2;
5145 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5146 var1 = var4;
5147 varonce = var1;
5148 }
5149 var = var1;
5150 goto RET_LABEL;
5151 RET_LABEL:;
5152 return var;
5153 }
5154 /* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */
5155 void nit__typing___AEqExpr___AExpr__accept_typing(val* self, val* p0) {
5156 val* var_v /* var v: TypeVisitor */;
5157 var_v = p0;
5158 {
5159 ((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__typing___AEqExpr___AExpr__accept_typing]))(self, p0) /* accept_typing on <self:AEqExpr>*/;
5160 }
5161 {
5162 nit__typing___nit__typing__TypeVisitor___null_test(var_v, self); /* Direct call typing#TypeVisitor#null_test on <var_v:TypeVisitor>*/
5163 }
5164 RET_LABEL:;
5165 }
5166 /* method typing#ANeExpr#property_name for (self: ANeExpr): String */
5167 val* nit__typing___ANeExpr___ASendExpr__property_name(val* self) {
5168 val* var /* : String */;
5169 static val* varonce;
5170 val* var1 /* : String */;
5171 char* var2 /* : NativeString */;
5172 long var3 /* : Int */;
5173 val* var4 /* : FlatString */;
5174 if (varonce) {
5175 var1 = varonce;
5176 } else {
5177 var2 = "!=";
5178 var3 = 2;
5179 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5180 var1 = var4;
5181 varonce = var1;
5182 }
5183 var = var1;
5184 goto RET_LABEL;
5185 RET_LABEL:;
5186 return var;
5187 }
5188 /* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */
5189 void nit__typing___ANeExpr___AExpr__accept_typing(val* self, val* p0) {
5190 val* var_v /* var v: TypeVisitor */;
5191 var_v = p0;
5192 {
5193 ((void (*)(val* self, val* p0))(self->class->vft[COLOR_nit__typing___ANeExpr___AExpr__accept_typing]))(self, p0) /* accept_typing on <self:ANeExpr>*/;
5194 }
5195 {
5196 nit__typing___nit__typing__TypeVisitor___null_test(var_v, self); /* Direct call typing#TypeVisitor#null_test on <var_v:TypeVisitor>*/
5197 }
5198 RET_LABEL:;
5199 }
5200 /* method typing#ALtExpr#property_name for (self: ALtExpr): String */
5201 val* nit__typing___ALtExpr___ASendExpr__property_name(val* self) {
5202 val* var /* : String */;
5203 static val* varonce;
5204 val* var1 /* : String */;
5205 char* var2 /* : NativeString */;
5206 long var3 /* : Int */;
5207 val* var4 /* : FlatString */;
5208 if (varonce) {
5209 var1 = varonce;
5210 } else {
5211 var2 = "<";
5212 var3 = 1;
5213 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5214 var1 = var4;
5215 varonce = var1;
5216 }
5217 var = var1;
5218 goto RET_LABEL;
5219 RET_LABEL:;
5220 return var;
5221 }
5222 /* method typing#ALeExpr#property_name for (self: ALeExpr): String */
5223 val* nit__typing___ALeExpr___ASendExpr__property_name(val* self) {
5224 val* var /* : String */;
5225 static val* varonce;
5226 val* var1 /* : String */;
5227 char* var2 /* : NativeString */;
5228 long var3 /* : Int */;
5229 val* var4 /* : FlatString */;
5230 if (varonce) {
5231 var1 = varonce;
5232 } else {
5233 var2 = "<=";
5234 var3 = 2;
5235 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5236 var1 = var4;
5237 varonce = var1;
5238 }
5239 var = var1;
5240 goto RET_LABEL;
5241 RET_LABEL:;
5242 return var;
5243 }
5244 /* method typing#ALlExpr#property_name for (self: ALlExpr): String */
5245 val* nit__typing___ALlExpr___ASendExpr__property_name(val* self) {
5246 val* var /* : String */;
5247 static val* varonce;
5248 val* var1 /* : String */;
5249 char* var2 /* : NativeString */;
5250 long var3 /* : Int */;
5251 val* var4 /* : FlatString */;
5252 if (varonce) {
5253 var1 = varonce;
5254 } else {
5255 var2 = "<<";
5256 var3 = 2;
5257 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5258 var1 = var4;
5259 varonce = var1;
5260 }
5261 var = var1;
5262 goto RET_LABEL;
5263 RET_LABEL:;
5264 return var;
5265 }
5266 /* method typing#AGtExpr#property_name for (self: AGtExpr): String */
5267 val* nit__typing___AGtExpr___ASendExpr__property_name(val* self) {
5268 val* var /* : String */;
5269 static val* varonce;
5270 val* var1 /* : String */;
5271 char* var2 /* : NativeString */;
5272 long var3 /* : Int */;
5273 val* var4 /* : FlatString */;
5274 if (varonce) {
5275 var1 = varonce;
5276 } else {
5277 var2 = ">";
5278 var3 = 1;
5279 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5280 var1 = var4;
5281 varonce = var1;
5282 }
5283 var = var1;
5284 goto RET_LABEL;
5285 RET_LABEL:;
5286 return var;
5287 }
5288 /* method typing#AGeExpr#property_name for (self: AGeExpr): String */
5289 val* nit__typing___AGeExpr___ASendExpr__property_name(val* self) {
5290 val* var /* : String */;
5291 static val* varonce;
5292 val* var1 /* : String */;
5293 char* var2 /* : NativeString */;
5294 long var3 /* : Int */;
5295 val* var4 /* : FlatString */;
5296 if (varonce) {
5297 var1 = varonce;
5298 } else {
5299 var2 = ">=";
5300 var3 = 2;
5301 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5302 var1 = var4;
5303 varonce = var1;
5304 }
5305 var = var1;
5306 goto RET_LABEL;
5307 RET_LABEL:;
5308 return var;
5309 }
5310 /* method typing#AGgExpr#property_name for (self: AGgExpr): String */
5311 val* nit__typing___AGgExpr___ASendExpr__property_name(val* self) {
5312 val* var /* : String */;
5313 static val* varonce;
5314 val* var1 /* : String */;
5315 char* var2 /* : NativeString */;
5316 long var3 /* : Int */;
5317 val* var4 /* : FlatString */;
5318 if (varonce) {
5319 var1 = varonce;
5320 } else {
5321 var2 = ">>";
5322 var3 = 2;
5323 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5324 var1 = var4;
5325 varonce = var1;
5326 }
5327 var = var1;
5328 goto RET_LABEL;
5329 RET_LABEL:;
5330 return var;
5331 }
5332 /* method typing#APlusExpr#property_name for (self: APlusExpr): String */
5333 val* nit__typing___APlusExpr___ASendExpr__property_name(val* self) {
5334 val* var /* : String */;
5335 static val* varonce;
5336 val* var1 /* : String */;
5337 char* var2 /* : NativeString */;
5338 long var3 /* : Int */;
5339 val* var4 /* : FlatString */;
5340 if (varonce) {
5341 var1 = varonce;
5342 } else {
5343 var2 = "+";
5344 var3 = 1;
5345 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5346 var1 = var4;
5347 varonce = var1;
5348 }
5349 var = var1;
5350 goto RET_LABEL;
5351 RET_LABEL:;
5352 return var;
5353 }
5354 /* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */
5355 val* nit__typing___AMinusExpr___ASendExpr__property_name(val* self) {
5356 val* var /* : String */;
5357 static val* varonce;
5358 val* var1 /* : String */;
5359 char* var2 /* : NativeString */;
5360 long var3 /* : Int */;
5361 val* var4 /* : FlatString */;
5362 if (varonce) {
5363 var1 = varonce;
5364 } else {
5365 var2 = "-";
5366 var3 = 1;
5367 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5368 var1 = var4;
5369 varonce = var1;
5370 }
5371 var = var1;
5372 goto RET_LABEL;
5373 RET_LABEL:;
5374 return var;
5375 }
5376 /* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */
5377 val* nit__typing___AStarshipExpr___ASendExpr__property_name(val* self) {
5378 val* var /* : String */;
5379 static val* varonce;
5380 val* var1 /* : String */;
5381 char* var2 /* : NativeString */;
5382 long var3 /* : Int */;
5383 val* var4 /* : FlatString */;
5384 if (varonce) {
5385 var1 = varonce;
5386 } else {
5387 var2 = "<=>";
5388 var3 = 3;
5389 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5390 var1 = var4;
5391 varonce = var1;
5392 }
5393 var = var1;
5394 goto RET_LABEL;
5395 RET_LABEL:;
5396 return var;
5397 }
5398 /* method typing#AStarExpr#property_name for (self: AStarExpr): String */
5399 val* nit__typing___AStarExpr___ASendExpr__property_name(val* self) {
5400 val* var /* : String */;
5401 static val* varonce;
5402 val* var1 /* : String */;
5403 char* var2 /* : NativeString */;
5404 long var3 /* : Int */;
5405 val* var4 /* : FlatString */;
5406 if (varonce) {
5407 var1 = varonce;
5408 } else {
5409 var2 = "*";
5410 var3 = 1;
5411 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5412 var1 = var4;
5413 varonce = var1;
5414 }
5415 var = var1;
5416 goto RET_LABEL;
5417 RET_LABEL:;
5418 return var;
5419 }
5420 /* method typing#AStarstarExpr#property_name for (self: AStarstarExpr): String */
5421 val* nit__typing___AStarstarExpr___ASendExpr__property_name(val* self) {
5422 val* var /* : String */;
5423 static val* varonce;
5424 val* var1 /* : String */;
5425 char* var2 /* : NativeString */;
5426 long var3 /* : Int */;
5427 val* var4 /* : FlatString */;
5428 if (varonce) {
5429 var1 = varonce;
5430 } else {
5431 var2 = "**";
5432 var3 = 2;
5433 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5434 var1 = var4;
5435 varonce = var1;
5436 }
5437 var = var1;
5438 goto RET_LABEL;
5439 RET_LABEL:;
5440 return var;
5441 }
5442 /* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */
5443 val* nit__typing___ASlashExpr___ASendExpr__property_name(val* self) {
5444 val* var /* : String */;
5445 static val* varonce;
5446 val* var1 /* : String */;
5447 char* var2 /* : NativeString */;
5448 long var3 /* : Int */;
5449 val* var4 /* : FlatString */;
5450 if (varonce) {
5451 var1 = varonce;
5452 } else {
5453 var2 = "/";
5454 var3 = 1;
5455 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5456 var1 = var4;
5457 varonce = var1;
5458 }
5459 var = var1;
5460 goto RET_LABEL;
5461 RET_LABEL:;
5462 return var;
5463 }
5464 /* method typing#APercentExpr#property_name for (self: APercentExpr): String */
5465 val* nit__typing___APercentExpr___ASendExpr__property_name(val* self) {
5466 val* var /* : String */;
5467 static val* varonce;
5468 val* var1 /* : String */;
5469 char* var2 /* : NativeString */;
5470 long var3 /* : Int */;
5471 val* var4 /* : FlatString */;
5472 if (varonce) {
5473 var1 = varonce;
5474 } else {
5475 var2 = "%";
5476 var3 = 1;
5477 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5478 var1 = var4;
5479 varonce = var1;
5480 }
5481 var = var1;
5482 goto RET_LABEL;
5483 RET_LABEL:;
5484 return var;
5485 }
5486 /* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */
5487 val* nit__typing___AUminusExpr___ASendExpr__property_name(val* self) {
5488 val* var /* : String */;
5489 static val* varonce;
5490 val* var1 /* : String */;
5491 char* var2 /* : NativeString */;
5492 long var3 /* : Int */;
5493 val* var4 /* : FlatString */;
5494 if (varonce) {
5495 var1 = varonce;
5496 } else {
5497 var2 = "unary -";
5498 var3 = 7;
5499 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5500 var1 = var4;
5501 varonce = var1;
5502 }
5503 var = var1;
5504 goto RET_LABEL;
5505 RET_LABEL:;
5506 return var;
5507 }
5508 /* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */
5509 val* nit__typing___AUminusExpr___ASendExpr__compute_raw_arguments(val* self) {
5510 val* var /* : Array[AExpr] */;
5511 val* var1 /* : Array[AExpr] */;
5512 var1 = NEW_standard__Array(&type_standard__Array__nit__AExpr);
5513 {
5514 standard___standard__Array___standard__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[AExpr]>*/
5515 }
5516 var = var1;
5517 goto RET_LABEL;
5518 RET_LABEL:;
5519 return var;
5520 }
5521 /* method typing#ACallExpr#property_name for (self: ACallExpr): String */
5522 val* nit__typing___ACallExpr___ASendExpr__property_name(val* self) {
5523 val* var /* : String */;
5524 val* var1 /* : TId */;
5525 val* var3 /* : TId */;
5526 val* var4 /* : String */;
5527 {
5528 { /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallExpr> */
5529 var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallExpr> */
5530 if (unlikely(var3 == NULL)) {
5531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
5532 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1999);
5533 show_backtrace(1);
5534 }
5535 var1 = var3;
5536 RET_LABEL2:(void)0;
5537 }
5538 }
5539 {
5540 var4 = nit__lexer_work___Token___text(var1);
5541 }
5542 var = var4;
5543 goto RET_LABEL;
5544 RET_LABEL:;
5545 return var;
5546 }
5547 /* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */
5548 val* nit__typing___ACallExpr___ASendExpr__compute_raw_arguments(val* self) {
5549 val* var /* : Array[AExpr] */;
5550 val* var1 /* : AExprs */;
5551 val* var3 /* : AExprs */;
5552 val* var4 /* : Array[AExpr] */;
5553 {
5554 { /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:ACallExpr> */
5555 var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:ACallExpr> */
5556 if (unlikely(var3 == NULL)) {
5557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
5558 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2002);
5559 show_backtrace(1);
5560 }
5561 var1 = var3;
5562 RET_LABEL2:(void)0;
5563 }
5564 }
5565 {
5566 var4 = nit__typing___AExprs___to_a(var1);
5567 }
5568 var = var4;
5569 goto RET_LABEL;
5570 RET_LABEL:;
5571 return var;
5572 }
5573 /* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */
5574 val* nit__typing___ACallAssignExpr___ASendExpr__property_name(val* self) {
5575 val* var /* : String */;
5576 val* var1 /* : TId */;
5577 val* var3 /* : TId */;
5578 val* var4 /* : String */;
5579 static val* varonce;
5580 val* var5 /* : String */;
5581 char* var6 /* : NativeString */;
5582 long var7 /* : Int */;
5583 val* var8 /* : FlatString */;
5584 val* var9 /* : String */;
5585 {
5586 { /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallAssignExpr> */
5587 var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallAssignExpr> */
5588 if (unlikely(var3 == NULL)) {
5589 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
5590 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1999);
5591 show_backtrace(1);
5592 }
5593 var1 = var3;
5594 RET_LABEL2:(void)0;
5595 }
5596 }
5597 {
5598 var4 = nit__lexer_work___Token___text(var1);
5599 }
5600 if (varonce) {
5601 var5 = varonce;
5602 } else {
5603 var6 = "=";
5604 var7 = 1;
5605 var8 = standard___standard__NativeString___to_s_with_length(var6, var7);
5606 var5 = var8;
5607 varonce = var5;
5608 }
5609 {
5610 var9 = ((val* (*)(val* self, val* p0))(var4->class->vft[COLOR_standard__string__String___43d]))(var4, var5) /* + on <var4:String>*/;
5611 }
5612 var = var9;
5613 goto RET_LABEL;
5614 RET_LABEL:;
5615 return var;
5616 }
5617 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */
5618 val* nit__typing___ACallAssignExpr___ASendExpr__compute_raw_arguments(val* self) {
5619 val* var /* : Array[AExpr] */;
5620 val* var1 /* : AExprs */;
5621 val* var3 /* : AExprs */;
5622 val* var4 /* : Array[AExpr] */;
5623 val* var_res /* var res: Array[AExpr] */;
5624 val* var5 /* : AExpr */;
5625 val* var7 /* : AExpr */;
5626 {
5627 { /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:ACallAssignExpr> */
5628 var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:ACallAssignExpr> */
5629 if (unlikely(var3 == NULL)) {
5630 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
5631 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2002);
5632 show_backtrace(1);
5633 }
5634 var1 = var3;
5635 RET_LABEL2:(void)0;
5636 }
5637 }
5638 {
5639 var4 = nit__typing___AExprs___to_a(var1);
5640 }
5641 var_res = var4;
5642 {
5643 { /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:ACallAssignExpr> */
5644 var7 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:ACallAssignExpr> */
5645 if (unlikely(var7 == NULL)) {
5646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
5647 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1772);
5648 show_backtrace(1);
5649 }
5650 var5 = var7;
5651 RET_LABEL6:(void)0;
5652 }
5653 }
5654 {
5655 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var5); /* Direct call array#Array#add on <var_res:Array[AExpr]>*/
5656 }
5657 var = var_res;
5658 goto RET_LABEL;
5659 RET_LABEL:;
5660 return var;
5661 }
5662 /* method typing#ABraExpr#property_name for (self: ABraExpr): String */
5663 val* nit__typing___ABraExpr___ASendExpr__property_name(val* self) {
5664 val* var /* : String */;
5665 static val* varonce;
5666 val* var1 /* : String */;
5667 char* var2 /* : NativeString */;
5668 long var3 /* : Int */;
5669 val* var4 /* : FlatString */;
5670 if (varonce) {
5671 var1 = varonce;
5672 } else {
5673 var2 = "[]";
5674 var3 = 2;
5675 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5676 var1 = var4;
5677 varonce = var1;
5678 }
5679 var = var1;
5680 goto RET_LABEL;
5681 RET_LABEL:;
5682 return var;
5683 }
5684 /* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */
5685 val* nit__typing___ABraExpr___ASendExpr__compute_raw_arguments(val* self) {
5686 val* var /* : Array[AExpr] */;
5687 val* var1 /* : AExprs */;
5688 val* var3 /* : AExprs */;
5689 val* var4 /* : Array[AExpr] */;
5690 {
5691 { /* Inline parser_nodes#ABraFormExpr#n_args (self) on <self:ABraExpr> */
5692 var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on <self:ABraExpr> */
5693 if (unlikely(var3 == NULL)) {
5694 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
5695 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2071);
5696 show_backtrace(1);
5697 }
5698 var1 = var3;
5699 RET_LABEL2:(void)0;
5700 }
5701 }
5702 {
5703 var4 = nit__typing___AExprs___to_a(var1);
5704 }
5705 var = var4;
5706 goto RET_LABEL;
5707 RET_LABEL:;
5708 return var;
5709 }
5710 /* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */
5711 val* nit__typing___ABraAssignExpr___ASendExpr__property_name(val* self) {
5712 val* var /* : String */;
5713 static val* varonce;
5714 val* var1 /* : String */;
5715 char* var2 /* : NativeString */;
5716 long var3 /* : Int */;
5717 val* var4 /* : FlatString */;
5718 if (varonce) {
5719 var1 = varonce;
5720 } else {
5721 var2 = "[]=";
5722 var3 = 3;
5723 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
5724 var1 = var4;
5725 varonce = var1;
5726 }
5727 var = var1;
5728 goto RET_LABEL;
5729 RET_LABEL:;
5730 return var;
5731 }
5732 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */
5733 val* nit__typing___ABraAssignExpr___ASendExpr__compute_raw_arguments(val* self) {
5734 val* var /* : Array[AExpr] */;
5735 val* var1 /* : AExprs */;
5736 val* var3 /* : AExprs */;
5737 val* var4 /* : Array[AExpr] */;
5738 val* var_res /* var res: Array[AExpr] */;
5739 val* var5 /* : AExpr */;
5740 val* var7 /* : AExpr */;
5741 {
5742 { /* Inline parser_nodes#ABraFormExpr#n_args (self) on <self:ABraAssignExpr> */
5743 var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on <self:ABraAssignExpr> */
5744 if (unlikely(var3 == NULL)) {
5745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
5746 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2071);
5747 show_backtrace(1);
5748 }
5749 var1 = var3;
5750 RET_LABEL2:(void)0;
5751 }
5752 }
5753 {
5754 var4 = nit__typing___AExprs___to_a(var1);
5755 }
5756 var_res = var4;
5757 {
5758 { /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:ABraAssignExpr> */
5759 var7 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:ABraAssignExpr> */
5760 if (unlikely(var7 == NULL)) {
5761 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
5762 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1772);
5763 show_backtrace(1);
5764 }
5765 var5 = var7;
5766 RET_LABEL6:(void)0;
5767 }
5768 }
5769 {
5770 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var5); /* Direct call array#Array#add on <var_res:Array[AExpr]>*/
5771 }
5772 var = var_res;
5773 goto RET_LABEL;
5774 RET_LABEL:;
5775 return var;
5776 }
5777 /* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */
5778 val* nit__typing___ASendReassignFormExpr___write_callsite(val* self) {
5779 val* var /* : nullable CallSite */;
5780 val* var1 /* : nullable CallSite */;
5781 var1 = self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on <self:ASendReassignFormExpr> */
5782 var = var1;
5783 RET_LABEL:;
5784 return var;
5785 }
5786 /* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */
5787 void nit__typing___ASendReassignFormExpr___write_callsite_61d(val* self, val* p0) {
5788 self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val = p0; /* _write_callsite on <self:ASendReassignFormExpr> */
5789 RET_LABEL:;
5790 }
5791 /* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */
5792 void nit__typing___ASendReassignFormExpr___AExpr__accept_typing(val* self, val* p0) {
5793 val* var_v /* var v: TypeVisitor */;
5794 val* var /* : AExpr */;
5795 val* var2 /* : AExpr */;
5796 val* var3 /* : nullable MType */;
5797 val* var_recvtype /* var recvtype: nullable MType */;
5798 val* var4 /* : String */;
5799 val* var_name /* var name: String */;
5800 val* var5 /* : null */;
5801 short int var6 /* : Bool */;
5802 short int var7 /* : Bool */;
5803 val* var_other /* var other: nullable Object */;
5804 short int var9 /* : Bool */;
5805 short int var11 /* : Bool */;
5806 val* var12 /* : AExpr */;
5807 val* var14 /* : AExpr */;
5808 short int var15 /* : Bool */;
5809 int cltype;
5810 int idtype;
5811 short int var_for_self /* var for_self: Bool */;
5812 val* var16 /* : nullable CallSite */;
5813 val* var_callsite /* var callsite: nullable CallSite */;
5814 val* var17 /* : null */;
5815 short int var18 /* : Bool */;
5816 short int var19 /* : Bool */;
5817 short int var21 /* : Bool */;
5818 short int var23 /* : Bool */;
5819 val* var25 /* : Array[AExpr] */;
5820 val* var_args /* var args: Array[AExpr] */;
5821 short int var26 /* : Bool */;
5822 val* var27 /* : MSignature */;
5823 val* var29 /* : MSignature */;
5824 val* var30 /* : nullable MType */;
5825 val* var32 /* : nullable MType */;
5826 val* var_readtype /* var readtype: nullable MType */;
5827 val* var33 /* : null */;
5828 short int var34 /* : Bool */;
5829 short int var35 /* : Bool */;
5830 short int var37 /* : Bool */;
5831 short int var39 /* : Bool */;
5832 static val* varonce;
5833 val* var40 /* : String */;
5834 char* var41 /* : NativeString */;
5835 long var42 /* : Int */;
5836 val* var43 /* : FlatString */;
5837 static val* varonce44;
5838 val* var45 /* : String */;
5839 char* var46 /* : NativeString */;
5840 long var47 /* : Int */;
5841 val* var48 /* : FlatString */;
5842 val* var49 /* : Array[Object] */;
5843 long var50 /* : Int */;
5844 val* var51 /* : NativeArray[Object] */;
5845 val* var52 /* : String */;
5846 static val* varonce53;
5847 val* var54 /* : String */;
5848 char* var55 /* : NativeString */;
5849 long var56 /* : Int */;
5850 val* var57 /* : FlatString */;
5851 val* var58 /* : String */;
5852 val* var59 /* : AExpr */;
5853 val* var61 /* : AExpr */;
5854 short int var62 /* : Bool */;
5855 int cltype63;
5856 int idtype64;
5857 val* var65 /* : nullable CallSite */;
5858 val* var_wcallsite /* var wcallsite: nullable CallSite */;
5859 val* var66 /* : null */;
5860 short int var67 /* : Bool */;
5861 short int var68 /* : Bool */;
5862 short int var70 /* : Bool */;
5863 short int var72 /* : Bool */;
5864 val* var74 /* : MSignature */;
5865 val* var76 /* : MSignature */;
5866 val* var77 /* : Array[MParameter] */;
5867 val* var79 /* : Array[MParameter] */;
5868 val* var80 /* : nullable Object */;
5869 val* var81 /* : MType */;
5870 val* var83 /* : MType */;
5871 val* var84 /* : nullable MType */;
5872 val* var_wtype /* var wtype: nullable MType */;
5873 val* var85 /* : null */;
5874 short int var86 /* : Bool */;
5875 short int var87 /* : Bool */;
5876 short int var89 /* : Bool */;
5877 short int var91 /* : Bool */;
5878 val* var92 /* : Array[nullable Object] */;
5879 val* var93 /* : AExpr */;
5880 val* var95 /* : AExpr */;
5881 short int var96 /* : Bool */;
5882 short int var97 /* : Bool */;
5883 var_v = p0;
5884 {
5885 { /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:ASendReassignFormExpr> */
5886 var2 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:ASendReassignFormExpr> */
5887 if (unlikely(var2 == NULL)) {
5888 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
5889 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802);
5890 show_backtrace(1);
5891 }
5892 var = var2;
5893 RET_LABEL1:(void)0;
5894 }
5895 }
5896 {
5897 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
5898 }
5899 var_recvtype = var3;
5900 {
5901 var4 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendReassignFormExpr>*/;
5902 }
5903 var_name = var4;
5904 var5 = NULL;
5905 if (var_recvtype == NULL) {
5906 var6 = 1; /* is null */
5907 } else {
5908 var6 = 0; /* arg is null but recv is not */
5909 }
5910 if (0) {
5911 { /* Inline kernel#Object#== (var_recvtype,var5) on <var_recvtype:nullable MType> */
5912 var_other = var5;
5913 {
5914 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
5915 var11 = var_recvtype == var_other;
5916 var9 = var11;
5917 goto RET_LABEL10;
5918 RET_LABEL10:(void)0;
5919 }
5920 }
5921 var7 = var9;
5922 goto RET_LABEL8;
5923 RET_LABEL8:(void)0;
5924 }
5925 var6 = var7;
5926 }
5927 if (var6){
5928 goto RET_LABEL;
5929 } else {
5930 }
5931 {
5932 { /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:ASendReassignFormExpr> */
5933 var14 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:ASendReassignFormExpr> */
5934 if (unlikely(var14 == NULL)) {
5935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
5936 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802);
5937 show_backtrace(1);
5938 }
5939 var12 = var14;
5940 RET_LABEL13:(void)0;
5941 }
5942 }
5943 /* <var12:AExpr> isa ASelfExpr */
5944 cltype = type_nit__ASelfExpr.color;
5945 idtype = type_nit__ASelfExpr.id;
5946 if(cltype >= var12->type->table_size) {
5947 var15 = 0;
5948 } else {
5949 var15 = var12->type->type_table[cltype] == idtype;
5950 }
5951 var_for_self = var15;
5952 {
5953 var16 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var_name, var_for_self);
5954 }
5955 var_callsite = var16;
5956 var17 = NULL;
5957 if (var_callsite == NULL) {
5958 var18 = 1; /* is null */
5959 } else {
5960 var18 = 0; /* arg is null but recv is not */
5961 }
5962 if (0) {
5963 { /* Inline kernel#Object#== (var_callsite,var17) on <var_callsite:nullable CallSite> */
5964 var_other = var17;
5965 {
5966 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
5967 var23 = var_callsite == var_other;
5968 var21 = var23;
5969 goto RET_LABEL22;
5970 RET_LABEL22:(void)0;
5971 }
5972 }
5973 var19 = var21;
5974 goto RET_LABEL20;
5975 RET_LABEL20:(void)0;
5976 }
5977 var18 = var19;
5978 }
5979 if (var18){
5980 goto RET_LABEL;
5981 } else {
5982 }
5983 {
5984 { /* Inline typing#ASendExpr#callsite= (self,var_callsite) on <self:ASendReassignFormExpr> */
5985 self->attrs[COLOR_nit__typing__ASendExpr___callsite].val = var_callsite; /* _callsite on <self:ASendReassignFormExpr> */
5986 RET_LABEL24:(void)0;
5987 }
5988 }
5989 {
5990 var25 = ((val* (*)(val* self))(self->class->vft[COLOR_nit__typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendReassignFormExpr>*/;
5991 }
5992 var_args = var25;
5993 {
5994 var26 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args);
5995 }
5996 {
5997 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
5998 var29 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
5999 if (unlikely(var29 == NULL)) {
6000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
6001 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494);
6002 show_backtrace(1);
6003 }
6004 var27 = var29;
6005 RET_LABEL28:(void)0;
6006 }
6007 }
6008 {
6009 { /* Inline model#MSignature#return_mtype (var27) on <var27:MSignature> */
6010 var32 = var27->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var27:MSignature> */
6011 var30 = var32;
6012 RET_LABEL31:(void)0;
6013 }
6014 }
6015 var_readtype = var30;
6016 var33 = NULL;
6017 if (var_readtype == NULL) {
6018 var34 = 1; /* is null */
6019 } else {
6020 var34 = 0; /* arg is null but recv is not */
6021 }
6022 if (0) {
6023 { /* Inline kernel#Object#== (var_readtype,var33) on <var_readtype:nullable MType> */
6024 var_other = var33;
6025 {
6026 { /* Inline kernel#Object#is_same_instance (var_readtype,var_other) on <var_readtype:nullable MType(MType)> */
6027 var39 = var_readtype == var_other;
6028 var37 = var39;
6029 goto RET_LABEL38;
6030 RET_LABEL38:(void)0;
6031 }
6032 }
6033 var35 = var37;
6034 goto RET_LABEL36;
6035 RET_LABEL36:(void)0;
6036 }
6037 var34 = var35;
6038 }
6039 if (var34){
6040 if (varonce) {
6041 var40 = varonce;
6042 } else {
6043 var41 = "Error: ";
6044 var42 = 7;
6045 var43 = standard___standard__NativeString___to_s_with_length(var41, var42);
6046 var40 = var43;
6047 varonce = var40;
6048 }
6049 if (varonce44) {
6050 var45 = varonce44;
6051 } else {
6052 var46 = " is not a function";
6053 var47 = 18;
6054 var48 = standard___standard__NativeString___to_s_with_length(var46, var47);
6055 var45 = var48;
6056 varonce44 = var45;
6057 }
6058 var49 = NEW_standard__Array(&type_standard__Array__standard__Object);
6059 { /* var49 = array_instance Array[Object] */
6060 var50 = 3;
6061 var51 = NEW_standard__NativeArray(var50, &type_standard__NativeArray__standard__Object);
6062 ((struct instance_standard__NativeArray*)var51)->values[0] = (val*) var40;
6063 ((struct instance_standard__NativeArray*)var51)->values[1] = (val*) var_name;
6064 ((struct instance_standard__NativeArray*)var51)->values[2] = (val*) var45;
6065 {
6066 ((void (*)(val* self, val* p0, long p1))(var49->class->vft[COLOR_standard__array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
6067 }
6068 }
6069 {
6070 var52 = ((val* (*)(val* self))(var49->class->vft[COLOR_standard__string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
6071 }
6072 {
6073 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var52); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6074 }
6075 goto RET_LABEL;
6076 } else {
6077 }
6078 if (varonce53) {
6079 var54 = varonce53;
6080 } else {
6081 var55 = "=";
6082 var56 = 1;
6083 var57 = standard___standard__NativeString___to_s_with_length(var55, var56);
6084 var54 = var57;
6085 varonce53 = var54;
6086 }
6087 {
6088 var58 = ((val* (*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__string__String___43d]))(var_name, var54) /* + on <var_name:String>*/;
6089 }
6090 {
6091 { /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:ASendReassignFormExpr> */
6092 var61 = self->attrs[COLOR_nit__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:ASendReassignFormExpr> */
6093 if (unlikely(var61 == NULL)) {
6094 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
6095 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1802);
6096 show_backtrace(1);
6097 }
6098 var59 = var61;
6099 RET_LABEL60:(void)0;
6100 }
6101 }
6102 /* <var59:AExpr> isa ASelfExpr */
6103 cltype63 = type_nit__ASelfExpr.color;
6104 idtype64 = type_nit__ASelfExpr.id;
6105 if(cltype63 >= var59->type->table_size) {
6106 var62 = 0;
6107 } else {
6108 var62 = var59->type->type_table[cltype63] == idtype64;
6109 }
6110 {
6111 var65 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var58, var62);
6112 }
6113 var_wcallsite = var65;
6114 var66 = NULL;
6115 if (var_wcallsite == NULL) {
6116 var67 = 1; /* is null */
6117 } else {
6118 var67 = 0; /* arg is null but recv is not */
6119 }
6120 if (0) {
6121 { /* Inline kernel#Object#== (var_wcallsite,var66) on <var_wcallsite:nullable CallSite> */
6122 var_other = var66;
6123 {
6124 { /* Inline kernel#Object#is_same_instance (var_wcallsite,var_other) on <var_wcallsite:nullable CallSite(CallSite)> */
6125 var72 = var_wcallsite == var_other;
6126 var70 = var72;
6127 goto RET_LABEL71;
6128 RET_LABEL71:(void)0;
6129 }
6130 }
6131 var68 = var70;
6132 goto RET_LABEL69;
6133 RET_LABEL69:(void)0;
6134 }
6135 var67 = var68;
6136 }
6137 if (var67){
6138 goto RET_LABEL;
6139 } else {
6140 }
6141 {
6142 { /* Inline typing#ASendReassignFormExpr#write_callsite= (self,var_wcallsite) on <self:ASendReassignFormExpr> */
6143 self->attrs[COLOR_nit__typing__ASendReassignFormExpr___write_callsite].val = var_wcallsite; /* _write_callsite on <self:ASendReassignFormExpr> */
6144 RET_LABEL73:(void)0;
6145 }
6146 }
6147 {
6148 { /* Inline typing#CallSite#msignature (var_wcallsite) on <var_wcallsite:nullable CallSite(CallSite)> */
6149 var76 = var_wcallsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on <var_wcallsite:nullable CallSite(CallSite)> */
6150 if (unlikely(var76 == NULL)) {
6151 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
6152 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494);
6153 show_backtrace(1);
6154 }
6155 var74 = var76;
6156 RET_LABEL75:(void)0;
6157 }
6158 }
6159 {
6160 { /* Inline model#MSignature#mparameters (var74) on <var74:MSignature> */
6161 var79 = var74->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var74:MSignature> */
6162 if (unlikely(var79 == NULL)) {
6163 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6164 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
6165 show_backtrace(1);
6166 }
6167 var77 = var79;
6168 RET_LABEL78:(void)0;
6169 }
6170 }
6171 {
6172 var80 = standard___standard__SequenceRead___last(var77);
6173 }
6174 {
6175 { /* Inline model#MParameter#mtype (var80) on <var80:nullable Object(MParameter)> */
6176 var83 = var80->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var80:nullable Object(MParameter)> */
6177 if (unlikely(var83 == NULL)) {
6178 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6179 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
6180 show_backtrace(1);
6181 }
6182 var81 = var83;
6183 RET_LABEL82:(void)0;
6184 }
6185 }
6186 {
6187 var84 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_readtype, var81);
6188 }
6189 var_wtype = var84;
6190 var85 = NULL;
6191 if (var_wtype == NULL) {
6192 var86 = 1; /* is null */
6193 } else {
6194 var86 = 0; /* arg is null but recv is not */
6195 }
6196 if (0) {
6197 { /* Inline kernel#Object#== (var_wtype,var85) on <var_wtype:nullable MType> */
6198 var_other = var85;
6199 {
6200 { /* Inline kernel#Object#is_same_instance (var_wtype,var_other) on <var_wtype:nullable MType(MType)> */
6201 var91 = var_wtype == var_other;
6202 var89 = var91;
6203 goto RET_LABEL90;
6204 RET_LABEL90:(void)0;
6205 }
6206 }
6207 var87 = var89;
6208 goto RET_LABEL88;
6209 RET_LABEL88:(void)0;
6210 }
6211 var86 = var87;
6212 }
6213 if (var86){
6214 goto RET_LABEL;
6215 } else {
6216 }
6217 {
6218 var92 = standard__array___Collection___to_a(var_args);
6219 }
6220 var_args = var92;
6221 {
6222 { /* Inline parser_nodes#AReassignFormExpr#n_value (self) on <self:ASendReassignFormExpr> */
6223 var95 = self->attrs[COLOR_nit__parser_nodes__AReassignFormExpr___n_value].val; /* _n_value on <self:ASendReassignFormExpr> */
6224 if (unlikely(var95 == NULL)) {
6225 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
6226 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1783);
6227 show_backtrace(1);
6228 }
6229 var93 = var95;
6230 RET_LABEL94:(void)0;
6231 }
6232 }
6233 {
6234 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_args, var93); /* Direct call array#Array#add on <var_args:Array[AExpr]>*/
6235 }
6236 {
6237 var96 = nit___nit__CallSite___check_signature(var_wcallsite, var_v, var_args);
6238 }
6239 var97 = 1;
6240 {
6241 { /* Inline typing#AExpr#is_typed= (self,var97) on <self:ASendReassignFormExpr> */
6242 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var97; /* _is_typed on <self:ASendReassignFormExpr> */
6243 RET_LABEL98:(void)0;
6244 }
6245 }
6246 RET_LABEL:;
6247 }
6248 /* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */
6249 val* nit__typing___ACallReassignExpr___ASendExpr__property_name(val* self) {
6250 val* var /* : String */;
6251 val* var1 /* : TId */;
6252 val* var3 /* : TId */;
6253 val* var4 /* : String */;
6254 {
6255 { /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:ACallReassignExpr> */
6256 var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:ACallReassignExpr> */
6257 if (unlikely(var3 == NULL)) {
6258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
6259 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1999);
6260 show_backtrace(1);
6261 }
6262 var1 = var3;
6263 RET_LABEL2:(void)0;
6264 }
6265 }
6266 {
6267 var4 = nit__lexer_work___Token___text(var1);
6268 }
6269 var = var4;
6270 goto RET_LABEL;
6271 RET_LABEL:;
6272 return var;
6273 }
6274 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */
6275 val* nit__typing___ACallReassignExpr___ASendExpr__compute_raw_arguments(val* self) {
6276 val* var /* : Array[AExpr] */;
6277 val* var1 /* : AExprs */;
6278 val* var3 /* : AExprs */;
6279 val* var4 /* : Array[AExpr] */;
6280 {
6281 { /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:ACallReassignExpr> */
6282 var3 = self->attrs[COLOR_nit__parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:ACallReassignExpr> */
6283 if (unlikely(var3 == NULL)) {
6284 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
6285 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2002);
6286 show_backtrace(1);
6287 }
6288 var1 = var3;
6289 RET_LABEL2:(void)0;
6290 }
6291 }
6292 {
6293 var4 = nit__typing___AExprs___to_a(var1);
6294 }
6295 var = var4;
6296 goto RET_LABEL;
6297 RET_LABEL:;
6298 return var;
6299 }
6300 /* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */
6301 val* nit__typing___ABraReassignExpr___ASendExpr__property_name(val* self) {
6302 val* var /* : String */;
6303 static val* varonce;
6304 val* var1 /* : String */;
6305 char* var2 /* : NativeString */;
6306 long var3 /* : Int */;
6307 val* var4 /* : FlatString */;
6308 if (varonce) {
6309 var1 = varonce;
6310 } else {
6311 var2 = "[]";
6312 var3 = 2;
6313 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
6314 var1 = var4;
6315 varonce = var1;
6316 }
6317 var = var1;
6318 goto RET_LABEL;
6319 RET_LABEL:;
6320 return var;
6321 }
6322 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */
6323 val* nit__typing___ABraReassignExpr___ASendExpr__compute_raw_arguments(val* self) {
6324 val* var /* : Array[AExpr] */;
6325 val* var1 /* : AExprs */;
6326 val* var3 /* : AExprs */;
6327 val* var4 /* : Array[AExpr] */;
6328 {
6329 { /* Inline parser_nodes#ABraFormExpr#n_args (self) on <self:ABraReassignExpr> */
6330 var3 = self->attrs[COLOR_nit__parser_nodes__ABraFormExpr___n_args].val; /* _n_args on <self:ABraReassignExpr> */
6331 if (unlikely(var3 == NULL)) {
6332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
6333 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2071);
6334 show_backtrace(1);
6335 }
6336 var1 = var3;
6337 RET_LABEL2:(void)0;
6338 }
6339 }
6340 {
6341 var4 = nit__typing___AExprs___to_a(var1);
6342 }
6343 var = var4;
6344 goto RET_LABEL;
6345 RET_LABEL:;
6346 return var;
6347 }
6348 /* method typing#AInitExpr#property_name for (self: AInitExpr): String */
6349 val* nit__typing___AInitExpr___ASendExpr__property_name(val* self) {
6350 val* var /* : String */;
6351 static val* varonce;
6352 val* var1 /* : String */;
6353 char* var2 /* : NativeString */;
6354 long var3 /* : Int */;
6355 val* var4 /* : FlatString */;
6356 if (varonce) {
6357 var1 = varonce;
6358 } else {
6359 var2 = "init";
6360 var3 = 4;
6361 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
6362 var1 = var4;
6363 varonce = var1;
6364 }
6365 var = var1;
6366 goto RET_LABEL;
6367 RET_LABEL:;
6368 return var;
6369 }
6370 /* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */
6371 val* nit__typing___AInitExpr___ASendExpr__compute_raw_arguments(val* self) {
6372 val* var /* : Array[AExpr] */;
6373 val* var1 /* : AExprs */;
6374 val* var3 /* : AExprs */;
6375 val* var4 /* : Array[AExpr] */;
6376 {
6377 { /* Inline parser_nodes#AInitExpr#n_args (self) on <self:AInitExpr> */
6378 var3 = self->attrs[COLOR_nit__parser_nodes__AInitExpr___n_args].val; /* _n_args on <self:AInitExpr> */
6379 if (unlikely(var3 == NULL)) {
6380 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
6381 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2063);
6382 show_backtrace(1);
6383 }
6384 var1 = var3;
6385 RET_LABEL2:(void)0;
6386 }
6387 }
6388 {
6389 var4 = nit__typing___AExprs___to_a(var1);
6390 }
6391 var = var4;
6392 goto RET_LABEL;
6393 RET_LABEL:;
6394 return var;
6395 }
6396 /* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */
6397 val* nit__typing___AExprs___to_a(val* self) {
6398 val* var /* : Array[AExpr] */;
6399 val* var1 /* : ANodes[AExpr] */;
6400 val* var3 /* : ANodes[AExpr] */;
6401 val* var4 /* : Array[nullable Object] */;
6402 {
6403 { /* Inline parser_nodes#AExprs#n_exprs (self) on <self:AExprs> */
6404 var3 = self->attrs[COLOR_nit__parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <self:AExprs> */
6405 if (unlikely(var3 == NULL)) {
6406 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
6407 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2408);
6408 show_backtrace(1);
6409 }
6410 var1 = var3;
6411 RET_LABEL2:(void)0;
6412 }
6413 }
6414 {
6415 var4 = standard__array___Collection___to_a(var1);
6416 }
6417 var = var4;
6418 goto RET_LABEL;
6419 RET_LABEL:;
6420 return var;
6421 }
6422 /* method typing#ASuperExpr#callsite for (self: ASuperExpr): nullable CallSite */
6423 val* nit__typing___ASuperExpr___callsite(val* self) {
6424 val* var /* : nullable CallSite */;
6425 val* var1 /* : nullable CallSite */;
6426 var1 = self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val; /* _callsite on <self:ASuperExpr> */
6427 var = var1;
6428 RET_LABEL:;
6429 return var;
6430 }
6431 /* method typing#ASuperExpr#callsite= for (self: ASuperExpr, nullable CallSite) */
6432 void nit__typing___ASuperExpr___callsite_61d(val* self, val* p0) {
6433 self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val = p0; /* _callsite on <self:ASuperExpr> */
6434 RET_LABEL:;
6435 }
6436 /* method typing#ASuperExpr#mpropdef for (self: ASuperExpr): nullable MMethodDef */
6437 val* nit__typing___ASuperExpr___mpropdef(val* self) {
6438 val* var /* : nullable MMethodDef */;
6439 val* var1 /* : nullable MMethodDef */;
6440 var1 = self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:ASuperExpr> */
6441 var = var1;
6442 RET_LABEL:;
6443 return var;
6444 }
6445 /* method typing#ASuperExpr#mpropdef= for (self: ASuperExpr, nullable MMethodDef) */
6446 void nit__typing___ASuperExpr___mpropdef_61d(val* self, val* p0) {
6447 self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val = p0; /* _mpropdef on <self:ASuperExpr> */
6448 RET_LABEL:;
6449 }
6450 /* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */
6451 void nit__typing___ASuperExpr___AExpr__accept_typing(val* self, val* p0) {
6452 val* var_v /* var v: TypeVisitor */;
6453 val* var /* : nullable MClassType */;
6454 val* var2 /* : nullable MClassType */;
6455 val* var_anchor /* var anchor: nullable MClassType */;
6456 val* var3 /* : null */;
6457 short int var4 /* : Bool */;
6458 short int var5 /* : Bool */;
6459 val* var_other /* var other: nullable Object */;
6460 short int var7 /* : Bool */;
6461 short int var8 /* : Bool */;
6462 val* var9 /* : Variable */;
6463 val* var11 /* : Variable */;
6464 val* var12 /* : nullable MType */;
6465 val* var_recvtype /* var recvtype: nullable MType */;
6466 val* var13 /* : null */;
6467 short int var14 /* : Bool */;
6468 short int var15 /* : Bool */;
6469 short int var17 /* : Bool */;
6470 short int var18 /* : Bool */;
6471 val* var19 /* : nullable MPropDef */;
6472 val* var21 /* : nullable MPropDef */;
6473 val* var22 /* : MProperty */;
6474 val* var24 /* : MProperty */;
6475 val* var_mproperty /* var mproperty: MProperty */;
6476 short int var25 /* : Bool */;
6477 int cltype;
6478 int idtype;
6479 short int var26 /* : Bool */;
6480 static val* varonce;
6481 val* var27 /* : String */;
6482 char* var28 /* : NativeString */;
6483 long var29 /* : Int */;
6484 val* var30 /* : FlatString */;
6485 val* var31 /* : MModule */;
6486 val* var33 /* : MModule */;
6487 val* var34 /* : Array[MPropDef] */;
6488 val* var_superprops /* var superprops: Array[MMethodDef] */;
6489 long var35 /* : Int */;
6490 long var37 /* : Int */;
6491 long var38 /* : Int */;
6492 short int var39 /* : Bool */;
6493 short int var41 /* : Bool */;
6494 short int var42 /* : Bool */;
6495 short int var43 /* : Bool */;
6496 short int var45 /* : Bool */;
6497 short int var_ /* var : Bool */;
6498 val* var46 /* : nullable MPropDef */;
6499 val* var48 /* : nullable MPropDef */;
6500 short int var49 /* : Bool */;
6501 static val* varonce50;
6502 val* var51 /* : String */;
6503 char* var52 /* : NativeString */;
6504 long var53 /* : Int */;
6505 val* var54 /* : FlatString */;
6506 static val* varonce55;
6507 val* var56 /* : String */;
6508 char* var57 /* : NativeString */;
6509 long var58 /* : Int */;
6510 val* var59 /* : FlatString */;
6511 val* var60 /* : Array[Object] */;
6512 long var61 /* : Int */;
6513 val* var62 /* : NativeArray[Object] */;
6514 val* var63 /* : String */;
6515 val* var64 /* : nullable Object */;
6516 val* var_superprop /* var superprop: MMethodDef */;
6517 val* var65 /* : nullable MSignature */;
6518 val* var67 /* : nullable MSignature */;
6519 val* var_msignature /* var msignature: MSignature */;
6520 short int var68 /* : Bool */;
6521 val* var69 /* : MType */;
6522 short int var70 /* : Bool */;
6523 int cltype71;
6524 int idtype72;
6525 const char* var_class_name;
6526 val* var73 /* : AExprs */;
6527 val* var75 /* : AExprs */;
6528 val* var76 /* : Array[AExpr] */;
6529 val* var_args /* var args: Array[AExpr] */;
6530 long var77 /* : Int */;
6531 long var79 /* : Int */;
6532 long var80 /* : Int */;
6533 short int var81 /* : Bool */;
6534 short int var83 /* : Bool */;
6535 int cltype84;
6536 int idtype85;
6537 const char* var_class_name86;
6538 short int var87 /* : Bool */;
6539 val* var88 /* : String */;
6540 val* var90 /* : String */;
6541 short int var91 /* : Bool */;
6542 val* var92 /* : nullable MType */;
6543 val* var94 /* : nullable MType */;
6544 short int var96 /* : Bool */;
6545 val* var98 /* : nullable MPropDef */;
6546 val* var100 /* : nullable MPropDef */;
6547 short int var101 /* : Bool */;
6548 val* var103 /* : nullable MPropDef */;
6549 val* var105 /* : nullable MPropDef */;
6550 short int var106 /* : Bool */;
6551 int cltype107;
6552 int idtype108;
6553 const char* var_class_name109;
6554 var_v = p0;
6555 {
6556 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
6557 var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
6558 var = var2;
6559 RET_LABEL1:(void)0;
6560 }
6561 }
6562 var_anchor = var;
6563 var3 = NULL;
6564 if (var_anchor == NULL) {
6565 var4 = 0; /* is null */
6566 } else {
6567 var4 = 1; /* arg is null and recv is not */
6568 }
6569 if (0) {
6570 { /* Inline kernel#Object#!= (var_anchor,var3) on <var_anchor:nullable MClassType> */
6571 var_other = var3;
6572 {
6573 var7 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
6574 }
6575 var8 = !var7;
6576 var5 = var8;
6577 goto RET_LABEL6;
6578 RET_LABEL6:(void)0;
6579 }
6580 var4 = var5;
6581 }
6582 if (unlikely(!var4)) {
6583 PRINT_ERROR("Runtime error: %s", "Assert failed");
6584 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1622);
6585 show_backtrace(1);
6586 }
6587 {
6588 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
6589 var11 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
6590 if (unlikely(var11 == NULL)) {
6591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
6592 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50);
6593 show_backtrace(1);
6594 }
6595 var9 = var11;
6596 RET_LABEL10:(void)0;
6597 }
6598 }
6599 {
6600 var12 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var9);
6601 }
6602 var_recvtype = var12;
6603 var13 = NULL;
6604 if (var_recvtype == NULL) {
6605 var14 = 0; /* is null */
6606 } else {
6607 var14 = 1; /* arg is null and recv is not */
6608 }
6609 if (0) {
6610 { /* Inline kernel#Object#!= (var_recvtype,var13) on <var_recvtype:nullable MType> */
6611 var_other = var13;
6612 {
6613 var17 = ((short int (*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_recvtype, var_other) /* == on <var_recvtype:nullable MType(MType)>*/;
6614 }
6615 var18 = !var17;
6616 var15 = var18;
6617 goto RET_LABEL16;
6618 RET_LABEL16:(void)0;
6619 }
6620 var14 = var15;
6621 }
6622 if (unlikely(!var14)) {
6623 PRINT_ERROR("Runtime error: %s", "Assert failed");
6624 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1624);
6625 show_backtrace(1);
6626 }
6627 {
6628 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
6629 var21 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
6630 var19 = var21;
6631 RET_LABEL20:(void)0;
6632 }
6633 }
6634 if (var19 == NULL) {
6635 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6636 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1625);
6637 show_backtrace(1);
6638 } else {
6639 { /* Inline model#MPropDef#mproperty (var19) on <var19:nullable MPropDef> */
6640 if (unlikely(var19 == NULL)) {
6641 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6642 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
6643 show_backtrace(1);
6644 }
6645 var24 = var19->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var19:nullable MPropDef> */
6646 if (unlikely(var24 == NULL)) {
6647 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6648 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
6649 show_backtrace(1);
6650 }
6651 var22 = var24;
6652 RET_LABEL23:(void)0;
6653 }
6654 }
6655 var_mproperty = var22;
6656 /* <var_mproperty:MProperty> isa MMethod */
6657 cltype = type_nit__MMethod.color;
6658 idtype = type_nit__MMethod.id;
6659 if(cltype >= var_mproperty->type->table_size) {
6660 var25 = 0;
6661 } else {
6662 var25 = var_mproperty->type->type_table[cltype] == idtype;
6663 }
6664 var26 = !var25;
6665 if (var26){
6666 if (varonce) {
6667 var27 = varonce;
6668 } else {
6669 var28 = "Error: super only usable in a method";
6670 var29 = 36;
6671 var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
6672 var27 = var30;
6673 varonce = var27;
6674 }
6675 {
6676 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var27); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6677 }
6678 goto RET_LABEL;
6679 } else {
6680 }
6681 {
6682 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
6683 var33 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
6684 if (unlikely(var33 == NULL)) {
6685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6686 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
6687 show_backtrace(1);
6688 }
6689 var31 = var33;
6690 RET_LABEL32:(void)0;
6691 }
6692 }
6693 {
6694 var34 = nit___nit__MProperty___lookup_super_definitions(var_mproperty, var31, var_anchor);
6695 }
6696 var_superprops = var34;
6697 {
6698 { /* Inline array#AbstractArrayRead#length (var_superprops) on <var_superprops:Array[MMethodDef]> */
6699 var37 = var_superprops->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_superprops:Array[MMethodDef]> */
6700 var35 = var37;
6701 RET_LABEL36:(void)0;
6702 }
6703 }
6704 var38 = 0;
6705 {
6706 { /* Inline kernel#Int#== (var35,var38) on <var35:Int> */
6707 var41 = var35 == var38;
6708 var39 = var41;
6709 goto RET_LABEL40;
6710 RET_LABEL40:(void)0;
6711 }
6712 }
6713 if (var39){
6714 {
6715 { /* Inline model#MMethod#is_init (var_mproperty) on <var_mproperty:MProperty(MMethod)> */
6716 var45 = var_mproperty->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var_mproperty:MProperty(MMethod)> */
6717 var43 = var45;
6718 RET_LABEL44:(void)0;
6719 }
6720 }
6721 var_ = var43;
6722 if (var43){
6723 {
6724 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
6725 var48 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
6726 var46 = var48;
6727 RET_LABEL47:(void)0;
6728 }
6729 }
6730 if (var46 == NULL) {
6731 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6732 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1632);
6733 show_backtrace(1);
6734 } else {
6735 var49 = nit___nit__MPropDef___is_intro(var46);
6736 }
6737 var42 = var49;
6738 } else {
6739 var42 = var_;
6740 }
6741 if (var42){
6742 {
6743 nit__typing___ASuperExpr___process_superinit(self, var_v); /* Direct call typing#ASuperExpr#process_superinit on <self:ASuperExpr>*/
6744 }
6745 goto RET_LABEL;
6746 } else {
6747 }
6748 if (varonce50) {
6749 var51 = varonce50;
6750 } else {
6751 var52 = "Error: No super method to call for ";
6752 var53 = 35;
6753 var54 = standard___standard__NativeString___to_s_with_length(var52, var53);
6754 var51 = var54;
6755 varonce50 = var51;
6756 }
6757 if (varonce55) {
6758 var56 = varonce55;
6759 } else {
6760 var57 = ".";
6761 var58 = 1;
6762 var59 = standard___standard__NativeString___to_s_with_length(var57, var58);
6763 var56 = var59;
6764 varonce55 = var56;
6765 }
6766 var60 = NEW_standard__Array(&type_standard__Array__standard__Object);
6767 { /* var60 = array_instance Array[Object] */
6768 var61 = 3;
6769 var62 = NEW_standard__NativeArray(var61, &type_standard__NativeArray__standard__Object);
6770 ((struct instance_standard__NativeArray*)var62)->values[0] = (val*) var51;
6771 ((struct instance_standard__NativeArray*)var62)->values[1] = (val*) var_mproperty;
6772 ((struct instance_standard__NativeArray*)var62)->values[2] = (val*) var56;
6773 {
6774 ((void (*)(val* self, val* p0, long p1))(var60->class->vft[COLOR_standard__array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
6775 }
6776 }
6777 {
6778 var63 = ((val* (*)(val* self))(var60->class->vft[COLOR_standard__string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
6779 }
6780 {
6781 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var63); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6782 }
6783 goto RET_LABEL;
6784 } else {
6785 }
6786 {
6787 var64 = standard___standard__SequenceRead___Collection__first(var_superprops);
6788 }
6789 var_superprop = var64;
6790 {
6791 { /* Inline model#MMethodDef#msignature (var_superprop) on <var_superprop:MMethodDef> */
6792 var67 = var_superprop->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_superprop:MMethodDef> */
6793 var65 = var67;
6794 RET_LABEL66:(void)0;
6795 }
6796 }
6797 if (unlikely(var65 == NULL)) {
6798 PRINT_ERROR("Runtime error: %s", "Cast failed");
6799 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1642);
6800 show_backtrace(1);
6801 }
6802 var_msignature = var65;
6803 var68 = 1;
6804 {
6805 var69 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, var68);
6806 }
6807 /* <var69:MType> isa MSignature */
6808 cltype71 = type_nit__MSignature.color;
6809 idtype72 = type_nit__MSignature.id;
6810 if(cltype71 >= var69->type->table_size) {
6811 var70 = 0;
6812 } else {
6813 var70 = var69->type->type_table[cltype71] == idtype72;
6814 }
6815 if (unlikely(!var70)) {
6816 var_class_name = var69 == NULL ? "null" : var69->type->name;
6817 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
6818 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1643);
6819 show_backtrace(1);
6820 }
6821 var_msignature = var69;
6822 {
6823 { /* Inline parser_nodes#ASuperExpr#n_args (self) on <self:ASuperExpr> */
6824 var75 = self->attrs[COLOR_nit__parser_nodes__ASuperExpr___n_args].val; /* _n_args on <self:ASuperExpr> */
6825 if (unlikely(var75 == NULL)) {
6826 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
6827 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2051);
6828 show_backtrace(1);
6829 }
6830 var73 = var75;
6831 RET_LABEL74:(void)0;
6832 }
6833 }
6834 {
6835 var76 = nit__typing___AExprs___to_a(var73);
6836 }
6837 var_args = var76;
6838 {
6839 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
6840 var79 = var_args->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6841 var77 = var79;
6842 RET_LABEL78:(void)0;
6843 }
6844 }
6845 var80 = 0;
6846 {
6847 { /* Inline kernel#Int#> (var77,var80) on <var77:Int> */
6848 /* Covariant cast for argument 0 (i) <var80:Int> isa OTHER */
6849 /* <var80:Int> isa OTHER */
6850 var83 = 1; /* easy <var80:Int> isa OTHER*/
6851 if (unlikely(!var83)) {
6852 var_class_name86 = type_standard__Int.name;
6853 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
6854 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
6855 show_backtrace(1);
6856 }
6857 var87 = var77 > var80;
6858 var81 = var87;
6859 goto RET_LABEL82;
6860 RET_LABEL82:(void)0;
6861 }
6862 }
6863 if (var81){
6864 {
6865 { /* Inline model#MProperty#name (var_mproperty) on <var_mproperty:MProperty(MMethod)> */
6866 var90 = var_mproperty->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mproperty:MProperty(MMethod)> */
6867 if (unlikely(var90 == NULL)) {
6868 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6869 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
6870 show_backtrace(1);
6871 }
6872 var88 = var90;
6873 RET_LABEL89:(void)0;
6874 }
6875 }
6876 {
6877 var91 = nit__typing___nit__typing__TypeVisitor___check_signature(var_v, self, var_args, var88, var_msignature);
6878 }
6879 } else {
6880 }
6881 {
6882 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
6883 var94 = var_msignature->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
6884 var92 = var94;
6885 RET_LABEL93:(void)0;
6886 }
6887 }
6888 {
6889 { /* Inline typing#AExpr#mtype= (self,var92) on <self:ASuperExpr> */
6890 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var92; /* _mtype on <self:ASuperExpr> */
6891 RET_LABEL95:(void)0;
6892 }
6893 }
6894 var96 = 1;
6895 {
6896 { /* Inline typing#AExpr#is_typed= (self,var96) on <self:ASuperExpr> */
6897 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var96; /* _is_typed on <self:ASuperExpr> */
6898 RET_LABEL97:(void)0;
6899 }
6900 }
6901 {
6902 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
6903 var100 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
6904 var98 = var100;
6905 RET_LABEL99:(void)0;
6906 }
6907 }
6908 var101 = 1;
6909 if (var98 == NULL) {
6910 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6911 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1650);
6912 show_backtrace(1);
6913 } else {
6914 { /* Inline modelize_property#MPropDef#has_supercall= (var98,var101) on <var98:nullable MPropDef> */
6915 if (unlikely(var98 == NULL)) {
6916 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6917 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 329);
6918 show_backtrace(1);
6919 }
6920 var98->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = var101; /* _has_supercall on <var98:nullable MPropDef> */
6921 RET_LABEL102:(void)0;
6922 }
6923 }
6924 {
6925 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
6926 var105 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
6927 var103 = var105;
6928 RET_LABEL104:(void)0;
6929 }
6930 }
6931 /* <var103:nullable MPropDef> isa MMethodDef */
6932 cltype107 = type_nit__MMethodDef.color;
6933 idtype108 = type_nit__MMethodDef.id;
6934 if(var103 == NULL) {
6935 var106 = 0;
6936 } else {
6937 if(cltype107 >= var103->type->table_size) {
6938 var106 = 0;
6939 } else {
6940 var106 = var103->type->type_table[cltype107] == idtype108;
6941 }
6942 }
6943 if (unlikely(!var106)) {
6944 var_class_name109 = var103 == NULL ? "null" : var103->type->name;
6945 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name109);
6946 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1651);
6947 show_backtrace(1);
6948 }
6949 {
6950 { /* Inline typing#ASuperExpr#mpropdef= (self,var103) on <self:ASuperExpr> */
6951 self->attrs[COLOR_nit__typing__ASuperExpr___mpropdef].val = var103; /* _mpropdef on <self:ASuperExpr> */
6952 RET_LABEL110:(void)0;
6953 }
6954 }
6955 RET_LABEL:;
6956 }
6957 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
6958 void nit__typing___ASuperExpr___process_superinit(val* self, val* p0) {
6959 val* var_v /* var v: TypeVisitor */;
6960 val* var /* : nullable MClassType */;
6961 val* var2 /* : nullable MClassType */;
6962 val* var_anchor /* var anchor: nullable MClassType */;
6963 val* var3 /* : null */;
6964 short int var4 /* : Bool */;
6965 short int var5 /* : Bool */;
6966 val* var_other /* var other: nullable Object */;
6967 short int var7 /* : Bool */;
6968 short int var8 /* : Bool */;
6969 val* var9 /* : Variable */;
6970 val* var11 /* : Variable */;
6971 val* var12 /* : nullable MType */;
6972 val* var_recvtype /* var recvtype: nullable MType */;
6973 val* var13 /* : null */;
6974 short int var14 /* : Bool */;
6975 short int var15 /* : Bool */;
6976 short int var17 /* : Bool */;
6977 short int var18 /* : Bool */;
6978 val* var19 /* : nullable MPropDef */;
6979 val* var21 /* : nullable MPropDef */;
6980 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
6981 short int var22 /* : Bool */;
6982 int cltype;
6983 int idtype;
6984 val* var23 /* : MProperty */;
6985 val* var25 /* : MProperty */;
6986 val* var_mproperty /* var mproperty: MMethod */;
6987 val* var26 /* : null */;
6988 val* var_superprop /* var superprop: nullable MMethodDef */;
6989 val* var27 /* : MClassDef */;
6990 val* var29 /* : MClassDef */;
6991 val* var30 /* : Array[MClassType] */;
6992 val* var32 /* : Array[MClassType] */;
6993 val* var_ /* var : Array[MClassType] */;
6994 val* var33 /* : ArrayIterator[nullable Object] */;
6995 val* var_34 /* var : ArrayIterator[MClassType] */;
6996 short int var35 /* : Bool */;
6997 val* var36 /* : nullable Object */;
6998 val* var_msupertype /* var msupertype: MClassType */;
6999 val* var37 /* : MModule */;
7000 val* var39 /* : MModule */;
7001 val* var40 /* : MClassType */;
7002 val* var41 /* : ModelBuilder */;
7003 val* var43 /* : ModelBuilder */;
7004 val* var44 /* : ToolContext */;
7005 val* var46 /* : ToolContext */;
7006 long var47 /* : Int */;
7007 long var49 /* : Int */;
7008 long var_errcount /* var errcount: Int */;
7009 val* var50 /* : String */;
7010 val* var52 /* : String */;
7011 val* var53 /* : nullable MProperty */;
7012 short int var54 /* : Bool */;
7013 int cltype55;
7014 int idtype56;
7015 const char* var_class_name;
7016 val* var_candidate /* var candidate: nullable MMethod */;
7017 val* var57 /* : null */;
7018 short int var58 /* : Bool */;
7019 short int var59 /* : Bool */;
7020 val* var_other61 /* var other: nullable Object */;
7021 short int var62 /* : Bool */;
7022 short int var64 /* : Bool */;
7023 val* var65 /* : ModelBuilder */;
7024 val* var67 /* : ModelBuilder */;
7025 val* var68 /* : ToolContext */;
7026 val* var70 /* : ToolContext */;
7027 long var71 /* : Int */;
7028 long var73 /* : Int */;
7029 short int var74 /* : Bool */;
7030 short int var76 /* : Bool */;
7031 int cltype77;
7032 int idtype78;
7033 const char* var_class_name79;
7034 short int var80 /* : Bool */;
7035 short int var81 /* : Bool */;
7036 val* var82 /* : null */;
7037 short int var83 /* : Bool */;
7038 short int var84 /* : Bool */;
7039 short int var86 /* : Bool */;
7040 short int var87 /* : Bool */;
7041 short int var_88 /* var : Bool */;
7042 short int var89 /* : Bool */;
7043 short int var91 /* : Bool */;
7044 short int var92 /* : Bool */;
7045 short int var93 /* : Bool */;
7046 val* var94 /* : null */;
7047 short int var95 /* : Bool */;
7048 short int var96 /* : Bool */;
7049 short int var98 /* : Bool */;
7050 short int var99 /* : Bool */;
7051 short int var_100 /* var : Bool */;
7052 val* var101 /* : MProperty */;
7053 val* var103 /* : MProperty */;
7054 short int var104 /* : Bool */;
7055 short int var106 /* : Bool */;
7056 short int var107 /* : Bool */;
7057 short int var_108 /* var : Bool */;
7058 val* var109 /* : MProperty */;
7059 val* var111 /* : MProperty */;
7060 short int var112 /* : Bool */;
7061 short int var114 /* : Bool */;
7062 short int var115 /* : Bool */;
7063 static val* varonce;
7064 val* var116 /* : String */;
7065 char* var117 /* : NativeString */;
7066 long var118 /* : Int */;
7067 val* var119 /* : FlatString */;
7068 static val* varonce120;
7069 val* var121 /* : String */;
7070 char* var122 /* : NativeString */;
7071 long var123 /* : Int */;
7072 val* var124 /* : FlatString */;
7073 val* var125 /* : String */;
7074 static val* varonce126;
7075 val* var127 /* : String */;
7076 char* var128 /* : NativeString */;
7077 long var129 /* : Int */;
7078 val* var130 /* : FlatString */;
7079 val* var131 /* : MProperty */;
7080 val* var133 /* : MProperty */;
7081 val* var134 /* : String */;
7082 val* var135 /* : Array[Object] */;
7083 long var136 /* : Int */;
7084 val* var137 /* : NativeArray[Object] */;
7085 val* var138 /* : String */;
7086 val* var139 /* : MModule */;
7087 val* var141 /* : MModule */;
7088 val* var142 /* : Array[MPropDef] */;
7089 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
7090 short int var143 /* : Bool */;
7091 val* var144 /* : null */;
7092 short int var145 /* : Bool */;
7093 short int var146 /* : Bool */;
7094 short int var148 /* : Bool */;
7095 short int var149 /* : Bool */;
7096 short int var_150 /* var : Bool */;
7097 val* var151 /* : MProperty */;
7098 val* var153 /* : MProperty */;
7099 short int var154 /* : Bool */;
7100 short int var156 /* : Bool */;
7101 short int var158 /* : Bool */;
7102 val* var159 /* : nullable Object */;
7103 short int var160 /* : Bool */;
7104 short int var162 /* : Bool */;
7105 short int var164 /* : Bool */;
7106 long var165 /* : Int */;
7107 long var167 /* : Int */;
7108 long var168 /* : Int */;
7109 short int var169 /* : Bool */;
7110 short int var171 /* : Bool */;
7111 int cltype172;
7112 int idtype173;
7113 const char* var_class_name174;
7114 short int var175 /* : Bool */;
7115 static val* varonce176;
7116 val* var177 /* : String */;
7117 char* var178 /* : NativeString */;
7118 long var179 /* : Int */;
7119 val* var180 /* : FlatString */;
7120 static val* varonce181;
7121 val* var182 /* : String */;
7122 char* var183 /* : NativeString */;
7123 long var184 /* : Int */;
7124 val* var185 /* : FlatString */;
7125 static val* varonce186;
7126 val* var187 /* : String */;
7127 char* var188 /* : NativeString */;
7128 long var189 /* : Int */;
7129 val* var190 /* : FlatString */;
7130 static val* varonce191;
7131 val* var192 /* : String */;
7132 char* var193 /* : NativeString */;
7133 long var194 /* : Int */;
7134 val* var195 /* : FlatString */;
7135 val* var196 /* : String */;
7136 val* var197 /* : Array[Object] */;
7137 long var198 /* : Int */;
7138 val* var199 /* : NativeArray[Object] */;
7139 val* var200 /* : String */;
7140 val* var201 /* : nullable Object */;
7141 val* var204 /* : null */;
7142 short int var205 /* : Bool */;
7143 short int var206 /* : Bool */;
7144 short int var208 /* : Bool */;
7145 short int var210 /* : Bool */;
7146 static val* varonce211;
7147 val* var212 /* : String */;
7148 char* var213 /* : NativeString */;
7149 long var214 /* : Int */;
7150 val* var215 /* : FlatString */;
7151 static val* varonce216;
7152 val* var217 /* : String */;
7153 char* var218 /* : NativeString */;
7154 long var219 /* : Int */;
7155 val* var220 /* : FlatString */;
7156 val* var221 /* : Array[Object] */;
7157 long var222 /* : Int */;
7158 val* var223 /* : NativeArray[Object] */;
7159 val* var224 /* : String */;
7160 val* var225 /* : MSignature */;
7161 val* var226 /* : nullable MSignature */;
7162 val* var228 /* : nullable MSignature */;
7163 val* var229 /* : nullable MSignature */;
7164 val* var231 /* : nullable MSignature */;
7165 val* var_msignature /* var msignature: MSignature */;
7166 short int var232 /* : Bool */;
7167 val* var233 /* : MType */;
7168 short int var234 /* : Bool */;
7169 int cltype235;
7170 int idtype236;
7171 const char* var_class_name237;
7172 val* var238 /* : CallSite */;
7173 val* var239 /* : MModule */;
7174 val* var241 /* : MModule */;
7175 val* var242 /* : nullable MClassType */;
7176 val* var244 /* : nullable MClassType */;
7177 short int var245 /* : Bool */;
7178 val* var246 /* : MProperty */;
7179 val* var248 /* : MProperty */;
7180 short int var249 /* : Bool */;
7181 val* var_callsite /* var callsite: CallSite */;
7182 val* var251 /* : AExprs */;
7183 val* var253 /* : AExprs */;
7184 val* var254 /* : Array[AExpr] */;
7185 val* var_args /* var args: Array[AExpr] */;
7186 long var255 /* : Int */;
7187 long var257 /* : Int */;
7188 long var258 /* : Int */;
7189 short int var259 /* : Bool */;
7190 short int var261 /* : Bool */;
7191 int cltype262;
7192 int idtype263;
7193 const char* var_class_name264;
7194 short int var265 /* : Bool */;
7195 short int var266 /* : Bool */;
7196 val* var267 /* : nullable MSignature */;
7197 val* var269 /* : nullable MSignature */;
7198 long var270 /* : Int */;
7199 long var271 /* : Int */;
7200 short int var272 /* : Bool */;
7201 short int var274 /* : Bool */;
7202 int cltype275;
7203 int idtype276;
7204 const char* var_class_name277;
7205 short int var278 /* : Bool */;
7206 static val* varonce279;
7207 val* var280 /* : String */;
7208 char* var281 /* : NativeString */;
7209 long var282 /* : Int */;
7210 val* var283 /* : FlatString */;
7211 val* var284 /* : nullable MSignature */;
7212 val* var286 /* : nullable MSignature */;
7213 long var287 /* : Int */;
7214 static val* varonce288;
7215 val* var289 /* : String */;
7216 char* var290 /* : NativeString */;
7217 long var291 /* : Int */;
7218 val* var292 /* : FlatString */;
7219 long var293 /* : Int */;
7220 static val* varonce294;
7221 val* var295 /* : String */;
7222 char* var296 /* : NativeString */;
7223 long var297 /* : Int */;
7224 val* var298 /* : FlatString */;
7225 val* var299 /* : Array[Object] */;
7226 long var300 /* : Int */;
7227 val* var301 /* : NativeArray[Object] */;
7228 val* var302 /* : Object */;
7229 val* var303 /* : Object */;
7230 val* var304 /* : String */;
7231 long var305 /* : Int */;
7232 long var_i /* var i: Int */;
7233 val* var306 /* : Array[MParameter] */;
7234 val* var308 /* : Array[MParameter] */;
7235 val* var_309 /* var : Array[MParameter] */;
7236 val* var310 /* : ArrayIterator[nullable Object] */;
7237 val* var_311 /* var : ArrayIterator[MParameter] */;
7238 short int var312 /* : Bool */;
7239 val* var313 /* : nullable Object */;
7240 val* var_sp /* var sp: MParameter */;
7241 val* var314 /* : nullable MSignature */;
7242 val* var316 /* : nullable MSignature */;
7243 val* var317 /* : Array[MParameter] */;
7244 val* var319 /* : Array[MParameter] */;
7245 val* var320 /* : nullable Object */;
7246 val* var_p /* var p: MParameter */;
7247 val* var321 /* : MType */;
7248 val* var323 /* : MType */;
7249 val* var324 /* : MType */;
7250 val* var326 /* : MType */;
7251 short int var327 /* : Bool */;
7252 short int var328 /* : Bool */;
7253 static val* varonce329;
7254 val* var330 /* : String */;
7255 char* var331 /* : NativeString */;
7256 long var332 /* : Int */;
7257 val* var333 /* : FlatString */;
7258 static val* varonce334;
7259 val* var335 /* : String */;
7260 char* var336 /* : NativeString */;
7261 long var337 /* : Int */;
7262 val* var338 /* : FlatString */;
7263 val* var339 /* : MType */;
7264 val* var341 /* : MType */;
7265 static val* varonce342;
7266 val* var343 /* : String */;
7267 char* var344 /* : NativeString */;
7268 long var345 /* : Int */;
7269 val* var346 /* : FlatString */;
7270 val* var347 /* : String */;
7271 val* var349 /* : String */;
7272 static val* varonce350;
7273 val* var351 /* : String */;
7274 char* var352 /* : NativeString */;
7275 long var353 /* : Int */;
7276 val* var354 /* : FlatString */;
7277 val* var355 /* : MType */;
7278 val* var357 /* : MType */;
7279 static val* varonce358;
7280 val* var359 /* : String */;
7281 char* var360 /* : NativeString */;
7282 long var361 /* : Int */;
7283 val* var362 /* : FlatString */;
7284 val* var363 /* : Array[Object] */;
7285 long var364 /* : Int */;
7286 val* var365 /* : NativeArray[Object] */;
7287 val* var366 /* : Object */;
7288 val* var367 /* : String */;
7289 long var368 /* : Int */;
7290 long var369 /* : Int */;
7291 short int var371 /* : Bool */;
7292 int cltype372;
7293 int idtype373;
7294 const char* var_class_name374;
7295 long var375 /* : Int */;
7296 short int var378 /* : Bool */;
7297 var_v = p0;
7298 {
7299 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
7300 var2 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
7301 var = var2;
7302 RET_LABEL1:(void)0;
7303 }
7304 }
7305 var_anchor = var;
7306 var3 = NULL;
7307 if (var_anchor == NULL) {
7308 var4 = 0; /* is null */
7309 } else {
7310 var4 = 1; /* arg is null and recv is not */
7311 }
7312 if (0) {
7313 { /* Inline kernel#Object#!= (var_anchor,var3) on <var_anchor:nullable MClassType> */
7314 var_other = var3;
7315 {
7316 var7 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
7317 }
7318 var8 = !var7;
7319 var5 = var8;
7320 goto RET_LABEL6;
7321 RET_LABEL6:(void)0;
7322 }
7323 var4 = var5;
7324 }
7325 if (unlikely(!var4)) {
7326 PRINT_ERROR("Runtime error: %s", "Assert failed");
7327 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1657);
7328 show_backtrace(1);
7329 }
7330 {
7331 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
7332 var11 = var_v->attrs[COLOR_nit__typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
7333 if (unlikely(var11 == NULL)) {
7334 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
7335 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 50);
7336 show_backtrace(1);
7337 }
7338 var9 = var11;
7339 RET_LABEL10:(void)0;
7340 }
7341 }
7342 {
7343 var12 = nit__typing___nit__typing__TypeVisitor___get_variable(var_v, self, var9);
7344 }
7345 var_recvtype = var12;
7346 var13 = NULL;
7347 if (var_recvtype == NULL) {
7348 var14 = 0; /* is null */
7349 } else {
7350 var14 = 1; /* arg is null and recv is not */
7351 }
7352 if (0) {
7353 { /* Inline kernel#Object#!= (var_recvtype,var13) on <var_recvtype:nullable MType> */
7354 var_other = var13;
7355 {
7356 var17 = ((short int (*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_recvtype, var_other) /* == on <var_recvtype:nullable MType(MType)>*/;
7357 }
7358 var18 = !var17;
7359 var15 = var18;
7360 goto RET_LABEL16;
7361 RET_LABEL16:(void)0;
7362 }
7363 var14 = var15;
7364 }
7365 if (unlikely(!var14)) {
7366 PRINT_ERROR("Runtime error: %s", "Assert failed");
7367 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1659);
7368 show_backtrace(1);
7369 }
7370 {
7371 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
7372 var21 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
7373 var19 = var21;
7374 RET_LABEL20:(void)0;
7375 }
7376 }
7377 var_mpropdef = var19;
7378 /* <var_mpropdef:nullable MPropDef> isa MMethodDef */
7379 cltype = type_nit__MMethodDef.color;
7380 idtype = type_nit__MMethodDef.id;
7381 if(var_mpropdef == NULL) {
7382 var22 = 0;
7383 } else {
7384 if(cltype >= var_mpropdef->type->table_size) {
7385 var22 = 0;
7386 } else {
7387 var22 = var_mpropdef->type->type_table[cltype] == idtype;
7388 }
7389 }
7390 if (unlikely(!var22)) {
7391 PRINT_ERROR("Runtime error: %s", "Assert failed");
7392 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1661);
7393 show_backtrace(1);
7394 }
7395 {
7396 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
7397 var25 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MPropDef(MMethodDef)> */
7398 if (unlikely(var25 == NULL)) {
7399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7400 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
7401 show_backtrace(1);
7402 }
7403 var23 = var25;
7404 RET_LABEL24:(void)0;
7405 }
7406 }
7407 var_mproperty = var23;
7408 var26 = NULL;
7409 var_superprop = var26;
7410 {
7411 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
7412 var29 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MPropDef(MMethodDef)> */
7413 if (unlikely(var29 == NULL)) {
7414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7415 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
7416 show_backtrace(1);
7417 }
7418 var27 = var29;
7419 RET_LABEL28:(void)0;
7420 }
7421 }
7422 {
7423 { /* Inline model#MClassDef#supertypes (var27) on <var27:MClassDef> */
7424 var32 = var27->attrs[COLOR_nit__model__MClassDef___supertypes].val; /* _supertypes on <var27:MClassDef> */
7425 if (unlikely(var32 == NULL)) {
7426 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes");
7427 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 566);
7428 show_backtrace(1);
7429 }
7430 var30 = var32;
7431 RET_LABEL31:(void)0;
7432 }
7433 }
7434 var_ = var30;
7435 {
7436 var33 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
7437 }
7438 var_34 = var33;
7439 for(;;) {
7440 {
7441 var35 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_34);
7442 }
7443 if (var35){
7444 {
7445 var36 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_34);
7446 }
7447 var_msupertype = var36;
7448 {
7449 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
7450 var39 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
7451 if (unlikely(var39 == NULL)) {
7452 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
7453 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
7454 show_backtrace(1);
7455 }
7456 var37 = var39;
7457 RET_LABEL38:(void)0;
7458 }
7459 }
7460 {
7461 var40 = nit___nit__MClassType___MType__anchor_to(var_msupertype, var37, var_anchor);
7462 }
7463 var_msupertype = var40;
7464 {
7465 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
7466 var43 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
7467 if (unlikely(var43 == NULL)) {
7468 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7469 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
7470 show_backtrace(1);
7471 }
7472 var41 = var43;
7473 RET_LABEL42:(void)0;
7474 }
7475 }
7476 {
7477 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var41) on <var41:ModelBuilder> */
7478 var46 = var41->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var41:ModelBuilder> */
7479 if (unlikely(var46 == NULL)) {
7480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7481 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
7482 show_backtrace(1);
7483 }
7484 var44 = var46;
7485 RET_LABEL45:(void)0;
7486 }
7487 }
7488 {
7489 { /* Inline toolcontext#ToolContext#error_count (var44) on <var44:ToolContext> */
7490 var49 = var44->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <var44:ToolContext> */
7491 var47 = var49;
7492 RET_LABEL48:(void)0;
7493 }
7494 }
7495 var_errcount = var47;
7496 {
7497 { /* Inline model#MProperty#name (var_mproperty) on <var_mproperty:MMethod> */
7498 var52 = var_mproperty->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mproperty:MMethod> */
7499 if (unlikely(var52 == NULL)) {
7500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
7501 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
7502 show_backtrace(1);
7503 }
7504 var50 = var52;
7505 RET_LABEL51:(void)0;
7506 }
7507 }
7508 {
7509 var53 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, self, var_msupertype, var50);
7510 }
7511 /* <var53:nullable MProperty> isa nullable MMethod */
7512 cltype55 = type_nullable__nit__MMethod.color;
7513 idtype56 = type_nullable__nit__MMethod.id;
7514 if(var53 == NULL) {
7515 var54 = 1;
7516 } else {
7517 if(cltype55 >= var53->type->table_size) {
7518 var54 = 0;
7519 } else {
7520 var54 = var53->type->type_table[cltype55] == idtype56;
7521 }
7522 }
7523 if (unlikely(!var54)) {
7524 var_class_name = var53 == NULL ? "null" : var53->type->name;
7525 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
7526 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1667);
7527 show_backtrace(1);
7528 }
7529 var_candidate = var53;
7530 var57 = NULL;
7531 if (var_candidate == NULL) {
7532 var58 = 1; /* is null */
7533 } else {
7534 var58 = 0; /* arg is null but recv is not */
7535 }
7536 if (0) {
7537 { /* Inline kernel#Object#== (var_candidate,var57) on <var_candidate:nullable MMethod> */
7538 var_other61 = var57;
7539 {
7540 { /* Inline kernel#Object#is_same_instance (var_candidate,var_other61) on <var_candidate:nullable MMethod(MMethod)> */
7541 var64 = var_candidate == var_other61;
7542 var62 = var64;
7543 goto RET_LABEL63;
7544 RET_LABEL63:(void)0;
7545 }
7546 }
7547 var59 = var62;
7548 goto RET_LABEL60;
7549 RET_LABEL60:(void)0;
7550 }
7551 var58 = var59;
7552 }
7553 if (var58){
7554 {
7555 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
7556 var67 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
7557 if (unlikely(var67 == NULL)) {
7558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7559 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
7560 show_backtrace(1);
7561 }
7562 var65 = var67;
7563 RET_LABEL66:(void)0;
7564 }
7565 }
7566 {
7567 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var65) on <var65:ModelBuilder> */
7568 var70 = var65->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var65:ModelBuilder> */
7569 if (unlikely(var70 == NULL)) {
7570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7571 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
7572 show_backtrace(1);
7573 }
7574 var68 = var70;
7575 RET_LABEL69:(void)0;
7576 }
7577 }
7578 {
7579 { /* Inline toolcontext#ToolContext#error_count (var68) on <var68:ToolContext> */
7580 var73 = var68->attrs[COLOR_nit__toolcontext__ToolContext___error_count].l; /* _error_count on <var68:ToolContext> */
7581 var71 = var73;
7582 RET_LABEL72:(void)0;
7583 }
7584 }
7585 {
7586 { /* Inline kernel#Int#> (var71,var_errcount) on <var71:Int> */
7587 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
7588 /* <var_errcount:Int> isa OTHER */
7589 var76 = 1; /* easy <var_errcount:Int> isa OTHER*/
7590 if (unlikely(!var76)) {
7591 var_class_name79 = type_standard__Int.name;
7592 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name79);
7593 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
7594 show_backtrace(1);
7595 }
7596 var80 = var71 > var_errcount;
7597 var74 = var80;
7598 goto RET_LABEL75;
7599 RET_LABEL75:(void)0;
7600 }
7601 }
7602 if (var74){
7603 goto RET_LABEL;
7604 } else {
7605 }
7606 goto BREAK_label;
7607 } else {
7608 }
7609 var82 = NULL;
7610 if (var_superprop == NULL) {
7611 var83 = 0; /* is null */
7612 } else {
7613 var83 = 1; /* arg is null and recv is not */
7614 }
7615 if (0) {
7616 { /* Inline kernel#Object#!= (var_superprop,var82) on <var_superprop:nullable MMethodDef> */
7617 var_other = var82;
7618 {
7619 var86 = ((short int (*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
7620 }
7621 var87 = !var86;
7622 var84 = var87;
7623 goto RET_LABEL85;
7624 RET_LABEL85:(void)0;
7625 }
7626 var83 = var84;
7627 }
7628 var_88 = var83;
7629 if (var83){
7630 {
7631 { /* Inline model#MMethod#is_root_init (var_candidate) on <var_candidate:nullable MMethod(MMethod)> */
7632 var91 = var_candidate->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var_candidate:nullable MMethod(MMethod)> */
7633 var89 = var91;
7634 RET_LABEL90:(void)0;
7635 }
7636 }
7637 var81 = var89;
7638 } else {
7639 var81 = var_88;
7640 }
7641 if (var81){
7642 goto BREAK_label;
7643 } else {
7644 }
7645 var94 = NULL;
7646 if (var_superprop == NULL) {
7647 var95 = 0; /* is null */
7648 } else {
7649 var95 = 1; /* arg is null and recv is not */
7650 }
7651 if (0) {
7652 { /* Inline kernel#Object#!= (var_superprop,var94) on <var_superprop:nullable MMethodDef> */
7653 var_other = var94;
7654 {
7655 var98 = ((short int (*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
7656 }
7657 var99 = !var98;
7658 var96 = var99;
7659 goto RET_LABEL97;
7660 RET_LABEL97:(void)0;
7661 }
7662 var95 = var96;
7663 }
7664 var_100 = var95;
7665 if (var95){
7666 {
7667 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
7668 var103 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
7669 if (unlikely(var103 == NULL)) {
7670 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7671 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
7672 show_backtrace(1);
7673 }
7674 var101 = var103;
7675 RET_LABEL102:(void)0;
7676 }
7677 }
7678 {
7679 { /* Inline kernel#Object#!= (var101,var_candidate) on <var101:MProperty(MMethod)> */
7680 var_other = var_candidate;
7681 {
7682 var106 = ((short int (*)(val* self, val* p0))(var101->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var101, var_other) /* == on <var101:MProperty(MMethod)>*/;
7683 }
7684 var107 = !var106;
7685 var104 = var107;
7686 goto RET_LABEL105;
7687 RET_LABEL105:(void)0;
7688 }
7689 }
7690 var93 = var104;
7691 } else {
7692 var93 = var_100;
7693 }
7694 var_108 = var93;
7695 if (var93){
7696 {
7697 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
7698 var111 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
7699 if (unlikely(var111 == NULL)) {
7700 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7701 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
7702 show_backtrace(1);
7703 }
7704 var109 = var111;
7705 RET_LABEL110:(void)0;
7706 }
7707 }
7708 {
7709 { /* Inline model#MMethod#is_root_init (var109) on <var109:MProperty(MMethod)> */
7710 var114 = var109->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var109:MProperty(MMethod)> */
7711 var112 = var114;
7712 RET_LABEL113:(void)0;
7713 }
7714 }
7715 var115 = !var112;
7716 var92 = var115;
7717 } else {
7718 var92 = var_108;
7719 }
7720 if (var92){
7721 if (varonce) {
7722 var116 = varonce;
7723 } else {
7724 var117 = "Error: conflicting super constructor to call for ";
7725 var118 = 49;
7726 var119 = standard___standard__NativeString___to_s_with_length(var117, var118);
7727 var116 = var119;
7728 varonce = var116;
7729 }
7730 if (varonce120) {
7731 var121 = varonce120;
7732 } else {
7733 var122 = ": ";
7734 var123 = 2;
7735 var124 = standard___standard__NativeString___to_s_with_length(var122, var123);
7736 var121 = var124;
7737 varonce120 = var121;
7738 }
7739 {
7740 var125 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_candidate);
7741 }
7742 if (varonce126) {
7743 var127 = varonce126;
7744 } else {
7745 var128 = ", ";
7746 var129 = 2;
7747 var130 = standard___standard__NativeString___to_s_with_length(var128, var129);
7748 var127 = var130;
7749 varonce126 = var127;
7750 }
7751 {
7752 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
7753 var133 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
7754 if (unlikely(var133 == NULL)) {
7755 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7756 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
7757 show_backtrace(1);
7758 }
7759 var131 = var133;
7760 RET_LABEL132:(void)0;
7761 }
7762 }
7763 {
7764 var134 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var131);
7765 }
7766 var135 = NEW_standard__Array(&type_standard__Array__standard__Object);
7767 { /* var135 = array_instance Array[Object] */
7768 var136 = 6;
7769 var137 = NEW_standard__NativeArray(var136, &type_standard__NativeArray__standard__Object);
7770 ((struct instance_standard__NativeArray*)var137)->values[0] = (val*) var116;
7771 ((struct instance_standard__NativeArray*)var137)->values[1] = (val*) var_mproperty;
7772 ((struct instance_standard__NativeArray*)var137)->values[2] = (val*) var121;
7773 ((struct instance_standard__NativeArray*)var137)->values[3] = (val*) var125;
7774 ((struct instance_standard__NativeArray*)var137)->values[4] = (val*) var127;
7775 ((struct instance_standard__NativeArray*)var137)->values[5] = (val*) var134;
7776 {
7777 ((void (*)(val* self, val* p0, long p1))(var135->class->vft[COLOR_standard__array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
7778 }
7779 }
7780 {
7781 var138 = ((val* (*)(val* self))(var135->class->vft[COLOR_standard__string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
7782 }
7783 {
7784 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var138); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7785 }
7786 goto RET_LABEL;
7787 } else {
7788 }
7789 {
7790 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
7791 var141 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
7792 if (unlikely(var141 == NULL)) {
7793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
7794 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
7795 show_backtrace(1);
7796 }
7797 var139 = var141;
7798 RET_LABEL140:(void)0;
7799 }
7800 }
7801 {
7802 var142 = nit___nit__MProperty___lookup_definitions(var_candidate, var139, var_anchor);
7803 }
7804 var_candidatedefs = var142;
7805 var144 = NULL;
7806 if (var_superprop == NULL) {
7807 var145 = 0; /* is null */
7808 } else {
7809 var145 = 1; /* arg is null and recv is not */
7810 }
7811 if (0) {
7812 { /* Inline kernel#Object#!= (var_superprop,var144) on <var_superprop:nullable MMethodDef> */
7813 var_other = var144;
7814 {
7815 var148 = ((short int (*)(val* self, val* p0))(var_superprop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_superprop, var_other) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
7816 }
7817 var149 = !var148;
7818 var146 = var149;
7819 goto RET_LABEL147;
7820 RET_LABEL147:(void)0;
7821 }
7822 var145 = var146;
7823 }
7824 var_150 = var145;
7825 if (var145){
7826 {
7827 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
7828 var153 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
7829 if (unlikely(var153 == NULL)) {
7830 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7831 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
7832 show_backtrace(1);
7833 }
7834 var151 = var153;
7835 RET_LABEL152:(void)0;
7836 }
7837 }
7838 {
7839 { /* Inline kernel#Object#== (var151,var_candidate) on <var151:MProperty(MMethod)> */
7840 var_other61 = var_candidate;
7841 {
7842 { /* Inline kernel#Object#is_same_instance (var151,var_other61) on <var151:MProperty(MMethod)> */
7843 var158 = var151 == var_other61;
7844 var156 = var158;
7845 goto RET_LABEL157;
7846 RET_LABEL157:(void)0;
7847 }
7848 }
7849 var154 = var156;
7850 goto RET_LABEL155;
7851 RET_LABEL155:(void)0;
7852 }
7853 }
7854 var143 = var154;
7855 } else {
7856 var143 = var_150;
7857 }
7858 if (var143){
7859 {
7860 var159 = standard___standard__SequenceRead___Collection__first(var_candidatedefs);
7861 }
7862 {
7863 { /* Inline kernel#Object#== (var_superprop,var159) on <var_superprop:nullable MMethodDef(MMethodDef)> */
7864 var_other61 = var159;
7865 {
7866 { /* Inline kernel#Object#is_same_instance (var_superprop,var_other61) on <var_superprop:nullable MMethodDef(MMethodDef)> */
7867 var164 = var_superprop == var_other61;
7868 var162 = var164;
7869 goto RET_LABEL163;
7870 RET_LABEL163:(void)0;
7871 }
7872 }
7873 var160 = var162;
7874 goto RET_LABEL161;
7875 RET_LABEL161:(void)0;
7876 }
7877 }
7878 if (var160){
7879 goto BREAK_label;
7880 } else {
7881 }
7882 {
7883 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_candidatedefs, var_superprop); /* Direct call array#Array#add on <var_candidatedefs:Array[MMethodDef]>*/
7884 }
7885 } else {
7886 }
7887 {
7888 { /* Inline array#AbstractArrayRead#length (var_candidatedefs) on <var_candidatedefs:Array[MMethodDef]> */
7889 var167 = var_candidatedefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidatedefs:Array[MMethodDef]> */
7890 var165 = var167;
7891 RET_LABEL166:(void)0;
7892 }
7893 }
7894 var168 = 1;
7895 {
7896 { /* Inline kernel#Int#> (var165,var168) on <var165:Int> */
7897 /* Covariant cast for argument 0 (i) <var168:Int> isa OTHER */
7898 /* <var168:Int> isa OTHER */
7899 var171 = 1; /* easy <var168:Int> isa OTHER*/
7900 if (unlikely(!var171)) {
7901 var_class_name174 = type_standard__Int.name;
7902 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name174);
7903 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
7904 show_backtrace(1);
7905 }
7906 var175 = var165 > var168;
7907 var169 = var175;
7908 goto RET_LABEL170;
7909 RET_LABEL170:(void)0;
7910 }
7911 }
7912 if (var169){
7913 if (varonce176) {
7914 var177 = varonce176;
7915 } else {
7916 var178 = "Error: conflicting property definitions for property ";
7917 var179 = 53;
7918 var180 = standard___standard__NativeString___to_s_with_length(var178, var179);
7919 var177 = var180;
7920 varonce176 = var177;
7921 }
7922 if (varonce181) {
7923 var182 = varonce181;
7924 } else {
7925 var183 = " in ";
7926 var184 = 4;
7927 var185 = standard___standard__NativeString___to_s_with_length(var183, var184);
7928 var182 = var185;
7929 varonce181 = var182;
7930 }
7931 if (varonce186) {
7932 var187 = varonce186;
7933 } else {
7934 var188 = ": ";
7935 var189 = 2;
7936 var190 = standard___standard__NativeString___to_s_with_length(var188, var189);
7937 var187 = var190;
7938 varonce186 = var187;
7939 }
7940 if (varonce191) {
7941 var192 = varonce191;
7942 } else {
7943 var193 = ", ";
7944 var194 = 2;
7945 var195 = standard___standard__NativeString___to_s_with_length(var193, var194);
7946 var192 = var195;
7947 varonce191 = var192;
7948 }
7949 {
7950 var196 = standard__string___Collection___join(var_candidatedefs, var192);
7951 }
7952 var197 = NEW_standard__Array(&type_standard__Array__standard__Object);
7953 { /* var197 = array_instance Array[Object] */
7954 var198 = 6;
7955 var199 = NEW_standard__NativeArray(var198, &type_standard__NativeArray__standard__Object);
7956 ((struct instance_standard__NativeArray*)var199)->values[0] = (val*) var177;
7957 ((struct instance_standard__NativeArray*)var199)->values[1] = (val*) var_mproperty;
7958 ((struct instance_standard__NativeArray*)var199)->values[2] = (val*) var182;
7959 ((struct instance_standard__NativeArray*)var199)->values[3] = (val*) var_recvtype;
7960 ((struct instance_standard__NativeArray*)var199)->values[4] = (val*) var187;
7961 ((struct instance_standard__NativeArray*)var199)->values[5] = (val*) var196;
7962 {
7963 ((void (*)(val* self, val* p0, long p1))(var197->class->vft[COLOR_standard__array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
7964 }
7965 }
7966 {
7967 var200 = ((val* (*)(val* self))(var197->class->vft[COLOR_standard__string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
7968 }
7969 {
7970 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var200); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7971 }
7972 goto RET_LABEL;
7973 } else {
7974 }
7975 {
7976 var201 = standard___standard__SequenceRead___Collection__first(var_candidatedefs);
7977 }
7978 var_superprop = var201;
7979 BREAK_label: (void)0;
7980 {
7981 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_34); /* Direct call array#ArrayIterator#next on <var_34:ArrayIterator[MClassType]>*/
7982 }
7983 } else {
7984 goto BREAK_label202;
7985 }
7986 }
7987 BREAK_label202: (void)0;
7988 {
7989 { /* Inline abstract_collection#Iterator#finish (var_34) on <var_34:ArrayIterator[MClassType]> */
7990 RET_LABEL203:(void)0;
7991 }
7992 }
7993 var204 = NULL;
7994 if (var_superprop == NULL) {
7995 var205 = 1; /* is null */
7996 } else {
7997 var205 = 0; /* arg is null but recv is not */
7998 }
7999 if (0) {
8000 { /* Inline kernel#Object#== (var_superprop,var204) on <var_superprop:nullable MMethodDef> */
8001 var_other61 = var204;
8002 {
8003 { /* Inline kernel#Object#is_same_instance (var_superprop,var_other61) on <var_superprop:nullable MMethodDef(MMethodDef)> */
8004 var210 = var_superprop == var_other61;
8005 var208 = var210;
8006 goto RET_LABEL209;
8007 RET_LABEL209:(void)0;
8008 }
8009 }
8010 var206 = var208;
8011 goto RET_LABEL207;
8012 RET_LABEL207:(void)0;
8013 }
8014 var205 = var206;
8015 }
8016 if (var205){
8017 if (varonce211) {
8018 var212 = varonce211;
8019 } else {
8020 var213 = "Error: No super method to call for ";
8021 var214 = 35;
8022 var215 = standard___standard__NativeString___to_s_with_length(var213, var214);
8023 var212 = var215;
8024 varonce211 = var212;
8025 }
8026 if (varonce216) {
8027 var217 = varonce216;
8028 } else {
8029 var218 = ".";
8030 var219 = 1;
8031 var220 = standard___standard__NativeString___to_s_with_length(var218, var219);
8032 var217 = var220;
8033 varonce216 = var217;
8034 }
8035 var221 = NEW_standard__Array(&type_standard__Array__standard__Object);
8036 { /* var221 = array_instance Array[Object] */
8037 var222 = 3;
8038 var223 = NEW_standard__NativeArray(var222, &type_standard__NativeArray__standard__Object);
8039 ((struct instance_standard__NativeArray*)var223)->values[0] = (val*) var212;
8040 ((struct instance_standard__NativeArray*)var223)->values[1] = (val*) var_mproperty;
8041 ((struct instance_standard__NativeArray*)var223)->values[2] = (val*) var217;
8042 {
8043 ((void (*)(val* self, val* p0, long p1))(var221->class->vft[COLOR_standard__array__Array__with_native]))(var221, var223, var222) /* with_native on <var221:Array[Object]>*/;
8044 }
8045 }
8046 {
8047 var224 = ((val* (*)(val* self))(var221->class->vft[COLOR_standard__string__Object__to_s]))(var221) /* to_s on <var221:Array[Object]>*/;
8048 }
8049 {
8050 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var224); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
8051 }
8052 goto RET_LABEL;
8053 } else {
8054 }
8055 {
8056 { /* Inline model#MMethodDef#new_msignature (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
8057 var228 = var_superprop->attrs[COLOR_nit__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_superprop:nullable MMethodDef(MMethodDef)> */
8058 var226 = var228;
8059 RET_LABEL227:(void)0;
8060 }
8061 }
8062 if (var226!=NULL) {
8063 var225 = var226;
8064 } else {
8065 {
8066 { /* Inline model#MMethodDef#msignature (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
8067 var231 = var_superprop->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_superprop:nullable MMethodDef(MMethodDef)> */
8068 var229 = var231;
8069 RET_LABEL230:(void)0;
8070 }
8071 }
8072 if (unlikely(var229 == NULL)) {
8073 PRINT_ERROR("Runtime error: %s", "Cast failed");
8074 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1695);
8075 show_backtrace(1);
8076 }
8077 var225 = var229;
8078 }
8079 var_msignature = var225;
8080 var232 = 1;
8081 {
8082 var233 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, var232);
8083 }
8084 /* <var233:MType> isa MSignature */
8085 cltype235 = type_nit__MSignature.color;
8086 idtype236 = type_nit__MSignature.id;
8087 if(cltype235 >= var233->type->table_size) {
8088 var234 = 0;
8089 } else {
8090 var234 = var233->type->type_table[cltype235] == idtype236;
8091 }
8092 if (unlikely(!var234)) {
8093 var_class_name237 = var233 == NULL ? "null" : var233->type->name;
8094 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name237);
8095 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1696);
8096 show_backtrace(1);
8097 }
8098 var_msignature = var233;
8099 var238 = NEW_nit__CallSite(&type_nit__CallSite);
8100 {
8101 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
8102 var241 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
8103 if (unlikely(var241 == NULL)) {
8104 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8105 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
8106 show_backtrace(1);
8107 }
8108 var239 = var241;
8109 RET_LABEL240:(void)0;
8110 }
8111 }
8112 {
8113 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
8114 var244 = var_v->attrs[COLOR_nit__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
8115 var242 = var244;
8116 RET_LABEL243:(void)0;
8117 }
8118 }
8119 var245 = 1;
8120 {
8121 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
8122 var248 = var_superprop->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
8123 if (unlikely(var248 == NULL)) {
8124 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8125 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
8126 show_backtrace(1);
8127 }
8128 var246 = var248;
8129 RET_LABEL247:(void)0;
8130 }
8131 }
8132 var249 = 0;
8133 {
8134 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__node_61d]))(var238, self) /* node= on <var238:CallSite>*/;
8135 }
8136 {
8137 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__recv_61d]))(var238, var_recvtype) /* recv= on <var238:CallSite>*/;
8138 }
8139 {
8140 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__mmodule_61d]))(var238, var239) /* mmodule= on <var238:CallSite>*/;
8141 }
8142 {
8143 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__anchor_61d]))(var238, var242) /* anchor= on <var238:CallSite>*/;
8144 }
8145 {
8146 ((void (*)(val* self, short int p0))(var238->class->vft[COLOR_nit__typing__CallSite__recv_is_self_61d]))(var238, var245) /* recv_is_self= on <var238:CallSite>*/;
8147 }
8148 {
8149 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__mproperty_61d]))(var238, var246) /* mproperty= on <var238:CallSite>*/;
8150 }
8151 {
8152 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__mpropdef_61d]))(var238, var_superprop) /* mpropdef= on <var238:CallSite>*/;
8153 }
8154 {
8155 ((void (*)(val* self, val* p0))(var238->class->vft[COLOR_nit__typing__CallSite__msignature_61d]))(var238, var_msignature) /* msignature= on <var238:CallSite>*/;
8156 }
8157 {
8158 ((void (*)(val* self, short int p0))(var238->class->vft[COLOR_nit__typing__CallSite__erasure_cast_61d]))(var238, var249) /* erasure_cast= on <var238:CallSite>*/;
8159 }
8160 {
8161 ((void (*)(val* self))(var238->class->vft[COLOR_standard__kernel__Object__init]))(var238) /* init on <var238:CallSite>*/;
8162 }
8163 var_callsite = var238;
8164 {
8165 { /* Inline typing#ASuperExpr#callsite= (self,var_callsite) on <self:ASuperExpr> */
8166 self->attrs[COLOR_nit__typing__ASuperExpr___callsite].val = var_callsite; /* _callsite on <self:ASuperExpr> */
8167 RET_LABEL250:(void)0;
8168 }
8169 }
8170 {
8171 { /* Inline parser_nodes#ASuperExpr#n_args (self) on <self:ASuperExpr> */
8172 var253 = self->attrs[COLOR_nit__parser_nodes__ASuperExpr___n_args].val; /* _n_args on <self:ASuperExpr> */
8173 if (unlikely(var253 == NULL)) {
8174 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
8175 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2051);
8176 show_backtrace(1);
8177 }
8178 var251 = var253;
8179 RET_LABEL252:(void)0;
8180 }
8181 }
8182 {
8183 var254 = nit__typing___AExprs___to_a(var251);
8184 }
8185 var_args = var254;
8186 {
8187 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
8188 var257 = var_args->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
8189 var255 = var257;
8190 RET_LABEL256:(void)0;
8191 }
8192 }
8193 var258 = 0;
8194 {
8195 { /* Inline kernel#Int#> (var255,var258) on <var255:Int> */
8196 /* Covariant cast for argument 0 (i) <var258:Int> isa OTHER */
8197 /* <var258:Int> isa OTHER */
8198 var261 = 1; /* easy <var258:Int> isa OTHER*/
8199 if (unlikely(!var261)) {
8200 var_class_name264 = type_standard__Int.name;
8201 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name264);
8202 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
8203 show_backtrace(1);
8204 }
8205 var265 = var255 > var258;
8206 var259 = var265;
8207 goto RET_LABEL260;
8208 RET_LABEL260:(void)0;
8209 }
8210 }
8211 if (var259){
8212 {
8213 var266 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args);
8214 }
8215 } else {
8216 {
8217 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
8218 var269 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
8219 var267 = var269;
8220 RET_LABEL268:(void)0;
8221 }
8222 }
8223 if (var267 == NULL) {
8224 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8225 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1706);
8226 show_backtrace(1);
8227 } else {
8228 var270 = nit___nit__MSignature___arity(var267);
8229 }
8230 {
8231 var271 = nit___nit__MSignature___arity(var_msignature);
8232 }
8233 {
8234 { /* Inline kernel#Int#< (var270,var271) on <var270:Int> */
8235 /* Covariant cast for argument 0 (i) <var271:Int> isa OTHER */
8236 /* <var271:Int> isa OTHER */
8237 var274 = 1; /* easy <var271:Int> isa OTHER*/
8238 if (unlikely(!var274)) {
8239 var_class_name277 = type_standard__Int.name;
8240 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name277);
8241 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
8242 show_backtrace(1);
8243 }
8244 var278 = var270 < var271;
8245 var272 = var278;
8246 goto RET_LABEL273;
8247 RET_LABEL273:(void)0;
8248 }
8249 }
8250 if (var272){
8251 if (varonce279) {
8252 var280 = varonce279;
8253 } else {
8254 var281 = "Error: Not enough implicit arguments to pass. Got ";
8255 var282 = 50;
8256 var283 = standard___standard__NativeString___to_s_with_length(var281, var282);
8257 var280 = var283;
8258 varonce279 = var280;
8259 }
8260 {
8261 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
8262 var286 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
8263 var284 = var286;
8264 RET_LABEL285:(void)0;
8265 }
8266 }
8267 if (var284 == NULL) {
8268 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8269 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1707);
8270 show_backtrace(1);
8271 } else {
8272 var287 = nit___nit__MSignature___arity(var284);
8273 }
8274 if (varonce288) {
8275 var289 = varonce288;
8276 } else {
8277 var290 = ", expected at least ";
8278 var291 = 20;
8279 var292 = standard___standard__NativeString___to_s_with_length(var290, var291);
8280 var289 = var292;
8281 varonce288 = var289;
8282 }
8283 {
8284 var293 = nit___nit__MSignature___arity(var_msignature);
8285 }
8286 if (varonce294) {
8287 var295 = varonce294;
8288 } else {
8289 var296 = ". Signature is ";
8290 var297 = 15;
8291 var298 = standard___standard__NativeString___to_s_with_length(var296, var297);
8292 var295 = var298;
8293 varonce294 = var295;
8294 }
8295 var299 = NEW_standard__Array(&type_standard__Array__standard__Object);
8296 { /* var299 = array_instance Array[Object] */
8297 var300 = 6;
8298 var301 = NEW_standard__NativeArray(var300, &type_standard__NativeArray__standard__Object);
8299 ((struct instance_standard__NativeArray*)var301)->values[0] = (val*) var280;
8300 var302 = BOX_standard__Int(var287); /* autobox from Int to Object */
8301 ((struct instance_standard__NativeArray*)var301)->values[1] = (val*) var302;
8302 ((struct instance_standard__NativeArray*)var301)->values[2] = (val*) var289;
8303 var303 = BOX_standard__Int(var293); /* autobox from Int to Object */
8304 ((struct instance_standard__NativeArray*)var301)->values[3] = (val*) var303;
8305 ((struct instance_standard__NativeArray*)var301)->values[4] = (val*) var295;
8306 ((struct instance_standard__NativeArray*)var301)->values[5] = (val*) var_msignature;
8307 {
8308 ((void (*)(val* self, val* p0, long p1))(var299->class->vft[COLOR_standard__array__Array__with_native]))(var299, var301, var300) /* with_native on <var299:Array[Object]>*/;
8309 }
8310 }
8311 {
8312 var304 = ((val* (*)(val* self))(var299->class->vft[COLOR_standard__string__Object__to_s]))(var299) /* to_s on <var299:Array[Object]>*/;
8313 }
8314 {
8315 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var304); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
8316 }
8317 goto RET_LABEL;
8318 } else {
8319 }
8320 var305 = 0;
8321 var_i = var305;
8322 {
8323 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
8324 var308 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
8325 if (unlikely(var308 == NULL)) {
8326 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
8327 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
8328 show_backtrace(1);
8329 }
8330 var306 = var308;
8331 RET_LABEL307:(void)0;
8332 }
8333 }
8334 var_309 = var306;
8335 {
8336 var310 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_309);
8337 }
8338 var_311 = var310;
8339 for(;;) {
8340 {
8341 var312 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_311);
8342 }
8343 if (var312){
8344 {
8345 var313 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_311);
8346 }
8347 var_sp = var313;
8348 {
8349 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
8350 var316 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
8351 var314 = var316;
8352 RET_LABEL315:(void)0;
8353 }
8354 }
8355 if (var314 == NULL) {
8356 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8357 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1713);
8358 show_backtrace(1);
8359 } else {
8360 { /* Inline model#MSignature#mparameters (var314) on <var314:nullable MSignature> */
8361 if (unlikely(var314 == NULL)) {
8362 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8363 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
8364 show_backtrace(1);
8365 }
8366 var319 = var314->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var314:nullable MSignature> */
8367 if (unlikely(var319 == NULL)) {
8368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
8369 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
8370 show_backtrace(1);
8371 }
8372 var317 = var319;
8373 RET_LABEL318:(void)0;
8374 }
8375 }
8376 {
8377 var320 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var317, var_i);
8378 }
8379 var_p = var320;
8380 {
8381 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
8382 var323 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
8383 if (unlikely(var323 == NULL)) {
8384 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8385 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
8386 show_backtrace(1);
8387 }
8388 var321 = var323;
8389 RET_LABEL322:(void)0;
8390 }
8391 }
8392 {
8393 { /* Inline model#MParameter#mtype (var_sp) on <var_sp:MParameter> */
8394 var326 = var_sp->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_sp:MParameter> */
8395 if (unlikely(var326 == NULL)) {
8396 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8397 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
8398 show_backtrace(1);
8399 }
8400 var324 = var326;
8401 RET_LABEL325:(void)0;
8402 }
8403 }
8404 {
8405 var327 = nit__typing___nit__typing__TypeVisitor___is_subtype(var_v, var321, var324);
8406 }
8407 var328 = !var327;
8408 if (var328){
8409 if (varonce329) {
8410 var330 = varonce329;
8411 } else {
8412 var331 = "Type error: expected argument #";
8413 var332 = 31;
8414 var333 = standard___standard__NativeString___to_s_with_length(var331, var332);
8415 var330 = var333;
8416 varonce329 = var330;
8417 }
8418 if (varonce334) {
8419 var335 = varonce334;
8420 } else {
8421 var336 = " of type ";
8422 var337 = 9;
8423 var338 = standard___standard__NativeString___to_s_with_length(var336, var337);
8424 var335 = var338;
8425 varonce334 = var335;
8426 }
8427 {
8428 { /* Inline model#MParameter#mtype (var_sp) on <var_sp:MParameter> */
8429 var341 = var_sp->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_sp:MParameter> */
8430 if (unlikely(var341 == NULL)) {
8431 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8432 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
8433 show_backtrace(1);
8434 }
8435 var339 = var341;
8436 RET_LABEL340:(void)0;
8437 }
8438 }
8439 if (varonce342) {
8440 var343 = varonce342;
8441 } else {
8442 var344 = ", got implicit argument ";
8443 var345 = 24;
8444 var346 = standard___standard__NativeString___to_s_with_length(var344, var345);
8445 var343 = var346;
8446 varonce342 = var343;
8447 }
8448 {
8449 { /* Inline model#MParameter#name (var_p) on <var_p:MParameter> */
8450 var349 = var_p->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_p:MParameter> */
8451 if (unlikely(var349 == NULL)) {
8452 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
8453 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1687);
8454 show_backtrace(1);
8455 }
8456 var347 = var349;
8457 RET_LABEL348:(void)0;
8458 }
8459 }
8460 if (varonce350) {
8461 var351 = varonce350;
8462 } else {
8463 var352 = " of type ";
8464 var353 = 9;
8465 var354 = standard___standard__NativeString___to_s_with_length(var352, var353);
8466 var351 = var354;
8467 varonce350 = var351;
8468 }
8469 {
8470 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
8471 var357 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
8472 if (unlikely(var357 == NULL)) {
8473 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8474 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
8475 show_backtrace(1);
8476 }
8477 var355 = var357;
8478 RET_LABEL356:(void)0;
8479 }
8480 }
8481 if (varonce358) {
8482 var359 = varonce358;
8483 } else {
8484 var360 = ". Signature is ";
8485 var361 = 15;
8486 var362 = standard___standard__NativeString___to_s_with_length(var360, var361);
8487 var359 = var362;
8488 varonce358 = var359;
8489 }
8490 var363 = NEW_standard__Array(&type_standard__Array__standard__Object);
8491 { /* var363 = array_instance Array[Object] */
8492 var364 = 10;
8493 var365 = NEW_standard__NativeArray(var364, &type_standard__NativeArray__standard__Object);
8494 ((struct instance_standard__NativeArray*)var365)->values[0] = (val*) var330;
8495 var366 = BOX_standard__Int(var_i); /* autobox from Int to Object */
8496 ((struct instance_standard__NativeArray*)var365)->values[1] = (val*) var366;
8497 ((struct instance_standard__NativeArray*)var365)->values[2] = (val*) var335;
8498 ((struct instance_standard__NativeArray*)var365)->values[3] = (val*) var339;
8499 ((struct instance_standard__NativeArray*)var365)->values[4] = (val*) var343;
8500 ((struct instance_standard__NativeArray*)var365)->values[5] = (val*) var347;
8501 ((struct instance_standard__NativeArray*)var365)->values[6] = (val*) var351;
8502 ((struct instance_standard__NativeArray*)var365)->values[7] = (val*) var355;
8503 ((struct instance_standard__NativeArray*)var365)->values[8] = (val*) var359;
8504 ((struct instance_standard__NativeArray*)var365)->values[9] = (val*) var_msignature;
8505 {
8506 ((void (*)(val* self, val* p0, long p1))(var363->class->vft[COLOR_standard__array__Array__with_native]))(var363, var365, var364) /* with_native on <var363:Array[Object]>*/;
8507 }
8508 }
8509 {
8510 var367 = ((val* (*)(val* self))(var363->class->vft[COLOR_standard__string__Object__to_s]))(var363) /* to_s on <var363:Array[Object]>*/;
8511 }
8512 {
8513 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var367); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
8514 }
8515 goto RET_LABEL;
8516 } else {
8517 }
8518 var368 = 1;
8519 {
8520 { /* Inline kernel#Int#+ (var_i,var368) on <var_i:Int> */
8521 /* Covariant cast for argument 0 (i) <var368:Int> isa OTHER */
8522 /* <var368:Int> isa OTHER */
8523 var371 = 1; /* easy <var368:Int> isa OTHER*/
8524 if (unlikely(!var371)) {
8525 var_class_name374 = type_standard__Int.name;
8526 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name374);
8527 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
8528 show_backtrace(1);
8529 }
8530 var375 = var_i + var368;
8531 var369 = var375;
8532 goto RET_LABEL370;
8533 RET_LABEL370:(void)0;
8534 }
8535 }
8536 var_i = var369;
8537 {
8538 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_311); /* Direct call array#ArrayIterator#next on <var_311:ArrayIterator[MParameter]>*/
8539 }
8540 } else {
8541 goto BREAK_label376;
8542 }
8543 }
8544 BREAK_label376: (void)0;
8545 {
8546 { /* Inline abstract_collection#Iterator#finish (var_311) on <var_311:ArrayIterator[MParameter]> */
8547 RET_LABEL377:(void)0;
8548 }
8549 }
8550 }
8551 var378 = 1;
8552 {
8553 { /* Inline typing#AExpr#is_typed= (self,var378) on <self:ASuperExpr> */
8554 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var378; /* _is_typed on <self:ASuperExpr> */
8555 RET_LABEL379:(void)0;
8556 }
8557 }
8558 RET_LABEL:;
8559 }
8560 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
8561 val* nit__typing___ANewExpr___callsite(val* self) {
8562 val* var /* : nullable CallSite */;
8563 val* var1 /* : nullable CallSite */;
8564 var1 = self->attrs[COLOR_nit__typing__ANewExpr___callsite].val; /* _callsite on <self:ANewExpr> */
8565 var = var1;
8566 RET_LABEL:;
8567 return var;
8568 }
8569 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
8570 void nit__typing___ANewExpr___callsite_61d(val* self, val* p0) {
8571 self->attrs[COLOR_nit__typing__ANewExpr___callsite].val = p0; /* _callsite on <self:ANewExpr> */
8572 RET_LABEL:;
8573 }
8574 /* method typing#ANewExpr#recvtype for (self: ANewExpr): nullable MClassType */
8575 val* nit__typing___ANewExpr___recvtype(val* self) {
8576 val* var /* : nullable MClassType */;
8577 val* var1 /* : nullable MClassType */;
8578 var1 = self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val; /* _recvtype on <self:ANewExpr> */
8579 var = var1;
8580 RET_LABEL:;
8581 return var;
8582 }
8583 /* method typing#ANewExpr#recvtype= for (self: ANewExpr, nullable MClassType) */
8584 void nit__typing___ANewExpr___recvtype_61d(val* self, val* p0) {
8585 self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val = p0; /* _recvtype on <self:ANewExpr> */
8586 RET_LABEL:;
8587 }
8588 /* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */
8589 void nit__typing___ANewExpr___AExpr__accept_typing(val* self, val* p0) {
8590 val* var_v /* var v: TypeVisitor */;
8591 val* var /* : AType */;
8592 val* var2 /* : AType */;
8593 val* var3 /* : nullable MType */;
8594 val* var_recvtype /* var recvtype: nullable MType */;
8595 val* var4 /* : null */;
8596 short int var5 /* : Bool */;
8597 short int var6 /* : Bool */;
8598 val* var_other /* var other: nullable Object */;
8599 short int var8 /* : Bool */;
8600 short int var10 /* : Bool */;
8601 short int var11 /* : Bool */;
8602 int cltype;
8603 int idtype;
8604 short int var12 /* : Bool */;
8605 short int var13 /* : Bool */;
8606 int cltype14;
8607 int idtype15;
8608 static val* varonce;
8609 val* var16 /* : String */;
8610 char* var17 /* : NativeString */;
8611 long var18 /* : Int */;
8612 val* var19 /* : FlatString */;
8613 static val* varonce20;
8614 val* var21 /* : String */;
8615 char* var22 /* : NativeString */;
8616 long var23 /* : Int */;
8617 val* var24 /* : FlatString */;
8618 val* var25 /* : Array[Object] */;
8619 long var26 /* : Int */;
8620 val* var27 /* : NativeArray[Object] */;
8621 val* var28 /* : String */;
8622 static val* varonce29;
8623 val* var30 /* : String */;
8624 char* var31 /* : NativeString */;
8625 long var32 /* : Int */;
8626 val* var33 /* : FlatString */;
8627 static val* varonce34;
8628 val* var35 /* : String */;
8629 char* var36 /* : NativeString */;
8630 long var37 /* : Int */;
8631 val* var38 /* : FlatString */;
8632 val* var39 /* : Array[Object] */;
8633 long var40 /* : Int */;
8634 val* var41 /* : NativeArray[Object] */;
8635 val* var42 /* : String */;
8636 val* var44 /* : nullable TId */;
8637 val* var46 /* : nullable TId */;
8638 val* var_nid /* var nid: nullable TId */;
8639 val* var47 /* : null */;
8640 short int var48 /* : Bool */;
8641 short int var49 /* : Bool */;
8642 val* var_other51 /* var other: nullable Object */;
8643 short int var52 /* : Bool */;
8644 short int var53 /* : Bool */;
8645 val* var54 /* : String */;
8646 val* var_name /* var name: String */;
8647 static val* varonce55;
8648 val* var56 /* : String */;
8649 char* var57 /* : NativeString */;
8650 long var58 /* : Int */;
8651 val* var59 /* : FlatString */;
8652 short int var60 /* : Bool */;
8653 val* var61 /* : nullable CallSite */;
8654 val* var_callsite /* var callsite: nullable CallSite */;
8655 val* var62 /* : null */;
8656 short int var63 /* : Bool */;
8657 short int var64 /* : Bool */;
8658 short int var66 /* : Bool */;
8659 short int var68 /* : Bool */;
8660 val* var69 /* : MMethod */;
8661 val* var71 /* : MMethod */;
8662 short int var72 /* : Bool */;
8663 short int var74 /* : Bool */;
8664 short int var75 /* : Bool */;
8665 val* var76 /* : MClass */;
8666 val* var78 /* : MClass */;
8667 val* var79 /* : MClassKind */;
8668 val* var81 /* : MClassKind */;
8669 val* var_kind /* var kind: MClassKind */;
8670 val* var82 /* : MClassKind */;
8671 short int var83 /* : Bool */;
8672 short int var85 /* : Bool */;
8673 short int var86 /* : Bool */;
8674 static val* varonce87;
8675 val* var88 /* : String */;
8676 char* var89 /* : NativeString */;
8677 long var90 /* : Int */;
8678 val* var91 /* : FlatString */;
8679 static val* varonce92;
8680 val* var93 /* : String */;
8681 char* var94 /* : NativeString */;
8682 long var95 /* : Int */;
8683 val* var96 /* : FlatString */;
8684 static val* varonce97;
8685 val* var98 /* : String */;
8686 char* var99 /* : NativeString */;
8687 long var100 /* : Int */;
8688 val* var101 /* : FlatString */;
8689 val* var102 /* : Array[Object] */;
8690 long var103 /* : Int */;
8691 val* var104 /* : NativeArray[Object] */;
8692 val* var105 /* : String */;
8693 val* var107 /* : MSignature */;
8694 val* var109 /* : MSignature */;
8695 val* var110 /* : nullable MType */;
8696 val* var112 /* : nullable MType */;
8697 val* var114 /* : nullable MType */;
8698 val* var116 /* : nullable MType */;
8699 val* var117 /* : null */;
8700 short int var118 /* : Bool */;
8701 short int var119 /* : Bool */;
8702 short int var121 /* : Bool */;
8703 short int var122 /* : Bool */;
8704 val* var124 /* : MMethod */;
8705 val* var126 /* : MMethod */;
8706 val* var127 /* : MClass */;
8707 val* var129 /* : MClass */;
8708 short int var130 /* : Bool */;
8709 short int var131 /* : Bool */;
8710 static val* varonce132;
8711 val* var133 /* : String */;
8712 char* var134 /* : NativeString */;
8713 long var135 /* : Int */;
8714 val* var136 /* : FlatString */;
8715 static val* varonce137;
8716 val* var138 /* : String */;
8717 char* var139 /* : NativeString */;
8718 long var140 /* : Int */;
8719 val* var141 /* : FlatString */;
8720 val* var142 /* : Array[Object] */;
8721 long var143 /* : Int */;
8722 val* var144 /* : NativeArray[Object] */;
8723 val* var145 /* : String */;
8724 val* var146 /* : AExprs */;
8725 val* var148 /* : AExprs */;
8726 val* var149 /* : Array[AExpr] */;
8727 val* var_args /* var args: Array[AExpr] */;
8728 short int var150 /* : Bool */;
8729 var_v = p0;
8730 {
8731 { /* Inline parser_nodes#ANewExpr#n_type (self) on <self:ANewExpr> */
8732 var2 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_type].val; /* _n_type on <self:ANewExpr> */
8733 if (unlikely(var2 == NULL)) {
8734 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
8735 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1962);
8736 show_backtrace(1);
8737 }
8738 var = var2;
8739 RET_LABEL1:(void)0;
8740 }
8741 }
8742 {
8743 var3 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var);
8744 }
8745 var_recvtype = var3;
8746 var4 = NULL;
8747 if (var_recvtype == NULL) {
8748 var5 = 1; /* is null */
8749 } else {
8750 var5 = 0; /* arg is null but recv is not */
8751 }
8752 if (0) {
8753 { /* Inline kernel#Object#== (var_recvtype,var4) on <var_recvtype:nullable MType> */
8754 var_other = var4;
8755 {
8756 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
8757 var10 = var_recvtype == var_other;
8758 var8 = var10;
8759 goto RET_LABEL9;
8760 RET_LABEL9:(void)0;
8761 }
8762 }
8763 var6 = var8;
8764 goto RET_LABEL7;
8765 RET_LABEL7:(void)0;
8766 }
8767 var5 = var6;
8768 }
8769 if (var5){
8770 goto RET_LABEL;
8771 } else {
8772 }
8773 /* <var_recvtype:nullable MType(MType)> isa MClassType */
8774 cltype = type_nit__MClassType.color;
8775 idtype = type_nit__MClassType.id;
8776 if(cltype >= var_recvtype->type->table_size) {
8777 var11 = 0;
8778 } else {
8779 var11 = var_recvtype->type->type_table[cltype] == idtype;
8780 }
8781 var12 = !var11;
8782 if (var12){
8783 /* <var_recvtype:nullable MType(MType)> isa MNullableType */
8784 cltype14 = type_nit__MNullableType.color;
8785 idtype15 = type_nit__MNullableType.id;
8786 if(cltype14 >= var_recvtype->type->table_size) {
8787 var13 = 0;
8788 } else {
8789 var13 = var_recvtype->type->type_table[cltype14] == idtype15;
8790 }
8791 if (var13){
8792 if (varonce) {
8793 var16 = varonce;
8794 } else {
8795 var17 = "Type error: cannot instantiate the nullable type ";
8796 var18 = 49;
8797 var19 = standard___standard__NativeString___to_s_with_length(var17, var18);
8798 var16 = var19;
8799 varonce = var16;
8800 }
8801 if (varonce20) {
8802 var21 = varonce20;
8803 } else {
8804 var22 = ".";
8805 var23 = 1;
8806 var24 = standard___standard__NativeString___to_s_with_length(var22, var23);
8807 var21 = var24;
8808 varonce20 = var21;
8809 }
8810 var25 = NEW_standard__Array(&type_standard__Array__standard__Object);
8811 { /* var25 = array_instance Array[Object] */
8812 var26 = 3;
8813 var27 = NEW_standard__NativeArray(var26, &type_standard__NativeArray__standard__Object);
8814 ((struct instance_standard__NativeArray*)var27)->values[0] = (val*) var16;
8815 ((struct instance_standard__NativeArray*)var27)->values[1] = (val*) var_recvtype;
8816 ((struct instance_standard__NativeArray*)var27)->values[2] = (val*) var21;
8817 {
8818 ((void (*)(val* self, val* p0, long p1))(var25->class->vft[COLOR_standard__array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
8819 }
8820 }
8821 {
8822 var28 = ((val* (*)(val* self))(var25->class->vft[COLOR_standard__string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
8823 }
8824 {
8825 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var28); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
8826 }
8827 goto RET_LABEL;
8828 } else {
8829 if (varonce29) {
8830 var30 = varonce29;
8831 } else {
8832 var31 = "Type error: cannot instantiate the formal type ";
8833 var32 = 47;
8834 var33 = standard___standard__NativeString___to_s_with_length(var31, var32);
8835 var30 = var33;
8836 varonce29 = var30;
8837 }
8838 if (varonce34) {
8839 var35 = varonce34;
8840 } else {
8841 var36 = ".";
8842 var37 = 1;
8843 var38 = standard___standard__NativeString___to_s_with_length(var36, var37);
8844 var35 = var38;
8845 varonce34 = var35;
8846 }
8847 var39 = NEW_standard__Array(&type_standard__Array__standard__Object);
8848 { /* var39 = array_instance Array[Object] */
8849 var40 = 3;
8850 var41 = NEW_standard__NativeArray(var40, &type_standard__NativeArray__standard__Object);
8851 ((struct instance_standard__NativeArray*)var41)->values[0] = (val*) var30;
8852 ((struct instance_standard__NativeArray*)var41)->values[1] = (val*) var_recvtype;
8853 ((struct instance_standard__NativeArray*)var41)->values[2] = (val*) var35;
8854 {
8855 ((void (*)(val* self, val* p0, long p1))(var39->class->vft[COLOR_standard__array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
8856 }
8857 }
8858 {
8859 var42 = ((val* (*)(val* self))(var39->class->vft[COLOR_standard__string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
8860 }
8861 {
8862 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var42); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
8863 }
8864 goto RET_LABEL;
8865 }
8866 } else {
8867 }
8868 {
8869 { /* Inline typing#ANewExpr#recvtype= (self,var_recvtype) on <self:ANewExpr> */
8870 self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val = var_recvtype; /* _recvtype on <self:ANewExpr> */
8871 RET_LABEL43:(void)0;
8872 }
8873 }
8874 {
8875 { /* Inline parser_nodes#ANewExpr#n_id (self) on <self:ANewExpr> */
8876 var46 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_id].val; /* _n_id on <self:ANewExpr> */
8877 var44 = var46;
8878 RET_LABEL45:(void)0;
8879 }
8880 }
8881 var_nid = var44;
8882 var47 = NULL;
8883 if (var_nid == NULL) {
8884 var48 = 0; /* is null */
8885 } else {
8886 var48 = 1; /* arg is null and recv is not */
8887 }
8888 if (0) {
8889 { /* Inline kernel#Object#!= (var_nid,var47) on <var_nid:nullable TId> */
8890 var_other51 = var47;
8891 {
8892 var52 = ((short int (*)(val* self, val* p0))(var_nid->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nid, var_other51) /* == on <var_nid:nullable TId(TId)>*/;
8893 }
8894 var53 = !var52;
8895 var49 = var53;
8896 goto RET_LABEL50;
8897 RET_LABEL50:(void)0;
8898 }
8899 var48 = var49;
8900 }
8901 if (var48){
8902 {
8903 var54 = nit__lexer_work___Token___text(var_nid);
8904 }
8905 var_name = var54;
8906 } else {
8907 if (varonce55) {
8908 var56 = varonce55;
8909 } else {
8910 var57 = "new";
8911 var58 = 3;
8912 var59 = standard___standard__NativeString___to_s_with_length(var57, var58);
8913 var56 = var59;
8914 varonce55 = var56;
8915 }
8916 var_name = var56;
8917 }
8918 var60 = 0;
8919 {
8920 var61 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, self, var_recvtype, var_name, var60);
8921 }
8922 var_callsite = var61;
8923 var62 = NULL;
8924 if (var_callsite == NULL) {
8925 var63 = 1; /* is null */
8926 } else {
8927 var63 = 0; /* arg is null but recv is not */
8928 }
8929 if (0) {
8930 { /* Inline kernel#Object#== (var_callsite,var62) on <var_callsite:nullable CallSite> */
8931 var_other = var62;
8932 {
8933 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
8934 var68 = var_callsite == var_other;
8935 var66 = var68;
8936 goto RET_LABEL67;
8937 RET_LABEL67:(void)0;
8938 }
8939 }
8940 var64 = var66;
8941 goto RET_LABEL65;
8942 RET_LABEL65:(void)0;
8943 }
8944 var63 = var64;
8945 }
8946 if (var63){
8947 goto RET_LABEL;
8948 } else {
8949 }
8950 {
8951 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
8952 var71 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
8953 if (unlikely(var71 == NULL)) {
8954 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8955 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
8956 show_backtrace(1);
8957 }
8958 var69 = var71;
8959 RET_LABEL70:(void)0;
8960 }
8961 }
8962 {
8963 { /* Inline model#MMethod#is_new (var69) on <var69:MMethod> */
8964 var74 = var69->attrs[COLOR_nit__model__MMethod___is_new].s; /* _is_new on <var69:MMethod> */
8965 var72 = var74;
8966 RET_LABEL73:(void)0;
8967 }
8968 }
8969 var75 = !var72;
8970 if (var75){
8971 {
8972 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
8973 var78 = var_recvtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
8974 if (unlikely(var78 == NULL)) {
8975 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8976 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
8977 show_backtrace(1);
8978 }
8979 var76 = var78;
8980 RET_LABEL77:(void)0;
8981 }
8982 }
8983 {
8984 { /* Inline model#MClass#kind (var76) on <var76:MClass> */
8985 var81 = var76->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var76:MClass> */
8986 if (unlikely(var81 == NULL)) {
8987 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
8988 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
8989 show_backtrace(1);
8990 }
8991 var79 = var81;
8992 RET_LABEL80:(void)0;
8993 }
8994 }
8995 var_kind = var79;
8996 {
8997 var82 = nit__model___standard__Object___concrete_kind(self);
8998 }
8999 {
9000 { /* Inline kernel#Object#!= (var_kind,var82) on <var_kind:MClassKind> */
9001 var_other51 = var82;
9002 {
9003 var85 = ((short int (*)(val* self, val* p0))(var_kind->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_kind, var_other51) /* == on <var_kind:MClassKind>*/;
9004 }
9005 var86 = !var85;
9006 var83 = var86;
9007 goto RET_LABEL84;
9008 RET_LABEL84:(void)0;
9009 }
9010 }
9011 if (var83){
9012 if (varonce87) {
9013 var88 = varonce87;
9014 } else {
9015 var89 = "Type Error: Cannot instantiate ";
9016 var90 = 31;
9017 var91 = standard___standard__NativeString___to_s_with_length(var89, var90);
9018 var88 = var91;
9019 varonce87 = var88;
9020 }
9021 if (varonce92) {
9022 var93 = varonce92;
9023 } else {
9024 var94 = " ";
9025 var95 = 1;
9026 var96 = standard___standard__NativeString___to_s_with_length(var94, var95);
9027 var93 = var96;
9028 varonce92 = var93;
9029 }
9030 if (varonce97) {
9031 var98 = varonce97;
9032 } else {
9033 var99 = ".";
9034 var100 = 1;
9035 var101 = standard___standard__NativeString___to_s_with_length(var99, var100);
9036 var98 = var101;
9037 varonce97 = var98;
9038 }
9039 var102 = NEW_standard__Array(&type_standard__Array__standard__Object);
9040 { /* var102 = array_instance Array[Object] */
9041 var103 = 5;
9042 var104 = NEW_standard__NativeArray(var103, &type_standard__NativeArray__standard__Object);
9043 ((struct instance_standard__NativeArray*)var104)->values[0] = (val*) var88;
9044 ((struct instance_standard__NativeArray*)var104)->values[1] = (val*) var_kind;
9045 ((struct instance_standard__NativeArray*)var104)->values[2] = (val*) var93;
9046 ((struct instance_standard__NativeArray*)var104)->values[3] = (val*) var_recvtype;
9047 ((struct instance_standard__NativeArray*)var104)->values[4] = (val*) var98;
9048 {
9049 ((void (*)(val* self, val* p0, long p1))(var102->class->vft[COLOR_standard__array__Array__with_native]))(var102, var104, var103) /* with_native on <var102:Array[Object]>*/;
9050 }
9051 }
9052 {
9053 var105 = ((val* (*)(val* self))(var102->class->vft[COLOR_standard__string__Object__to_s]))(var102) /* to_s on <var102:Array[Object]>*/;
9054 }
9055 {
9056 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var105); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9057 }
9058 goto RET_LABEL;
9059 } else {
9060 }
9061 {
9062 { /* Inline typing#AExpr#mtype= (self,var_recvtype) on <self:ANewExpr> */
9063 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_recvtype; /* _mtype on <self:ANewExpr> */
9064 RET_LABEL106:(void)0;
9065 }
9066 }
9067 } else {
9068 {
9069 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
9070 var109 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
9071 if (unlikely(var109 == NULL)) {
9072 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
9073 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 494);
9074 show_backtrace(1);
9075 }
9076 var107 = var109;
9077 RET_LABEL108:(void)0;
9078 }
9079 }
9080 {
9081 { /* Inline model#MSignature#return_mtype (var107) on <var107:MSignature> */
9082 var112 = var107->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var107:MSignature> */
9083 var110 = var112;
9084 RET_LABEL111:(void)0;
9085 }
9086 }
9087 {
9088 { /* Inline typing#AExpr#mtype= (self,var110) on <self:ANewExpr> */
9089 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var110; /* _mtype on <self:ANewExpr> */
9090 RET_LABEL113:(void)0;
9091 }
9092 }
9093 {
9094 { /* Inline typing#AExpr#mtype (self) on <self:ANewExpr> */
9095 var116 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:ANewExpr> */
9096 var114 = var116;
9097 RET_LABEL115:(void)0;
9098 }
9099 }
9100 var117 = NULL;
9101 if (var114 == NULL) {
9102 var118 = 0; /* is null */
9103 } else {
9104 var118 = 1; /* arg is null and recv is not */
9105 }
9106 if (0) {
9107 { /* Inline kernel#Object#!= (var114,var117) on <var114:nullable MType> */
9108 var_other51 = var117;
9109 {
9110 var121 = ((short int (*)(val* self, val* p0))(var114->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var114, var_other51) /* == on <var114:nullable MType(MType)>*/;
9111 }
9112 var122 = !var121;
9113 var119 = var122;
9114 goto RET_LABEL120;
9115 RET_LABEL120:(void)0;
9116 }
9117 var118 = var119;
9118 }
9119 if (unlikely(!var118)) {
9120 PRINT_ERROR("Runtime error: %s", "Assert failed");
9121 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1771);
9122 show_backtrace(1);
9123 }
9124 }
9125 {
9126 { /* Inline typing#ANewExpr#callsite= (self,var_callsite) on <self:ANewExpr> */
9127 self->attrs[COLOR_nit__typing__ANewExpr___callsite].val = var_callsite; /* _callsite on <self:ANewExpr> */
9128 RET_LABEL123:(void)0;
9129 }
9130 }
9131 {
9132 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
9133 var126 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
9134 if (unlikely(var126 == NULL)) {
9135 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
9136 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 487);
9137 show_backtrace(1);
9138 }
9139 var124 = var126;
9140 RET_LABEL125:(void)0;
9141 }
9142 }
9143 {
9144 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
9145 var129 = var_recvtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
9146 if (unlikely(var129 == NULL)) {
9147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9148 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
9149 show_backtrace(1);
9150 }
9151 var127 = var129;
9152 RET_LABEL128:(void)0;
9153 }
9154 }
9155 {
9156 var130 = nit___nit__MMethod___is_init_for(var124, var127);
9157 }
9158 var131 = !var130;
9159 if (var131){
9160 if (varonce132) {
9161 var133 = varonce132;
9162 } else {
9163 var134 = "Error: ";
9164 var135 = 7;
9165 var136 = standard___standard__NativeString___to_s_with_length(var134, var135);
9166 var133 = var136;
9167 varonce132 = var133;
9168 }
9169 if (varonce137) {
9170 var138 = varonce137;
9171 } else {
9172 var139 = " is not a constructor.";
9173 var140 = 22;
9174 var141 = standard___standard__NativeString___to_s_with_length(var139, var140);
9175 var138 = var141;
9176 varonce137 = var138;
9177 }
9178 var142 = NEW_standard__Array(&type_standard__Array__standard__Object);
9179 { /* var142 = array_instance Array[Object] */
9180 var143 = 3;
9181 var144 = NEW_standard__NativeArray(var143, &type_standard__NativeArray__standard__Object);
9182 ((struct instance_standard__NativeArray*)var144)->values[0] = (val*) var133;
9183 ((struct instance_standard__NativeArray*)var144)->values[1] = (val*) var_name;
9184 ((struct instance_standard__NativeArray*)var144)->values[2] = (val*) var138;
9185 {
9186 ((void (*)(val* self, val* p0, long p1))(var142->class->vft[COLOR_standard__array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
9187 }
9188 }
9189 {
9190 var145 = ((val* (*)(val* self))(var142->class->vft[COLOR_standard__string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
9191 }
9192 {
9193 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var145); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9194 }
9195 goto RET_LABEL;
9196 } else {
9197 }
9198 {
9199 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
9200 var148 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
9201 if (unlikely(var148 == NULL)) {
9202 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
9203 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1968);
9204 show_backtrace(1);
9205 }
9206 var146 = var148;
9207 RET_LABEL147:(void)0;
9208 }
9209 }
9210 {
9211 var149 = nit__typing___AExprs___to_a(var146);
9212 }
9213 var_args = var149;
9214 {
9215 var150 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args);
9216 }
9217 RET_LABEL:;
9218 }
9219 /* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */
9220 val* nit__typing___AAttrFormExpr___mproperty(val* self) {
9221 val* var /* : nullable MAttribute */;
9222 val* var1 /* : nullable MAttribute */;
9223 var1 = self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrFormExpr> */
9224 var = var1;
9225 RET_LABEL:;
9226 return var;
9227 }
9228 /* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */
9229 void nit__typing___AAttrFormExpr___mproperty_61d(val* self, val* p0) {
9230 self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val = p0; /* _mproperty on <self:AAttrFormExpr> */
9231 RET_LABEL:;
9232 }
9233 /* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */
9234 val* nit__typing___AAttrFormExpr___attr_type(val* self) {
9235 val* var /* : nullable MType */;
9236 val* var1 /* : nullable MType */;
9237 var1 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrFormExpr> */
9238 var = var1;
9239 RET_LABEL:;
9240 return var;
9241 }
9242 /* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */
9243 void nit__typing___AAttrFormExpr___attr_type_61d(val* self, val* p0) {
9244 self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val = p0; /* _attr_type on <self:AAttrFormExpr> */
9245 RET_LABEL:;
9246 }
9247 /* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */
9248 void nit__typing___AAttrFormExpr___resolve_property(val* self, val* p0) {
9249 val* var_v /* var v: TypeVisitor */;
9250 val* var /* : AExpr */;
9251 val* var2 /* : AExpr */;
9252 val* var3 /* : nullable MType */;
9253 val* var_recvtype /* var recvtype: nullable MType */;
9254 val* var4 /* : null */;
9255 short int var5 /* : Bool */;
9256 short int var6 /* : Bool */;
9257 val* var_other /* var other: nullable Object */;
9258 short int var8 /* : Bool */;
9259 short int var10 /* : Bool */;
9260 val* var11 /* : TAttrid */;
9261 val* var13 /* : TAttrid */;
9262 val* var14 /* : String */;
9263 val* var_name /* var name: String */;
9264 short int var15 /* : Bool */;
9265 int cltype;
9266 int idtype;
9267 static val* varonce;
9268 val* var16 /* : String */;
9269 char* var17 /* : NativeString */;
9270 long var18 /* : Int */;
9271 val* var19 /* : FlatString */;
9272 static val* varonce20;
9273 val* var21 /* : String */;
9274 char* var22 /* : NativeString */;
9275 long var23 /* : Int */;
9276 val* var24 /* : FlatString */;
9277 val* var25 /* : Array[Object] */;
9278 long var26 /* : Int */;
9279 val* var27 /* : NativeArray[Object] */;
9280 val* var28 /* : String */;
9281 val* var29 /* : MType */;
9282 val* var_unsafe_type /* var unsafe_type: MType */;
9283 val* var30 /* : nullable MProperty */;
9284 val* var_mproperty /* var mproperty: nullable MProperty */;
9285 val* var31 /* : null */;
9286 short int var32 /* : Bool */;
9287 short int var33 /* : Bool */;
9288 short int var35 /* : Bool */;
9289 short int var37 /* : Bool */;
9290 val* var38 /* : ModelBuilder */;
9291 val* var40 /* : ModelBuilder */;
9292 static val* varonce41;
9293 val* var42 /* : String */;
9294 char* var43 /* : NativeString */;
9295 long var44 /* : Int */;
9296 val* var45 /* : FlatString */;
9297 static val* varonce46;
9298 val* var47 /* : String */;
9299 char* var48 /* : NativeString */;
9300 long var49 /* : Int */;
9301 val* var50 /* : FlatString */;
9302 static val* varonce51;
9303 val* var52 /* : String */;
9304 char* var53 /* : NativeString */;
9305 long var54 /* : Int */;
9306 val* var55 /* : FlatString */;
9307 val* var56 /* : Array[Object] */;
9308 long var57 /* : Int */;
9309 val* var58 /* : NativeArray[Object] */;
9310 val* var59 /* : String */;
9311 short int var60 /* : Bool */;
9312 int cltype61;
9313 int idtype62;
9314 val* var64 /* : MModule */;
9315 val* var66 /* : MModule */;
9316 val* var67 /* : Array[MPropDef] */;
9317 val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */;
9318 long var68 /* : Int */;
9319 long var70 /* : Int */;
9320 long var71 /* : Int */;
9321 short int var72 /* : Bool */;
9322 short int var74 /* : Bool */;
9323 val* var75 /* : nullable Object */;
9324 val* var_mpropdef /* var mpropdef: MAttributeDef */;
9325 val* var76 /* : nullable MType */;
9326 val* var78 /* : nullable MType */;
9327 val* var_attr_type /* var attr_type: MType */;
9328 val* var79 /* : AExpr */;
9329 val* var81 /* : AExpr */;
9330 short int var82 /* : Bool */;
9331 int cltype83;
9332 int idtype84;
9333 val* var85 /* : MType */;
9334 var_v = p0;
9335 {
9336 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AAttrFormExpr> */
9337 var2 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AAttrFormExpr> */
9338 if (unlikely(var2 == NULL)) {
9339 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
9340 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1976);
9341 show_backtrace(1);
9342 }
9343 var = var2;
9344 RET_LABEL1:(void)0;
9345 }
9346 }
9347 {
9348 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
9349 }
9350 var_recvtype = var3;
9351 var4 = NULL;
9352 if (var_recvtype == NULL) {
9353 var5 = 1; /* is null */
9354 } else {
9355 var5 = 0; /* arg is null but recv is not */
9356 }
9357 if (0) {
9358 { /* Inline kernel#Object#== (var_recvtype,var4) on <var_recvtype:nullable MType> */
9359 var_other = var4;
9360 {
9361 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
9362 var10 = var_recvtype == var_other;
9363 var8 = var10;
9364 goto RET_LABEL9;
9365 RET_LABEL9:(void)0;
9366 }
9367 }
9368 var6 = var8;
9369 goto RET_LABEL7;
9370 RET_LABEL7:(void)0;
9371 }
9372 var5 = var6;
9373 }
9374 if (var5){
9375 goto RET_LABEL;
9376 } else {
9377 }
9378 {
9379 { /* Inline parser_nodes#AAttrFormExpr#n_id (self) on <self:AAttrFormExpr> */
9380 var13 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_id].val; /* _n_id on <self:AAttrFormExpr> */
9381 if (unlikely(var13 == NULL)) {
9382 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
9383 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1979);
9384 show_backtrace(1);
9385 }
9386 var11 = var13;
9387 RET_LABEL12:(void)0;
9388 }
9389 }
9390 {
9391 var14 = nit__lexer_work___Token___text(var11);
9392 }
9393 var_name = var14;
9394 /* <var_recvtype:nullable MType(MType)> isa MNullType */
9395 cltype = type_nit__MNullType.color;
9396 idtype = type_nit__MNullType.id;
9397 if(cltype >= var_recvtype->type->table_size) {
9398 var15 = 0;
9399 } else {
9400 var15 = var_recvtype->type->type_table[cltype] == idtype;
9401 }
9402 if (var15){
9403 if (varonce) {
9404 var16 = varonce;
9405 } else {
9406 var17 = "Error: Attribute \'";
9407 var18 = 18;
9408 var19 = standard___standard__NativeString___to_s_with_length(var17, var18);
9409 var16 = var19;
9410 varonce = var16;
9411 }
9412 if (varonce20) {
9413 var21 = varonce20;
9414 } else {
9415 var22 = "\' access on \'null\'.";
9416 var23 = 19;
9417 var24 = standard___standard__NativeString___to_s_with_length(var22, var23);
9418 var21 = var24;
9419 varonce20 = var21;
9420 }
9421 var25 = NEW_standard__Array(&type_standard__Array__standard__Object);
9422 { /* var25 = array_instance Array[Object] */
9423 var26 = 3;
9424 var27 = NEW_standard__NativeArray(var26, &type_standard__NativeArray__standard__Object);
9425 ((struct instance_standard__NativeArray*)var27)->values[0] = (val*) var16;
9426 ((struct instance_standard__NativeArray*)var27)->values[1] = (val*) var_name;
9427 ((struct instance_standard__NativeArray*)var27)->values[2] = (val*) var21;
9428 {
9429 ((void (*)(val* self, val* p0, long p1))(var25->class->vft[COLOR_standard__array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
9430 }
9431 }
9432 {
9433 var28 = ((val* (*)(val* self))(var25->class->vft[COLOR_standard__string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
9434 }
9435 {
9436 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var28); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9437 }
9438 goto RET_LABEL;
9439 } else {
9440 }
9441 {
9442 var29 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_recvtype);
9443 }
9444 var_unsafe_type = var29;
9445 {
9446 var30 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, self, var_unsafe_type, var_name);
9447 }
9448 var_mproperty = var30;
9449 var31 = NULL;
9450 if (var_mproperty == NULL) {
9451 var32 = 1; /* is null */
9452 } else {
9453 var32 = 0; /* arg is null but recv is not */
9454 }
9455 if (0) {
9456 { /* Inline kernel#Object#== (var_mproperty,var31) on <var_mproperty:nullable MProperty> */
9457 var_other = var31;
9458 {
9459 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
9460 var37 = var_mproperty == var_other;
9461 var35 = var37;
9462 goto RET_LABEL36;
9463 RET_LABEL36:(void)0;
9464 }
9465 }
9466 var33 = var35;
9467 goto RET_LABEL34;
9468 RET_LABEL34:(void)0;
9469 }
9470 var32 = var33;
9471 }
9472 if (var32){
9473 {
9474 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
9475 var40 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
9476 if (unlikely(var40 == NULL)) {
9477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
9478 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
9479 show_backtrace(1);
9480 }
9481 var38 = var40;
9482 RET_LABEL39:(void)0;
9483 }
9484 }
9485 if (varonce41) {
9486 var42 = varonce41;
9487 } else {
9488 var43 = "Error: Attribute ";
9489 var44 = 17;
9490 var45 = standard___standard__NativeString___to_s_with_length(var43, var44);
9491 var42 = var45;
9492 varonce41 = var42;
9493 }
9494 if (varonce46) {
9495 var47 = varonce46;
9496 } else {
9497 var48 = " doesn\'t exists in ";
9498 var49 = 19;
9499 var50 = standard___standard__NativeString___to_s_with_length(var48, var49);
9500 var47 = var50;
9501 varonce46 = var47;
9502 }
9503 if (varonce51) {
9504 var52 = varonce51;
9505 } else {
9506 var53 = ".";
9507 var54 = 1;
9508 var55 = standard___standard__NativeString___to_s_with_length(var53, var54);
9509 var52 = var55;
9510 varonce51 = var52;
9511 }
9512 var56 = NEW_standard__Array(&type_standard__Array__standard__Object);
9513 { /* var56 = array_instance Array[Object] */
9514 var57 = 5;
9515 var58 = NEW_standard__NativeArray(var57, &type_standard__NativeArray__standard__Object);
9516 ((struct instance_standard__NativeArray*)var58)->values[0] = (val*) var42;
9517 ((struct instance_standard__NativeArray*)var58)->values[1] = (val*) var_name;
9518 ((struct instance_standard__NativeArray*)var58)->values[2] = (val*) var47;
9519 ((struct instance_standard__NativeArray*)var58)->values[3] = (val*) var_recvtype;
9520 ((struct instance_standard__NativeArray*)var58)->values[4] = (val*) var52;
9521 {
9522 ((void (*)(val* self, val* p0, long p1))(var56->class->vft[COLOR_standard__array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
9523 }
9524 }
9525 {
9526 var59 = ((val* (*)(val* self))(var56->class->vft[COLOR_standard__string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
9527 }
9528 {
9529 nit___nit__ModelBuilder___error(var38, self, var59); /* Direct call modelbuilder_base#ModelBuilder#error on <var38:ModelBuilder>*/
9530 }
9531 goto RET_LABEL;
9532 } else {
9533 }
9534 /* <var_mproperty:nullable MProperty(MProperty)> isa MAttribute */
9535 cltype61 = type_nit__MAttribute.color;
9536 idtype62 = type_nit__MAttribute.id;
9537 if(cltype61 >= var_mproperty->type->table_size) {
9538 var60 = 0;
9539 } else {
9540 var60 = var_mproperty->type->type_table[cltype61] == idtype62;
9541 }
9542 if (unlikely(!var60)) {
9543 PRINT_ERROR("Runtime error: %s", "Assert failed");
9544 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1812);
9545 show_backtrace(1);
9546 }
9547 {
9548 { /* Inline typing#AAttrFormExpr#mproperty= (self,var_mproperty) on <self:AAttrFormExpr> */
9549 self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val = var_mproperty; /* _mproperty on <self:AAttrFormExpr> */
9550 RET_LABEL63:(void)0;
9551 }
9552 }
9553 {
9554 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
9555 var66 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
9556 if (unlikely(var66 == NULL)) {
9557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
9558 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
9559 show_backtrace(1);
9560 }
9561 var64 = var66;
9562 RET_LABEL65:(void)0;
9563 }
9564 }
9565 {
9566 var67 = nit___nit__MProperty___lookup_definitions(var_mproperty, var64, var_unsafe_type);
9567 }
9568 var_mpropdefs = var67;
9569 {
9570 { /* Inline array#AbstractArrayRead#length (var_mpropdefs) on <var_mpropdefs:Array[MAttributeDef]> */
9571 var70 = var_mpropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_mpropdefs:Array[MAttributeDef]> */
9572 var68 = var70;
9573 RET_LABEL69:(void)0;
9574 }
9575 }
9576 var71 = 1;
9577 {
9578 { /* Inline kernel#Int#== (var68,var71) on <var68:Int> */
9579 var74 = var68 == var71;
9580 var72 = var74;
9581 goto RET_LABEL73;
9582 RET_LABEL73:(void)0;
9583 }
9584 }
9585 if (unlikely(!var72)) {
9586 PRINT_ERROR("Runtime error: %s", "Assert failed");
9587 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1816);
9588 show_backtrace(1);
9589 }
9590 {
9591 var75 = standard___standard__SequenceRead___Collection__first(var_mpropdefs);
9592 }
9593 var_mpropdef = var75;
9594 {
9595 { /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on <var_mpropdef:MAttributeDef> */
9596 var78 = var_mpropdef->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var_mpropdef:MAttributeDef> */
9597 var76 = var78;
9598 RET_LABEL77:(void)0;
9599 }
9600 }
9601 if (unlikely(var76 == NULL)) {
9602 PRINT_ERROR("Runtime error: %s", "Cast failed");
9603 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1818);
9604 show_backtrace(1);
9605 }
9606 var_attr_type = var76;
9607 {
9608 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AAttrFormExpr> */
9609 var81 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AAttrFormExpr> */
9610 if (unlikely(var81 == NULL)) {
9611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
9612 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1976);
9613 show_backtrace(1);
9614 }
9615 var79 = var81;
9616 RET_LABEL80:(void)0;
9617 }
9618 }
9619 /* <var79:AExpr> isa ASelfExpr */
9620 cltype83 = type_nit__ASelfExpr.color;
9621 idtype84 = type_nit__ASelfExpr.id;
9622 if(cltype83 >= var79->type->table_size) {
9623 var82 = 0;
9624 } else {
9625 var82 = var79->type->type_table[cltype83] == idtype84;
9626 }
9627 {
9628 var85 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_attr_type, var_recvtype, var82);
9629 }
9630 var_attr_type = var85;
9631 {
9632 { /* Inline typing#AAttrFormExpr#attr_type= (self,var_attr_type) on <self:AAttrFormExpr> */
9633 self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val = var_attr_type; /* _attr_type on <self:AAttrFormExpr> */
9634 RET_LABEL86:(void)0;
9635 }
9636 }
9637 RET_LABEL:;
9638 }
9639 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
9640 void nit__typing___AAttrExpr___AExpr__accept_typing(val* self, val* p0) {
9641 val* var_v /* var v: TypeVisitor */;
9642 val* var /* : nullable MType */;
9643 val* var2 /* : nullable MType */;
9644 var_v = p0;
9645 {
9646 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrExpr>*/
9647 }
9648 {
9649 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrExpr> */
9650 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrExpr> */
9651 var = var2;
9652 RET_LABEL1:(void)0;
9653 }
9654 }
9655 {
9656 { /* Inline typing#AExpr#mtype= (self,var) on <self:AAttrExpr> */
9657 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on <self:AAttrExpr> */
9658 RET_LABEL3:(void)0;
9659 }
9660 }
9661 RET_LABEL:;
9662 }
9663 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
9664 void nit__typing___AAttrAssignExpr___AExpr__accept_typing(val* self, val* p0) {
9665 val* var_v /* var v: TypeVisitor */;
9666 val* var /* : nullable MType */;
9667 val* var2 /* : nullable MType */;
9668 val* var_mtype /* var mtype: nullable MType */;
9669 val* var3 /* : AExpr */;
9670 val* var5 /* : AExpr */;
9671 val* var6 /* : nullable MType */;
9672 short int var7 /* : Bool */;
9673 var_v = p0;
9674 {
9675 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrAssignExpr>*/
9676 }
9677 {
9678 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrAssignExpr> */
9679 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrAssignExpr> */
9680 var = var2;
9681 RET_LABEL1:(void)0;
9682 }
9683 }
9684 var_mtype = var;
9685 {
9686 { /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:AAttrAssignExpr> */
9687 var5 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:AAttrAssignExpr> */
9688 if (unlikely(var5 == NULL)) {
9689 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
9690 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1772);
9691 show_backtrace(1);
9692 }
9693 var3 = var5;
9694 RET_LABEL4:(void)0;
9695 }
9696 }
9697 {
9698 var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var3, var_mtype);
9699 }
9700 var7 = 1;
9701 {
9702 { /* Inline typing#AExpr#is_typed= (self,var7) on <self:AAttrAssignExpr> */
9703 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var7; /* _is_typed on <self:AAttrAssignExpr> */
9704 RET_LABEL8:(void)0;
9705 }
9706 }
9707 RET_LABEL:;
9708 }
9709 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
9710 void nit__typing___AAttrReassignExpr___AExpr__accept_typing(val* self, val* p0) {
9711 val* var_v /* var v: TypeVisitor */;
9712 val* var /* : nullable MType */;
9713 val* var2 /* : nullable MType */;
9714 val* var_mtype /* var mtype: nullable MType */;
9715 val* var3 /* : null */;
9716 short int var4 /* : Bool */;
9717 short int var5 /* : Bool */;
9718 val* var_other /* var other: nullable Object */;
9719 short int var7 /* : Bool */;
9720 short int var9 /* : Bool */;
9721 val* var10 /* : nullable MType */;
9722 short int var11 /* : Bool */;
9723 var_v = p0;
9724 {
9725 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrReassignExpr>*/
9726 }
9727 {
9728 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrReassignExpr> */
9729 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrReassignExpr> */
9730 var = var2;
9731 RET_LABEL1:(void)0;
9732 }
9733 }
9734 var_mtype = var;
9735 var3 = NULL;
9736 if (var_mtype == NULL) {
9737 var4 = 1; /* is null */
9738 } else {
9739 var4 = 0; /* arg is null but recv is not */
9740 }
9741 if (0) {
9742 { /* Inline kernel#Object#== (var_mtype,var3) on <var_mtype:nullable MType> */
9743 var_other = var3;
9744 {
9745 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
9746 var9 = var_mtype == var_other;
9747 var7 = var9;
9748 goto RET_LABEL8;
9749 RET_LABEL8:(void)0;
9750 }
9751 }
9752 var5 = var7;
9753 goto RET_LABEL6;
9754 RET_LABEL6:(void)0;
9755 }
9756 var4 = var5;
9757 }
9758 if (var4){
9759 goto RET_LABEL;
9760 } else {
9761 }
9762 {
9763 var10 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_mtype, var_mtype);
9764 }
9765 var11 = 1;
9766 {
9767 { /* Inline typing#AExpr#is_typed= (self,var11) on <self:AAttrReassignExpr> */
9768 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var11; /* _is_typed on <self:AAttrReassignExpr> */
9769 RET_LABEL12:(void)0;
9770 }
9771 }
9772 RET_LABEL:;
9773 }
9774 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
9775 void nit__typing___AIssetAttrExpr___AExpr__accept_typing(val* self, val* p0) {
9776 val* var_v /* var v: TypeVisitor */;
9777 val* var /* : nullable MType */;
9778 val* var2 /* : nullable MType */;
9779 val* var_mtype /* var mtype: nullable MType */;
9780 val* var3 /* : null */;
9781 short int var4 /* : Bool */;
9782 short int var5 /* : Bool */;
9783 val* var_other /* var other: nullable Object */;
9784 short int var7 /* : Bool */;
9785 short int var9 /* : Bool */;
9786 val* var10 /* : AExpr */;
9787 val* var12 /* : AExpr */;
9788 val* var13 /* : nullable MType */;
9789 val* var_recvtype /* var recvtype: MType */;
9790 short int var14 /* : Bool */;
9791 val* var15 /* : MType */;
9792 val* var_bound /* var bound: MType */;
9793 short int var16 /* : Bool */;
9794 int cltype;
9795 int idtype;
9796 static val* varonce;
9797 val* var17 /* : String */;
9798 char* var18 /* : NativeString */;
9799 long var19 /* : Int */;
9800 val* var20 /* : FlatString */;
9801 val* var21 /* : nullable MType */;
9802 var_v = p0;
9803 {
9804 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AIssetAttrExpr>*/
9805 }
9806 {
9807 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AIssetAttrExpr> */
9808 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AIssetAttrExpr> */
9809 var = var2;
9810 RET_LABEL1:(void)0;
9811 }
9812 }
9813 var_mtype = var;
9814 var3 = NULL;
9815 if (var_mtype == NULL) {
9816 var4 = 1; /* is null */
9817 } else {
9818 var4 = 0; /* arg is null but recv is not */
9819 }
9820 if (0) {
9821 { /* Inline kernel#Object#== (var_mtype,var3) on <var_mtype:nullable MType> */
9822 var_other = var3;
9823 {
9824 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
9825 var9 = var_mtype == var_other;
9826 var7 = var9;
9827 goto RET_LABEL8;
9828 RET_LABEL8:(void)0;
9829 }
9830 }
9831 var5 = var7;
9832 goto RET_LABEL6;
9833 RET_LABEL6:(void)0;
9834 }
9835 var4 = var5;
9836 }
9837 if (var4){
9838 goto RET_LABEL;
9839 } else {
9840 }
9841 {
9842 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AIssetAttrExpr> */
9843 var12 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AIssetAttrExpr> */
9844 if (unlikely(var12 == NULL)) {
9845 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
9846 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1976);
9847 show_backtrace(1);
9848 }
9849 var10 = var12;
9850 RET_LABEL11:(void)0;
9851 }
9852 }
9853 {
9854 var13 = ((val* (*)(val* self))(var10->class->vft[COLOR_nit__typing__AExpr__mtype]))(var10) /* mtype on <var10:AExpr>*/;
9855 }
9856 if (unlikely(var13 == NULL)) {
9857 PRINT_ERROR("Runtime error: %s", "Cast failed");
9858 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1864);
9859 show_backtrace(1);
9860 }
9861 var_recvtype = var13;
9862 var14 = 0;
9863 {
9864 var15 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_mtype, var_recvtype, var14);
9865 }
9866 var_bound = var15;
9867 /* <var_bound:MType> isa MNullableType */
9868 cltype = type_nit__MNullableType.color;
9869 idtype = type_nit__MNullableType.id;
9870 if(cltype >= var_bound->type->table_size) {
9871 var16 = 0;
9872 } else {
9873 var16 = var_bound->type->type_table[cltype] == idtype;
9874 }
9875 if (var16){
9876 if (varonce) {
9877 var17 = varonce;
9878 } else {
9879 var18 = "Error: isset on a nullable attribute.";
9880 var19 = 37;
9881 var20 = standard___standard__NativeString___to_s_with_length(var18, var19);
9882 var17 = var20;
9883 varonce = var17;
9884 }
9885 {
9886 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var17); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9887 }
9888 } else {
9889 }
9890 {
9891 var21 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
9892 }
9893 {
9894 { /* Inline typing#AExpr#mtype= (self,var21) on <self:AIssetAttrExpr> */
9895 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var21; /* _mtype on <self:AIssetAttrExpr> */
9896 RET_LABEL22:(void)0;
9897 }
9898 }
9899 RET_LABEL:;
9900 }
9901 /* method typing#AVarargExpr#accept_typing for (self: AVarargExpr, TypeVisitor) */
9902 void nit__typing___AVarargExpr___AExpr__accept_typing(val* self, val* p0) {
9903 val* var_v /* var v: TypeVisitor */;
9904 static val* varonce;
9905 val* var /* : String */;
9906 char* var1 /* : NativeString */;
9907 long var2 /* : Int */;
9908 val* var3 /* : FlatString */;
9909 var_v = p0;
9910 if (varonce) {
9911 var = varonce;
9912 } else {
9913 var1 = "Syntax error: unexpected `...`";
9914 var2 = 30;
9915 var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
9916 var = var3;
9917 varonce = var;
9918 }
9919 {
9920 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9921 }
9922 RET_LABEL:;
9923 }