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