nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / separate_compiler.sep.5.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: VirtualRuntimeFunction, AbstractCompiler) */
3 void separate_compiler__VirtualRuntimeFunction__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* var3 /* : MMethodDef */;
12 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
13 val* var4 /* : MMethodDef */;
14 val* var6 /* : MMethodDef */;
15 val* var7 /* : MClassDef */;
16 val* var9 /* : MClassDef */;
17 val* var10 /* : MClassType */;
18 val* var12 /* : MClassType */;
19 val* var_recv /* var recv: MClassType */;
20 val* var13 /* : AbstractCompilerVisitor */;
21 val* var_v /* var v: AbstractCompilerVisitor */;
22 val* var14 /* : RuntimeVariable */;
23 static val* varonce;
24 val* var15 /* : String */;
25 char* var16 /* : NativeString */;
26 long var17 /* : Int */;
27 val* var18 /* : FlatString */;
28 val* var19 /* : MClassType */;
29 val* var_selfvar /* var selfvar: RuntimeVariable */;
30 val* var20 /* : Array[RuntimeVariable] */;
31 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
32 val* var21 /* : Frame */;
33 val* var_frame /* var frame: Frame */;
34 val* var23 /* : FlatBuffer */;
35 val* var_sig /* var sig: FlatBuffer */;
36 val* var24 /* : FlatBuffer */;
37 val* var_comment /* var comment: FlatBuffer */;
38 val* var25 /* : MMethodDef */;
39 val* var27 /* : MMethodDef */;
40 val* var28 /* : MProperty */;
41 val* var30 /* : MProperty */;
42 val* var31 /* : MPropDef */;
43 val* var33 /* : MPropDef */;
44 val* var34 /* : MClassDef */;
45 val* var36 /* : MClassDef */;
46 val* var_intromclassdef /* var intromclassdef: MClassDef */;
47 val* var37 /* : MProperty */;
48 val* var39 /* : MProperty */;
49 val* var40 /* : MPropDef */;
50 val* var42 /* : MPropDef */;
51 val* var43 /* : nullable MSignature */;
52 val* var45 /* : nullable MSignature */;
53 val* var46 /* : MClassType */;
54 val* var48 /* : MClassType */;
55 val* var49 /* : MClassType */;
56 val* var51 /* : MClassType */;
57 val* var52 /* : MModule */;
58 val* var54 /* : MModule */;
59 short int var55 /* : Bool */;
60 val* var56 /* : MSignature */;
61 val* var_msignature /* var msignature: MSignature */;
62 val* var57 /* : nullable MType */;
63 val* var59 /* : nullable MType */;
64 val* var_ret /* var ret: nullable MType */;
65 val* var60 /* : null */;
66 short int var61 /* : Bool */;
67 short int var62 /* : Bool */;
68 val* var_other /* var other: nullable Object */;
69 short int var64 /* : Bool */;
70 short int var65 /* : Bool */;
71 short int var66 /* : Bool */;
72 val* var67 /* : String */;
73 static val* varonce68;
74 val* var69 /* : String */;
75 char* var70 /* : NativeString */;
76 long var71 /* : Int */;
77 val* var72 /* : FlatString */;
78 val* var73 /* : Array[Object] */;
79 long var74 /* : Int */;
80 val* var75 /* : NativeArray[Object] */;
81 val* var76 /* : String */;
82 static val* varonce77;
83 val* var78 /* : String */;
84 char* var79 /* : NativeString */;
85 long var80 /* : Int */;
86 val* var81 /* : FlatString */;
87 val* var82 /* : String */;
88 static val* varonce83;
89 val* var84 /* : String */;
90 char* var85 /* : NativeString */;
91 long var86 /* : Int */;
92 val* var87 /* : FlatString */;
93 val* var88 /* : MType */;
94 val* var90 /* : MType */;
95 val* var91 /* : String */;
96 static val* varonce92;
97 val* var93 /* : String */;
98 char* var94 /* : NativeString */;
99 long var95 /* : Int */;
100 val* var96 /* : FlatString */;
101 val* var97 /* : Array[Object] */;
102 long var98 /* : Int */;
103 val* var99 /* : NativeArray[Object] */;
104 val* var100 /* : String */;
105 static val* varonce101;
106 val* var102 /* : String */;
107 char* var103 /* : NativeString */;
108 long var104 /* : Int */;
109 val* var105 /* : FlatString */;
110 static val* varonce106;
111 val* var107 /* : String */;
112 char* var108 /* : NativeString */;
113 long var109 /* : Int */;
114 val* var110 /* : FlatString */;
115 val* var111 /* : MType */;
116 val* var113 /* : MType */;
117 val* var114 /* : Array[Object] */;
118 long var115 /* : Int */;
119 val* var116 /* : NativeArray[Object] */;
120 val* var117 /* : String */;
121 long var118 /* : Int */;
122 long var_i /* var i: Int */;
123 long var119 /* : Int */;
124 long var_ /* var : Int */;
125 short int var120 /* : Bool */;
126 short int var122 /* : Bool */;
127 int cltype123;
128 int idtype124;
129 const char* var_class_name125;
130 short int var126 /* : Bool */;
131 val* var127 /* : Array[MParameter] */;
132 val* var129 /* : Array[MParameter] */;
133 val* var130 /* : nullable Object */;
134 val* var131 /* : MType */;
135 val* var133 /* : MType */;
136 val* var_mtype /* var mtype: MType */;
137 long var134 /* : Int */;
138 long var136 /* : Int */;
139 short int var137 /* : Bool */;
140 short int var138 /* : Bool */;
141 short int var140 /* : Bool */;
142 static val* varonce141;
143 val* var142 /* : String */;
144 char* var143 /* : NativeString */;
145 long var144 /* : Int */;
146 val* var145 /* : FlatString */;
147 val* var146 /* : MClass */;
148 val* var147 /* : Array[MType] */;
149 long var148 /* : Int */;
150 val* var_149 /* var : Array[MType] */;
151 val* var150 /* : MClassType */;
152 static val* varonce151;
153 val* var152 /* : String */;
154 char* var153 /* : NativeString */;
155 long var154 /* : Int */;
156 val* var155 /* : FlatString */;
157 val* var156 /* : Array[Object] */;
158 long var157 /* : Int */;
159 val* var158 /* : NativeArray[Object] */;
160 val* var159 /* : String */;
161 static val* varonce160;
162 val* var161 /* : String */;
163 char* var162 /* : NativeString */;
164 long var163 /* : Int */;
165 val* var164 /* : FlatString */;
166 val* var165 /* : String */;
167 static val* varonce166;
168 val* var167 /* : String */;
169 char* var168 /* : NativeString */;
170 long var169 /* : Int */;
171 val* var170 /* : FlatString */;
172 val* var171 /* : Array[Object] */;
173 long var172 /* : Int */;
174 val* var173 /* : NativeArray[Object] */;
175 val* var174 /* : Object */;
176 val* var175 /* : String */;
177 val* var176 /* : RuntimeVariable */;
178 static val* varonce177;
179 val* var178 /* : String */;
180 char* var179 /* : NativeString */;
181 long var180 /* : Int */;
182 val* var181 /* : FlatString */;
183 val* var182 /* : Array[Object] */;
184 long var183 /* : Int */;
185 val* var184 /* : NativeArray[Object] */;
186 val* var185 /* : Object */;
187 val* var186 /* : String */;
188 val* var_argvar /* var argvar: RuntimeVariable */;
189 long var187 /* : Int */;
190 long var188 /* : Int */;
191 static val* varonce189;
192 val* var190 /* : String */;
193 char* var191 /* : NativeString */;
194 long var192 /* : Int */;
195 val* var193 /* : FlatString */;
196 static val* varonce194;
197 val* var195 /* : String */;
198 char* var196 /* : NativeString */;
199 long var197 /* : Int */;
200 val* var198 /* : FlatString */;
201 val* var199 /* : null */;
202 short int var200 /* : Bool */;
203 short int var201 /* : Bool */;
204 short int var203 /* : Bool */;
205 short int var204 /* : Bool */;
206 short int var205 /* : Bool */;
207 static val* varonce206;
208 val* var207 /* : String */;
209 char* var208 /* : NativeString */;
210 long var209 /* : Int */;
211 val* var210 /* : FlatString */;
212 val* var211 /* : Array[Object] */;
213 long var212 /* : Int */;
214 val* var213 /* : NativeArray[Object] */;
215 val* var214 /* : String */;
216 val* var215 /* : String */;
217 static val* varonce216;
218 val* var217 /* : String */;
219 char* var218 /* : NativeString */;
220 long var219 /* : Int */;
221 val* var220 /* : FlatString */;
222 val* var221 /* : Array[Object] */;
223 long var222 /* : Int */;
224 val* var223 /* : NativeArray[Object] */;
225 val* var224 /* : String */;
226 static val* varonce225;
227 val* var226 /* : String */;
228 char* var227 /* : NativeString */;
229 long var228 /* : Int */;
230 val* var229 /* : FlatString */;
231 static val* varonce230;
232 val* var231 /* : String */;
233 char* var232 /* : NativeString */;
234 long var233 /* : Int */;
235 val* var234 /* : FlatString */;
236 static val* varonce235;
237 val* var236 /* : String */;
238 char* var237 /* : NativeString */;
239 long var238 /* : Int */;
240 val* var239 /* : FlatString */;
241 val* var240 /* : Array[Object] */;
242 long var241 /* : Int */;
243 val* var242 /* : NativeArray[Object] */;
244 val* var243 /* : String */;
245 static val* varonce244;
246 val* var245 /* : String */;
247 char* var246 /* : NativeString */;
248 long var247 /* : Int */;
249 val* var248 /* : FlatString */;
250 val* var249 /* : Array[Object] */;
251 long var250 /* : Int */;
252 val* var251 /* : NativeArray[Object] */;
253 val* var252 /* : String */;
254 val* var253 /* : null */;
255 short int var254 /* : Bool */;
256 short int var255 /* : Bool */;
257 short int var257 /* : Bool */;
258 short int var258 /* : Bool */;
259 short int var259 /* : Bool */;
260 val* var260 /* : RuntimeVariable */;
261 static val* varonce262;
262 val* var263 /* : String */;
263 char* var264 /* : NativeString */;
264 long var265 /* : Int */;
265 val* var266 /* : FlatString */;
266 val* var267 /* : String */;
267 val* var269 /* : nullable RuntimeVariable */;
268 val* var_subret /* var subret: nullable RuntimeVariable */;
269 val* var270 /* : null */;
270 short int var271 /* : Bool */;
271 short int var272 /* : Bool */;
272 short int var274 /* : Bool */;
273 short int var275 /* : Bool */;
274 short int var276 /* : Bool */;
275 val* var277 /* : null */;
276 short int var278 /* : Bool */;
277 short int var279 /* : Bool */;
278 short int var281 /* : Bool */;
279 short int var282 /* : Bool */;
280 short int var283 /* : Bool */;
281 val* var284 /* : nullable RuntimeVariable */;
282 val* var286 /* : nullable RuntimeVariable */;
283 val* var287 /* : nullable String */;
284 val* var289 /* : nullable String */;
285 static val* varonce290;
286 val* var291 /* : String */;
287 char* var292 /* : NativeString */;
288 long var293 /* : Int */;
289 val* var294 /* : FlatString */;
290 val* var295 /* : Array[Object] */;
291 long var296 /* : Int */;
292 val* var297 /* : NativeArray[Object] */;
293 val* var298 /* : String */;
294 val* var299 /* : null */;
295 short int var300 /* : Bool */;
296 short int var301 /* : Bool */;
297 short int var303 /* : Bool */;
298 short int var304 /* : Bool */;
299 short int var305 /* : Bool */;
300 static val* varonce306;
301 val* var307 /* : String */;
302 char* var308 /* : NativeString */;
303 long var309 /* : Int */;
304 val* var310 /* : FlatString */;
305 val* var311 /* : nullable RuntimeVariable */;
306 val* var313 /* : nullable RuntimeVariable */;
307 static val* varonce314;
308 val* var315 /* : String */;
309 char* var316 /* : NativeString */;
310 long var317 /* : Int */;
311 val* var318 /* : FlatString */;
312 val* var319 /* : Array[Object] */;
313 long var320 /* : Int */;
314 val* var321 /* : NativeArray[Object] */;
315 val* var322 /* : String */;
316 static val* varonce323;
317 val* var324 /* : String */;
318 char* var325 /* : NativeString */;
319 long var326 /* : Int */;
320 val* var327 /* : FlatString */;
321 val* var328 /* : String */;
322 static val* varonce329;
323 val* var330 /* : String */;
324 char* var331 /* : NativeString */;
325 long var332 /* : Int */;
326 val* var333 /* : FlatString */;
327 long var334 /* : Int */;
328 short int var335 /* : Bool */;
329 short int var336 /* : Bool */;
330 val* var337 /* : HashMap[String, String] */;
331 val* var339 /* : HashMap[String, String] */;
332 val* var340 /* : String */;
333 val* var341 /* : MClassDef */;
334 val* var343 /* : MClassDef */;
335 val* var344 /* : MModule */;
336 val* var346 /* : MModule */;
337 val* var347 /* : String */;
338 val* var349 /* : String */;
339 static val* varonce350;
340 val* var351 /* : String */;
341 char* var352 /* : NativeString */;
342 long var353 /* : Int */;
343 val* var354 /* : FlatString */;
344 val* var355 /* : MClassDef */;
345 val* var357 /* : MClassDef */;
346 val* var358 /* : MClass */;
347 val* var360 /* : MClass */;
348 val* var361 /* : String */;
349 val* var363 /* : String */;
350 static val* varonce364;
351 val* var365 /* : String */;
352 char* var366 /* : NativeString */;
353 long var367 /* : Int */;
354 val* var368 /* : FlatString */;
355 val* var369 /* : MProperty */;
356 val* var371 /* : MProperty */;
357 val* var372 /* : String */;
358 val* var374 /* : String */;
359 static val* varonce375;
360 val* var376 /* : String */;
361 char* var377 /* : NativeString */;
362 long var378 /* : Int */;
363 val* var379 /* : FlatString */;
364 val* var380 /* : Location */;
365 val* var382 /* : Location */;
366 val* var383 /* : nullable SourceFile */;
367 val* var385 /* : nullable SourceFile */;
368 val* var386 /* : String */;
369 val* var388 /* : String */;
370 static val* varonce389;
371 val* var390 /* : String */;
372 char* var391 /* : NativeString */;
373 long var392 /* : Int */;
374 val* var393 /* : FlatString */;
375 val* var394 /* : Location */;
376 val* var396 /* : Location */;
377 long var397 /* : Int */;
378 long var399 /* : Int */;
379 static val* varonce400;
380 val* var401 /* : String */;
381 char* var402 /* : NativeString */;
382 long var403 /* : Int */;
383 val* var404 /* : FlatString */;
384 val* var405 /* : Array[Object] */;
385 long var406 /* : Int */;
386 val* var407 /* : NativeArray[Object] */;
387 val* var408 /* : Object */;
388 val* var409 /* : String */;
389 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
390 /* <p0:AbstractCompiler> isa COMPILER */
391 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
392 cltype = type_struct->color;
393 idtype = type_struct->id;
394 if(cltype >= p0->type->table_size) {
395 var = 0;
396 } else {
397 var = p0->type->type_table[cltype] == idtype;
398 }
399 if (unlikely(!var)) {
400 var_class_name = p0 == NULL ? "null" : p0->type->name;
401 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
402 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1873);
403 show_backtrace(1);
404 }
405 var_compiler = p0;
406 {
407 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:VirtualRuntimeFunction> */
408 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:VirtualRuntimeFunction> */
409 if (unlikely(var3 == NULL)) {
410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
411 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
412 show_backtrace(1);
413 }
414 var1 = var3;
415 RET_LABEL2:(void)0;
416 }
417 }
418 var_mmethoddef = var1;
419 {
420 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:VirtualRuntimeFunction> */
421 var6 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:VirtualRuntimeFunction> */
422 if (unlikely(var6 == NULL)) {
423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
424 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
425 show_backtrace(1);
426 }
427 var4 = var6;
428 RET_LABEL5:(void)0;
429 }
430 }
431 {
432 { /* Inline model#MPropDef#mclassdef (var4) on <var4:MMethodDef> */
433 var9 = var4->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var4:MMethodDef> */
434 if (unlikely(var9 == NULL)) {
435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
436 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
437 show_backtrace(1);
438 }
439 var7 = var9;
440 RET_LABEL8:(void)0;
441 }
442 }
443 {
444 { /* Inline model#MClassDef#bound_mtype (var7) on <var7:MClassDef> */
445 var12 = var7->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var7:MClassDef> */
446 if (unlikely(var12 == NULL)) {
447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
448 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
449 show_backtrace(1);
450 }
451 var10 = var12;
452 RET_LABEL11:(void)0;
453 }
454 }
455 var_recv = var10;
456 {
457 var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
458 }
459 var_v = var13;
460 var14 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
461 if (varonce) {
462 var15 = varonce;
463 } else {
464 var16 = "self";
465 var17 = 4;
466 var18 = string__NativeString__to_s_with_length(var16, var17);
467 var15 = var18;
468 varonce = var15;
469 }
470 {
471 var19 = abstract_compiler__AbstractCompilerVisitor__object_type(var_v);
472 }
473 {
474 abstract_compiler__RuntimeVariable__init(var14, var15, var19, var_recv); /* Direct call abstract_compiler#RuntimeVariable#init on <var14:RuntimeVariable>*/
475 }
476 var_selfvar = var14;
477 var20 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
478 {
479 ((void (*)(val*))(var20->class->vft[COLOR_kernel__Object__init]))(var20) /* init on <var20:Array[RuntimeVariable]>*/;
480 }
481 var_arguments = var20;
482 var21 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
483 {
484 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_compiler__Frame__visitor_61d]))(var21, var_v) /* visitor= on <var21:Frame>*/;
485 }
486 {
487 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_compiler__Frame__mpropdef_61d]))(var21, var_mmethoddef) /* mpropdef= on <var21:Frame>*/;
488 }
489 {
490 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_compiler__Frame__receiver_61d]))(var21, var_recv) /* receiver= on <var21:Frame>*/;
491 }
492 {
493 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_compiler__Frame__arguments_61d]))(var21, var_arguments) /* arguments= on <var21:Frame>*/;
494 }
495 {
496 ((void (*)(val*))(var21->class->vft[COLOR_kernel__Object__init]))(var21) /* init on <var21:Frame>*/;
497 }
498 var_frame = var21;
499 {
500 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (var_v,var_frame) on <var_v:AbstractCompilerVisitor> */
501 var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <var_v:AbstractCompilerVisitor> */
502 RET_LABEL22:(void)0;
503 }
504 }
505 var23 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
506 {
507 ((void (*)(val*))(var23->class->vft[COLOR_kernel__Object__init]))(var23) /* init on <var23:FlatBuffer>*/;
508 }
509 var_sig = var23;
510 var24 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
511 {
512 ((void (*)(val*))(var24->class->vft[COLOR_kernel__Object__init]))(var24) /* init on <var24:FlatBuffer>*/;
513 }
514 var_comment = var24;
515 {
516 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:VirtualRuntimeFunction> */
517 var27 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:VirtualRuntimeFunction> */
518 if (unlikely(var27 == NULL)) {
519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
520 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
521 show_backtrace(1);
522 }
523 var25 = var27;
524 RET_LABEL26:(void)0;
525 }
526 }
527 {
528 { /* Inline model#MPropDef#mproperty (var25) on <var25:MMethodDef> */
529 var30 = var25->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var25:MMethodDef> */
530 if (unlikely(var30 == NULL)) {
531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
532 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
533 show_backtrace(1);
534 }
535 var28 = var30;
536 RET_LABEL29:(void)0;
537 }
538 }
539 {
540 { /* Inline model#MProperty#intro (var28) on <var28:MProperty(MMethod)> */
541 var33 = var28->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var28:MProperty(MMethod)> */
542 if (unlikely(var33 == NULL)) {
543 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
544 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
545 show_backtrace(1);
546 }
547 var31 = var33;
548 RET_LABEL32:(void)0;
549 }
550 }
551 {
552 { /* Inline model#MPropDef#mclassdef (var31) on <var31:MPropDef(MMethodDef)> */
553 var36 = var31->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var31:MPropDef(MMethodDef)> */
554 if (unlikely(var36 == NULL)) {
555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
556 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
557 show_backtrace(1);
558 }
559 var34 = var36;
560 RET_LABEL35:(void)0;
561 }
562 }
563 var_intromclassdef = var34;
564 {
565 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
566 var39 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
567 if (unlikely(var39 == NULL)) {
568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
569 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
570 show_backtrace(1);
571 }
572 var37 = var39;
573 RET_LABEL38:(void)0;
574 }
575 }
576 {
577 { /* Inline model#MProperty#intro (var37) on <var37:MProperty(MMethod)> */
578 var42 = var37->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var37:MProperty(MMethod)> */
579 if (unlikely(var42 == NULL)) {
580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
581 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
582 show_backtrace(1);
583 }
584 var40 = var42;
585 RET_LABEL41:(void)0;
586 }
587 }
588 {
589 { /* Inline model#MMethodDef#msignature (var40) on <var40:MPropDef(MMethodDef)> */
590 var45 = var40->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var40:MPropDef(MMethodDef)> */
591 var43 = var45;
592 RET_LABEL44:(void)0;
593 }
594 }
595 {
596 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
597 var48 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
598 if (unlikely(var48 == NULL)) {
599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
600 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
601 show_backtrace(1);
602 }
603 var46 = var48;
604 RET_LABEL47:(void)0;
605 }
606 }
607 {
608 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
609 var51 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
610 if (unlikely(var51 == NULL)) {
611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
612 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
613 show_backtrace(1);
614 }
615 var49 = var51;
616 RET_LABEL50:(void)0;
617 }
618 }
619 {
620 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
621 var54 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
622 if (unlikely(var54 == NULL)) {
623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
624 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
625 show_backtrace(1);
626 }
627 var52 = var54;
628 RET_LABEL53:(void)0;
629 }
630 }
631 var55 = 1;
632 if (var43 == NULL) {
633 PRINT_ERROR("Runtime error: %s", "Receiver is null");
634 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1889);
635 show_backtrace(1);
636 } else {
637 var56 = model__MSignature__resolve_for(var43, var46, var49, var52, var55);
638 }
639 var_msignature = var56;
640 {
641 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
642 var59 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
643 var57 = var59;
644 RET_LABEL58:(void)0;
645 }
646 }
647 var_ret = var57;
648 var60 = NULL;
649 if (var_ret == NULL) {
650 var61 = 0; /* is null */
651 } else {
652 var61 = 1; /* arg is null and recv is not */
653 }
654 if (0) {
655 { /* Inline kernel#Object#!= (var_ret,var60) on <var_ret:nullable MType> */
656 var_other = var60;
657 {
658 var65 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
659 var64 = var65;
660 }
661 var66 = !var64;
662 var62 = var66;
663 goto RET_LABEL63;
664 RET_LABEL63:(void)0;
665 }
666 var61 = var62;
667 }
668 if (var61){
669 {
670 var67 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
671 }
672 if (varonce68) {
673 var69 = varonce68;
674 } else {
675 var70 = " ";
676 var71 = 1;
677 var72 = string__NativeString__to_s_with_length(var70, var71);
678 var69 = var72;
679 varonce68 = var69;
680 }
681 var73 = NEW_array__Array(&type_array__Arraykernel__Object);
682 { /* var73 = array_instance Array[Object] */
683 var74 = 2;
684 var75 = NEW_array__NativeArray(var74, &type_array__NativeArraykernel__Object);
685 ((struct instance_array__NativeArray*)var75)->values[0] = (val*) var67;
686 ((struct instance_array__NativeArray*)var75)->values[1] = (val*) var69;
687 {
688 ((void (*)(val*, val*, long))(var73->class->vft[COLOR_array__Array__with_native]))(var73, var75, var74) /* with_native on <var73:Array[Object]>*/;
689 }
690 }
691 {
692 var76 = ((val* (*)(val*))(var73->class->vft[COLOR_string__Object__to_s]))(var73) /* to_s on <var73:Array[Object]>*/;
693 }
694 {
695 string__FlatBuffer__append(var_sig, var76); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
696 }
697 } else {
698 if (varonce77) {
699 var78 = varonce77;
700 } else {
701 var79 = "void ";
702 var80 = 5;
703 var81 = string__NativeString__to_s_with_length(var79, var80);
704 var78 = var81;
705 varonce77 = var78;
706 }
707 {
708 string__FlatBuffer__append(var_sig, var78); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
709 }
710 }
711 {
712 var82 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
713 }
714 {
715 string__FlatBuffer__append(var_sig, var82); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
716 }
717 if (varonce83) {
718 var84 = varonce83;
719 } else {
720 var85 = "(";
721 var86 = 1;
722 var87 = string__NativeString__to_s_with_length(var85, var86);
723 var84 = var87;
724 varonce83 = var84;
725 }
726 {
727 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_selfvar) on <var_selfvar:RuntimeVariable> */
728 var90 = var_selfvar->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_selfvar:RuntimeVariable> */
729 if (unlikely(var90 == NULL)) {
730 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
731 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
732 show_backtrace(1);
733 }
734 var88 = var90;
735 RET_LABEL89:(void)0;
736 }
737 }
738 {
739 var91 = ((val* (*)(val*))(var88->class->vft[COLOR_abstract_compiler__MType__ctype]))(var88) /* ctype on <var88:MType>*/;
740 }
741 if (varonce92) {
742 var93 = varonce92;
743 } else {
744 var94 = " ";
745 var95 = 1;
746 var96 = string__NativeString__to_s_with_length(var94, var95);
747 var93 = var96;
748 varonce92 = var93;
749 }
750 var97 = NEW_array__Array(&type_array__Arraykernel__Object);
751 { /* var97 = array_instance Array[Object] */
752 var98 = 4;
753 var99 = NEW_array__NativeArray(var98, &type_array__NativeArraykernel__Object);
754 ((struct instance_array__NativeArray*)var99)->values[0] = (val*) var84;
755 ((struct instance_array__NativeArray*)var99)->values[1] = (val*) var91;
756 ((struct instance_array__NativeArray*)var99)->values[2] = (val*) var93;
757 ((struct instance_array__NativeArray*)var99)->values[3] = (val*) var_selfvar;
758 {
759 ((void (*)(val*, val*, long))(var97->class->vft[COLOR_array__Array__with_native]))(var97, var99, var98) /* with_native on <var97:Array[Object]>*/;
760 }
761 }
762 {
763 var100 = ((val* (*)(val*))(var97->class->vft[COLOR_string__Object__to_s]))(var97) /* to_s on <var97:Array[Object]>*/;
764 }
765 {
766 string__FlatBuffer__append(var_sig, var100); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
767 }
768 if (varonce101) {
769 var102 = varonce101;
770 } else {
771 var103 = "(";
772 var104 = 1;
773 var105 = string__NativeString__to_s_with_length(var103, var104);
774 var102 = var105;
775 varonce101 = var102;
776 }
777 if (varonce106) {
778 var107 = varonce106;
779 } else {
780 var108 = ": ";
781 var109 = 2;
782 var110 = string__NativeString__to_s_with_length(var108, var109);
783 var107 = var110;
784 varonce106 = var107;
785 }
786 {
787 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_selfvar) on <var_selfvar:RuntimeVariable> */
788 var113 = var_selfvar->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_selfvar:RuntimeVariable> */
789 if (unlikely(var113 == NULL)) {
790 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
791 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
792 show_backtrace(1);
793 }
794 var111 = var113;
795 RET_LABEL112:(void)0;
796 }
797 }
798 var114 = NEW_array__Array(&type_array__Arraykernel__Object);
799 { /* var114 = array_instance Array[Object] */
800 var115 = 4;
801 var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object);
802 ((struct instance_array__NativeArray*)var116)->values[0] = (val*) var102;
803 ((struct instance_array__NativeArray*)var116)->values[1] = (val*) var_selfvar;
804 ((struct instance_array__NativeArray*)var116)->values[2] = (val*) var107;
805 ((struct instance_array__NativeArray*)var116)->values[3] = (val*) var111;
806 {
807 ((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on <var114:Array[Object]>*/;
808 }
809 }
810 {
811 var117 = ((val* (*)(val*))(var114->class->vft[COLOR_string__Object__to_s]))(var114) /* to_s on <var114:Array[Object]>*/;
812 }
813 {
814 string__FlatBuffer__append(var_comment, var117); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
815 }
816 {
817 array__Array__add(var_arguments, var_selfvar); /* Direct call array#Array#add on <var_arguments:Array[RuntimeVariable]>*/
818 }
819 var118 = 0;
820 var_i = var118;
821 {
822 var119 = model__MSignature__arity(var_msignature);
823 }
824 var_ = var119;
825 for(;;) {
826 {
827 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
828 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
829 /* <var_:Int> isa OTHER */
830 var122 = 1; /* easy <var_:Int> isa OTHER*/
831 if (unlikely(!var122)) {
832 var_class_name125 = type_kernel__Int.name;
833 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name125);
834 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
835 show_backtrace(1);
836 }
837 var126 = var_i < var_;
838 var120 = var126;
839 goto RET_LABEL121;
840 RET_LABEL121:(void)0;
841 }
842 }
843 if (var120){
844 {
845 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
846 var129 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
847 if (unlikely(var129 == NULL)) {
848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
849 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
850 show_backtrace(1);
851 }
852 var127 = var129;
853 RET_LABEL128:(void)0;
854 }
855 }
856 {
857 var130 = array__Array___91d_93d(var127, var_i);
858 }
859 {
860 { /* Inline model#MParameter#mtype (var130) on <var130:nullable Object(MParameter)> */
861 var133 = var130->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var130:nullable Object(MParameter)> */
862 if (unlikely(var133 == NULL)) {
863 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
864 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
865 show_backtrace(1);
866 }
867 var131 = var133;
868 RET_LABEL132:(void)0;
869 }
870 }
871 var_mtype = var131;
872 {
873 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
874 var136 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
875 var134 = var136;
876 RET_LABEL135:(void)0;
877 }
878 }
879 {
880 { /* Inline kernel#Int#== (var_i,var134) on <var_i:Int> */
881 var140 = var_i == var134;
882 var138 = var140;
883 goto RET_LABEL139;
884 RET_LABEL139:(void)0;
885 }
886 var137 = var138;
887 }
888 if (var137){
889 if (varonce141) {
890 var142 = varonce141;
891 } else {
892 var143 = "Array";
893 var144 = 5;
894 var145 = string__NativeString__to_s_with_length(var143, var144);
895 var142 = var145;
896 varonce141 = var142;
897 }
898 {
899 var146 = abstract_compiler__AbstractCompilerVisitor__get_class(var_v, var142);
900 }
901 var147 = NEW_array__Array(&type_array__Arraymodel__MType);
902 var148 = 1;
903 {
904 array__Array__with_capacity(var147, var148); /* Direct call array#Array#with_capacity on <var147:Array[MType]>*/
905 }
906 var_149 = var147;
907 {
908 array__AbstractArray__push(var_149, var_mtype); /* Direct call array#AbstractArray#push on <var_149:Array[MType]>*/
909 }
910 {
911 var150 = model__MClass__get_mtype(var146, var_149);
912 }
913 var_mtype = var150;
914 } else {
915 }
916 if (varonce151) {
917 var152 = varonce151;
918 } else {
919 var153 = ", ";
920 var154 = 2;
921 var155 = string__NativeString__to_s_with_length(var153, var154);
922 var152 = var155;
923 varonce151 = var152;
924 }
925 var156 = NEW_array__Array(&type_array__Arraykernel__Object);
926 { /* var156 = array_instance Array[Object] */
927 var157 = 2;
928 var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object);
929 ((struct instance_array__NativeArray*)var158)->values[0] = (val*) var152;
930 ((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_mtype;
931 {
932 ((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on <var156:Array[Object]>*/;
933 }
934 }
935 {
936 var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on <var156:Array[Object]>*/;
937 }
938 {
939 string__FlatBuffer__append(var_comment, var159); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
940 }
941 if (varonce160) {
942 var161 = varonce160;
943 } else {
944 var162 = ", ";
945 var163 = 2;
946 var164 = string__NativeString__to_s_with_length(var162, var163);
947 var161 = var164;
948 varonce160 = var161;
949 }
950 {
951 var165 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
952 }
953 if (varonce166) {
954 var167 = varonce166;
955 } else {
956 var168 = " p";
957 var169 = 2;
958 var170 = string__NativeString__to_s_with_length(var168, var169);
959 var167 = var170;
960 varonce166 = var167;
961 }
962 var171 = NEW_array__Array(&type_array__Arraykernel__Object);
963 { /* var171 = array_instance Array[Object] */
964 var172 = 4;
965 var173 = NEW_array__NativeArray(var172, &type_array__NativeArraykernel__Object);
966 ((struct instance_array__NativeArray*)var173)->values[0] = (val*) var161;
967 ((struct instance_array__NativeArray*)var173)->values[1] = (val*) var165;
968 ((struct instance_array__NativeArray*)var173)->values[2] = (val*) var167;
969 var174 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
970 ((struct instance_array__NativeArray*)var173)->values[3] = (val*) var174;
971 {
972 ((void (*)(val*, val*, long))(var171->class->vft[COLOR_array__Array__with_native]))(var171, var173, var172) /* with_native on <var171:Array[Object]>*/;
973 }
974 }
975 {
976 var175 = ((val* (*)(val*))(var171->class->vft[COLOR_string__Object__to_s]))(var171) /* to_s on <var171:Array[Object]>*/;
977 }
978 {
979 string__FlatBuffer__append(var_sig, var175); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
980 }
981 var176 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
982 if (varonce177) {
983 var178 = varonce177;
984 } else {
985 var179 = "p";
986 var180 = 1;
987 var181 = string__NativeString__to_s_with_length(var179, var180);
988 var178 = var181;
989 varonce177 = var178;
990 }
991 var182 = NEW_array__Array(&type_array__Arraykernel__Object);
992 { /* var182 = array_instance Array[Object] */
993 var183 = 2;
994 var184 = NEW_array__NativeArray(var183, &type_array__NativeArraykernel__Object);
995 ((struct instance_array__NativeArray*)var184)->values[0] = (val*) var178;
996 var185 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
997 ((struct instance_array__NativeArray*)var184)->values[1] = (val*) var185;
998 {
999 ((void (*)(val*, val*, long))(var182->class->vft[COLOR_array__Array__with_native]))(var182, var184, var183) /* with_native on <var182:Array[Object]>*/;
1000 }
1001 }
1002 {
1003 var186 = ((val* (*)(val*))(var182->class->vft[COLOR_string__Object__to_s]))(var182) /* to_s on <var182:Array[Object]>*/;
1004 }
1005 {
1006 abstract_compiler__RuntimeVariable__init(var176, var186, var_mtype, var_mtype); /* Direct call abstract_compiler#RuntimeVariable#init on <var176:RuntimeVariable>*/
1007 }
1008 var_argvar = var176;
1009 {
1010 array__Array__add(var_arguments, var_argvar); /* Direct call array#Array#add on <var_arguments:Array[RuntimeVariable]>*/
1011 }
1012 var187 = 1;
1013 {
1014 var188 = kernel__Int__successor(var_i, var187);
1015 }
1016 var_i = var188;
1017 } else {
1018 goto BREAK_label;
1019 }
1020 }
1021 BREAK_label: (void)0;
1022 if (varonce189) {
1023 var190 = varonce189;
1024 } else {
1025 var191 = ")";
1026 var192 = 1;
1027 var193 = string__NativeString__to_s_with_length(var191, var192);
1028 var190 = var193;
1029 varonce189 = var190;
1030 }
1031 {
1032 string__FlatBuffer__append(var_sig, var190); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
1033 }
1034 if (varonce194) {
1035 var195 = varonce194;
1036 } else {
1037 var196 = ")";
1038 var197 = 1;
1039 var198 = string__NativeString__to_s_with_length(var196, var197);
1040 var195 = var198;
1041 varonce194 = var195;
1042 }
1043 {
1044 string__FlatBuffer__append(var_comment, var195); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
1045 }
1046 var199 = NULL;
1047 if (var_ret == NULL) {
1048 var200 = 0; /* is null */
1049 } else {
1050 var200 = 1; /* arg is null and recv is not */
1051 }
1052 if (0) {
1053 { /* Inline kernel#Object#!= (var_ret,var199) on <var_ret:nullable MType> */
1054 var_other = var199;
1055 {
1056 var204 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
1057 var203 = var204;
1058 }
1059 var205 = !var203;
1060 var201 = var205;
1061 goto RET_LABEL202;
1062 RET_LABEL202:(void)0;
1063 }
1064 var200 = var201;
1065 }
1066 if (var200){
1067 if (varonce206) {
1068 var207 = varonce206;
1069 } else {
1070 var208 = ": ";
1071 var209 = 2;
1072 var210 = string__NativeString__to_s_with_length(var208, var209);
1073 var207 = var210;
1074 varonce206 = var207;
1075 }
1076 var211 = NEW_array__Array(&type_array__Arraykernel__Object);
1077 { /* var211 = array_instance Array[Object] */
1078 var212 = 2;
1079 var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
1080 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var207;
1081 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var_ret;
1082 {
1083 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
1084 }
1085 }
1086 {
1087 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
1088 }
1089 {
1090 string__FlatBuffer__append(var_comment, var214); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
1091 }
1092 } else {
1093 }
1094 {
1095 var215 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
1096 }
1097 if (varonce216) {
1098 var217 = varonce216;
1099 } else {
1100 var218 = ";";
1101 var219 = 1;
1102 var220 = string__NativeString__to_s_with_length(var218, var219);
1103 var217 = var220;
1104 varonce216 = var217;
1105 }
1106 var221 = NEW_array__Array(&type_array__Arraykernel__Object);
1107 { /* var221 = array_instance Array[Object] */
1108 var222 = 2;
1109 var223 = NEW_array__NativeArray(var222, &type_array__NativeArraykernel__Object);
1110 ((struct instance_array__NativeArray*)var223)->values[0] = (val*) var_sig;
1111 ((struct instance_array__NativeArray*)var223)->values[1] = (val*) var217;
1112 {
1113 ((void (*)(val*, val*, long))(var221->class->vft[COLOR_array__Array__with_native]))(var221, var223, var222) /* with_native on <var221:Array[Object]>*/;
1114 }
1115 }
1116 {
1117 var224 = ((val* (*)(val*))(var221->class->vft[COLOR_string__Object__to_s]))(var221) /* to_s on <var221:Array[Object]>*/;
1118 }
1119 {
1120 abstract_compiler__AbstractCompiler__provide_declaration(var_compiler, var215, var224); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <var_compiler:AbstractCompiler>*/
1121 }
1122 if (varonce225) {
1123 var226 = varonce225;
1124 } else {
1125 var227 = "/* method ";
1126 var228 = 10;
1127 var229 = string__NativeString__to_s_with_length(var227, var228);
1128 var226 = var229;
1129 varonce225 = var226;
1130 }
1131 if (varonce230) {
1132 var231 = varonce230;
1133 } else {
1134 var232 = " for ";
1135 var233 = 5;
1136 var234 = string__NativeString__to_s_with_length(var232, var233);
1137 var231 = var234;
1138 varonce230 = var231;
1139 }
1140 if (varonce235) {
1141 var236 = varonce235;
1142 } else {
1143 var237 = " */";
1144 var238 = 3;
1145 var239 = string__NativeString__to_s_with_length(var237, var238);
1146 var236 = var239;
1147 varonce235 = var236;
1148 }
1149 var240 = NEW_array__Array(&type_array__Arraykernel__Object);
1150 { /* var240 = array_instance Array[Object] */
1151 var241 = 5;
1152 var242 = NEW_array__NativeArray(var241, &type_array__NativeArraykernel__Object);
1153 ((struct instance_array__NativeArray*)var242)->values[0] = (val*) var226;
1154 ((struct instance_array__NativeArray*)var242)->values[1] = (val*) self;
1155 ((struct instance_array__NativeArray*)var242)->values[2] = (val*) var231;
1156 ((struct instance_array__NativeArray*)var242)->values[3] = (val*) var_comment;
1157 ((struct instance_array__NativeArray*)var242)->values[4] = (val*) var236;
1158 {
1159 ((void (*)(val*, val*, long))(var240->class->vft[COLOR_array__Array__with_native]))(var240, var242, var241) /* with_native on <var240:Array[Object]>*/;
1160 }
1161 }
1162 {
1163 var243 = ((val* (*)(val*))(var240->class->vft[COLOR_string__Object__to_s]))(var240) /* to_s on <var240:Array[Object]>*/;
1164 }
1165 {
1166 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var243); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
1167 }
1168 if (varonce244) {
1169 var245 = varonce244;
1170 } else {
1171 var246 = " {";
1172 var247 = 2;
1173 var248 = string__NativeString__to_s_with_length(var246, var247);
1174 var245 = var248;
1175 varonce244 = var245;
1176 }
1177 var249 = NEW_array__Array(&type_array__Arraykernel__Object);
1178 { /* var249 = array_instance Array[Object] */
1179 var250 = 2;
1180 var251 = NEW_array__NativeArray(var250, &type_array__NativeArraykernel__Object);
1181 ((struct instance_array__NativeArray*)var251)->values[0] = (val*) var_sig;
1182 ((struct instance_array__NativeArray*)var251)->values[1] = (val*) var245;
1183 {
1184 ((void (*)(val*, val*, long))(var249->class->vft[COLOR_array__Array__with_native]))(var249, var251, var250) /* with_native on <var249:Array[Object]>*/;
1185 }
1186 }
1187 {
1188 var252 = ((val* (*)(val*))(var249->class->vft[COLOR_string__Object__to_s]))(var249) /* to_s on <var249:Array[Object]>*/;
1189 }
1190 {
1191 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var252); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
1192 }
1193 var253 = NULL;
1194 if (var_ret == NULL) {
1195 var254 = 0; /* is null */
1196 } else {
1197 var254 = 1; /* arg is null and recv is not */
1198 }
1199 if (0) {
1200 { /* Inline kernel#Object#!= (var_ret,var253) on <var_ret:nullable MType> */
1201 var_other = var253;
1202 {
1203 var258 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
1204 var257 = var258;
1205 }
1206 var259 = !var257;
1207 var255 = var259;
1208 goto RET_LABEL256;
1209 RET_LABEL256:(void)0;
1210 }
1211 var254 = var255;
1212 }
1213 if (var254){
1214 {
1215 var260 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var_ret);
1216 }
1217 {
1218 { /* Inline abstract_compiler#Frame#returnvar= (var_frame,var260) on <var_frame:Frame> */
1219 var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val = var260; /* _returnvar on <var_frame:Frame> */
1220 RET_LABEL261:(void)0;
1221 }
1222 }
1223 } else {
1224 }
1225 if (varonce262) {
1226 var263 = varonce262;
1227 } else {
1228 var264 = "RET_LABEL";
1229 var265 = 9;
1230 var266 = string__NativeString__to_s_with_length(var264, var265);
1231 var263 = var266;
1232 varonce262 = var263;
1233 }
1234 {
1235 var267 = abstract_compiler__AbstractCompilerVisitor__get_name(var_v, var263);
1236 }
1237 {
1238 { /* Inline abstract_compiler#Frame#returnlabel= (var_frame,var267) on <var_frame:Frame> */
1239 var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val = var267; /* _returnlabel on <var_frame:Frame> */
1240 RET_LABEL268:(void)0;
1241 }
1242 }
1243 {
1244 var269 = separate_compiler__SeparateCompilerVisitor__call(var_v, var_mmethoddef, var_recv, var_arguments);
1245 }
1246 var_subret = var269;
1247 var270 = NULL;
1248 if (var_ret == NULL) {
1249 var271 = 0; /* is null */
1250 } else {
1251 var271 = 1; /* arg is null and recv is not */
1252 }
1253 if (0) {
1254 { /* Inline kernel#Object#!= (var_ret,var270) on <var_ret:nullable MType> */
1255 var_other = var270;
1256 {
1257 var275 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
1258 var274 = var275;
1259 }
1260 var276 = !var274;
1261 var272 = var276;
1262 goto RET_LABEL273;
1263 RET_LABEL273:(void)0;
1264 }
1265 var271 = var272;
1266 }
1267 if (var271){
1268 var277 = NULL;
1269 if (var_subret == NULL) {
1270 var278 = 0; /* is null */
1271 } else {
1272 var278 = 1; /* arg is null and recv is not */
1273 }
1274 if (0) {
1275 { /* Inline kernel#Object#!= (var_subret,var277) on <var_subret:nullable RuntimeVariable> */
1276 var_other = var277;
1277 {
1278 var282 = ((short int (*)(val*, val*))(var_subret->class->vft[COLOR_kernel__Object___61d_61d]))(var_subret, var_other) /* == on <var_subret:nullable RuntimeVariable(RuntimeVariable)>*/;
1279 var281 = var282;
1280 }
1281 var283 = !var281;
1282 var279 = var283;
1283 goto RET_LABEL280;
1284 RET_LABEL280:(void)0;
1285 }
1286 var278 = var279;
1287 }
1288 if (unlikely(!var278)) {
1289 PRINT_ERROR("Runtime error: %s", "Assert failed");
1290 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1926);
1291 show_backtrace(1);
1292 }
1293 {
1294 { /* Inline abstract_compiler#Frame#returnvar (var_frame) on <var_frame:Frame> */
1295 var286 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val; /* _returnvar on <var_frame:Frame> */
1296 var284 = var286;
1297 RET_LABEL285:(void)0;
1298 }
1299 }
1300 if (unlikely(var284 == NULL)) {
1301 PRINT_ERROR("Runtime error: %s", "Cast failed");
1302 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1927);
1303 show_backtrace(1);
1304 }
1305 {
1306 abstract_compiler__AbstractCompilerVisitor__assign(var_v, var284, var_subret); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <var_v:AbstractCompilerVisitor>*/
1307 }
1308 } else {
1309 }
1310 {
1311 { /* Inline abstract_compiler#Frame#returnlabel (var_frame) on <var_frame:Frame> */
1312 var289 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on <var_frame:Frame> */
1313 var287 = var289;
1314 RET_LABEL288:(void)0;
1315 }
1316 }
1317 if (unlikely(var287 == NULL)) {
1318 PRINT_ERROR("Runtime error: %s", "Cast failed");
1319 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1930);
1320 show_backtrace(1);
1321 }
1322 if (varonce290) {
1323 var291 = varonce290;
1324 } else {
1325 var292 = ":;";
1326 var293 = 2;
1327 var294 = string__NativeString__to_s_with_length(var292, var293);
1328 var291 = var294;
1329 varonce290 = var291;
1330 }
1331 var295 = NEW_array__Array(&type_array__Arraykernel__Object);
1332 { /* var295 = array_instance Array[Object] */
1333 var296 = 2;
1334 var297 = NEW_array__NativeArray(var296, &type_array__NativeArraykernel__Object);
1335 ((struct instance_array__NativeArray*)var297)->values[0] = (val*) var287;
1336 ((struct instance_array__NativeArray*)var297)->values[1] = (val*) var291;
1337 {
1338 ((void (*)(val*, val*, long))(var295->class->vft[COLOR_array__Array__with_native]))(var295, var297, var296) /* with_native on <var295:Array[Object]>*/;
1339 }
1340 }
1341 {
1342 var298 = ((val* (*)(val*))(var295->class->vft[COLOR_string__Object__to_s]))(var295) /* to_s on <var295:Array[Object]>*/;
1343 }
1344 {
1345 abstract_compiler__AbstractCompilerVisitor__add(var_v, var298); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1346 }
1347 var299 = NULL;
1348 if (var_ret == NULL) {
1349 var300 = 0; /* is null */
1350 } else {
1351 var300 = 1; /* arg is null and recv is not */
1352 }
1353 if (0) {
1354 { /* Inline kernel#Object#!= (var_ret,var299) on <var_ret:nullable MType> */
1355 var_other = var299;
1356 {
1357 var304 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
1358 var303 = var304;
1359 }
1360 var305 = !var303;
1361 var301 = var305;
1362 goto RET_LABEL302;
1363 RET_LABEL302:(void)0;
1364 }
1365 var300 = var301;
1366 }
1367 if (var300){
1368 if (varonce306) {
1369 var307 = varonce306;
1370 } else {
1371 var308 = "return ";
1372 var309 = 7;
1373 var310 = string__NativeString__to_s_with_length(var308, var309);
1374 var307 = var310;
1375 varonce306 = var307;
1376 }
1377 {
1378 { /* Inline abstract_compiler#Frame#returnvar (var_frame) on <var_frame:Frame> */
1379 var313 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val; /* _returnvar on <var_frame:Frame> */
1380 var311 = var313;
1381 RET_LABEL312:(void)0;
1382 }
1383 }
1384 if (unlikely(var311 == NULL)) {
1385 PRINT_ERROR("Runtime error: %s", "Cast failed");
1386 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1932);
1387 show_backtrace(1);
1388 }
1389 if (varonce314) {
1390 var315 = varonce314;
1391 } else {
1392 var316 = ";";
1393 var317 = 1;
1394 var318 = string__NativeString__to_s_with_length(var316, var317);
1395 var315 = var318;
1396 varonce314 = var315;
1397 }
1398 var319 = NEW_array__Array(&type_array__Arraykernel__Object);
1399 { /* var319 = array_instance Array[Object] */
1400 var320 = 3;
1401 var321 = NEW_array__NativeArray(var320, &type_array__NativeArraykernel__Object);
1402 ((struct instance_array__NativeArray*)var321)->values[0] = (val*) var307;
1403 ((struct instance_array__NativeArray*)var321)->values[1] = (val*) var311;
1404 ((struct instance_array__NativeArray*)var321)->values[2] = (val*) var315;
1405 {
1406 ((void (*)(val*, val*, long))(var319->class->vft[COLOR_array__Array__with_native]))(var319, var321, var320) /* with_native on <var319:Array[Object]>*/;
1407 }
1408 }
1409 {
1410 var322 = ((val* (*)(val*))(var319->class->vft[COLOR_string__Object__to_s]))(var319) /* to_s on <var319:Array[Object]>*/;
1411 }
1412 {
1413 abstract_compiler__AbstractCompilerVisitor__add(var_v, var322); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1414 }
1415 } else {
1416 }
1417 if (varonce323) {
1418 var324 = varonce323;
1419 } else {
1420 var325 = "}";
1421 var326 = 1;
1422 var327 = string__NativeString__to_s_with_length(var325, var326);
1423 var324 = var327;
1424 varonce323 = var324;
1425 }
1426 {
1427 abstract_compiler__AbstractCompilerVisitor__add(var_v, var324); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1428 }
1429 {
1430 var328 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
1431 }
1432 if (varonce329) {
1433 var330 = varonce329;
1434 } else {
1435 var331 = "VIRTUAL";
1436 var332 = 7;
1437 var333 = string__NativeString__to_s_with_length(var331, var332);
1438 var330 = var333;
1439 varonce329 = var330;
1440 }
1441 var334 = 0;
1442 {
1443 var335 = string__Text__has_substring(var328, var330, var334);
1444 }
1445 var336 = !var335;
1446 if (var336){
1447 {
1448 { /* Inline abstract_compiler#AbstractCompiler#names (var_compiler) on <var_compiler:AbstractCompiler> */
1449 var339 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <var_compiler:AbstractCompiler> */
1450 if (unlikely(var339 == NULL)) {
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
1452 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 460);
1453 show_backtrace(1);
1454 }
1455 var337 = var339;
1456 RET_LABEL338:(void)0;
1457 }
1458 }
1459 {
1460 var340 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
1461 }
1462 {
1463 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1464 var343 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
1465 if (unlikely(var343 == NULL)) {
1466 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1467 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
1468 show_backtrace(1);
1469 }
1470 var341 = var343;
1471 RET_LABEL342:(void)0;
1472 }
1473 }
1474 {
1475 { /* Inline model#MClassDef#mmodule (var341) on <var341:MClassDef> */
1476 var346 = var341->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var341:MClassDef> */
1477 if (unlikely(var346 == NULL)) {
1478 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1479 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
1480 show_backtrace(1);
1481 }
1482 var344 = var346;
1483 RET_LABEL345:(void)0;
1484 }
1485 }
1486 {
1487 { /* Inline mmodule#MModule#name (var344) on <var344:MModule> */
1488 var349 = var344->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var344:MModule> */
1489 if (unlikely(var349 == NULL)) {
1490 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1491 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
1492 show_backtrace(1);
1493 }
1494 var347 = var349;
1495 RET_LABEL348:(void)0;
1496 }
1497 }
1498 if (varonce350) {
1499 var351 = varonce350;
1500 } else {
1501 var352 = "::";
1502 var353 = 2;
1503 var354 = string__NativeString__to_s_with_length(var352, var353);
1504 var351 = var354;
1505 varonce350 = var351;
1506 }
1507 {
1508 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1509 var357 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
1510 if (unlikely(var357 == NULL)) {
1511 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1512 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
1513 show_backtrace(1);
1514 }
1515 var355 = var357;
1516 RET_LABEL356:(void)0;
1517 }
1518 }
1519 {
1520 { /* Inline model#MClassDef#mclass (var355) on <var355:MClassDef> */
1521 var360 = var355->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var355:MClassDef> */
1522 if (unlikely(var360 == NULL)) {
1523 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1524 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
1525 show_backtrace(1);
1526 }
1527 var358 = var360;
1528 RET_LABEL359:(void)0;
1529 }
1530 }
1531 {
1532 { /* Inline model#MClass#name (var358) on <var358:MClass> */
1533 var363 = var358->attrs[COLOR_model__MClass___name].val; /* _name on <var358:MClass> */
1534 if (unlikely(var363 == NULL)) {
1535 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1536 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
1537 show_backtrace(1);
1538 }
1539 var361 = var363;
1540 RET_LABEL362:(void)0;
1541 }
1542 }
1543 if (varonce364) {
1544 var365 = varonce364;
1545 } else {
1546 var366 = "::";
1547 var367 = 2;
1548 var368 = string__NativeString__to_s_with_length(var366, var367);
1549 var365 = var368;
1550 varonce364 = var365;
1551 }
1552 {
1553 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1554 var371 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
1555 if (unlikely(var371 == NULL)) {
1556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1557 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1558 show_backtrace(1);
1559 }
1560 var369 = var371;
1561 RET_LABEL370:(void)0;
1562 }
1563 }
1564 {
1565 { /* Inline model#MProperty#name (var369) on <var369:MProperty(MMethod)> */
1566 var374 = var369->attrs[COLOR_model__MProperty___name].val; /* _name on <var369:MProperty(MMethod)> */
1567 if (unlikely(var374 == NULL)) {
1568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1569 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
1570 show_backtrace(1);
1571 }
1572 var372 = var374;
1573 RET_LABEL373:(void)0;
1574 }
1575 }
1576 if (varonce375) {
1577 var376 = varonce375;
1578 } else {
1579 var377 = " (";
1580 var378 = 2;
1581 var379 = string__NativeString__to_s_with_length(var377, var378);
1582 var376 = var379;
1583 varonce375 = var376;
1584 }
1585 {
1586 { /* Inline model#MPropDef#location (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1587 var382 = var_mmethoddef->attrs[COLOR_model__MPropDef___location].val; /* _location on <var_mmethoddef:MMethodDef> */
1588 if (unlikely(var382 == NULL)) {
1589 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1590 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1892);
1591 show_backtrace(1);
1592 }
1593 var380 = var382;
1594 RET_LABEL381:(void)0;
1595 }
1596 }
1597 {
1598 { /* Inline location#Location#file (var380) on <var380:Location> */
1599 var385 = var380->attrs[COLOR_location__Location___file].val; /* _file on <var380:Location> */
1600 var383 = var385;
1601 RET_LABEL384:(void)0;
1602 }
1603 }
1604 if (var383 == NULL) {
1605 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1606 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1935);
1607 show_backtrace(1);
1608 } else {
1609 { /* Inline location#SourceFile#filename (var383) on <var383:nullable SourceFile> */
1610 if (unlikely(var383 == NULL)) {
1611 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1612 PRINT_ERROR(" (%s:%d)\n", "location.nit", 22);
1613 show_backtrace(1);
1614 }
1615 var388 = var383->attrs[COLOR_location__SourceFile___filename].val; /* _filename on <var383:nullable SourceFile> */
1616 if (unlikely(var388 == NULL)) {
1617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
1618 PRINT_ERROR(" (%s:%d)\n", "location.nit", 22);
1619 show_backtrace(1);
1620 }
1621 var386 = var388;
1622 RET_LABEL387:(void)0;
1623 }
1624 }
1625 if (varonce389) {
1626 var390 = varonce389;
1627 } else {
1628 var391 = "--";
1629 var392 = 2;
1630 var393 = string__NativeString__to_s_with_length(var391, var392);
1631 var390 = var393;
1632 varonce389 = var390;
1633 }
1634 {
1635 { /* Inline model#MPropDef#location (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
1636 var396 = var_mmethoddef->attrs[COLOR_model__MPropDef___location].val; /* _location on <var_mmethoddef:MMethodDef> */
1637 if (unlikely(var396 == NULL)) {
1638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1639 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1892);
1640 show_backtrace(1);
1641 }
1642 var394 = var396;
1643 RET_LABEL395:(void)0;
1644 }
1645 }
1646 {
1647 { /* Inline location#Location#line_start (var394) on <var394:Location> */
1648 var399 = var394->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var394:Location> */
1649 var397 = var399;
1650 RET_LABEL398:(void)0;
1651 }
1652 }
1653 if (varonce400) {
1654 var401 = varonce400;
1655 } else {
1656 var402 = ")";
1657 var403 = 1;
1658 var404 = string__NativeString__to_s_with_length(var402, var403);
1659 var401 = var404;
1660 varonce400 = var401;
1661 }
1662 var405 = NEW_array__Array(&type_array__Arraykernel__Object);
1663 { /* var405 = array_instance Array[Object] */
1664 var406 = 10;
1665 var407 = NEW_array__NativeArray(var406, &type_array__NativeArraykernel__Object);
1666 ((struct instance_array__NativeArray*)var407)->values[0] = (val*) var347;
1667 ((struct instance_array__NativeArray*)var407)->values[1] = (val*) var351;
1668 ((struct instance_array__NativeArray*)var407)->values[2] = (val*) var361;
1669 ((struct instance_array__NativeArray*)var407)->values[3] = (val*) var365;
1670 ((struct instance_array__NativeArray*)var407)->values[4] = (val*) var372;
1671 ((struct instance_array__NativeArray*)var407)->values[5] = (val*) var376;
1672 ((struct instance_array__NativeArray*)var407)->values[6] = (val*) var386;
1673 ((struct instance_array__NativeArray*)var407)->values[7] = (val*) var390;
1674 var408 = BOX_kernel__Int(var397); /* autobox from Int to Object */
1675 ((struct instance_array__NativeArray*)var407)->values[8] = (val*) var408;
1676 ((struct instance_array__NativeArray*)var407)->values[9] = (val*) var401;
1677 {
1678 ((void (*)(val*, val*, long))(var405->class->vft[COLOR_array__Array__with_native]))(var405, var407, var406) /* with_native on <var405:Array[Object]>*/;
1679 }
1680 }
1681 {
1682 var409 = ((val* (*)(val*))(var405->class->vft[COLOR_string__Object__to_s]))(var405) /* to_s on <var405:Array[Object]>*/;
1683 }
1684 {
1685 hash_collection__HashMap___91d_93d_61d(var337, var340, var409); /* Direct call hash_collection#HashMap#[]= on <var337:HashMap[String, String]>*/
1686 }
1687 } else {
1688 }
1689 RET_LABEL:;
1690 }
1691 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
1692 void VIRTUAL_separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
1693 separate_compiler__VirtualRuntimeFunction__compile_to_c(self, p0); /* Direct call separate_compiler#VirtualRuntimeFunction#compile_to_c on <self:Object(VirtualRuntimeFunction)>*/
1694 RET_LABEL:;
1695 }
1696 /* method separate_compiler#MType#const_color for (self: MType): String */
1697 val* separate_compiler__MType__const_color(val* self) {
1698 val* var /* : String */;
1699 static val* varonce;
1700 val* var1 /* : String */;
1701 char* var2 /* : NativeString */;
1702 long var3 /* : Int */;
1703 val* var4 /* : FlatString */;
1704 val* var5 /* : String */;
1705 val* var6 /* : Array[Object] */;
1706 long var7 /* : Int */;
1707 val* var8 /* : NativeArray[Object] */;
1708 val* var9 /* : String */;
1709 if (varonce) {
1710 var1 = varonce;
1711 } else {
1712 var2 = "COLOR_";
1713 var3 = 6;
1714 var4 = string__NativeString__to_s_with_length(var2, var3);
1715 var1 = var4;
1716 varonce = var1;
1717 }
1718 {
1719 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on <self:MType>*/;
1720 }
1721 var6 = NEW_array__Array(&type_array__Arraykernel__Object);
1722 { /* var6 = array_instance Array[Object] */
1723 var7 = 2;
1724 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraykernel__Object);
1725 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var1;
1726 ((struct instance_array__NativeArray*)var8)->values[1] = (val*) var5;
1727 {
1728 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[Object]>*/;
1729 }
1730 }
1731 {
1732 var9 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:Array[Object]>*/;
1733 }
1734 var = var9;
1735 goto RET_LABEL;
1736 RET_LABEL:;
1737 return var;
1738 }
1739 /* method separate_compiler#MType#const_color for (self: Object): String */
1740 val* VIRTUAL_separate_compiler__MType__const_color(val* self) {
1741 val* var /* : String */;
1742 val* var1 /* : String */;
1743 var1 = separate_compiler__MType__const_color(self);
1744 var = var1;
1745 RET_LABEL:;
1746 return var;
1747 }
1748 /* method separate_compiler#MProperty#const_color for (self: MProperty): String */
1749 val* separate_compiler__MProperty__const_color(val* self) {
1750 val* var /* : String */;
1751 static val* varonce;
1752 val* var1 /* : String */;
1753 char* var2 /* : NativeString */;
1754 long var3 /* : Int */;
1755 val* var4 /* : FlatString */;
1756 val* var5 /* : String */;
1757 val* var6 /* : Array[Object] */;
1758 long var7 /* : Int */;
1759 val* var8 /* : NativeArray[Object] */;
1760 val* var9 /* : String */;
1761 if (varonce) {
1762 var1 = varonce;
1763 } else {
1764 var2 = "COLOR_";
1765 var3 = 6;
1766 var4 = string__NativeString__to_s_with_length(var2, var3);
1767 var1 = var4;
1768 varonce = var1;
1769 }
1770 {
1771 var5 = abstract_compiler__MProperty__c_name(self);
1772 }
1773 var6 = NEW_array__Array(&type_array__Arraykernel__Object);
1774 { /* var6 = array_instance Array[Object] */
1775 var7 = 2;
1776 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraykernel__Object);
1777 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var1;
1778 ((struct instance_array__NativeArray*)var8)->values[1] = (val*) var5;
1779 {
1780 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[Object]>*/;
1781 }
1782 }
1783 {
1784 var9 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:Array[Object]>*/;
1785 }
1786 var = var9;
1787 goto RET_LABEL;
1788 RET_LABEL:;
1789 return var;
1790 }
1791 /* method separate_compiler#MProperty#const_color for (self: Object): String */
1792 val* VIRTUAL_separate_compiler__MProperty__const_color(val* self) {
1793 val* var /* : String */;
1794 val* var1 /* : String */;
1795 var1 = separate_compiler__MProperty__const_color(self);
1796 var = var1;
1797 RET_LABEL:;
1798 return var;
1799 }
1800 /* method separate_compiler#MPropDef#const_color for (self: MPropDef): String */
1801 val* separate_compiler__MPropDef__const_color(val* self) {
1802 val* var /* : String */;
1803 static val* varonce;
1804 val* var1 /* : String */;
1805 char* var2 /* : NativeString */;
1806 long var3 /* : Int */;
1807 val* var4 /* : FlatString */;
1808 val* var5 /* : String */;
1809 val* var6 /* : Array[Object] */;
1810 long var7 /* : Int */;
1811 val* var8 /* : NativeArray[Object] */;
1812 val* var9 /* : String */;
1813 if (varonce) {
1814 var1 = varonce;
1815 } else {
1816 var2 = "COLOR_";
1817 var3 = 6;
1818 var4 = string__NativeString__to_s_with_length(var2, var3);
1819 var1 = var4;
1820 varonce = var1;
1821 }
1822 {
1823 var5 = abstract_compiler__MPropDef__c_name(self);
1824 }
1825 var6 = NEW_array__Array(&type_array__Arraykernel__Object);
1826 { /* var6 = array_instance Array[Object] */
1827 var7 = 2;
1828 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraykernel__Object);
1829 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var1;
1830 ((struct instance_array__NativeArray*)var8)->values[1] = (val*) var5;
1831 {
1832 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[Object]>*/;
1833 }
1834 }
1835 {
1836 var9 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:Array[Object]>*/;
1837 }
1838 var = var9;
1839 goto RET_LABEL;
1840 RET_LABEL:;
1841 return var;
1842 }
1843 /* method separate_compiler#MPropDef#const_color for (self: Object): String */
1844 val* VIRTUAL_separate_compiler__MPropDef__const_color(val* self) {
1845 val* var /* : String */;
1846 val* var1 /* : String */;
1847 var1 = separate_compiler__MPropDef__const_color(self);
1848 var = var1;
1849 RET_LABEL:;
1850 return var;
1851 }
1852 /* method separate_compiler#AMethPropdef#can_inline for (self: AMethPropdef): Bool */
1853 short int separate_compiler__AMethPropdef__can_inline(val* self) {
1854 short int var /* : Bool */;
1855 val* var1 /* : nullable MPropDef */;
1856 val* var3 /* : nullable MPropDef */;
1857 val* var_m /* var m: nullable MMethodDef */;
1858 short int var4 /* : Bool */;
1859 short int var5 /* : Bool */;
1860 val* var6 /* : null */;
1861 short int var7 /* : Bool */;
1862 short int var8 /* : Bool */;
1863 val* var_other /* var other: nullable Object */;
1864 short int var10 /* : Bool */;
1865 short int var11 /* : Bool */;
1866 short int var12 /* : Bool */;
1867 short int var_ /* var : Bool */;
1868 val* var13 /* : MProperty */;
1869 val* var15 /* : MProperty */;
1870 short int var16 /* : Bool */;
1871 short int var18 /* : Bool */;
1872 short int var_19 /* var : Bool */;
1873 short int var20 /* : Bool */;
1874 short int var22 /* : Bool */;
1875 short int var23 /* : Bool */;
1876 short int var24 /* : Bool */;
1877 {
1878 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
1879 var3 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
1880 var1 = var3;
1881 RET_LABEL2:(void)0;
1882 }
1883 }
1884 var_m = var1;
1885 var6 = NULL;
1886 if (var_m == NULL) {
1887 var7 = 0; /* is null */
1888 } else {
1889 var7 = 1; /* arg is null and recv is not */
1890 }
1891 if (0) {
1892 { /* Inline kernel#Object#!= (var_m,var6) on <var_m:nullable MMethodDef> */
1893 var_other = var6;
1894 {
1895 var11 = ((short int (*)(val*, val*))(var_m->class->vft[COLOR_kernel__Object___61d_61d]))(var_m, var_other) /* == on <var_m:nullable MMethodDef(MMethodDef)>*/;
1896 var10 = var11;
1897 }
1898 var12 = !var10;
1899 var8 = var12;
1900 goto RET_LABEL9;
1901 RET_LABEL9:(void)0;
1902 }
1903 var7 = var8;
1904 }
1905 var_ = var7;
1906 if (var7){
1907 {
1908 { /* Inline model#MPropDef#mproperty (var_m) on <var_m:nullable MMethodDef(MMethodDef)> */
1909 var15 = var_m->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_m:nullable MMethodDef(MMethodDef)> */
1910 if (unlikely(var15 == NULL)) {
1911 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1912 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1913 show_backtrace(1);
1914 }
1915 var13 = var15;
1916 RET_LABEL14:(void)0;
1917 }
1918 }
1919 {
1920 { /* Inline model#MMethod#is_init (var13) on <var13:MProperty(MMethod)> */
1921 var18 = var13->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var13:MProperty(MMethod)> */
1922 var16 = var18;
1923 RET_LABEL17:(void)0;
1924 }
1925 }
1926 var5 = var16;
1927 } else {
1928 var5 = var_;
1929 }
1930 var_19 = var5;
1931 if (var5){
1932 {
1933 { /* Inline model#MMethodDef#is_extern (var_m) on <var_m:nullable MMethodDef(MMethodDef)> */
1934 var22 = var_m->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <var_m:nullable MMethodDef(MMethodDef)> */
1935 var20 = var22;
1936 RET_LABEL21:(void)0;
1937 }
1938 }
1939 var4 = var20;
1940 } else {
1941 var4 = var_19;
1942 }
1943 if (var4){
1944 var23 = 0;
1945 var = var23;
1946 goto RET_LABEL;
1947 } else {
1948 }
1949 {
1950 var24 = ((short int (*)(val*))(self->class->vft[COLOR_separate_compiler__AMethPropdef__can_inline]))(self) /* can_inline on <self:AMethPropdef>*/;
1951 }
1952 var = var24;
1953 goto RET_LABEL;
1954 RET_LABEL:;
1955 return var;
1956 }
1957 /* method separate_compiler#AMethPropdef#can_inline for (self: Object): Bool */
1958 short int VIRTUAL_separate_compiler__AMethPropdef__can_inline(val* self) {
1959 short int var /* : Bool */;
1960 short int var1 /* : Bool */;
1961 var1 = separate_compiler__AMethPropdef__can_inline(self);
1962 var = var1;
1963 RET_LABEL:;
1964 return var;
1965 }