update NOTICE
[nit.git] / c_src / abstract_compiler.sep.3.c
1 #include "abstract_compiler.sep.0.h"
2 /* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: AbstractCompilerVisitor, String): RuntimeVariable */
3 val* abstract_compiler__AbstractCompilerVisitor__string_instance(val* self, val* p0) {
4 val* var /* : RuntimeVariable */;
5 val* var_string /* var string: String */;
6 static val* varonce;
7 val* var1 /* : String */;
8 char* var2 /* : NativeString */;
9 long var3 /* : Int */;
10 val* var4 /* : FlatString */;
11 val* var5 /* : MClass */;
12 val* var6 /* : MClassType */;
13 val* var8 /* : MClassType */;
14 val* var_mtype /* var mtype: MClassType */;
15 static val* varonce9;
16 val* var10 /* : String */;
17 char* var11 /* : NativeString */;
18 long var12 /* : Int */;
19 val* var13 /* : FlatString */;
20 val* var14 /* : String */;
21 val* var_name /* var name: String */;
22 static val* varonce15;
23 val* var16 /* : String */;
24 char* var17 /* : NativeString */;
25 long var18 /* : Int */;
26 val* var19 /* : FlatString */;
27 val* var20 /* : String */;
28 static val* varonce21;
29 val* var22 /* : String */;
30 char* var23 /* : NativeString */;
31 long var24 /* : Int */;
32 val* var25 /* : FlatString */;
33 static val* varonce26;
34 val* var27 /* : String */;
35 char* var28 /* : NativeString */;
36 long var29 /* : Int */;
37 val* var30 /* : FlatString */;
38 val* var31 /* : Array[Object] */;
39 long var32 /* : Int */;
40 val* var33 /* : NativeArray[Object] */;
41 val* var34 /* : String */;
42 val* var35 /* : RuntimeVariable */;
43 val* var_res /* var res: RuntimeVariable */;
44 static val* varonce36;
45 val* var37 /* : String */;
46 char* var38 /* : NativeString */;
47 long var39 /* : Int */;
48 val* var40 /* : FlatString */;
49 static val* varonce41;
50 val* var42 /* : String */;
51 char* var43 /* : NativeString */;
52 long var44 /* : Int */;
53 val* var45 /* : FlatString */;
54 val* var46 /* : Array[Object] */;
55 long var47 /* : Int */;
56 val* var48 /* : NativeArray[Object] */;
57 val* var49 /* : String */;
58 static val* varonce50;
59 val* var51 /* : String */;
60 char* var52 /* : NativeString */;
61 long var53 /* : Int */;
62 val* var54 /* : FlatString */;
63 static val* varonce55;
64 val* var56 /* : String */;
65 char* var57 /* : NativeString */;
66 long var58 /* : Int */;
67 val* var59 /* : FlatString */;
68 val* var60 /* : Array[Object] */;
69 long var61 /* : Int */;
70 val* var62 /* : NativeArray[Object] */;
71 val* var63 /* : String */;
72 static val* varonce64;
73 val* var65 /* : String */;
74 char* var66 /* : NativeString */;
75 long var67 /* : Int */;
76 val* var68 /* : FlatString */;
77 static val* varonce69;
78 val* var70 /* : String */;
79 char* var71 /* : NativeString */;
80 long var72 /* : Int */;
81 val* var73 /* : FlatString */;
82 val* var74 /* : MClass */;
83 val* var75 /* : MClassType */;
84 val* var77 /* : MClassType */;
85 val* var_native_mtype /* var native_mtype: MClassType */;
86 val* var78 /* : RuntimeVariable */;
87 val* var_nat /* var nat: RuntimeVariable */;
88 static val* varonce79;
89 val* var80 /* : String */;
90 char* var81 /* : NativeString */;
91 long var82 /* : Int */;
92 val* var83 /* : FlatString */;
93 val* var84 /* : String */;
94 static val* varonce85;
95 val* var86 /* : String */;
96 char* var87 /* : NativeString */;
97 long var88 /* : Int */;
98 val* var89 /* : FlatString */;
99 val* var90 /* : Array[Object] */;
100 long var91 /* : Int */;
101 val* var92 /* : NativeArray[Object] */;
102 val* var93 /* : String */;
103 long var94 /* : Int */;
104 long var96 /* : Int */;
105 val* var97 /* : RuntimeVariable */;
106 val* var_length /* var length: RuntimeVariable */;
107 static val* varonce98;
108 val* var99 /* : String */;
109 char* var100 /* : NativeString */;
110 long var101 /* : Int */;
111 val* var102 /* : FlatString */;
112 static val* varonce103;
113 val* var104 /* : String */;
114 char* var105 /* : NativeString */;
115 long var106 /* : Int */;
116 val* var107 /* : FlatString */;
117 val* var108 /* : MMethod */;
118 val* var109 /* : Array[RuntimeVariable] */;
119 long var110 /* : Int */;
120 val* var_ /* var : Array[RuntimeVariable] */;
121 val* var111 /* : nullable RuntimeVariable */;
122 static val* varonce112;
123 val* var113 /* : String */;
124 char* var114 /* : NativeString */;
125 long var115 /* : Int */;
126 val* var116 /* : FlatString */;
127 val* var117 /* : Array[Object] */;
128 long var118 /* : Int */;
129 val* var119 /* : NativeArray[Object] */;
130 val* var120 /* : String */;
131 static val* varonce121;
132 val* var122 /* : String */;
133 char* var123 /* : NativeString */;
134 long var124 /* : Int */;
135 val* var125 /* : FlatString */;
136 static val* varonce126;
137 val* var127 /* : String */;
138 char* var128 /* : NativeString */;
139 long var129 /* : Int */;
140 val* var130 /* : FlatString */;
141 val* var131 /* : Array[Object] */;
142 long var132 /* : Int */;
143 val* var133 /* : NativeArray[Object] */;
144 val* var134 /* : String */;
145 static val* varonce135;
146 val* var136 /* : String */;
147 char* var137 /* : NativeString */;
148 long var138 /* : Int */;
149 val* var139 /* : FlatString */;
150 var_string = p0;
151 if (varonce) {
152 var1 = varonce;
153 } else {
154 var2 = "String";
155 var3 = 6;
156 var4 = string__NativeString__to_s_with_length(var2, var3);
157 var1 = var4;
158 varonce = var1;
159 }
160 {
161 var5 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var1);
162 }
163 {
164 { /* Inline model#MClass#mclass_type (var5) on <var5:MClass> */
165 var8 = var5->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var5:MClass> */
166 if (unlikely(var8 == NULL)) {
167 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
168 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
169 show_backtrace(1);
170 }
171 var6 = var8;
172 RET_LABEL7:(void)0;
173 }
174 }
175 var_mtype = var6;
176 if (varonce9) {
177 var10 = varonce9;
178 } else {
179 var11 = "varonce";
180 var12 = 7;
181 var13 = string__NativeString__to_s_with_length(var11, var12);
182 var10 = var13;
183 varonce9 = var10;
184 }
185 {
186 var14 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var10);
187 }
188 var_name = var14;
189 if (varonce15) {
190 var16 = varonce15;
191 } else {
192 var17 = "static ";
193 var18 = 7;
194 var19 = string__NativeString__to_s_with_length(var17, var18);
195 var16 = var19;
196 varonce15 = var16;
197 }
198 {
199 var20 = abstract_compiler__MClassType__ctype(var_mtype);
200 }
201 if (varonce21) {
202 var22 = varonce21;
203 } else {
204 var23 = " ";
205 var24 = 1;
206 var25 = string__NativeString__to_s_with_length(var23, var24);
207 var22 = var25;
208 varonce21 = var22;
209 }
210 if (varonce26) {
211 var27 = varonce26;
212 } else {
213 var28 = ";";
214 var29 = 1;
215 var30 = string__NativeString__to_s_with_length(var28, var29);
216 var27 = var30;
217 varonce26 = var27;
218 }
219 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
220 { /* var31 = array_instance Array[Object] */
221 var32 = 5;
222 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
223 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var16;
224 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var20;
225 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var22;
226 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var_name;
227 ((struct instance_array__NativeArray*)var33)->values[4] = (val*) var27;
228 {
229 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
230 }
231 }
232 {
233 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
234 }
235 {
236 abstract_compiler__AbstractCompilerVisitor__add_decl(self, var34); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:AbstractCompilerVisitor>*/
237 }
238 {
239 var35 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_mtype);
240 }
241 var_res = var35;
242 if (varonce36) {
243 var37 = varonce36;
244 } else {
245 var38 = "if (";
246 var39 = 4;
247 var40 = string__NativeString__to_s_with_length(var38, var39);
248 var37 = var40;
249 varonce36 = var37;
250 }
251 if (varonce41) {
252 var42 = varonce41;
253 } else {
254 var43 = ") {";
255 var44 = 3;
256 var45 = string__NativeString__to_s_with_length(var43, var44);
257 var42 = var45;
258 varonce41 = var42;
259 }
260 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
261 { /* var46 = array_instance Array[Object] */
262 var47 = 3;
263 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
264 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var37;
265 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var_name;
266 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
267 {
268 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
269 }
270 }
271 {
272 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
273 }
274 {
275 abstract_compiler__AbstractCompilerVisitor__add(self, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
276 }
277 if (varonce50) {
278 var51 = varonce50;
279 } else {
280 var52 = " = ";
281 var53 = 3;
282 var54 = string__NativeString__to_s_with_length(var52, var53);
283 var51 = var54;
284 varonce50 = var51;
285 }
286 if (varonce55) {
287 var56 = varonce55;
288 } else {
289 var57 = ";";
290 var58 = 1;
291 var59 = string__NativeString__to_s_with_length(var57, var58);
292 var56 = var59;
293 varonce55 = var56;
294 }
295 var60 = NEW_array__Array(&type_array__Arraykernel__Object);
296 { /* var60 = array_instance Array[Object] */
297 var61 = 4;
298 var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object);
299 ((struct instance_array__NativeArray*)var62)->values[0] = (val*) var_res;
300 ((struct instance_array__NativeArray*)var62)->values[1] = (val*) var51;
301 ((struct instance_array__NativeArray*)var62)->values[2] = (val*) var_name;
302 ((struct instance_array__NativeArray*)var62)->values[3] = (val*) var56;
303 {
304 ((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
305 }
306 }
307 {
308 var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
309 }
310 {
311 abstract_compiler__AbstractCompilerVisitor__add(self, var63); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
312 }
313 if (varonce64) {
314 var65 = varonce64;
315 } else {
316 var66 = "} else {";
317 var67 = 8;
318 var68 = string__NativeString__to_s_with_length(var66, var67);
319 var65 = var68;
320 varonce64 = var65;
321 }
322 {
323 abstract_compiler__AbstractCompilerVisitor__add(self, var65); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
324 }
325 if (varonce69) {
326 var70 = varonce69;
327 } else {
328 var71 = "NativeString";
329 var72 = 12;
330 var73 = string__NativeString__to_s_with_length(var71, var72);
331 var70 = var73;
332 varonce69 = var70;
333 }
334 {
335 var74 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var70);
336 }
337 {
338 { /* Inline model#MClass#mclass_type (var74) on <var74:MClass> */
339 var77 = var74->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var74:MClass> */
340 if (unlikely(var77 == NULL)) {
341 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
342 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
343 show_backtrace(1);
344 }
345 var75 = var77;
346 RET_LABEL76:(void)0;
347 }
348 }
349 var_native_mtype = var75;
350 {
351 var78 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_native_mtype);
352 }
353 var_nat = var78;
354 if (varonce79) {
355 var80 = varonce79;
356 } else {
357 var81 = " = \"";
358 var82 = 4;
359 var83 = string__NativeString__to_s_with_length(var81, var82);
360 var80 = var83;
361 varonce79 = var80;
362 }
363 {
364 var84 = string__Text__escape_to_c(var_string);
365 }
366 if (varonce85) {
367 var86 = varonce85;
368 } else {
369 var87 = "\";";
370 var88 = 2;
371 var89 = string__NativeString__to_s_with_length(var87, var88);
372 var86 = var89;
373 varonce85 = var86;
374 }
375 var90 = NEW_array__Array(&type_array__Arraykernel__Object);
376 { /* var90 = array_instance Array[Object] */
377 var91 = 4;
378 var92 = NEW_array__NativeArray(var91, &type_array__NativeArraykernel__Object);
379 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_nat;
380 ((struct instance_array__NativeArray*)var92)->values[1] = (val*) var80;
381 ((struct instance_array__NativeArray*)var92)->values[2] = (val*) var84;
382 ((struct instance_array__NativeArray*)var92)->values[3] = (val*) var86;
383 {
384 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[Object]>*/;
385 }
386 }
387 {
388 var93 = ((val* (*)(val*))(var90->class->vft[COLOR_string__Object__to_s]))(var90) /* to_s on <var90:Array[Object]>*/;
389 }
390 {
391 abstract_compiler__AbstractCompilerVisitor__add(self, var93); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
392 }
393 {
394 { /* Inline string#FlatText#length (var_string) on <var_string:String> */
395 var96 = var_string->attrs[COLOR_string__FlatText___length].l; /* _length on <var_string:String> */
396 var94 = var96;
397 RET_LABEL95:(void)0;
398 }
399 }
400 {
401 var97 = abstract_compiler__AbstractCompilerVisitor__int_instance(self, var94);
402 }
403 var_length = var97;
404 if (varonce98) {
405 var99 = varonce98;
406 } else {
407 var100 = " = ";
408 var101 = 3;
409 var102 = string__NativeString__to_s_with_length(var100, var101);
410 var99 = var102;
411 varonce98 = var99;
412 }
413 if (varonce103) {
414 var104 = varonce103;
415 } else {
416 var105 = "to_s_with_length";
417 var106 = 16;
418 var107 = string__NativeString__to_s_with_length(var105, var106);
419 var104 = var107;
420 varonce103 = var104;
421 }
422 {
423 var108 = abstract_compiler__AbstractCompilerVisitor__get_property(self, var104, var_native_mtype);
424 }
425 var109 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
426 var110 = 2;
427 {
428 array__Array__with_capacity(var109, var110); /* Direct call array#Array#with_capacity on <var109:Array[RuntimeVariable]>*/
429 }
430 var_ = var109;
431 {
432 array__AbstractArray__push(var_, var_nat); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
433 }
434 {
435 array__AbstractArray__push(var_, var_length); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
436 }
437 {
438 var111 = separate_compiler__SeparateCompilerVisitor__send(self, var108, var_);
439 }
440 if (unlikely(var111 == NULL)) {
441 PRINT_ERROR("Runtime error: %s", "Cast failed");
442 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1420);
443 show_backtrace(1);
444 }
445 if (varonce112) {
446 var113 = varonce112;
447 } else {
448 var114 = ";";
449 var115 = 1;
450 var116 = string__NativeString__to_s_with_length(var114, var115);
451 var113 = var116;
452 varonce112 = var113;
453 }
454 var117 = NEW_array__Array(&type_array__Arraykernel__Object);
455 { /* var117 = array_instance Array[Object] */
456 var118 = 4;
457 var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
458 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var_res;
459 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var99;
460 ((struct instance_array__NativeArray*)var119)->values[2] = (val*) var111;
461 ((struct instance_array__NativeArray*)var119)->values[3] = (val*) var113;
462 {
463 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
464 }
465 }
466 {
467 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
468 }
469 {
470 abstract_compiler__AbstractCompilerVisitor__add(self, var120); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
471 }
472 if (varonce121) {
473 var122 = varonce121;
474 } else {
475 var123 = " = ";
476 var124 = 3;
477 var125 = string__NativeString__to_s_with_length(var123, var124);
478 var122 = var125;
479 varonce121 = var122;
480 }
481 if (varonce126) {
482 var127 = varonce126;
483 } else {
484 var128 = ";";
485 var129 = 1;
486 var130 = string__NativeString__to_s_with_length(var128, var129);
487 var127 = var130;
488 varonce126 = var127;
489 }
490 var131 = NEW_array__Array(&type_array__Arraykernel__Object);
491 { /* var131 = array_instance Array[Object] */
492 var132 = 4;
493 var133 = NEW_array__NativeArray(var132, &type_array__NativeArraykernel__Object);
494 ((struct instance_array__NativeArray*)var133)->values[0] = (val*) var_name;
495 ((struct instance_array__NativeArray*)var133)->values[1] = (val*) var122;
496 ((struct instance_array__NativeArray*)var133)->values[2] = (val*) var_res;
497 ((struct instance_array__NativeArray*)var133)->values[3] = (val*) var127;
498 {
499 ((void (*)(val*, val*, long))(var131->class->vft[COLOR_array__Array__with_native]))(var131, var133, var132) /* with_native on <var131:Array[Object]>*/;
500 }
501 }
502 {
503 var134 = ((val* (*)(val*))(var131->class->vft[COLOR_string__Object__to_s]))(var131) /* to_s on <var131:Array[Object]>*/;
504 }
505 {
506 abstract_compiler__AbstractCompilerVisitor__add(self, var134); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
507 }
508 if (varonce135) {
509 var136 = varonce135;
510 } else {
511 var137 = "}";
512 var138 = 1;
513 var139 = string__NativeString__to_s_with_length(var137, var138);
514 var136 = var139;
515 varonce135 = var136;
516 }
517 {
518 abstract_compiler__AbstractCompilerVisitor__add(self, var136); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
519 }
520 var = var_res;
521 goto RET_LABEL;
522 RET_LABEL:;
523 return var;
524 }
525 /* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: Object, String): RuntimeVariable */
526 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__string_instance(val* self, val* p0) {
527 val* var /* : RuntimeVariable */;
528 val* var1 /* : RuntimeVariable */;
529 var1 = abstract_compiler__AbstractCompilerVisitor__string_instance(self, p0);
530 var = var1;
531 RET_LABEL:;
532 return var;
533 }
534 /* method abstract_compiler#AbstractCompilerVisitor#value_instance for (self: AbstractCompilerVisitor, Object): RuntimeVariable */
535 val* abstract_compiler__AbstractCompilerVisitor__value_instance(val* self, val* p0) {
536 val* var /* : RuntimeVariable */;
537 val* var_object /* var object: Object */;
538 short int var1 /* : Bool */;
539 int cltype;
540 int idtype;
541 val* var2 /* : RuntimeVariable */;
542 long var3 /* : Int */;
543 short int var4 /* : Bool */;
544 int cltype5;
545 int idtype6;
546 val* var7 /* : RuntimeVariable */;
547 short int var8 /* : Bool */;
548 short int var9 /* : Bool */;
549 int cltype10;
550 int idtype11;
551 val* var12 /* : RuntimeVariable */;
552 var_object = p0;
553 /* <var_object:Object> isa Int */
554 cltype = type_kernel__Int.color;
555 idtype = type_kernel__Int.id;
556 if(cltype >= var_object->type->table_size) {
557 var1 = 0;
558 } else {
559 var1 = var_object->type->type_table[cltype] == idtype;
560 }
561 if (var1){
562 {
563 var3 = ((struct instance_kernel__Int*)var_object)->value; /* autounbox from Object to Int */;
564 var2 = abstract_compiler__AbstractCompilerVisitor__int_instance(self, var3);
565 }
566 var = var2;
567 goto RET_LABEL;
568 } else {
569 /* <var_object:Object> isa Bool */
570 cltype5 = type_kernel__Bool.color;
571 idtype6 = type_kernel__Bool.id;
572 if(cltype5 >= var_object->type->table_size) {
573 var4 = 0;
574 } else {
575 var4 = var_object->type->type_table[cltype5] == idtype6;
576 }
577 if (var4){
578 {
579 var8 = ((struct instance_kernel__Bool*)var_object)->value; /* autounbox from Object to Bool */;
580 var7 = abstract_compiler__AbstractCompilerVisitor__bool_instance(self, var8);
581 }
582 var = var7;
583 goto RET_LABEL;
584 } else {
585 /* <var_object:Object> isa String */
586 cltype10 = type_string__String.color;
587 idtype11 = type_string__String.id;
588 if(cltype10 >= var_object->type->table_size) {
589 var9 = 0;
590 } else {
591 var9 = var_object->type->type_table[cltype10] == idtype11;
592 }
593 if (var9){
594 {
595 var12 = abstract_compiler__AbstractCompilerVisitor__string_instance(self, var_object);
596 }
597 var = var12;
598 goto RET_LABEL;
599 } else {
600 PRINT_ERROR("Runtime error: %s", "Aborted");
601 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1435);
602 show_backtrace(1);
603 }
604 }
605 }
606 RET_LABEL:;
607 return var;
608 }
609 /* method abstract_compiler#AbstractCompilerVisitor#value_instance for (self: Object, Object): RuntimeVariable */
610 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__value_instance(val* self, val* p0) {
611 val* var /* : RuntimeVariable */;
612 val* var1 /* : RuntimeVariable */;
613 var1 = abstract_compiler__AbstractCompilerVisitor__value_instance(self, p0);
614 var = var1;
615 RET_LABEL:;
616 return var;
617 }
618 /* method abstract_compiler#AbstractCompilerVisitor#add for (self: AbstractCompilerVisitor, String) */
619 void abstract_compiler__AbstractCompilerVisitor__add(val* self, val* p0) {
620 val* var_s /* var s: String */;
621 val* var /* : CodeWriter */;
622 val* var2 /* : CodeWriter */;
623 val* var3 /* : List[String] */;
624 val* var5 /* : List[String] */;
625 var_s = p0;
626 {
627 { /* Inline abstract_compiler#AbstractCompilerVisitor#writer (self) on <self:AbstractCompilerVisitor> */
628 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
629 if (unlikely(var2 == NULL)) {
630 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
631 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1056);
632 show_backtrace(1);
633 }
634 var = var2;
635 RET_LABEL1:(void)0;
636 }
637 }
638 {
639 { /* Inline abstract_compiler#CodeWriter#lines (var) on <var:CodeWriter> */
640 var5 = var->attrs[COLOR_abstract_compiler__CodeWriter___lines].val; /* _lines on <var:CodeWriter> */
641 if (unlikely(var5 == NULL)) {
642 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
643 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1019);
644 show_backtrace(1);
645 }
646 var3 = var5;
647 RET_LABEL4:(void)0;
648 }
649 }
650 {
651 abstract_collection__Sequence__add(var3, var_s); /* Direct call abstract_collection#Sequence#add on <var3:List[String]>*/
652 }
653 RET_LABEL:;
654 }
655 /* method abstract_compiler#AbstractCompilerVisitor#add for (self: Object, String) */
656 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add(val* self, val* p0) {
657 abstract_compiler__AbstractCompilerVisitor__add(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:Object(AbstractCompilerVisitor)>*/
658 RET_LABEL:;
659 }
660 /* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: AbstractCompilerVisitor, String) */
661 void abstract_compiler__AbstractCompilerVisitor__add_decl(val* self, val* p0) {
662 val* var_s /* var s: String */;
663 val* var /* : CodeWriter */;
664 val* var2 /* : CodeWriter */;
665 val* var3 /* : List[String] */;
666 val* var5 /* : List[String] */;
667 var_s = p0;
668 {
669 { /* Inline abstract_compiler#AbstractCompilerVisitor#writer (self) on <self:AbstractCompilerVisitor> */
670 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
671 if (unlikely(var2 == NULL)) {
672 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
673 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1056);
674 show_backtrace(1);
675 }
676 var = var2;
677 RET_LABEL1:(void)0;
678 }
679 }
680 {
681 { /* Inline abstract_compiler#CodeWriter#decl_lines (var) on <var:CodeWriter> */
682 var5 = var->attrs[COLOR_abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var:CodeWriter> */
683 if (unlikely(var5 == NULL)) {
684 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
685 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1020);
686 show_backtrace(1);
687 }
688 var3 = var5;
689 RET_LABEL4:(void)0;
690 }
691 }
692 {
693 abstract_collection__Sequence__add(var3, var_s); /* Direct call abstract_collection#Sequence#add on <var3:List[String]>*/
694 }
695 RET_LABEL:;
696 }
697 /* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: Object, String) */
698 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_decl(val* self, val* p0) {
699 abstract_compiler__AbstractCompilerVisitor__add_decl(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:Object(AbstractCompilerVisitor)>*/
700 RET_LABEL:;
701 }
702 /* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: AbstractCompilerVisitor, String) */
703 void abstract_compiler__AbstractCompilerVisitor__require_declaration(val* self, val* p0) {
704 val* var_key /* var key: String */;
705 val* var /* : CodeWriter */;
706 val* var2 /* : CodeWriter */;
707 val* var3 /* : CodeFile */;
708 val* var5 /* : CodeFile */;
709 val* var6 /* : HashSet[String] */;
710 val* var8 /* : HashSet[String] */;
711 val* var_reqs /* var reqs: HashSet[String] */;
712 short int var9 /* : Bool */;
713 val* var10 /* : nullable ANode */;
714 val* var12 /* : nullable ANode */;
715 val* var_node /* var node: nullable ANode */;
716 val* var13 /* : null */;
717 short int var14 /* : Bool */;
718 short int var15 /* : Bool */;
719 val* var_other /* var other: nullable Object */;
720 short int var17 /* : Bool */;
721 short int var18 /* : Bool */;
722 short int var19 /* : Bool */;
723 val* var20 /* : AbstractCompiler */;
724 val* var22 /* : AbstractCompiler */;
725 val* var23 /* : HashMap[String, ANode] */;
726 val* var25 /* : HashMap[String, ANode] */;
727 var_key = p0;
728 {
729 { /* Inline abstract_compiler#AbstractCompilerVisitor#writer (self) on <self:AbstractCompilerVisitor> */
730 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___writer].val; /* _writer on <self:AbstractCompilerVisitor> */
731 if (unlikely(var2 == NULL)) {
732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writer");
733 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1056);
734 show_backtrace(1);
735 }
736 var = var2;
737 RET_LABEL1:(void)0;
738 }
739 }
740 {
741 { /* Inline abstract_compiler#CodeWriter#file (var) on <var:CodeWriter> */
742 var5 = var->attrs[COLOR_abstract_compiler__CodeWriter___file].val; /* _file on <var:CodeWriter> */
743 if (unlikely(var5 == NULL)) {
744 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
745 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1018);
746 show_backtrace(1);
747 }
748 var3 = var5;
749 RET_LABEL4:(void)0;
750 }
751 }
752 {
753 { /* Inline abstract_compiler#CodeFile#required_declarations (var3) on <var3:CodeFile> */
754 var8 = var3->attrs[COLOR_abstract_compiler__CodeFile___required_declarations].val; /* _required_declarations on <var3:CodeFile> */
755 if (unlikely(var8 == NULL)) {
756 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _required_declarations");
757 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1013);
758 show_backtrace(1);
759 }
760 var6 = var8;
761 RET_LABEL7:(void)0;
762 }
763 }
764 var_reqs = var6;
765 {
766 var9 = hash_collection__HashSet__has(var_reqs, var_key);
767 }
768 if (var9){
769 goto RET_LABEL;
770 } else {
771 }
772 {
773 hash_collection__HashSet__add(var_reqs, var_key); /* Direct call hash_collection#HashSet#add on <var_reqs:HashSet[String]>*/
774 }
775 {
776 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
777 var12 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
778 var10 = var12;
779 RET_LABEL11:(void)0;
780 }
781 }
782 var_node = var10;
783 var13 = NULL;
784 if (var_node == NULL) {
785 var14 = 0; /* is null */
786 } else {
787 var14 = 1; /* arg is null and recv is not */
788 }
789 if (0) {
790 { /* Inline kernel#Object#!= (var_node,var13) on <var_node:nullable ANode> */
791 var_other = var13;
792 {
793 var18 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ANode(ANode)>*/;
794 var17 = var18;
795 }
796 var19 = !var17;
797 var15 = var19;
798 goto RET_LABEL16;
799 RET_LABEL16:(void)0;
800 }
801 var14 = var15;
802 }
803 if (var14){
804 {
805 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
806 var22 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
807 if (unlikely(var22 == NULL)) {
808 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
809 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
810 show_backtrace(1);
811 }
812 var20 = var22;
813 RET_LABEL21:(void)0;
814 }
815 }
816 {
817 { /* Inline abstract_compiler#AbstractCompiler#requirers_of_declarations (var20) on <var20:AbstractCompiler> */
818 var25 = var20->attrs[COLOR_abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <var20:AbstractCompiler> */
819 if (unlikely(var25 == NULL)) {
820 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
821 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 520);
822 show_backtrace(1);
823 }
824 var23 = var25;
825 RET_LABEL24:(void)0;
826 }
827 }
828 {
829 hash_collection__HashMap___91d_93d_61d(var23, var_key, var_node); /* Direct call hash_collection#HashMap#[]= on <var23:HashMap[String, ANode]>*/
830 }
831 } else {
832 }
833 RET_LABEL:;
834 }
835 /* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: Object, String) */
836 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__require_declaration(val* self, val* p0) {
837 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:Object(AbstractCompilerVisitor)>*/
838 RET_LABEL:;
839 }
840 /* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: AbstractCompilerVisitor, String) */
841 void abstract_compiler__AbstractCompilerVisitor__declare_once(val* self, val* p0) {
842 val* var_s /* var s: String */;
843 val* var /* : AbstractCompiler */;
844 val* var2 /* : AbstractCompiler */;
845 var_s = p0;
846 {
847 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
848 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
849 if (unlikely(var2 == NULL)) {
850 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
851 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
852 show_backtrace(1);
853 }
854 var = var2;
855 RET_LABEL1:(void)0;
856 }
857 }
858 {
859 abstract_compiler__AbstractCompiler__provide_declaration(var, var_s, var_s); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <var:AbstractCompiler>*/
860 }
861 {
862 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var_s); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:AbstractCompilerVisitor>*/
863 }
864 RET_LABEL:;
865 }
866 /* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: Object, String) */
867 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__declare_once(val* self, val* p0) {
868 abstract_compiler__AbstractCompilerVisitor__declare_once(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#declare_once on <self:Object(AbstractCompilerVisitor)>*/
869 RET_LABEL:;
870 }
871 /* method abstract_compiler#AbstractCompilerVisitor#add_extern for (self: AbstractCompilerVisitor, String) */
872 void abstract_compiler__AbstractCompilerVisitor__add_extern(val* self, val* p0) {
873 val* var_file /* var file: String */;
874 static val* varonce;
875 val* var /* : String */;
876 char* var1 /* : NativeString */;
877 long var2 /* : Int */;
878 val* var3 /* : FlatString */;
879 val* var4 /* : String */;
880 static val* varonce5;
881 val* var6 /* : String */;
882 char* var7 /* : NativeString */;
883 long var8 /* : Int */;
884 val* var9 /* : FlatString */;
885 val* var10 /* : String */;
886 val* var_tryfile /* var tryfile: String */;
887 short int var11 /* : Bool */;
888 static val* varonce12;
889 val* var13 /* : String */;
890 char* var14 /* : NativeString */;
891 long var15 /* : Int */;
892 val* var16 /* : FlatString */;
893 static val* varonce17;
894 val* var18 /* : String */;
895 char* var19 /* : NativeString */;
896 long var20 /* : Int */;
897 val* var21 /* : FlatString */;
898 val* var22 /* : String */;
899 static val* varonce23;
900 val* var24 /* : String */;
901 char* var25 /* : NativeString */;
902 long var26 /* : Int */;
903 val* var27 /* : FlatString */;
904 val* var28 /* : Array[Object] */;
905 long var29 /* : Int */;
906 val* var30 /* : NativeArray[Object] */;
907 val* var31 /* : String */;
908 val* var32 /* : AbstractCompiler */;
909 val* var34 /* : AbstractCompiler */;
910 val* var35 /* : Array[String] */;
911 val* var37 /* : Array[String] */;
912 static val* varonce38;
913 val* var39 /* : String */;
914 char* var40 /* : NativeString */;
915 long var41 /* : Int */;
916 val* var42 /* : FlatString */;
917 val* var43 /* : String */;
918 short int var44 /* : Bool */;
919 static val* varonce45;
920 val* var46 /* : String */;
921 char* var47 /* : NativeString */;
922 long var48 /* : Int */;
923 val* var49 /* : FlatString */;
924 static val* varonce50;
925 val* var51 /* : String */;
926 char* var52 /* : NativeString */;
927 long var53 /* : Int */;
928 val* var54 /* : FlatString */;
929 val* var55 /* : String */;
930 static val* varonce56;
931 val* var57 /* : String */;
932 char* var58 /* : NativeString */;
933 long var59 /* : Int */;
934 val* var60 /* : FlatString */;
935 val* var61 /* : Array[Object] */;
936 long var62 /* : Int */;
937 val* var63 /* : NativeArray[Object] */;
938 val* var64 /* : String */;
939 val* var65 /* : AbstractCompiler */;
940 val* var67 /* : AbstractCompiler */;
941 val* var68 /* : Array[String] */;
942 val* var70 /* : Array[String] */;
943 val* var71 /* : AbstractCompiler */;
944 val* var73 /* : AbstractCompiler */;
945 val* var74 /* : ArraySet[String] */;
946 val* var76 /* : ArraySet[String] */;
947 short int var77 /* : Bool */;
948 val* var78 /* : AbstractCompiler */;
949 val* var80 /* : AbstractCompiler */;
950 val* var81 /* : ArraySet[String] */;
951 val* var83 /* : ArraySet[String] */;
952 static val* varonce84;
953 val* var85 /* : String */;
954 char* var86 /* : NativeString */;
955 long var87 /* : Int */;
956 val* var88 /* : FlatString */;
957 val* var89 /* : String */;
958 short int var90 /* : Bool */;
959 short int var91 /* : Bool */;
960 static val* varonce92;
961 val* var93 /* : String */;
962 char* var94 /* : NativeString */;
963 long var95 /* : Int */;
964 val* var96 /* : FlatString */;
965 val* var97 /* : String */;
966 short int var98 /* : Bool */;
967 short int var99 /* : Bool */;
968 val* var100 /* : ExternCFile */;
969 static val* varonce101;
970 val* var102 /* : String */;
971 char* var103 /* : NativeString */;
972 long var104 /* : Int */;
973 val* var105 /* : FlatString */;
974 val* var106 /* : String */;
975 static val* varonce107;
976 val* var108 /* : String */;
977 char* var109 /* : NativeString */;
978 long var110 /* : Int */;
979 val* var111 /* : FlatString */;
980 val* var_f /* var f: ExternCFile */;
981 val* var112 /* : AbstractCompiler */;
982 val* var114 /* : AbstractCompiler */;
983 val* var115 /* : Array[ExternFile] */;
984 val* var117 /* : Array[ExternFile] */;
985 val* var118 /* : AbstractCompiler */;
986 val* var120 /* : AbstractCompiler */;
987 val* var121 /* : Array[String] */;
988 val* var123 /* : Array[String] */;
989 var_file = p0;
990 if (varonce) {
991 var = varonce;
992 } else {
993 var1 = ".nit";
994 var2 = 4;
995 var3 = string__NativeString__to_s_with_length(var1, var2);
996 var = var3;
997 varonce = var;
998 }
999 {
1000 var4 = file__String__strip_extension(var_file, var);
1001 }
1002 var_file = var4;
1003 if (varonce5) {
1004 var6 = varonce5;
1005 } else {
1006 var7 = ".nit.h";
1007 var8 = 6;
1008 var9 = string__NativeString__to_s_with_length(var7, var8);
1009 var6 = var9;
1010 varonce5 = var6;
1011 }
1012 {
1013 var10 = string__FlatString___43d(var_file, var6);
1014 }
1015 var_tryfile = var10;
1016 {
1017 var11 = file__String__file_exists(var_tryfile);
1018 }
1019 if (var11){
1020 if (varonce12) {
1021 var13 = varonce12;
1022 } else {
1023 var14 = "#include \"";
1024 var15 = 10;
1025 var16 = string__NativeString__to_s_with_length(var14, var15);
1026 var13 = var16;
1027 varonce12 = var13;
1028 }
1029 if (varonce17) {
1030 var18 = varonce17;
1031 } else {
1032 var19 = "";
1033 var20 = 0;
1034 var21 = string__NativeString__to_s_with_length(var19, var20);
1035 var18 = var21;
1036 varonce17 = var18;
1037 }
1038 {
1039 var22 = file__String__basename(var_tryfile, var18);
1040 }
1041 if (varonce23) {
1042 var24 = varonce23;
1043 } else {
1044 var25 = "\"";
1045 var26 = 1;
1046 var27 = string__NativeString__to_s_with_length(var25, var26);
1047 var24 = var27;
1048 varonce23 = var24;
1049 }
1050 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
1051 { /* var28 = array_instance Array[Object] */
1052 var29 = 3;
1053 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
1054 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var13;
1055 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var22;
1056 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var24;
1057 {
1058 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
1059 }
1060 }
1061 {
1062 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
1063 }
1064 {
1065 abstract_compiler__AbstractCompilerVisitor__declare_once(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#declare_once on <self:AbstractCompilerVisitor>*/
1066 }
1067 {
1068 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
1069 var34 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
1070 if (unlikely(var34 == NULL)) {
1071 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1072 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1073 show_backtrace(1);
1074 }
1075 var32 = var34;
1076 RET_LABEL33:(void)0;
1077 }
1078 }
1079 {
1080 { /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var32) on <var32:AbstractCompiler> */
1081 var37 = var32->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var32:AbstractCompiler> */
1082 if (unlikely(var37 == NULL)) {
1083 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
1084 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 904);
1085 show_backtrace(1);
1086 }
1087 var35 = var37;
1088 RET_LABEL36:(void)0;
1089 }
1090 }
1091 {
1092 array__Array__add(var35, var_tryfile); /* Direct call array#Array#add on <var35:Array[String]>*/
1093 }
1094 } else {
1095 }
1096 if (varonce38) {
1097 var39 = varonce38;
1098 } else {
1099 var40 = "_nit.h";
1100 var41 = 6;
1101 var42 = string__NativeString__to_s_with_length(var40, var41);
1102 var39 = var42;
1103 varonce38 = var39;
1104 }
1105 {
1106 var43 = string__FlatString___43d(var_file, var39);
1107 }
1108 var_tryfile = var43;
1109 {
1110 var44 = file__String__file_exists(var_tryfile);
1111 }
1112 if (var44){
1113 if (varonce45) {
1114 var46 = varonce45;
1115 } else {
1116 var47 = "#include \"";
1117 var48 = 10;
1118 var49 = string__NativeString__to_s_with_length(var47, var48);
1119 var46 = var49;
1120 varonce45 = var46;
1121 }
1122 if (varonce50) {
1123 var51 = varonce50;
1124 } else {
1125 var52 = "";
1126 var53 = 0;
1127 var54 = string__NativeString__to_s_with_length(var52, var53);
1128 var51 = var54;
1129 varonce50 = var51;
1130 }
1131 {
1132 var55 = file__String__basename(var_tryfile, var51);
1133 }
1134 if (varonce56) {
1135 var57 = varonce56;
1136 } else {
1137 var58 = "\"";
1138 var59 = 1;
1139 var60 = string__NativeString__to_s_with_length(var58, var59);
1140 var57 = var60;
1141 varonce56 = var57;
1142 }
1143 var61 = NEW_array__Array(&type_array__Arraykernel__Object);
1144 { /* var61 = array_instance Array[Object] */
1145 var62 = 3;
1146 var63 = NEW_array__NativeArray(var62, &type_array__NativeArraykernel__Object);
1147 ((struct instance_array__NativeArray*)var63)->values[0] = (val*) var46;
1148 ((struct instance_array__NativeArray*)var63)->values[1] = (val*) var55;
1149 ((struct instance_array__NativeArray*)var63)->values[2] = (val*) var57;
1150 {
1151 ((void (*)(val*, val*, long))(var61->class->vft[COLOR_array__Array__with_native]))(var61, var63, var62) /* with_native on <var61:Array[Object]>*/;
1152 }
1153 }
1154 {
1155 var64 = ((val* (*)(val*))(var61->class->vft[COLOR_string__Object__to_s]))(var61) /* to_s on <var61:Array[Object]>*/;
1156 }
1157 {
1158 abstract_compiler__AbstractCompilerVisitor__declare_once(self, var64); /* Direct call abstract_compiler#AbstractCompilerVisitor#declare_once on <self:AbstractCompilerVisitor>*/
1159 }
1160 {
1161 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
1162 var67 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
1163 if (unlikely(var67 == NULL)) {
1164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1165 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1166 show_backtrace(1);
1167 }
1168 var65 = var67;
1169 RET_LABEL66:(void)0;
1170 }
1171 }
1172 {
1173 { /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var65) on <var65:AbstractCompiler> */
1174 var70 = var65->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var65:AbstractCompiler> */
1175 if (unlikely(var70 == NULL)) {
1176 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
1177 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 904);
1178 show_backtrace(1);
1179 }
1180 var68 = var70;
1181 RET_LABEL69:(void)0;
1182 }
1183 }
1184 {
1185 array__Array__add(var68, var_tryfile); /* Direct call array#Array#add on <var68:Array[String]>*/
1186 }
1187 } else {
1188 }
1189 {
1190 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
1191 var73 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
1192 if (unlikely(var73 == NULL)) {
1193 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1194 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1195 show_backtrace(1);
1196 }
1197 var71 = var73;
1198 RET_LABEL72:(void)0;
1199 }
1200 }
1201 {
1202 { /* Inline abstract_compiler#AbstractCompiler#seen_extern (var71) on <var71:AbstractCompiler> */
1203 var76 = var71->attrs[COLOR_abstract_compiler__AbstractCompiler___seen_extern].val; /* _seen_extern on <var71:AbstractCompiler> */
1204 if (unlikely(var76 == NULL)) {
1205 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen_extern");
1206 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 907);
1207 show_backtrace(1);
1208 }
1209 var74 = var76;
1210 RET_LABEL75:(void)0;
1211 }
1212 }
1213 {
1214 var77 = array__ArraySet__has(var74, var_file);
1215 }
1216 if (var77){
1217 goto RET_LABEL;
1218 } else {
1219 }
1220 {
1221 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
1222 var80 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
1223 if (unlikely(var80 == NULL)) {
1224 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1225 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1226 show_backtrace(1);
1227 }
1228 var78 = var80;
1229 RET_LABEL79:(void)0;
1230 }
1231 }
1232 {
1233 { /* Inline abstract_compiler#AbstractCompiler#seen_extern (var78) on <var78:AbstractCompiler> */
1234 var83 = var78->attrs[COLOR_abstract_compiler__AbstractCompiler___seen_extern].val; /* _seen_extern on <var78:AbstractCompiler> */
1235 if (unlikely(var83 == NULL)) {
1236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _seen_extern");
1237 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 907);
1238 show_backtrace(1);
1239 }
1240 var81 = var83;
1241 RET_LABEL82:(void)0;
1242 }
1243 }
1244 {
1245 array__ArraySet__add(var81, var_file); /* Direct call array#ArraySet#add on <var81:ArraySet[String]>*/
1246 }
1247 if (varonce84) {
1248 var85 = varonce84;
1249 } else {
1250 var86 = ".nit.c";
1251 var87 = 6;
1252 var88 = string__NativeString__to_s_with_length(var86, var87);
1253 var85 = var88;
1254 varonce84 = var85;
1255 }
1256 {
1257 var89 = string__FlatString___43d(var_file, var85);
1258 }
1259 var_tryfile = var89;
1260 {
1261 var90 = file__String__file_exists(var_tryfile);
1262 }
1263 var91 = !var90;
1264 if (var91){
1265 if (varonce92) {
1266 var93 = varonce92;
1267 } else {
1268 var94 = "_nit.c";
1269 var95 = 6;
1270 var96 = string__NativeString__to_s_with_length(var94, var95);
1271 var93 = var96;
1272 varonce92 = var93;
1273 }
1274 {
1275 var97 = string__FlatString___43d(var_file, var93);
1276 }
1277 var_tryfile = var97;
1278 {
1279 var98 = file__String__file_exists(var_tryfile);
1280 }
1281 var99 = !var98;
1282 if (var99){
1283 goto RET_LABEL;
1284 } else {
1285 }
1286 } else {
1287 }
1288 var100 = NEW_c_tools__ExternCFile(&type_c_tools__ExternCFile);
1289 if (varonce101) {
1290 var102 = varonce101;
1291 } else {
1292 var103 = "";
1293 var104 = 0;
1294 var105 = string__NativeString__to_s_with_length(var103, var104);
1295 var102 = var105;
1296 varonce101 = var102;
1297 }
1298 {
1299 var106 = file__String__basename(var_tryfile, var102);
1300 }
1301 if (varonce107) {
1302 var108 = varonce107;
1303 } else {
1304 var109 = "";
1305 var110 = 0;
1306 var111 = string__NativeString__to_s_with_length(var109, var110);
1307 var108 = var111;
1308 varonce107 = var108;
1309 }
1310 {
1311 c_tools__ExternCFile__init(var100, var106, var108); /* Direct call c_tools#ExternCFile#init on <var100:ExternCFile>*/
1312 }
1313 var_f = var100;
1314 {
1315 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
1316 var114 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
1317 if (unlikely(var114 == NULL)) {
1318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1319 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1320 show_backtrace(1);
1321 }
1322 var112 = var114;
1323 RET_LABEL113:(void)0;
1324 }
1325 }
1326 {
1327 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var112) on <var112:AbstractCompiler> */
1328 var117 = var112->attrs[COLOR_abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var112:AbstractCompiler> */
1329 if (unlikely(var117 == NULL)) {
1330 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
1331 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 901);
1332 show_backtrace(1);
1333 }
1334 var115 = var117;
1335 RET_LABEL116:(void)0;
1336 }
1337 }
1338 {
1339 array__Array__add(var115, var_f); /* Direct call array#Array#add on <var115:Array[ExternFile]>*/
1340 }
1341 {
1342 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
1343 var120 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
1344 if (unlikely(var120 == NULL)) {
1345 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1346 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1347 show_backtrace(1);
1348 }
1349 var118 = var120;
1350 RET_LABEL119:(void)0;
1351 }
1352 }
1353 {
1354 { /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var118) on <var118:AbstractCompiler> */
1355 var123 = var118->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var118:AbstractCompiler> */
1356 if (unlikely(var123 == NULL)) {
1357 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
1358 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 904);
1359 show_backtrace(1);
1360 }
1361 var121 = var123;
1362 RET_LABEL122:(void)0;
1363 }
1364 }
1365 {
1366 array__Array__add(var121, var_tryfile); /* Direct call array#Array#add on <var121:Array[String]>*/
1367 }
1368 RET_LABEL:;
1369 }
1370 /* method abstract_compiler#AbstractCompilerVisitor#add_extern for (self: Object, String) */
1371 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_extern(val* self, val* p0) {
1372 abstract_compiler__AbstractCompilerVisitor__add_extern(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_extern on <self:Object(AbstractCompilerVisitor)>*/
1373 RET_LABEL:;
1374 }
1375 /* method abstract_compiler#AbstractCompilerVisitor#new_expr for (self: AbstractCompilerVisitor, String, MType): RuntimeVariable */
1376 val* abstract_compiler__AbstractCompilerVisitor__new_expr(val* self, val* p0, val* p1) {
1377 val* var /* : RuntimeVariable */;
1378 val* var_cexpr /* var cexpr: String */;
1379 val* var_mtype /* var mtype: MType */;
1380 val* var1 /* : RuntimeVariable */;
1381 val* var_res /* var res: RuntimeVariable */;
1382 static val* varonce;
1383 val* var2 /* : String */;
1384 char* var3 /* : NativeString */;
1385 long var4 /* : Int */;
1386 val* var5 /* : FlatString */;
1387 static val* varonce6;
1388 val* var7 /* : String */;
1389 char* var8 /* : NativeString */;
1390 long var9 /* : Int */;
1391 val* var10 /* : FlatString */;
1392 val* var11 /* : Array[Object] */;
1393 long var12 /* : Int */;
1394 val* var13 /* : NativeArray[Object] */;
1395 val* var14 /* : String */;
1396 var_cexpr = p0;
1397 var_mtype = p1;
1398 {
1399 var1 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_mtype);
1400 }
1401 var_res = var1;
1402 if (varonce) {
1403 var2 = varonce;
1404 } else {
1405 var3 = " = ";
1406 var4 = 3;
1407 var5 = string__NativeString__to_s_with_length(var3, var4);
1408 var2 = var5;
1409 varonce = var2;
1410 }
1411 if (varonce6) {
1412 var7 = varonce6;
1413 } else {
1414 var8 = ";";
1415 var9 = 1;
1416 var10 = string__NativeString__to_s_with_length(var8, var9);
1417 var7 = var10;
1418 varonce6 = var7;
1419 }
1420 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
1421 { /* var11 = array_instance Array[Object] */
1422 var12 = 4;
1423 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
1424 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_res;
1425 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var2;
1426 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var_cexpr;
1427 ((struct instance_array__NativeArray*)var13)->values[3] = (val*) var7;
1428 {
1429 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
1430 }
1431 }
1432 {
1433 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
1434 }
1435 {
1436 abstract_compiler__AbstractCompilerVisitor__add(self, var14); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1437 }
1438 var = var_res;
1439 goto RET_LABEL;
1440 RET_LABEL:;
1441 return var;
1442 }
1443 /* method abstract_compiler#AbstractCompilerVisitor#new_expr for (self: Object, String, MType): RuntimeVariable */
1444 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_expr(val* self, val* p0, val* p1) {
1445 val* var /* : RuntimeVariable */;
1446 val* var1 /* : RuntimeVariable */;
1447 var1 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, p0, p1);
1448 var = var1;
1449 RET_LABEL:;
1450 return var;
1451 }
1452 /* method abstract_compiler#AbstractCompilerVisitor#add_abort for (self: AbstractCompilerVisitor, String) */
1453 void abstract_compiler__AbstractCompilerVisitor__add_abort(val* self, val* p0) {
1454 val* var_message /* var message: String */;
1455 static val* varonce;
1456 val* var /* : String */;
1457 char* var1 /* : NativeString */;
1458 long var2 /* : Int */;
1459 val* var3 /* : FlatString */;
1460 val* var4 /* : String */;
1461 static val* varonce5;
1462 val* var6 /* : String */;
1463 char* var7 /* : NativeString */;
1464 long var8 /* : Int */;
1465 val* var9 /* : FlatString */;
1466 val* var10 /* : Array[Object] */;
1467 long var11 /* : Int */;
1468 val* var12 /* : NativeArray[Object] */;
1469 val* var13 /* : String */;
1470 var_message = p0;
1471 if (varonce) {
1472 var = varonce;
1473 } else {
1474 var1 = "PRINT_ERROR(\"Runtime error: %s\", \"";
1475 var2 = 34;
1476 var3 = string__NativeString__to_s_with_length(var1, var2);
1477 var = var3;
1478 varonce = var;
1479 }
1480 {
1481 var4 = string__Text__escape_to_c(var_message);
1482 }
1483 if (varonce5) {
1484 var6 = varonce5;
1485 } else {
1486 var7 = "\");";
1487 var8 = 3;
1488 var9 = string__NativeString__to_s_with_length(var7, var8);
1489 var6 = var9;
1490 varonce5 = var6;
1491 }
1492 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1493 { /* var10 = array_instance Array[Object] */
1494 var11 = 3;
1495 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
1496 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var;
1497 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var4;
1498 ((struct instance_array__NativeArray*)var12)->values[2] = (val*) var6;
1499 {
1500 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
1501 }
1502 }
1503 {
1504 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
1505 }
1506 {
1507 abstract_compiler__AbstractCompilerVisitor__add(self, var13); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1508 }
1509 {
1510 abstract_compiler__AbstractCompilerVisitor__add_raw_abort(self); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_raw_abort on <self:AbstractCompilerVisitor>*/
1511 }
1512 RET_LABEL:;
1513 }
1514 /* method abstract_compiler#AbstractCompilerVisitor#add_abort for (self: Object, String) */
1515 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_abort(val* self, val* p0) {
1516 abstract_compiler__AbstractCompilerVisitor__add_abort(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:Object(AbstractCompilerVisitor)>*/
1517 RET_LABEL:;
1518 }
1519 /* method abstract_compiler#AbstractCompilerVisitor#add_raw_abort for (self: AbstractCompilerVisitor) */
1520 void abstract_compiler__AbstractCompilerVisitor__add_raw_abort(val* self) {
1521 short int var /* : Bool */;
1522 val* var1 /* : nullable ANode */;
1523 val* var3 /* : nullable ANode */;
1524 val* var4 /* : null */;
1525 short int var5 /* : Bool */;
1526 short int var6 /* : Bool */;
1527 val* var_other /* var other: nullable Object */;
1528 short int var8 /* : Bool */;
1529 short int var9 /* : Bool */;
1530 short int var10 /* : Bool */;
1531 short int var_ /* var : Bool */;
1532 val* var11 /* : nullable ANode */;
1533 val* var13 /* : nullable ANode */;
1534 val* var14 /* : Location */;
1535 val* var16 /* : Location */;
1536 val* var17 /* : nullable SourceFile */;
1537 val* var19 /* : nullable SourceFile */;
1538 val* var20 /* : null */;
1539 short int var21 /* : Bool */;
1540 short int var22 /* : Bool */;
1541 short int var24 /* : Bool */;
1542 short int var25 /* : Bool */;
1543 short int var26 /* : Bool */;
1544 static val* varonce;
1545 val* var27 /* : String */;
1546 char* var28 /* : NativeString */;
1547 long var29 /* : Int */;
1548 val* var30 /* : FlatString */;
1549 val* var31 /* : nullable ANode */;
1550 val* var33 /* : nullable ANode */;
1551 val* var34 /* : Location */;
1552 val* var36 /* : Location */;
1553 val* var37 /* : nullable SourceFile */;
1554 val* var39 /* : nullable SourceFile */;
1555 val* var40 /* : String */;
1556 val* var42 /* : String */;
1557 val* var43 /* : String */;
1558 static val* varonce44;
1559 val* var45 /* : String */;
1560 char* var46 /* : NativeString */;
1561 long var47 /* : Int */;
1562 val* var48 /* : FlatString */;
1563 val* var49 /* : nullable ANode */;
1564 val* var51 /* : nullable ANode */;
1565 val* var52 /* : Location */;
1566 val* var54 /* : Location */;
1567 long var55 /* : Int */;
1568 long var57 /* : Int */;
1569 static val* varonce58;
1570 val* var59 /* : String */;
1571 char* var60 /* : NativeString */;
1572 long var61 /* : Int */;
1573 val* var62 /* : FlatString */;
1574 val* var63 /* : Array[Object] */;
1575 long var64 /* : Int */;
1576 val* var65 /* : NativeArray[Object] */;
1577 val* var66 /* : Object */;
1578 val* var67 /* : String */;
1579 static val* varonce68;
1580 val* var69 /* : String */;
1581 char* var70 /* : NativeString */;
1582 long var71 /* : Int */;
1583 val* var72 /* : FlatString */;
1584 static val* varonce73;
1585 val* var74 /* : String */;
1586 char* var75 /* : NativeString */;
1587 long var76 /* : Int */;
1588 val* var77 /* : FlatString */;
1589 {
1590 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
1591 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
1592 var1 = var3;
1593 RET_LABEL2:(void)0;
1594 }
1595 }
1596 var4 = NULL;
1597 if (var1 == NULL) {
1598 var5 = 0; /* is null */
1599 } else {
1600 var5 = 1; /* arg is null and recv is not */
1601 }
1602 if (0) {
1603 { /* Inline kernel#Object#!= (var1,var4) on <var1:nullable ANode> */
1604 var_other = var4;
1605 {
1606 var9 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable ANode(ANode)>*/;
1607 var8 = var9;
1608 }
1609 var10 = !var8;
1610 var6 = var10;
1611 goto RET_LABEL7;
1612 RET_LABEL7:(void)0;
1613 }
1614 var5 = var6;
1615 }
1616 var_ = var5;
1617 if (var5){
1618 {
1619 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
1620 var13 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
1621 var11 = var13;
1622 RET_LABEL12:(void)0;
1623 }
1624 }
1625 if (var11 == NULL) {
1626 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1627 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1518);
1628 show_backtrace(1);
1629 } else {
1630 { /* Inline parser_nodes#ANode#location (var11) on <var11:nullable ANode> */
1631 if (unlikely(var11 == NULL)) {
1632 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1633 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1634 show_backtrace(1);
1635 }
1636 var16 = var11->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var11:nullable ANode> */
1637 if (unlikely(var16 == NULL)) {
1638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1639 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1640 show_backtrace(1);
1641 }
1642 var14 = var16;
1643 RET_LABEL15:(void)0;
1644 }
1645 }
1646 {
1647 { /* Inline location#Location#file (var14) on <var14:Location> */
1648 var19 = var14->attrs[COLOR_location__Location___file].val; /* _file on <var14:Location> */
1649 var17 = var19;
1650 RET_LABEL18:(void)0;
1651 }
1652 }
1653 var20 = NULL;
1654 if (var17 == NULL) {
1655 var21 = 0; /* is null */
1656 } else {
1657 var21 = 1; /* arg is null and recv is not */
1658 }
1659 if (0) {
1660 { /* Inline kernel#Object#!= (var17,var20) on <var17:nullable SourceFile> */
1661 var_other = var20;
1662 {
1663 var25 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_kernel__Object___61d_61d]))(var17, var_other) /* == on <var17:nullable SourceFile(SourceFile)>*/;
1664 var24 = var25;
1665 }
1666 var26 = !var24;
1667 var22 = var26;
1668 goto RET_LABEL23;
1669 RET_LABEL23:(void)0;
1670 }
1671 var21 = var22;
1672 }
1673 var = var21;
1674 } else {
1675 var = var_;
1676 }
1677 if (var){
1678 if (varonce) {
1679 var27 = varonce;
1680 } else {
1681 var28 = "PRINT_ERROR(\" (%s:%d)\\n\", \"";
1682 var29 = 27;
1683 var30 = string__NativeString__to_s_with_length(var28, var29);
1684 var27 = var30;
1685 varonce = var27;
1686 }
1687 {
1688 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
1689 var33 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
1690 var31 = var33;
1691 RET_LABEL32:(void)0;
1692 }
1693 }
1694 if (var31 == NULL) {
1695 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1696 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1519);
1697 show_backtrace(1);
1698 } else {
1699 { /* Inline parser_nodes#ANode#location (var31) on <var31:nullable ANode> */
1700 if (unlikely(var31 == NULL)) {
1701 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1702 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1703 show_backtrace(1);
1704 }
1705 var36 = var31->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var31:nullable ANode> */
1706 if (unlikely(var36 == NULL)) {
1707 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1708 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1709 show_backtrace(1);
1710 }
1711 var34 = var36;
1712 RET_LABEL35:(void)0;
1713 }
1714 }
1715 {
1716 { /* Inline location#Location#file (var34) on <var34:Location> */
1717 var39 = var34->attrs[COLOR_location__Location___file].val; /* _file on <var34:Location> */
1718 var37 = var39;
1719 RET_LABEL38:(void)0;
1720 }
1721 }
1722 if (var37 == NULL) {
1723 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1724 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1519);
1725 show_backtrace(1);
1726 } else {
1727 { /* Inline location#SourceFile#filename (var37) on <var37:nullable SourceFile> */
1728 if (unlikely(var37 == NULL)) {
1729 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1730 PRINT_ERROR(" (%s:%d)\n", "location.nit", 22);
1731 show_backtrace(1);
1732 }
1733 var42 = var37->attrs[COLOR_location__SourceFile___filename].val; /* _filename on <var37:nullable SourceFile> */
1734 if (unlikely(var42 == NULL)) {
1735 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
1736 PRINT_ERROR(" (%s:%d)\n", "location.nit", 22);
1737 show_backtrace(1);
1738 }
1739 var40 = var42;
1740 RET_LABEL41:(void)0;
1741 }
1742 }
1743 {
1744 var43 = string__Text__escape_to_c(var40);
1745 }
1746 if (varonce44) {
1747 var45 = varonce44;
1748 } else {
1749 var46 = "\", ";
1750 var47 = 3;
1751 var48 = string__NativeString__to_s_with_length(var46, var47);
1752 var45 = var48;
1753 varonce44 = var45;
1754 }
1755 {
1756 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
1757 var51 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
1758 var49 = var51;
1759 RET_LABEL50:(void)0;
1760 }
1761 }
1762 if (var49 == NULL) {
1763 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1764 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1519);
1765 show_backtrace(1);
1766 } else {
1767 { /* Inline parser_nodes#ANode#location (var49) on <var49:nullable ANode> */
1768 if (unlikely(var49 == NULL)) {
1769 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1770 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1771 show_backtrace(1);
1772 }
1773 var54 = var49->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var49:nullable ANode> */
1774 if (unlikely(var54 == NULL)) {
1775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1776 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1777 show_backtrace(1);
1778 }
1779 var52 = var54;
1780 RET_LABEL53:(void)0;
1781 }
1782 }
1783 {
1784 { /* Inline location#Location#line_start (var52) on <var52:Location> */
1785 var57 = var52->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var52:Location> */
1786 var55 = var57;
1787 RET_LABEL56:(void)0;
1788 }
1789 }
1790 if (varonce58) {
1791 var59 = varonce58;
1792 } else {
1793 var60 = ");";
1794 var61 = 2;
1795 var62 = string__NativeString__to_s_with_length(var60, var61);
1796 var59 = var62;
1797 varonce58 = var59;
1798 }
1799 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
1800 { /* var63 = array_instance Array[Object] */
1801 var64 = 5;
1802 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
1803 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var27;
1804 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var43;
1805 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var45;
1806 var66 = BOX_kernel__Int(var55); /* autobox from Int to Object */
1807 ((struct instance_array__NativeArray*)var65)->values[3] = (val*) var66;
1808 ((struct instance_array__NativeArray*)var65)->values[4] = (val*) var59;
1809 {
1810 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
1811 }
1812 }
1813 {
1814 var67 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
1815 }
1816 {
1817 abstract_compiler__AbstractCompilerVisitor__add(self, var67); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1818 }
1819 } else {
1820 if (varonce68) {
1821 var69 = varonce68;
1822 } else {
1823 var70 = "PRINT_ERROR(\"\\n\");";
1824 var71 = 18;
1825 var72 = string__NativeString__to_s_with_length(var70, var71);
1826 var69 = var72;
1827 varonce68 = var69;
1828 }
1829 {
1830 abstract_compiler__AbstractCompilerVisitor__add(self, var69); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1831 }
1832 }
1833 if (varonce73) {
1834 var74 = varonce73;
1835 } else {
1836 var75 = "show_backtrace(1);";
1837 var76 = 18;
1838 var77 = string__NativeString__to_s_with_length(var75, var76);
1839 var74 = var77;
1840 varonce73 = var74;
1841 }
1842 {
1843 abstract_compiler__AbstractCompilerVisitor__add(self, var74); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1844 }
1845 RET_LABEL:;
1846 }
1847 /* method abstract_compiler#AbstractCompilerVisitor#add_raw_abort for (self: Object) */
1848 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_raw_abort(val* self) {
1849 abstract_compiler__AbstractCompilerVisitor__add_raw_abort(self); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_raw_abort on <self:Object(AbstractCompilerVisitor)>*/
1850 RET_LABEL:;
1851 }
1852 /* method abstract_compiler#AbstractCompilerVisitor#add_cast for (self: AbstractCompilerVisitor, RuntimeVariable, MType, String) */
1853 void abstract_compiler__AbstractCompilerVisitor__add_cast(val* self, val* p0, val* p1, val* p2) {
1854 val* var_value /* var value: RuntimeVariable */;
1855 val* var_mtype /* var mtype: MType */;
1856 val* var_tag /* var tag: String */;
1857 val* var /* : RuntimeVariable */;
1858 val* var_res /* var res: RuntimeVariable */;
1859 static val* varonce;
1860 val* var1 /* : String */;
1861 char* var2 /* : NativeString */;
1862 long var3 /* : Int */;
1863 val* var4 /* : FlatString */;
1864 static val* varonce5;
1865 val* var6 /* : String */;
1866 char* var7 /* : NativeString */;
1867 long var8 /* : Int */;
1868 val* var9 /* : FlatString */;
1869 val* var10 /* : Array[Object] */;
1870 long var11 /* : Int */;
1871 val* var12 /* : NativeArray[Object] */;
1872 val* var13 /* : String */;
1873 val* var14 /* : String */;
1874 val* var_cn /* var cn: String */;
1875 static val* varonce15;
1876 val* var16 /* : String */;
1877 char* var17 /* : NativeString */;
1878 long var18 /* : Int */;
1879 val* var19 /* : FlatString */;
1880 val* var20 /* : String */;
1881 val* var21 /* : String */;
1882 static val* varonce22;
1883 val* var23 /* : String */;
1884 char* var24 /* : NativeString */;
1885 long var25 /* : Int */;
1886 val* var26 /* : FlatString */;
1887 static val* varonce27;
1888 val* var28 /* : String */;
1889 char* var29 /* : NativeString */;
1890 long var30 /* : Int */;
1891 val* var31 /* : FlatString */;
1892 val* var32 /* : Array[Object] */;
1893 long var33 /* : Int */;
1894 val* var34 /* : NativeArray[Object] */;
1895 val* var35 /* : String */;
1896 static val* varonce36;
1897 val* var37 /* : String */;
1898 char* var38 /* : NativeString */;
1899 long var39 /* : Int */;
1900 val* var40 /* : FlatString */;
1901 var_value = p0;
1902 var_mtype = p1;
1903 var_tag = p2;
1904 {
1905 var = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test]))(self, var_value, var_mtype, var_tag) /* type_test on <self:AbstractCompilerVisitor>*/;
1906 }
1907 var_res = var;
1908 if (varonce) {
1909 var1 = varonce;
1910 } else {
1911 var2 = "if (unlikely(!";
1912 var3 = 14;
1913 var4 = string__NativeString__to_s_with_length(var2, var3);
1914 var1 = var4;
1915 varonce = var1;
1916 }
1917 if (varonce5) {
1918 var6 = varonce5;
1919 } else {
1920 var7 = ")) {";
1921 var8 = 4;
1922 var9 = string__NativeString__to_s_with_length(var7, var8);
1923 var6 = var9;
1924 varonce5 = var6;
1925 }
1926 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1927 { /* var10 = array_instance Array[Object] */
1928 var11 = 3;
1929 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
1930 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var1;
1931 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var_res;
1932 ((struct instance_array__NativeArray*)var12)->values[2] = (val*) var6;
1933 {
1934 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
1935 }
1936 }
1937 {
1938 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
1939 }
1940 {
1941 abstract_compiler__AbstractCompilerVisitor__add(self, var13); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1942 }
1943 {
1944 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__class_name_string]))(self, var_value) /* class_name_string on <self:AbstractCompilerVisitor>*/;
1945 }
1946 var_cn = var14;
1947 if (varonce15) {
1948 var16 = varonce15;
1949 } else {
1950 var17 = "PRINT_ERROR(\"Runtime error: Cast failed. Expected `%s`, got `%s`\", \"";
1951 var18 = 68;
1952 var19 = string__NativeString__to_s_with_length(var17, var18);
1953 var16 = var19;
1954 varonce15 = var16;
1955 }
1956 {
1957 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:MType>*/;
1958 }
1959 {
1960 var21 = string__Text__escape_to_c(var20);
1961 }
1962 if (varonce22) {
1963 var23 = varonce22;
1964 } else {
1965 var24 = "\", ";
1966 var25 = 3;
1967 var26 = string__NativeString__to_s_with_length(var24, var25);
1968 var23 = var26;
1969 varonce22 = var23;
1970 }
1971 if (varonce27) {
1972 var28 = varonce27;
1973 } else {
1974 var29 = ");";
1975 var30 = 2;
1976 var31 = string__NativeString__to_s_with_length(var29, var30);
1977 var28 = var31;
1978 varonce27 = var28;
1979 }
1980 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
1981 { /* var32 = array_instance Array[Object] */
1982 var33 = 5;
1983 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
1984 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var16;
1985 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var21;
1986 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
1987 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_cn;
1988 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
1989 {
1990 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
1991 }
1992 }
1993 {
1994 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
1995 }
1996 {
1997 abstract_compiler__AbstractCompilerVisitor__add(self, var35); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
1998 }
1999 {
2000 abstract_compiler__AbstractCompilerVisitor__add_raw_abort(self); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_raw_abort on <self:AbstractCompilerVisitor>*/
2001 }
2002 if (varonce36) {
2003 var37 = varonce36;
2004 } else {
2005 var38 = "}";
2006 var39 = 1;
2007 var40 = string__NativeString__to_s_with_length(var38, var39);
2008 var37 = var40;
2009 varonce36 = var37;
2010 }
2011 {
2012 abstract_compiler__AbstractCompilerVisitor__add(self, var37); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
2013 }
2014 RET_LABEL:;
2015 }
2016 /* method abstract_compiler#AbstractCompilerVisitor#add_cast for (self: Object, RuntimeVariable, MType, String) */
2017 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_cast(val* self, val* p0, val* p1, val* p2) {
2018 abstract_compiler__AbstractCompilerVisitor__add_cast(self, p0, p1, p2); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_cast on <self:Object(AbstractCompilerVisitor)>*/
2019 RET_LABEL:;
2020 }
2021 /* method abstract_compiler#AbstractCompilerVisitor#ret for (self: AbstractCompilerVisitor, RuntimeVariable) */
2022 void abstract_compiler__AbstractCompilerVisitor__ret(val* self, val* p0) {
2023 val* var_s /* var s: RuntimeVariable */;
2024 val* var /* : nullable Frame */;
2025 val* var2 /* : nullable Frame */;
2026 val* var3 /* : nullable RuntimeVariable */;
2027 val* var5 /* : nullable RuntimeVariable */;
2028 static val* varonce;
2029 val* var6 /* : String */;
2030 char* var7 /* : NativeString */;
2031 long var8 /* : Int */;
2032 val* var9 /* : FlatString */;
2033 val* var10 /* : nullable Frame */;
2034 val* var12 /* : nullable Frame */;
2035 val* var13 /* : nullable String */;
2036 val* var15 /* : nullable String */;
2037 static val* varonce16;
2038 val* var17 /* : String */;
2039 char* var18 /* : NativeString */;
2040 long var19 /* : Int */;
2041 val* var20 /* : FlatString */;
2042 val* var21 /* : Array[Object] */;
2043 long var22 /* : Int */;
2044 val* var23 /* : NativeArray[Object] */;
2045 val* var24 /* : String */;
2046 var_s = p0;
2047 {
2048 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:AbstractCompilerVisitor> */
2049 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
2050 var = var2;
2051 RET_LABEL1:(void)0;
2052 }
2053 }
2054 if (var == NULL) {
2055 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2056 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1540);
2057 show_backtrace(1);
2058 } else {
2059 { /* Inline abstract_compiler#Frame#returnvar (var) on <var:nullable Frame> */
2060 if (unlikely(var == NULL)) {
2061 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2062 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1691);
2063 show_backtrace(1);
2064 }
2065 var5 = var->attrs[COLOR_abstract_compiler__Frame___returnvar].val; /* _returnvar on <var:nullable Frame> */
2066 var3 = var5;
2067 RET_LABEL4:(void)0;
2068 }
2069 }
2070 if (unlikely(var3 == NULL)) {
2071 PRINT_ERROR("Runtime error: %s", "Cast failed");
2072 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1540);
2073 show_backtrace(1);
2074 }
2075 {
2076 abstract_compiler__AbstractCompilerVisitor__assign(self, var3, var_s); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:AbstractCompilerVisitor>*/
2077 }
2078 if (varonce) {
2079 var6 = varonce;
2080 } else {
2081 var7 = "goto ";
2082 var8 = 5;
2083 var9 = string__NativeString__to_s_with_length(var7, var8);
2084 var6 = var9;
2085 varonce = var6;
2086 }
2087 {
2088 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:AbstractCompilerVisitor> */
2089 var12 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:AbstractCompilerVisitor> */
2090 var10 = var12;
2091 RET_LABEL11:(void)0;
2092 }
2093 }
2094 if (var10 == NULL) {
2095 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2096 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1541);
2097 show_backtrace(1);
2098 } else {
2099 { /* Inline abstract_compiler#Frame#returnlabel (var10) on <var10:nullable Frame> */
2100 if (unlikely(var10 == NULL)) {
2101 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2102 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1694);
2103 show_backtrace(1);
2104 }
2105 var15 = var10->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on <var10:nullable Frame> */
2106 var13 = var15;
2107 RET_LABEL14:(void)0;
2108 }
2109 }
2110 if (unlikely(var13 == NULL)) {
2111 PRINT_ERROR("Runtime error: %s", "Cast failed");
2112 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1541);
2113 show_backtrace(1);
2114 }
2115 if (varonce16) {
2116 var17 = varonce16;
2117 } else {
2118 var18 = ";";
2119 var19 = 1;
2120 var20 = string__NativeString__to_s_with_length(var18, var19);
2121 var17 = var20;
2122 varonce16 = var17;
2123 }
2124 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
2125 { /* var21 = array_instance Array[Object] */
2126 var22 = 3;
2127 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
2128 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var6;
2129 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var13;
2130 ((struct instance_array__NativeArray*)var23)->values[2] = (val*) var17;
2131 {
2132 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
2133 }
2134 }
2135 {
2136 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
2137 }
2138 {
2139 abstract_compiler__AbstractCompilerVisitor__add(self, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
2140 }
2141 RET_LABEL:;
2142 }
2143 /* method abstract_compiler#AbstractCompilerVisitor#ret for (self: Object, RuntimeVariable) */
2144 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__ret(val* self, val* p0) {
2145 abstract_compiler__AbstractCompilerVisitor__ret(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <self:Object(AbstractCompilerVisitor)>*/
2146 RET_LABEL:;
2147 }
2148 /* method abstract_compiler#AbstractCompilerVisitor#stmt for (self: AbstractCompilerVisitor, nullable AExpr) */
2149 void abstract_compiler__AbstractCompilerVisitor__stmt(val* self, val* p0) {
2150 val* var_nexpr /* var nexpr: nullable AExpr */;
2151 val* var /* : null */;
2152 short int var1 /* : Bool */;
2153 short int var2 /* : Bool */;
2154 val* var_other /* var other: nullable Object */;
2155 short int var4 /* : Bool */;
2156 short int var6 /* : Bool */;
2157 val* var7 /* : nullable ANode */;
2158 val* var9 /* : nullable ANode */;
2159 val* var_old /* var old: nullable ANode */;
2160 var_nexpr = p0;
2161 var = NULL;
2162 if (var_nexpr == NULL) {
2163 var1 = 1; /* is null */
2164 } else {
2165 var1 = 0; /* arg is null but recv is not */
2166 }
2167 if (0) {
2168 { /* Inline kernel#Object#== (var_nexpr,var) on <var_nexpr:nullable AExpr> */
2169 var_other = var;
2170 {
2171 { /* Inline kernel#Object#is_same_instance (var_nexpr,var_other) on <var_nexpr:nullable AExpr(AExpr)> */
2172 var6 = var_nexpr == var_other;
2173 var4 = var6;
2174 goto RET_LABEL5;
2175 RET_LABEL5:(void)0;
2176 }
2177 }
2178 var2 = var4;
2179 goto RET_LABEL3;
2180 RET_LABEL3:(void)0;
2181 }
2182 var1 = var2;
2183 }
2184 if (var1){
2185 goto RET_LABEL;
2186 } else {
2187 }
2188 {
2189 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
2190 var9 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
2191 var7 = var9;
2192 RET_LABEL8:(void)0;
2193 }
2194 }
2195 var_old = var7;
2196 {
2197 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (self,var_nexpr) on <self:AbstractCompilerVisitor> */
2198 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_nexpr; /* _current_node on <self:AbstractCompilerVisitor> */
2199 RET_LABEL10:(void)0;
2200 }
2201 }
2202 {
2203 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_abstract_compiler__AExpr__stmt]))(var_nexpr, self) /* stmt on <var_nexpr:nullable AExpr(AExpr)>*/;
2204 }
2205 {
2206 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (self,var_old) on <self:AbstractCompilerVisitor> */
2207 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_old; /* _current_node on <self:AbstractCompilerVisitor> */
2208 RET_LABEL11:(void)0;
2209 }
2210 }
2211 RET_LABEL:;
2212 }
2213 /* method abstract_compiler#AbstractCompilerVisitor#stmt for (self: Object, nullable AExpr) */
2214 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__stmt(val* self, val* p0) {
2215 abstract_compiler__AbstractCompilerVisitor__stmt(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <self:Object(AbstractCompilerVisitor)>*/
2216 RET_LABEL:;
2217 }
2218 /* method abstract_compiler#AbstractCompilerVisitor#expr for (self: AbstractCompilerVisitor, AExpr, nullable MType): RuntimeVariable */
2219 val* abstract_compiler__AbstractCompilerVisitor__expr(val* self, val* p0, val* p1) {
2220 val* var /* : RuntimeVariable */;
2221 val* var_nexpr /* var nexpr: AExpr */;
2222 val* var_mtype /* var mtype: nullable MType */;
2223 val* var1 /* : nullable ANode */;
2224 val* var3 /* : nullable ANode */;
2225 val* var_old /* var old: nullable ANode */;
2226 val* var5 /* : nullable RuntimeVariable */;
2227 val* var_res /* var res: RuntimeVariable */;
2228 val* var6 /* : null */;
2229 short int var7 /* : Bool */;
2230 short int var8 /* : Bool */;
2231 val* var_other /* var other: nullable Object */;
2232 short int var10 /* : Bool */;
2233 short int var11 /* : Bool */;
2234 short int var12 /* : Bool */;
2235 val* var13 /* : MType */;
2236 val* var14 /* : RuntimeVariable */;
2237 val* var15 /* : nullable MType */;
2238 val* var16 /* : RuntimeVariable */;
2239 val* var17 /* : nullable MType */;
2240 val* var19 /* : nullable MType */;
2241 val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */;
2242 short int var20 /* : Bool */;
2243 val* var21 /* : null */;
2244 short int var22 /* : Bool */;
2245 short int var23 /* : Bool */;
2246 short int var25 /* : Bool */;
2247 short int var26 /* : Bool */;
2248 short int var27 /* : Bool */;
2249 short int var_ /* var : Bool */;
2250 val* var28 /* : AbstractCompiler */;
2251 val* var30 /* : AbstractCompiler */;
2252 val* var31 /* : ModelBuilder */;
2253 val* var33 /* : ModelBuilder */;
2254 val* var34 /* : ToolContext */;
2255 val* var36 /* : ToolContext */;
2256 val* var37 /* : OptionBool */;
2257 val* var39 /* : OptionBool */;
2258 val* var40 /* : nullable Object */;
2259 val* var42 /* : nullable Object */;
2260 short int var43 /* : Bool */;
2261 short int var44 /* : Bool */;
2262 static val* varonce;
2263 val* var45 /* : String */;
2264 char* var46 /* : NativeString */;
2265 long var47 /* : Int */;
2266 val* var48 /* : FlatString */;
2267 val* var49 /* : RuntimeVariable */;
2268 var_nexpr = p0;
2269 var_mtype = p1;
2270 {
2271 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
2272 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
2273 var1 = var3;
2274 RET_LABEL2:(void)0;
2275 }
2276 }
2277 var_old = var1;
2278 {
2279 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (self,var_nexpr) on <self:AbstractCompilerVisitor> */
2280 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_nexpr; /* _current_node on <self:AbstractCompilerVisitor> */
2281 RET_LABEL4:(void)0;
2282 }
2283 }
2284 {
2285 var5 = ((val* (*)(val*, val*))(var_nexpr->class->vft[COLOR_abstract_compiler__AExpr__expr]))(var_nexpr, self) /* expr on <var_nexpr:AExpr>*/;
2286 }
2287 if (unlikely(var5 == NULL)) {
2288 PRINT_ERROR("Runtime error: %s", "Cast failed");
2289 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1560);
2290 show_backtrace(1);
2291 }
2292 var_res = var5;
2293 var6 = NULL;
2294 if (var_mtype == NULL) {
2295 var7 = 0; /* is null */
2296 } else {
2297 var7 = 1; /* arg is null and recv is not */
2298 }
2299 if (0) {
2300 { /* Inline kernel#Object#!= (var_mtype,var6) on <var_mtype:nullable MType> */
2301 var_other = var6;
2302 {
2303 var11 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other) /* == on <var_mtype:nullable MType(MType)>*/;
2304 var10 = var11;
2305 }
2306 var12 = !var10;
2307 var8 = var12;
2308 goto RET_LABEL9;
2309 RET_LABEL9:(void)0;
2310 }
2311 var7 = var8;
2312 }
2313 if (var7){
2314 {
2315 var13 = abstract_compiler__AbstractCompilerVisitor__anchor(self, var_mtype);
2316 }
2317 var_mtype = var13;
2318 {
2319 var14 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_res, var_mtype);
2320 }
2321 var_res = var14;
2322 } else {
2323 }
2324 {
2325 var15 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
2326 }
2327 if (unlikely(var15 == NULL)) {
2328 PRINT_ERROR("Runtime error: %s", "Cast failed");
2329 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1565);
2330 show_backtrace(1);
2331 }
2332 {
2333 var16 = abstract_compiler__AbstractCompilerVisitor__autoadapt(self, var_res, var15);
2334 }
2335 var_res = var16;
2336 {
2337 { /* Inline typing#AExpr#implicit_cast_to (var_nexpr) on <var_nexpr:AExpr> */
2338 var19 = var_nexpr->attrs[COLOR_typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on <var_nexpr:AExpr> */
2339 var17 = var19;
2340 RET_LABEL18:(void)0;
2341 }
2342 }
2343 var_implicit_cast_to = var17;
2344 var21 = NULL;
2345 if (var_implicit_cast_to == NULL) {
2346 var22 = 0; /* is null */
2347 } else {
2348 var22 = 1; /* arg is null and recv is not */
2349 }
2350 if (0) {
2351 { /* Inline kernel#Object#!= (var_implicit_cast_to,var21) on <var_implicit_cast_to:nullable MType> */
2352 var_other = var21;
2353 {
2354 var26 = ((short int (*)(val*, val*))(var_implicit_cast_to->class->vft[COLOR_kernel__Object___61d_61d]))(var_implicit_cast_to, var_other) /* == on <var_implicit_cast_to:nullable MType(MType)>*/;
2355 var25 = var26;
2356 }
2357 var27 = !var25;
2358 var23 = var27;
2359 goto RET_LABEL24;
2360 RET_LABEL24:(void)0;
2361 }
2362 var22 = var23;
2363 }
2364 var_ = var22;
2365 if (var22){
2366 {
2367 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:AbstractCompilerVisitor> */
2368 var30 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:AbstractCompilerVisitor> */
2369 if (unlikely(var30 == NULL)) {
2370 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2371 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
2372 show_backtrace(1);
2373 }
2374 var28 = var30;
2375 RET_LABEL29:(void)0;
2376 }
2377 }
2378 {
2379 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var28) on <var28:AbstractCompiler> */
2380 var33 = var28->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var28:AbstractCompiler> */
2381 if (unlikely(var33 == NULL)) {
2382 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2383 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
2384 show_backtrace(1);
2385 }
2386 var31 = var33;
2387 RET_LABEL32:(void)0;
2388 }
2389 }
2390 {
2391 { /* Inline modelbuilder#ModelBuilder#toolcontext (var31) on <var31:ModelBuilder> */
2392 var36 = var31->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var31:ModelBuilder> */
2393 if (unlikely(var36 == NULL)) {
2394 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2395 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
2396 show_backtrace(1);
2397 }
2398 var34 = var36;
2399 RET_LABEL35:(void)0;
2400 }
2401 }
2402 {
2403 { /* Inline abstract_compiler#ToolContext#opt_no_check_autocast (var34) on <var34:ToolContext> */
2404 var39 = var34->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <var34:ToolContext> */
2405 if (unlikely(var39 == NULL)) {
2406 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
2407 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 55);
2408 show_backtrace(1);
2409 }
2410 var37 = var39;
2411 RET_LABEL38:(void)0;
2412 }
2413 }
2414 {
2415 { /* Inline opts#Option#value (var37) on <var37:OptionBool> */
2416 var42 = var37->attrs[COLOR_opts__Option___value].val; /* _value on <var37:OptionBool> */
2417 var40 = var42;
2418 RET_LABEL41:(void)0;
2419 }
2420 }
2421 var43 = ((struct instance_kernel__Bool*)var40)->value; /* autounbox from nullable Object to Bool */;
2422 var44 = !var43;
2423 var20 = var44;
2424 } else {
2425 var20 = var_;
2426 }
2427 if (var20){
2428 if (varonce) {
2429 var45 = varonce;
2430 } else {
2431 var46 = "auto";
2432 var47 = 4;
2433 var48 = string__NativeString__to_s_with_length(var46, var47);
2434 var45 = var48;
2435 varonce = var45;
2436 }
2437 {
2438 abstract_compiler__AbstractCompilerVisitor__add_cast(self, var_res, var_implicit_cast_to, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_cast on <self:AbstractCompilerVisitor>*/
2439 }
2440 {
2441 var49 = abstract_compiler__AbstractCompilerVisitor__autoadapt(self, var_res, var_implicit_cast_to);
2442 }
2443 var_res = var49;
2444 } else {
2445 }
2446 {
2447 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (self,var_old) on <self:AbstractCompilerVisitor> */
2448 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_old; /* _current_node on <self:AbstractCompilerVisitor> */
2449 RET_LABEL50:(void)0;
2450 }
2451 }
2452 var = var_res;
2453 goto RET_LABEL;
2454 RET_LABEL:;
2455 return var;
2456 }
2457 /* method abstract_compiler#AbstractCompilerVisitor#expr for (self: Object, AExpr, nullable MType): RuntimeVariable */
2458 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__expr(val* self, val* p0, val* p1) {
2459 val* var /* : RuntimeVariable */;
2460 val* var1 /* : RuntimeVariable */;
2461 var1 = abstract_compiler__AbstractCompilerVisitor__expr(self, p0, p1);
2462 var = var1;
2463 RET_LABEL:;
2464 return var;
2465 }
2466 /* method abstract_compiler#AbstractCompilerVisitor#expr_bool for (self: AbstractCompilerVisitor, AExpr): RuntimeVariable */
2467 val* abstract_compiler__AbstractCompilerVisitor__expr_bool(val* self, val* p0) {
2468 val* var /* : RuntimeVariable */;
2469 val* var_nexpr /* var nexpr: AExpr */;
2470 val* var1 /* : MClassType */;
2471 val* var2 /* : RuntimeVariable */;
2472 var_nexpr = p0;
2473 {
2474 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
2475 }
2476 {
2477 var2 = abstract_compiler__AbstractCompilerVisitor__expr(self, var_nexpr, var1);
2478 }
2479 var = var2;
2480 goto RET_LABEL;
2481 RET_LABEL:;
2482 return var;
2483 }
2484 /* method abstract_compiler#AbstractCompilerVisitor#expr_bool for (self: Object, AExpr): RuntimeVariable */
2485 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__expr_bool(val* self, val* p0) {
2486 val* var /* : RuntimeVariable */;
2487 val* var1 /* : RuntimeVariable */;
2488 var1 = abstract_compiler__AbstractCompilerVisitor__expr_bool(self, p0);
2489 var = var1;
2490 RET_LABEL:;
2491 return var;
2492 }
2493 /* method abstract_compiler#AbstractCompilerVisitor#debug for (self: AbstractCompilerVisitor, String) */
2494 void abstract_compiler__AbstractCompilerVisitor__debug(val* self, val* p0) {
2495 val* var_message /* var message: String */;
2496 val* var /* : nullable ANode */;
2497 val* var2 /* : nullable ANode */;
2498 val* var_node /* var node: nullable ANode */;
2499 val* var3 /* : null */;
2500 short int var4 /* : Bool */;
2501 short int var5 /* : Bool */;
2502 val* var_other /* var other: nullable Object */;
2503 short int var7 /* : Bool */;
2504 short int var9 /* : Bool */;
2505 static val* varonce;
2506 val* var10 /* : String */;
2507 char* var11 /* : NativeString */;
2508 long var12 /* : Int */;
2509 val* var13 /* : FlatString */;
2510 val* var14 /* : Array[Object] */;
2511 long var15 /* : Int */;
2512 val* var16 /* : NativeArray[Object] */;
2513 val* var17 /* : String */;
2514 static val* varonce18;
2515 val* var19 /* : String */;
2516 char* var20 /* : NativeString */;
2517 long var21 /* : Int */;
2518 val* var22 /* : FlatString */;
2519 static val* varonce23;
2520 val* var24 /* : String */;
2521 char* var25 /* : NativeString */;
2522 long var26 /* : Int */;
2523 val* var27 /* : FlatString */;
2524 val* var28 /* : Array[Object] */;
2525 long var29 /* : Int */;
2526 val* var30 /* : NativeArray[Object] */;
2527 val* var31 /* : String */;
2528 var_message = p0;
2529 {
2530 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (self) on <self:AbstractCompilerVisitor> */
2531 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <self:AbstractCompilerVisitor> */
2532 var = var2;
2533 RET_LABEL1:(void)0;
2534 }
2535 }
2536 var_node = var;
2537 var3 = NULL;
2538 if (var_node == NULL) {
2539 var4 = 1; /* is null */
2540 } else {
2541 var4 = 0; /* arg is null but recv is not */
2542 }
2543 if (0) {
2544 { /* Inline kernel#Object#== (var_node,var3) on <var_node:nullable ANode> */
2545 var_other = var3;
2546 {
2547 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ANode(ANode)> */
2548 var9 = var_node == var_other;
2549 var7 = var9;
2550 goto RET_LABEL8;
2551 RET_LABEL8:(void)0;
2552 }
2553 }
2554 var5 = var7;
2555 goto RET_LABEL6;
2556 RET_LABEL6:(void)0;
2557 }
2558 var4 = var5;
2559 }
2560 if (var4){
2561 if (varonce) {
2562 var10 = varonce;
2563 } else {
2564 var11 = "?: ";
2565 var12 = 3;
2566 var13 = string__NativeString__to_s_with_length(var11, var12);
2567 var10 = var13;
2568 varonce = var10;
2569 }
2570 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
2571 { /* var14 = array_instance Array[Object] */
2572 var15 = 2;
2573 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
2574 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var10;
2575 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_message;
2576 {
2577 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
2578 }
2579 }
2580 {
2581 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
2582 }
2583 {
2584 file__Object__print(self, var17); /* Direct call file#Object#print on <self:AbstractCompilerVisitor>*/
2585 }
2586 } else {
2587 {
2588 parser_nodes__ANode__debug(var_node, var_message); /* Direct call parser_nodes#ANode#debug on <var_node:nullable ANode(ANode)>*/
2589 }
2590 }
2591 if (varonce18) {
2592 var19 = varonce18;
2593 } else {
2594 var20 = "/* DEBUG: ";
2595 var21 = 10;
2596 var22 = string__NativeString__to_s_with_length(var20, var21);
2597 var19 = var22;
2598 varonce18 = var19;
2599 }
2600 if (varonce23) {
2601 var24 = varonce23;
2602 } else {
2603 var25 = " */";
2604 var26 = 3;
2605 var27 = string__NativeString__to_s_with_length(var25, var26);
2606 var24 = var27;
2607 varonce23 = var24;
2608 }
2609 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
2610 { /* var28 = array_instance Array[Object] */
2611 var29 = 3;
2612 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
2613 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var19;
2614 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_message;
2615 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var24;
2616 {
2617 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
2618 }
2619 }
2620 {
2621 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
2622 }
2623 {
2624 abstract_compiler__AbstractCompilerVisitor__add(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:AbstractCompilerVisitor>*/
2625 }
2626 RET_LABEL:;
2627 }
2628 /* method abstract_compiler#AbstractCompilerVisitor#debug for (self: Object, String) */
2629 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__debug(val* self, val* p0) {
2630 abstract_compiler__AbstractCompilerVisitor__debug(self, p0); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:Object(AbstractCompilerVisitor)>*/
2631 RET_LABEL:;
2632 }
2633 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef for (self: AbstractRuntimeFunction): MMethodDef */
2634 val* abstract_compiler__AbstractRuntimeFunction__mmethoddef(val* self) {
2635 val* var /* : MMethodDef */;
2636 val* var1 /* : MMethodDef */;
2637 var1 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:AbstractRuntimeFunction> */
2638 if (unlikely(var1 == NULL)) {
2639 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
2640 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
2641 show_backtrace(1);
2642 }
2643 var = var1;
2644 RET_LABEL:;
2645 return var;
2646 }
2647 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef for (self: Object): MMethodDef */
2648 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__mmethoddef(val* self) {
2649 val* var /* : MMethodDef */;
2650 val* var1 /* : MMethodDef */;
2651 val* var3 /* : MMethodDef */;
2652 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:Object(AbstractRuntimeFunction)> */
2653 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:Object(AbstractRuntimeFunction)> */
2654 if (unlikely(var3 == NULL)) {
2655 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
2656 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
2657 show_backtrace(1);
2658 }
2659 var1 = var3;
2660 RET_LABEL2:(void)0;
2661 }
2662 var = var1;
2663 RET_LABEL:;
2664 return var;
2665 }
2666 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef= for (self: AbstractRuntimeFunction, MMethodDef) */
2667 void abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d(val* self, val* p0) {
2668 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val = p0; /* _mmethoddef on <self:AbstractRuntimeFunction> */
2669 RET_LABEL:;
2670 }
2671 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef= for (self: Object, MMethodDef) */
2672 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d(val* self, val* p0) {
2673 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef= (self,p0) on <self:Object(AbstractRuntimeFunction)> */
2674 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val = p0; /* _mmethoddef on <self:Object(AbstractRuntimeFunction)> */
2675 RET_LABEL1:(void)0;
2676 }
2677 RET_LABEL:;
2678 }
2679 /* method abstract_compiler#AbstractRuntimeFunction#c_name for (self: AbstractRuntimeFunction): String */
2680 val* abstract_compiler__AbstractRuntimeFunction__c_name(val* self) {
2681 val* var /* : String */;
2682 val* var1 /* : nullable String */;
2683 val* var3 /* : nullable String */;
2684 val* var_res /* var res: nullable String */;
2685 val* var4 /* : null */;
2686 short int var5 /* : Bool */;
2687 short int var6 /* : Bool */;
2688 val* var_other /* var other: nullable Object */;
2689 short int var8 /* : Bool */;
2690 short int var9 /* : Bool */;
2691 short int var10 /* : Bool */;
2692 val* var11 /* : String */;
2693 {
2694 { /* Inline abstract_compiler#AbstractRuntimeFunction#c_name_cache (self) on <self:AbstractRuntimeFunction> */
2695 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___c_name_cache].val; /* _c_name_cache on <self:AbstractRuntimeFunction> */
2696 var1 = var3;
2697 RET_LABEL2:(void)0;
2698 }
2699 }
2700 var_res = var1;
2701 var4 = NULL;
2702 if (var_res == NULL) {
2703 var5 = 0; /* is null */
2704 } else {
2705 var5 = 1; /* arg is null and recv is not */
2706 }
2707 if (0) {
2708 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
2709 var_other = var4;
2710 {
2711 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
2712 var8 = var9;
2713 }
2714 var10 = !var8;
2715 var6 = var10;
2716 goto RET_LABEL7;
2717 RET_LABEL7:(void)0;
2718 }
2719 var5 = var6;
2720 }
2721 if (var5){
2722 var = var_res;
2723 goto RET_LABEL;
2724 } else {
2725 }
2726 {
2727 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__build_c_name]))(self) /* build_c_name on <self:AbstractRuntimeFunction>*/;
2728 }
2729 var_res = var11;
2730 {
2731 { /* Inline abstract_compiler#AbstractRuntimeFunction#c_name_cache= (self,var_res) on <self:AbstractRuntimeFunction> */
2732 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___c_name_cache].val = var_res; /* _c_name_cache on <self:AbstractRuntimeFunction> */
2733 RET_LABEL12:(void)0;
2734 }
2735 }
2736 var = var_res;
2737 goto RET_LABEL;
2738 RET_LABEL:;
2739 return var;
2740 }
2741 /* method abstract_compiler#AbstractRuntimeFunction#c_name for (self: Object): String */
2742 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__c_name(val* self) {
2743 val* var /* : String */;
2744 val* var1 /* : String */;
2745 var1 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
2746 var = var1;
2747 RET_LABEL:;
2748 return var;
2749 }
2750 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache for (self: AbstractRuntimeFunction): nullable String */
2751 val* abstract_compiler__AbstractRuntimeFunction__c_name_cache(val* self) {
2752 val* var /* : nullable String */;
2753 val* var1 /* : nullable String */;
2754 var1 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___c_name_cache].val; /* _c_name_cache on <self:AbstractRuntimeFunction> */
2755 var = var1;
2756 RET_LABEL:;
2757 return var;
2758 }
2759 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache for (self: Object): nullable String */
2760 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__c_name_cache(val* self) {
2761 val* var /* : nullable String */;
2762 val* var1 /* : nullable String */;
2763 val* var3 /* : nullable String */;
2764 { /* Inline abstract_compiler#AbstractRuntimeFunction#c_name_cache (self) on <self:Object(AbstractRuntimeFunction)> */
2765 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___c_name_cache].val; /* _c_name_cache on <self:Object(AbstractRuntimeFunction)> */
2766 var1 = var3;
2767 RET_LABEL2:(void)0;
2768 }
2769 var = var1;
2770 RET_LABEL:;
2771 return var;
2772 }
2773 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache= for (self: AbstractRuntimeFunction, nullable String) */
2774 void abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d(val* self, val* p0) {
2775 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___c_name_cache].val = p0; /* _c_name_cache on <self:AbstractRuntimeFunction> */
2776 RET_LABEL:;
2777 }
2778 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache= for (self: Object, nullable String) */
2779 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d(val* self, val* p0) {
2780 { /* Inline abstract_compiler#AbstractRuntimeFunction#c_name_cache= (self,p0) on <self:Object(AbstractRuntimeFunction)> */
2781 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___c_name_cache].val = p0; /* _c_name_cache on <self:Object(AbstractRuntimeFunction)> */
2782 RET_LABEL1:(void)0;
2783 }
2784 RET_LABEL:;
2785 }
2786 /* method abstract_compiler#AbstractRuntimeFunction#init for (self: AbstractRuntimeFunction) */
2787 void abstract_compiler__AbstractRuntimeFunction__init(val* self) {
2788 {
2789 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(self) /* init on <self:AbstractRuntimeFunction>*/;
2790 }
2791 RET_LABEL:;
2792 }
2793 /* method abstract_compiler#AbstractRuntimeFunction#init for (self: Object) */
2794 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__init(val* self) {
2795 { /* Inline abstract_compiler#AbstractRuntimeFunction#init (self) on <self:Object(AbstractRuntimeFunction)> */
2796 {
2797 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(self) /* init on <self:Object(AbstractRuntimeFunction)>*/;
2798 }
2799 RET_LABEL1:(void)0;
2800 }
2801 RET_LABEL:;
2802 }
2803 /* method abstract_compiler#RuntimeVariable#name for (self: RuntimeVariable): String */
2804 val* abstract_compiler__RuntimeVariable__name(val* self) {
2805 val* var /* : String */;
2806 val* var1 /* : String */;
2807 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val; /* _name on <self:RuntimeVariable> */
2808 if (unlikely(var1 == NULL)) {
2809 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2810 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1631);
2811 show_backtrace(1);
2812 }
2813 var = var1;
2814 RET_LABEL:;
2815 return var;
2816 }
2817 /* method abstract_compiler#RuntimeVariable#name for (self: Object): String */
2818 val* VIRTUAL_abstract_compiler__RuntimeVariable__name(val* self) {
2819 val* var /* : String */;
2820 val* var1 /* : String */;
2821 val* var3 /* : String */;
2822 { /* Inline abstract_compiler#RuntimeVariable#name (self) on <self:Object(RuntimeVariable)> */
2823 var3 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val; /* _name on <self:Object(RuntimeVariable)> */
2824 if (unlikely(var3 == NULL)) {
2825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2826 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1631);
2827 show_backtrace(1);
2828 }
2829 var1 = var3;
2830 RET_LABEL2:(void)0;
2831 }
2832 var = var1;
2833 RET_LABEL:;
2834 return var;
2835 }
2836 /* method abstract_compiler#RuntimeVariable#name= for (self: RuntimeVariable, String) */
2837 void abstract_compiler__RuntimeVariable__name_61d(val* self, val* p0) {
2838 self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val = p0; /* _name on <self:RuntimeVariable> */
2839 RET_LABEL:;
2840 }
2841 /* method abstract_compiler#RuntimeVariable#name= for (self: Object, String) */
2842 void VIRTUAL_abstract_compiler__RuntimeVariable__name_61d(val* self, val* p0) {
2843 { /* Inline abstract_compiler#RuntimeVariable#name= (self,p0) on <self:Object(RuntimeVariable)> */
2844 self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val = p0; /* _name on <self:Object(RuntimeVariable)> */
2845 RET_LABEL1:(void)0;
2846 }
2847 RET_LABEL:;
2848 }
2849 /* method abstract_compiler#RuntimeVariable#mtype for (self: RuntimeVariable): MType */
2850 val* abstract_compiler__RuntimeVariable__mtype(val* self) {
2851 val* var /* : MType */;
2852 val* var1 /* : MType */;
2853 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <self:RuntimeVariable> */
2854 if (unlikely(var1 == NULL)) {
2855 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2856 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2857 show_backtrace(1);
2858 }
2859 var = var1;
2860 RET_LABEL:;
2861 return var;
2862 }
2863 /* method abstract_compiler#RuntimeVariable#mtype for (self: Object): MType */
2864 val* VIRTUAL_abstract_compiler__RuntimeVariable__mtype(val* self) {
2865 val* var /* : MType */;
2866 val* var1 /* : MType */;
2867 val* var3 /* : MType */;
2868 { /* Inline abstract_compiler#RuntimeVariable#mtype (self) on <self:Object(RuntimeVariable)> */
2869 var3 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <self:Object(RuntimeVariable)> */
2870 if (unlikely(var3 == NULL)) {
2871 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2872 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2873 show_backtrace(1);
2874 }
2875 var1 = var3;
2876 RET_LABEL2:(void)0;
2877 }
2878 var = var1;
2879 RET_LABEL:;
2880 return var;
2881 }
2882 /* method abstract_compiler#RuntimeVariable#mtype= for (self: RuntimeVariable, MType) */
2883 void abstract_compiler__RuntimeVariable__mtype_61d(val* self, val* p0) {
2884 self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val = p0; /* _mtype on <self:RuntimeVariable> */
2885 RET_LABEL:;
2886 }
2887 /* method abstract_compiler#RuntimeVariable#mtype= for (self: Object, MType) */
2888 void VIRTUAL_abstract_compiler__RuntimeVariable__mtype_61d(val* self, val* p0) {
2889 { /* Inline abstract_compiler#RuntimeVariable#mtype= (self,p0) on <self:Object(RuntimeVariable)> */
2890 self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val = p0; /* _mtype on <self:Object(RuntimeVariable)> */
2891 RET_LABEL1:(void)0;
2892 }
2893 RET_LABEL:;
2894 }
2895 /* method abstract_compiler#RuntimeVariable#mcasttype for (self: RuntimeVariable): MType */
2896 val* abstract_compiler__RuntimeVariable__mcasttype(val* self) {
2897 val* var /* : MType */;
2898 val* var1 /* : MType */;
2899 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <self:RuntimeVariable> */
2900 if (unlikely(var1 == NULL)) {
2901 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2902 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2903 show_backtrace(1);
2904 }
2905 var = var1;
2906 RET_LABEL:;
2907 return var;
2908 }
2909 /* method abstract_compiler#RuntimeVariable#mcasttype for (self: Object): MType */
2910 val* VIRTUAL_abstract_compiler__RuntimeVariable__mcasttype(val* self) {
2911 val* var /* : MType */;
2912 val* var1 /* : MType */;
2913 val* var3 /* : MType */;
2914 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (self) on <self:Object(RuntimeVariable)> */
2915 var3 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <self:Object(RuntimeVariable)> */
2916 if (unlikely(var3 == NULL)) {
2917 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2918 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2919 show_backtrace(1);
2920 }
2921 var1 = var3;
2922 RET_LABEL2:(void)0;
2923 }
2924 var = var1;
2925 RET_LABEL:;
2926 return var;
2927 }
2928 /* method abstract_compiler#RuntimeVariable#mcasttype= for (self: RuntimeVariable, MType) */
2929 void abstract_compiler__RuntimeVariable__mcasttype_61d(val* self, val* p0) {
2930 self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val = p0; /* _mcasttype on <self:RuntimeVariable> */
2931 RET_LABEL:;
2932 }
2933 /* method abstract_compiler#RuntimeVariable#mcasttype= for (self: Object, MType) */
2934 void VIRTUAL_abstract_compiler__RuntimeVariable__mcasttype_61d(val* self, val* p0) {
2935 { /* Inline abstract_compiler#RuntimeVariable#mcasttype= (self,p0) on <self:Object(RuntimeVariable)> */
2936 self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val = p0; /* _mcasttype on <self:Object(RuntimeVariable)> */
2937 RET_LABEL1:(void)0;
2938 }
2939 RET_LABEL:;
2940 }
2941 /* method abstract_compiler#RuntimeVariable#is_exact for (self: RuntimeVariable): Bool */
2942 short int abstract_compiler__RuntimeVariable__is_exact(val* self) {
2943 short int var /* : Bool */;
2944 short int var1 /* : Bool */;
2945 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s; /* _is_exact on <self:RuntimeVariable> */
2946 var = var1;
2947 RET_LABEL:;
2948 return var;
2949 }
2950 /* method abstract_compiler#RuntimeVariable#is_exact for (self: Object): Bool */
2951 short int VIRTUAL_abstract_compiler__RuntimeVariable__is_exact(val* self) {
2952 short int var /* : Bool */;
2953 short int var1 /* : Bool */;
2954 short int var3 /* : Bool */;
2955 { /* Inline abstract_compiler#RuntimeVariable#is_exact (self) on <self:Object(RuntimeVariable)> */
2956 var3 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s; /* _is_exact on <self:Object(RuntimeVariable)> */
2957 var1 = var3;
2958 RET_LABEL2:(void)0;
2959 }
2960 var = var1;
2961 RET_LABEL:;
2962 return var;
2963 }
2964 /* method abstract_compiler#RuntimeVariable#is_exact= for (self: RuntimeVariable, Bool) */
2965 void abstract_compiler__RuntimeVariable__is_exact_61d(val* self, short int p0) {
2966 self->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s = p0; /* _is_exact on <self:RuntimeVariable> */
2967 RET_LABEL:;
2968 }
2969 /* method abstract_compiler#RuntimeVariable#is_exact= for (self: Object, Bool) */
2970 void VIRTUAL_abstract_compiler__RuntimeVariable__is_exact_61d(val* self, short int p0) {
2971 { /* Inline abstract_compiler#RuntimeVariable#is_exact= (self,p0) on <self:Object(RuntimeVariable)> */
2972 self->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s = p0; /* _is_exact on <self:Object(RuntimeVariable)> */
2973 RET_LABEL1:(void)0;
2974 }
2975 RET_LABEL:;
2976 }
2977 /* method abstract_compiler#RuntimeVariable#init for (self: RuntimeVariable, String, MType, MType) */
2978 void abstract_compiler__RuntimeVariable__init(val* self, val* p0, val* p1, val* p2) {
2979 val* var_name /* var name: String */;
2980 val* var_mtype /* var mtype: MType */;
2981 val* var_mcasttype /* var mcasttype: MType */;
2982 short int var /* : Bool */;
2983 short int var4 /* : Bool */;
2984 short int var5 /* : Bool */;
2985 short int var6 /* : Bool */;
2986 var_name = p0;
2987 var_mtype = p1;
2988 var_mcasttype = p2;
2989 {
2990 { /* Inline abstract_compiler#RuntimeVariable#name= (self,var_name) on <self:RuntimeVariable> */
2991 self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val = var_name; /* _name on <self:RuntimeVariable> */
2992 RET_LABEL1:(void)0;
2993 }
2994 }
2995 {
2996 { /* Inline abstract_compiler#RuntimeVariable#mtype= (self,var_mtype) on <self:RuntimeVariable> */
2997 self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val = var_mtype; /* _mtype on <self:RuntimeVariable> */
2998 RET_LABEL2:(void)0;
2999 }
3000 }
3001 {
3002 { /* Inline abstract_compiler#RuntimeVariable#mcasttype= (self,var_mcasttype) on <self:RuntimeVariable> */
3003 self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val = var_mcasttype; /* _mcasttype on <self:RuntimeVariable> */
3004 RET_LABEL3:(void)0;
3005 }
3006 }
3007 {
3008 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
3009 }
3010 var4 = !var;
3011 if (unlikely(!var4)) {
3012 PRINT_ERROR("Runtime error: %s", "Assert failed");
3013 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1649);
3014 show_backtrace(1);
3015 }
3016 {
3017 var5 = ((short int (*)(val*))(var_mcasttype->class->vft[COLOR_model__MType__need_anchor]))(var_mcasttype) /* need_anchor on <var_mcasttype:MType>*/;
3018 }
3019 var6 = !var5;
3020 if (unlikely(!var6)) {
3021 PRINT_ERROR("Runtime error: %s", "Assert failed");
3022 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1650);
3023 show_backtrace(1);
3024 }
3025 RET_LABEL:;
3026 }
3027 /* method abstract_compiler#RuntimeVariable#init for (self: Object, String, MType, MType) */
3028 void VIRTUAL_abstract_compiler__RuntimeVariable__init(val* self, val* p0, val* p1, val* p2) {
3029 abstract_compiler__RuntimeVariable__init(self, p0, p1, p2); /* Direct call abstract_compiler#RuntimeVariable#init on <self:Object(RuntimeVariable)>*/
3030 RET_LABEL:;
3031 }
3032 /* method abstract_compiler#RuntimeVariable#to_s for (self: RuntimeVariable): String */
3033 val* abstract_compiler__RuntimeVariable__to_s(val* self) {
3034 val* var /* : String */;
3035 val* var1 /* : String */;
3036 val* var3 /* : String */;
3037 {
3038 { /* Inline abstract_compiler#RuntimeVariable#name (self) on <self:RuntimeVariable> */
3039 var3 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val; /* _name on <self:RuntimeVariable> */
3040 if (unlikely(var3 == NULL)) {
3041 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3042 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1631);
3043 show_backtrace(1);
3044 }
3045 var1 = var3;
3046 RET_LABEL2:(void)0;
3047 }
3048 }
3049 var = var1;
3050 goto RET_LABEL;
3051 RET_LABEL:;
3052 return var;
3053 }
3054 /* method abstract_compiler#RuntimeVariable#to_s for (self: Object): String */
3055 val* VIRTUAL_abstract_compiler__RuntimeVariable__to_s(val* self) {
3056 val* var /* : String */;
3057 val* var1 /* : String */;
3058 var1 = abstract_compiler__RuntimeVariable__to_s(self);
3059 var = var1;
3060 RET_LABEL:;
3061 return var;
3062 }
3063 /* method abstract_compiler#RuntimeVariable#inspect for (self: RuntimeVariable): String */
3064 val* abstract_compiler__RuntimeVariable__inspect(val* self) {
3065 val* var /* : String */;
3066 short int var1 /* : Bool */;
3067 short int var3 /* : Bool */;
3068 static val* varonce;
3069 val* var4 /* : String */;
3070 char* var5 /* : NativeString */;
3071 long var6 /* : Int */;
3072 val* var7 /* : FlatString */;
3073 val* var_exact_str /* var exact_str: nullable Object */;
3074 static val* varonce8;
3075 val* var9 /* : String */;
3076 char* var10 /* : NativeString */;
3077 long var11 /* : Int */;
3078 val* var12 /* : FlatString */;
3079 val* var13 /* : MType */;
3080 val* var15 /* : MType */;
3081 val* var16 /* : MType */;
3082 val* var18 /* : MType */;
3083 short int var19 /* : Bool */;
3084 short int var20 /* : Bool */;
3085 val* var_other /* var other: nullable Object */;
3086 short int var22 /* : Bool */;
3087 short int var24 /* : Bool */;
3088 val* var25 /* : MType */;
3089 val* var27 /* : MType */;
3090 val* var28 /* : Array[Object] */;
3091 long var29 /* : Int */;
3092 val* var30 /* : NativeArray[Object] */;
3093 val* var31 /* : String */;
3094 val* var_type_str /* var type_str: nullable Object */;
3095 val* var32 /* : MType */;
3096 val* var34 /* : MType */;
3097 static val* varonce35;
3098 val* var36 /* : String */;
3099 char* var37 /* : NativeString */;
3100 long var38 /* : Int */;
3101 val* var39 /* : FlatString */;
3102 val* var40 /* : MType */;
3103 val* var42 /* : MType */;
3104 static val* varonce43;
3105 val* var44 /* : String */;
3106 char* var45 /* : NativeString */;
3107 long var46 /* : Int */;
3108 val* var47 /* : FlatString */;
3109 val* var48 /* : Array[Object] */;
3110 long var49 /* : Int */;
3111 val* var50 /* : NativeArray[Object] */;
3112 val* var51 /* : String */;
3113 static val* varonce52;
3114 val* var53 /* : String */;
3115 char* var54 /* : NativeString */;
3116 long var55 /* : Int */;
3117 val* var56 /* : FlatString */;
3118 val* var57 /* : String */;
3119 val* var59 /* : String */;
3120 static val* varonce60;
3121 val* var61 /* : String */;
3122 char* var62 /* : NativeString */;
3123 long var63 /* : Int */;
3124 val* var64 /* : FlatString */;
3125 static val* varonce65;
3126 val* var66 /* : String */;
3127 char* var67 /* : NativeString */;
3128 long var68 /* : Int */;
3129 val* var69 /* : FlatString */;
3130 val* var70 /* : Array[Object] */;
3131 long var71 /* : Int */;
3132 val* var72 /* : NativeArray[Object] */;
3133 val* var73 /* : String */;
3134 {
3135 { /* Inline abstract_compiler#RuntimeVariable#is_exact (self) on <self:RuntimeVariable> */
3136 var3 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s; /* _is_exact on <self:RuntimeVariable> */
3137 var1 = var3;
3138 RET_LABEL2:(void)0;
3139 }
3140 }
3141 if (var1){
3142 if (varonce) {
3143 var4 = varonce;
3144 } else {
3145 var5 = " exact";
3146 var6 = 6;
3147 var7 = string__NativeString__to_s_with_length(var5, var6);
3148 var4 = var7;
3149 varonce = var4;
3150 }
3151 var_exact_str = var4;
3152 } else {
3153 if (varonce8) {
3154 var9 = varonce8;
3155 } else {
3156 var10 = "";
3157 var11 = 0;
3158 var12 = string__NativeString__to_s_with_length(var10, var11);
3159 var9 = var12;
3160 varonce8 = var9;
3161 }
3162 var_exact_str = var9;
3163 }
3164 {
3165 { /* Inline abstract_compiler#RuntimeVariable#mtype (self) on <self:RuntimeVariable> */
3166 var15 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <self:RuntimeVariable> */
3167 if (unlikely(var15 == NULL)) {
3168 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3169 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3170 show_backtrace(1);
3171 }
3172 var13 = var15;
3173 RET_LABEL14:(void)0;
3174 }
3175 }
3176 {
3177 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (self) on <self:RuntimeVariable> */
3178 var18 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <self:RuntimeVariable> */
3179 if (unlikely(var18 == NULL)) {
3180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3181 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
3182 show_backtrace(1);
3183 }
3184 var16 = var18;
3185 RET_LABEL17:(void)0;
3186 }
3187 }
3188 {
3189 { /* Inline kernel#Object#== (var13,var16) on <var13:MType> */
3190 var_other = var16;
3191 {
3192 { /* Inline kernel#Object#is_same_instance (var13,var_other) on <var13:MType> */
3193 var24 = var13 == var_other;
3194 var22 = var24;
3195 goto RET_LABEL23;
3196 RET_LABEL23:(void)0;
3197 }
3198 }
3199 var20 = var22;
3200 goto RET_LABEL21;
3201 RET_LABEL21:(void)0;
3202 }
3203 var19 = var20;
3204 }
3205 if (var19){
3206 {
3207 { /* Inline abstract_compiler#RuntimeVariable#mtype (self) on <self:RuntimeVariable> */
3208 var27 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <self:RuntimeVariable> */
3209 if (unlikely(var27 == NULL)) {
3210 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3211 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3212 show_backtrace(1);
3213 }
3214 var25 = var27;
3215 RET_LABEL26:(void)0;
3216 }
3217 }
3218 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
3219 { /* var28 = array_instance Array[Object] */
3220 var29 = 2;
3221 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
3222 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var25;
3223 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_exact_str;
3224 {
3225 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
3226 }
3227 }
3228 {
3229 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
3230 }
3231 var_type_str = var31;
3232 } else {
3233 {
3234 { /* Inline abstract_compiler#RuntimeVariable#mtype (self) on <self:RuntimeVariable> */
3235 var34 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <self:RuntimeVariable> */
3236 if (unlikely(var34 == NULL)) {
3237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3238 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3239 show_backtrace(1);
3240 }
3241 var32 = var34;
3242 RET_LABEL33:(void)0;
3243 }
3244 }
3245 if (varonce35) {
3246 var36 = varonce35;
3247 } else {
3248 var37 = "(";
3249 var38 = 1;
3250 var39 = string__NativeString__to_s_with_length(var37, var38);
3251 var36 = var39;
3252 varonce35 = var36;
3253 }
3254 {
3255 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (self) on <self:RuntimeVariable> */
3256 var42 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <self:RuntimeVariable> */
3257 if (unlikely(var42 == NULL)) {
3258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3259 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
3260 show_backtrace(1);
3261 }
3262 var40 = var42;
3263 RET_LABEL41:(void)0;
3264 }
3265 }
3266 if (varonce43) {
3267 var44 = varonce43;
3268 } else {
3269 var45 = ")";
3270 var46 = 1;
3271 var47 = string__NativeString__to_s_with_length(var45, var46);
3272 var44 = var47;
3273 varonce43 = var44;
3274 }
3275 var48 = NEW_array__Array(&type_array__Arraykernel__Object);
3276 { /* var48 = array_instance Array[Object] */
3277 var49 = 5;
3278 var50 = NEW_array__NativeArray(var49, &type_array__NativeArraykernel__Object);
3279 ((struct instance_array__NativeArray*)var50)->values[0] = (val*) var32;
3280 ((struct instance_array__NativeArray*)var50)->values[1] = (val*) var36;
3281 ((struct instance_array__NativeArray*)var50)->values[2] = (val*) var40;
3282 ((struct instance_array__NativeArray*)var50)->values[3] = (val*) var_exact_str;
3283 ((struct instance_array__NativeArray*)var50)->values[4] = (val*) var44;
3284 {
3285 ((void (*)(val*, val*, long))(var48->class->vft[COLOR_array__Array__with_native]))(var48, var50, var49) /* with_native on <var48:Array[Object]>*/;
3286 }
3287 }
3288 {
3289 var51 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Object__to_s]))(var48) /* to_s on <var48:Array[Object]>*/;
3290 }
3291 var_type_str = var51;
3292 }
3293 if (varonce52) {
3294 var53 = varonce52;
3295 } else {
3296 var54 = "<";
3297 var55 = 1;
3298 var56 = string__NativeString__to_s_with_length(var54, var55);
3299 var53 = var56;
3300 varonce52 = var53;
3301 }
3302 {
3303 { /* Inline abstract_compiler#RuntimeVariable#name (self) on <self:RuntimeVariable> */
3304 var59 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___name].val; /* _name on <self:RuntimeVariable> */
3305 if (unlikely(var59 == NULL)) {
3306 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3307 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1631);
3308 show_backtrace(1);
3309 }
3310 var57 = var59;
3311 RET_LABEL58:(void)0;
3312 }
3313 }
3314 if (varonce60) {
3315 var61 = varonce60;
3316 } else {
3317 var62 = ":";
3318 var63 = 1;
3319 var64 = string__NativeString__to_s_with_length(var62, var63);
3320 var61 = var64;
3321 varonce60 = var61;
3322 }
3323 if (varonce65) {
3324 var66 = varonce65;
3325 } else {
3326 var67 = ">";
3327 var68 = 1;
3328 var69 = string__NativeString__to_s_with_length(var67, var68);
3329 var66 = var69;
3330 varonce65 = var66;
3331 }
3332 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
3333 { /* var70 = array_instance Array[Object] */
3334 var71 = 5;
3335 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
3336 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var53;
3337 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var57;
3338 ((struct instance_array__NativeArray*)var72)->values[2] = (val*) var61;
3339 ((struct instance_array__NativeArray*)var72)->values[3] = (val*) var_type_str;
3340 ((struct instance_array__NativeArray*)var72)->values[4] = (val*) var66;
3341 {
3342 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
3343 }
3344 }
3345 {
3346 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
3347 }
3348 var = var73;
3349 goto RET_LABEL;
3350 RET_LABEL:;
3351 return var;
3352 }
3353 /* method abstract_compiler#RuntimeVariable#inspect for (self: Object): String */
3354 val* VIRTUAL_abstract_compiler__RuntimeVariable__inspect(val* self) {
3355 val* var /* : String */;
3356 val* var1 /* : String */;
3357 var1 = abstract_compiler__RuntimeVariable__inspect(self);
3358 var = var1;
3359 RET_LABEL:;
3360 return var;
3361 }
3362 /* method abstract_compiler#Frame#visitor= for (self: Frame, AbstractCompilerVisitor) */
3363 void abstract_compiler__Frame__visitor_61d(val* self, val* p0) {
3364 short int var /* : Bool */;
3365 int cltype;
3366 int idtype;
3367 const struct type* type_struct;
3368 const char* var_class_name;
3369 /* Covariant cast for argument 0 (visitor) <p0:AbstractCompilerVisitor> isa VISITOR */
3370 /* <p0:AbstractCompilerVisitor> isa VISITOR */
3371 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__Frame_VTVISITOR];
3372 cltype = type_struct->color;
3373 idtype = type_struct->id;
3374 if(cltype >= p0->type->table_size) {
3375 var = 0;
3376 } else {
3377 var = p0->type->type_table[cltype] == idtype;
3378 }
3379 if (unlikely(!var)) {
3380 var_class_name = p0 == NULL ? "null" : p0->type->name;
3381 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
3382 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1678);
3383 show_backtrace(1);
3384 }
3385 self->attrs[COLOR_abstract_compiler__Frame___visitor].val = p0; /* _visitor on <self:Frame> */
3386 RET_LABEL:;
3387 }
3388 /* method abstract_compiler#Frame#visitor= for (self: Object, AbstractCompilerVisitor) */
3389 void VIRTUAL_abstract_compiler__Frame__visitor_61d(val* self, val* p0) {
3390 short int var /* : Bool */;
3391 int cltype;
3392 int idtype;
3393 const struct type* type_struct;
3394 const char* var_class_name;
3395 { /* Inline abstract_compiler#Frame#visitor= (self,p0) on <self:Object(Frame)> */
3396 /* Covariant cast for argument 0 (visitor) <p0:AbstractCompilerVisitor> isa VISITOR */
3397 /* <p0:AbstractCompilerVisitor> isa VISITOR */
3398 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__Frame_VTVISITOR];
3399 cltype = type_struct->color;
3400 idtype = type_struct->id;
3401 if(cltype >= p0->type->table_size) {
3402 var = 0;
3403 } else {
3404 var = p0->type->type_table[cltype] == idtype;
3405 }
3406 if (unlikely(!var)) {
3407 var_class_name = p0 == NULL ? "null" : p0->type->name;
3408 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
3409 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1678);
3410 show_backtrace(1);
3411 }
3412 self->attrs[COLOR_abstract_compiler__Frame___visitor].val = p0; /* _visitor on <self:Object(Frame)> */
3413 RET_LABEL1:(void)0;
3414 }
3415 RET_LABEL:;
3416 }
3417 /* method abstract_compiler#Frame#mpropdef for (self: Frame): MPropDef */
3418 val* abstract_compiler__Frame__mpropdef(val* self) {
3419 val* var /* : MPropDef */;
3420 val* var1 /* : MPropDef */;
3421 var1 = self->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <self:Frame> */
3422 if (unlikely(var1 == NULL)) {
3423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3424 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
3425 show_backtrace(1);
3426 }
3427 var = var1;
3428 RET_LABEL:;
3429 return var;
3430 }
3431 /* method abstract_compiler#Frame#mpropdef for (self: Object): MPropDef */
3432 val* VIRTUAL_abstract_compiler__Frame__mpropdef(val* self) {
3433 val* var /* : MPropDef */;
3434 val* var1 /* : MPropDef */;
3435 val* var3 /* : MPropDef */;
3436 { /* Inline abstract_compiler#Frame#mpropdef (self) on <self:Object(Frame)> */
3437 var3 = self->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <self:Object(Frame)> */
3438 if (unlikely(var3 == NULL)) {
3439 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3440 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
3441 show_backtrace(1);
3442 }
3443 var1 = var3;
3444 RET_LABEL2:(void)0;
3445 }
3446 var = var1;
3447 RET_LABEL:;
3448 return var;
3449 }
3450 /* method abstract_compiler#Frame#mpropdef= for (self: Frame, MPropDef) */
3451 void abstract_compiler__Frame__mpropdef_61d(val* self, val* p0) {
3452 self->attrs[COLOR_abstract_compiler__Frame___mpropdef].val = p0; /* _mpropdef on <self:Frame> */
3453 RET_LABEL:;
3454 }
3455 /* method abstract_compiler#Frame#mpropdef= for (self: Object, MPropDef) */
3456 void VIRTUAL_abstract_compiler__Frame__mpropdef_61d(val* self, val* p0) {
3457 { /* Inline abstract_compiler#Frame#mpropdef= (self,p0) on <self:Object(Frame)> */
3458 self->attrs[COLOR_abstract_compiler__Frame___mpropdef].val = p0; /* _mpropdef on <self:Object(Frame)> */
3459 RET_LABEL1:(void)0;
3460 }
3461 RET_LABEL:;
3462 }
3463 /* method abstract_compiler#Frame#receiver for (self: Frame): MClassType */
3464 val* abstract_compiler__Frame__receiver(val* self) {
3465 val* var /* : MClassType */;
3466 val* var1 /* : MClassType */;
3467 var1 = self->attrs[COLOR_abstract_compiler__Frame___receiver].val; /* _receiver on <self:Frame> */
3468 if (unlikely(var1 == NULL)) {
3469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
3470 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1685);
3471 show_backtrace(1);
3472 }
3473 var = var1;
3474 RET_LABEL:;
3475 return var;
3476 }
3477 /* method abstract_compiler#Frame#receiver for (self: Object): MClassType */
3478 val* VIRTUAL_abstract_compiler__Frame__receiver(val* self) {
3479 val* var /* : MClassType */;
3480 val* var1 /* : MClassType */;
3481 val* var3 /* : MClassType */;
3482 { /* Inline abstract_compiler#Frame#receiver (self) on <self:Object(Frame)> */
3483 var3 = self->attrs[COLOR_abstract_compiler__Frame___receiver].val; /* _receiver on <self:Object(Frame)> */
3484 if (unlikely(var3 == NULL)) {
3485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _receiver");
3486 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1685);
3487 show_backtrace(1);
3488 }
3489 var1 = var3;
3490 RET_LABEL2:(void)0;
3491 }
3492 var = var1;
3493 RET_LABEL:;
3494 return var;
3495 }
3496 /* method abstract_compiler#Frame#receiver= for (self: Frame, MClassType) */
3497 void abstract_compiler__Frame__receiver_61d(val* self, val* p0) {
3498 self->attrs[COLOR_abstract_compiler__Frame___receiver].val = p0; /* _receiver on <self:Frame> */
3499 RET_LABEL:;
3500 }
3501 /* method abstract_compiler#Frame#receiver= for (self: Object, MClassType) */
3502 void VIRTUAL_abstract_compiler__Frame__receiver_61d(val* self, val* p0) {
3503 { /* Inline abstract_compiler#Frame#receiver= (self,p0) on <self:Object(Frame)> */
3504 self->attrs[COLOR_abstract_compiler__Frame___receiver].val = p0; /* _receiver on <self:Object(Frame)> */
3505 RET_LABEL1:(void)0;
3506 }
3507 RET_LABEL:;
3508 }
3509 /* method abstract_compiler#Frame#arguments for (self: Frame): Array[RuntimeVariable] */
3510 val* abstract_compiler__Frame__arguments(val* self) {
3511 val* var /* : Array[RuntimeVariable] */;
3512 val* var1 /* : Array[RuntimeVariable] */;
3513 var1 = self->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <self:Frame> */
3514 if (unlikely(var1 == NULL)) {
3515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
3516 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
3517 show_backtrace(1);
3518 }
3519 var = var1;
3520 RET_LABEL:;
3521 return var;
3522 }
3523 /* method abstract_compiler#Frame#arguments for (self: Object): Array[RuntimeVariable] */
3524 val* VIRTUAL_abstract_compiler__Frame__arguments(val* self) {
3525 val* var /* : Array[RuntimeVariable] */;
3526 val* var1 /* : Array[RuntimeVariable] */;
3527 val* var3 /* : Array[RuntimeVariable] */;
3528 { /* Inline abstract_compiler#Frame#arguments (self) on <self:Object(Frame)> */
3529 var3 = self->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <self:Object(Frame)> */
3530 if (unlikely(var3 == NULL)) {
3531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
3532 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
3533 show_backtrace(1);
3534 }
3535 var1 = var3;
3536 RET_LABEL2:(void)0;
3537 }
3538 var = var1;
3539 RET_LABEL:;
3540 return var;
3541 }
3542 /* method abstract_compiler#Frame#arguments= for (self: Frame, Array[RuntimeVariable]) */
3543 void abstract_compiler__Frame__arguments_61d(val* self, val* p0) {
3544 self->attrs[COLOR_abstract_compiler__Frame___arguments].val = p0; /* _arguments on <self:Frame> */
3545 RET_LABEL:;
3546 }
3547 /* method abstract_compiler#Frame#arguments= for (self: Object, Array[RuntimeVariable]) */
3548 void VIRTUAL_abstract_compiler__Frame__arguments_61d(val* self, val* p0) {
3549 { /* Inline abstract_compiler#Frame#arguments= (self,p0) on <self:Object(Frame)> */
3550 self->attrs[COLOR_abstract_compiler__Frame___arguments].val = p0; /* _arguments on <self:Object(Frame)> */
3551 RET_LABEL1:(void)0;
3552 }
3553 RET_LABEL:;
3554 }
3555 /* method abstract_compiler#Frame#returnvar for (self: Frame): nullable RuntimeVariable */
3556 val* abstract_compiler__Frame__returnvar(val* self) {
3557 val* var /* : nullable RuntimeVariable */;
3558 val* var1 /* : nullable RuntimeVariable */;
3559 var1 = self->attrs[COLOR_abstract_compiler__Frame___returnvar].val; /* _returnvar on <self:Frame> */
3560 var = var1;
3561 RET_LABEL:;
3562 return var;
3563 }
3564 /* method abstract_compiler#Frame#returnvar for (self: Object): nullable RuntimeVariable */
3565 val* VIRTUAL_abstract_compiler__Frame__returnvar(val* self) {
3566 val* var /* : nullable RuntimeVariable */;
3567 val* var1 /* : nullable RuntimeVariable */;
3568 val* var3 /* : nullable RuntimeVariable */;
3569 { /* Inline abstract_compiler#Frame#returnvar (self) on <self:Object(Frame)> */
3570 var3 = self->attrs[COLOR_abstract_compiler__Frame___returnvar].val; /* _returnvar on <self:Object(Frame)> */
3571 var1 = var3;
3572 RET_LABEL2:(void)0;
3573 }
3574 var = var1;
3575 RET_LABEL:;
3576 return var;
3577 }
3578 /* method abstract_compiler#Frame#returnvar= for (self: Frame, nullable RuntimeVariable) */
3579 void abstract_compiler__Frame__returnvar_61d(val* self, val* p0) {
3580 self->attrs[COLOR_abstract_compiler__Frame___returnvar].val = p0; /* _returnvar on <self:Frame> */
3581 RET_LABEL:;
3582 }
3583 /* method abstract_compiler#Frame#returnvar= for (self: Object, nullable RuntimeVariable) */
3584 void VIRTUAL_abstract_compiler__Frame__returnvar_61d(val* self, val* p0) {
3585 { /* Inline abstract_compiler#Frame#returnvar= (self,p0) on <self:Object(Frame)> */
3586 self->attrs[COLOR_abstract_compiler__Frame___returnvar].val = p0; /* _returnvar on <self:Object(Frame)> */
3587 RET_LABEL1:(void)0;
3588 }
3589 RET_LABEL:;
3590 }
3591 /* method abstract_compiler#Frame#returnlabel for (self: Frame): nullable String */
3592 val* abstract_compiler__Frame__returnlabel(val* self) {
3593 val* var /* : nullable String */;
3594 val* var1 /* : nullable String */;
3595 var1 = self->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on <self:Frame> */
3596 var = var1;
3597 RET_LABEL:;
3598 return var;
3599 }
3600 /* method abstract_compiler#Frame#returnlabel for (self: Object): nullable String */
3601 val* VIRTUAL_abstract_compiler__Frame__returnlabel(val* self) {
3602 val* var /* : nullable String */;
3603 val* var1 /* : nullable String */;
3604 val* var3 /* : nullable String */;
3605 { /* Inline abstract_compiler#Frame#returnlabel (self) on <self:Object(Frame)> */
3606 var3 = self->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on <self:Object(Frame)> */
3607 var1 = var3;
3608 RET_LABEL2:(void)0;
3609 }
3610 var = var1;
3611 RET_LABEL:;
3612 return var;
3613 }
3614 /* method abstract_compiler#Frame#returnlabel= for (self: Frame, nullable String) */
3615 void abstract_compiler__Frame__returnlabel_61d(val* self, val* p0) {
3616 self->attrs[COLOR_abstract_compiler__Frame___returnlabel].val = p0; /* _returnlabel on <self:Frame> */
3617 RET_LABEL:;
3618 }
3619 /* method abstract_compiler#Frame#returnlabel= for (self: Object, nullable String) */
3620 void VIRTUAL_abstract_compiler__Frame__returnlabel_61d(val* self, val* p0) {
3621 { /* Inline abstract_compiler#Frame#returnlabel= (self,p0) on <self:Object(Frame)> */
3622 self->attrs[COLOR_abstract_compiler__Frame___returnlabel].val = p0; /* _returnlabel on <self:Object(Frame)> */
3623 RET_LABEL1:(void)0;
3624 }
3625 RET_LABEL:;
3626 }
3627 /* method abstract_compiler#Frame#init for (self: Frame) */
3628 void abstract_compiler__Frame__init(val* self) {
3629 {
3630 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__Frame__init]))(self) /* init on <self:Frame>*/;
3631 }
3632 RET_LABEL:;
3633 }
3634 /* method abstract_compiler#Frame#init for (self: Object) */
3635 void VIRTUAL_abstract_compiler__Frame__init(val* self) {
3636 { /* Inline abstract_compiler#Frame#init (self) on <self:Object(Frame)> */
3637 {
3638 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__Frame__init]))(self) /* init on <self:Object(Frame)>*/;
3639 }
3640 RET_LABEL1:(void)0;
3641 }
3642 RET_LABEL:;
3643 }
3644 /* method abstract_compiler#MType#ctype for (self: MType): String */
3645 val* abstract_compiler__MType__ctype(val* self) {
3646 val* var /* : String */;
3647 static val* varonce;
3648 val* var1 /* : String */;
3649 char* var2 /* : NativeString */;
3650 long var3 /* : Int */;
3651 val* var4 /* : FlatString */;
3652 if (varonce) {
3653 var1 = varonce;
3654 } else {
3655 var2 = "val*";
3656 var3 = 4;
3657 var4 = string__NativeString__to_s_with_length(var2, var3);
3658 var1 = var4;
3659 varonce = var1;
3660 }
3661 var = var1;
3662 goto RET_LABEL;
3663 RET_LABEL:;
3664 return var;
3665 }
3666 /* method abstract_compiler#MType#ctype for (self: Object): String */
3667 val* VIRTUAL_abstract_compiler__MType__ctype(val* self) {
3668 val* var /* : String */;
3669 val* var1 /* : String */;
3670 var1 = abstract_compiler__MType__ctype(self);
3671 var = var1;
3672 RET_LABEL:;
3673 return var;
3674 }
3675 /* method abstract_compiler#MType#ctype_extern for (self: MType): String */
3676 val* abstract_compiler__MType__ctype_extern(val* self) {
3677 val* var /* : String */;
3678 static val* varonce;
3679 val* var1 /* : String */;
3680 char* var2 /* : NativeString */;
3681 long var3 /* : Int */;
3682 val* var4 /* : FlatString */;
3683 if (varonce) {
3684 var1 = varonce;
3685 } else {
3686 var2 = "val*";
3687 var3 = 4;
3688 var4 = string__NativeString__to_s_with_length(var2, var3);
3689 var1 = var4;
3690 varonce = var1;
3691 }
3692 var = var1;
3693 goto RET_LABEL;
3694 RET_LABEL:;
3695 return var;
3696 }
3697 /* method abstract_compiler#MType#ctype_extern for (self: Object): String */
3698 val* VIRTUAL_abstract_compiler__MType__ctype_extern(val* self) {
3699 val* var /* : String */;
3700 val* var1 /* : String */;
3701 var1 = abstract_compiler__MType__ctype_extern(self);
3702 var = var1;
3703 RET_LABEL:;
3704 return var;
3705 }
3706 /* method abstract_compiler#MType#ctypename for (self: MType): String */
3707 val* abstract_compiler__MType__ctypename(val* self) {
3708 val* var /* : String */;
3709 static val* varonce;
3710 val* var1 /* : String */;
3711 char* var2 /* : NativeString */;
3712 long var3 /* : Int */;
3713 val* var4 /* : FlatString */;
3714 if (varonce) {
3715 var1 = varonce;
3716 } else {
3717 var2 = "val";
3718 var3 = 3;
3719 var4 = string__NativeString__to_s_with_length(var2, var3);
3720 var1 = var4;
3721 varonce = var1;
3722 }
3723 var = var1;
3724 goto RET_LABEL;
3725 RET_LABEL:;
3726 return var;
3727 }
3728 /* method abstract_compiler#MType#ctypename for (self: Object): String */
3729 val* VIRTUAL_abstract_compiler__MType__ctypename(val* self) {
3730 val* var /* : String */;
3731 val* var1 /* : String */;
3732 var1 = abstract_compiler__MType__ctypename(self);
3733 var = var1;
3734 RET_LABEL:;
3735 return var;
3736 }
3737 /* method abstract_compiler#MType#c_name for (self: MType): String */
3738 val* abstract_compiler__MType__c_name(val* self) {
3739 val* var /* : String */;
3740 const char* var_class_name;
3741 var_class_name = self == NULL ? "null" : self->type->name;
3742 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "c_name", var_class_name);
3743 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1708);
3744 show_backtrace(1);
3745 RET_LABEL:;
3746 return var;
3747 }
3748 /* method abstract_compiler#MType#c_name for (self: Object): String */
3749 val* VIRTUAL_abstract_compiler__MType__c_name(val* self) {
3750 val* var /* : String */;
3751 val* var1 /* : String */;
3752 const char* var_class_name;
3753 { /* Inline abstract_compiler#MType#c_name (self) on <self:Object(MType)> */
3754 var_class_name = self == NULL ? "null" : self->type->name;
3755 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "c_name", var_class_name);
3756 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1708);
3757 show_backtrace(1);
3758 RET_LABEL2:(void)0;
3759 }
3760 var = var1;
3761 RET_LABEL:;
3762 return var;
3763 }
3764 /* method abstract_compiler#MType#c_name_cache for (self: MType): nullable String */
3765 val* abstract_compiler__MType__c_name_cache(val* self) {
3766 val* var /* : nullable String */;
3767 val* var1 /* : nullable String */;
3768 var1 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:MType> */
3769 var = var1;
3770 RET_LABEL:;
3771 return var;
3772 }
3773 /* method abstract_compiler#MType#c_name_cache for (self: Object): nullable String */
3774 val* VIRTUAL_abstract_compiler__MType__c_name_cache(val* self) {
3775 val* var /* : nullable String */;
3776 val* var1 /* : nullable String */;
3777 val* var3 /* : nullable String */;
3778 { /* Inline abstract_compiler#MType#c_name_cache (self) on <self:Object(MType)> */
3779 var3 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:Object(MType)> */
3780 var1 = var3;
3781 RET_LABEL2:(void)0;
3782 }
3783 var = var1;
3784 RET_LABEL:;
3785 return var;
3786 }
3787 /* method abstract_compiler#MType#c_name_cache= for (self: MType, nullable String) */
3788 void abstract_compiler__MType__c_name_cache_61d(val* self, val* p0) {
3789 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = p0; /* _c_name_cache on <self:MType> */
3790 RET_LABEL:;
3791 }
3792 /* method abstract_compiler#MType#c_name_cache= for (self: Object, nullable String) */
3793 void VIRTUAL_abstract_compiler__MType__c_name_cache_61d(val* self, val* p0) {
3794 { /* Inline abstract_compiler#MType#c_name_cache= (self,p0) on <self:Object(MType)> */
3795 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = p0; /* _c_name_cache on <self:Object(MType)> */
3796 RET_LABEL1:(void)0;
3797 }
3798 RET_LABEL:;
3799 }
3800 /* method abstract_compiler#MClassType#c_name for (self: MClassType): String */
3801 val* abstract_compiler__MClassType__c_name(val* self) {
3802 val* var /* : String */;
3803 val* var1 /* : nullable String */;
3804 val* var3 /* : nullable String */;
3805 val* var_res /* var res: nullable String */;
3806 val* var4 /* : null */;
3807 short int var5 /* : Bool */;
3808 short int var6 /* : Bool */;
3809 val* var_other /* var other: nullable Object */;
3810 short int var8 /* : Bool */;
3811 short int var9 /* : Bool */;
3812 short int var10 /* : Bool */;
3813 val* var11 /* : MClass */;
3814 val* var13 /* : MClass */;
3815 val* var14 /* : MModule */;
3816 val* var16 /* : MModule */;
3817 val* var17 /* : String */;
3818 val* var19 /* : String */;
3819 val* var20 /* : String */;
3820 static val* varonce;
3821 val* var21 /* : String */;
3822 char* var22 /* : NativeString */;
3823 long var23 /* : Int */;
3824 val* var24 /* : FlatString */;
3825 val* var25 /* : MClass */;
3826 val* var27 /* : MClass */;
3827 val* var28 /* : String */;
3828 val* var30 /* : String */;
3829 val* var31 /* : String */;
3830 val* var32 /* : Array[Object] */;
3831 long var33 /* : Int */;
3832 val* var34 /* : NativeArray[Object] */;
3833 val* var35 /* : String */;
3834 {
3835 { /* Inline abstract_compiler#MType#c_name_cache (self) on <self:MClassType> */
3836 var3 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:MClassType> */
3837 var1 = var3;
3838 RET_LABEL2:(void)0;
3839 }
3840 }
3841 var_res = var1;
3842 var4 = NULL;
3843 if (var_res == NULL) {
3844 var5 = 0; /* is null */
3845 } else {
3846 var5 = 1; /* arg is null and recv is not */
3847 }
3848 if (0) {
3849 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
3850 var_other = var4;
3851 {
3852 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
3853 var8 = var9;
3854 }
3855 var10 = !var8;
3856 var6 = var10;
3857 goto RET_LABEL7;
3858 RET_LABEL7:(void)0;
3859 }
3860 var5 = var6;
3861 }
3862 if (var5){
3863 var = var_res;
3864 goto RET_LABEL;
3865 } else {
3866 }
3867 {
3868 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
3869 var13 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
3870 if (unlikely(var13 == NULL)) {
3871 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3872 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
3873 show_backtrace(1);
3874 }
3875 var11 = var13;
3876 RET_LABEL12:(void)0;
3877 }
3878 }
3879 {
3880 { /* Inline model#MClass#intro_mmodule (var11) on <var11:MClass> */
3881 var16 = var11->attrs[COLOR_model__MClass___intro_mmodule].val; /* _intro_mmodule on <var11:MClass> */
3882 if (unlikely(var16 == NULL)) {
3883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
3884 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 347);
3885 show_backtrace(1);
3886 }
3887 var14 = var16;
3888 RET_LABEL15:(void)0;
3889 }
3890 }
3891 {
3892 { /* Inline mmodule#MModule#name (var14) on <var14:MModule> */
3893 var19 = var14->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var14:MModule> */
3894 if (unlikely(var19 == NULL)) {
3895 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3896 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
3897 show_backtrace(1);
3898 }
3899 var17 = var19;
3900 RET_LABEL18:(void)0;
3901 }
3902 }
3903 {
3904 var20 = string__Text__to_cmangle(var17);
3905 }
3906 if (varonce) {
3907 var21 = varonce;
3908 } else {
3909 var22 = "__";
3910 var23 = 2;
3911 var24 = string__NativeString__to_s_with_length(var22, var23);
3912 var21 = var24;
3913 varonce = var21;
3914 }
3915 {
3916 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
3917 var27 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
3918 if (unlikely(var27 == NULL)) {
3919 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3920 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
3921 show_backtrace(1);
3922 }
3923 var25 = var27;
3924 RET_LABEL26:(void)0;
3925 }
3926 }
3927 {
3928 { /* Inline model#MClass#name (var25) on <var25:MClass> */
3929 var30 = var25->attrs[COLOR_model__MClass___name].val; /* _name on <var25:MClass> */
3930 if (unlikely(var30 == NULL)) {
3931 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3932 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
3933 show_backtrace(1);
3934 }
3935 var28 = var30;
3936 RET_LABEL29:(void)0;
3937 }
3938 }
3939 {
3940 var31 = string__Text__to_cmangle(var28);
3941 }
3942 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
3943 { /* var32 = array_instance Array[Object] */
3944 var33 = 3;
3945 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
3946 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var20;
3947 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var21;
3948 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var31;
3949 {
3950 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
3951 }
3952 }
3953 {
3954 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
3955 }
3956 var_res = var35;
3957 {
3958 { /* Inline abstract_compiler#MType#c_name_cache= (self,var_res) on <self:MClassType> */
3959 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = var_res; /* _c_name_cache on <self:MClassType> */
3960 RET_LABEL36:(void)0;
3961 }
3962 }
3963 var = var_res;
3964 goto RET_LABEL;
3965 RET_LABEL:;
3966 return var;
3967 }
3968 /* method abstract_compiler#MClassType#c_name for (self: Object): String */
3969 val* VIRTUAL_abstract_compiler__MClassType__c_name(val* self) {
3970 val* var /* : String */;
3971 val* var1 /* : String */;
3972 var1 = abstract_compiler__MClassType__c_name(self);
3973 var = var1;
3974 RET_LABEL:;
3975 return var;
3976 }
3977 /* method abstract_compiler#MClassType#ctype for (self: MClassType): String */
3978 val* abstract_compiler__MClassType__ctype(val* self) {
3979 val* var /* : String */;
3980 val* var1 /* : MClass */;
3981 val* var3 /* : MClass */;
3982 val* var4 /* : String */;
3983 val* var6 /* : String */;
3984 static val* varonce;
3985 val* var7 /* : String */;
3986 char* var8 /* : NativeString */;
3987 long var9 /* : Int */;
3988 val* var10 /* : FlatString */;
3989 short int var11 /* : Bool */;
3990 short int var12 /* : Bool */;
3991 static val* varonce13;
3992 val* var14 /* : String */;
3993 char* var15 /* : NativeString */;
3994 long var16 /* : Int */;
3995 val* var17 /* : FlatString */;
3996 val* var18 /* : MClass */;
3997 val* var20 /* : MClass */;
3998 val* var21 /* : String */;
3999 val* var23 /* : String */;
4000 static val* varonce24;
4001 val* var25 /* : String */;
4002 char* var26 /* : NativeString */;
4003 long var27 /* : Int */;
4004 val* var28 /* : FlatString */;
4005 short int var29 /* : Bool */;
4006 short int var30 /* : Bool */;
4007 static val* varonce31;
4008 val* var32 /* : String */;
4009 char* var33 /* : NativeString */;
4010 long var34 /* : Int */;
4011 val* var35 /* : FlatString */;
4012 val* var36 /* : MClass */;
4013 val* var38 /* : MClass */;
4014 val* var39 /* : String */;
4015 val* var41 /* : String */;
4016 static val* varonce42;
4017 val* var43 /* : String */;
4018 char* var44 /* : NativeString */;
4019 long var45 /* : Int */;
4020 val* var46 /* : FlatString */;
4021 short int var47 /* : Bool */;
4022 short int var48 /* : Bool */;
4023 static val* varonce49;
4024 val* var50 /* : String */;
4025 char* var51 /* : NativeString */;
4026 long var52 /* : Int */;
4027 val* var53 /* : FlatString */;
4028 val* var54 /* : MClass */;
4029 val* var56 /* : MClass */;
4030 val* var57 /* : String */;
4031 val* var59 /* : String */;
4032 static val* varonce60;
4033 val* var61 /* : String */;
4034 char* var62 /* : NativeString */;
4035 long var63 /* : Int */;
4036 val* var64 /* : FlatString */;
4037 short int var65 /* : Bool */;
4038 short int var66 /* : Bool */;
4039 static val* varonce67;
4040 val* var68 /* : String */;
4041 char* var69 /* : NativeString */;
4042 long var70 /* : Int */;
4043 val* var71 /* : FlatString */;
4044 val* var72 /* : MClass */;
4045 val* var74 /* : MClass */;
4046 val* var75 /* : String */;
4047 val* var77 /* : String */;
4048 static val* varonce78;
4049 val* var79 /* : String */;
4050 char* var80 /* : NativeString */;
4051 long var81 /* : Int */;
4052 val* var82 /* : FlatString */;
4053 short int var83 /* : Bool */;
4054 short int var84 /* : Bool */;
4055 static val* varonce85;
4056 val* var86 /* : String */;
4057 char* var87 /* : NativeString */;
4058 long var88 /* : Int */;
4059 val* var89 /* : FlatString */;
4060 val* var90 /* : MClass */;
4061 val* var92 /* : MClass */;
4062 val* var93 /* : String */;
4063 val* var95 /* : String */;
4064 static val* varonce96;
4065 val* var97 /* : String */;
4066 char* var98 /* : NativeString */;
4067 long var99 /* : Int */;
4068 val* var100 /* : FlatString */;
4069 short int var101 /* : Bool */;
4070 short int var102 /* : Bool */;
4071 static val* varonce103;
4072 val* var104 /* : String */;
4073 char* var105 /* : NativeString */;
4074 long var106 /* : Int */;
4075 val* var107 /* : FlatString */;
4076 static val* varonce108;
4077 val* var109 /* : String */;
4078 char* var110 /* : NativeString */;
4079 long var111 /* : Int */;
4080 val* var112 /* : FlatString */;
4081 {
4082 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4083 var3 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4084 if (unlikely(var3 == NULL)) {
4085 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4086 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4087 show_backtrace(1);
4088 }
4089 var1 = var3;
4090 RET_LABEL2:(void)0;
4091 }
4092 }
4093 {
4094 { /* Inline model#MClass#name (var1) on <var1:MClass> */
4095 var6 = var1->attrs[COLOR_model__MClass___name].val; /* _name on <var1:MClass> */
4096 if (unlikely(var6 == NULL)) {
4097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4098 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4099 show_backtrace(1);
4100 }
4101 var4 = var6;
4102 RET_LABEL5:(void)0;
4103 }
4104 }
4105 if (varonce) {
4106 var7 = varonce;
4107 } else {
4108 var8 = "Int";
4109 var9 = 3;
4110 var10 = string__NativeString__to_s_with_length(var8, var9);
4111 var7 = var10;
4112 varonce = var7;
4113 }
4114 {
4115 var12 = string__FlatString___61d_61d(var4, var7);
4116 var11 = var12;
4117 }
4118 if (var11){
4119 if (varonce13) {
4120 var14 = varonce13;
4121 } else {
4122 var15 = "long";
4123 var16 = 4;
4124 var17 = string__NativeString__to_s_with_length(var15, var16);
4125 var14 = var17;
4126 varonce13 = var14;
4127 }
4128 var = var14;
4129 goto RET_LABEL;
4130 } else {
4131 {
4132 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4133 var20 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4134 if (unlikely(var20 == NULL)) {
4135 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4136 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4137 show_backtrace(1);
4138 }
4139 var18 = var20;
4140 RET_LABEL19:(void)0;
4141 }
4142 }
4143 {
4144 { /* Inline model#MClass#name (var18) on <var18:MClass> */
4145 var23 = var18->attrs[COLOR_model__MClass___name].val; /* _name on <var18:MClass> */
4146 if (unlikely(var23 == NULL)) {
4147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4148 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4149 show_backtrace(1);
4150 }
4151 var21 = var23;
4152 RET_LABEL22:(void)0;
4153 }
4154 }
4155 if (varonce24) {
4156 var25 = varonce24;
4157 } else {
4158 var26 = "Bool";
4159 var27 = 4;
4160 var28 = string__NativeString__to_s_with_length(var26, var27);
4161 var25 = var28;
4162 varonce24 = var25;
4163 }
4164 {
4165 var30 = string__FlatString___61d_61d(var21, var25);
4166 var29 = var30;
4167 }
4168 if (var29){
4169 if (varonce31) {
4170 var32 = varonce31;
4171 } else {
4172 var33 = "short int";
4173 var34 = 9;
4174 var35 = string__NativeString__to_s_with_length(var33, var34);
4175 var32 = var35;
4176 varonce31 = var32;
4177 }
4178 var = var32;
4179 goto RET_LABEL;
4180 } else {
4181 {
4182 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4183 var38 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4184 if (unlikely(var38 == NULL)) {
4185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4186 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4187 show_backtrace(1);
4188 }
4189 var36 = var38;
4190 RET_LABEL37:(void)0;
4191 }
4192 }
4193 {
4194 { /* Inline model#MClass#name (var36) on <var36:MClass> */
4195 var41 = var36->attrs[COLOR_model__MClass___name].val; /* _name on <var36:MClass> */
4196 if (unlikely(var41 == NULL)) {
4197 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4198 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4199 show_backtrace(1);
4200 }
4201 var39 = var41;
4202 RET_LABEL40:(void)0;
4203 }
4204 }
4205 if (varonce42) {
4206 var43 = varonce42;
4207 } else {
4208 var44 = "Char";
4209 var45 = 4;
4210 var46 = string__NativeString__to_s_with_length(var44, var45);
4211 var43 = var46;
4212 varonce42 = var43;
4213 }
4214 {
4215 var48 = string__FlatString___61d_61d(var39, var43);
4216 var47 = var48;
4217 }
4218 if (var47){
4219 if (varonce49) {
4220 var50 = varonce49;
4221 } else {
4222 var51 = "char";
4223 var52 = 4;
4224 var53 = string__NativeString__to_s_with_length(var51, var52);
4225 var50 = var53;
4226 varonce49 = var50;
4227 }
4228 var = var50;
4229 goto RET_LABEL;
4230 } else {
4231 {
4232 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4233 var56 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4234 if (unlikely(var56 == NULL)) {
4235 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4236 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4237 show_backtrace(1);
4238 }
4239 var54 = var56;
4240 RET_LABEL55:(void)0;
4241 }
4242 }
4243 {
4244 { /* Inline model#MClass#name (var54) on <var54:MClass> */
4245 var59 = var54->attrs[COLOR_model__MClass___name].val; /* _name on <var54:MClass> */
4246 if (unlikely(var59 == NULL)) {
4247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4248 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4249 show_backtrace(1);
4250 }
4251 var57 = var59;
4252 RET_LABEL58:(void)0;
4253 }
4254 }
4255 if (varonce60) {
4256 var61 = varonce60;
4257 } else {
4258 var62 = "Float";
4259 var63 = 5;
4260 var64 = string__NativeString__to_s_with_length(var62, var63);
4261 var61 = var64;
4262 varonce60 = var61;
4263 }
4264 {
4265 var66 = string__FlatString___61d_61d(var57, var61);
4266 var65 = var66;
4267 }
4268 if (var65){
4269 if (varonce67) {
4270 var68 = varonce67;
4271 } else {
4272 var69 = "double";
4273 var70 = 6;
4274 var71 = string__NativeString__to_s_with_length(var69, var70);
4275 var68 = var71;
4276 varonce67 = var68;
4277 }
4278 var = var68;
4279 goto RET_LABEL;
4280 } else {
4281 {
4282 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4283 var74 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4284 if (unlikely(var74 == NULL)) {
4285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4286 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4287 show_backtrace(1);
4288 }
4289 var72 = var74;
4290 RET_LABEL73:(void)0;
4291 }
4292 }
4293 {
4294 { /* Inline model#MClass#name (var72) on <var72:MClass> */
4295 var77 = var72->attrs[COLOR_model__MClass___name].val; /* _name on <var72:MClass> */
4296 if (unlikely(var77 == NULL)) {
4297 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4298 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4299 show_backtrace(1);
4300 }
4301 var75 = var77;
4302 RET_LABEL76:(void)0;
4303 }
4304 }
4305 if (varonce78) {
4306 var79 = varonce78;
4307 } else {
4308 var80 = "NativeString";
4309 var81 = 12;
4310 var82 = string__NativeString__to_s_with_length(var80, var81);
4311 var79 = var82;
4312 varonce78 = var79;
4313 }
4314 {
4315 var84 = string__FlatString___61d_61d(var75, var79);
4316 var83 = var84;
4317 }
4318 if (var83){
4319 if (varonce85) {
4320 var86 = varonce85;
4321 } else {
4322 var87 = "char*";
4323 var88 = 5;
4324 var89 = string__NativeString__to_s_with_length(var87, var88);
4325 var86 = var89;
4326 varonce85 = var86;
4327 }
4328 var = var86;
4329 goto RET_LABEL;
4330 } else {
4331 {
4332 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4333 var92 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4334 if (unlikely(var92 == NULL)) {
4335 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4336 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4337 show_backtrace(1);
4338 }
4339 var90 = var92;
4340 RET_LABEL91:(void)0;
4341 }
4342 }
4343 {
4344 { /* Inline model#MClass#name (var90) on <var90:MClass> */
4345 var95 = var90->attrs[COLOR_model__MClass___name].val; /* _name on <var90:MClass> */
4346 if (unlikely(var95 == NULL)) {
4347 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4348 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4349 show_backtrace(1);
4350 }
4351 var93 = var95;
4352 RET_LABEL94:(void)0;
4353 }
4354 }
4355 if (varonce96) {
4356 var97 = varonce96;
4357 } else {
4358 var98 = "NativeArray";
4359 var99 = 11;
4360 var100 = string__NativeString__to_s_with_length(var98, var99);
4361 var97 = var100;
4362 varonce96 = var97;
4363 }
4364 {
4365 var102 = string__FlatString___61d_61d(var93, var97);
4366 var101 = var102;
4367 }
4368 if (var101){
4369 if (varonce103) {
4370 var104 = varonce103;
4371 } else {
4372 var105 = "val*";
4373 var106 = 4;
4374 var107 = string__NativeString__to_s_with_length(var105, var106);
4375 var104 = var107;
4376 varonce103 = var104;
4377 }
4378 var = var104;
4379 goto RET_LABEL;
4380 } else {
4381 if (varonce108) {
4382 var109 = varonce108;
4383 } else {
4384 var110 = "val*";
4385 var111 = 4;
4386 var112 = string__NativeString__to_s_with_length(var110, var111);
4387 var109 = var112;
4388 varonce108 = var109;
4389 }
4390 var = var109;
4391 goto RET_LABEL;
4392 }
4393 }
4394 }
4395 }
4396 }
4397 }
4398 RET_LABEL:;
4399 return var;
4400 }
4401 /* method abstract_compiler#MClassType#ctype for (self: Object): String */
4402 val* VIRTUAL_abstract_compiler__MClassType__ctype(val* self) {
4403 val* var /* : String */;
4404 val* var1 /* : String */;
4405 var1 = abstract_compiler__MClassType__ctype(self);
4406 var = var1;
4407 RET_LABEL:;
4408 return var;
4409 }
4410 /* method abstract_compiler#MClassType#ctype_extern for (self: MClassType): String */
4411 val* abstract_compiler__MClassType__ctype_extern(val* self) {
4412 val* var /* : String */;
4413 val* var1 /* : MClass */;
4414 val* var3 /* : MClass */;
4415 val* var4 /* : MClassKind */;
4416 val* var6 /* : MClassKind */;
4417 val* var7 /* : MClassKind */;
4418 short int var8 /* : Bool */;
4419 short int var9 /* : Bool */;
4420 val* var_other /* var other: nullable Object */;
4421 short int var11 /* : Bool */;
4422 short int var13 /* : Bool */;
4423 static val* varonce;
4424 val* var14 /* : String */;
4425 char* var15 /* : NativeString */;
4426 long var16 /* : Int */;
4427 val* var17 /* : FlatString */;
4428 val* var18 /* : String */;
4429 {
4430 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4431 var3 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4432 if (unlikely(var3 == NULL)) {
4433 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4434 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4435 show_backtrace(1);
4436 }
4437 var1 = var3;
4438 RET_LABEL2:(void)0;
4439 }
4440 }
4441 {
4442 { /* Inline model#MClass#kind (var1) on <var1:MClass> */
4443 var6 = var1->attrs[COLOR_model__MClass___kind].val; /* _kind on <var1:MClass> */
4444 if (unlikely(var6 == NULL)) {
4445 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
4446 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
4447 show_backtrace(1);
4448 }
4449 var4 = var6;
4450 RET_LABEL5:(void)0;
4451 }
4452 }
4453 {
4454 var7 = model__Object__extern_kind(self);
4455 }
4456 {
4457 { /* Inline kernel#Object#== (var4,var7) on <var4:MClassKind> */
4458 var_other = var7;
4459 {
4460 { /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MClassKind> */
4461 var13 = var4 == var_other;
4462 var11 = var13;
4463 goto RET_LABEL12;
4464 RET_LABEL12:(void)0;
4465 }
4466 }
4467 var9 = var11;
4468 goto RET_LABEL10;
4469 RET_LABEL10:(void)0;
4470 }
4471 var8 = var9;
4472 }
4473 if (var8){
4474 if (varonce) {
4475 var14 = varonce;
4476 } else {
4477 var15 = "void*";
4478 var16 = 5;
4479 var17 = string__NativeString__to_s_with_length(var15, var16);
4480 var14 = var17;
4481 varonce = var14;
4482 }
4483 var = var14;
4484 goto RET_LABEL;
4485 } else {
4486 {
4487 var18 = abstract_compiler__MClassType__ctype(self);
4488 }
4489 var = var18;
4490 goto RET_LABEL;
4491 }
4492 RET_LABEL:;
4493 return var;
4494 }
4495 /* method abstract_compiler#MClassType#ctype_extern for (self: Object): String */
4496 val* VIRTUAL_abstract_compiler__MClassType__ctype_extern(val* self) {
4497 val* var /* : String */;
4498 val* var1 /* : String */;
4499 var1 = abstract_compiler__MClassType__ctype_extern(self);
4500 var = var1;
4501 RET_LABEL:;
4502 return var;
4503 }
4504 /* method abstract_compiler#MClassType#ctypename for (self: MClassType): String */
4505 val* abstract_compiler__MClassType__ctypename(val* self) {
4506 val* var /* : String */;
4507 val* var1 /* : MClass */;
4508 val* var3 /* : MClass */;
4509 val* var4 /* : String */;
4510 val* var6 /* : String */;
4511 static val* varonce;
4512 val* var7 /* : String */;
4513 char* var8 /* : NativeString */;
4514 long var9 /* : Int */;
4515 val* var10 /* : FlatString */;
4516 short int var11 /* : Bool */;
4517 short int var12 /* : Bool */;
4518 static val* varonce13;
4519 val* var14 /* : String */;
4520 char* var15 /* : NativeString */;
4521 long var16 /* : Int */;
4522 val* var17 /* : FlatString */;
4523 val* var18 /* : MClass */;
4524 val* var20 /* : MClass */;
4525 val* var21 /* : String */;
4526 val* var23 /* : String */;
4527 static val* varonce24;
4528 val* var25 /* : String */;
4529 char* var26 /* : NativeString */;
4530 long var27 /* : Int */;
4531 val* var28 /* : FlatString */;
4532 short int var29 /* : Bool */;
4533 short int var30 /* : Bool */;
4534 static val* varonce31;
4535 val* var32 /* : String */;
4536 char* var33 /* : NativeString */;
4537 long var34 /* : Int */;
4538 val* var35 /* : FlatString */;
4539 val* var36 /* : MClass */;
4540 val* var38 /* : MClass */;
4541 val* var39 /* : String */;
4542 val* var41 /* : String */;
4543 static val* varonce42;
4544 val* var43 /* : String */;
4545 char* var44 /* : NativeString */;
4546 long var45 /* : Int */;
4547 val* var46 /* : FlatString */;
4548 short int var47 /* : Bool */;
4549 short int var48 /* : Bool */;
4550 static val* varonce49;
4551 val* var50 /* : String */;
4552 char* var51 /* : NativeString */;
4553 long var52 /* : Int */;
4554 val* var53 /* : FlatString */;
4555 val* var54 /* : MClass */;
4556 val* var56 /* : MClass */;
4557 val* var57 /* : String */;
4558 val* var59 /* : String */;
4559 static val* varonce60;
4560 val* var61 /* : String */;
4561 char* var62 /* : NativeString */;
4562 long var63 /* : Int */;
4563 val* var64 /* : FlatString */;
4564 short int var65 /* : Bool */;
4565 short int var66 /* : Bool */;
4566 static val* varonce67;
4567 val* var68 /* : String */;
4568 char* var69 /* : NativeString */;
4569 long var70 /* : Int */;
4570 val* var71 /* : FlatString */;
4571 val* var72 /* : MClass */;
4572 val* var74 /* : MClass */;
4573 val* var75 /* : String */;
4574 val* var77 /* : String */;
4575 static val* varonce78;
4576 val* var79 /* : String */;
4577 char* var80 /* : NativeString */;
4578 long var81 /* : Int */;
4579 val* var82 /* : FlatString */;
4580 short int var83 /* : Bool */;
4581 short int var84 /* : Bool */;
4582 static val* varonce85;
4583 val* var86 /* : String */;
4584 char* var87 /* : NativeString */;
4585 long var88 /* : Int */;
4586 val* var89 /* : FlatString */;
4587 val* var90 /* : MClass */;
4588 val* var92 /* : MClass */;
4589 val* var93 /* : String */;
4590 val* var95 /* : String */;
4591 static val* varonce96;
4592 val* var97 /* : String */;
4593 char* var98 /* : NativeString */;
4594 long var99 /* : Int */;
4595 val* var100 /* : FlatString */;
4596 short int var101 /* : Bool */;
4597 short int var102 /* : Bool */;
4598 static val* varonce103;
4599 val* var104 /* : String */;
4600 char* var105 /* : NativeString */;
4601 long var106 /* : Int */;
4602 val* var107 /* : FlatString */;
4603 static val* varonce108;
4604 val* var109 /* : String */;
4605 char* var110 /* : NativeString */;
4606 long var111 /* : Int */;
4607 val* var112 /* : FlatString */;
4608 {
4609 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4610 var3 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4611 if (unlikely(var3 == NULL)) {
4612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4613 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4614 show_backtrace(1);
4615 }
4616 var1 = var3;
4617 RET_LABEL2:(void)0;
4618 }
4619 }
4620 {
4621 { /* Inline model#MClass#name (var1) on <var1:MClass> */
4622 var6 = var1->attrs[COLOR_model__MClass___name].val; /* _name on <var1:MClass> */
4623 if (unlikely(var6 == NULL)) {
4624 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4625 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4626 show_backtrace(1);
4627 }
4628 var4 = var6;
4629 RET_LABEL5:(void)0;
4630 }
4631 }
4632 if (varonce) {
4633 var7 = varonce;
4634 } else {
4635 var8 = "Int";
4636 var9 = 3;
4637 var10 = string__NativeString__to_s_with_length(var8, var9);
4638 var7 = var10;
4639 varonce = var7;
4640 }
4641 {
4642 var12 = string__FlatString___61d_61d(var4, var7);
4643 var11 = var12;
4644 }
4645 if (var11){
4646 if (varonce13) {
4647 var14 = varonce13;
4648 } else {
4649 var15 = "l";
4650 var16 = 1;
4651 var17 = string__NativeString__to_s_with_length(var15, var16);
4652 var14 = var17;
4653 varonce13 = var14;
4654 }
4655 var = var14;
4656 goto RET_LABEL;
4657 } else {
4658 {
4659 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4660 var20 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4661 if (unlikely(var20 == NULL)) {
4662 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4663 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4664 show_backtrace(1);
4665 }
4666 var18 = var20;
4667 RET_LABEL19:(void)0;
4668 }
4669 }
4670 {
4671 { /* Inline model#MClass#name (var18) on <var18:MClass> */
4672 var23 = var18->attrs[COLOR_model__MClass___name].val; /* _name on <var18:MClass> */
4673 if (unlikely(var23 == NULL)) {
4674 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4675 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4676 show_backtrace(1);
4677 }
4678 var21 = var23;
4679 RET_LABEL22:(void)0;
4680 }
4681 }
4682 if (varonce24) {
4683 var25 = varonce24;
4684 } else {
4685 var26 = "Bool";
4686 var27 = 4;
4687 var28 = string__NativeString__to_s_with_length(var26, var27);
4688 var25 = var28;
4689 varonce24 = var25;
4690 }
4691 {
4692 var30 = string__FlatString___61d_61d(var21, var25);
4693 var29 = var30;
4694 }
4695 if (var29){
4696 if (varonce31) {
4697 var32 = varonce31;
4698 } else {
4699 var33 = "s";
4700 var34 = 1;
4701 var35 = string__NativeString__to_s_with_length(var33, var34);
4702 var32 = var35;
4703 varonce31 = var32;
4704 }
4705 var = var32;
4706 goto RET_LABEL;
4707 } else {
4708 {
4709 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4710 var38 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4711 if (unlikely(var38 == NULL)) {
4712 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4713 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4714 show_backtrace(1);
4715 }
4716 var36 = var38;
4717 RET_LABEL37:(void)0;
4718 }
4719 }
4720 {
4721 { /* Inline model#MClass#name (var36) on <var36:MClass> */
4722 var41 = var36->attrs[COLOR_model__MClass___name].val; /* _name on <var36:MClass> */
4723 if (unlikely(var41 == NULL)) {
4724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4725 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4726 show_backtrace(1);
4727 }
4728 var39 = var41;
4729 RET_LABEL40:(void)0;
4730 }
4731 }
4732 if (varonce42) {
4733 var43 = varonce42;
4734 } else {
4735 var44 = "Char";
4736 var45 = 4;
4737 var46 = string__NativeString__to_s_with_length(var44, var45);
4738 var43 = var46;
4739 varonce42 = var43;
4740 }
4741 {
4742 var48 = string__FlatString___61d_61d(var39, var43);
4743 var47 = var48;
4744 }
4745 if (var47){
4746 if (varonce49) {
4747 var50 = varonce49;
4748 } else {
4749 var51 = "c";
4750 var52 = 1;
4751 var53 = string__NativeString__to_s_with_length(var51, var52);
4752 var50 = var53;
4753 varonce49 = var50;
4754 }
4755 var = var50;
4756 goto RET_LABEL;
4757 } else {
4758 {
4759 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4760 var56 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4761 if (unlikely(var56 == NULL)) {
4762 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4763 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4764 show_backtrace(1);
4765 }
4766 var54 = var56;
4767 RET_LABEL55:(void)0;
4768 }
4769 }
4770 {
4771 { /* Inline model#MClass#name (var54) on <var54:MClass> */
4772 var59 = var54->attrs[COLOR_model__MClass___name].val; /* _name on <var54:MClass> */
4773 if (unlikely(var59 == NULL)) {
4774 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4775 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4776 show_backtrace(1);
4777 }
4778 var57 = var59;
4779 RET_LABEL58:(void)0;
4780 }
4781 }
4782 if (varonce60) {
4783 var61 = varonce60;
4784 } else {
4785 var62 = "Float";
4786 var63 = 5;
4787 var64 = string__NativeString__to_s_with_length(var62, var63);
4788 var61 = var64;
4789 varonce60 = var61;
4790 }
4791 {
4792 var66 = string__FlatString___61d_61d(var57, var61);
4793 var65 = var66;
4794 }
4795 if (var65){
4796 if (varonce67) {
4797 var68 = varonce67;
4798 } else {
4799 var69 = "d";
4800 var70 = 1;
4801 var71 = string__NativeString__to_s_with_length(var69, var70);
4802 var68 = var71;
4803 varonce67 = var68;
4804 }
4805 var = var68;
4806 goto RET_LABEL;
4807 } else {
4808 {
4809 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4810 var74 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4811 if (unlikely(var74 == NULL)) {
4812 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4813 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4814 show_backtrace(1);
4815 }
4816 var72 = var74;
4817 RET_LABEL73:(void)0;
4818 }
4819 }
4820 {
4821 { /* Inline model#MClass#name (var72) on <var72:MClass> */
4822 var77 = var72->attrs[COLOR_model__MClass___name].val; /* _name on <var72:MClass> */
4823 if (unlikely(var77 == NULL)) {
4824 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4825 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4826 show_backtrace(1);
4827 }
4828 var75 = var77;
4829 RET_LABEL76:(void)0;
4830 }
4831 }
4832 if (varonce78) {
4833 var79 = varonce78;
4834 } else {
4835 var80 = "NativeString";
4836 var81 = 12;
4837 var82 = string__NativeString__to_s_with_length(var80, var81);
4838 var79 = var82;
4839 varonce78 = var79;
4840 }
4841 {
4842 var84 = string__FlatString___61d_61d(var75, var79);
4843 var83 = var84;
4844 }
4845 if (var83){
4846 if (varonce85) {
4847 var86 = varonce85;
4848 } else {
4849 var87 = "str";
4850 var88 = 3;
4851 var89 = string__NativeString__to_s_with_length(var87, var88);
4852 var86 = var89;
4853 varonce85 = var86;
4854 }
4855 var = var86;
4856 goto RET_LABEL;
4857 } else {
4858 {
4859 { /* Inline model#MClassType#mclass (self) on <self:MClassType> */
4860 var92 = self->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <self:MClassType> */
4861 if (unlikely(var92 == NULL)) {
4862 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4863 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
4864 show_backtrace(1);
4865 }
4866 var90 = var92;
4867 RET_LABEL91:(void)0;
4868 }
4869 }
4870 {
4871 { /* Inline model#MClass#name (var90) on <var90:MClass> */
4872 var95 = var90->attrs[COLOR_model__MClass___name].val; /* _name on <var90:MClass> */
4873 if (unlikely(var95 == NULL)) {
4874 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4875 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
4876 show_backtrace(1);
4877 }
4878 var93 = var95;
4879 RET_LABEL94:(void)0;
4880 }
4881 }
4882 if (varonce96) {
4883 var97 = varonce96;
4884 } else {
4885 var98 = "NativeArray";
4886 var99 = 11;
4887 var100 = string__NativeString__to_s_with_length(var98, var99);
4888 var97 = var100;
4889 varonce96 = var97;
4890 }
4891 {
4892 var102 = string__FlatString___61d_61d(var93, var97);
4893 var101 = var102;
4894 }
4895 if (var101){
4896 if (varonce103) {
4897 var104 = varonce103;
4898 } else {
4899 var105 = "val";
4900 var106 = 3;
4901 var107 = string__NativeString__to_s_with_length(var105, var106);
4902 var104 = var107;
4903 varonce103 = var104;
4904 }
4905 var = var104;
4906 goto RET_LABEL;
4907 } else {
4908 if (varonce108) {
4909 var109 = varonce108;
4910 } else {
4911 var110 = "val";
4912 var111 = 3;
4913 var112 = string__NativeString__to_s_with_length(var110, var111);
4914 var109 = var112;
4915 varonce108 = var109;
4916 }
4917 var = var109;
4918 goto RET_LABEL;
4919 }
4920 }
4921 }
4922 }
4923 }
4924 }
4925 RET_LABEL:;
4926 return var;
4927 }
4928 /* method abstract_compiler#MClassType#ctypename for (self: Object): String */
4929 val* VIRTUAL_abstract_compiler__MClassType__ctypename(val* self) {
4930 val* var /* : String */;
4931 val* var1 /* : String */;
4932 var1 = abstract_compiler__MClassType__ctypename(self);
4933 var = var1;
4934 RET_LABEL:;
4935 return var;
4936 }
4937 /* method abstract_compiler#MGenericType#c_name for (self: MGenericType): String */
4938 val* abstract_compiler__MGenericType__c_name(val* self) {
4939 val* var /* : String */;
4940 val* var1 /* : nullable String */;
4941 val* var3 /* : nullable String */;
4942 val* var_res /* var res: nullable String */;
4943 val* var4 /* : null */;
4944 short int var5 /* : Bool */;
4945 short int var6 /* : Bool */;
4946 val* var_other /* var other: nullable Object */;
4947 short int var8 /* : Bool */;
4948 short int var9 /* : Bool */;
4949 short int var10 /* : Bool */;
4950 val* var11 /* : String */;
4951 val* var12 /* : Array[MType] */;
4952 val* var14 /* : Array[MType] */;
4953 val* var_ /* var : Array[MType] */;
4954 val* var15 /* : ArrayIterator[nullable Object] */;
4955 val* var_16 /* var : ArrayIterator[MType] */;
4956 short int var17 /* : Bool */;
4957 val* var18 /* : nullable Object */;
4958 val* var_t /* var t: MType */;
4959 val* var19 /* : String */;
4960 val* var20 /* : String */;
4961 {
4962 { /* Inline abstract_compiler#MType#c_name_cache (self) on <self:MGenericType> */
4963 var3 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:MGenericType> */
4964 var1 = var3;
4965 RET_LABEL2:(void)0;
4966 }
4967 }
4968 var_res = var1;
4969 var4 = NULL;
4970 if (var_res == NULL) {
4971 var5 = 0; /* is null */
4972 } else {
4973 var5 = 1; /* arg is null and recv is not */
4974 }
4975 if (0) {
4976 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
4977 var_other = var4;
4978 {
4979 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
4980 var8 = var9;
4981 }
4982 var10 = !var8;
4983 var6 = var10;
4984 goto RET_LABEL7;
4985 RET_LABEL7:(void)0;
4986 }
4987 var5 = var6;
4988 }
4989 if (var5){
4990 var = var_res;
4991 goto RET_LABEL;
4992 } else {
4993 }
4994 {
4995 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MGenericType__c_name]))(self) /* c_name on <self:MGenericType>*/;
4996 }
4997 var_res = var11;
4998 {
4999 { /* Inline model#MClassType#arguments (self) on <self:MGenericType> */
5000 var14 = self->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <self:MGenericType> */
5001 if (unlikely(var14 == NULL)) {
5002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
5003 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
5004 show_backtrace(1);
5005 }
5006 var12 = var14;
5007 RET_LABEL13:(void)0;
5008 }
5009 }
5010 var_ = var12;
5011 {
5012 var15 = array__AbstractArrayRead__iterator(var_);
5013 }
5014 var_16 = var15;
5015 for(;;) {
5016 {
5017 var17 = array__ArrayIterator__is_ok(var_16);
5018 }
5019 if (var17){
5020 {
5021 var18 = array__ArrayIterator__item(var_16);
5022 }
5023 var_t = var18;
5024 {
5025 var19 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_t) /* c_name on <var_t:MType>*/;
5026 }
5027 {
5028 var20 = string__FlatString___43d(var_res, var19);
5029 }
5030 var_res = var20;
5031 {
5032 array__ArrayIterator__next(var_16); /* Direct call array#ArrayIterator#next on <var_16:ArrayIterator[MType]>*/
5033 }
5034 } else {
5035 goto BREAK_label;
5036 }
5037 }
5038 BREAK_label: (void)0;
5039 {
5040 { /* Inline abstract_collection#Iterator#finish (var_16) on <var_16:ArrayIterator[MType]> */
5041 RET_LABEL21:(void)0;
5042 }
5043 }
5044 {
5045 { /* Inline abstract_compiler#MType#c_name_cache= (self,var_res) on <self:MGenericType> */
5046 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = var_res; /* _c_name_cache on <self:MGenericType> */
5047 RET_LABEL22:(void)0;
5048 }
5049 }
5050 var = var_res;
5051 goto RET_LABEL;
5052 RET_LABEL:;
5053 return var;
5054 }
5055 /* method abstract_compiler#MGenericType#c_name for (self: Object): String */
5056 val* VIRTUAL_abstract_compiler__MGenericType__c_name(val* self) {
5057 val* var /* : String */;
5058 val* var1 /* : String */;
5059 var1 = abstract_compiler__MGenericType__c_name(self);
5060 var = var1;
5061 RET_LABEL:;
5062 return var;
5063 }
5064 /* method abstract_compiler#MParameterType#c_name for (self: MParameterType): String */
5065 val* abstract_compiler__MParameterType__c_name(val* self) {
5066 val* var /* : String */;
5067 val* var1 /* : nullable String */;
5068 val* var3 /* : nullable String */;
5069 val* var_res /* var res: nullable String */;
5070 val* var4 /* : null */;
5071 short int var5 /* : Bool */;
5072 short int var6 /* : Bool */;
5073 val* var_other /* var other: nullable Object */;
5074 short int var8 /* : Bool */;
5075 short int var9 /* : Bool */;
5076 short int var10 /* : Bool */;
5077 val* var11 /* : MClass */;
5078 val* var13 /* : MClass */;
5079 val* var14 /* : String */;
5080 static val* varonce;
5081 val* var15 /* : String */;
5082 char* var16 /* : NativeString */;
5083 long var17 /* : Int */;
5084 val* var18 /* : FlatString */;
5085 long var19 /* : Int */;
5086 long var21 /* : Int */;
5087 val* var22 /* : Array[Object] */;
5088 long var23 /* : Int */;
5089 val* var24 /* : NativeArray[Object] */;
5090 val* var25 /* : Object */;
5091 val* var26 /* : String */;
5092 {
5093 { /* Inline abstract_compiler#MType#c_name_cache (self) on <self:MParameterType> */
5094 var3 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:MParameterType> */
5095 var1 = var3;
5096 RET_LABEL2:(void)0;
5097 }
5098 }
5099 var_res = var1;
5100 var4 = NULL;
5101 if (var_res == NULL) {
5102 var5 = 0; /* is null */
5103 } else {
5104 var5 = 1; /* arg is null and recv is not */
5105 }
5106 if (0) {
5107 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
5108 var_other = var4;
5109 {
5110 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
5111 var8 = var9;
5112 }
5113 var10 = !var8;
5114 var6 = var10;
5115 goto RET_LABEL7;
5116 RET_LABEL7:(void)0;
5117 }
5118 var5 = var6;
5119 }
5120 if (var5){
5121 var = var_res;
5122 goto RET_LABEL;
5123 } else {
5124 }
5125 {
5126 { /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
5127 var13 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
5128 if (unlikely(var13 == NULL)) {
5129 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5130 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
5131 show_backtrace(1);
5132 }
5133 var11 = var13;
5134 RET_LABEL12:(void)0;
5135 }
5136 }
5137 {
5138 var14 = abstract_compiler__MClass__c_name(var11);
5139 }
5140 if (varonce) {
5141 var15 = varonce;
5142 } else {
5143 var16 = "_FT";
5144 var17 = 3;
5145 var18 = string__NativeString__to_s_with_length(var16, var17);
5146 var15 = var18;
5147 varonce = var15;
5148 }
5149 {
5150 { /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
5151 var21 = self->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
5152 var19 = var21;
5153 RET_LABEL20:(void)0;
5154 }
5155 }
5156 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
5157 { /* var22 = array_instance Array[Object] */
5158 var23 = 3;
5159 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
5160 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var14;
5161 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var15;
5162 var25 = BOX_kernel__Int(var19); /* autobox from Int to Object */
5163 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var25;
5164 {
5165 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
5166 }
5167 }
5168 {
5169 var26 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
5170 }
5171 var_res = var26;
5172 {
5173 { /* Inline abstract_compiler#MType#c_name_cache= (self,var_res) on <self:MParameterType> */
5174 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = var_res; /* _c_name_cache on <self:MParameterType> */
5175 RET_LABEL27:(void)0;
5176 }
5177 }
5178 var = var_res;
5179 goto RET_LABEL;
5180 RET_LABEL:;
5181 return var;
5182 }
5183 /* method abstract_compiler#MParameterType#c_name for (self: Object): String */
5184 val* VIRTUAL_abstract_compiler__MParameterType__c_name(val* self) {
5185 val* var /* : String */;
5186 val* var1 /* : String */;
5187 var1 = abstract_compiler__MParameterType__c_name(self);
5188 var = var1;
5189 RET_LABEL:;
5190 return var;
5191 }
5192 /* method abstract_compiler#MVirtualType#c_name for (self: MVirtualType): String */
5193 val* abstract_compiler__MVirtualType__c_name(val* self) {
5194 val* var /* : String */;
5195 val* var1 /* : nullable String */;
5196 val* var3 /* : nullable String */;
5197 val* var_res /* var res: nullable String */;
5198 val* var4 /* : null */;
5199 short int var5 /* : Bool */;
5200 short int var6 /* : Bool */;
5201 val* var_other /* var other: nullable Object */;
5202 short int var8 /* : Bool */;
5203 short int var9 /* : Bool */;
5204 short int var10 /* : Bool */;
5205 val* var11 /* : MProperty */;
5206 val* var13 /* : MProperty */;
5207 val* var14 /* : MPropDef */;
5208 val* var16 /* : MPropDef */;
5209 val* var17 /* : MClassDef */;
5210 val* var19 /* : MClassDef */;
5211 val* var20 /* : MClass */;
5212 val* var22 /* : MClass */;
5213 val* var23 /* : String */;
5214 static val* varonce;
5215 val* var24 /* : String */;
5216 char* var25 /* : NativeString */;
5217 long var26 /* : Int */;
5218 val* var27 /* : FlatString */;
5219 val* var28 /* : MProperty */;
5220 val* var30 /* : MProperty */;
5221 val* var31 /* : String */;
5222 val* var33 /* : String */;
5223 val* var34 /* : Array[Object] */;
5224 long var35 /* : Int */;
5225 val* var36 /* : NativeArray[Object] */;
5226 val* var37 /* : String */;
5227 {
5228 { /* Inline abstract_compiler#MType#c_name_cache (self) on <self:MVirtualType> */
5229 var3 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:MVirtualType> */
5230 var1 = var3;
5231 RET_LABEL2:(void)0;
5232 }
5233 }
5234 var_res = var1;
5235 var4 = NULL;
5236 if (var_res == NULL) {
5237 var5 = 0; /* is null */
5238 } else {
5239 var5 = 1; /* arg is null and recv is not */
5240 }
5241 if (0) {
5242 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
5243 var_other = var4;
5244 {
5245 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
5246 var8 = var9;
5247 }
5248 var10 = !var8;
5249 var6 = var10;
5250 goto RET_LABEL7;
5251 RET_LABEL7:(void)0;
5252 }
5253 var5 = var6;
5254 }
5255 if (var5){
5256 var = var_res;
5257 goto RET_LABEL;
5258 } else {
5259 }
5260 {
5261 { /* Inline model#MVirtualType#mproperty (self) on <self:MVirtualType> */
5262 var13 = self->attrs[COLOR_model__MVirtualType___mproperty].val; /* _mproperty on <self:MVirtualType> */
5263 if (unlikely(var13 == NULL)) {
5264 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5265 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1152);
5266 show_backtrace(1);
5267 }
5268 var11 = var13;
5269 RET_LABEL12:(void)0;
5270 }
5271 }
5272 {
5273 { /* Inline model#MProperty#intro (var11) on <var11:MProperty> */
5274 var16 = var11->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var11:MProperty> */
5275 if (unlikely(var16 == NULL)) {
5276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5277 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
5278 show_backtrace(1);
5279 }
5280 var14 = var16;
5281 RET_LABEL15:(void)0;
5282 }
5283 }
5284 {
5285 { /* Inline model#MPropDef#mclassdef (var14) on <var14:MPropDef> */
5286 var19 = var14->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var14:MPropDef> */
5287 if (unlikely(var19 == NULL)) {
5288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5289 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5290 show_backtrace(1);
5291 }
5292 var17 = var19;
5293 RET_LABEL18:(void)0;
5294 }
5295 }
5296 {
5297 { /* Inline model#MClassDef#mclass (var17) on <var17:MClassDef> */
5298 var22 = var17->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var17:MClassDef> */
5299 if (unlikely(var22 == NULL)) {
5300 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5301 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
5302 show_backtrace(1);
5303 }
5304 var20 = var22;
5305 RET_LABEL21:(void)0;
5306 }
5307 }
5308 {
5309 var23 = abstract_compiler__MClass__c_name(var20);
5310 }
5311 if (varonce) {
5312 var24 = varonce;
5313 } else {
5314 var25 = "_VT";
5315 var26 = 3;
5316 var27 = string__NativeString__to_s_with_length(var25, var26);
5317 var24 = var27;
5318 varonce = var24;
5319 }
5320 {
5321 { /* Inline model#MVirtualType#mproperty (self) on <self:MVirtualType> */
5322 var30 = self->attrs[COLOR_model__MVirtualType___mproperty].val; /* _mproperty on <self:MVirtualType> */
5323 if (unlikely(var30 == NULL)) {
5324 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5325 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1152);
5326 show_backtrace(1);
5327 }
5328 var28 = var30;
5329 RET_LABEL29:(void)0;
5330 }
5331 }
5332 {
5333 { /* Inline model#MProperty#name (var28) on <var28:MProperty> */
5334 var33 = var28->attrs[COLOR_model__MProperty___name].val; /* _name on <var28:MProperty> */
5335 if (unlikely(var33 == NULL)) {
5336 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5337 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
5338 show_backtrace(1);
5339 }
5340 var31 = var33;
5341 RET_LABEL32:(void)0;
5342 }
5343 }
5344 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
5345 { /* var34 = array_instance Array[Object] */
5346 var35 = 3;
5347 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
5348 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var23;
5349 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var24;
5350 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var31;
5351 {
5352 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
5353 }
5354 }
5355 {
5356 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
5357 }
5358 var_res = var37;
5359 {
5360 { /* Inline abstract_compiler#MType#c_name_cache= (self,var_res) on <self:MVirtualType> */
5361 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = var_res; /* _c_name_cache on <self:MVirtualType> */
5362 RET_LABEL38:(void)0;
5363 }
5364 }
5365 var = var_res;
5366 goto RET_LABEL;
5367 RET_LABEL:;
5368 return var;
5369 }
5370 /* method abstract_compiler#MVirtualType#c_name for (self: Object): String */
5371 val* VIRTUAL_abstract_compiler__MVirtualType__c_name(val* self) {
5372 val* var /* : String */;
5373 val* var1 /* : String */;
5374 var1 = abstract_compiler__MVirtualType__c_name(self);
5375 var = var1;
5376 RET_LABEL:;
5377 return var;
5378 }
5379 /* method abstract_compiler#MNullableType#c_name for (self: MNullableType): String */
5380 val* abstract_compiler__MNullableType__c_name(val* self) {
5381 val* var /* : String */;
5382 val* var1 /* : nullable String */;
5383 val* var3 /* : nullable String */;
5384 val* var_res /* var res: nullable String */;
5385 val* var4 /* : null */;
5386 short int var5 /* : Bool */;
5387 short int var6 /* : Bool */;
5388 val* var_other /* var other: nullable Object */;
5389 short int var8 /* : Bool */;
5390 short int var9 /* : Bool */;
5391 short int var10 /* : Bool */;
5392 static val* varonce;
5393 val* var11 /* : String */;
5394 char* var12 /* : NativeString */;
5395 long var13 /* : Int */;
5396 val* var14 /* : FlatString */;
5397 val* var15 /* : MType */;
5398 val* var17 /* : MType */;
5399 val* var18 /* : String */;
5400 val* var19 /* : Array[Object] */;
5401 long var20 /* : Int */;
5402 val* var21 /* : NativeArray[Object] */;
5403 val* var22 /* : String */;
5404 {
5405 { /* Inline abstract_compiler#MType#c_name_cache (self) on <self:MNullableType> */
5406 var3 = self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val; /* _c_name_cache on <self:MNullableType> */
5407 var1 = var3;
5408 RET_LABEL2:(void)0;
5409 }
5410 }
5411 var_res = var1;
5412 var4 = NULL;
5413 if (var_res == NULL) {
5414 var5 = 0; /* is null */
5415 } else {
5416 var5 = 1; /* arg is null and recv is not */
5417 }
5418 if (0) {
5419 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
5420 var_other = var4;
5421 {
5422 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
5423 var8 = var9;
5424 }
5425 var10 = !var8;
5426 var6 = var10;
5427 goto RET_LABEL7;
5428 RET_LABEL7:(void)0;
5429 }
5430 var5 = var6;
5431 }
5432 if (var5){
5433 var = var_res;
5434 goto RET_LABEL;
5435 } else {
5436 }
5437 if (varonce) {
5438 var11 = varonce;
5439 } else {
5440 var12 = "nullable_";
5441 var13 = 9;
5442 var14 = string__NativeString__to_s_with_length(var12, var13);
5443 var11 = var14;
5444 varonce = var11;
5445 }
5446 {
5447 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
5448 var17 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
5449 if (unlikely(var17 == NULL)) {
5450 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
5451 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
5452 show_backtrace(1);
5453 }
5454 var15 = var17;
5455 RET_LABEL16:(void)0;
5456 }
5457 }
5458 {
5459 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__MType__c_name]))(var15) /* c_name on <var15:MType>*/;
5460 }
5461 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
5462 { /* var19 = array_instance Array[Object] */
5463 var20 = 2;
5464 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
5465 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var11;
5466 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var18;
5467 {
5468 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
5469 }
5470 }
5471 {
5472 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
5473 }
5474 var_res = var22;
5475 {
5476 { /* Inline abstract_compiler#MType#c_name_cache= (self,var_res) on <self:MNullableType> */
5477 self->attrs[COLOR_abstract_compiler__MType___c_name_cache].val = var_res; /* _c_name_cache on <self:MNullableType> */
5478 RET_LABEL23:(void)0;
5479 }
5480 }
5481 var = var_res;
5482 goto RET_LABEL;
5483 RET_LABEL:;
5484 return var;
5485 }
5486 /* method abstract_compiler#MNullableType#c_name for (self: Object): String */
5487 val* VIRTUAL_abstract_compiler__MNullableType__c_name(val* self) {
5488 val* var /* : String */;
5489 val* var1 /* : String */;
5490 var1 = abstract_compiler__MNullableType__c_name(self);
5491 var = var1;
5492 RET_LABEL:;
5493 return var;
5494 }
5495 /* method abstract_compiler#MClass#c_name for (self: MClass): String */
5496 val* abstract_compiler__MClass__c_name(val* self) {
5497 val* var /* : String */;
5498 val* var1 /* : nullable String */;
5499 val* var3 /* : nullable String */;
5500 val* var_res /* var res: nullable String */;
5501 val* var4 /* : null */;
5502 short int var5 /* : Bool */;
5503 short int var6 /* : Bool */;
5504 val* var_other /* var other: nullable Object */;
5505 short int var8 /* : Bool */;
5506 short int var9 /* : Bool */;
5507 short int var10 /* : Bool */;
5508 val* var11 /* : MModule */;
5509 val* var13 /* : MModule */;
5510 val* var14 /* : String */;
5511 val* var16 /* : String */;
5512 val* var17 /* : String */;
5513 static val* varonce;
5514 val* var18 /* : String */;
5515 char* var19 /* : NativeString */;
5516 long var20 /* : Int */;
5517 val* var21 /* : FlatString */;
5518 val* var22 /* : String */;
5519 val* var24 /* : String */;
5520 val* var25 /* : String */;
5521 val* var26 /* : Array[Object] */;
5522 long var27 /* : Int */;
5523 val* var28 /* : NativeArray[Object] */;
5524 val* var29 /* : String */;
5525 {
5526 { /* Inline abstract_compiler#MClass#c_name_cache (self) on <self:MClass> */
5527 var3 = self->attrs[COLOR_abstract_compiler__MClass___c_name_cache].val; /* _c_name_cache on <self:MClass> */
5528 var1 = var3;
5529 RET_LABEL2:(void)0;
5530 }
5531 }
5532 var_res = var1;
5533 var4 = NULL;
5534 if (var_res == NULL) {
5535 var5 = 0; /* is null */
5536 } else {
5537 var5 = 1; /* arg is null and recv is not */
5538 }
5539 if (0) {
5540 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
5541 var_other = var4;
5542 {
5543 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
5544 var8 = var9;
5545 }
5546 var10 = !var8;
5547 var6 = var10;
5548 goto RET_LABEL7;
5549 RET_LABEL7:(void)0;
5550 }
5551 var5 = var6;
5552 }
5553 if (var5){
5554 var = var_res;
5555 goto RET_LABEL;
5556 } else {
5557 }
5558 {
5559 { /* Inline model#MClass#intro_mmodule (self) on <self:MClass> */
5560 var13 = self->attrs[COLOR_model__MClass___intro_mmodule].val; /* _intro_mmodule on <self:MClass> */
5561 if (unlikely(var13 == NULL)) {
5562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
5563 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 347);
5564 show_backtrace(1);
5565 }
5566 var11 = var13;
5567 RET_LABEL12:(void)0;
5568 }
5569 }
5570 {
5571 { /* Inline mmodule#MModule#name (var11) on <var11:MModule> */
5572 var16 = var11->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var11:MModule> */
5573 if (unlikely(var16 == NULL)) {
5574 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5575 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
5576 show_backtrace(1);
5577 }
5578 var14 = var16;
5579 RET_LABEL15:(void)0;
5580 }
5581 }
5582 {
5583 var17 = string__Text__to_cmangle(var14);
5584 }
5585 if (varonce) {
5586 var18 = varonce;
5587 } else {
5588 var19 = "__";
5589 var20 = 2;
5590 var21 = string__NativeString__to_s_with_length(var19, var20);
5591 var18 = var21;
5592 varonce = var18;
5593 }
5594 {
5595 { /* Inline model#MClass#name (self) on <self:MClass> */
5596 var24 = self->attrs[COLOR_model__MClass___name].val; /* _name on <self:MClass> */
5597 if (unlikely(var24 == NULL)) {
5598 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5599 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
5600 show_backtrace(1);
5601 }
5602 var22 = var24;
5603 RET_LABEL23:(void)0;
5604 }
5605 }
5606 {
5607 var25 = string__Text__to_cmangle(var22);
5608 }
5609 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
5610 { /* var26 = array_instance Array[Object] */
5611 var27 = 3;
5612 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
5613 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
5614 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var18;
5615 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var25;
5616 {
5617 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
5618 }
5619 }
5620 {
5621 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
5622 }
5623 var_res = var29;
5624 {
5625 { /* Inline abstract_compiler#MClass#c_name_cache= (self,var_res) on <self:MClass> */
5626 self->attrs[COLOR_abstract_compiler__MClass___c_name_cache].val = var_res; /* _c_name_cache on <self:MClass> */
5627 RET_LABEL30:(void)0;
5628 }
5629 }
5630 var = var_res;
5631 goto RET_LABEL;
5632 RET_LABEL:;
5633 return var;
5634 }
5635 /* method abstract_compiler#MClass#c_name for (self: Object): String */
5636 val* VIRTUAL_abstract_compiler__MClass__c_name(val* self) {
5637 val* var /* : String */;
5638 val* var1 /* : String */;
5639 var1 = abstract_compiler__MClass__c_name(self);
5640 var = var1;
5641 RET_LABEL:;
5642 return var;
5643 }
5644 /* method abstract_compiler#MClass#c_name_cache for (self: MClass): nullable String */
5645 val* abstract_compiler__MClass__c_name_cache(val* self) {
5646 val* var /* : nullable String */;
5647 val* var1 /* : nullable String */;
5648 var1 = self->attrs[COLOR_abstract_compiler__MClass___c_name_cache].val; /* _c_name_cache on <self:MClass> */
5649 var = var1;
5650 RET_LABEL:;
5651 return var;
5652 }
5653 /* method abstract_compiler#MClass#c_name_cache for (self: Object): nullable String */
5654 val* VIRTUAL_abstract_compiler__MClass__c_name_cache(val* self) {
5655 val* var /* : nullable String */;
5656 val* var1 /* : nullable String */;
5657 val* var3 /* : nullable String */;
5658 { /* Inline abstract_compiler#MClass#c_name_cache (self) on <self:Object(MClass)> */
5659 var3 = self->attrs[COLOR_abstract_compiler__MClass___c_name_cache].val; /* _c_name_cache on <self:Object(MClass)> */
5660 var1 = var3;
5661 RET_LABEL2:(void)0;
5662 }
5663 var = var1;
5664 RET_LABEL:;
5665 return var;
5666 }
5667 /* method abstract_compiler#MClass#c_name_cache= for (self: MClass, nullable String) */
5668 void abstract_compiler__MClass__c_name_cache_61d(val* self, val* p0) {
5669 self->attrs[COLOR_abstract_compiler__MClass___c_name_cache].val = p0; /* _c_name_cache on <self:MClass> */
5670 RET_LABEL:;
5671 }
5672 /* method abstract_compiler#MClass#c_name_cache= for (self: Object, nullable String) */
5673 void VIRTUAL_abstract_compiler__MClass__c_name_cache_61d(val* self, val* p0) {
5674 { /* Inline abstract_compiler#MClass#c_name_cache= (self,p0) on <self:Object(MClass)> */
5675 self->attrs[COLOR_abstract_compiler__MClass___c_name_cache].val = p0; /* _c_name_cache on <self:Object(MClass)> */
5676 RET_LABEL1:(void)0;
5677 }
5678 RET_LABEL:;
5679 }
5680 /* method abstract_compiler#MProperty#c_name for (self: MProperty): String */
5681 val* abstract_compiler__MProperty__c_name(val* self) {
5682 val* var /* : String */;
5683 val* var1 /* : nullable String */;
5684 val* var3 /* : nullable String */;
5685 val* var_res /* var res: nullable String */;
5686 val* var4 /* : null */;
5687 short int var5 /* : Bool */;
5688 short int var6 /* : Bool */;
5689 val* var_other /* var other: nullable Object */;
5690 short int var8 /* : Bool */;
5691 short int var9 /* : Bool */;
5692 short int var10 /* : Bool */;
5693 val* var11 /* : MPropDef */;
5694 val* var13 /* : MPropDef */;
5695 val* var14 /* : String */;
5696 val* var15 /* : Array[Object] */;
5697 long var16 /* : Int */;
5698 val* var17 /* : NativeArray[Object] */;
5699 val* var18 /* : String */;
5700 {
5701 { /* Inline abstract_compiler#MProperty#c_name_cache (self) on <self:MProperty> */
5702 var3 = self->attrs[COLOR_abstract_compiler__MProperty___c_name_cache].val; /* _c_name_cache on <self:MProperty> */
5703 var1 = var3;
5704 RET_LABEL2:(void)0;
5705 }
5706 }
5707 var_res = var1;
5708 var4 = NULL;
5709 if (var_res == NULL) {
5710 var5 = 0; /* is null */
5711 } else {
5712 var5 = 1; /* arg is null and recv is not */
5713 }
5714 if (0) {
5715 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
5716 var_other = var4;
5717 {
5718 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
5719 var8 = var9;
5720 }
5721 var10 = !var8;
5722 var6 = var10;
5723 goto RET_LABEL7;
5724 RET_LABEL7:(void)0;
5725 }
5726 var5 = var6;
5727 }
5728 if (var5){
5729 var = var_res;
5730 goto RET_LABEL;
5731 } else {
5732 }
5733 {
5734 { /* Inline model#MProperty#intro (self) on <self:MProperty> */
5735 var13 = self->attrs[COLOR_model__MProperty___intro].val; /* _intro on <self:MProperty> */
5736 if (unlikely(var13 == NULL)) {
5737 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5738 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
5739 show_backtrace(1);
5740 }
5741 var11 = var13;
5742 RET_LABEL12:(void)0;
5743 }
5744 }
5745 {
5746 var14 = abstract_compiler__MPropDef__c_name(var11);
5747 }
5748 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
5749 { /* var15 = array_instance Array[Object] */
5750 var16 = 1;
5751 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
5752 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var14;
5753 {
5754 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
5755 }
5756 }
5757 {
5758 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
5759 }
5760 var_res = var18;
5761 {
5762 { /* Inline abstract_compiler#MProperty#c_name_cache= (self,var_res) on <self:MProperty> */
5763 self->attrs[COLOR_abstract_compiler__MProperty___c_name_cache].val = var_res; /* _c_name_cache on <self:MProperty> */
5764 RET_LABEL19:(void)0;
5765 }
5766 }
5767 var = var_res;
5768 goto RET_LABEL;
5769 RET_LABEL:;
5770 return var;
5771 }
5772 /* method abstract_compiler#MProperty#c_name for (self: Object): String */
5773 val* VIRTUAL_abstract_compiler__MProperty__c_name(val* self) {
5774 val* var /* : String */;
5775 val* var1 /* : String */;
5776 var1 = abstract_compiler__MProperty__c_name(self);
5777 var = var1;
5778 RET_LABEL:;
5779 return var;
5780 }
5781 /* method abstract_compiler#MProperty#c_name_cache for (self: MProperty): nullable String */
5782 val* abstract_compiler__MProperty__c_name_cache(val* self) {
5783 val* var /* : nullable String */;
5784 val* var1 /* : nullable String */;
5785 var1 = self->attrs[COLOR_abstract_compiler__MProperty___c_name_cache].val; /* _c_name_cache on <self:MProperty> */
5786 var = var1;
5787 RET_LABEL:;
5788 return var;
5789 }
5790 /* method abstract_compiler#MProperty#c_name_cache for (self: Object): nullable String */
5791 val* VIRTUAL_abstract_compiler__MProperty__c_name_cache(val* self) {
5792 val* var /* : nullable String */;
5793 val* var1 /* : nullable String */;
5794 val* var3 /* : nullable String */;
5795 { /* Inline abstract_compiler#MProperty#c_name_cache (self) on <self:Object(MProperty)> */
5796 var3 = self->attrs[COLOR_abstract_compiler__MProperty___c_name_cache].val; /* _c_name_cache on <self:Object(MProperty)> */
5797 var1 = var3;
5798 RET_LABEL2:(void)0;
5799 }
5800 var = var1;
5801 RET_LABEL:;
5802 return var;
5803 }
5804 /* method abstract_compiler#MProperty#c_name_cache= for (self: MProperty, nullable String) */
5805 void abstract_compiler__MProperty__c_name_cache_61d(val* self, val* p0) {
5806 self->attrs[COLOR_abstract_compiler__MProperty___c_name_cache].val = p0; /* _c_name_cache on <self:MProperty> */
5807 RET_LABEL:;
5808 }
5809 /* method abstract_compiler#MProperty#c_name_cache= for (self: Object, nullable String) */
5810 void VIRTUAL_abstract_compiler__MProperty__c_name_cache_61d(val* self, val* p0) {
5811 { /* Inline abstract_compiler#MProperty#c_name_cache= (self,p0) on <self:Object(MProperty)> */
5812 self->attrs[COLOR_abstract_compiler__MProperty___c_name_cache].val = p0; /* _c_name_cache on <self:Object(MProperty)> */
5813 RET_LABEL1:(void)0;
5814 }
5815 RET_LABEL:;
5816 }
5817 /* method abstract_compiler#MPropDef#c_name_cache for (self: MPropDef): nullable String */
5818 val* abstract_compiler__MPropDef__c_name_cache(val* self) {
5819 val* var /* : nullable String */;
5820 val* var1 /* : nullable String */;
5821 var1 = self->attrs[COLOR_abstract_compiler__MPropDef___c_name_cache].val; /* _c_name_cache on <self:MPropDef> */
5822 var = var1;
5823 RET_LABEL:;
5824 return var;
5825 }
5826 /* method abstract_compiler#MPropDef#c_name_cache for (self: Object): nullable String */
5827 val* VIRTUAL_abstract_compiler__MPropDef__c_name_cache(val* self) {
5828 val* var /* : nullable String */;
5829 val* var1 /* : nullable String */;
5830 val* var3 /* : nullable String */;
5831 { /* Inline abstract_compiler#MPropDef#c_name_cache (self) on <self:Object(MPropDef)> */
5832 var3 = self->attrs[COLOR_abstract_compiler__MPropDef___c_name_cache].val; /* _c_name_cache on <self:Object(MPropDef)> */
5833 var1 = var3;
5834 RET_LABEL2:(void)0;
5835 }
5836 var = var1;
5837 RET_LABEL:;
5838 return var;
5839 }
5840 /* method abstract_compiler#MPropDef#c_name_cache= for (self: MPropDef, nullable String) */
5841 void abstract_compiler__MPropDef__c_name_cache_61d(val* self, val* p0) {
5842 self->attrs[COLOR_abstract_compiler__MPropDef___c_name_cache].val = p0; /* _c_name_cache on <self:MPropDef> */
5843 RET_LABEL:;
5844 }
5845 /* method abstract_compiler#MPropDef#c_name_cache= for (self: Object, nullable String) */
5846 void VIRTUAL_abstract_compiler__MPropDef__c_name_cache_61d(val* self, val* p0) {
5847 { /* Inline abstract_compiler#MPropDef#c_name_cache= (self,p0) on <self:Object(MPropDef)> */
5848 self->attrs[COLOR_abstract_compiler__MPropDef___c_name_cache].val = p0; /* _c_name_cache on <self:Object(MPropDef)> */
5849 RET_LABEL1:(void)0;
5850 }
5851 RET_LABEL:;
5852 }
5853 /* method abstract_compiler#MPropDef#c_name for (self: MPropDef): String */
5854 val* abstract_compiler__MPropDef__c_name(val* self) {
5855 val* var /* : String */;
5856 val* var1 /* : nullable String */;
5857 val* var3 /* : nullable String */;
5858 val* var_res /* var res: nullable String */;
5859 val* var4 /* : null */;
5860 short int var5 /* : Bool */;
5861 short int var6 /* : Bool */;
5862 val* var_other /* var other: nullable Object */;
5863 short int var8 /* : Bool */;
5864 short int var9 /* : Bool */;
5865 short int var10 /* : Bool */;
5866 val* var11 /* : MClassDef */;
5867 val* var13 /* : MClassDef */;
5868 val* var14 /* : MModule */;
5869 val* var16 /* : MModule */;
5870 val* var17 /* : String */;
5871 val* var19 /* : String */;
5872 val* var20 /* : String */;
5873 static val* varonce;
5874 val* var21 /* : String */;
5875 char* var22 /* : NativeString */;
5876 long var23 /* : Int */;
5877 val* var24 /* : FlatString */;
5878 val* var25 /* : MClassDef */;
5879 val* var27 /* : MClassDef */;
5880 val* var28 /* : MClass */;
5881 val* var30 /* : MClass */;
5882 val* var31 /* : String */;
5883 val* var33 /* : String */;
5884 val* var34 /* : String */;
5885 static val* varonce35;
5886 val* var36 /* : String */;
5887 char* var37 /* : NativeString */;
5888 long var38 /* : Int */;
5889 val* var39 /* : FlatString */;
5890 val* var40 /* : MProperty */;
5891 val* var42 /* : MProperty */;
5892 val* var43 /* : String */;
5893 val* var45 /* : String */;
5894 val* var46 /* : String */;
5895 val* var47 /* : Array[Object] */;
5896 long var48 /* : Int */;
5897 val* var49 /* : NativeArray[Object] */;
5898 val* var50 /* : String */;
5899 {
5900 { /* Inline abstract_compiler#MPropDef#c_name_cache (self) on <self:MPropDef> */
5901 var3 = self->attrs[COLOR_abstract_compiler__MPropDef___c_name_cache].val; /* _c_name_cache on <self:MPropDef> */
5902 var1 = var3;
5903 RET_LABEL2:(void)0;
5904 }
5905 }
5906 var_res = var1;
5907 var4 = NULL;
5908 if (var_res == NULL) {
5909 var5 = 0; /* is null */
5910 } else {
5911 var5 = 1; /* arg is null and recv is not */
5912 }
5913 if (0) {
5914 { /* Inline kernel#Object#!= (var_res,var4) on <var_res:nullable String> */
5915 var_other = var4;
5916 {
5917 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
5918 var8 = var9;
5919 }
5920 var10 = !var8;
5921 var6 = var10;
5922 goto RET_LABEL7;
5923 RET_LABEL7:(void)0;
5924 }
5925 var5 = var6;
5926 }
5927 if (var5){
5928 var = var_res;
5929 goto RET_LABEL;
5930 } else {
5931 }
5932 {
5933 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
5934 var13 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
5935 if (unlikely(var13 == NULL)) {
5936 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5937 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5938 show_backtrace(1);
5939 }
5940 var11 = var13;
5941 RET_LABEL12:(void)0;
5942 }
5943 }
5944 {
5945 { /* Inline model#MClassDef#mmodule (var11) on <var11:MClassDef> */
5946 var16 = var11->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var11:MClassDef> */
5947 if (unlikely(var16 == NULL)) {
5948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5949 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
5950 show_backtrace(1);
5951 }
5952 var14 = var16;
5953 RET_LABEL15:(void)0;
5954 }
5955 }
5956 {
5957 { /* Inline mmodule#MModule#name (var14) on <var14:MModule> */
5958 var19 = var14->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var14:MModule> */
5959 if (unlikely(var19 == NULL)) {
5960 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5961 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
5962 show_backtrace(1);
5963 }
5964 var17 = var19;
5965 RET_LABEL18:(void)0;
5966 }
5967 }
5968 {
5969 var20 = string__Text__to_cmangle(var17);
5970 }
5971 if (varonce) {
5972 var21 = varonce;
5973 } else {
5974 var22 = "__";
5975 var23 = 2;
5976 var24 = string__NativeString__to_s_with_length(var22, var23);
5977 var21 = var24;
5978 varonce = var21;
5979 }
5980 {
5981 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
5982 var27 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
5983 if (unlikely(var27 == NULL)) {
5984 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5985 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5986 show_backtrace(1);
5987 }
5988 var25 = var27;
5989 RET_LABEL26:(void)0;
5990 }
5991 }
5992 {
5993 { /* Inline model#MClassDef#mclass (var25) on <var25:MClassDef> */
5994 var30 = var25->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var25:MClassDef> */
5995 if (unlikely(var30 == NULL)) {
5996 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5997 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
5998 show_backtrace(1);
5999 }
6000 var28 = var30;
6001 RET_LABEL29:(void)0;
6002 }
6003 }
6004 {
6005 { /* Inline model#MClass#name (var28) on <var28:MClass> */
6006 var33 = var28->attrs[COLOR_model__MClass___name].val; /* _name on <var28:MClass> */
6007 if (unlikely(var33 == NULL)) {
6008 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6009 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
6010 show_backtrace(1);
6011 }
6012 var31 = var33;
6013 RET_LABEL32:(void)0;
6014 }
6015 }
6016 {
6017 var34 = string__Text__to_cmangle(var31);
6018 }
6019 if (varonce35) {
6020 var36 = varonce35;
6021 } else {
6022 var37 = "__";
6023 var38 = 2;
6024 var39 = string__NativeString__to_s_with_length(var37, var38);
6025 var36 = var39;
6026 varonce35 = var36;
6027 }
6028 {
6029 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
6030 var42 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
6031 if (unlikely(var42 == NULL)) {
6032 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6033 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
6034 show_backtrace(1);
6035 }
6036 var40 = var42;
6037 RET_LABEL41:(void)0;
6038 }
6039 }
6040 {
6041 { /* Inline model#MProperty#name (var40) on <var40:MProperty> */
6042 var45 = var40->attrs[COLOR_model__MProperty___name].val; /* _name on <var40:MProperty> */
6043 if (unlikely(var45 == NULL)) {
6044 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6045 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
6046 show_backtrace(1);
6047 }
6048 var43 = var45;
6049 RET_LABEL44:(void)0;
6050 }
6051 }
6052 {
6053 var46 = string__Text__to_cmangle(var43);
6054 }
6055 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
6056 { /* var47 = array_instance Array[Object] */
6057 var48 = 5;
6058 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
6059 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var20;
6060 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var21;
6061 ((struct instance_array__NativeArray*)var49)->values[2] = (val*) var34;
6062 ((struct instance_array__NativeArray*)var49)->values[3] = (val*) var36;
6063 ((struct instance_array__NativeArray*)var49)->values[4] = (val*) var46;
6064 {
6065 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
6066 }
6067 }
6068 {
6069 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
6070 }
6071 var_res = var50;
6072 {
6073 { /* Inline abstract_compiler#MPropDef#c_name_cache= (self,var_res) on <self:MPropDef> */
6074 self->attrs[COLOR_abstract_compiler__MPropDef___c_name_cache].val = var_res; /* _c_name_cache on <self:MPropDef> */
6075 RET_LABEL51:(void)0;
6076 }
6077 }
6078 var = var_res;
6079 goto RET_LABEL;
6080 RET_LABEL:;
6081 return var;
6082 }
6083 /* method abstract_compiler#MPropDef#c_name for (self: Object): String */
6084 val* VIRTUAL_abstract_compiler__MPropDef__c_name(val* self) {
6085 val* var /* : String */;
6086 val* var1 /* : String */;
6087 var1 = abstract_compiler__MPropDef__c_name(self);
6088 var = var1;
6089 RET_LABEL:;
6090 return var;
6091 }
6092 /* method abstract_compiler#MMethodDef#can_inline for (self: MMethodDef, AbstractCompilerVisitor): Bool */
6093 short int abstract_compiler__MMethodDef__can_inline(val* self, val* p0) {
6094 short int var /* : Bool */;
6095 short int var1 /* : Bool */;
6096 int cltype;
6097 int idtype;
6098 const struct type* type_struct;
6099 const char* var_class_name;
6100 val* var_v /* var v: AbstractCompilerVisitor */;
6101 short int var2 /* : Bool */;
6102 short int var4 /* : Bool */;
6103 short int var5 /* : Bool */;
6104 val* var6 /* : AbstractCompiler */;
6105 val* var8 /* : AbstractCompiler */;
6106 val* var9 /* : ModelBuilder */;
6107 val* var11 /* : ModelBuilder */;
6108 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6109 val* var12 /* : HashMap[MPropDef, APropdef] */;
6110 val* var14 /* : HashMap[MPropDef, APropdef] */;
6111 short int var15 /* : Bool */;
6112 val* var16 /* : HashMap[MPropDef, APropdef] */;
6113 val* var18 /* : HashMap[MPropDef, APropdef] */;
6114 val* var19 /* : nullable Object */;
6115 val* var_npropdef /* var npropdef: APropdef */;
6116 short int var20 /* : Bool */;
6117 val* var21 /* : MProperty */;
6118 val* var23 /* : MProperty */;
6119 short int var24 /* : Bool */;
6120 short int var26 /* : Bool */;
6121 short int var27 /* : Bool */;
6122 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
6123 /* <p0:AbstractCompilerVisitor> isa VISITOR */
6124 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTVISITOR];
6125 cltype = type_struct->color;
6126 idtype = type_struct->id;
6127 if(cltype >= p0->type->table_size) {
6128 var1 = 0;
6129 } else {
6130 var1 = p0->type->type_table[cltype] == idtype;
6131 }
6132 if (unlikely(!var1)) {
6133 var_class_name = p0 == NULL ? "null" : p0->type->name;
6134 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
6135 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1859);
6136 show_backtrace(1);
6137 }
6138 var_v = p0;
6139 {
6140 { /* Inline model#MMethodDef#is_abstract (self) on <self:MMethodDef> */
6141 var4 = self->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on <self:MMethodDef> */
6142 var2 = var4;
6143 RET_LABEL3:(void)0;
6144 }
6145 }
6146 if (var2){
6147 var5 = 1;
6148 var = var5;
6149 goto RET_LABEL;
6150 } else {
6151 }
6152 {
6153 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
6154 var8 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
6155 if (unlikely(var8 == NULL)) {
6156 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6157 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6158 show_backtrace(1);
6159 }
6160 var6 = var8;
6161 RET_LABEL7:(void)0;
6162 }
6163 }
6164 {
6165 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var6) on <var6:AbstractCompiler> */
6166 var11 = var6->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var6:AbstractCompiler> */
6167 if (unlikely(var11 == NULL)) {
6168 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6169 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
6170 show_backtrace(1);
6171 }
6172 var9 = var11;
6173 RET_LABEL10:(void)0;
6174 }
6175 }
6176 var_modelbuilder = var9;
6177 {
6178 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
6179 var14 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
6180 if (unlikely(var14 == NULL)) {
6181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
6182 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
6183 show_backtrace(1);
6184 }
6185 var12 = var14;
6186 RET_LABEL13:(void)0;
6187 }
6188 }
6189 {
6190 var15 = abstract_collection__MapRead__has_key(var12, self);
6191 }
6192 if (var15){
6193 {
6194 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
6195 var18 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
6196 if (unlikely(var18 == NULL)) {
6197 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
6198 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
6199 show_backtrace(1);
6200 }
6201 var16 = var18;
6202 RET_LABEL17:(void)0;
6203 }
6204 }
6205 {
6206 var19 = hash_collection__HashMap___91d_93d(var16, self);
6207 }
6208 var_npropdef = var19;
6209 {
6210 var20 = ((short int (*)(val*))(var_npropdef->class->vft[COLOR_abstract_compiler__APropdef__can_inline]))(var_npropdef) /* can_inline on <var_npropdef:APropdef>*/;
6211 }
6212 var = var20;
6213 goto RET_LABEL;
6214 } else {
6215 {
6216 { /* Inline model#MPropDef#mproperty (self) on <self:MMethodDef> */
6217 var23 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MMethodDef> */
6218 if (unlikely(var23 == NULL)) {
6219 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6220 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
6221 show_backtrace(1);
6222 }
6223 var21 = var23;
6224 RET_LABEL22:(void)0;
6225 }
6226 }
6227 {
6228 { /* Inline model#MMethod#is_root_init (var21) on <var21:MProperty(MMethod)> */
6229 var26 = var21->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var21:MProperty(MMethod)> */
6230 var24 = var26;
6231 RET_LABEL25:(void)0;
6232 }
6233 }
6234 if (var24){
6235 var27 = 1;
6236 var = var27;
6237 goto RET_LABEL;
6238 } else {
6239 PRINT_ERROR("Runtime error: %s", "Aborted");
6240 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1871);
6241 show_backtrace(1);
6242 }
6243 }
6244 RET_LABEL:;
6245 return var;
6246 }
6247 /* method abstract_compiler#MMethodDef#can_inline for (self: Object, AbstractCompilerVisitor): Bool */
6248 short int VIRTUAL_abstract_compiler__MMethodDef__can_inline(val* self, val* p0) {
6249 short int var /* : Bool */;
6250 short int var1 /* : Bool */;
6251 var1 = abstract_compiler__MMethodDef__can_inline(self, p0);
6252 var = var1;
6253 RET_LABEL:;
6254 return var;
6255 }
6256 /* method abstract_compiler#MMethodDef#compile_inside_to_c for (self: MMethodDef, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
6257 val* abstract_compiler__MMethodDef__compile_inside_to_c(val* self, val* p0, val* p1) {
6258 val* var /* : nullable RuntimeVariable */;
6259 short int var1 /* : Bool */;
6260 int cltype;
6261 int idtype;
6262 const struct type* type_struct;
6263 const char* var_class_name;
6264 val* var_v /* var v: AbstractCompilerVisitor */;
6265 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
6266 val* var2 /* : AbstractCompiler */;
6267 val* var4 /* : AbstractCompiler */;
6268 val* var5 /* : ModelBuilder */;
6269 val* var7 /* : ModelBuilder */;
6270 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6271 val* var8 /* : nullable Object */;
6272 val* var10 /* : nullable Object */;
6273 val* var_val /* var val: nullable Object */;
6274 val* var11 /* : HashMap[MPropDef, APropdef] */;
6275 val* var13 /* : HashMap[MPropDef, APropdef] */;
6276 short int var14 /* : Bool */;
6277 val* var15 /* : HashMap[MPropDef, APropdef] */;
6278 val* var17 /* : HashMap[MPropDef, APropdef] */;
6279 val* var18 /* : nullable Object */;
6280 val* var_npropdef /* var npropdef: APropdef */;
6281 val* var19 /* : nullable ANode */;
6282 val* var21 /* : nullable ANode */;
6283 val* var_oldnode /* var oldnode: nullable ANode */;
6284 val* var24 /* : MProperty */;
6285 val* var26 /* : MProperty */;
6286 short int var27 /* : Bool */;
6287 short int var29 /* : Bool */;
6288 val* var30 /* : HashMap[MClassDef, AClassdef] */;
6289 val* var32 /* : HashMap[MClassDef, AClassdef] */;
6290 val* var33 /* : MClassDef */;
6291 val* var35 /* : MClassDef */;
6292 val* var36 /* : nullable Object */;
6293 val* var_nclassdef /* var nclassdef: AClassdef */;
6294 val* var37 /* : nullable ANode */;
6295 val* var39 /* : nullable ANode */;
6296 val* var_oldnode40 /* var oldnode: nullable ANode */;
6297 val* var43 /* : null */;
6298 short int var44 /* : Bool */;
6299 short int var45 /* : Bool */;
6300 val* var46 /* : RuntimeVariable */;
6301 val* var47 /* : null */;
6302 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
6303 /* <p0:AbstractCompilerVisitor> isa VISITOR */
6304 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTVISITOR];
6305 cltype = type_struct->color;
6306 idtype = type_struct->id;
6307 if(cltype >= p0->type->table_size) {
6308 var1 = 0;
6309 } else {
6310 var1 = p0->type->type_table[cltype] == idtype;
6311 }
6312 if (unlikely(!var1)) {
6313 var_class_name = p0 == NULL ? "null" : p0->type->name;
6314 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
6315 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1875);
6316 show_backtrace(1);
6317 }
6318 var_v = p0;
6319 var_arguments = p1;
6320 {
6321 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
6322 var4 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
6323 if (unlikely(var4 == NULL)) {
6324 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6325 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6326 show_backtrace(1);
6327 }
6328 var2 = var4;
6329 RET_LABEL3:(void)0;
6330 }
6331 }
6332 {
6333 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var2) on <var2:AbstractCompiler> */
6334 var7 = var2->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var2:AbstractCompiler> */
6335 if (unlikely(var7 == NULL)) {
6336 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6337 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
6338 show_backtrace(1);
6339 }
6340 var5 = var7;
6341 RET_LABEL6:(void)0;
6342 }
6343 }
6344 var_modelbuilder = var5;
6345 {
6346 { /* Inline model#MMethodDef#constant_value (self) on <self:MMethodDef> */
6347 var10 = self->attrs[COLOR_model__MMethodDef___constant_value].val; /* _constant_value on <self:MMethodDef> */
6348 var8 = var10;
6349 RET_LABEL9:(void)0;
6350 }
6351 }
6352 var_val = var8;
6353 {
6354 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
6355 var13 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
6356 if (unlikely(var13 == NULL)) {
6357 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
6358 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
6359 show_backtrace(1);
6360 }
6361 var11 = var13;
6362 RET_LABEL12:(void)0;
6363 }
6364 }
6365 {
6366 var14 = abstract_collection__MapRead__has_key(var11, self);
6367 }
6368 if (var14){
6369 {
6370 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
6371 var17 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
6372 if (unlikely(var17 == NULL)) {
6373 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
6374 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
6375 show_backtrace(1);
6376 }
6377 var15 = var17;
6378 RET_LABEL16:(void)0;
6379 }
6380 }
6381 {
6382 var18 = hash_collection__HashMap___91d_93d(var15, self);
6383 }
6384 var_npropdef = var18;
6385 {
6386 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (var_v) on <var_v:AbstractCompilerVisitor> */
6387 var21 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <var_v:AbstractCompilerVisitor> */
6388 var19 = var21;
6389 RET_LABEL20:(void)0;
6390 }
6391 }
6392 var_oldnode = var19;
6393 {
6394 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (var_v,var_npropdef) on <var_v:AbstractCompilerVisitor> */
6395 var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_npropdef; /* _current_node on <var_v:AbstractCompilerVisitor> */
6396 RET_LABEL22:(void)0;
6397 }
6398 }
6399 {
6400 abstract_compiler__MMethodDef__compile_parameter_check(self, var_v, var_arguments); /* Direct call abstract_compiler#MMethodDef#compile_parameter_check on <self:MMethodDef>*/
6401 }
6402 {
6403 ((void (*)(val*, val*, val*, val*))(var_npropdef->class->vft[COLOR_abstract_compiler__APropdef__compile_to_c]))(var_npropdef, var_v, self, var_arguments) /* compile_to_c on <var_npropdef:APropdef>*/;
6404 }
6405 {
6406 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (var_v,var_oldnode) on <var_v:AbstractCompilerVisitor> */
6407 var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_oldnode; /* _current_node on <var_v:AbstractCompilerVisitor> */
6408 RET_LABEL23:(void)0;
6409 }
6410 }
6411 } else {
6412 {
6413 { /* Inline model#MPropDef#mproperty (self) on <self:MMethodDef> */
6414 var26 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MMethodDef> */
6415 if (unlikely(var26 == NULL)) {
6416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6417 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
6418 show_backtrace(1);
6419 }
6420 var24 = var26;
6421 RET_LABEL25:(void)0;
6422 }
6423 }
6424 {
6425 { /* Inline model#MMethod#is_root_init (var24) on <var24:MProperty(MMethod)> */
6426 var29 = var24->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var24:MProperty(MMethod)> */
6427 var27 = var29;
6428 RET_LABEL28:(void)0;
6429 }
6430 }
6431 if (var27){
6432 {
6433 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
6434 var32 = var_modelbuilder->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <var_modelbuilder:ModelBuilder> */
6435 if (unlikely(var32 == NULL)) {
6436 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
6437 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410);
6438 show_backtrace(1);
6439 }
6440 var30 = var32;
6441 RET_LABEL31:(void)0;
6442 }
6443 }
6444 {
6445 { /* Inline model#MPropDef#mclassdef (self) on <self:MMethodDef> */
6446 var35 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MMethodDef> */
6447 if (unlikely(var35 == NULL)) {
6448 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
6449 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
6450 show_backtrace(1);
6451 }
6452 var33 = var35;
6453 RET_LABEL34:(void)0;
6454 }
6455 }
6456 {
6457 var36 = hash_collection__HashMap___91d_93d(var30, var33);
6458 }
6459 var_nclassdef = var36;
6460 {
6461 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node (var_v) on <var_v:AbstractCompilerVisitor> */
6462 var39 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val; /* _current_node on <var_v:AbstractCompilerVisitor> */
6463 var37 = var39;
6464 RET_LABEL38:(void)0;
6465 }
6466 }
6467 var_oldnode40 = var37;
6468 {
6469 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (var_v,var_nclassdef) on <var_v:AbstractCompilerVisitor> */
6470 var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_nclassdef; /* _current_node on <var_v:AbstractCompilerVisitor> */
6471 RET_LABEL41:(void)0;
6472 }
6473 }
6474 {
6475 abstract_compiler__MMethodDef__compile_parameter_check(self, var_v, var_arguments); /* Direct call abstract_compiler#MMethodDef#compile_parameter_check on <self:MMethodDef>*/
6476 }
6477 {
6478 abstract_compiler__AClassdef__compile_to_c(var_nclassdef, var_v, self, var_arguments); /* Direct call abstract_compiler#AClassdef#compile_to_c on <var_nclassdef:AClassdef>*/
6479 }
6480 {
6481 { /* Inline abstract_compiler#AbstractCompilerVisitor#current_node= (var_v,var_oldnode40) on <var_v:AbstractCompilerVisitor> */
6482 var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___current_node].val = var_oldnode40; /* _current_node on <var_v:AbstractCompilerVisitor> */
6483 RET_LABEL42:(void)0;
6484 }
6485 }
6486 } else {
6487 var43 = NULL;
6488 if (var_val == NULL) {
6489 var44 = 0; /* is null */
6490 } else {
6491 var44 = 1; /* arg is null and recv is not */
6492 }
6493 if (0) {
6494 var45 = ((short int (*)(val*, val*))(var_val->class->vft[COLOR_kernel__Object___33d_61d]))(var_val, var43) /* != on <var_val:nullable Object>*/;
6495 var44 = var45;
6496 }
6497 if (var44){
6498 {
6499 var46 = abstract_compiler__AbstractCompilerVisitor__value_instance(var_v, var_val);
6500 }
6501 {
6502 abstract_compiler__AbstractCompilerVisitor__ret(var_v, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <var_v:AbstractCompilerVisitor>*/
6503 }
6504 } else {
6505 PRINT_ERROR("Runtime error: %s", "Aborted");
6506 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1897);
6507 show_backtrace(1);
6508 }
6509 }
6510 }
6511 var47 = NULL;
6512 var = var47;
6513 goto RET_LABEL;
6514 RET_LABEL:;
6515 return var;
6516 }
6517 /* method abstract_compiler#MMethodDef#compile_inside_to_c for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
6518 val* VIRTUAL_abstract_compiler__MMethodDef__compile_inside_to_c(val* self, val* p0, val* p1) {
6519 val* var /* : nullable RuntimeVariable */;
6520 val* var1 /* : nullable RuntimeVariable */;
6521 var1 = abstract_compiler__MMethodDef__compile_inside_to_c(self, p0, p1);
6522 var = var1;
6523 RET_LABEL:;
6524 return var;
6525 }
6526 /* method abstract_compiler#MMethodDef#compile_parameter_check for (self: MMethodDef, AbstractCompilerVisitor, Array[RuntimeVariable]) */
6527 void abstract_compiler__MMethodDef__compile_parameter_check(val* self, val* p0, val* p1) {
6528 short int var /* : Bool */;
6529 int cltype;
6530 int idtype;
6531 const struct type* type_struct;
6532 const char* var_class_name;
6533 val* var_v /* var v: AbstractCompilerVisitor */;
6534 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
6535 val* var1 /* : AbstractCompiler */;
6536 val* var3 /* : AbstractCompiler */;
6537 val* var4 /* : ModelBuilder */;
6538 val* var6 /* : ModelBuilder */;
6539 val* var7 /* : ToolContext */;
6540 val* var9 /* : ToolContext */;
6541 val* var10 /* : OptionBool */;
6542 val* var12 /* : OptionBool */;
6543 val* var13 /* : nullable Object */;
6544 val* var15 /* : nullable Object */;
6545 short int var16 /* : Bool */;
6546 long var17 /* : Int */;
6547 long var_i /* var i: Int */;
6548 val* var18 /* : nullable MSignature */;
6549 val* var20 /* : nullable MSignature */;
6550 long var21 /* : Int */;
6551 long var_ /* var : Int */;
6552 short int var22 /* : Bool */;
6553 short int var24 /* : Bool */;
6554 int cltype25;
6555 int idtype26;
6556 const char* var_class_name27;
6557 short int var28 /* : Bool */;
6558 val* var29 /* : nullable MSignature */;
6559 val* var31 /* : nullable MSignature */;
6560 long var32 /* : Int */;
6561 long var34 /* : Int */;
6562 short int var35 /* : Bool */;
6563 short int var36 /* : Bool */;
6564 short int var38 /* : Bool */;
6565 val* var39 /* : MProperty */;
6566 val* var41 /* : MProperty */;
6567 val* var42 /* : MPropDef */;
6568 val* var44 /* : MPropDef */;
6569 val* var45 /* : nullable MSignature */;
6570 val* var47 /* : nullable MSignature */;
6571 val* var48 /* : Array[MParameter] */;
6572 val* var50 /* : Array[MParameter] */;
6573 val* var51 /* : nullable Object */;
6574 val* var52 /* : MType */;
6575 val* var54 /* : MType */;
6576 val* var_origmtype /* var origmtype: MType */;
6577 short int var55 /* : Bool */;
6578 short int var56 /* : Bool */;
6579 val* var57 /* : nullable MSignature */;
6580 val* var59 /* : nullable MSignature */;
6581 val* var60 /* : Array[MParameter] */;
6582 val* var62 /* : Array[MParameter] */;
6583 val* var63 /* : nullable Object */;
6584 val* var64 /* : MType */;
6585 val* var66 /* : MType */;
6586 val* var_mtype /* var mtype: MType */;
6587 static val* varonce;
6588 val* var67 /* : String */;
6589 char* var68 /* : NativeString */;
6590 long var69 /* : Int */;
6591 val* var70 /* : FlatString */;
6592 static val* varonce71;
6593 val* var72 /* : String */;
6594 char* var73 /* : NativeString */;
6595 long var74 /* : Int */;
6596 val* var75 /* : FlatString */;
6597 val* var76 /* : nullable MSignature */;
6598 val* var78 /* : nullable MSignature */;
6599 val* var79 /* : Array[MParameter] */;
6600 val* var81 /* : Array[MParameter] */;
6601 val* var82 /* : nullable Object */;
6602 val* var83 /* : String */;
6603 val* var85 /* : String */;
6604 static val* varonce86;
6605 val* var87 /* : String */;
6606 char* var88 /* : NativeString */;
6607 long var89 /* : Int */;
6608 val* var90 /* : FlatString */;
6609 long var91 /* : Int */;
6610 long var92 /* : Int */;
6611 short int var94 /* : Bool */;
6612 int cltype95;
6613 int idtype96;
6614 const char* var_class_name97;
6615 long var98 /* : Int */;
6616 val* var99 /* : nullable Object */;
6617 val* var100 /* : String */;
6618 static val* varonce101;
6619 val* var102 /* : String */;
6620 char* var103 /* : NativeString */;
6621 long var104 /* : Int */;
6622 val* var105 /* : FlatString */;
6623 static val* varonce106;
6624 val* var107 /* : String */;
6625 char* var108 /* : NativeString */;
6626 long var109 /* : Int */;
6627 val* var110 /* : FlatString */;
6628 val* var111 /* : Array[Object] */;
6629 long var112 /* : Int */;
6630 val* var113 /* : NativeArray[Object] */;
6631 val* var114 /* : Object */;
6632 val* var115 /* : String */;
6633 long var116 /* : Int */;
6634 long var117 /* : Int */;
6635 short int var119 /* : Bool */;
6636 int cltype120;
6637 int idtype121;
6638 const char* var_class_name122;
6639 long var123 /* : Int */;
6640 val* var124 /* : nullable Object */;
6641 static val* varonce125;
6642 val* var126 /* : String */;
6643 char* var127 /* : NativeString */;
6644 long var128 /* : Int */;
6645 val* var129 /* : FlatString */;
6646 long var130 /* : Int */;
6647 long var131 /* : Int */;
6648 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
6649 /* <p0:AbstractCompilerVisitor> isa VISITOR */
6650 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTVISITOR];
6651 cltype = type_struct->color;
6652 idtype = type_struct->id;
6653 if(cltype >= p0->type->table_size) {
6654 var = 0;
6655 } else {
6656 var = p0->type->type_table[cltype] == idtype;
6657 }
6658 if (unlikely(!var)) {
6659 var_class_name = p0 == NULL ? "null" : p0->type->name;
6660 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
6661 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1902);
6662 show_backtrace(1);
6663 }
6664 var_v = p0;
6665 var_arguments = p1;
6666 {
6667 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
6668 var3 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
6669 if (unlikely(var3 == NULL)) {
6670 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6671 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6672 show_backtrace(1);
6673 }
6674 var1 = var3;
6675 RET_LABEL2:(void)0;
6676 }
6677 }
6678 {
6679 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler> */
6680 var6 = var1->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler> */
6681 if (unlikely(var6 == NULL)) {
6682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6683 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
6684 show_backtrace(1);
6685 }
6686 var4 = var6;
6687 RET_LABEL5:(void)0;
6688 }
6689 }
6690 {
6691 { /* Inline modelbuilder#ModelBuilder#toolcontext (var4) on <var4:ModelBuilder> */
6692 var9 = var4->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var4:ModelBuilder> */
6693 if (unlikely(var9 == NULL)) {
6694 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6695 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
6696 show_backtrace(1);
6697 }
6698 var7 = var9;
6699 RET_LABEL8:(void)0;
6700 }
6701 }
6702 {
6703 { /* Inline abstract_compiler#ToolContext#opt_no_check_covariance (var7) on <var7:ToolContext> */
6704 var12 = var7->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <var7:ToolContext> */
6705 if (unlikely(var12 == NULL)) {
6706 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
6707 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 49);
6708 show_backtrace(1);
6709 }
6710 var10 = var12;
6711 RET_LABEL11:(void)0;
6712 }
6713 }
6714 {
6715 { /* Inline opts#Option#value (var10) on <var10:OptionBool> */
6716 var15 = var10->attrs[COLOR_opts__Option___value].val; /* _value on <var10:OptionBool> */
6717 var13 = var15;
6718 RET_LABEL14:(void)0;
6719 }
6720 }
6721 var16 = ((struct instance_kernel__Bool*)var13)->value; /* autounbox from nullable Object to Bool */;
6722 if (var16){
6723 goto RET_LABEL;
6724 } else {
6725 }
6726 var17 = 0;
6727 var_i = var17;
6728 {
6729 { /* Inline model#MMethodDef#msignature (self) on <self:MMethodDef> */
6730 var20 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:MMethodDef> */
6731 var18 = var20;
6732 RET_LABEL19:(void)0;
6733 }
6734 }
6735 if (var18 == NULL) {
6736 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6737 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1907);
6738 show_backtrace(1);
6739 } else {
6740 var21 = model__MSignature__arity(var18);
6741 }
6742 var_ = var21;
6743 for(;;) {
6744 {
6745 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
6746 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
6747 /* <var_:Int> isa OTHER */
6748 var24 = 1; /* easy <var_:Int> isa OTHER*/
6749 if (unlikely(!var24)) {
6750 var_class_name27 = type_kernel__Int.name;
6751 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
6752 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
6753 show_backtrace(1);
6754 }
6755 var28 = var_i < var_;
6756 var22 = var28;
6757 goto RET_LABEL23;
6758 RET_LABEL23:(void)0;
6759 }
6760 }
6761 if (var22){
6762 {
6763 { /* Inline model#MMethodDef#msignature (self) on <self:MMethodDef> */
6764 var31 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:MMethodDef> */
6765 var29 = var31;
6766 RET_LABEL30:(void)0;
6767 }
6768 }
6769 if (var29 == NULL) {
6770 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6771 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1909);
6772 show_backtrace(1);
6773 } else {
6774 { /* Inline model#MSignature#vararg_rank (var29) on <var29:nullable MSignature> */
6775 if (unlikely(var29 == NULL)) {
6776 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6777 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1510);
6778 show_backtrace(1);
6779 }
6780 var34 = var29->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var29:nullable MSignature> */
6781 var32 = var34;
6782 RET_LABEL33:(void)0;
6783 }
6784 }
6785 {
6786 { /* Inline kernel#Int#== (var32,var_i) on <var32:Int> */
6787 var38 = var32 == var_i;
6788 var36 = var38;
6789 goto RET_LABEL37;
6790 RET_LABEL37:(void)0;
6791 }
6792 var35 = var36;
6793 }
6794 if (var35){
6795 goto BREAK_label;
6796 } else {
6797 }
6798 {
6799 { /* Inline model#MPropDef#mproperty (self) on <self:MMethodDef> */
6800 var41 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MMethodDef> */
6801 if (unlikely(var41 == NULL)) {
6802 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6803 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
6804 show_backtrace(1);
6805 }
6806 var39 = var41;
6807 RET_LABEL40:(void)0;
6808 }
6809 }
6810 {
6811 { /* Inline model#MProperty#intro (var39) on <var39:MProperty(MMethod)> */
6812 var44 = var39->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var39:MProperty(MMethod)> */
6813 if (unlikely(var44 == NULL)) {
6814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6815 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
6816 show_backtrace(1);
6817 }
6818 var42 = var44;
6819 RET_LABEL43:(void)0;
6820 }
6821 }
6822 {
6823 { /* Inline model#MMethodDef#msignature (var42) on <var42:MPropDef(MMethodDef)> */
6824 var47 = var42->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var42:MPropDef(MMethodDef)> */
6825 var45 = var47;
6826 RET_LABEL46:(void)0;
6827 }
6828 }
6829 if (var45 == NULL) {
6830 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6831 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1912);
6832 show_backtrace(1);
6833 } else {
6834 { /* Inline model#MSignature#mparameters (var45) on <var45:nullable MSignature> */
6835 if (unlikely(var45 == NULL)) {
6836 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6837 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6838 show_backtrace(1);
6839 }
6840 var50 = var45->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var45:nullable MSignature> */
6841 if (unlikely(var50 == NULL)) {
6842 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6843 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6844 show_backtrace(1);
6845 }
6846 var48 = var50;
6847 RET_LABEL49:(void)0;
6848 }
6849 }
6850 {
6851 var51 = array__Array___91d_93d(var48, var_i);
6852 }
6853 {
6854 { /* Inline model#MParameter#mtype (var51) on <var51:nullable Object(MParameter)> */
6855 var54 = var51->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var51:nullable Object(MParameter)> */
6856 if (unlikely(var54 == NULL)) {
6857 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6858 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
6859 show_backtrace(1);
6860 }
6861 var52 = var54;
6862 RET_LABEL53:(void)0;
6863 }
6864 }
6865 var_origmtype = var52;
6866 {
6867 var55 = ((short int (*)(val*))(var_origmtype->class->vft[COLOR_model__MType__need_anchor]))(var_origmtype) /* need_anchor on <var_origmtype:MType>*/;
6868 }
6869 var56 = !var55;
6870 if (var56){
6871 goto BREAK_label;
6872 } else {
6873 }
6874 {
6875 { /* Inline model#MMethodDef#msignature (self) on <self:MMethodDef> */
6876 var59 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:MMethodDef> */
6877 var57 = var59;
6878 RET_LABEL58:(void)0;
6879 }
6880 }
6881 if (var57 == NULL) {
6882 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6883 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1916);
6884 show_backtrace(1);
6885 } else {
6886 { /* Inline model#MSignature#mparameters (var57) on <var57:nullable MSignature> */
6887 if (unlikely(var57 == NULL)) {
6888 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6889 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6890 show_backtrace(1);
6891 }
6892 var62 = var57->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var57:nullable MSignature> */
6893 if (unlikely(var62 == NULL)) {
6894 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6895 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6896 show_backtrace(1);
6897 }
6898 var60 = var62;
6899 RET_LABEL61:(void)0;
6900 }
6901 }
6902 {
6903 var63 = array__Array___91d_93d(var60, var_i);
6904 }
6905 {
6906 { /* Inline model#MParameter#mtype (var63) on <var63:nullable Object(MParameter)> */
6907 var66 = var63->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var63:nullable Object(MParameter)> */
6908 if (unlikely(var66 == NULL)) {
6909 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6910 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
6911 show_backtrace(1);
6912 }
6913 var64 = var66;
6914 RET_LABEL65:(void)0;
6915 }
6916 }
6917 var_mtype = var64;
6918 if (varonce) {
6919 var67 = varonce;
6920 } else {
6921 var68 = "/* Covariant cast for argument ";
6922 var69 = 31;
6923 var70 = string__NativeString__to_s_with_length(var68, var69);
6924 var67 = var70;
6925 varonce = var67;
6926 }
6927 if (varonce71) {
6928 var72 = varonce71;
6929 } else {
6930 var73 = " (";
6931 var74 = 2;
6932 var75 = string__NativeString__to_s_with_length(var73, var74);
6933 var72 = var75;
6934 varonce71 = var72;
6935 }
6936 {
6937 { /* Inline model#MMethodDef#msignature (self) on <self:MMethodDef> */
6938 var78 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:MMethodDef> */
6939 var76 = var78;
6940 RET_LABEL77:(void)0;
6941 }
6942 }
6943 if (var76 == NULL) {
6944 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6945 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1920);
6946 show_backtrace(1);
6947 } else {
6948 { /* Inline model#MSignature#mparameters (var76) on <var76:nullable MSignature> */
6949 if (unlikely(var76 == NULL)) {
6950 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6951 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6952 show_backtrace(1);
6953 }
6954 var81 = var76->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var76:nullable MSignature> */
6955 if (unlikely(var81 == NULL)) {
6956 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6957 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6958 show_backtrace(1);
6959 }
6960 var79 = var81;
6961 RET_LABEL80:(void)0;
6962 }
6963 }
6964 {
6965 var82 = array__Array___91d_93d(var79, var_i);
6966 }
6967 {
6968 { /* Inline model#MParameter#name (var82) on <var82:nullable Object(MParameter)> */
6969 var85 = var82->attrs[COLOR_model__MParameter___name].val; /* _name on <var82:nullable Object(MParameter)> */
6970 if (unlikely(var85 == NULL)) {
6971 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6972 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
6973 show_backtrace(1);
6974 }
6975 var83 = var85;
6976 RET_LABEL84:(void)0;
6977 }
6978 }
6979 if (varonce86) {
6980 var87 = varonce86;
6981 } else {
6982 var88 = ") ";
6983 var89 = 2;
6984 var90 = string__NativeString__to_s_with_length(var88, var89);
6985 var87 = var90;
6986 varonce86 = var87;
6987 }
6988 var91 = 1;
6989 {
6990 { /* Inline kernel#Int#+ (var_i,var91) on <var_i:Int> */
6991 /* Covariant cast for argument 0 (i) <var91:Int> isa OTHER */
6992 /* <var91:Int> isa OTHER */
6993 var94 = 1; /* easy <var91:Int> isa OTHER*/
6994 if (unlikely(!var94)) {
6995 var_class_name97 = type_kernel__Int.name;
6996 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name97);
6997 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
6998 show_backtrace(1);
6999 }
7000 var98 = var_i + var91;
7001 var92 = var98;
7002 goto RET_LABEL93;
7003 RET_LABEL93:(void)0;
7004 }
7005 }
7006 {
7007 var99 = array__Array___91d_93d(var_arguments, var92);
7008 }
7009 {
7010 var100 = abstract_compiler__RuntimeVariable__inspect(var99);
7011 }
7012 if (varonce101) {
7013 var102 = varonce101;
7014 } else {
7015 var103 = " isa ";
7016 var104 = 5;
7017 var105 = string__NativeString__to_s_with_length(var103, var104);
7018 var102 = var105;
7019 varonce101 = var102;
7020 }
7021 if (varonce106) {
7022 var107 = varonce106;
7023 } else {
7024 var108 = " */";
7025 var109 = 3;
7026 var110 = string__NativeString__to_s_with_length(var108, var109);
7027 var107 = var110;
7028 varonce106 = var107;
7029 }
7030 var111 = NEW_array__Array(&type_array__Arraykernel__Object);
7031 { /* var111 = array_instance Array[Object] */
7032 var112 = 9;
7033 var113 = NEW_array__NativeArray(var112, &type_array__NativeArraykernel__Object);
7034 ((struct instance_array__NativeArray*)var113)->values[0] = (val*) var67;
7035 var114 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
7036 ((struct instance_array__NativeArray*)var113)->values[1] = (val*) var114;
7037 ((struct instance_array__NativeArray*)var113)->values[2] = (val*) var72;
7038 ((struct instance_array__NativeArray*)var113)->values[3] = (val*) var83;
7039 ((struct instance_array__NativeArray*)var113)->values[4] = (val*) var87;
7040 ((struct instance_array__NativeArray*)var113)->values[5] = (val*) var100;
7041 ((struct instance_array__NativeArray*)var113)->values[6] = (val*) var102;
7042 ((struct instance_array__NativeArray*)var113)->values[7] = (val*) var_mtype;
7043 ((struct instance_array__NativeArray*)var113)->values[8] = (val*) var107;
7044 {
7045 ((void (*)(val*, val*, long))(var111->class->vft[COLOR_array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
7046 }
7047 }
7048 {
7049 var115 = ((val* (*)(val*))(var111->class->vft[COLOR_string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
7050 }
7051 {
7052 abstract_compiler__AbstractCompilerVisitor__add(var_v, var115); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
7053 }
7054 var116 = 1;
7055 {
7056 { /* Inline kernel#Int#+ (var_i,var116) on <var_i:Int> */
7057 /* Covariant cast for argument 0 (i) <var116:Int> isa OTHER */
7058 /* <var116:Int> isa OTHER */
7059 var119 = 1; /* easy <var116:Int> isa OTHER*/
7060 if (unlikely(!var119)) {
7061 var_class_name122 = type_kernel__Int.name;
7062 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name122);
7063 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
7064 show_backtrace(1);
7065 }
7066 var123 = var_i + var116;
7067 var117 = var123;
7068 goto RET_LABEL118;
7069 RET_LABEL118:(void)0;
7070 }
7071 }
7072 {
7073 var124 = array__Array___91d_93d(var_arguments, var117);
7074 }
7075 if (varonce125) {
7076 var126 = varonce125;
7077 } else {
7078 var127 = "covariance";
7079 var128 = 10;
7080 var129 = string__NativeString__to_s_with_length(var127, var128);
7081 var126 = var129;
7082 varonce125 = var126;
7083 }
7084 {
7085 abstract_compiler__AbstractCompilerVisitor__add_cast(var_v, var124, var_mtype, var126); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_cast on <var_v:AbstractCompilerVisitor>*/
7086 }
7087 BREAK_label: (void)0;
7088 var130 = 1;
7089 {
7090 var131 = kernel__Int__successor(var_i, var130);
7091 }
7092 var_i = var131;
7093 } else {
7094 goto BREAK_label132;
7095 }
7096 }
7097 BREAK_label132: (void)0;
7098 RET_LABEL:;
7099 }
7100 /* method abstract_compiler#MMethodDef#compile_parameter_check for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]) */
7101 void VIRTUAL_abstract_compiler__MMethodDef__compile_parameter_check(val* self, val* p0, val* p1) {
7102 abstract_compiler__MMethodDef__compile_parameter_check(self, p0, p1); /* Direct call abstract_compiler#MMethodDef#compile_parameter_check on <self:Object(MMethodDef)>*/
7103 RET_LABEL:;
7104 }
7105 /* method abstract_compiler#APropdef#compile_to_c for (self: APropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
7106 void abstract_compiler__APropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
7107 val* var_v /* var v: AbstractCompilerVisitor */;
7108 val* var_mpropdef /* var mpropdef: MMethodDef */;
7109 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
7110 static val* varonce;
7111 val* var /* : String */;
7112 char* var1 /* : NativeString */;
7113 long var2 /* : Int */;
7114 val* var3 /* : FlatString */;
7115 val* var4 /* : String */;
7116 static val* varonce5;
7117 val* var6 /* : String */;
7118 char* var7 /* : NativeString */;
7119 long var8 /* : Int */;
7120 val* var9 /* : FlatString */;
7121 static val* varonce10;
7122 val* var11 /* : String */;
7123 char* var12 /* : NativeString */;
7124 long var13 /* : Int */;
7125 val* var14 /* : FlatString */;
7126 val* var15 /* : Location */;
7127 val* var17 /* : Location */;
7128 val* var18 /* : String */;
7129 static val* varonce19;
7130 val* var20 /* : String */;
7131 char* var21 /* : NativeString */;
7132 long var22 /* : Int */;
7133 val* var23 /* : FlatString */;
7134 val* var24 /* : Array[Object] */;
7135 long var25 /* : Int */;
7136 val* var26 /* : NativeArray[Object] */;
7137 val* var27 /* : String */;
7138 static val* varonce28;
7139 val* var29 /* : String */;
7140 char* var30 /* : NativeString */;
7141 long var31 /* : Int */;
7142 val* var32 /* : FlatString */;
7143 var_v = p0;
7144 var_mpropdef = p1;
7145 var_arguments = p2;
7146 if (varonce) {
7147 var = varonce;
7148 } else {
7149 var1 = "PRINT_ERROR(\"NOT YET IMPLEMENTED ";
7150 var2 = 33;
7151 var3 = string__NativeString__to_s_with_length(var1, var2);
7152 var = var3;
7153 varonce = var;
7154 }
7155 {
7156 var4 = string__Object__class_name(self);
7157 }
7158 if (varonce5) {
7159 var6 = varonce5;
7160 } else {
7161 var7 = " ";
7162 var8 = 1;
7163 var9 = string__NativeString__to_s_with_length(var7, var8);
7164 var6 = var9;
7165 varonce5 = var6;
7166 }
7167 if (varonce10) {
7168 var11 = varonce10;
7169 } else {
7170 var12 = " at ";
7171 var13 = 4;
7172 var14 = string__NativeString__to_s_with_length(var12, var13);
7173 var11 = var14;
7174 varonce10 = var11;
7175 }
7176 {
7177 { /* Inline parser_nodes#ANode#location (self) on <self:APropdef> */
7178 var17 = self->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <self:APropdef> */
7179 if (unlikely(var17 == NULL)) {
7180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
7181 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
7182 show_backtrace(1);
7183 }
7184 var15 = var17;
7185 RET_LABEL16:(void)0;
7186 }
7187 }
7188 {
7189 var18 = location__Location__to_s(var15);
7190 }
7191 if (varonce19) {
7192 var20 = varonce19;
7193 } else {
7194 var21 = "\\n\");";
7195 var22 = 5;
7196 var23 = string__NativeString__to_s_with_length(var21, var22);
7197 var20 = var23;
7198 varonce19 = var20;
7199 }
7200 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
7201 { /* var24 = array_instance Array[Object] */
7202 var25 = 7;
7203 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
7204 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var;
7205 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var4;
7206 ((struct instance_array__NativeArray*)var26)->values[2] = (val*) var6;
7207 ((struct instance_array__NativeArray*)var26)->values[3] = (val*) var_mpropdef;
7208 ((struct instance_array__NativeArray*)var26)->values[4] = (val*) var11;
7209 ((struct instance_array__NativeArray*)var26)->values[5] = (val*) var18;
7210 ((struct instance_array__NativeArray*)var26)->values[6] = (val*) var20;
7211 {
7212 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
7213 }
7214 }
7215 {
7216 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
7217 }
7218 {
7219 abstract_compiler__AbstractCompilerVisitor__add(var_v, var27); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
7220 }
7221 if (varonce28) {
7222 var29 = varonce28;
7223 } else {
7224 var30 = "Not yet implemented";
7225 var31 = 19;
7226 var32 = string__NativeString__to_s_with_length(var30, var31);
7227 var29 = var32;
7228 varonce28 = var29;
7229 }
7230 {
7231 parser_nodes__ANode__debug(self, var29); /* Direct call parser_nodes#ANode#debug on <self:APropdef>*/
7232 }
7233 RET_LABEL:;
7234 }
7235 /* method abstract_compiler#APropdef#compile_to_c for (self: Object, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
7236 void VIRTUAL_abstract_compiler__APropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
7237 abstract_compiler__APropdef__compile_to_c(self, p0, p1, p2); /* Direct call abstract_compiler#APropdef#compile_to_c on <self:Object(APropdef)>*/
7238 RET_LABEL:;
7239 }
7240 /* method abstract_compiler#APropdef#can_inline for (self: APropdef): Bool */
7241 short int abstract_compiler__APropdef__can_inline(val* self) {
7242 short int var /* : Bool */;
7243 short int var1 /* : Bool */;
7244 var1 = 1;
7245 var = var1;
7246 goto RET_LABEL;
7247 RET_LABEL:;
7248 return var;
7249 }
7250 /* method abstract_compiler#APropdef#can_inline for (self: Object): Bool */
7251 short int VIRTUAL_abstract_compiler__APropdef__can_inline(val* self) {
7252 short int var /* : Bool */;
7253 short int var1 /* : Bool */;
7254 var1 = abstract_compiler__APropdef__can_inline(self);
7255 var = var1;
7256 RET_LABEL:;
7257 return var;
7258 }
7259 /* method abstract_compiler#AMethPropdef#compile_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
7260 void abstract_compiler__AMethPropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
7261 val* var_v /* var v: AbstractCompilerVisitor */;
7262 val* var_mpropdef /* var mpropdef: MMethodDef */;
7263 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
7264 short int var /* : Bool */;
7265 short int var2 /* : Bool */;
7266 val* var3 /* : nullable Object */;
7267 val* var4 /* : String */;
7268 val* var_cn /* var cn: String */;
7269 static val* varonce;
7270 val* var5 /* : String */;
7271 char* var6 /* : NativeString */;
7272 long var7 /* : Int */;
7273 val* var8 /* : FlatString */;
7274 val* var9 /* : MProperty */;
7275 val* var11 /* : MProperty */;
7276 val* var12 /* : String */;
7277 val* var14 /* : String */;
7278 val* var15 /* : String */;
7279 static val* varonce16;
7280 val* var17 /* : String */;
7281 char* var18 /* : NativeString */;
7282 long var19 /* : Int */;
7283 val* var20 /* : FlatString */;
7284 static val* varonce21;
7285 val* var22 /* : String */;
7286 char* var23 /* : NativeString */;
7287 long var24 /* : Int */;
7288 val* var25 /* : FlatString */;
7289 val* var26 /* : Array[Object] */;
7290 long var27 /* : Int */;
7291 val* var28 /* : NativeArray[Object] */;
7292 val* var29 /* : String */;
7293 val* var30 /* : nullable Array[CallSite] */;
7294 val* var32 /* : nullable Array[CallSite] */;
7295 val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */;
7296 val* var33 /* : null */;
7297 short int var34 /* : Bool */;
7298 short int var35 /* : Bool */;
7299 val* var_other /* var other: nullable Object */;
7300 short int var37 /* : Bool */;
7301 short int var38 /* : Bool */;
7302 short int var39 /* : Bool */;
7303 val* var40 /* : Array[RuntimeVariable] */;
7304 long var41 /* : Int */;
7305 val* var_ /* var : Array[RuntimeVariable] */;
7306 val* var42 /* : nullable Object */;
7307 val* var_args /* var args: Array[RuntimeVariable] */;
7308 val* var_43 /* var : Array[CallSite] */;
7309 val* var44 /* : ArrayIterator[nullable Object] */;
7310 val* var_45 /* var : ArrayIterator[CallSite] */;
7311 short int var46 /* : Bool */;
7312 val* var47 /* : nullable Object */;
7313 val* var_auto_super_init /* var auto_super_init: CallSite */;
7314 val* var48 /* : MMethod */;
7315 val* var50 /* : MMethod */;
7316 val* var51 /* : MProperty */;
7317 val* var53 /* : MProperty */;
7318 short int var54 /* : Bool */;
7319 short int var55 /* : Bool */;
7320 short int var57 /* : Bool */;
7321 short int var58 /* : Bool */;
7322 short int var59 /* : Bool */;
7323 long var60 /* : Int */;
7324 long var_i /* var i: Int */;
7325 val* var61 /* : MSignature */;
7326 val* var63 /* : MSignature */;
7327 long var64 /* : Int */;
7328 long var65 /* : Int */;
7329 long var66 /* : Int */;
7330 short int var68 /* : Bool */;
7331 int cltype;
7332 int idtype;
7333 const char* var_class_name;
7334 long var69 /* : Int */;
7335 long var_70 /* var : Int */;
7336 short int var71 /* : Bool */;
7337 short int var73 /* : Bool */;
7338 int cltype74;
7339 int idtype75;
7340 const char* var_class_name76;
7341 short int var77 /* : Bool */;
7342 val* var78 /* : nullable Object */;
7343 long var79 /* : Int */;
7344 long var80 /* : Int */;
7345 val* var81 /* : MMethod */;
7346 val* var83 /* : MMethod */;
7347 val* var84 /* : MProperty */;
7348 val* var86 /* : MProperty */;
7349 short int var87 /* : Bool */;
7350 short int var88 /* : Bool */;
7351 short int var90 /* : Bool */;
7352 short int var91 /* : Bool */;
7353 short int var92 /* : Bool */;
7354 val* var93 /* : nullable RuntimeVariable */;
7355 short int var96 /* : Bool */;
7356 short int var98 /* : Bool */;
7357 val* var99 /* : nullable Object */;
7358 val* var100 /* : MType */;
7359 val* var102 /* : MType */;
7360 short int var103 /* : Bool */;
7361 int cltype104;
7362 int idtype105;
7363 const char* var_class_name106;
7364 val* var107 /* : nullable RuntimeVariable */;
7365 short int var108 /* : Bool */;
7366 short int var110 /* : Bool */;
7367 short int var111 /* : Bool */;
7368 short int var112 /* : Bool */;
7369 short int var114 /* : Bool */;
7370 val* var115 /* : MProperty */;
7371 val* var117 /* : MProperty */;
7372 short int var118 /* : Bool */;
7373 short int var120 /* : Bool */;
7374 short int var121 /* : Bool */;
7375 short int var122 /* : Bool */;
7376 val* var123 /* : nullable AExpr */;
7377 val* var125 /* : nullable AExpr */;
7378 val* var_n_block /* var n_block: nullable AExpr */;
7379 val* var126 /* : null */;
7380 short int var127 /* : Bool */;
7381 short int var128 /* : Bool */;
7382 short int var130 /* : Bool */;
7383 short int var131 /* : Bool */;
7384 short int var132 /* : Bool */;
7385 long var133 /* : Int */;
7386 long var_i134 /* var i: Int */;
7387 val* var135 /* : nullable MSignature */;
7388 val* var137 /* : nullable MSignature */;
7389 long var138 /* : Int */;
7390 long var_139 /* var : Int */;
7391 short int var140 /* : Bool */;
7392 short int var142 /* : Bool */;
7393 int cltype143;
7394 int idtype144;
7395 const char* var_class_name145;
7396 short int var146 /* : Bool */;
7397 val* var147 /* : nullable ASignature */;
7398 val* var149 /* : nullable ASignature */;
7399 val* var150 /* : ANodes[AParam] */;
7400 val* var152 /* : ANodes[AParam] */;
7401 val* var153 /* : ANode */;
7402 val* var154 /* : nullable Variable */;
7403 val* var156 /* : nullable Variable */;
7404 val* var_variable /* var variable: Variable */;
7405 val* var157 /* : RuntimeVariable */;
7406 long var158 /* : Int */;
7407 long var159 /* : Int */;
7408 short int var161 /* : Bool */;
7409 int cltype162;
7410 int idtype163;
7411 const char* var_class_name164;
7412 long var165 /* : Int */;
7413 val* var166 /* : nullable Object */;
7414 long var167 /* : Int */;
7415 long var168 /* : Int */;
7416 val* var170 /* : nullable Object */;
7417 val* var171 /* : String */;
7418 val* var_cn172 /* var cn: String */;
7419 static val* varonce173;
7420 val* var174 /* : String */;
7421 char* var175 /* : NativeString */;
7422 long var176 /* : Int */;
7423 val* var177 /* : FlatString */;
7424 val* var178 /* : MProperty */;
7425 val* var180 /* : MProperty */;
7426 val* var181 /* : String */;
7427 val* var183 /* : String */;
7428 val* var184 /* : String */;
7429 static val* varonce185;
7430 val* var186 /* : String */;
7431 char* var187 /* : NativeString */;
7432 long var188 /* : Int */;
7433 val* var189 /* : FlatString */;
7434 static val* varonce190;
7435 val* var191 /* : String */;
7436 char* var192 /* : NativeString */;
7437 long var193 /* : Int */;
7438 val* var194 /* : FlatString */;
7439 val* var195 /* : Array[Object] */;
7440 long var196 /* : Int */;
7441 val* var197 /* : NativeArray[Object] */;
7442 val* var198 /* : String */;
7443 var_v = p0;
7444 var_mpropdef = p1;
7445 var_arguments = p2;
7446 {
7447 { /* Inline model#MMethodDef#is_abstract (var_mpropdef) on <var_mpropdef:MMethodDef> */
7448 var2 = var_mpropdef->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on <var_mpropdef:MMethodDef> */
7449 var = var2;
7450 RET_LABEL1:(void)0;
7451 }
7452 }
7453 if (var){
7454 {
7455 var3 = abstract_collection__SequenceRead__first(var_arguments);
7456 }
7457 {
7458 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__class_name_string]))(var_v, var3) /* class_name_string on <var_v:AbstractCompilerVisitor>*/;
7459 }
7460 var_cn = var4;
7461 if (varonce) {
7462 var5 = varonce;
7463 } else {
7464 var6 = "PRINT_ERROR(\"Runtime error: Abstract method `%s` called on `%s`\", \"";
7465 var7 = 67;
7466 var8 = string__NativeString__to_s_with_length(var6, var7);
7467 var5 = var8;
7468 varonce = var5;
7469 }
7470 {
7471 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
7472 var11 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
7473 if (unlikely(var11 == NULL)) {
7474 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7475 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
7476 show_backtrace(1);
7477 }
7478 var9 = var11;
7479 RET_LABEL10:(void)0;
7480 }
7481 }
7482 {
7483 { /* Inline model#MProperty#name (var9) on <var9:MProperty(MMethod)> */
7484 var14 = var9->attrs[COLOR_model__MProperty___name].val; /* _name on <var9:MProperty(MMethod)> */
7485 if (unlikely(var14 == NULL)) {
7486 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
7487 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
7488 show_backtrace(1);
7489 }
7490 var12 = var14;
7491 RET_LABEL13:(void)0;
7492 }
7493 }
7494 {
7495 var15 = string__Text__escape_to_c(var12);
7496 }
7497 if (varonce16) {
7498 var17 = varonce16;
7499 } else {
7500 var18 = "\", ";
7501 var19 = 3;
7502 var20 = string__NativeString__to_s_with_length(var18, var19);
7503 var17 = var20;
7504 varonce16 = var17;
7505 }
7506 if (varonce21) {
7507 var22 = varonce21;
7508 } else {
7509 var23 = ");";
7510 var24 = 2;
7511 var25 = string__NativeString__to_s_with_length(var23, var24);
7512 var22 = var25;
7513 varonce21 = var22;
7514 }
7515 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
7516 { /* var26 = array_instance Array[Object] */
7517 var27 = 5;
7518 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
7519 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var5;
7520 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var15;
7521 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var17;
7522 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var_cn;
7523 ((struct instance_array__NativeArray*)var28)->values[4] = (val*) var22;
7524 {
7525 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
7526 }
7527 }
7528 {
7529 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
7530 }
7531 {
7532 abstract_compiler__AbstractCompilerVisitor__add(var_v, var29); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
7533 }
7534 {
7535 abstract_compiler__AbstractCompilerVisitor__add_raw_abort(var_v); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_raw_abort on <var_v:AbstractCompilerVisitor>*/
7536 }
7537 goto RET_LABEL;
7538 } else {
7539 }
7540 {
7541 { /* Inline auto_super_init#AMethPropdef#auto_super_inits (self) on <self:AMethPropdef> */
7542 var32 = self->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <self:AMethPropdef> */
7543 var30 = var32;
7544 RET_LABEL31:(void)0;
7545 }
7546 }
7547 var_auto_super_inits = var30;
7548 var33 = NULL;
7549 if (var_auto_super_inits == NULL) {
7550 var34 = 0; /* is null */
7551 } else {
7552 var34 = 1; /* arg is null and recv is not */
7553 }
7554 if (0) {
7555 { /* Inline kernel#Object#!= (var_auto_super_inits,var33) on <var_auto_super_inits:nullable Array[CallSite]> */
7556 var_other = var33;
7557 {
7558 var38 = ((short int (*)(val*, val*))(var_auto_super_inits->class->vft[COLOR_kernel__Object___61d_61d]))(var_auto_super_inits, var_other) /* == on <var_auto_super_inits:nullable Array[CallSite](Array[CallSite])>*/;
7559 var37 = var38;
7560 }
7561 var39 = !var37;
7562 var35 = var39;
7563 goto RET_LABEL36;
7564 RET_LABEL36:(void)0;
7565 }
7566 var34 = var35;
7567 }
7568 if (var34){
7569 var40 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
7570 var41 = 1;
7571 {
7572 array__Array__with_capacity(var40, var41); /* Direct call array#Array#with_capacity on <var40:Array[RuntimeVariable]>*/
7573 }
7574 var_ = var40;
7575 {
7576 var42 = abstract_collection__SequenceRead__first(var_arguments);
7577 }
7578 {
7579 array__AbstractArray__push(var_, var42); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
7580 }
7581 var_args = var_;
7582 var_43 = var_auto_super_inits;
7583 {
7584 var44 = array__AbstractArrayRead__iterator(var_43);
7585 }
7586 var_45 = var44;
7587 for(;;) {
7588 {
7589 var46 = array__ArrayIterator__is_ok(var_45);
7590 }
7591 if (var46){
7592 {
7593 var47 = array__ArrayIterator__item(var_45);
7594 }
7595 var_auto_super_init = var47;
7596 {
7597 { /* Inline typing#CallSite#mproperty (var_auto_super_init) on <var_auto_super_init:CallSite> */
7598 var50 = var_auto_super_init->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <var_auto_super_init:CallSite> */
7599 if (unlikely(var50 == NULL)) {
7600 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7601 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
7602 show_backtrace(1);
7603 }
7604 var48 = var50;
7605 RET_LABEL49:(void)0;
7606 }
7607 }
7608 {
7609 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
7610 var53 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
7611 if (unlikely(var53 == NULL)) {
7612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7613 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
7614 show_backtrace(1);
7615 }
7616 var51 = var53;
7617 RET_LABEL52:(void)0;
7618 }
7619 }
7620 {
7621 { /* Inline kernel#Object#!= (var48,var51) on <var48:MMethod> */
7622 var_other = var51;
7623 {
7624 var58 = ((short int (*)(val*, val*))(var48->class->vft[COLOR_kernel__Object___61d_61d]))(var48, var_other) /* == on <var48:MMethod>*/;
7625 var57 = var58;
7626 }
7627 var59 = !var57;
7628 var55 = var59;
7629 goto RET_LABEL56;
7630 RET_LABEL56:(void)0;
7631 }
7632 var54 = var55;
7633 }
7634 if (unlikely(!var54)) {
7635 PRINT_ERROR("Runtime error: %s", "Assert failed");
7636 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1953);
7637 show_backtrace(1);
7638 }
7639 {
7640 array__AbstractArray__clear(var_args); /* Direct call array#AbstractArray#clear on <var_args:Array[RuntimeVariable]>*/
7641 }
7642 var60 = 0;
7643 var_i = var60;
7644 {
7645 { /* Inline typing#CallSite#msignature (var_auto_super_init) on <var_auto_super_init:CallSite> */
7646 var63 = var_auto_super_init->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_auto_super_init:CallSite> */
7647 if (unlikely(var63 == NULL)) {
7648 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
7649 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
7650 show_backtrace(1);
7651 }
7652 var61 = var63;
7653 RET_LABEL62:(void)0;
7654 }
7655 }
7656 {
7657 var64 = model__MSignature__arity(var61);
7658 }
7659 var65 = 1;
7660 {
7661 { /* Inline kernel#Int#+ (var64,var65) on <var64:Int> */
7662 /* Covariant cast for argument 0 (i) <var65:Int> isa OTHER */
7663 /* <var65:Int> isa OTHER */
7664 var68 = 1; /* easy <var65:Int> isa OTHER*/
7665 if (unlikely(!var68)) {
7666 var_class_name = type_kernel__Int.name;
7667 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7668 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
7669 show_backtrace(1);
7670 }
7671 var69 = var64 + var65;
7672 var66 = var69;
7673 goto RET_LABEL67;
7674 RET_LABEL67:(void)0;
7675 }
7676 }
7677 var_70 = var66;
7678 for(;;) {
7679 {
7680 { /* Inline kernel#Int#< (var_i,var_70) on <var_i:Int> */
7681 /* Covariant cast for argument 0 (i) <var_70:Int> isa OTHER */
7682 /* <var_70:Int> isa OTHER */
7683 var73 = 1; /* easy <var_70:Int> isa OTHER*/
7684 if (unlikely(!var73)) {
7685 var_class_name76 = type_kernel__Int.name;
7686 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76);
7687 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
7688 show_backtrace(1);
7689 }
7690 var77 = var_i < var_70;
7691 var71 = var77;
7692 goto RET_LABEL72;
7693 RET_LABEL72:(void)0;
7694 }
7695 }
7696 if (var71){
7697 {
7698 var78 = array__Array___91d_93d(var_arguments, var_i);
7699 }
7700 {
7701 array__Array__add(var_args, var78); /* Direct call array#Array#add on <var_args:Array[RuntimeVariable]>*/
7702 }
7703 var79 = 1;
7704 {
7705 var80 = kernel__Int__successor(var_i, var79);
7706 }
7707 var_i = var80;
7708 } else {
7709 goto BREAK_label;
7710 }
7711 }
7712 BREAK_label: (void)0;
7713 {
7714 { /* Inline typing#CallSite#mproperty (var_auto_super_init) on <var_auto_super_init:CallSite> */
7715 var83 = var_auto_super_init->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <var_auto_super_init:CallSite> */
7716 if (unlikely(var83 == NULL)) {
7717 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7718 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
7719 show_backtrace(1);
7720 }
7721 var81 = var83;
7722 RET_LABEL82:(void)0;
7723 }
7724 }
7725 {
7726 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
7727 var86 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
7728 if (unlikely(var86 == NULL)) {
7729 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7730 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
7731 show_backtrace(1);
7732 }
7733 var84 = var86;
7734 RET_LABEL85:(void)0;
7735 }
7736 }
7737 {
7738 { /* Inline kernel#Object#!= (var81,var84) on <var81:MMethod> */
7739 var_other = var84;
7740 {
7741 var91 = ((short int (*)(val*, val*))(var81->class->vft[COLOR_kernel__Object___61d_61d]))(var81, var_other) /* == on <var81:MMethod>*/;
7742 var90 = var91;
7743 }
7744 var92 = !var90;
7745 var88 = var92;
7746 goto RET_LABEL89;
7747 RET_LABEL89:(void)0;
7748 }
7749 var87 = var88;
7750 }
7751 if (unlikely(!var87)) {
7752 PRINT_ERROR("Runtime error: %s", "Assert failed");
7753 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1958);
7754 show_backtrace(1);
7755 }
7756 {
7757 var93 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_auto_super_init, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
7758 }
7759 {
7760 array__ArrayIterator__next(var_45); /* Direct call array#ArrayIterator#next on <var_45:ArrayIterator[CallSite]>*/
7761 }
7762 } else {
7763 goto BREAK_label94;
7764 }
7765 }
7766 BREAK_label94: (void)0;
7767 {
7768 { /* Inline abstract_collection#Iterator#finish (var_45) on <var_45:ArrayIterator[CallSite]> */
7769 RET_LABEL95:(void)0;
7770 }
7771 }
7772 } else {
7773 }
7774 {
7775 { /* Inline auto_super_init#AMethPropdef#auto_super_call (self) on <self:AMethPropdef> */
7776 var98 = self->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on <self:AMethPropdef> */
7777 var96 = var98;
7778 RET_LABEL97:(void)0;
7779 }
7780 }
7781 if (var96){
7782 {
7783 var99 = abstract_collection__SequenceRead__first(var_arguments);
7784 }
7785 {
7786 { /* Inline abstract_compiler#RuntimeVariable#mtype (var99) on <var99:nullable Object(RuntimeVariable)> */
7787 var102 = var99->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var99:nullable Object(RuntimeVariable)> */
7788 if (unlikely(var102 == NULL)) {
7789 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
7790 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
7791 show_backtrace(1);
7792 }
7793 var100 = var102;
7794 RET_LABEL101:(void)0;
7795 }
7796 }
7797 /* <var100:MType> isa MClassType */
7798 cltype104 = type_model__MClassType.color;
7799 idtype105 = type_model__MClassType.id;
7800 if(cltype104 >= var100->type->table_size) {
7801 var103 = 0;
7802 } else {
7803 var103 = var100->type->type_table[cltype104] == idtype105;
7804 }
7805 if (unlikely(!var103)) {
7806 var_class_name106 = var100 == NULL ? "null" : var100->type->name;
7807 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name106);
7808 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1963);
7809 show_backtrace(1);
7810 }
7811 {
7812 var107 = separate_compiler__SeparateCompilerVisitor__supercall(var_v, var_mpropdef, var100, var_arguments);
7813 }
7814 } else {
7815 }
7816 {
7817 { /* Inline model#MMethodDef#is_intern (var_mpropdef) on <var_mpropdef:MMethodDef> */
7818 var110 = var_mpropdef->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <var_mpropdef:MMethodDef> */
7819 var108 = var110;
7820 RET_LABEL109:(void)0;
7821 }
7822 }
7823 if (var108){
7824 {
7825 var111 = abstract_compiler__AMethPropdef__compile_intern_to_c(self, var_v, var_mpropdef, var_arguments);
7826 }
7827 if (var111){
7828 goto RET_LABEL;
7829 } else {
7830 }
7831 } else {
7832 {
7833 { /* Inline model#MMethodDef#is_extern (var_mpropdef) on <var_mpropdef:MMethodDef> */
7834 var114 = var_mpropdef->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <var_mpropdef:MMethodDef> */
7835 var112 = var114;
7836 RET_LABEL113:(void)0;
7837 }
7838 }
7839 if (var112){
7840 {
7841 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
7842 var117 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
7843 if (unlikely(var117 == NULL)) {
7844 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7845 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
7846 show_backtrace(1);
7847 }
7848 var115 = var117;
7849 RET_LABEL116:(void)0;
7850 }
7851 }
7852 {
7853 { /* Inline model#MMethod#is_init (var115) on <var115:MProperty(MMethod)> */
7854 var120 = var115->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var115:MProperty(MMethod)> */
7855 var118 = var120;
7856 RET_LABEL119:(void)0;
7857 }
7858 }
7859 if (var118){
7860 {
7861 var121 = abstract_compiler__AMethPropdef__compile_externinit_to_c(self, var_v, var_mpropdef, var_arguments);
7862 }
7863 if (var121){
7864 goto RET_LABEL;
7865 } else {
7866 }
7867 } else {
7868 {
7869 var122 = abstract_compiler__AMethPropdef__compile_externmeth_to_c(self, var_v, var_mpropdef, var_arguments);
7870 }
7871 if (var122){
7872 goto RET_LABEL;
7873 } else {
7874 }
7875 }
7876 } else {
7877 }
7878 }
7879 {
7880 { /* Inline parser_nodes#AMethPropdef#n_block (self) on <self:AMethPropdef> */
7881 var125 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
7882 var123 = var125;
7883 RET_LABEL124:(void)0;
7884 }
7885 }
7886 var_n_block = var123;
7887 var126 = NULL;
7888 if (var_n_block == NULL) {
7889 var127 = 0; /* is null */
7890 } else {
7891 var127 = 1; /* arg is null and recv is not */
7892 }
7893 if (0) {
7894 { /* Inline kernel#Object#!= (var_n_block,var126) on <var_n_block:nullable AExpr> */
7895 var_other = var126;
7896 {
7897 var131 = ((short int (*)(val*, val*))(var_n_block->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_block, var_other) /* == on <var_n_block:nullable AExpr(AExpr)>*/;
7898 var130 = var131;
7899 }
7900 var132 = !var130;
7901 var128 = var132;
7902 goto RET_LABEL129;
7903 RET_LABEL129:(void)0;
7904 }
7905 var127 = var128;
7906 }
7907 if (var127){
7908 var133 = 0;
7909 var_i134 = var133;
7910 {
7911 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
7912 var137 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
7913 var135 = var137;
7914 RET_LABEL136:(void)0;
7915 }
7916 }
7917 if (var135 == NULL) {
7918 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7919 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1980);
7920 show_backtrace(1);
7921 } else {
7922 var138 = model__MSignature__arity(var135);
7923 }
7924 var_139 = var138;
7925 for(;;) {
7926 {
7927 { /* Inline kernel#Int#< (var_i134,var_139) on <var_i134:Int> */
7928 /* Covariant cast for argument 0 (i) <var_139:Int> isa OTHER */
7929 /* <var_139:Int> isa OTHER */
7930 var142 = 1; /* easy <var_139:Int> isa OTHER*/
7931 if (unlikely(!var142)) {
7932 var_class_name145 = type_kernel__Int.name;
7933 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name145);
7934 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
7935 show_backtrace(1);
7936 }
7937 var146 = var_i134 < var_139;
7938 var140 = var146;
7939 goto RET_LABEL141;
7940 RET_LABEL141:(void)0;
7941 }
7942 }
7943 if (var140){
7944 {
7945 { /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
7946 var149 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
7947 var147 = var149;
7948 RET_LABEL148:(void)0;
7949 }
7950 }
7951 if (var147 == NULL) {
7952 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7953 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1981);
7954 show_backtrace(1);
7955 } else {
7956 { /* Inline parser_nodes#ASignature#n_params (var147) on <var147:nullable ASignature> */
7957 if (unlikely(var147 == NULL)) {
7958 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7959 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7960 show_backtrace(1);
7961 }
7962 var152 = var147->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var147:nullable ASignature> */
7963 if (unlikely(var152 == NULL)) {
7964 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
7965 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7966 show_backtrace(1);
7967 }
7968 var150 = var152;
7969 RET_LABEL151:(void)0;
7970 }
7971 }
7972 {
7973 var153 = parser_nodes__ANodes___91d_93d(var150, var_i134);
7974 }
7975 {
7976 { /* Inline scope#AParam#variable (var153) on <var153:ANode(AParam)> */
7977 var156 = var153->attrs[COLOR_scope__AParam___variable].val; /* _variable on <var153:ANode(AParam)> */
7978 var154 = var156;
7979 RET_LABEL155:(void)0;
7980 }
7981 }
7982 if (unlikely(var154 == NULL)) {
7983 PRINT_ERROR("Runtime error: %s", "Cast failed");
7984 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1981);
7985 show_backtrace(1);
7986 }
7987 var_variable = var154;
7988 {
7989 var157 = abstract_compiler__AbstractCompilerVisitor__variable(var_v, var_variable);
7990 }
7991 var158 = 1;
7992 {
7993 { /* Inline kernel#Int#+ (var_i134,var158) on <var_i134:Int> */
7994 /* Covariant cast for argument 0 (i) <var158:Int> isa OTHER */
7995 /* <var158:Int> isa OTHER */
7996 var161 = 1; /* easy <var158:Int> isa OTHER*/
7997 if (unlikely(!var161)) {
7998 var_class_name164 = type_kernel__Int.name;
7999 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name164);
8000 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
8001 show_backtrace(1);
8002 }
8003 var165 = var_i134 + var158;
8004 var159 = var165;
8005 goto RET_LABEL160;
8006 RET_LABEL160:(void)0;
8007 }
8008 }
8009 {
8010 var166 = array__Array___91d_93d(var_arguments, var159);
8011 }
8012 {
8013 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var157, var166); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
8014 }
8015 var167 = 1;
8016 {
8017 var168 = kernel__Int__successor(var_i134, var167);
8018 }
8019 var_i134 = var168;
8020 } else {
8021 goto BREAK_label169;
8022 }
8023 }
8024 BREAK_label169: (void)0;
8025 {
8026 abstract_compiler__AbstractCompilerVisitor__stmt(var_v, var_n_block); /* Direct call abstract_compiler#AbstractCompilerVisitor#stmt on <var_v:AbstractCompilerVisitor>*/
8027 }
8028 goto RET_LABEL;
8029 } else {
8030 }
8031 {
8032 var170 = abstract_collection__SequenceRead__first(var_arguments);
8033 }
8034 {
8035 var171 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__class_name_string]))(var_v, var170) /* class_name_string on <var_v:AbstractCompilerVisitor>*/;
8036 }
8037 var_cn172 = var171;
8038 if (varonce173) {
8039 var174 = varonce173;
8040 } else {
8041 var175 = "PRINT_ERROR(\"Runtime error: uncompiled method `%s` called on `%s`. NOT YET IMPLEMENTED\", \"";
8042 var176 = 90;
8043 var177 = string__NativeString__to_s_with_length(var175, var176);
8044 var174 = var177;
8045 varonce173 = var174;
8046 }
8047 {
8048 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
8049 var180 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
8050 if (unlikely(var180 == NULL)) {
8051 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8052 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8053 show_backtrace(1);
8054 }
8055 var178 = var180;
8056 RET_LABEL179:(void)0;
8057 }
8058 }
8059 {
8060 { /* Inline model#MProperty#name (var178) on <var178:MProperty(MMethod)> */
8061 var183 = var178->attrs[COLOR_model__MProperty___name].val; /* _name on <var178:MProperty(MMethod)> */
8062 if (unlikely(var183 == NULL)) {
8063 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
8064 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
8065 show_backtrace(1);
8066 }
8067 var181 = var183;
8068 RET_LABEL182:(void)0;
8069 }
8070 }
8071 {
8072 var184 = string__Text__escape_to_c(var181);
8073 }
8074 if (varonce185) {
8075 var186 = varonce185;
8076 } else {
8077 var187 = "\", ";
8078 var188 = 3;
8079 var189 = string__NativeString__to_s_with_length(var187, var188);
8080 var186 = var189;
8081 varonce185 = var186;
8082 }
8083 if (varonce190) {
8084 var191 = varonce190;
8085 } else {
8086 var192 = ");";
8087 var193 = 2;
8088 var194 = string__NativeString__to_s_with_length(var192, var193);
8089 var191 = var194;
8090 varonce190 = var191;
8091 }
8092 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
8093 { /* var195 = array_instance Array[Object] */
8094 var196 = 5;
8095 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
8096 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var174;
8097 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var184;
8098 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var186;
8099 ((struct instance_array__NativeArray*)var197)->values[3] = (val*) var_cn172;
8100 ((struct instance_array__NativeArray*)var197)->values[4] = (val*) var191;
8101 {
8102 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
8103 }
8104 }
8105 {
8106 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
8107 }
8108 {
8109 abstract_compiler__AbstractCompilerVisitor__add(var_v, var198); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
8110 }
8111 {
8112 abstract_compiler__AbstractCompilerVisitor__add_raw_abort(var_v); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_raw_abort on <var_v:AbstractCompilerVisitor>*/
8113 }
8114 RET_LABEL:;
8115 }
8116 /* method abstract_compiler#AMethPropdef#compile_to_c for (self: Object, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
8117 void VIRTUAL_abstract_compiler__AMethPropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
8118 abstract_compiler__AMethPropdef__compile_to_c(self, p0, p1, p2); /* Direct call abstract_compiler#AMethPropdef#compile_to_c on <self:Object(AMethPropdef)>*/
8119 RET_LABEL:;
8120 }
8121 /* method abstract_compiler#AMethPropdef#can_inline for (self: AMethPropdef): Bool */
8122 short int abstract_compiler__AMethPropdef__can_inline(val* self) {
8123 short int var /* : Bool */;
8124 val* var1 /* : nullable Array[CallSite] */;
8125 val* var3 /* : nullable Array[CallSite] */;
8126 val* var4 /* : null */;
8127 short int var5 /* : Bool */;
8128 short int var6 /* : Bool */;
8129 val* var_other /* var other: nullable Object */;
8130 short int var8 /* : Bool */;
8131 short int var9 /* : Bool */;
8132 short int var10 /* : Bool */;
8133 short int var11 /* : Bool */;
8134 val* var12 /* : nullable AExpr */;
8135 val* var14 /* : nullable AExpr */;
8136 val* var_nblock /* var nblock: nullable AExpr */;
8137 val* var15 /* : null */;
8138 short int var16 /* : Bool */;
8139 short int var17 /* : Bool */;
8140 val* var_other19 /* var other: nullable Object */;
8141 short int var20 /* : Bool */;
8142 short int var22 /* : Bool */;
8143 short int var23 /* : Bool */;
8144 short int var24 /* : Bool */;
8145 short int var25 /* : Bool */;
8146 val* var26 /* : nullable MPropDef */;
8147 val* var28 /* : nullable MPropDef */;
8148 val* var29 /* : MProperty */;
8149 val* var31 /* : MProperty */;
8150 val* var32 /* : String */;
8151 val* var34 /* : String */;
8152 static val* varonce;
8153 val* var35 /* : String */;
8154 char* var36 /* : NativeString */;
8155 long var37 /* : Int */;
8156 val* var38 /* : FlatString */;
8157 short int var39 /* : Bool */;
8158 short int var40 /* : Bool */;
8159 short int var_ /* var : Bool */;
8160 val* var41 /* : nullable MPropDef */;
8161 val* var43 /* : nullable MPropDef */;
8162 val* var44 /* : MProperty */;
8163 val* var46 /* : MProperty */;
8164 val* var47 /* : String */;
8165 val* var49 /* : String */;
8166 static val* varonce50;
8167 val* var51 /* : String */;
8168 char* var52 /* : NativeString */;
8169 long var53 /* : Int */;
8170 val* var54 /* : FlatString */;
8171 short int var55 /* : Bool */;
8172 short int var56 /* : Bool */;
8173 short int var_57 /* var : Bool */;
8174 val* var58 /* : nullable MPropDef */;
8175 val* var60 /* : nullable MPropDef */;
8176 val* var61 /* : MClassDef */;
8177 val* var63 /* : MClassDef */;
8178 val* var64 /* : MClass */;
8179 val* var66 /* : MClass */;
8180 val* var67 /* : String */;
8181 val* var69 /* : String */;
8182 static val* varonce70;
8183 val* var71 /* : String */;
8184 char* var72 /* : NativeString */;
8185 long var73 /* : Int */;
8186 val* var74 /* : FlatString */;
8187 short int var75 /* : Bool */;
8188 short int var76 /* : Bool */;
8189 short int var77 /* : Bool */;
8190 short int var78 /* : Bool */;
8191 short int var79 /* : Bool */;
8192 int cltype;
8193 int idtype;
8194 short int var_80 /* var : Bool */;
8195 val* var81 /* : ANodes[AExpr] */;
8196 val* var83 /* : ANodes[AExpr] */;
8197 long var84 /* : Int */;
8198 long var85 /* : Int */;
8199 short int var86 /* : Bool */;
8200 short int var87 /* : Bool */;
8201 short int var89 /* : Bool */;
8202 short int var90 /* : Bool */;
8203 short int var91 /* : Bool */;
8204 {
8205 { /* Inline auto_super_init#AMethPropdef#auto_super_inits (self) on <self:AMethPropdef> */
8206 var3 = self->attrs[COLOR_auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <self:AMethPropdef> */
8207 var1 = var3;
8208 RET_LABEL2:(void)0;
8209 }
8210 }
8211 var4 = NULL;
8212 if (var1 == NULL) {
8213 var5 = 0; /* is null */
8214 } else {
8215 var5 = 1; /* arg is null and recv is not */
8216 }
8217 if (0) {
8218 { /* Inline kernel#Object#!= (var1,var4) on <var1:nullable Array[CallSite]> */
8219 var_other = var4;
8220 {
8221 var9 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable Array[CallSite](Array[CallSite])>*/;
8222 var8 = var9;
8223 }
8224 var10 = !var8;
8225 var6 = var10;
8226 goto RET_LABEL7;
8227 RET_LABEL7:(void)0;
8228 }
8229 var5 = var6;
8230 }
8231 if (var5){
8232 var11 = 0;
8233 var = var11;
8234 goto RET_LABEL;
8235 } else {
8236 }
8237 {
8238 { /* Inline parser_nodes#AMethPropdef#n_block (self) on <self:AMethPropdef> */
8239 var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
8240 var12 = var14;
8241 RET_LABEL13:(void)0;
8242 }
8243 }
8244 var_nblock = var12;
8245 var15 = NULL;
8246 if (var_nblock == NULL) {
8247 var16 = 1; /* is null */
8248 } else {
8249 var16 = 0; /* arg is null but recv is not */
8250 }
8251 if (0) {
8252 { /* Inline kernel#Object#== (var_nblock,var15) on <var_nblock:nullable AExpr> */
8253 var_other19 = var15;
8254 {
8255 { /* Inline kernel#Object#is_same_instance (var_nblock,var_other19) on <var_nblock:nullable AExpr(AExpr)> */
8256 var22 = var_nblock == var_other19;
8257 var20 = var22;
8258 goto RET_LABEL21;
8259 RET_LABEL21:(void)0;
8260 }
8261 }
8262 var17 = var20;
8263 goto RET_LABEL18;
8264 RET_LABEL18:(void)0;
8265 }
8266 var16 = var17;
8267 }
8268 if (var16){
8269 var23 = 1;
8270 var = var23;
8271 goto RET_LABEL;
8272 } else {
8273 }
8274 {
8275 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
8276 var28 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
8277 var26 = var28;
8278 RET_LABEL27:(void)0;
8279 }
8280 }
8281 if (var26 == NULL) {
8282 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8283 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1999);
8284 show_backtrace(1);
8285 } else {
8286 { /* Inline model#MPropDef#mproperty (var26) on <var26:nullable MPropDef(nullable MMethodDef)> */
8287 if (unlikely(var26 == NULL)) {
8288 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8289 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8290 show_backtrace(1);
8291 }
8292 var31 = var26->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var26:nullable MPropDef(nullable MMethodDef)> */
8293 if (unlikely(var31 == NULL)) {
8294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8295 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8296 show_backtrace(1);
8297 }
8298 var29 = var31;
8299 RET_LABEL30:(void)0;
8300 }
8301 }
8302 {
8303 { /* Inline model#MProperty#name (var29) on <var29:MProperty(MMethod)> */
8304 var34 = var29->attrs[COLOR_model__MProperty___name].val; /* _name on <var29:MProperty(MMethod)> */
8305 if (unlikely(var34 == NULL)) {
8306 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
8307 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
8308 show_backtrace(1);
8309 }
8310 var32 = var34;
8311 RET_LABEL33:(void)0;
8312 }
8313 }
8314 if (varonce) {
8315 var35 = varonce;
8316 } else {
8317 var36 = "==";
8318 var37 = 2;
8319 var38 = string__NativeString__to_s_with_length(var36, var37);
8320 var35 = var38;
8321 varonce = var35;
8322 }
8323 {
8324 var40 = string__FlatString___61d_61d(var32, var35);
8325 var39 = var40;
8326 }
8327 var_ = var39;
8328 if (var39){
8329 var25 = var_;
8330 } else {
8331 {
8332 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
8333 var43 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
8334 var41 = var43;
8335 RET_LABEL42:(void)0;
8336 }
8337 }
8338 if (var41 == NULL) {
8339 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8340 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1999);
8341 show_backtrace(1);
8342 } else {
8343 { /* Inline model#MPropDef#mproperty (var41) on <var41:nullable MPropDef(nullable MMethodDef)> */
8344 if (unlikely(var41 == NULL)) {
8345 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8346 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8347 show_backtrace(1);
8348 }
8349 var46 = var41->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var41:nullable MPropDef(nullable MMethodDef)> */
8350 if (unlikely(var46 == NULL)) {
8351 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8352 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8353 show_backtrace(1);
8354 }
8355 var44 = var46;
8356 RET_LABEL45:(void)0;
8357 }
8358 }
8359 {
8360 { /* Inline model#MProperty#name (var44) on <var44:MProperty(MMethod)> */
8361 var49 = var44->attrs[COLOR_model__MProperty___name].val; /* _name on <var44:MProperty(MMethod)> */
8362 if (unlikely(var49 == NULL)) {
8363 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
8364 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
8365 show_backtrace(1);
8366 }
8367 var47 = var49;
8368 RET_LABEL48:(void)0;
8369 }
8370 }
8371 if (varonce50) {
8372 var51 = varonce50;
8373 } else {
8374 var52 = "!=";
8375 var53 = 2;
8376 var54 = string__NativeString__to_s_with_length(var52, var53);
8377 var51 = var54;
8378 varonce50 = var51;
8379 }
8380 {
8381 var56 = string__FlatString___61d_61d(var47, var51);
8382 var55 = var56;
8383 }
8384 var25 = var55;
8385 }
8386 var_57 = var25;
8387 if (var25){
8388 {
8389 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
8390 var60 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
8391 var58 = var60;
8392 RET_LABEL59:(void)0;
8393 }
8394 }
8395 if (var58 == NULL) {
8396 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8397 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1999);
8398 show_backtrace(1);
8399 } else {
8400 { /* Inline model#MPropDef#mclassdef (var58) on <var58:nullable MPropDef(nullable MMethodDef)> */
8401 if (unlikely(var58 == NULL)) {
8402 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8403 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8404 show_backtrace(1);
8405 }
8406 var63 = var58->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var58:nullable MPropDef(nullable MMethodDef)> */
8407 if (unlikely(var63 == NULL)) {
8408 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8409 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8410 show_backtrace(1);
8411 }
8412 var61 = var63;
8413 RET_LABEL62:(void)0;
8414 }
8415 }
8416 {
8417 { /* Inline model#MClassDef#mclass (var61) on <var61:MClassDef> */
8418 var66 = var61->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var61:MClassDef> */
8419 if (unlikely(var66 == NULL)) {
8420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8421 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
8422 show_backtrace(1);
8423 }
8424 var64 = var66;
8425 RET_LABEL65:(void)0;
8426 }
8427 }
8428 {
8429 { /* Inline model#MClass#name (var64) on <var64:MClass> */
8430 var69 = var64->attrs[COLOR_model__MClass___name].val; /* _name on <var64:MClass> */
8431 if (unlikely(var69 == NULL)) {
8432 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
8433 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
8434 show_backtrace(1);
8435 }
8436 var67 = var69;
8437 RET_LABEL68:(void)0;
8438 }
8439 }
8440 if (varonce70) {
8441 var71 = varonce70;
8442 } else {
8443 var72 = "Object";
8444 var73 = 6;
8445 var74 = string__NativeString__to_s_with_length(var72, var73);
8446 var71 = var74;
8447 varonce70 = var71;
8448 }
8449 {
8450 var76 = string__FlatString___61d_61d(var67, var71);
8451 var75 = var76;
8452 }
8453 var24 = var75;
8454 } else {
8455 var24 = var_57;
8456 }
8457 if (var24){
8458 var77 = 1;
8459 var = var77;
8460 goto RET_LABEL;
8461 } else {
8462 }
8463 /* <var_nblock:nullable AExpr(AExpr)> isa ABlockExpr */
8464 cltype = type_parser_nodes__ABlockExpr.color;
8465 idtype = type_parser_nodes__ABlockExpr.id;
8466 if(cltype >= var_nblock->type->table_size) {
8467 var79 = 0;
8468 } else {
8469 var79 = var_nblock->type->type_table[cltype] == idtype;
8470 }
8471 var_80 = var79;
8472 if (var79){
8473 {
8474 { /* Inline parser_nodes#ABlockExpr#n_expr (var_nblock) on <var_nblock:nullable AExpr(ABlockExpr)> */
8475 var83 = var_nblock->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <var_nblock:nullable AExpr(ABlockExpr)> */
8476 if (unlikely(var83 == NULL)) {
8477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
8478 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321);
8479 show_backtrace(1);
8480 }
8481 var81 = var83;
8482 RET_LABEL82:(void)0;
8483 }
8484 }
8485 {
8486 var84 = parser_nodes__ANodes__length(var81);
8487 }
8488 var85 = 0;
8489 {
8490 { /* Inline kernel#Int#== (var84,var85) on <var84:Int> */
8491 var89 = var84 == var85;
8492 var87 = var89;
8493 goto RET_LABEL88;
8494 RET_LABEL88:(void)0;
8495 }
8496 var86 = var87;
8497 }
8498 var78 = var86;
8499 } else {
8500 var78 = var_80;
8501 }
8502 if (var78){
8503 var90 = 1;
8504 var = var90;
8505 goto RET_LABEL;
8506 } else {
8507 }
8508 var91 = 0;
8509 var = var91;
8510 goto RET_LABEL;
8511 RET_LABEL:;
8512 return var;
8513 }
8514 /* method abstract_compiler#AMethPropdef#can_inline for (self: Object): Bool */
8515 short int VIRTUAL_abstract_compiler__AMethPropdef__can_inline(val* self) {
8516 short int var /* : Bool */;
8517 short int var1 /* : Bool */;
8518 var1 = abstract_compiler__AMethPropdef__can_inline(self);
8519 var = var1;
8520 RET_LABEL:;
8521 return var;
8522 }