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