Makefile: use `--no-stacktrace` on c_src/nitg to deal with the -lunwind issue on...
[nit.git] / c_src / separate_compiler.sep.3.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: SeparateCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
3 void separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
4 val* var_pname /* var pname: String */;
5 val* var_ret_type /* var ret_type: nullable MType */;
6 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
7 val* var /* : nullable Object */;
8 val* var1 /* : MType */;
9 val* var_elttype /* var elttype: MType */;
10 static val* varonce;
11 val* var2 /* : String */;
12 char* var3 /* : NativeString */;
13 long var4 /* : Int */;
14 val* var5 /* : String */;
15 val* var6 /* : MClass */;
16 val* var_nclass /* var nclass: MClass */;
17 val* var7 /* : Array[Object] */;
18 long var8 /* : Int */;
19 val* var_ /* var : Array[Object] */;
20 static val* varonce9;
21 val* var10 /* : String */;
22 char* var11 /* : NativeString */;
23 long var12 /* : Int */;
24 val* var13 /* : String */;
25 val* var14 /* : String */;
26 static val* varonce15;
27 val* var16 /* : String */;
28 char* var17 /* : NativeString */;
29 long var18 /* : Int */;
30 val* var19 /* : String */;
31 long var20 /* : Int */;
32 val* var21 /* : nullable Object */;
33 static val* varonce22;
34 val* var23 /* : String */;
35 char* var24 /* : NativeString */;
36 long var25 /* : Int */;
37 val* var26 /* : String */;
38 val* var27 /* : String */;
39 val* var_recv /* var recv: String */;
40 static val* varonce28;
41 val* var29 /* : String */;
42 char* var30 /* : NativeString */;
43 long var31 /* : Int */;
44 val* var32 /* : String */;
45 short int var33 /* : Bool */;
46 static val* varonce34;
47 val* var35 /* : String */;
48 char* var36 /* : NativeString */;
49 long var37 /* : Int */;
50 val* var38 /* : String */;
51 long var39 /* : Int */;
52 val* var40 /* : nullable Object */;
53 static val* varonce41;
54 val* var42 /* : String */;
55 char* var43 /* : NativeString */;
56 long var44 /* : Int */;
57 val* var45 /* : String */;
58 val* var46 /* : Array[Object] */;
59 long var47 /* : Int */;
60 val* var48 /* : NativeArray[Object] */;
61 val* var49 /* : String */;
62 val* var50 /* : RuntimeVariable */;
63 static val* varonce51;
64 val* var52 /* : String */;
65 char* var53 /* : NativeString */;
66 long var54 /* : Int */;
67 val* var55 /* : String */;
68 short int var56 /* : Bool */;
69 static val* varonce57;
70 val* var58 /* : String */;
71 char* var59 /* : NativeString */;
72 long var60 /* : Int */;
73 val* var61 /* : String */;
74 long var62 /* : Int */;
75 val* var63 /* : nullable Object */;
76 static val* varonce64;
77 val* var65 /* : String */;
78 char* var66 /* : NativeString */;
79 long var67 /* : Int */;
80 val* var68 /* : String */;
81 long var69 /* : Int */;
82 val* var70 /* : nullable Object */;
83 static val* varonce71;
84 val* var72 /* : String */;
85 char* var73 /* : NativeString */;
86 long var74 /* : Int */;
87 val* var75 /* : String */;
88 val* var76 /* : Array[Object] */;
89 long var77 /* : Int */;
90 val* var78 /* : NativeArray[Object] */;
91 val* var79 /* : String */;
92 static val* varonce80;
93 val* var81 /* : String */;
94 char* var82 /* : NativeString */;
95 long var83 /* : Int */;
96 val* var84 /* : String */;
97 short int var85 /* : Bool */;
98 val* var86 /* : Array[Object] */;
99 long var87 /* : Int */;
100 val* var_88 /* var : Array[Object] */;
101 static val* varonce89;
102 val* var90 /* : String */;
103 char* var91 /* : NativeString */;
104 long var92 /* : Int */;
105 val* var93 /* : String */;
106 val* var94 /* : String */;
107 static val* varonce95;
108 val* var96 /* : String */;
109 char* var97 /* : NativeString */;
110 long var98 /* : Int */;
111 val* var99 /* : String */;
112 long var100 /* : Int */;
113 val* var101 /* : nullable Object */;
114 static val* varonce102;
115 val* var103 /* : String */;
116 char* var104 /* : NativeString */;
117 long var105 /* : Int */;
118 val* var106 /* : String */;
119 val* var107 /* : String */;
120 val* var_recv1 /* var recv1: String */;
121 static val* varonce108;
122 val* var109 /* : String */;
123 char* var110 /* : NativeString */;
124 long var111 /* : Int */;
125 val* var112 /* : String */;
126 static val* varonce113;
127 val* var114 /* : String */;
128 char* var115 /* : NativeString */;
129 long var116 /* : Int */;
130 val* var117 /* : String */;
131 static val* varonce118;
132 val* var119 /* : String */;
133 char* var120 /* : NativeString */;
134 long var121 /* : Int */;
135 val* var122 /* : String */;
136 long var123 /* : Int */;
137 val* var124 /* : nullable Object */;
138 static val* varonce125;
139 val* var126 /* : String */;
140 char* var127 /* : NativeString */;
141 long var128 /* : Int */;
142 val* var129 /* : String */;
143 val* var130 /* : String */;
144 static val* varonce131;
145 val* var132 /* : String */;
146 char* var133 /* : NativeString */;
147 long var134 /* : Int */;
148 val* var135 /* : String */;
149 val* var136 /* : Array[Object] */;
150 long var137 /* : Int */;
151 val* var138 /* : NativeArray[Object] */;
152 val* var139 /* : String */;
153 var_pname = p0;
154 var_ret_type = p1;
155 var_arguments = p2;
156 var = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
157 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var) /* mtype on <var:nullable Object(RuntimeVariable)>*/;
158 var_elttype = var1;
159 if (varonce) {
160 var2 = varonce;
161 } else {
162 var3 = "NativeArray";
163 var4 = 11;
164 var5 = string__NativeString__to_s_with_length(var3, var4);
165 var2 = var5;
166 varonce = var2;
167 }
168 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var2) /* get_class on <self:SeparateCompilerVisitor>*/;
169 var_nclass = var6;
170 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
171 var8 = 5;
172 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
173 var_ = var7;
174 if (varonce9) {
175 var10 = varonce9;
176 } else {
177 var11 = "((struct instance_";
178 var12 = 18;
179 var13 = string__NativeString__to_s_with_length(var11, var12);
180 var10 = var13;
181 varonce9 = var10;
182 }
183 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
184 var14 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_nclass) /* c_instance_name on <var_nclass:MClass>*/;
185 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
186 if (varonce15) {
187 var16 = varonce15;
188 } else {
189 var17 = "*)";
190 var18 = 2;
191 var19 = string__NativeString__to_s_with_length(var17, var18);
192 var16 = var19;
193 varonce15 = var16;
194 }
195 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
196 var20 = 0;
197 var21 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var20) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
198 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on <var_:Array[Object]>*/;
199 if (varonce22) {
200 var23 = varonce22;
201 } else {
202 var24 = ")->values";
203 var25 = 9;
204 var26 = string__NativeString__to_s_with_length(var24, var25);
205 var23 = var26;
206 varonce22 = var23;
207 }
208 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
209 var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
210 var_recv = var27;
211 if (varonce28) {
212 var29 = varonce28;
213 } else {
214 var30 = "[]";
215 var31 = 2;
216 var32 = string__NativeString__to_s_with_length(var30, var31);
217 var29 = var32;
218 varonce28 = var29;
219 }
220 var33 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var29) /* == on <var_pname:String>*/;
221 if (var33){
222 if (varonce34) {
223 var35 = varonce34;
224 } else {
225 var36 = "[";
226 var37 = 1;
227 var38 = string__NativeString__to_s_with_length(var36, var37);
228 var35 = var38;
229 varonce34 = var35;
230 }
231 var39 = 1;
232 var40 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var39) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
233 if (varonce41) {
234 var42 = varonce41;
235 } else {
236 var43 = "]";
237 var44 = 1;
238 var45 = string__NativeString__to_s_with_length(var43, var44);
239 var42 = var45;
240 varonce41 = var42;
241 }
242 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
243 { /* var46 = array_instance Array[Object] */
244 var47 = 4;
245 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
246 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_recv;
247 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var35;
248 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var40;
249 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
250 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
251 }
252 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
253 if (var_ret_type == NULL) {
254 fprintf(stderr, "Runtime error: %s", "Cast failed");
255 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1623);
256 show_backtrace(1);
257 }
258 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var49, var_ret_type) /* new_expr on <self:SeparateCompilerVisitor>*/;
259 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var50) /* ret on <self:SeparateCompilerVisitor>*/;
260 goto RET_LABEL;
261 } else {
262 if (varonce51) {
263 var52 = varonce51;
264 } else {
265 var53 = "[]=";
266 var54 = 3;
267 var55 = string__NativeString__to_s_with_length(var53, var54);
268 var52 = var55;
269 varonce51 = var52;
270 }
271 var56 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var52) /* == on <var_pname:String>*/;
272 if (var56){
273 if (varonce57) {
274 var58 = varonce57;
275 } else {
276 var59 = "[";
277 var60 = 1;
278 var61 = string__NativeString__to_s_with_length(var59, var60);
279 var58 = var61;
280 varonce57 = var58;
281 }
282 var62 = 1;
283 var63 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var62) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
284 if (varonce64) {
285 var65 = varonce64;
286 } else {
287 var66 = "]=";
288 var67 = 2;
289 var68 = string__NativeString__to_s_with_length(var66, var67);
290 var65 = var68;
291 varonce64 = var65;
292 }
293 var69 = 2;
294 var70 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var69) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
295 if (varonce71) {
296 var72 = varonce71;
297 } else {
298 var73 = ";";
299 var74 = 1;
300 var75 = string__NativeString__to_s_with_length(var73, var74);
301 var72 = var75;
302 varonce71 = var72;
303 }
304 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
305 { /* var76 = array_instance Array[Object] */
306 var77 = 6;
307 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
308 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_recv;
309 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var58;
310 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var63;
311 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var65;
312 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
313 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
314 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
315 }
316 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
317 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
318 goto RET_LABEL;
319 } else {
320 if (varonce80) {
321 var81 = varonce80;
322 } else {
323 var82 = "copy_to";
324 var83 = 7;
325 var84 = string__NativeString__to_s_with_length(var82, var83);
326 var81 = var84;
327 varonce80 = var81;
328 }
329 var85 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var81) /* == on <var_pname:String>*/;
330 if (var85){
331 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
332 var87 = 5;
333 ((void (*)(val*, long))(var86->class->vft[COLOR_array__Array__with_capacity]))(var86, var87) /* with_capacity on <var86:Array[Object]>*/;
334 var_88 = var86;
335 if (varonce89) {
336 var90 = varonce89;
337 } else {
338 var91 = "((struct instance_";
339 var92 = 18;
340 var93 = string__NativeString__to_s_with_length(var91, var92);
341 var90 = var93;
342 varonce89 = var90;
343 }
344 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var90) /* add on <var_88:Array[Object]>*/;
345 var94 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_nclass) /* c_instance_name on <var_nclass:MClass>*/;
346 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var94) /* add on <var_88:Array[Object]>*/;
347 if (varonce95) {
348 var96 = varonce95;
349 } else {
350 var97 = "*)";
351 var98 = 2;
352 var99 = string__NativeString__to_s_with_length(var97, var98);
353 var96 = var99;
354 varonce95 = var96;
355 }
356 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var96) /* add on <var_88:Array[Object]>*/;
357 var100 = 1;
358 var101 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var100) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
359 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var101) /* add on <var_88:Array[Object]>*/;
360 if (varonce102) {
361 var103 = varonce102;
362 } else {
363 var104 = ")->values";
364 var105 = 9;
365 var106 = string__NativeString__to_s_with_length(var104, var105);
366 var103 = var106;
367 varonce102 = var103;
368 }
369 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var103) /* add on <var_88:Array[Object]>*/;
370 var107 = ((val* (*)(val*))(var_88->class->vft[COLOR_string__Object__to_s]))(var_88) /* to_s on <var_88:Array[Object]>*/;
371 var_recv1 = var107;
372 if (varonce108) {
373 var109 = varonce108;
374 } else {
375 var110 = "memcpy(";
376 var111 = 7;
377 var112 = string__NativeString__to_s_with_length(var110, var111);
378 var109 = var112;
379 varonce108 = var109;
380 }
381 if (varonce113) {
382 var114 = varonce113;
383 } else {
384 var115 = ", ";
385 var116 = 2;
386 var117 = string__NativeString__to_s_with_length(var115, var116);
387 var114 = var117;
388 varonce113 = var114;
389 }
390 if (varonce118) {
391 var119 = varonce118;
392 } else {
393 var120 = ", ";
394 var121 = 2;
395 var122 = string__NativeString__to_s_with_length(var120, var121);
396 var119 = var122;
397 varonce118 = var119;
398 }
399 var123 = 2;
400 var124 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var123) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
401 if (varonce125) {
402 var126 = varonce125;
403 } else {
404 var127 = "*sizeof(";
405 var128 = 8;
406 var129 = string__NativeString__to_s_with_length(var127, var128);
407 var126 = var129;
408 varonce125 = var126;
409 }
410 var130 = ((val* (*)(val*))(var_elttype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_elttype) /* ctype on <var_elttype:MType>*/;
411 if (varonce131) {
412 var132 = varonce131;
413 } else {
414 var133 = "));";
415 var134 = 3;
416 var135 = string__NativeString__to_s_with_length(var133, var134);
417 var132 = var135;
418 varonce131 = var132;
419 }
420 var136 = NEW_array__Array(&type_array__Arraykernel__Object);
421 { /* var136 = array_instance Array[Object] */
422 var137 = 9;
423 var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
424 ((struct instance_array__NativeArray*)var138)->values[0] = (val*) var109;
425 ((struct instance_array__NativeArray*)var138)->values[1] = (val*) var_recv1;
426 ((struct instance_array__NativeArray*)var138)->values[2] = (val*) var114;
427 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var_recv;
428 ((struct instance_array__NativeArray*)var138)->values[4] = (val*) var119;
429 ((struct instance_array__NativeArray*)var138)->values[5] = (val*) var124;
430 ((struct instance_array__NativeArray*)var138)->values[6] = (val*) var126;
431 ((struct instance_array__NativeArray*)var138)->values[7] = (val*) var130;
432 ((struct instance_array__NativeArray*)var138)->values[8] = (val*) var132;
433 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
434 }
435 var139 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
436 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var139) /* add on <self:SeparateCompilerVisitor>*/;
437 goto RET_LABEL;
438 } else {
439 }
440 }
441 }
442 RET_LABEL:;
443 }
444 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
445 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
446 separate_compiler__SeparateCompilerVisitor__native_array_def(self, p0, p1, p2);
447 RET_LABEL:;
448 }
449 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: SeparateCompilerVisitor, MType, Array[RuntimeVariable]) */
450 void separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
451 val* var_ret_type /* var ret_type: MType */;
452 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
453 static val* varonce;
454 val* var /* : String */;
455 char* var1 /* : NativeString */;
456 long var2 /* : Int */;
457 val* var3 /* : String */;
458 val* var4 /* : MClass */;
459 val* var_mclass /* var mclass: MClass */;
460 val* var5 /* : MClassType */;
461 val* var6 /* : Array[MType] */;
462 val* var7 /* : nullable Object */;
463 short int var8 /* : Bool */;
464 int cltype;
465 int idtype;
466 const char* var_class_name;
467 val* var_ft /* var ft: MParameterType */;
468 long var9 /* : Int */;
469 val* var10 /* : nullable Object */;
470 val* var11 /* : RuntimeVariable */;
471 val* var_res /* var res: RuntimeVariable */;
472 var_ret_type = p0;
473 var_arguments = p1;
474 if (varonce) {
475 var = varonce;
476 } else {
477 var1 = "ArrayCapable";
478 var2 = 12;
479 var3 = string__NativeString__to_s_with_length(var1, var2);
480 var = var3;
481 varonce = var;
482 }
483 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var) /* get_class on <self:SeparateCompilerVisitor>*/;
484 var_mclass = var4;
485 var5 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
486 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassType__arguments]))(var5) /* arguments on <var5:MClassType>*/;
487 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__first]))(var6) /* first on <var6:Array[MType]>*/;
488 /* <var7:nullable Object(MType)> isa MParameterType */
489 cltype = type_model__MParameterType.color;
490 idtype = type_model__MParameterType.id;
491 if(cltype >= var7->type->table_size) {
492 var8 = 0;
493 } else {
494 var8 = var7->type->type_table[cltype] == idtype;
495 }
496 if (!var8) {
497 var_class_name = var7 == NULL ? "null" : var7->type->name;
498 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name);
499 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1638);
500 show_backtrace(1);
501 }
502 var_ft = var7;
503 var9 = 1;
504 var10 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var9) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
505 var11 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__native_array_instance]))(self, var_ft, var10) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
506 var_res = var11;
507 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var_res) /* ret on <self:SeparateCompilerVisitor>*/;
508 RET_LABEL:;
509 }
510 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
511 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
512 separate_compiler__SeparateCompilerVisitor__calloc_array(self, p0, p1);
513 RET_LABEL:;
514 }
515 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: SeparateCompilerVisitor, MClassDef, MType) */
516 void separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
517 val* var_mclassdef /* var mclassdef: MClassDef */;
518 val* var_mtype /* var mtype: MType */;
519 short int var /* : Bool */;
520 val* var1 /* : AbstractCompiler */;
521 val* var_compiler /* var compiler: SeparateCompiler */;
522 val* var2 /* : Map[MClassDef, Set[MType]] */;
523 val* var3 /* : nullable Frame */;
524 val* var4 /* : MPropDef */;
525 val* var5 /* : MClassDef */;
526 short int var6 /* : Bool */;
527 short int var7 /* : Bool */;
528 val* var8 /* : Map[MClassDef, Set[MType]] */;
529 val* var9 /* : nullable Frame */;
530 val* var10 /* : MPropDef */;
531 val* var11 /* : MClassDef */;
532 val* var12 /* : HashSet[MType] */;
533 val* var13 /* : Map[MClassDef, Set[MType]] */;
534 val* var14 /* : nullable Frame */;
535 val* var15 /* : MPropDef */;
536 val* var16 /* : MClassDef */;
537 val* var17 /* : nullable Object */;
538 var_mclassdef = p0;
539 var_mtype = p1;
540 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
541 if (!var) {
542 fprintf(stderr, "Runtime error: %s", "Assert failed");
543 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1644);
544 show_backtrace(1);
545 }
546 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
547 var_compiler = var1;
548 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
549 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
550 if (var3 == NULL) {
551 fprintf(stderr, "Runtime error: %s", "Receiver is null");
552 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1646);
553 show_backtrace(1);
554 } else {
555 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var3) /* mpropdef on <var3:nullable Frame>*/;
556 }
557 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MPropDef__mclassdef]))(var4) /* mclassdef on <var4:MPropDef>*/;
558 var6 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var5) /* has_key on <var2:Map[MClassDef, Set[MType]]>*/;
559 var7 = !var6;
560 if (var7){
561 var8 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
562 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
563 if (var9 == NULL) {
564 fprintf(stderr, "Runtime error: %s", "Receiver is null");
565 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1647);
566 show_backtrace(1);
567 } else {
568 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var9) /* mpropdef on <var9:nullable Frame>*/;
569 }
570 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mclassdef]))(var10) /* mclassdef on <var10:MPropDef>*/;
571 var12 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
572 ((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashSet__init]))(var12) /* init on <var12:HashSet[MType]>*/;
573 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var11, var12) /* []= on <var8:Map[MClassDef, Set[MType]]>*/;
574 } else {
575 }
576 var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
577 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
578 if (var14 == NULL) {
579 fprintf(stderr, "Runtime error: %s", "Receiver is null");
580 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1649);
581 show_backtrace(1);
582 } else {
583 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var14) /* mpropdef on <var14:nullable Frame>*/;
584 }
585 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MPropDef__mclassdef]))(var15) /* mclassdef on <var15:MPropDef>*/;
586 var17 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var16) /* [] on <var13:Map[MClassDef, Set[MType]]>*/;
587 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var17, var_mtype) /* add on <var17:nullable Object(Set[MType])>*/;
588 RET_LABEL:;
589 }
590 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: Object, MClassDef, MType) */
591 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
592 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, p0, p1);
593 RET_LABEL:;
594 }
595 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
596 val* separate_compiler__MMethodDef__separate_runtime_function(val* self) {
597 val* var /* : AbstractRuntimeFunction */;
598 val* var1 /* : nullable SeparateRuntimeFunction */;
599 val* var_res /* var res: nullable SeparateRuntimeFunction */;
600 val* var2 /* : null */;
601 short int var3 /* : Bool */;
602 val* var4 /* : SeparateRuntimeFunction */;
603 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache]))(self) /* separate_runtime_function_cache on <self:MMethodDef>*/;
604 var_res = var1;
605 var2 = NULL;
606 if (var_res == NULL) {
607 var3 = 1; /* is null */
608 } else {
609 var3 = 0; /* arg is null but recv is not */
610 }
611 if (var3){
612 var4 = NEW_separate_compiler__SeparateRuntimeFunction(&type_separate_compiler__SeparateRuntimeFunction);
613 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:SeparateRuntimeFunction>*/;
614 var_res = var4;
615 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache_61d]))(self, var_res) /* separate_runtime_function_cache= on <self:MMethodDef>*/;
616 } else {
617 }
618 var = var_res;
619 goto RET_LABEL;
620 RET_LABEL:;
621 return var;
622 }
623 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: Object): AbstractRuntimeFunction */
624 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function(val* self) {
625 val* var /* : AbstractRuntimeFunction */;
626 val* var1 /* : AbstractRuntimeFunction */;
627 var1 = separate_compiler__MMethodDef__separate_runtime_function(self);
628 var = var1;
629 RET_LABEL:;
630 return var;
631 }
632 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: MMethodDef): nullable SeparateRuntimeFunction */
633 val* separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
634 val* var /* : nullable SeparateRuntimeFunction */;
635 val* var1 /* : nullable SeparateRuntimeFunction */;
636 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val; /* @separate_runtime_function_cache on <self:MMethodDef> */
637 var = var1;
638 RET_LABEL:;
639 return var;
640 }
641 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: Object): nullable SeparateRuntimeFunction */
642 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
643 val* var /* : nullable SeparateRuntimeFunction */;
644 val* var1 /* : nullable SeparateRuntimeFunction */;
645 var1 = separate_compiler__MMethodDef__separate_runtime_function_cache(self);
646 var = var1;
647 RET_LABEL:;
648 return var;
649 }
650 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: MMethodDef, nullable SeparateRuntimeFunction) */
651 void separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
652 self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val = p0; /* @separate_runtime_function_cache on <self:MMethodDef> */
653 RET_LABEL:;
654 }
655 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: Object, nullable SeparateRuntimeFunction) */
656 void VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
657 separate_compiler__MMethodDef__separate_runtime_function_cache_61d(self, p0);
658 RET_LABEL:;
659 }
660 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
661 val* separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
662 val* var /* : AbstractRuntimeFunction */;
663 val* var1 /* : nullable VirtualRuntimeFunction */;
664 val* var_res /* var res: nullable VirtualRuntimeFunction */;
665 val* var2 /* : null */;
666 short int var3 /* : Bool */;
667 val* var4 /* : VirtualRuntimeFunction */;
668 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache]))(self) /* virtual_runtime_function_cache on <self:MMethodDef>*/;
669 var_res = var1;
670 var2 = NULL;
671 if (var_res == NULL) {
672 var3 = 1; /* is null */
673 } else {
674 var3 = 0; /* arg is null but recv is not */
675 }
676 if (var3){
677 var4 = NEW_separate_compiler__VirtualRuntimeFunction(&type_separate_compiler__VirtualRuntimeFunction);
678 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:VirtualRuntimeFunction>*/;
679 var_res = var4;
680 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d]))(self, var_res) /* virtual_runtime_function_cache= on <self:MMethodDef>*/;
681 } else {
682 }
683 var = var_res;
684 goto RET_LABEL;
685 RET_LABEL:;
686 return var;
687 }
688 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: Object): AbstractRuntimeFunction */
689 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
690 val* var /* : AbstractRuntimeFunction */;
691 val* var1 /* : AbstractRuntimeFunction */;
692 var1 = separate_compiler__MMethodDef__virtual_runtime_function(self);
693 var = var1;
694 RET_LABEL:;
695 return var;
696 }
697 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: MMethodDef): nullable VirtualRuntimeFunction */
698 val* separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
699 val* var /* : nullable VirtualRuntimeFunction */;
700 val* var1 /* : nullable VirtualRuntimeFunction */;
701 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val; /* @virtual_runtime_function_cache on <self:MMethodDef> */
702 var = var1;
703 RET_LABEL:;
704 return var;
705 }
706 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: Object): nullable VirtualRuntimeFunction */
707 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
708 val* var /* : nullable VirtualRuntimeFunction */;
709 val* var1 /* : nullable VirtualRuntimeFunction */;
710 var1 = separate_compiler__MMethodDef__virtual_runtime_function_cache(self);
711 var = var1;
712 RET_LABEL:;
713 return var;
714 }
715 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: MMethodDef, nullable VirtualRuntimeFunction) */
716 void separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
717 self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val = p0; /* @virtual_runtime_function_cache on <self:MMethodDef> */
718 RET_LABEL:;
719 }
720 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: Object, nullable VirtualRuntimeFunction) */
721 void VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
722 separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(self, p0);
723 RET_LABEL:;
724 }
725 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: SeparateRuntimeFunction): String */
726 val* separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
727 val* var /* : String */;
728 val* var1 /* : Array[Object] */;
729 long var2 /* : Int */;
730 val* var_ /* var : Array[Object] */;
731 static val* varonce;
732 val* var3 /* : String */;
733 char* var4 /* : NativeString */;
734 long var5 /* : Int */;
735 val* var6 /* : String */;
736 val* var7 /* : MMethodDef */;
737 val* var8 /* : String */;
738 static val* varonce9;
739 val* var10 /* : String */;
740 char* var11 /* : NativeString */;
741 long var12 /* : Int */;
742 val* var13 /* : String */;
743 val* var14 /* : String */;
744 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
745 var2 = 3;
746 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
747 var_ = var1;
748 if (varonce) {
749 var3 = varonce;
750 } else {
751 var4 = "";
752 var5 = 0;
753 var6 = string__NativeString__to_s_with_length(var4, var5);
754 var3 = var6;
755 varonce = var3;
756 }
757 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
758 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
759 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on <var7:MMethodDef>*/;
760 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
761 if (varonce9) {
762 var10 = varonce9;
763 } else {
764 var11 = "";
765 var12 = 0;
766 var13 = string__NativeString__to_s_with_length(var11, var12);
767 var10 = var13;
768 varonce9 = var10;
769 }
770 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
771 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
772 var = var14;
773 goto RET_LABEL;
774 RET_LABEL:;
775 return var;
776 }
777 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: Object): String */
778 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
779 val* var /* : String */;
780 val* var1 /* : String */;
781 var1 = separate_compiler__SeparateRuntimeFunction__build_c_name(self);
782 var = var1;
783 RET_LABEL:;
784 return var;
785 }
786 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: SeparateRuntimeFunction): String */
787 val* separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
788 val* var /* : String */;
789 val* var1 /* : MMethodDef */;
790 val* var2 /* : String */;
791 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
792 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MMethodDef>*/;
793 var = var2;
794 goto RET_LABEL;
795 RET_LABEL:;
796 return var;
797 }
798 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: Object): String */
799 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
800 val* var /* : String */;
801 val* var1 /* : String */;
802 var1 = separate_compiler__SeparateRuntimeFunction__to_s(self);
803 var = var1;
804 RET_LABEL:;
805 return var;
806 }
807 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: SeparateRuntimeFunction, AbstractCompiler) */
808 void separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
809 short int var /* : Bool */;
810 int cltype;
811 int idtype;
812 const struct type* type_struct;
813 const char* var_class_name;
814 val* var_compiler /* var compiler: AbstractCompiler */;
815 val* var1 /* : MMethodDef */;
816 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
817 val* var2 /* : MMethodDef */;
818 val* var3 /* : MClassDef */;
819 val* var4 /* : MClassType */;
820 val* var_recv /* var recv: MClassType */;
821 val* var5 /* : AbstractCompilerVisitor */;
822 val* var_v /* var v: AbstractCompilerVisitor */;
823 val* var6 /* : RuntimeVariable */;
824 static val* varonce;
825 val* var7 /* : String */;
826 char* var8 /* : NativeString */;
827 long var9 /* : Int */;
828 val* var10 /* : String */;
829 val* var_selfvar /* var selfvar: RuntimeVariable */;
830 val* var11 /* : Array[RuntimeVariable] */;
831 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
832 val* var12 /* : Frame */;
833 val* var_frame /* var frame: Frame */;
834 val* var13 /* : nullable MSignature */;
835 val* var14 /* : MClassDef */;
836 val* var15 /* : MClassType */;
837 val* var16 /* : MClassDef */;
838 val* var17 /* : MClassType */;
839 val* var18 /* : MClassDef */;
840 val* var19 /* : MModule */;
841 short int var20 /* : Bool */;
842 val* var21 /* : MType */;
843 val* var_msignature /* var msignature: MSignature */;
844 val* var22 /* : Buffer */;
845 val* var_sig /* var sig: Buffer */;
846 val* var23 /* : Buffer */;
847 val* var_comment /* var comment: Buffer */;
848 val* var24 /* : nullable MType */;
849 val* var_ret /* var ret: nullable MType */;
850 val* var25 /* : null */;
851 short int var26 /* : Bool */;
852 val* var27 /* : String */;
853 static val* varonce28;
854 val* var29 /* : String */;
855 char* var30 /* : NativeString */;
856 long var31 /* : Int */;
857 val* var32 /* : String */;
858 val* var33 /* : Array[Object] */;
859 long var34 /* : Int */;
860 val* var35 /* : NativeArray[Object] */;
861 val* var36 /* : String */;
862 val* var37 /* : MProperty */;
863 short int var38 /* : Bool */;
864 val* var39 /* : String */;
865 static val* varonce40;
866 val* var41 /* : String */;
867 char* var42 /* : NativeString */;
868 long var43 /* : Int */;
869 val* var44 /* : String */;
870 val* var45 /* : Array[Object] */;
871 long var46 /* : Int */;
872 val* var47 /* : NativeArray[Object] */;
873 val* var48 /* : String */;
874 static val* varonce49;
875 val* var50 /* : String */;
876 char* var51 /* : NativeString */;
877 long var52 /* : Int */;
878 val* var53 /* : String */;
879 val* var54 /* : String */;
880 static val* varonce55;
881 val* var56 /* : String */;
882 char* var57 /* : NativeString */;
883 long var58 /* : Int */;
884 val* var59 /* : String */;
885 val* var60 /* : MType */;
886 val* var61 /* : String */;
887 static val* varonce62;
888 val* var63 /* : String */;
889 char* var64 /* : NativeString */;
890 long var65 /* : Int */;
891 val* var66 /* : String */;
892 val* var67 /* : Array[Object] */;
893 long var68 /* : Int */;
894 val* var69 /* : NativeArray[Object] */;
895 val* var70 /* : String */;
896 static val* varonce71;
897 val* var72 /* : String */;
898 char* var73 /* : NativeString */;
899 long var74 /* : Int */;
900 val* var75 /* : String */;
901 static val* varonce76;
902 val* var77 /* : String */;
903 char* var78 /* : NativeString */;
904 long var79 /* : Int */;
905 val* var80 /* : String */;
906 val* var81 /* : MType */;
907 val* var82 /* : Array[Object] */;
908 long var83 /* : Int */;
909 val* var84 /* : NativeArray[Object] */;
910 val* var85 /* : String */;
911 val* var86 /* : Range[Int] */;
912 long var87 /* : Int */;
913 long var88 /* : Int */;
914 val* var89 /* : Discrete */;
915 val* var90 /* : Discrete */;
916 val* var91 /* : Iterator[nullable Object] */;
917 short int var92 /* : Bool */;
918 val* var93 /* : nullable Object */;
919 long var_i /* var i: Int */;
920 long var94 /* : Int */;
921 val* var95 /* : Array[MParameter] */;
922 val* var96 /* : nullable Object */;
923 val* var97 /* : MType */;
924 val* var_mtype /* var mtype: MType */;
925 long var98 /* : Int */;
926 short int var99 /* : Bool */;
927 short int var101 /* : Bool */;
928 static val* varonce102;
929 val* var103 /* : String */;
930 char* var104 /* : NativeString */;
931 long var105 /* : Int */;
932 val* var106 /* : String */;
933 val* var107 /* : MClass */;
934 val* var108 /* : Array[MType] */;
935 long var109 /* : Int */;
936 val* var110 /* : NativeArray[MType] */;
937 val* var111 /* : MClassType */;
938 static val* varonce112;
939 val* var113 /* : String */;
940 char* var114 /* : NativeString */;
941 long var115 /* : Int */;
942 val* var116 /* : String */;
943 val* var117 /* : Array[Object] */;
944 long var118 /* : Int */;
945 val* var119 /* : NativeArray[Object] */;
946 val* var120 /* : String */;
947 static val* varonce121;
948 val* var122 /* : String */;
949 char* var123 /* : NativeString */;
950 long var124 /* : Int */;
951 val* var125 /* : String */;
952 val* var126 /* : String */;
953 static val* varonce127;
954 val* var128 /* : String */;
955 char* var129 /* : NativeString */;
956 long var130 /* : Int */;
957 val* var131 /* : String */;
958 val* var132 /* : Array[Object] */;
959 long var133 /* : Int */;
960 val* var134 /* : NativeArray[Object] */;
961 val* var135 /* : Object */;
962 val* var136 /* : String */;
963 val* var137 /* : RuntimeVariable */;
964 val* var138 /* : Array[Object] */;
965 long var139 /* : Int */;
966 val* var_ /* var : Array[Object] */;
967 static val* varonce140;
968 val* var141 /* : String */;
969 char* var142 /* : NativeString */;
970 long var143 /* : Int */;
971 val* var144 /* : String */;
972 val* var145 /* : nullable Object */;
973 static val* varonce146;
974 val* var147 /* : String */;
975 char* var148 /* : NativeString */;
976 long var149 /* : Int */;
977 val* var150 /* : String */;
978 val* var151 /* : String */;
979 val* var_argvar /* var argvar: RuntimeVariable */;
980 static val* varonce152;
981 val* var153 /* : String */;
982 char* var154 /* : NativeString */;
983 long var155 /* : Int */;
984 val* var156 /* : String */;
985 static val* varonce157;
986 val* var158 /* : String */;
987 char* var159 /* : NativeString */;
988 long var160 /* : Int */;
989 val* var161 /* : String */;
990 val* var162 /* : null */;
991 short int var163 /* : Bool */;
992 static val* varonce164;
993 val* var165 /* : String */;
994 char* var166 /* : NativeString */;
995 long var167 /* : Int */;
996 val* var168 /* : String */;
997 val* var169 /* : Array[Object] */;
998 long var170 /* : Int */;
999 val* var171 /* : NativeArray[Object] */;
1000 val* var172 /* : String */;
1001 val* var173 /* : String */;
1002 static val* varonce174;
1003 val* var175 /* : String */;
1004 char* var176 /* : NativeString */;
1005 long var177 /* : Int */;
1006 val* var178 /* : String */;
1007 val* var179 /* : Array[Object] */;
1008 long var180 /* : Int */;
1009 val* var181 /* : NativeArray[Object] */;
1010 val* var182 /* : String */;
1011 static val* varonce183;
1012 val* var184 /* : String */;
1013 char* var185 /* : NativeString */;
1014 long var186 /* : Int */;
1015 val* var187 /* : String */;
1016 static val* varonce188;
1017 val* var189 /* : String */;
1018 char* var190 /* : NativeString */;
1019 long var191 /* : Int */;
1020 val* var192 /* : String */;
1021 static val* varonce193;
1022 val* var194 /* : String */;
1023 char* var195 /* : NativeString */;
1024 long var196 /* : Int */;
1025 val* var197 /* : String */;
1026 val* var198 /* : Array[Object] */;
1027 long var199 /* : Int */;
1028 val* var200 /* : NativeArray[Object] */;
1029 val* var201 /* : String */;
1030 static val* varonce202;
1031 val* var203 /* : String */;
1032 char* var204 /* : NativeString */;
1033 long var205 /* : Int */;
1034 val* var206 /* : String */;
1035 val* var207 /* : Array[Object] */;
1036 long var208 /* : Int */;
1037 val* var209 /* : NativeArray[Object] */;
1038 val* var210 /* : String */;
1039 val* var211 /* : null */;
1040 short int var212 /* : Bool */;
1041 val* var213 /* : RuntimeVariable */;
1042 static val* varonce214;
1043 val* var215 /* : String */;
1044 char* var216 /* : NativeString */;
1045 long var217 /* : Int */;
1046 val* var218 /* : String */;
1047 val* var219 /* : String */;
1048 val* var220 /* : nullable Object */;
1049 val* var221 /* : MType */;
1050 short int var222 /* : Bool */;
1051 val* var223 /* : nullable RuntimeVariable */;
1052 val* var224 /* : nullable String */;
1053 static val* varonce225;
1054 val* var226 /* : String */;
1055 char* var227 /* : NativeString */;
1056 long var228 /* : Int */;
1057 val* var229 /* : String */;
1058 val* var230 /* : Array[Object] */;
1059 long var231 /* : Int */;
1060 val* var232 /* : NativeArray[Object] */;
1061 val* var233 /* : String */;
1062 val* var234 /* : null */;
1063 short int var235 /* : Bool */;
1064 static val* varonce236;
1065 val* var237 /* : String */;
1066 char* var238 /* : NativeString */;
1067 long var239 /* : Int */;
1068 val* var240 /* : String */;
1069 val* var241 /* : nullable RuntimeVariable */;
1070 static val* varonce242;
1071 val* var243 /* : String */;
1072 char* var244 /* : NativeString */;
1073 long var245 /* : Int */;
1074 val* var246 /* : String */;
1075 val* var247 /* : Array[Object] */;
1076 long var248 /* : Int */;
1077 val* var249 /* : NativeArray[Object] */;
1078 val* var250 /* : String */;
1079 static val* varonce251;
1080 val* var252 /* : String */;
1081 char* var253 /* : NativeString */;
1082 long var254 /* : Int */;
1083 val* var255 /* : String */;
1084 val* var256 /* : String */;
1085 static val* varonce257;
1086 val* var258 /* : String */;
1087 char* var259 /* : NativeString */;
1088 long var260 /* : Int */;
1089 val* var261 /* : String */;
1090 long var262 /* : Int */;
1091 short int var263 /* : Bool */;
1092 short int var264 /* : Bool */;
1093 val* var265 /* : HashMap[String, String] */;
1094 val* var266 /* : String */;
1095 val* var267 /* : MClassDef */;
1096 val* var268 /* : MModule */;
1097 val* var269 /* : String */;
1098 static val* varonce270;
1099 val* var271 /* : String */;
1100 char* var272 /* : NativeString */;
1101 long var273 /* : Int */;
1102 val* var274 /* : String */;
1103 val* var275 /* : MClassDef */;
1104 val* var276 /* : MClass */;
1105 val* var277 /* : String */;
1106 static val* varonce278;
1107 val* var279 /* : String */;
1108 char* var280 /* : NativeString */;
1109 long var281 /* : Int */;
1110 val* var282 /* : String */;
1111 val* var283 /* : MProperty */;
1112 val* var284 /* : String */;
1113 static val* varonce285;
1114 val* var286 /* : String */;
1115 char* var287 /* : NativeString */;
1116 long var288 /* : Int */;
1117 val* var289 /* : String */;
1118 val* var290 /* : Location */;
1119 val* var291 /* : nullable SourceFile */;
1120 val* var292 /* : String */;
1121 static val* varonce293;
1122 val* var294 /* : String */;
1123 char* var295 /* : NativeString */;
1124 long var296 /* : Int */;
1125 val* var297 /* : String */;
1126 val* var298 /* : Location */;
1127 long var299 /* : Int */;
1128 static val* varonce300;
1129 val* var301 /* : String */;
1130 char* var302 /* : NativeString */;
1131 long var303 /* : Int */;
1132 val* var304 /* : String */;
1133 val* var305 /* : Array[Object] */;
1134 long var306 /* : Int */;
1135 val* var307 /* : NativeArray[Object] */;
1136 val* var308 /* : Object */;
1137 val* var309 /* : String */;
1138 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
1139 /* <p0:AbstractCompiler> isa COMPILER */
1140 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
1141 cltype = type_struct->color;
1142 idtype = type_struct->id;
1143 if(cltype >= p0->type->table_size) {
1144 var = 0;
1145 } else {
1146 var = p0->type->type_table[cltype] == idtype;
1147 }
1148 if (!var) {
1149 var_class_name = p0 == NULL ? "null" : p0->type->name;
1150 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
1151 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1685);
1152 show_backtrace(1);
1153 }
1154 var_compiler = p0;
1155 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
1156 var_mmethoddef = var1;
1157 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
1158 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MMethodDef>*/;
1159 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
1160 var_recv = var4;
1161 var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
1162 var_v = var5;
1163 var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
1164 if (varonce) {
1165 var7 = varonce;
1166 } else {
1167 var8 = "self";
1168 var9 = 4;
1169 var10 = string__NativeString__to_s_with_length(var8, var9);
1170 var7 = var10;
1171 varonce = var7;
1172 }
1173 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var_recv, var_recv) /* init on <var6:RuntimeVariable>*/;
1174 var_selfvar = var6;
1175 var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1176 ((void (*)(val*))(var11->class->vft[COLOR_array__Array__init]))(var11) /* init on <var11:Array[RuntimeVariable]>*/;
1177 var_arguments = var11;
1178 var12 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
1179 ((void (*)(val*, val*, val*, val*, val*))(var12->class->vft[COLOR_abstract_compiler__Frame__init]))(var12, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var12:Frame>*/;
1180 var_frame = var12;
1181 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
1182 var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
1183 var14 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1184 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model__MClassDef__bound_mtype]))(var14) /* bound_mtype on <var14:MClassDef>*/;
1185 var16 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1186 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on <var16:MClassDef>*/;
1187 var18 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1188 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mmodule]))(var18) /* mmodule on <var18:MClassDef>*/;
1189 var20 = 1;
1190 if (var13 == NULL) {
1191 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1192 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1696);
1193 show_backtrace(1);
1194 } else {
1195 var21 = ((val* (*)(val*, val*, val*, val*, short int))(var13->class->vft[COLOR_model__MType__resolve_for]))(var13, var15, var17, var19, var20) /* resolve_for on <var13:nullable MSignature>*/;
1196 }
1197 var_msignature = var21;
1198 var22 = NEW_string__Buffer(&type_string__Buffer);
1199 ((void (*)(val*))(var22->class->vft[COLOR_string__Buffer__init]))(var22) /* init on <var22:Buffer>*/;
1200 var_sig = var22;
1201 var23 = NEW_string__Buffer(&type_string__Buffer);
1202 ((void (*)(val*))(var23->class->vft[COLOR_string__Buffer__init]))(var23) /* init on <var23:Buffer>*/;
1203 var_comment = var23;
1204 var24 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1205 var_ret = var24;
1206 var25 = NULL;
1207 if (var_ret == NULL) {
1208 var26 = 0; /* is null */
1209 } else {
1210 var26 = 1; /* arg is null and recv is not */
1211 }
1212 if (var26){
1213 var27 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
1214 if (varonce28) {
1215 var29 = varonce28;
1216 } else {
1217 var30 = " ";
1218 var31 = 1;
1219 var32 = string__NativeString__to_s_with_length(var30, var31);
1220 var29 = var32;
1221 varonce28 = var29;
1222 }
1223 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
1224 { /* var33 = array_instance Array[Object] */
1225 var34 = 2;
1226 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
1227 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var27;
1228 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var29;
1229 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
1230 }
1231 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
1232 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var36) /* append on <var_sig:Buffer>*/;
1233 } else {
1234 var37 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1235 var38 = ((short int (*)(val*))(var37->class->vft[COLOR_model__MMethod__is_new]))(var37) /* is_new on <var37:MProperty(MMethod)>*/;
1236 if (var38){
1237 var_ret = var_recv;
1238 var39 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
1239 if (varonce40) {
1240 var41 = varonce40;
1241 } else {
1242 var42 = " ";
1243 var43 = 1;
1244 var44 = string__NativeString__to_s_with_length(var42, var43);
1245 var41 = var44;
1246 varonce40 = var41;
1247 }
1248 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
1249 { /* var45 = array_instance Array[Object] */
1250 var46 = 2;
1251 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
1252 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var39;
1253 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var41;
1254 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
1255 }
1256 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
1257 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var48) /* append on <var_sig:Buffer>*/;
1258 } else {
1259 if (varonce49) {
1260 var50 = varonce49;
1261 } else {
1262 var51 = "void ";
1263 var52 = 5;
1264 var53 = string__NativeString__to_s_with_length(var51, var52);
1265 var50 = var53;
1266 varonce49 = var50;
1267 }
1268 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var50) /* append on <var_sig:Buffer>*/;
1269 }
1270 }
1271 var54 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
1272 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on <var_sig:Buffer>*/;
1273 if (varonce55) {
1274 var56 = varonce55;
1275 } else {
1276 var57 = "(";
1277 var58 = 1;
1278 var59 = string__NativeString__to_s_with_length(var57, var58);
1279 var56 = var59;
1280 varonce55 = var56;
1281 }
1282 var60 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
1283 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_compiler__MType__ctype]))(var60) /* ctype on <var60:MType>*/;
1284 if (varonce62) {
1285 var63 = varonce62;
1286 } else {
1287 var64 = " ";
1288 var65 = 1;
1289 var66 = string__NativeString__to_s_with_length(var64, var65);
1290 var63 = var66;
1291 varonce62 = var63;
1292 }
1293 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
1294 { /* var67 = array_instance Array[Object] */
1295 var68 = 4;
1296 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
1297 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var56;
1298 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var61;
1299 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var63;
1300 ((struct instance_array__NativeArray*)var69)->values[3] = (val*) var_selfvar;
1301 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
1302 }
1303 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
1304 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var70) /* append on <var_sig:Buffer>*/;
1305 if (varonce71) {
1306 var72 = varonce71;
1307 } else {
1308 var73 = "(";
1309 var74 = 1;
1310 var75 = string__NativeString__to_s_with_length(var73, var74);
1311 var72 = var75;
1312 varonce71 = var72;
1313 }
1314 if (varonce76) {
1315 var77 = varonce76;
1316 } else {
1317 var78 = ": ";
1318 var79 = 2;
1319 var80 = string__NativeString__to_s_with_length(var78, var79);
1320 var77 = var80;
1321 varonce76 = var77;
1322 }
1323 var81 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
1324 var82 = NEW_array__Array(&type_array__Arraykernel__Object);
1325 { /* var82 = array_instance Array[Object] */
1326 var83 = 4;
1327 var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object);
1328 ((struct instance_array__NativeArray*)var84)->values[0] = (val*) var72;
1329 ((struct instance_array__NativeArray*)var84)->values[1] = (val*) var_selfvar;
1330 ((struct instance_array__NativeArray*)var84)->values[2] = (val*) var77;
1331 ((struct instance_array__NativeArray*)var84)->values[3] = (val*) var81;
1332 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[Object]>*/;
1333 }
1334 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on <var82:Array[Object]>*/;
1335 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var85) /* append on <var_comment:Buffer>*/;
1336 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
1337 var86 = NEW_range__Range(&type_range__Rangekernel__Int);
1338 var87 = 0;
1339 var88 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
1340 var89 = BOX_kernel__Int(var87); /* autobox from Int to Discrete */
1341 var90 = BOX_kernel__Int(var88); /* autobox from Int to Discrete */
1342 ((void (*)(val*, val*, val*))(var86->class->vft[COLOR_range__Range__without_last]))(var86, var89, var90) /* without_last on <var86:Range[Int]>*/;
1343 var91 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Collection__iterator]))(var86) /* iterator on <var86:Range[Int]>*/;
1344 for(;;) {
1345 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[nullable Object]>*/;
1346 if(!var92) break;
1347 var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on <var91:Iterator[nullable Object]>*/;
1348 var94 = ((struct instance_kernel__Int*)var93)->value; /* autounbox from nullable Object to Int */;
1349 var_i = var94;
1350 var95 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
1351 var96 = ((val* (*)(val*, long))(var95->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var95, var_i) /* [] on <var95:Array[MParameter]>*/;
1352 var97 = ((val* (*)(val*))(var96->class->vft[COLOR_model__MParameter__mtype]))(var96) /* mtype on <var96:nullable Object(MParameter)>*/;
1353 var_mtype = var97;
1354 var98 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
1355 { /* Inline kernel#Int#== (var_i,var98) */
1356 var101 = var_i == var98;
1357 var99 = var101;
1358 goto RET_LABEL100;
1359 RET_LABEL100:(void)0;
1360 }
1361 if (var99){
1362 if (varonce102) {
1363 var103 = varonce102;
1364 } else {
1365 var104 = "Array";
1366 var105 = 5;
1367 var106 = string__NativeString__to_s_with_length(var104, var105);
1368 var103 = var106;
1369 varonce102 = var103;
1370 }
1371 var107 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var103) /* get_class on <var_v:AbstractCompilerVisitor>*/;
1372 var108 = NEW_array__Array(&type_array__Arraymodel__MType);
1373 { /* var108 = array_instance Array[MType] */
1374 var109 = 1;
1375 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraymodel__MType);
1376 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_mtype;
1377 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[MType]>*/;
1378 }
1379 var111 = ((val* (*)(val*, val*))(var107->class->vft[COLOR_model__MClass__get_mtype]))(var107, var108) /* get_mtype on <var107:MClass>*/;
1380 var_mtype = var111;
1381 } else {
1382 }
1383 if (varonce112) {
1384 var113 = varonce112;
1385 } else {
1386 var114 = ", ";
1387 var115 = 2;
1388 var116 = string__NativeString__to_s_with_length(var114, var115);
1389 var113 = var116;
1390 varonce112 = var113;
1391 }
1392 var117 = NEW_array__Array(&type_array__Arraykernel__Object);
1393 { /* var117 = array_instance Array[Object] */
1394 var118 = 2;
1395 var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
1396 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var113;
1397 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_mtype;
1398 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
1399 }
1400 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
1401 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var120) /* append on <var_comment:Buffer>*/;
1402 if (varonce121) {
1403 var122 = varonce121;
1404 } else {
1405 var123 = ", ";
1406 var124 = 2;
1407 var125 = string__NativeString__to_s_with_length(var123, var124);
1408 var122 = var125;
1409 varonce121 = var122;
1410 }
1411 var126 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
1412 if (varonce127) {
1413 var128 = varonce127;
1414 } else {
1415 var129 = " p";
1416 var130 = 2;
1417 var131 = string__NativeString__to_s_with_length(var129, var130);
1418 var128 = var131;
1419 varonce127 = var128;
1420 }
1421 var132 = NEW_array__Array(&type_array__Arraykernel__Object);
1422 { /* var132 = array_instance Array[Object] */
1423 var133 = 4;
1424 var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object);
1425 ((struct instance_array__NativeArray*)var134)->values[0] = (val*) var122;
1426 ((struct instance_array__NativeArray*)var134)->values[1] = (val*) var126;
1427 ((struct instance_array__NativeArray*)var134)->values[2] = (val*) var128;
1428 var135 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
1429 ((struct instance_array__NativeArray*)var134)->values[3] = (val*) var135;
1430 ((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on <var132:Array[Object]>*/;
1431 }
1432 var136 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on <var132:Array[Object]>*/;
1433 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var136) /* append on <var_sig:Buffer>*/;
1434 var137 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
1435 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
1436 var139 = 3;
1437 ((void (*)(val*, long))(var138->class->vft[COLOR_array__Array__with_capacity]))(var138, var139) /* with_capacity on <var138:Array[Object]>*/;
1438 var_ = var138;
1439 if (varonce140) {
1440 var141 = varonce140;
1441 } else {
1442 var142 = "p";
1443 var143 = 1;
1444 var144 = string__NativeString__to_s_with_length(var142, var143);
1445 var141 = var144;
1446 varonce140 = var141;
1447 }
1448 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var141) /* add on <var_:Array[Object]>*/;
1449 var145 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
1450 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on <var_:Array[Object]>*/;
1451 if (varonce146) {
1452 var147 = varonce146;
1453 } else {
1454 var148 = "";
1455 var149 = 0;
1456 var150 = string__NativeString__to_s_with_length(var148, var149);
1457 var147 = var150;
1458 varonce146 = var147;
1459 }
1460 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var147) /* add on <var_:Array[Object]>*/;
1461 var151 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1462 ((void (*)(val*, val*, val*, val*))(var137->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var137, var151, var_mtype, var_mtype) /* init on <var137:RuntimeVariable>*/;
1463 var_argvar = var137;
1464 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
1465 CONTINUE_label: (void)0;
1466 ((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on <var91:Iterator[nullable Object]>*/;
1467 }
1468 BREAK_label: (void)0;
1469 if (varonce152) {
1470 var153 = varonce152;
1471 } else {
1472 var154 = ")";
1473 var155 = 1;
1474 var156 = string__NativeString__to_s_with_length(var154, var155);
1475 var153 = var156;
1476 varonce152 = var153;
1477 }
1478 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var153) /* append on <var_sig:Buffer>*/;
1479 if (varonce157) {
1480 var158 = varonce157;
1481 } else {
1482 var159 = ")";
1483 var160 = 1;
1484 var161 = string__NativeString__to_s_with_length(var159, var160);
1485 var158 = var161;
1486 varonce157 = var158;
1487 }
1488 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var158) /* append on <var_comment:Buffer>*/;
1489 var162 = NULL;
1490 if (var_ret == NULL) {
1491 var163 = 0; /* is null */
1492 } else {
1493 var163 = 1; /* arg is null and recv is not */
1494 }
1495 if (var163){
1496 if (varonce164) {
1497 var165 = varonce164;
1498 } else {
1499 var166 = ": ";
1500 var167 = 2;
1501 var168 = string__NativeString__to_s_with_length(var166, var167);
1502 var165 = var168;
1503 varonce164 = var165;
1504 }
1505 var169 = NEW_array__Array(&type_array__Arraykernel__Object);
1506 { /* var169 = array_instance Array[Object] */
1507 var170 = 2;
1508 var171 = NEW_array__NativeArray(var170, &type_array__NativeArraykernel__Object);
1509 ((struct instance_array__NativeArray*)var171)->values[0] = (val*) var165;
1510 ((struct instance_array__NativeArray*)var171)->values[1] = (val*) var_ret;
1511 ((void (*)(val*, val*, long))(var169->class->vft[COLOR_array__Array__with_native]))(var169, var171, var170) /* with_native on <var169:Array[Object]>*/;
1512 }
1513 var172 = ((val* (*)(val*))(var169->class->vft[COLOR_string__Object__to_s]))(var169) /* to_s on <var169:Array[Object]>*/;
1514 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var172) /* append on <var_comment:Buffer>*/;
1515 } else {
1516 }
1517 var173 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
1518 if (varonce174) {
1519 var175 = varonce174;
1520 } else {
1521 var176 = ";";
1522 var177 = 1;
1523 var178 = string__NativeString__to_s_with_length(var176, var177);
1524 var175 = var178;
1525 varonce174 = var175;
1526 }
1527 var179 = NEW_array__Array(&type_array__Arraykernel__Object);
1528 { /* var179 = array_instance Array[Object] */
1529 var180 = 2;
1530 var181 = NEW_array__NativeArray(var180, &type_array__NativeArraykernel__Object);
1531 ((struct instance_array__NativeArray*)var181)->values[0] = (val*) var_sig;
1532 ((struct instance_array__NativeArray*)var181)->values[1] = (val*) var175;
1533 ((void (*)(val*, val*, long))(var179->class->vft[COLOR_array__Array__with_native]))(var179, var181, var180) /* with_native on <var179:Array[Object]>*/;
1534 }
1535 var182 = ((val* (*)(val*))(var179->class->vft[COLOR_string__Object__to_s]))(var179) /* to_s on <var179:Array[Object]>*/;
1536 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var173, var182) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
1537 if (varonce183) {
1538 var184 = varonce183;
1539 } else {
1540 var185 = "/* method ";
1541 var186 = 10;
1542 var187 = string__NativeString__to_s_with_length(var185, var186);
1543 var184 = var187;
1544 varonce183 = var184;
1545 }
1546 if (varonce188) {
1547 var189 = varonce188;
1548 } else {
1549 var190 = " for ";
1550 var191 = 5;
1551 var192 = string__NativeString__to_s_with_length(var190, var191);
1552 var189 = var192;
1553 varonce188 = var189;
1554 }
1555 if (varonce193) {
1556 var194 = varonce193;
1557 } else {
1558 var195 = " */";
1559 var196 = 3;
1560 var197 = string__NativeString__to_s_with_length(var195, var196);
1561 var194 = var197;
1562 varonce193 = var194;
1563 }
1564 var198 = NEW_array__Array(&type_array__Arraykernel__Object);
1565 { /* var198 = array_instance Array[Object] */
1566 var199 = 5;
1567 var200 = NEW_array__NativeArray(var199, &type_array__NativeArraykernel__Object);
1568 ((struct instance_array__NativeArray*)var200)->values[0] = (val*) var184;
1569 ((struct instance_array__NativeArray*)var200)->values[1] = (val*) self;
1570 ((struct instance_array__NativeArray*)var200)->values[2] = (val*) var189;
1571 ((struct instance_array__NativeArray*)var200)->values[3] = (val*) var_comment;
1572 ((struct instance_array__NativeArray*)var200)->values[4] = (val*) var194;
1573 ((void (*)(val*, val*, long))(var198->class->vft[COLOR_array__Array__with_native]))(var198, var200, var199) /* with_native on <var198:Array[Object]>*/;
1574 }
1575 var201 = ((val* (*)(val*))(var198->class->vft[COLOR_string__Object__to_s]))(var198) /* to_s on <var198:Array[Object]>*/;
1576 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var201) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
1577 if (varonce202) {
1578 var203 = varonce202;
1579 } else {
1580 var204 = " {";
1581 var205 = 2;
1582 var206 = string__NativeString__to_s_with_length(var204, var205);
1583 var203 = var206;
1584 varonce202 = var203;
1585 }
1586 var207 = NEW_array__Array(&type_array__Arraykernel__Object);
1587 { /* var207 = array_instance Array[Object] */
1588 var208 = 2;
1589 var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object);
1590 ((struct instance_array__NativeArray*)var209)->values[0] = (val*) var_sig;
1591 ((struct instance_array__NativeArray*)var209)->values[1] = (val*) var203;
1592 ((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on <var207:Array[Object]>*/;
1593 }
1594 var210 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on <var207:Array[Object]>*/;
1595 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var210) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
1596 var211 = NULL;
1597 if (var_ret == NULL) {
1598 var212 = 0; /* is null */
1599 } else {
1600 var212 = 1; /* arg is null and recv is not */
1601 }
1602 if (var212){
1603 var213 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:AbstractCompilerVisitor>*/;
1604 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var213) /* returnvar= on <var_frame:Frame>*/;
1605 } else {
1606 }
1607 if (varonce214) {
1608 var215 = varonce214;
1609 } else {
1610 var216 = "RET_LABEL";
1611 var217 = 9;
1612 var218 = string__NativeString__to_s_with_length(var216, var217);
1613 var215 = var218;
1614 varonce214 = var215;
1615 }
1616 var219 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var215) /* get_name on <var_v:AbstractCompilerVisitor>*/;
1617 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var219) /* returnlabel= on <var_frame:Frame>*/;
1618 var220 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1619 var221 = ((val* (*)(val*))(var220->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var220) /* mtype on <var220:nullable Object(RuntimeVariable)>*/;
1620 var222 = ((short int (*)(val*, val*))(var_recv->class->vft[COLOR_kernel__Object___33d_61d]))(var_recv, var221) /* != on <var_recv:MClassType>*/;
1621 if (var222){
1622 } else {
1623 }
1624 var223 = ((val* (*)(val*, val*, val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var_mmethoddef, var_v, var_arguments) /* compile_inside_to_c on <var_mmethoddef:MMethodDef>*/;
1625 var223;
1626 var224 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
1627 if (var224 == NULL) {
1628 fprintf(stderr, "Runtime error: %s", "Cast failed");
1629 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1742);
1630 show_backtrace(1);
1631 }
1632 if (varonce225) {
1633 var226 = varonce225;
1634 } else {
1635 var227 = ":;";
1636 var228 = 2;
1637 var229 = string__NativeString__to_s_with_length(var227, var228);
1638 var226 = var229;
1639 varonce225 = var226;
1640 }
1641 var230 = NEW_array__Array(&type_array__Arraykernel__Object);
1642 { /* var230 = array_instance Array[Object] */
1643 var231 = 2;
1644 var232 = NEW_array__NativeArray(var231, &type_array__NativeArraykernel__Object);
1645 ((struct instance_array__NativeArray*)var232)->values[0] = (val*) var224;
1646 ((struct instance_array__NativeArray*)var232)->values[1] = (val*) var226;
1647 ((void (*)(val*, val*, long))(var230->class->vft[COLOR_array__Array__with_native]))(var230, var232, var231) /* with_native on <var230:Array[Object]>*/;
1648 }
1649 var233 = ((val* (*)(val*))(var230->class->vft[COLOR_string__Object__to_s]))(var230) /* to_s on <var230:Array[Object]>*/;
1650 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var233) /* add on <var_v:AbstractCompilerVisitor>*/;
1651 var234 = NULL;
1652 if (var_ret == NULL) {
1653 var235 = 0; /* is null */
1654 } else {
1655 var235 = 1; /* arg is null and recv is not */
1656 }
1657 if (var235){
1658 if (varonce236) {
1659 var237 = varonce236;
1660 } else {
1661 var238 = "return ";
1662 var239 = 7;
1663 var240 = string__NativeString__to_s_with_length(var238, var239);
1664 var237 = var240;
1665 varonce236 = var237;
1666 }
1667 var241 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
1668 if (var241 == NULL) {
1669 fprintf(stderr, "Runtime error: %s", "Cast failed");
1670 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1744);
1671 show_backtrace(1);
1672 }
1673 if (varonce242) {
1674 var243 = varonce242;
1675 } else {
1676 var244 = ";";
1677 var245 = 1;
1678 var246 = string__NativeString__to_s_with_length(var244, var245);
1679 var243 = var246;
1680 varonce242 = var243;
1681 }
1682 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
1683 { /* var247 = array_instance Array[Object] */
1684 var248 = 3;
1685 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
1686 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var237;
1687 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var241;
1688 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
1689 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
1690 }
1691 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
1692 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var250) /* add on <var_v:AbstractCompilerVisitor>*/;
1693 } else {
1694 }
1695 if (varonce251) {
1696 var252 = varonce251;
1697 } else {
1698 var253 = "}";
1699 var254 = 1;
1700 var255 = string__NativeString__to_s_with_length(var253, var254);
1701 var252 = var255;
1702 varonce251 = var252;
1703 }
1704 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var252) /* add on <var_v:AbstractCompilerVisitor>*/;
1705 var256 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
1706 if (varonce257) {
1707 var258 = varonce257;
1708 } else {
1709 var259 = "VIRTUAL";
1710 var260 = 7;
1711 var261 = string__NativeString__to_s_with_length(var259, var260);
1712 var258 = var261;
1713 varonce257 = var258;
1714 }
1715 var262 = 0;
1716 var263 = ((short int (*)(val*, val*, long))(var256->class->vft[COLOR_string__AbstractString__has_substring]))(var256, var258, var262) /* has_substring on <var256:String>*/;
1717 var264 = !var263;
1718 if (var264){
1719 var265 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on <var_compiler:AbstractCompiler>*/;
1720 var266 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
1721 var267 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1722 var268 = ((val* (*)(val*))(var267->class->vft[COLOR_model__MClassDef__mmodule]))(var267) /* mmodule on <var267:MClassDef>*/;
1723 var269 = ((val* (*)(val*))(var268->class->vft[COLOR_mmodule__MModule__name]))(var268) /* name on <var268:MModule>*/;
1724 if (varonce270) {
1725 var271 = varonce270;
1726 } else {
1727 var272 = "::";
1728 var273 = 2;
1729 var274 = string__NativeString__to_s_with_length(var272, var273);
1730 var271 = var274;
1731 varonce270 = var271;
1732 }
1733 var275 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1734 var276 = ((val* (*)(val*))(var275->class->vft[COLOR_model__MClassDef__mclass]))(var275) /* mclass on <var275:MClassDef>*/;
1735 var277 = ((val* (*)(val*))(var276->class->vft[COLOR_model__MClass__name]))(var276) /* name on <var276:MClass>*/;
1736 if (varonce278) {
1737 var279 = varonce278;
1738 } else {
1739 var280 = "::";
1740 var281 = 2;
1741 var282 = string__NativeString__to_s_with_length(var280, var281);
1742 var279 = var282;
1743 varonce278 = var279;
1744 }
1745 var283 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1746 var284 = ((val* (*)(val*))(var283->class->vft[COLOR_model__MProperty__name]))(var283) /* name on <var283:MProperty(MMethod)>*/;
1747 if (varonce285) {
1748 var286 = varonce285;
1749 } else {
1750 var287 = " (";
1751 var288 = 2;
1752 var289 = string__NativeString__to_s_with_length(var287, var288);
1753 var286 = var289;
1754 varonce285 = var286;
1755 }
1756 var290 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
1757 var291 = ((val* (*)(val*))(var290->class->vft[COLOR_location__Location__file]))(var290) /* file on <var290:Location>*/;
1758 if (var291 == NULL) {
1759 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1760 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1747);
1761 show_backtrace(1);
1762 } else {
1763 var292 = ((val* (*)(val*))(var291->class->vft[COLOR_location__SourceFile__filename]))(var291) /* filename on <var291:nullable SourceFile>*/;
1764 }
1765 if (varonce293) {
1766 var294 = varonce293;
1767 } else {
1768 var295 = ":";
1769 var296 = 1;
1770 var297 = string__NativeString__to_s_with_length(var295, var296);
1771 var294 = var297;
1772 varonce293 = var294;
1773 }
1774 var298 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
1775 var299 = ((long (*)(val*))(var298->class->vft[COLOR_location__Location__line_start]))(var298) /* line_start on <var298:Location>*/;
1776 if (varonce300) {
1777 var301 = varonce300;
1778 } else {
1779 var302 = ")";
1780 var303 = 1;
1781 var304 = string__NativeString__to_s_with_length(var302, var303);
1782 var301 = var304;
1783 varonce300 = var301;
1784 }
1785 var305 = NEW_array__Array(&type_array__Arraykernel__Object);
1786 { /* var305 = array_instance Array[Object] */
1787 var306 = 10;
1788 var307 = NEW_array__NativeArray(var306, &type_array__NativeArraykernel__Object);
1789 ((struct instance_array__NativeArray*)var307)->values[0] = (val*) var269;
1790 ((struct instance_array__NativeArray*)var307)->values[1] = (val*) var271;
1791 ((struct instance_array__NativeArray*)var307)->values[2] = (val*) var277;
1792 ((struct instance_array__NativeArray*)var307)->values[3] = (val*) var279;
1793 ((struct instance_array__NativeArray*)var307)->values[4] = (val*) var284;
1794 ((struct instance_array__NativeArray*)var307)->values[5] = (val*) var286;
1795 ((struct instance_array__NativeArray*)var307)->values[6] = (val*) var292;
1796 ((struct instance_array__NativeArray*)var307)->values[7] = (val*) var294;
1797 var308 = BOX_kernel__Int(var299); /* autobox from Int to Object */
1798 ((struct instance_array__NativeArray*)var307)->values[8] = (val*) var308;
1799 ((struct instance_array__NativeArray*)var307)->values[9] = (val*) var301;
1800 ((void (*)(val*, val*, long))(var305->class->vft[COLOR_array__Array__with_native]))(var305, var307, var306) /* with_native on <var305:Array[Object]>*/;
1801 }
1802 var309 = ((val* (*)(val*))(var305->class->vft[COLOR_string__Object__to_s]))(var305) /* to_s on <var305:Array[Object]>*/;
1803 ((void (*)(val*, val*, val*))(var265->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var265, var266, var309) /* []= on <var265:HashMap[String, String]>*/;
1804 } else {
1805 }
1806 RET_LABEL:;
1807 }
1808 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
1809 void VIRTUAL_separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
1810 separate_compiler__SeparateRuntimeFunction__compile_to_c(self, p0);
1811 RET_LABEL:;
1812 }
1813 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: VirtualRuntimeFunction): String */
1814 val* separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
1815 val* var /* : String */;
1816 val* var1 /* : Array[Object] */;
1817 long var2 /* : Int */;
1818 val* var_ /* var : Array[Object] */;
1819 static val* varonce;
1820 val* var3 /* : String */;
1821 char* var4 /* : NativeString */;
1822 long var5 /* : Int */;
1823 val* var6 /* : String */;
1824 val* var7 /* : MMethodDef */;
1825 val* var8 /* : String */;
1826 static val* varonce9;
1827 val* var10 /* : String */;
1828 char* var11 /* : NativeString */;
1829 long var12 /* : Int */;
1830 val* var13 /* : String */;
1831 val* var14 /* : String */;
1832 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
1833 var2 = 3;
1834 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
1835 var_ = var1;
1836 if (varonce) {
1837 var3 = varonce;
1838 } else {
1839 var4 = "VIRTUAL_";
1840 var5 = 8;
1841 var6 = string__NativeString__to_s_with_length(var4, var5);
1842 var3 = var6;
1843 varonce = var3;
1844 }
1845 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
1846 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1847 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on <var7:MMethodDef>*/;
1848 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
1849 if (varonce9) {
1850 var10 = varonce9;
1851 } else {
1852 var11 = "";
1853 var12 = 0;
1854 var13 = string__NativeString__to_s_with_length(var11, var12);
1855 var10 = var13;
1856 varonce9 = var10;
1857 }
1858 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1859 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1860 var = var14;
1861 goto RET_LABEL;
1862 RET_LABEL:;
1863 return var;
1864 }
1865 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: Object): String */
1866 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
1867 val* var /* : String */;
1868 val* var1 /* : String */;
1869 var1 = separate_compiler__VirtualRuntimeFunction__build_c_name(self);
1870 var = var1;
1871 RET_LABEL:;
1872 return var;
1873 }
1874 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: VirtualRuntimeFunction): String */
1875 val* separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
1876 val* var /* : String */;
1877 val* var1 /* : MMethodDef */;
1878 val* var2 /* : String */;
1879 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1880 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MMethodDef>*/;
1881 var = var2;
1882 goto RET_LABEL;
1883 RET_LABEL:;
1884 return var;
1885 }
1886 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: Object): String */
1887 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
1888 val* var /* : String */;
1889 val* var1 /* : String */;
1890 var1 = separate_compiler__VirtualRuntimeFunction__to_s(self);
1891 var = var1;
1892 RET_LABEL:;
1893 return var;
1894 }
1895 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: VirtualRuntimeFunction, AbstractCompiler) */
1896 void separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
1897 short int var /* : Bool */;
1898 int cltype;
1899 int idtype;
1900 const struct type* type_struct;
1901 const char* var_class_name;
1902 val* var_compiler /* var compiler: AbstractCompiler */;
1903 val* var1 /* : MMethodDef */;
1904 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
1905 val* var2 /* : MMethodDef */;
1906 val* var3 /* : MClassDef */;
1907 val* var4 /* : MClassType */;
1908 val* var_recv /* var recv: MClassType */;
1909 val* var5 /* : AbstractCompilerVisitor */;
1910 val* var_v /* var v: AbstractCompilerVisitor */;
1911 val* var6 /* : RuntimeVariable */;
1912 static val* varonce;
1913 val* var7 /* : String */;
1914 char* var8 /* : NativeString */;
1915 long var9 /* : Int */;
1916 val* var10 /* : String */;
1917 val* var11 /* : MClassType */;
1918 val* var_selfvar /* var selfvar: RuntimeVariable */;
1919 val* var12 /* : Array[RuntimeVariable] */;
1920 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1921 val* var13 /* : Frame */;
1922 val* var_frame /* var frame: Frame */;
1923 val* var14 /* : Buffer */;
1924 val* var_sig /* var sig: Buffer */;
1925 val* var15 /* : Buffer */;
1926 val* var_comment /* var comment: Buffer */;
1927 val* var16 /* : MMethodDef */;
1928 val* var17 /* : MProperty */;
1929 val* var18 /* : MPropDef */;
1930 val* var19 /* : MClassDef */;
1931 val* var_intromclassdef /* var intromclassdef: MClassDef */;
1932 val* var20 /* : MProperty */;
1933 val* var21 /* : MPropDef */;
1934 val* var22 /* : nullable MSignature */;
1935 val* var23 /* : MClassType */;
1936 val* var24 /* : MClassType */;
1937 val* var25 /* : MModule */;
1938 short int var26 /* : Bool */;
1939 val* var27 /* : MType */;
1940 val* var_msignature /* var msignature: MSignature */;
1941 val* var28 /* : nullable MType */;
1942 val* var_ret /* var ret: nullable MType */;
1943 val* var29 /* : null */;
1944 short int var30 /* : Bool */;
1945 val* var31 /* : String */;
1946 static val* varonce32;
1947 val* var33 /* : String */;
1948 char* var34 /* : NativeString */;
1949 long var35 /* : Int */;
1950 val* var36 /* : String */;
1951 val* var37 /* : Array[Object] */;
1952 long var38 /* : Int */;
1953 val* var39 /* : NativeArray[Object] */;
1954 val* var40 /* : String */;
1955 val* var41 /* : MProperty */;
1956 short int var42 /* : Bool */;
1957 val* var43 /* : String */;
1958 static val* varonce44;
1959 val* var45 /* : String */;
1960 char* var46 /* : NativeString */;
1961 long var47 /* : Int */;
1962 val* var48 /* : String */;
1963 val* var49 /* : Array[Object] */;
1964 long var50 /* : Int */;
1965 val* var51 /* : NativeArray[Object] */;
1966 val* var52 /* : String */;
1967 static val* varonce53;
1968 val* var54 /* : String */;
1969 char* var55 /* : NativeString */;
1970 long var56 /* : Int */;
1971 val* var57 /* : String */;
1972 val* var58 /* : String */;
1973 static val* varonce59;
1974 val* var60 /* : String */;
1975 char* var61 /* : NativeString */;
1976 long var62 /* : Int */;
1977 val* var63 /* : String */;
1978 val* var64 /* : MType */;
1979 val* var65 /* : String */;
1980 static val* varonce66;
1981 val* var67 /* : String */;
1982 char* var68 /* : NativeString */;
1983 long var69 /* : Int */;
1984 val* var70 /* : String */;
1985 val* var71 /* : Array[Object] */;
1986 long var72 /* : Int */;
1987 val* var73 /* : NativeArray[Object] */;
1988 val* var74 /* : String */;
1989 static val* varonce75;
1990 val* var76 /* : String */;
1991 char* var77 /* : NativeString */;
1992 long var78 /* : Int */;
1993 val* var79 /* : String */;
1994 static val* varonce80;
1995 val* var81 /* : String */;
1996 char* var82 /* : NativeString */;
1997 long var83 /* : Int */;
1998 val* var84 /* : String */;
1999 val* var85 /* : MType */;
2000 val* var86 /* : Array[Object] */;
2001 long var87 /* : Int */;
2002 val* var88 /* : NativeArray[Object] */;
2003 val* var89 /* : String */;
2004 val* var90 /* : Range[Int] */;
2005 long var91 /* : Int */;
2006 long var92 /* : Int */;
2007 val* var93 /* : Discrete */;
2008 val* var94 /* : Discrete */;
2009 val* var95 /* : Iterator[nullable Object] */;
2010 short int var96 /* : Bool */;
2011 val* var97 /* : nullable Object */;
2012 long var_i /* var i: Int */;
2013 long var98 /* : Int */;
2014 val* var99 /* : Array[MParameter] */;
2015 val* var100 /* : nullable Object */;
2016 val* var101 /* : MType */;
2017 val* var_mtype /* var mtype: MType */;
2018 long var102 /* : Int */;
2019 short int var103 /* : Bool */;
2020 short int var105 /* : Bool */;
2021 static val* varonce106;
2022 val* var107 /* : String */;
2023 char* var108 /* : NativeString */;
2024 long var109 /* : Int */;
2025 val* var110 /* : String */;
2026 val* var111 /* : MClass */;
2027 val* var112 /* : Array[MType] */;
2028 long var113 /* : Int */;
2029 val* var114 /* : NativeArray[MType] */;
2030 val* var115 /* : MClassType */;
2031 static val* varonce116;
2032 val* var117 /* : String */;
2033 char* var118 /* : NativeString */;
2034 long var119 /* : Int */;
2035 val* var120 /* : String */;
2036 val* var121 /* : Array[Object] */;
2037 long var122 /* : Int */;
2038 val* var123 /* : NativeArray[Object] */;
2039 val* var124 /* : String */;
2040 static val* varonce125;
2041 val* var126 /* : String */;
2042 char* var127 /* : NativeString */;
2043 long var128 /* : Int */;
2044 val* var129 /* : String */;
2045 val* var130 /* : String */;
2046 static val* varonce131;
2047 val* var132 /* : String */;
2048 char* var133 /* : NativeString */;
2049 long var134 /* : Int */;
2050 val* var135 /* : String */;
2051 val* var136 /* : Array[Object] */;
2052 long var137 /* : Int */;
2053 val* var138 /* : NativeArray[Object] */;
2054 val* var139 /* : Object */;
2055 val* var140 /* : String */;
2056 val* var141 /* : RuntimeVariable */;
2057 val* var142 /* : Array[Object] */;
2058 long var143 /* : Int */;
2059 val* var_ /* var : Array[Object] */;
2060 static val* varonce144;
2061 val* var145 /* : String */;
2062 char* var146 /* : NativeString */;
2063 long var147 /* : Int */;
2064 val* var148 /* : String */;
2065 val* var149 /* : nullable Object */;
2066 static val* varonce150;
2067 val* var151 /* : String */;
2068 char* var152 /* : NativeString */;
2069 long var153 /* : Int */;
2070 val* var154 /* : String */;
2071 val* var155 /* : String */;
2072 val* var_argvar /* var argvar: RuntimeVariable */;
2073 static val* varonce156;
2074 val* var157 /* : String */;
2075 char* var158 /* : NativeString */;
2076 long var159 /* : Int */;
2077 val* var160 /* : String */;
2078 static val* varonce161;
2079 val* var162 /* : String */;
2080 char* var163 /* : NativeString */;
2081 long var164 /* : Int */;
2082 val* var165 /* : String */;
2083 val* var166 /* : null */;
2084 short int var167 /* : Bool */;
2085 static val* varonce168;
2086 val* var169 /* : String */;
2087 char* var170 /* : NativeString */;
2088 long var171 /* : Int */;
2089 val* var172 /* : String */;
2090 val* var173 /* : Array[Object] */;
2091 long var174 /* : Int */;
2092 val* var175 /* : NativeArray[Object] */;
2093 val* var176 /* : String */;
2094 val* var177 /* : String */;
2095 static val* varonce178;
2096 val* var179 /* : String */;
2097 char* var180 /* : NativeString */;
2098 long var181 /* : Int */;
2099 val* var182 /* : String */;
2100 val* var183 /* : Array[Object] */;
2101 long var184 /* : Int */;
2102 val* var185 /* : NativeArray[Object] */;
2103 val* var186 /* : String */;
2104 static val* varonce187;
2105 val* var188 /* : String */;
2106 char* var189 /* : NativeString */;
2107 long var190 /* : Int */;
2108 val* var191 /* : String */;
2109 static val* varonce192;
2110 val* var193 /* : String */;
2111 char* var194 /* : NativeString */;
2112 long var195 /* : Int */;
2113 val* var196 /* : String */;
2114 static val* varonce197;
2115 val* var198 /* : String */;
2116 char* var199 /* : NativeString */;
2117 long var200 /* : Int */;
2118 val* var201 /* : String */;
2119 val* var202 /* : Array[Object] */;
2120 long var203 /* : Int */;
2121 val* var204 /* : NativeArray[Object] */;
2122 val* var205 /* : String */;
2123 static val* varonce206;
2124 val* var207 /* : String */;
2125 char* var208 /* : NativeString */;
2126 long var209 /* : Int */;
2127 val* var210 /* : String */;
2128 val* var211 /* : Array[Object] */;
2129 long var212 /* : Int */;
2130 val* var213 /* : NativeArray[Object] */;
2131 val* var214 /* : String */;
2132 val* var215 /* : null */;
2133 short int var216 /* : Bool */;
2134 val* var217 /* : RuntimeVariable */;
2135 static val* varonce218;
2136 val* var219 /* : String */;
2137 char* var220 /* : NativeString */;
2138 long var221 /* : Int */;
2139 val* var222 /* : String */;
2140 val* var223 /* : String */;
2141 val* var224 /* : nullable RuntimeVariable */;
2142 val* var_subret /* var subret: nullable RuntimeVariable */;
2143 val* var225 /* : null */;
2144 short int var226 /* : Bool */;
2145 val* var227 /* : null */;
2146 short int var228 /* : Bool */;
2147 val* var229 /* : nullable RuntimeVariable */;
2148 val* var230 /* : nullable String */;
2149 static val* varonce231;
2150 val* var232 /* : String */;
2151 char* var233 /* : NativeString */;
2152 long var234 /* : Int */;
2153 val* var235 /* : String */;
2154 val* var236 /* : Array[Object] */;
2155 long var237 /* : Int */;
2156 val* var238 /* : NativeArray[Object] */;
2157 val* var239 /* : String */;
2158 val* var240 /* : null */;
2159 short int var241 /* : Bool */;
2160 static val* varonce242;
2161 val* var243 /* : String */;
2162 char* var244 /* : NativeString */;
2163 long var245 /* : Int */;
2164 val* var246 /* : String */;
2165 val* var247 /* : nullable RuntimeVariable */;
2166 static val* varonce248;
2167 val* var249 /* : String */;
2168 char* var250 /* : NativeString */;
2169 long var251 /* : Int */;
2170 val* var252 /* : String */;
2171 val* var253 /* : Array[Object] */;
2172 long var254 /* : Int */;
2173 val* var255 /* : NativeArray[Object] */;
2174 val* var256 /* : String */;
2175 static val* varonce257;
2176 val* var258 /* : String */;
2177 char* var259 /* : NativeString */;
2178 long var260 /* : Int */;
2179 val* var261 /* : String */;
2180 val* var262 /* : String */;
2181 static val* varonce263;
2182 val* var264 /* : String */;
2183 char* var265 /* : NativeString */;
2184 long var266 /* : Int */;
2185 val* var267 /* : String */;
2186 long var268 /* : Int */;
2187 short int var269 /* : Bool */;
2188 short int var270 /* : Bool */;
2189 val* var271 /* : HashMap[String, String] */;
2190 val* var272 /* : String */;
2191 val* var273 /* : MClassDef */;
2192 val* var274 /* : MModule */;
2193 val* var275 /* : String */;
2194 static val* varonce276;
2195 val* var277 /* : String */;
2196 char* var278 /* : NativeString */;
2197 long var279 /* : Int */;
2198 val* var280 /* : String */;
2199 val* var281 /* : MClassDef */;
2200 val* var282 /* : MClass */;
2201 val* var283 /* : String */;
2202 static val* varonce284;
2203 val* var285 /* : String */;
2204 char* var286 /* : NativeString */;
2205 long var287 /* : Int */;
2206 val* var288 /* : String */;
2207 val* var289 /* : MProperty */;
2208 val* var290 /* : String */;
2209 static val* varonce291;
2210 val* var292 /* : String */;
2211 char* var293 /* : NativeString */;
2212 long var294 /* : Int */;
2213 val* var295 /* : String */;
2214 val* var296 /* : Location */;
2215 val* var297 /* : nullable SourceFile */;
2216 val* var298 /* : String */;
2217 static val* varonce299;
2218 val* var300 /* : String */;
2219 char* var301 /* : NativeString */;
2220 long var302 /* : Int */;
2221 val* var303 /* : String */;
2222 val* var304 /* : Location */;
2223 long var305 /* : Int */;
2224 static val* varonce306;
2225 val* var307 /* : String */;
2226 char* var308 /* : NativeString */;
2227 long var309 /* : Int */;
2228 val* var310 /* : String */;
2229 val* var311 /* : Array[Object] */;
2230 long var312 /* : Int */;
2231 val* var313 /* : NativeArray[Object] */;
2232 val* var314 /* : Object */;
2233 val* var315 /* : String */;
2234 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
2235 /* <p0:AbstractCompiler> isa COMPILER */
2236 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
2237 cltype = type_struct->color;
2238 idtype = type_struct->id;
2239 if(cltype >= p0->type->table_size) {
2240 var = 0;
2241 } else {
2242 var = p0->type->type_table[cltype] == idtype;
2243 }
2244 if (!var) {
2245 var_class_name = p0 == NULL ? "null" : p0->type->name;
2246 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
2247 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1760);
2248 show_backtrace(1);
2249 }
2250 var_compiler = p0;
2251 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
2252 var_mmethoddef = var1;
2253 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
2254 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MMethodDef>*/;
2255 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
2256 var_recv = var4;
2257 var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
2258 var_v = var5;
2259 var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
2260 if (varonce) {
2261 var7 = varonce;
2262 } else {
2263 var8 = "self";
2264 var9 = 4;
2265 var10 = string__NativeString__to_s_with_length(var8, var9);
2266 var7 = var10;
2267 varonce = var7;
2268 }
2269 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(var_v) /* object_type on <var_v:AbstractCompilerVisitor>*/;
2270 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var11, var_recv) /* init on <var6:RuntimeVariable>*/;
2271 var_selfvar = var6;
2272 var12 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2273 ((void (*)(val*))(var12->class->vft[COLOR_array__Array__init]))(var12) /* init on <var12:Array[RuntimeVariable]>*/;
2274 var_arguments = var12;
2275 var13 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
2276 ((void (*)(val*, val*, val*, val*, val*))(var13->class->vft[COLOR_abstract_compiler__Frame__init]))(var13, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var13:Frame>*/;
2277 var_frame = var13;
2278 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
2279 var14 = NEW_string__Buffer(&type_string__Buffer);
2280 ((void (*)(val*))(var14->class->vft[COLOR_string__Buffer__init]))(var14) /* init on <var14:Buffer>*/;
2281 var_sig = var14;
2282 var15 = NEW_string__Buffer(&type_string__Buffer);
2283 ((void (*)(val*))(var15->class->vft[COLOR_string__Buffer__init]))(var15) /* init on <var15:Buffer>*/;
2284 var_comment = var15;
2285 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
2286 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mproperty]))(var16) /* mproperty on <var16:MMethodDef>*/;
2287 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MProperty__intro]))(var17) /* intro on <var17:MProperty(MMethod)>*/;
2288 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MPropDef__mclassdef]))(var18) /* mclassdef on <var18:MPropDef(MMethodDef)>*/;
2289 var_intromclassdef = var19;
2290 var20 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2291 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MProperty__intro]))(var20) /* intro on <var20:MProperty(MMethod)>*/;
2292 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MMethodDef__msignature]))(var21) /* msignature on <var21:MPropDef(MMethodDef)>*/;
2293 var23 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2294 var24 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2295 var25 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2296 var26 = 1;
2297 if (var22 == NULL) {
2298 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2299 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1776);
2300 show_backtrace(1);
2301 } else {
2302 var27 = ((val* (*)(val*, val*, val*, val*, short int))(var22->class->vft[COLOR_model__MType__resolve_for]))(var22, var23, var24, var25, var26) /* resolve_for on <var22:nullable MSignature>*/;
2303 }
2304 var_msignature = var27;
2305 var28 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
2306 var_ret = var28;
2307 var29 = NULL;
2308 if (var_ret == NULL) {
2309 var30 = 0; /* is null */
2310 } else {
2311 var30 = 1; /* arg is null and recv is not */
2312 }
2313 if (var30){
2314 var31 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
2315 if (varonce32) {
2316 var33 = varonce32;
2317 } else {
2318 var34 = " ";
2319 var35 = 1;
2320 var36 = string__NativeString__to_s_with_length(var34, var35);
2321 var33 = var36;
2322 varonce32 = var33;
2323 }
2324 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
2325 { /* var37 = array_instance Array[Object] */
2326 var38 = 2;
2327 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
2328 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var31;
2329 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var33;
2330 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
2331 }
2332 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
2333 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var40) /* append on <var_sig:Buffer>*/;
2334 } else {
2335 var41 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2336 var42 = ((short int (*)(val*))(var41->class->vft[COLOR_model__MMethod__is_new]))(var41) /* is_new on <var41:MProperty(MMethod)>*/;
2337 if (var42){
2338 var_ret = var_recv;
2339 var43 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
2340 if (varonce44) {
2341 var45 = varonce44;
2342 } else {
2343 var46 = " ";
2344 var47 = 1;
2345 var48 = string__NativeString__to_s_with_length(var46, var47);
2346 var45 = var48;
2347 varonce44 = var45;
2348 }
2349 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
2350 { /* var49 = array_instance Array[Object] */
2351 var50 = 2;
2352 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
2353 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43;
2354 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45;
2355 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
2356 }
2357 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
2358 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var52) /* append on <var_sig:Buffer>*/;
2359 } else {
2360 if (varonce53) {
2361 var54 = varonce53;
2362 } else {
2363 var55 = "void ";
2364 var56 = 5;
2365 var57 = string__NativeString__to_s_with_length(var55, var56);
2366 var54 = var57;
2367 varonce53 = var54;
2368 }
2369 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on <var_sig:Buffer>*/;
2370 }
2371 }
2372 var58 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2373 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var58) /* append on <var_sig:Buffer>*/;
2374 if (varonce59) {
2375 var60 = varonce59;
2376 } else {
2377 var61 = "(";
2378 var62 = 1;
2379 var63 = string__NativeString__to_s_with_length(var61, var62);
2380 var60 = var63;
2381 varonce59 = var60;
2382 }
2383 var64 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
2384 var65 = ((val* (*)(val*))(var64->class->vft[COLOR_abstract_compiler__MType__ctype]))(var64) /* ctype on <var64:MType>*/;
2385 if (varonce66) {
2386 var67 = varonce66;
2387 } else {
2388 var68 = " ";
2389 var69 = 1;
2390 var70 = string__NativeString__to_s_with_length(var68, var69);
2391 var67 = var70;
2392 varonce66 = var67;
2393 }
2394 var71 = NEW_array__Array(&type_array__Arraykernel__Object);
2395 { /* var71 = array_instance Array[Object] */
2396 var72 = 4;
2397 var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
2398 ((struct instance_array__NativeArray*)var73)->values[0] = (val*) var60;
2399 ((struct instance_array__NativeArray*)var73)->values[1] = (val*) var65;
2400 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var67;
2401 ((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_selfvar;
2402 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
2403 }
2404 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
2405 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var74) /* append on <var_sig:Buffer>*/;
2406 if (varonce75) {
2407 var76 = varonce75;
2408 } else {
2409 var77 = "(";
2410 var78 = 1;
2411 var79 = string__NativeString__to_s_with_length(var77, var78);
2412 var76 = var79;
2413 varonce75 = var76;
2414 }
2415 if (varonce80) {
2416 var81 = varonce80;
2417 } else {
2418 var82 = ": ";
2419 var83 = 2;
2420 var84 = string__NativeString__to_s_with_length(var82, var83);
2421 var81 = var84;
2422 varonce80 = var81;
2423 }
2424 var85 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
2425 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
2426 { /* var86 = array_instance Array[Object] */
2427 var87 = 4;
2428 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
2429 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var76;
2430 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var_selfvar;
2431 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var81;
2432 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var85;
2433 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
2434 }
2435 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
2436 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var89) /* append on <var_comment:Buffer>*/;
2437 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
2438 var90 = NEW_range__Range(&type_range__Rangekernel__Int);
2439 var91 = 0;
2440 var92 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2441 var93 = BOX_kernel__Int(var91); /* autobox from Int to Discrete */
2442 var94 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */
2443 ((void (*)(val*, val*, val*))(var90->class->vft[COLOR_range__Range__without_last]))(var90, var93, var94) /* without_last on <var90:Range[Int]>*/;
2444 var95 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on <var90:Range[Int]>*/;
2445 for(;;) {
2446 var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on <var95:Iterator[nullable Object]>*/;
2447 if(!var96) break;
2448 var97 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__item]))(var95) /* item on <var95:Iterator[nullable Object]>*/;
2449 var98 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */;
2450 var_i = var98;
2451 var99 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2452 var100 = ((val* (*)(val*, long))(var99->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var99, var_i) /* [] on <var99:Array[MParameter]>*/;
2453 var101 = ((val* (*)(val*))(var100->class->vft[COLOR_model__MParameter__mtype]))(var100) /* mtype on <var100:nullable Object(MParameter)>*/;
2454 var_mtype = var101;
2455 var102 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
2456 { /* Inline kernel#Int#== (var_i,var102) */
2457 var105 = var_i == var102;
2458 var103 = var105;
2459 goto RET_LABEL104;
2460 RET_LABEL104:(void)0;
2461 }
2462 if (var103){
2463 if (varonce106) {
2464 var107 = varonce106;
2465 } else {
2466 var108 = "Array";
2467 var109 = 5;
2468 var110 = string__NativeString__to_s_with_length(var108, var109);
2469 var107 = var110;
2470 varonce106 = var107;
2471 }
2472 var111 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var107) /* get_class on <var_v:AbstractCompilerVisitor>*/;
2473 var112 = NEW_array__Array(&type_array__Arraymodel__MType);
2474 { /* var112 = array_instance Array[MType] */
2475 var113 = 1;
2476 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraymodel__MType);
2477 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_mtype;
2478 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[MType]>*/;
2479 }
2480 var115 = ((val* (*)(val*, val*))(var111->class->vft[COLOR_model__MClass__get_mtype]))(var111, var112) /* get_mtype on <var111:MClass>*/;
2481 var_mtype = var115;
2482 } else {
2483 }
2484 if (varonce116) {
2485 var117 = varonce116;
2486 } else {
2487 var118 = ", ";
2488 var119 = 2;
2489 var120 = string__NativeString__to_s_with_length(var118, var119);
2490 var117 = var120;
2491 varonce116 = var117;
2492 }
2493 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
2494 { /* var121 = array_instance Array[Object] */
2495 var122 = 2;
2496 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
2497 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var117;
2498 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var_mtype;
2499 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
2500 }
2501 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
2502 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var124) /* append on <var_comment:Buffer>*/;
2503 if (varonce125) {
2504 var126 = varonce125;
2505 } else {
2506 var127 = ", ";
2507 var128 = 2;
2508 var129 = string__NativeString__to_s_with_length(var127, var128);
2509 var126 = var129;
2510 varonce125 = var126;
2511 }
2512 var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
2513 if (varonce131) {
2514 var132 = varonce131;
2515 } else {
2516 var133 = " p";
2517 var134 = 2;
2518 var135 = string__NativeString__to_s_with_length(var133, var134);
2519 var132 = var135;
2520 varonce131 = var132;
2521 }
2522 var136 = NEW_array__Array(&type_array__Arraykernel__Object);
2523 { /* var136 = array_instance Array[Object] */
2524 var137 = 4;
2525 var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
2526 ((struct instance_array__NativeArray*)var138)->values[0] = (val*) var126;
2527 ((struct instance_array__NativeArray*)var138)->values[1] = (val*) var130;
2528 ((struct instance_array__NativeArray*)var138)->values[2] = (val*) var132;
2529 var139 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
2530 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var139;
2531 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
2532 }
2533 var140 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
2534 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var140) /* append on <var_sig:Buffer>*/;
2535 var141 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
2536 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
2537 var143 = 3;
2538 ((void (*)(val*, long))(var142->class->vft[COLOR_array__Array__with_capacity]))(var142, var143) /* with_capacity on <var142:Array[Object]>*/;
2539 var_ = var142;
2540 if (varonce144) {
2541 var145 = varonce144;
2542 } else {
2543 var146 = "p";
2544 var147 = 1;
2545 var148 = string__NativeString__to_s_with_length(var146, var147);
2546 var145 = var148;
2547 varonce144 = var145;
2548 }
2549 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on <var_:Array[Object]>*/;
2550 var149 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
2551 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var149) /* add on <var_:Array[Object]>*/;
2552 if (varonce150) {
2553 var151 = varonce150;
2554 } else {
2555 var152 = "";
2556 var153 = 0;
2557 var154 = string__NativeString__to_s_with_length(var152, var153);
2558 var151 = var154;
2559 varonce150 = var151;
2560 }
2561 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var151) /* add on <var_:Array[Object]>*/;
2562 var155 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2563 ((void (*)(val*, val*, val*, val*))(var141->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var141, var155, var_mtype, var_mtype) /* init on <var141:RuntimeVariable>*/;
2564 var_argvar = var141;
2565 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
2566 CONTINUE_label: (void)0;
2567 ((void (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__next]))(var95) /* next on <var95:Iterator[nullable Object]>*/;
2568 }
2569 BREAK_label: (void)0;
2570 if (varonce156) {
2571 var157 = varonce156;
2572 } else {
2573 var158 = ")";
2574 var159 = 1;
2575 var160 = string__NativeString__to_s_with_length(var158, var159);
2576 var157 = var160;
2577 varonce156 = var157;
2578 }
2579 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var157) /* append on <var_sig:Buffer>*/;
2580 if (varonce161) {
2581 var162 = varonce161;
2582 } else {
2583 var163 = ")";
2584 var164 = 1;
2585 var165 = string__NativeString__to_s_with_length(var163, var164);
2586 var162 = var165;
2587 varonce161 = var162;
2588 }
2589 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var162) /* append on <var_comment:Buffer>*/;
2590 var166 = NULL;
2591 if (var_ret == NULL) {
2592 var167 = 0; /* is null */
2593 } else {
2594 var167 = 1; /* arg is null and recv is not */
2595 }
2596 if (var167){
2597 if (varonce168) {
2598 var169 = varonce168;
2599 } else {
2600 var170 = ": ";
2601 var171 = 2;
2602 var172 = string__NativeString__to_s_with_length(var170, var171);
2603 var169 = var172;
2604 varonce168 = var169;
2605 }
2606 var173 = NEW_array__Array(&type_array__Arraykernel__Object);
2607 { /* var173 = array_instance Array[Object] */
2608 var174 = 2;
2609 var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
2610 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var169;
2611 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var_ret;
2612 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
2613 }
2614 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
2615 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var176) /* append on <var_comment:Buffer>*/;
2616 } else {
2617 }
2618 var177 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2619 if (varonce178) {
2620 var179 = varonce178;
2621 } else {
2622 var180 = ";";
2623 var181 = 1;
2624 var182 = string__NativeString__to_s_with_length(var180, var181);
2625 var179 = var182;
2626 varonce178 = var179;
2627 }
2628 var183 = NEW_array__Array(&type_array__Arraykernel__Object);
2629 { /* var183 = array_instance Array[Object] */
2630 var184 = 2;
2631 var185 = NEW_array__NativeArray(var184, &type_array__NativeArraykernel__Object);
2632 ((struct instance_array__NativeArray*)var185)->values[0] = (val*) var_sig;
2633 ((struct instance_array__NativeArray*)var185)->values[1] = (val*) var179;
2634 ((void (*)(val*, val*, long))(var183->class->vft[COLOR_array__Array__with_native]))(var183, var185, var184) /* with_native on <var183:Array[Object]>*/;
2635 }
2636 var186 = ((val* (*)(val*))(var183->class->vft[COLOR_string__Object__to_s]))(var183) /* to_s on <var183:Array[Object]>*/;
2637 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var177, var186) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
2638 if (varonce187) {
2639 var188 = varonce187;
2640 } else {
2641 var189 = "/* method ";
2642 var190 = 10;
2643 var191 = string__NativeString__to_s_with_length(var189, var190);
2644 var188 = var191;
2645 varonce187 = var188;
2646 }
2647 if (varonce192) {
2648 var193 = varonce192;
2649 } else {
2650 var194 = " for ";
2651 var195 = 5;
2652 var196 = string__NativeString__to_s_with_length(var194, var195);
2653 var193 = var196;
2654 varonce192 = var193;
2655 }
2656 if (varonce197) {
2657 var198 = varonce197;
2658 } else {
2659 var199 = " */";
2660 var200 = 3;
2661 var201 = string__NativeString__to_s_with_length(var199, var200);
2662 var198 = var201;
2663 varonce197 = var198;
2664 }
2665 var202 = NEW_array__Array(&type_array__Arraykernel__Object);
2666 { /* var202 = array_instance Array[Object] */
2667 var203 = 5;
2668 var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object);
2669 ((struct instance_array__NativeArray*)var204)->values[0] = (val*) var188;
2670 ((struct instance_array__NativeArray*)var204)->values[1] = (val*) self;
2671 ((struct instance_array__NativeArray*)var204)->values[2] = (val*) var193;
2672 ((struct instance_array__NativeArray*)var204)->values[3] = (val*) var_comment;
2673 ((struct instance_array__NativeArray*)var204)->values[4] = (val*) var198;
2674 ((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on <var202:Array[Object]>*/;
2675 }
2676 var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on <var202:Array[Object]>*/;
2677 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var205) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
2678 if (varonce206) {
2679 var207 = varonce206;
2680 } else {
2681 var208 = " {";
2682 var209 = 2;
2683 var210 = string__NativeString__to_s_with_length(var208, var209);
2684 var207 = var210;
2685 varonce206 = var207;
2686 }
2687 var211 = NEW_array__Array(&type_array__Arraykernel__Object);
2688 { /* var211 = array_instance Array[Object] */
2689 var212 = 2;
2690 var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
2691 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var_sig;
2692 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var207;
2693 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
2694 }
2695 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
2696 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var214) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
2697 var215 = NULL;
2698 if (var_ret == NULL) {
2699 var216 = 0; /* is null */
2700 } else {
2701 var216 = 1; /* arg is null and recv is not */
2702 }
2703 if (var216){
2704 var217 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:AbstractCompilerVisitor>*/;
2705 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var217) /* returnvar= on <var_frame:Frame>*/;
2706 } else {
2707 }
2708 if (varonce218) {
2709 var219 = varonce218;
2710 } else {
2711 var220 = "RET_LABEL";
2712 var221 = 9;
2713 var222 = string__NativeString__to_s_with_length(var220, var221);
2714 var219 = var222;
2715 varonce218 = var219;
2716 }
2717 var223 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var219) /* get_name on <var_v:AbstractCompilerVisitor>*/;
2718 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var223) /* returnlabel= on <var_frame:Frame>*/;
2719 var224 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__call]))(var_v, var_mmethoddef, var_recv, var_arguments) /* call on <var_v:AbstractCompilerVisitor>*/;
2720 var_subret = var224;
2721 var225 = NULL;
2722 if (var_ret == NULL) {
2723 var226 = 0; /* is null */
2724 } else {
2725 var226 = 1; /* arg is null and recv is not */
2726 }
2727 if (var226){
2728 var227 = NULL;
2729 if (var_subret == NULL) {
2730 var228 = 0; /* is null */
2731 } else {
2732 var228 = 1; /* arg is null and recv is not */
2733 }
2734 if (!var228) {
2735 fprintf(stderr, "Runtime error: %s", "Assert failed");
2736 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1816);
2737 show_backtrace(1);
2738 }
2739 var229 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
2740 if (var229 == NULL) {
2741 fprintf(stderr, "Runtime error: %s", "Cast failed");
2742 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1817);
2743 show_backtrace(1);
2744 }
2745 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var229, var_subret) /* assign on <var_v:AbstractCompilerVisitor>*/;
2746 } else {
2747 }
2748 var230 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
2749 if (var230 == NULL) {
2750 fprintf(stderr, "Runtime error: %s", "Cast failed");
2751 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1820);
2752 show_backtrace(1);
2753 }
2754 if (varonce231) {
2755 var232 = varonce231;
2756 } else {
2757 var233 = ":;";
2758 var234 = 2;
2759 var235 = string__NativeString__to_s_with_length(var233, var234);
2760 var232 = var235;
2761 varonce231 = var232;
2762 }
2763 var236 = NEW_array__Array(&type_array__Arraykernel__Object);
2764 { /* var236 = array_instance Array[Object] */
2765 var237 = 2;
2766 var238 = NEW_array__NativeArray(var237, &type_array__NativeArraykernel__Object);
2767 ((struct instance_array__NativeArray*)var238)->values[0] = (val*) var230;
2768 ((struct instance_array__NativeArray*)var238)->values[1] = (val*) var232;
2769 ((void (*)(val*, val*, long))(var236->class->vft[COLOR_array__Array__with_native]))(var236, var238, var237) /* with_native on <var236:Array[Object]>*/;
2770 }
2771 var239 = ((val* (*)(val*))(var236->class->vft[COLOR_string__Object__to_s]))(var236) /* to_s on <var236:Array[Object]>*/;
2772 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var239) /* add on <var_v:AbstractCompilerVisitor>*/;
2773 var240 = NULL;
2774 if (var_ret == NULL) {
2775 var241 = 0; /* is null */
2776 } else {
2777 var241 = 1; /* arg is null and recv is not */
2778 }
2779 if (var241){
2780 if (varonce242) {
2781 var243 = varonce242;
2782 } else {
2783 var244 = "return ";
2784 var245 = 7;
2785 var246 = string__NativeString__to_s_with_length(var244, var245);
2786 var243 = var246;
2787 varonce242 = var243;
2788 }
2789 var247 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
2790 if (var247 == NULL) {
2791 fprintf(stderr, "Runtime error: %s", "Cast failed");
2792 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1822);
2793 show_backtrace(1);
2794 }
2795 if (varonce248) {
2796 var249 = varonce248;
2797 } else {
2798 var250 = ";";
2799 var251 = 1;
2800 var252 = string__NativeString__to_s_with_length(var250, var251);
2801 var249 = var252;
2802 varonce248 = var249;
2803 }
2804 var253 = NEW_array__Array(&type_array__Arraykernel__Object);
2805 { /* var253 = array_instance Array[Object] */
2806 var254 = 3;
2807 var255 = NEW_array__NativeArray(var254, &type_array__NativeArraykernel__Object);
2808 ((struct instance_array__NativeArray*)var255)->values[0] = (val*) var243;
2809 ((struct instance_array__NativeArray*)var255)->values[1] = (val*) var247;
2810 ((struct instance_array__NativeArray*)var255)->values[2] = (val*) var249;
2811 ((void (*)(val*, val*, long))(var253->class->vft[COLOR_array__Array__with_native]))(var253, var255, var254) /* with_native on <var253:Array[Object]>*/;
2812 }
2813 var256 = ((val* (*)(val*))(var253->class->vft[COLOR_string__Object__to_s]))(var253) /* to_s on <var253:Array[Object]>*/;
2814 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var256) /* add on <var_v:AbstractCompilerVisitor>*/;
2815 } else {
2816 }
2817 if (varonce257) {
2818 var258 = varonce257;
2819 } else {
2820 var259 = "}";
2821 var260 = 1;
2822 var261 = string__NativeString__to_s_with_length(var259, var260);
2823 var258 = var261;
2824 varonce257 = var258;
2825 }
2826 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var258) /* add on <var_v:AbstractCompilerVisitor>*/;
2827 var262 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2828 if (varonce263) {
2829 var264 = varonce263;
2830 } else {
2831 var265 = "VIRTUAL";
2832 var266 = 7;
2833 var267 = string__NativeString__to_s_with_length(var265, var266);
2834 var264 = var267;
2835 varonce263 = var264;
2836 }
2837 var268 = 0;
2838 var269 = ((short int (*)(val*, val*, long))(var262->class->vft[COLOR_string__AbstractString__has_substring]))(var262, var264, var268) /* has_substring on <var262:String>*/;
2839 var270 = !var269;
2840 if (var270){
2841 var271 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on <var_compiler:AbstractCompiler>*/;
2842 var272 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2843 var273 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2844 var274 = ((val* (*)(val*))(var273->class->vft[COLOR_model__MClassDef__mmodule]))(var273) /* mmodule on <var273:MClassDef>*/;
2845 var275 = ((val* (*)(val*))(var274->class->vft[COLOR_mmodule__MModule__name]))(var274) /* name on <var274:MModule>*/;
2846 if (varonce276) {
2847 var277 = varonce276;
2848 } else {
2849 var278 = "::";
2850 var279 = 2;
2851 var280 = string__NativeString__to_s_with_length(var278, var279);
2852 var277 = var280;
2853 varonce276 = var277;
2854 }
2855 var281 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2856 var282 = ((val* (*)(val*))(var281->class->vft[COLOR_model__MClassDef__mclass]))(var281) /* mclass on <var281:MClassDef>*/;
2857 var283 = ((val* (*)(val*))(var282->class->vft[COLOR_model__MClass__name]))(var282) /* name on <var282:MClass>*/;
2858 if (varonce284) {
2859 var285 = varonce284;
2860 } else {
2861 var286 = "::";
2862 var287 = 2;
2863 var288 = string__NativeString__to_s_with_length(var286, var287);
2864 var285 = var288;
2865 varonce284 = var285;
2866 }
2867 var289 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2868 var290 = ((val* (*)(val*))(var289->class->vft[COLOR_model__MProperty__name]))(var289) /* name on <var289:MProperty(MMethod)>*/;
2869 if (varonce291) {
2870 var292 = varonce291;
2871 } else {
2872 var293 = " (";
2873 var294 = 2;
2874 var295 = string__NativeString__to_s_with_length(var293, var294);
2875 var292 = var295;
2876 varonce291 = var292;
2877 }
2878 var296 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
2879 var297 = ((val* (*)(val*))(var296->class->vft[COLOR_location__Location__file]))(var296) /* file on <var296:Location>*/;
2880 if (var297 == NULL) {
2881 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2882 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1825);
2883 show_backtrace(1);
2884 } else {
2885 var298 = ((val* (*)(val*))(var297->class->vft[COLOR_location__SourceFile__filename]))(var297) /* filename on <var297:nullable SourceFile>*/;
2886 }
2887 if (varonce299) {
2888 var300 = varonce299;
2889 } else {
2890 var301 = "--";
2891 var302 = 2;
2892 var303 = string__NativeString__to_s_with_length(var301, var302);
2893 var300 = var303;
2894 varonce299 = var300;
2895 }
2896 var304 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
2897 var305 = ((long (*)(val*))(var304->class->vft[COLOR_location__Location__line_start]))(var304) /* line_start on <var304:Location>*/;
2898 if (varonce306) {
2899 var307 = varonce306;
2900 } else {
2901 var308 = ")";
2902 var309 = 1;
2903 var310 = string__NativeString__to_s_with_length(var308, var309);
2904 var307 = var310;
2905 varonce306 = var307;
2906 }
2907 var311 = NEW_array__Array(&type_array__Arraykernel__Object);
2908 { /* var311 = array_instance Array[Object] */
2909 var312 = 10;
2910 var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object);
2911 ((struct instance_array__NativeArray*)var313)->values[0] = (val*) var275;
2912 ((struct instance_array__NativeArray*)var313)->values[1] = (val*) var277;
2913 ((struct instance_array__NativeArray*)var313)->values[2] = (val*) var283;
2914 ((struct instance_array__NativeArray*)var313)->values[3] = (val*) var285;
2915 ((struct instance_array__NativeArray*)var313)->values[4] = (val*) var290;
2916 ((struct instance_array__NativeArray*)var313)->values[5] = (val*) var292;
2917 ((struct instance_array__NativeArray*)var313)->values[6] = (val*) var298;
2918 ((struct instance_array__NativeArray*)var313)->values[7] = (val*) var300;
2919 var314 = BOX_kernel__Int(var305); /* autobox from Int to Object */
2920 ((struct instance_array__NativeArray*)var313)->values[8] = (val*) var314;
2921 ((struct instance_array__NativeArray*)var313)->values[9] = (val*) var307;
2922 ((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on <var311:Array[Object]>*/;
2923 }
2924 var315 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on <var311:Array[Object]>*/;
2925 ((void (*)(val*, val*, val*))(var271->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var271, var272, var315) /* []= on <var271:HashMap[String, String]>*/;
2926 } else {
2927 }
2928 RET_LABEL:;
2929 }
2930 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
2931 void VIRTUAL_separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
2932 separate_compiler__VirtualRuntimeFunction__compile_to_c(self, p0);
2933 RET_LABEL:;
2934 }
2935 /* method separate_compiler#VirtualRuntimeFunction#call for (self: VirtualRuntimeFunction, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2936 val* separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) {
2937 val* var /* : nullable RuntimeVariable */;
2938 short int var1 /* : Bool */;
2939 int cltype;
2940 int idtype;
2941 const struct type* type_struct;
2942 const char* var_class_name;
2943 val* var_v /* var v: AbstractCompilerVisitor */;
2944 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2945 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
2946 /* <p0:AbstractCompilerVisitor> isa VISITOR */
2947 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTVISITOR];
2948 cltype = type_struct->color;
2949 idtype = type_struct->id;
2950 if(cltype >= p0->type->table_size) {
2951 var1 = 0;
2952 } else {
2953 var1 = p0->type->type_table[cltype] == idtype;
2954 }
2955 if (!var1) {
2956 var_class_name = p0 == NULL ? "null" : p0->type->name;
2957 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
2958 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1828);
2959 show_backtrace(1);
2960 }
2961 var_v = p0;
2962 var_arguments = p1;
2963 fprintf(stderr, "Runtime error: %s", "Aborted");
2964 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1829);
2965 show_backtrace(1);
2966 RET_LABEL:;
2967 return var;
2968 }
2969 /* method separate_compiler#VirtualRuntimeFunction#call for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2970 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) {
2971 val* var /* : nullable RuntimeVariable */;
2972 val* var1 /* : nullable RuntimeVariable */;
2973 var1 = separate_compiler__VirtualRuntimeFunction__call(self, p0, p1);
2974 var = var1;
2975 RET_LABEL:;
2976 return var;
2977 }
2978 /* method separate_compiler#MType#const_color for (self: MType): String */
2979 val* separate_compiler__MType__const_color(val* self) {
2980 val* var /* : String */;
2981 val* var1 /* : Array[Object] */;
2982 long var2 /* : Int */;
2983 val* var_ /* var : Array[Object] */;
2984 static val* varonce;
2985 val* var3 /* : String */;
2986 char* var4 /* : NativeString */;
2987 long var5 /* : Int */;
2988 val* var6 /* : String */;
2989 val* var7 /* : String */;
2990 static val* varonce8;
2991 val* var9 /* : String */;
2992 char* var10 /* : NativeString */;
2993 long var11 /* : Int */;
2994 val* var12 /* : String */;
2995 val* var13 /* : String */;
2996 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2997 var2 = 3;
2998 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2999 var_ = var1;
3000 if (varonce) {
3001 var3 = varonce;
3002 } else {
3003 var4 = "COLOR_";
3004 var5 = 6;
3005 var6 = string__NativeString__to_s_with_length(var4, var5);
3006 var3 = var6;
3007 varonce = var3;
3008 }
3009 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
3010 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on <self:MType>*/;
3011 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
3012 if (varonce8) {
3013 var9 = varonce8;
3014 } else {
3015 var10 = "";
3016 var11 = 0;
3017 var12 = string__NativeString__to_s_with_length(var10, var11);
3018 var9 = var12;
3019 varonce8 = var9;
3020 }
3021 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
3022 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3023 var = var13;
3024 goto RET_LABEL;
3025 RET_LABEL:;
3026 return var;
3027 }
3028 /* method separate_compiler#MType#const_color for (self: Object): String */
3029 val* VIRTUAL_separate_compiler__MType__const_color(val* self) {
3030 val* var /* : String */;
3031 val* var1 /* : String */;
3032 var1 = separate_compiler__MType__const_color(self);
3033 var = var1;
3034 RET_LABEL:;
3035 return var;
3036 }
3037 /* method separate_compiler#MType#c_instance_name for (self: MType): String */
3038 val* separate_compiler__MType__c_instance_name(val* self) {
3039 val* var /* : String */;
3040 val* var1 /* : String */;
3041 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on <self:MType>*/;
3042 var = var1;
3043 goto RET_LABEL;
3044 RET_LABEL:;
3045 return var;
3046 }
3047 /* method separate_compiler#MType#c_instance_name for (self: Object): String */
3048 val* VIRTUAL_separate_compiler__MType__c_instance_name(val* self) {
3049 val* var /* : String */;
3050 val* var1 /* : String */;
3051 var1 = separate_compiler__MType__c_instance_name(self);
3052 var = var1;
3053 RET_LABEL:;
3054 return var;
3055 }
3056 /* method separate_compiler#MClassType#c_instance_name for (self: MClassType): String */
3057 val* separate_compiler__MClassType__c_instance_name(val* self) {
3058 val* var /* : String */;
3059 val* var1 /* : MClass */;
3060 val* var2 /* : String */;
3061 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3062 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var1) /* c_instance_name on <var1:MClass>*/;
3063 var = var2;
3064 goto RET_LABEL;
3065 RET_LABEL:;
3066 return var;
3067 }
3068 /* method separate_compiler#MClassType#c_instance_name for (self: Object): String */
3069 val* VIRTUAL_separate_compiler__MClassType__c_instance_name(val* self) {
3070 val* var /* : String */;
3071 val* var1 /* : String */;
3072 var1 = separate_compiler__MClassType__c_instance_name(self);
3073 var = var1;
3074 RET_LABEL:;
3075 return var;
3076 }
3077 /* method separate_compiler#MClass#c_instance_name for (self: MClass): String */
3078 val* separate_compiler__MClass__c_instance_name(val* self) {
3079 val* var /* : String */;
3080 val* var1 /* : MClassKind */;
3081 val* var2 /* : MClassKind */;
3082 short int var3 /* : Bool */;
3083 static val* varonce;
3084 val* var4 /* : String */;
3085 char* var5 /* : NativeString */;
3086 long var6 /* : Int */;
3087 val* var7 /* : String */;
3088 val* var8 /* : String */;
3089 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__kind]))(self) /* kind on <self:MClass>*/;
3090 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:MClass>*/;
3091 var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var2) /* == on <var1:MClassKind>*/;
3092 if (var3){
3093 if (varonce) {
3094 var4 = varonce;
3095 } else {
3096 var5 = "kernel__Pointer";
3097 var6 = 15;
3098 var7 = string__NativeString__to_s_with_length(var5, var6);
3099 var4 = var7;
3100 varonce = var4;
3101 }
3102 var = var4;
3103 goto RET_LABEL;
3104 } else {
3105 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MClass__c_name]))(self) /* c_name on <self:MClass>*/;
3106 var = var8;
3107 goto RET_LABEL;
3108 }
3109 RET_LABEL:;
3110 return var;
3111 }
3112 /* method separate_compiler#MClass#c_instance_name for (self: Object): String */
3113 val* VIRTUAL_separate_compiler__MClass__c_instance_name(val* self) {
3114 val* var /* : String */;
3115 val* var1 /* : String */;
3116 var1 = separate_compiler__MClass__c_instance_name(self);
3117 var = var1;
3118 RET_LABEL:;
3119 return var;
3120 }
3121 /* method separate_compiler#MProperty#const_color for (self: MProperty): String */
3122 val* separate_compiler__MProperty__const_color(val* self) {
3123 val* var /* : String */;
3124 val* var1 /* : Array[Object] */;
3125 long var2 /* : Int */;
3126 val* var_ /* var : Array[Object] */;
3127 static val* varonce;
3128 val* var3 /* : String */;
3129 char* var4 /* : NativeString */;
3130 long var5 /* : Int */;
3131 val* var6 /* : String */;
3132 val* var7 /* : String */;
3133 static val* varonce8;
3134 val* var9 /* : String */;
3135 char* var10 /* : NativeString */;
3136 long var11 /* : Int */;
3137 val* var12 /* : String */;
3138 val* var13 /* : String */;
3139 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
3140 var2 = 3;
3141 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
3142 var_ = var1;
3143 if (varonce) {
3144 var3 = varonce;
3145 } else {
3146 var4 = "COLOR_";
3147 var5 = 6;
3148 var6 = string__NativeString__to_s_with_length(var4, var5);
3149 var3 = var6;
3150 varonce = var3;
3151 }
3152 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
3153 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MProperty__c_name]))(self) /* c_name on <self:MProperty>*/;
3154 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
3155 if (varonce8) {
3156 var9 = varonce8;
3157 } else {
3158 var10 = "";
3159 var11 = 0;
3160 var12 = string__NativeString__to_s_with_length(var10, var11);
3161 var9 = var12;
3162 varonce8 = var9;
3163 }
3164 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
3165 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3166 var = var13;
3167 goto RET_LABEL;
3168 RET_LABEL:;
3169 return var;
3170 }
3171 /* method separate_compiler#MProperty#const_color for (self: Object): String */
3172 val* VIRTUAL_separate_compiler__MProperty__const_color(val* self) {
3173 val* var /* : String */;
3174 val* var1 /* : String */;
3175 var1 = separate_compiler__MProperty__const_color(self);
3176 var = var1;
3177 RET_LABEL:;
3178 return var;
3179 }
3180 /* method separate_compiler#MPropDef#const_color for (self: MPropDef): String */
3181 val* separate_compiler__MPropDef__const_color(val* self) {
3182 val* var /* : String */;
3183 val* var1 /* : Array[Object] */;
3184 long var2 /* : Int */;
3185 val* var_ /* var : Array[Object] */;
3186 static val* varonce;
3187 val* var3 /* : String */;
3188 char* var4 /* : NativeString */;
3189 long var5 /* : Int */;
3190 val* var6 /* : String */;
3191 val* var7 /* : String */;
3192 static val* varonce8;
3193 val* var9 /* : String */;
3194 char* var10 /* : NativeString */;
3195 long var11 /* : Int */;
3196 val* var12 /* : String */;
3197 val* var13 /* : String */;
3198 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
3199 var2 = 3;
3200 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
3201 var_ = var1;
3202 if (varonce) {
3203 var3 = varonce;
3204 } else {
3205 var4 = "COLOR_";
3206 var5 = 6;
3207 var6 = string__NativeString__to_s_with_length(var4, var5);
3208 var3 = var6;
3209 varonce = var3;
3210 }
3211 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
3212 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(self) /* c_name on <self:MPropDef>*/;
3213 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
3214 if (varonce8) {
3215 var9 = varonce8;
3216 } else {
3217 var10 = "";
3218 var11 = 0;
3219 var12 = string__NativeString__to_s_with_length(var10, var11);
3220 var9 = var12;
3221 varonce8 = var9;
3222 }
3223 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
3224 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3225 var = var13;
3226 goto RET_LABEL;
3227 RET_LABEL:;
3228 return var;
3229 }
3230 /* method separate_compiler#MPropDef#const_color for (self: Object): String */
3231 val* VIRTUAL_separate_compiler__MPropDef__const_color(val* self) {
3232 val* var /* : String */;
3233 val* var1 /* : String */;
3234 var1 = separate_compiler__MPropDef__const_color(self);
3235 var = var1;
3236 RET_LABEL:;
3237 return var;
3238 }