Makefile: Document deeply-nested libraries.
[nit.git] / c_src / abstract_compiler.sep.5.c
1 #include "abstract_compiler.sep.0.h"
2 /* method abstract_compiler#AWhileExpr#stmt for (self: AWhileExpr, AbstractCompilerVisitor) */
3 void abstract_compiler__AWhileExpr__stmt(val* self, val* p0) {
4 val* var_v /* var v: AbstractCompilerVisitor */;
5 static val* varonce;
6 val* var /* : String */;
7 char* var1 /* : NativeString */;
8 long var2 /* : Int */;
9 val* var3 /* : FlatString */;
10 val* var4 /* : AExpr */;
11 val* var5 /* : RuntimeVariable */;
12 val* var_cond /* var cond: RuntimeVariable */;
13 static val* varonce6;
14 val* var7 /* : String */;
15 char* var8 /* : NativeString */;
16 long var9 /* : Int */;
17 val* var10 /* : FlatString */;
18 static val* varonce11;
19 val* var12 /* : String */;
20 char* var13 /* : NativeString */;
21 long var14 /* : Int */;
22 val* var15 /* : FlatString */;
23 val* var16 /* : Array[Object] */;
24 long var17 /* : Int */;
25 val* var18 /* : NativeArray[Object] */;
26 val* var19 /* : String */;
27 val* var20 /* : nullable AExpr */;
28 static val* varonce21;
29 val* var22 /* : String */;
30 char* var23 /* : NativeString */;
31 long var24 /* : Int */;
32 val* var25 /* : FlatString */;
33 val* var26 /* : nullable EscapeMark */;
34 val* var28 /* : nullable EscapeMark */;
35 val* var29 /* : String */;
36 static val* varonce30;
37 val* var31 /* : String */;
38 char* var32 /* : NativeString */;
39 long var33 /* : Int */;
40 val* var34 /* : FlatString */;
41 val* var35 /* : Array[Object] */;
42 long var36 /* : Int */;
43 val* var37 /* : NativeArray[Object] */;
44 val* var38 /* : String */;
45 static val* varonce39;
46 val* var40 /* : String */;
47 char* var41 /* : NativeString */;
48 long var42 /* : Int */;
49 val* var43 /* : FlatString */;
50 static val* varonce44;
51 val* var45 /* : String */;
52 char* var46 /* : NativeString */;
53 long var47 /* : Int */;
54 val* var48 /* : FlatString */;
55 val* var49 /* : nullable EscapeMark */;
56 val* var51 /* : nullable EscapeMark */;
57 val* var52 /* : String */;
58 static val* varonce53;
59 val* var54 /* : String */;
60 char* var55 /* : NativeString */;
61 long var56 /* : Int */;
62 val* var57 /* : FlatString */;
63 val* var58 /* : Array[Object] */;
64 long var59 /* : Int */;
65 val* var60 /* : NativeArray[Object] */;
66 val* var61 /* : String */;
67 var_v = p0;
68 if (varonce) {
69 var = varonce;
70 } else {
71 var1 = "for(;;) {";
72 var2 = 9;
73 var3 = string__NativeString__to_s_with_length(var1, var2);
74 var = var3;
75 varonce = var;
76 }
77 {
78 abstract_compiler__AbstractCompilerVisitor__add(var_v, var); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
79 }
80 {
81 var4 = parser_nodes__AWhileExpr__n_expr(self);
82 }
83 {
84 var5 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var4);
85 }
86 var_cond = var5;
87 if (varonce6) {
88 var7 = varonce6;
89 } else {
90 var8 = "if (!";
91 var9 = 5;
92 var10 = string__NativeString__to_s_with_length(var8, var9);
93 var7 = var10;
94 varonce6 = var7;
95 }
96 if (varonce11) {
97 var12 = varonce11;
98 } else {
99 var13 = ") break;";
100 var14 = 8;
101 var15 = string__NativeString__to_s_with_length(var13, var14);
102 var12 = var15;
103 varonce11 = var12;
104 }
105 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
106 { /* var16 = array_instance Array[Object] */
107 var17 = 3;
108 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
109 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
110 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_cond;
111 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
112 {
113 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
114 }
115 }
116 {
117 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
118 }
119 {
120 abstract_compiler__AbstractCompilerVisitor__add(var_v, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
121 }
122 {
123 var20 = parser_nodes__AWhileExpr__n_block(self);
124 }
125 {
126 abstract_compiler__AbstractCompilerVisitor__stmt(var_v, var20); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <var_v:AbstractCompilerVisitor>*/
127 }
128 if (varonce21) {
129 var22 = varonce21;
130 } else {
131 var23 = "CONTINUE_";
132 var24 = 9;
133 var25 = string__NativeString__to_s_with_length(var23, var24);
134 var22 = var25;
135 varonce21 = var22;
136 }
137 {
138 { /* Inline scope#AWhileExpr#escapemark (self) on <self:AWhileExpr> */
139 var28 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:AWhileExpr> */
140 var26 = var28;
141 RET_LABEL27:(void)0;
142 }
143 }
144 {
145 var29 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var26);
146 }
147 if (varonce30) {
148 var31 = varonce30;
149 } else {
150 var32 = ": (void)0;";
151 var33 = 10;
152 var34 = string__NativeString__to_s_with_length(var32, var33);
153 var31 = var34;
154 varonce30 = var31;
155 }
156 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
157 { /* var35 = array_instance Array[Object] */
158 var36 = 3;
159 var37 = NEW_array__NativeArray(var36, &type_array__NativeArraykernel__Object);
160 ((struct instance_array__NativeArray*)var37)->values[0] = (val*) var22;
161 ((struct instance_array__NativeArray*)var37)->values[1] = (val*) var29;
162 ((struct instance_array__NativeArray*)var37)->values[2] = (val*) var31;
163 {
164 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
165 }
166 }
167 {
168 var38 = ((val* (*)(val*))(var35->class->vft[COLOR_string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
169 }
170 {
171 abstract_compiler__AbstractCompilerVisitor__add(var_v, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
172 }
173 if (varonce39) {
174 var40 = varonce39;
175 } else {
176 var41 = "}";
177 var42 = 1;
178 var43 = string__NativeString__to_s_with_length(var41, var42);
179 var40 = var43;
180 varonce39 = var40;
181 }
182 {
183 abstract_compiler__AbstractCompilerVisitor__add(var_v, var40); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
184 }
185 if (varonce44) {
186 var45 = varonce44;
187 } else {
188 var46 = "BREAK_";
189 var47 = 6;
190 var48 = string__NativeString__to_s_with_length(var46, var47);
191 var45 = var48;
192 varonce44 = var45;
193 }
194 {
195 { /* Inline scope#AWhileExpr#escapemark (self) on <self:AWhileExpr> */
196 var51 = self->attrs[COLOR_scope__AWhileExpr___escapemark].val; /* _escapemark on <self:AWhileExpr> */
197 var49 = var51;
198 RET_LABEL50:(void)0;
199 }
200 }
201 {
202 var52 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var49);
203 }
204 if (varonce53) {
205 var54 = varonce53;
206 } else {
207 var55 = ": (void)0;";
208 var56 = 10;
209 var57 = string__NativeString__to_s_with_length(var55, var56);
210 var54 = var57;
211 varonce53 = var54;
212 }
213 var58 = NEW_array__Array(&type_array__Arraykernel__Object);
214 { /* var58 = array_instance Array[Object] */
215 var59 = 3;
216 var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
217 ((struct instance_array__NativeArray*)var60)->values[0] = (val*) var45;
218 ((struct instance_array__NativeArray*)var60)->values[1] = (val*) var52;
219 ((struct instance_array__NativeArray*)var60)->values[2] = (val*) var54;
220 {
221 ((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
222 }
223 }
224 {
225 var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
226 }
227 {
228 abstract_compiler__AbstractCompilerVisitor__add(var_v, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
229 }
230 RET_LABEL:;
231 }
232 /* method abstract_compiler#AWhileExpr#stmt for (self: Object, AbstractCompilerVisitor) */
233 void VIRTUAL_abstract_compiler__AWhileExpr__stmt(val* self, val* p0) {
234 abstract_compiler__AWhileExpr__stmt(self, p0); /* Direct call abstract_compiler#AWhileExpr#stmt on <self:Object(AWhileExpr)>*/
235 RET_LABEL:;
236 }
237 /* method abstract_compiler#ALoopExpr#stmt for (self: ALoopExpr, AbstractCompilerVisitor) */
238 void abstract_compiler__ALoopExpr__stmt(val* self, val* p0) {
239 val* var_v /* var v: AbstractCompilerVisitor */;
240 static val* varonce;
241 val* var /* : String */;
242 char* var1 /* : NativeString */;
243 long var2 /* : Int */;
244 val* var3 /* : FlatString */;
245 val* var4 /* : nullable AExpr */;
246 static val* varonce5;
247 val* var6 /* : String */;
248 char* var7 /* : NativeString */;
249 long var8 /* : Int */;
250 val* var9 /* : FlatString */;
251 val* var10 /* : nullable EscapeMark */;
252 val* var12 /* : nullable EscapeMark */;
253 val* var13 /* : String */;
254 static val* varonce14;
255 val* var15 /* : String */;
256 char* var16 /* : NativeString */;
257 long var17 /* : Int */;
258 val* var18 /* : FlatString */;
259 val* var19 /* : Array[Object] */;
260 long var20 /* : Int */;
261 val* var21 /* : NativeArray[Object] */;
262 val* var22 /* : String */;
263 static val* varonce23;
264 val* var24 /* : String */;
265 char* var25 /* : NativeString */;
266 long var26 /* : Int */;
267 val* var27 /* : FlatString */;
268 static val* varonce28;
269 val* var29 /* : String */;
270 char* var30 /* : NativeString */;
271 long var31 /* : Int */;
272 val* var32 /* : FlatString */;
273 val* var33 /* : nullable EscapeMark */;
274 val* var35 /* : nullable EscapeMark */;
275 val* var36 /* : String */;
276 static val* varonce37;
277 val* var38 /* : String */;
278 char* var39 /* : NativeString */;
279 long var40 /* : Int */;
280 val* var41 /* : FlatString */;
281 val* var42 /* : Array[Object] */;
282 long var43 /* : Int */;
283 val* var44 /* : NativeArray[Object] */;
284 val* var45 /* : String */;
285 var_v = p0;
286 if (varonce) {
287 var = varonce;
288 } else {
289 var1 = "for(;;) {";
290 var2 = 9;
291 var3 = string__NativeString__to_s_with_length(var1, var2);
292 var = var3;
293 varonce = var;
294 }
295 {
296 abstract_compiler__AbstractCompilerVisitor__add(var_v, var); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
297 }
298 {
299 var4 = parser_nodes__ALoopExpr__n_block(self);
300 }
301 {
302 abstract_compiler__AbstractCompilerVisitor__stmt(var_v, var4); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <var_v:AbstractCompilerVisitor>*/
303 }
304 if (varonce5) {
305 var6 = varonce5;
306 } else {
307 var7 = "CONTINUE_";
308 var8 = 9;
309 var9 = string__NativeString__to_s_with_length(var7, var8);
310 var6 = var9;
311 varonce5 = var6;
312 }
313 {
314 { /* Inline scope#ALoopExpr#escapemark (self) on <self:ALoopExpr> */
315 var12 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:ALoopExpr> */
316 var10 = var12;
317 RET_LABEL11:(void)0;
318 }
319 }
320 {
321 var13 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var10);
322 }
323 if (varonce14) {
324 var15 = varonce14;
325 } else {
326 var16 = ": (void)0;";
327 var17 = 10;
328 var18 = string__NativeString__to_s_with_length(var16, var17);
329 var15 = var18;
330 varonce14 = var15;
331 }
332 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
333 { /* var19 = array_instance Array[Object] */
334 var20 = 3;
335 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
336 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var6;
337 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var13;
338 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
339 {
340 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
341 }
342 }
343 {
344 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
345 }
346 {
347 abstract_compiler__AbstractCompilerVisitor__add(var_v, var22); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
348 }
349 if (varonce23) {
350 var24 = varonce23;
351 } else {
352 var25 = "}";
353 var26 = 1;
354 var27 = string__NativeString__to_s_with_length(var25, var26);
355 var24 = var27;
356 varonce23 = var24;
357 }
358 {
359 abstract_compiler__AbstractCompilerVisitor__add(var_v, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
360 }
361 if (varonce28) {
362 var29 = varonce28;
363 } else {
364 var30 = "BREAK_";
365 var31 = 6;
366 var32 = string__NativeString__to_s_with_length(var30, var31);
367 var29 = var32;
368 varonce28 = var29;
369 }
370 {
371 { /* Inline scope#ALoopExpr#escapemark (self) on <self:ALoopExpr> */
372 var35 = self->attrs[COLOR_scope__ALoopExpr___escapemark].val; /* _escapemark on <self:ALoopExpr> */
373 var33 = var35;
374 RET_LABEL34:(void)0;
375 }
376 }
377 {
378 var36 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var33);
379 }
380 if (varonce37) {
381 var38 = varonce37;
382 } else {
383 var39 = ": (void)0;";
384 var40 = 10;
385 var41 = string__NativeString__to_s_with_length(var39, var40);
386 var38 = var41;
387 varonce37 = var38;
388 }
389 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
390 { /* var42 = array_instance Array[Object] */
391 var43 = 3;
392 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
393 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var29;
394 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var36;
395 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
396 {
397 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
398 }
399 }
400 {
401 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
402 }
403 {
404 abstract_compiler__AbstractCompilerVisitor__add(var_v, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
405 }
406 RET_LABEL:;
407 }
408 /* method abstract_compiler#ALoopExpr#stmt for (self: Object, AbstractCompilerVisitor) */
409 void VIRTUAL_abstract_compiler__ALoopExpr__stmt(val* self, val* p0) {
410 abstract_compiler__ALoopExpr__stmt(self, p0); /* Direct call abstract_compiler#ALoopExpr#stmt on <self:Object(ALoopExpr)>*/
411 RET_LABEL:;
412 }
413 /* method abstract_compiler#AForExpr#stmt for (self: AForExpr, AbstractCompilerVisitor) */
414 void abstract_compiler__AForExpr__stmt(val* self, val* p0) {
415 val* var_v /* var v: AbstractCompilerVisitor */;
416 val* var /* : AExpr */;
417 val* var_nexpr /* var nexpr: AExpr */;
418 short int var1 /* : Bool */;
419 short int var2 /* : Bool */;
420 val* var3 /* : nullable Array[Variable] */;
421 val* var5 /* : nullable Array[Variable] */;
422 long var6 /* : Int */;
423 long var7 /* : Int */;
424 short int var8 /* : Bool */;
425 short int var9 /* : Bool */;
426 short int var11 /* : Bool */;
427 short int var_ /* var : Bool */;
428 short int var12 /* : Bool */;
429 int cltype;
430 int idtype;
431 short int var_13 /* var : Bool */;
432 val* var14 /* : AbstractCompiler */;
433 val* var16 /* : AbstractCompiler */;
434 val* var17 /* : ModelBuilder */;
435 val* var19 /* : ModelBuilder */;
436 val* var20 /* : ToolContext */;
437 val* var22 /* : ToolContext */;
438 val* var23 /* : OptionBool */;
439 val* var25 /* : OptionBool */;
440 val* var26 /* : nullable Object */;
441 val* var28 /* : nullable Object */;
442 short int var29 /* : Bool */;
443 short int var30 /* : Bool */;
444 val* var31 /* : AExpr */;
445 val* var32 /* : null */;
446 val* var33 /* : RuntimeVariable */;
447 val* var_from /* var from: RuntimeVariable */;
448 val* var34 /* : AExpr */;
449 val* var35 /* : null */;
450 val* var36 /* : RuntimeVariable */;
451 val* var_to /* var to: RuntimeVariable */;
452 val* var37 /* : nullable Array[Variable] */;
453 val* var39 /* : nullable Array[Variable] */;
454 val* var40 /* : nullable Object */;
455 val* var41 /* : RuntimeVariable */;
456 val* var_variable /* var variable: RuntimeVariable */;
457 static val* varonce;
458 val* var42 /* : String */;
459 char* var43 /* : NativeString */;
460 long var44 /* : Int */;
461 val* var45 /* : FlatString */;
462 static val* varonce46;
463 val* var47 /* : String */;
464 char* var48 /* : NativeString */;
465 long var49 /* : Int */;
466 val* var50 /* : FlatString */;
467 val* var51 /* : MType */;
468 val* var53 /* : MType */;
469 val* var54 /* : MMethod */;
470 val* var55 /* : Array[RuntimeVariable] */;
471 long var56 /* : Int */;
472 val* var_57 /* var : Array[RuntimeVariable] */;
473 val* var58 /* : nullable RuntimeVariable */;
474 val* var_ok /* var ok: nullable RuntimeVariable */;
475 val* var59 /* : null */;
476 short int var60 /* : Bool */;
477 short int var61 /* : Bool */;
478 val* var_other /* var other: nullable Object */;
479 short int var63 /* : Bool */;
480 short int var64 /* : Bool */;
481 short int var65 /* : Bool */;
482 static val* varonce66;
483 val* var67 /* : String */;
484 char* var68 /* : NativeString */;
485 long var69 /* : Int */;
486 val* var70 /* : FlatString */;
487 static val* varonce71;
488 val* var72 /* : String */;
489 char* var73 /* : NativeString */;
490 long var74 /* : Int */;
491 val* var75 /* : FlatString */;
492 val* var76 /* : Array[Object] */;
493 long var77 /* : Int */;
494 val* var78 /* : NativeArray[Object] */;
495 val* var79 /* : String */;
496 val* var80 /* : nullable AExpr */;
497 static val* varonce81;
498 val* var82 /* : String */;
499 char* var83 /* : NativeString */;
500 long var84 /* : Int */;
501 val* var85 /* : FlatString */;
502 val* var86 /* : nullable EscapeMark */;
503 val* var88 /* : nullable EscapeMark */;
504 val* var89 /* : String */;
505 static val* varonce90;
506 val* var91 /* : String */;
507 char* var92 /* : NativeString */;
508 long var93 /* : Int */;
509 val* var94 /* : FlatString */;
510 val* var95 /* : Array[Object] */;
511 long var96 /* : Int */;
512 val* var97 /* : NativeArray[Object] */;
513 val* var98 /* : String */;
514 static val* varonce99;
515 val* var100 /* : String */;
516 char* var101 /* : NativeString */;
517 long var102 /* : Int */;
518 val* var103 /* : FlatString */;
519 val* var104 /* : MType */;
520 val* var106 /* : MType */;
521 val* var107 /* : MMethod */;
522 val* var108 /* : Array[RuntimeVariable] */;
523 long var109 /* : Int */;
524 val* var_110 /* var : Array[RuntimeVariable] */;
525 val* var111 /* : nullable RuntimeVariable */;
526 val* var_succ /* var succ: nullable RuntimeVariable */;
527 val* var112 /* : null */;
528 short int var113 /* : Bool */;
529 short int var114 /* : Bool */;
530 short int var116 /* : Bool */;
531 short int var117 /* : Bool */;
532 short int var118 /* : Bool */;
533 static val* varonce119;
534 val* var120 /* : String */;
535 char* var121 /* : NativeString */;
536 long var122 /* : Int */;
537 val* var123 /* : FlatString */;
538 static val* varonce124;
539 val* var125 /* : String */;
540 char* var126 /* : NativeString */;
541 long var127 /* : Int */;
542 val* var128 /* : FlatString */;
543 val* var129 /* : nullable EscapeMark */;
544 val* var131 /* : nullable EscapeMark */;
545 val* var132 /* : String */;
546 static val* varonce133;
547 val* var134 /* : String */;
548 char* var135 /* : NativeString */;
549 long var136 /* : Int */;
550 val* var137 /* : FlatString */;
551 val* var138 /* : Array[Object] */;
552 long var139 /* : Int */;
553 val* var140 /* : NativeArray[Object] */;
554 val* var141 /* : String */;
555 val* var142 /* : AExpr */;
556 val* var143 /* : null */;
557 val* var144 /* : RuntimeVariable */;
558 val* var_cl /* var cl: RuntimeVariable */;
559 val* var145 /* : nullable CallSite */;
560 val* var147 /* : nullable CallSite */;
561 val* var_it_meth /* var it_meth: nullable CallSite */;
562 val* var148 /* : null */;
563 short int var149 /* : Bool */;
564 short int var150 /* : Bool */;
565 short int var152 /* : Bool */;
566 short int var153 /* : Bool */;
567 short int var154 /* : Bool */;
568 val* var155 /* : Array[RuntimeVariable] */;
569 long var156 /* : Int */;
570 val* var_157 /* var : Array[RuntimeVariable] */;
571 val* var158 /* : nullable RuntimeVariable */;
572 val* var_it /* var it: nullable RuntimeVariable */;
573 val* var159 /* : null */;
574 short int var160 /* : Bool */;
575 short int var161 /* : Bool */;
576 short int var163 /* : Bool */;
577 short int var164 /* : Bool */;
578 short int var165 /* : Bool */;
579 static val* varonce166;
580 val* var167 /* : String */;
581 char* var168 /* : NativeString */;
582 long var169 /* : Int */;
583 val* var170 /* : FlatString */;
584 val* var171 /* : nullable CallSite */;
585 val* var173 /* : nullable CallSite */;
586 val* var_isok_meth /* var isok_meth: nullable CallSite */;
587 val* var174 /* : null */;
588 short int var175 /* : Bool */;
589 short int var176 /* : Bool */;
590 short int var178 /* : Bool */;
591 short int var179 /* : Bool */;
592 short int var180 /* : Bool */;
593 val* var181 /* : Array[RuntimeVariable] */;
594 long var182 /* : Int */;
595 val* var_183 /* var : Array[RuntimeVariable] */;
596 val* var184 /* : nullable RuntimeVariable */;
597 val* var_ok185 /* var ok: nullable RuntimeVariable */;
598 val* var186 /* : null */;
599 short int var187 /* : Bool */;
600 short int var188 /* : Bool */;
601 short int var190 /* : Bool */;
602 short int var191 /* : Bool */;
603 short int var192 /* : Bool */;
604 static val* varonce193;
605 val* var194 /* : String */;
606 char* var195 /* : NativeString */;
607 long var196 /* : Int */;
608 val* var197 /* : FlatString */;
609 static val* varonce198;
610 val* var199 /* : String */;
611 char* var200 /* : NativeString */;
612 long var201 /* : Int */;
613 val* var202 /* : FlatString */;
614 val* var203 /* : Array[Object] */;
615 long var204 /* : Int */;
616 val* var205 /* : NativeArray[Object] */;
617 val* var206 /* : String */;
618 val* var207 /* : nullable Array[Variable] */;
619 val* var209 /* : nullable Array[Variable] */;
620 long var210 /* : Int */;
621 long var211 /* : Int */;
622 short int var212 /* : Bool */;
623 short int var213 /* : Bool */;
624 short int var215 /* : Bool */;
625 val* var216 /* : nullable CallSite */;
626 val* var218 /* : nullable CallSite */;
627 val* var_item_meth /* var item_meth: nullable CallSite */;
628 val* var219 /* : null */;
629 short int var220 /* : Bool */;
630 short int var221 /* : Bool */;
631 short int var223 /* : Bool */;
632 short int var224 /* : Bool */;
633 short int var225 /* : Bool */;
634 val* var226 /* : Array[RuntimeVariable] */;
635 long var227 /* : Int */;
636 val* var_228 /* var : Array[RuntimeVariable] */;
637 val* var229 /* : nullable RuntimeVariable */;
638 val* var_i /* var i: nullable RuntimeVariable */;
639 val* var230 /* : null */;
640 short int var231 /* : Bool */;
641 short int var232 /* : Bool */;
642 short int var234 /* : Bool */;
643 short int var235 /* : Bool */;
644 short int var236 /* : Bool */;
645 val* var237 /* : nullable Array[Variable] */;
646 val* var239 /* : nullable Array[Variable] */;
647 val* var240 /* : nullable Object */;
648 val* var241 /* : RuntimeVariable */;
649 val* var242 /* : nullable Array[Variable] */;
650 val* var244 /* : nullable Array[Variable] */;
651 long var245 /* : Int */;
652 long var246 /* : Int */;
653 short int var247 /* : Bool */;
654 short int var248 /* : Bool */;
655 short int var250 /* : Bool */;
656 val* var251 /* : nullable CallSite */;
657 val* var253 /* : nullable CallSite */;
658 val* var_key_meth /* var key_meth: nullable CallSite */;
659 val* var254 /* : null */;
660 short int var255 /* : Bool */;
661 short int var256 /* : Bool */;
662 short int var258 /* : Bool */;
663 short int var259 /* : Bool */;
664 short int var260 /* : Bool */;
665 val* var261 /* : Array[RuntimeVariable] */;
666 long var262 /* : Int */;
667 val* var_263 /* var : Array[RuntimeVariable] */;
668 val* var264 /* : nullable RuntimeVariable */;
669 val* var_i265 /* var i: nullable RuntimeVariable */;
670 val* var266 /* : null */;
671 short int var267 /* : Bool */;
672 short int var268 /* : Bool */;
673 short int var270 /* : Bool */;
674 short int var271 /* : Bool */;
675 short int var272 /* : Bool */;
676 val* var273 /* : nullable Array[Variable] */;
677 val* var275 /* : nullable Array[Variable] */;
678 long var276 /* : Int */;
679 val* var277 /* : nullable Object */;
680 val* var278 /* : RuntimeVariable */;
681 val* var279 /* : nullable CallSite */;
682 val* var281 /* : nullable CallSite */;
683 val* var_item_meth282 /* var item_meth: nullable CallSite */;
684 val* var283 /* : null */;
685 short int var284 /* : Bool */;
686 short int var285 /* : Bool */;
687 short int var287 /* : Bool */;
688 short int var288 /* : Bool */;
689 short int var289 /* : Bool */;
690 val* var290 /* : Array[RuntimeVariable] */;
691 long var291 /* : Int */;
692 val* var_292 /* var : Array[RuntimeVariable] */;
693 val* var293 /* : nullable RuntimeVariable */;
694 val* var294 /* : null */;
695 short int var295 /* : Bool */;
696 short int var296 /* : Bool */;
697 short int var298 /* : Bool */;
698 short int var299 /* : Bool */;
699 short int var300 /* : Bool */;
700 val* var301 /* : nullable Array[Variable] */;
701 val* var303 /* : nullable Array[Variable] */;
702 long var304 /* : Int */;
703 val* var305 /* : nullable Object */;
704 val* var306 /* : RuntimeVariable */;
705 val* var307 /* : nullable AExpr */;
706 static val* varonce308;
707 val* var309 /* : String */;
708 char* var310 /* : NativeString */;
709 long var311 /* : Int */;
710 val* var312 /* : FlatString */;
711 val* var313 /* : nullable EscapeMark */;
712 val* var315 /* : nullable EscapeMark */;
713 val* var316 /* : String */;
714 static val* varonce317;
715 val* var318 /* : String */;
716 char* var319 /* : NativeString */;
717 long var320 /* : Int */;
718 val* var321 /* : FlatString */;
719 val* var322 /* : Array[Object] */;
720 long var323 /* : Int */;
721 val* var324 /* : NativeArray[Object] */;
722 val* var325 /* : String */;
723 val* var326 /* : nullable CallSite */;
724 val* var328 /* : nullable CallSite */;
725 val* var_next_meth /* var next_meth: nullable CallSite */;
726 val* var329 /* : null */;
727 short int var330 /* : Bool */;
728 short int var331 /* : Bool */;
729 short int var333 /* : Bool */;
730 short int var334 /* : Bool */;
731 short int var335 /* : Bool */;
732 val* var336 /* : Array[RuntimeVariable] */;
733 long var337 /* : Int */;
734 val* var_338 /* var : Array[RuntimeVariable] */;
735 val* var339 /* : nullable RuntimeVariable */;
736 static val* varonce340;
737 val* var341 /* : String */;
738 char* var342 /* : NativeString */;
739 long var343 /* : Int */;
740 val* var344 /* : FlatString */;
741 static val* varonce345;
742 val* var346 /* : String */;
743 char* var347 /* : NativeString */;
744 long var348 /* : Int */;
745 val* var349 /* : FlatString */;
746 val* var350 /* : nullable EscapeMark */;
747 val* var352 /* : nullable EscapeMark */;
748 val* var353 /* : String */;
749 static val* varonce354;
750 val* var355 /* : String */;
751 char* var356 /* : NativeString */;
752 long var357 /* : Int */;
753 val* var358 /* : FlatString */;
754 val* var359 /* : Array[Object] */;
755 long var360 /* : Int */;
756 val* var361 /* : NativeArray[Object] */;
757 val* var362 /* : String */;
758 var_v = p0;
759 {
760 var = parser_nodes__AForExpr__n_expr(self);
761 }
762 var_nexpr = var;
763 {
764 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
765 var5 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
766 var3 = var5;
767 RET_LABEL4:(void)0;
768 }
769 }
770 if (var3 == NULL) {
771 PRINT_ERROR("Runtime error: %s", "Receiver is null");
772 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2427);
773 show_backtrace(1);
774 } else {
775 var6 = array__AbstractArrayRead__length(var3);
776 }
777 var7 = 1;
778 {
779 { /* Inline kernel#Int#== (var6,var7) on <var6:Int> */
780 var11 = var6 == var7;
781 var9 = var11;
782 goto RET_LABEL10;
783 RET_LABEL10:(void)0;
784 }
785 var8 = var9;
786 }
787 var_ = var8;
788 if (var8){
789 /* <var_nexpr:AExpr> isa AOrangeExpr */
790 cltype = type_parser_nodes__AOrangeExpr.color;
791 idtype = type_parser_nodes__AOrangeExpr.id;
792 if(cltype >= var_nexpr->type->table_size) {
793 var12 = 0;
794 } else {
795 var12 = var_nexpr->type->type_table[cltype] == idtype;
796 }
797 var2 = var12;
798 } else {
799 var2 = var_;
800 }
801 var_13 = var2;
802 if (var2){
803 {
804 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
805 var16 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
806 if (unlikely(var16 == NULL)) {
807 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
808 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 984);
809 show_backtrace(1);
810 }
811 var14 = var16;
812 RET_LABEL15:(void)0;
813 }
814 }
815 {
816 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var14) on <var14:AbstractCompiler> */
817 var19 = var14->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var14:AbstractCompiler> */
818 if (unlikely(var19 == NULL)) {
819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
820 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
821 show_backtrace(1);
822 }
823 var17 = var19;
824 RET_LABEL18:(void)0;
825 }
826 }
827 {
828 { /* Inline modelbuilder#ModelBuilder#toolcontext (var17) on <var17:ModelBuilder> */
829 var22 = var17->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var17:ModelBuilder> */
830 if (unlikely(var22 == NULL)) {
831 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
832 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
833 show_backtrace(1);
834 }
835 var20 = var22;
836 RET_LABEL21:(void)0;
837 }
838 }
839 {
840 { /* Inline abstract_compiler#ToolContext#opt_no_shortcut_range (var20) on <var20:ToolContext> */
841 var25 = var20->attrs[COLOR_abstract_compiler__ToolContext___opt_no_shortcut_range].val; /* _opt_no_shortcut_range on <var20:ToolContext> */
842 if (unlikely(var25 == NULL)) {
843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_range");
844 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 44);
845 show_backtrace(1);
846 }
847 var23 = var25;
848 RET_LABEL24:(void)0;
849 }
850 }
851 {
852 { /* Inline opts#Option#value (var23) on <var23:OptionBool> */
853 var28 = var23->attrs[COLOR_opts__Option___value].val; /* _value on <var23:OptionBool> */
854 var26 = var28;
855 RET_LABEL27:(void)0;
856 }
857 }
858 var29 = ((struct instance_kernel__Bool*)var26)->value; /* autounbox from nullable Object to Bool */;
859 var30 = !var29;
860 var1 = var30;
861 } else {
862 var1 = var_13;
863 }
864 if (var1){
865 {
866 var31 = parser_nodes__ARangeExpr__n_expr(var_nexpr);
867 }
868 var32 = NULL;
869 {
870 var33 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var31, var32);
871 }
872 var_from = var33;
873 {
874 var34 = parser_nodes__ARangeExpr__n_expr2(var_nexpr);
875 }
876 var35 = NULL;
877 {
878 var36 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var34, var35);
879 }
880 var_to = var36;
881 {
882 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
883 var39 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
884 var37 = var39;
885 RET_LABEL38:(void)0;
886 }
887 }
888 if (var37 == NULL) {
889 PRINT_ERROR("Runtime error: %s", "Receiver is null");
890 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2430);
891 show_backtrace(1);
892 } else {
893 var40 = abstract_collection__SequenceRead__first(var37);
894 }
895 {
896 var41 = abstract_compiler__AbstractCompilerVisitor__variable(var_v, var40);
897 }
898 var_variable = var41;
899 {
900 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var_variable, var_from); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
901 }
902 if (varonce) {
903 var42 = varonce;
904 } else {
905 var43 = "for(;;) { /* shortcut range */";
906 var44 = 30;
907 var45 = string__NativeString__to_s_with_length(var43, var44);
908 var42 = var45;
909 varonce = var42;
910 }
911 {
912 abstract_compiler__AbstractCompilerVisitor__add(var_v, var42); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
913 }
914 if (varonce46) {
915 var47 = varonce46;
916 } else {
917 var48 = "<";
918 var49 = 1;
919 var50 = string__NativeString__to_s_with_length(var48, var49);
920 var47 = var50;
921 varonce46 = var47;
922 }
923 {
924 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_variable) on <var_variable:RuntimeVariable> */
925 var53 = var_variable->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_variable:RuntimeVariable> */
926 if (unlikely(var53 == NULL)) {
927 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
928 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1484);
929 show_backtrace(1);
930 }
931 var51 = var53;
932 RET_LABEL52:(void)0;
933 }
934 }
935 {
936 var54 = abstract_compiler__AbstractCompilerVisitor__get_property(var_v, var47, var51);
937 }
938 var55 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
939 var56 = 2;
940 {
941 array__Array__with_capacity(var55, var56); /* Direct call array#Array#with_capacity on <var55:Array[RuntimeVariable]>*/
942 }
943 var_57 = var55;
944 {
945 array__AbstractArray__push(var_57, var_variable); /* Direct call array#AbstractArray#push on <var_57:Array[RuntimeVariable]>*/
946 }
947 {
948 array__AbstractArray__push(var_57, var_to); /* Direct call array#AbstractArray#push on <var_57:Array[RuntimeVariable]>*/
949 }
950 {
951 var58 = separate_compiler__SeparateCompilerVisitor__send(var_v, var54, var_57);
952 }
953 var_ok = var58;
954 var59 = NULL;
955 if (var_ok == NULL) {
956 var60 = 0; /* is null */
957 } else {
958 var60 = 1; /* arg is null and recv is not */
959 }
960 if (0) {
961 { /* Inline kernel#Object#!= (var_ok,var59) on <var_ok:nullable RuntimeVariable> */
962 var_other = var59;
963 {
964 var64 = ((short int (*)(val*, val*))(var_ok->class->vft[COLOR_kernel__Object___61d_61d]))(var_ok, var_other) /* == on <var_ok:nullable RuntimeVariable(RuntimeVariable)>*/;
965 var63 = var64;
966 }
967 var65 = !var63;
968 var61 = var65;
969 goto RET_LABEL62;
970 RET_LABEL62:(void)0;
971 }
972 var60 = var61;
973 }
974 if (unlikely(!var60)) {
975 PRINT_ERROR("Runtime error: %s", "Assert failed");
976 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2436);
977 show_backtrace(1);
978 }
979 if (varonce66) {
980 var67 = varonce66;
981 } else {
982 var68 = "if(!";
983 var69 = 4;
984 var70 = string__NativeString__to_s_with_length(var68, var69);
985 var67 = var70;
986 varonce66 = var67;
987 }
988 if (varonce71) {
989 var72 = varonce71;
990 } else {
991 var73 = ") break;";
992 var74 = 8;
993 var75 = string__NativeString__to_s_with_length(var73, var74);
994 var72 = var75;
995 varonce71 = var72;
996 }
997 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
998 { /* var76 = array_instance Array[Object] */
999 var77 = 3;
1000 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
1001 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var67;
1002 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var_ok;
1003 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var72;
1004 {
1005 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
1006 }
1007 }
1008 {
1009 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
1010 }
1011 {
1012 abstract_compiler__AbstractCompilerVisitor__add(var_v, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1013 }
1014 {
1015 var80 = parser_nodes__AForExpr__n_block(self);
1016 }
1017 {
1018 abstract_compiler__AbstractCompilerVisitor__stmt(var_v, var80); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <var_v:AbstractCompilerVisitor>*/
1019 }
1020 if (varonce81) {
1021 var82 = varonce81;
1022 } else {
1023 var83 = "CONTINUE_";
1024 var84 = 9;
1025 var85 = string__NativeString__to_s_with_length(var83, var84);
1026 var82 = var85;
1027 varonce81 = var82;
1028 }
1029 {
1030 { /* Inline scope#AForExpr#escapemark (self) on <self:AForExpr> */
1031 var88 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
1032 var86 = var88;
1033 RET_LABEL87:(void)0;
1034 }
1035 }
1036 {
1037 var89 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var86);
1038 }
1039 if (varonce90) {
1040 var91 = varonce90;
1041 } else {
1042 var92 = ": (void)0;";
1043 var93 = 10;
1044 var94 = string__NativeString__to_s_with_length(var92, var93);
1045 var91 = var94;
1046 varonce90 = var91;
1047 }
1048 var95 = NEW_array__Array(&type_array__Arraykernel__Object);
1049 { /* var95 = array_instance Array[Object] */
1050 var96 = 3;
1051 var97 = NEW_array__NativeArray(var96, &type_array__NativeArraykernel__Object);
1052 ((struct instance_array__NativeArray*)var97)->values[0] = (val*) var82;
1053 ((struct instance_array__NativeArray*)var97)->values[1] = (val*) var89;
1054 ((struct instance_array__NativeArray*)var97)->values[2] = (val*) var91;
1055 {
1056 ((void (*)(val*, val*, long))(var95->class->vft[COLOR_array__Array__with_native]))(var95, var97, var96) /* with_native on <var95:Array[Object]>*/;
1057 }
1058 }
1059 {
1060 var98 = ((val* (*)(val*))(var95->class->vft[COLOR_string__Object__to_s]))(var95) /* to_s on <var95:Array[Object]>*/;
1061 }
1062 {
1063 abstract_compiler__AbstractCompilerVisitor__add(var_v, var98); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1064 }
1065 if (varonce99) {
1066 var100 = varonce99;
1067 } else {
1068 var101 = "succ";
1069 var102 = 4;
1070 var103 = string__NativeString__to_s_with_length(var101, var102);
1071 var100 = var103;
1072 varonce99 = var100;
1073 }
1074 {
1075 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_variable) on <var_variable:RuntimeVariable> */
1076 var106 = var_variable->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_variable:RuntimeVariable> */
1077 if (unlikely(var106 == NULL)) {
1078 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1079 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1484);
1080 show_backtrace(1);
1081 }
1082 var104 = var106;
1083 RET_LABEL105:(void)0;
1084 }
1085 }
1086 {
1087 var107 = abstract_compiler__AbstractCompilerVisitor__get_property(var_v, var100, var104);
1088 }
1089 var108 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1090 var109 = 1;
1091 {
1092 array__Array__with_capacity(var108, var109); /* Direct call array#Array#with_capacity on <var108:Array[RuntimeVariable]>*/
1093 }
1094 var_110 = var108;
1095 {
1096 array__AbstractArray__push(var_110, var_variable); /* Direct call array#AbstractArray#push on <var_110:Array[RuntimeVariable]>*/
1097 }
1098 {
1099 var111 = separate_compiler__SeparateCompilerVisitor__send(var_v, var107, var_110);
1100 }
1101 var_succ = var111;
1102 var112 = NULL;
1103 if (var_succ == NULL) {
1104 var113 = 0; /* is null */
1105 } else {
1106 var113 = 1; /* arg is null and recv is not */
1107 }
1108 if (0) {
1109 { /* Inline kernel#Object#!= (var_succ,var112) on <var_succ:nullable RuntimeVariable> */
1110 var_other = var112;
1111 {
1112 var117 = ((short int (*)(val*, val*))(var_succ->class->vft[COLOR_kernel__Object___61d_61d]))(var_succ, var_other) /* == on <var_succ:nullable RuntimeVariable(RuntimeVariable)>*/;
1113 var116 = var117;
1114 }
1115 var118 = !var116;
1116 var114 = var118;
1117 goto RET_LABEL115;
1118 RET_LABEL115:(void)0;
1119 }
1120 var113 = var114;
1121 }
1122 if (unlikely(!var113)) {
1123 PRINT_ERROR("Runtime error: %s", "Assert failed");
1124 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2443);
1125 show_backtrace(1);
1126 }
1127 {
1128 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var_variable, var_succ); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
1129 }
1130 if (varonce119) {
1131 var120 = varonce119;
1132 } else {
1133 var121 = "}";
1134 var122 = 1;
1135 var123 = string__NativeString__to_s_with_length(var121, var122);
1136 var120 = var123;
1137 varonce119 = var120;
1138 }
1139 {
1140 abstract_compiler__AbstractCompilerVisitor__add(var_v, var120); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1141 }
1142 if (varonce124) {
1143 var125 = varonce124;
1144 } else {
1145 var126 = "BREAK_";
1146 var127 = 6;
1147 var128 = string__NativeString__to_s_with_length(var126, var127);
1148 var125 = var128;
1149 varonce124 = var125;
1150 }
1151 {
1152 { /* Inline scope#AForExpr#escapemark (self) on <self:AForExpr> */
1153 var131 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
1154 var129 = var131;
1155 RET_LABEL130:(void)0;
1156 }
1157 }
1158 {
1159 var132 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var129);
1160 }
1161 if (varonce133) {
1162 var134 = varonce133;
1163 } else {
1164 var135 = ": (void)0;";
1165 var136 = 10;
1166 var137 = string__NativeString__to_s_with_length(var135, var136);
1167 var134 = var137;
1168 varonce133 = var134;
1169 }
1170 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
1171 { /* var138 = array_instance Array[Object] */
1172 var139 = 3;
1173 var140 = NEW_array__NativeArray(var139, &type_array__NativeArraykernel__Object);
1174 ((struct instance_array__NativeArray*)var140)->values[0] = (val*) var125;
1175 ((struct instance_array__NativeArray*)var140)->values[1] = (val*) var132;
1176 ((struct instance_array__NativeArray*)var140)->values[2] = (val*) var134;
1177 {
1178 ((void (*)(val*, val*, long))(var138->class->vft[COLOR_array__Array__with_native]))(var138, var140, var139) /* with_native on <var138:Array[Object]>*/;
1179 }
1180 }
1181 {
1182 var141 = ((val* (*)(val*))(var138->class->vft[COLOR_string__Object__to_s]))(var138) /* to_s on <var138:Array[Object]>*/;
1183 }
1184 {
1185 abstract_compiler__AbstractCompilerVisitor__add(var_v, var141); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1186 }
1187 goto RET_LABEL;
1188 } else {
1189 }
1190 {
1191 var142 = parser_nodes__AForExpr__n_expr(self);
1192 }
1193 var143 = NULL;
1194 {
1195 var144 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var142, var143);
1196 }
1197 var_cl = var144;
1198 {
1199 { /* Inline typing#AForExpr#method_iterator (self) on <self:AForExpr> */
1200 var147 = self->attrs[COLOR_typing__AForExpr___method_iterator].val; /* _method_iterator on <self:AForExpr> */
1201 var145 = var147;
1202 RET_LABEL146:(void)0;
1203 }
1204 }
1205 var_it_meth = var145;
1206 var148 = NULL;
1207 if (var_it_meth == NULL) {
1208 var149 = 0; /* is null */
1209 } else {
1210 var149 = 1; /* arg is null and recv is not */
1211 }
1212 if (0) {
1213 { /* Inline kernel#Object#!= (var_it_meth,var148) on <var_it_meth:nullable CallSite> */
1214 var_other = var148;
1215 {
1216 var153 = ((short int (*)(val*, val*))(var_it_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_it_meth, var_other) /* == on <var_it_meth:nullable CallSite(CallSite)>*/;
1217 var152 = var153;
1218 }
1219 var154 = !var152;
1220 var150 = var154;
1221 goto RET_LABEL151;
1222 RET_LABEL151:(void)0;
1223 }
1224 var149 = var150;
1225 }
1226 if (unlikely(!var149)) {
1227 PRINT_ERROR("Runtime error: %s", "Assert failed");
1228 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2452);
1229 show_backtrace(1);
1230 }
1231 var155 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1232 var156 = 1;
1233 {
1234 array__Array__with_capacity(var155, var156); /* Direct call array#Array#with_capacity on <var155:Array[RuntimeVariable]>*/
1235 }
1236 var_157 = var155;
1237 {
1238 array__AbstractArray__push(var_157, var_cl); /* Direct call array#AbstractArray#push on <var_157:Array[RuntimeVariable]>*/
1239 }
1240 {
1241 var158 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_it_meth, var_157) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
1242 }
1243 var_it = var158;
1244 var159 = NULL;
1245 if (var_it == NULL) {
1246 var160 = 0; /* is null */
1247 } else {
1248 var160 = 1; /* arg is null and recv is not */
1249 }
1250 if (0) {
1251 { /* Inline kernel#Object#!= (var_it,var159) on <var_it:nullable RuntimeVariable> */
1252 var_other = var159;
1253 {
1254 var164 = ((short int (*)(val*, val*))(var_it->class->vft[COLOR_kernel__Object___61d_61d]))(var_it, var_other) /* == on <var_it:nullable RuntimeVariable(RuntimeVariable)>*/;
1255 var163 = var164;
1256 }
1257 var165 = !var163;
1258 var161 = var165;
1259 goto RET_LABEL162;
1260 RET_LABEL162:(void)0;
1261 }
1262 var160 = var161;
1263 }
1264 if (unlikely(!var160)) {
1265 PRINT_ERROR("Runtime error: %s", "Assert failed");
1266 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2454);
1267 show_backtrace(1);
1268 }
1269 if (varonce166) {
1270 var167 = varonce166;
1271 } else {
1272 var168 = "for(;;) {";
1273 var169 = 9;
1274 var170 = string__NativeString__to_s_with_length(var168, var169);
1275 var167 = var170;
1276 varonce166 = var167;
1277 }
1278 {
1279 abstract_compiler__AbstractCompilerVisitor__add(var_v, var167); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1280 }
1281 {
1282 { /* Inline typing#AForExpr#method_is_ok (self) on <self:AForExpr> */
1283 var173 = self->attrs[COLOR_typing__AForExpr___method_is_ok].val; /* _method_is_ok on <self:AForExpr> */
1284 var171 = var173;
1285 RET_LABEL172:(void)0;
1286 }
1287 }
1288 var_isok_meth = var171;
1289 var174 = NULL;
1290 if (var_isok_meth == NULL) {
1291 var175 = 0; /* is null */
1292 } else {
1293 var175 = 1; /* arg is null and recv is not */
1294 }
1295 if (0) {
1296 { /* Inline kernel#Object#!= (var_isok_meth,var174) on <var_isok_meth:nullable CallSite> */
1297 var_other = var174;
1298 {
1299 var179 = ((short int (*)(val*, val*))(var_isok_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_isok_meth, var_other) /* == on <var_isok_meth:nullable CallSite(CallSite)>*/;
1300 var178 = var179;
1301 }
1302 var180 = !var178;
1303 var176 = var180;
1304 goto RET_LABEL177;
1305 RET_LABEL177:(void)0;
1306 }
1307 var175 = var176;
1308 }
1309 if (unlikely(!var175)) {
1310 PRINT_ERROR("Runtime error: %s", "Assert failed");
1311 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2457);
1312 show_backtrace(1);
1313 }
1314 var181 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1315 var182 = 1;
1316 {
1317 array__Array__with_capacity(var181, var182); /* Direct call array#Array#with_capacity on <var181:Array[RuntimeVariable]>*/
1318 }
1319 var_183 = var181;
1320 {
1321 array__AbstractArray__push(var_183, var_it); /* Direct call array#AbstractArray#push on <var_183:Array[RuntimeVariable]>*/
1322 }
1323 {
1324 var184 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_isok_meth, var_183) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
1325 }
1326 var_ok185 = var184;
1327 var186 = NULL;
1328 if (var_ok185 == NULL) {
1329 var187 = 0; /* is null */
1330 } else {
1331 var187 = 1; /* arg is null and recv is not */
1332 }
1333 if (0) {
1334 { /* Inline kernel#Object#!= (var_ok185,var186) on <var_ok185:nullable RuntimeVariable> */
1335 var_other = var186;
1336 {
1337 var191 = ((short int (*)(val*, val*))(var_ok185->class->vft[COLOR_kernel__Object___61d_61d]))(var_ok185, var_other) /* == on <var_ok185:nullable RuntimeVariable(RuntimeVariable)>*/;
1338 var190 = var191;
1339 }
1340 var192 = !var190;
1341 var188 = var192;
1342 goto RET_LABEL189;
1343 RET_LABEL189:(void)0;
1344 }
1345 var187 = var188;
1346 }
1347 if (unlikely(!var187)) {
1348 PRINT_ERROR("Runtime error: %s", "Assert failed");
1349 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2459);
1350 show_backtrace(1);
1351 }
1352 if (varonce193) {
1353 var194 = varonce193;
1354 } else {
1355 var195 = "if(!";
1356 var196 = 4;
1357 var197 = string__NativeString__to_s_with_length(var195, var196);
1358 var194 = var197;
1359 varonce193 = var194;
1360 }
1361 if (varonce198) {
1362 var199 = varonce198;
1363 } else {
1364 var200 = ") break;";
1365 var201 = 8;
1366 var202 = string__NativeString__to_s_with_length(var200, var201);
1367 var199 = var202;
1368 varonce198 = var199;
1369 }
1370 var203 = NEW_array__Array(&type_array__Arraykernel__Object);
1371 { /* var203 = array_instance Array[Object] */
1372 var204 = 3;
1373 var205 = NEW_array__NativeArray(var204, &type_array__NativeArraykernel__Object);
1374 ((struct instance_array__NativeArray*)var205)->values[0] = (val*) var194;
1375 ((struct instance_array__NativeArray*)var205)->values[1] = (val*) var_ok185;
1376 ((struct instance_array__NativeArray*)var205)->values[2] = (val*) var199;
1377 {
1378 ((void (*)(val*, val*, long))(var203->class->vft[COLOR_array__Array__with_native]))(var203, var205, var204) /* with_native on <var203:Array[Object]>*/;
1379 }
1380 }
1381 {
1382 var206 = ((val* (*)(val*))(var203->class->vft[COLOR_string__Object__to_s]))(var203) /* to_s on <var203:Array[Object]>*/;
1383 }
1384 {
1385 abstract_compiler__AbstractCompilerVisitor__add(var_v, var206); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1386 }
1387 {
1388 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1389 var209 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1390 var207 = var209;
1391 RET_LABEL208:(void)0;
1392 }
1393 }
1394 if (var207 == NULL) {
1395 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1396 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2461);
1397 show_backtrace(1);
1398 } else {
1399 var210 = array__AbstractArrayRead__length(var207);
1400 }
1401 var211 = 1;
1402 {
1403 { /* Inline kernel#Int#== (var210,var211) on <var210:Int> */
1404 var215 = var210 == var211;
1405 var213 = var215;
1406 goto RET_LABEL214;
1407 RET_LABEL214:(void)0;
1408 }
1409 var212 = var213;
1410 }
1411 if (var212){
1412 {
1413 { /* Inline typing#AForExpr#method_item (self) on <self:AForExpr> */
1414 var218 = self->attrs[COLOR_typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
1415 var216 = var218;
1416 RET_LABEL217:(void)0;
1417 }
1418 }
1419 var_item_meth = var216;
1420 var219 = NULL;
1421 if (var_item_meth == NULL) {
1422 var220 = 0; /* is null */
1423 } else {
1424 var220 = 1; /* arg is null and recv is not */
1425 }
1426 if (0) {
1427 { /* Inline kernel#Object#!= (var_item_meth,var219) on <var_item_meth:nullable CallSite> */
1428 var_other = var219;
1429 {
1430 var224 = ((short int (*)(val*, val*))(var_item_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_item_meth, var_other) /* == on <var_item_meth:nullable CallSite(CallSite)>*/;
1431 var223 = var224;
1432 }
1433 var225 = !var223;
1434 var221 = var225;
1435 goto RET_LABEL222;
1436 RET_LABEL222:(void)0;
1437 }
1438 var220 = var221;
1439 }
1440 if (unlikely(!var220)) {
1441 PRINT_ERROR("Runtime error: %s", "Assert failed");
1442 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2463);
1443 show_backtrace(1);
1444 }
1445 var226 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1446 var227 = 1;
1447 {
1448 array__Array__with_capacity(var226, var227); /* Direct call array#Array#with_capacity on <var226:Array[RuntimeVariable]>*/
1449 }
1450 var_228 = var226;
1451 {
1452 array__AbstractArray__push(var_228, var_it); /* Direct call array#AbstractArray#push on <var_228:Array[RuntimeVariable]>*/
1453 }
1454 {
1455 var229 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_item_meth, var_228) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
1456 }
1457 var_i = var229;
1458 var230 = NULL;
1459 if (var_i == NULL) {
1460 var231 = 0; /* is null */
1461 } else {
1462 var231 = 1; /* arg is null and recv is not */
1463 }
1464 if (0) {
1465 { /* Inline kernel#Object#!= (var_i,var230) on <var_i:nullable RuntimeVariable> */
1466 var_other = var230;
1467 {
1468 var235 = ((short int (*)(val*, val*))(var_i->class->vft[COLOR_kernel__Object___61d_61d]))(var_i, var_other) /* == on <var_i:nullable RuntimeVariable(RuntimeVariable)>*/;
1469 var234 = var235;
1470 }
1471 var236 = !var234;
1472 var232 = var236;
1473 goto RET_LABEL233;
1474 RET_LABEL233:(void)0;
1475 }
1476 var231 = var232;
1477 }
1478 if (unlikely(!var231)) {
1479 PRINT_ERROR("Runtime error: %s", "Assert failed");
1480 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2465);
1481 show_backtrace(1);
1482 }
1483 {
1484 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1485 var239 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1486 var237 = var239;
1487 RET_LABEL238:(void)0;
1488 }
1489 }
1490 if (var237 == NULL) {
1491 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1492 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2466);
1493 show_backtrace(1);
1494 } else {
1495 var240 = abstract_collection__SequenceRead__first(var237);
1496 }
1497 {
1498 var241 = abstract_compiler__AbstractCompilerVisitor__variable(var_v, var240);
1499 }
1500 {
1501 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var241, var_i); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
1502 }
1503 } else {
1504 {
1505 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1506 var244 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1507 var242 = var244;
1508 RET_LABEL243:(void)0;
1509 }
1510 }
1511 if (var242 == NULL) {
1512 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1513 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2467);
1514 show_backtrace(1);
1515 } else {
1516 var245 = array__AbstractArrayRead__length(var242);
1517 }
1518 var246 = 2;
1519 {
1520 { /* Inline kernel#Int#== (var245,var246) on <var245:Int> */
1521 var250 = var245 == var246;
1522 var248 = var250;
1523 goto RET_LABEL249;
1524 RET_LABEL249:(void)0;
1525 }
1526 var247 = var248;
1527 }
1528 if (var247){
1529 {
1530 { /* Inline typing#AForExpr#method_key (self) on <self:AForExpr> */
1531 var253 = self->attrs[COLOR_typing__AForExpr___method_key].val; /* _method_key on <self:AForExpr> */
1532 var251 = var253;
1533 RET_LABEL252:(void)0;
1534 }
1535 }
1536 var_key_meth = var251;
1537 var254 = NULL;
1538 if (var_key_meth == NULL) {
1539 var255 = 0; /* is null */
1540 } else {
1541 var255 = 1; /* arg is null and recv is not */
1542 }
1543 if (0) {
1544 { /* Inline kernel#Object#!= (var_key_meth,var254) on <var_key_meth:nullable CallSite> */
1545 var_other = var254;
1546 {
1547 var259 = ((short int (*)(val*, val*))(var_key_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_key_meth, var_other) /* == on <var_key_meth:nullable CallSite(CallSite)>*/;
1548 var258 = var259;
1549 }
1550 var260 = !var258;
1551 var256 = var260;
1552 goto RET_LABEL257;
1553 RET_LABEL257:(void)0;
1554 }
1555 var255 = var256;
1556 }
1557 if (unlikely(!var255)) {
1558 PRINT_ERROR("Runtime error: %s", "Assert failed");
1559 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2469);
1560 show_backtrace(1);
1561 }
1562 var261 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1563 var262 = 1;
1564 {
1565 array__Array__with_capacity(var261, var262); /* Direct call array#Array#with_capacity on <var261:Array[RuntimeVariable]>*/
1566 }
1567 var_263 = var261;
1568 {
1569 array__AbstractArray__push(var_263, var_it); /* Direct call array#AbstractArray#push on <var_263:Array[RuntimeVariable]>*/
1570 }
1571 {
1572 var264 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_key_meth, var_263) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
1573 }
1574 var_i265 = var264;
1575 var266 = NULL;
1576 if (var_i265 == NULL) {
1577 var267 = 0; /* is null */
1578 } else {
1579 var267 = 1; /* arg is null and recv is not */
1580 }
1581 if (0) {
1582 { /* Inline kernel#Object#!= (var_i265,var266) on <var_i265:nullable RuntimeVariable> */
1583 var_other = var266;
1584 {
1585 var271 = ((short int (*)(val*, val*))(var_i265->class->vft[COLOR_kernel__Object___61d_61d]))(var_i265, var_other) /* == on <var_i265:nullable RuntimeVariable(RuntimeVariable)>*/;
1586 var270 = var271;
1587 }
1588 var272 = !var270;
1589 var268 = var272;
1590 goto RET_LABEL269;
1591 RET_LABEL269:(void)0;
1592 }
1593 var267 = var268;
1594 }
1595 if (unlikely(!var267)) {
1596 PRINT_ERROR("Runtime error: %s", "Assert failed");
1597 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2471);
1598 show_backtrace(1);
1599 }
1600 {
1601 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1602 var275 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1603 var273 = var275;
1604 RET_LABEL274:(void)0;
1605 }
1606 }
1607 var276 = 0;
1608 if (var273 == NULL) {
1609 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1610 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2472);
1611 show_backtrace(1);
1612 } else {
1613 var277 = array__Array___91d_93d(var273, var276);
1614 }
1615 {
1616 var278 = abstract_compiler__AbstractCompilerVisitor__variable(var_v, var277);
1617 }
1618 {
1619 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var278, var_i265); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
1620 }
1621 {
1622 { /* Inline typing#AForExpr#method_item (self) on <self:AForExpr> */
1623 var281 = self->attrs[COLOR_typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
1624 var279 = var281;
1625 RET_LABEL280:(void)0;
1626 }
1627 }
1628 var_item_meth282 = var279;
1629 var283 = NULL;
1630 if (var_item_meth282 == NULL) {
1631 var284 = 0; /* is null */
1632 } else {
1633 var284 = 1; /* arg is null and recv is not */
1634 }
1635 if (0) {
1636 { /* Inline kernel#Object#!= (var_item_meth282,var283) on <var_item_meth282:nullable CallSite> */
1637 var_other = var283;
1638 {
1639 var288 = ((short int (*)(val*, val*))(var_item_meth282->class->vft[COLOR_kernel__Object___61d_61d]))(var_item_meth282, var_other) /* == on <var_item_meth282:nullable CallSite(CallSite)>*/;
1640 var287 = var288;
1641 }
1642 var289 = !var287;
1643 var285 = var289;
1644 goto RET_LABEL286;
1645 RET_LABEL286:(void)0;
1646 }
1647 var284 = var285;
1648 }
1649 if (unlikely(!var284)) {
1650 PRINT_ERROR("Runtime error: %s", "Assert failed");
1651 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2474);
1652 show_backtrace(1);
1653 }
1654 var290 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1655 var291 = 1;
1656 {
1657 array__Array__with_capacity(var290, var291); /* Direct call array#Array#with_capacity on <var290:Array[RuntimeVariable]>*/
1658 }
1659 var_292 = var290;
1660 {
1661 array__AbstractArray__push(var_292, var_it); /* Direct call array#AbstractArray#push on <var_292:Array[RuntimeVariable]>*/
1662 }
1663 {
1664 var293 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_item_meth282, var_292) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
1665 }
1666 var_i265 = var293;
1667 var294 = NULL;
1668 if (var_i265 == NULL) {
1669 var295 = 0; /* is null */
1670 } else {
1671 var295 = 1; /* arg is null and recv is not */
1672 }
1673 if (0) {
1674 { /* Inline kernel#Object#!= (var_i265,var294) on <var_i265:nullable RuntimeVariable> */
1675 var_other = var294;
1676 {
1677 var299 = ((short int (*)(val*, val*))(var_i265->class->vft[COLOR_kernel__Object___61d_61d]))(var_i265, var_other) /* == on <var_i265:nullable RuntimeVariable(RuntimeVariable)>*/;
1678 var298 = var299;
1679 }
1680 var300 = !var298;
1681 var296 = var300;
1682 goto RET_LABEL297;
1683 RET_LABEL297:(void)0;
1684 }
1685 var295 = var296;
1686 }
1687 if (unlikely(!var295)) {
1688 PRINT_ERROR("Runtime error: %s", "Assert failed");
1689 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2476);
1690 show_backtrace(1);
1691 }
1692 {
1693 { /* Inline scope#AForExpr#variables (self) on <self:AForExpr> */
1694 var303 = self->attrs[COLOR_scope__AForExpr___variables].val; /* _variables on <self:AForExpr> */
1695 var301 = var303;
1696 RET_LABEL302:(void)0;
1697 }
1698 }
1699 var304 = 1;
1700 if (var301 == NULL) {
1701 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1702 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2477);
1703 show_backtrace(1);
1704 } else {
1705 var305 = array__Array___91d_93d(var301, var304);
1706 }
1707 {
1708 var306 = abstract_compiler__AbstractCompilerVisitor__variable(var_v, var305);
1709 }
1710 {
1711 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var306, var_i265); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
1712 }
1713 } else {
1714 PRINT_ERROR("Runtime error: %s", "Aborted");
1715 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2479);
1716 show_backtrace(1);
1717 }
1718 }
1719 {
1720 var307 = parser_nodes__AForExpr__n_block(self);
1721 }
1722 {
1723 abstract_compiler__AbstractCompilerVisitor__stmt(var_v, var307); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <var_v:AbstractCompilerVisitor>*/
1724 }
1725 if (varonce308) {
1726 var309 = varonce308;
1727 } else {
1728 var310 = "CONTINUE_";
1729 var311 = 9;
1730 var312 = string__NativeString__to_s_with_length(var310, var311);
1731 var309 = var312;
1732 varonce308 = var309;
1733 }
1734 {
1735 { /* Inline scope#AForExpr#escapemark (self) on <self:AForExpr> */
1736 var315 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
1737 var313 = var315;
1738 RET_LABEL314:(void)0;
1739 }
1740 }
1741 {
1742 var316 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var313);
1743 }
1744 if (varonce317) {
1745 var318 = varonce317;
1746 } else {
1747 var319 = ": (void)0;";
1748 var320 = 10;
1749 var321 = string__NativeString__to_s_with_length(var319, var320);
1750 var318 = var321;
1751 varonce317 = var318;
1752 }
1753 var322 = NEW_array__Array(&type_array__Arraykernel__Object);
1754 { /* var322 = array_instance Array[Object] */
1755 var323 = 3;
1756 var324 = NEW_array__NativeArray(var323, &type_array__NativeArraykernel__Object);
1757 ((struct instance_array__NativeArray*)var324)->values[0] = (val*) var309;
1758 ((struct instance_array__NativeArray*)var324)->values[1] = (val*) var316;
1759 ((struct instance_array__NativeArray*)var324)->values[2] = (val*) var318;
1760 {
1761 ((void (*)(val*, val*, long))(var322->class->vft[COLOR_array__Array__with_native]))(var322, var324, var323) /* with_native on <var322:Array[Object]>*/;
1762 }
1763 }
1764 {
1765 var325 = ((val* (*)(val*))(var322->class->vft[COLOR_string__Object__to_s]))(var322) /* to_s on <var322:Array[Object]>*/;
1766 }
1767 {
1768 abstract_compiler__AbstractCompilerVisitor__add(var_v, var325); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1769 }
1770 {
1771 { /* Inline typing#AForExpr#method_next (self) on <self:AForExpr> */
1772 var328 = self->attrs[COLOR_typing__AForExpr___method_next].val; /* _method_next on <self:AForExpr> */
1773 var326 = var328;
1774 RET_LABEL327:(void)0;
1775 }
1776 }
1777 var_next_meth = var326;
1778 var329 = NULL;
1779 if (var_next_meth == NULL) {
1780 var330 = 0; /* is null */
1781 } else {
1782 var330 = 1; /* arg is null and recv is not */
1783 }
1784 if (0) {
1785 { /* Inline kernel#Object#!= (var_next_meth,var329) on <var_next_meth:nullable CallSite> */
1786 var_other = var329;
1787 {
1788 var334 = ((short int (*)(val*, val*))(var_next_meth->class->vft[COLOR_kernel__Object___61d_61d]))(var_next_meth, var_other) /* == on <var_next_meth:nullable CallSite(CallSite)>*/;
1789 var333 = var334;
1790 }
1791 var335 = !var333;
1792 var331 = var335;
1793 goto RET_LABEL332;
1794 RET_LABEL332:(void)0;
1795 }
1796 var330 = var331;
1797 }
1798 if (unlikely(!var330)) {
1799 PRINT_ERROR("Runtime error: %s", "Assert failed");
1800 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2484);
1801 show_backtrace(1);
1802 }
1803 var336 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1804 var337 = 1;
1805 {
1806 array__Array__with_capacity(var336, var337); /* Direct call array#Array#with_capacity on <var336:Array[RuntimeVariable]>*/
1807 }
1808 var_338 = var336;
1809 {
1810 array__AbstractArray__push(var_338, var_it); /* Direct call array#AbstractArray#push on <var_338:Array[RuntimeVariable]>*/
1811 }
1812 {
1813 var339 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_next_meth, var_338) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
1814 }
1815 var339;
1816 if (varonce340) {
1817 var341 = varonce340;
1818 } else {
1819 var342 = "}";
1820 var343 = 1;
1821 var344 = string__NativeString__to_s_with_length(var342, var343);
1822 var341 = var344;
1823 varonce340 = var341;
1824 }
1825 {
1826 abstract_compiler__AbstractCompilerVisitor__add(var_v, var341); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1827 }
1828 if (varonce345) {
1829 var346 = varonce345;
1830 } else {
1831 var347 = "BREAK_";
1832 var348 = 6;
1833 var349 = string__NativeString__to_s_with_length(var347, var348);
1834 var346 = var349;
1835 varonce345 = var346;
1836 }
1837 {
1838 { /* Inline scope#AForExpr#escapemark (self) on <self:AForExpr> */
1839 var352 = self->attrs[COLOR_scope__AForExpr___escapemark].val; /* _escapemark on <self:AForExpr> */
1840 var350 = var352;
1841 RET_LABEL351:(void)0;
1842 }
1843 }
1844 {
1845 var353 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(var_v, var350);
1846 }
1847 if (varonce354) {
1848 var355 = varonce354;
1849 } else {
1850 var356 = ": (void)0;";
1851 var357 = 10;
1852 var358 = string__NativeString__to_s_with_length(var356, var357);
1853 var355 = var358;
1854 varonce354 = var355;
1855 }
1856 var359 = NEW_array__Array(&type_array__Arraykernel__Object);
1857 { /* var359 = array_instance Array[Object] */
1858 var360 = 3;
1859 var361 = NEW_array__NativeArray(var360, &type_array__NativeArraykernel__Object);
1860 ((struct instance_array__NativeArray*)var361)->values[0] = (val*) var346;
1861 ((struct instance_array__NativeArray*)var361)->values[1] = (val*) var353;
1862 ((struct instance_array__NativeArray*)var361)->values[2] = (val*) var355;
1863 {
1864 ((void (*)(val*, val*, long))(var359->class->vft[COLOR_array__Array__with_native]))(var359, var361, var360) /* with_native on <var359:Array[Object]>*/;
1865 }
1866 }
1867 {
1868 var362 = ((val* (*)(val*))(var359->class->vft[COLOR_string__Object__to_s]))(var359) /* to_s on <var359:Array[Object]>*/;
1869 }
1870 {
1871 abstract_compiler__AbstractCompilerVisitor__add(var_v, var362); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1872 }
1873 RET_LABEL:;
1874 }
1875 /* method abstract_compiler#AForExpr#stmt for (self: Object, AbstractCompilerVisitor) */
1876 void VIRTUAL_abstract_compiler__AForExpr__stmt(val* self, val* p0) {
1877 abstract_compiler__AForExpr__stmt(self, p0); /* Direct call abstract_compiler#AForExpr#stmt on <self:Object(AForExpr)>*/
1878 RET_LABEL:;
1879 }
1880 /* method abstract_compiler#AAssertExpr#stmt for (self: AAssertExpr, AbstractCompilerVisitor) */
1881 void abstract_compiler__AAssertExpr__stmt(val* self, val* p0) {
1882 val* var_v /* var v: AbstractCompilerVisitor */;
1883 val* var /* : AbstractCompiler */;
1884 val* var2 /* : AbstractCompiler */;
1885 val* var3 /* : ModelBuilder */;
1886 val* var5 /* : ModelBuilder */;
1887 val* var6 /* : ToolContext */;
1888 val* var8 /* : ToolContext */;
1889 val* var9 /* : OptionBool */;
1890 val* var11 /* : OptionBool */;
1891 val* var12 /* : nullable Object */;
1892 val* var14 /* : nullable Object */;
1893 short int var15 /* : Bool */;
1894 val* var16 /* : AExpr */;
1895 val* var17 /* : RuntimeVariable */;
1896 val* var_cond /* var cond: RuntimeVariable */;
1897 static val* varonce;
1898 val* var18 /* : String */;
1899 char* var19 /* : NativeString */;
1900 long var20 /* : Int */;
1901 val* var21 /* : FlatString */;
1902 static val* varonce22;
1903 val* var23 /* : String */;
1904 char* var24 /* : NativeString */;
1905 long var25 /* : Int */;
1906 val* var26 /* : FlatString */;
1907 val* var27 /* : Array[Object] */;
1908 long var28 /* : Int */;
1909 val* var29 /* : NativeArray[Object] */;
1910 val* var30 /* : String */;
1911 val* var31 /* : nullable AExpr */;
1912 val* var32 /* : nullable TId */;
1913 val* var_nid /* var nid: nullable TId */;
1914 val* var33 /* : null */;
1915 short int var34 /* : Bool */;
1916 short int var35 /* : Bool */;
1917 val* var_other /* var other: nullable Object */;
1918 short int var37 /* : Bool */;
1919 short int var38 /* : Bool */;
1920 short int var39 /* : Bool */;
1921 static val* varonce40;
1922 val* var41 /* : String */;
1923 char* var42 /* : NativeString */;
1924 long var43 /* : Int */;
1925 val* var44 /* : FlatString */;
1926 val* var45 /* : String */;
1927 static val* varonce46;
1928 val* var47 /* : String */;
1929 char* var48 /* : NativeString */;
1930 long var49 /* : Int */;
1931 val* var50 /* : FlatString */;
1932 val* var51 /* : Array[Object] */;
1933 long var52 /* : Int */;
1934 val* var53 /* : NativeArray[Object] */;
1935 val* var54 /* : String */;
1936 static val* varonce55;
1937 val* var56 /* : String */;
1938 char* var57 /* : NativeString */;
1939 long var58 /* : Int */;
1940 val* var59 /* : FlatString */;
1941 static val* varonce60;
1942 val* var61 /* : String */;
1943 char* var62 /* : NativeString */;
1944 long var63 /* : Int */;
1945 val* var64 /* : FlatString */;
1946 var_v = p0;
1947 {
1948 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
1949 var2 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
1950 if (unlikely(var2 == NULL)) {
1951 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1952 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 984);
1953 show_backtrace(1);
1954 }
1955 var = var2;
1956 RET_LABEL1:(void)0;
1957 }
1958 }
1959 {
1960 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on <var:AbstractCompiler> */
1961 var5 = var->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var:AbstractCompiler> */
1962 if (unlikely(var5 == NULL)) {
1963 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1964 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
1965 show_backtrace(1);
1966 }
1967 var3 = var5;
1968 RET_LABEL4:(void)0;
1969 }
1970 }
1971 {
1972 { /* Inline modelbuilder#ModelBuilder#toolcontext (var3) on <var3:ModelBuilder> */
1973 var8 = var3->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var3:ModelBuilder> */
1974 if (unlikely(var8 == NULL)) {
1975 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1976 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
1977 show_backtrace(1);
1978 }
1979 var6 = var8;
1980 RET_LABEL7:(void)0;
1981 }
1982 }
1983 {
1984 { /* Inline abstract_compiler#ToolContext#opt_no_check_assert (var6) on <var6:ToolContext> */
1985 var11 = var6->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <var6:ToolContext> */
1986 if (unlikely(var11 == NULL)) {
1987 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
1988 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 50);
1989 show_backtrace(1);
1990 }
1991 var9 = var11;
1992 RET_LABEL10:(void)0;
1993 }
1994 }
1995 {
1996 { /* Inline opts#Option#value (var9) on <var9:OptionBool> */
1997 var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on <var9:OptionBool> */
1998 var12 = var14;
1999 RET_LABEL13:(void)0;
2000 }
2001 }
2002 var15 = ((struct instance_kernel__Bool*)var12)->value; /* autounbox from nullable Object to Bool */;
2003 if (var15){
2004 goto RET_LABEL;
2005 } else {
2006 }
2007 {
2008 var16 = parser_nodes__AAssertExpr__n_expr(self);
2009 }
2010 {
2011 var17 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var16);
2012 }
2013 var_cond = var17;
2014 if (varonce) {
2015 var18 = varonce;
2016 } else {
2017 var19 = "if (unlikely(!";
2018 var20 = 14;
2019 var21 = string__NativeString__to_s_with_length(var19, var20);
2020 var18 = var21;
2021 varonce = var18;
2022 }
2023 if (varonce22) {
2024 var23 = varonce22;
2025 } else {
2026 var24 = ")) {";
2027 var25 = 4;
2028 var26 = string__NativeString__to_s_with_length(var24, var25);
2029 var23 = var26;
2030 varonce22 = var23;
2031 }
2032 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
2033 { /* var27 = array_instance Array[Object] */
2034 var28 = 3;
2035 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
2036 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var18;
2037 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_cond;
2038 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var23;
2039 {
2040 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
2041 }
2042 }
2043 {
2044 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
2045 }
2046 {
2047 abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2048 }
2049 {
2050 var31 = parser_nodes__AAssertExpr__n_else(self);
2051 }
2052 {
2053 abstract_compiler__AbstractCompilerVisitor__stmt(var_v, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <var_v:AbstractCompilerVisitor>*/
2054 }
2055 {
2056 var32 = parser_nodes__AAssertExpr__n_id(self);
2057 }
2058 var_nid = var32;
2059 var33 = NULL;
2060 if (var_nid == NULL) {
2061 var34 = 0; /* is null */
2062 } else {
2063 var34 = 1; /* arg is null and recv is not */
2064 }
2065 if (0) {
2066 { /* Inline kernel#Object#!= (var_nid,var33) on <var_nid:nullable TId> */
2067 var_other = var33;
2068 {
2069 var38 = ((short int (*)(val*, val*))(var_nid->class->vft[COLOR_kernel__Object___61d_61d]))(var_nid, var_other) /* == on <var_nid:nullable TId(TId)>*/;
2070 var37 = var38;
2071 }
2072 var39 = !var37;
2073 var35 = var39;
2074 goto RET_LABEL36;
2075 RET_LABEL36:(void)0;
2076 }
2077 var34 = var35;
2078 }
2079 if (var34){
2080 if (varonce40) {
2081 var41 = varonce40;
2082 } else {
2083 var42 = "Assert \'";
2084 var43 = 8;
2085 var44 = string__NativeString__to_s_with_length(var42, var43);
2086 var41 = var44;
2087 varonce40 = var41;
2088 }
2089 {
2090 var45 = lexer_work__Token__text(var_nid);
2091 }
2092 if (varonce46) {
2093 var47 = varonce46;
2094 } else {
2095 var48 = "\' failed";
2096 var49 = 8;
2097 var50 = string__NativeString__to_s_with_length(var48, var49);
2098 var47 = var50;
2099 varonce46 = var47;
2100 }
2101 var51 = NEW_array__Array(&type_array__Arraykernel__Object);
2102 { /* var51 = array_instance Array[Object] */
2103 var52 = 3;
2104 var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
2105 ((struct instance_array__NativeArray*)var53)->values[0] = (val*) var41;
2106 ((struct instance_array__NativeArray*)var53)->values[1] = (val*) var45;
2107 ((struct instance_array__NativeArray*)var53)->values[2] = (val*) var47;
2108 {
2109 ((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
2110 }
2111 }
2112 {
2113 var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
2114 }
2115 {
2116 abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:AbstractCompilerVisitor>*/
2117 }
2118 } else {
2119 if (varonce55) {
2120 var56 = varonce55;
2121 } else {
2122 var57 = "Assert failed";
2123 var58 = 13;
2124 var59 = string__NativeString__to_s_with_length(var57, var58);
2125 var56 = var59;
2126 varonce55 = var56;
2127 }
2128 {
2129 abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var56); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:AbstractCompilerVisitor>*/
2130 }
2131 }
2132 if (varonce60) {
2133 var61 = varonce60;
2134 } else {
2135 var62 = "}";
2136 var63 = 1;
2137 var64 = string__NativeString__to_s_with_length(var62, var63);
2138 var61 = var64;
2139 varonce60 = var61;
2140 }
2141 {
2142 abstract_compiler__AbstractCompilerVisitor__add(var_v, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2143 }
2144 RET_LABEL:;
2145 }
2146 /* method abstract_compiler#AAssertExpr#stmt for (self: Object, AbstractCompilerVisitor) */
2147 void VIRTUAL_abstract_compiler__AAssertExpr__stmt(val* self, val* p0) {
2148 abstract_compiler__AAssertExpr__stmt(self, p0); /* Direct call abstract_compiler#AAssertExpr#stmt on <self:Object(AAssertExpr)>*/
2149 RET_LABEL:;
2150 }
2151 /* method abstract_compiler#AOrExpr#expr for (self: AOrExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2152 val* abstract_compiler__AOrExpr__expr(val* self, val* p0) {
2153 val* var /* : nullable RuntimeVariable */;
2154 val* var_v /* var v: AbstractCompilerVisitor */;
2155 val* var1 /* : nullable MType */;
2156 val* var3 /* : nullable MType */;
2157 val* var4 /* : RuntimeVariable */;
2158 val* var_res /* var res: RuntimeVariable */;
2159 val* var5 /* : AExpr */;
2160 val* var6 /* : RuntimeVariable */;
2161 val* var_i1 /* var i1: RuntimeVariable */;
2162 static val* varonce;
2163 val* var7 /* : String */;
2164 char* var8 /* : NativeString */;
2165 long var9 /* : Int */;
2166 val* var10 /* : FlatString */;
2167 static val* varonce11;
2168 val* var12 /* : String */;
2169 char* var13 /* : NativeString */;
2170 long var14 /* : Int */;
2171 val* var15 /* : FlatString */;
2172 val* var16 /* : Array[Object] */;
2173 long var17 /* : Int */;
2174 val* var18 /* : NativeArray[Object] */;
2175 val* var19 /* : String */;
2176 static val* varonce20;
2177 val* var21 /* : String */;
2178 char* var22 /* : NativeString */;
2179 long var23 /* : Int */;
2180 val* var24 /* : FlatString */;
2181 val* var25 /* : Array[Object] */;
2182 long var26 /* : Int */;
2183 val* var27 /* : NativeArray[Object] */;
2184 val* var28 /* : String */;
2185 static val* varonce29;
2186 val* var30 /* : String */;
2187 char* var31 /* : NativeString */;
2188 long var32 /* : Int */;
2189 val* var33 /* : FlatString */;
2190 val* var34 /* : AExpr */;
2191 val* var35 /* : RuntimeVariable */;
2192 val* var_i2 /* var i2: RuntimeVariable */;
2193 static val* varonce36;
2194 val* var37 /* : String */;
2195 char* var38 /* : NativeString */;
2196 long var39 /* : Int */;
2197 val* var40 /* : FlatString */;
2198 static val* varonce41;
2199 val* var42 /* : String */;
2200 char* var43 /* : NativeString */;
2201 long var44 /* : Int */;
2202 val* var45 /* : FlatString */;
2203 val* var46 /* : Array[Object] */;
2204 long var47 /* : Int */;
2205 val* var48 /* : NativeArray[Object] */;
2206 val* var49 /* : String */;
2207 static val* varonce50;
2208 val* var51 /* : String */;
2209 char* var52 /* : NativeString */;
2210 long var53 /* : Int */;
2211 val* var54 /* : FlatString */;
2212 var_v = p0;
2213 {
2214 { /* Inline typing#AExpr#mtype (self) on <self:AOrExpr> */
2215 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AOrExpr> */
2216 var1 = var3;
2217 RET_LABEL2:(void)0;
2218 }
2219 }
2220 if (unlikely(var1 == NULL)) {
2221 PRINT_ERROR("Runtime error: %s", "Cast failed");
2222 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2512);
2223 show_backtrace(1);
2224 }
2225 {
2226 var4 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var1);
2227 }
2228 var_res = var4;
2229 {
2230 var5 = parser_nodes__AOrExpr__n_expr(self);
2231 }
2232 {
2233 var6 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var5);
2234 }
2235 var_i1 = var6;
2236 if (varonce) {
2237 var7 = varonce;
2238 } else {
2239 var8 = "if (";
2240 var9 = 4;
2241 var10 = string__NativeString__to_s_with_length(var8, var9);
2242 var7 = var10;
2243 varonce = var7;
2244 }
2245 if (varonce11) {
2246 var12 = varonce11;
2247 } else {
2248 var13 = ") {";
2249 var14 = 3;
2250 var15 = string__NativeString__to_s_with_length(var13, var14);
2251 var12 = var15;
2252 varonce11 = var12;
2253 }
2254 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
2255 { /* var16 = array_instance Array[Object] */
2256 var17 = 3;
2257 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
2258 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
2259 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_i1;
2260 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
2261 {
2262 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
2263 }
2264 }
2265 {
2266 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
2267 }
2268 {
2269 abstract_compiler__AbstractCompilerVisitor__add(var_v, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2270 }
2271 if (varonce20) {
2272 var21 = varonce20;
2273 } else {
2274 var22 = " = 1;";
2275 var23 = 5;
2276 var24 = string__NativeString__to_s_with_length(var22, var23);
2277 var21 = var24;
2278 varonce20 = var21;
2279 }
2280 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
2281 { /* var25 = array_instance Array[Object] */
2282 var26 = 2;
2283 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
2284 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var_res;
2285 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var21;
2286 {
2287 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
2288 }
2289 }
2290 {
2291 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
2292 }
2293 {
2294 abstract_compiler__AbstractCompilerVisitor__add(var_v, var28); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2295 }
2296 if (varonce29) {
2297 var30 = varonce29;
2298 } else {
2299 var31 = "} else {";
2300 var32 = 8;
2301 var33 = string__NativeString__to_s_with_length(var31, var32);
2302 var30 = var33;
2303 varonce29 = var30;
2304 }
2305 {
2306 abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2307 }
2308 {
2309 var34 = parser_nodes__AOrExpr__n_expr2(self);
2310 }
2311 {
2312 var35 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var34);
2313 }
2314 var_i2 = var35;
2315 if (varonce36) {
2316 var37 = varonce36;
2317 } else {
2318 var38 = " = ";
2319 var39 = 3;
2320 var40 = string__NativeString__to_s_with_length(var38, var39);
2321 var37 = var40;
2322 varonce36 = var37;
2323 }
2324 if (varonce41) {
2325 var42 = varonce41;
2326 } else {
2327 var43 = ";";
2328 var44 = 1;
2329 var45 = string__NativeString__to_s_with_length(var43, var44);
2330 var42 = var45;
2331 varonce41 = var42;
2332 }
2333 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
2334 { /* var46 = array_instance Array[Object] */
2335 var47 = 4;
2336 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
2337 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
2338 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var37;
2339 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_i2;
2340 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
2341 {
2342 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
2343 }
2344 }
2345 {
2346 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
2347 }
2348 {
2349 abstract_compiler__AbstractCompilerVisitor__add(var_v, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2350 }
2351 if (varonce50) {
2352 var51 = varonce50;
2353 } else {
2354 var52 = "}";
2355 var53 = 1;
2356 var54 = string__NativeString__to_s_with_length(var52, var53);
2357 var51 = var54;
2358 varonce50 = var51;
2359 }
2360 {
2361 abstract_compiler__AbstractCompilerVisitor__add(var_v, var51); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2362 }
2363 var = var_res;
2364 goto RET_LABEL;
2365 RET_LABEL:;
2366 return var;
2367 }
2368 /* method abstract_compiler#AOrExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2369 val* VIRTUAL_abstract_compiler__AOrExpr__expr(val* self, val* p0) {
2370 val* var /* : nullable RuntimeVariable */;
2371 val* var1 /* : nullable RuntimeVariable */;
2372 var1 = abstract_compiler__AOrExpr__expr(self, p0);
2373 var = var1;
2374 RET_LABEL:;
2375 return var;
2376 }
2377 /* method abstract_compiler#AImpliesExpr#expr for (self: AImpliesExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2378 val* abstract_compiler__AImpliesExpr__expr(val* self, val* p0) {
2379 val* var /* : nullable RuntimeVariable */;
2380 val* var_v /* var v: AbstractCompilerVisitor */;
2381 val* var1 /* : nullable MType */;
2382 val* var3 /* : nullable MType */;
2383 val* var4 /* : RuntimeVariable */;
2384 val* var_res /* var res: RuntimeVariable */;
2385 val* var5 /* : AExpr */;
2386 val* var6 /* : RuntimeVariable */;
2387 val* var_i1 /* var i1: RuntimeVariable */;
2388 static val* varonce;
2389 val* var7 /* : String */;
2390 char* var8 /* : NativeString */;
2391 long var9 /* : Int */;
2392 val* var10 /* : FlatString */;
2393 static val* varonce11;
2394 val* var12 /* : String */;
2395 char* var13 /* : NativeString */;
2396 long var14 /* : Int */;
2397 val* var15 /* : FlatString */;
2398 val* var16 /* : Array[Object] */;
2399 long var17 /* : Int */;
2400 val* var18 /* : NativeArray[Object] */;
2401 val* var19 /* : String */;
2402 static val* varonce20;
2403 val* var21 /* : String */;
2404 char* var22 /* : NativeString */;
2405 long var23 /* : Int */;
2406 val* var24 /* : FlatString */;
2407 val* var25 /* : Array[Object] */;
2408 long var26 /* : Int */;
2409 val* var27 /* : NativeArray[Object] */;
2410 val* var28 /* : String */;
2411 static val* varonce29;
2412 val* var30 /* : String */;
2413 char* var31 /* : NativeString */;
2414 long var32 /* : Int */;
2415 val* var33 /* : FlatString */;
2416 val* var34 /* : AExpr */;
2417 val* var35 /* : RuntimeVariable */;
2418 val* var_i2 /* var i2: RuntimeVariable */;
2419 static val* varonce36;
2420 val* var37 /* : String */;
2421 char* var38 /* : NativeString */;
2422 long var39 /* : Int */;
2423 val* var40 /* : FlatString */;
2424 static val* varonce41;
2425 val* var42 /* : String */;
2426 char* var43 /* : NativeString */;
2427 long var44 /* : Int */;
2428 val* var45 /* : FlatString */;
2429 val* var46 /* : Array[Object] */;
2430 long var47 /* : Int */;
2431 val* var48 /* : NativeArray[Object] */;
2432 val* var49 /* : String */;
2433 static val* varonce50;
2434 val* var51 /* : String */;
2435 char* var52 /* : NativeString */;
2436 long var53 /* : Int */;
2437 val* var54 /* : FlatString */;
2438 var_v = p0;
2439 {
2440 { /* Inline typing#AExpr#mtype (self) on <self:AImpliesExpr> */
2441 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AImpliesExpr> */
2442 var1 = var3;
2443 RET_LABEL2:(void)0;
2444 }
2445 }
2446 if (unlikely(var1 == NULL)) {
2447 PRINT_ERROR("Runtime error: %s", "Cast failed");
2448 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2527);
2449 show_backtrace(1);
2450 }
2451 {
2452 var4 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var1);
2453 }
2454 var_res = var4;
2455 {
2456 var5 = parser_nodes__AImpliesExpr__n_expr(self);
2457 }
2458 {
2459 var6 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var5);
2460 }
2461 var_i1 = var6;
2462 if (varonce) {
2463 var7 = varonce;
2464 } else {
2465 var8 = "if (!";
2466 var9 = 5;
2467 var10 = string__NativeString__to_s_with_length(var8, var9);
2468 var7 = var10;
2469 varonce = var7;
2470 }
2471 if (varonce11) {
2472 var12 = varonce11;
2473 } else {
2474 var13 = ") {";
2475 var14 = 3;
2476 var15 = string__NativeString__to_s_with_length(var13, var14);
2477 var12 = var15;
2478 varonce11 = var12;
2479 }
2480 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
2481 { /* var16 = array_instance Array[Object] */
2482 var17 = 3;
2483 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
2484 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
2485 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_i1;
2486 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
2487 {
2488 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
2489 }
2490 }
2491 {
2492 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
2493 }
2494 {
2495 abstract_compiler__AbstractCompilerVisitor__add(var_v, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2496 }
2497 if (varonce20) {
2498 var21 = varonce20;
2499 } else {
2500 var22 = " = 1;";
2501 var23 = 5;
2502 var24 = string__NativeString__to_s_with_length(var22, var23);
2503 var21 = var24;
2504 varonce20 = var21;
2505 }
2506 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
2507 { /* var25 = array_instance Array[Object] */
2508 var26 = 2;
2509 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
2510 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var_res;
2511 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var21;
2512 {
2513 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
2514 }
2515 }
2516 {
2517 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
2518 }
2519 {
2520 abstract_compiler__AbstractCompilerVisitor__add(var_v, var28); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2521 }
2522 if (varonce29) {
2523 var30 = varonce29;
2524 } else {
2525 var31 = "} else {";
2526 var32 = 8;
2527 var33 = string__NativeString__to_s_with_length(var31, var32);
2528 var30 = var33;
2529 varonce29 = var30;
2530 }
2531 {
2532 abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2533 }
2534 {
2535 var34 = parser_nodes__AImpliesExpr__n_expr2(self);
2536 }
2537 {
2538 var35 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var34);
2539 }
2540 var_i2 = var35;
2541 if (varonce36) {
2542 var37 = varonce36;
2543 } else {
2544 var38 = " = ";
2545 var39 = 3;
2546 var40 = string__NativeString__to_s_with_length(var38, var39);
2547 var37 = var40;
2548 varonce36 = var37;
2549 }
2550 if (varonce41) {
2551 var42 = varonce41;
2552 } else {
2553 var43 = ";";
2554 var44 = 1;
2555 var45 = string__NativeString__to_s_with_length(var43, var44);
2556 var42 = var45;
2557 varonce41 = var42;
2558 }
2559 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
2560 { /* var46 = array_instance Array[Object] */
2561 var47 = 4;
2562 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
2563 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
2564 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var37;
2565 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_i2;
2566 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
2567 {
2568 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
2569 }
2570 }
2571 {
2572 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
2573 }
2574 {
2575 abstract_compiler__AbstractCompilerVisitor__add(var_v, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2576 }
2577 if (varonce50) {
2578 var51 = varonce50;
2579 } else {
2580 var52 = "}";
2581 var53 = 1;
2582 var54 = string__NativeString__to_s_with_length(var52, var53);
2583 var51 = var54;
2584 varonce50 = var51;
2585 }
2586 {
2587 abstract_compiler__AbstractCompilerVisitor__add(var_v, var51); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2588 }
2589 var = var_res;
2590 goto RET_LABEL;
2591 RET_LABEL:;
2592 return var;
2593 }
2594 /* method abstract_compiler#AImpliesExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2595 val* VIRTUAL_abstract_compiler__AImpliesExpr__expr(val* self, val* p0) {
2596 val* var /* : nullable RuntimeVariable */;
2597 val* var1 /* : nullable RuntimeVariable */;
2598 var1 = abstract_compiler__AImpliesExpr__expr(self, p0);
2599 var = var1;
2600 RET_LABEL:;
2601 return var;
2602 }
2603 /* method abstract_compiler#AAndExpr#expr for (self: AAndExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2604 val* abstract_compiler__AAndExpr__expr(val* self, val* p0) {
2605 val* var /* : nullable RuntimeVariable */;
2606 val* var_v /* var v: AbstractCompilerVisitor */;
2607 val* var1 /* : nullable MType */;
2608 val* var3 /* : nullable MType */;
2609 val* var4 /* : RuntimeVariable */;
2610 val* var_res /* var res: RuntimeVariable */;
2611 val* var5 /* : AExpr */;
2612 val* var6 /* : RuntimeVariable */;
2613 val* var_i1 /* var i1: RuntimeVariable */;
2614 static val* varonce;
2615 val* var7 /* : String */;
2616 char* var8 /* : NativeString */;
2617 long var9 /* : Int */;
2618 val* var10 /* : FlatString */;
2619 static val* varonce11;
2620 val* var12 /* : String */;
2621 char* var13 /* : NativeString */;
2622 long var14 /* : Int */;
2623 val* var15 /* : FlatString */;
2624 val* var16 /* : Array[Object] */;
2625 long var17 /* : Int */;
2626 val* var18 /* : NativeArray[Object] */;
2627 val* var19 /* : String */;
2628 static val* varonce20;
2629 val* var21 /* : String */;
2630 char* var22 /* : NativeString */;
2631 long var23 /* : Int */;
2632 val* var24 /* : FlatString */;
2633 val* var25 /* : Array[Object] */;
2634 long var26 /* : Int */;
2635 val* var27 /* : NativeArray[Object] */;
2636 val* var28 /* : String */;
2637 static val* varonce29;
2638 val* var30 /* : String */;
2639 char* var31 /* : NativeString */;
2640 long var32 /* : Int */;
2641 val* var33 /* : FlatString */;
2642 val* var34 /* : AExpr */;
2643 val* var35 /* : RuntimeVariable */;
2644 val* var_i2 /* var i2: RuntimeVariable */;
2645 static val* varonce36;
2646 val* var37 /* : String */;
2647 char* var38 /* : NativeString */;
2648 long var39 /* : Int */;
2649 val* var40 /* : FlatString */;
2650 static val* varonce41;
2651 val* var42 /* : String */;
2652 char* var43 /* : NativeString */;
2653 long var44 /* : Int */;
2654 val* var45 /* : FlatString */;
2655 val* var46 /* : Array[Object] */;
2656 long var47 /* : Int */;
2657 val* var48 /* : NativeArray[Object] */;
2658 val* var49 /* : String */;
2659 static val* varonce50;
2660 val* var51 /* : String */;
2661 char* var52 /* : NativeString */;
2662 long var53 /* : Int */;
2663 val* var54 /* : FlatString */;
2664 var_v = p0;
2665 {
2666 { /* Inline typing#AExpr#mtype (self) on <self:AAndExpr> */
2667 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AAndExpr> */
2668 var1 = var3;
2669 RET_LABEL2:(void)0;
2670 }
2671 }
2672 if (unlikely(var1 == NULL)) {
2673 PRINT_ERROR("Runtime error: %s", "Cast failed");
2674 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2542);
2675 show_backtrace(1);
2676 }
2677 {
2678 var4 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var1);
2679 }
2680 var_res = var4;
2681 {
2682 var5 = parser_nodes__AAndExpr__n_expr(self);
2683 }
2684 {
2685 var6 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var5);
2686 }
2687 var_i1 = var6;
2688 if (varonce) {
2689 var7 = varonce;
2690 } else {
2691 var8 = "if (!";
2692 var9 = 5;
2693 var10 = string__NativeString__to_s_with_length(var8, var9);
2694 var7 = var10;
2695 varonce = var7;
2696 }
2697 if (varonce11) {
2698 var12 = varonce11;
2699 } else {
2700 var13 = ") {";
2701 var14 = 3;
2702 var15 = string__NativeString__to_s_with_length(var13, var14);
2703 var12 = var15;
2704 varonce11 = var12;
2705 }
2706 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
2707 { /* var16 = array_instance Array[Object] */
2708 var17 = 3;
2709 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
2710 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
2711 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_i1;
2712 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
2713 {
2714 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
2715 }
2716 }
2717 {
2718 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
2719 }
2720 {
2721 abstract_compiler__AbstractCompilerVisitor__add(var_v, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2722 }
2723 if (varonce20) {
2724 var21 = varonce20;
2725 } else {
2726 var22 = " = 0;";
2727 var23 = 5;
2728 var24 = string__NativeString__to_s_with_length(var22, var23);
2729 var21 = var24;
2730 varonce20 = var21;
2731 }
2732 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
2733 { /* var25 = array_instance Array[Object] */
2734 var26 = 2;
2735 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
2736 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var_res;
2737 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var21;
2738 {
2739 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
2740 }
2741 }
2742 {
2743 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
2744 }
2745 {
2746 abstract_compiler__AbstractCompilerVisitor__add(var_v, var28); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2747 }
2748 if (varonce29) {
2749 var30 = varonce29;
2750 } else {
2751 var31 = "} else {";
2752 var32 = 8;
2753 var33 = string__NativeString__to_s_with_length(var31, var32);
2754 var30 = var33;
2755 varonce29 = var30;
2756 }
2757 {
2758 abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2759 }
2760 {
2761 var34 = parser_nodes__AAndExpr__n_expr2(self);
2762 }
2763 {
2764 var35 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var34);
2765 }
2766 var_i2 = var35;
2767 if (varonce36) {
2768 var37 = varonce36;
2769 } else {
2770 var38 = " = ";
2771 var39 = 3;
2772 var40 = string__NativeString__to_s_with_length(var38, var39);
2773 var37 = var40;
2774 varonce36 = var37;
2775 }
2776 if (varonce41) {
2777 var42 = varonce41;
2778 } else {
2779 var43 = ";";
2780 var44 = 1;
2781 var45 = string__NativeString__to_s_with_length(var43, var44);
2782 var42 = var45;
2783 varonce41 = var42;
2784 }
2785 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
2786 { /* var46 = array_instance Array[Object] */
2787 var47 = 4;
2788 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
2789 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
2790 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var37;
2791 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_i2;
2792 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
2793 {
2794 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
2795 }
2796 }
2797 {
2798 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
2799 }
2800 {
2801 abstract_compiler__AbstractCompilerVisitor__add(var_v, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2802 }
2803 if (varonce50) {
2804 var51 = varonce50;
2805 } else {
2806 var52 = "}";
2807 var53 = 1;
2808 var54 = string__NativeString__to_s_with_length(var52, var53);
2809 var51 = var54;
2810 varonce50 = var51;
2811 }
2812 {
2813 abstract_compiler__AbstractCompilerVisitor__add(var_v, var51); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2814 }
2815 var = var_res;
2816 goto RET_LABEL;
2817 RET_LABEL:;
2818 return var;
2819 }
2820 /* method abstract_compiler#AAndExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2821 val* VIRTUAL_abstract_compiler__AAndExpr__expr(val* self, val* p0) {
2822 val* var /* : nullable RuntimeVariable */;
2823 val* var1 /* : nullable RuntimeVariable */;
2824 var1 = abstract_compiler__AAndExpr__expr(self, p0);
2825 var = var1;
2826 RET_LABEL:;
2827 return var;
2828 }
2829 /* method abstract_compiler#ANotExpr#expr for (self: ANotExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2830 val* abstract_compiler__ANotExpr__expr(val* self, val* p0) {
2831 val* var /* : nullable RuntimeVariable */;
2832 val* var_v /* var v: AbstractCompilerVisitor */;
2833 val* var1 /* : AExpr */;
2834 val* var2 /* : RuntimeVariable */;
2835 val* var_cond /* var cond: RuntimeVariable */;
2836 static val* varonce;
2837 val* var3 /* : String */;
2838 char* var4 /* : NativeString */;
2839 long var5 /* : Int */;
2840 val* var6 /* : FlatString */;
2841 val* var7 /* : Array[Object] */;
2842 long var8 /* : Int */;
2843 val* var9 /* : NativeArray[Object] */;
2844 val* var10 /* : String */;
2845 val* var11 /* : nullable MType */;
2846 val* var13 /* : nullable MType */;
2847 val* var14 /* : RuntimeVariable */;
2848 var_v = p0;
2849 {
2850 var1 = parser_nodes__ANotExpr__n_expr(self);
2851 }
2852 {
2853 var2 = abstract_compiler__AbstractCompilerVisitor__expr_bool(var_v, var1);
2854 }
2855 var_cond = var2;
2856 if (varonce) {
2857 var3 = varonce;
2858 } else {
2859 var4 = "!";
2860 var5 = 1;
2861 var6 = string__NativeString__to_s_with_length(var4, var5);
2862 var3 = var6;
2863 varonce = var3;
2864 }
2865 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
2866 { /* var7 = array_instance Array[Object] */
2867 var8 = 2;
2868 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
2869 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var3;
2870 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var_cond;
2871 {
2872 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
2873 }
2874 }
2875 {
2876 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
2877 }
2878 {
2879 { /* Inline typing#AExpr#mtype (self) on <self:ANotExpr> */
2880 var13 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:ANotExpr> */
2881 var11 = var13;
2882 RET_LABEL12:(void)0;
2883 }
2884 }
2885 if (unlikely(var11 == NULL)) {
2886 PRINT_ERROR("Runtime error: %s", "Cast failed");
2887 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2558);
2888 show_backtrace(1);
2889 }
2890 {
2891 var14 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var10, var11);
2892 }
2893 var = var14;
2894 goto RET_LABEL;
2895 RET_LABEL:;
2896 return var;
2897 }
2898 /* method abstract_compiler#ANotExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2899 val* VIRTUAL_abstract_compiler__ANotExpr__expr(val* self, val* p0) {
2900 val* var /* : nullable RuntimeVariable */;
2901 val* var1 /* : nullable RuntimeVariable */;
2902 var1 = abstract_compiler__ANotExpr__expr(self, p0);
2903 var = var1;
2904 RET_LABEL:;
2905 return var;
2906 }
2907 /* method abstract_compiler#AOrElseExpr#expr for (self: AOrElseExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2908 val* abstract_compiler__AOrElseExpr__expr(val* self, val* p0) {
2909 val* var /* : nullable RuntimeVariable */;
2910 val* var_v /* var v: AbstractCompilerVisitor */;
2911 val* var1 /* : nullable MType */;
2912 val* var3 /* : nullable MType */;
2913 val* var4 /* : RuntimeVariable */;
2914 val* var_res /* var res: RuntimeVariable */;
2915 val* var5 /* : AExpr */;
2916 val* var6 /* : null */;
2917 val* var7 /* : RuntimeVariable */;
2918 val* var_i1 /* var i1: RuntimeVariable */;
2919 static val* varonce;
2920 val* var8 /* : String */;
2921 char* var9 /* : NativeString */;
2922 long var10 /* : Int */;
2923 val* var11 /* : FlatString */;
2924 static val* varonce12;
2925 val* var13 /* : String */;
2926 char* var14 /* : NativeString */;
2927 long var15 /* : Int */;
2928 val* var16 /* : FlatString */;
2929 val* var17 /* : Array[Object] */;
2930 long var18 /* : Int */;
2931 val* var19 /* : NativeArray[Object] */;
2932 val* var20 /* : String */;
2933 static val* varonce21;
2934 val* var22 /* : String */;
2935 char* var23 /* : NativeString */;
2936 long var24 /* : Int */;
2937 val* var25 /* : FlatString */;
2938 val* var26 /* : AExpr */;
2939 val* var27 /* : null */;
2940 val* var28 /* : RuntimeVariable */;
2941 val* var_i2 /* var i2: RuntimeVariable */;
2942 static val* varonce29;
2943 val* var30 /* : String */;
2944 char* var31 /* : NativeString */;
2945 long var32 /* : Int */;
2946 val* var33 /* : FlatString */;
2947 var_v = p0;
2948 {
2949 { /* Inline typing#AExpr#mtype (self) on <self:AOrElseExpr> */
2950 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AOrElseExpr> */
2951 var1 = var3;
2952 RET_LABEL2:(void)0;
2953 }
2954 }
2955 if (unlikely(var1 == NULL)) {
2956 PRINT_ERROR("Runtime error: %s", "Cast failed");
2957 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2565);
2958 show_backtrace(1);
2959 }
2960 {
2961 var4 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var1);
2962 }
2963 var_res = var4;
2964 {
2965 var5 = parser_nodes__AOrElseExpr__n_expr(self);
2966 }
2967 var6 = NULL;
2968 {
2969 var7 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var5, var6);
2970 }
2971 var_i1 = var7;
2972 if (varonce) {
2973 var8 = varonce;
2974 } else {
2975 var9 = "if (";
2976 var10 = 4;
2977 var11 = string__NativeString__to_s_with_length(var9, var10);
2978 var8 = var11;
2979 varonce = var8;
2980 }
2981 if (varonce12) {
2982 var13 = varonce12;
2983 } else {
2984 var14 = "!=NULL) {";
2985 var15 = 9;
2986 var16 = string__NativeString__to_s_with_length(var14, var15);
2987 var13 = var16;
2988 varonce12 = var13;
2989 }
2990 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
2991 { /* var17 = array_instance Array[Object] */
2992 var18 = 3;
2993 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
2994 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8;
2995 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_i1;
2996 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
2997 {
2998 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
2999 }
3000 }
3001 {
3002 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
3003 }
3004 {
3005 abstract_compiler__AbstractCompilerVisitor__add(var_v, var20); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
3006 }
3007 {
3008 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var_res, var_i1); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
3009 }
3010 if (varonce21) {
3011 var22 = varonce21;
3012 } else {
3013 var23 = "} else {";
3014 var24 = 8;
3015 var25 = string__NativeString__to_s_with_length(var23, var24);
3016 var22 = var25;
3017 varonce21 = var22;
3018 }
3019 {
3020 abstract_compiler__AbstractCompilerVisitor__add(var_v, var22); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
3021 }
3022 {
3023 var26 = parser_nodes__AOrElseExpr__n_expr2(self);
3024 }
3025 var27 = NULL;
3026 {
3027 var28 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var26, var27);
3028 }
3029 var_i2 = var28;
3030 {
3031 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var_res, var_i2); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
3032 }
3033 if (varonce29) {
3034 var30 = varonce29;
3035 } else {
3036 var31 = "}";
3037 var32 = 1;
3038 var33 = string__NativeString__to_s_with_length(var31, var32);
3039 var30 = var33;
3040 varonce29 = var30;
3041 }
3042 {
3043 abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
3044 }
3045 var = var_res;
3046 goto RET_LABEL;
3047 RET_LABEL:;
3048 return var;
3049 }
3050 /* method abstract_compiler#AOrElseExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3051 val* VIRTUAL_abstract_compiler__AOrElseExpr__expr(val* self, val* p0) {
3052 val* var /* : nullable RuntimeVariable */;
3053 val* var1 /* : nullable RuntimeVariable */;
3054 var1 = abstract_compiler__AOrElseExpr__expr(self, p0);
3055 var = var1;
3056 RET_LABEL:;
3057 return var;
3058 }
3059 /* method abstract_compiler#AIntExpr#expr for (self: AIntExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3060 val* abstract_compiler__AIntExpr__expr(val* self, val* p0) {
3061 val* var /* : nullable RuntimeVariable */;
3062 val* var_v /* var v: AbstractCompilerVisitor */;
3063 val* var1 /* : nullable Int */;
3064 val* var3 /* : nullable Int */;
3065 val* var4 /* : String */;
3066 long var5 /* : Int */;
3067 val* var6 /* : Array[Object] */;
3068 long var7 /* : Int */;
3069 val* var8 /* : NativeArray[Object] */;
3070 val* var9 /* : String */;
3071 val* var10 /* : nullable MType */;
3072 val* var12 /* : nullable MType */;
3073 val* var13 /* : RuntimeVariable */;
3074 var_v = p0;
3075 {
3076 { /* Inline literal#AIntExpr#value (self) on <self:AIntExpr> */
3077 var3 = self->attrs[COLOR_literal__AIntExpr___value].val; /* _value on <self:AIntExpr> */
3078 var1 = var3;
3079 RET_LABEL2:(void)0;
3080 }
3081 }
3082 if (var1 == NULL) {
3083 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3084 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2578);
3085 show_backtrace(1);
3086 } else {
3087 var5 = ((struct instance_kernel__Int*)var1)->value; /* autounbox from nullable Int to Int */;
3088 var4 = string__Int__to_s(var5);
3089 }
3090 var6 = NEW_array__Array(&type_array__Arraykernel__Object);
3091 { /* var6 = array_instance Array[Object] */
3092 var7 = 1;
3093 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraykernel__Object);
3094 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var4;
3095 {
3096 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[Object]>*/;
3097 }
3098 }
3099 {
3100 var9 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:Array[Object]>*/;
3101 }
3102 {
3103 { /* Inline typing#AExpr#mtype (self) on <self:AIntExpr> */
3104 var12 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AIntExpr> */
3105 var10 = var12;
3106 RET_LABEL11:(void)0;
3107 }
3108 }
3109 if (unlikely(var10 == NULL)) {
3110 PRINT_ERROR("Runtime error: %s", "Cast failed");
3111 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2578);
3112 show_backtrace(1);
3113 }
3114 {
3115 var13 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var9, var10);
3116 }
3117 var = var13;
3118 goto RET_LABEL;
3119 RET_LABEL:;
3120 return var;
3121 }
3122 /* method abstract_compiler#AIntExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3123 val* VIRTUAL_abstract_compiler__AIntExpr__expr(val* self, val* p0) {
3124 val* var /* : nullable RuntimeVariable */;
3125 val* var1 /* : nullable RuntimeVariable */;
3126 var1 = abstract_compiler__AIntExpr__expr(self, p0);
3127 var = var1;
3128 RET_LABEL:;
3129 return var;
3130 }
3131 /* method abstract_compiler#AFloatExpr#expr for (self: AFloatExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3132 val* abstract_compiler__AFloatExpr__expr(val* self, val* p0) {
3133 val* var /* : nullable RuntimeVariable */;
3134 val* var_v /* var v: AbstractCompilerVisitor */;
3135 val* var1 /* : TFloat */;
3136 val* var2 /* : String */;
3137 val* var3 /* : Array[Object] */;
3138 long var4 /* : Int */;
3139 val* var5 /* : NativeArray[Object] */;
3140 val* var6 /* : String */;
3141 val* var7 /* : nullable MType */;
3142 val* var9 /* : nullable MType */;
3143 val* var10 /* : RuntimeVariable */;
3144 var_v = p0;
3145 {
3146 var1 = parser_nodes__AFloatExpr__n_float(self);
3147 }
3148 {
3149 var2 = lexer_work__Token__text(var1);
3150 }
3151 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3152 { /* var3 = array_instance Array[Object] */
3153 var4 = 1;
3154 var5 = NEW_array__NativeArray(var4, &type_array__NativeArraykernel__Object);
3155 ((struct instance_array__NativeArray*)var5)->values[0] = (val*) var2;
3156 {
3157 ((void (*)(val*, val*, long))(var3->class->vft[COLOR_array__Array__with_native]))(var3, var5, var4) /* with_native on <var3:Array[Object]>*/;
3158 }
3159 }
3160 {
3161 var6 = ((val* (*)(val*))(var3->class->vft[COLOR_string__Object__to_s]))(var3) /* to_s on <var3:Array[Object]>*/;
3162 }
3163 {
3164 { /* Inline typing#AExpr#mtype (self) on <self:AFloatExpr> */
3165 var9 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AFloatExpr> */
3166 var7 = var9;
3167 RET_LABEL8:(void)0;
3168 }
3169 }
3170 if (unlikely(var7 == NULL)) {
3171 PRINT_ERROR("Runtime error: %s", "Cast failed");
3172 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2582);
3173 show_backtrace(1);
3174 }
3175 {
3176 var10 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var6, var7);
3177 }
3178 var = var10;
3179 goto RET_LABEL;
3180 RET_LABEL:;
3181 return var;
3182 }
3183 /* method abstract_compiler#AFloatExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3184 val* VIRTUAL_abstract_compiler__AFloatExpr__expr(val* self, val* p0) {
3185 val* var /* : nullable RuntimeVariable */;
3186 val* var1 /* : nullable RuntimeVariable */;
3187 var1 = abstract_compiler__AFloatExpr__expr(self, p0);
3188 var = var1;
3189 RET_LABEL:;
3190 return var;
3191 }
3192 /* method abstract_compiler#ACharExpr#expr for (self: ACharExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3193 val* abstract_compiler__ACharExpr__expr(val* self, val* p0) {
3194 val* var /* : nullable RuntimeVariable */;
3195 val* var_v /* var v: AbstractCompilerVisitor */;
3196 static val* varonce;
3197 val* var1 /* : String */;
3198 char* var2 /* : NativeString */;
3199 long var3 /* : Int */;
3200 val* var4 /* : FlatString */;
3201 val* var5 /* : nullable Char */;
3202 val* var7 /* : nullable Char */;
3203 val* var8 /* : String */;
3204 char var9 /* : Char */;
3205 val* var10 /* : String */;
3206 static val* varonce11;
3207 val* var12 /* : String */;
3208 char* var13 /* : NativeString */;
3209 long var14 /* : Int */;
3210 val* var15 /* : FlatString */;
3211 val* var16 /* : Array[Object] */;
3212 long var17 /* : Int */;
3213 val* var18 /* : NativeArray[Object] */;
3214 val* var19 /* : String */;
3215 val* var20 /* : nullable MType */;
3216 val* var22 /* : nullable MType */;
3217 val* var23 /* : RuntimeVariable */;
3218 var_v = p0;
3219 if (varonce) {
3220 var1 = varonce;
3221 } else {
3222 var2 = "\'";
3223 var3 = 1;
3224 var4 = string__NativeString__to_s_with_length(var2, var3);
3225 var1 = var4;
3226 varonce = var1;
3227 }
3228 {
3229 { /* Inline literal#ACharExpr#value (self) on <self:ACharExpr> */
3230 var7 = self->attrs[COLOR_literal__ACharExpr___value].val; /* _value on <self:ACharExpr> */
3231 var5 = var7;
3232 RET_LABEL6:(void)0;
3233 }
3234 }
3235 if (var5 == NULL) {
3236 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3237 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2586);
3238 show_backtrace(1);
3239 } else {
3240 var9 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Char to Char */;
3241 var8 = string__Char__to_s(var9);
3242 }
3243 {
3244 var10 = string__Text__escape_to_c(var8);
3245 }
3246 if (varonce11) {
3247 var12 = varonce11;
3248 } else {
3249 var13 = "\'";
3250 var14 = 1;
3251 var15 = string__NativeString__to_s_with_length(var13, var14);
3252 var12 = var15;
3253 varonce11 = var12;
3254 }
3255 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
3256 { /* var16 = array_instance Array[Object] */
3257 var17 = 3;
3258 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
3259 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var1;
3260 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var10;
3261 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
3262 {
3263 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
3264 }
3265 }
3266 {
3267 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
3268 }
3269 {
3270 { /* Inline typing#AExpr#mtype (self) on <self:ACharExpr> */
3271 var22 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:ACharExpr> */
3272 var20 = var22;
3273 RET_LABEL21:(void)0;
3274 }
3275 }
3276 if (unlikely(var20 == NULL)) {
3277 PRINT_ERROR("Runtime error: %s", "Cast failed");
3278 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2586);
3279 show_backtrace(1);
3280 }
3281 {
3282 var23 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var19, var20);
3283 }
3284 var = var23;
3285 goto RET_LABEL;
3286 RET_LABEL:;
3287 return var;
3288 }
3289 /* method abstract_compiler#ACharExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3290 val* VIRTUAL_abstract_compiler__ACharExpr__expr(val* self, val* p0) {
3291 val* var /* : nullable RuntimeVariable */;
3292 val* var1 /* : nullable RuntimeVariable */;
3293 var1 = abstract_compiler__ACharExpr__expr(self, p0);
3294 var = var1;
3295 RET_LABEL:;
3296 return var;
3297 }
3298 /* method abstract_compiler#AArrayExpr#expr for (self: AArrayExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3299 val* abstract_compiler__AArrayExpr__expr(val* self, val* p0) {
3300 val* var /* : nullable RuntimeVariable */;
3301 val* var_v /* var v: AbstractCompilerVisitor */;
3302 val* var1 /* : nullable MType */;
3303 val* var3 /* : nullable MType */;
3304 short int var4 /* : Bool */;
3305 int cltype;
3306 int idtype;
3307 const char* var_class_name;
3308 val* var5 /* : Array[MType] */;
3309 val* var7 /* : Array[MType] */;
3310 val* var8 /* : nullable Object */;
3311 val* var_mtype /* var mtype: MType */;
3312 val* var9 /* : Array[RuntimeVariable] */;
3313 val* var_array /* var array: Array[RuntimeVariable] */;
3314 val* var10 /* : AExprs */;
3315 val* var11 /* : ANodes[AExpr] */;
3316 val* var13 /* : ANodes[AExpr] */;
3317 val* var14 /* : Iterator[ANode] */;
3318 short int var15 /* : Bool */;
3319 val* var16 /* : nullable Object */;
3320 val* var_nexpr /* var nexpr: AExpr */;
3321 val* var17 /* : RuntimeVariable */;
3322 val* var_i /* var i: RuntimeVariable */;
3323 val* var18 /* : RuntimeVariable */;
3324 var_v = p0;
3325 {
3326 { /* Inline typing#AExpr#mtype (self) on <self:AArrayExpr> */
3327 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AArrayExpr> */
3328 var1 = var3;
3329 RET_LABEL2:(void)0;
3330 }
3331 }
3332 /* <var1:nullable MType> isa MClassType */
3333 cltype = type_model__MClassType.color;
3334 idtype = type_model__MClassType.id;
3335 if(var1 == NULL) {
3336 var4 = 0;
3337 } else {
3338 if(cltype >= var1->type->table_size) {
3339 var4 = 0;
3340 } else {
3341 var4 = var1->type->type_table[cltype] == idtype;
3342 }
3343 }
3344 if (unlikely(!var4)) {
3345 var_class_name = var1 == NULL ? "null" : var1->type->name;
3346 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3347 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2592);
3348 show_backtrace(1);
3349 }
3350 {
3351 { /* Inline model#MClassType#arguments (var1) on <var1:nullable MType(MClassType)> */
3352 var7 = var1->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var1:nullable MType(MClassType)> */
3353 if (unlikely(var7 == NULL)) {
3354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
3355 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
3356 show_backtrace(1);
3357 }
3358 var5 = var7;
3359 RET_LABEL6:(void)0;
3360 }
3361 }
3362 {
3363 var8 = abstract_collection__SequenceRead__first(var5);
3364 }
3365 var_mtype = var8;
3366 var9 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3367 {
3368 array__Array__init(var9); /* Direct call array#Array#init on <var9:Array[RuntimeVariable]>*/
3369 }
3370 var_array = var9;
3371 {
3372 var10 = parser_nodes__AArrayExpr__n_exprs(self);
3373 }
3374 {
3375 { /* Inline parser_nodes#AExprs#n_exprs (var10) on <var10:AExprs> */
3376 var13 = var10->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var10:AExprs> */
3377 if (unlikely(var13 == NULL)) {
3378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
3379 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
3380 show_backtrace(1);
3381 }
3382 var11 = var13;
3383 RET_LABEL12:(void)0;
3384 }
3385 }
3386 {
3387 var14 = parser_nodes__ANodes__iterator(var11);
3388 }
3389 for(;;) {
3390 {
3391 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[ANode]>*/;
3392 }
3393 if(!var15) break;
3394 {
3395 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[ANode]>*/;
3396 }
3397 var_nexpr = var16;
3398 {
3399 var17 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var_nexpr, var_mtype);
3400 }
3401 var_i = var17;
3402 {
3403 array__Array__add(var_array, var_i); /* Direct call array#Array#add on <var_array:Array[RuntimeVariable]>*/
3404 }
3405 CONTINUE_label: (void)0;
3406 {
3407 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[ANode]>*/;
3408 }
3409 }
3410 BREAK_label: (void)0;
3411 {
3412 var18 = separate_compiler__SeparateCompilerVisitor__array_instance(var_v, var_array, var_mtype);
3413 }
3414 var = var18;
3415 goto RET_LABEL;
3416 RET_LABEL:;
3417 return var;
3418 }
3419 /* method abstract_compiler#AArrayExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3420 val* VIRTUAL_abstract_compiler__AArrayExpr__expr(val* self, val* p0) {
3421 val* var /* : nullable RuntimeVariable */;
3422 val* var1 /* : nullable RuntimeVariable */;
3423 var1 = abstract_compiler__AArrayExpr__expr(self, p0);
3424 var = var1;
3425 RET_LABEL:;
3426 return var;
3427 }
3428 /* method abstract_compiler#AStringFormExpr#expr for (self: AStringFormExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3429 val* abstract_compiler__AStringFormExpr__expr(val* self, val* p0) {
3430 val* var /* : nullable RuntimeVariable */;
3431 val* var_v /* var v: AbstractCompilerVisitor */;
3432 val* var1 /* : nullable String */;
3433 val* var3 /* : nullable String */;
3434 val* var4 /* : RuntimeVariable */;
3435 var_v = p0;
3436 {
3437 { /* Inline literal#AStringFormExpr#value (self) on <self:AStringFormExpr> */
3438 var3 = self->attrs[COLOR_literal__AStringFormExpr___value].val; /* _value on <self:AStringFormExpr> */
3439 var1 = var3;
3440 RET_LABEL2:(void)0;
3441 }
3442 }
3443 if (unlikely(var1 == NULL)) {
3444 PRINT_ERROR("Runtime error: %s", "Cast failed");
3445 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2603);
3446 show_backtrace(1);
3447 }
3448 {
3449 var4 = abstract_compiler__AbstractCompilerVisitor__string_instance(var_v, var1);
3450 }
3451 var = var4;
3452 goto RET_LABEL;
3453 RET_LABEL:;
3454 return var;
3455 }
3456 /* method abstract_compiler#AStringFormExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3457 val* VIRTUAL_abstract_compiler__AStringFormExpr__expr(val* self, val* p0) {
3458 val* var /* : nullable RuntimeVariable */;
3459 val* var1 /* : nullable RuntimeVariable */;
3460 var1 = abstract_compiler__AStringFormExpr__expr(self, p0);
3461 var = var1;
3462 RET_LABEL:;
3463 return var;
3464 }
3465 /* method abstract_compiler#ASuperstringExpr#expr for (self: ASuperstringExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3466 val* abstract_compiler__ASuperstringExpr__expr(val* self, val* p0) {
3467 val* var /* : nullable RuntimeVariable */;
3468 val* var_v /* var v: AbstractCompilerVisitor */;
3469 val* var1 /* : Array[RuntimeVariable] */;
3470 val* var_array /* var array: Array[RuntimeVariable] */;
3471 val* var2 /* : ANodes[AExpr] */;
3472 val* var4 /* : ANodes[AExpr] */;
3473 val* var5 /* : Iterator[ANode] */;
3474 short int var6 /* : Bool */;
3475 val* var7 /* : nullable Object */;
3476 val* var_ne /* var ne: AExpr */;
3477 short int var8 /* : Bool */;
3478 short int var9 /* : Bool */;
3479 int cltype;
3480 int idtype;
3481 short int var_ /* var : Bool */;
3482 val* var10 /* : nullable String */;
3483 val* var12 /* : nullable String */;
3484 static val* varonce;
3485 val* var13 /* : String */;
3486 char* var14 /* : NativeString */;
3487 long var15 /* : Int */;
3488 val* var16 /* : FlatString */;
3489 short int var17 /* : Bool */;
3490 short int var18 /* : Bool */;
3491 val* var19 /* : null */;
3492 val* var20 /* : RuntimeVariable */;
3493 val* var_i /* var i: RuntimeVariable */;
3494 val* var21 /* : MClassType */;
3495 val* var22 /* : RuntimeVariable */;
3496 val* var_a /* var a: RuntimeVariable */;
3497 static val* varonce23;
3498 val* var24 /* : String */;
3499 char* var25 /* : NativeString */;
3500 long var26 /* : Int */;
3501 val* var27 /* : FlatString */;
3502 val* var28 /* : MType */;
3503 val* var30 /* : MType */;
3504 val* var31 /* : MMethod */;
3505 val* var32 /* : Array[RuntimeVariable] */;
3506 long var33 /* : Int */;
3507 val* var_34 /* var : Array[RuntimeVariable] */;
3508 val* var35 /* : nullable RuntimeVariable */;
3509 val* var_res /* var res: nullable RuntimeVariable */;
3510 var_v = p0;
3511 var1 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3512 {
3513 array__Array__init(var1); /* Direct call array#Array#init on <var1:Array[RuntimeVariable]>*/
3514 }
3515 var_array = var1;
3516 {
3517 { /* Inline parser_nodes#ASuperstringExpr#n_exprs (self) on <self:ASuperstringExpr> */
3518 var4 = self->attrs[COLOR_parser_nodes__ASuperstringExpr___n_exprs].val; /* _n_exprs on <self:ASuperstringExpr> */
3519 if (unlikely(var4 == NULL)) {
3520 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
3521 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2180);
3522 show_backtrace(1);
3523 }
3524 var2 = var4;
3525 RET_LABEL3:(void)0;
3526 }
3527 }
3528 {
3529 var5 = parser_nodes__ANodes__iterator(var2);
3530 }
3531 for(;;) {
3532 {
3533 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[ANode]>*/;
3534 }
3535 if(!var6) break;
3536 {
3537 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[ANode]>*/;
3538 }
3539 var_ne = var7;
3540 /* <var_ne:AExpr> isa AStringFormExpr */
3541 cltype = type_parser_nodes__AStringFormExpr.color;
3542 idtype = type_parser_nodes__AStringFormExpr.id;
3543 if(cltype >= var_ne->type->table_size) {
3544 var9 = 0;
3545 } else {
3546 var9 = var_ne->type->type_table[cltype] == idtype;
3547 }
3548 var_ = var9;
3549 if (var9){
3550 {
3551 { /* Inline literal#AStringFormExpr#value (var_ne) on <var_ne:AExpr(AStringFormExpr)> */
3552 var12 = var_ne->attrs[COLOR_literal__AStringFormExpr___value].val; /* _value on <var_ne:AExpr(AStringFormExpr)> */
3553 var10 = var12;
3554 RET_LABEL11:(void)0;
3555 }
3556 }
3557 if (varonce) {
3558 var13 = varonce;
3559 } else {
3560 var14 = "";
3561 var15 = 0;
3562 var16 = string__NativeString__to_s_with_length(var14, var15);
3563 var13 = var16;
3564 varonce = var13;
3565 }
3566 if (var10 == NULL) {
3567 var17 = 0; /* <var13:String> cannot be null */
3568 } else {
3569 var18 = string__FlatString___61d_61d(var10, var13);
3570 var17 = var18;
3571 }
3572 var8 = var17;
3573 } else {
3574 var8 = var_;
3575 }
3576 if (var8){
3577 goto CONTINUE_label;
3578 } else {
3579 }
3580 var19 = NULL;
3581 {
3582 var20 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var_ne, var19);
3583 }
3584 var_i = var20;
3585 {
3586 array__Array__add(var_array, var_i); /* Direct call array#Array#add on <var_array:Array[RuntimeVariable]>*/
3587 }
3588 CONTINUE_label: (void)0;
3589 {
3590 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[ANode]>*/;
3591 }
3592 }
3593 BREAK_label: (void)0;
3594 {
3595 var21 = abstract_compiler__AbstractCompilerVisitor__object_type(var_v);
3596 }
3597 {
3598 var22 = separate_compiler__SeparateCompilerVisitor__array_instance(var_v, var_array, var21);
3599 }
3600 var_a = var22;
3601 if (varonce23) {
3602 var24 = varonce23;
3603 } else {
3604 var25 = "to_s";
3605 var26 = 4;
3606 var27 = string__NativeString__to_s_with_length(var25, var26);
3607 var24 = var27;
3608 varonce23 = var24;
3609 }
3610 {
3611 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_a) on <var_a:RuntimeVariable> */
3612 var30 = var_a->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_a:RuntimeVariable> */
3613 if (unlikely(var30 == NULL)) {
3614 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3615 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1484);
3616 show_backtrace(1);
3617 }
3618 var28 = var30;
3619 RET_LABEL29:(void)0;
3620 }
3621 }
3622 {
3623 var31 = abstract_compiler__AbstractCompilerVisitor__get_property(var_v, var24, var28);
3624 }
3625 var32 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3626 var33 = 1;
3627 {
3628 array__Array__with_capacity(var32, var33); /* Direct call array#Array#with_capacity on <var32:Array[RuntimeVariable]>*/
3629 }
3630 var_34 = var32;
3631 {
3632 array__AbstractArray__push(var_34, var_a); /* Direct call array#AbstractArray#push on <var_34:Array[RuntimeVariable]>*/
3633 }
3634 {
3635 var35 = separate_compiler__SeparateCompilerVisitor__send(var_v, var31, var_34);
3636 }
3637 var_res = var35;
3638 var = var_res;
3639 goto RET_LABEL;
3640 RET_LABEL:;
3641 return var;
3642 }
3643 /* method abstract_compiler#ASuperstringExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3644 val* VIRTUAL_abstract_compiler__ASuperstringExpr__expr(val* self, val* p0) {
3645 val* var /* : nullable RuntimeVariable */;
3646 val* var1 /* : nullable RuntimeVariable */;
3647 var1 = abstract_compiler__ASuperstringExpr__expr(self, p0);
3648 var = var1;
3649 RET_LABEL:;
3650 return var;
3651 }
3652 /* method abstract_compiler#ACrangeExpr#expr for (self: ACrangeExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3653 val* abstract_compiler__ACrangeExpr__expr(val* self, val* p0) {
3654 val* var /* : nullable RuntimeVariable */;
3655 val* var_v /* var v: AbstractCompilerVisitor */;
3656 val* var1 /* : AExpr */;
3657 val* var2 /* : null */;
3658 val* var3 /* : RuntimeVariable */;
3659 val* var_i1 /* var i1: RuntimeVariable */;
3660 val* var4 /* : AExpr */;
3661 val* var5 /* : null */;
3662 val* var6 /* : RuntimeVariable */;
3663 val* var_i2 /* var i2: RuntimeVariable */;
3664 val* var7 /* : nullable MType */;
3665 val* var9 /* : nullable MType */;
3666 short int var10 /* : Bool */;
3667 int cltype;
3668 int idtype;
3669 const char* var_class_name;
3670 val* var_mtype /* var mtype: MClassType */;
3671 val* var11 /* : RuntimeVariable */;
3672 val* var_res /* var res: RuntimeVariable */;
3673 val* var12 /* : nullable CallSite */;
3674 val* var14 /* : nullable CallSite */;
3675 val* var15 /* : Array[RuntimeVariable] */;
3676 long var16 /* : Int */;
3677 val* var_ /* var : Array[RuntimeVariable] */;
3678 val* var17 /* : nullable RuntimeVariable */;
3679 val* var_it /* var it: nullable RuntimeVariable */;
3680 var_v = p0;
3681 {
3682 var1 = parser_nodes__ARangeExpr__n_expr(self);
3683 }
3684 var2 = NULL;
3685 {
3686 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
3687 }
3688 var_i1 = var3;
3689 {
3690 var4 = parser_nodes__ARangeExpr__n_expr2(self);
3691 }
3692 var5 = NULL;
3693 {
3694 var6 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var4, var5);
3695 }
3696 var_i2 = var6;
3697 {
3698 { /* Inline typing#AExpr#mtype (self) on <self:ACrangeExpr> */
3699 var9 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:ACrangeExpr> */
3700 var7 = var9;
3701 RET_LABEL8:(void)0;
3702 }
3703 }
3704 /* <var7:nullable MType> isa MClassType */
3705 cltype = type_model__MClassType.color;
3706 idtype = type_model__MClassType.id;
3707 if(var7 == NULL) {
3708 var10 = 0;
3709 } else {
3710 if(cltype >= var7->type->table_size) {
3711 var10 = 0;
3712 } else {
3713 var10 = var7->type->type_table[cltype] == idtype;
3714 }
3715 }
3716 if (unlikely(!var10)) {
3717 var_class_name = var7 == NULL ? "null" : var7->type->name;
3718 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3719 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2626);
3720 show_backtrace(1);
3721 }
3722 var_mtype = var7;
3723 {
3724 var11 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_mtype) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
3725 }
3726 var_res = var11;
3727 {
3728 { /* Inline typing#ARangeExpr#init_callsite (self) on <self:ACrangeExpr> */
3729 var14 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:ACrangeExpr> */
3730 var12 = var14;
3731 RET_LABEL13:(void)0;
3732 }
3733 }
3734 if (unlikely(var12 == NULL)) {
3735 PRINT_ERROR("Runtime error: %s", "Cast failed");
3736 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2628);
3737 show_backtrace(1);
3738 }
3739 var15 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3740 var16 = 3;
3741 {
3742 array__Array__with_capacity(var15, var16); /* Direct call array#Array#with_capacity on <var15:Array[RuntimeVariable]>*/
3743 }
3744 var_ = var15;
3745 {
3746 array__AbstractArray__push(var_, var_res); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
3747 }
3748 {
3749 array__AbstractArray__push(var_, var_i1); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
3750 }
3751 {
3752 array__AbstractArray__push(var_, var_i2); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
3753 }
3754 {
3755 var17 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var12, var_) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
3756 }
3757 var_it = var17;
3758 var = var_res;
3759 goto RET_LABEL;
3760 RET_LABEL:;
3761 return var;
3762 }
3763 /* method abstract_compiler#ACrangeExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3764 val* VIRTUAL_abstract_compiler__ACrangeExpr__expr(val* self, val* p0) {
3765 val* var /* : nullable RuntimeVariable */;
3766 val* var1 /* : nullable RuntimeVariable */;
3767 var1 = abstract_compiler__ACrangeExpr__expr(self, p0);
3768 var = var1;
3769 RET_LABEL:;
3770 return var;
3771 }
3772 /* method abstract_compiler#AOrangeExpr#expr for (self: AOrangeExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3773 val* abstract_compiler__AOrangeExpr__expr(val* self, val* p0) {
3774 val* var /* : nullable RuntimeVariable */;
3775 val* var_v /* var v: AbstractCompilerVisitor */;
3776 val* var1 /* : AExpr */;
3777 val* var2 /* : null */;
3778 val* var3 /* : RuntimeVariable */;
3779 val* var_i1 /* var i1: RuntimeVariable */;
3780 val* var4 /* : AExpr */;
3781 val* var5 /* : null */;
3782 val* var6 /* : RuntimeVariable */;
3783 val* var_i2 /* var i2: RuntimeVariable */;
3784 val* var7 /* : nullable MType */;
3785 val* var9 /* : nullable MType */;
3786 short int var10 /* : Bool */;
3787 int cltype;
3788 int idtype;
3789 const char* var_class_name;
3790 val* var_mtype /* var mtype: MClassType */;
3791 val* var11 /* : RuntimeVariable */;
3792 val* var_res /* var res: RuntimeVariable */;
3793 val* var12 /* : nullable CallSite */;
3794 val* var14 /* : nullable CallSite */;
3795 val* var15 /* : Array[RuntimeVariable] */;
3796 long var16 /* : Int */;
3797 val* var_ /* var : Array[RuntimeVariable] */;
3798 val* var17 /* : nullable RuntimeVariable */;
3799 val* var_it /* var it: nullable RuntimeVariable */;
3800 var_v = p0;
3801 {
3802 var1 = parser_nodes__ARangeExpr__n_expr(self);
3803 }
3804 var2 = NULL;
3805 {
3806 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
3807 }
3808 var_i1 = var3;
3809 {
3810 var4 = parser_nodes__ARangeExpr__n_expr2(self);
3811 }
3812 var5 = NULL;
3813 {
3814 var6 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var4, var5);
3815 }
3816 var_i2 = var6;
3817 {
3818 { /* Inline typing#AExpr#mtype (self) on <self:AOrangeExpr> */
3819 var9 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AOrangeExpr> */
3820 var7 = var9;
3821 RET_LABEL8:(void)0;
3822 }
3823 }
3824 /* <var7:nullable MType> isa MClassType */
3825 cltype = type_model__MClassType.color;
3826 idtype = type_model__MClassType.id;
3827 if(var7 == NULL) {
3828 var10 = 0;
3829 } else {
3830 if(cltype >= var7->type->table_size) {
3831 var10 = 0;
3832 } else {
3833 var10 = var7->type->type_table[cltype] == idtype;
3834 }
3835 }
3836 if (unlikely(!var10)) {
3837 var_class_name = var7 == NULL ? "null" : var7->type->name;
3838 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3839 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2638);
3840 show_backtrace(1);
3841 }
3842 var_mtype = var7;
3843 {
3844 var11 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_mtype) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
3845 }
3846 var_res = var11;
3847 {
3848 { /* Inline typing#ARangeExpr#init_callsite (self) on <self:AOrangeExpr> */
3849 var14 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:AOrangeExpr> */
3850 var12 = var14;
3851 RET_LABEL13:(void)0;
3852 }
3853 }
3854 if (unlikely(var12 == NULL)) {
3855 PRINT_ERROR("Runtime error: %s", "Cast failed");
3856 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2640);
3857 show_backtrace(1);
3858 }
3859 var15 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3860 var16 = 3;
3861 {
3862 array__Array__with_capacity(var15, var16); /* Direct call array#Array#with_capacity on <var15:Array[RuntimeVariable]>*/
3863 }
3864 var_ = var15;
3865 {
3866 array__AbstractArray__push(var_, var_res); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
3867 }
3868 {
3869 array__AbstractArray__push(var_, var_i1); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
3870 }
3871 {
3872 array__AbstractArray__push(var_, var_i2); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
3873 }
3874 {
3875 var17 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var12, var_) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
3876 }
3877 var_it = var17;
3878 var = var_res;
3879 goto RET_LABEL;
3880 RET_LABEL:;
3881 return var;
3882 }
3883 /* method abstract_compiler#AOrangeExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3884 val* VIRTUAL_abstract_compiler__AOrangeExpr__expr(val* self, val* p0) {
3885 val* var /* : nullable RuntimeVariable */;
3886 val* var1 /* : nullable RuntimeVariable */;
3887 var1 = abstract_compiler__AOrangeExpr__expr(self, p0);
3888 var = var1;
3889 RET_LABEL:;
3890 return var;
3891 }
3892 /* method abstract_compiler#ATrueExpr#expr for (self: ATrueExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3893 val* abstract_compiler__ATrueExpr__expr(val* self, val* p0) {
3894 val* var /* : nullable RuntimeVariable */;
3895 val* var_v /* var v: AbstractCompilerVisitor */;
3896 static val* varonce;
3897 val* var1 /* : String */;
3898 char* var2 /* : NativeString */;
3899 long var3 /* : Int */;
3900 val* var4 /* : FlatString */;
3901 val* var5 /* : nullable MType */;
3902 val* var7 /* : nullable MType */;
3903 val* var8 /* : RuntimeVariable */;
3904 var_v = p0;
3905 if (varonce) {
3906 var1 = varonce;
3907 } else {
3908 var2 = "1";
3909 var3 = 1;
3910 var4 = string__NativeString__to_s_with_length(var2, var3);
3911 var1 = var4;
3912 varonce = var1;
3913 }
3914 {
3915 { /* Inline typing#AExpr#mtype (self) on <self:ATrueExpr> */
3916 var7 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:ATrueExpr> */
3917 var5 = var7;
3918 RET_LABEL6:(void)0;
3919 }
3920 }
3921 if (unlikely(var5 == NULL)) {
3922 PRINT_ERROR("Runtime error: %s", "Cast failed");
3923 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2646);
3924 show_backtrace(1);
3925 }
3926 {
3927 var8 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var1, var5);
3928 }
3929 var = var8;
3930 goto RET_LABEL;
3931 RET_LABEL:;
3932 return var;
3933 }
3934 /* method abstract_compiler#ATrueExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3935 val* VIRTUAL_abstract_compiler__ATrueExpr__expr(val* self, val* p0) {
3936 val* var /* : nullable RuntimeVariable */;
3937 val* var1 /* : nullable RuntimeVariable */;
3938 var1 = abstract_compiler__ATrueExpr__expr(self, p0);
3939 var = var1;
3940 RET_LABEL:;
3941 return var;
3942 }
3943 /* method abstract_compiler#AFalseExpr#expr for (self: AFalseExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3944 val* abstract_compiler__AFalseExpr__expr(val* self, val* p0) {
3945 val* var /* : nullable RuntimeVariable */;
3946 val* var_v /* var v: AbstractCompilerVisitor */;
3947 static val* varonce;
3948 val* var1 /* : String */;
3949 char* var2 /* : NativeString */;
3950 long var3 /* : Int */;
3951 val* var4 /* : FlatString */;
3952 val* var5 /* : nullable MType */;
3953 val* var7 /* : nullable MType */;
3954 val* var8 /* : RuntimeVariable */;
3955 var_v = p0;
3956 if (varonce) {
3957 var1 = varonce;
3958 } else {
3959 var2 = "0";
3960 var3 = 1;
3961 var4 = string__NativeString__to_s_with_length(var2, var3);
3962 var1 = var4;
3963 varonce = var1;
3964 }
3965 {
3966 { /* Inline typing#AExpr#mtype (self) on <self:AFalseExpr> */
3967 var7 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AFalseExpr> */
3968 var5 = var7;
3969 RET_LABEL6:(void)0;
3970 }
3971 }
3972 if (unlikely(var5 == NULL)) {
3973 PRINT_ERROR("Runtime error: %s", "Cast failed");
3974 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2650);
3975 show_backtrace(1);
3976 }
3977 {
3978 var8 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var1, var5);
3979 }
3980 var = var8;
3981 goto RET_LABEL;
3982 RET_LABEL:;
3983 return var;
3984 }
3985 /* method abstract_compiler#AFalseExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3986 val* VIRTUAL_abstract_compiler__AFalseExpr__expr(val* self, val* p0) {
3987 val* var /* : nullable RuntimeVariable */;
3988 val* var1 /* : nullable RuntimeVariable */;
3989 var1 = abstract_compiler__AFalseExpr__expr(self, p0);
3990 var = var1;
3991 RET_LABEL:;
3992 return var;
3993 }
3994 /* method abstract_compiler#ANullExpr#expr for (self: ANullExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3995 val* abstract_compiler__ANullExpr__expr(val* self, val* p0) {
3996 val* var /* : nullable RuntimeVariable */;
3997 val* var_v /* var v: AbstractCompilerVisitor */;
3998 static val* varonce;
3999 val* var1 /* : String */;
4000 char* var2 /* : NativeString */;
4001 long var3 /* : Int */;
4002 val* var4 /* : FlatString */;
4003 val* var5 /* : nullable MType */;
4004 val* var7 /* : nullable MType */;
4005 val* var8 /* : RuntimeVariable */;
4006 var_v = p0;
4007 if (varonce) {
4008 var1 = varonce;
4009 } else {
4010 var2 = "NULL";
4011 var3 = 4;
4012 var4 = string__NativeString__to_s_with_length(var2, var3);
4013 var1 = var4;
4014 varonce = var1;
4015 }
4016 {
4017 { /* Inline typing#AExpr#mtype (self) on <self:ANullExpr> */
4018 var7 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:ANullExpr> */
4019 var5 = var7;
4020 RET_LABEL6:(void)0;
4021 }
4022 }
4023 if (unlikely(var5 == NULL)) {
4024 PRINT_ERROR("Runtime error: %s", "Cast failed");
4025 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2654);
4026 show_backtrace(1);
4027 }
4028 {
4029 var8 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var1, var5);
4030 }
4031 var = var8;
4032 goto RET_LABEL;
4033 RET_LABEL:;
4034 return var;
4035 }
4036 /* method abstract_compiler#ANullExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4037 val* VIRTUAL_abstract_compiler__ANullExpr__expr(val* self, val* p0) {
4038 val* var /* : nullable RuntimeVariable */;
4039 val* var1 /* : nullable RuntimeVariable */;
4040 var1 = abstract_compiler__ANullExpr__expr(self, p0);
4041 var = var1;
4042 RET_LABEL:;
4043 return var;
4044 }
4045 /* method abstract_compiler#AIsaExpr#expr for (self: AIsaExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4046 val* abstract_compiler__AIsaExpr__expr(val* self, val* p0) {
4047 val* var /* : nullable RuntimeVariable */;
4048 val* var_v /* var v: AbstractCompilerVisitor */;
4049 val* var1 /* : AExpr */;
4050 val* var2 /* : null */;
4051 val* var3 /* : RuntimeVariable */;
4052 val* var_i /* var i: RuntimeVariable */;
4053 val* var4 /* : nullable MType */;
4054 val* var6 /* : nullable MType */;
4055 static val* varonce;
4056 val* var7 /* : String */;
4057 char* var8 /* : NativeString */;
4058 long var9 /* : Int */;
4059 val* var10 /* : FlatString */;
4060 val* var11 /* : RuntimeVariable */;
4061 var_v = p0;
4062 {
4063 var1 = parser_nodes__AIsaExpr__n_expr(self);
4064 }
4065 var2 = NULL;
4066 {
4067 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
4068 }
4069 var_i = var3;
4070 {
4071 { /* Inline typing#AIsaExpr#cast_type (self) on <self:AIsaExpr> */
4072 var6 = self->attrs[COLOR_typing__AIsaExpr___cast_type].val; /* _cast_type on <self:AIsaExpr> */
4073 var4 = var6;
4074 RET_LABEL5:(void)0;
4075 }
4076 }
4077 if (unlikely(var4 == NULL)) {
4078 PRINT_ERROR("Runtime error: %s", "Cast failed");
4079 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2661);
4080 show_backtrace(1);
4081 }
4082 if (varonce) {
4083 var7 = varonce;
4084 } else {
4085 var8 = "isa";
4086 var9 = 3;
4087 var10 = string__NativeString__to_s_with_length(var8, var9);
4088 var7 = var10;
4089 varonce = var7;
4090 }
4091 {
4092 var11 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test]))(var_v, var_i, var4, var7) /* type_test on <var_v:AbstractCompilerVisitor>*/;
4093 }
4094 var = var11;
4095 goto RET_LABEL;
4096 RET_LABEL:;
4097 return var;
4098 }
4099 /* method abstract_compiler#AIsaExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4100 val* VIRTUAL_abstract_compiler__AIsaExpr__expr(val* self, val* p0) {
4101 val* var /* : nullable RuntimeVariable */;
4102 val* var1 /* : nullable RuntimeVariable */;
4103 var1 = abstract_compiler__AIsaExpr__expr(self, p0);
4104 var = var1;
4105 RET_LABEL:;
4106 return var;
4107 }
4108 /* method abstract_compiler#AAsCastExpr#expr for (self: AAsCastExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4109 val* abstract_compiler__AAsCastExpr__expr(val* self, val* p0) {
4110 val* var /* : nullable RuntimeVariable */;
4111 val* var_v /* var v: AbstractCompilerVisitor */;
4112 val* var1 /* : AExpr */;
4113 val* var2 /* : null */;
4114 val* var3 /* : RuntimeVariable */;
4115 val* var_i /* var i: RuntimeVariable */;
4116 val* var4 /* : AbstractCompiler */;
4117 val* var6 /* : AbstractCompiler */;
4118 val* var7 /* : ModelBuilder */;
4119 val* var9 /* : ModelBuilder */;
4120 val* var10 /* : ToolContext */;
4121 val* var12 /* : ToolContext */;
4122 val* var13 /* : OptionBool */;
4123 val* var15 /* : OptionBool */;
4124 val* var16 /* : nullable Object */;
4125 val* var18 /* : nullable Object */;
4126 short int var19 /* : Bool */;
4127 val* var20 /* : nullable MType */;
4128 val* var22 /* : nullable MType */;
4129 static val* varonce;
4130 val* var23 /* : String */;
4131 char* var24 /* : NativeString */;
4132 long var25 /* : Int */;
4133 val* var26 /* : FlatString */;
4134 var_v = p0;
4135 {
4136 var1 = parser_nodes__AAsCastExpr__n_expr(self);
4137 }
4138 var2 = NULL;
4139 {
4140 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
4141 }
4142 var_i = var3;
4143 {
4144 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
4145 var6 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
4146 if (unlikely(var6 == NULL)) {
4147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4148 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 984);
4149 show_backtrace(1);
4150 }
4151 var4 = var6;
4152 RET_LABEL5:(void)0;
4153 }
4154 }
4155 {
4156 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var4) on <var4:AbstractCompiler> */
4157 var9 = var4->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var4:AbstractCompiler> */
4158 if (unlikely(var9 == NULL)) {
4159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4160 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
4161 show_backtrace(1);
4162 }
4163 var7 = var9;
4164 RET_LABEL8:(void)0;
4165 }
4166 }
4167 {
4168 { /* Inline modelbuilder#ModelBuilder#toolcontext (var7) on <var7:ModelBuilder> */
4169 var12 = var7->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var7:ModelBuilder> */
4170 if (unlikely(var12 == NULL)) {
4171 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4172 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4173 show_backtrace(1);
4174 }
4175 var10 = var12;
4176 RET_LABEL11:(void)0;
4177 }
4178 }
4179 {
4180 { /* Inline abstract_compiler#ToolContext#opt_no_check_assert (var10) on <var10:ToolContext> */
4181 var15 = var10->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <var10:ToolContext> */
4182 if (unlikely(var15 == NULL)) {
4183 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
4184 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 50);
4185 show_backtrace(1);
4186 }
4187 var13 = var15;
4188 RET_LABEL14:(void)0;
4189 }
4190 }
4191 {
4192 { /* Inline opts#Option#value (var13) on <var13:OptionBool> */
4193 var18 = var13->attrs[COLOR_opts__Option___value].val; /* _value on <var13:OptionBool> */
4194 var16 = var18;
4195 RET_LABEL17:(void)0;
4196 }
4197 }
4198 var19 = ((struct instance_kernel__Bool*)var16)->value; /* autounbox from nullable Object to Bool */;
4199 if (var19){
4200 var = var_i;
4201 goto RET_LABEL;
4202 } else {
4203 }
4204 {
4205 { /* Inline typing#AExpr#mtype (self) on <self:AAsCastExpr> */
4206 var22 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AAsCastExpr> */
4207 var20 = var22;
4208 RET_LABEL21:(void)0;
4209 }
4210 }
4211 if (unlikely(var20 == NULL)) {
4212 PRINT_ERROR("Runtime error: %s", "Cast failed");
4213 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2671);
4214 show_backtrace(1);
4215 }
4216 if (varonce) {
4217 var23 = varonce;
4218 } else {
4219 var24 = "as";
4220 var25 = 2;
4221 var26 = string__NativeString__to_s_with_length(var24, var25);
4222 var23 = var26;
4223 varonce = var23;
4224 }
4225 {
4226 abstract_compiler__AbstractCompilerVisitor__add_cast(var_v, var_i, var20, var23); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_cast on <var_v:AbstractCompilerVisitor>*/
4227 }
4228 var = var_i;
4229 goto RET_LABEL;
4230 RET_LABEL:;
4231 return var;
4232 }
4233 /* method abstract_compiler#AAsCastExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4234 val* VIRTUAL_abstract_compiler__AAsCastExpr__expr(val* self, val* p0) {
4235 val* var /* : nullable RuntimeVariable */;
4236 val* var1 /* : nullable RuntimeVariable */;
4237 var1 = abstract_compiler__AAsCastExpr__expr(self, p0);
4238 var = var1;
4239 RET_LABEL:;
4240 return var;
4241 }
4242 /* method abstract_compiler#AAsNotnullExpr#expr for (self: AAsNotnullExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4243 val* abstract_compiler__AAsNotnullExpr__expr(val* self, val* p0) {
4244 val* var /* : nullable RuntimeVariable */;
4245 val* var_v /* var v: AbstractCompilerVisitor */;
4246 val* var1 /* : AExpr */;
4247 val* var2 /* : null */;
4248 val* var3 /* : RuntimeVariable */;
4249 val* var_i /* var i: RuntimeVariable */;
4250 val* var4 /* : AbstractCompiler */;
4251 val* var6 /* : AbstractCompiler */;
4252 val* var7 /* : ModelBuilder */;
4253 val* var9 /* : ModelBuilder */;
4254 val* var10 /* : ToolContext */;
4255 val* var12 /* : ToolContext */;
4256 val* var13 /* : OptionBool */;
4257 val* var15 /* : OptionBool */;
4258 val* var16 /* : nullable Object */;
4259 val* var18 /* : nullable Object */;
4260 short int var19 /* : Bool */;
4261 val* var20 /* : MType */;
4262 val* var22 /* : MType */;
4263 val* var23 /* : String */;
4264 static val* varonce;
4265 val* var24 /* : String */;
4266 char* var25 /* : NativeString */;
4267 long var26 /* : Int */;
4268 val* var27 /* : FlatString */;
4269 short int var28 /* : Bool */;
4270 short int var29 /* : Bool */;
4271 val* var_other /* var other: nullable Object */;
4272 short int var31 /* : Bool */;
4273 short int var32 /* : Bool */;
4274 short int var33 /* : Bool */;
4275 static val* varonce34;
4276 val* var35 /* : String */;
4277 char* var36 /* : NativeString */;
4278 long var37 /* : Int */;
4279 val* var38 /* : FlatString */;
4280 static val* varonce39;
4281 val* var40 /* : String */;
4282 char* var41 /* : NativeString */;
4283 long var42 /* : Int */;
4284 val* var43 /* : FlatString */;
4285 val* var44 /* : Array[Object] */;
4286 long var45 /* : Int */;
4287 val* var46 /* : NativeArray[Object] */;
4288 val* var47 /* : String */;
4289 static val* varonce48;
4290 val* var49 /* : String */;
4291 char* var50 /* : NativeString */;
4292 long var51 /* : Int */;
4293 val* var52 /* : FlatString */;
4294 static val* varonce53;
4295 val* var54 /* : String */;
4296 char* var55 /* : NativeString */;
4297 long var56 /* : Int */;
4298 val* var57 /* : FlatString */;
4299 var_v = p0;
4300 {
4301 var1 = parser_nodes__AAsNotnullExpr__n_expr(self);
4302 }
4303 var2 = NULL;
4304 {
4305 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
4306 }
4307 var_i = var3;
4308 {
4309 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
4310 var6 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
4311 if (unlikely(var6 == NULL)) {
4312 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4313 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 984);
4314 show_backtrace(1);
4315 }
4316 var4 = var6;
4317 RET_LABEL5:(void)0;
4318 }
4319 }
4320 {
4321 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var4) on <var4:AbstractCompiler> */
4322 var9 = var4->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var4:AbstractCompiler> */
4323 if (unlikely(var9 == NULL)) {
4324 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4325 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
4326 show_backtrace(1);
4327 }
4328 var7 = var9;
4329 RET_LABEL8:(void)0;
4330 }
4331 }
4332 {
4333 { /* Inline modelbuilder#ModelBuilder#toolcontext (var7) on <var7:ModelBuilder> */
4334 var12 = var7->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var7:ModelBuilder> */
4335 if (unlikely(var12 == NULL)) {
4336 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4337 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4338 show_backtrace(1);
4339 }
4340 var10 = var12;
4341 RET_LABEL11:(void)0;
4342 }
4343 }
4344 {
4345 { /* Inline abstract_compiler#ToolContext#opt_no_check_assert (var10) on <var10:ToolContext> */
4346 var15 = var10->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <var10:ToolContext> */
4347 if (unlikely(var15 == NULL)) {
4348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
4349 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 50);
4350 show_backtrace(1);
4351 }
4352 var13 = var15;
4353 RET_LABEL14:(void)0;
4354 }
4355 }
4356 {
4357 { /* Inline opts#Option#value (var13) on <var13:OptionBool> */
4358 var18 = var13->attrs[COLOR_opts__Option___value].val; /* _value on <var13:OptionBool> */
4359 var16 = var18;
4360 RET_LABEL17:(void)0;
4361 }
4362 }
4363 var19 = ((struct instance_kernel__Bool*)var16)->value; /* autounbox from nullable Object to Bool */;
4364 if (var19){
4365 var = var_i;
4366 goto RET_LABEL;
4367 } else {
4368 }
4369 {
4370 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_i) on <var_i:RuntimeVariable> */
4371 var22 = var_i->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_i:RuntimeVariable> */
4372 if (unlikely(var22 == NULL)) {
4373 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4374 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1484);
4375 show_backtrace(1);
4376 }
4377 var20 = var22;
4378 RET_LABEL21:(void)0;
4379 }
4380 }
4381 {
4382 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_compiler__MType__ctype]))(var20) /* ctype on <var20:MType>*/;
4383 }
4384 if (varonce) {
4385 var24 = varonce;
4386 } else {
4387 var25 = "val*";
4388 var26 = 4;
4389 var27 = string__NativeString__to_s_with_length(var25, var26);
4390 var24 = var27;
4391 varonce = var24;
4392 }
4393 {
4394 { /* Inline kernel#Object#!= (var23,var24) on <var23:String> */
4395 var_other = var24;
4396 {
4397 var32 = ((short int (*)(val*, val*))(var23->class->vft[COLOR_kernel__Object___61d_61d]))(var23, var_other) /* == on <var23:String>*/;
4398 var31 = var32;
4399 }
4400 var33 = !var31;
4401 var29 = var33;
4402 goto RET_LABEL30;
4403 RET_LABEL30:(void)0;
4404 }
4405 var28 = var29;
4406 }
4407 if (var28){
4408 var = var_i;
4409 goto RET_LABEL;
4410 } else {
4411 }
4412 if (varonce34) {
4413 var35 = varonce34;
4414 } else {
4415 var36 = "if (unlikely(";
4416 var37 = 13;
4417 var38 = string__NativeString__to_s_with_length(var36, var37);
4418 var35 = var38;
4419 varonce34 = var35;
4420 }
4421 if (varonce39) {
4422 var40 = varonce39;
4423 } else {
4424 var41 = " == NULL)) {";
4425 var42 = 12;
4426 var43 = string__NativeString__to_s_with_length(var41, var42);
4427 var40 = var43;
4428 varonce39 = var40;
4429 }
4430 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
4431 { /* var44 = array_instance Array[Object] */
4432 var45 = 3;
4433 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
4434 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var35;
4435 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_i;
4436 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
4437 {
4438 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
4439 }
4440 }
4441 {
4442 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
4443 }
4444 {
4445 abstract_compiler__AbstractCompilerVisitor__add(var_v, var47); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4446 }
4447 if (varonce48) {
4448 var49 = varonce48;
4449 } else {
4450 var50 = "Cast failed";
4451 var51 = 11;
4452 var52 = string__NativeString__to_s_with_length(var50, var51);
4453 var49 = var52;
4454 varonce48 = var49;
4455 }
4456 {
4457 abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:AbstractCompilerVisitor>*/
4458 }
4459 if (varonce53) {
4460 var54 = varonce53;
4461 } else {
4462 var55 = "}";
4463 var56 = 1;
4464 var57 = string__NativeString__to_s_with_length(var55, var56);
4465 var54 = var57;
4466 varonce53 = var54;
4467 }
4468 {
4469 abstract_compiler__AbstractCompilerVisitor__add(var_v, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4470 }
4471 var = var_i;
4472 goto RET_LABEL;
4473 RET_LABEL:;
4474 return var;
4475 }
4476 /* method abstract_compiler#AAsNotnullExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4477 val* VIRTUAL_abstract_compiler__AAsNotnullExpr__expr(val* self, val* p0) {
4478 val* var /* : nullable RuntimeVariable */;
4479 val* var1 /* : nullable RuntimeVariable */;
4480 var1 = abstract_compiler__AAsNotnullExpr__expr(self, p0);
4481 var = var1;
4482 RET_LABEL:;
4483 return var;
4484 }
4485 /* method abstract_compiler#AParExpr#expr for (self: AParExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4486 val* abstract_compiler__AParExpr__expr(val* self, val* p0) {
4487 val* var /* : nullable RuntimeVariable */;
4488 val* var_v /* var v: AbstractCompilerVisitor */;
4489 val* var1 /* : AExpr */;
4490 val* var2 /* : null */;
4491 val* var3 /* : RuntimeVariable */;
4492 var_v = p0;
4493 {
4494 var1 = parser_nodes__AProxyExpr__n_expr(self);
4495 }
4496 var2 = NULL;
4497 {
4498 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
4499 }
4500 var = var3;
4501 goto RET_LABEL;
4502 RET_LABEL:;
4503 return var;
4504 }
4505 /* method abstract_compiler#AParExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4506 val* VIRTUAL_abstract_compiler__AParExpr__expr(val* self, val* p0) {
4507 val* var /* : nullable RuntimeVariable */;
4508 val* var1 /* : nullable RuntimeVariable */;
4509 var1 = abstract_compiler__AParExpr__expr(self, p0);
4510 var = var1;
4511 RET_LABEL:;
4512 return var;
4513 }
4514 /* method abstract_compiler#AOnceExpr#expr for (self: AOnceExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4515 val* abstract_compiler__AOnceExpr__expr(val* self, val* p0) {
4516 val* var /* : nullable RuntimeVariable */;
4517 val* var_v /* var v: AbstractCompilerVisitor */;
4518 val* var1 /* : nullable MType */;
4519 val* var3 /* : nullable MType */;
4520 val* var_mtype /* var mtype: MType */;
4521 static val* varonce;
4522 val* var4 /* : String */;
4523 char* var5 /* : NativeString */;
4524 long var6 /* : Int */;
4525 val* var7 /* : FlatString */;
4526 val* var8 /* : String */;
4527 val* var_name /* var name: String */;
4528 static val* varonce9;
4529 val* var10 /* : String */;
4530 char* var11 /* : NativeString */;
4531 long var12 /* : Int */;
4532 val* var13 /* : FlatString */;
4533 val* var14 /* : String */;
4534 val* var15 /* : String */;
4535 val* var_guard /* var guard: String */;
4536 static val* varonce16;
4537 val* var17 /* : String */;
4538 char* var18 /* : NativeString */;
4539 long var19 /* : Int */;
4540 val* var20 /* : FlatString */;
4541 val* var21 /* : String */;
4542 static val* varonce22;
4543 val* var23 /* : String */;
4544 char* var24 /* : NativeString */;
4545 long var25 /* : Int */;
4546 val* var26 /* : FlatString */;
4547 static val* varonce27;
4548 val* var28 /* : String */;
4549 char* var29 /* : NativeString */;
4550 long var30 /* : Int */;
4551 val* var31 /* : FlatString */;
4552 val* var32 /* : Array[Object] */;
4553 long var33 /* : Int */;
4554 val* var34 /* : NativeArray[Object] */;
4555 val* var35 /* : String */;
4556 static val* varonce36;
4557 val* var37 /* : String */;
4558 char* var38 /* : NativeString */;
4559 long var39 /* : Int */;
4560 val* var40 /* : FlatString */;
4561 static val* varonce41;
4562 val* var42 /* : String */;
4563 char* var43 /* : NativeString */;
4564 long var44 /* : Int */;
4565 val* var45 /* : FlatString */;
4566 val* var46 /* : Array[Object] */;
4567 long var47 /* : Int */;
4568 val* var48 /* : NativeArray[Object] */;
4569 val* var49 /* : String */;
4570 val* var50 /* : RuntimeVariable */;
4571 val* var_res /* var res: RuntimeVariable */;
4572 static val* varonce51;
4573 val* var52 /* : String */;
4574 char* var53 /* : NativeString */;
4575 long var54 /* : Int */;
4576 val* var55 /* : FlatString */;
4577 static val* varonce56;
4578 val* var57 /* : String */;
4579 char* var58 /* : NativeString */;
4580 long var59 /* : Int */;
4581 val* var60 /* : FlatString */;
4582 val* var61 /* : Array[Object] */;
4583 long var62 /* : Int */;
4584 val* var63 /* : NativeArray[Object] */;
4585 val* var64 /* : String */;
4586 static val* varonce65;
4587 val* var66 /* : String */;
4588 char* var67 /* : NativeString */;
4589 long var68 /* : Int */;
4590 val* var69 /* : FlatString */;
4591 static val* varonce70;
4592 val* var71 /* : String */;
4593 char* var72 /* : NativeString */;
4594 long var73 /* : Int */;
4595 val* var74 /* : FlatString */;
4596 val* var75 /* : Array[Object] */;
4597 long var76 /* : Int */;
4598 val* var77 /* : NativeArray[Object] */;
4599 val* var78 /* : String */;
4600 static val* varonce79;
4601 val* var80 /* : String */;
4602 char* var81 /* : NativeString */;
4603 long var82 /* : Int */;
4604 val* var83 /* : FlatString */;
4605 val* var84 /* : AExpr */;
4606 val* var85 /* : RuntimeVariable */;
4607 val* var_i /* var i: RuntimeVariable */;
4608 static val* varonce86;
4609 val* var87 /* : String */;
4610 char* var88 /* : NativeString */;
4611 long var89 /* : Int */;
4612 val* var90 /* : FlatString */;
4613 static val* varonce91;
4614 val* var92 /* : String */;
4615 char* var93 /* : NativeString */;
4616 long var94 /* : Int */;
4617 val* var95 /* : FlatString */;
4618 val* var96 /* : Array[Object] */;
4619 long var97 /* : Int */;
4620 val* var98 /* : NativeArray[Object] */;
4621 val* var99 /* : String */;
4622 static val* varonce100;
4623 val* var101 /* : String */;
4624 char* var102 /* : NativeString */;
4625 long var103 /* : Int */;
4626 val* var104 /* : FlatString */;
4627 static val* varonce105;
4628 val* var106 /* : String */;
4629 char* var107 /* : NativeString */;
4630 long var108 /* : Int */;
4631 val* var109 /* : FlatString */;
4632 val* var110 /* : Array[Object] */;
4633 long var111 /* : Int */;
4634 val* var112 /* : NativeArray[Object] */;
4635 val* var113 /* : String */;
4636 static val* varonce114;
4637 val* var115 /* : String */;
4638 char* var116 /* : NativeString */;
4639 long var117 /* : Int */;
4640 val* var118 /* : FlatString */;
4641 val* var119 /* : Array[Object] */;
4642 long var120 /* : Int */;
4643 val* var121 /* : NativeArray[Object] */;
4644 val* var122 /* : String */;
4645 static val* varonce123;
4646 val* var124 /* : String */;
4647 char* var125 /* : NativeString */;
4648 long var126 /* : Int */;
4649 val* var127 /* : FlatString */;
4650 var_v = p0;
4651 {
4652 { /* Inline typing#AExpr#mtype (self) on <self:AOnceExpr> */
4653 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AOnceExpr> */
4654 var1 = var3;
4655 RET_LABEL2:(void)0;
4656 }
4657 }
4658 if (unlikely(var1 == NULL)) {
4659 PRINT_ERROR("Runtime error: %s", "Cast failed");
4660 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2698);
4661 show_backtrace(1);
4662 }
4663 var_mtype = var1;
4664 if (varonce) {
4665 var4 = varonce;
4666 } else {
4667 var5 = "varonce";
4668 var6 = 7;
4669 var7 = string__NativeString__to_s_with_length(var5, var6);
4670 var4 = var7;
4671 varonce = var4;
4672 }
4673 {
4674 var8 = abstract_compiler__AbstractCompilerVisitor__get_name(var_v, var4);
4675 }
4676 var_name = var8;
4677 if (varonce9) {
4678 var10 = varonce9;
4679 } else {
4680 var11 = "_guard";
4681 var12 = 6;
4682 var13 = string__NativeString__to_s_with_length(var11, var12);
4683 var10 = var13;
4684 varonce9 = var10;
4685 }
4686 {
4687 var14 = string__FlatString___43d(var_name, var10);
4688 }
4689 {
4690 var15 = abstract_compiler__AbstractCompilerVisitor__get_name(var_v, var14);
4691 }
4692 var_guard = var15;
4693 if (varonce16) {
4694 var17 = varonce16;
4695 } else {
4696 var18 = "static ";
4697 var19 = 7;
4698 var20 = string__NativeString__to_s_with_length(var18, var19);
4699 var17 = var20;
4700 varonce16 = var17;
4701 }
4702 {
4703 var21 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
4704 }
4705 if (varonce22) {
4706 var23 = varonce22;
4707 } else {
4708 var24 = " ";
4709 var25 = 1;
4710 var26 = string__NativeString__to_s_with_length(var24, var25);
4711 var23 = var26;
4712 varonce22 = var23;
4713 }
4714 if (varonce27) {
4715 var28 = varonce27;
4716 } else {
4717 var29 = ";";
4718 var30 = 1;
4719 var31 = string__NativeString__to_s_with_length(var29, var30);
4720 var28 = var31;
4721 varonce27 = var28;
4722 }
4723 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
4724 { /* var32 = array_instance Array[Object] */
4725 var33 = 5;
4726 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
4727 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var17;
4728 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var21;
4729 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
4730 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_name;
4731 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
4732 {
4733 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
4734 }
4735 }
4736 {
4737 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
4738 }
4739 {
4740 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var35); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
4741 }
4742 if (varonce36) {
4743 var37 = varonce36;
4744 } else {
4745 var38 = "static int ";
4746 var39 = 11;
4747 var40 = string__NativeString__to_s_with_length(var38, var39);
4748 var37 = var40;
4749 varonce36 = var37;
4750 }
4751 if (varonce41) {
4752 var42 = varonce41;
4753 } else {
4754 var43 = ";";
4755 var44 = 1;
4756 var45 = string__NativeString__to_s_with_length(var43, var44);
4757 var42 = var45;
4758 varonce41 = var42;
4759 }
4760 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
4761 { /* var46 = array_instance Array[Object] */
4762 var47 = 3;
4763 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
4764 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var37;
4765 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var_guard;
4766 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
4767 {
4768 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
4769 }
4770 }
4771 {
4772 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
4773 }
4774 {
4775 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
4776 }
4777 {
4778 var50 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var_mtype);
4779 }
4780 var_res = var50;
4781 if (varonce51) {
4782 var52 = varonce51;
4783 } else {
4784 var53 = "if (";
4785 var54 = 4;
4786 var55 = string__NativeString__to_s_with_length(var53, var54);
4787 var52 = var55;
4788 varonce51 = var52;
4789 }
4790 if (varonce56) {
4791 var57 = varonce56;
4792 } else {
4793 var58 = ") {";
4794 var59 = 3;
4795 var60 = string__NativeString__to_s_with_length(var58, var59);
4796 var57 = var60;
4797 varonce56 = var57;
4798 }
4799 var61 = NEW_array__Array(&type_array__Arraykernel__Object);
4800 { /* var61 = array_instance Array[Object] */
4801 var62 = 3;
4802 var63 = NEW_array__NativeArray(var62, &type_array__NativeArraykernel__Object);
4803 ((struct instance_array__NativeArray*)var63)->values[0] = (val*) var52;
4804 ((struct instance_array__NativeArray*)var63)->values[1] = (val*) var_guard;
4805 ((struct instance_array__NativeArray*)var63)->values[2] = (val*) var57;
4806 {
4807 ((void (*)(val*, val*, long))(var61->class->vft[COLOR_array__Array__with_native]))(var61, var63, var62) /* with_native on <var61:Array[Object]>*/;
4808 }
4809 }
4810 {
4811 var64 = ((val* (*)(val*))(var61->class->vft[COLOR_string__Object__to_s]))(var61) /* to_s on <var61:Array[Object]>*/;
4812 }
4813 {
4814 abstract_compiler__AbstractCompilerVisitor__add(var_v, var64); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4815 }
4816 if (varonce65) {
4817 var66 = varonce65;
4818 } else {
4819 var67 = " = ";
4820 var68 = 3;
4821 var69 = string__NativeString__to_s_with_length(var67, var68);
4822 var66 = var69;
4823 varonce65 = var66;
4824 }
4825 if (varonce70) {
4826 var71 = varonce70;
4827 } else {
4828 var72 = ";";
4829 var73 = 1;
4830 var74 = string__NativeString__to_s_with_length(var72, var73);
4831 var71 = var74;
4832 varonce70 = var71;
4833 }
4834 var75 = NEW_array__Array(&type_array__Arraykernel__Object);
4835 { /* var75 = array_instance Array[Object] */
4836 var76 = 4;
4837 var77 = NEW_array__NativeArray(var76, &type_array__NativeArraykernel__Object);
4838 ((struct instance_array__NativeArray*)var77)->values[0] = (val*) var_res;
4839 ((struct instance_array__NativeArray*)var77)->values[1] = (val*) var66;
4840 ((struct instance_array__NativeArray*)var77)->values[2] = (val*) var_name;
4841 ((struct instance_array__NativeArray*)var77)->values[3] = (val*) var71;
4842 {
4843 ((void (*)(val*, val*, long))(var75->class->vft[COLOR_array__Array__with_native]))(var75, var77, var76) /* with_native on <var75:Array[Object]>*/;
4844 }
4845 }
4846 {
4847 var78 = ((val* (*)(val*))(var75->class->vft[COLOR_string__Object__to_s]))(var75) /* to_s on <var75:Array[Object]>*/;
4848 }
4849 {
4850 abstract_compiler__AbstractCompilerVisitor__add(var_v, var78); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4851 }
4852 if (varonce79) {
4853 var80 = varonce79;
4854 } else {
4855 var81 = "} else {";
4856 var82 = 8;
4857 var83 = string__NativeString__to_s_with_length(var81, var82);
4858 var80 = var83;
4859 varonce79 = var80;
4860 }
4861 {
4862 abstract_compiler__AbstractCompilerVisitor__add(var_v, var80); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4863 }
4864 {
4865 var84 = parser_nodes__AProxyExpr__n_expr(self);
4866 }
4867 {
4868 var85 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var84, var_mtype);
4869 }
4870 var_i = var85;
4871 if (varonce86) {
4872 var87 = varonce86;
4873 } else {
4874 var88 = " = ";
4875 var89 = 3;
4876 var90 = string__NativeString__to_s_with_length(var88, var89);
4877 var87 = var90;
4878 varonce86 = var87;
4879 }
4880 if (varonce91) {
4881 var92 = varonce91;
4882 } else {
4883 var93 = ";";
4884 var94 = 1;
4885 var95 = string__NativeString__to_s_with_length(var93, var94);
4886 var92 = var95;
4887 varonce91 = var92;
4888 }
4889 var96 = NEW_array__Array(&type_array__Arraykernel__Object);
4890 { /* var96 = array_instance Array[Object] */
4891 var97 = 4;
4892 var98 = NEW_array__NativeArray(var97, &type_array__NativeArraykernel__Object);
4893 ((struct instance_array__NativeArray*)var98)->values[0] = (val*) var_res;
4894 ((struct instance_array__NativeArray*)var98)->values[1] = (val*) var87;
4895 ((struct instance_array__NativeArray*)var98)->values[2] = (val*) var_i;
4896 ((struct instance_array__NativeArray*)var98)->values[3] = (val*) var92;
4897 {
4898 ((void (*)(val*, val*, long))(var96->class->vft[COLOR_array__Array__with_native]))(var96, var98, var97) /* with_native on <var96:Array[Object]>*/;
4899 }
4900 }
4901 {
4902 var99 = ((val* (*)(val*))(var96->class->vft[COLOR_string__Object__to_s]))(var96) /* to_s on <var96:Array[Object]>*/;
4903 }
4904 {
4905 abstract_compiler__AbstractCompilerVisitor__add(var_v, var99); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4906 }
4907 if (varonce100) {
4908 var101 = varonce100;
4909 } else {
4910 var102 = " = ";
4911 var103 = 3;
4912 var104 = string__NativeString__to_s_with_length(var102, var103);
4913 var101 = var104;
4914 varonce100 = var101;
4915 }
4916 if (varonce105) {
4917 var106 = varonce105;
4918 } else {
4919 var107 = ";";
4920 var108 = 1;
4921 var109 = string__NativeString__to_s_with_length(var107, var108);
4922 var106 = var109;
4923 varonce105 = var106;
4924 }
4925 var110 = NEW_array__Array(&type_array__Arraykernel__Object);
4926 { /* var110 = array_instance Array[Object] */
4927 var111 = 4;
4928 var112 = NEW_array__NativeArray(var111, &type_array__NativeArraykernel__Object);
4929 ((struct instance_array__NativeArray*)var112)->values[0] = (val*) var_name;
4930 ((struct instance_array__NativeArray*)var112)->values[1] = (val*) var101;
4931 ((struct instance_array__NativeArray*)var112)->values[2] = (val*) var_res;
4932 ((struct instance_array__NativeArray*)var112)->values[3] = (val*) var106;
4933 {
4934 ((void (*)(val*, val*, long))(var110->class->vft[COLOR_array__Array__with_native]))(var110, var112, var111) /* with_native on <var110:Array[Object]>*/;
4935 }
4936 }
4937 {
4938 var113 = ((val* (*)(val*))(var110->class->vft[COLOR_string__Object__to_s]))(var110) /* to_s on <var110:Array[Object]>*/;
4939 }
4940 {
4941 abstract_compiler__AbstractCompilerVisitor__add(var_v, var113); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4942 }
4943 if (varonce114) {
4944 var115 = varonce114;
4945 } else {
4946 var116 = " = 1;";
4947 var117 = 5;
4948 var118 = string__NativeString__to_s_with_length(var116, var117);
4949 var115 = var118;
4950 varonce114 = var115;
4951 }
4952 var119 = NEW_array__Array(&type_array__Arraykernel__Object);
4953 { /* var119 = array_instance Array[Object] */
4954 var120 = 2;
4955 var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object);
4956 ((struct instance_array__NativeArray*)var121)->values[0] = (val*) var_guard;
4957 ((struct instance_array__NativeArray*)var121)->values[1] = (val*) var115;
4958 {
4959 ((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on <var119:Array[Object]>*/;
4960 }
4961 }
4962 {
4963 var122 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
4964 }
4965 {
4966 abstract_compiler__AbstractCompilerVisitor__add(var_v, var122); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4967 }
4968 if (varonce123) {
4969 var124 = varonce123;
4970 } else {
4971 var125 = "}";
4972 var126 = 1;
4973 var127 = string__NativeString__to_s_with_length(var125, var126);
4974 var124 = var127;
4975 varonce123 = var124;
4976 }
4977 {
4978 abstract_compiler__AbstractCompilerVisitor__add(var_v, var124); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
4979 }
4980 var = var_res;
4981 goto RET_LABEL;
4982 RET_LABEL:;
4983 return var;
4984 }
4985 /* method abstract_compiler#AOnceExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4986 val* VIRTUAL_abstract_compiler__AOnceExpr__expr(val* self, val* p0) {
4987 val* var /* : nullable RuntimeVariable */;
4988 val* var1 /* : nullable RuntimeVariable */;
4989 var1 = abstract_compiler__AOnceExpr__expr(self, p0);
4990 var = var1;
4991 RET_LABEL:;
4992 return var;
4993 }
4994 /* method abstract_compiler#ASendExpr#expr for (self: ASendExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4995 val* abstract_compiler__ASendExpr__expr(val* self, val* p0) {
4996 val* var /* : nullable RuntimeVariable */;
4997 val* var_v /* var v: AbstractCompilerVisitor */;
4998 val* var1 /* : AExpr */;
4999 val* var2 /* : null */;
5000 val* var3 /* : RuntimeVariable */;
5001 val* var_recv /* var recv: RuntimeVariable */;
5002 val* var4 /* : Array[RuntimeVariable] */;
5003 long var5 /* : Int */;
5004 val* var_ /* var : Array[RuntimeVariable] */;
5005 val* var_args /* var args: Array[RuntimeVariable] */;
5006 val* var6 /* : Array[AExpr] */;
5007 val* var7 /* : ArrayIterator[nullable Object] */;
5008 short int var8 /* : Bool */;
5009 val* var9 /* : nullable Object */;
5010 val* var_a /* var a: AExpr */;
5011 val* var10 /* : null */;
5012 val* var11 /* : RuntimeVariable */;
5013 val* var12 /* : nullable CallSite */;
5014 val* var14 /* : nullable CallSite */;
5015 val* var15 /* : nullable RuntimeVariable */;
5016 var_v = p0;
5017 {
5018 var1 = parser_nodes__ASendExpr__n_expr(self);
5019 }
5020 var2 = NULL;
5021 {
5022 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
5023 }
5024 var_recv = var3;
5025 var4 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5026 var5 = 1;
5027 {
5028 array__Array__with_capacity(var4, var5); /* Direct call array#Array#with_capacity on <var4:Array[RuntimeVariable]>*/
5029 }
5030 var_ = var4;
5031 {
5032 array__AbstractArray__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
5033 }
5034 var_args = var_;
5035 {
5036 var6 = typing__ASendExpr__raw_arguments(self);
5037 }
5038 {
5039 var7 = array__AbstractArrayRead__iterator(var6);
5040 }
5041 for(;;) {
5042 {
5043 var8 = array__ArrayIterator__is_ok(var7);
5044 }
5045 if(!var8) break;
5046 {
5047 var9 = array__ArrayIterator__item(var7);
5048 }
5049 var_a = var9;
5050 var10 = NULL;
5051 {
5052 var11 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var_a, var10);
5053 }
5054 {
5055 array__Array__add(var_args, var11); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
5056 }
5057 CONTINUE_label: (void)0;
5058 {
5059 array__ArrayIterator__next(var7); /* Direct call array#ArrayIterator#next on <var7:ArrayIterator[nullable Object]>*/
5060 }
5061 }
5062 BREAK_label: (void)0;
5063 {
5064 { /* Inline typing#ASendExpr#callsite (self) on <self:ASendExpr> */
5065 var14 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on <self:ASendExpr> */
5066 var12 = var14;
5067 RET_LABEL13:(void)0;
5068 }
5069 }
5070 if (unlikely(var12 == NULL)) {
5071 PRINT_ERROR("Runtime error: %s", "Cast failed");
5072 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2724);
5073 show_backtrace(1);
5074 }
5075 {
5076 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var12, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
5077 }
5078 var = var15;
5079 goto RET_LABEL;
5080 RET_LABEL:;
5081 return var;
5082 }
5083 /* method abstract_compiler#ASendExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
5084 val* VIRTUAL_abstract_compiler__ASendExpr__expr(val* self, val* p0) {
5085 val* var /* : nullable RuntimeVariable */;
5086 val* var1 /* : nullable RuntimeVariable */;
5087 var1 = abstract_compiler__ASendExpr__expr(self, p0);
5088 var = var1;
5089 RET_LABEL:;
5090 return var;
5091 }
5092 /* method abstract_compiler#ASendReassignFormExpr#stmt for (self: ASendReassignFormExpr, AbstractCompilerVisitor) */
5093 void abstract_compiler__ASendReassignFormExpr__stmt(val* self, val* p0) {
5094 val* var_v /* var v: AbstractCompilerVisitor */;
5095 val* var /* : AExpr */;
5096 val* var1 /* : null */;
5097 val* var2 /* : RuntimeVariable */;
5098 val* var_recv /* var recv: RuntimeVariable */;
5099 val* var3 /* : Array[RuntimeVariable] */;
5100 long var4 /* : Int */;
5101 val* var_ /* var : Array[RuntimeVariable] */;
5102 val* var_args /* var args: Array[RuntimeVariable] */;
5103 val* var5 /* : Array[AExpr] */;
5104 val* var6 /* : ArrayIterator[nullable Object] */;
5105 short int var7 /* : Bool */;
5106 val* var8 /* : nullable Object */;
5107 val* var_a /* var a: AExpr */;
5108 val* var9 /* : null */;
5109 val* var10 /* : RuntimeVariable */;
5110 val* var11 /* : AExpr */;
5111 val* var12 /* : null */;
5112 val* var13 /* : RuntimeVariable */;
5113 val* var_value /* var value: RuntimeVariable */;
5114 val* var14 /* : nullable CallSite */;
5115 val* var16 /* : nullable CallSite */;
5116 val* var17 /* : nullable RuntimeVariable */;
5117 val* var_left /* var left: nullable RuntimeVariable */;
5118 val* var18 /* : null */;
5119 short int var19 /* : Bool */;
5120 short int var20 /* : Bool */;
5121 val* var_other /* var other: nullable Object */;
5122 short int var22 /* : Bool */;
5123 short int var23 /* : Bool */;
5124 short int var24 /* : Bool */;
5125 val* var25 /* : nullable CallSite */;
5126 val* var27 /* : nullable CallSite */;
5127 val* var28 /* : Array[RuntimeVariable] */;
5128 long var29 /* : Int */;
5129 val* var_30 /* var : Array[RuntimeVariable] */;
5130 val* var31 /* : nullable RuntimeVariable */;
5131 val* var_res /* var res: nullable RuntimeVariable */;
5132 val* var32 /* : null */;
5133 short int var33 /* : Bool */;
5134 short int var34 /* : Bool */;
5135 short int var36 /* : Bool */;
5136 short int var37 /* : Bool */;
5137 short int var38 /* : Bool */;
5138 val* var39 /* : nullable CallSite */;
5139 val* var41 /* : nullable CallSite */;
5140 val* var42 /* : nullable RuntimeVariable */;
5141 var_v = p0;
5142 {
5143 var = parser_nodes__ASendExpr__n_expr(self);
5144 }
5145 var1 = NULL;
5146 {
5147 var2 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var, var1);
5148 }
5149 var_recv = var2;
5150 var3 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5151 var4 = 1;
5152 {
5153 array__Array__with_capacity(var3, var4); /* Direct call array#Array#with_capacity on <var3:Array[RuntimeVariable]>*/
5154 }
5155 var_ = var3;
5156 {
5157 array__AbstractArray__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
5158 }
5159 var_args = var_;
5160 {
5161 var5 = typing__ASendExpr__raw_arguments(self);
5162 }
5163 {
5164 var6 = array__AbstractArrayRead__iterator(var5);
5165 }
5166 for(;;) {
5167 {
5168 var7 = array__ArrayIterator__is_ok(var6);
5169 }
5170 if(!var7) break;
5171 {
5172 var8 = array__ArrayIterator__item(var6);
5173 }
5174 var_a = var8;
5175 var9 = NULL;
5176 {
5177 var10 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var_a, var9);
5178 }
5179 {
5180 array__Array__add(var_args, var10); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
5181 }
5182 CONTINUE_label: (void)0;
5183 {
5184 array__ArrayIterator__next(var6); /* Direct call array#ArrayIterator#next on <var6:ArrayIterator[nullable Object]>*/
5185 }
5186 }
5187 BREAK_label: (void)0;
5188 {
5189 var11 = parser_nodes__AReassignFormExpr__n_value(self);
5190 }
5191 var12 = NULL;
5192 {
5193 var13 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var11, var12);
5194 }
5195 var_value = var13;
5196 {
5197 { /* Inline typing#ASendExpr#callsite (self) on <self:ASendReassignFormExpr> */
5198 var16 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on <self:ASendReassignFormExpr> */
5199 var14 = var16;
5200 RET_LABEL15:(void)0;
5201 }
5202 }
5203 if (unlikely(var14 == NULL)) {
5204 PRINT_ERROR("Runtime error: %s", "Cast failed");
5205 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2738);
5206 show_backtrace(1);
5207 }
5208 {
5209 var17 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var14, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
5210 }
5211 var_left = var17;
5212 var18 = NULL;
5213 if (var_left == NULL) {
5214 var19 = 0; /* is null */
5215 } else {
5216 var19 = 1; /* arg is null and recv is not */
5217 }
5218 if (0) {
5219 { /* Inline kernel#Object#!= (var_left,var18) on <var_left:nullable RuntimeVariable> */
5220 var_other = var18;
5221 {
5222 var23 = ((short int (*)(val*, val*))(var_left->class->vft[COLOR_kernel__Object___61d_61d]))(var_left, var_other) /* == on <var_left:nullable RuntimeVariable(RuntimeVariable)>*/;
5223 var22 = var23;
5224 }
5225 var24 = !var22;
5226 var20 = var24;
5227 goto RET_LABEL21;
5228 RET_LABEL21:(void)0;
5229 }
5230 var19 = var20;
5231 }
5232 if (unlikely(!var19)) {
5233 PRINT_ERROR("Runtime error: %s", "Assert failed");
5234 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2739);
5235 show_backtrace(1);
5236 }
5237 {
5238 { /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:ASendReassignFormExpr> */
5239 var27 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:ASendReassignFormExpr> */
5240 var25 = var27;
5241 RET_LABEL26:(void)0;
5242 }
5243 }
5244 if (unlikely(var25 == NULL)) {
5245 PRINT_ERROR("Runtime error: %s", "Cast failed");
5246 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2741);
5247 show_backtrace(1);
5248 }
5249 var28 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5250 var29 = 2;
5251 {
5252 array__Array__with_capacity(var28, var29); /* Direct call array#Array#with_capacity on <var28:Array[RuntimeVariable]>*/
5253 }
5254 var_30 = var28;
5255 {
5256 array__AbstractArray__push(var_30, var_left); /* Direct call array#AbstractArray#push on <var_30:Array[RuntimeVariable]>*/
5257 }
5258 {
5259 array__AbstractArray__push(var_30, var_value); /* Direct call array#AbstractArray#push on <var_30:Array[RuntimeVariable]>*/
5260 }
5261 {
5262 var31 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var25, var_30) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
5263 }
5264 var_res = var31;
5265 var32 = NULL;
5266 if (var_res == NULL) {
5267 var33 = 0; /* is null */
5268 } else {
5269 var33 = 1; /* arg is null and recv is not */
5270 }
5271 if (0) {
5272 { /* Inline kernel#Object#!= (var_res,var32) on <var_res:nullable RuntimeVariable> */
5273 var_other = var32;
5274 {
5275 var37 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
5276 var36 = var37;
5277 }
5278 var38 = !var36;
5279 var34 = var38;
5280 goto RET_LABEL35;
5281 RET_LABEL35:(void)0;
5282 }
5283 var33 = var34;
5284 }
5285 if (unlikely(!var33)) {
5286 PRINT_ERROR("Runtime error: %s", "Assert failed");
5287 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2742);
5288 show_backtrace(1);
5289 }
5290 {
5291 array__Array__add(var_args, var_res); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
5292 }
5293 {
5294 { /* Inline typing#ASendReassignFormExpr#write_callsite (self) on <self:ASendReassignFormExpr> */
5295 var41 = self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on <self:ASendReassignFormExpr> */
5296 var39 = var41;
5297 RET_LABEL40:(void)0;
5298 }
5299 }
5300 if (unlikely(var39 == NULL)) {
5301 PRINT_ERROR("Runtime error: %s", "Cast failed");
5302 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2745);
5303 show_backtrace(1);
5304 }
5305 {
5306 var42 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var39, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
5307 }
5308 var42;
5309 RET_LABEL:;
5310 }
5311 /* method abstract_compiler#ASendReassignFormExpr#stmt for (self: Object, AbstractCompilerVisitor) */
5312 void VIRTUAL_abstract_compiler__ASendReassignFormExpr__stmt(val* self, val* p0) {
5313 abstract_compiler__ASendReassignFormExpr__stmt(self, p0); /* Direct call abstract_compiler#ASendReassignFormExpr#stmt on <self:Object(ASendReassignFormExpr)>*/
5314 RET_LABEL:;
5315 }
5316 /* method abstract_compiler#ASuperExpr#expr for (self: ASuperExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
5317 val* abstract_compiler__ASuperExpr__expr(val* self, val* p0) {
5318 val* var /* : nullable RuntimeVariable */;
5319 val* var_v /* var v: AbstractCompilerVisitor */;
5320 val* var1 /* : nullable Frame */;
5321 val* var3 /* : nullable Frame */;
5322 val* var4 /* : Array[RuntimeVariable] */;
5323 val* var6 /* : Array[RuntimeVariable] */;
5324 val* var7 /* : nullable Object */;
5325 val* var_recv /* var recv: RuntimeVariable */;
5326 val* var8 /* : Array[RuntimeVariable] */;
5327 long var9 /* : Int */;
5328 val* var_ /* var : Array[RuntimeVariable] */;
5329 val* var_args /* var args: Array[RuntimeVariable] */;
5330 val* var10 /* : AExprs */;
5331 val* var11 /* : ANodes[AExpr] */;
5332 val* var13 /* : ANodes[AExpr] */;
5333 val* var14 /* : Iterator[ANode] */;
5334 short int var15 /* : Bool */;
5335 val* var16 /* : nullable Object */;
5336 val* var_a /* var a: AExpr */;
5337 val* var17 /* : null */;
5338 val* var18 /* : RuntimeVariable */;
5339 val* var19 /* : nullable CallSite */;
5340 val* var21 /* : nullable CallSite */;
5341 val* var_callsite /* var callsite: nullable CallSite */;
5342 val* var22 /* : null */;
5343 short int var23 /* : Bool */;
5344 short int var24 /* : Bool */;
5345 val* var_other /* var other: nullable Object */;
5346 short int var26 /* : Bool */;
5347 short int var27 /* : Bool */;
5348 short int var28 /* : Bool */;
5349 long var29 /* : Int */;
5350 long var30 /* : Int */;
5351 short int var31 /* : Bool */;
5352 short int var32 /* : Bool */;
5353 short int var34 /* : Bool */;
5354 val* var35 /* : Range[Int] */;
5355 long var36 /* : Int */;
5356 val* var37 /* : MSignature */;
5357 val* var39 /* : MSignature */;
5358 long var40 /* : Int */;
5359 val* var41 /* : Discrete */;
5360 val* var42 /* : Discrete */;
5361 val* var43 /* : Iterator[Discrete] */;
5362 short int var44 /* : Bool */;
5363 val* var45 /* : nullable Object */;
5364 long var_i /* var i: Int */;
5365 long var46 /* : Int */;
5366 val* var47 /* : nullable Frame */;
5367 val* var49 /* : nullable Frame */;
5368 val* var50 /* : Array[RuntimeVariable] */;
5369 val* var52 /* : Array[RuntimeVariable] */;
5370 long var53 /* : Int */;
5371 long var54 /* : Int */;
5372 short int var56 /* : Bool */;
5373 int cltype;
5374 int idtype;
5375 const char* var_class_name;
5376 long var57 /* : Int */;
5377 val* var58 /* : nullable Object */;
5378 val* var60 /* : nullable RuntimeVariable */;
5379 val* var_res /* var res: nullable RuntimeVariable */;
5380 long var61 /* : Int */;
5381 long var62 /* : Int */;
5382 short int var63 /* : Bool */;
5383 short int var64 /* : Bool */;
5384 short int var66 /* : Bool */;
5385 val* var67 /* : nullable Frame */;
5386 val* var69 /* : nullable Frame */;
5387 val* var70 /* : Array[RuntimeVariable] */;
5388 val* var72 /* : Array[RuntimeVariable] */;
5389 val* var73 /* : nullable MMethodDef */;
5390 val* var75 /* : nullable MMethodDef */;
5391 val* var76 /* : MType */;
5392 val* var78 /* : MType */;
5393 short int var79 /* : Bool */;
5394 int cltype80;
5395 int idtype81;
5396 const char* var_class_name82;
5397 val* var83 /* : nullable RuntimeVariable */;
5398 var_v = p0;
5399 {
5400 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (var_v) on <var_v:AbstractCompilerVisitor> */
5401 var3 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <var_v:AbstractCompilerVisitor> */
5402 var1 = var3;
5403 RET_LABEL2:(void)0;
5404 }
5405 }
5406 if (var1 == NULL) {
5407 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5408 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2752);
5409 show_backtrace(1);
5410 } else {
5411 { /* Inline abstract_compiler#Frame#arguments (var1) on <var1:nullable Frame> */
5412 if (unlikely(var1 == NULL)) {
5413 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5414 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1538);
5415 show_backtrace(1);
5416 }
5417 var6 = var1->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <var1:nullable Frame> */
5418 if (unlikely(var6 == NULL)) {
5419 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
5420 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1538);
5421 show_backtrace(1);
5422 }
5423 var4 = var6;
5424 RET_LABEL5:(void)0;
5425 }
5426 }
5427 {
5428 var7 = abstract_collection__SequenceRead__first(var4);
5429 }
5430 var_recv = var7;
5431 var8 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5432 var9 = 1;
5433 {
5434 array__Array__with_capacity(var8, var9); /* Direct call array#Array#with_capacity on <var8:Array[RuntimeVariable]>*/
5435 }
5436 var_ = var8;
5437 {
5438 array__AbstractArray__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
5439 }
5440 var_args = var_;
5441 {
5442 var10 = parser_nodes__ASuperExpr__n_args(self);
5443 }
5444 {
5445 { /* Inline parser_nodes#AExprs#n_exprs (var10) on <var10:AExprs> */
5446 var13 = var10->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var10:AExprs> */
5447 if (unlikely(var13 == NULL)) {
5448 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
5449 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
5450 show_backtrace(1);
5451 }
5452 var11 = var13;
5453 RET_LABEL12:(void)0;
5454 }
5455 }
5456 {
5457 var14 = parser_nodes__ANodes__iterator(var11);
5458 }
5459 for(;;) {
5460 {
5461 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[ANode]>*/;
5462 }
5463 if(!var15) break;
5464 {
5465 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[ANode]>*/;
5466 }
5467 var_a = var16;
5468 var17 = NULL;
5469 {
5470 var18 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var_a, var17);
5471 }
5472 {
5473 array__Array__add(var_args, var18); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
5474 }
5475 CONTINUE_label: (void)0;
5476 {
5477 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[ANode]>*/;
5478 }
5479 }
5480 BREAK_label: (void)0;
5481 {
5482 { /* Inline typing#ASuperExpr#callsite (self) on <self:ASuperExpr> */
5483 var21 = self->attrs[COLOR_typing__ASuperExpr___callsite].val; /* _callsite on <self:ASuperExpr> */
5484 var19 = var21;
5485 RET_LABEL20:(void)0;
5486 }
5487 }
5488 var_callsite = var19;
5489 var22 = NULL;
5490 if (var_callsite == NULL) {
5491 var23 = 0; /* is null */
5492 } else {
5493 var23 = 1; /* arg is null and recv is not */
5494 }
5495 if (0) {
5496 { /* Inline kernel#Object#!= (var_callsite,var22) on <var_callsite:nullable CallSite> */
5497 var_other = var22;
5498 {
5499 var27 = ((short int (*)(val*, val*))(var_callsite->class->vft[COLOR_kernel__Object___61d_61d]))(var_callsite, var_other) /* == on <var_callsite:nullable CallSite(CallSite)>*/;
5500 var26 = var27;
5501 }
5502 var28 = !var26;
5503 var24 = var28;
5504 goto RET_LABEL25;
5505 RET_LABEL25:(void)0;
5506 }
5507 var23 = var24;
5508 }
5509 if (var23){
5510 {
5511 var29 = array__AbstractArrayRead__length(var_args);
5512 }
5513 var30 = 1;
5514 {
5515 { /* Inline kernel#Int#== (var29,var30) on <var29:Int> */
5516 var34 = var29 == var30;
5517 var32 = var34;
5518 goto RET_LABEL33;
5519 RET_LABEL33:(void)0;
5520 }
5521 var31 = var32;
5522 }
5523 if (var31){
5524 var35 = NEW_range__Range(&type_range__Rangekernel__Int);
5525 var36 = 0;
5526 {
5527 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
5528 var39 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
5529 if (unlikely(var39 == NULL)) {
5530 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
5531 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
5532 show_backtrace(1);
5533 }
5534 var37 = var39;
5535 RET_LABEL38:(void)0;
5536 }
5537 }
5538 {
5539 var40 = model__MSignature__arity(var37);
5540 }
5541 {
5542 var41 = BOX_kernel__Int(var36); /* autobox from Int to Discrete */
5543 var42 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
5544 range__Range__without_last(var35, var41, var42); /* Direct call range#Range#without_last on <var35:Range[Int]>*/
5545 }
5546 {
5547 var43 = range__Range__iterator(var35);
5548 }
5549 for(;;) {
5550 {
5551 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var43) /* is_ok on <var43:Iterator[Discrete]>*/;
5552 }
5553 if(!var44) break;
5554 {
5555 var45 = ((val* (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__item]))(var43) /* item on <var43:Iterator[Discrete]>*/;
5556 }
5557 var46 = ((struct instance_kernel__Int*)var45)->value; /* autounbox from nullable Object to Int */;
5558 var_i = var46;
5559 {
5560 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (var_v) on <var_v:AbstractCompilerVisitor> */
5561 var49 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <var_v:AbstractCompilerVisitor> */
5562 var47 = var49;
5563 RET_LABEL48:(void)0;
5564 }
5565 }
5566 if (var47 == NULL) {
5567 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5568 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2763);
5569 show_backtrace(1);
5570 } else {
5571 { /* Inline abstract_compiler#Frame#arguments (var47) on <var47:nullable Frame> */
5572 if (unlikely(var47 == NULL)) {
5573 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5574 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1538);
5575 show_backtrace(1);
5576 }
5577 var52 = var47->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <var47:nullable Frame> */
5578 if (unlikely(var52 == NULL)) {
5579 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
5580 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1538);
5581 show_backtrace(1);
5582 }
5583 var50 = var52;
5584 RET_LABEL51:(void)0;
5585 }
5586 }
5587 var53 = 1;
5588 {
5589 { /* Inline kernel#Int#+ (var_i,var53) on <var_i:Int> */
5590 /* Covariant cast for argument 0 (i) <var53:Int> isa OTHER */
5591 /* <var53:Int> isa OTHER */
5592 var56 = 1; /* easy <var53:Int> isa OTHER*/
5593 if (unlikely(!var56)) {
5594 var_class_name = type_kernel__Int.name;
5595 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5596 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
5597 show_backtrace(1);
5598 }
5599 var57 = var_i + var53;
5600 var54 = var57;
5601 goto RET_LABEL55;
5602 RET_LABEL55:(void)0;
5603 }
5604 }
5605 {
5606 var58 = array__Array___91d_93d(var50, var54);
5607 }
5608 {
5609 array__Array__add(var_args, var58); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
5610 }
5611 CONTINUE_label59: (void)0;
5612 {
5613 ((void (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__next]))(var43) /* next on <var43:Iterator[Discrete]>*/;
5614 }
5615 }
5616 BREAK_label59: (void)0;
5617 } else {
5618 }
5619 {
5620 var60 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_callsite, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
5621 }
5622 var_res = var60;
5623 var = var_res;
5624 goto RET_LABEL;
5625 } else {
5626 }
5627 {
5628 var61 = array__AbstractArrayRead__length(var_args);
5629 }
5630 var62 = 1;
5631 {
5632 { /* Inline kernel#Int#== (var61,var62) on <var61:Int> */
5633 var66 = var61 == var62;
5634 var64 = var66;
5635 goto RET_LABEL65;
5636 RET_LABEL65:(void)0;
5637 }
5638 var63 = var64;
5639 }
5640 if (var63){
5641 {
5642 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (var_v) on <var_v:AbstractCompilerVisitor> */
5643 var69 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <var_v:AbstractCompilerVisitor> */
5644 var67 = var69;
5645 RET_LABEL68:(void)0;
5646 }
5647 }
5648 if (var67 == NULL) {
5649 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5650 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2772);
5651 show_backtrace(1);
5652 } else {
5653 { /* Inline abstract_compiler#Frame#arguments (var67) on <var67:nullable Frame> */
5654 if (unlikely(var67 == NULL)) {
5655 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5656 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1538);
5657 show_backtrace(1);
5658 }
5659 var72 = var67->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <var67:nullable Frame> */
5660 if (unlikely(var72 == NULL)) {
5661 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
5662 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1538);
5663 show_backtrace(1);
5664 }
5665 var70 = var72;
5666 RET_LABEL71:(void)0;
5667 }
5668 }
5669 var_args = var70;
5670 } else {
5671 }
5672 {
5673 { /* Inline typing#ASuperExpr#mpropdef (self) on <self:ASuperExpr> */
5674 var75 = self->attrs[COLOR_typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:ASuperExpr> */
5675 var73 = var75;
5676 RET_LABEL74:(void)0;
5677 }
5678 }
5679 if (unlikely(var73 == NULL)) {
5680 PRINT_ERROR("Runtime error: %s", "Cast failed");
5681 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2776);
5682 show_backtrace(1);
5683 }
5684 {
5685 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_recv) on <var_recv:RuntimeVariable> */
5686 var78 = var_recv->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
5687 if (unlikely(var78 == NULL)) {
5688 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
5689 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 1484);
5690 show_backtrace(1);
5691 }
5692 var76 = var78;
5693 RET_LABEL77:(void)0;
5694 }
5695 }
5696 /* <var76:MType> isa MClassType */
5697 cltype80 = type_model__MClassType.color;
5698 idtype81 = type_model__MClassType.id;
5699 if(cltype80 >= var76->type->table_size) {
5700 var79 = 0;
5701 } else {
5702 var79 = var76->type->type_table[cltype80] == idtype81;
5703 }
5704 if (unlikely(!var79)) {
5705 var_class_name82 = var76 == NULL ? "null" : var76->type->name;
5706 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name82);
5707 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2776);
5708 show_backtrace(1);
5709 }
5710 {
5711 var83 = separate_compiler__SeparateCompilerVisitor__supercall(var_v, var73, var76, var_args);
5712 }
5713 var = var83;
5714 goto RET_LABEL;
5715 RET_LABEL:;
5716 return var;
5717 }
5718 /* method abstract_compiler#ASuperExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
5719 val* VIRTUAL_abstract_compiler__ASuperExpr__expr(val* self, val* p0) {
5720 val* var /* : nullable RuntimeVariable */;
5721 val* var1 /* : nullable RuntimeVariable */;
5722 var1 = abstract_compiler__ASuperExpr__expr(self, p0);
5723 var = var1;
5724 RET_LABEL:;
5725 return var;
5726 }
5727 /* method abstract_compiler#ANewExpr#expr for (self: ANewExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
5728 val* abstract_compiler__ANewExpr__expr(val* self, val* p0) {
5729 val* var /* : nullable RuntimeVariable */;
5730 val* var_v /* var v: AbstractCompilerVisitor */;
5731 val* var1 /* : nullable MType */;
5732 val* var3 /* : nullable MType */;
5733 short int var4 /* : Bool */;
5734 int cltype;
5735 int idtype;
5736 const char* var_class_name;
5737 val* var_mtype /* var mtype: MClassType */;
5738 val* var5 /* : String */;
5739 val* var_ctype /* var ctype: String */;
5740 val* var6 /* : MClass */;
5741 val* var8 /* : MClass */;
5742 val* var9 /* : String */;
5743 val* var11 /* : String */;
5744 static val* varonce;
5745 val* var12 /* : String */;
5746 char* var13 /* : NativeString */;
5747 long var14 /* : Int */;
5748 val* var15 /* : FlatString */;
5749 short int var16 /* : Bool */;
5750 short int var17 /* : Bool */;
5751 val* var18 /* : AExprs */;
5752 val* var19 /* : ANodes[AExpr] */;
5753 val* var21 /* : ANodes[AExpr] */;
5754 long var22 /* : Int */;
5755 long var23 /* : Int */;
5756 short int var24 /* : Bool */;
5757 short int var25 /* : Bool */;
5758 short int var27 /* : Bool */;
5759 val* var28 /* : AExprs */;
5760 val* var29 /* : ANodes[AExpr] */;
5761 val* var31 /* : ANodes[AExpr] */;
5762 val* var32 /* : nullable Object */;
5763 val* var33 /* : null */;
5764 val* var34 /* : RuntimeVariable */;
5765 val* var_l /* var l: RuntimeVariable */;
5766 short int var35 /* : Bool */;
5767 int cltype36;
5768 int idtype37;
5769 val* var38 /* : Array[MType] */;
5770 val* var40 /* : Array[MType] */;
5771 val* var41 /* : nullable Object */;
5772 val* var_elttype /* var elttype: MType */;
5773 val* var42 /* : RuntimeVariable */;
5774 static val* varonce43;
5775 val* var44 /* : String */;
5776 char* var45 /* : NativeString */;
5777 long var46 /* : Int */;
5778 val* var47 /* : FlatString */;
5779 short int var48 /* : Bool */;
5780 short int var49 /* : Bool */;
5781 val* var50 /* : RuntimeVariable */;
5782 val* var_recv /* var recv: nullable Object */;
5783 static val* varonce51;
5784 val* var52 /* : String */;
5785 char* var53 /* : NativeString */;
5786 long var54 /* : Int */;
5787 val* var55 /* : FlatString */;
5788 short int var56 /* : Bool */;
5789 short int var57 /* : Bool */;
5790 static val* varonce58;
5791 val* var59 /* : String */;
5792 char* var60 /* : NativeString */;
5793 long var61 /* : Int */;
5794 val* var62 /* : FlatString */;
5795 val* var63 /* : RuntimeVariable */;
5796 static val* varonce64;
5797 val* var65 /* : String */;
5798 char* var66 /* : NativeString */;
5799 long var67 /* : Int */;
5800 val* var68 /* : FlatString */;
5801 static val* varonce69;
5802 val* var70 /* : String */;
5803 char* var71 /* : NativeString */;
5804 long var72 /* : Int */;
5805 val* var73 /* : FlatString */;
5806 val* var74 /* : Array[Object] */;
5807 long var75 /* : Int */;
5808 val* var76 /* : NativeArray[Object] */;
5809 val* var77 /* : String */;
5810 val* var78 /* : RuntimeVariable */;
5811 val* var79 /* : Array[RuntimeVariable] */;
5812 long var80 /* : Int */;
5813 val* var_ /* var : Array[RuntimeVariable] */;
5814 val* var_args /* var args: Array[RuntimeVariable] */;
5815 val* var81 /* : AExprs */;
5816 val* var82 /* : ANodes[AExpr] */;
5817 val* var84 /* : ANodes[AExpr] */;
5818 val* var85 /* : Iterator[ANode] */;
5819 short int var86 /* : Bool */;
5820 val* var87 /* : nullable Object */;
5821 val* var_a /* var a: AExpr */;
5822 val* var88 /* : null */;
5823 val* var89 /* : RuntimeVariable */;
5824 val* var90 /* : nullable CallSite */;
5825 val* var92 /* : nullable CallSite */;
5826 val* var93 /* : nullable RuntimeVariable */;
5827 val* var_res2 /* var res2: nullable RuntimeVariable */;
5828 val* var94 /* : null */;
5829 short int var95 /* : Bool */;
5830 short int var96 /* : Bool */;
5831 val* var_other /* var other: nullable Object */;
5832 short int var98 /* : Bool */;
5833 short int var99 /* : Bool */;
5834 short int var100 /* : Bool */;
5835 var_v = p0;
5836 {
5837 { /* Inline typing#AExpr#mtype (self) on <self:ANewExpr> */
5838 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:ANewExpr> */
5839 var1 = var3;
5840 RET_LABEL2:(void)0;
5841 }
5842 }
5843 /* <var1:nullable MType> isa MClassType */
5844 cltype = type_model__MClassType.color;
5845 idtype = type_model__MClassType.id;
5846 if(var1 == NULL) {
5847 var4 = 0;
5848 } else {
5849 if(cltype >= var1->type->table_size) {
5850 var4 = 0;
5851 } else {
5852 var4 = var1->type->type_table[cltype] == idtype;
5853 }
5854 }
5855 if (unlikely(!var4)) {
5856 var_class_name = var1 == NULL ? "null" : var1->type->name;
5857 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5858 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2783);
5859 show_backtrace(1);
5860 }
5861 var_mtype = var1;
5862 {
5863 var5 = abstract_compiler__MClassType__ctype(var_mtype);
5864 }
5865 var_ctype = var5;
5866 {
5867 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
5868 var8 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
5869 if (unlikely(var8 == NULL)) {
5870 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5871 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
5872 show_backtrace(1);
5873 }
5874 var6 = var8;
5875 RET_LABEL7:(void)0;
5876 }
5877 }
5878 {
5879 { /* Inline model#MClass#name (var6) on <var6:MClass> */
5880 var11 = var6->attrs[COLOR_model__MClass___name].val; /* _name on <var6:MClass> */
5881 if (unlikely(var11 == NULL)) {
5882 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5883 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
5884 show_backtrace(1);
5885 }
5886 var9 = var11;
5887 RET_LABEL10:(void)0;
5888 }
5889 }
5890 if (varonce) {
5891 var12 = varonce;
5892 } else {
5893 var13 = "NativeArray";
5894 var14 = 11;
5895 var15 = string__NativeString__to_s_with_length(var13, var14);
5896 var12 = var15;
5897 varonce = var12;
5898 }
5899 {
5900 var17 = string__FlatString___61d_61d(var9, var12);
5901 var16 = var17;
5902 }
5903 if (var16){
5904 {
5905 var18 = parser_nodes__ANewExpr__n_args(self);
5906 }
5907 {
5908 { /* Inline parser_nodes#AExprs#n_exprs (var18) on <var18:AExprs> */
5909 var21 = var18->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var18:AExprs> */
5910 if (unlikely(var21 == NULL)) {
5911 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
5912 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
5913 show_backtrace(1);
5914 }
5915 var19 = var21;
5916 RET_LABEL20:(void)0;
5917 }
5918 }
5919 {
5920 var22 = parser_nodes__ANodes__length(var19);
5921 }
5922 var23 = 1;
5923 {
5924 { /* Inline kernel#Int#== (var22,var23) on <var22:Int> */
5925 var27 = var22 == var23;
5926 var25 = var27;
5927 goto RET_LABEL26;
5928 RET_LABEL26:(void)0;
5929 }
5930 var24 = var25;
5931 }
5932 if (unlikely(!var24)) {
5933 PRINT_ERROR("Runtime error: %s", "Assert failed");
5934 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2787);
5935 show_backtrace(1);
5936 }
5937 {
5938 var28 = parser_nodes__ANewExpr__n_args(self);
5939 }
5940 {
5941 { /* Inline parser_nodes#AExprs#n_exprs (var28) on <var28:AExprs> */
5942 var31 = var28->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var28:AExprs> */
5943 if (unlikely(var31 == NULL)) {
5944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
5945 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
5946 show_backtrace(1);
5947 }
5948 var29 = var31;
5949 RET_LABEL30:(void)0;
5950 }
5951 }
5952 {
5953 var32 = abstract_collection__SequenceRead__first(var29);
5954 }
5955 var33 = NULL;
5956 {
5957 var34 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var32, var33);
5958 }
5959 var_l = var34;
5960 /* <var_mtype:MClassType> isa MGenericType */
5961 cltype36 = type_model__MGenericType.color;
5962 idtype37 = type_model__MGenericType.id;
5963 if(cltype36 >= var_mtype->type->table_size) {
5964 var35 = 0;
5965 } else {
5966 var35 = var_mtype->type->type_table[cltype36] == idtype37;
5967 }
5968 if (unlikely(!var35)) {
5969 PRINT_ERROR("Runtime error: %s", "Assert failed");
5970 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2789);
5971 show_backtrace(1);
5972 }
5973 {
5974 { /* Inline model#MClassType#arguments (var_mtype) on <var_mtype:MClassType(MGenericType)> */
5975 var40 = var_mtype->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_mtype:MClassType(MGenericType)> */
5976 if (unlikely(var40 == NULL)) {
5977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
5978 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
5979 show_backtrace(1);
5980 }
5981 var38 = var40;
5982 RET_LABEL39:(void)0;
5983 }
5984 }
5985 {
5986 var41 = abstract_collection__SequenceRead__first(var38);
5987 }
5988 var_elttype = var41;
5989 {
5990 var42 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__native_array_instance]))(var_v, var_elttype, var_l) /* native_array_instance on <var_v:AbstractCompilerVisitor>*/;
5991 }
5992 var = var42;
5993 goto RET_LABEL;
5994 } else {
5995 if (varonce43) {
5996 var44 = varonce43;
5997 } else {
5998 var45 = "val*";
5999 var46 = 4;
6000 var47 = string__NativeString__to_s_with_length(var45, var46);
6001 var44 = var47;
6002 varonce43 = var44;
6003 }
6004 {
6005 var49 = string__FlatString___61d_61d(var_ctype, var44);
6006 var48 = var49;
6007 }
6008 if (var48){
6009 {
6010 var50 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_mtype) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
6011 }
6012 var_recv = var50;
6013 } else {
6014 if (varonce51) {
6015 var52 = varonce51;
6016 } else {
6017 var53 = "void*";
6018 var54 = 5;
6019 var55 = string__NativeString__to_s_with_length(var53, var54);
6020 var52 = var55;
6021 varonce51 = var52;
6022 }
6023 {
6024 var57 = string__FlatString___61d_61d(var_ctype, var52);
6025 var56 = var57;
6026 }
6027 if (var56){
6028 if (varonce58) {
6029 var59 = varonce58;
6030 } else {
6031 var60 = "NULL/*special!*/";
6032 var61 = 16;
6033 var62 = string__NativeString__to_s_with_length(var60, var61);
6034 var59 = var62;
6035 varonce58 = var59;
6036 }
6037 {
6038 var63 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var59, var_mtype);
6039 }
6040 var_recv = var63;
6041 } else {
6042 if (varonce64) {
6043 var65 = varonce64;
6044 } else {
6045 var66 = "(";
6046 var67 = 1;
6047 var68 = string__NativeString__to_s_with_length(var66, var67);
6048 var65 = var68;
6049 varonce64 = var65;
6050 }
6051 if (varonce69) {
6052 var70 = varonce69;
6053 } else {
6054 var71 = ")0/*special!*/";
6055 var72 = 14;
6056 var73 = string__NativeString__to_s_with_length(var71, var72);
6057 var70 = var73;
6058 varonce69 = var70;
6059 }
6060 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
6061 { /* var74 = array_instance Array[Object] */
6062 var75 = 3;
6063 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
6064 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var65;
6065 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var_ctype;
6066 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var70;
6067 {
6068 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
6069 }
6070 }
6071 {
6072 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
6073 }
6074 {
6075 var78 = abstract_compiler__AbstractCompilerVisitor__new_expr(var_v, var77, var_mtype);
6076 }
6077 var_recv = var78;
6078 }
6079 }
6080 }
6081 var79 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
6082 var80 = 1;
6083 {
6084 array__Array__with_capacity(var79, var80); /* Direct call array#Array#with_capacity on <var79:Array[RuntimeVariable]>*/
6085 }
6086 var_ = var79;
6087 {
6088 array__AbstractArray__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
6089 }
6090 var_args = var_;
6091 {
6092 var81 = parser_nodes__ANewExpr__n_args(self);
6093 }
6094 {
6095 { /* Inline parser_nodes#AExprs#n_exprs (var81) on <var81:AExprs> */
6096 var84 = var81->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var81:AExprs> */
6097 if (unlikely(var84 == NULL)) {
6098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
6099 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
6100 show_backtrace(1);
6101 }
6102 var82 = var84;
6103 RET_LABEL83:(void)0;
6104 }
6105 }
6106 {
6107 var85 = parser_nodes__ANodes__iterator(var82);
6108 }
6109 for(;;) {
6110 {
6111 var86 = ((short int (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var85) /* is_ok on <var85:Iterator[ANode]>*/;
6112 }
6113 if(!var86) break;
6114 {
6115 var87 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__item]))(var85) /* item on <var85:Iterator[ANode]>*/;
6116 }
6117 var_a = var87;
6118 var88 = NULL;
6119 {
6120 var89 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var_a, var88);
6121 }
6122 {
6123 array__Array__add(var_args, var89); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
6124 }
6125 CONTINUE_label: (void)0;
6126 {
6127 ((void (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__next]))(var85) /* next on <var85:Iterator[ANode]>*/;
6128 }
6129 }
6130 BREAK_label: (void)0;
6131 {
6132 { /* Inline typing#ANewExpr#callsite (self) on <self:ANewExpr> */
6133 var92 = self->attrs[COLOR_typing__ANewExpr___callsite].val; /* _callsite on <self:ANewExpr> */
6134 var90 = var92;
6135 RET_LABEL91:(void)0;
6136 }
6137 }
6138 if (unlikely(var90 == NULL)) {
6139 PRINT_ERROR("Runtime error: %s", "Cast failed");
6140 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2803);
6141 show_backtrace(1);
6142 }
6143 {
6144 var93 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var90, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
6145 }
6146 var_res2 = var93;
6147 var94 = NULL;
6148 if (var_res2 == NULL) {
6149 var95 = 0; /* is null */
6150 } else {
6151 var95 = 1; /* arg is null and recv is not */
6152 }
6153 if (0) {
6154 { /* Inline kernel#Object#!= (var_res2,var94) on <var_res2:nullable RuntimeVariable> */
6155 var_other = var94;
6156 {
6157 var99 = ((short int (*)(val*, val*))(var_res2->class->vft[COLOR_kernel__Object___61d_61d]))(var_res2, var_other) /* == on <var_res2:nullable RuntimeVariable(RuntimeVariable)>*/;
6158 var98 = var99;
6159 }
6160 var100 = !var98;
6161 var96 = var100;
6162 goto RET_LABEL97;
6163 RET_LABEL97:(void)0;
6164 }
6165 var95 = var96;
6166 }
6167 if (var95){
6168 var = var_res2;
6169 goto RET_LABEL;
6170 } else {
6171 }
6172 var = var_recv;
6173 goto RET_LABEL;
6174 RET_LABEL:;
6175 return var;
6176 }
6177 /* method abstract_compiler#ANewExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
6178 val* VIRTUAL_abstract_compiler__ANewExpr__expr(val* self, val* p0) {
6179 val* var /* : nullable RuntimeVariable */;
6180 val* var1 /* : nullable RuntimeVariable */;
6181 var1 = abstract_compiler__ANewExpr__expr(self, p0);
6182 var = var1;
6183 RET_LABEL:;
6184 return var;
6185 }
6186 /* method abstract_compiler#AAttrExpr#expr for (self: AAttrExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
6187 val* abstract_compiler__AAttrExpr__expr(val* self, val* p0) {
6188 val* var /* : nullable RuntimeVariable */;
6189 val* var_v /* var v: AbstractCompilerVisitor */;
6190 val* var1 /* : AExpr */;
6191 val* var2 /* : null */;
6192 val* var3 /* : RuntimeVariable */;
6193 val* var_recv /* var recv: RuntimeVariable */;
6194 val* var4 /* : nullable MAttribute */;
6195 val* var6 /* : nullable MAttribute */;
6196 val* var_mproperty /* var mproperty: MAttribute */;
6197 val* var7 /* : RuntimeVariable */;
6198 var_v = p0;
6199 {
6200 var1 = parser_nodes__AAttrFormExpr__n_expr(self);
6201 }
6202 var2 = NULL;
6203 {
6204 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
6205 }
6206 var_recv = var3;
6207 {
6208 { /* Inline typing#AAttrFormExpr#mproperty (self) on <self:AAttrExpr> */
6209 var6 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrExpr> */
6210 var4 = var6;
6211 RET_LABEL5:(void)0;
6212 }
6213 }
6214 if (unlikely(var4 == NULL)) {
6215 PRINT_ERROR("Runtime error: %s", "Cast failed");
6216 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2816);
6217 show_backtrace(1);
6218 }
6219 var_mproperty = var4;
6220 {
6221 var7 = separate_compiler__SeparateCompilerVisitor__read_attribute(var_v, var_mproperty, var_recv);
6222 }
6223 var = var7;
6224 goto RET_LABEL;
6225 RET_LABEL:;
6226 return var;
6227 }
6228 /* method abstract_compiler#AAttrExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
6229 val* VIRTUAL_abstract_compiler__AAttrExpr__expr(val* self, val* p0) {
6230 val* var /* : nullable RuntimeVariable */;
6231 val* var1 /* : nullable RuntimeVariable */;
6232 var1 = abstract_compiler__AAttrExpr__expr(self, p0);
6233 var = var1;
6234 RET_LABEL:;
6235 return var;
6236 }
6237 /* method abstract_compiler#AAttrAssignExpr#stmt for (self: AAttrAssignExpr, AbstractCompilerVisitor) */
6238 void abstract_compiler__AAttrAssignExpr__stmt(val* self, val* p0) {
6239 val* var_v /* var v: AbstractCompilerVisitor */;
6240 val* var /* : AExpr */;
6241 val* var1 /* : null */;
6242 val* var2 /* : RuntimeVariable */;
6243 val* var_recv /* var recv: RuntimeVariable */;
6244 val* var3 /* : AExpr */;
6245 val* var4 /* : null */;
6246 val* var5 /* : RuntimeVariable */;
6247 val* var_i /* var i: RuntimeVariable */;
6248 val* var6 /* : nullable MAttribute */;
6249 val* var8 /* : nullable MAttribute */;
6250 val* var_mproperty /* var mproperty: MAttribute */;
6251 var_v = p0;
6252 {
6253 var = parser_nodes__AAttrFormExpr__n_expr(self);
6254 }
6255 var1 = NULL;
6256 {
6257 var2 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var, var1);
6258 }
6259 var_recv = var2;
6260 {
6261 var3 = parser_nodes__AAssignFormExpr__n_value(self);
6262 }
6263 var4 = NULL;
6264 {
6265 var5 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var3, var4);
6266 }
6267 var_i = var5;
6268 {
6269 { /* Inline typing#AAttrFormExpr#mproperty (self) on <self:AAttrAssignExpr> */
6270 var8 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrAssignExpr> */
6271 var6 = var8;
6272 RET_LABEL7:(void)0;
6273 }
6274 }
6275 if (unlikely(var6 == NULL)) {
6276 PRINT_ERROR("Runtime error: %s", "Cast failed");
6277 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2826);
6278 show_backtrace(1);
6279 }
6280 var_mproperty = var6;
6281 {
6282 separate_compiler__SeparateCompilerVisitor__write_attribute(var_v, var_mproperty, var_recv, var_i); /* Direct call separate_compiler#SeparateCompilerVisitor#write_attribute on <var_v:AbstractCompilerVisitor>*/
6283 }
6284 RET_LABEL:;
6285 }
6286 /* method abstract_compiler#AAttrAssignExpr#stmt for (self: Object, AbstractCompilerVisitor) */
6287 void VIRTUAL_abstract_compiler__AAttrAssignExpr__stmt(val* self, val* p0) {
6288 abstract_compiler__AAttrAssignExpr__stmt(self, p0); /* Direct call abstract_compiler#AAttrAssignExpr#stmt on <self:Object(AAttrAssignExpr)>*/
6289 RET_LABEL:;
6290 }
6291 /* method abstract_compiler#AAttrReassignExpr#stmt for (self: AAttrReassignExpr, AbstractCompilerVisitor) */
6292 void abstract_compiler__AAttrReassignExpr__stmt(val* self, val* p0) {
6293 val* var_v /* var v: AbstractCompilerVisitor */;
6294 val* var /* : AExpr */;
6295 val* var1 /* : null */;
6296 val* var2 /* : RuntimeVariable */;
6297 val* var_recv /* var recv: RuntimeVariable */;
6298 val* var3 /* : AExpr */;
6299 val* var4 /* : null */;
6300 val* var5 /* : RuntimeVariable */;
6301 val* var_value /* var value: RuntimeVariable */;
6302 val* var6 /* : nullable MAttribute */;
6303 val* var8 /* : nullable MAttribute */;
6304 val* var_mproperty /* var mproperty: MAttribute */;
6305 val* var9 /* : RuntimeVariable */;
6306 val* var_attr /* var attr: RuntimeVariable */;
6307 val* var10 /* : nullable CallSite */;
6308 val* var12 /* : nullable CallSite */;
6309 val* var13 /* : Array[RuntimeVariable] */;
6310 long var14 /* : Int */;
6311 val* var_ /* var : Array[RuntimeVariable] */;
6312 val* var15 /* : nullable RuntimeVariable */;
6313 val* var_res /* var res: nullable RuntimeVariable */;
6314 val* var16 /* : null */;
6315 short int var17 /* : Bool */;
6316 short int var18 /* : Bool */;
6317 val* var_other /* var other: nullable Object */;
6318 short int var20 /* : Bool */;
6319 short int var21 /* : Bool */;
6320 short int var22 /* : Bool */;
6321 var_v = p0;
6322 {
6323 var = parser_nodes__AAttrFormExpr__n_expr(self);
6324 }
6325 var1 = NULL;
6326 {
6327 var2 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var, var1);
6328 }
6329 var_recv = var2;
6330 {
6331 var3 = parser_nodes__AReassignFormExpr__n_value(self);
6332 }
6333 var4 = NULL;
6334 {
6335 var5 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var3, var4);
6336 }
6337 var_value = var5;
6338 {
6339 { /* Inline typing#AAttrFormExpr#mproperty (self) on <self:AAttrReassignExpr> */
6340 var8 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrReassignExpr> */
6341 var6 = var8;
6342 RET_LABEL7:(void)0;
6343 }
6344 }
6345 if (unlikely(var6 == NULL)) {
6346 PRINT_ERROR("Runtime error: %s", "Cast failed");
6347 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2836);
6348 show_backtrace(1);
6349 }
6350 var_mproperty = var6;
6351 {
6352 var9 = separate_compiler__SeparateCompilerVisitor__read_attribute(var_v, var_mproperty, var_recv);
6353 }
6354 var_attr = var9;
6355 {
6356 { /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:AAttrReassignExpr> */
6357 var12 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:AAttrReassignExpr> */
6358 var10 = var12;
6359 RET_LABEL11:(void)0;
6360 }
6361 }
6362 if (unlikely(var10 == NULL)) {
6363 PRINT_ERROR("Runtime error: %s", "Cast failed");
6364 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2838);
6365 show_backtrace(1);
6366 }
6367 var13 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
6368 var14 = 2;
6369 {
6370 array__Array__with_capacity(var13, var14); /* Direct call array#Array#with_capacity on <var13:Array[RuntimeVariable]>*/
6371 }
6372 var_ = var13;
6373 {
6374 array__AbstractArray__push(var_, var_attr); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
6375 }
6376 {
6377 array__AbstractArray__push(var_, var_value); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
6378 }
6379 {
6380 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var10, var_) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
6381 }
6382 var_res = var15;
6383 var16 = NULL;
6384 if (var_res == NULL) {
6385 var17 = 0; /* is null */
6386 } else {
6387 var17 = 1; /* arg is null and recv is not */
6388 }
6389 if (0) {
6390 { /* Inline kernel#Object#!= (var_res,var16) on <var_res:nullable RuntimeVariable> */
6391 var_other = var16;
6392 {
6393 var21 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
6394 var20 = var21;
6395 }
6396 var22 = !var20;
6397 var18 = var22;
6398 goto RET_LABEL19;
6399 RET_LABEL19:(void)0;
6400 }
6401 var17 = var18;
6402 }
6403 if (unlikely(!var17)) {
6404 PRINT_ERROR("Runtime error: %s", "Assert failed");
6405 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2839);
6406 show_backtrace(1);
6407 }
6408 {
6409 separate_compiler__SeparateCompilerVisitor__write_attribute(var_v, var_mproperty, var_recv, var_res); /* Direct call separate_compiler#SeparateCompilerVisitor#write_attribute on <var_v:AbstractCompilerVisitor>*/
6410 }
6411 RET_LABEL:;
6412 }
6413 /* method abstract_compiler#AAttrReassignExpr#stmt for (self: Object, AbstractCompilerVisitor) */
6414 void VIRTUAL_abstract_compiler__AAttrReassignExpr__stmt(val* self, val* p0) {
6415 abstract_compiler__AAttrReassignExpr__stmt(self, p0); /* Direct call abstract_compiler#AAttrReassignExpr#stmt on <self:Object(AAttrReassignExpr)>*/
6416 RET_LABEL:;
6417 }
6418 /* method abstract_compiler#AIssetAttrExpr#expr for (self: AIssetAttrExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
6419 val* abstract_compiler__AIssetAttrExpr__expr(val* self, val* p0) {
6420 val* var /* : nullable RuntimeVariable */;
6421 val* var_v /* var v: AbstractCompilerVisitor */;
6422 val* var1 /* : AExpr */;
6423 val* var2 /* : null */;
6424 val* var3 /* : RuntimeVariable */;
6425 val* var_recv /* var recv: RuntimeVariable */;
6426 val* var4 /* : nullable MAttribute */;
6427 val* var6 /* : nullable MAttribute */;
6428 val* var_mproperty /* var mproperty: MAttribute */;
6429 val* var7 /* : RuntimeVariable */;
6430 var_v = p0;
6431 {
6432 var1 = parser_nodes__AAttrFormExpr__n_expr(self);
6433 }
6434 var2 = NULL;
6435 {
6436 var3 = abstract_compiler__AbstractCompilerVisitor__expr(var_v, var1, var2);
6437 }
6438 var_recv = var3;
6439 {
6440 { /* Inline typing#AAttrFormExpr#mproperty (self) on <self:AIssetAttrExpr> */
6441 var6 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AIssetAttrExpr> */
6442 var4 = var6;
6443 RET_LABEL5:(void)0;
6444 }
6445 }
6446 if (unlikely(var4 == NULL)) {
6447 PRINT_ERROR("Runtime error: %s", "Cast failed");
6448 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2848);
6449 show_backtrace(1);
6450 }
6451 var_mproperty = var4;
6452 {
6453 var7 = separate_compiler__SeparateCompilerVisitor__isset_attribute(var_v, var_mproperty, var_recv);
6454 }
6455 var = var7;
6456 goto RET_LABEL;
6457 RET_LABEL:;
6458 return var;
6459 }
6460 /* method abstract_compiler#AIssetAttrExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
6461 val* VIRTUAL_abstract_compiler__AIssetAttrExpr__expr(val* self, val* p0) {
6462 val* var /* : nullable RuntimeVariable */;
6463 val* var1 /* : nullable RuntimeVariable */;
6464 var1 = abstract_compiler__AIssetAttrExpr__expr(self, p0);
6465 var = var1;
6466 RET_LABEL:;
6467 return var;
6468 }
6469 /* method abstract_compiler#ADebugTypeExpr#stmt for (self: ADebugTypeExpr, AbstractCompilerVisitor) */
6470 void abstract_compiler__ADebugTypeExpr__stmt(val* self, val* p0) {
6471 val* var_v /* var v: AbstractCompilerVisitor */;
6472 var_v = p0;
6473 RET_LABEL:;
6474 }
6475 /* method abstract_compiler#ADebugTypeExpr#stmt for (self: Object, AbstractCompilerVisitor) */
6476 void VIRTUAL_abstract_compiler__ADebugTypeExpr__stmt(val* self, val* p0) {
6477 val* var_v /* var v: AbstractCompilerVisitor */;
6478 { /* Inline abstract_compiler#ADebugTypeExpr#stmt (self,p0) on <self:Object(ADebugTypeExpr)> */
6479 var_v = p0;
6480 RET_LABEL1:(void)0;
6481 }
6482 RET_LABEL:;
6483 }
6484 /* method abstract_compiler#MModule#properties for (self: MModule, MClass): Set[MProperty] */
6485 val* abstract_compiler__MModule__properties(val* self, val* p0) {
6486 val* var /* : Set[MProperty] */;
6487 val* var_mclass /* var mclass: MClass */;
6488 val* var1 /* : Map[MClass, Set[MProperty]] */;
6489 val* var3 /* : Map[MClass, Set[MProperty]] */;
6490 short int var4 /* : Bool */;
6491 short int var5 /* : Bool */;
6492 val* var6 /* : HashSet[MProperty] */;
6493 val* var_properties /* var properties: HashSet[MProperty] */;
6494 val* var7 /* : Array[MClass] */;
6495 val* var_parents /* var parents: Array[MClass] */;
6496 val* var8 /* : POSet[MClass] */;
6497 short int var9 /* : Bool */;
6498 val* var10 /* : POSetElement[MClass] */;
6499 val* var11 /* : Collection[Object] */;
6500 val* var12 /* : ArrayIterator[nullable Object] */;
6501 short int var13 /* : Bool */;
6502 val* var14 /* : nullable Object */;
6503 val* var_parent /* var parent: MClass */;
6504 val* var15 /* : Set[MProperty] */;
6505 val* var16 /* : Array[MClassDef] */;
6506 val* var18 /* : Array[MClassDef] */;
6507 val* var19 /* : ArrayIterator[nullable Object] */;
6508 short int var20 /* : Bool */;
6509 val* var21 /* : nullable Object */;
6510 val* var_mclassdef /* var mclassdef: MClassDef */;
6511 val* var22 /* : POSetElement[MModule] */;
6512 val* var24 /* : POSetElement[MModule] */;
6513 val* var25 /* : MModule */;
6514 val* var27 /* : MModule */;
6515 short int var28 /* : Bool */;
6516 short int var29 /* : Bool */;
6517 val* var31 /* : Array[MProperty] */;
6518 val* var33 /* : Array[MProperty] */;
6519 val* var34 /* : ArrayIterator[nullable Object] */;
6520 short int var35 /* : Bool */;
6521 val* var36 /* : nullable Object */;
6522 val* var_mprop /* var mprop: MProperty */;
6523 val* var38 /* : Map[MClass, Set[MProperty]] */;
6524 val* var40 /* : Map[MClass, Set[MProperty]] */;
6525 val* var41 /* : Map[MClass, Set[MProperty]] */;
6526 val* var43 /* : Map[MClass, Set[MProperty]] */;
6527 val* var44 /* : nullable Object */;
6528 var_mclass = p0;
6529 {
6530 { /* Inline abstract_compiler#MModule#properties_cache (self) on <self:MModule> */
6531 var3 = self->attrs[COLOR_abstract_compiler__MModule___properties_cache].val; /* _properties_cache on <self:MModule> */
6532 if (unlikely(var3 == NULL)) {
6533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _properties_cache");
6534 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2893);
6535 show_backtrace(1);
6536 }
6537 var1 = var3;
6538 RET_LABEL2:(void)0;
6539 }
6540 }
6541 {
6542 var4 = abstract_collection__MapRead__has_key(var1, var_mclass);
6543 }
6544 var5 = !var4;
6545 if (var5){
6546 var6 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MProperty);
6547 {
6548 hash_collection__HashSet__init(var6); /* Direct call hash_collection#HashSet#init on <var6:HashSet[MProperty]>*/
6549 }
6550 var_properties = var6;
6551 var7 = NEW_array__Array(&type_array__Arraymodel__MClass);
6552 {
6553 array__Array__init(var7); /* Direct call array#Array#init on <var7:Array[MClass]>*/
6554 }
6555 var_parents = var7;
6556 {
6557 var8 = model__MModule__flatten_mclass_hierarchy(self);
6558 }
6559 {
6560 var9 = poset__POSet__has(var8, var_mclass);
6561 }
6562 if (var9){
6563 {
6564 var10 = model__MClass__in_hierarchy(var_mclass, self);
6565 }
6566 {
6567 var11 = poset__POSetElement__direct_greaters(var10);
6568 }
6569 {
6570 abstract_collection__SimpleCollection__add_all(var_parents, var11); /* Direct call abstract_collection#SimpleCollection#add_all on <var_parents:Array[MClass]>*/
6571 }
6572 } else {
6573 }
6574 {
6575 var12 = array__AbstractArrayRead__iterator(var_parents);
6576 }
6577 for(;;) {
6578 {
6579 var13 = array__ArrayIterator__is_ok(var12);
6580 }
6581 if(!var13) break;
6582 {
6583 var14 = array__ArrayIterator__item(var12);
6584 }
6585 var_parent = var14;
6586 {
6587 var15 = abstract_compiler__MModule__properties(self, var_parent);
6588 }
6589 {
6590 abstract_collection__SimpleCollection__add_all(var_properties, var15); /* Direct call abstract_collection#SimpleCollection#add_all on <var_properties:HashSet[MProperty]>*/
6591 }
6592 CONTINUE_label: (void)0;
6593 {
6594 array__ArrayIterator__next(var12); /* Direct call array#ArrayIterator#next on <var12:ArrayIterator[nullable Object]>*/
6595 }
6596 }
6597 BREAK_label: (void)0;
6598 {
6599 { /* Inline model#MClass#mclassdefs (var_mclass) on <var_mclass:MClass> */
6600 var18 = var_mclass->attrs[COLOR_model__MClass___mclassdefs].val; /* _mclassdefs on <var_mclass:MClass> */
6601 if (unlikely(var18 == NULL)) {
6602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdefs");
6603 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 392);
6604 show_backtrace(1);
6605 }
6606 var16 = var18;
6607 RET_LABEL17:(void)0;
6608 }
6609 }
6610 {
6611 var19 = array__AbstractArrayRead__iterator(var16);
6612 }
6613 for(;;) {
6614 {
6615 var20 = array__ArrayIterator__is_ok(var19);
6616 }
6617 if(!var20) break;
6618 {
6619 var21 = array__ArrayIterator__item(var19);
6620 }
6621 var_mclassdef = var21;
6622 {
6623 { /* Inline mmodule#MModule#in_importation (self) on <self:MModule> */
6624 var24 = self->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <self:MModule> */
6625 if (unlikely(var24 == NULL)) {
6626 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
6627 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
6628 show_backtrace(1);
6629 }
6630 var22 = var24;
6631 RET_LABEL23:(void)0;
6632 }
6633 }
6634 {
6635 { /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
6636 var27 = var_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
6637 if (unlikely(var27 == NULL)) {
6638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6639 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
6640 show_backtrace(1);
6641 }
6642 var25 = var27;
6643 RET_LABEL26:(void)0;
6644 }
6645 }
6646 {
6647 var28 = poset__POSetElement___60d_61d(var22, var25);
6648 }
6649 var29 = !var28;
6650 if (var29){
6651 goto CONTINUE_label30;
6652 } else {
6653 }
6654 {
6655 { /* Inline model#MClassDef#intro_mproperties (var_mclassdef) on <var_mclassdef:MClassDef> */
6656 var33 = var_mclassdef->attrs[COLOR_model__MClassDef___intro_mproperties].val; /* _intro_mproperties on <var_mclassdef:MClassDef> */
6657 if (unlikely(var33 == NULL)) {
6658 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mproperties");
6659 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 571);
6660 show_backtrace(1);
6661 }
6662 var31 = var33;
6663 RET_LABEL32:(void)0;
6664 }
6665 }
6666 {
6667 var34 = array__AbstractArrayRead__iterator(var31);
6668 }
6669 for(;;) {
6670 {
6671 var35 = array__ArrayIterator__is_ok(var34);
6672 }
6673 if(!var35) break;
6674 {
6675 var36 = array__ArrayIterator__item(var34);
6676 }
6677 var_mprop = var36;
6678 {
6679 hash_collection__HashSet__add(var_properties, var_mprop); /* Direct call hash_collection#HashSet#add on <var_properties:HashSet[MProperty]>*/
6680 }
6681 CONTINUE_label37: (void)0;
6682 {
6683 array__ArrayIterator__next(var34); /* Direct call array#ArrayIterator#next on <var34:ArrayIterator[nullable Object]>*/
6684 }
6685 }
6686 BREAK_label37: (void)0;
6687 CONTINUE_label30: (void)0;
6688 {
6689 array__ArrayIterator__next(var19); /* Direct call array#ArrayIterator#next on <var19:ArrayIterator[nullable Object]>*/
6690 }
6691 }
6692 BREAK_label30: (void)0;
6693 {
6694 { /* Inline abstract_compiler#MModule#properties_cache (self) on <self:MModule> */
6695 var40 = self->attrs[COLOR_abstract_compiler__MModule___properties_cache].val; /* _properties_cache on <self:MModule> */
6696 if (unlikely(var40 == NULL)) {
6697 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _properties_cache");
6698 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2893);
6699 show_backtrace(1);
6700 }
6701 var38 = var40;
6702 RET_LABEL39:(void)0;
6703 }
6704 }
6705 {
6706 ((void (*)(val*, val*, val*))(var38->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var38, var_mclass, var_properties) /* []= on <var38:Map[MClass, Set[MProperty]]>*/;
6707 }
6708 } else {
6709 }
6710 {
6711 { /* Inline abstract_compiler#MModule#properties_cache (self) on <self:MModule> */
6712 var43 = self->attrs[COLOR_abstract_compiler__MModule___properties_cache].val; /* _properties_cache on <self:MModule> */
6713 if (unlikely(var43 == NULL)) {
6714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _properties_cache");
6715 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2893);
6716 show_backtrace(1);
6717 }
6718 var41 = var43;
6719 RET_LABEL42:(void)0;
6720 }
6721 }
6722 {
6723 var44 = ((val* (*)(val*, val*))(var41->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var41, var_mclass) /* [] on <var41:Map[MClass, Set[MProperty]]>*/;
6724 }
6725 var = var44;
6726 goto RET_LABEL;
6727 RET_LABEL:;
6728 return var;
6729 }
6730 /* method abstract_compiler#MModule#properties for (self: Object, MClass): Set[MProperty] */
6731 val* VIRTUAL_abstract_compiler__MModule__properties(val* self, val* p0) {
6732 val* var /* : Set[MProperty] */;
6733 val* var1 /* : Set[MProperty] */;
6734 var1 = abstract_compiler__MModule__properties(self, p0);
6735 var = var1;
6736 RET_LABEL:;
6737 return var;
6738 }
6739 /* method abstract_compiler#MModule#properties_cache for (self: MModule): Map[MClass, Set[MProperty]] */
6740 val* abstract_compiler__MModule__properties_cache(val* self) {
6741 val* var /* : Map[MClass, Set[MProperty]] */;
6742 val* var1 /* : Map[MClass, Set[MProperty]] */;
6743 var1 = self->attrs[COLOR_abstract_compiler__MModule___properties_cache].val; /* _properties_cache on <self:MModule> */
6744 if (unlikely(var1 == NULL)) {
6745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _properties_cache");
6746 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2893);
6747 show_backtrace(1);
6748 }
6749 var = var1;
6750 RET_LABEL:;
6751 return var;
6752 }
6753 /* method abstract_compiler#MModule#properties_cache for (self: Object): Map[MClass, Set[MProperty]] */
6754 val* VIRTUAL_abstract_compiler__MModule__properties_cache(val* self) {
6755 val* var /* : Map[MClass, Set[MProperty]] */;
6756 val* var1 /* : Map[MClass, Set[MProperty]] */;
6757 val* var3 /* : Map[MClass, Set[MProperty]] */;
6758 { /* Inline abstract_compiler#MModule#properties_cache (self) on <self:Object(MModule)> */
6759 var3 = self->attrs[COLOR_abstract_compiler__MModule___properties_cache].val; /* _properties_cache on <self:Object(MModule)> */
6760 if (unlikely(var3 == NULL)) {
6761 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _properties_cache");
6762 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 2893);
6763 show_backtrace(1);
6764 }
6765 var1 = var3;
6766 RET_LABEL2:(void)0;
6767 }
6768 var = var1;
6769 RET_LABEL:;
6770 return var;
6771 }
6772 /* method abstract_compiler#MModule#finalize_ffi for (self: MModule, AbstractCompiler) */
6773 void abstract_compiler__MModule__finalize_ffi(val* self, val* p0) {
6774 val* var_c /* var c: AbstractCompiler */;
6775 var_c = p0;
6776 RET_LABEL:;
6777 }
6778 /* method abstract_compiler#MModule#finalize_ffi for (self: Object, AbstractCompiler) */
6779 void VIRTUAL_abstract_compiler__MModule__finalize_ffi(val* self, val* p0) {
6780 val* var_c /* var c: AbstractCompiler */;
6781 { /* Inline abstract_compiler#MModule#finalize_ffi (self,p0) on <self:Object(MModule)> */
6782 var_c = p0;
6783 RET_LABEL1:(void)0;
6784 }
6785 RET_LABEL:;
6786 }
6787 /* method abstract_compiler#MModule#collect_linker_libs for (self: MModule): nullable Set[String] */
6788 val* abstract_compiler__MModule__collect_linker_libs(val* self) {
6789 val* var /* : nullable Set[String] */;
6790 val* var1 /* : null */;
6791 var1 = NULL;
6792 var = var1;
6793 goto RET_LABEL;
6794 RET_LABEL:;
6795 return var;
6796 }
6797 /* method abstract_compiler#MModule#collect_linker_libs for (self: Object): nullable Set[String] */
6798 val* VIRTUAL_abstract_compiler__MModule__collect_linker_libs(val* self) {
6799 val* var /* : nullable Set[String] */;
6800 val* var1 /* : nullable Set[String] */;
6801 var1 = abstract_compiler__MModule__collect_linker_libs(self);
6802 var = var1;
6803 RET_LABEL:;
6804 return var;
6805 }
6806 /* method abstract_compiler#Sys#main for (self: Sys) */
6807 void abstract_compiler__Sys__main(val* self) {
6808 val* var /* : ToolContext */;
6809 val* var_toolcontext /* var toolcontext: ToolContext */;
6810 val* var1 /* : OptionArray */;
6811 static val* varonce;
6812 val* var2 /* : String */;
6813 char* var3 /* : NativeString */;
6814 long var4 /* : Int */;
6815 val* var5 /* : FlatString */;
6816 static val* varonce6;
6817 val* var7 /* : String */;
6818 char* var8 /* : NativeString */;
6819 long var9 /* : Int */;
6820 val* var10 /* : FlatString */;
6821 val* var11 /* : Array[String] */;
6822 long var12 /* : Int */;
6823 val* var13 /* : NativeArray[String] */;
6824 val* var_opt_mixins /* var opt_mixins: OptionArray */;
6825 val* var14 /* : OptionContext */;
6826 val* var16 /* : OptionContext */;
6827 val* var17 /* : Array[Option] */;
6828 long var18 /* : Int */;
6829 val* var19 /* : NativeArray[Option] */;
6830 static val* varonce20;
6831 val* var21 /* : String */;
6832 char* var22 /* : NativeString */;
6833 long var23 /* : Int */;
6834 val* var24 /* : FlatString */;
6835 val* var26 /* : Sequence[String] */;
6836 val* var27 /* : Model */;
6837 val* var_model /* var model: Model */;
6838 val* var29 /* : ModelBuilder */;
6839 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6840 val* var30 /* : OptionContext */;
6841 val* var32 /* : OptionContext */;
6842 val* var33 /* : Array[String] */;
6843 val* var35 /* : Array[String] */;
6844 val* var_arguments /* var arguments: Array[String] */;
6845 short int var36 /* : Bool */;
6846 long var37 /* : Int */;
6847 long var38 /* : Int */;
6848 short int var39 /* : Bool */;
6849 short int var41 /* : Bool */;
6850 int cltype;
6851 int idtype;
6852 const char* var_class_name;
6853 short int var42 /* : Bool */;
6854 short int var_ /* var : Bool */;
6855 val* var43 /* : OptionString */;
6856 val* var45 /* : OptionString */;
6857 val* var46 /* : nullable Object */;
6858 val* var48 /* : nullable Object */;
6859 val* var49 /* : null */;
6860 short int var50 /* : Bool */;
6861 short int var51 /* : Bool */;
6862 val* var_other /* var other: nullable Object */;
6863 short int var53 /* : Bool */;
6864 short int var54 /* : Bool */;
6865 short int var55 /* : Bool */;
6866 static val* varonce56;
6867 val* var57 /* : String */;
6868 char* var58 /* : NativeString */;
6869 long var59 /* : Int */;
6870 val* var60 /* : FlatString */;
6871 long var61 /* : Int */;
6872 val* var63 /* : Array[MModule] */;
6873 val* var_mmodules /* var mmodules: Array[MModule] */;
6874 val* var64 /* : nullable Object */;
6875 val* var66 /* : nullable Object */;
6876 val* var67 /* : Array[MModule] */;
6877 val* var_mixins /* var mixins: Array[MModule] */;
6878 short int var68 /* : Bool */;
6879 val* var69 /* : ArrayIterator[nullable Object] */;
6880 short int var70 /* : Bool */;
6881 val* var71 /* : nullable Object */;
6882 val* var_mmodule /* var mmodule: MModule */;
6883 static val* varonce72;
6884 val* var73 /* : String */;
6885 char* var74 /* : NativeString */;
6886 long var75 /* : Int */;
6887 val* var76 /* : FlatString */;
6888 static val* varonce77;
6889 val* var78 /* : String */;
6890 char* var79 /* : NativeString */;
6891 long var80 /* : Int */;
6892 val* var81 /* : FlatString */;
6893 val* var82 /* : Array[Object] */;
6894 long var83 /* : Int */;
6895 val* var84 /* : NativeArray[Object] */;
6896 val* var85 /* : String */;
6897 long var86 /* : Int */;
6898 val* var87 /* : Array[MModule] */;
6899 long var88 /* : Int */;
6900 val* var_89 /* var : Array[MModule] */;
6901 val* var_ms /* var ms: Array[MModule] */;
6902 short int var90 /* : Bool */;
6903 short int var91 /* : Bool */;
6904 var = NEW_toolcontext__ToolContext(&type_toolcontext__ToolContext);
6905 {
6906 separate_erasure_compiler__ToolContext__init(var); /* Direct call separate_erasure_compiler#ToolContext#init on <var:ToolContext>*/
6907 }
6908 var_toolcontext = var;
6909 var1 = NEW_opts__OptionArray(&type_opts__OptionArray);
6910 if (varonce) {
6911 var2 = varonce;
6912 } else {
6913 var3 = "Additionals module to min-in";
6914 var4 = 28;
6915 var5 = string__NativeString__to_s_with_length(var3, var4);
6916 var2 = var5;
6917 varonce = var2;
6918 }
6919 if (varonce6) {
6920 var7 = varonce6;
6921 } else {
6922 var8 = "-m";
6923 var9 = 2;
6924 var10 = string__NativeString__to_s_with_length(var8, var9);
6925 var7 = var10;
6926 varonce6 = var7;
6927 }
6928 var11 = NEW_array__Array(&type_array__Arraystring__String);
6929 { /* var11 = array_instance Array[String] */
6930 var12 = 1;
6931 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraystring__String);
6932 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var7;
6933 {
6934 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[String]>*/;
6935 }
6936 }
6937 {
6938 opts__OptionArray__init(var1, var2, var11); /* Direct call opts#OptionArray#init on <var1:OptionArray>*/
6939 }
6940 var_opt_mixins = var1;
6941 {
6942 { /* Inline toolcontext#ToolContext#option_context (var_toolcontext) on <var_toolcontext:ToolContext> */
6943 var16 = var_toolcontext->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <var_toolcontext:ToolContext> */
6944 if (unlikely(var16 == NULL)) {
6945 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
6946 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
6947 show_backtrace(1);
6948 }
6949 var14 = var16;
6950 RET_LABEL15:(void)0;
6951 }
6952 }
6953 var17 = NEW_array__Array(&type_array__Arrayopts__Option);
6954 { /* var17 = array_instance Array[Option] */
6955 var18 = 1;
6956 var19 = NEW_array__NativeArray(var18, &type_array__NativeArrayopts__Option);
6957 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var_opt_mixins;
6958 {
6959 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Option]>*/;
6960 }
6961 }
6962 {
6963 opts__OptionContext__add_option(var14, var17); /* Direct call opts#OptionContext#add_option on <var14:OptionContext>*/
6964 }
6965 if (varonce20) {
6966 var21 = varonce20;
6967 } else {
6968 var22 = "Usage: nitg [OPTION]... file.nit...\nCompiles Nit programs.";
6969 var23 = 58;
6970 var24 = string__NativeString__to_s_with_length(var22, var23);
6971 var21 = var24;
6972 varonce20 = var21;
6973 }
6974 {
6975 { /* Inline toolcontext#ToolContext#tooldescription= (var_toolcontext,var21) on <var_toolcontext:ToolContext> */
6976 var_toolcontext->attrs[COLOR_toolcontext__ToolContext___tooldescription].val = var21; /* _tooldescription on <var_toolcontext:ToolContext> */
6977 RET_LABEL25:(void)0;
6978 }
6979 }
6980 {
6981 var26 = string__Object__args(self);
6982 }
6983 {
6984 nith__ToolContext__process_options(var_toolcontext, var26); /* Direct call nith#ToolContext#process_options on <var_toolcontext:ToolContext>*/
6985 }
6986 var27 = NEW_model_base__Model(&type_model_base__Model);
6987 {
6988 { /* Inline model_base#Model#init (var27) on <var27:Model> */
6989 RET_LABEL28:(void)0;
6990 }
6991 }
6992 var_model = var27;
6993 var29 = NEW_modelbuilder__ModelBuilder(&type_modelbuilder__ModelBuilder);
6994 {
6995 modelbuilder__ModelBuilder__init(var29, var_model, var_toolcontext); /* Direct call modelbuilder#ModelBuilder#init on <var29:ModelBuilder>*/
6996 }
6997 var_modelbuilder = var29;
6998 {
6999 { /* Inline toolcontext#ToolContext#option_context (var_toolcontext) on <var_toolcontext:ToolContext> */
7000 var32 = var_toolcontext->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <var_toolcontext:ToolContext> */
7001 if (unlikely(var32 == NULL)) {
7002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
7003 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
7004 show_backtrace(1);
7005 }
7006 var30 = var32;
7007 RET_LABEL31:(void)0;
7008 }
7009 }
7010 {
7011 { /* Inline opts#OptionContext#rest (var30) on <var30:OptionContext> */
7012 var35 = var30->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <var30:OptionContext> */
7013 if (unlikely(var35 == NULL)) {
7014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
7015 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 250);
7016 show_backtrace(1);
7017 }
7018 var33 = var35;
7019 RET_LABEL34:(void)0;
7020 }
7021 }
7022 var_arguments = var33;
7023 {
7024 var37 = array__AbstractArrayRead__length(var_arguments);
7025 }
7026 var38 = 1;
7027 {
7028 { /* Inline kernel#Int#> (var37,var38) on <var37:Int> */
7029 /* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
7030 /* <var38:Int> isa OTHER */
7031 var41 = 1; /* easy <var38:Int> isa OTHER*/
7032 if (unlikely(!var41)) {
7033 var_class_name = type_kernel__Int.name;
7034 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7035 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
7036 show_backtrace(1);
7037 }
7038 var42 = var37 > var38;
7039 var39 = var42;
7040 goto RET_LABEL40;
7041 RET_LABEL40:(void)0;
7042 }
7043 }
7044 var_ = var39;
7045 if (var39){
7046 {
7047 { /* Inline abstract_compiler#ToolContext#opt_output (var_toolcontext) on <var_toolcontext:ToolContext> */
7048 var45 = var_toolcontext->attrs[COLOR_abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <var_toolcontext:ToolContext> */
7049 if (unlikely(var45 == NULL)) {
7050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
7051 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 28);
7052 show_backtrace(1);
7053 }
7054 var43 = var45;
7055 RET_LABEL44:(void)0;
7056 }
7057 }
7058 {
7059 { /* Inline opts#Option#value (var43) on <var43:OptionString> */
7060 var48 = var43->attrs[COLOR_opts__Option___value].val; /* _value on <var43:OptionString> */
7061 var46 = var48;
7062 RET_LABEL47:(void)0;
7063 }
7064 }
7065 var49 = NULL;
7066 if (var46 == NULL) {
7067 var50 = 0; /* is null */
7068 } else {
7069 var50 = 1; /* arg is null and recv is not */
7070 }
7071 if (0) {
7072 { /* Inline kernel#Object#!= (var46,var49) on <var46:nullable Object(nullable String)> */
7073 var_other = var49;
7074 {
7075 var54 = ((short int (*)(val*, val*))(var46->class->vft[COLOR_kernel__Object___61d_61d]))(var46, var_other) /* == on <var46:nullable String(String)>*/;
7076 var53 = var54;
7077 }
7078 var55 = !var53;
7079 var51 = var55;
7080 goto RET_LABEL52;
7081 RET_LABEL52:(void)0;
7082 }
7083 var50 = var51;
7084 }
7085 var36 = var50;
7086 } else {
7087 var36 = var_;
7088 }
7089 if (var36){
7090 if (varonce56) {
7091 var57 = varonce56;
7092 } else {
7093 var58 = "Error: --output needs a single source file. Do you prefer --dir?";
7094 var59 = 64;
7095 var60 = string__NativeString__to_s_with_length(var58, var59);
7096 var57 = var60;
7097 varonce56 = var57;
7098 }
7099 {
7100 file__Object__print(self, var57); /* Direct call file#Object#print on <self:Sys>*/
7101 }
7102 var61 = 1;
7103 {
7104 { /* Inline kernel#Object#exit (self,var61) on <self:Sys> */
7105 exit(var61);
7106 RET_LABEL62:(void)0;
7107 }
7108 }
7109 } else {
7110 }
7111 {
7112 var63 = modelbuilder__ModelBuilder__parse(var_modelbuilder, var_arguments);
7113 }
7114 var_mmodules = var63;
7115 {
7116 { /* Inline opts#Option#value (var_opt_mixins) on <var_opt_mixins:OptionArray> */
7117 var66 = var_opt_mixins->attrs[COLOR_opts__Option___value].val; /* _value on <var_opt_mixins:OptionArray> */
7118 var64 = var66;
7119 RET_LABEL65:(void)0;
7120 }
7121 }
7122 {
7123 var67 = modelbuilder__ModelBuilder__parse(var_modelbuilder, var64);
7124 }
7125 var_mixins = var67;
7126 {
7127 var68 = array__AbstractArrayRead__is_empty(var_mmodules);
7128 }
7129 if (var68){
7130 goto RET_LABEL;
7131 } else {
7132 }
7133 {
7134 modelbuilder__ModelBuilder__run_phases(var_modelbuilder); /* Direct call modelbuilder#ModelBuilder#run_phases on <var_modelbuilder:ModelBuilder>*/
7135 }
7136 {
7137 var69 = array__AbstractArrayRead__iterator(var_mmodules);
7138 }
7139 for(;;) {
7140 {
7141 var70 = array__ArrayIterator__is_ok(var69);
7142 }
7143 if(!var70) break;
7144 {
7145 var71 = array__ArrayIterator__item(var69);
7146 }
7147 var_mmodule = var71;
7148 if (varonce72) {
7149 var73 = varonce72;
7150 } else {
7151 var74 = "*** PROCESS ";
7152 var75 = 12;
7153 var76 = string__NativeString__to_s_with_length(var74, var75);
7154 var73 = var76;
7155 varonce72 = var73;
7156 }
7157 if (varonce77) {
7158 var78 = varonce77;
7159 } else {
7160 var79 = " ***";
7161 var80 = 4;
7162 var81 = string__NativeString__to_s_with_length(var79, var80);
7163 var78 = var81;
7164 varonce77 = var78;
7165 }
7166 var82 = NEW_array__Array(&type_array__Arraykernel__Object);
7167 { /* var82 = array_instance Array[Object] */
7168 var83 = 3;
7169 var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object);
7170 ((struct instance_array__NativeArray*)var84)->values[0] = (val*) var73;
7171 ((struct instance_array__NativeArray*)var84)->values[1] = (val*) var_mmodule;
7172 ((struct instance_array__NativeArray*)var84)->values[2] = (val*) var78;
7173 {
7174 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[Object]>*/;
7175 }
7176 }
7177 {
7178 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on <var82:Array[Object]>*/;
7179 }
7180 var86 = 1;
7181 {
7182 toolcontext__ToolContext__info(var_toolcontext, var85, var86); /* Direct call toolcontext#ToolContext#info on <var_toolcontext:ToolContext>*/
7183 }
7184 var87 = NEW_array__Array(&type_array__Arraymmodule__MModule);
7185 var88 = 1;
7186 {
7187 array__Array__with_capacity(var87, var88); /* Direct call array#Array#with_capacity on <var87:Array[MModule]>*/
7188 }
7189 var_89 = var87;
7190 {
7191 array__AbstractArray__push(var_89, var_mmodule); /* Direct call array#AbstractArray#push on <var_89:Array[MModule]>*/
7192 }
7193 var_ms = var_89;
7194 {
7195 var90 = array__AbstractArrayRead__is_empty(var_mixins);
7196 }
7197 var91 = !var90;
7198 if (var91){
7199 {
7200 abstract_collection__SimpleCollection__add_all(var_ms, var_mixins); /* Direct call abstract_collection#SimpleCollection#add_all on <var_ms:Array[MModule]>*/
7201 }
7202 } else {
7203 }
7204 {
7205 modelbuilder__ToolContext__run_global_phases(var_toolcontext, var_ms); /* Direct call modelbuilder#ToolContext#run_global_phases on <var_toolcontext:ToolContext>*/
7206 }
7207 CONTINUE_label: (void)0;
7208 {
7209 array__ArrayIterator__next(var69); /* Direct call array#ArrayIterator#next on <var69:ArrayIterator[nullable Object]>*/
7210 }
7211 }
7212 BREAK_label: (void)0;
7213 RET_LABEL:;
7214 }
7215 /* method abstract_compiler#Sys#main for (self: Object) */
7216 void VIRTUAL_abstract_compiler__Sys__main(val* self) {
7217 abstract_compiler__Sys__main(self); /* Direct call abstract_compiler#Sys#main on <self:Object(Sys)>*/
7218 RET_LABEL:;
7219 }