benchs: provide .gitignore to ignore generated files
[nit.git] / c_src / separate_compiler.sep.3.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: SeparateRuntimeFunction, AbstractCompiler) */
3 void separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
4 short int var /* : Bool */;
5 int cltype;
6 int idtype;
7 const struct type* type_struct;
8 const char* var_class_name;
9 val* var_compiler /* var compiler: AbstractCompiler */;
10 val* var1 /* : MMethodDef */;
11 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
12 val* var2 /* : MMethodDef */;
13 val* var3 /* : MClassDef */;
14 val* var4 /* : MClassType */;
15 val* var_recv /* var recv: MClassType */;
16 val* var5 /* : AbstractCompilerVisitor */;
17 val* var_v /* var v: AbstractCompilerVisitor */;
18 val* var6 /* : RuntimeVariable */;
19 static val* varonce;
20 val* var7 /* : String */;
21 char* var8 /* : NativeString */;
22 long var9 /* : Int */;
23 val* var10 /* : String */;
24 val* var_selfvar /* var selfvar: RuntimeVariable */;
25 val* var11 /* : Array[RuntimeVariable] */;
26 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
27 val* var12 /* : Frame */;
28 val* var_frame /* var frame: Frame */;
29 val* var13 /* : nullable MSignature */;
30 val* var14 /* : MClassDef */;
31 val* var15 /* : MClassType */;
32 val* var16 /* : MClassDef */;
33 val* var17 /* : MClassType */;
34 val* var18 /* : MClassDef */;
35 val* var19 /* : MModule */;
36 short int var20 /* : Bool */;
37 val* var21 /* : MType */;
38 val* var_msignature /* var msignature: MSignature */;
39 val* var22 /* : Buffer */;
40 val* var_sig /* var sig: Buffer */;
41 val* var23 /* : Buffer */;
42 val* var_comment /* var comment: Buffer */;
43 val* var24 /* : nullable MType */;
44 val* var_ret /* var ret: nullable MType */;
45 val* var25 /* : null */;
46 short int var26 /* : Bool */;
47 val* var27 /* : String */;
48 static val* varonce28;
49 val* var29 /* : String */;
50 char* var30 /* : NativeString */;
51 long var31 /* : Int */;
52 val* var32 /* : String */;
53 val* var33 /* : Array[Object] */;
54 long var34 /* : Int */;
55 val* var35 /* : NativeArray[Object] */;
56 val* var36 /* : String */;
57 val* var37 /* : MProperty */;
58 short int var38 /* : Bool */;
59 val* var39 /* : String */;
60 static val* varonce40;
61 val* var41 /* : String */;
62 char* var42 /* : NativeString */;
63 long var43 /* : Int */;
64 val* var44 /* : String */;
65 val* var45 /* : Array[Object] */;
66 long var46 /* : Int */;
67 val* var47 /* : NativeArray[Object] */;
68 val* var48 /* : String */;
69 static val* varonce49;
70 val* var50 /* : String */;
71 char* var51 /* : NativeString */;
72 long var52 /* : Int */;
73 val* var53 /* : String */;
74 val* var54 /* : String */;
75 static val* varonce55;
76 val* var56 /* : String */;
77 char* var57 /* : NativeString */;
78 long var58 /* : Int */;
79 val* var59 /* : String */;
80 val* var60 /* : MType */;
81 val* var61 /* : String */;
82 static val* varonce62;
83 val* var63 /* : String */;
84 char* var64 /* : NativeString */;
85 long var65 /* : Int */;
86 val* var66 /* : String */;
87 val* var67 /* : Array[Object] */;
88 long var68 /* : Int */;
89 val* var69 /* : NativeArray[Object] */;
90 val* var70 /* : String */;
91 static val* varonce71;
92 val* var72 /* : String */;
93 char* var73 /* : NativeString */;
94 long var74 /* : Int */;
95 val* var75 /* : String */;
96 static val* varonce76;
97 val* var77 /* : String */;
98 char* var78 /* : NativeString */;
99 long var79 /* : Int */;
100 val* var80 /* : String */;
101 val* var81 /* : MType */;
102 val* var82 /* : Array[Object] */;
103 long var83 /* : Int */;
104 val* var84 /* : NativeArray[Object] */;
105 val* var85 /* : String */;
106 val* var86 /* : Range[Int] */;
107 long var87 /* : Int */;
108 long var88 /* : Int */;
109 val* var89 /* : Discrete */;
110 val* var90 /* : Discrete */;
111 val* var91 /* : Iterator[nullable Object] */;
112 short int var92 /* : Bool */;
113 val* var93 /* : nullable Object */;
114 long var_i /* var i: Int */;
115 long var94 /* : Int */;
116 val* var95 /* : Array[MParameter] */;
117 val* var96 /* : nullable Object */;
118 val* var97 /* : MType */;
119 val* var_mtype /* var mtype: MType */;
120 long var98 /* : Int */;
121 short int var99 /* : Bool */;
122 short int var101 /* : Bool */;
123 static val* varonce102;
124 val* var103 /* : String */;
125 char* var104 /* : NativeString */;
126 long var105 /* : Int */;
127 val* var106 /* : String */;
128 val* var107 /* : MClass */;
129 val* var108 /* : Array[MType] */;
130 long var109 /* : Int */;
131 val* var110 /* : NativeArray[MType] */;
132 val* var111 /* : MClassType */;
133 static val* varonce112;
134 val* var113 /* : String */;
135 char* var114 /* : NativeString */;
136 long var115 /* : Int */;
137 val* var116 /* : String */;
138 val* var117 /* : Array[Object] */;
139 long var118 /* : Int */;
140 val* var119 /* : NativeArray[Object] */;
141 val* var120 /* : String */;
142 static val* varonce121;
143 val* var122 /* : String */;
144 char* var123 /* : NativeString */;
145 long var124 /* : Int */;
146 val* var125 /* : String */;
147 val* var126 /* : String */;
148 static val* varonce127;
149 val* var128 /* : String */;
150 char* var129 /* : NativeString */;
151 long var130 /* : Int */;
152 val* var131 /* : String */;
153 val* var132 /* : Array[Object] */;
154 long var133 /* : Int */;
155 val* var134 /* : NativeArray[Object] */;
156 val* var135 /* : Object */;
157 val* var136 /* : String */;
158 val* var137 /* : RuntimeVariable */;
159 val* var138 /* : Array[Object] */;
160 long var139 /* : Int */;
161 val* var_ /* var : Array[Object] */;
162 static val* varonce140;
163 val* var141 /* : String */;
164 char* var142 /* : NativeString */;
165 long var143 /* : Int */;
166 val* var144 /* : String */;
167 val* var145 /* : nullable Object */;
168 static val* varonce146;
169 val* var147 /* : String */;
170 char* var148 /* : NativeString */;
171 long var149 /* : Int */;
172 val* var150 /* : String */;
173 val* var151 /* : String */;
174 val* var_argvar /* var argvar: RuntimeVariable */;
175 static val* varonce152;
176 val* var153 /* : String */;
177 char* var154 /* : NativeString */;
178 long var155 /* : Int */;
179 val* var156 /* : String */;
180 static val* varonce157;
181 val* var158 /* : String */;
182 char* var159 /* : NativeString */;
183 long var160 /* : Int */;
184 val* var161 /* : String */;
185 val* var162 /* : null */;
186 short int var163 /* : Bool */;
187 static val* varonce164;
188 val* var165 /* : String */;
189 char* var166 /* : NativeString */;
190 long var167 /* : Int */;
191 val* var168 /* : String */;
192 val* var169 /* : Array[Object] */;
193 long var170 /* : Int */;
194 val* var171 /* : NativeArray[Object] */;
195 val* var172 /* : String */;
196 val* var173 /* : String */;
197 static val* varonce174;
198 val* var175 /* : String */;
199 char* var176 /* : NativeString */;
200 long var177 /* : Int */;
201 val* var178 /* : String */;
202 val* var179 /* : Array[Object] */;
203 long var180 /* : Int */;
204 val* var181 /* : NativeArray[Object] */;
205 val* var182 /* : String */;
206 static val* varonce183;
207 val* var184 /* : String */;
208 char* var185 /* : NativeString */;
209 long var186 /* : Int */;
210 val* var187 /* : String */;
211 static val* varonce188;
212 val* var189 /* : String */;
213 char* var190 /* : NativeString */;
214 long var191 /* : Int */;
215 val* var192 /* : String */;
216 static val* varonce193;
217 val* var194 /* : String */;
218 char* var195 /* : NativeString */;
219 long var196 /* : Int */;
220 val* var197 /* : String */;
221 val* var198 /* : Array[Object] */;
222 long var199 /* : Int */;
223 val* var200 /* : NativeArray[Object] */;
224 val* var201 /* : String */;
225 static val* varonce202;
226 val* var203 /* : String */;
227 char* var204 /* : NativeString */;
228 long var205 /* : Int */;
229 val* var206 /* : String */;
230 val* var207 /* : Array[Object] */;
231 long var208 /* : Int */;
232 val* var209 /* : NativeArray[Object] */;
233 val* var210 /* : String */;
234 val* var211 /* : null */;
235 short int var212 /* : Bool */;
236 val* var213 /* : RuntimeVariable */;
237 static val* varonce214;
238 val* var215 /* : String */;
239 char* var216 /* : NativeString */;
240 long var217 /* : Int */;
241 val* var218 /* : String */;
242 val* var219 /* : String */;
243 val* var220 /* : nullable Object */;
244 val* var221 /* : MType */;
245 short int var222 /* : Bool */;
246 val* var223 /* : nullable RuntimeVariable */;
247 val* var224 /* : nullable String */;
248 static val* varonce225;
249 val* var226 /* : String */;
250 char* var227 /* : NativeString */;
251 long var228 /* : Int */;
252 val* var229 /* : String */;
253 val* var230 /* : Array[Object] */;
254 long var231 /* : Int */;
255 val* var232 /* : NativeArray[Object] */;
256 val* var233 /* : String */;
257 val* var234 /* : null */;
258 short int var235 /* : Bool */;
259 static val* varonce236;
260 val* var237 /* : String */;
261 char* var238 /* : NativeString */;
262 long var239 /* : Int */;
263 val* var240 /* : String */;
264 val* var241 /* : nullable RuntimeVariable */;
265 static val* varonce242;
266 val* var243 /* : String */;
267 char* var244 /* : NativeString */;
268 long var245 /* : Int */;
269 val* var246 /* : String */;
270 val* var247 /* : Array[Object] */;
271 long var248 /* : Int */;
272 val* var249 /* : NativeArray[Object] */;
273 val* var250 /* : String */;
274 static val* varonce251;
275 val* var252 /* : String */;
276 char* var253 /* : NativeString */;
277 long var254 /* : Int */;
278 val* var255 /* : String */;
279 val* var256 /* : String */;
280 static val* varonce257;
281 val* var258 /* : String */;
282 char* var259 /* : NativeString */;
283 long var260 /* : Int */;
284 val* var261 /* : String */;
285 long var262 /* : Int */;
286 short int var263 /* : Bool */;
287 short int var264 /* : Bool */;
288 val* var265 /* : HashMap[String, String] */;
289 val* var266 /* : String */;
290 val* var267 /* : MClassDef */;
291 val* var268 /* : MModule */;
292 val* var269 /* : String */;
293 static val* varonce270;
294 val* var271 /* : String */;
295 char* var272 /* : NativeString */;
296 long var273 /* : Int */;
297 val* var274 /* : String */;
298 val* var275 /* : MClassDef */;
299 val* var276 /* : MClass */;
300 val* var277 /* : String */;
301 static val* varonce278;
302 val* var279 /* : String */;
303 char* var280 /* : NativeString */;
304 long var281 /* : Int */;
305 val* var282 /* : String */;
306 val* var283 /* : MProperty */;
307 val* var284 /* : String */;
308 static val* varonce285;
309 val* var286 /* : String */;
310 char* var287 /* : NativeString */;
311 long var288 /* : Int */;
312 val* var289 /* : String */;
313 val* var290 /* : Location */;
314 val* var291 /* : nullable SourceFile */;
315 val* var292 /* : String */;
316 static val* varonce293;
317 val* var294 /* : String */;
318 char* var295 /* : NativeString */;
319 long var296 /* : Int */;
320 val* var297 /* : String */;
321 val* var298 /* : Location */;
322 long var299 /* : Int */;
323 static val* varonce300;
324 val* var301 /* : String */;
325 char* var302 /* : NativeString */;
326 long var303 /* : Int */;
327 val* var304 /* : String */;
328 val* var305 /* : Array[Object] */;
329 long var306 /* : Int */;
330 val* var307 /* : NativeArray[Object] */;
331 val* var308 /* : Object */;
332 val* var309 /* : String */;
333 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
334 /* <p0:AbstractCompiler> isa COMPILER */
335 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
336 cltype = type_struct->color;
337 idtype = type_struct->id;
338 if(cltype >= p0->type->table_size) {
339 var = 0;
340 } else {
341 var = p0->type->type_table[cltype] == idtype;
342 }
343 if (!var) {
344 var_class_name = p0 == NULL ? "null" : p0->type->name;
345 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
346 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1619);
347 show_backtrace(1);
348 }
349 var_compiler = p0;
350 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
351 var_mmethoddef = var1;
352 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
353 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MMethodDef>*/;
354 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
355 var_recv = var4;
356 var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
357 var_v = var5;
358 var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
359 if (varonce) {
360 var7 = varonce;
361 } else {
362 var8 = "self";
363 var9 = 4;
364 var10 = string__NativeString__to_s_with_length(var8, var9);
365 var7 = var10;
366 varonce = var7;
367 }
368 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var_recv, var_recv) /* init on <var6:RuntimeVariable>*/;
369 var_selfvar = var6;
370 var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
371 ((void (*)(val*))(var11->class->vft[COLOR_array__Array__init]))(var11) /* init on <var11:Array[RuntimeVariable]>*/;
372 var_arguments = var11;
373 var12 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
374 ((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>*/;
375 var_frame = var12;
376 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
377 var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
378 var14 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
379 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model__MClassDef__bound_mtype]))(var14) /* bound_mtype on <var14:MClassDef>*/;
380 var16 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
381 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on <var16:MClassDef>*/;
382 var18 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
383 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mmodule]))(var18) /* mmodule on <var18:MClassDef>*/;
384 var20 = 1;
385 if (var13 == NULL) {
386 fprintf(stderr, "Runtime error: %s", "Reciever is null");
387 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1630);
388 show_backtrace(1);
389 } else {
390 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>*/;
391 }
392 var_msignature = var21;
393 var22 = NEW_string__Buffer(&type_string__Buffer);
394 ((void (*)(val*))(var22->class->vft[COLOR_string__Buffer__init]))(var22) /* init on <var22:Buffer>*/;
395 var_sig = var22;
396 var23 = NEW_string__Buffer(&type_string__Buffer);
397 ((void (*)(val*))(var23->class->vft[COLOR_string__Buffer__init]))(var23) /* init on <var23:Buffer>*/;
398 var_comment = var23;
399 var24 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
400 var_ret = var24;
401 var25 = NULL;
402 if (var_ret == NULL) {
403 var26 = 0; /* is null */
404 } else {
405 var26 = 1; /* arg is null and recv is not */
406 }
407 if (var26){
408 var27 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
409 if (varonce28) {
410 var29 = varonce28;
411 } else {
412 var30 = " ";
413 var31 = 1;
414 var32 = string__NativeString__to_s_with_length(var30, var31);
415 var29 = var32;
416 varonce28 = var29;
417 }
418 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
419 { /* var33 = array_instance Array[Object] */
420 var34 = 2;
421 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
422 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var27;
423 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var29;
424 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
425 }
426 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
427 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var36) /* append on <var_sig:Buffer>*/;
428 } else {
429 var37 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
430 var38 = ((short int (*)(val*))(var37->class->vft[COLOR_model__MMethod__is_new]))(var37) /* is_new on <var37:MProperty(MMethod)>*/;
431 if (var38){
432 var_ret = var_recv;
433 var39 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
434 if (varonce40) {
435 var41 = varonce40;
436 } else {
437 var42 = " ";
438 var43 = 1;
439 var44 = string__NativeString__to_s_with_length(var42, var43);
440 var41 = var44;
441 varonce40 = var41;
442 }
443 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
444 { /* var45 = array_instance Array[Object] */
445 var46 = 2;
446 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
447 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var39;
448 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var41;
449 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
450 }
451 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
452 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var48) /* append on <var_sig:Buffer>*/;
453 } else {
454 if (varonce49) {
455 var50 = varonce49;
456 } else {
457 var51 = "void ";
458 var52 = 5;
459 var53 = string__NativeString__to_s_with_length(var51, var52);
460 var50 = var53;
461 varonce49 = var50;
462 }
463 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var50) /* append on <var_sig:Buffer>*/;
464 }
465 }
466 var54 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
467 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on <var_sig:Buffer>*/;
468 if (varonce55) {
469 var56 = varonce55;
470 } else {
471 var57 = "(";
472 var58 = 1;
473 var59 = string__NativeString__to_s_with_length(var57, var58);
474 var56 = var59;
475 varonce55 = var56;
476 }
477 var60 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
478 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_compiler__MType__ctype]))(var60) /* ctype on <var60:MType>*/;
479 if (varonce62) {
480 var63 = varonce62;
481 } else {
482 var64 = " ";
483 var65 = 1;
484 var66 = string__NativeString__to_s_with_length(var64, var65);
485 var63 = var66;
486 varonce62 = var63;
487 }
488 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
489 { /* var67 = array_instance Array[Object] */
490 var68 = 4;
491 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
492 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var56;
493 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var61;
494 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var63;
495 ((struct instance_array__NativeArray*)var69)->values[3] = (val*) var_selfvar;
496 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
497 }
498 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
499 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var70) /* append on <var_sig:Buffer>*/;
500 if (varonce71) {
501 var72 = varonce71;
502 } else {
503 var73 = "(";
504 var74 = 1;
505 var75 = string__NativeString__to_s_with_length(var73, var74);
506 var72 = var75;
507 varonce71 = var72;
508 }
509 if (varonce76) {
510 var77 = varonce76;
511 } else {
512 var78 = ": ";
513 var79 = 2;
514 var80 = string__NativeString__to_s_with_length(var78, var79);
515 var77 = var80;
516 varonce76 = var77;
517 }
518 var81 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
519 var82 = NEW_array__Array(&type_array__Arraykernel__Object);
520 { /* var82 = array_instance Array[Object] */
521 var83 = 4;
522 var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object);
523 ((struct instance_array__NativeArray*)var84)->values[0] = (val*) var72;
524 ((struct instance_array__NativeArray*)var84)->values[1] = (val*) var_selfvar;
525 ((struct instance_array__NativeArray*)var84)->values[2] = (val*) var77;
526 ((struct instance_array__NativeArray*)var84)->values[3] = (val*) var81;
527 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[Object]>*/;
528 }
529 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on <var82:Array[Object]>*/;
530 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var85) /* append on <var_comment:Buffer>*/;
531 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
532 var86 = NEW_range__Range(&type_range__Rangekernel__Int);
533 var87 = 0;
534 var88 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
535 var89 = BOX_kernel__Int(var87); /* autobox from Int to Discrete */
536 var90 = BOX_kernel__Int(var88); /* autobox from Int to Discrete */
537 ((void (*)(val*, val*, val*))(var86->class->vft[COLOR_range__Range__without_last]))(var86, var89, var90) /* without_last on <var86:Range[Int]>*/;
538 var91 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Collection__iterator]))(var86) /* iterator on <var86:Range[Int]>*/;
539 for(;;) {
540 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[nullable Object]>*/;
541 if(!var92) break;
542 var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on <var91:Iterator[nullable Object]>*/;
543 var94 = ((struct instance_kernel__Int*)var93)->value; /* autounbox from nullable Object to Int */;
544 var_i = var94;
545 var95 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
546 var96 = ((val* (*)(val*, long))(var95->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var95, var_i) /* [] on <var95:Array[MParameter]>*/;
547 var97 = ((val* (*)(val*))(var96->class->vft[COLOR_model__MParameter__mtype]))(var96) /* mtype on <var96:nullable Object(MParameter)>*/;
548 var_mtype = var97;
549 var98 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
550 { /* Inline kernel#Int#== (var_i,var98) */
551 var101 = var_i == var98;
552 var99 = var101;
553 goto RET_LABEL100;
554 RET_LABEL100:(void)0;
555 }
556 if (var99){
557 if (varonce102) {
558 var103 = varonce102;
559 } else {
560 var104 = "Array";
561 var105 = 5;
562 var106 = string__NativeString__to_s_with_length(var104, var105);
563 var103 = var106;
564 varonce102 = var103;
565 }
566 var107 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var103) /* get_class on <var_v:AbstractCompilerVisitor>*/;
567 var108 = NEW_array__Array(&type_array__Arraymodel__MType);
568 { /* var108 = array_instance Array[MType] */
569 var109 = 1;
570 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraymodel__MType);
571 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_mtype;
572 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[MType]>*/;
573 }
574 var111 = ((val* (*)(val*, val*))(var107->class->vft[COLOR_model__MClass__get_mtype]))(var107, var108) /* get_mtype on <var107:MClass>*/;
575 var_mtype = var111;
576 } else {
577 }
578 if (varonce112) {
579 var113 = varonce112;
580 } else {
581 var114 = ", ";
582 var115 = 2;
583 var116 = string__NativeString__to_s_with_length(var114, var115);
584 var113 = var116;
585 varonce112 = var113;
586 }
587 var117 = NEW_array__Array(&type_array__Arraykernel__Object);
588 { /* var117 = array_instance Array[Object] */
589 var118 = 2;
590 var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
591 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var113;
592 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_mtype;
593 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
594 }
595 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
596 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var120) /* append on <var_comment:Buffer>*/;
597 if (varonce121) {
598 var122 = varonce121;
599 } else {
600 var123 = ", ";
601 var124 = 2;
602 var125 = string__NativeString__to_s_with_length(var123, var124);
603 var122 = var125;
604 varonce121 = var122;
605 }
606 var126 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
607 if (varonce127) {
608 var128 = varonce127;
609 } else {
610 var129 = " p";
611 var130 = 2;
612 var131 = string__NativeString__to_s_with_length(var129, var130);
613 var128 = var131;
614 varonce127 = var128;
615 }
616 var132 = NEW_array__Array(&type_array__Arraykernel__Object);
617 { /* var132 = array_instance Array[Object] */
618 var133 = 4;
619 var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object);
620 ((struct instance_array__NativeArray*)var134)->values[0] = (val*) var122;
621 ((struct instance_array__NativeArray*)var134)->values[1] = (val*) var126;
622 ((struct instance_array__NativeArray*)var134)->values[2] = (val*) var128;
623 var135 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
624 ((struct instance_array__NativeArray*)var134)->values[3] = (val*) var135;
625 ((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on <var132:Array[Object]>*/;
626 }
627 var136 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on <var132:Array[Object]>*/;
628 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var136) /* append on <var_sig:Buffer>*/;
629 var137 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
630 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
631 var139 = 3;
632 ((void (*)(val*, long))(var138->class->vft[COLOR_array__Array__with_capacity]))(var138, var139) /* with_capacity on <var138:Array[Object]>*/;
633 var_ = var138;
634 if (varonce140) {
635 var141 = varonce140;
636 } else {
637 var142 = "p";
638 var143 = 1;
639 var144 = string__NativeString__to_s_with_length(var142, var143);
640 var141 = var144;
641 varonce140 = var141;
642 }
643 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var141) /* add on <var_:Array[Object]>*/;
644 var145 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
645 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on <var_:Array[Object]>*/;
646 if (varonce146) {
647 var147 = varonce146;
648 } else {
649 var148 = "";
650 var149 = 0;
651 var150 = string__NativeString__to_s_with_length(var148, var149);
652 var147 = var150;
653 varonce146 = var147;
654 }
655 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var147) /* add on <var_:Array[Object]>*/;
656 var151 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
657 ((void (*)(val*, val*, val*, val*))(var137->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var137, var151, var_mtype, var_mtype) /* init on <var137:RuntimeVariable>*/;
658 var_argvar = var137;
659 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
660 CONTINUE_label: (void)0;
661 ((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on <var91:Iterator[nullable Object]>*/;
662 }
663 BREAK_label: (void)0;
664 if (varonce152) {
665 var153 = varonce152;
666 } else {
667 var154 = ")";
668 var155 = 1;
669 var156 = string__NativeString__to_s_with_length(var154, var155);
670 var153 = var156;
671 varonce152 = var153;
672 }
673 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var153) /* append on <var_sig:Buffer>*/;
674 if (varonce157) {
675 var158 = varonce157;
676 } else {
677 var159 = ")";
678 var160 = 1;
679 var161 = string__NativeString__to_s_with_length(var159, var160);
680 var158 = var161;
681 varonce157 = var158;
682 }
683 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var158) /* append on <var_comment:Buffer>*/;
684 var162 = NULL;
685 if (var_ret == NULL) {
686 var163 = 0; /* is null */
687 } else {
688 var163 = 1; /* arg is null and recv is not */
689 }
690 if (var163){
691 if (varonce164) {
692 var165 = varonce164;
693 } else {
694 var166 = ": ";
695 var167 = 2;
696 var168 = string__NativeString__to_s_with_length(var166, var167);
697 var165 = var168;
698 varonce164 = var165;
699 }
700 var169 = NEW_array__Array(&type_array__Arraykernel__Object);
701 { /* var169 = array_instance Array[Object] */
702 var170 = 2;
703 var171 = NEW_array__NativeArray(var170, &type_array__NativeArraykernel__Object);
704 ((struct instance_array__NativeArray*)var171)->values[0] = (val*) var165;
705 ((struct instance_array__NativeArray*)var171)->values[1] = (val*) var_ret;
706 ((void (*)(val*, val*, long))(var169->class->vft[COLOR_array__Array__with_native]))(var169, var171, var170) /* with_native on <var169:Array[Object]>*/;
707 }
708 var172 = ((val* (*)(val*))(var169->class->vft[COLOR_string__Object__to_s]))(var169) /* to_s on <var169:Array[Object]>*/;
709 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var172) /* append on <var_comment:Buffer>*/;
710 } else {
711 }
712 var173 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
713 if (varonce174) {
714 var175 = varonce174;
715 } else {
716 var176 = ";";
717 var177 = 1;
718 var178 = string__NativeString__to_s_with_length(var176, var177);
719 var175 = var178;
720 varonce174 = var175;
721 }
722 var179 = NEW_array__Array(&type_array__Arraykernel__Object);
723 { /* var179 = array_instance Array[Object] */
724 var180 = 2;
725 var181 = NEW_array__NativeArray(var180, &type_array__NativeArraykernel__Object);
726 ((struct instance_array__NativeArray*)var181)->values[0] = (val*) var_sig;
727 ((struct instance_array__NativeArray*)var181)->values[1] = (val*) var175;
728 ((void (*)(val*, val*, long))(var179->class->vft[COLOR_array__Array__with_native]))(var179, var181, var180) /* with_native on <var179:Array[Object]>*/;
729 }
730 var182 = ((val* (*)(val*))(var179->class->vft[COLOR_string__Object__to_s]))(var179) /* to_s on <var179:Array[Object]>*/;
731 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var173, var182) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
732 if (varonce183) {
733 var184 = varonce183;
734 } else {
735 var185 = "/* method ";
736 var186 = 10;
737 var187 = string__NativeString__to_s_with_length(var185, var186);
738 var184 = var187;
739 varonce183 = var184;
740 }
741 if (varonce188) {
742 var189 = varonce188;
743 } else {
744 var190 = " for ";
745 var191 = 5;
746 var192 = string__NativeString__to_s_with_length(var190, var191);
747 var189 = var192;
748 varonce188 = var189;
749 }
750 if (varonce193) {
751 var194 = varonce193;
752 } else {
753 var195 = " */";
754 var196 = 3;
755 var197 = string__NativeString__to_s_with_length(var195, var196);
756 var194 = var197;
757 varonce193 = var194;
758 }
759 var198 = NEW_array__Array(&type_array__Arraykernel__Object);
760 { /* var198 = array_instance Array[Object] */
761 var199 = 5;
762 var200 = NEW_array__NativeArray(var199, &type_array__NativeArraykernel__Object);
763 ((struct instance_array__NativeArray*)var200)->values[0] = (val*) var184;
764 ((struct instance_array__NativeArray*)var200)->values[1] = (val*) self;
765 ((struct instance_array__NativeArray*)var200)->values[2] = (val*) var189;
766 ((struct instance_array__NativeArray*)var200)->values[3] = (val*) var_comment;
767 ((struct instance_array__NativeArray*)var200)->values[4] = (val*) var194;
768 ((void (*)(val*, val*, long))(var198->class->vft[COLOR_array__Array__with_native]))(var198, var200, var199) /* with_native on <var198:Array[Object]>*/;
769 }
770 var201 = ((val* (*)(val*))(var198->class->vft[COLOR_string__Object__to_s]))(var198) /* to_s on <var198:Array[Object]>*/;
771 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var201) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
772 if (varonce202) {
773 var203 = varonce202;
774 } else {
775 var204 = " {";
776 var205 = 2;
777 var206 = string__NativeString__to_s_with_length(var204, var205);
778 var203 = var206;
779 varonce202 = var203;
780 }
781 var207 = NEW_array__Array(&type_array__Arraykernel__Object);
782 { /* var207 = array_instance Array[Object] */
783 var208 = 2;
784 var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object);
785 ((struct instance_array__NativeArray*)var209)->values[0] = (val*) var_sig;
786 ((struct instance_array__NativeArray*)var209)->values[1] = (val*) var203;
787 ((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on <var207:Array[Object]>*/;
788 }
789 var210 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on <var207:Array[Object]>*/;
790 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var210) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
791 var211 = NULL;
792 if (var_ret == NULL) {
793 var212 = 0; /* is null */
794 } else {
795 var212 = 1; /* arg is null and recv is not */
796 }
797 if (var212){
798 var213 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:AbstractCompilerVisitor>*/;
799 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var213) /* returnvar= on <var_frame:Frame>*/;
800 } else {
801 }
802 if (varonce214) {
803 var215 = varonce214;
804 } else {
805 var216 = "RET_LABEL";
806 var217 = 9;
807 var218 = string__NativeString__to_s_with_length(var216, var217);
808 var215 = var218;
809 varonce214 = var215;
810 }
811 var219 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var215) /* get_name on <var_v:AbstractCompilerVisitor>*/;
812 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var219) /* returnlabel= on <var_frame:Frame>*/;
813 var220 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
814 var221 = ((val* (*)(val*))(var220->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var220) /* mtype on <var220:nullable Object(RuntimeVariable)>*/;
815 var222 = ((short int (*)(val*, val*))(var_recv->class->vft[COLOR_kernel__Object___33d_61d]))(var_recv, var221) /* != on <var_recv:MClassType>*/;
816 if (var222){
817 } else {
818 }
819 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>*/;
820 var223;
821 var224 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
822 if (var224 == NULL) {
823 fprintf(stderr, "Runtime error: %s", "Cast failed");
824 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1676);
825 show_backtrace(1);
826 }
827 if (varonce225) {
828 var226 = varonce225;
829 } else {
830 var227 = ":;";
831 var228 = 2;
832 var229 = string__NativeString__to_s_with_length(var227, var228);
833 var226 = var229;
834 varonce225 = var226;
835 }
836 var230 = NEW_array__Array(&type_array__Arraykernel__Object);
837 { /* var230 = array_instance Array[Object] */
838 var231 = 2;
839 var232 = NEW_array__NativeArray(var231, &type_array__NativeArraykernel__Object);
840 ((struct instance_array__NativeArray*)var232)->values[0] = (val*) var224;
841 ((struct instance_array__NativeArray*)var232)->values[1] = (val*) var226;
842 ((void (*)(val*, val*, long))(var230->class->vft[COLOR_array__Array__with_native]))(var230, var232, var231) /* with_native on <var230:Array[Object]>*/;
843 }
844 var233 = ((val* (*)(val*))(var230->class->vft[COLOR_string__Object__to_s]))(var230) /* to_s on <var230:Array[Object]>*/;
845 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var233) /* add on <var_v:AbstractCompilerVisitor>*/;
846 var234 = NULL;
847 if (var_ret == NULL) {
848 var235 = 0; /* is null */
849 } else {
850 var235 = 1; /* arg is null and recv is not */
851 }
852 if (var235){
853 if (varonce236) {
854 var237 = varonce236;
855 } else {
856 var238 = "return ";
857 var239 = 7;
858 var240 = string__NativeString__to_s_with_length(var238, var239);
859 var237 = var240;
860 varonce236 = var237;
861 }
862 var241 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
863 if (var241 == NULL) {
864 fprintf(stderr, "Runtime error: %s", "Cast failed");
865 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1678);
866 show_backtrace(1);
867 }
868 if (varonce242) {
869 var243 = varonce242;
870 } else {
871 var244 = ";";
872 var245 = 1;
873 var246 = string__NativeString__to_s_with_length(var244, var245);
874 var243 = var246;
875 varonce242 = var243;
876 }
877 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
878 { /* var247 = array_instance Array[Object] */
879 var248 = 3;
880 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
881 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var237;
882 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var241;
883 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
884 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
885 }
886 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
887 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var250) /* add on <var_v:AbstractCompilerVisitor>*/;
888 } else {
889 }
890 if (varonce251) {
891 var252 = varonce251;
892 } else {
893 var253 = "}";
894 var254 = 1;
895 var255 = string__NativeString__to_s_with_length(var253, var254);
896 var252 = var255;
897 varonce251 = var252;
898 }
899 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var252) /* add on <var_v:AbstractCompilerVisitor>*/;
900 var256 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
901 if (varonce257) {
902 var258 = varonce257;
903 } else {
904 var259 = "VIRTUAL";
905 var260 = 7;
906 var261 = string__NativeString__to_s_with_length(var259, var260);
907 var258 = var261;
908 varonce257 = var258;
909 }
910 var262 = 0;
911 var263 = ((short int (*)(val*, val*, long))(var256->class->vft[COLOR_string__AbstractString__has_substring]))(var256, var258, var262) /* has_substring on <var256:String>*/;
912 var264 = !var263;
913 if (var264){
914 var265 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on <var_compiler:AbstractCompiler>*/;
915 var266 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
916 var267 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
917 var268 = ((val* (*)(val*))(var267->class->vft[COLOR_model__MClassDef__mmodule]))(var267) /* mmodule on <var267:MClassDef>*/;
918 var269 = ((val* (*)(val*))(var268->class->vft[COLOR_mmodule__MModule__name]))(var268) /* name on <var268:MModule>*/;
919 if (varonce270) {
920 var271 = varonce270;
921 } else {
922 var272 = "::";
923 var273 = 2;
924 var274 = string__NativeString__to_s_with_length(var272, var273);
925 var271 = var274;
926 varonce270 = var271;
927 }
928 var275 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
929 var276 = ((val* (*)(val*))(var275->class->vft[COLOR_model__MClassDef__mclass]))(var275) /* mclass on <var275:MClassDef>*/;
930 var277 = ((val* (*)(val*))(var276->class->vft[COLOR_model__MClass__name]))(var276) /* name on <var276:MClass>*/;
931 if (varonce278) {
932 var279 = varonce278;
933 } else {
934 var280 = "::";
935 var281 = 2;
936 var282 = string__NativeString__to_s_with_length(var280, var281);
937 var279 = var282;
938 varonce278 = var279;
939 }
940 var283 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
941 var284 = ((val* (*)(val*))(var283->class->vft[COLOR_model__MProperty__name]))(var283) /* name on <var283:MProperty(MMethod)>*/;
942 if (varonce285) {
943 var286 = varonce285;
944 } else {
945 var287 = " (";
946 var288 = 2;
947 var289 = string__NativeString__to_s_with_length(var287, var288);
948 var286 = var289;
949 varonce285 = var286;
950 }
951 var290 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
952 var291 = ((val* (*)(val*))(var290->class->vft[COLOR_location__Location__file]))(var290) /* file on <var290:Location>*/;
953 if (var291 == NULL) {
954 fprintf(stderr, "Runtime error: %s", "Reciever is null");
955 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1681);
956 show_backtrace(1);
957 } else {
958 var292 = ((val* (*)(val*))(var291->class->vft[COLOR_location__SourceFile__filename]))(var291) /* filename on <var291:nullable SourceFile>*/;
959 }
960 if (varonce293) {
961 var294 = varonce293;
962 } else {
963 var295 = ":";
964 var296 = 1;
965 var297 = string__NativeString__to_s_with_length(var295, var296);
966 var294 = var297;
967 varonce293 = var294;
968 }
969 var298 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
970 var299 = ((long (*)(val*))(var298->class->vft[COLOR_location__Location__line_start]))(var298) /* line_start on <var298:Location>*/;
971 if (varonce300) {
972 var301 = varonce300;
973 } else {
974 var302 = ")";
975 var303 = 1;
976 var304 = string__NativeString__to_s_with_length(var302, var303);
977 var301 = var304;
978 varonce300 = var301;
979 }
980 var305 = NEW_array__Array(&type_array__Arraykernel__Object);
981 { /* var305 = array_instance Array[Object] */
982 var306 = 10;
983 var307 = NEW_array__NativeArray(var306, &type_array__NativeArraykernel__Object);
984 ((struct instance_array__NativeArray*)var307)->values[0] = (val*) var269;
985 ((struct instance_array__NativeArray*)var307)->values[1] = (val*) var271;
986 ((struct instance_array__NativeArray*)var307)->values[2] = (val*) var277;
987 ((struct instance_array__NativeArray*)var307)->values[3] = (val*) var279;
988 ((struct instance_array__NativeArray*)var307)->values[4] = (val*) var284;
989 ((struct instance_array__NativeArray*)var307)->values[5] = (val*) var286;
990 ((struct instance_array__NativeArray*)var307)->values[6] = (val*) var292;
991 ((struct instance_array__NativeArray*)var307)->values[7] = (val*) var294;
992 var308 = BOX_kernel__Int(var299); /* autobox from Int to Object */
993 ((struct instance_array__NativeArray*)var307)->values[8] = (val*) var308;
994 ((struct instance_array__NativeArray*)var307)->values[9] = (val*) var301;
995 ((void (*)(val*, val*, long))(var305->class->vft[COLOR_array__Array__with_native]))(var305, var307, var306) /* with_native on <var305:Array[Object]>*/;
996 }
997 var309 = ((val* (*)(val*))(var305->class->vft[COLOR_string__Object__to_s]))(var305) /* to_s on <var305:Array[Object]>*/;
998 ((void (*)(val*, val*, val*))(var265->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var265, var266, var309) /* []= on <var265:HashMap[String, String]>*/;
999 } else {
1000 }
1001 RET_LABEL:;
1002 }
1003 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
1004 void VIRTUAL_separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
1005 separate_compiler__SeparateRuntimeFunction__compile_to_c(self, p0);
1006 RET_LABEL:;
1007 }
1008 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: VirtualRuntimeFunction): String */
1009 val* separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
1010 val* var /* : String */;
1011 val* var1 /* : Array[Object] */;
1012 long var2 /* : Int */;
1013 val* var_ /* var : Array[Object] */;
1014 static val* varonce;
1015 val* var3 /* : String */;
1016 char* var4 /* : NativeString */;
1017 long var5 /* : Int */;
1018 val* var6 /* : String */;
1019 val* var7 /* : MMethodDef */;
1020 val* var8 /* : String */;
1021 static val* varonce9;
1022 val* var10 /* : String */;
1023 char* var11 /* : NativeString */;
1024 long var12 /* : Int */;
1025 val* var13 /* : String */;
1026 val* var14 /* : String */;
1027 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
1028 var2 = 3;
1029 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
1030 var_ = var1;
1031 if (varonce) {
1032 var3 = varonce;
1033 } else {
1034 var4 = "VIRTUAL_";
1035 var5 = 8;
1036 var6 = string__NativeString__to_s_with_length(var4, var5);
1037 var3 = var6;
1038 varonce = var3;
1039 }
1040 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
1041 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1042 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on <var7:MMethodDef>*/;
1043 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
1044 if (varonce9) {
1045 var10 = varonce9;
1046 } else {
1047 var11 = "";
1048 var12 = 0;
1049 var13 = string__NativeString__to_s_with_length(var11, var12);
1050 var10 = var13;
1051 varonce9 = var10;
1052 }
1053 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1054 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1055 var = var14;
1056 goto RET_LABEL;
1057 RET_LABEL:;
1058 return var;
1059 }
1060 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: Object): String */
1061 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
1062 val* var /* : String */;
1063 val* var1 /* : String */;
1064 var1 = separate_compiler__VirtualRuntimeFunction__build_c_name(self);
1065 var = var1;
1066 RET_LABEL:;
1067 return var;
1068 }
1069 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: VirtualRuntimeFunction): String */
1070 val* separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
1071 val* var /* : String */;
1072 val* var1 /* : MMethodDef */;
1073 val* var2 /* : String */;
1074 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1075 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MMethodDef>*/;
1076 var = var2;
1077 goto RET_LABEL;
1078 RET_LABEL:;
1079 return var;
1080 }
1081 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: Object): String */
1082 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
1083 val* var /* : String */;
1084 val* var1 /* : String */;
1085 var1 = separate_compiler__VirtualRuntimeFunction__to_s(self);
1086 var = var1;
1087 RET_LABEL:;
1088 return var;
1089 }
1090 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: VirtualRuntimeFunction, AbstractCompiler) */
1091 void separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
1092 short int var /* : Bool */;
1093 int cltype;
1094 int idtype;
1095 const struct type* type_struct;
1096 const char* var_class_name;
1097 val* var_compiler /* var compiler: AbstractCompiler */;
1098 val* var1 /* : MMethodDef */;
1099 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
1100 val* var2 /* : MMethodDef */;
1101 val* var3 /* : MClassDef */;
1102 val* var4 /* : MClassType */;
1103 val* var_recv /* var recv: MClassType */;
1104 val* var5 /* : AbstractCompilerVisitor */;
1105 val* var_v /* var v: AbstractCompilerVisitor */;
1106 val* var6 /* : RuntimeVariable */;
1107 static val* varonce;
1108 val* var7 /* : String */;
1109 char* var8 /* : NativeString */;
1110 long var9 /* : Int */;
1111 val* var10 /* : String */;
1112 val* var11 /* : MClassType */;
1113 val* var_selfvar /* var selfvar: RuntimeVariable */;
1114 val* var12 /* : Array[RuntimeVariable] */;
1115 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1116 val* var13 /* : Frame */;
1117 val* var_frame /* var frame: Frame */;
1118 val* var14 /* : Buffer */;
1119 val* var_sig /* var sig: Buffer */;
1120 val* var15 /* : Buffer */;
1121 val* var_comment /* var comment: Buffer */;
1122 val* var16 /* : MMethodDef */;
1123 val* var17 /* : MProperty */;
1124 val* var18 /* : MPropDef */;
1125 val* var19 /* : MClassDef */;
1126 val* var_intromclassdef /* var intromclassdef: MClassDef */;
1127 val* var20 /* : MProperty */;
1128 val* var21 /* : MPropDef */;
1129 val* var22 /* : nullable MSignature */;
1130 val* var23 /* : MClassType */;
1131 val* var24 /* : MClassType */;
1132 val* var25 /* : MModule */;
1133 short int var26 /* : Bool */;
1134 val* var27 /* : MType */;
1135 val* var_msignature /* var msignature: MSignature */;
1136 val* var28 /* : nullable MType */;
1137 val* var_ret /* var ret: nullable MType */;
1138 val* var29 /* : null */;
1139 short int var30 /* : Bool */;
1140 val* var31 /* : String */;
1141 static val* varonce32;
1142 val* var33 /* : String */;
1143 char* var34 /* : NativeString */;
1144 long var35 /* : Int */;
1145 val* var36 /* : String */;
1146 val* var37 /* : Array[Object] */;
1147 long var38 /* : Int */;
1148 val* var39 /* : NativeArray[Object] */;
1149 val* var40 /* : String */;
1150 val* var41 /* : MProperty */;
1151 short int var42 /* : Bool */;
1152 val* var43 /* : String */;
1153 static val* varonce44;
1154 val* var45 /* : String */;
1155 char* var46 /* : NativeString */;
1156 long var47 /* : Int */;
1157 val* var48 /* : String */;
1158 val* var49 /* : Array[Object] */;
1159 long var50 /* : Int */;
1160 val* var51 /* : NativeArray[Object] */;
1161 val* var52 /* : String */;
1162 static val* varonce53;
1163 val* var54 /* : String */;
1164 char* var55 /* : NativeString */;
1165 long var56 /* : Int */;
1166 val* var57 /* : String */;
1167 val* var58 /* : String */;
1168 static val* varonce59;
1169 val* var60 /* : String */;
1170 char* var61 /* : NativeString */;
1171 long var62 /* : Int */;
1172 val* var63 /* : String */;
1173 val* var64 /* : MType */;
1174 val* var65 /* : String */;
1175 static val* varonce66;
1176 val* var67 /* : String */;
1177 char* var68 /* : NativeString */;
1178 long var69 /* : Int */;
1179 val* var70 /* : String */;
1180 val* var71 /* : Array[Object] */;
1181 long var72 /* : Int */;
1182 val* var73 /* : NativeArray[Object] */;
1183 val* var74 /* : String */;
1184 static val* varonce75;
1185 val* var76 /* : String */;
1186 char* var77 /* : NativeString */;
1187 long var78 /* : Int */;
1188 val* var79 /* : String */;
1189 static val* varonce80;
1190 val* var81 /* : String */;
1191 char* var82 /* : NativeString */;
1192 long var83 /* : Int */;
1193 val* var84 /* : String */;
1194 val* var85 /* : MType */;
1195 val* var86 /* : Array[Object] */;
1196 long var87 /* : Int */;
1197 val* var88 /* : NativeArray[Object] */;
1198 val* var89 /* : String */;
1199 val* var90 /* : Range[Int] */;
1200 long var91 /* : Int */;
1201 long var92 /* : Int */;
1202 val* var93 /* : Discrete */;
1203 val* var94 /* : Discrete */;
1204 val* var95 /* : Iterator[nullable Object] */;
1205 short int var96 /* : Bool */;
1206 val* var97 /* : nullable Object */;
1207 long var_i /* var i: Int */;
1208 long var98 /* : Int */;
1209 val* var99 /* : Array[MParameter] */;
1210 val* var100 /* : nullable Object */;
1211 val* var101 /* : MType */;
1212 val* var_mtype /* var mtype: MType */;
1213 long var102 /* : Int */;
1214 short int var103 /* : Bool */;
1215 short int var105 /* : Bool */;
1216 static val* varonce106;
1217 val* var107 /* : String */;
1218 char* var108 /* : NativeString */;
1219 long var109 /* : Int */;
1220 val* var110 /* : String */;
1221 val* var111 /* : MClass */;
1222 val* var112 /* : Array[MType] */;
1223 long var113 /* : Int */;
1224 val* var114 /* : NativeArray[MType] */;
1225 val* var115 /* : MClassType */;
1226 static val* varonce116;
1227 val* var117 /* : String */;
1228 char* var118 /* : NativeString */;
1229 long var119 /* : Int */;
1230 val* var120 /* : String */;
1231 val* var121 /* : Array[Object] */;
1232 long var122 /* : Int */;
1233 val* var123 /* : NativeArray[Object] */;
1234 val* var124 /* : String */;
1235 static val* varonce125;
1236 val* var126 /* : String */;
1237 char* var127 /* : NativeString */;
1238 long var128 /* : Int */;
1239 val* var129 /* : String */;
1240 val* var130 /* : String */;
1241 static val* varonce131;
1242 val* var132 /* : String */;
1243 char* var133 /* : NativeString */;
1244 long var134 /* : Int */;
1245 val* var135 /* : String */;
1246 val* var136 /* : Array[Object] */;
1247 long var137 /* : Int */;
1248 val* var138 /* : NativeArray[Object] */;
1249 val* var139 /* : Object */;
1250 val* var140 /* : String */;
1251 val* var141 /* : RuntimeVariable */;
1252 val* var142 /* : Array[Object] */;
1253 long var143 /* : Int */;
1254 val* var_ /* var : Array[Object] */;
1255 static val* varonce144;
1256 val* var145 /* : String */;
1257 char* var146 /* : NativeString */;
1258 long var147 /* : Int */;
1259 val* var148 /* : String */;
1260 val* var149 /* : nullable Object */;
1261 static val* varonce150;
1262 val* var151 /* : String */;
1263 char* var152 /* : NativeString */;
1264 long var153 /* : Int */;
1265 val* var154 /* : String */;
1266 val* var155 /* : String */;
1267 val* var_argvar /* var argvar: RuntimeVariable */;
1268 static val* varonce156;
1269 val* var157 /* : String */;
1270 char* var158 /* : NativeString */;
1271 long var159 /* : Int */;
1272 val* var160 /* : String */;
1273 static val* varonce161;
1274 val* var162 /* : String */;
1275 char* var163 /* : NativeString */;
1276 long var164 /* : Int */;
1277 val* var165 /* : String */;
1278 val* var166 /* : null */;
1279 short int var167 /* : Bool */;
1280 static val* varonce168;
1281 val* var169 /* : String */;
1282 char* var170 /* : NativeString */;
1283 long var171 /* : Int */;
1284 val* var172 /* : String */;
1285 val* var173 /* : Array[Object] */;
1286 long var174 /* : Int */;
1287 val* var175 /* : NativeArray[Object] */;
1288 val* var176 /* : String */;
1289 val* var177 /* : String */;
1290 static val* varonce178;
1291 val* var179 /* : String */;
1292 char* var180 /* : NativeString */;
1293 long var181 /* : Int */;
1294 val* var182 /* : String */;
1295 val* var183 /* : Array[Object] */;
1296 long var184 /* : Int */;
1297 val* var185 /* : NativeArray[Object] */;
1298 val* var186 /* : String */;
1299 static val* varonce187;
1300 val* var188 /* : String */;
1301 char* var189 /* : NativeString */;
1302 long var190 /* : Int */;
1303 val* var191 /* : String */;
1304 static val* varonce192;
1305 val* var193 /* : String */;
1306 char* var194 /* : NativeString */;
1307 long var195 /* : Int */;
1308 val* var196 /* : String */;
1309 static val* varonce197;
1310 val* var198 /* : String */;
1311 char* var199 /* : NativeString */;
1312 long var200 /* : Int */;
1313 val* var201 /* : String */;
1314 val* var202 /* : Array[Object] */;
1315 long var203 /* : Int */;
1316 val* var204 /* : NativeArray[Object] */;
1317 val* var205 /* : String */;
1318 static val* varonce206;
1319 val* var207 /* : String */;
1320 char* var208 /* : NativeString */;
1321 long var209 /* : Int */;
1322 val* var210 /* : String */;
1323 val* var211 /* : Array[Object] */;
1324 long var212 /* : Int */;
1325 val* var213 /* : NativeArray[Object] */;
1326 val* var214 /* : String */;
1327 val* var215 /* : null */;
1328 short int var216 /* : Bool */;
1329 val* var217 /* : RuntimeVariable */;
1330 static val* varonce218;
1331 val* var219 /* : String */;
1332 char* var220 /* : NativeString */;
1333 long var221 /* : Int */;
1334 val* var222 /* : String */;
1335 val* var223 /* : String */;
1336 val* var224 /* : nullable RuntimeVariable */;
1337 val* var_subret /* var subret: nullable RuntimeVariable */;
1338 val* var225 /* : null */;
1339 short int var226 /* : Bool */;
1340 val* var227 /* : null */;
1341 short int var228 /* : Bool */;
1342 val* var229 /* : nullable RuntimeVariable */;
1343 val* var230 /* : nullable String */;
1344 static val* varonce231;
1345 val* var232 /* : String */;
1346 char* var233 /* : NativeString */;
1347 long var234 /* : Int */;
1348 val* var235 /* : String */;
1349 val* var236 /* : Array[Object] */;
1350 long var237 /* : Int */;
1351 val* var238 /* : NativeArray[Object] */;
1352 val* var239 /* : String */;
1353 val* var240 /* : null */;
1354 short int var241 /* : Bool */;
1355 static val* varonce242;
1356 val* var243 /* : String */;
1357 char* var244 /* : NativeString */;
1358 long var245 /* : Int */;
1359 val* var246 /* : String */;
1360 val* var247 /* : nullable RuntimeVariable */;
1361 static val* varonce248;
1362 val* var249 /* : String */;
1363 char* var250 /* : NativeString */;
1364 long var251 /* : Int */;
1365 val* var252 /* : String */;
1366 val* var253 /* : Array[Object] */;
1367 long var254 /* : Int */;
1368 val* var255 /* : NativeArray[Object] */;
1369 val* var256 /* : String */;
1370 static val* varonce257;
1371 val* var258 /* : String */;
1372 char* var259 /* : NativeString */;
1373 long var260 /* : Int */;
1374 val* var261 /* : String */;
1375 val* var262 /* : String */;
1376 static val* varonce263;
1377 val* var264 /* : String */;
1378 char* var265 /* : NativeString */;
1379 long var266 /* : Int */;
1380 val* var267 /* : String */;
1381 long var268 /* : Int */;
1382 short int var269 /* : Bool */;
1383 short int var270 /* : Bool */;
1384 val* var271 /* : HashMap[String, String] */;
1385 val* var272 /* : String */;
1386 val* var273 /* : MClassDef */;
1387 val* var274 /* : MModule */;
1388 val* var275 /* : String */;
1389 static val* varonce276;
1390 val* var277 /* : String */;
1391 char* var278 /* : NativeString */;
1392 long var279 /* : Int */;
1393 val* var280 /* : String */;
1394 val* var281 /* : MClassDef */;
1395 val* var282 /* : MClass */;
1396 val* var283 /* : String */;
1397 static val* varonce284;
1398 val* var285 /* : String */;
1399 char* var286 /* : NativeString */;
1400 long var287 /* : Int */;
1401 val* var288 /* : String */;
1402 val* var289 /* : MProperty */;
1403 val* var290 /* : String */;
1404 static val* varonce291;
1405 val* var292 /* : String */;
1406 char* var293 /* : NativeString */;
1407 long var294 /* : Int */;
1408 val* var295 /* : String */;
1409 val* var296 /* : Location */;
1410 val* var297 /* : nullable SourceFile */;
1411 val* var298 /* : String */;
1412 static val* varonce299;
1413 val* var300 /* : String */;
1414 char* var301 /* : NativeString */;
1415 long var302 /* : Int */;
1416 val* var303 /* : String */;
1417 val* var304 /* : Location */;
1418 long var305 /* : Int */;
1419 static val* varonce306;
1420 val* var307 /* : String */;
1421 char* var308 /* : NativeString */;
1422 long var309 /* : Int */;
1423 val* var310 /* : String */;
1424 val* var311 /* : Array[Object] */;
1425 long var312 /* : Int */;
1426 val* var313 /* : NativeArray[Object] */;
1427 val* var314 /* : Object */;
1428 val* var315 /* : String */;
1429 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
1430 /* <p0:AbstractCompiler> isa COMPILER */
1431 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
1432 cltype = type_struct->color;
1433 idtype = type_struct->id;
1434 if(cltype >= p0->type->table_size) {
1435 var = 0;
1436 } else {
1437 var = p0->type->type_table[cltype] == idtype;
1438 }
1439 if (!var) {
1440 var_class_name = p0 == NULL ? "null" : p0->type->name;
1441 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
1442 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1694);
1443 show_backtrace(1);
1444 }
1445 var_compiler = p0;
1446 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1447 var_mmethoddef = var1;
1448 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1449 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MMethodDef>*/;
1450 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
1451 var_recv = var4;
1452 var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
1453 var_v = var5;
1454 var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
1455 if (varonce) {
1456 var7 = varonce;
1457 } else {
1458 var8 = "self";
1459 var9 = 4;
1460 var10 = string__NativeString__to_s_with_length(var8, var9);
1461 var7 = var10;
1462 varonce = var7;
1463 }
1464 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(var_v) /* object_type on <var_v:AbstractCompilerVisitor>*/;
1465 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var11, var_recv) /* init on <var6:RuntimeVariable>*/;
1466 var_selfvar = var6;
1467 var12 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1468 ((void (*)(val*))(var12->class->vft[COLOR_array__Array__init]))(var12) /* init on <var12:Array[RuntimeVariable]>*/;
1469 var_arguments = var12;
1470 var13 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
1471 ((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>*/;
1472 var_frame = var13;
1473 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
1474 var14 = NEW_string__Buffer(&type_string__Buffer);
1475 ((void (*)(val*))(var14->class->vft[COLOR_string__Buffer__init]))(var14) /* init on <var14:Buffer>*/;
1476 var_sig = var14;
1477 var15 = NEW_string__Buffer(&type_string__Buffer);
1478 ((void (*)(val*))(var15->class->vft[COLOR_string__Buffer__init]))(var15) /* init on <var15:Buffer>*/;
1479 var_comment = var15;
1480 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1481 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mproperty]))(var16) /* mproperty on <var16:MMethodDef>*/;
1482 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MProperty__intro]))(var17) /* intro on <var17:MProperty(MMethod)>*/;
1483 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MPropDef__mclassdef]))(var18) /* mclassdef on <var18:MPropDef(MMethodDef)>*/;
1484 var_intromclassdef = var19;
1485 var20 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1486 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MProperty__intro]))(var20) /* intro on <var20:MProperty(MMethod)>*/;
1487 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MMethodDef__msignature]))(var21) /* msignature on <var21:MPropDef(MMethodDef)>*/;
1488 var23 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
1489 var24 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
1490 var25 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
1491 var26 = 1;
1492 if (var22 == NULL) {
1493 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1494 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1710);
1495 show_backtrace(1);
1496 } else {
1497 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>*/;
1498 }
1499 var_msignature = var27;
1500 var28 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1501 var_ret = var28;
1502 var29 = NULL;
1503 if (var_ret == NULL) {
1504 var30 = 0; /* is null */
1505 } else {
1506 var30 = 1; /* arg is null and recv is not */
1507 }
1508 if (var30){
1509 var31 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
1510 if (varonce32) {
1511 var33 = varonce32;
1512 } else {
1513 var34 = " ";
1514 var35 = 1;
1515 var36 = string__NativeString__to_s_with_length(var34, var35);
1516 var33 = var36;
1517 varonce32 = var33;
1518 }
1519 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
1520 { /* var37 = array_instance Array[Object] */
1521 var38 = 2;
1522 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
1523 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var31;
1524 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var33;
1525 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
1526 }
1527 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
1528 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var40) /* append on <var_sig:Buffer>*/;
1529 } else {
1530 var41 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1531 var42 = ((short int (*)(val*))(var41->class->vft[COLOR_model__MMethod__is_new]))(var41) /* is_new on <var41:MProperty(MMethod)>*/;
1532 if (var42){
1533 var_ret = var_recv;
1534 var43 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
1535 if (varonce44) {
1536 var45 = varonce44;
1537 } else {
1538 var46 = " ";
1539 var47 = 1;
1540 var48 = string__NativeString__to_s_with_length(var46, var47);
1541 var45 = var48;
1542 varonce44 = var45;
1543 }
1544 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
1545 { /* var49 = array_instance Array[Object] */
1546 var50 = 2;
1547 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
1548 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43;
1549 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45;
1550 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
1551 }
1552 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
1553 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var52) /* append on <var_sig:Buffer>*/;
1554 } else {
1555 if (varonce53) {
1556 var54 = varonce53;
1557 } else {
1558 var55 = "void ";
1559 var56 = 5;
1560 var57 = string__NativeString__to_s_with_length(var55, var56);
1561 var54 = var57;
1562 varonce53 = var54;
1563 }
1564 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on <var_sig:Buffer>*/;
1565 }
1566 }
1567 var58 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
1568 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var58) /* append on <var_sig:Buffer>*/;
1569 if (varonce59) {
1570 var60 = varonce59;
1571 } else {
1572 var61 = "(";
1573 var62 = 1;
1574 var63 = string__NativeString__to_s_with_length(var61, var62);
1575 var60 = var63;
1576 varonce59 = var60;
1577 }
1578 var64 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
1579 var65 = ((val* (*)(val*))(var64->class->vft[COLOR_abstract_compiler__MType__ctype]))(var64) /* ctype on <var64:MType>*/;
1580 if (varonce66) {
1581 var67 = varonce66;
1582 } else {
1583 var68 = " ";
1584 var69 = 1;
1585 var70 = string__NativeString__to_s_with_length(var68, var69);
1586 var67 = var70;
1587 varonce66 = var67;
1588 }
1589 var71 = NEW_array__Array(&type_array__Arraykernel__Object);
1590 { /* var71 = array_instance Array[Object] */
1591 var72 = 4;
1592 var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
1593 ((struct instance_array__NativeArray*)var73)->values[0] = (val*) var60;
1594 ((struct instance_array__NativeArray*)var73)->values[1] = (val*) var65;
1595 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var67;
1596 ((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_selfvar;
1597 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
1598 }
1599 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
1600 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var74) /* append on <var_sig:Buffer>*/;
1601 if (varonce75) {
1602 var76 = varonce75;
1603 } else {
1604 var77 = "(";
1605 var78 = 1;
1606 var79 = string__NativeString__to_s_with_length(var77, var78);
1607 var76 = var79;
1608 varonce75 = var76;
1609 }
1610 if (varonce80) {
1611 var81 = varonce80;
1612 } else {
1613 var82 = ": ";
1614 var83 = 2;
1615 var84 = string__NativeString__to_s_with_length(var82, var83);
1616 var81 = var84;
1617 varonce80 = var81;
1618 }
1619 var85 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
1620 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
1621 { /* var86 = array_instance Array[Object] */
1622 var87 = 4;
1623 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
1624 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var76;
1625 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var_selfvar;
1626 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var81;
1627 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var85;
1628 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
1629 }
1630 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
1631 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var89) /* append on <var_comment:Buffer>*/;
1632 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
1633 var90 = NEW_range__Range(&type_range__Rangekernel__Int);
1634 var91 = 0;
1635 var92 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
1636 var93 = BOX_kernel__Int(var91); /* autobox from Int to Discrete */
1637 var94 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */
1638 ((void (*)(val*, val*, val*))(var90->class->vft[COLOR_range__Range__without_last]))(var90, var93, var94) /* without_last on <var90:Range[Int]>*/;
1639 var95 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on <var90:Range[Int]>*/;
1640 for(;;) {
1641 var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on <var95:Iterator[nullable Object]>*/;
1642 if(!var96) break;
1643 var97 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__item]))(var95) /* item on <var95:Iterator[nullable Object]>*/;
1644 var98 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */;
1645 var_i = var98;
1646 var99 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
1647 var100 = ((val* (*)(val*, long))(var99->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var99, var_i) /* [] on <var99:Array[MParameter]>*/;
1648 var101 = ((val* (*)(val*))(var100->class->vft[COLOR_model__MParameter__mtype]))(var100) /* mtype on <var100:nullable Object(MParameter)>*/;
1649 var_mtype = var101;
1650 var102 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
1651 { /* Inline kernel#Int#== (var_i,var102) */
1652 var105 = var_i == var102;
1653 var103 = var105;
1654 goto RET_LABEL104;
1655 RET_LABEL104:(void)0;
1656 }
1657 if (var103){
1658 if (varonce106) {
1659 var107 = varonce106;
1660 } else {
1661 var108 = "Array";
1662 var109 = 5;
1663 var110 = string__NativeString__to_s_with_length(var108, var109);
1664 var107 = var110;
1665 varonce106 = var107;
1666 }
1667 var111 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var107) /* get_class on <var_v:AbstractCompilerVisitor>*/;
1668 var112 = NEW_array__Array(&type_array__Arraymodel__MType);
1669 { /* var112 = array_instance Array[MType] */
1670 var113 = 1;
1671 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraymodel__MType);
1672 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_mtype;
1673 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[MType]>*/;
1674 }
1675 var115 = ((val* (*)(val*, val*))(var111->class->vft[COLOR_model__MClass__get_mtype]))(var111, var112) /* get_mtype on <var111:MClass>*/;
1676 var_mtype = var115;
1677 } else {
1678 }
1679 if (varonce116) {
1680 var117 = varonce116;
1681 } else {
1682 var118 = ", ";
1683 var119 = 2;
1684 var120 = string__NativeString__to_s_with_length(var118, var119);
1685 var117 = var120;
1686 varonce116 = var117;
1687 }
1688 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
1689 { /* var121 = array_instance Array[Object] */
1690 var122 = 2;
1691 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
1692 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var117;
1693 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var_mtype;
1694 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
1695 }
1696 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
1697 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var124) /* append on <var_comment:Buffer>*/;
1698 if (varonce125) {
1699 var126 = varonce125;
1700 } else {
1701 var127 = ", ";
1702 var128 = 2;
1703 var129 = string__NativeString__to_s_with_length(var127, var128);
1704 var126 = var129;
1705 varonce125 = var126;
1706 }
1707 var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
1708 if (varonce131) {
1709 var132 = varonce131;
1710 } else {
1711 var133 = " p";
1712 var134 = 2;
1713 var135 = string__NativeString__to_s_with_length(var133, var134);
1714 var132 = var135;
1715 varonce131 = var132;
1716 }
1717 var136 = NEW_array__Array(&type_array__Arraykernel__Object);
1718 { /* var136 = array_instance Array[Object] */
1719 var137 = 4;
1720 var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
1721 ((struct instance_array__NativeArray*)var138)->values[0] = (val*) var126;
1722 ((struct instance_array__NativeArray*)var138)->values[1] = (val*) var130;
1723 ((struct instance_array__NativeArray*)var138)->values[2] = (val*) var132;
1724 var139 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
1725 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var139;
1726 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
1727 }
1728 var140 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
1729 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var140) /* append on <var_sig:Buffer>*/;
1730 var141 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
1731 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
1732 var143 = 3;
1733 ((void (*)(val*, long))(var142->class->vft[COLOR_array__Array__with_capacity]))(var142, var143) /* with_capacity on <var142:Array[Object]>*/;
1734 var_ = var142;
1735 if (varonce144) {
1736 var145 = varonce144;
1737 } else {
1738 var146 = "p";
1739 var147 = 1;
1740 var148 = string__NativeString__to_s_with_length(var146, var147);
1741 var145 = var148;
1742 varonce144 = var145;
1743 }
1744 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on <var_:Array[Object]>*/;
1745 var149 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
1746 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var149) /* add on <var_:Array[Object]>*/;
1747 if (varonce150) {
1748 var151 = varonce150;
1749 } else {
1750 var152 = "";
1751 var153 = 0;
1752 var154 = string__NativeString__to_s_with_length(var152, var153);
1753 var151 = var154;
1754 varonce150 = var151;
1755 }
1756 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var151) /* add on <var_:Array[Object]>*/;
1757 var155 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1758 ((void (*)(val*, val*, val*, val*))(var141->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var141, var155, var_mtype, var_mtype) /* init on <var141:RuntimeVariable>*/;
1759 var_argvar = var141;
1760 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
1761 CONTINUE_label: (void)0;
1762 ((void (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__next]))(var95) /* next on <var95:Iterator[nullable Object]>*/;
1763 }
1764 BREAK_label: (void)0;
1765 if (varonce156) {
1766 var157 = varonce156;
1767 } else {
1768 var158 = ")";
1769 var159 = 1;
1770 var160 = string__NativeString__to_s_with_length(var158, var159);
1771 var157 = var160;
1772 varonce156 = var157;
1773 }
1774 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var157) /* append on <var_sig:Buffer>*/;
1775 if (varonce161) {
1776 var162 = varonce161;
1777 } else {
1778 var163 = ")";
1779 var164 = 1;
1780 var165 = string__NativeString__to_s_with_length(var163, var164);
1781 var162 = var165;
1782 varonce161 = var162;
1783 }
1784 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var162) /* append on <var_comment:Buffer>*/;
1785 var166 = NULL;
1786 if (var_ret == NULL) {
1787 var167 = 0; /* is null */
1788 } else {
1789 var167 = 1; /* arg is null and recv is not */
1790 }
1791 if (var167){
1792 if (varonce168) {
1793 var169 = varonce168;
1794 } else {
1795 var170 = ": ";
1796 var171 = 2;
1797 var172 = string__NativeString__to_s_with_length(var170, var171);
1798 var169 = var172;
1799 varonce168 = var169;
1800 }
1801 var173 = NEW_array__Array(&type_array__Arraykernel__Object);
1802 { /* var173 = array_instance Array[Object] */
1803 var174 = 2;
1804 var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
1805 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var169;
1806 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var_ret;
1807 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
1808 }
1809 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
1810 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var176) /* append on <var_comment:Buffer>*/;
1811 } else {
1812 }
1813 var177 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
1814 if (varonce178) {
1815 var179 = varonce178;
1816 } else {
1817 var180 = ";";
1818 var181 = 1;
1819 var182 = string__NativeString__to_s_with_length(var180, var181);
1820 var179 = var182;
1821 varonce178 = var179;
1822 }
1823 var183 = NEW_array__Array(&type_array__Arraykernel__Object);
1824 { /* var183 = array_instance Array[Object] */
1825 var184 = 2;
1826 var185 = NEW_array__NativeArray(var184, &type_array__NativeArraykernel__Object);
1827 ((struct instance_array__NativeArray*)var185)->values[0] = (val*) var_sig;
1828 ((struct instance_array__NativeArray*)var185)->values[1] = (val*) var179;
1829 ((void (*)(val*, val*, long))(var183->class->vft[COLOR_array__Array__with_native]))(var183, var185, var184) /* with_native on <var183:Array[Object]>*/;
1830 }
1831 var186 = ((val* (*)(val*))(var183->class->vft[COLOR_string__Object__to_s]))(var183) /* to_s on <var183:Array[Object]>*/;
1832 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var177, var186) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
1833 if (varonce187) {
1834 var188 = varonce187;
1835 } else {
1836 var189 = "/* method ";
1837 var190 = 10;
1838 var191 = string__NativeString__to_s_with_length(var189, var190);
1839 var188 = var191;
1840 varonce187 = var188;
1841 }
1842 if (varonce192) {
1843 var193 = varonce192;
1844 } else {
1845 var194 = " for ";
1846 var195 = 5;
1847 var196 = string__NativeString__to_s_with_length(var194, var195);
1848 var193 = var196;
1849 varonce192 = var193;
1850 }
1851 if (varonce197) {
1852 var198 = varonce197;
1853 } else {
1854 var199 = " */";
1855 var200 = 3;
1856 var201 = string__NativeString__to_s_with_length(var199, var200);
1857 var198 = var201;
1858 varonce197 = var198;
1859 }
1860 var202 = NEW_array__Array(&type_array__Arraykernel__Object);
1861 { /* var202 = array_instance Array[Object] */
1862 var203 = 5;
1863 var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object);
1864 ((struct instance_array__NativeArray*)var204)->values[0] = (val*) var188;
1865 ((struct instance_array__NativeArray*)var204)->values[1] = (val*) self;
1866 ((struct instance_array__NativeArray*)var204)->values[2] = (val*) var193;
1867 ((struct instance_array__NativeArray*)var204)->values[3] = (val*) var_comment;
1868 ((struct instance_array__NativeArray*)var204)->values[4] = (val*) var198;
1869 ((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on <var202:Array[Object]>*/;
1870 }
1871 var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on <var202:Array[Object]>*/;
1872 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var205) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
1873 if (varonce206) {
1874 var207 = varonce206;
1875 } else {
1876 var208 = " {";
1877 var209 = 2;
1878 var210 = string__NativeString__to_s_with_length(var208, var209);
1879 var207 = var210;
1880 varonce206 = var207;
1881 }
1882 var211 = NEW_array__Array(&type_array__Arraykernel__Object);
1883 { /* var211 = array_instance Array[Object] */
1884 var212 = 2;
1885 var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
1886 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var_sig;
1887 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var207;
1888 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
1889 }
1890 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
1891 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var214) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
1892 var215 = NULL;
1893 if (var_ret == NULL) {
1894 var216 = 0; /* is null */
1895 } else {
1896 var216 = 1; /* arg is null and recv is not */
1897 }
1898 if (var216){
1899 var217 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:AbstractCompilerVisitor>*/;
1900 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var217) /* returnvar= on <var_frame:Frame>*/;
1901 } else {
1902 }
1903 if (varonce218) {
1904 var219 = varonce218;
1905 } else {
1906 var220 = "RET_LABEL";
1907 var221 = 9;
1908 var222 = string__NativeString__to_s_with_length(var220, var221);
1909 var219 = var222;
1910 varonce218 = var219;
1911 }
1912 var223 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var219) /* get_name on <var_v:AbstractCompilerVisitor>*/;
1913 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var223) /* returnlabel= on <var_frame:Frame>*/;
1914 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>*/;
1915 var_subret = var224;
1916 var225 = NULL;
1917 if (var_ret == NULL) {
1918 var226 = 0; /* is null */
1919 } else {
1920 var226 = 1; /* arg is null and recv is not */
1921 }
1922 if (var226){
1923 var227 = NULL;
1924 if (var_subret == NULL) {
1925 var228 = 0; /* is null */
1926 } else {
1927 var228 = 1; /* arg is null and recv is not */
1928 }
1929 if (!var228) {
1930 fprintf(stderr, "Runtime error: %s", "Assert failed");
1931 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1750);
1932 show_backtrace(1);
1933 }
1934 var229 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
1935 if (var229 == NULL) {
1936 fprintf(stderr, "Runtime error: %s", "Cast failed");
1937 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1751);
1938 show_backtrace(1);
1939 }
1940 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var229, var_subret) /* assign on <var_v:AbstractCompilerVisitor>*/;
1941 } else {
1942 }
1943 var230 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
1944 if (var230 == NULL) {
1945 fprintf(stderr, "Runtime error: %s", "Cast failed");
1946 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1754);
1947 show_backtrace(1);
1948 }
1949 if (varonce231) {
1950 var232 = varonce231;
1951 } else {
1952 var233 = ":;";
1953 var234 = 2;
1954 var235 = string__NativeString__to_s_with_length(var233, var234);
1955 var232 = var235;
1956 varonce231 = var232;
1957 }
1958 var236 = NEW_array__Array(&type_array__Arraykernel__Object);
1959 { /* var236 = array_instance Array[Object] */
1960 var237 = 2;
1961 var238 = NEW_array__NativeArray(var237, &type_array__NativeArraykernel__Object);
1962 ((struct instance_array__NativeArray*)var238)->values[0] = (val*) var230;
1963 ((struct instance_array__NativeArray*)var238)->values[1] = (val*) var232;
1964 ((void (*)(val*, val*, long))(var236->class->vft[COLOR_array__Array__with_native]))(var236, var238, var237) /* with_native on <var236:Array[Object]>*/;
1965 }
1966 var239 = ((val* (*)(val*))(var236->class->vft[COLOR_string__Object__to_s]))(var236) /* to_s on <var236:Array[Object]>*/;
1967 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var239) /* add on <var_v:AbstractCompilerVisitor>*/;
1968 var240 = NULL;
1969 if (var_ret == NULL) {
1970 var241 = 0; /* is null */
1971 } else {
1972 var241 = 1; /* arg is null and recv is not */
1973 }
1974 if (var241){
1975 if (varonce242) {
1976 var243 = varonce242;
1977 } else {
1978 var244 = "return ";
1979 var245 = 7;
1980 var246 = string__NativeString__to_s_with_length(var244, var245);
1981 var243 = var246;
1982 varonce242 = var243;
1983 }
1984 var247 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
1985 if (var247 == NULL) {
1986 fprintf(stderr, "Runtime error: %s", "Cast failed");
1987 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1756);
1988 show_backtrace(1);
1989 }
1990 if (varonce248) {
1991 var249 = varonce248;
1992 } else {
1993 var250 = ";";
1994 var251 = 1;
1995 var252 = string__NativeString__to_s_with_length(var250, var251);
1996 var249 = var252;
1997 varonce248 = var249;
1998 }
1999 var253 = NEW_array__Array(&type_array__Arraykernel__Object);
2000 { /* var253 = array_instance Array[Object] */
2001 var254 = 3;
2002 var255 = NEW_array__NativeArray(var254, &type_array__NativeArraykernel__Object);
2003 ((struct instance_array__NativeArray*)var255)->values[0] = (val*) var243;
2004 ((struct instance_array__NativeArray*)var255)->values[1] = (val*) var247;
2005 ((struct instance_array__NativeArray*)var255)->values[2] = (val*) var249;
2006 ((void (*)(val*, val*, long))(var253->class->vft[COLOR_array__Array__with_native]))(var253, var255, var254) /* with_native on <var253:Array[Object]>*/;
2007 }
2008 var256 = ((val* (*)(val*))(var253->class->vft[COLOR_string__Object__to_s]))(var253) /* to_s on <var253:Array[Object]>*/;
2009 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var256) /* add on <var_v:AbstractCompilerVisitor>*/;
2010 } else {
2011 }
2012 if (varonce257) {
2013 var258 = varonce257;
2014 } else {
2015 var259 = "}";
2016 var260 = 1;
2017 var261 = string__NativeString__to_s_with_length(var259, var260);
2018 var258 = var261;
2019 varonce257 = var258;
2020 }
2021 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var258) /* add on <var_v:AbstractCompilerVisitor>*/;
2022 var262 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2023 if (varonce263) {
2024 var264 = varonce263;
2025 } else {
2026 var265 = "VIRTUAL";
2027 var266 = 7;
2028 var267 = string__NativeString__to_s_with_length(var265, var266);
2029 var264 = var267;
2030 varonce263 = var264;
2031 }
2032 var268 = 0;
2033 var269 = ((short int (*)(val*, val*, long))(var262->class->vft[COLOR_string__AbstractString__has_substring]))(var262, var264, var268) /* has_substring on <var262:String>*/;
2034 var270 = !var269;
2035 if (var270){
2036 var271 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on <var_compiler:AbstractCompiler>*/;
2037 var272 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2038 var273 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2039 var274 = ((val* (*)(val*))(var273->class->vft[COLOR_model__MClassDef__mmodule]))(var273) /* mmodule on <var273:MClassDef>*/;
2040 var275 = ((val* (*)(val*))(var274->class->vft[COLOR_mmodule__MModule__name]))(var274) /* name on <var274:MModule>*/;
2041 if (varonce276) {
2042 var277 = varonce276;
2043 } else {
2044 var278 = "::";
2045 var279 = 2;
2046 var280 = string__NativeString__to_s_with_length(var278, var279);
2047 var277 = var280;
2048 varonce276 = var277;
2049 }
2050 var281 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2051 var282 = ((val* (*)(val*))(var281->class->vft[COLOR_model__MClassDef__mclass]))(var281) /* mclass on <var281:MClassDef>*/;
2052 var283 = ((val* (*)(val*))(var282->class->vft[COLOR_model__MClass__name]))(var282) /* name on <var282:MClass>*/;
2053 if (varonce284) {
2054 var285 = varonce284;
2055 } else {
2056 var286 = "::";
2057 var287 = 2;
2058 var288 = string__NativeString__to_s_with_length(var286, var287);
2059 var285 = var288;
2060 varonce284 = var285;
2061 }
2062 var289 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2063 var290 = ((val* (*)(val*))(var289->class->vft[COLOR_model__MProperty__name]))(var289) /* name on <var289:MProperty(MMethod)>*/;
2064 if (varonce291) {
2065 var292 = varonce291;
2066 } else {
2067 var293 = " (";
2068 var294 = 2;
2069 var295 = string__NativeString__to_s_with_length(var293, var294);
2070 var292 = var295;
2071 varonce291 = var292;
2072 }
2073 var296 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
2074 var297 = ((val* (*)(val*))(var296->class->vft[COLOR_location__Location__file]))(var296) /* file on <var296:Location>*/;
2075 if (var297 == NULL) {
2076 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2077 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1759);
2078 show_backtrace(1);
2079 } else {
2080 var298 = ((val* (*)(val*))(var297->class->vft[COLOR_location__SourceFile__filename]))(var297) /* filename on <var297:nullable SourceFile>*/;
2081 }
2082 if (varonce299) {
2083 var300 = varonce299;
2084 } else {
2085 var301 = "--";
2086 var302 = 2;
2087 var303 = string__NativeString__to_s_with_length(var301, var302);
2088 var300 = var303;
2089 varonce299 = var300;
2090 }
2091 var304 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
2092 var305 = ((long (*)(val*))(var304->class->vft[COLOR_location__Location__line_start]))(var304) /* line_start on <var304:Location>*/;
2093 if (varonce306) {
2094 var307 = varonce306;
2095 } else {
2096 var308 = ")";
2097 var309 = 1;
2098 var310 = string__NativeString__to_s_with_length(var308, var309);
2099 var307 = var310;
2100 varonce306 = var307;
2101 }
2102 var311 = NEW_array__Array(&type_array__Arraykernel__Object);
2103 { /* var311 = array_instance Array[Object] */
2104 var312 = 10;
2105 var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object);
2106 ((struct instance_array__NativeArray*)var313)->values[0] = (val*) var275;
2107 ((struct instance_array__NativeArray*)var313)->values[1] = (val*) var277;
2108 ((struct instance_array__NativeArray*)var313)->values[2] = (val*) var283;
2109 ((struct instance_array__NativeArray*)var313)->values[3] = (val*) var285;
2110 ((struct instance_array__NativeArray*)var313)->values[4] = (val*) var290;
2111 ((struct instance_array__NativeArray*)var313)->values[5] = (val*) var292;
2112 ((struct instance_array__NativeArray*)var313)->values[6] = (val*) var298;
2113 ((struct instance_array__NativeArray*)var313)->values[7] = (val*) var300;
2114 var314 = BOX_kernel__Int(var305); /* autobox from Int to Object */
2115 ((struct instance_array__NativeArray*)var313)->values[8] = (val*) var314;
2116 ((struct instance_array__NativeArray*)var313)->values[9] = (val*) var307;
2117 ((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on <var311:Array[Object]>*/;
2118 }
2119 var315 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on <var311:Array[Object]>*/;
2120 ((void (*)(val*, val*, val*))(var271->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var271, var272, var315) /* []= on <var271:HashMap[String, String]>*/;
2121 } else {
2122 }
2123 RET_LABEL:;
2124 }
2125 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
2126 void VIRTUAL_separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
2127 separate_compiler__VirtualRuntimeFunction__compile_to_c(self, p0);
2128 RET_LABEL:;
2129 }
2130 /* method separate_compiler#VirtualRuntimeFunction#call for (self: VirtualRuntimeFunction, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2131 val* separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) {
2132 val* var /* : nullable RuntimeVariable */;
2133 short int var1 /* : Bool */;
2134 int cltype;
2135 int idtype;
2136 const struct type* type_struct;
2137 const char* var_class_name;
2138 val* var_v /* var v: AbstractCompilerVisitor */;
2139 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2140 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
2141 /* <p0:AbstractCompilerVisitor> isa VISITOR */
2142 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTVISITOR];
2143 cltype = type_struct->color;
2144 idtype = type_struct->id;
2145 if(cltype >= p0->type->table_size) {
2146 var1 = 0;
2147 } else {
2148 var1 = p0->type->type_table[cltype] == idtype;
2149 }
2150 if (!var1) {
2151 var_class_name = p0 == NULL ? "null" : p0->type->name;
2152 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
2153 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1762);
2154 show_backtrace(1);
2155 }
2156 var_v = p0;
2157 var_arguments = p1;
2158 fprintf(stderr, "Runtime error: %s", "Aborted");
2159 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1763);
2160 show_backtrace(1);
2161 RET_LABEL:;
2162 return var;
2163 }
2164 /* method separate_compiler#VirtualRuntimeFunction#call for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2165 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) {
2166 val* var /* : nullable RuntimeVariable */;
2167 val* var1 /* : nullable RuntimeVariable */;
2168 var1 = separate_compiler__VirtualRuntimeFunction__call(self, p0, p1);
2169 var = var1;
2170 RET_LABEL:;
2171 return var;
2172 }
2173 /* method separate_compiler#MType#const_color for (self: MType): String */
2174 val* separate_compiler__MType__const_color(val* self) {
2175 val* var /* : String */;
2176 val* var1 /* : Array[Object] */;
2177 long var2 /* : Int */;
2178 val* var_ /* var : Array[Object] */;
2179 static val* varonce;
2180 val* var3 /* : String */;
2181 char* var4 /* : NativeString */;
2182 long var5 /* : Int */;
2183 val* var6 /* : String */;
2184 val* var7 /* : String */;
2185 static val* varonce8;
2186 val* var9 /* : String */;
2187 char* var10 /* : NativeString */;
2188 long var11 /* : Int */;
2189 val* var12 /* : String */;
2190 val* var13 /* : String */;
2191 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2192 var2 = 3;
2193 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2194 var_ = var1;
2195 if (varonce) {
2196 var3 = varonce;
2197 } else {
2198 var4 = "COLOR_";
2199 var5 = 6;
2200 var6 = string__NativeString__to_s_with_length(var4, var5);
2201 var3 = var6;
2202 varonce = var3;
2203 }
2204 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
2205 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on <self:MType>*/;
2206 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
2207 if (varonce8) {
2208 var9 = varonce8;
2209 } else {
2210 var10 = "";
2211 var11 = 0;
2212 var12 = string__NativeString__to_s_with_length(var10, var11);
2213 var9 = var12;
2214 varonce8 = var9;
2215 }
2216 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
2217 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2218 var = var13;
2219 goto RET_LABEL;
2220 RET_LABEL:;
2221 return var;
2222 }
2223 /* method separate_compiler#MType#const_color for (self: Object): String */
2224 val* VIRTUAL_separate_compiler__MType__const_color(val* self) {
2225 val* var /* : String */;
2226 val* var1 /* : String */;
2227 var1 = separate_compiler__MType__const_color(self);
2228 var = var1;
2229 RET_LABEL:;
2230 return var;
2231 }
2232 /* method separate_compiler#MProperty#const_color for (self: MProperty): String */
2233 val* separate_compiler__MProperty__const_color(val* self) {
2234 val* var /* : String */;
2235 val* var1 /* : Array[Object] */;
2236 long var2 /* : Int */;
2237 val* var_ /* var : Array[Object] */;
2238 static val* varonce;
2239 val* var3 /* : String */;
2240 char* var4 /* : NativeString */;
2241 long var5 /* : Int */;
2242 val* var6 /* : String */;
2243 val* var7 /* : String */;
2244 static val* varonce8;
2245 val* var9 /* : String */;
2246 char* var10 /* : NativeString */;
2247 long var11 /* : Int */;
2248 val* var12 /* : String */;
2249 val* var13 /* : String */;
2250 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2251 var2 = 3;
2252 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2253 var_ = var1;
2254 if (varonce) {
2255 var3 = varonce;
2256 } else {
2257 var4 = "COLOR_";
2258 var5 = 6;
2259 var6 = string__NativeString__to_s_with_length(var4, var5);
2260 var3 = var6;
2261 varonce = var3;
2262 }
2263 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
2264 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MProperty__c_name]))(self) /* c_name on <self:MProperty>*/;
2265 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
2266 if (varonce8) {
2267 var9 = varonce8;
2268 } else {
2269 var10 = "";
2270 var11 = 0;
2271 var12 = string__NativeString__to_s_with_length(var10, var11);
2272 var9 = var12;
2273 varonce8 = var9;
2274 }
2275 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
2276 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2277 var = var13;
2278 goto RET_LABEL;
2279 RET_LABEL:;
2280 return var;
2281 }
2282 /* method separate_compiler#MProperty#const_color for (self: Object): String */
2283 val* VIRTUAL_separate_compiler__MProperty__const_color(val* self) {
2284 val* var /* : String */;
2285 val* var1 /* : String */;
2286 var1 = separate_compiler__MProperty__const_color(self);
2287 var = var1;
2288 RET_LABEL:;
2289 return var;
2290 }
2291 /* method separate_compiler#MPropDef#const_color for (self: MPropDef): String */
2292 val* separate_compiler__MPropDef__const_color(val* self) {
2293 val* var /* : String */;
2294 val* var1 /* : Array[Object] */;
2295 long var2 /* : Int */;
2296 val* var_ /* var : Array[Object] */;
2297 static val* varonce;
2298 val* var3 /* : String */;
2299 char* var4 /* : NativeString */;
2300 long var5 /* : Int */;
2301 val* var6 /* : String */;
2302 val* var7 /* : String */;
2303 static val* varonce8;
2304 val* var9 /* : String */;
2305 char* var10 /* : NativeString */;
2306 long var11 /* : Int */;
2307 val* var12 /* : String */;
2308 val* var13 /* : String */;
2309 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2310 var2 = 3;
2311 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2312 var_ = var1;
2313 if (varonce) {
2314 var3 = varonce;
2315 } else {
2316 var4 = "COLOR_";
2317 var5 = 6;
2318 var6 = string__NativeString__to_s_with_length(var4, var5);
2319 var3 = var6;
2320 varonce = var3;
2321 }
2322 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
2323 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(self) /* c_name on <self:MPropDef>*/;
2324 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
2325 if (varonce8) {
2326 var9 = varonce8;
2327 } else {
2328 var10 = "";
2329 var11 = 0;
2330 var12 = string__NativeString__to_s_with_length(var10, var11);
2331 var9 = var12;
2332 varonce8 = var9;
2333 }
2334 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
2335 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2336 var = var13;
2337 goto RET_LABEL;
2338 RET_LABEL:;
2339 return var;
2340 }
2341 /* method separate_compiler#MPropDef#const_color for (self: Object): String */
2342 val* VIRTUAL_separate_compiler__MPropDef__const_color(val* self) {
2343 val* var /* : String */;
2344 val* var1 /* : String */;
2345 var1 = separate_compiler__MPropDef__const_color(self);
2346 var = var1;
2347 RET_LABEL:;
2348 return var;
2349 }