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