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