c_src: update for new ffi syntax
[nit.git] / c_src / separate_compiler.sep.2.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
3 val* separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
4 val* var /* : nullable RuntimeVariable */;
5 val* var_mmethod /* var mmethod: MMethod */;
6 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
7 val* var1 /* : MPropDef */;
8 val* var2 /* : MPropDef */;
9 val* var3 /* : nullable MSignature */;
10 val* var4 /* : nullable Object */;
11 val* var5 /* : MType */;
12 val* var6 /* : String */;
13 static val* varonce;
14 val* var7 /* : String */;
15 char* var8 /* : NativeString */;
16 long var9 /* : Int */;
17 val* var10 /* : String */;
18 short int var11 /* : Bool */;
19 val* var12 /* : AbstractCompiler */;
20 val* var13 /* : MModule */;
21 val* var_m /* var m: MModule */;
22 val* var14 /* : AbstractCompiler */;
23 val* var15 /* : AbstractCompiler */;
24 val* var16 /* : MModule */;
25 val* var17 /* : nullable Object */;
26 val* var18 /* : MType */;
27 val* var19 /* : nullable RuntimeVariable */;
28 val* var_res /* var res: nullable RuntimeVariable */;
29 val* var20 /* : AbstractCompiler */;
30 val* var21 /* : String */;
31 val* var22 /* : nullable RuntimeVariable */;
32 var_mmethod = p0;
33 var_arguments = p1;
34 var1 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
35 var2 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
36 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MMethodDef__msignature]))(var2) /* msignature on <var2:MPropDef(MMethodDef)>*/;
37 if (var3 == NULL) {
38 fprintf(stderr, "Runtime error: %s", "Cast failed");
39 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 962);
40 show_backtrace(1);
41 }
42 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__varargize]))(self, var1, var3, var_arguments) /* varargize on <self:SeparateCompilerVisitor>*/;
43 var4 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
44 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var4) /* mcasttype on <var4:nullable Object(RuntimeVariable)>*/;
45 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__MType__ctype]))(var5) /* ctype on <var5:MType>*/;
46 if (varonce) {
47 var7 = varonce;
48 } else {
49 var8 = "val*";
50 var9 = 4;
51 var10 = string__NativeString__to_s_with_length(var8, var9);
52 var7 = var10;
53 varonce = var7;
54 }
55 var11 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___33d_61d]))(var6, var7) /* != on <var6:String>*/;
56 if (var11){
57 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
58 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var12) /* mainmodule on <var12:AbstractCompiler(SeparateCompiler)>*/;
59 var_m = var13;
60 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
61 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
62 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule]))(var15) /* realmainmodule on <var15:AbstractCompiler(SeparateCompiler)>*/;
63 ((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var14, var16) /* mainmodule= on <var14:AbstractCompiler(SeparateCompiler)>*/;
64 var17 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
65 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var17) /* mcasttype on <var17:nullable Object(RuntimeVariable)>*/;
66 var19 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__monomorphic_send]))(self, var_mmethod, var18, var_arguments) /* monomorphic_send on <self:SeparateCompilerVisitor>*/;
67 var_res = var19;
68 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
69 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var20, var_m) /* mainmodule= on <var20:AbstractCompiler(SeparateCompiler)>*/;
70 var = var_res;
71 goto RET_LABEL;
72 } else {
73 }
74 var21 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_mmethod) /* const_color on <var_mmethod:MMethod>*/;
75 var22 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__table_send]))(self, var_mmethod, var_arguments, var21) /* table_send on <self:SeparateCompilerVisitor>*/;
76 var = var22;
77 goto RET_LABEL;
78 RET_LABEL:;
79 return var;
80 }
81 /* method separate_compiler#SeparateCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
82 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
83 val* var /* : nullable RuntimeVariable */;
84 val* var1 /* : nullable RuntimeVariable */;
85 var1 = separate_compiler__SeparateCompilerVisitor__send(self, p0, p1);
86 var = var1;
87 RET_LABEL:;
88 return var;
89 }
90 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
91 val* separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
92 val* var /* : nullable RuntimeVariable */;
93 val* var_mmethod /* var mmethod: MMethod */;
94 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
95 val* var_const_color /* var const_color: String */;
96 val* var1 /* : MPropDef */;
97 val* var2 /* : nullable MSignature */;
98 val* var3 /* : MPropDef */;
99 val* var4 /* : MClassDef */;
100 val* var5 /* : MClassType */;
101 val* var6 /* : MPropDef */;
102 val* var7 /* : MClassDef */;
103 val* var8 /* : MClassType */;
104 val* var9 /* : MPropDef */;
105 val* var10 /* : MClassDef */;
106 val* var11 /* : MModule */;
107 short int var12 /* : Bool */;
108 val* var13 /* : MType */;
109 val* var_msignature /* var msignature: MSignature */;
110 val* var14 /* : nullable MType */;
111 val* var_ret /* var ret: nullable MType */;
112 short int var15 /* : Bool */;
113 val* var16 /* : nullable Object */;
114 val* var17 /* : MType */;
115 val* var18 /* : RuntimeVariable */;
116 val* var_res /* var res: nullable RuntimeVariable */;
117 val* var19 /* : null */;
118 short int var20 /* : Bool */;
119 val* var21 /* : null */;
120 val* var22 /* : RuntimeVariable */;
121 val* var23 /* : Buffer */;
122 val* var_s /* var s: Buffer */;
123 val* var24 /* : Buffer */;
124 val* var_ss /* var ss: Buffer */;
125 val* var25 /* : nullable Object */;
126 val* var_recv /* var recv: RuntimeVariable */;
127 static val* varonce;
128 val* var26 /* : String */;
129 char* var27 /* : NativeString */;
130 long var28 /* : Int */;
131 val* var29 /* : String */;
132 val* var30 /* : Array[Object] */;
133 long var31 /* : Int */;
134 val* var32 /* : NativeArray[Object] */;
135 val* var33 /* : String */;
136 val* var34 /* : Range[Int] */;
137 long var35 /* : Int */;
138 long var36 /* : Int */;
139 val* var37 /* : Discrete */;
140 val* var38 /* : Discrete */;
141 val* var39 /* : Iterator[nullable Object] */;
142 short int var40 /* : Bool */;
143 val* var41 /* : nullable Object */;
144 long var_i /* var i: Int */;
145 long var42 /* : Int */;
146 long var43 /* : Int */;
147 long var44 /* : Int */;
148 long var46 /* : Int */;
149 val* var47 /* : nullable Object */;
150 val* var_a /* var a: RuntimeVariable */;
151 val* var48 /* : Array[MParameter] */;
152 val* var49 /* : nullable Object */;
153 val* var50 /* : MType */;
154 val* var_t /* var t: MType */;
155 long var51 /* : Int */;
156 short int var52 /* : Bool */;
157 short int var54 /* : Bool */;
158 long var55 /* : Int */;
159 long var56 /* : Int */;
160 long var58 /* : Int */;
161 val* var59 /* : nullable Object */;
162 val* var60 /* : MType */;
163 static val* varonce61;
164 val* var62 /* : String */;
165 char* var63 /* : NativeString */;
166 long var64 /* : Int */;
167 val* var65 /* : String */;
168 val* var66 /* : String */;
169 val* var67 /* : Array[Object] */;
170 long var68 /* : Int */;
171 val* var69 /* : NativeArray[Object] */;
172 val* var70 /* : String */;
173 val* var71 /* : RuntimeVariable */;
174 static val* varonce72;
175 val* var73 /* : String */;
176 char* var74 /* : NativeString */;
177 long var75 /* : Int */;
178 val* var76 /* : String */;
179 val* var77 /* : Array[Object] */;
180 long var78 /* : Int */;
181 val* var79 /* : NativeArray[Object] */;
182 val* var80 /* : String */;
183 short int var81 /* : Bool */;
184 short int var82 /* : Bool */;
185 val* var83 /* : AbstractCompiler */;
186 val* var84 /* : ModelBuilder */;
187 val* var85 /* : ToolContext */;
188 val* var86 /* : OptionBool */;
189 val* var87 /* : nullable Object */;
190 short int var88 /* : Bool */;
191 short int var89 /* : Bool */;
192 short int var_ /* var : Bool */;
193 val* var90 /* : String */;
194 static val* varonce91;
195 val* var92 /* : String */;
196 char* var93 /* : NativeString */;
197 long var94 /* : Int */;
198 val* var95 /* : String */;
199 short int var96 /* : Bool */;
200 short int var_97 /* var : Bool */;
201 val* var98 /* : String */;
202 static val* varonce99;
203 val* var100 /* : String */;
204 char* var101 /* : NativeString */;
205 long var102 /* : Int */;
206 val* var103 /* : String */;
207 short int var104 /* : Bool */;
208 short int var_consider_null /* var consider_null: Bool */;
209 short int var105 /* : Bool */;
210 val* var106 /* : MType */;
211 short int var107 /* : Bool */;
212 int cltype;
213 int idtype;
214 short int var_108 /* var : Bool */;
215 short int var_maybenull /* var maybenull: Bool */;
216 static val* varonce109;
217 val* var110 /* : String */;
218 char* var111 /* : NativeString */;
219 long var112 /* : Int */;
220 val* var113 /* : String */;
221 static val* varonce114;
222 val* var115 /* : String */;
223 char* var116 /* : NativeString */;
224 long var117 /* : Int */;
225 val* var118 /* : String */;
226 val* var119 /* : Array[Object] */;
227 long var120 /* : Int */;
228 val* var121 /* : NativeArray[Object] */;
229 val* var122 /* : String */;
230 val* var123 /* : String */;
231 static val* varonce124;
232 val* var125 /* : String */;
233 char* var126 /* : NativeString */;
234 long var127 /* : Int */;
235 val* var128 /* : String */;
236 short int var129 /* : Bool */;
237 val* var130 /* : null */;
238 short int var131 /* : Bool */;
239 long var132 /* : Int */;
240 val* var133 /* : nullable Object */;
241 val* var_arg /* var arg: RuntimeVariable */;
242 val* var134 /* : MType */;
243 short int var135 /* : Bool */;
244 int cltype136;
245 int idtype137;
246 static val* varonce138;
247 val* var139 /* : String */;
248 char* var140 /* : NativeString */;
249 long var141 /* : Int */;
250 val* var142 /* : String */;
251 static val* varonce143;
252 val* var144 /* : String */;
253 char* var145 /* : NativeString */;
254 long var146 /* : Int */;
255 val* var147 /* : String */;
256 val* var148 /* : Array[Object] */;
257 long var149 /* : Int */;
258 val* var150 /* : NativeArray[Object] */;
259 val* var151 /* : String */;
260 val* var152 /* : MType */;
261 short int var153 /* : Bool */;
262 int cltype154;
263 int idtype155;
264 static val* varonce156;
265 val* var157 /* : String */;
266 char* var158 /* : NativeString */;
267 long var159 /* : Int */;
268 val* var160 /* : String */;
269 val* var161 /* : Array[Object] */;
270 long var162 /* : Int */;
271 val* var163 /* : NativeArray[Object] */;
272 val* var164 /* : String */;
273 static val* varonce165;
274 val* var166 /* : String */;
275 char* var167 /* : NativeString */;
276 long var168 /* : Int */;
277 val* var169 /* : String */;
278 val* var170 /* : String */;
279 static val* varonce171;
280 val* var172 /* : String */;
281 char* var173 /* : NativeString */;
282 long var174 /* : Int */;
283 val* var175 /* : String */;
284 val* var176 /* : Array[Object] */;
285 long var177 /* : Int */;
286 val* var178 /* : NativeArray[Object] */;
287 val* var179 /* : String */;
288 val* var180 /* : String */;
289 static val* varonce181;
290 val* var182 /* : String */;
291 char* var183 /* : NativeString */;
292 long var184 /* : Int */;
293 val* var185 /* : String */;
294 short int var186 /* : Bool */;
295 val* var187 /* : null */;
296 short int var188 /* : Bool */;
297 long var189 /* : Int */;
298 val* var190 /* : nullable Object */;
299 val* var_arg191 /* var arg: RuntimeVariable */;
300 val* var192 /* : MType */;
301 short int var193 /* : Bool */;
302 int cltype194;
303 int idtype195;
304 static val* varonce196;
305 val* var197 /* : String */;
306 char* var198 /* : NativeString */;
307 long var199 /* : Int */;
308 val* var200 /* : String */;
309 static val* varonce201;
310 val* var202 /* : String */;
311 char* var203 /* : NativeString */;
312 long var204 /* : Int */;
313 val* var205 /* : String */;
314 val* var206 /* : Array[Object] */;
315 long var207 /* : Int */;
316 val* var208 /* : NativeArray[Object] */;
317 val* var209 /* : String */;
318 val* var210 /* : MType */;
319 short int var211 /* : Bool */;
320 int cltype212;
321 int idtype213;
322 static val* varonce214;
323 val* var215 /* : String */;
324 char* var216 /* : NativeString */;
325 long var217 /* : Int */;
326 val* var218 /* : String */;
327 val* var219 /* : Array[Object] */;
328 long var220 /* : Int */;
329 val* var221 /* : NativeArray[Object] */;
330 val* var222 /* : String */;
331 static val* varonce223;
332 val* var224 /* : String */;
333 char* var225 /* : NativeString */;
334 long var226 /* : Int */;
335 val* var227 /* : String */;
336 val* var228 /* : String */;
337 static val* varonce229;
338 val* var230 /* : String */;
339 char* var231 /* : NativeString */;
340 long var232 /* : Int */;
341 val* var233 /* : String */;
342 val* var234 /* : Array[Object] */;
343 long var235 /* : Int */;
344 val* var236 /* : NativeArray[Object] */;
345 val* var237 /* : String */;
346 static val* varonce238;
347 val* var239 /* : String */;
348 char* var240 /* : NativeString */;
349 long var241 /* : Int */;
350 val* var242 /* : String */;
351 static val* varonce243;
352 val* var244 /* : String */;
353 char* var245 /* : NativeString */;
354 long var246 /* : Int */;
355 val* var247 /* : String */;
356 short int var248 /* : Bool */;
357 val* var249 /* : AbstractCompiler */;
358 val* var250 /* : ModelBuilder */;
359 val* var251 /* : ToolContext */;
360 val* var252 /* : OptionBool */;
361 val* var253 /* : nullable Object */;
362 short int var254 /* : Bool */;
363 short int var255 /* : Bool */;
364 short int var_256 /* var : Bool */;
365 short int var257 /* : Bool */;
366 val* var258 /* : String */;
367 static val* varonce259;
368 val* var260 /* : String */;
369 char* var261 /* : NativeString */;
370 long var262 /* : Int */;
371 val* var263 /* : String */;
372 short int var264 /* : Bool */;
373 short int var_265 /* var : Bool */;
374 val* var266 /* : String */;
375 static val* varonce267;
376 val* var268 /* : String */;
377 char* var269 /* : NativeString */;
378 long var270 /* : Int */;
379 val* var271 /* : String */;
380 short int var272 /* : Bool */;
381 val* var273 /* : null */;
382 short int var274 /* : Bool */;
383 long var275 /* : Int */;
384 val* var276 /* : nullable Object */;
385 val* var_arg277 /* var arg: RuntimeVariable */;
386 val* var278 /* : MType */;
387 short int var279 /* : Bool */;
388 int cltype280;
389 int idtype281;
390 val* var282 /* : String */;
391 static val* varonce283;
392 val* var284 /* : String */;
393 char* var285 /* : NativeString */;
394 long var286 /* : Int */;
395 val* var287 /* : String */;
396 short int var288 /* : Bool */;
397 static val* varonce289;
398 val* var290 /* : String */;
399 char* var291 /* : NativeString */;
400 long var292 /* : Int */;
401 val* var293 /* : String */;
402 val* var294 /* : Array[Object] */;
403 long var295 /* : Int */;
404 val* var296 /* : NativeArray[Object] */;
405 val* var297 /* : String */;
406 static val* varonce298;
407 val* var299 /* : String */;
408 char* var300 /* : NativeString */;
409 long var301 /* : Int */;
410 val* var302 /* : String */;
411 val* var303 /* : Array[Object] */;
412 long var304 /* : Int */;
413 val* var305 /* : NativeArray[Object] */;
414 val* var306 /* : String */;
415 static val* varonce307;
416 val* var308 /* : String */;
417 char* var309 /* : NativeString */;
418 long var310 /* : Int */;
419 val* var311 /* : String */;
420 val* var312 /* : null */;
421 short int var313 /* : Bool */;
422 static val* varonce314;
423 val* var315 /* : String */;
424 char* var316 /* : NativeString */;
425 long var317 /* : Int */;
426 val* var318 /* : String */;
427 val* var_r /* var r: nullable Object */;
428 val* var319 /* : String */;
429 val* var320 /* : Array[Object] */;
430 long var321 /* : Int */;
431 val* var_322 /* var : Array[Object] */;
432 static val* varonce323;
433 val* var324 /* : String */;
434 char* var325 /* : NativeString */;
435 long var326 /* : Int */;
436 val* var327 /* : String */;
437 static val* varonce328;
438 val* var329 /* : String */;
439 char* var330 /* : NativeString */;
440 long var331 /* : Int */;
441 val* var332 /* : String */;
442 static val* varonce333;
443 val* var334 /* : String */;
444 char* var335 /* : NativeString */;
445 long var336 /* : Int */;
446 val* var337 /* : String */;
447 val* var338 /* : nullable Object */;
448 static val* varonce339;
449 val* var340 /* : String */;
450 char* var341 /* : NativeString */;
451 long var342 /* : Int */;
452 val* var343 /* : String */;
453 static val* varonce344;
454 val* var345 /* : String */;
455 char* var346 /* : NativeString */;
456 long var347 /* : Int */;
457 val* var348 /* : String */;
458 static val* varonce349;
459 val* var350 /* : String */;
460 char* var351 /* : NativeString */;
461 long var352 /* : Int */;
462 val* var353 /* : String */;
463 static val* varonce354;
464 val* var355 /* : String */;
465 char* var356 /* : NativeString */;
466 long var357 /* : Int */;
467 val* var358 /* : String */;
468 val* var359 /* : nullable Object */;
469 val* var360 /* : String */;
470 static val* varonce361;
471 val* var362 /* : String */;
472 char* var363 /* : NativeString */;
473 long var364 /* : Int */;
474 val* var365 /* : String */;
475 val* var366 /* : String */;
476 val* var_call /* var call: String */;
477 val* var367 /* : null */;
478 short int var368 /* : Bool */;
479 static val* varonce369;
480 val* var370 /* : String */;
481 char* var371 /* : NativeString */;
482 long var372 /* : Int */;
483 val* var373 /* : String */;
484 static val* varonce374;
485 val* var375 /* : String */;
486 char* var376 /* : NativeString */;
487 long var377 /* : Int */;
488 val* var378 /* : String */;
489 val* var379 /* : Array[Object] */;
490 long var380 /* : Int */;
491 val* var381 /* : NativeArray[Object] */;
492 val* var382 /* : String */;
493 static val* varonce383;
494 val* var384 /* : String */;
495 char* var385 /* : NativeString */;
496 long var386 /* : Int */;
497 val* var387 /* : String */;
498 val* var388 /* : Array[Object] */;
499 long var389 /* : Int */;
500 val* var390 /* : NativeArray[Object] */;
501 val* var391 /* : String */;
502 static val* varonce392;
503 val* var393 /* : String */;
504 char* var394 /* : NativeString */;
505 long var395 /* : Int */;
506 val* var396 /* : String */;
507 var_mmethod = p0;
508 var_arguments = p1;
509 var_const_color = p2;
510 var1 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
511 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MMethodDef__msignature]))(var1) /* msignature on <var1:MPropDef(MMethodDef)>*/;
512 var3 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
513 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mclassdef]))(var3) /* mclassdef on <var3:MPropDef(MMethodDef)>*/;
514 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MClassDef__bound_mtype]))(var4) /* bound_mtype on <var4:MClassDef>*/;
515 var6 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
516 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MPropDef__mclassdef]))(var6) /* mclassdef on <var6:MPropDef(MMethodDef)>*/;
517 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__bound_mtype]))(var7) /* bound_mtype on <var7:MClassDef>*/;
518 var9 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
519 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MPropDef__mclassdef]))(var9) /* mclassdef on <var9:MPropDef(MMethodDef)>*/;
520 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassDef__mmodule]))(var10) /* mmodule on <var10:MClassDef>*/;
521 var12 = 1;
522 if (var2 == NULL) {
523 fprintf(stderr, "Runtime error: %s", "Reciever is null");
524 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 980);
525 show_backtrace(1);
526 } else {
527 var13 = ((val* (*)(val*, val*, val*, val*, short int))(var2->class->vft[COLOR_model__MType__resolve_for]))(var2, var5, var8, var11, var12) /* resolve_for on <var2:nullable MSignature>*/;
528 }
529 var_msignature = var13;
530 var14 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
531 var_ret = var14;
532 var15 = ((short int (*)(val*))(var_mmethod->class->vft[COLOR_model__MMethod__is_new]))(var_mmethod) /* is_new on <var_mmethod:MMethod>*/;
533 if (var15){
534 var16 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
535 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var16) /* mtype on <var16:nullable Object(RuntimeVariable)>*/;
536 var_ret = var17;
537 var18 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
538 var_res = var18;
539 } else {
540 var19 = NULL;
541 if (var_ret == NULL) {
542 var20 = 1; /* is null */
543 } else {
544 var20 = 0; /* arg is null but recv is not */
545 }
546 if (var20){
547 var21 = NULL;
548 var_res = var21;
549 } else {
550 var22 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
551 var_res = var22;
552 }
553 }
554 var23 = NEW_string__Buffer(&type_string__Buffer);
555 ((void (*)(val*))(var23->class->vft[COLOR_string__Buffer__init]))(var23) /* init on <var23:Buffer>*/;
556 var_s = var23;
557 var24 = NEW_string__Buffer(&type_string__Buffer);
558 ((void (*)(val*))(var24->class->vft[COLOR_string__Buffer__init]))(var24) /* init on <var24:Buffer>*/;
559 var_ss = var24;
560 var25 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
561 var_recv = var25;
562 if (varonce) {
563 var26 = varonce;
564 } else {
565 var27 = "val*";
566 var28 = 4;
567 var29 = string__NativeString__to_s_with_length(var27, var28);
568 var26 = var29;
569 varonce = var26;
570 }
571 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var26) /* append on <var_s:Buffer>*/;
572 var30 = NEW_array__Array(&type_array__Arraykernel__Object);
573 { /* var30 = array_instance Array[Object] */
574 var31 = 1;
575 var32 = NEW_array__NativeArray(var31, &type_array__NativeArraykernel__Object);
576 ((struct instance_array__NativeArray*)var32)->values[0] = (val*) var_recv;
577 ((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[Object]>*/;
578 }
579 var33 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Object__to_s]))(var30) /* to_s on <var30:Array[Object]>*/;
580 ((void (*)(val*, val*))(var_ss->class->vft[COLOR_abstract_collection__Sequence__append]))(var_ss, var33) /* append on <var_ss:Buffer>*/;
581 var34 = NEW_range__Range(&type_range__Rangekernel__Int);
582 var35 = 0;
583 var36 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
584 var37 = BOX_kernel__Int(var35); /* autobox from Int to Discrete */
585 var38 = BOX_kernel__Int(var36); /* autobox from Int to Discrete */
586 ((void (*)(val*, val*, val*))(var34->class->vft[COLOR_range__Range__without_last]))(var34, var37, var38) /* without_last on <var34:Range[Int]>*/;
587 var39 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Collection__iterator]))(var34) /* iterator on <var34:Range[Int]>*/;
588 for(;;) {
589 var40 = ((short int (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var39) /* is_ok on <var39:Iterator[nullable Object]>*/;
590 if(!var40) break;
591 var41 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__item]))(var39) /* item on <var39:Iterator[nullable Object]>*/;
592 var42 = ((struct instance_kernel__Int*)var41)->value; /* autounbox from nullable Object to Int */;
593 var_i = var42;
594 var43 = 1;
595 { /* Inline kernel#Int#+ (var_i,var43) */
596 var46 = var_i + var43;
597 var44 = var46;
598 goto RET_LABEL45;
599 RET_LABEL45:(void)0;
600 }
601 var47 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var44) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
602 var_a = var47;
603 var48 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
604 var49 = ((val* (*)(val*, long))(var48->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var48, var_i) /* [] on <var48:Array[MParameter]>*/;
605 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_model__MParameter__mtype]))(var49) /* mtype on <var49:nullable Object(MParameter)>*/;
606 var_t = var50;
607 var51 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
608 { /* Inline kernel#Int#== (var_i,var51) */
609 var54 = var_i == var51;
610 var52 = var54;
611 goto RET_LABEL53;
612 RET_LABEL53:(void)0;
613 }
614 if (var52){
615 var55 = 1;
616 { /* Inline kernel#Int#+ (var_i,var55) */
617 var58 = var_i + var55;
618 var56 = var58;
619 goto RET_LABEL57;
620 RET_LABEL57:(void)0;
621 }
622 var59 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var56) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
623 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var59) /* mcasttype on <var59:nullable Object(RuntimeVariable)>*/;
624 var_t = var60;
625 } else {
626 }
627 if (varonce61) {
628 var62 = varonce61;
629 } else {
630 var63 = ", ";
631 var64 = 2;
632 var65 = string__NativeString__to_s_with_length(var63, var64);
633 var62 = var65;
634 varonce61 = var62;
635 }
636 var66 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType>*/;
637 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
638 { /* var67 = array_instance Array[Object] */
639 var68 = 2;
640 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
641 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var62;
642 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var66;
643 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
644 }
645 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
646 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var70) /* append on <var_s:Buffer>*/;
647 var71 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_a, var_t) /* autobox on <self:SeparateCompilerVisitor>*/;
648 var_a = var71;
649 if (varonce72) {
650 var73 = varonce72;
651 } else {
652 var74 = ", ";
653 var75 = 2;
654 var76 = string__NativeString__to_s_with_length(var74, var75);
655 var73 = var76;
656 varonce72 = var73;
657 }
658 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
659 { /* var77 = array_instance Array[Object] */
660 var78 = 2;
661 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
662 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var73;
663 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var_a;
664 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
665 }
666 var80 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
667 ((void (*)(val*, val*))(var_ss->class->vft[COLOR_abstract_collection__Sequence__append]))(var_ss, var80) /* append on <var_ss:Buffer>*/;
668 CONTINUE_label: (void)0;
669 ((void (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__next]))(var39) /* next on <var39:Iterator[nullable Object]>*/;
670 }
671 BREAK_label: (void)0;
672 var83 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
673 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var83) /* modelbuilder on <var83:AbstractCompiler(SeparateCompiler)>*/;
674 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var84) /* toolcontext on <var84:ModelBuilder>*/;
675 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(var85) /* opt_no_check_other on <var85:ToolContext>*/;
676 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_opts__Option__value]))(var86) /* value on <var86:OptionBool>*/;
677 var88 = ((struct instance_kernel__Bool*)var87)->value; /* autounbox from nullable Object to Bool */;
678 var89 = !var88;
679 var_ = var89;
680 if (var89){
681 var82 = var_;
682 } else {
683 var90 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
684 if (varonce91) {
685 var92 = varonce91;
686 } else {
687 var93 = "==";
688 var94 = 2;
689 var95 = string__NativeString__to_s_with_length(var93, var94);
690 var92 = var95;
691 varonce91 = var92;
692 }
693 var96 = ((short int (*)(val*, val*))(var90->class->vft[COLOR_kernel__Object___61d_61d]))(var90, var92) /* == on <var90:String>*/;
694 var82 = var96;
695 }
696 var_97 = var82;
697 if (var82){
698 var81 = var_97;
699 } else {
700 var98 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
701 if (varonce99) {
702 var100 = varonce99;
703 } else {
704 var101 = "!=";
705 var102 = 2;
706 var103 = string__NativeString__to_s_with_length(var101, var102);
707 var100 = var103;
708 varonce99 = var100;
709 }
710 var104 = ((short int (*)(val*, val*))(var98->class->vft[COLOR_kernel__Object___61d_61d]))(var98, var100) /* == on <var98:String>*/;
711 var81 = var104;
712 }
713 var_consider_null = var81;
714 var106 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
715 /* <var106:MType> isa MNullableType */
716 cltype = type_model__MNullableType.color;
717 idtype = type_model__MNullableType.id;
718 if(cltype >= var106->type->table_size) {
719 var107 = 0;
720 } else {
721 var107 = var106->type->type_table[cltype] == idtype;
722 }
723 var_108 = var107;
724 if (var107){
725 var105 = var_consider_null;
726 } else {
727 var105 = var_108;
728 }
729 var_maybenull = var105;
730 if (var_maybenull){
731 if (varonce109) {
732 var110 = varonce109;
733 } else {
734 var111 = "if (";
735 var112 = 4;
736 var113 = string__NativeString__to_s_with_length(var111, var112);
737 var110 = var113;
738 varonce109 = var110;
739 }
740 if (varonce114) {
741 var115 = varonce114;
742 } else {
743 var116 = " == NULL) {";
744 var117 = 11;
745 var118 = string__NativeString__to_s_with_length(var116, var117);
746 var115 = var118;
747 varonce114 = var115;
748 }
749 var119 = NEW_array__Array(&type_array__Arraykernel__Object);
750 { /* var119 = array_instance Array[Object] */
751 var120 = 3;
752 var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object);
753 ((struct instance_array__NativeArray*)var121)->values[0] = (val*) var110;
754 ((struct instance_array__NativeArray*)var121)->values[1] = (val*) var_recv;
755 ((struct instance_array__NativeArray*)var121)->values[2] = (val*) var115;
756 ((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on <var119:Array[Object]>*/;
757 }
758 var122 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
759 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var122) /* add on <self:SeparateCompilerVisitor>*/;
760 var123 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
761 if (varonce124) {
762 var125 = varonce124;
763 } else {
764 var126 = "==";
765 var127 = 2;
766 var128 = string__NativeString__to_s_with_length(var126, var127);
767 var125 = var128;
768 varonce124 = var125;
769 }
770 var129 = ((short int (*)(val*, val*))(var123->class->vft[COLOR_kernel__Object___61d_61d]))(var123, var125) /* == on <var123:String>*/;
771 if (var129){
772 var130 = NULL;
773 if (var_res == NULL) {
774 var131 = 0; /* is null */
775 } else {
776 var131 = 1; /* arg is null and recv is not */
777 }
778 if (!var131) {
779 fprintf(stderr, "Runtime error: %s", "Assert failed");
780 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1013);
781 show_backtrace(1);
782 }
783 var132 = 1;
784 var133 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var132) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
785 var_arg = var133;
786 var134 = ((val* (*)(val*))(var_arg->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg) /* mcasttype on <var_arg:RuntimeVariable>*/;
787 /* <var134:MType> isa MNullableType */
788 cltype136 = type_model__MNullableType.color;
789 idtype137 = type_model__MNullableType.id;
790 if(cltype136 >= var134->type->table_size) {
791 var135 = 0;
792 } else {
793 var135 = var134->type->type_table[cltype136] == idtype137;
794 }
795 if (var135){
796 if (varonce138) {
797 var139 = varonce138;
798 } else {
799 var140 = " = (";
800 var141 = 4;
801 var142 = string__NativeString__to_s_with_length(var140, var141);
802 var139 = var142;
803 varonce138 = var139;
804 }
805 if (varonce143) {
806 var144 = varonce143;
807 } else {
808 var145 = " == NULL);";
809 var146 = 10;
810 var147 = string__NativeString__to_s_with_length(var145, var146);
811 var144 = var147;
812 varonce143 = var144;
813 }
814 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
815 { /* var148 = array_instance Array[Object] */
816 var149 = 4;
817 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
818 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var_res;
819 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var139;
820 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var_arg;
821 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var144;
822 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
823 }
824 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
825 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var151) /* add on <self:SeparateCompilerVisitor>*/;
826 } else {
827 var152 = ((val* (*)(val*))(var_arg->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg) /* mcasttype on <var_arg:RuntimeVariable>*/;
828 /* <var152:MType> isa MNullType */
829 cltype154 = type_model__MNullType.color;
830 idtype155 = type_model__MNullType.id;
831 if(cltype154 >= var152->type->table_size) {
832 var153 = 0;
833 } else {
834 var153 = var152->type->type_table[cltype154] == idtype155;
835 }
836 if (var153){
837 if (varonce156) {
838 var157 = varonce156;
839 } else {
840 var158 = " = 1; /* is null */";
841 var159 = 19;
842 var160 = string__NativeString__to_s_with_length(var158, var159);
843 var157 = var160;
844 varonce156 = var157;
845 }
846 var161 = NEW_array__Array(&type_array__Arraykernel__Object);
847 { /* var161 = array_instance Array[Object] */
848 var162 = 2;
849 var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object);
850 ((struct instance_array__NativeArray*)var163)->values[0] = (val*) var_res;
851 ((struct instance_array__NativeArray*)var163)->values[1] = (val*) var157;
852 ((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on <var161:Array[Object]>*/;
853 }
854 var164 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on <var161:Array[Object]>*/;
855 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var164) /* add on <self:SeparateCompilerVisitor>*/;
856 } else {
857 if (varonce165) {
858 var166 = varonce165;
859 } else {
860 var167 = " = 0; /* ";
861 var168 = 9;
862 var169 = string__NativeString__to_s_with_length(var167, var168);
863 var166 = var169;
864 varonce165 = var166;
865 }
866 var170 = ((val* (*)(val*))(var_arg->class->vft[COLOR_string__Object__inspect]))(var_arg) /* inspect on <var_arg:RuntimeVariable>*/;
867 if (varonce171) {
868 var172 = varonce171;
869 } else {
870 var173 = " cannot be null */";
871 var174 = 18;
872 var175 = string__NativeString__to_s_with_length(var173, var174);
873 var172 = var175;
874 varonce171 = var172;
875 }
876 var176 = NEW_array__Array(&type_array__Arraykernel__Object);
877 { /* var176 = array_instance Array[Object] */
878 var177 = 4;
879 var178 = NEW_array__NativeArray(var177, &type_array__NativeArraykernel__Object);
880 ((struct instance_array__NativeArray*)var178)->values[0] = (val*) var_res;
881 ((struct instance_array__NativeArray*)var178)->values[1] = (val*) var166;
882 ((struct instance_array__NativeArray*)var178)->values[2] = (val*) var170;
883 ((struct instance_array__NativeArray*)var178)->values[3] = (val*) var172;
884 ((void (*)(val*, val*, long))(var176->class->vft[COLOR_array__Array__with_native]))(var176, var178, var177) /* with_native on <var176:Array[Object]>*/;
885 }
886 var179 = ((val* (*)(val*))(var176->class->vft[COLOR_string__Object__to_s]))(var176) /* to_s on <var176:Array[Object]>*/;
887 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var179) /* add on <self:SeparateCompilerVisitor>*/;
888 }
889 }
890 } else {
891 var180 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
892 if (varonce181) {
893 var182 = varonce181;
894 } else {
895 var183 = "!=";
896 var184 = 2;
897 var185 = string__NativeString__to_s_with_length(var183, var184);
898 var182 = var185;
899 varonce181 = var182;
900 }
901 var186 = ((short int (*)(val*, val*))(var180->class->vft[COLOR_kernel__Object___61d_61d]))(var180, var182) /* == on <var180:String>*/;
902 if (var186){
903 var187 = NULL;
904 if (var_res == NULL) {
905 var188 = 0; /* is null */
906 } else {
907 var188 = 1; /* arg is null and recv is not */
908 }
909 if (!var188) {
910 fprintf(stderr, "Runtime error: %s", "Assert failed");
911 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1023);
912 show_backtrace(1);
913 }
914 var189 = 1;
915 var190 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var189) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
916 var_arg191 = var190;
917 var192 = ((val* (*)(val*))(var_arg191->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg191) /* mcasttype on <var_arg191:RuntimeVariable>*/;
918 /* <var192:MType> isa MNullableType */
919 cltype194 = type_model__MNullableType.color;
920 idtype195 = type_model__MNullableType.id;
921 if(cltype194 >= var192->type->table_size) {
922 var193 = 0;
923 } else {
924 var193 = var192->type->type_table[cltype194] == idtype195;
925 }
926 if (var193){
927 if (varonce196) {
928 var197 = varonce196;
929 } else {
930 var198 = " = (";
931 var199 = 4;
932 var200 = string__NativeString__to_s_with_length(var198, var199);
933 var197 = var200;
934 varonce196 = var197;
935 }
936 if (varonce201) {
937 var202 = varonce201;
938 } else {
939 var203 = " != NULL);";
940 var204 = 10;
941 var205 = string__NativeString__to_s_with_length(var203, var204);
942 var202 = var205;
943 varonce201 = var202;
944 }
945 var206 = NEW_array__Array(&type_array__Arraykernel__Object);
946 { /* var206 = array_instance Array[Object] */
947 var207 = 4;
948 var208 = NEW_array__NativeArray(var207, &type_array__NativeArraykernel__Object);
949 ((struct instance_array__NativeArray*)var208)->values[0] = (val*) var_res;
950 ((struct instance_array__NativeArray*)var208)->values[1] = (val*) var197;
951 ((struct instance_array__NativeArray*)var208)->values[2] = (val*) var_arg191;
952 ((struct instance_array__NativeArray*)var208)->values[3] = (val*) var202;
953 ((void (*)(val*, val*, long))(var206->class->vft[COLOR_array__Array__with_native]))(var206, var208, var207) /* with_native on <var206:Array[Object]>*/;
954 }
955 var209 = ((val* (*)(val*))(var206->class->vft[COLOR_string__Object__to_s]))(var206) /* to_s on <var206:Array[Object]>*/;
956 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var209) /* add on <self:SeparateCompilerVisitor>*/;
957 } else {
958 var210 = ((val* (*)(val*))(var_arg191->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg191) /* mcasttype on <var_arg191:RuntimeVariable>*/;
959 /* <var210:MType> isa MNullType */
960 cltype212 = type_model__MNullType.color;
961 idtype213 = type_model__MNullType.id;
962 if(cltype212 >= var210->type->table_size) {
963 var211 = 0;
964 } else {
965 var211 = var210->type->type_table[cltype212] == idtype213;
966 }
967 if (var211){
968 if (varonce214) {
969 var215 = varonce214;
970 } else {
971 var216 = " = 0; /* is null */";
972 var217 = 19;
973 var218 = string__NativeString__to_s_with_length(var216, var217);
974 var215 = var218;
975 varonce214 = var215;
976 }
977 var219 = NEW_array__Array(&type_array__Arraykernel__Object);
978 { /* var219 = array_instance Array[Object] */
979 var220 = 2;
980 var221 = NEW_array__NativeArray(var220, &type_array__NativeArraykernel__Object);
981 ((struct instance_array__NativeArray*)var221)->values[0] = (val*) var_res;
982 ((struct instance_array__NativeArray*)var221)->values[1] = (val*) var215;
983 ((void (*)(val*, val*, long))(var219->class->vft[COLOR_array__Array__with_native]))(var219, var221, var220) /* with_native on <var219:Array[Object]>*/;
984 }
985 var222 = ((val* (*)(val*))(var219->class->vft[COLOR_string__Object__to_s]))(var219) /* to_s on <var219:Array[Object]>*/;
986 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var222) /* add on <self:SeparateCompilerVisitor>*/;
987 } else {
988 if (varonce223) {
989 var224 = varonce223;
990 } else {
991 var225 = " = 1; /* ";
992 var226 = 9;
993 var227 = string__NativeString__to_s_with_length(var225, var226);
994 var224 = var227;
995 varonce223 = var224;
996 }
997 var228 = ((val* (*)(val*))(var_arg191->class->vft[COLOR_string__Object__inspect]))(var_arg191) /* inspect on <var_arg191:RuntimeVariable>*/;
998 if (varonce229) {
999 var230 = varonce229;
1000 } else {
1001 var231 = " cannot be null */";
1002 var232 = 18;
1003 var233 = string__NativeString__to_s_with_length(var231, var232);
1004 var230 = var233;
1005 varonce229 = var230;
1006 }
1007 var234 = NEW_array__Array(&type_array__Arraykernel__Object);
1008 { /* var234 = array_instance Array[Object] */
1009 var235 = 4;
1010 var236 = NEW_array__NativeArray(var235, &type_array__NativeArraykernel__Object);
1011 ((struct instance_array__NativeArray*)var236)->values[0] = (val*) var_res;
1012 ((struct instance_array__NativeArray*)var236)->values[1] = (val*) var224;
1013 ((struct instance_array__NativeArray*)var236)->values[2] = (val*) var228;
1014 ((struct instance_array__NativeArray*)var236)->values[3] = (val*) var230;
1015 ((void (*)(val*, val*, long))(var234->class->vft[COLOR_array__Array__with_native]))(var234, var236, var235) /* with_native on <var234:Array[Object]>*/;
1016 }
1017 var237 = ((val* (*)(val*))(var234->class->vft[COLOR_string__Object__to_s]))(var234) /* to_s on <var234:Array[Object]>*/;
1018 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var237) /* add on <self:SeparateCompilerVisitor>*/;
1019 }
1020 }
1021 } else {
1022 if (varonce238) {
1023 var239 = varonce238;
1024 } else {
1025 var240 = "Reciever is null";
1026 var241 = 16;
1027 var242 = string__NativeString__to_s_with_length(var240, var241);
1028 var239 = var242;
1029 varonce238 = var239;
1030 }
1031 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var239) /* add_abort on <self:SeparateCompilerVisitor>*/;
1032 }
1033 }
1034 if (varonce243) {
1035 var244 = varonce243;
1036 } else {
1037 var245 = "} else {";
1038 var246 = 8;
1039 var247 = string__NativeString__to_s_with_length(var245, var246);
1040 var244 = var247;
1041 varonce243 = var244;
1042 }
1043 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var244) /* add on <self:SeparateCompilerVisitor>*/;
1044 } else {
1045 }
1046 var249 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1047 var250 = ((val* (*)(val*))(var249->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var249) /* modelbuilder on <var249:AbstractCompiler(SeparateCompiler)>*/;
1048 var251 = ((val* (*)(val*))(var250->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var250) /* toolcontext on <var250:ModelBuilder>*/;
1049 var252 = ((val* (*)(val*))(var251->class->vft[COLOR_separate_compiler__ToolContext__opt_no_shortcut_equate]))(var251) /* opt_no_shortcut_equate on <var251:ToolContext>*/;
1050 var253 = ((val* (*)(val*))(var252->class->vft[COLOR_opts__Option__value]))(var252) /* value on <var252:OptionBool>*/;
1051 var254 = ((struct instance_kernel__Bool*)var253)->value; /* autounbox from nullable Object to Bool */;
1052 var255 = !var254;
1053 var_256 = var255;
1054 if (var255){
1055 var258 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1056 if (varonce259) {
1057 var260 = varonce259;
1058 } else {
1059 var261 = "==";
1060 var262 = 2;
1061 var263 = string__NativeString__to_s_with_length(var261, var262);
1062 var260 = var263;
1063 varonce259 = var260;
1064 }
1065 var264 = ((short int (*)(val*, val*))(var258->class->vft[COLOR_kernel__Object___61d_61d]))(var258, var260) /* == on <var258:String>*/;
1066 var_265 = var264;
1067 if (var264){
1068 var257 = var_265;
1069 } else {
1070 var266 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1071 if (varonce267) {
1072 var268 = varonce267;
1073 } else {
1074 var269 = "!=";
1075 var270 = 2;
1076 var271 = string__NativeString__to_s_with_length(var269, var270);
1077 var268 = var271;
1078 varonce267 = var268;
1079 }
1080 var272 = ((short int (*)(val*, val*))(var266->class->vft[COLOR_kernel__Object___61d_61d]))(var266, var268) /* == on <var266:String>*/;
1081 var257 = var272;
1082 }
1083 var248 = var257;
1084 } else {
1085 var248 = var_256;
1086 }
1087 if (var248){
1088 var273 = NULL;
1089 if (var_res == NULL) {
1090 var274 = 0; /* is null */
1091 } else {
1092 var274 = 1; /* arg is null and recv is not */
1093 }
1094 if (!var274) {
1095 fprintf(stderr, "Runtime error: %s", "Assert failed");
1096 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1038);
1097 show_backtrace(1);
1098 }
1099 var275 = 1;
1100 var276 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var275) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1101 var_arg277 = var276;
1102 var278 = ((val* (*)(val*))(var_arg277->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg277) /* mcasttype on <var_arg277:RuntimeVariable>*/;
1103 /* <var278:MType> isa MNullType */
1104 cltype280 = type_model__MNullType.color;
1105 idtype281 = type_model__MNullType.id;
1106 if(cltype280 >= var278->type->table_size) {
1107 var279 = 0;
1108 } else {
1109 var279 = var278->type->type_table[cltype280] == idtype281;
1110 }
1111 if (var279){
1112 var282 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1113 if (varonce283) {
1114 var284 = varonce283;
1115 } else {
1116 var285 = "==";
1117 var286 = 2;
1118 var287 = string__NativeString__to_s_with_length(var285, var286);
1119 var284 = var287;
1120 varonce283 = var284;
1121 }
1122 var288 = ((short int (*)(val*, val*))(var282->class->vft[COLOR_kernel__Object___61d_61d]))(var282, var284) /* == on <var282:String>*/;
1123 if (var288){
1124 if (varonce289) {
1125 var290 = varonce289;
1126 } else {
1127 var291 = " = 0; /* arg is null but recv is not */";
1128 var292 = 39;
1129 var293 = string__NativeString__to_s_with_length(var291, var292);
1130 var290 = var293;
1131 varonce289 = var290;
1132 }
1133 var294 = NEW_array__Array(&type_array__Arraykernel__Object);
1134 { /* var294 = array_instance Array[Object] */
1135 var295 = 2;
1136 var296 = NEW_array__NativeArray(var295, &type_array__NativeArraykernel__Object);
1137 ((struct instance_array__NativeArray*)var296)->values[0] = (val*) var_res;
1138 ((struct instance_array__NativeArray*)var296)->values[1] = (val*) var290;
1139 ((void (*)(val*, val*, long))(var294->class->vft[COLOR_array__Array__with_native]))(var294, var296, var295) /* with_native on <var294:Array[Object]>*/;
1140 }
1141 var297 = ((val* (*)(val*))(var294->class->vft[COLOR_string__Object__to_s]))(var294) /* to_s on <var294:Array[Object]>*/;
1142 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var297) /* add on <self:SeparateCompilerVisitor>*/;
1143 } else {
1144 if (varonce298) {
1145 var299 = varonce298;
1146 } else {
1147 var300 = " = 1; /* arg is null and recv is not */";
1148 var301 = 39;
1149 var302 = string__NativeString__to_s_with_length(var300, var301);
1150 var299 = var302;
1151 varonce298 = var299;
1152 }
1153 var303 = NEW_array__Array(&type_array__Arraykernel__Object);
1154 { /* var303 = array_instance Array[Object] */
1155 var304 = 2;
1156 var305 = NEW_array__NativeArray(var304, &type_array__NativeArraykernel__Object);
1157 ((struct instance_array__NativeArray*)var305)->values[0] = (val*) var_res;
1158 ((struct instance_array__NativeArray*)var305)->values[1] = (val*) var299;
1159 ((void (*)(val*, val*, long))(var303->class->vft[COLOR_array__Array__with_native]))(var303, var305, var304) /* with_native on <var303:Array[Object]>*/;
1160 }
1161 var306 = ((val* (*)(val*))(var303->class->vft[COLOR_string__Object__to_s]))(var303) /* to_s on <var303:Array[Object]>*/;
1162 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var306) /* add on <self:SeparateCompilerVisitor>*/;
1163 }
1164 if (var_maybenull){
1165 if (varonce307) {
1166 var308 = varonce307;
1167 } else {
1168 var309 = "}";
1169 var310 = 1;
1170 var311 = string__NativeString__to_s_with_length(var309, var310);
1171 var308 = var311;
1172 varonce307 = var308;
1173 }
1174 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var308) /* add on <self:SeparateCompilerVisitor>*/;
1175 } else {
1176 }
1177 var = var_res;
1178 goto RET_LABEL;
1179 } else {
1180 }
1181 } else {
1182 }
1183 var312 = NULL;
1184 if (var_ret == NULL) {
1185 var313 = 1; /* is null */
1186 } else {
1187 var313 = 0; /* arg is null but recv is not */
1188 }
1189 if (var313){
1190 if (varonce314) {
1191 var315 = varonce314;
1192 } else {
1193 var316 = "void";
1194 var317 = 4;
1195 var318 = string__NativeString__to_s_with_length(var316, var317);
1196 var315 = var318;
1197 varonce314 = var315;
1198 }
1199 var_r = var315;
1200 } else {
1201 var319 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
1202 var_r = var319;
1203 }
1204 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var_const_color) /* require_declaration on <self:SeparateCompilerVisitor>*/;
1205 var320 = NEW_array__Array(&type_array__Arraykernel__Object);
1206 var321 = 15;
1207 ((void (*)(val*, long))(var320->class->vft[COLOR_array__Array__with_capacity]))(var320, var321) /* with_capacity on <var320:Array[Object]>*/;
1208 var_322 = var320;
1209 if (varonce323) {
1210 var324 = varonce323;
1211 } else {
1212 var325 = "((";
1213 var326 = 2;
1214 var327 = string__NativeString__to_s_with_length(var325, var326);
1215 var324 = var327;
1216 varonce323 = var324;
1217 }
1218 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var324) /* add on <var_322:Array[Object]>*/;
1219 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var_r) /* add on <var_322:Array[Object]>*/;
1220 if (varonce328) {
1221 var329 = varonce328;
1222 } else {
1223 var330 = " (*)(";
1224 var331 = 5;
1225 var332 = string__NativeString__to_s_with_length(var330, var331);
1226 var329 = var332;
1227 varonce328 = var329;
1228 }
1229 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var329) /* add on <var_322:Array[Object]>*/;
1230 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var_s) /* add on <var_322:Array[Object]>*/;
1231 if (varonce333) {
1232 var334 = varonce333;
1233 } else {
1234 var335 = "))(";
1235 var336 = 3;
1236 var337 = string__NativeString__to_s_with_length(var335, var336);
1237 var334 = var337;
1238 varonce333 = var334;
1239 }
1240 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var334) /* add on <var_322:Array[Object]>*/;
1241 var338 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1242 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var338) /* add on <var_322:Array[Object]>*/;
1243 if (varonce339) {
1244 var340 = varonce339;
1245 } else {
1246 var341 = "->class->vft[";
1247 var342 = 13;
1248 var343 = string__NativeString__to_s_with_length(var341, var342);
1249 var340 = var343;
1250 varonce339 = var340;
1251 }
1252 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var340) /* add on <var_322:Array[Object]>*/;
1253 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var_const_color) /* add on <var_322:Array[Object]>*/;
1254 if (varonce344) {
1255 var345 = varonce344;
1256 } else {
1257 var346 = "]))(";
1258 var347 = 4;
1259 var348 = string__NativeString__to_s_with_length(var346, var347);
1260 var345 = var348;
1261 varonce344 = var345;
1262 }
1263 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var345) /* add on <var_322:Array[Object]>*/;
1264 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var_ss) /* add on <var_322:Array[Object]>*/;
1265 if (varonce349) {
1266 var350 = varonce349;
1267 } else {
1268 var351 = ") /* ";
1269 var352 = 5;
1270 var353 = string__NativeString__to_s_with_length(var351, var352);
1271 var350 = var353;
1272 varonce349 = var350;
1273 }
1274 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var350) /* add on <var_322:Array[Object]>*/;
1275 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var_mmethod) /* add on <var_322:Array[Object]>*/;
1276 if (varonce354) {
1277 var355 = varonce354;
1278 } else {
1279 var356 = " on ";
1280 var357 = 4;
1281 var358 = string__NativeString__to_s_with_length(var356, var357);
1282 var355 = var358;
1283 varonce354 = var355;
1284 }
1285 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var355) /* add on <var_322:Array[Object]>*/;
1286 var359 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1287 var360 = ((val* (*)(val*))(var359->class->vft[COLOR_string__Object__inspect]))(var359) /* inspect on <var359:nullable Object(RuntimeVariable)>*/;
1288 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var360) /* add on <var_322:Array[Object]>*/;
1289 if (varonce361) {
1290 var362 = varonce361;
1291 } else {
1292 var363 = "*/";
1293 var364 = 2;
1294 var365 = string__NativeString__to_s_with_length(var363, var364);
1295 var362 = var365;
1296 varonce361 = var362;
1297 }
1298 ((void (*)(val*, val*))(var_322->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_322, var362) /* add on <var_322:Array[Object]>*/;
1299 var366 = ((val* (*)(val*))(var_322->class->vft[COLOR_string__Object__to_s]))(var_322) /* to_s on <var_322:Array[Object]>*/;
1300 var_call = var366;
1301 var367 = NULL;
1302 if (var_res == NULL) {
1303 var368 = 0; /* is null */
1304 } else {
1305 var368 = 1; /* arg is null and recv is not */
1306 }
1307 if (var368){
1308 if (varonce369) {
1309 var370 = varonce369;
1310 } else {
1311 var371 = " = ";
1312 var372 = 3;
1313 var373 = string__NativeString__to_s_with_length(var371, var372);
1314 var370 = var373;
1315 varonce369 = var370;
1316 }
1317 if (varonce374) {
1318 var375 = varonce374;
1319 } else {
1320 var376 = ";";
1321 var377 = 1;
1322 var378 = string__NativeString__to_s_with_length(var376, var377);
1323 var375 = var378;
1324 varonce374 = var375;
1325 }
1326 var379 = NEW_array__Array(&type_array__Arraykernel__Object);
1327 { /* var379 = array_instance Array[Object] */
1328 var380 = 4;
1329 var381 = NEW_array__NativeArray(var380, &type_array__NativeArraykernel__Object);
1330 ((struct instance_array__NativeArray*)var381)->values[0] = (val*) var_res;
1331 ((struct instance_array__NativeArray*)var381)->values[1] = (val*) var370;
1332 ((struct instance_array__NativeArray*)var381)->values[2] = (val*) var_call;
1333 ((struct instance_array__NativeArray*)var381)->values[3] = (val*) var375;
1334 ((void (*)(val*, val*, long))(var379->class->vft[COLOR_array__Array__with_native]))(var379, var381, var380) /* with_native on <var379:Array[Object]>*/;
1335 }
1336 var382 = ((val* (*)(val*))(var379->class->vft[COLOR_string__Object__to_s]))(var379) /* to_s on <var379:Array[Object]>*/;
1337 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var382) /* add on <self:SeparateCompilerVisitor>*/;
1338 } else {
1339 if (varonce383) {
1340 var384 = varonce383;
1341 } else {
1342 var385 = ";";
1343 var386 = 1;
1344 var387 = string__NativeString__to_s_with_length(var385, var386);
1345 var384 = var387;
1346 varonce383 = var384;
1347 }
1348 var388 = NEW_array__Array(&type_array__Arraykernel__Object);
1349 { /* var388 = array_instance Array[Object] */
1350 var389 = 2;
1351 var390 = NEW_array__NativeArray(var389, &type_array__NativeArraykernel__Object);
1352 ((struct instance_array__NativeArray*)var390)->values[0] = (val*) var_call;
1353 ((struct instance_array__NativeArray*)var390)->values[1] = (val*) var384;
1354 ((void (*)(val*, val*, long))(var388->class->vft[COLOR_array__Array__with_native]))(var388, var390, var389) /* with_native on <var388:Array[Object]>*/;
1355 }
1356 var391 = ((val* (*)(val*))(var388->class->vft[COLOR_string__Object__to_s]))(var388) /* to_s on <var388:Array[Object]>*/;
1357 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var391) /* add on <self:SeparateCompilerVisitor>*/;
1358 }
1359 if (var_maybenull){
1360 if (varonce392) {
1361 var393 = varonce392;
1362 } else {
1363 var394 = "}";
1364 var395 = 1;
1365 var396 = string__NativeString__to_s_with_length(var394, var395);
1366 var393 = var396;
1367 varonce392 = var393;
1368 }
1369 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var393) /* add on <self:SeparateCompilerVisitor>*/;
1370 } else {
1371 }
1372 var = var_res;
1373 goto RET_LABEL;
1374 RET_LABEL:;
1375 return var;
1376 }
1377 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: Object, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
1378 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
1379 val* var /* : nullable RuntimeVariable */;
1380 val* var1 /* : nullable RuntimeVariable */;
1381 var1 = separate_compiler__SeparateCompilerVisitor__table_send(self, p0, p1, p2);
1382 var = var1;
1383 RET_LABEL:;
1384 return var;
1385 }
1386 /* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
1387 val* separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
1388 val* var /* : nullable RuntimeVariable */;
1389 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
1390 val* var_recvtype /* var recvtype: MClassType */;
1391 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1392 val* var1 /* : nullable MSignature */;
1393 val* var2 /* : nullable MType */;
1394 val* var_ret /* var ret: nullable MType */;
1395 val* var3 /* : MProperty */;
1396 short int var4 /* : Bool */;
1397 val* var5 /* : nullable Object */;
1398 val* var6 /* : MType */;
1399 val* var7 /* : RuntimeVariable */;
1400 val* var_res /* var res: nullable RuntimeVariable */;
1401 val* var8 /* : null */;
1402 short int var9 /* : Bool */;
1403 val* var10 /* : null */;
1404 val* var11 /* : MClassDef */;
1405 val* var12 /* : MClassType */;
1406 val* var13 /* : MClassDef */;
1407 val* var14 /* : MClassType */;
1408 val* var15 /* : MClassDef */;
1409 val* var16 /* : MModule */;
1410 short int var17 /* : Bool */;
1411 val* var18 /* : MType */;
1412 val* var19 /* : RuntimeVariable */;
1413 short int var20 /* : Bool */;
1414 short int var21 /* : Bool */;
1415 val* var22 /* : AbstractCompiler */;
1416 val* var23 /* : ModelBuilder */;
1417 val* var24 /* : HashMap[MPropDef, APropdef] */;
1418 short int var25 /* : Bool */;
1419 short int var_ /* var : Bool */;
1420 val* var26 /* : AbstractCompiler */;
1421 val* var27 /* : ModelBuilder */;
1422 val* var28 /* : HashMap[MPropDef, APropdef] */;
1423 val* var29 /* : nullable Object */;
1424 short int var30 /* : Bool */;
1425 int cltype;
1426 int idtype;
1427 short int var_31 /* var : Bool */;
1428 val* var32 /* : AbstractCompiler */;
1429 val* var33 /* : ModelBuilder */;
1430 val* var34 /* : ToolContext */;
1431 val* var35 /* : OptionBool */;
1432 val* var36 /* : nullable Object */;
1433 short int var37 /* : Bool */;
1434 short int var38 /* : Bool */;
1435 val* var39 /* : Frame */;
1436 val* var_frame /* var frame: Frame */;
1437 static val* varonce;
1438 val* var40 /* : String */;
1439 char* var41 /* : NativeString */;
1440 long var42 /* : Int */;
1441 val* var43 /* : String */;
1442 val* var44 /* : String */;
1443 val* var45 /* : nullable Frame */;
1444 val* var_old_frame /* var old_frame: nullable Frame */;
1445 static val* varonce46;
1446 val* var47 /* : String */;
1447 char* var48 /* : NativeString */;
1448 long var49 /* : Int */;
1449 val* var50 /* : String */;
1450 static val* varonce51;
1451 val* var52 /* : String */;
1452 char* var53 /* : NativeString */;
1453 long var54 /* : Int */;
1454 val* var55 /* : String */;
1455 static val* varonce56;
1456 val* var57 /* : String */;
1457 char* var58 /* : NativeString */;
1458 long var59 /* : Int */;
1459 val* var60 /* : String */;
1460 val* var61 /* : String */;
1461 static val* varonce62;
1462 val* var63 /* : String */;
1463 char* var64 /* : NativeString */;
1464 long var65 /* : Int */;
1465 val* var66 /* : String */;
1466 val* var67 /* : Array[Object] */;
1467 long var68 /* : Int */;
1468 val* var69 /* : NativeArray[Object] */;
1469 val* var70 /* : String */;
1470 val* var71 /* : nullable RuntimeVariable */;
1471 val* var72 /* : nullable String */;
1472 static val* varonce73;
1473 val* var74 /* : String */;
1474 char* var75 /* : NativeString */;
1475 long var76 /* : Int */;
1476 val* var77 /* : String */;
1477 val* var78 /* : Array[Object] */;
1478 long var79 /* : Int */;
1479 val* var80 /* : NativeArray[Object] */;
1480 val* var81 /* : String */;
1481 static val* varonce82;
1482 val* var83 /* : String */;
1483 char* var84 /* : NativeString */;
1484 long var85 /* : Int */;
1485 val* var86 /* : String */;
1486 val* var87 /* : String */;
1487 val* var88 /* : null */;
1488 short int var89 /* : Bool */;
1489 val* var90 /* : String */;
1490 static val* varonce91;
1491 val* var92 /* : String */;
1492 char* var93 /* : NativeString */;
1493 long var94 /* : Int */;
1494 val* var95 /* : String */;
1495 static val* varonce96;
1496 val* var97 /* : String */;
1497 char* var98 /* : NativeString */;
1498 long var99 /* : Int */;
1499 val* var100 /* : String */;
1500 val* var101 /* : String */;
1501 static val* varonce102;
1502 val* var103 /* : String */;
1503 char* var104 /* : NativeString */;
1504 long var105 /* : Int */;
1505 val* var106 /* : String */;
1506 val* var107 /* : Array[Object] */;
1507 long var108 /* : Int */;
1508 val* var109 /* : NativeArray[Object] */;
1509 val* var110 /* : String */;
1510 val* var111 /* : null */;
1511 static val* varonce112;
1512 val* var113 /* : String */;
1513 char* var114 /* : NativeString */;
1514 long var115 /* : Int */;
1515 val* var116 /* : String */;
1516 val* var117 /* : String */;
1517 static val* varonce118;
1518 val* var119 /* : String */;
1519 char* var120 /* : NativeString */;
1520 long var121 /* : Int */;
1521 val* var122 /* : String */;
1522 static val* varonce123;
1523 val* var124 /* : String */;
1524 char* var125 /* : NativeString */;
1525 long var126 /* : Int */;
1526 val* var127 /* : String */;
1527 val* var128 /* : String */;
1528 static val* varonce129;
1529 val* var130 /* : String */;
1530 char* var131 /* : NativeString */;
1531 long var132 /* : Int */;
1532 val* var133 /* : String */;
1533 val* var134 /* : Array[Object] */;
1534 long var135 /* : Int */;
1535 val* var136 /* : NativeArray[Object] */;
1536 val* var137 /* : String */;
1537 var_mmethoddef = p0;
1538 var_recvtype = p1;
1539 var_arguments = p2;
1540 var1 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
1541 if (var1 == NULL) {
1542 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1543 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1075);
1544 show_backtrace(1);
1545 } else {
1546 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MSignature__return_mtype]))(var1) /* return_mtype on <var1:nullable MSignature>*/;
1547 }
1548 var_ret = var2;
1549 var3 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1550 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_model__MMethod__is_new]))(var3) /* is_new on <var3:MProperty(MMethod)>*/;
1551 if (var4){
1552 var5 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1553 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var5) /* mtype on <var5:nullable Object(RuntimeVariable)>*/;
1554 var_ret = var6;
1555 var7 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
1556 var_res = var7;
1557 } else {
1558 var8 = NULL;
1559 if (var_ret == NULL) {
1560 var9 = 1; /* is null */
1561 } else {
1562 var9 = 0; /* arg is null but recv is not */
1563 }
1564 if (var9){
1565 var10 = NULL;
1566 var_res = var10;
1567 } else {
1568 var11 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1569 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MClassDef__bound_mtype]))(var11) /* bound_mtype on <var11:MClassDef>*/;
1570 var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1571 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on <var13:MClassDef>*/;
1572 var15 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1573 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
1574 var17 = 1;
1575 var18 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var12, var14, var16, var17) /* resolve_for on <var_ret:nullable MType(MType)>*/;
1576 var_ret = var18;
1577 var19 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
1578 var_res = var19;
1579 }
1580 }
1581 var22 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1582 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var22) /* modelbuilder on <var22:AbstractCompiler(SeparateCompiler)>*/;
1583 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var23) /* mpropdef2npropdef on <var23:ModelBuilder>*/;
1584 var25 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var24, var_mmethoddef) /* has_key on <var24:HashMap[MPropDef, APropdef]>*/;
1585 var_ = var25;
1586 if (var25){
1587 var26 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1588 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var26) /* modelbuilder on <var26:AbstractCompiler(SeparateCompiler)>*/;
1589 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var27) /* mpropdef2npropdef on <var27:ModelBuilder>*/;
1590 var29 = ((val* (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var28, var_mmethoddef) /* [] on <var28:HashMap[MPropDef, APropdef]>*/;
1591 /* <var29:nullable Object(APropdef)> isa AInternMethPropdef */
1592 cltype = type_parser_nodes__AInternMethPropdef.color;
1593 idtype = type_parser_nodes__AInternMethPropdef.id;
1594 if(cltype >= var29->type->table_size) {
1595 var30 = 0;
1596 } else {
1597 var30 = var29->type->type_table[cltype] == idtype;
1598 }
1599 var21 = var30;
1600 } else {
1601 var21 = var_;
1602 }
1603 var_31 = var21;
1604 if (var21){
1605 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1606 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var32) /* modelbuilder on <var32:AbstractCompiler(SeparateCompiler)>*/;
1607 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var33) /* toolcontext on <var33:ModelBuilder>*/;
1608 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_separate_compiler__ToolContext__opt_no_inline_intern]))(var34) /* opt_no_inline_intern on <var34:ToolContext>*/;
1609 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_opts__Option__value]))(var35) /* value on <var35:OptionBool>*/;
1610 var37 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
1611 var38 = !var37;
1612 var20 = var38;
1613 } else {
1614 var20 = var_31;
1615 }
1616 if (var20){
1617 var39 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
1618 ((void (*)(val*, val*, val*, val*, val*))(var39->class->vft[COLOR_abstract_compiler__Frame__init]))(var39, self, var_mmethoddef, var_recvtype, var_arguments) /* init on <var39:Frame>*/;
1619 var_frame = var39;
1620 if (varonce) {
1621 var40 = varonce;
1622 } else {
1623 var41 = "RET_LABEL";
1624 var42 = 9;
1625 var43 = string__NativeString__to_s_with_length(var41, var42);
1626 var40 = var43;
1627 varonce = var40;
1628 }
1629 var44 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var40) /* get_name on <self:SeparateCompilerVisitor>*/;
1630 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var44) /* returnlabel= on <var_frame:Frame>*/;
1631 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var_res) /* returnvar= on <var_frame:Frame>*/;
1632 var45 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
1633 var_old_frame = var45;
1634 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
1635 if (varonce46) {
1636 var47 = varonce46;
1637 } else {
1638 var48 = "{ /* Inline ";
1639 var49 = 12;
1640 var50 = string__NativeString__to_s_with_length(var48, var49);
1641 var47 = var50;
1642 varonce46 = var47;
1643 }
1644 if (varonce51) {
1645 var52 = varonce51;
1646 } else {
1647 var53 = " (";
1648 var54 = 2;
1649 var55 = string__NativeString__to_s_with_length(var53, var54);
1650 var52 = var55;
1651 varonce51 = var52;
1652 }
1653 if (varonce56) {
1654 var57 = varonce56;
1655 } else {
1656 var58 = ",";
1657 var59 = 1;
1658 var60 = string__NativeString__to_s_with_length(var58, var59);
1659 var57 = var60;
1660 varonce56 = var57;
1661 }
1662 var61 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var57) /* join on <var_arguments:Array[RuntimeVariable]>*/;
1663 if (varonce62) {
1664 var63 = varonce62;
1665 } else {
1666 var64 = ") */";
1667 var65 = 4;
1668 var66 = string__NativeString__to_s_with_length(var64, var65);
1669 var63 = var66;
1670 varonce62 = var63;
1671 }
1672 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
1673 { /* var67 = array_instance Array[Object] */
1674 var68 = 5;
1675 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
1676 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var47;
1677 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var_mmethoddef;
1678 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var52;
1679 ((struct instance_array__NativeArray*)var69)->values[3] = (val*) var61;
1680 ((struct instance_array__NativeArray*)var69)->values[4] = (val*) var63;
1681 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
1682 }
1683 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
1684 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var70) /* add on <self:SeparateCompilerVisitor>*/;
1685 var71 = ((val* (*)(val*, val*, val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var_mmethoddef, self, var_arguments) /* compile_inside_to_c on <var_mmethoddef:MMethodDef>*/;
1686 var71;
1687 var72 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
1688 if (var72 == NULL) {
1689 fprintf(stderr, "Runtime error: %s", "Cast failed");
1690 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1096);
1691 show_backtrace(1);
1692 }
1693 if (varonce73) {
1694 var74 = varonce73;
1695 } else {
1696 var75 = ":(void)0;";
1697 var76 = 9;
1698 var77 = string__NativeString__to_s_with_length(var75, var76);
1699 var74 = var77;
1700 varonce73 = var74;
1701 }
1702 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
1703 { /* var78 = array_instance Array[Object] */
1704 var79 = 2;
1705 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
1706 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var72;
1707 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var74;
1708 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
1709 }
1710 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
1711 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var81) /* add on <self:SeparateCompilerVisitor>*/;
1712 if (varonce82) {
1713 var83 = varonce82;
1714 } else {
1715 var84 = "}";
1716 var85 = 1;
1717 var86 = string__NativeString__to_s_with_length(var84, var85);
1718 var83 = var86;
1719 varonce82 = var83;
1720 }
1721 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var83) /* add on <self:SeparateCompilerVisitor>*/;
1722 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_old_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
1723 var = var_res;
1724 goto RET_LABEL;
1725 } else {
1726 }
1727 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__adapt_signature]))(self, var_mmethoddef, var_arguments) /* adapt_signature on <self:SeparateCompilerVisitor>*/;
1728 var87 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
1729 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var87) /* require_declaration on <self:SeparateCompilerVisitor>*/;
1730 var88 = NULL;
1731 if (var_res == NULL) {
1732 var89 = 1; /* is null */
1733 } else {
1734 var89 = 0; /* arg is null but recv is not */
1735 }
1736 if (var89){
1737 var90 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
1738 if (varonce91) {
1739 var92 = varonce91;
1740 } else {
1741 var93 = "(";
1742 var94 = 1;
1743 var95 = string__NativeString__to_s_with_length(var93, var94);
1744 var92 = var95;
1745 varonce91 = var92;
1746 }
1747 if (varonce96) {
1748 var97 = varonce96;
1749 } else {
1750 var98 = ", ";
1751 var99 = 2;
1752 var100 = string__NativeString__to_s_with_length(var98, var99);
1753 var97 = var100;
1754 varonce96 = var97;
1755 }
1756 var101 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var97) /* join on <var_arguments:Array[RuntimeVariable]>*/;
1757 if (varonce102) {
1758 var103 = varonce102;
1759 } else {
1760 var104 = ");";
1761 var105 = 2;
1762 var106 = string__NativeString__to_s_with_length(var104, var105);
1763 var103 = var106;
1764 varonce102 = var103;
1765 }
1766 var107 = NEW_array__Array(&type_array__Arraykernel__Object);
1767 { /* var107 = array_instance Array[Object] */
1768 var108 = 4;
1769 var109 = NEW_array__NativeArray(var108, &type_array__NativeArraykernel__Object);
1770 ((struct instance_array__NativeArray*)var109)->values[0] = (val*) var90;
1771 ((struct instance_array__NativeArray*)var109)->values[1] = (val*) var92;
1772 ((struct instance_array__NativeArray*)var109)->values[2] = (val*) var101;
1773 ((struct instance_array__NativeArray*)var109)->values[3] = (val*) var103;
1774 ((void (*)(val*, val*, long))(var107->class->vft[COLOR_array__Array__with_native]))(var107, var109, var108) /* with_native on <var107:Array[Object]>*/;
1775 }
1776 var110 = ((val* (*)(val*))(var107->class->vft[COLOR_string__Object__to_s]))(var107) /* to_s on <var107:Array[Object]>*/;
1777 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var110) /* add on <self:SeparateCompilerVisitor>*/;
1778 var111 = NULL;
1779 var = var111;
1780 goto RET_LABEL;
1781 } else {
1782 if (varonce112) {
1783 var113 = varonce112;
1784 } else {
1785 var114 = " = ";
1786 var115 = 3;
1787 var116 = string__NativeString__to_s_with_length(var114, var115);
1788 var113 = var116;
1789 varonce112 = var113;
1790 }
1791 var117 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
1792 if (varonce118) {
1793 var119 = varonce118;
1794 } else {
1795 var120 = "(";
1796 var121 = 1;
1797 var122 = string__NativeString__to_s_with_length(var120, var121);
1798 var119 = var122;
1799 varonce118 = var119;
1800 }
1801 if (varonce123) {
1802 var124 = varonce123;
1803 } else {
1804 var125 = ", ";
1805 var126 = 2;
1806 var127 = string__NativeString__to_s_with_length(var125, var126);
1807 var124 = var127;
1808 varonce123 = var124;
1809 }
1810 var128 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var124) /* join on <var_arguments:Array[RuntimeVariable]>*/;
1811 if (varonce129) {
1812 var130 = varonce129;
1813 } else {
1814 var131 = ");";
1815 var132 = 2;
1816 var133 = string__NativeString__to_s_with_length(var131, var132);
1817 var130 = var133;
1818 varonce129 = var130;
1819 }
1820 var134 = NEW_array__Array(&type_array__Arraykernel__Object);
1821 { /* var134 = array_instance Array[Object] */
1822 var135 = 6;
1823 var136 = NEW_array__NativeArray(var135, &type_array__NativeArraykernel__Object);
1824 ((struct instance_array__NativeArray*)var136)->values[0] = (val*) var_res;
1825 ((struct instance_array__NativeArray*)var136)->values[1] = (val*) var113;
1826 ((struct instance_array__NativeArray*)var136)->values[2] = (val*) var117;
1827 ((struct instance_array__NativeArray*)var136)->values[3] = (val*) var119;
1828 ((struct instance_array__NativeArray*)var136)->values[4] = (val*) var128;
1829 ((struct instance_array__NativeArray*)var136)->values[5] = (val*) var130;
1830 ((void (*)(val*, val*, long))(var134->class->vft[COLOR_array__Array__with_native]))(var134, var136, var135) /* with_native on <var134:Array[Object]>*/;
1831 }
1832 var137 = ((val* (*)(val*))(var134->class->vft[COLOR_string__Object__to_s]))(var134) /* to_s on <var134:Array[Object]>*/;
1833 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var137) /* add on <self:SeparateCompilerVisitor>*/;
1834 }
1835 var = var_res;
1836 goto RET_LABEL;
1837 RET_LABEL:;
1838 return var;
1839 }
1840 /* method separate_compiler#SeparateCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
1841 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
1842 val* var /* : nullable RuntimeVariable */;
1843 val* var1 /* : nullable RuntimeVariable */;
1844 var1 = separate_compiler__SeparateCompilerVisitor__call(self, p0, p1, p2);
1845 var = var1;
1846 RET_LABEL:;
1847 return var;
1848 }
1849 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
1850 val* separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
1851 val* var /* : nullable RuntimeVariable */;
1852 val* var_m /* var m: MMethodDef */;
1853 val* var_recvtype /* var recvtype: MClassType */;
1854 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1855 val* var1 /* : nullable Object */;
1856 val* var2 /* : MType */;
1857 val* var3 /* : String */;
1858 static val* varonce;
1859 val* var4 /* : String */;
1860 char* var5 /* : NativeString */;
1861 long var6 /* : Int */;
1862 val* var7 /* : String */;
1863 short int var8 /* : Bool */;
1864 val* var9 /* : AbstractCompiler */;
1865 val* var10 /* : MModule */;
1866 val* var_main /* var main: MModule */;
1867 val* var11 /* : AbstractCompiler */;
1868 val* var12 /* : AbstractCompiler */;
1869 val* var13 /* : MModule */;
1870 val* var14 /* : nullable RuntimeVariable */;
1871 val* var_res /* var res: nullable RuntimeVariable */;
1872 val* var15 /* : AbstractCompiler */;
1873 val* var16 /* : MProperty */;
1874 val* var17 /* : String */;
1875 val* var18 /* : nullable RuntimeVariable */;
1876 var_m = p0;
1877 var_recvtype = p1;
1878 var_arguments = p2;
1879 var1 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1880 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var1) /* mcasttype on <var1:nullable Object(RuntimeVariable)>*/;
1881 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
1882 if (varonce) {
1883 var4 = varonce;
1884 } else {
1885 var5 = "val*";
1886 var6 = 4;
1887 var7 = string__NativeString__to_s_with_length(var5, var6);
1888 var4 = var7;
1889 varonce = var4;
1890 }
1891 var8 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___33d_61d]))(var3, var4) /* != on <var3:String>*/;
1892 if (var8){
1893 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1894 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var9) /* mainmodule on <var9:AbstractCompiler(SeparateCompiler)>*/;
1895 var_main = var10;
1896 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1897 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1898 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule]))(var12) /* realmainmodule on <var12:AbstractCompiler(SeparateCompiler)>*/;
1899 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var11, var13) /* mainmodule= on <var11:AbstractCompiler(SeparateCompiler)>*/;
1900 var14 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send]))(self, var_m, var_recvtype, var_arguments) /* monomorphic_super_send on <self:SeparateCompilerVisitor>*/;
1901 var_res = var14;
1902 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1903 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var15, var_main) /* mainmodule= on <var15:AbstractCompiler(SeparateCompiler)>*/;
1904 var = var_res;
1905 goto RET_LABEL;
1906 } else {
1907 }
1908 var16 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mproperty]))(var_m) /* mproperty on <var_m:MMethodDef>*/;
1909 var17 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:MMethodDef>*/;
1910 var18 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__table_send]))(self, var16, var_arguments, var17) /* table_send on <self:SeparateCompilerVisitor>*/;
1911 var = var18;
1912 goto RET_LABEL;
1913 RET_LABEL:;
1914 return var;
1915 }
1916 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
1917 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
1918 val* var /* : nullable RuntimeVariable */;
1919 val* var1 /* : nullable RuntimeVariable */;
1920 var1 = separate_compiler__SeparateCompilerVisitor__supercall(self, p0, p1, p2);
1921 var = var1;
1922 RET_LABEL:;
1923 return var;
1924 }
1925 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
1926 val* separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
1927 val* var /* : RuntimeVariable */;
1928 val* var_mpropdef /* var mpropdef: MPropDef */;
1929 val* var_recv /* var recv: RuntimeVariable */;
1930 val* var_varargs /* var varargs: Array[RuntimeVariable] */;
1931 val* var_elttype /* var elttype: MType */;
1932 val* var1 /* : nullable Frame */;
1933 val* var_old_frame /* var old_frame: nullable Frame */;
1934 val* var2 /* : Frame */;
1935 val* var3 /* : MClassDef */;
1936 val* var4 /* : MClassType */;
1937 val* var5 /* : Array[RuntimeVariable] */;
1938 long var6 /* : Int */;
1939 val* var_ /* var : Array[RuntimeVariable] */;
1940 val* var_frame /* var frame: Frame */;
1941 val* var7 /* : RuntimeVariable */;
1942 val* var_res /* var res: RuntimeVariable */;
1943 var_mpropdef = p0;
1944 var_recv = p1;
1945 var_varargs = p2;
1946 var_elttype = p3;
1947 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
1948 var_old_frame = var1;
1949 var2 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
1950 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
1951 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
1952 var5 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1953 var6 = 1;
1954 ((void (*)(val*, long))(var5->class->vft[COLOR_array__Array__with_capacity]))(var5, var6) /* with_capacity on <var5:Array[RuntimeVariable]>*/;
1955 var_ = var5;
1956 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
1957 ((void (*)(val*, val*, val*, val*, val*))(var2->class->vft[COLOR_abstract_compiler__Frame__init]))(var2, self, var_mpropdef, var4, var_) /* init on <var2:Frame>*/;
1958 var_frame = var2;
1959 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
1960 var7 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__array_instance]))(self, var_varargs, var_elttype) /* array_instance on <self:SeparateCompilerVisitor>*/;
1961 var_res = var7;
1962 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_old_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
1963 var = var_res;
1964 goto RET_LABEL;
1965 RET_LABEL:;
1966 return var;
1967 }
1968 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
1969 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
1970 val* var /* : RuntimeVariable */;
1971 val* var1 /* : RuntimeVariable */;
1972 var1 = separate_compiler__SeparateCompilerVisitor__vararg_instance(self, p0, p1, p2, p3);
1973 var = var1;
1974 RET_LABEL:;
1975 return var;
1976 }
1977 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
1978 val* separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
1979 val* var /* : RuntimeVariable */;
1980 val* var_a /* var a: MAttribute */;
1981 val* var_recv /* var recv: RuntimeVariable */;
1982 val* var1 /* : MClassType */;
1983 val* var2 /* : RuntimeVariable */;
1984 val* var_res /* var res: RuntimeVariable */;
1985 val* var3 /* : MPropDef */;
1986 val* var4 /* : nullable MType */;
1987 val* var_mtype /* var mtype: MType */;
1988 val* var5 /* : MPropDef */;
1989 val* var6 /* : MClassDef */;
1990 val* var_intromclassdef /* var intromclassdef: MClassDef */;
1991 val* var7 /* : MClassType */;
1992 val* var8 /* : MClassType */;
1993 val* var9 /* : MModule */;
1994 short int var10 /* : Bool */;
1995 val* var11 /* : MType */;
1996 short int var12 /* : Bool */;
1997 int cltype;
1998 int idtype;
1999 static val* varonce;
2000 val* var13 /* : String */;
2001 char* var14 /* : NativeString */;
2002 long var15 /* : Int */;
2003 val* var16 /* : String */;
2004 static val* varonce17;
2005 val* var18 /* : String */;
2006 char* var19 /* : NativeString */;
2007 long var20 /* : Int */;
2008 val* var21 /* : String */;
2009 val* var22 /* : String */;
2010 static val* varonce23;
2011 val* var24 /* : String */;
2012 char* var25 /* : NativeString */;
2013 long var26 /* : Int */;
2014 val* var27 /* : String */;
2015 val* var28 /* : Array[Object] */;
2016 long var29 /* : Int */;
2017 val* var30 /* : NativeArray[Object] */;
2018 val* var31 /* : String */;
2019 val* var32 /* : String */;
2020 val* var33 /* : AbstractCompiler */;
2021 val* var34 /* : ModelBuilder */;
2022 val* var35 /* : ToolContext */;
2023 val* var36 /* : OptionBool */;
2024 val* var37 /* : nullable Object */;
2025 short int var38 /* : Bool */;
2026 static val* varonce39;
2027 val* var40 /* : String */;
2028 char* var41 /* : NativeString */;
2029 long var42 /* : Int */;
2030 val* var43 /* : String */;
2031 static val* varonce44;
2032 val* var45 /* : String */;
2033 char* var46 /* : NativeString */;
2034 long var47 /* : Int */;
2035 val* var48 /* : String */;
2036 val* var49 /* : String */;
2037 static val* varonce50;
2038 val* var51 /* : String */;
2039 char* var52 /* : NativeString */;
2040 long var53 /* : Int */;
2041 val* var54 /* : String */;
2042 static val* varonce55;
2043 val* var56 /* : String */;
2044 char* var57 /* : NativeString */;
2045 long var58 /* : Int */;
2046 val* var59 /* : String */;
2047 val* var60 /* : String */;
2048 static val* varonce61;
2049 val* var62 /* : String */;
2050 char* var63 /* : NativeString */;
2051 long var64 /* : Int */;
2052 val* var65 /* : String */;
2053 val* var66 /* : Array[Object] */;
2054 long var67 /* : Int */;
2055 val* var68 /* : NativeArray[Object] */;
2056 val* var69 /* : String */;
2057 val* var70 /* : String */;
2058 static val* varonce71;
2059 val* var72 /* : String */;
2060 char* var73 /* : NativeString */;
2061 long var74 /* : Int */;
2062 val* var75 /* : String */;
2063 short int var76 /* : Bool */;
2064 static val* varonce77;
2065 val* var78 /* : String */;
2066 char* var79 /* : NativeString */;
2067 long var80 /* : Int */;
2068 val* var81 /* : String */;
2069 static val* varonce82;
2070 val* var83 /* : String */;
2071 char* var84 /* : NativeString */;
2072 long var85 /* : Int */;
2073 val* var86 /* : String */;
2074 val* var87 /* : String */;
2075 static val* varonce88;
2076 val* var89 /* : String */;
2077 char* var90 /* : NativeString */;
2078 long var91 /* : Int */;
2079 val* var92 /* : String */;
2080 static val* varonce93;
2081 val* var94 /* : String */;
2082 char* var95 /* : NativeString */;
2083 long var96 /* : Int */;
2084 val* var97 /* : String */;
2085 val* var98 /* : String */;
2086 static val* varonce99;
2087 val* var100 /* : String */;
2088 char* var101 /* : NativeString */;
2089 long var102 /* : Int */;
2090 val* var103 /* : String */;
2091 val* var104 /* : Array[Object] */;
2092 long var105 /* : Int */;
2093 val* var106 /* : NativeArray[Object] */;
2094 val* var107 /* : String */;
2095 static val* varonce108;
2096 val* var109 /* : String */;
2097 char* var110 /* : NativeString */;
2098 long var111 /* : Int */;
2099 val* var112 /* : String */;
2100 static val* varonce113;
2101 val* var114 /* : String */;
2102 char* var115 /* : NativeString */;
2103 long var116 /* : Int */;
2104 val* var117 /* : String */;
2105 val* var118 /* : String */;
2106 static val* varonce119;
2107 val* var120 /* : String */;
2108 char* var121 /* : NativeString */;
2109 long var122 /* : Int */;
2110 val* var123 /* : String */;
2111 val* var124 /* : Array[Object] */;
2112 long var125 /* : Int */;
2113 val* var126 /* : NativeArray[Object] */;
2114 val* var127 /* : String */;
2115 var_a = p0;
2116 var_recv = p1;
2117 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
2118 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
2119 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
2120 var_res = var2;
2121 var3 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2122 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var3) /* static_mtype on <var3:MPropDef(MAttributeDef)>*/;
2123 if (var4 == NULL) {
2124 fprintf(stderr, "Runtime error: %s", "Cast failed");
2125 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1155);
2126 show_backtrace(1);
2127 }
2128 var_mtype = var4;
2129 var5 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2130 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MPropDef__mclassdef]))(var5) /* mclassdef on <var5:MPropDef(MAttributeDef)>*/;
2131 var_intromclassdef = var6;
2132 var7 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2133 var8 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2134 var9 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2135 var10 = 1;
2136 var11 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var7, var8, var9, var10) /* resolve_for on <var_mtype:MType>*/;
2137 var_mtype = var11;
2138 /* <var_mtype:MType> isa MNullableType */
2139 cltype = type_model__MNullableType.color;
2140 idtype = type_model__MNullableType.id;
2141 if(cltype >= var_mtype->type->table_size) {
2142 var12 = 0;
2143 } else {
2144 var12 = var_mtype->type->type_table[cltype] == idtype;
2145 }
2146 if (var12){
2147 if (varonce) {
2148 var13 = varonce;
2149 } else {
2150 var14 = " = 1; /* easy isset: ";
2151 var15 = 21;
2152 var16 = string__NativeString__to_s_with_length(var14, var15);
2153 var13 = var16;
2154 varonce = var13;
2155 }
2156 if (varonce17) {
2157 var18 = varonce17;
2158 } else {
2159 var19 = " on ";
2160 var20 = 4;
2161 var21 = string__NativeString__to_s_with_length(var19, var20);
2162 var18 = var21;
2163 varonce17 = var18;
2164 }
2165 var22 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2166 if (varonce23) {
2167 var24 = varonce23;
2168 } else {
2169 var25 = " */";
2170 var26 = 3;
2171 var27 = string__NativeString__to_s_with_length(var25, var26);
2172 var24 = var27;
2173 varonce23 = var24;
2174 }
2175 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
2176 { /* var28 = array_instance Array[Object] */
2177 var29 = 6;
2178 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
2179 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var_res;
2180 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var13;
2181 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var_a;
2182 ((struct instance_array__NativeArray*)var30)->values[3] = (val*) var18;
2183 ((struct instance_array__NativeArray*)var30)->values[4] = (val*) var22;
2184 ((struct instance_array__NativeArray*)var30)->values[5] = (val*) var24;
2185 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
2186 }
2187 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
2188 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var31) /* add on <self:SeparateCompilerVisitor>*/;
2189 var = var_res;
2190 goto RET_LABEL;
2191 } else {
2192 }
2193 var32 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2194 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var32) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2195 var33 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2196 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var33) /* modelbuilder on <var33:AbstractCompiler(SeparateCompiler)>*/;
2197 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var34) /* toolcontext on <var34:ModelBuilder>*/;
2198 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var35) /* opt_no_union_attribute on <var35:ToolContext>*/;
2199 var37 = ((val* (*)(val*))(var36->class->vft[COLOR_opts__Option__value]))(var36) /* value on <var36:OptionBool>*/;
2200 var38 = ((struct instance_kernel__Bool*)var37)->value; /* autounbox from nullable Object to Bool */;
2201 if (var38){
2202 if (varonce39) {
2203 var40 = varonce39;
2204 } else {
2205 var41 = " = ";
2206 var42 = 3;
2207 var43 = string__NativeString__to_s_with_length(var41, var42);
2208 var40 = var43;
2209 varonce39 = var40;
2210 }
2211 if (varonce44) {
2212 var45 = varonce44;
2213 } else {
2214 var46 = "->attrs[";
2215 var47 = 8;
2216 var48 = string__NativeString__to_s_with_length(var46, var47);
2217 var45 = var48;
2218 varonce44 = var45;
2219 }
2220 var49 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2221 if (varonce50) {
2222 var51 = varonce50;
2223 } else {
2224 var52 = "] != NULL; /* ";
2225 var53 = 14;
2226 var54 = string__NativeString__to_s_with_length(var52, var53);
2227 var51 = var54;
2228 varonce50 = var51;
2229 }
2230 if (varonce55) {
2231 var56 = varonce55;
2232 } else {
2233 var57 = " on ";
2234 var58 = 4;
2235 var59 = string__NativeString__to_s_with_length(var57, var58);
2236 var56 = var59;
2237 varonce55 = var56;
2238 }
2239 var60 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2240 if (varonce61) {
2241 var62 = varonce61;
2242 } else {
2243 var63 = "*/";
2244 var64 = 2;
2245 var65 = string__NativeString__to_s_with_length(var63, var64);
2246 var62 = var65;
2247 varonce61 = var62;
2248 }
2249 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
2250 { /* var66 = array_instance Array[Object] */
2251 var67 = 10;
2252 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
2253 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var_res;
2254 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var40;
2255 ((struct instance_array__NativeArray*)var68)->values[2] = (val*) var_recv;
2256 ((struct instance_array__NativeArray*)var68)->values[3] = (val*) var45;
2257 ((struct instance_array__NativeArray*)var68)->values[4] = (val*) var49;
2258 ((struct instance_array__NativeArray*)var68)->values[5] = (val*) var51;
2259 ((struct instance_array__NativeArray*)var68)->values[6] = (val*) var_a;
2260 ((struct instance_array__NativeArray*)var68)->values[7] = (val*) var56;
2261 ((struct instance_array__NativeArray*)var68)->values[8] = (val*) var60;
2262 ((struct instance_array__NativeArray*)var68)->values[9] = (val*) var62;
2263 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
2264 }
2265 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
2266 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var69) /* add on <self:SeparateCompilerVisitor>*/;
2267 } else {
2268 var70 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
2269 if (varonce71) {
2270 var72 = varonce71;
2271 } else {
2272 var73 = "val*";
2273 var74 = 4;
2274 var75 = string__NativeString__to_s_with_length(var73, var74);
2275 var72 = var75;
2276 varonce71 = var72;
2277 }
2278 var76 = ((short int (*)(val*, val*))(var70->class->vft[COLOR_kernel__Object___61d_61d]))(var70, var72) /* == on <var70:String>*/;
2279 if (var76){
2280 if (varonce77) {
2281 var78 = varonce77;
2282 } else {
2283 var79 = " = ";
2284 var80 = 3;
2285 var81 = string__NativeString__to_s_with_length(var79, var80);
2286 var78 = var81;
2287 varonce77 = var78;
2288 }
2289 if (varonce82) {
2290 var83 = varonce82;
2291 } else {
2292 var84 = "->attrs[";
2293 var85 = 8;
2294 var86 = string__NativeString__to_s_with_length(var84, var85);
2295 var83 = var86;
2296 varonce82 = var83;
2297 }
2298 var87 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2299 if (varonce88) {
2300 var89 = varonce88;
2301 } else {
2302 var90 = "].val != NULL; /* ";
2303 var91 = 18;
2304 var92 = string__NativeString__to_s_with_length(var90, var91);
2305 var89 = var92;
2306 varonce88 = var89;
2307 }
2308 if (varonce93) {
2309 var94 = varonce93;
2310 } else {
2311 var95 = " on ";
2312 var96 = 4;
2313 var97 = string__NativeString__to_s_with_length(var95, var96);
2314 var94 = var97;
2315 varonce93 = var94;
2316 }
2317 var98 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2318 if (varonce99) {
2319 var100 = varonce99;
2320 } else {
2321 var101 = " */";
2322 var102 = 3;
2323 var103 = string__NativeString__to_s_with_length(var101, var102);
2324 var100 = var103;
2325 varonce99 = var100;
2326 }
2327 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
2328 { /* var104 = array_instance Array[Object] */
2329 var105 = 10;
2330 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
2331 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var_res;
2332 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var78;
2333 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var_recv;
2334 ((struct instance_array__NativeArray*)var106)->values[3] = (val*) var83;
2335 ((struct instance_array__NativeArray*)var106)->values[4] = (val*) var87;
2336 ((struct instance_array__NativeArray*)var106)->values[5] = (val*) var89;
2337 ((struct instance_array__NativeArray*)var106)->values[6] = (val*) var_a;
2338 ((struct instance_array__NativeArray*)var106)->values[7] = (val*) var94;
2339 ((struct instance_array__NativeArray*)var106)->values[8] = (val*) var98;
2340 ((struct instance_array__NativeArray*)var106)->values[9] = (val*) var100;
2341 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
2342 }
2343 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
2344 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var107) /* add on <self:SeparateCompilerVisitor>*/;
2345 } else {
2346 if (varonce108) {
2347 var109 = varonce108;
2348 } else {
2349 var110 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: ";
2350 var111 = 51;
2351 var112 = string__NativeString__to_s_with_length(var110, var111);
2352 var109 = var112;
2353 varonce108 = var109;
2354 }
2355 if (varonce113) {
2356 var114 = varonce113;
2357 } else {
2358 var115 = " on ";
2359 var116 = 4;
2360 var117 = string__NativeString__to_s_with_length(var115, var116);
2361 var114 = var117;
2362 varonce113 = var114;
2363 }
2364 var118 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2365 if (varonce119) {
2366 var120 = varonce119;
2367 } else {
2368 var121 = " */";
2369 var122 = 3;
2370 var123 = string__NativeString__to_s_with_length(var121, var122);
2371 var120 = var123;
2372 varonce119 = var120;
2373 }
2374 var124 = NEW_array__Array(&type_array__Arraykernel__Object);
2375 { /* var124 = array_instance Array[Object] */
2376 var125 = 6;
2377 var126 = NEW_array__NativeArray(var125, &type_array__NativeArraykernel__Object);
2378 ((struct instance_array__NativeArray*)var126)->values[0] = (val*) var_res;
2379 ((struct instance_array__NativeArray*)var126)->values[1] = (val*) var109;
2380 ((struct instance_array__NativeArray*)var126)->values[2] = (val*) var_a;
2381 ((struct instance_array__NativeArray*)var126)->values[3] = (val*) var114;
2382 ((struct instance_array__NativeArray*)var126)->values[4] = (val*) var118;
2383 ((struct instance_array__NativeArray*)var126)->values[5] = (val*) var120;
2384 ((void (*)(val*, val*, long))(var124->class->vft[COLOR_array__Array__with_native]))(var124, var126, var125) /* with_native on <var124:Array[Object]>*/;
2385 }
2386 var127 = ((val* (*)(val*))(var124->class->vft[COLOR_string__Object__to_s]))(var124) /* to_s on <var124:Array[Object]>*/;
2387 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var127) /* add on <self:SeparateCompilerVisitor>*/;
2388 }
2389 }
2390 var = var_res;
2391 goto RET_LABEL;
2392 RET_LABEL:;
2393 return var;
2394 }
2395 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
2396 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
2397 val* var /* : RuntimeVariable */;
2398 val* var1 /* : RuntimeVariable */;
2399 var1 = separate_compiler__SeparateCompilerVisitor__isset_attribute(self, p0, p1);
2400 var = var1;
2401 RET_LABEL:;
2402 return var;
2403 }
2404 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
2405 val* separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
2406 val* var /* : RuntimeVariable */;
2407 val* var_a /* var a: MAttribute */;
2408 val* var_recv /* var recv: RuntimeVariable */;
2409 val* var1 /* : MPropDef */;
2410 val* var2 /* : nullable MType */;
2411 val* var_ret /* var ret: MType */;
2412 val* var3 /* : MPropDef */;
2413 val* var4 /* : MClassDef */;
2414 val* var_intromclassdef /* var intromclassdef: MClassDef */;
2415 val* var5 /* : MClassType */;
2416 val* var6 /* : MClassType */;
2417 val* var7 /* : MModule */;
2418 short int var8 /* : Bool */;
2419 val* var9 /* : MType */;
2420 val* var10 /* : String */;
2421 val* var11 /* : AbstractCompiler */;
2422 val* var12 /* : ModelBuilder */;
2423 val* var13 /* : ToolContext */;
2424 val* var14 /* : OptionBool */;
2425 val* var15 /* : nullable Object */;
2426 short int var16 /* : Bool */;
2427 val* var17 /* : MClassType */;
2428 val* var18 /* : MType */;
2429 val* var_cret /* var cret: MType */;
2430 val* var19 /* : RuntimeVariable */;
2431 val* var_res /* var res: RuntimeVariable */;
2432 static val* varonce;
2433 val* var20 /* : String */;
2434 char* var21 /* : NativeString */;
2435 long var22 /* : Int */;
2436 val* var23 /* : String */;
2437 static val* varonce24;
2438 val* var25 /* : String */;
2439 char* var26 /* : NativeString */;
2440 long var27 /* : Int */;
2441 val* var28 /* : String */;
2442 val* var29 /* : String */;
2443 static val* varonce30;
2444 val* var31 /* : String */;
2445 char* var32 /* : NativeString */;
2446 long var33 /* : Int */;
2447 val* var34 /* : String */;
2448 static val* varonce35;
2449 val* var36 /* : String */;
2450 char* var37 /* : NativeString */;
2451 long var38 /* : Int */;
2452 val* var39 /* : String */;
2453 val* var40 /* : String */;
2454 static val* varonce41;
2455 val* var42 /* : String */;
2456 char* var43 /* : NativeString */;
2457 long var44 /* : Int */;
2458 val* var45 /* : String */;
2459 val* var46 /* : Array[Object] */;
2460 long var47 /* : Int */;
2461 val* var48 /* : NativeArray[Object] */;
2462 val* var49 /* : String */;
2463 short int var50 /* : Bool */;
2464 short int var51 /* : Bool */;
2465 int cltype;
2466 int idtype;
2467 short int var52 /* : Bool */;
2468 short int var_ /* var : Bool */;
2469 val* var53 /* : AbstractCompiler */;
2470 val* var54 /* : ModelBuilder */;
2471 val* var55 /* : ToolContext */;
2472 val* var56 /* : OptionBool */;
2473 val* var57 /* : nullable Object */;
2474 short int var58 /* : Bool */;
2475 short int var59 /* : Bool */;
2476 static val* varonce60;
2477 val* var61 /* : String */;
2478 char* var62 /* : NativeString */;
2479 long var63 /* : Int */;
2480 val* var64 /* : String */;
2481 static val* varonce65;
2482 val* var66 /* : String */;
2483 char* var67 /* : NativeString */;
2484 long var68 /* : Int */;
2485 val* var69 /* : String */;
2486 val* var70 /* : Array[Object] */;
2487 long var71 /* : Int */;
2488 val* var72 /* : NativeArray[Object] */;
2489 val* var73 /* : String */;
2490 static val* varonce74;
2491 val* var75 /* : String */;
2492 char* var76 /* : NativeString */;
2493 long var77 /* : Int */;
2494 val* var78 /* : String */;
2495 val* var79 /* : String */;
2496 val* var80 /* : Array[Object] */;
2497 long var81 /* : Int */;
2498 val* var82 /* : NativeArray[Object] */;
2499 val* var83 /* : String */;
2500 static val* varonce84;
2501 val* var85 /* : String */;
2502 char* var86 /* : NativeString */;
2503 long var87 /* : Int */;
2504 val* var88 /* : String */;
2505 val* var89 /* : RuntimeVariable */;
2506 val* var90 /* : RuntimeVariable */;
2507 val* var_res91 /* var res: RuntimeVariable */;
2508 static val* varonce92;
2509 val* var93 /* : String */;
2510 char* var94 /* : NativeString */;
2511 long var95 /* : Int */;
2512 val* var96 /* : String */;
2513 static val* varonce97;
2514 val* var98 /* : String */;
2515 char* var99 /* : NativeString */;
2516 long var100 /* : Int */;
2517 val* var101 /* : String */;
2518 val* var102 /* : String */;
2519 static val* varonce103;
2520 val* var104 /* : String */;
2521 char* var105 /* : NativeString */;
2522 long var106 /* : Int */;
2523 val* var107 /* : String */;
2524 val* var108 /* : String */;
2525 static val* varonce109;
2526 val* var110 /* : String */;
2527 char* var111 /* : NativeString */;
2528 long var112 /* : Int */;
2529 val* var113 /* : String */;
2530 static val* varonce114;
2531 val* var115 /* : String */;
2532 char* var116 /* : NativeString */;
2533 long var117 /* : Int */;
2534 val* var118 /* : String */;
2535 val* var119 /* : String */;
2536 static val* varonce120;
2537 val* var121 /* : String */;
2538 char* var122 /* : NativeString */;
2539 long var123 /* : Int */;
2540 val* var124 /* : String */;
2541 val* var125 /* : Array[Object] */;
2542 long var126 /* : Int */;
2543 val* var127 /* : NativeArray[Object] */;
2544 val* var128 /* : String */;
2545 short int var129 /* : Bool */;
2546 short int var130 /* : Bool */;
2547 val* var131 /* : String */;
2548 static val* varonce132;
2549 val* var133 /* : String */;
2550 char* var134 /* : NativeString */;
2551 long var135 /* : Int */;
2552 val* var136 /* : String */;
2553 short int var137 /* : Bool */;
2554 short int var_138 /* var : Bool */;
2555 short int var139 /* : Bool */;
2556 int cltype140;
2557 int idtype141;
2558 short int var142 /* : Bool */;
2559 short int var_143 /* var : Bool */;
2560 val* var144 /* : AbstractCompiler */;
2561 val* var145 /* : ModelBuilder */;
2562 val* var146 /* : ToolContext */;
2563 val* var147 /* : OptionBool */;
2564 val* var148 /* : nullable Object */;
2565 short int var149 /* : Bool */;
2566 short int var150 /* : Bool */;
2567 static val* varonce151;
2568 val* var152 /* : String */;
2569 char* var153 /* : NativeString */;
2570 long var154 /* : Int */;
2571 val* var155 /* : String */;
2572 static val* varonce156;
2573 val* var157 /* : String */;
2574 char* var158 /* : NativeString */;
2575 long var159 /* : Int */;
2576 val* var160 /* : String */;
2577 val* var161 /* : Array[Object] */;
2578 long var162 /* : Int */;
2579 val* var163 /* : NativeArray[Object] */;
2580 val* var164 /* : String */;
2581 static val* varonce165;
2582 val* var166 /* : String */;
2583 char* var167 /* : NativeString */;
2584 long var168 /* : Int */;
2585 val* var169 /* : String */;
2586 val* var170 /* : String */;
2587 val* var171 /* : Array[Object] */;
2588 long var172 /* : Int */;
2589 val* var173 /* : NativeArray[Object] */;
2590 val* var174 /* : String */;
2591 static val* varonce175;
2592 val* var176 /* : String */;
2593 char* var177 /* : NativeString */;
2594 long var178 /* : Int */;
2595 val* var179 /* : String */;
2596 var_a = p0;
2597 var_recv = p1;
2598 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
2599 var1 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2600 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var1) /* static_mtype on <var1:MPropDef(MAttributeDef)>*/;
2601 if (var2 == NULL) {
2602 fprintf(stderr, "Runtime error: %s", "Cast failed");
2603 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1183);
2604 show_backtrace(1);
2605 }
2606 var_ret = var2;
2607 var3 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2608 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mclassdef]))(var3) /* mclassdef on <var3:MPropDef(MAttributeDef)>*/;
2609 var_intromclassdef = var4;
2610 var5 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2611 var6 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2612 var7 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2613 var8 = 1;
2614 var9 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var5, var6, var7, var8) /* resolve_for on <var_ret:MType>*/;
2615 var_ret = var9;
2616 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2617 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2618 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2619 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler(SeparateCompiler)>*/;
2620 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
2621 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var13) /* opt_no_union_attribute on <var13:ToolContext>*/;
2622 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
2623 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
2624 if (var16){
2625 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
2626 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MType__as_nullable]))(var17) /* as_nullable on <var17:MClassType>*/;
2627 var_cret = var18;
2628 var19 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_cret) /* new_var on <self:SeparateCompilerVisitor>*/;
2629 var_res = var19;
2630 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype_61d]))(var_res, var_ret) /* mcasttype= on <var_res:RuntimeVariable>*/;
2631 if (varonce) {
2632 var20 = varonce;
2633 } else {
2634 var21 = " = ";
2635 var22 = 3;
2636 var23 = string__NativeString__to_s_with_length(var21, var22);
2637 var20 = var23;
2638 varonce = var20;
2639 }
2640 if (varonce24) {
2641 var25 = varonce24;
2642 } else {
2643 var26 = "->attrs[";
2644 var27 = 8;
2645 var28 = string__NativeString__to_s_with_length(var26, var27);
2646 var25 = var28;
2647 varonce24 = var25;
2648 }
2649 var29 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2650 if (varonce30) {
2651 var31 = varonce30;
2652 } else {
2653 var32 = "]; /* ";
2654 var33 = 6;
2655 var34 = string__NativeString__to_s_with_length(var32, var33);
2656 var31 = var34;
2657 varonce30 = var31;
2658 }
2659 if (varonce35) {
2660 var36 = varonce35;
2661 } else {
2662 var37 = " on ";
2663 var38 = 4;
2664 var39 = string__NativeString__to_s_with_length(var37, var38);
2665 var36 = var39;
2666 varonce35 = var36;
2667 }
2668 var40 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2669 if (varonce41) {
2670 var42 = varonce41;
2671 } else {
2672 var43 = " */";
2673 var44 = 3;
2674 var45 = string__NativeString__to_s_with_length(var43, var44);
2675 var42 = var45;
2676 varonce41 = var42;
2677 }
2678 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
2679 { /* var46 = array_instance Array[Object] */
2680 var47 = 10;
2681 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
2682 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
2683 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var20;
2684 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_recv;
2685 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var25;
2686 ((struct instance_array__NativeArray*)var48)->values[4] = (val*) var29;
2687 ((struct instance_array__NativeArray*)var48)->values[5] = (val*) var31;
2688 ((struct instance_array__NativeArray*)var48)->values[6] = (val*) var_a;
2689 ((struct instance_array__NativeArray*)var48)->values[7] = (val*) var36;
2690 ((struct instance_array__NativeArray*)var48)->values[8] = (val*) var40;
2691 ((struct instance_array__NativeArray*)var48)->values[9] = (val*) var42;
2692 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
2693 }
2694 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
2695 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var49) /* add on <self:SeparateCompilerVisitor>*/;
2696 /* <var_ret:MType> isa MNullableType */
2697 cltype = type_model__MNullableType.color;
2698 idtype = type_model__MNullableType.id;
2699 if(cltype >= var_ret->type->table_size) {
2700 var51 = 0;
2701 } else {
2702 var51 = var_ret->type->type_table[cltype] == idtype;
2703 }
2704 var52 = !var51;
2705 var_ = var52;
2706 if (var52){
2707 var53 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2708 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var53) /* modelbuilder on <var53:AbstractCompiler(SeparateCompiler)>*/;
2709 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var54) /* toolcontext on <var54:ModelBuilder>*/;
2710 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var55) /* opt_no_check_initialization on <var55:ToolContext>*/;
2711 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_opts__Option__value]))(var56) /* value on <var56:OptionBool>*/;
2712 var58 = ((struct instance_kernel__Bool*)var57)->value; /* autounbox from nullable Object to Bool */;
2713 var59 = !var58;
2714 var50 = var59;
2715 } else {
2716 var50 = var_;
2717 }
2718 if (var50){
2719 if (varonce60) {
2720 var61 = varonce60;
2721 } else {
2722 var62 = "if (";
2723 var63 = 4;
2724 var64 = string__NativeString__to_s_with_length(var62, var63);
2725 var61 = var64;
2726 varonce60 = var61;
2727 }
2728 if (varonce65) {
2729 var66 = varonce65;
2730 } else {
2731 var67 = " == NULL) {";
2732 var68 = 11;
2733 var69 = string__NativeString__to_s_with_length(var67, var68);
2734 var66 = var69;
2735 varonce65 = var66;
2736 }
2737 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
2738 { /* var70 = array_instance Array[Object] */
2739 var71 = 3;
2740 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
2741 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var61;
2742 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var_res;
2743 ((struct instance_array__NativeArray*)var72)->values[2] = (val*) var66;
2744 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
2745 }
2746 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
2747 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var73) /* add on <self:SeparateCompilerVisitor>*/;
2748 if (varonce74) {
2749 var75 = varonce74;
2750 } else {
2751 var76 = "Uninitialized attribute ";
2752 var77 = 24;
2753 var78 = string__NativeString__to_s_with_length(var76, var77);
2754 var75 = var78;
2755 varonce74 = var75;
2756 }
2757 var79 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__name]))(var_a) /* name on <var_a:MAttribute>*/;
2758 var80 = NEW_array__Array(&type_array__Arraykernel__Object);
2759 { /* var80 = array_instance Array[Object] */
2760 var81 = 2;
2761 var82 = NEW_array__NativeArray(var81, &type_array__NativeArraykernel__Object);
2762 ((struct instance_array__NativeArray*)var82)->values[0] = (val*) var75;
2763 ((struct instance_array__NativeArray*)var82)->values[1] = (val*) var79;
2764 ((void (*)(val*, val*, long))(var80->class->vft[COLOR_array__Array__with_native]))(var80, var82, var81) /* with_native on <var80:Array[Object]>*/;
2765 }
2766 var83 = ((val* (*)(val*))(var80->class->vft[COLOR_string__Object__to_s]))(var80) /* to_s on <var80:Array[Object]>*/;
2767 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var83) /* add_abort on <self:SeparateCompilerVisitor>*/;
2768 if (varonce84) {
2769 var85 = varonce84;
2770 } else {
2771 var86 = "}";
2772 var87 = 1;
2773 var88 = string__NativeString__to_s_with_length(var86, var87);
2774 var85 = var88;
2775 varonce84 = var85;
2776 }
2777 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var85) /* add on <self:SeparateCompilerVisitor>*/;
2778 } else {
2779 }
2780 var89 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_res, var_ret) /* autobox on <self:SeparateCompilerVisitor>*/;
2781 var = var89;
2782 goto RET_LABEL;
2783 } else {
2784 var90 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
2785 var_res91 = var90;
2786 if (varonce92) {
2787 var93 = varonce92;
2788 } else {
2789 var94 = " = ";
2790 var95 = 3;
2791 var96 = string__NativeString__to_s_with_length(var94, var95);
2792 var93 = var96;
2793 varonce92 = var93;
2794 }
2795 if (varonce97) {
2796 var98 = varonce97;
2797 } else {
2798 var99 = "->attrs[";
2799 var100 = 8;
2800 var101 = string__NativeString__to_s_with_length(var99, var100);
2801 var98 = var101;
2802 varonce97 = var98;
2803 }
2804 var102 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2805 if (varonce103) {
2806 var104 = varonce103;
2807 } else {
2808 var105 = "].";
2809 var106 = 2;
2810 var107 = string__NativeString__to_s_with_length(var105, var106);
2811 var104 = var107;
2812 varonce103 = var104;
2813 }
2814 var108 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_ret) /* ctypename on <var_ret:MType>*/;
2815 if (varonce109) {
2816 var110 = varonce109;
2817 } else {
2818 var111 = "; /* ";
2819 var112 = 5;
2820 var113 = string__NativeString__to_s_with_length(var111, var112);
2821 var110 = var113;
2822 varonce109 = var110;
2823 }
2824 if (varonce114) {
2825 var115 = varonce114;
2826 } else {
2827 var116 = " on ";
2828 var117 = 4;
2829 var118 = string__NativeString__to_s_with_length(var116, var117);
2830 var115 = var118;
2831 varonce114 = var115;
2832 }
2833 var119 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2834 if (varonce120) {
2835 var121 = varonce120;
2836 } else {
2837 var122 = " */";
2838 var123 = 3;
2839 var124 = string__NativeString__to_s_with_length(var122, var123);
2840 var121 = var124;
2841 varonce120 = var121;
2842 }
2843 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
2844 { /* var125 = array_instance Array[Object] */
2845 var126 = 12;
2846 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
2847 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var_res91;
2848 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var93;
2849 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var_recv;
2850 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var98;
2851 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var102;
2852 ((struct instance_array__NativeArray*)var127)->values[5] = (val*) var104;
2853 ((struct instance_array__NativeArray*)var127)->values[6] = (val*) var108;
2854 ((struct instance_array__NativeArray*)var127)->values[7] = (val*) var110;
2855 ((struct instance_array__NativeArray*)var127)->values[8] = (val*) var_a;
2856 ((struct instance_array__NativeArray*)var127)->values[9] = (val*) var115;
2857 ((struct instance_array__NativeArray*)var127)->values[10] = (val*) var119;
2858 ((struct instance_array__NativeArray*)var127)->values[11] = (val*) var121;
2859 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
2860 }
2861 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
2862 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var128) /* add on <self:SeparateCompilerVisitor>*/;
2863 var131 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:MType>*/;
2864 if (varonce132) {
2865 var133 = varonce132;
2866 } else {
2867 var134 = "val*";
2868 var135 = 4;
2869 var136 = string__NativeString__to_s_with_length(var134, var135);
2870 var133 = var136;
2871 varonce132 = var133;
2872 }
2873 var137 = ((short int (*)(val*, val*))(var131->class->vft[COLOR_kernel__Object___61d_61d]))(var131, var133) /* == on <var131:String>*/;
2874 var_138 = var137;
2875 if (var137){
2876 /* <var_ret:MType> isa MNullableType */
2877 cltype140 = type_model__MNullableType.color;
2878 idtype141 = type_model__MNullableType.id;
2879 if(cltype140 >= var_ret->type->table_size) {
2880 var139 = 0;
2881 } else {
2882 var139 = var_ret->type->type_table[cltype140] == idtype141;
2883 }
2884 var142 = !var139;
2885 var130 = var142;
2886 } else {
2887 var130 = var_138;
2888 }
2889 var_143 = var130;
2890 if (var130){
2891 var144 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2892 var145 = ((val* (*)(val*))(var144->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var144) /* modelbuilder on <var144:AbstractCompiler(SeparateCompiler)>*/;
2893 var146 = ((val* (*)(val*))(var145->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var145) /* toolcontext on <var145:ModelBuilder>*/;
2894 var147 = ((val* (*)(val*))(var146->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var146) /* opt_no_check_initialization on <var146:ToolContext>*/;
2895 var148 = ((val* (*)(val*))(var147->class->vft[COLOR_opts__Option__value]))(var147) /* value on <var147:OptionBool>*/;
2896 var149 = ((struct instance_kernel__Bool*)var148)->value; /* autounbox from nullable Object to Bool */;
2897 var150 = !var149;
2898 var129 = var150;
2899 } else {
2900 var129 = var_143;
2901 }
2902 if (var129){
2903 if (varonce151) {
2904 var152 = varonce151;
2905 } else {
2906 var153 = "if (";
2907 var154 = 4;
2908 var155 = string__NativeString__to_s_with_length(var153, var154);
2909 var152 = var155;
2910 varonce151 = var152;
2911 }
2912 if (varonce156) {
2913 var157 = varonce156;
2914 } else {
2915 var158 = " == NULL) {";
2916 var159 = 11;
2917 var160 = string__NativeString__to_s_with_length(var158, var159);
2918 var157 = var160;
2919 varonce156 = var157;
2920 }
2921 var161 = NEW_array__Array(&type_array__Arraykernel__Object);
2922 { /* var161 = array_instance Array[Object] */
2923 var162 = 3;
2924 var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object);
2925 ((struct instance_array__NativeArray*)var163)->values[0] = (val*) var152;
2926 ((struct instance_array__NativeArray*)var163)->values[1] = (val*) var_res91;
2927 ((struct instance_array__NativeArray*)var163)->values[2] = (val*) var157;
2928 ((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on <var161:Array[Object]>*/;
2929 }
2930 var164 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on <var161:Array[Object]>*/;
2931 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var164) /* add on <self:SeparateCompilerVisitor>*/;
2932 if (varonce165) {
2933 var166 = varonce165;
2934 } else {
2935 var167 = "Uninitialized attribute ";
2936 var168 = 24;
2937 var169 = string__NativeString__to_s_with_length(var167, var168);
2938 var166 = var169;
2939 varonce165 = var166;
2940 }
2941 var170 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__name]))(var_a) /* name on <var_a:MAttribute>*/;
2942 var171 = NEW_array__Array(&type_array__Arraykernel__Object);
2943 { /* var171 = array_instance Array[Object] */
2944 var172 = 2;
2945 var173 = NEW_array__NativeArray(var172, &type_array__NativeArraykernel__Object);
2946 ((struct instance_array__NativeArray*)var173)->values[0] = (val*) var166;
2947 ((struct instance_array__NativeArray*)var173)->values[1] = (val*) var170;
2948 ((void (*)(val*, val*, long))(var171->class->vft[COLOR_array__Array__with_native]))(var171, var173, var172) /* with_native on <var171:Array[Object]>*/;
2949 }
2950 var174 = ((val* (*)(val*))(var171->class->vft[COLOR_string__Object__to_s]))(var171) /* to_s on <var171:Array[Object]>*/;
2951 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var174) /* add_abort on <self:SeparateCompilerVisitor>*/;
2952 if (varonce175) {
2953 var176 = varonce175;
2954 } else {
2955 var177 = "}";
2956 var178 = 1;
2957 var179 = string__NativeString__to_s_with_length(var177, var178);
2958 var176 = var179;
2959 varonce175 = var176;
2960 }
2961 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var176) /* add on <self:SeparateCompilerVisitor>*/;
2962 } else {
2963 }
2964 var = var_res91;
2965 goto RET_LABEL;
2966 }
2967 RET_LABEL:;
2968 return var;
2969 }
2970 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
2971 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
2972 val* var /* : RuntimeVariable */;
2973 val* var1 /* : RuntimeVariable */;
2974 var1 = separate_compiler__SeparateCompilerVisitor__read_attribute(self, p0, p1);
2975 var = var1;
2976 RET_LABEL:;
2977 return var;
2978 }
2979 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
2980 void separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
2981 val* var_a /* var a: MAttribute */;
2982 val* var_recv /* var recv: RuntimeVariable */;
2983 val* var_value /* var value: RuntimeVariable */;
2984 val* var /* : MPropDef */;
2985 val* var1 /* : nullable MType */;
2986 val* var_mtype /* var mtype: MType */;
2987 val* var2 /* : MPropDef */;
2988 val* var3 /* : MClassDef */;
2989 val* var_intromclassdef /* var intromclassdef: MClassDef */;
2990 val* var4 /* : MClassType */;
2991 val* var5 /* : MClassType */;
2992 val* var6 /* : MModule */;
2993 short int var7 /* : Bool */;
2994 val* var8 /* : MType */;
2995 val* var9 /* : RuntimeVariable */;
2996 val* var10 /* : String */;
2997 val* var11 /* : AbstractCompiler */;
2998 val* var12 /* : ModelBuilder */;
2999 val* var13 /* : ToolContext */;
3000 val* var14 /* : OptionBool */;
3001 val* var15 /* : nullable Object */;
3002 short int var16 /* : Bool */;
3003 val* var17 /* : Array[Object] */;
3004 long var18 /* : Int */;
3005 val* var_ /* var : Array[Object] */;
3006 static val* varonce;
3007 val* var19 /* : String */;
3008 char* var20 /* : NativeString */;
3009 long var21 /* : Int */;
3010 val* var22 /* : String */;
3011 static val* varonce23;
3012 val* var24 /* : String */;
3013 char* var25 /* : NativeString */;
3014 long var26 /* : Int */;
3015 val* var27 /* : String */;
3016 val* var28 /* : String */;
3017 static val* varonce29;
3018 val* var30 /* : String */;
3019 char* var31 /* : NativeString */;
3020 long var32 /* : Int */;
3021 val* var33 /* : String */;
3022 val* var34 /* : String */;
3023 val* var_attr /* var attr: String */;
3024 val* var35 /* : String */;
3025 static val* varonce36;
3026 val* var37 /* : String */;
3027 char* var38 /* : NativeString */;
3028 long var39 /* : Int */;
3029 val* var40 /* : String */;
3030 short int var41 /* : Bool */;
3031 short int var42 /* : Bool */;
3032 int cltype;
3033 int idtype;
3034 static val* varonce43;
3035 val* var44 /* : String */;
3036 char* var45 /* : NativeString */;
3037 long var46 /* : Int */;
3038 val* var47 /* : String */;
3039 static val* varonce48;
3040 val* var49 /* : String */;
3041 char* var50 /* : NativeString */;
3042 long var51 /* : Int */;
3043 val* var52 /* : String */;
3044 val* var53 /* : Array[Object] */;
3045 long var54 /* : Int */;
3046 val* var55 /* : NativeArray[Object] */;
3047 val* var56 /* : String */;
3048 static val* varonce57;
3049 val* var58 /* : String */;
3050 char* var59 /* : NativeString */;
3051 long var60 /* : Int */;
3052 val* var61 /* : String */;
3053 val* var62 /* : String */;
3054 static val* varonce63;
3055 val* var64 /* : String */;
3056 char* var65 /* : NativeString */;
3057 long var66 /* : Int */;
3058 val* var67 /* : String */;
3059 static val* varonce68;
3060 val* var69 /* : String */;
3061 char* var70 /* : NativeString */;
3062 long var71 /* : Int */;
3063 val* var72 /* : String */;
3064 static val* varonce73;
3065 val* var74 /* : String */;
3066 char* var75 /* : NativeString */;
3067 long var76 /* : Int */;
3068 val* var77 /* : String */;
3069 static val* varonce78;
3070 val* var79 /* : String */;
3071 char* var80 /* : NativeString */;
3072 long var81 /* : Int */;
3073 val* var82 /* : String */;
3074 val* var83 /* : String */;
3075 static val* varonce84;
3076 val* var85 /* : String */;
3077 char* var86 /* : NativeString */;
3078 long var87 /* : Int */;
3079 val* var88 /* : String */;
3080 val* var89 /* : Array[Object] */;
3081 long var90 /* : Int */;
3082 val* var91 /* : NativeArray[Object] */;
3083 val* var92 /* : String */;
3084 static val* varonce93;
3085 val* var94 /* : String */;
3086 char* var95 /* : NativeString */;
3087 long var96 /* : Int */;
3088 val* var97 /* : String */;
3089 val* var98 /* : MClassType */;
3090 val* var99 /* : MType */;
3091 val* var100 /* : RuntimeVariable */;
3092 static val* varonce101;
3093 val* var102 /* : String */;
3094 char* var103 /* : NativeString */;
3095 long var104 /* : Int */;
3096 val* var105 /* : String */;
3097 static val* varonce106;
3098 val* var107 /* : String */;
3099 char* var108 /* : NativeString */;
3100 long var109 /* : Int */;
3101 val* var110 /* : String */;
3102 static val* varonce111;
3103 val* var112 /* : String */;
3104 char* var113 /* : NativeString */;
3105 long var114 /* : Int */;
3106 val* var115 /* : String */;
3107 val* var116 /* : String */;
3108 static val* varonce117;
3109 val* var118 /* : String */;
3110 char* var119 /* : NativeString */;
3111 long var120 /* : Int */;
3112 val* var121 /* : String */;
3113 val* var122 /* : Array[Object] */;
3114 long var123 /* : Int */;
3115 val* var124 /* : NativeArray[Object] */;
3116 val* var125 /* : String */;
3117 static val* varonce126;
3118 val* var127 /* : String */;
3119 char* var128 /* : NativeString */;
3120 long var129 /* : Int */;
3121 val* var130 /* : String */;
3122 static val* varonce131;
3123 val* var132 /* : String */;
3124 char* var133 /* : NativeString */;
3125 long var134 /* : Int */;
3126 val* var135 /* : String */;
3127 static val* varonce136;
3128 val* var137 /* : String */;
3129 char* var138 /* : NativeString */;
3130 long var139 /* : Int */;
3131 val* var140 /* : String */;
3132 static val* varonce141;
3133 val* var142 /* : String */;
3134 char* var143 /* : NativeString */;
3135 long var144 /* : Int */;
3136 val* var145 /* : String */;
3137 val* var146 /* : String */;
3138 static val* varonce147;
3139 val* var148 /* : String */;
3140 char* var149 /* : NativeString */;
3141 long var150 /* : Int */;
3142 val* var151 /* : String */;
3143 val* var152 /* : Array[Object] */;
3144 long var153 /* : Int */;
3145 val* var154 /* : NativeArray[Object] */;
3146 val* var155 /* : String */;
3147 static val* varonce156;
3148 val* var157 /* : String */;
3149 char* var158 /* : NativeString */;
3150 long var159 /* : Int */;
3151 val* var160 /* : String */;
3152 val* var161 /* : String */;
3153 static val* varonce162;
3154 val* var163 /* : String */;
3155 char* var164 /* : NativeString */;
3156 long var165 /* : Int */;
3157 val* var166 /* : String */;
3158 val* var167 /* : String */;
3159 static val* varonce168;
3160 val* var169 /* : String */;
3161 char* var170 /* : NativeString */;
3162 long var171 /* : Int */;
3163 val* var172 /* : String */;
3164 static val* varonce173;
3165 val* var174 /* : String */;
3166 char* var175 /* : NativeString */;
3167 long var176 /* : Int */;
3168 val* var177 /* : String */;
3169 static val* varonce178;
3170 val* var179 /* : String */;
3171 char* var180 /* : NativeString */;
3172 long var181 /* : Int */;
3173 val* var182 /* : String */;
3174 val* var183 /* : String */;
3175 static val* varonce184;
3176 val* var185 /* : String */;
3177 char* var186 /* : NativeString */;
3178 long var187 /* : Int */;
3179 val* var188 /* : String */;
3180 val* var189 /* : Array[Object] */;
3181 long var190 /* : Int */;
3182 val* var191 /* : NativeArray[Object] */;
3183 val* var192 /* : String */;
3184 var_a = p0;
3185 var_recv = p1;
3186 var_value = p2;
3187 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
3188 var = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3189 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var) /* static_mtype on <var:MPropDef(MAttributeDef)>*/;
3190 if (var1 == NULL) {
3191 fprintf(stderr, "Runtime error: %s", "Cast failed");
3192 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1226);
3193 show_backtrace(1);
3194 }
3195 var_mtype = var1;
3196 var2 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3197 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MPropDef(MAttributeDef)>*/;
3198 var_intromclassdef = var3;
3199 var4 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3200 var5 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3201 var6 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
3202 var7 = 1;
3203 var8 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var4, var5, var6, var7) /* resolve_for on <var_mtype:MType>*/;
3204 var_mtype = var8;
3205 var9 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value, var_mtype) /* autobox on <self:SeparateCompilerVisitor>*/;
3206 var_value = var9;
3207 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3208 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3209 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3210 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler(SeparateCompiler)>*/;
3211 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
3212 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var13) /* opt_no_union_attribute on <var13:ToolContext>*/;
3213 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
3214 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
3215 if (var16){
3216 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
3217 var18 = 5;
3218 ((void (*)(val*, long))(var17->class->vft[COLOR_array__Array__with_capacity]))(var17, var18) /* with_capacity on <var17:Array[Object]>*/;
3219 var_ = var17;
3220 if (varonce) {
3221 var19 = varonce;
3222 } else {
3223 var20 = "";
3224 var21 = 0;
3225 var22 = string__NativeString__to_s_with_length(var20, var21);
3226 var19 = var22;
3227 varonce = var19;
3228 }
3229 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
3230 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_recv) /* add on <var_:Array[Object]>*/;
3231 if (varonce23) {
3232 var24 = varonce23;
3233 } else {
3234 var25 = "->attrs[";
3235 var26 = 8;
3236 var27 = string__NativeString__to_s_with_length(var25, var26);
3237 var24 = var27;
3238 varonce23 = var24;
3239 }
3240 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on <var_:Array[Object]>*/;
3241 var28 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3242 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var28) /* add on <var_:Array[Object]>*/;
3243 if (varonce29) {
3244 var30 = varonce29;
3245 } else {
3246 var31 = "]";
3247 var32 = 1;
3248 var33 = string__NativeString__to_s_with_length(var31, var32);
3249 var30 = var33;
3250 varonce29 = var30;
3251 }
3252 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var30) /* add on <var_:Array[Object]>*/;
3253 var34 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3254 var_attr = var34;
3255 var35 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
3256 if (varonce36) {
3257 var37 = varonce36;
3258 } else {
3259 var38 = "val*";
3260 var39 = 4;
3261 var40 = string__NativeString__to_s_with_length(var38, var39);
3262 var37 = var40;
3263 varonce36 = var37;
3264 }
3265 var41 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___33d_61d]))(var35, var37) /* != on <var35:String>*/;
3266 if (var41){
3267 /* <var_mtype:MType> isa MClassType */
3268 cltype = type_model__MClassType.color;
3269 idtype = type_model__MClassType.id;
3270 if(cltype >= var_mtype->type->table_size) {
3271 var42 = 0;
3272 } else {
3273 var42 = var_mtype->type->type_table[cltype] == idtype;
3274 }
3275 if (!var42) {
3276 fprintf(stderr, "Runtime error: %s", "Assert failed");
3277 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1237);
3278 show_backtrace(1);
3279 }
3280 if (varonce43) {
3281 var44 = varonce43;
3282 } else {
3283 var45 = "if (";
3284 var46 = 4;
3285 var47 = string__NativeString__to_s_with_length(var45, var46);
3286 var44 = var47;
3287 varonce43 = var44;
3288 }
3289 if (varonce48) {
3290 var49 = varonce48;
3291 } else {
3292 var50 = " != NULL) {";
3293 var51 = 11;
3294 var52 = string__NativeString__to_s_with_length(var50, var51);
3295 var49 = var52;
3296 varonce48 = var49;
3297 }
3298 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
3299 { /* var53 = array_instance Array[Object] */
3300 var54 = 3;
3301 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
3302 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var44;
3303 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_attr;
3304 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var49;
3305 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
3306 }
3307 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
3308 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var56) /* add on <self:SeparateCompilerVisitor>*/;
3309 if (varonce57) {
3310 var58 = varonce57;
3311 } else {
3312 var59 = "((struct instance_";
3313 var60 = 18;
3314 var61 = string__NativeString__to_s_with_length(var59, var60);
3315 var58 = var61;
3316 varonce57 = var58;
3317 }
3318 var62 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
3319 if (varonce63) {
3320 var64 = varonce63;
3321 } else {
3322 var65 = "*)";
3323 var66 = 2;
3324 var67 = string__NativeString__to_s_with_length(var65, var66);
3325 var64 = var67;
3326 varonce63 = var64;
3327 }
3328 if (varonce68) {
3329 var69 = varonce68;
3330 } else {
3331 var70 = ")->value = ";
3332 var71 = 11;
3333 var72 = string__NativeString__to_s_with_length(var70, var71);
3334 var69 = var72;
3335 varonce68 = var69;
3336 }
3337 if (varonce73) {
3338 var74 = varonce73;
3339 } else {
3340 var75 = "; /* ";
3341 var76 = 5;
3342 var77 = string__NativeString__to_s_with_length(var75, var76);
3343 var74 = var77;
3344 varonce73 = var74;
3345 }
3346 if (varonce78) {
3347 var79 = varonce78;
3348 } else {
3349 var80 = " on ";
3350 var81 = 4;
3351 var82 = string__NativeString__to_s_with_length(var80, var81);
3352 var79 = var82;
3353 varonce78 = var79;
3354 }
3355 var83 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3356 if (varonce84) {
3357 var85 = varonce84;
3358 } else {
3359 var86 = " */";
3360 var87 = 3;
3361 var88 = string__NativeString__to_s_with_length(var86, var87);
3362 var85 = var88;
3363 varonce84 = var85;
3364 }
3365 var89 = NEW_array__Array(&type_array__Arraykernel__Object);
3366 { /* var89 = array_instance Array[Object] */
3367 var90 = 11;
3368 var91 = NEW_array__NativeArray(var90, &type_array__NativeArraykernel__Object);
3369 ((struct instance_array__NativeArray*)var91)->values[0] = (val*) var58;
3370 ((struct instance_array__NativeArray*)var91)->values[1] = (val*) var62;
3371 ((struct instance_array__NativeArray*)var91)->values[2] = (val*) var64;
3372 ((struct instance_array__NativeArray*)var91)->values[3] = (val*) var_attr;
3373 ((struct instance_array__NativeArray*)var91)->values[4] = (val*) var69;
3374 ((struct instance_array__NativeArray*)var91)->values[5] = (val*) var_value;
3375 ((struct instance_array__NativeArray*)var91)->values[6] = (val*) var74;
3376 ((struct instance_array__NativeArray*)var91)->values[7] = (val*) var_a;
3377 ((struct instance_array__NativeArray*)var91)->values[8] = (val*) var79;
3378 ((struct instance_array__NativeArray*)var91)->values[9] = (val*) var83;
3379 ((struct instance_array__NativeArray*)var91)->values[10] = (val*) var85;
3380 ((void (*)(val*, val*, long))(var89->class->vft[COLOR_array__Array__with_native]))(var89, var91, var90) /* with_native on <var89:Array[Object]>*/;
3381 }
3382 var92 = ((val* (*)(val*))(var89->class->vft[COLOR_string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
3383 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var92) /* add on <self:SeparateCompilerVisitor>*/;
3384 if (varonce93) {
3385 var94 = varonce93;
3386 } else {
3387 var95 = "} else {";
3388 var96 = 8;
3389 var97 = string__NativeString__to_s_with_length(var95, var96);
3390 var94 = var97;
3391 varonce93 = var94;
3392 }
3393 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var94) /* add on <self:SeparateCompilerVisitor>*/;
3394 var98 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
3395 var99 = ((val* (*)(val*))(var98->class->vft[COLOR_model__MType__as_nullable]))(var98) /* as_nullable on <var98:MClassType>*/;
3396 var100 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value, var99) /* autobox on <self:SeparateCompilerVisitor>*/;
3397 var_value = var100;
3398 if (varonce101) {
3399 var102 = varonce101;
3400 } else {
3401 var103 = " = ";
3402 var104 = 3;
3403 var105 = string__NativeString__to_s_with_length(var103, var104);
3404 var102 = var105;
3405 varonce101 = var102;
3406 }
3407 if (varonce106) {
3408 var107 = varonce106;
3409 } else {
3410 var108 = "; /* ";
3411 var109 = 5;
3412 var110 = string__NativeString__to_s_with_length(var108, var109);
3413 var107 = var110;
3414 varonce106 = var107;
3415 }
3416 if (varonce111) {
3417 var112 = varonce111;
3418 } else {
3419 var113 = " on ";
3420 var114 = 4;
3421 var115 = string__NativeString__to_s_with_length(var113, var114);
3422 var112 = var115;
3423 varonce111 = var112;
3424 }
3425 var116 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3426 if (varonce117) {
3427 var118 = varonce117;
3428 } else {
3429 var119 = " */";
3430 var120 = 3;
3431 var121 = string__NativeString__to_s_with_length(var119, var120);
3432 var118 = var121;
3433 varonce117 = var118;
3434 }
3435 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
3436 { /* var122 = array_instance Array[Object] */
3437 var123 = 8;
3438 var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object);
3439 ((struct instance_array__NativeArray*)var124)->values[0] = (val*) var_attr;
3440 ((struct instance_array__NativeArray*)var124)->values[1] = (val*) var102;
3441 ((struct instance_array__NativeArray*)var124)->values[2] = (val*) var_value;
3442 ((struct instance_array__NativeArray*)var124)->values[3] = (val*) var107;
3443 ((struct instance_array__NativeArray*)var124)->values[4] = (val*) var_a;
3444 ((struct instance_array__NativeArray*)var124)->values[5] = (val*) var112;
3445 ((struct instance_array__NativeArray*)var124)->values[6] = (val*) var116;
3446 ((struct instance_array__NativeArray*)var124)->values[7] = (val*) var118;
3447 ((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on <var122:Array[Object]>*/;
3448 }
3449 var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on <var122:Array[Object]>*/;
3450 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var125) /* add on <self:SeparateCompilerVisitor>*/;
3451 if (varonce126) {
3452 var127 = varonce126;
3453 } else {
3454 var128 = "}";
3455 var129 = 1;
3456 var130 = string__NativeString__to_s_with_length(var128, var129);
3457 var127 = var130;
3458 varonce126 = var127;
3459 }
3460 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var127) /* add on <self:SeparateCompilerVisitor>*/;
3461 } else {
3462 if (varonce131) {
3463 var132 = varonce131;
3464 } else {
3465 var133 = " = ";
3466 var134 = 3;
3467 var135 = string__NativeString__to_s_with_length(var133, var134);
3468 var132 = var135;
3469 varonce131 = var132;
3470 }
3471 if (varonce136) {
3472 var137 = varonce136;
3473 } else {
3474 var138 = "; /* ";
3475 var139 = 5;
3476 var140 = string__NativeString__to_s_with_length(var138, var139);
3477 var137 = var140;
3478 varonce136 = var137;
3479 }
3480 if (varonce141) {
3481 var142 = varonce141;
3482 } else {
3483 var143 = " on ";
3484 var144 = 4;
3485 var145 = string__NativeString__to_s_with_length(var143, var144);
3486 var142 = var145;
3487 varonce141 = var142;
3488 }
3489 var146 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3490 if (varonce147) {
3491 var148 = varonce147;
3492 } else {
3493 var149 = " */";
3494 var150 = 3;
3495 var151 = string__NativeString__to_s_with_length(var149, var150);
3496 var148 = var151;
3497 varonce147 = var148;
3498 }
3499 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
3500 { /* var152 = array_instance Array[Object] */
3501 var153 = 8;
3502 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
3503 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var_attr;
3504 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var132;
3505 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var_value;
3506 ((struct instance_array__NativeArray*)var154)->values[3] = (val*) var137;
3507 ((struct instance_array__NativeArray*)var154)->values[4] = (val*) var_a;
3508 ((struct instance_array__NativeArray*)var154)->values[5] = (val*) var142;
3509 ((struct instance_array__NativeArray*)var154)->values[6] = (val*) var146;
3510 ((struct instance_array__NativeArray*)var154)->values[7] = (val*) var148;
3511 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
3512 }
3513 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
3514 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var155) /* add on <self:SeparateCompilerVisitor>*/;
3515 }
3516 } else {
3517 if (varonce156) {
3518 var157 = varonce156;
3519 } else {
3520 var158 = "->attrs[";
3521 var159 = 8;
3522 var160 = string__NativeString__to_s_with_length(var158, var159);
3523 var157 = var160;
3524 varonce156 = var157;
3525 }
3526 var161 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3527 if (varonce162) {
3528 var163 = varonce162;
3529 } else {
3530 var164 = "].";
3531 var165 = 2;
3532 var166 = string__NativeString__to_s_with_length(var164, var165);
3533 var163 = var166;
3534 varonce162 = var163;
3535 }
3536 var167 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_mtype) /* ctypename on <var_mtype:MType>*/;
3537 if (varonce168) {
3538 var169 = varonce168;
3539 } else {
3540 var170 = " = ";
3541 var171 = 3;
3542 var172 = string__NativeString__to_s_with_length(var170, var171);
3543 var169 = var172;
3544 varonce168 = var169;
3545 }
3546 if (varonce173) {
3547 var174 = varonce173;
3548 } else {
3549 var175 = "; /* ";
3550 var176 = 5;
3551 var177 = string__NativeString__to_s_with_length(var175, var176);
3552 var174 = var177;
3553 varonce173 = var174;
3554 }
3555 if (varonce178) {
3556 var179 = varonce178;
3557 } else {
3558 var180 = " on ";
3559 var181 = 4;
3560 var182 = string__NativeString__to_s_with_length(var180, var181);
3561 var179 = var182;
3562 varonce178 = var179;
3563 }
3564 var183 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3565 if (varonce184) {
3566 var185 = varonce184;
3567 } else {
3568 var186 = " */";
3569 var187 = 3;
3570 var188 = string__NativeString__to_s_with_length(var186, var187);
3571 var185 = var188;
3572 varonce184 = var185;
3573 }
3574 var189 = NEW_array__Array(&type_array__Arraykernel__Object);
3575 { /* var189 = array_instance Array[Object] */
3576 var190 = 12;
3577 var191 = NEW_array__NativeArray(var190, &type_array__NativeArraykernel__Object);
3578 ((struct instance_array__NativeArray*)var191)->values[0] = (val*) var_recv;
3579 ((struct instance_array__NativeArray*)var191)->values[1] = (val*) var157;
3580 ((struct instance_array__NativeArray*)var191)->values[2] = (val*) var161;
3581 ((struct instance_array__NativeArray*)var191)->values[3] = (val*) var163;
3582 ((struct instance_array__NativeArray*)var191)->values[4] = (val*) var167;
3583 ((struct instance_array__NativeArray*)var191)->values[5] = (val*) var169;
3584 ((struct instance_array__NativeArray*)var191)->values[6] = (val*) var_value;
3585 ((struct instance_array__NativeArray*)var191)->values[7] = (val*) var174;
3586 ((struct instance_array__NativeArray*)var191)->values[8] = (val*) var_a;
3587 ((struct instance_array__NativeArray*)var191)->values[9] = (val*) var179;
3588 ((struct instance_array__NativeArray*)var191)->values[10] = (val*) var183;
3589 ((struct instance_array__NativeArray*)var191)->values[11] = (val*) var185;
3590 ((void (*)(val*, val*, long))(var189->class->vft[COLOR_array__Array__with_native]))(var189, var191, var190) /* with_native on <var189:Array[Object]>*/;
3591 }
3592 var192 = ((val* (*)(val*))(var189->class->vft[COLOR_string__Object__to_s]))(var189) /* to_s on <var189:Array[Object]>*/;
3593 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var192) /* add on <self:SeparateCompilerVisitor>*/;
3594 }
3595 RET_LABEL:;
3596 }
3597 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
3598 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
3599 separate_compiler__SeparateCompilerVisitor__write_attribute(self, p0, p1, p2);
3600 RET_LABEL:;
3601 }
3602 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: SeparateCompilerVisitor, MClassType): RuntimeVariable */
3603 val* separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
3604 val* var /* : RuntimeVariable */;
3605 val* var_mtype /* var mtype: MClassType */;
3606 static val* varonce;
3607 val* var1 /* : String */;
3608 char* var2 /* : NativeString */;
3609 long var3 /* : Int */;
3610 val* var4 /* : String */;
3611 val* var5 /* : MClass */;
3612 val* var6 /* : String */;
3613 val* var7 /* : Array[Object] */;
3614 long var8 /* : Int */;
3615 val* var9 /* : NativeArray[Object] */;
3616 val* var10 /* : String */;
3617 val* var11 /* : AbstractCompiler */;
3618 val* var_compiler /* var compiler: SeparateCompiler */;
3619 short int var12 /* : Bool */;
3620 short int var13 /* : Bool */;
3621 int cltype;
3622 int idtype;
3623 short int var_ /* var : Bool */;
3624 short int var14 /* : Bool */;
3625 val* var15 /* : nullable Frame */;
3626 val* var16 /* : MPropDef */;
3627 val* var17 /* : MClassDef */;
3628 val* var18 /* : nullable Frame */;
3629 val* var19 /* : Array[RuntimeVariable] */;
3630 val* var20 /* : nullable Object */;
3631 val* var_recv /* var recv: RuntimeVariable */;
3632 val* var21 /* : String */;
3633 val* var_recv_type_info /* var recv_type_info: String */;
3634 val* var22 /* : String */;
3635 short int var23 /* : Bool */;
3636 val* var24 /* : ModelBuilder */;
3637 val* var25 /* : ToolContext */;
3638 val* var26 /* : OptionBool */;
3639 val* var27 /* : nullable Object */;
3640 short int var28 /* : Bool */;
3641 short int var_29 /* var : Bool */;
3642 val* var30 /* : ModelBuilder */;
3643 val* var31 /* : ToolContext */;
3644 val* var32 /* : OptionBool */;
3645 val* var33 /* : nullable Object */;
3646 short int var34 /* : Bool */;
3647 static val* varonce35;
3648 val* var36 /* : String */;
3649 char* var37 /* : NativeString */;
3650 long var38 /* : Int */;
3651 val* var39 /* : String */;
3652 val* var40 /* : MClass */;
3653 val* var41 /* : String */;
3654 static val* varonce42;
3655 val* var43 /* : String */;
3656 char* var44 /* : NativeString */;
3657 long var45 /* : Int */;
3658 val* var46 /* : String */;
3659 static val* varonce47;
3660 val* var48 /* : String */;
3661 char* var49 /* : NativeString */;
3662 long var50 /* : Int */;
3663 val* var51 /* : String */;
3664 static val* varonce52;
3665 val* var53 /* : String */;
3666 char* var54 /* : NativeString */;
3667 long var55 /* : Int */;
3668 val* var56 /* : String */;
3669 val* var57 /* : String */;
3670 static val* varonce58;
3671 val* var59 /* : String */;
3672 char* var60 /* : NativeString */;
3673 long var61 /* : Int */;
3674 val* var62 /* : String */;
3675 val* var63 /* : Array[Object] */;
3676 long var64 /* : Int */;
3677 val* var65 /* : NativeArray[Object] */;
3678 val* var66 /* : String */;
3679 val* var67 /* : RuntimeVariable */;
3680 static val* varonce68;
3681 val* var69 /* : String */;
3682 char* var70 /* : NativeString */;
3683 long var71 /* : Int */;
3684 val* var72 /* : String */;
3685 val* var73 /* : MClass */;
3686 val* var74 /* : String */;
3687 static val* varonce75;
3688 val* var76 /* : String */;
3689 char* var77 /* : NativeString */;
3690 long var78 /* : Int */;
3691 val* var79 /* : String */;
3692 static val* varonce80;
3693 val* var81 /* : String */;
3694 char* var82 /* : NativeString */;
3695 long var83 /* : Int */;
3696 val* var84 /* : String */;
3697 val* var85 /* : String */;
3698 static val* varonce86;
3699 val* var87 /* : String */;
3700 char* var88 /* : NativeString */;
3701 long var89 /* : Int */;
3702 val* var90 /* : String */;
3703 val* var91 /* : Array[Object] */;
3704 long var92 /* : Int */;
3705 val* var93 /* : NativeArray[Object] */;
3706 val* var94 /* : String */;
3707 val* var95 /* : RuntimeVariable */;
3708 val* var96 /* : Set[MType] */;
3709 static val* varonce97;
3710 val* var98 /* : String */;
3711 char* var99 /* : NativeString */;
3712 long var100 /* : Int */;
3713 val* var101 /* : String */;
3714 val* var102 /* : String */;
3715 val* var103 /* : Array[Object] */;
3716 long var104 /* : Int */;
3717 val* var105 /* : NativeArray[Object] */;
3718 val* var106 /* : String */;
3719 static val* varonce107;
3720 val* var108 /* : String */;
3721 char* var109 /* : NativeString */;
3722 long var110 /* : Int */;
3723 val* var111 /* : String */;
3724 val* var112 /* : MClass */;
3725 val* var113 /* : String */;
3726 static val* varonce114;
3727 val* var115 /* : String */;
3728 char* var116 /* : NativeString */;
3729 long var117 /* : Int */;
3730 val* var118 /* : String */;
3731 val* var119 /* : String */;
3732 static val* varonce120;
3733 val* var121 /* : String */;
3734 char* var122 /* : NativeString */;
3735 long var123 /* : Int */;
3736 val* var124 /* : String */;
3737 val* var125 /* : Array[Object] */;
3738 long var126 /* : Int */;
3739 val* var127 /* : NativeArray[Object] */;
3740 val* var128 /* : String */;
3741 val* var129 /* : RuntimeVariable */;
3742 var_mtype = p0;
3743 if (varonce) {
3744 var1 = varonce;
3745 } else {
3746 var2 = "NEW_";
3747 var3 = 4;
3748 var4 = string__NativeString__to_s_with_length(var2, var3);
3749 var1 = var4;
3750 varonce = var1;
3751 }
3752 var5 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
3753 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var5) /* c_name on <var5:MClass>*/;
3754 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
3755 { /* var7 = array_instance Array[Object] */
3756 var8 = 2;
3757 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
3758 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var1;
3759 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var6;
3760 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
3761 }
3762 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
3763 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3764 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3765 var_compiler = var11;
3766 /* <var_mtype:MClassType> isa MGenericType */
3767 cltype = type_model__MGenericType.color;
3768 idtype = type_model__MGenericType.id;
3769 if(cltype >= var_mtype->type->table_size) {
3770 var13 = 0;
3771 } else {
3772 var13 = var_mtype->type->type_table[cltype] == idtype;
3773 }
3774 var_ = var13;
3775 if (var13){
3776 var14 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType(MGenericType)>*/;
3777 var12 = var14;
3778 } else {
3779 var12 = var_;
3780 }
3781 if (var12){
3782 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
3783 if (var15 == NULL) {
3784 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3785 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1260);
3786 show_backtrace(1);
3787 } else {
3788 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var15) /* mpropdef on <var15:nullable Frame>*/;
3789 }
3790 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mclassdef]))(var16) /* mclassdef on <var16:MPropDef>*/;
3791 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var17, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
3792 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
3793 if (var18 == NULL) {
3794 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3795 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1261);
3796 show_backtrace(1);
3797 } else {
3798 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var18) /* arguments on <var18:nullable Frame>*/;
3799 }
3800 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__first]))(var19) /* first on <var19:Array[RuntimeVariable]>*/;
3801 var_recv = var20;
3802 var21 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
3803 var_recv_type_info = var21;
3804 var22 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
3805 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var22) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3806 var24 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
3807 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var24) /* toolcontext on <var24:ModelBuilder>*/;
3808 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var25) /* opt_phmod_typing on <var25:ToolContext>*/;
3809 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_opts__Option__value]))(var26) /* value on <var26:OptionBool>*/;
3810 var28 = ((struct instance_kernel__Bool*)var27)->value; /* autounbox from nullable Object to Bool */;
3811 var_29 = var28;
3812 if (var28){
3813 var23 = var_29;
3814 } else {
3815 var30 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
3816 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var30) /* toolcontext on <var30:ModelBuilder>*/;
3817 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var31) /* opt_phand_typing on <var31:ToolContext>*/;
3818 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_opts__Option__value]))(var32) /* value on <var32:OptionBool>*/;
3819 var34 = ((struct instance_kernel__Bool*)var33)->value; /* autounbox from nullable Object to Bool */;
3820 var23 = var34;
3821 }
3822 if (var23){
3823 if (varonce35) {
3824 var36 = varonce35;
3825 } else {
3826 var37 = "NEW_";
3827 var38 = 4;
3828 var39 = string__NativeString__to_s_with_length(var37, var38);
3829 var36 = var39;
3830 varonce35 = var36;
3831 }
3832 var40 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
3833 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var40) /* c_name on <var40:MClass>*/;
3834 if (varonce42) {
3835 var43 = varonce42;
3836 } else {
3837 var44 = "(";
3838 var45 = 1;
3839 var46 = string__NativeString__to_s_with_length(var44, var45);
3840 var43 = var46;
3841 varonce42 = var43;
3842 }
3843 if (varonce47) {
3844 var48 = varonce47;
3845 } else {
3846 var49 = "->resolution_table->types[HASH(";
3847 var50 = 31;
3848 var51 = string__NativeString__to_s_with_length(var49, var50);
3849 var48 = var51;
3850 varonce47 = var48;
3851 }
3852 if (varonce52) {
3853 var53 = varonce52;
3854 } else {
3855 var54 = "->resolution_table->mask, ";
3856 var55 = 26;
3857 var56 = string__NativeString__to_s_with_length(var54, var55);
3858 var53 = var56;
3859 varonce52 = var53;
3860 }
3861 var57 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
3862 if (varonce58) {
3863 var59 = varonce58;
3864 } else {
3865 var60 = ")])";
3866 var61 = 3;
3867 var62 = string__NativeString__to_s_with_length(var60, var61);
3868 var59 = var62;
3869 varonce58 = var59;
3870 }
3871 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
3872 { /* var63 = array_instance Array[Object] */
3873 var64 = 9;
3874 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
3875 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var36;
3876 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var41;
3877 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var43;
3878 ((struct instance_array__NativeArray*)var65)->values[3] = (val*) var_recv_type_info;
3879 ((struct instance_array__NativeArray*)var65)->values[4] = (val*) var48;
3880 ((struct instance_array__NativeArray*)var65)->values[5] = (val*) var_recv_type_info;
3881 ((struct instance_array__NativeArray*)var65)->values[6] = (val*) var53;
3882 ((struct instance_array__NativeArray*)var65)->values[7] = (val*) var57;
3883 ((struct instance_array__NativeArray*)var65)->values[8] = (val*) var59;
3884 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
3885 }
3886 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
3887 var67 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var66, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
3888 var = var67;
3889 goto RET_LABEL;
3890 } else {
3891 if (varonce68) {
3892 var69 = varonce68;
3893 } else {
3894 var70 = "NEW_";
3895 var71 = 4;
3896 var72 = string__NativeString__to_s_with_length(var70, var71);
3897 var69 = var72;
3898 varonce68 = var69;
3899 }
3900 var73 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
3901 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var73) /* c_name on <var73:MClass>*/;
3902 if (varonce75) {
3903 var76 = varonce75;
3904 } else {
3905 var77 = "(";
3906 var78 = 1;
3907 var79 = string__NativeString__to_s_with_length(var77, var78);
3908 var76 = var79;
3909 varonce75 = var76;
3910 }
3911 if (varonce80) {
3912 var81 = varonce80;
3913 } else {
3914 var82 = "->resolution_table->types[";
3915 var83 = 26;
3916 var84 = string__NativeString__to_s_with_length(var82, var83);
3917 var81 = var84;
3918 varonce80 = var81;
3919 }
3920 var85 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
3921 if (varonce86) {
3922 var87 = varonce86;
3923 } else {
3924 var88 = "])";
3925 var89 = 2;
3926 var90 = string__NativeString__to_s_with_length(var88, var89);
3927 var87 = var90;
3928 varonce86 = var87;
3929 }
3930 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
3931 { /* var91 = array_instance Array[Object] */
3932 var92 = 7;
3933 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
3934 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var69;
3935 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var74;
3936 ((struct instance_array__NativeArray*)var93)->values[2] = (val*) var76;
3937 ((struct instance_array__NativeArray*)var93)->values[3] = (val*) var_recv_type_info;
3938 ((struct instance_array__NativeArray*)var93)->values[4] = (val*) var81;
3939 ((struct instance_array__NativeArray*)var93)->values[5] = (val*) var85;
3940 ((struct instance_array__NativeArray*)var93)->values[6] = (val*) var87;
3941 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
3942 }
3943 var94 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
3944 var95 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var94, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
3945 var = var95;
3946 goto RET_LABEL;
3947 }
3948 } else {
3949 }
3950 var96 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
3951 ((void (*)(val*, val*))(var96->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var96, var_mtype) /* add on <var96:Set[MType]>*/;
3952 if (varonce97) {
3953 var98 = varonce97;
3954 } else {
3955 var99 = "type_";
3956 var100 = 5;
3957 var101 = string__NativeString__to_s_with_length(var99, var100);
3958 var98 = var101;
3959 varonce97 = var98;
3960 }
3961 var102 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
3962 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
3963 { /* var103 = array_instance Array[Object] */
3964 var104 = 2;
3965 var105 = NEW_array__NativeArray(var104, &type_array__NativeArraykernel__Object);
3966 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var98;
3967 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var102;
3968 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
3969 }
3970 var106 = ((val* (*)(val*))(var103->class->vft[COLOR_string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
3971 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var106) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3972 if (varonce107) {
3973 var108 = varonce107;
3974 } else {
3975 var109 = "NEW_";
3976 var110 = 4;
3977 var111 = string__NativeString__to_s_with_length(var109, var110);
3978 var108 = var111;
3979 varonce107 = var108;
3980 }
3981 var112 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
3982 var113 = ((val* (*)(val*))(var112->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var112) /* c_name on <var112:MClass>*/;
3983 if (varonce114) {
3984 var115 = varonce114;
3985 } else {
3986 var116 = "(&type_";
3987 var117 = 7;
3988 var118 = string__NativeString__to_s_with_length(var116, var117);
3989 var115 = var118;
3990 varonce114 = var115;
3991 }
3992 var119 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
3993 if (varonce120) {
3994 var121 = varonce120;
3995 } else {
3996 var122 = ")";
3997 var123 = 1;
3998 var124 = string__NativeString__to_s_with_length(var122, var123);
3999 var121 = var124;
4000 varonce120 = var121;
4001 }
4002 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
4003 { /* var125 = array_instance Array[Object] */
4004 var126 = 5;
4005 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
4006 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var108;
4007 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var113;
4008 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var115;
4009 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var119;
4010 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var121;
4011 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
4012 }
4013 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
4014 var129 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var128, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4015 var = var129;
4016 goto RET_LABEL;
4017 RET_LABEL:;
4018 return var;
4019 }
4020 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
4021 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
4022 val* var /* : RuntimeVariable */;
4023 val* var1 /* : RuntimeVariable */;
4024 var1 = separate_compiler__SeparateCompilerVisitor__init_instance(self, p0);
4025 var = var1;
4026 RET_LABEL:;
4027 return var;
4028 }
4029 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: SeparateCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
4030 val* separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
4031 val* var /* : RuntimeVariable */;
4032 val* var_value /* var value: RuntimeVariable */;
4033 val* var_mtype /* var mtype: MType */;
4034 val* var_tag /* var tag: String */;
4035 static val* varonce;
4036 val* var1 /* : String */;
4037 char* var2 /* : NativeString */;
4038 long var3 /* : Int */;
4039 val* var4 /* : String */;
4040 val* var5 /* : String */;
4041 static val* varonce6;
4042 val* var7 /* : String */;
4043 char* var8 /* : NativeString */;
4044 long var9 /* : Int */;
4045 val* var10 /* : String */;
4046 static val* varonce11;
4047 val* var12 /* : String */;
4048 char* var13 /* : NativeString */;
4049 long var14 /* : Int */;
4050 val* var15 /* : String */;
4051 val* var16 /* : Array[Object] */;
4052 long var17 /* : Int */;
4053 val* var18 /* : NativeArray[Object] */;
4054 val* var19 /* : String */;
4055 val* var20 /* : AbstractCompiler */;
4056 val* var_compiler /* var compiler: SeparateCompiler */;
4057 val* var21 /* : nullable Frame */;
4058 val* var22 /* : Array[RuntimeVariable] */;
4059 val* var23 /* : nullable Object */;
4060 val* var_recv /* var recv: RuntimeVariable */;
4061 val* var24 /* : String */;
4062 val* var_recv_type_info /* var recv_type_info: String */;
4063 val* var25 /* : MClassType */;
4064 val* var26 /* : RuntimeVariable */;
4065 val* var_res /* var res: RuntimeVariable */;
4066 static val* varonce27;
4067 val* var28 /* : String */;
4068 char* var29 /* : NativeString */;
4069 long var30 /* : Int */;
4070 val* var31 /* : String */;
4071 val* var32 /* : String */;
4072 val* var_cltype /* var cltype: String */;
4073 static val* varonce33;
4074 val* var34 /* : String */;
4075 char* var35 /* : NativeString */;
4076 long var36 /* : Int */;
4077 val* var37 /* : String */;
4078 static val* varonce38;
4079 val* var39 /* : String */;
4080 char* var40 /* : NativeString */;
4081 long var41 /* : Int */;
4082 val* var42 /* : String */;
4083 val* var43 /* : Array[Object] */;
4084 long var44 /* : Int */;
4085 val* var45 /* : NativeArray[Object] */;
4086 val* var46 /* : String */;
4087 static val* varonce47;
4088 val* var48 /* : String */;
4089 char* var49 /* : NativeString */;
4090 long var50 /* : Int */;
4091 val* var51 /* : String */;
4092 val* var52 /* : String */;
4093 val* var_idtype /* var idtype: String */;
4094 static val* varonce53;
4095 val* var54 /* : String */;
4096 char* var55 /* : NativeString */;
4097 long var56 /* : Int */;
4098 val* var57 /* : String */;
4099 static val* varonce58;
4100 val* var59 /* : String */;
4101 char* var60 /* : NativeString */;
4102 long var61 /* : Int */;
4103 val* var62 /* : String */;
4104 val* var63 /* : Array[Object] */;
4105 long var64 /* : Int */;
4106 val* var65 /* : NativeArray[Object] */;
4107 val* var66 /* : String */;
4108 short int var67 /* : Bool */;
4109 short int var_maybe_null /* var maybe_null: Bool */;
4110 static val* varonce68;
4111 val* var69 /* : String */;
4112 char* var70 /* : NativeString */;
4113 long var71 /* : Int */;
4114 val* var72 /* : String */;
4115 val* var_accept_null /* var accept_null: String */;
4116 val* var_ntype /* var ntype: MType */;
4117 short int var73 /* : Bool */;
4118 int cltype;
4119 int idtype;
4120 val* var74 /* : MType */;
4121 static val* varonce75;
4122 val* var76 /* : String */;
4123 char* var77 /* : NativeString */;
4124 long var78 /* : Int */;
4125 val* var79 /* : String */;
4126 val* var80 /* : MType */;
4127 val* var81 /* : nullable Frame */;
4128 val* var82 /* : MPropDef */;
4129 val* var83 /* : MClassDef */;
4130 val* var84 /* : MModule */;
4131 val* var85 /* : nullable Frame */;
4132 val* var86 /* : MPropDef */;
4133 val* var87 /* : MClassDef */;
4134 val* var88 /* : MClassType */;
4135 short int var89 /* : Bool */;
4136 static val* varonce90;
4137 val* var91 /* : String */;
4138 char* var92 /* : NativeString */;
4139 long var93 /* : Int */;
4140 val* var94 /* : String */;
4141 val* var95 /* : String */;
4142 static val* varonce96;
4143 val* var97 /* : String */;
4144 char* var98 /* : NativeString */;
4145 long var99 /* : Int */;
4146 val* var100 /* : String */;
4147 static val* varonce101;
4148 val* var102 /* : String */;
4149 char* var103 /* : NativeString */;
4150 long var104 /* : Int */;
4151 val* var105 /* : String */;
4152 val* var106 /* : Array[Object] */;
4153 long var107 /* : Int */;
4154 val* var108 /* : NativeArray[Object] */;
4155 val* var109 /* : String */;
4156 val* var110 /* : ModelBuilder */;
4157 val* var111 /* : ToolContext */;
4158 val* var112 /* : OptionBool */;
4159 val* var113 /* : nullable Object */;
4160 short int var114 /* : Bool */;
4161 val* var115 /* : AbstractCompiler */;
4162 val* var116 /* : HashMap[String, Int] */;
4163 val* var_ /* var : HashMap[String, Int] */;
4164 val* var_117 /* var : String */;
4165 val* var118 /* : nullable Object */;
4166 long var119 /* : Int */;
4167 long var120 /* : Int */;
4168 long var122 /* : Int */;
4169 long var123 /* : Int */;
4170 val* var124 /* : nullable Object */;
4171 static val* varonce125;
4172 val* var126 /* : String */;
4173 char* var127 /* : NativeString */;
4174 long var128 /* : Int */;
4175 val* var129 /* : String */;
4176 static val* varonce130;
4177 val* var131 /* : String */;
4178 char* var132 /* : NativeString */;
4179 long var133 /* : Int */;
4180 val* var134 /* : String */;
4181 val* var135 /* : Array[Object] */;
4182 long var136 /* : Int */;
4183 val* var137 /* : NativeArray[Object] */;
4184 val* var138 /* : String */;
4185 short int var139 /* : Bool */;
4186 static val* varonce140;
4187 val* var141 /* : String */;
4188 char* var142 /* : NativeString */;
4189 long var143 /* : Int */;
4190 val* var144 /* : String */;
4191 val* var145 /* : String */;
4192 val* var_type_struct /* var type_struct: String */;
4193 static val* varonce146;
4194 val* var147 /* : String */;
4195 char* var148 /* : NativeString */;
4196 long var149 /* : Int */;
4197 val* var150 /* : String */;
4198 static val* varonce151;
4199 val* var152 /* : String */;
4200 char* var153 /* : NativeString */;
4201 long var154 /* : Int */;
4202 val* var155 /* : String */;
4203 val* var156 /* : Array[Object] */;
4204 long var157 /* : Int */;
4205 val* var158 /* : NativeArray[Object] */;
4206 val* var159 /* : String */;
4207 val* var160 /* : nullable Frame */;
4208 val* var161 /* : MPropDef */;
4209 val* var162 /* : MClassDef */;
4210 val* var163 /* : String */;
4211 short int var164 /* : Bool */;
4212 val* var165 /* : ModelBuilder */;
4213 val* var166 /* : ToolContext */;
4214 val* var167 /* : OptionBool */;
4215 val* var168 /* : nullable Object */;
4216 short int var169 /* : Bool */;
4217 short int var_170 /* var : Bool */;
4218 val* var171 /* : ModelBuilder */;
4219 val* var172 /* : ToolContext */;
4220 val* var173 /* : OptionBool */;
4221 val* var174 /* : nullable Object */;
4222 short int var175 /* : Bool */;
4223 static val* varonce176;
4224 val* var177 /* : String */;
4225 char* var178 /* : NativeString */;
4226 long var179 /* : Int */;
4227 val* var180 /* : String */;
4228 static val* varonce181;
4229 val* var182 /* : String */;
4230 char* var183 /* : NativeString */;
4231 long var184 /* : Int */;
4232 val* var185 /* : String */;
4233 static val* varonce186;
4234 val* var187 /* : String */;
4235 char* var188 /* : NativeString */;
4236 long var189 /* : Int */;
4237 val* var190 /* : String */;
4238 val* var191 /* : String */;
4239 static val* varonce192;
4240 val* var193 /* : String */;
4241 char* var194 /* : NativeString */;
4242 long var195 /* : Int */;
4243 val* var196 /* : String */;
4244 val* var197 /* : Array[Object] */;
4245 long var198 /* : Int */;
4246 val* var199 /* : NativeArray[Object] */;
4247 val* var200 /* : String */;
4248 static val* varonce201;
4249 val* var202 /* : String */;
4250 char* var203 /* : NativeString */;
4251 long var204 /* : Int */;
4252 val* var205 /* : String */;
4253 static val* varonce206;
4254 val* var207 /* : String */;
4255 char* var208 /* : NativeString */;
4256 long var209 /* : Int */;
4257 val* var210 /* : String */;
4258 val* var211 /* : String */;
4259 static val* varonce212;
4260 val* var213 /* : String */;
4261 char* var214 /* : NativeString */;
4262 long var215 /* : Int */;
4263 val* var216 /* : String */;
4264 val* var217 /* : Array[Object] */;
4265 long var218 /* : Int */;
4266 val* var219 /* : NativeArray[Object] */;
4267 val* var220 /* : String */;
4268 val* var221 /* : ModelBuilder */;
4269 val* var222 /* : ToolContext */;
4270 val* var223 /* : OptionBool */;
4271 val* var224 /* : nullable Object */;
4272 short int var225 /* : Bool */;
4273 val* var226 /* : AbstractCompiler */;
4274 val* var227 /* : HashMap[String, Int] */;
4275 val* var_228 /* var : HashMap[String, Int] */;
4276 val* var_229 /* var : String */;
4277 val* var230 /* : nullable Object */;
4278 long var231 /* : Int */;
4279 long var232 /* : Int */;
4280 long var234 /* : Int */;
4281 long var235 /* : Int */;
4282 val* var236 /* : nullable Object */;
4283 static val* varonce237;
4284 val* var238 /* : String */;
4285 char* var239 /* : NativeString */;
4286 long var240 /* : Int */;
4287 val* var241 /* : String */;
4288 static val* varonce242;
4289 val* var243 /* : String */;
4290 char* var244 /* : NativeString */;
4291 long var245 /* : Int */;
4292 val* var246 /* : String */;
4293 val* var247 /* : Array[Object] */;
4294 long var248 /* : Int */;
4295 val* var249 /* : NativeArray[Object] */;
4296 val* var250 /* : String */;
4297 static val* varonce251;
4298 val* var252 /* : String */;
4299 char* var253 /* : NativeString */;
4300 long var254 /* : Int */;
4301 val* var255 /* : String */;
4302 static val* varonce256;
4303 val* var257 /* : String */;
4304 char* var258 /* : NativeString */;
4305 long var259 /* : Int */;
4306 val* var260 /* : String */;
4307 val* var261 /* : Array[Object] */;
4308 long var262 /* : Int */;
4309 val* var263 /* : NativeArray[Object] */;
4310 val* var264 /* : String */;
4311 static val* varonce265;
4312 val* var266 /* : String */;
4313 char* var267 /* : NativeString */;
4314 long var268 /* : Int */;
4315 val* var269 /* : String */;
4316 static val* varonce270;
4317 val* var271 /* : String */;
4318 char* var272 /* : NativeString */;
4319 long var273 /* : Int */;
4320 val* var274 /* : String */;
4321 val* var275 /* : Array[Object] */;
4322 long var276 /* : Int */;
4323 val* var277 /* : NativeArray[Object] */;
4324 val* var278 /* : String */;
4325 short int var279 /* : Bool */;
4326 short int var_280 /* var : Bool */;
4327 static val* varonce281;
4328 val* var282 /* : String */;
4329 char* var283 /* : NativeString */;
4330 long var284 /* : Int */;
4331 val* var285 /* : String */;
4332 short int var286 /* : Bool */;
4333 static val* varonce287;
4334 val* var288 /* : String */;
4335 char* var289 /* : NativeString */;
4336 long var290 /* : Int */;
4337 val* var291 /* : String */;
4338 val* var292 /* : String */;
4339 val* var_is_nullable /* var is_nullable: String */;
4340 static val* varonce293;
4341 val* var294 /* : String */;
4342 char* var295 /* : NativeString */;
4343 long var296 /* : Int */;
4344 val* var297 /* : String */;
4345 static val* varonce298;
4346 val* var299 /* : String */;
4347 char* var300 /* : NativeString */;
4348 long var301 /* : Int */;
4349 val* var302 /* : String */;
4350 val* var303 /* : Array[Object] */;
4351 long var304 /* : Int */;
4352 val* var305 /* : NativeArray[Object] */;
4353 val* var306 /* : String */;
4354 static val* varonce307;
4355 val* var308 /* : String */;
4356 char* var309 /* : NativeString */;
4357 long var310 /* : Int */;
4358 val* var311 /* : String */;
4359 static val* varonce312;
4360 val* var313 /* : String */;
4361 char* var314 /* : NativeString */;
4362 long var315 /* : Int */;
4363 val* var316 /* : String */;
4364 val* var317 /* : Array[Object] */;
4365 long var318 /* : Int */;
4366 val* var319 /* : NativeArray[Object] */;
4367 val* var320 /* : String */;
4368 val* var321 /* : String */;
4369 short int var322 /* : Bool */;
4370 int cltype323;
4371 int idtype324;
4372 val* var325 /* : Set[MType] */;
4373 static val* varonce326;
4374 val* var327 /* : String */;
4375 char* var328 /* : NativeString */;
4376 long var329 /* : Int */;
4377 val* var330 /* : String */;
4378 val* var331 /* : String */;
4379 val* var332 /* : Array[Object] */;
4380 long var333 /* : Int */;
4381 val* var334 /* : NativeArray[Object] */;
4382 val* var335 /* : String */;
4383 static val* varonce336;
4384 val* var337 /* : String */;
4385 char* var338 /* : NativeString */;
4386 long var339 /* : Int */;
4387 val* var340 /* : String */;
4388 val* var341 /* : String */;
4389 static val* varonce342;
4390 val* var343 /* : String */;
4391 char* var344 /* : NativeString */;
4392 long var345 /* : Int */;
4393 val* var346 /* : String */;
4394 val* var347 /* : Array[Object] */;
4395 long var348 /* : Int */;
4396 val* var349 /* : NativeArray[Object] */;
4397 val* var350 /* : String */;
4398 static val* varonce351;
4399 val* var352 /* : String */;
4400 char* var353 /* : NativeString */;
4401 long var354 /* : Int */;
4402 val* var355 /* : String */;
4403 val* var356 /* : String */;
4404 static val* varonce357;
4405 val* var358 /* : String */;
4406 char* var359 /* : NativeString */;
4407 long var360 /* : Int */;
4408 val* var361 /* : String */;
4409 val* var362 /* : Array[Object] */;
4410 long var363 /* : Int */;
4411 val* var364 /* : NativeArray[Object] */;
4412 val* var365 /* : String */;
4413 val* var366 /* : ModelBuilder */;
4414 val* var367 /* : ToolContext */;
4415 val* var368 /* : OptionBool */;
4416 val* var369 /* : nullable Object */;
4417 short int var370 /* : Bool */;
4418 val* var371 /* : AbstractCompiler */;
4419 val* var372 /* : HashMap[String, Int] */;
4420 val* var_373 /* var : HashMap[String, Int] */;
4421 val* var_374 /* var : String */;
4422 val* var375 /* : nullable Object */;
4423 long var376 /* : Int */;
4424 long var377 /* : Int */;
4425 long var379 /* : Int */;
4426 long var380 /* : Int */;
4427 val* var381 /* : nullable Object */;
4428 static val* varonce382;
4429 val* var383 /* : String */;
4430 char* var384 /* : NativeString */;
4431 long var385 /* : Int */;
4432 val* var386 /* : String */;
4433 static val* varonce387;
4434 val* var388 /* : String */;
4435 char* var389 /* : NativeString */;
4436 long var390 /* : Int */;
4437 val* var391 /* : String */;
4438 val* var392 /* : Array[Object] */;
4439 long var393 /* : Int */;
4440 val* var394 /* : NativeArray[Object] */;
4441 val* var395 /* : String */;
4442 static val* varonce396;
4443 val* var397 /* : String */;
4444 char* var398 /* : NativeString */;
4445 long var399 /* : Int */;
4446 val* var400 /* : String */;
4447 static val* varonce401;
4448 val* var402 /* : String */;
4449 char* var403 /* : NativeString */;
4450 long var404 /* : Int */;
4451 val* var405 /* : String */;
4452 val* var406 /* : String */;
4453 static val* varonce407;
4454 val* var408 /* : String */;
4455 char* var409 /* : NativeString */;
4456 long var410 /* : Int */;
4457 val* var411 /* : String */;
4458 val* var412 /* : Array[Object] */;
4459 long var413 /* : Int */;
4460 val* var414 /* : NativeArray[Object] */;
4461 val* var415 /* : String */;
4462 static val* varonce416;
4463 val* var417 /* : String */;
4464 char* var418 /* : NativeString */;
4465 long var419 /* : Int */;
4466 val* var420 /* : String */;
4467 static val* varonce421;
4468 val* var422 /* : String */;
4469 char* var423 /* : NativeString */;
4470 long var424 /* : Int */;
4471 val* var425 /* : String */;
4472 val* var426 /* : Array[Object] */;
4473 long var427 /* : Int */;
4474 val* var428 /* : NativeArray[Object] */;
4475 val* var429 /* : String */;
4476 static val* varonce430;
4477 val* var431 /* : String */;
4478 char* var432 /* : NativeString */;
4479 long var433 /* : Int */;
4480 val* var434 /* : String */;
4481 static val* varonce435;
4482 val* var436 /* : String */;
4483 char* var437 /* : NativeString */;
4484 long var438 /* : Int */;
4485 val* var439 /* : String */;
4486 val* var440 /* : Array[Object] */;
4487 long var441 /* : Int */;
4488 val* var442 /* : NativeArray[Object] */;
4489 val* var443 /* : String */;
4490 static val* varonce444;
4491 val* var445 /* : String */;
4492 char* var446 /* : NativeString */;
4493 long var447 /* : Int */;
4494 val* var448 /* : String */;
4495 val* var449 /* : String */;
4496 val* var_value_type_info /* var value_type_info: String */;
4497 short int var450 /* : Bool */;
4498 val* var451 /* : ModelBuilder */;
4499 val* var452 /* : ToolContext */;
4500 val* var453 /* : OptionBool */;
4501 val* var454 /* : nullable Object */;
4502 short int var455 /* : Bool */;
4503 short int var_456 /* var : Bool */;
4504 val* var457 /* : ModelBuilder */;
4505 val* var458 /* : ToolContext */;
4506 val* var459 /* : OptionBool */;
4507 val* var460 /* : nullable Object */;
4508 short int var461 /* : Bool */;
4509 static val* varonce462;
4510 val* var463 /* : String */;
4511 char* var464 /* : NativeString */;
4512 long var465 /* : Int */;
4513 val* var466 /* : String */;
4514 static val* varonce467;
4515 val* var468 /* : String */;
4516 char* var469 /* : NativeString */;
4517 long var470 /* : Int */;
4518 val* var471 /* : String */;
4519 static val* varonce472;
4520 val* var473 /* : String */;
4521 char* var474 /* : NativeString */;
4522 long var475 /* : Int */;
4523 val* var476 /* : String */;
4524 val* var477 /* : Array[Object] */;
4525 long var478 /* : Int */;
4526 val* var479 /* : NativeArray[Object] */;
4527 val* var480 /* : String */;
4528 static val* varonce481;
4529 val* var482 /* : String */;
4530 char* var483 /* : NativeString */;
4531 long var484 /* : Int */;
4532 val* var485 /* : String */;
4533 static val* varonce486;
4534 val* var487 /* : String */;
4535 char* var488 /* : NativeString */;
4536 long var489 /* : Int */;
4537 val* var490 /* : String */;
4538 static val* varonce491;
4539 val* var492 /* : String */;
4540 char* var493 /* : NativeString */;
4541 long var494 /* : Int */;
4542 val* var495 /* : String */;
4543 val* var496 /* : Array[Object] */;
4544 long var497 /* : Int */;
4545 val* var498 /* : NativeArray[Object] */;
4546 val* var499 /* : String */;
4547 static val* varonce500;
4548 val* var501 /* : String */;
4549 char* var502 /* : NativeString */;
4550 long var503 /* : Int */;
4551 val* var504 /* : String */;
4552 val* var505 /* : Array[Object] */;
4553 long var506 /* : Int */;
4554 val* var507 /* : NativeArray[Object] */;
4555 val* var508 /* : String */;
4556 static val* varonce509;
4557 val* var510 /* : String */;
4558 char* var511 /* : NativeString */;
4559 long var512 /* : Int */;
4560 val* var513 /* : String */;
4561 static val* varonce514;
4562 val* var515 /* : String */;
4563 char* var516 /* : NativeString */;
4564 long var517 /* : Int */;
4565 val* var518 /* : String */;
4566 static val* varonce519;
4567 val* var520 /* : String */;
4568 char* var521 /* : NativeString */;
4569 long var522 /* : Int */;
4570 val* var523 /* : String */;
4571 static val* varonce524;
4572 val* var525 /* : String */;
4573 char* var526 /* : NativeString */;
4574 long var527 /* : Int */;
4575 val* var528 /* : String */;
4576 static val* varonce529;
4577 val* var530 /* : String */;
4578 char* var531 /* : NativeString */;
4579 long var532 /* : Int */;
4580 val* var533 /* : String */;
4581 val* var534 /* : Array[Object] */;
4582 long var535 /* : Int */;
4583 val* var536 /* : NativeArray[Object] */;
4584 val* var537 /* : String */;
4585 static val* varonce538;
4586 val* var539 /* : String */;
4587 char* var540 /* : NativeString */;
4588 long var541 /* : Int */;
4589 val* var542 /* : String */;
4590 static val* varonce543;
4591 val* var544 /* : String */;
4592 char* var545 /* : NativeString */;
4593 long var546 /* : Int */;
4594 val* var547 /* : String */;
4595 var_value = p0;
4596 var_mtype = p1;
4597 var_tag = p2;
4598 if (varonce) {
4599 var1 = varonce;
4600 } else {
4601 var2 = "/* ";
4602 var3 = 3;
4603 var4 = string__NativeString__to_s_with_length(var2, var3);
4604 var1 = var4;
4605 varonce = var1;
4606 }
4607 var5 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
4608 if (varonce6) {
4609 var7 = varonce6;
4610 } else {
4611 var8 = " isa ";
4612 var9 = 5;
4613 var10 = string__NativeString__to_s_with_length(var8, var9);
4614 var7 = var10;
4615 varonce6 = var7;
4616 }
4617 if (varonce11) {
4618 var12 = varonce11;
4619 } else {
4620 var13 = " */";
4621 var14 = 3;
4622 var15 = string__NativeString__to_s_with_length(var13, var14);
4623 var12 = var15;
4624 varonce11 = var12;
4625 }
4626 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
4627 { /* var16 = array_instance Array[Object] */
4628 var17 = 5;
4629 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
4630 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var1;
4631 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var5;
4632 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var7;
4633 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var_mtype;
4634 ((struct instance_array__NativeArray*)var18)->values[4] = (val*) var12;
4635 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
4636 }
4637 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
4638 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var19) /* add on <self:SeparateCompilerVisitor>*/;
4639 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4640 var_compiler = var20;
4641 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4642 if (var21 == NULL) {
4643 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4644 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1280);
4645 show_backtrace(1);
4646 } else {
4647 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var21) /* arguments on <var21:nullable Frame>*/;
4648 }
4649 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__first]))(var22) /* first on <var22:Array[RuntimeVariable]>*/;
4650 var_recv = var23;
4651 var24 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
4652 var_recv_type_info = var24;
4653 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
4654 var26 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var25) /* new_var on <self:SeparateCompilerVisitor>*/;
4655 var_res = var26;
4656 if (varonce27) {
4657 var28 = varonce27;
4658 } else {
4659 var29 = "cltype";
4660 var30 = 6;
4661 var31 = string__NativeString__to_s_with_length(var29, var30);
4662 var28 = var31;
4663 varonce27 = var28;
4664 }
4665 var32 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var28) /* get_name on <self:SeparateCompilerVisitor>*/;
4666 var_cltype = var32;
4667 if (varonce33) {
4668 var34 = varonce33;
4669 } else {
4670 var35 = "int ";
4671 var36 = 4;
4672 var37 = string__NativeString__to_s_with_length(var35, var36);
4673 var34 = var37;
4674 varonce33 = var34;
4675 }
4676 if (varonce38) {
4677 var39 = varonce38;
4678 } else {
4679 var40 = ";";
4680 var41 = 1;
4681 var42 = string__NativeString__to_s_with_length(var40, var41);
4682 var39 = var42;
4683 varonce38 = var39;
4684 }
4685 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
4686 { /* var43 = array_instance Array[Object] */
4687 var44 = 3;
4688 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
4689 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var34;
4690 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var_cltype;
4691 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var39;
4692 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
4693 }
4694 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
4695 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var46) /* add_decl on <self:SeparateCompilerVisitor>*/;
4696 if (varonce47) {
4697 var48 = varonce47;
4698 } else {
4699 var49 = "idtype";
4700 var50 = 6;
4701 var51 = string__NativeString__to_s_with_length(var49, var50);
4702 var48 = var51;
4703 varonce47 = var48;
4704 }
4705 var52 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var48) /* get_name on <self:SeparateCompilerVisitor>*/;
4706 var_idtype = var52;
4707 if (varonce53) {
4708 var54 = varonce53;
4709 } else {
4710 var55 = "int ";
4711 var56 = 4;
4712 var57 = string__NativeString__to_s_with_length(var55, var56);
4713 var54 = var57;
4714 varonce53 = var54;
4715 }
4716 if (varonce58) {
4717 var59 = varonce58;
4718 } else {
4719 var60 = ";";
4720 var61 = 1;
4721 var62 = string__NativeString__to_s_with_length(var60, var61);
4722 var59 = var62;
4723 varonce58 = var59;
4724 }
4725 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
4726 { /* var63 = array_instance Array[Object] */
4727 var64 = 3;
4728 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
4729 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var54;
4730 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var_idtype;
4731 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var59;
4732 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
4733 }
4734 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
4735 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var66) /* add_decl on <self:SeparateCompilerVisitor>*/;
4736 var67 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__maybe_null]))(self, var_value) /* maybe_null on <self:SeparateCompilerVisitor>*/;
4737 var_maybe_null = var67;
4738 if (varonce68) {
4739 var69 = varonce68;
4740 } else {
4741 var70 = "0";
4742 var71 = 1;
4743 var72 = string__NativeString__to_s_with_length(var70, var71);
4744 var69 = var72;
4745 varonce68 = var69;
4746 }
4747 var_accept_null = var69;
4748 var_ntype = var_mtype;
4749 /* <var_ntype:MType> isa MNullableType */
4750 cltype = type_model__MNullableType.color;
4751 idtype = type_model__MNullableType.id;
4752 if(cltype >= var_ntype->type->table_size) {
4753 var73 = 0;
4754 } else {
4755 var73 = var_ntype->type->type_table[cltype] == idtype;
4756 }
4757 if (var73){
4758 var74 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_model__MNullableType__mtype]))(var_ntype) /* mtype on <var_ntype:MType(MNullableType)>*/;
4759 var_ntype = var74;
4760 if (varonce75) {
4761 var76 = varonce75;
4762 } else {
4763 var77 = "1";
4764 var78 = 1;
4765 var79 = string__NativeString__to_s_with_length(var77, var78);
4766 var76 = var79;
4767 varonce75 = var76;
4768 }
4769 var_accept_null = var76;
4770 } else {
4771 }
4772 var80 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
4773 var81 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4774 if (var81 == NULL) {
4775 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4776 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1298);
4777 show_backtrace(1);
4778 } else {
4779 var82 = ((val* (*)(val*))(var81->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var81) /* mpropdef on <var81:nullable Frame>*/;
4780 }
4781 var83 = ((val* (*)(val*))(var82->class->vft[COLOR_model__MPropDef__mclassdef]))(var82) /* mclassdef on <var82:MPropDef>*/;
4782 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_model__MClassDef__mmodule]))(var83) /* mmodule on <var83:MClassDef>*/;
4783 var85 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4784 if (var85 == NULL) {
4785 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4786 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1298);
4787 show_backtrace(1);
4788 } else {
4789 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var85) /* mpropdef on <var85:nullable Frame>*/;
4790 }
4791 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_model__MPropDef__mclassdef]))(var86) /* mclassdef on <var86:MPropDef>*/;
4792 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MClassDef__bound_mtype]))(var87) /* bound_mtype on <var87:MClassDef>*/;
4793 var89 = ((short int (*)(val*, val*, val*, val*))(var80->class->vft[COLOR_model__MType__is_subtype]))(var80, var84, var88, var_mtype) /* is_subtype on <var80:MType>*/;
4794 if (var89){
4795 if (varonce90) {
4796 var91 = varonce90;
4797 } else {
4798 var92 = " = 1; /* easy ";
4799 var93 = 14;
4800 var94 = string__NativeString__to_s_with_length(var92, var93);
4801 var91 = var94;
4802 varonce90 = var91;
4803 }
4804 var95 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
4805 if (varonce96) {
4806 var97 = varonce96;
4807 } else {
4808 var98 = " isa ";
4809 var99 = 5;
4810 var100 = string__NativeString__to_s_with_length(var98, var99);
4811 var97 = var100;
4812 varonce96 = var97;
4813 }
4814 if (varonce101) {
4815 var102 = varonce101;
4816 } else {
4817 var103 = "*/";
4818 var104 = 2;
4819 var105 = string__NativeString__to_s_with_length(var103, var104);
4820 var102 = var105;
4821 varonce101 = var102;
4822 }
4823 var106 = NEW_array__Array(&type_array__Arraykernel__Object);
4824 { /* var106 = array_instance Array[Object] */
4825 var107 = 6;
4826 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
4827 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var_res;
4828 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var91;
4829 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var95;
4830 ((struct instance_array__NativeArray*)var108)->values[3] = (val*) var97;
4831 ((struct instance_array__NativeArray*)var108)->values[4] = (val*) var_mtype;
4832 ((struct instance_array__NativeArray*)var108)->values[5] = (val*) var102;
4833 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
4834 }
4835 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
4836 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var109) /* add on <self:SeparateCompilerVisitor>*/;
4837 var110 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4838 var111 = ((val* (*)(val*))(var110->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var110) /* toolcontext on <var110:ModelBuilder>*/;
4839 var112 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var111) /* opt_typing_test_metrics on <var111:ToolContext>*/;
4840 var113 = ((val* (*)(val*))(var112->class->vft[COLOR_opts__Option__value]))(var112) /* value on <var112:OptionBool>*/;
4841 var114 = ((struct instance_kernel__Bool*)var113)->value; /* autounbox from nullable Object to Bool */;
4842 if (var114){
4843 var115 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4844 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(var115) /* count_type_test_skipped on <var115:AbstractCompiler(SeparateCompiler)>*/;
4845 var_ = var116;
4846 var_117 = var_tag;
4847 var118 = ((val* (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_, var_117) /* [] on <var_:HashMap[String, Int]>*/;
4848 var119 = 1;
4849 { /* Inline kernel#Int#+ (var118,var119) */
4850 var122 = ((struct instance_kernel__Int*)var118)->value; /* autounbox from nullable Object to Int */;
4851 var123 = var122 + var119;
4852 var120 = var123;
4853 goto RET_LABEL121;
4854 RET_LABEL121:(void)0;
4855 }
4856 var124 = BOX_kernel__Int(var120); /* autobox from Int to nullable Object */
4857 ((void (*)(val*, val*, val*))(var_->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_, var_117, var124) /* []= on <var_:HashMap[String, Int]>*/;
4858 if (varonce125) {
4859 var126 = varonce125;
4860 } else {
4861 var127 = "count_type_test_skipped_";
4862 var128 = 24;
4863 var129 = string__NativeString__to_s_with_length(var127, var128);
4864 var126 = var129;
4865 varonce125 = var126;
4866 }
4867 if (varonce130) {
4868 var131 = varonce130;
4869 } else {
4870 var132 = "++;";
4871 var133 = 3;
4872 var134 = string__NativeString__to_s_with_length(var132, var133);
4873 var131 = var134;
4874 varonce130 = var131;
4875 }
4876 var135 = NEW_array__Array(&type_array__Arraykernel__Object);
4877 { /* var135 = array_instance Array[Object] */
4878 var136 = 3;
4879 var137 = NEW_array__NativeArray(var136, &type_array__NativeArraykernel__Object);
4880 ((struct instance_array__NativeArray*)var137)->values[0] = (val*) var126;
4881 ((struct instance_array__NativeArray*)var137)->values[1] = (val*) var_tag;
4882 ((struct instance_array__NativeArray*)var137)->values[2] = (val*) var131;
4883 ((void (*)(val*, val*, long))(var135->class->vft[COLOR_array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
4884 }
4885 var138 = ((val* (*)(val*))(var135->class->vft[COLOR_string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
4886 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var138) /* add on <self:SeparateCompilerVisitor>*/;
4887 } else {
4888 }
4889 var = var_res;
4890 goto RET_LABEL;
4891 } else {
4892 }
4893 var139 = ((short int (*)(val*))(var_ntype->class->vft[COLOR_model__MType__need_anchor]))(var_ntype) /* need_anchor on <var_ntype:MType>*/;
4894 if (var139){
4895 if (varonce140) {
4896 var141 = varonce140;
4897 } else {
4898 var142 = "type_struct";
4899 var143 = 11;
4900 var144 = string__NativeString__to_s_with_length(var142, var143);
4901 var141 = var144;
4902 varonce140 = var141;
4903 }
4904 var145 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var141) /* get_name on <self:SeparateCompilerVisitor>*/;
4905 var_type_struct = var145;
4906 if (varonce146) {
4907 var147 = varonce146;
4908 } else {
4909 var148 = "const struct type* ";
4910 var149 = 19;
4911 var150 = string__NativeString__to_s_with_length(var148, var149);
4912 var147 = var150;
4913 varonce146 = var147;
4914 }
4915 if (varonce151) {
4916 var152 = varonce151;
4917 } else {
4918 var153 = ";";
4919 var154 = 1;
4920 var155 = string__NativeString__to_s_with_length(var153, var154);
4921 var152 = var155;
4922 varonce151 = var152;
4923 }
4924 var156 = NEW_array__Array(&type_array__Arraykernel__Object);
4925 { /* var156 = array_instance Array[Object] */
4926 var157 = 3;
4927 var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object);
4928 ((struct instance_array__NativeArray*)var158)->values[0] = (val*) var147;
4929 ((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_type_struct;
4930 ((struct instance_array__NativeArray*)var158)->values[2] = (val*) var152;
4931 ((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on <var156:Array[Object]>*/;
4932 }
4933 var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on <var156:Array[Object]>*/;
4934 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var159) /* add_decl on <self:SeparateCompilerVisitor>*/;
4935 var160 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4936 if (var160 == NULL) {
4937 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4938 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1312);
4939 show_backtrace(1);
4940 } else {
4941 var161 = ((val* (*)(val*))(var160->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var160) /* mpropdef on <var160:nullable Frame>*/;
4942 }
4943 var162 = ((val* (*)(val*))(var161->class->vft[COLOR_model__MPropDef__mclassdef]))(var161) /* mclassdef on <var161:MPropDef>*/;
4944 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var162, var_ntype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
4945 var163 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_ntype) /* const_color on <var_ntype:MType>*/;
4946 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var163) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4947 var165 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4948 var166 = ((val* (*)(val*))(var165->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var165) /* toolcontext on <var165:ModelBuilder>*/;
4949 var167 = ((val* (*)(val*))(var166->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var166) /* opt_phmod_typing on <var166:ToolContext>*/;
4950 var168 = ((val* (*)(val*))(var167->class->vft[COLOR_opts__Option__value]))(var167) /* value on <var167:OptionBool>*/;
4951 var169 = ((struct instance_kernel__Bool*)var168)->value; /* autounbox from nullable Object to Bool */;
4952 var_170 = var169;
4953 if (var169){
4954 var164 = var_170;
4955 } else {
4956 var171 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4957 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var171) /* toolcontext on <var171:ModelBuilder>*/;
4958 var173 = ((val* (*)(val*))(var172->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var172) /* opt_phand_typing on <var172:ToolContext>*/;
4959 var174 = ((val* (*)(val*))(var173->class->vft[COLOR_opts__Option__value]))(var173) /* value on <var173:OptionBool>*/;
4960 var175 = ((struct instance_kernel__Bool*)var174)->value; /* autounbox from nullable Object to Bool */;
4961 var164 = var175;
4962 }
4963 if (var164){
4964 if (varonce176) {
4965 var177 = varonce176;
4966 } else {
4967 var178 = " = ";
4968 var179 = 3;
4969 var180 = string__NativeString__to_s_with_length(var178, var179);
4970 var177 = var180;
4971 varonce176 = var177;
4972 }
4973 if (varonce181) {
4974 var182 = varonce181;
4975 } else {
4976 var183 = "->resolution_table->types[HASH(";
4977 var184 = 31;
4978 var185 = string__NativeString__to_s_with_length(var183, var184);
4979 var182 = var185;
4980 varonce181 = var182;
4981 }
4982 if (varonce186) {
4983 var187 = varonce186;
4984 } else {
4985 var188 = "->resolution_table->mask, ";
4986 var189 = 26;
4987 var190 = string__NativeString__to_s_with_length(var188, var189);
4988 var187 = var190;
4989 varonce186 = var187;
4990 }
4991 var191 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_ntype) /* const_color on <var_ntype:MType>*/;
4992 if (varonce192) {
4993 var193 = varonce192;
4994 } else {
4995 var194 = ")];";
4996 var195 = 3;
4997 var196 = string__NativeString__to_s_with_length(var194, var195);
4998 var193 = var196;
4999 varonce192 = var193;
5000 }
5001 var197 = NEW_array__Array(&type_array__Arraykernel__Object);
5002 { /* var197 = array_instance Array[Object] */
5003 var198 = 8;
5004 var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object);
5005 ((struct instance_array__NativeArray*)var199)->values[0] = (val*) var_type_struct;
5006 ((struct instance_array__NativeArray*)var199)->values[1] = (val*) var177;
5007 ((struct instance_array__NativeArray*)var199)->values[2] = (val*) var_recv_type_info;
5008 ((struct instance_array__NativeArray*)var199)->values[3] = (val*) var182;
5009 ((struct instance_array__NativeArray*)var199)->values[4] = (val*) var_recv_type_info;
5010 ((struct instance_array__NativeArray*)var199)->values[5] = (val*) var187;
5011 ((struct instance_array__NativeArray*)var199)->values[6] = (val*) var191;
5012 ((struct instance_array__NativeArray*)var199)->values[7] = (val*) var193;
5013 ((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
5014 }
5015 var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
5016 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var200) /* add on <self:SeparateCompilerVisitor>*/;
5017 } else {
5018 if (varonce201) {
5019 var202 = varonce201;
5020 } else {
5021 var203 = " = ";
5022 var204 = 3;
5023 var205 = string__NativeString__to_s_with_length(var203, var204);
5024 var202 = var205;
5025 varonce201 = var202;
5026 }
5027 if (varonce206) {
5028 var207 = varonce206;
5029 } else {
5030 var208 = "->resolution_table->types[";
5031 var209 = 26;
5032 var210 = string__NativeString__to_s_with_length(var208, var209);
5033 var207 = var210;
5034 varonce206 = var207;
5035 }
5036 var211 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_ntype) /* const_color on <var_ntype:MType>*/;
5037 if (varonce212) {
5038 var213 = varonce212;
5039 } else {
5040 var214 = "];";
5041 var215 = 2;
5042 var216 = string__NativeString__to_s_with_length(var214, var215);
5043 var213 = var216;
5044 varonce212 = var213;
5045 }
5046 var217 = NEW_array__Array(&type_array__Arraykernel__Object);
5047 { /* var217 = array_instance Array[Object] */
5048 var218 = 6;
5049 var219 = NEW_array__NativeArray(var218, &type_array__NativeArraykernel__Object);
5050 ((struct instance_array__NativeArray*)var219)->values[0] = (val*) var_type_struct;
5051 ((struct instance_array__NativeArray*)var219)->values[1] = (val*) var202;
5052 ((struct instance_array__NativeArray*)var219)->values[2] = (val*) var_recv_type_info;
5053 ((struct instance_array__NativeArray*)var219)->values[3] = (val*) var207;
5054 ((struct instance_array__NativeArray*)var219)->values[4] = (val*) var211;
5055 ((struct instance_array__NativeArray*)var219)->values[5] = (val*) var213;
5056 ((void (*)(val*, val*, long))(var217->class->vft[COLOR_array__Array__with_native]))(var217, var219, var218) /* with_native on <var217:Array[Object]>*/;
5057 }
5058 var220 = ((val* (*)(val*))(var217->class->vft[COLOR_string__Object__to_s]))(var217) /* to_s on <var217:Array[Object]>*/;
5059 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var220) /* add on <self:SeparateCompilerVisitor>*/;
5060 }
5061 var221 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5062 var222 = ((val* (*)(val*))(var221->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var221) /* toolcontext on <var221:ModelBuilder>*/;
5063 var223 = ((val* (*)(val*))(var222->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var222) /* opt_typing_test_metrics on <var222:ToolContext>*/;
5064 var224 = ((val* (*)(val*))(var223->class->vft[COLOR_opts__Option__value]))(var223) /* value on <var223:OptionBool>*/;
5065 var225 = ((struct instance_kernel__Bool*)var224)->value; /* autounbox from nullable Object to Bool */;
5066 if (var225){
5067 var226 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5068 var227 = ((val* (*)(val*))(var226->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(var226) /* count_type_test_unresolved on <var226:AbstractCompiler(SeparateCompiler)>*/;
5069 var_228 = var227;
5070 var_229 = var_tag;
5071 var230 = ((val* (*)(val*, val*))(var_228->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_228, var_229) /* [] on <var_228:HashMap[String, Int]>*/;
5072 var231 = 1;
5073 { /* Inline kernel#Int#+ (var230,var231) */
5074 var234 = ((struct instance_kernel__Int*)var230)->value; /* autounbox from nullable Object to Int */;
5075 var235 = var234 + var231;
5076 var232 = var235;
5077 goto RET_LABEL233;
5078 RET_LABEL233:(void)0;
5079 }
5080 var236 = BOX_kernel__Int(var232); /* autobox from Int to nullable Object */
5081 ((void (*)(val*, val*, val*))(var_228->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_228, var_229, var236) /* []= on <var_228:HashMap[String, Int]>*/;
5082 if (varonce237) {
5083 var238 = varonce237;
5084 } else {
5085 var239 = "count_type_test_unresolved_";
5086 var240 = 27;
5087 var241 = string__NativeString__to_s_with_length(var239, var240);
5088 var238 = var241;
5089 varonce237 = var238;
5090 }
5091 if (varonce242) {
5092 var243 = varonce242;
5093 } else {
5094 var244 = "++;";
5095 var245 = 3;
5096 var246 = string__NativeString__to_s_with_length(var244, var245);
5097 var243 = var246;
5098 varonce242 = var243;
5099 }
5100 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
5101 { /* var247 = array_instance Array[Object] */
5102 var248 = 3;
5103 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
5104 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var238;
5105 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var_tag;
5106 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
5107 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
5108 }
5109 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
5110 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var250) /* add on <self:SeparateCompilerVisitor>*/;
5111 } else {
5112 }
5113 if (varonce251) {
5114 var252 = varonce251;
5115 } else {
5116 var253 = " = ";
5117 var254 = 3;
5118 var255 = string__NativeString__to_s_with_length(var253, var254);
5119 var252 = var255;
5120 varonce251 = var252;
5121 }
5122 if (varonce256) {
5123 var257 = varonce256;
5124 } else {
5125 var258 = "->color;";
5126 var259 = 8;
5127 var260 = string__NativeString__to_s_with_length(var258, var259);
5128 var257 = var260;
5129 varonce256 = var257;
5130 }
5131 var261 = NEW_array__Array(&type_array__Arraykernel__Object);
5132 { /* var261 = array_instance Array[Object] */
5133 var262 = 4;
5134 var263 = NEW_array__NativeArray(var262, &type_array__NativeArraykernel__Object);
5135 ((struct instance_array__NativeArray*)var263)->values[0] = (val*) var_cltype;
5136 ((struct instance_array__NativeArray*)var263)->values[1] = (val*) var252;
5137 ((struct instance_array__NativeArray*)var263)->values[2] = (val*) var_type_struct;
5138 ((struct instance_array__NativeArray*)var263)->values[3] = (val*) var257;
5139 ((void (*)(val*, val*, long))(var261->class->vft[COLOR_array__Array__with_native]))(var261, var263, var262) /* with_native on <var261:Array[Object]>*/;
5140 }
5141 var264 = ((val* (*)(val*))(var261->class->vft[COLOR_string__Object__to_s]))(var261) /* to_s on <var261:Array[Object]>*/;
5142 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var264) /* add on <self:SeparateCompilerVisitor>*/;
5143 if (varonce265) {
5144 var266 = varonce265;
5145 } else {
5146 var267 = " = ";
5147 var268 = 3;
5148 var269 = string__NativeString__to_s_with_length(var267, var268);
5149 var266 = var269;
5150 varonce265 = var266;
5151 }
5152 if (varonce270) {
5153 var271 = varonce270;
5154 } else {
5155 var272 = "->id;";
5156 var273 = 5;
5157 var274 = string__NativeString__to_s_with_length(var272, var273);
5158 var271 = var274;
5159 varonce270 = var271;
5160 }
5161 var275 = NEW_array__Array(&type_array__Arraykernel__Object);
5162 { /* var275 = array_instance Array[Object] */
5163 var276 = 4;
5164 var277 = NEW_array__NativeArray(var276, &type_array__NativeArraykernel__Object);
5165 ((struct instance_array__NativeArray*)var277)->values[0] = (val*) var_idtype;
5166 ((struct instance_array__NativeArray*)var277)->values[1] = (val*) var266;
5167 ((struct instance_array__NativeArray*)var277)->values[2] = (val*) var_type_struct;
5168 ((struct instance_array__NativeArray*)var277)->values[3] = (val*) var271;
5169 ((void (*)(val*, val*, long))(var275->class->vft[COLOR_array__Array__with_native]))(var275, var277, var276) /* with_native on <var275:Array[Object]>*/;
5170 }
5171 var278 = ((val* (*)(val*))(var275->class->vft[COLOR_string__Object__to_s]))(var275) /* to_s on <var275:Array[Object]>*/;
5172 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var278) /* add on <self:SeparateCompilerVisitor>*/;
5173 var_280 = var_maybe_null;
5174 if (var_maybe_null){
5175 if (varonce281) {
5176 var282 = varonce281;
5177 } else {
5178 var283 = "0";
5179 var284 = 1;
5180 var285 = string__NativeString__to_s_with_length(var283, var284);
5181 var282 = var285;
5182 varonce281 = var282;
5183 }
5184 var286 = ((short int (*)(val*, val*))(var_accept_null->class->vft[COLOR_kernel__Object___61d_61d]))(var_accept_null, var282) /* == on <var_accept_null:String>*/;
5185 var279 = var286;
5186 } else {
5187 var279 = var_280;
5188 }
5189 if (var279){
5190 if (varonce287) {
5191 var288 = varonce287;
5192 } else {
5193 var289 = "is_nullable";
5194 var290 = 11;
5195 var291 = string__NativeString__to_s_with_length(var289, var290);
5196 var288 = var291;
5197 varonce287 = var288;
5198 }
5199 var292 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var288) /* get_name on <self:SeparateCompilerVisitor>*/;
5200 var_is_nullable = var292;
5201 if (varonce293) {
5202 var294 = varonce293;
5203 } else {
5204 var295 = "short int ";
5205 var296 = 10;
5206 var297 = string__NativeString__to_s_with_length(var295, var296);
5207 var294 = var297;
5208 varonce293 = var294;
5209 }
5210 if (varonce298) {
5211 var299 = varonce298;
5212 } else {
5213 var300 = ";";
5214 var301 = 1;
5215 var302 = string__NativeString__to_s_with_length(var300, var301);
5216 var299 = var302;
5217 varonce298 = var299;
5218 }
5219 var303 = NEW_array__Array(&type_array__Arraykernel__Object);
5220 { /* var303 = array_instance Array[Object] */
5221 var304 = 3;
5222 var305 = NEW_array__NativeArray(var304, &type_array__NativeArraykernel__Object);
5223 ((struct instance_array__NativeArray*)var305)->values[0] = (val*) var294;
5224 ((struct instance_array__NativeArray*)var305)->values[1] = (val*) var_is_nullable;
5225 ((struct instance_array__NativeArray*)var305)->values[2] = (val*) var299;
5226 ((void (*)(val*, val*, long))(var303->class->vft[COLOR_array__Array__with_native]))(var303, var305, var304) /* with_native on <var303:Array[Object]>*/;
5227 }
5228 var306 = ((val* (*)(val*))(var303->class->vft[COLOR_string__Object__to_s]))(var303) /* to_s on <var303:Array[Object]>*/;
5229 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var306) /* add_decl on <self:SeparateCompilerVisitor>*/;
5230 if (varonce307) {
5231 var308 = varonce307;
5232 } else {
5233 var309 = " = ";
5234 var310 = 3;
5235 var311 = string__NativeString__to_s_with_length(var309, var310);
5236 var308 = var311;
5237 varonce307 = var308;
5238 }
5239 if (varonce312) {
5240 var313 = varonce312;
5241 } else {
5242 var314 = "->is_nullable;";
5243 var315 = 14;
5244 var316 = string__NativeString__to_s_with_length(var314, var315);
5245 var313 = var316;
5246 varonce312 = var313;
5247 }
5248 var317 = NEW_array__Array(&type_array__Arraykernel__Object);
5249 { /* var317 = array_instance Array[Object] */
5250 var318 = 4;
5251 var319 = NEW_array__NativeArray(var318, &type_array__NativeArraykernel__Object);
5252 ((struct instance_array__NativeArray*)var319)->values[0] = (val*) var_is_nullable;
5253 ((struct instance_array__NativeArray*)var319)->values[1] = (val*) var308;
5254 ((struct instance_array__NativeArray*)var319)->values[2] = (val*) var_type_struct;
5255 ((struct instance_array__NativeArray*)var319)->values[3] = (val*) var313;
5256 ((void (*)(val*, val*, long))(var317->class->vft[COLOR_array__Array__with_native]))(var317, var319, var318) /* with_native on <var317:Array[Object]>*/;
5257 }
5258 var320 = ((val* (*)(val*))(var317->class->vft[COLOR_string__Object__to_s]))(var317) /* to_s on <var317:Array[Object]>*/;
5259 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var320) /* add on <self:SeparateCompilerVisitor>*/;
5260 var321 = ((val* (*)(val*))(var_is_nullable->class->vft[COLOR_string__Object__to_s]))(var_is_nullable) /* to_s on <var_is_nullable:String>*/;
5261 var_accept_null = var321;
5262 } else {
5263 }
5264 } else {
5265 /* <var_ntype:MType> isa MClassType */
5266 cltype323 = type_model__MClassType.color;
5267 idtype324 = type_model__MClassType.id;
5268 if(cltype323 >= var_ntype->type->table_size) {
5269 var322 = 0;
5270 } else {
5271 var322 = var_ntype->type->type_table[cltype323] == idtype324;
5272 }
5273 if (var322){
5274 var325 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
5275 ((void (*)(val*, val*))(var325->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var325, var_mtype) /* add on <var325:Set[MType]>*/;
5276 if (varonce326) {
5277 var327 = varonce326;
5278 } else {
5279 var328 = "type_";
5280 var329 = 5;
5281 var330 = string__NativeString__to_s_with_length(var328, var329);
5282 var327 = var330;
5283 varonce326 = var327;
5284 }
5285 var331 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5286 var332 = NEW_array__Array(&type_array__Arraykernel__Object);
5287 { /* var332 = array_instance Array[Object] */
5288 var333 = 2;
5289 var334 = NEW_array__NativeArray(var333, &type_array__NativeArraykernel__Object);
5290 ((struct instance_array__NativeArray*)var334)->values[0] = (val*) var327;
5291 ((struct instance_array__NativeArray*)var334)->values[1] = (val*) var331;
5292 ((void (*)(val*, val*, long))(var332->class->vft[COLOR_array__Array__with_native]))(var332, var334, var333) /* with_native on <var332:Array[Object]>*/;
5293 }
5294 var335 = ((val* (*)(val*))(var332->class->vft[COLOR_string__Object__to_s]))(var332) /* to_s on <var332:Array[Object]>*/;
5295 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var335) /* require_declaration on <self:SeparateCompilerVisitor>*/;
5296 if (varonce336) {
5297 var337 = varonce336;
5298 } else {
5299 var338 = " = type_";
5300 var339 = 8;
5301 var340 = string__NativeString__to_s_with_length(var338, var339);
5302 var337 = var340;
5303 varonce336 = var337;
5304 }
5305 var341 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5306 if (varonce342) {
5307 var343 = varonce342;
5308 } else {
5309 var344 = ".color;";
5310 var345 = 7;
5311 var346 = string__NativeString__to_s_with_length(var344, var345);
5312 var343 = var346;
5313 varonce342 = var343;
5314 }
5315 var347 = NEW_array__Array(&type_array__Arraykernel__Object);
5316 { /* var347 = array_instance Array[Object] */
5317 var348 = 4;
5318 var349 = NEW_array__NativeArray(var348, &type_array__NativeArraykernel__Object);
5319 ((struct instance_array__NativeArray*)var349)->values[0] = (val*) var_cltype;
5320 ((struct instance_array__NativeArray*)var349)->values[1] = (val*) var337;
5321 ((struct instance_array__NativeArray*)var349)->values[2] = (val*) var341;
5322 ((struct instance_array__NativeArray*)var349)->values[3] = (val*) var343;
5323 ((void (*)(val*, val*, long))(var347->class->vft[COLOR_array__Array__with_native]))(var347, var349, var348) /* with_native on <var347:Array[Object]>*/;
5324 }
5325 var350 = ((val* (*)(val*))(var347->class->vft[COLOR_string__Object__to_s]))(var347) /* to_s on <var347:Array[Object]>*/;
5326 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var350) /* add on <self:SeparateCompilerVisitor>*/;
5327 if (varonce351) {
5328 var352 = varonce351;
5329 } else {
5330 var353 = " = type_";
5331 var354 = 8;
5332 var355 = string__NativeString__to_s_with_length(var353, var354);
5333 var352 = var355;
5334 varonce351 = var352;
5335 }
5336 var356 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5337 if (varonce357) {
5338 var358 = varonce357;
5339 } else {
5340 var359 = ".id;";
5341 var360 = 4;
5342 var361 = string__NativeString__to_s_with_length(var359, var360);
5343 var358 = var361;
5344 varonce357 = var358;
5345 }
5346 var362 = NEW_array__Array(&type_array__Arraykernel__Object);
5347 { /* var362 = array_instance Array[Object] */
5348 var363 = 4;
5349 var364 = NEW_array__NativeArray(var363, &type_array__NativeArraykernel__Object);
5350 ((struct instance_array__NativeArray*)var364)->values[0] = (val*) var_idtype;
5351 ((struct instance_array__NativeArray*)var364)->values[1] = (val*) var352;
5352 ((struct instance_array__NativeArray*)var364)->values[2] = (val*) var356;
5353 ((struct instance_array__NativeArray*)var364)->values[3] = (val*) var358;
5354 ((void (*)(val*, val*, long))(var362->class->vft[COLOR_array__Array__with_native]))(var362, var364, var363) /* with_native on <var362:Array[Object]>*/;
5355 }
5356 var365 = ((val* (*)(val*))(var362->class->vft[COLOR_string__Object__to_s]))(var362) /* to_s on <var362:Array[Object]>*/;
5357 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var365) /* add on <self:SeparateCompilerVisitor>*/;
5358 var366 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5359 var367 = ((val* (*)(val*))(var366->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var366) /* toolcontext on <var366:ModelBuilder>*/;
5360 var368 = ((val* (*)(val*))(var367->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var367) /* opt_typing_test_metrics on <var367:ToolContext>*/;
5361 var369 = ((val* (*)(val*))(var368->class->vft[COLOR_opts__Option__value]))(var368) /* value on <var368:OptionBool>*/;
5362 var370 = ((struct instance_kernel__Bool*)var369)->value; /* autounbox from nullable Object to Bool */;
5363 if (var370){
5364 var371 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5365 var372 = ((val* (*)(val*))(var371->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(var371) /* count_type_test_resolved on <var371:AbstractCompiler(SeparateCompiler)>*/;
5366 var_373 = var372;
5367 var_374 = var_tag;
5368 var375 = ((val* (*)(val*, val*))(var_373->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_373, var_374) /* [] on <var_373:HashMap[String, Int]>*/;
5369 var376 = 1;
5370 { /* Inline kernel#Int#+ (var375,var376) */
5371 var379 = ((struct instance_kernel__Int*)var375)->value; /* autounbox from nullable Object to Int */;
5372 var380 = var379 + var376;
5373 var377 = var380;
5374 goto RET_LABEL378;
5375 RET_LABEL378:(void)0;
5376 }
5377 var381 = BOX_kernel__Int(var377); /* autobox from Int to nullable Object */
5378 ((void (*)(val*, val*, val*))(var_373->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_373, var_374, var381) /* []= on <var_373:HashMap[String, Int]>*/;
5379 if (varonce382) {
5380 var383 = varonce382;
5381 } else {
5382 var384 = "count_type_test_resolved_";
5383 var385 = 25;
5384 var386 = string__NativeString__to_s_with_length(var384, var385);
5385 var383 = var386;
5386 varonce382 = var383;
5387 }
5388 if (varonce387) {
5389 var388 = varonce387;
5390 } else {
5391 var389 = "++;";
5392 var390 = 3;
5393 var391 = string__NativeString__to_s_with_length(var389, var390);
5394 var388 = var391;
5395 varonce387 = var388;
5396 }
5397 var392 = NEW_array__Array(&type_array__Arraykernel__Object);
5398 { /* var392 = array_instance Array[Object] */
5399 var393 = 3;
5400 var394 = NEW_array__NativeArray(var393, &type_array__NativeArraykernel__Object);
5401 ((struct instance_array__NativeArray*)var394)->values[0] = (val*) var383;
5402 ((struct instance_array__NativeArray*)var394)->values[1] = (val*) var_tag;
5403 ((struct instance_array__NativeArray*)var394)->values[2] = (val*) var388;
5404 ((void (*)(val*, val*, long))(var392->class->vft[COLOR_array__Array__with_native]))(var392, var394, var393) /* with_native on <var392:Array[Object]>*/;
5405 }
5406 var395 = ((val* (*)(val*))(var392->class->vft[COLOR_string__Object__to_s]))(var392) /* to_s on <var392:Array[Object]>*/;
5407 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var395) /* add on <self:SeparateCompilerVisitor>*/;
5408 } else {
5409 }
5410 } else {
5411 if (varonce396) {
5412 var397 = varonce396;
5413 } else {
5414 var398 = "printf(\"NOT YET IMPLEMENTED: type_test(%s, ";
5415 var399 = 43;
5416 var400 = string__NativeString__to_s_with_length(var398, var399);
5417 var397 = var400;
5418 varonce396 = var397;
5419 }
5420 if (varonce401) {
5421 var402 = varonce401;
5422 } else {
5423 var403 = ").\\n\", \"";
5424 var404 = 8;
5425 var405 = string__NativeString__to_s_with_length(var403, var404);
5426 var402 = var405;
5427 varonce401 = var402;
5428 }
5429 var406 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
5430 if (varonce407) {
5431 var408 = varonce407;
5432 } else {
5433 var409 = "\"); show_backtrace(1);";
5434 var410 = 22;
5435 var411 = string__NativeString__to_s_with_length(var409, var410);
5436 var408 = var411;
5437 varonce407 = var408;
5438 }
5439 var412 = NEW_array__Array(&type_array__Arraykernel__Object);
5440 { /* var412 = array_instance Array[Object] */
5441 var413 = 5;
5442 var414 = NEW_array__NativeArray(var413, &type_array__NativeArraykernel__Object);
5443 ((struct instance_array__NativeArray*)var414)->values[0] = (val*) var397;
5444 ((struct instance_array__NativeArray*)var414)->values[1] = (val*) var_mtype;
5445 ((struct instance_array__NativeArray*)var414)->values[2] = (val*) var402;
5446 ((struct instance_array__NativeArray*)var414)->values[3] = (val*) var406;
5447 ((struct instance_array__NativeArray*)var414)->values[4] = (val*) var408;
5448 ((void (*)(val*, val*, long))(var412->class->vft[COLOR_array__Array__with_native]))(var412, var414, var413) /* with_native on <var412:Array[Object]>*/;
5449 }
5450 var415 = ((val* (*)(val*))(var412->class->vft[COLOR_string__Object__to_s]))(var412) /* to_s on <var412:Array[Object]>*/;
5451 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var415) /* add on <self:SeparateCompilerVisitor>*/;
5452 }
5453 }
5454 if (var_maybe_null){
5455 if (varonce416) {
5456 var417 = varonce416;
5457 } else {
5458 var418 = "if(";
5459 var419 = 3;
5460 var420 = string__NativeString__to_s_with_length(var418, var419);
5461 var417 = var420;
5462 varonce416 = var417;
5463 }
5464 if (varonce421) {
5465 var422 = varonce421;
5466 } else {
5467 var423 = " == NULL) {";
5468 var424 = 11;
5469 var425 = string__NativeString__to_s_with_length(var423, var424);
5470 var422 = var425;
5471 varonce421 = var422;
5472 }
5473 var426 = NEW_array__Array(&type_array__Arraykernel__Object);
5474 { /* var426 = array_instance Array[Object] */
5475 var427 = 3;
5476 var428 = NEW_array__NativeArray(var427, &type_array__NativeArraykernel__Object);
5477 ((struct instance_array__NativeArray*)var428)->values[0] = (val*) var417;
5478 ((struct instance_array__NativeArray*)var428)->values[1] = (val*) var_value;
5479 ((struct instance_array__NativeArray*)var428)->values[2] = (val*) var422;
5480 ((void (*)(val*, val*, long))(var426->class->vft[COLOR_array__Array__with_native]))(var426, var428, var427) /* with_native on <var426:Array[Object]>*/;
5481 }
5482 var429 = ((val* (*)(val*))(var426->class->vft[COLOR_string__Object__to_s]))(var426) /* to_s on <var426:Array[Object]>*/;
5483 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var429) /* add on <self:SeparateCompilerVisitor>*/;
5484 if (varonce430) {
5485 var431 = varonce430;
5486 } else {
5487 var432 = " = ";
5488 var433 = 3;
5489 var434 = string__NativeString__to_s_with_length(var432, var433);
5490 var431 = var434;
5491 varonce430 = var431;
5492 }
5493 if (varonce435) {
5494 var436 = varonce435;
5495 } else {
5496 var437 = ";";
5497 var438 = 1;
5498 var439 = string__NativeString__to_s_with_length(var437, var438);
5499 var436 = var439;
5500 varonce435 = var436;
5501 }
5502 var440 = NEW_array__Array(&type_array__Arraykernel__Object);
5503 { /* var440 = array_instance Array[Object] */
5504 var441 = 4;
5505 var442 = NEW_array__NativeArray(var441, &type_array__NativeArraykernel__Object);
5506 ((struct instance_array__NativeArray*)var442)->values[0] = (val*) var_res;
5507 ((struct instance_array__NativeArray*)var442)->values[1] = (val*) var431;
5508 ((struct instance_array__NativeArray*)var442)->values[2] = (val*) var_accept_null;
5509 ((struct instance_array__NativeArray*)var442)->values[3] = (val*) var436;
5510 ((void (*)(val*, val*, long))(var440->class->vft[COLOR_array__Array__with_native]))(var440, var442, var441) /* with_native on <var440:Array[Object]>*/;
5511 }
5512 var443 = ((val* (*)(val*))(var440->class->vft[COLOR_string__Object__to_s]))(var440) /* to_s on <var440:Array[Object]>*/;
5513 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var443) /* add on <self:SeparateCompilerVisitor>*/;
5514 if (varonce444) {
5515 var445 = varonce444;
5516 } else {
5517 var446 = "} else {";
5518 var447 = 8;
5519 var448 = string__NativeString__to_s_with_length(var446, var447);
5520 var445 = var448;
5521 varonce444 = var445;
5522 }
5523 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var445) /* add on <self:SeparateCompilerVisitor>*/;
5524 } else {
5525 }
5526 var449 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_value) /* type_info on <self:SeparateCompilerVisitor>*/;
5527 var_value_type_info = var449;
5528 var451 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5529 var452 = ((val* (*)(val*))(var451->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var451) /* toolcontext on <var451:ModelBuilder>*/;
5530 var453 = ((val* (*)(val*))(var452->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var452) /* opt_phmod_typing on <var452:ToolContext>*/;
5531 var454 = ((val* (*)(val*))(var453->class->vft[COLOR_opts__Option__value]))(var453) /* value on <var453:OptionBool>*/;
5532 var455 = ((struct instance_kernel__Bool*)var454)->value; /* autounbox from nullable Object to Bool */;
5533 var_456 = var455;
5534 if (var455){
5535 var450 = var_456;
5536 } else {
5537 var457 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5538 var458 = ((val* (*)(val*))(var457->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var457) /* toolcontext on <var457:ModelBuilder>*/;
5539 var459 = ((val* (*)(val*))(var458->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var458) /* opt_phand_typing on <var458:ToolContext>*/;
5540 var460 = ((val* (*)(val*))(var459->class->vft[COLOR_opts__Option__value]))(var459) /* value on <var459:OptionBool>*/;
5541 var461 = ((struct instance_kernel__Bool*)var460)->value; /* autounbox from nullable Object to Bool */;
5542 var450 = var461;
5543 }
5544 if (var450){
5545 if (varonce462) {
5546 var463 = varonce462;
5547 } else {
5548 var464 = " = HASH(";
5549 var465 = 8;
5550 var466 = string__NativeString__to_s_with_length(var464, var465);
5551 var463 = var466;
5552 varonce462 = var463;
5553 }
5554 if (varonce467) {
5555 var468 = varonce467;
5556 } else {
5557 var469 = "->color, ";
5558 var470 = 9;
5559 var471 = string__NativeString__to_s_with_length(var469, var470);
5560 var468 = var471;
5561 varonce467 = var468;
5562 }
5563 if (varonce472) {
5564 var473 = varonce472;
5565 } else {
5566 var474 = ");";
5567 var475 = 2;
5568 var476 = string__NativeString__to_s_with_length(var474, var475);
5569 var473 = var476;
5570 varonce472 = var473;
5571 }
5572 var477 = NEW_array__Array(&type_array__Arraykernel__Object);
5573 { /* var477 = array_instance Array[Object] */
5574 var478 = 6;
5575 var479 = NEW_array__NativeArray(var478, &type_array__NativeArraykernel__Object);
5576 ((struct instance_array__NativeArray*)var479)->values[0] = (val*) var_cltype;
5577 ((struct instance_array__NativeArray*)var479)->values[1] = (val*) var463;
5578 ((struct instance_array__NativeArray*)var479)->values[2] = (val*) var_value_type_info;
5579 ((struct instance_array__NativeArray*)var479)->values[3] = (val*) var468;
5580 ((struct instance_array__NativeArray*)var479)->values[4] = (val*) var_idtype;
5581 ((struct instance_array__NativeArray*)var479)->values[5] = (val*) var473;
5582 ((void (*)(val*, val*, long))(var477->class->vft[COLOR_array__Array__with_native]))(var477, var479, var478) /* with_native on <var477:Array[Object]>*/;
5583 }
5584 var480 = ((val* (*)(val*))(var477->class->vft[COLOR_string__Object__to_s]))(var477) /* to_s on <var477:Array[Object]>*/;
5585 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var480) /* add on <self:SeparateCompilerVisitor>*/;
5586 } else {
5587 }
5588 if (varonce481) {
5589 var482 = varonce481;
5590 } else {
5591 var483 = "if(";
5592 var484 = 3;
5593 var485 = string__NativeString__to_s_with_length(var483, var484);
5594 var482 = var485;
5595 varonce481 = var482;
5596 }
5597 if (varonce486) {
5598 var487 = varonce486;
5599 } else {
5600 var488 = " >= ";
5601 var489 = 4;
5602 var490 = string__NativeString__to_s_with_length(var488, var489);
5603 var487 = var490;
5604 varonce486 = var487;
5605 }
5606 if (varonce491) {
5607 var492 = varonce491;
5608 } else {
5609 var493 = "->table_size) {";
5610 var494 = 15;
5611 var495 = string__NativeString__to_s_with_length(var493, var494);
5612 var492 = var495;
5613 varonce491 = var492;
5614 }
5615 var496 = NEW_array__Array(&type_array__Arraykernel__Object);
5616 { /* var496 = array_instance Array[Object] */
5617 var497 = 5;
5618 var498 = NEW_array__NativeArray(var497, &type_array__NativeArraykernel__Object);
5619 ((struct instance_array__NativeArray*)var498)->values[0] = (val*) var482;
5620 ((struct instance_array__NativeArray*)var498)->values[1] = (val*) var_cltype;
5621 ((struct instance_array__NativeArray*)var498)->values[2] = (val*) var487;
5622 ((struct instance_array__NativeArray*)var498)->values[3] = (val*) var_value_type_info;
5623 ((struct instance_array__NativeArray*)var498)->values[4] = (val*) var492;
5624 ((void (*)(val*, val*, long))(var496->class->vft[COLOR_array__Array__with_native]))(var496, var498, var497) /* with_native on <var496:Array[Object]>*/;
5625 }
5626 var499 = ((val* (*)(val*))(var496->class->vft[COLOR_string__Object__to_s]))(var496) /* to_s on <var496:Array[Object]>*/;
5627 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var499) /* add on <self:SeparateCompilerVisitor>*/;
5628 if (varonce500) {
5629 var501 = varonce500;
5630 } else {
5631 var502 = " = 0;";
5632 var503 = 5;
5633 var504 = string__NativeString__to_s_with_length(var502, var503);
5634 var501 = var504;
5635 varonce500 = var501;
5636 }
5637 var505 = NEW_array__Array(&type_array__Arraykernel__Object);
5638 { /* var505 = array_instance Array[Object] */
5639 var506 = 2;
5640 var507 = NEW_array__NativeArray(var506, &type_array__NativeArraykernel__Object);
5641 ((struct instance_array__NativeArray*)var507)->values[0] = (val*) var_res;
5642 ((struct instance_array__NativeArray*)var507)->values[1] = (val*) var501;
5643 ((void (*)(val*, val*, long))(var505->class->vft[COLOR_array__Array__with_native]))(var505, var507, var506) /* with_native on <var505:Array[Object]>*/;
5644 }
5645 var508 = ((val* (*)(val*))(var505->class->vft[COLOR_string__Object__to_s]))(var505) /* to_s on <var505:Array[Object]>*/;
5646 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var508) /* add on <self:SeparateCompilerVisitor>*/;
5647 if (varonce509) {
5648 var510 = varonce509;
5649 } else {
5650 var511 = "} else {";
5651 var512 = 8;
5652 var513 = string__NativeString__to_s_with_length(var511, var512);
5653 var510 = var513;
5654 varonce509 = var510;
5655 }
5656 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var510) /* add on <self:SeparateCompilerVisitor>*/;
5657 if (varonce514) {
5658 var515 = varonce514;
5659 } else {
5660 var516 = " = ";
5661 var517 = 3;
5662 var518 = string__NativeString__to_s_with_length(var516, var517);
5663 var515 = var518;
5664 varonce514 = var515;
5665 }
5666 if (varonce519) {
5667 var520 = varonce519;
5668 } else {
5669 var521 = "->type_table[";
5670 var522 = 13;
5671 var523 = string__NativeString__to_s_with_length(var521, var522);
5672 var520 = var523;
5673 varonce519 = var520;
5674 }
5675 if (varonce524) {
5676 var525 = varonce524;
5677 } else {
5678 var526 = "] == ";
5679 var527 = 5;
5680 var528 = string__NativeString__to_s_with_length(var526, var527);
5681 var525 = var528;
5682 varonce524 = var525;
5683 }
5684 if (varonce529) {
5685 var530 = varonce529;
5686 } else {
5687 var531 = ";";
5688 var532 = 1;
5689 var533 = string__NativeString__to_s_with_length(var531, var532);
5690 var530 = var533;
5691 varonce529 = var530;
5692 }
5693 var534 = NEW_array__Array(&type_array__Arraykernel__Object);
5694 { /* var534 = array_instance Array[Object] */
5695 var535 = 8;
5696 var536 = NEW_array__NativeArray(var535, &type_array__NativeArraykernel__Object);
5697 ((struct instance_array__NativeArray*)var536)->values[0] = (val*) var_res;
5698 ((struct instance_array__NativeArray*)var536)->values[1] = (val*) var515;
5699 ((struct instance_array__NativeArray*)var536)->values[2] = (val*) var_value_type_info;
5700 ((struct instance_array__NativeArray*)var536)->values[3] = (val*) var520;
5701 ((struct instance_array__NativeArray*)var536)->values[4] = (val*) var_cltype;
5702 ((struct instance_array__NativeArray*)var536)->values[5] = (val*) var525;
5703 ((struct instance_array__NativeArray*)var536)->values[6] = (val*) var_idtype;
5704 ((struct instance_array__NativeArray*)var536)->values[7] = (val*) var530;
5705 ((void (*)(val*, val*, long))(var534->class->vft[COLOR_array__Array__with_native]))(var534, var536, var535) /* with_native on <var534:Array[Object]>*/;
5706 }
5707 var537 = ((val* (*)(val*))(var534->class->vft[COLOR_string__Object__to_s]))(var534) /* to_s on <var534:Array[Object]>*/;
5708 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var537) /* add on <self:SeparateCompilerVisitor>*/;
5709 if (varonce538) {
5710 var539 = varonce538;
5711 } else {
5712 var540 = "}";
5713 var541 = 1;
5714 var542 = string__NativeString__to_s_with_length(var540, var541);
5715 var539 = var542;
5716 varonce538 = var539;
5717 }
5718 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var539) /* add on <self:SeparateCompilerVisitor>*/;
5719 if (var_maybe_null){
5720 if (varonce543) {
5721 var544 = varonce543;
5722 } else {
5723 var545 = "}";
5724 var546 = 1;
5725 var547 = string__NativeString__to_s_with_length(var545, var546);
5726 var544 = var547;
5727 varonce543 = var544;
5728 }
5729 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var544) /* add on <self:SeparateCompilerVisitor>*/;
5730 } else {
5731 }
5732 var = var_res;
5733 goto RET_LABEL;
5734 RET_LABEL:;
5735 return var;
5736 }
5737 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
5738 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
5739 val* var /* : RuntimeVariable */;
5740 val* var1 /* : RuntimeVariable */;
5741 var1 = separate_compiler__SeparateCompilerVisitor__type_test(self, p0, p1, p2);
5742 var = var1;
5743 RET_LABEL:;
5744 return var;
5745 }
5746 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
5747 val* separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
5748 val* var /* : RuntimeVariable */;
5749 val* var_value1 /* var value1: RuntimeVariable */;
5750 val* var_value2 /* var value2: RuntimeVariable */;
5751 val* var1 /* : MClassType */;
5752 val* var2 /* : RuntimeVariable */;
5753 val* var_res /* var res: RuntimeVariable */;
5754 short int var3 /* : Bool */;
5755 val* var4 /* : MType */;
5756 val* var5 /* : String */;
5757 static val* varonce;
5758 val* var6 /* : String */;
5759 char* var7 /* : NativeString */;
5760 long var8 /* : Int */;
5761 val* var9 /* : String */;
5762 short int var10 /* : Bool */;
5763 short int var_ /* var : Bool */;
5764 val* var11 /* : MType */;
5765 val* var12 /* : String */;
5766 static val* varonce13;
5767 val* var14 /* : String */;
5768 char* var15 /* : NativeString */;
5769 long var16 /* : Int */;
5770 val* var17 /* : String */;
5771 short int var18 /* : Bool */;
5772 val* var_tmp /* var tmp: RuntimeVariable */;
5773 val* var19 /* : MType */;
5774 val* var20 /* : String */;
5775 static val* varonce21;
5776 val* var22 /* : String */;
5777 char* var23 /* : NativeString */;
5778 long var24 /* : Int */;
5779 val* var25 /* : String */;
5780 short int var26 /* : Bool */;
5781 val* var27 /* : MType */;
5782 val* var28 /* : MType */;
5783 short int var29 /* : Bool */;
5784 static val* varonce30;
5785 val* var31 /* : String */;
5786 char* var32 /* : NativeString */;
5787 long var33 /* : Int */;
5788 val* var34 /* : String */;
5789 val* var35 /* : MType */;
5790 static val* varonce36;
5791 val* var37 /* : String */;
5792 char* var38 /* : NativeString */;
5793 long var39 /* : Int */;
5794 val* var40 /* : String */;
5795 val* var41 /* : MType */;
5796 static val* varonce42;
5797 val* var43 /* : String */;
5798 char* var44 /* : NativeString */;
5799 long var45 /* : Int */;
5800 val* var46 /* : String */;
5801 val* var47 /* : Array[Object] */;
5802 long var48 /* : Int */;
5803 val* var49 /* : NativeArray[Object] */;
5804 val* var50 /* : String */;
5805 val* var51 /* : MType */;
5806 val* var52 /* : String */;
5807 static val* varonce53;
5808 val* var54 /* : String */;
5809 char* var55 /* : NativeString */;
5810 long var56 /* : Int */;
5811 val* var57 /* : String */;
5812 short int var58 /* : Bool */;
5813 static val* varonce59;
5814 val* var60 /* : String */;
5815 char* var61 /* : NativeString */;
5816 long var62 /* : Int */;
5817 val* var63 /* : String */;
5818 val* var64 /* : MType */;
5819 static val* varonce65;
5820 val* var66 /* : String */;
5821 char* var67 /* : NativeString */;
5822 long var68 /* : Int */;
5823 val* var69 /* : String */;
5824 val* var70 /* : MType */;
5825 static val* varonce71;
5826 val* var72 /* : String */;
5827 char* var73 /* : NativeString */;
5828 long var74 /* : Int */;
5829 val* var75 /* : String */;
5830 val* var76 /* : Array[Object] */;
5831 long var77 /* : Int */;
5832 val* var78 /* : NativeArray[Object] */;
5833 val* var79 /* : String */;
5834 val* var80 /* : MType */;
5835 short int var81 /* : Bool */;
5836 int cltype;
5837 int idtype;
5838 const char* var_class_name;
5839 val* var_mtype1 /* var mtype1: MClassType */;
5840 static val* varonce82;
5841 val* var83 /* : String */;
5842 char* var84 /* : NativeString */;
5843 long var85 /* : Int */;
5844 val* var86 /* : String */;
5845 val* var87 /* : String */;
5846 val* var88 /* : Array[Object] */;
5847 long var89 /* : Int */;
5848 val* var90 /* : NativeArray[Object] */;
5849 val* var91 /* : String */;
5850 static val* varonce92;
5851 val* var93 /* : String */;
5852 char* var94 /* : NativeString */;
5853 long var95 /* : Int */;
5854 val* var96 /* : String */;
5855 static val* varonce97;
5856 val* var98 /* : String */;
5857 char* var99 /* : NativeString */;
5858 long var100 /* : Int */;
5859 val* var101 /* : String */;
5860 static val* varonce102;
5861 val* var103 /* : String */;
5862 char* var104 /* : NativeString */;
5863 long var105 /* : Int */;
5864 val* var106 /* : String */;
5865 val* var107 /* : String */;
5866 static val* varonce108;
5867 val* var109 /* : String */;
5868 char* var110 /* : NativeString */;
5869 long var111 /* : Int */;
5870 val* var112 /* : String */;
5871 val* var113 /* : Array[Object] */;
5872 long var114 /* : Int */;
5873 val* var115 /* : NativeArray[Object] */;
5874 val* var116 /* : String */;
5875 static val* varonce117;
5876 val* var118 /* : String */;
5877 char* var119 /* : NativeString */;
5878 long var120 /* : Int */;
5879 val* var121 /* : String */;
5880 static val* varonce122;
5881 val* var123 /* : String */;
5882 char* var124 /* : NativeString */;
5883 long var125 /* : Int */;
5884 val* var126 /* : String */;
5885 static val* varonce127;
5886 val* var128 /* : String */;
5887 char* var129 /* : NativeString */;
5888 long var130 /* : Int */;
5889 val* var131 /* : String */;
5890 static val* varonce132;
5891 val* var133 /* : String */;
5892 char* var134 /* : NativeString */;
5893 long var135 /* : Int */;
5894 val* var136 /* : String */;
5895 static val* varonce137;
5896 val* var138 /* : String */;
5897 char* var139 /* : NativeString */;
5898 long var140 /* : Int */;
5899 val* var141 /* : String */;
5900 static val* varonce142;
5901 val* var143 /* : String */;
5902 char* var144 /* : NativeString */;
5903 long var145 /* : Int */;
5904 val* var146 /* : String */;
5905 static val* varonce147;
5906 val* var148 /* : String */;
5907 char* var149 /* : NativeString */;
5908 long var150 /* : Int */;
5909 val* var151 /* : String */;
5910 val* var152 /* : Array[Object] */;
5911 long var153 /* : Int */;
5912 val* var154 /* : NativeArray[Object] */;
5913 val* var155 /* : String */;
5914 var_value1 = p0;
5915 var_value2 = p1;
5916 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
5917 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
5918 var_res = var2;
5919 var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
5920 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
5921 if (varonce) {
5922 var6 = varonce;
5923 } else {
5924 var7 = "val*";
5925 var8 = 4;
5926 var9 = string__NativeString__to_s_with_length(var7, var8);
5927 var6 = var9;
5928 varonce = var6;
5929 }
5930 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
5931 var_ = var10;
5932 if (var10){
5933 var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
5934 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
5935 if (varonce13) {
5936 var14 = varonce13;
5937 } else {
5938 var15 = "val*";
5939 var16 = 4;
5940 var17 = string__NativeString__to_s_with_length(var15, var16);
5941 var14 = var17;
5942 varonce13 = var14;
5943 }
5944 var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
5945 var3 = var18;
5946 } else {
5947 var3 = var_;
5948 }
5949 if (var3){
5950 var_tmp = var_value1;
5951 var_value1 = var_value2;
5952 var_value2 = var_tmp;
5953 } else {
5954 }
5955 var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
5956 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
5957 if (varonce21) {
5958 var22 = varonce21;
5959 } else {
5960 var23 = "val*";
5961 var24 = 4;
5962 var25 = string__NativeString__to_s_with_length(var23, var24);
5963 var22 = var25;
5964 varonce21 = var22;
5965 }
5966 var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
5967 if (var26){
5968 var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
5969 var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
5970 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
5971 if (var29){
5972 if (varonce30) {
5973 var31 = varonce30;
5974 } else {
5975 var32 = " = 1; /* is_same_type_test: compatible types ";
5976 var33 = 45;
5977 var34 = string__NativeString__to_s_with_length(var32, var33);
5978 var31 = var34;
5979 varonce30 = var31;
5980 }
5981 var35 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
5982 if (varonce36) {
5983 var37 = varonce36;
5984 } else {
5985 var38 = " vs. ";
5986 var39 = 5;
5987 var40 = string__NativeString__to_s_with_length(var38, var39);
5988 var37 = var40;
5989 varonce36 = var37;
5990 }
5991 var41 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
5992 if (varonce42) {
5993 var43 = varonce42;
5994 } else {
5995 var44 = " */";
5996 var45 = 3;
5997 var46 = string__NativeString__to_s_with_length(var44, var45);
5998 var43 = var46;
5999 varonce42 = var43;
6000 }
6001 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
6002 { /* var47 = array_instance Array[Object] */
6003 var48 = 6;
6004 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
6005 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var_res;
6006 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var31;
6007 ((struct instance_array__NativeArray*)var49)->values[2] = (val*) var35;
6008 ((struct instance_array__NativeArray*)var49)->values[3] = (val*) var37;
6009 ((struct instance_array__NativeArray*)var49)->values[4] = (val*) var41;
6010 ((struct instance_array__NativeArray*)var49)->values[5] = (val*) var43;
6011 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
6012 }
6013 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
6014 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var50) /* add on <self:SeparateCompilerVisitor>*/;
6015 } else {
6016 var51 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6017 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_compiler__MType__ctype]))(var51) /* ctype on <var51:MType>*/;
6018 if (varonce53) {
6019 var54 = varonce53;
6020 } else {
6021 var55 = "val*";
6022 var56 = 4;
6023 var57 = string__NativeString__to_s_with_length(var55, var56);
6024 var54 = var57;
6025 varonce53 = var54;
6026 }
6027 var58 = ((short int (*)(val*, val*))(var52->class->vft[COLOR_kernel__Object___33d_61d]))(var52, var54) /* != on <var52:String>*/;
6028 if (var58){
6029 if (varonce59) {
6030 var60 = varonce59;
6031 } else {
6032 var61 = " = 0; /* is_same_type_test: incompatible types ";
6033 var62 = 47;
6034 var63 = string__NativeString__to_s_with_length(var61, var62);
6035 var60 = var63;
6036 varonce59 = var60;
6037 }
6038 var64 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6039 if (varonce65) {
6040 var66 = varonce65;
6041 } else {
6042 var67 = " vs. ";
6043 var68 = 5;
6044 var69 = string__NativeString__to_s_with_length(var67, var68);
6045 var66 = var69;
6046 varonce65 = var66;
6047 }
6048 var70 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6049 if (varonce71) {
6050 var72 = varonce71;
6051 } else {
6052 var73 = "*/";
6053 var74 = 2;
6054 var75 = string__NativeString__to_s_with_length(var73, var74);
6055 var72 = var75;
6056 varonce71 = var72;
6057 }
6058 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
6059 { /* var76 = array_instance Array[Object] */
6060 var77 = 6;
6061 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
6062 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_res;
6063 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var60;
6064 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var64;
6065 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var66;
6066 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
6067 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
6068 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
6069 }
6070 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
6071 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
6072 } else {
6073 var80 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6074 /* <var80:MType> isa MClassType */
6075 cltype = type_model__MClassType.color;
6076 idtype = type_model__MClassType.id;
6077 if(cltype >= var80->type->table_size) {
6078 var81 = 0;
6079 } else {
6080 var81 = var80->type->type_table[cltype] == idtype;
6081 }
6082 if (!var81) {
6083 var_class_name = var80 == NULL ? "null" : var80->type->name;
6084 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
6085 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1381);
6086 show_backtrace(1);
6087 }
6088 var_mtype1 = var80;
6089 if (varonce82) {
6090 var83 = varonce82;
6091 } else {
6092 var84 = "class_";
6093 var85 = 6;
6094 var86 = string__NativeString__to_s_with_length(var84, var85);
6095 var83 = var86;
6096 varonce82 = var83;
6097 }
6098 var87 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
6099 var88 = NEW_array__Array(&type_array__Arraykernel__Object);
6100 { /* var88 = array_instance Array[Object] */
6101 var89 = 2;
6102 var90 = NEW_array__NativeArray(var89, &type_array__NativeArraykernel__Object);
6103 ((struct instance_array__NativeArray*)var90)->values[0] = (val*) var83;
6104 ((struct instance_array__NativeArray*)var90)->values[1] = (val*) var87;
6105 ((void (*)(val*, val*, long))(var88->class->vft[COLOR_array__Array__with_native]))(var88, var90, var89) /* with_native on <var88:Array[Object]>*/;
6106 }
6107 var91 = ((val* (*)(val*))(var88->class->vft[COLOR_string__Object__to_s]))(var88) /* to_s on <var88:Array[Object]>*/;
6108 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var91) /* require_declaration on <self:SeparateCompilerVisitor>*/;
6109 if (varonce92) {
6110 var93 = varonce92;
6111 } else {
6112 var94 = " = (";
6113 var95 = 4;
6114 var96 = string__NativeString__to_s_with_length(var94, var95);
6115 var93 = var96;
6116 varonce92 = var93;
6117 }
6118 if (varonce97) {
6119 var98 = varonce97;
6120 } else {
6121 var99 = " != NULL) && (";
6122 var100 = 14;
6123 var101 = string__NativeString__to_s_with_length(var99, var100);
6124 var98 = var101;
6125 varonce97 = var98;
6126 }
6127 if (varonce102) {
6128 var103 = varonce102;
6129 } else {
6130 var104 = "->class == &class_";
6131 var105 = 18;
6132 var106 = string__NativeString__to_s_with_length(var104, var105);
6133 var103 = var106;
6134 varonce102 = var103;
6135 }
6136 var107 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
6137 if (varonce108) {
6138 var109 = varonce108;
6139 } else {
6140 var110 = "); /* is_same_type_test */";
6141 var111 = 26;
6142 var112 = string__NativeString__to_s_with_length(var110, var111);
6143 var109 = var112;
6144 varonce108 = var109;
6145 }
6146 var113 = NEW_array__Array(&type_array__Arraykernel__Object);
6147 { /* var113 = array_instance Array[Object] */
6148 var114 = 8;
6149 var115 = NEW_array__NativeArray(var114, &type_array__NativeArraykernel__Object);
6150 ((struct instance_array__NativeArray*)var115)->values[0] = (val*) var_res;
6151 ((struct instance_array__NativeArray*)var115)->values[1] = (val*) var93;
6152 ((struct instance_array__NativeArray*)var115)->values[2] = (val*) var_value2;
6153 ((struct instance_array__NativeArray*)var115)->values[3] = (val*) var98;
6154 ((struct instance_array__NativeArray*)var115)->values[4] = (val*) var_value2;
6155 ((struct instance_array__NativeArray*)var115)->values[5] = (val*) var103;
6156 ((struct instance_array__NativeArray*)var115)->values[6] = (val*) var107;
6157 ((struct instance_array__NativeArray*)var115)->values[7] = (val*) var109;
6158 ((void (*)(val*, val*, long))(var113->class->vft[COLOR_array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
6159 }
6160 var116 = ((val* (*)(val*))(var113->class->vft[COLOR_string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
6161 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var116) /* add on <self:SeparateCompilerVisitor>*/;
6162 }
6163 }
6164 } else {
6165 if (varonce117) {
6166 var118 = varonce117;
6167 } else {
6168 var119 = " = (";
6169 var120 = 4;
6170 var121 = string__NativeString__to_s_with_length(var119, var120);
6171 var118 = var121;
6172 varonce117 = var118;
6173 }
6174 if (varonce122) {
6175 var123 = varonce122;
6176 } else {
6177 var124 = " == ";
6178 var125 = 4;
6179 var126 = string__NativeString__to_s_with_length(var124, var125);
6180 var123 = var126;
6181 varonce122 = var123;
6182 }
6183 if (varonce127) {
6184 var128 = varonce127;
6185 } else {
6186 var129 = ") || (";
6187 var130 = 6;
6188 var131 = string__NativeString__to_s_with_length(var129, var130);
6189 var128 = var131;
6190 varonce127 = var128;
6191 }
6192 if (varonce132) {
6193 var133 = varonce132;
6194 } else {
6195 var134 = " != NULL && ";
6196 var135 = 12;
6197 var136 = string__NativeString__to_s_with_length(var134, var135);
6198 var133 = var136;
6199 varonce132 = var133;
6200 }
6201 if (varonce137) {
6202 var138 = varonce137;
6203 } else {
6204 var139 = " != NULL && ";
6205 var140 = 12;
6206 var141 = string__NativeString__to_s_with_length(var139, var140);
6207 var138 = var141;
6208 varonce137 = var138;
6209 }
6210 if (varonce142) {
6211 var143 = varonce142;
6212 } else {
6213 var144 = "->class == ";
6214 var145 = 11;
6215 var146 = string__NativeString__to_s_with_length(var144, var145);
6216 var143 = var146;
6217 varonce142 = var143;
6218 }
6219 if (varonce147) {
6220 var148 = varonce147;
6221 } else {
6222 var149 = "->class); /* is_same_type_test */";
6223 var150 = 33;
6224 var151 = string__NativeString__to_s_with_length(var149, var150);
6225 var148 = var151;
6226 varonce147 = var148;
6227 }
6228 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
6229 { /* var152 = array_instance Array[Object] */
6230 var153 = 14;
6231 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
6232 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var_res;
6233 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var118;
6234 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var_value1;
6235 ((struct instance_array__NativeArray*)var154)->values[3] = (val*) var123;
6236 ((struct instance_array__NativeArray*)var154)->values[4] = (val*) var_value2;
6237 ((struct instance_array__NativeArray*)var154)->values[5] = (val*) var128;
6238 ((struct instance_array__NativeArray*)var154)->values[6] = (val*) var_value1;
6239 ((struct instance_array__NativeArray*)var154)->values[7] = (val*) var133;
6240 ((struct instance_array__NativeArray*)var154)->values[8] = (val*) var_value2;
6241 ((struct instance_array__NativeArray*)var154)->values[9] = (val*) var138;
6242 ((struct instance_array__NativeArray*)var154)->values[10] = (val*) var_value1;
6243 ((struct instance_array__NativeArray*)var154)->values[11] = (val*) var143;
6244 ((struct instance_array__NativeArray*)var154)->values[12] = (val*) var_value2;
6245 ((struct instance_array__NativeArray*)var154)->values[13] = (val*) var148;
6246 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
6247 }
6248 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
6249 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var155) /* add on <self:SeparateCompilerVisitor>*/;
6250 }
6251 var = var_res;
6252 goto RET_LABEL;
6253 RET_LABEL:;
6254 return var;
6255 }
6256 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
6257 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
6258 val* var /* : RuntimeVariable */;
6259 val* var1 /* : RuntimeVariable */;
6260 var1 = separate_compiler__SeparateCompilerVisitor__is_same_type_test(self, p0, p1);
6261 var = var1;
6262 RET_LABEL:;
6263 return var;
6264 }
6265 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: SeparateCompilerVisitor, RuntimeVariable): String */
6266 val* separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
6267 val* var /* : String */;
6268 val* var_value /* var value: RuntimeVariable */;
6269 static val* varonce;
6270 val* var1 /* : String */;
6271 char* var2 /* : NativeString */;
6272 long var3 /* : Int */;
6273 val* var4 /* : String */;
6274 val* var5 /* : String */;
6275 val* var_res /* var res: String */;
6276 static val* varonce6;
6277 val* var7 /* : String */;
6278 char* var8 /* : NativeString */;
6279 long var9 /* : Int */;
6280 val* var10 /* : String */;
6281 static val* varonce11;
6282 val* var12 /* : String */;
6283 char* var13 /* : NativeString */;
6284 long var14 /* : Int */;
6285 val* var15 /* : String */;
6286 val* var16 /* : Array[Object] */;
6287 long var17 /* : Int */;
6288 val* var18 /* : NativeArray[Object] */;
6289 val* var19 /* : String */;
6290 val* var20 /* : MType */;
6291 val* var21 /* : String */;
6292 static val* varonce22;
6293 val* var23 /* : String */;
6294 char* var24 /* : NativeString */;
6295 long var25 /* : Int */;
6296 val* var26 /* : String */;
6297 short int var27 /* : Bool */;
6298 static val* varonce28;
6299 val* var29 /* : String */;
6300 char* var30 /* : NativeString */;
6301 long var31 /* : Int */;
6302 val* var32 /* : String */;
6303 static val* varonce33;
6304 val* var34 /* : String */;
6305 char* var35 /* : NativeString */;
6306 long var36 /* : Int */;
6307 val* var37 /* : String */;
6308 static val* varonce38;
6309 val* var39 /* : String */;
6310 char* var40 /* : NativeString */;
6311 long var41 /* : Int */;
6312 val* var42 /* : String */;
6313 val* var43 /* : Array[Object] */;
6314 long var44 /* : Int */;
6315 val* var45 /* : NativeArray[Object] */;
6316 val* var46 /* : String */;
6317 short int var47 /* : Bool */;
6318 val* var48 /* : MType */;
6319 short int var49 /* : Bool */;
6320 int cltype;
6321 int idtype;
6322 short int var_ /* var : Bool */;
6323 val* var50 /* : MType */;
6324 short int var51 /* : Bool */;
6325 int cltype52;
6326 int idtype53;
6327 const char* var_class_name;
6328 val* var54 /* : MClass */;
6329 val* var55 /* : MClassKind */;
6330 val* var56 /* : MClassKind */;
6331 short int var57 /* : Bool */;
6332 static val* varonce58;
6333 val* var59 /* : String */;
6334 char* var60 /* : NativeString */;
6335 long var61 /* : Int */;
6336 val* var62 /* : String */;
6337 val* var63 /* : MType */;
6338 short int var64 /* : Bool */;
6339 int cltype65;
6340 int idtype66;
6341 const char* var_class_name67;
6342 val* var68 /* : MClass */;
6343 static val* varonce69;
6344 val* var70 /* : String */;
6345 char* var71 /* : NativeString */;
6346 long var72 /* : Int */;
6347 val* var73 /* : String */;
6348 val* var74 /* : Array[Object] */;
6349 long var75 /* : Int */;
6350 val* var76 /* : NativeArray[Object] */;
6351 val* var77 /* : String */;
6352 static val* varonce78;
6353 val* var79 /* : String */;
6354 char* var80 /* : NativeString */;
6355 long var81 /* : Int */;
6356 val* var82 /* : String */;
6357 val* var83 /* : MType */;
6358 val* var84 /* : String */;
6359 val* var85 /* : Array[Object] */;
6360 long var86 /* : Int */;
6361 val* var87 /* : NativeArray[Object] */;
6362 val* var88 /* : String */;
6363 static val* varonce89;
6364 val* var90 /* : String */;
6365 char* var91 /* : NativeString */;
6366 long var92 /* : Int */;
6367 val* var93 /* : String */;
6368 val* var94 /* : MType */;
6369 val* var95 /* : String */;
6370 static val* varonce96;
6371 val* var97 /* : String */;
6372 char* var98 /* : NativeString */;
6373 long var99 /* : Int */;
6374 val* var100 /* : String */;
6375 val* var101 /* : Array[Object] */;
6376 long var102 /* : Int */;
6377 val* var103 /* : NativeArray[Object] */;
6378 val* var104 /* : String */;
6379 var_value = p0;
6380 if (varonce) {
6381 var1 = varonce;
6382 } else {
6383 var2 = "var_class_name";
6384 var3 = 14;
6385 var4 = string__NativeString__to_s_with_length(var2, var3);
6386 var1 = var4;
6387 varonce = var1;
6388 }
6389 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var1) /* get_name on <self:SeparateCompilerVisitor>*/;
6390 var_res = var5;
6391 if (varonce6) {
6392 var7 = varonce6;
6393 } else {
6394 var8 = "const char* ";
6395 var9 = 12;
6396 var10 = string__NativeString__to_s_with_length(var8, var9);
6397 var7 = var10;
6398 varonce6 = var7;
6399 }
6400 if (varonce11) {
6401 var12 = varonce11;
6402 } else {
6403 var13 = ";";
6404 var14 = 1;
6405 var15 = string__NativeString__to_s_with_length(var13, var14);
6406 var12 = var15;
6407 varonce11 = var12;
6408 }
6409 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
6410 { /* var16 = array_instance Array[Object] */
6411 var17 = 3;
6412 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
6413 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
6414 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_res;
6415 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
6416 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
6417 }
6418 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
6419 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var19) /* add_decl on <self:SeparateCompilerVisitor>*/;
6420 var20 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
6421 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_compiler__MType__ctype]))(var20) /* ctype on <var20:MType>*/;
6422 if (varonce22) {
6423 var23 = varonce22;
6424 } else {
6425 var24 = "val*";
6426 var25 = 4;
6427 var26 = string__NativeString__to_s_with_length(var24, var25);
6428 var23 = var26;
6429 varonce22 = var23;
6430 }
6431 var27 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var23) /* == on <var21:String>*/;
6432 if (var27){
6433 if (varonce28) {
6434 var29 = varonce28;
6435 } else {
6436 var30 = " = ";
6437 var31 = 3;
6438 var32 = string__NativeString__to_s_with_length(var30, var31);
6439 var29 = var32;
6440 varonce28 = var29;
6441 }
6442 if (varonce33) {
6443 var34 = varonce33;
6444 } else {
6445 var35 = " == NULL ? \"null\" : ";
6446 var36 = 20;
6447 var37 = string__NativeString__to_s_with_length(var35, var36);
6448 var34 = var37;
6449 varonce33 = var34;
6450 }
6451 if (varonce38) {
6452 var39 = varonce38;
6453 } else {
6454 var40 = "->type->name;";
6455 var41 = 13;
6456 var42 = string__NativeString__to_s_with_length(var40, var41);
6457 var39 = var42;
6458 varonce38 = var39;
6459 }
6460 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
6461 { /* var43 = array_instance Array[Object] */
6462 var44 = 6;
6463 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
6464 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var_res;
6465 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var29;
6466 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var_value;
6467 ((struct instance_array__NativeArray*)var45)->values[3] = (val*) var34;
6468 ((struct instance_array__NativeArray*)var45)->values[4] = (val*) var_value;
6469 ((struct instance_array__NativeArray*)var45)->values[5] = (val*) var39;
6470 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
6471 }
6472 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
6473 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var46) /* add on <self:SeparateCompilerVisitor>*/;
6474 } else {
6475 var48 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
6476 /* <var48:MType> isa MClassType */
6477 cltype = type_model__MClassType.color;
6478 idtype = type_model__MClassType.id;
6479 if(cltype >= var48->type->table_size) {
6480 var49 = 0;
6481 } else {
6482 var49 = var48->type->type_table[cltype] == idtype;
6483 }
6484 var_ = var49;
6485 if (var49){
6486 var50 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
6487 /* <var50:MType> isa MClassType */
6488 cltype52 = type_model__MClassType.color;
6489 idtype53 = type_model__MClassType.id;
6490 if(cltype52 >= var50->type->table_size) {
6491 var51 = 0;
6492 } else {
6493 var51 = var50->type->type_table[cltype52] == idtype53;
6494 }
6495 if (!var51) {
6496 var_class_name = var50 == NULL ? "null" : var50->type->name;
6497 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
6498 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1397);
6499 show_backtrace(1);
6500 }
6501 var54 = ((val* (*)(val*))(var50->class->vft[COLOR_model__MClassType__mclass]))(var50) /* mclass on <var50:MType(MClassType)>*/;
6502 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_model__MClass__kind]))(var54) /* kind on <var54:MClass>*/;
6503 var56 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:SeparateCompilerVisitor>*/;
6504 var57 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_kernel__Object___61d_61d]))(var55, var56) /* == on <var55:MClassKind>*/;
6505 var47 = var57;
6506 } else {
6507 var47 = var_;
6508 }
6509 if (var47){
6510 if (varonce58) {
6511 var59 = varonce58;
6512 } else {
6513 var60 = " = \"";
6514 var61 = 4;
6515 var62 = string__NativeString__to_s_with_length(var60, var61);
6516 var59 = var62;
6517 varonce58 = var59;
6518 }
6519 var63 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
6520 /* <var63:MType> isa MClassType */
6521 cltype65 = type_model__MClassType.color;
6522 idtype66 = type_model__MClassType.id;
6523 if(cltype65 >= var63->type->table_size) {
6524 var64 = 0;
6525 } else {
6526 var64 = var63->type->type_table[cltype65] == idtype66;
6527 }
6528 if (!var64) {
6529 var_class_name67 = var63 == NULL ? "null" : var63->type->name;
6530 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name67);
6531 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1398);
6532 show_backtrace(1);
6533 }
6534 var68 = ((val* (*)(val*))(var63->class->vft[COLOR_model__MClassType__mclass]))(var63) /* mclass on <var63:MType(MClassType)>*/;
6535 if (varonce69) {
6536 var70 = varonce69;
6537 } else {
6538 var71 = "\";";
6539 var72 = 2;
6540 var73 = string__NativeString__to_s_with_length(var71, var72);
6541 var70 = var73;
6542 varonce69 = var70;
6543 }
6544 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
6545 { /* var74 = array_instance Array[Object] */
6546 var75 = 4;
6547 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
6548 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var_res;
6549 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var59;
6550 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var68;
6551 ((struct instance_array__NativeArray*)var76)->values[3] = (val*) var70;
6552 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
6553 }
6554 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
6555 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var77) /* add on <self:SeparateCompilerVisitor>*/;
6556 } else {
6557 if (varonce78) {
6558 var79 = varonce78;
6559 } else {
6560 var80 = "type_";
6561 var81 = 5;
6562 var82 = string__NativeString__to_s_with_length(var80, var81);
6563 var79 = var82;
6564 varonce78 = var79;
6565 }
6566 var83 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
6567 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_compiler__MType__c_name]))(var83) /* c_name on <var83:MType>*/;
6568 var85 = NEW_array__Array(&type_array__Arraykernel__Object);
6569 { /* var85 = array_instance Array[Object] */
6570 var86 = 2;
6571 var87 = NEW_array__NativeArray(var86, &type_array__NativeArraykernel__Object);
6572 ((struct instance_array__NativeArray*)var87)->values[0] = (val*) var79;
6573 ((struct instance_array__NativeArray*)var87)->values[1] = (val*) var84;
6574 ((void (*)(val*, val*, long))(var85->class->vft[COLOR_array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
6575 }
6576 var88 = ((val* (*)(val*))(var85->class->vft[COLOR_string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
6577 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var88) /* require_declaration on <self:SeparateCompilerVisitor>*/;
6578 if (varonce89) {
6579 var90 = varonce89;
6580 } else {
6581 var91 = " = type_";
6582 var92 = 8;
6583 var93 = string__NativeString__to_s_with_length(var91, var92);
6584 var90 = var93;
6585 varonce89 = var90;
6586 }
6587 var94 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
6588 var95 = ((val* (*)(val*))(var94->class->vft[COLOR_abstract_compiler__MType__c_name]))(var94) /* c_name on <var94:MType>*/;
6589 if (varonce96) {
6590 var97 = varonce96;
6591 } else {
6592 var98 = ".name;";
6593 var99 = 6;
6594 var100 = string__NativeString__to_s_with_length(var98, var99);
6595 var97 = var100;
6596 varonce96 = var97;
6597 }
6598 var101 = NEW_array__Array(&type_array__Arraykernel__Object);
6599 { /* var101 = array_instance Array[Object] */
6600 var102 = 4;
6601 var103 = NEW_array__NativeArray(var102, &type_array__NativeArraykernel__Object);
6602 ((struct instance_array__NativeArray*)var103)->values[0] = (val*) var_res;
6603 ((struct instance_array__NativeArray*)var103)->values[1] = (val*) var90;
6604 ((struct instance_array__NativeArray*)var103)->values[2] = (val*) var95;
6605 ((struct instance_array__NativeArray*)var103)->values[3] = (val*) var97;
6606 ((void (*)(val*, val*, long))(var101->class->vft[COLOR_array__Array__with_native]))(var101, var103, var102) /* with_native on <var101:Array[Object]>*/;
6607 }
6608 var104 = ((val* (*)(val*))(var101->class->vft[COLOR_string__Object__to_s]))(var101) /* to_s on <var101:Array[Object]>*/;
6609 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var104) /* add on <self:SeparateCompilerVisitor>*/;
6610 }
6611 }
6612 var = var_res;
6613 goto RET_LABEL;
6614 RET_LABEL:;
6615 return var;
6616 }
6617 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
6618 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
6619 val* var /* : String */;
6620 val* var1 /* : String */;
6621 var1 = separate_compiler__SeparateCompilerVisitor__class_name_string(self, p0);
6622 var = var1;
6623 RET_LABEL:;
6624 return var;
6625 }
6626 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
6627 val* separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
6628 val* var /* : RuntimeVariable */;
6629 val* var_value1 /* var value1: RuntimeVariable */;
6630 val* var_value2 /* var value2: RuntimeVariable */;
6631 val* var1 /* : MClassType */;
6632 val* var2 /* : RuntimeVariable */;
6633 val* var_res /* var res: RuntimeVariable */;
6634 short int var3 /* : Bool */;
6635 val* var4 /* : MType */;
6636 val* var5 /* : String */;
6637 static val* varonce;
6638 val* var6 /* : String */;
6639 char* var7 /* : NativeString */;
6640 long var8 /* : Int */;
6641 val* var9 /* : String */;
6642 short int var10 /* : Bool */;
6643 short int var_ /* var : Bool */;
6644 val* var11 /* : MType */;
6645 val* var12 /* : String */;
6646 static val* varonce13;
6647 val* var14 /* : String */;
6648 char* var15 /* : NativeString */;
6649 long var16 /* : Int */;
6650 val* var17 /* : String */;
6651 short int var18 /* : Bool */;
6652 val* var_tmp /* var tmp: RuntimeVariable */;
6653 val* var19 /* : MType */;
6654 val* var20 /* : String */;
6655 static val* varonce21;
6656 val* var22 /* : String */;
6657 char* var23 /* : NativeString */;
6658 long var24 /* : Int */;
6659 val* var25 /* : String */;
6660 short int var26 /* : Bool */;
6661 val* var27 /* : MType */;
6662 val* var28 /* : MType */;
6663 short int var29 /* : Bool */;
6664 static val* varonce30;
6665 val* var31 /* : String */;
6666 char* var32 /* : NativeString */;
6667 long var33 /* : Int */;
6668 val* var34 /* : String */;
6669 static val* varonce35;
6670 val* var36 /* : String */;
6671 char* var37 /* : NativeString */;
6672 long var38 /* : Int */;
6673 val* var39 /* : String */;
6674 static val* varonce40;
6675 val* var41 /* : String */;
6676 char* var42 /* : NativeString */;
6677 long var43 /* : Int */;
6678 val* var44 /* : String */;
6679 val* var45 /* : Array[Object] */;
6680 long var46 /* : Int */;
6681 val* var47 /* : NativeArray[Object] */;
6682 val* var48 /* : String */;
6683 val* var49 /* : MType */;
6684 val* var50 /* : String */;
6685 static val* varonce51;
6686 val* var52 /* : String */;
6687 char* var53 /* : NativeString */;
6688 long var54 /* : Int */;
6689 val* var55 /* : String */;
6690 short int var56 /* : Bool */;
6691 static val* varonce57;
6692 val* var58 /* : String */;
6693 char* var59 /* : NativeString */;
6694 long var60 /* : Int */;
6695 val* var61 /* : String */;
6696 val* var62 /* : MType */;
6697 static val* varonce63;
6698 val* var64 /* : String */;
6699 char* var65 /* : NativeString */;
6700 long var66 /* : Int */;
6701 val* var67 /* : String */;
6702 val* var68 /* : MType */;
6703 static val* varonce69;
6704 val* var70 /* : String */;
6705 char* var71 /* : NativeString */;
6706 long var72 /* : Int */;
6707 val* var73 /* : String */;
6708 val* var74 /* : Array[Object] */;
6709 long var75 /* : Int */;
6710 val* var76 /* : NativeArray[Object] */;
6711 val* var77 /* : String */;
6712 val* var78 /* : MType */;
6713 short int var79 /* : Bool */;
6714 int cltype;
6715 int idtype;
6716 const char* var_class_name;
6717 val* var_mtype1 /* var mtype1: MClassType */;
6718 static val* varonce80;
6719 val* var81 /* : String */;
6720 char* var82 /* : NativeString */;
6721 long var83 /* : Int */;
6722 val* var84 /* : String */;
6723 val* var85 /* : String */;
6724 val* var86 /* : Array[Object] */;
6725 long var87 /* : Int */;
6726 val* var88 /* : NativeArray[Object] */;
6727 val* var89 /* : String */;
6728 static val* varonce90;
6729 val* var91 /* : String */;
6730 char* var92 /* : NativeString */;
6731 long var93 /* : Int */;
6732 val* var94 /* : String */;
6733 static val* varonce95;
6734 val* var96 /* : String */;
6735 char* var97 /* : NativeString */;
6736 long var98 /* : Int */;
6737 val* var99 /* : String */;
6738 static val* varonce100;
6739 val* var101 /* : String */;
6740 char* var102 /* : NativeString */;
6741 long var103 /* : Int */;
6742 val* var104 /* : String */;
6743 val* var105 /* : String */;
6744 static val* varonce106;
6745 val* var107 /* : String */;
6746 char* var108 /* : NativeString */;
6747 long var109 /* : Int */;
6748 val* var110 /* : String */;
6749 val* var111 /* : Array[Object] */;
6750 long var112 /* : Int */;
6751 val* var113 /* : NativeArray[Object] */;
6752 val* var114 /* : String */;
6753 static val* varonce115;
6754 val* var116 /* : String */;
6755 char* var117 /* : NativeString */;
6756 long var118 /* : Int */;
6757 val* var119 /* : String */;
6758 static val* varonce120;
6759 val* var121 /* : String */;
6760 char* var122 /* : NativeString */;
6761 long var123 /* : Int */;
6762 val* var124 /* : String */;
6763 val* var125 /* : Array[Object] */;
6764 long var126 /* : Int */;
6765 val* var127 /* : NativeArray[Object] */;
6766 val* var128 /* : String */;
6767 static val* varonce129;
6768 val* var130 /* : String */;
6769 char* var131 /* : NativeString */;
6770 long var132 /* : Int */;
6771 val* var133 /* : String */;
6772 val* var134 /* : MType */;
6773 val* var135 /* : RuntimeVariable */;
6774 static val* varonce136;
6775 val* var137 /* : String */;
6776 char* var138 /* : NativeString */;
6777 long var139 /* : Int */;
6778 val* var140 /* : String */;
6779 static val* varonce141;
6780 val* var142 /* : String */;
6781 char* var143 /* : NativeString */;
6782 long var144 /* : Int */;
6783 val* var145 /* : String */;
6784 val* var146 /* : Array[Object] */;
6785 long var147 /* : Int */;
6786 val* var148 /* : NativeArray[Object] */;
6787 val* var149 /* : String */;
6788 static val* varonce150;
6789 val* var151 /* : String */;
6790 char* var152 /* : NativeString */;
6791 long var153 /* : Int */;
6792 val* var154 /* : String */;
6793 short int var155 /* : Bool */;
6794 short int var_maybe_null /* var maybe_null: Bool */;
6795 val* var156 /* : Array[String] */;
6796 val* var_test /* var test: Array[String] */;
6797 val* var157 /* : MType */;
6798 val* var_t1 /* var t1: MType */;
6799 short int var158 /* : Bool */;
6800 int cltype159;
6801 int idtype160;
6802 static val* varonce161;
6803 val* var162 /* : String */;
6804 char* var163 /* : NativeString */;
6805 long var164 /* : Int */;
6806 val* var165 /* : String */;
6807 val* var166 /* : Array[Object] */;
6808 long var167 /* : Int */;
6809 val* var168 /* : NativeArray[Object] */;
6810 val* var169 /* : String */;
6811 val* var170 /* : MType */;
6812 short int var171 /* : Bool */;
6813 val* var172 /* : MType */;
6814 val* var_t2 /* var t2: MType */;
6815 short int var173 /* : Bool */;
6816 int cltype174;
6817 int idtype175;
6818 static val* varonce176;
6819 val* var177 /* : String */;
6820 char* var178 /* : NativeString */;
6821 long var179 /* : Int */;
6822 val* var180 /* : String */;
6823 val* var181 /* : Array[Object] */;
6824 long var182 /* : Int */;
6825 val* var183 /* : NativeArray[Object] */;
6826 val* var184 /* : String */;
6827 val* var185 /* : MType */;
6828 short int var186 /* : Bool */;
6829 short int var187 /* : Bool */;
6830 short int var_incompatible /* var incompatible: Bool */;
6831 val* var188 /* : String */;
6832 static val* varonce189;
6833 val* var190 /* : String */;
6834 char* var191 /* : NativeString */;
6835 long var192 /* : Int */;
6836 val* var193 /* : String */;
6837 short int var194 /* : Bool */;
6838 val* var_primitive /* var primitive: nullable Object */;
6839 short int var195 /* : Bool */;
6840 val* var196 /* : String */;
6841 static val* varonce197;
6842 val* var198 /* : String */;
6843 char* var199 /* : NativeString */;
6844 long var200 /* : Int */;
6845 val* var201 /* : String */;
6846 short int var202 /* : Bool */;
6847 short int var203 /* : Bool */;
6848 short int var204 /* : Bool */;
6849 static val* varonce205;
6850 val* var206 /* : String */;
6851 char* var207 /* : NativeString */;
6852 long var208 /* : Int */;
6853 val* var209 /* : String */;
6854 static val* varonce210;
6855 val* var211 /* : String */;
6856 char* var212 /* : NativeString */;
6857 long var213 /* : Int */;
6858 val* var214 /* : String */;
6859 val* var215 /* : Array[Object] */;
6860 long var216 /* : Int */;
6861 val* var217 /* : NativeArray[Object] */;
6862 val* var218 /* : String */;
6863 short int var219 /* : Bool */;
6864 val* var220 /* : String */;
6865 static val* varonce221;
6866 val* var222 /* : String */;
6867 char* var223 /* : NativeString */;
6868 long var224 /* : Int */;
6869 val* var225 /* : String */;
6870 short int var226 /* : Bool */;
6871 short int var227 /* : Bool */;
6872 static val* varonce228;
6873 val* var229 /* : String */;
6874 char* var230 /* : NativeString */;
6875 long var231 /* : Int */;
6876 val* var232 /* : String */;
6877 static val* varonce233;
6878 val* var234 /* : String */;
6879 char* var235 /* : NativeString */;
6880 long var236 /* : Int */;
6881 val* var237 /* : String */;
6882 val* var238 /* : Array[Object] */;
6883 long var239 /* : Int */;
6884 val* var240 /* : NativeArray[Object] */;
6885 val* var241 /* : String */;
6886 short int var242 /* : Bool */;
6887 val* var243 /* : null */;
6888 static val* varonce244;
6889 val* var245 /* : String */;
6890 char* var246 /* : NativeString */;
6891 long var247 /* : Int */;
6892 val* var248 /* : String */;
6893 static val* varonce249;
6894 val* var250 /* : String */;
6895 char* var251 /* : NativeString */;
6896 long var252 /* : Int */;
6897 val* var253 /* : String */;
6898 static val* varonce254;
6899 val* var255 /* : String */;
6900 char* var256 /* : NativeString */;
6901 long var257 /* : Int */;
6902 val* var258 /* : String */;
6903 static val* varonce259;
6904 val* var260 /* : String */;
6905 char* var261 /* : NativeString */;
6906 long var262 /* : Int */;
6907 val* var263 /* : String */;
6908 static val* varonce264;
6909 val* var265 /* : String */;
6910 char* var266 /* : NativeString */;
6911 long var267 /* : Int */;
6912 val* var268 /* : String */;
6913 val* var269 /* : Array[Object] */;
6914 long var270 /* : Int */;
6915 val* var271 /* : NativeArray[Object] */;
6916 val* var272 /* : String */;
6917 static val* varonce273;
6918 val* var274 /* : String */;
6919 char* var275 /* : NativeString */;
6920 long var276 /* : Int */;
6921 val* var277 /* : String */;
6922 static val* varonce278;
6923 val* var279 /* : String */;
6924 char* var280 /* : NativeString */;
6925 long var281 /* : Int */;
6926 val* var282 /* : String */;
6927 static val* varonce283;
6928 val* var284 /* : String */;
6929 char* var285 /* : NativeString */;
6930 long var286 /* : Int */;
6931 val* var287 /* : String */;
6932 val* var288 /* : Array[Object] */;
6933 long var289 /* : Int */;
6934 val* var290 /* : NativeArray[Object] */;
6935 val* var291 /* : String */;
6936 val* var292 /* : null */;
6937 short int var293 /* : Bool */;
6938 static val* varonce294;
6939 val* var295 /* : String */;
6940 char* var296 /* : NativeString */;
6941 long var297 /* : Int */;
6942 val* var298 /* : String */;
6943 val* var299 /* : String */;
6944 static val* varonce300;
6945 val* var301 /* : String */;
6946 char* var302 /* : NativeString */;
6947 long var303 /* : Int */;
6948 val* var304 /* : String */;
6949 static val* varonce305;
6950 val* var306 /* : String */;
6951 char* var307 /* : NativeString */;
6952 long var308 /* : Int */;
6953 val* var309 /* : String */;
6954 val* var310 /* : String */;
6955 static val* varonce311;
6956 val* var312 /* : String */;
6957 char* var313 /* : NativeString */;
6958 long var314 /* : Int */;
6959 val* var315 /* : String */;
6960 static val* varonce316;
6961 val* var317 /* : String */;
6962 char* var318 /* : NativeString */;
6963 long var319 /* : Int */;
6964 val* var320 /* : String */;
6965 val* var321 /* : Array[Object] */;
6966 long var322 /* : Int */;
6967 val* var323 /* : NativeArray[Object] */;
6968 val* var324 /* : String */;
6969 short int var325 /* : Bool */;
6970 short int var326 /* : Bool */;
6971 short int var_327 /* var : Bool */;
6972 short int var328 /* : Bool */;
6973 static val* varonce329;
6974 val* var330 /* : String */;
6975 char* var331 /* : NativeString */;
6976 long var332 /* : Int */;
6977 val* var333 /* : String */;
6978 static val* varonce334;
6979 val* var335 /* : String */;
6980 char* var336 /* : NativeString */;
6981 long var337 /* : Int */;
6982 val* var338 /* : String */;
6983 val* var339 /* : Array[Object] */;
6984 long var340 /* : Int */;
6985 val* var341 /* : NativeArray[Object] */;
6986 val* var342 /* : String */;
6987 val* var343 /* : Array[String] */;
6988 val* var_s /* var s: Array[String] */;
6989 val* var344 /* : AbstractCompiler */;
6990 val* var345 /* : HashMap[MClass, Int] */;
6991 val* var346 /* : MapIterator[Object, nullable Object] */;
6992 short int var347 /* : Bool */;
6993 val* var348 /* : Object */;
6994 val* var_t /* var t: MClass */;
6995 val* var349 /* : nullable Object */;
6996 long var_v /* var v: Int */;
6997 long var350 /* : Int */;
6998 static val* varonce351;
6999 val* var352 /* : String */;
7000 char* var353 /* : NativeString */;
7001 long var354 /* : Int */;
7002 val* var355 /* : String */;
7003 static val* varonce356;
7004 val* var357 /* : String */;
7005 char* var358 /* : NativeString */;
7006 long var359 /* : Int */;
7007 val* var360 /* : String */;
7008 static val* varonce361;
7009 val* var362 /* : String */;
7010 char* var363 /* : NativeString */;
7011 long var364 /* : Int */;
7012 val* var365 /* : String */;
7013 val* var366 /* : String */;
7014 static val* varonce367;
7015 val* var368 /* : String */;
7016 char* var369 /* : NativeString */;
7017 long var370 /* : Int */;
7018 val* var371 /* : String */;
7019 static val* varonce372;
7020 val* var373 /* : String */;
7021 char* var374 /* : NativeString */;
7022 long var375 /* : Int */;
7023 val* var376 /* : String */;
7024 val* var377 /* : String */;
7025 static val* varonce378;
7026 val* var379 /* : String */;
7027 char* var380 /* : NativeString */;
7028 long var381 /* : Int */;
7029 val* var382 /* : String */;
7030 static val* varonce383;
7031 val* var384 /* : String */;
7032 char* var385 /* : NativeString */;
7033 long var386 /* : Int */;
7034 val* var387 /* : String */;
7035 val* var388 /* : Array[Object] */;
7036 long var389 /* : Int */;
7037 val* var390 /* : NativeArray[Object] */;
7038 val* var391 /* : Object */;
7039 val* var392 /* : String */;
7040 static val* varonce393;
7041 val* var394 /* : String */;
7042 char* var395 /* : NativeString */;
7043 long var396 /* : Int */;
7044 val* var397 /* : String */;
7045 static val* varonce398;
7046 val* var399 /* : String */;
7047 char* var400 /* : NativeString */;
7048 long var401 /* : Int */;
7049 val* var402 /* : String */;
7050 val* var403 /* : String */;
7051 static val* varonce404;
7052 val* var405 /* : String */;
7053 char* var406 /* : NativeString */;
7054 long var407 /* : Int */;
7055 val* var408 /* : String */;
7056 val* var409 /* : Array[Object] */;
7057 long var410 /* : Int */;
7058 val* var411 /* : NativeArray[Object] */;
7059 val* var412 /* : String */;
7060 static val* varonce413;
7061 val* var414 /* : String */;
7062 char* var415 /* : NativeString */;
7063 long var416 /* : Int */;
7064 val* var417 /* : String */;
7065 static val* varonce418;
7066 val* var419 /* : String */;
7067 char* var420 /* : NativeString */;
7068 long var421 /* : Int */;
7069 val* var422 /* : String */;
7070 static val* varonce423;
7071 val* var424 /* : String */;
7072 char* var425 /* : NativeString */;
7073 long var426 /* : Int */;
7074 val* var427 /* : String */;
7075 val* var428 /* : Array[Object] */;
7076 long var429 /* : Int */;
7077 val* var430 /* : NativeArray[Object] */;
7078 val* var431 /* : String */;
7079 static val* varonce432;
7080 val* var433 /* : String */;
7081 char* var434 /* : NativeString */;
7082 long var435 /* : Int */;
7083 val* var436 /* : String */;
7084 static val* varonce437;
7085 val* var438 /* : String */;
7086 char* var439 /* : NativeString */;
7087 long var440 /* : Int */;
7088 val* var441 /* : String */;
7089 static val* varonce442;
7090 val* var443 /* : String */;
7091 char* var444 /* : NativeString */;
7092 long var445 /* : Int */;
7093 val* var446 /* : String */;
7094 static val* varonce447;
7095 val* var448 /* : String */;
7096 char* var449 /* : NativeString */;
7097 long var450 /* : Int */;
7098 val* var451 /* : String */;
7099 val* var452 /* : String */;
7100 static val* varonce453;
7101 val* var454 /* : String */;
7102 char* var455 /* : NativeString */;
7103 long var456 /* : Int */;
7104 val* var457 /* : String */;
7105 val* var458 /* : Array[Object] */;
7106 long var459 /* : Int */;
7107 val* var460 /* : NativeArray[Object] */;
7108 val* var461 /* : String */;
7109 var_value1 = p0;
7110 var_value2 = p1;
7111 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
7112 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
7113 var_res = var2;
7114 var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7115 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
7116 if (varonce) {
7117 var6 = varonce;
7118 } else {
7119 var7 = "val*";
7120 var8 = 4;
7121 var9 = string__NativeString__to_s_with_length(var7, var8);
7122 var6 = var9;
7123 varonce = var6;
7124 }
7125 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
7126 var_ = var10;
7127 if (var10){
7128 var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7129 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
7130 if (varonce13) {
7131 var14 = varonce13;
7132 } else {
7133 var15 = "val*";
7134 var16 = 4;
7135 var17 = string__NativeString__to_s_with_length(var15, var16);
7136 var14 = var17;
7137 varonce13 = var14;
7138 }
7139 var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
7140 var3 = var18;
7141 } else {
7142 var3 = var_;
7143 }
7144 if (var3){
7145 var_tmp = var_value1;
7146 var_value1 = var_value2;
7147 var_value2 = var_tmp;
7148 } else {
7149 }
7150 var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7151 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
7152 if (varonce21) {
7153 var22 = varonce21;
7154 } else {
7155 var23 = "val*";
7156 var24 = 4;
7157 var25 = string__NativeString__to_s_with_length(var23, var24);
7158 var22 = var25;
7159 varonce21 = var22;
7160 }
7161 var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
7162 if (var26){
7163 var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7164 var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7165 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
7166 if (var29){
7167 if (varonce30) {
7168 var31 = varonce30;
7169 } else {
7170 var32 = " = ";
7171 var33 = 3;
7172 var34 = string__NativeString__to_s_with_length(var32, var33);
7173 var31 = var34;
7174 varonce30 = var31;
7175 }
7176 if (varonce35) {
7177 var36 = varonce35;
7178 } else {
7179 var37 = " == ";
7180 var38 = 4;
7181 var39 = string__NativeString__to_s_with_length(var37, var38);
7182 var36 = var39;
7183 varonce35 = var36;
7184 }
7185 if (varonce40) {
7186 var41 = varonce40;
7187 } else {
7188 var42 = ";";
7189 var43 = 1;
7190 var44 = string__NativeString__to_s_with_length(var42, var43);
7191 var41 = var44;
7192 varonce40 = var41;
7193 }
7194 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
7195 { /* var45 = array_instance Array[Object] */
7196 var46 = 6;
7197 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
7198 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var_res;
7199 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var31;
7200 ((struct instance_array__NativeArray*)var47)->values[2] = (val*) var_value1;
7201 ((struct instance_array__NativeArray*)var47)->values[3] = (val*) var36;
7202 ((struct instance_array__NativeArray*)var47)->values[4] = (val*) var_value2;
7203 ((struct instance_array__NativeArray*)var47)->values[5] = (val*) var41;
7204 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
7205 }
7206 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
7207 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var48) /* add on <self:SeparateCompilerVisitor>*/;
7208 } else {
7209 var49 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7210 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_compiler__MType__ctype]))(var49) /* ctype on <var49:MType>*/;
7211 if (varonce51) {
7212 var52 = varonce51;
7213 } else {
7214 var53 = "val*";
7215 var54 = 4;
7216 var55 = string__NativeString__to_s_with_length(var53, var54);
7217 var52 = var55;
7218 varonce51 = var52;
7219 }
7220 var56 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___33d_61d]))(var50, var52) /* != on <var50:String>*/;
7221 if (var56){
7222 if (varonce57) {
7223 var58 = varonce57;
7224 } else {
7225 var59 = " = 0; /* incompatible types ";
7226 var60 = 28;
7227 var61 = string__NativeString__to_s_with_length(var59, var60);
7228 var58 = var61;
7229 varonce57 = var58;
7230 }
7231 var62 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7232 if (varonce63) {
7233 var64 = varonce63;
7234 } else {
7235 var65 = " vs. ";
7236 var66 = 5;
7237 var67 = string__NativeString__to_s_with_length(var65, var66);
7238 var64 = var67;
7239 varonce63 = var64;
7240 }
7241 var68 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7242 if (varonce69) {
7243 var70 = varonce69;
7244 } else {
7245 var71 = "*/";
7246 var72 = 2;
7247 var73 = string__NativeString__to_s_with_length(var71, var72);
7248 var70 = var73;
7249 varonce69 = var70;
7250 }
7251 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
7252 { /* var74 = array_instance Array[Object] */
7253 var75 = 6;
7254 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
7255 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var_res;
7256 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var58;
7257 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var62;
7258 ((struct instance_array__NativeArray*)var76)->values[3] = (val*) var64;
7259 ((struct instance_array__NativeArray*)var76)->values[4] = (val*) var68;
7260 ((struct instance_array__NativeArray*)var76)->values[5] = (val*) var70;
7261 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
7262 }
7263 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
7264 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var77) /* add on <self:SeparateCompilerVisitor>*/;
7265 } else {
7266 var78 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7267 /* <var78:MType> isa MClassType */
7268 cltype = type_model__MClassType.color;
7269 idtype = type_model__MClassType.id;
7270 if(cltype >= var78->type->table_size) {
7271 var79 = 0;
7272 } else {
7273 var79 = var78->type->type_table[cltype] == idtype;
7274 }
7275 if (!var79) {
7276 var_class_name = var78 == NULL ? "null" : var78->type->name;
7277 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
7278 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1420);
7279 show_backtrace(1);
7280 }
7281 var_mtype1 = var78;
7282 if (varonce80) {
7283 var81 = varonce80;
7284 } else {
7285 var82 = "class_";
7286 var83 = 6;
7287 var84 = string__NativeString__to_s_with_length(var82, var83);
7288 var81 = var84;
7289 varonce80 = var81;
7290 }
7291 var85 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
7292 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
7293 { /* var86 = array_instance Array[Object] */
7294 var87 = 2;
7295 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
7296 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var81;
7297 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var85;
7298 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
7299 }
7300 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
7301 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var89) /* require_declaration on <self:SeparateCompilerVisitor>*/;
7302 if (varonce90) {
7303 var91 = varonce90;
7304 } else {
7305 var92 = " = (";
7306 var93 = 4;
7307 var94 = string__NativeString__to_s_with_length(var92, var93);
7308 var91 = var94;
7309 varonce90 = var91;
7310 }
7311 if (varonce95) {
7312 var96 = varonce95;
7313 } else {
7314 var97 = " != NULL) && (";
7315 var98 = 14;
7316 var99 = string__NativeString__to_s_with_length(var97, var98);
7317 var96 = var99;
7318 varonce95 = var96;
7319 }
7320 if (varonce100) {
7321 var101 = varonce100;
7322 } else {
7323 var102 = "->class == &class_";
7324 var103 = 18;
7325 var104 = string__NativeString__to_s_with_length(var102, var103);
7326 var101 = var104;
7327 varonce100 = var101;
7328 }
7329 var105 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
7330 if (varonce106) {
7331 var107 = varonce106;
7332 } else {
7333 var108 = ");";
7334 var109 = 2;
7335 var110 = string__NativeString__to_s_with_length(var108, var109);
7336 var107 = var110;
7337 varonce106 = var107;
7338 }
7339 var111 = NEW_array__Array(&type_array__Arraykernel__Object);
7340 { /* var111 = array_instance Array[Object] */
7341 var112 = 8;
7342 var113 = NEW_array__NativeArray(var112, &type_array__NativeArraykernel__Object);
7343 ((struct instance_array__NativeArray*)var113)->values[0] = (val*) var_res;
7344 ((struct instance_array__NativeArray*)var113)->values[1] = (val*) var91;
7345 ((struct instance_array__NativeArray*)var113)->values[2] = (val*) var_value2;
7346 ((struct instance_array__NativeArray*)var113)->values[3] = (val*) var96;
7347 ((struct instance_array__NativeArray*)var113)->values[4] = (val*) var_value2;
7348 ((struct instance_array__NativeArray*)var113)->values[5] = (val*) var101;
7349 ((struct instance_array__NativeArray*)var113)->values[6] = (val*) var105;
7350 ((struct instance_array__NativeArray*)var113)->values[7] = (val*) var107;
7351 ((void (*)(val*, val*, long))(var111->class->vft[COLOR_array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
7352 }
7353 var114 = ((val* (*)(val*))(var111->class->vft[COLOR_string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
7354 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var114) /* add on <self:SeparateCompilerVisitor>*/;
7355 if (varonce115) {
7356 var116 = varonce115;
7357 } else {
7358 var117 = "if (";
7359 var118 = 4;
7360 var119 = string__NativeString__to_s_with_length(var117, var118);
7361 var116 = var119;
7362 varonce115 = var116;
7363 }
7364 if (varonce120) {
7365 var121 = varonce120;
7366 } else {
7367 var122 = ") {";
7368 var123 = 3;
7369 var124 = string__NativeString__to_s_with_length(var122, var123);
7370 var121 = var124;
7371 varonce120 = var121;
7372 }
7373 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
7374 { /* var125 = array_instance Array[Object] */
7375 var126 = 3;
7376 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
7377 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var116;
7378 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var_res;
7379 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var121;
7380 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
7381 }
7382 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
7383 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var128) /* add on <self:SeparateCompilerVisitor>*/;
7384 if (varonce129) {
7385 var130 = varonce129;
7386 } else {
7387 var131 = " = (";
7388 var132 = 4;
7389 var133 = string__NativeString__to_s_with_length(var131, var132);
7390 var130 = var133;
7391 varonce129 = var130;
7392 }
7393 var134 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7394 var135 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value2, var134) /* autobox on <self:SeparateCompilerVisitor>*/;
7395 if (varonce136) {
7396 var137 = varonce136;
7397 } else {
7398 var138 = " == ";
7399 var139 = 4;
7400 var140 = string__NativeString__to_s_with_length(var138, var139);
7401 var137 = var140;
7402 varonce136 = var137;
7403 }
7404 if (varonce141) {
7405 var142 = varonce141;
7406 } else {
7407 var143 = ");";
7408 var144 = 2;
7409 var145 = string__NativeString__to_s_with_length(var143, var144);
7410 var142 = var145;
7411 varonce141 = var142;
7412 }
7413 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
7414 { /* var146 = array_instance Array[Object] */
7415 var147 = 6;
7416 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
7417 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var_res;
7418 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var130;
7419 ((struct instance_array__NativeArray*)var148)->values[2] = (val*) var135;
7420 ((struct instance_array__NativeArray*)var148)->values[3] = (val*) var137;
7421 ((struct instance_array__NativeArray*)var148)->values[4] = (val*) var_value1;
7422 ((struct instance_array__NativeArray*)var148)->values[5] = (val*) var142;
7423 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
7424 }
7425 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
7426 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var149) /* add on <self:SeparateCompilerVisitor>*/;
7427 if (varonce150) {
7428 var151 = varonce150;
7429 } else {
7430 var152 = "}";
7431 var153 = 1;
7432 var154 = string__NativeString__to_s_with_length(var152, var153);
7433 var151 = var154;
7434 varonce150 = var151;
7435 }
7436 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var151) /* add on <self:SeparateCompilerVisitor>*/;
7437 }
7438 }
7439 var = var_res;
7440 goto RET_LABEL;
7441 } else {
7442 }
7443 var155 = 1;
7444 var_maybe_null = var155;
7445 var156 = NEW_array__Array(&type_array__Arraystring__String);
7446 ((void (*)(val*))(var156->class->vft[COLOR_array__Array__init]))(var156) /* init on <var156:Array[String]>*/;
7447 var_test = var156;
7448 var157 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value1) /* mcasttype on <var_value1:RuntimeVariable>*/;
7449 var_t1 = var157;
7450 /* <var_t1:MType> isa MNullableType */
7451 cltype159 = type_model__MNullableType.color;
7452 idtype160 = type_model__MNullableType.id;
7453 if(cltype159 >= var_t1->type->table_size) {
7454 var158 = 0;
7455 } else {
7456 var158 = var_t1->type->type_table[cltype159] == idtype160;
7457 }
7458 if (var158){
7459 if (varonce161) {
7460 var162 = varonce161;
7461 } else {
7462 var163 = " != NULL";
7463 var164 = 8;
7464 var165 = string__NativeString__to_s_with_length(var163, var164);
7465 var162 = var165;
7466 varonce161 = var162;
7467 }
7468 var166 = NEW_array__Array(&type_array__Arraykernel__Object);
7469 { /* var166 = array_instance Array[Object] */
7470 var167 = 2;
7471 var168 = NEW_array__NativeArray(var167, &type_array__NativeArraykernel__Object);
7472 ((struct instance_array__NativeArray*)var168)->values[0] = (val*) var_value1;
7473 ((struct instance_array__NativeArray*)var168)->values[1] = (val*) var162;
7474 ((void (*)(val*, val*, long))(var166->class->vft[COLOR_array__Array__with_native]))(var166, var168, var167) /* with_native on <var166:Array[Object]>*/;
7475 }
7476 var169 = ((val* (*)(val*))(var166->class->vft[COLOR_string__Object__to_s]))(var166) /* to_s on <var166:Array[Object]>*/;
7477 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var169) /* add on <var_test:Array[String]>*/;
7478 var170 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:MType(MNullableType)>*/;
7479 var_t1 = var170;
7480 } else {
7481 var171 = 0;
7482 var_maybe_null = var171;
7483 }
7484 var172 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value2) /* mcasttype on <var_value2:RuntimeVariable>*/;
7485 var_t2 = var172;
7486 /* <var_t2:MType> isa MNullableType */
7487 cltype174 = type_model__MNullableType.color;
7488 idtype175 = type_model__MNullableType.id;
7489 if(cltype174 >= var_t2->type->table_size) {
7490 var173 = 0;
7491 } else {
7492 var173 = var_t2->type->type_table[cltype174] == idtype175;
7493 }
7494 if (var173){
7495 if (varonce176) {
7496 var177 = varonce176;
7497 } else {
7498 var178 = " != NULL";
7499 var179 = 8;
7500 var180 = string__NativeString__to_s_with_length(var178, var179);
7501 var177 = var180;
7502 varonce176 = var177;
7503 }
7504 var181 = NEW_array__Array(&type_array__Arraykernel__Object);
7505 { /* var181 = array_instance Array[Object] */
7506 var182 = 2;
7507 var183 = NEW_array__NativeArray(var182, &type_array__NativeArraykernel__Object);
7508 ((struct instance_array__NativeArray*)var183)->values[0] = (val*) var_value2;
7509 ((struct instance_array__NativeArray*)var183)->values[1] = (val*) var177;
7510 ((void (*)(val*, val*, long))(var181->class->vft[COLOR_array__Array__with_native]))(var181, var183, var182) /* with_native on <var181:Array[Object]>*/;
7511 }
7512 var184 = ((val* (*)(val*))(var181->class->vft[COLOR_string__Object__to_s]))(var181) /* to_s on <var181:Array[Object]>*/;
7513 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var184) /* add on <var_test:Array[String]>*/;
7514 var185 = ((val* (*)(val*))(var_t2->class->vft[COLOR_model__MNullableType__mtype]))(var_t2) /* mtype on <var_t2:MType(MNullableType)>*/;
7515 var_t2 = var185;
7516 } else {
7517 var186 = 0;
7518 var_maybe_null = var186;
7519 }
7520 var187 = 0;
7521 var_incompatible = var187;
7522 var188 = ((val* (*)(val*))(var_t1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t1) /* ctype on <var_t1:MType>*/;
7523 if (varonce189) {
7524 var190 = varonce189;
7525 } else {
7526 var191 = "val*";
7527 var192 = 4;
7528 var193 = string__NativeString__to_s_with_length(var191, var192);
7529 var190 = var193;
7530 varonce189 = var190;
7531 }
7532 var194 = ((short int (*)(val*, val*))(var188->class->vft[COLOR_kernel__Object___33d_61d]))(var188, var190) /* != on <var188:String>*/;
7533 if (var194){
7534 var_primitive = var_t1;
7535 var195 = ((short int (*)(val*, val*))(var_t1->class->vft[COLOR_kernel__Object___61d_61d]))(var_t1, var_t2) /* == on <var_t1:MType>*/;
7536 if (var195){
7537 } else {
7538 var196 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
7539 if (varonce197) {
7540 var198 = varonce197;
7541 } else {
7542 var199 = "val*";
7543 var200 = 4;
7544 var201 = string__NativeString__to_s_with_length(var199, var200);
7545 var198 = var201;
7546 varonce197 = var198;
7547 }
7548 var202 = ((short int (*)(val*, val*))(var196->class->vft[COLOR_kernel__Object___33d_61d]))(var196, var198) /* != on <var196:String>*/;
7549 if (var202){
7550 var203 = 1;
7551 var_incompatible = var203;
7552 } else {
7553 var204 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value2) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
7554 if (var204){
7555 if (varonce205) {
7556 var206 = varonce205;
7557 } else {
7558 var207 = "->class == ";
7559 var208 = 11;
7560 var209 = string__NativeString__to_s_with_length(var207, var208);
7561 var206 = var209;
7562 varonce205 = var206;
7563 }
7564 if (varonce210) {
7565 var211 = varonce210;
7566 } else {
7567 var212 = "->class";
7568 var213 = 7;
7569 var214 = string__NativeString__to_s_with_length(var212, var213);
7570 var211 = var214;
7571 varonce210 = var211;
7572 }
7573 var215 = NEW_array__Array(&type_array__Arraykernel__Object);
7574 { /* var215 = array_instance Array[Object] */
7575 var216 = 4;
7576 var217 = NEW_array__NativeArray(var216, &type_array__NativeArraykernel__Object);
7577 ((struct instance_array__NativeArray*)var217)->values[0] = (val*) var_value1;
7578 ((struct instance_array__NativeArray*)var217)->values[1] = (val*) var206;
7579 ((struct instance_array__NativeArray*)var217)->values[2] = (val*) var_value2;
7580 ((struct instance_array__NativeArray*)var217)->values[3] = (val*) var211;
7581 ((void (*)(val*, val*, long))(var215->class->vft[COLOR_array__Array__with_native]))(var215, var217, var216) /* with_native on <var215:Array[Object]>*/;
7582 }
7583 var218 = ((val* (*)(val*))(var215->class->vft[COLOR_string__Object__to_s]))(var215) /* to_s on <var215:Array[Object]>*/;
7584 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var218) /* add on <var_test:Array[String]>*/;
7585 } else {
7586 var219 = 1;
7587 var_incompatible = var219;
7588 }
7589 }
7590 }
7591 } else {
7592 var220 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
7593 if (varonce221) {
7594 var222 = varonce221;
7595 } else {
7596 var223 = "val*";
7597 var224 = 4;
7598 var225 = string__NativeString__to_s_with_length(var223, var224);
7599 var222 = var225;
7600 varonce221 = var222;
7601 }
7602 var226 = ((short int (*)(val*, val*))(var220->class->vft[COLOR_kernel__Object___33d_61d]))(var220, var222) /* != on <var220:String>*/;
7603 if (var226){
7604 var_primitive = var_t2;
7605 var227 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value1) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
7606 if (var227){
7607 if (varonce228) {
7608 var229 = varonce228;
7609 } else {
7610 var230 = "->class == ";
7611 var231 = 11;
7612 var232 = string__NativeString__to_s_with_length(var230, var231);
7613 var229 = var232;
7614 varonce228 = var229;
7615 }
7616 if (varonce233) {
7617 var234 = varonce233;
7618 } else {
7619 var235 = "->class";
7620 var236 = 7;
7621 var237 = string__NativeString__to_s_with_length(var235, var236);
7622 var234 = var237;
7623 varonce233 = var234;
7624 }
7625 var238 = NEW_array__Array(&type_array__Arraykernel__Object);
7626 { /* var238 = array_instance Array[Object] */
7627 var239 = 4;
7628 var240 = NEW_array__NativeArray(var239, &type_array__NativeArraykernel__Object);
7629 ((struct instance_array__NativeArray*)var240)->values[0] = (val*) var_value1;
7630 ((struct instance_array__NativeArray*)var240)->values[1] = (val*) var229;
7631 ((struct instance_array__NativeArray*)var240)->values[2] = (val*) var_value2;
7632 ((struct instance_array__NativeArray*)var240)->values[3] = (val*) var234;
7633 ((void (*)(val*, val*, long))(var238->class->vft[COLOR_array__Array__with_native]))(var238, var240, var239) /* with_native on <var238:Array[Object]>*/;
7634 }
7635 var241 = ((val* (*)(val*))(var238->class->vft[COLOR_string__Object__to_s]))(var238) /* to_s on <var238:Array[Object]>*/;
7636 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var241) /* add on <var_test:Array[String]>*/;
7637 } else {
7638 var242 = 1;
7639 var_incompatible = var242;
7640 }
7641 } else {
7642 var243 = NULL;
7643 var_primitive = var243;
7644 }
7645 }
7646 if (var_incompatible){
7647 if (var_maybe_null){
7648 if (varonce244) {
7649 var245 = varonce244;
7650 } else {
7651 var246 = " = ";
7652 var247 = 3;
7653 var248 = string__NativeString__to_s_with_length(var246, var247);
7654 var245 = var248;
7655 varonce244 = var245;
7656 }
7657 if (varonce249) {
7658 var250 = varonce249;
7659 } else {
7660 var251 = " == ";
7661 var252 = 4;
7662 var253 = string__NativeString__to_s_with_length(var251, var252);
7663 var250 = var253;
7664 varonce249 = var250;
7665 }
7666 if (varonce254) {
7667 var255 = varonce254;
7668 } else {
7669 var256 = "; /* incompatible types ";
7670 var257 = 24;
7671 var258 = string__NativeString__to_s_with_length(var256, var257);
7672 var255 = var258;
7673 varonce254 = var255;
7674 }
7675 if (varonce259) {
7676 var260 = varonce259;
7677 } else {
7678 var261 = " vs. ";
7679 var262 = 5;
7680 var263 = string__NativeString__to_s_with_length(var261, var262);
7681 var260 = var263;
7682 varonce259 = var260;
7683 }
7684 if (varonce264) {
7685 var265 = varonce264;
7686 } else {
7687 var266 = "; but may be NULL*/";
7688 var267 = 19;
7689 var268 = string__NativeString__to_s_with_length(var266, var267);
7690 var265 = var268;
7691 varonce264 = var265;
7692 }
7693 var269 = NEW_array__Array(&type_array__Arraykernel__Object);
7694 { /* var269 = array_instance Array[Object] */
7695 var270 = 10;
7696 var271 = NEW_array__NativeArray(var270, &type_array__NativeArraykernel__Object);
7697 ((struct instance_array__NativeArray*)var271)->values[0] = (val*) var_res;
7698 ((struct instance_array__NativeArray*)var271)->values[1] = (val*) var245;
7699 ((struct instance_array__NativeArray*)var271)->values[2] = (val*) var_value1;
7700 ((struct instance_array__NativeArray*)var271)->values[3] = (val*) var250;
7701 ((struct instance_array__NativeArray*)var271)->values[4] = (val*) var_value2;
7702 ((struct instance_array__NativeArray*)var271)->values[5] = (val*) var255;
7703 ((struct instance_array__NativeArray*)var271)->values[6] = (val*) var_t1;
7704 ((struct instance_array__NativeArray*)var271)->values[7] = (val*) var260;
7705 ((struct instance_array__NativeArray*)var271)->values[8] = (val*) var_t2;
7706 ((struct instance_array__NativeArray*)var271)->values[9] = (val*) var265;
7707 ((void (*)(val*, val*, long))(var269->class->vft[COLOR_array__Array__with_native]))(var269, var271, var270) /* with_native on <var269:Array[Object]>*/;
7708 }
7709 var272 = ((val* (*)(val*))(var269->class->vft[COLOR_string__Object__to_s]))(var269) /* to_s on <var269:Array[Object]>*/;
7710 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var272) /* add on <self:SeparateCompilerVisitor>*/;
7711 var = var_res;
7712 goto RET_LABEL;
7713 } else {
7714 if (varonce273) {
7715 var274 = varonce273;
7716 } else {
7717 var275 = " = 0; /* incompatible types ";
7718 var276 = 28;
7719 var277 = string__NativeString__to_s_with_length(var275, var276);
7720 var274 = var277;
7721 varonce273 = var274;
7722 }
7723 if (varonce278) {
7724 var279 = varonce278;
7725 } else {
7726 var280 = " vs. ";
7727 var281 = 5;
7728 var282 = string__NativeString__to_s_with_length(var280, var281);
7729 var279 = var282;
7730 varonce278 = var279;
7731 }
7732 if (varonce283) {
7733 var284 = varonce283;
7734 } else {
7735 var285 = "; cannot be NULL */";
7736 var286 = 19;
7737 var287 = string__NativeString__to_s_with_length(var285, var286);
7738 var284 = var287;
7739 varonce283 = var284;
7740 }
7741 var288 = NEW_array__Array(&type_array__Arraykernel__Object);
7742 { /* var288 = array_instance Array[Object] */
7743 var289 = 6;
7744 var290 = NEW_array__NativeArray(var289, &type_array__NativeArraykernel__Object);
7745 ((struct instance_array__NativeArray*)var290)->values[0] = (val*) var_res;
7746 ((struct instance_array__NativeArray*)var290)->values[1] = (val*) var274;
7747 ((struct instance_array__NativeArray*)var290)->values[2] = (val*) var_t1;
7748 ((struct instance_array__NativeArray*)var290)->values[3] = (val*) var279;
7749 ((struct instance_array__NativeArray*)var290)->values[4] = (val*) var_t2;
7750 ((struct instance_array__NativeArray*)var290)->values[5] = (val*) var284;
7751 ((void (*)(val*, val*, long))(var288->class->vft[COLOR_array__Array__with_native]))(var288, var290, var289) /* with_native on <var288:Array[Object]>*/;
7752 }
7753 var291 = ((val* (*)(val*))(var288->class->vft[COLOR_string__Object__to_s]))(var288) /* to_s on <var288:Array[Object]>*/;
7754 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var291) /* add on <self:SeparateCompilerVisitor>*/;
7755 var = var_res;
7756 goto RET_LABEL;
7757 }
7758 } else {
7759 }
7760 var292 = NULL;
7761 if (var_primitive == NULL) {
7762 var293 = 0; /* is null */
7763 } else {
7764 var293 = 1; /* arg is null and recv is not */
7765 }
7766 if (var293){
7767 if (varonce294) {
7768 var295 = varonce294;
7769 } else {
7770 var296 = "((struct instance_";
7771 var297 = 18;
7772 var298 = string__NativeString__to_s_with_length(var296, var297);
7773 var295 = var298;
7774 varonce294 = var295;
7775 }
7776 var299 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_primitive) /* c_name on <var_primitive:nullable Object(MType)>*/;
7777 if (varonce300) {
7778 var301 = varonce300;
7779 } else {
7780 var302 = "*)";
7781 var303 = 2;
7782 var304 = string__NativeString__to_s_with_length(var302, var303);
7783 var301 = var304;
7784 varonce300 = var301;
7785 }
7786 if (varonce305) {
7787 var306 = varonce305;
7788 } else {
7789 var307 = ")->value == ((struct instance_";
7790 var308 = 30;
7791 var309 = string__NativeString__to_s_with_length(var307, var308);
7792 var306 = var309;
7793 varonce305 = var306;
7794 }
7795 var310 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_primitive) /* c_name on <var_primitive:nullable Object(MType)>*/;
7796 if (varonce311) {
7797 var312 = varonce311;
7798 } else {
7799 var313 = "*)";
7800 var314 = 2;
7801 var315 = string__NativeString__to_s_with_length(var313, var314);
7802 var312 = var315;
7803 varonce311 = var312;
7804 }
7805 if (varonce316) {
7806 var317 = varonce316;
7807 } else {
7808 var318 = ")->value";
7809 var319 = 8;
7810 var320 = string__NativeString__to_s_with_length(var318, var319);
7811 var317 = var320;
7812 varonce316 = var317;
7813 }
7814 var321 = NEW_array__Array(&type_array__Arraykernel__Object);
7815 { /* var321 = array_instance Array[Object] */
7816 var322 = 9;
7817 var323 = NEW_array__NativeArray(var322, &type_array__NativeArraykernel__Object);
7818 ((struct instance_array__NativeArray*)var323)->values[0] = (val*) var295;
7819 ((struct instance_array__NativeArray*)var323)->values[1] = (val*) var299;
7820 ((struct instance_array__NativeArray*)var323)->values[2] = (val*) var301;
7821 ((struct instance_array__NativeArray*)var323)->values[3] = (val*) var_value1;
7822 ((struct instance_array__NativeArray*)var323)->values[4] = (val*) var306;
7823 ((struct instance_array__NativeArray*)var323)->values[5] = (val*) var310;
7824 ((struct instance_array__NativeArray*)var323)->values[6] = (val*) var312;
7825 ((struct instance_array__NativeArray*)var323)->values[7] = (val*) var_value2;
7826 ((struct instance_array__NativeArray*)var323)->values[8] = (val*) var317;
7827 ((void (*)(val*, val*, long))(var321->class->vft[COLOR_array__Array__with_native]))(var321, var323, var322) /* with_native on <var321:Array[Object]>*/;
7828 }
7829 var324 = ((val* (*)(val*))(var321->class->vft[COLOR_string__Object__to_s]))(var321) /* to_s on <var321:Array[Object]>*/;
7830 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var324) /* add on <var_test:Array[String]>*/;
7831 } else {
7832 var326 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value1) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
7833 var_327 = var326;
7834 if (var326){
7835 var328 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value2) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
7836 var325 = var328;
7837 } else {
7838 var325 = var_327;
7839 }
7840 if (var325){
7841 if (varonce329) {
7842 var330 = varonce329;
7843 } else {
7844 var331 = "->class == ";
7845 var332 = 11;
7846 var333 = string__NativeString__to_s_with_length(var331, var332);
7847 var330 = var333;
7848 varonce329 = var330;
7849 }
7850 if (varonce334) {
7851 var335 = varonce334;
7852 } else {
7853 var336 = "->class";
7854 var337 = 7;
7855 var338 = string__NativeString__to_s_with_length(var336, var337);
7856 var335 = var338;
7857 varonce334 = var335;
7858 }
7859 var339 = NEW_array__Array(&type_array__Arraykernel__Object);
7860 { /* var339 = array_instance Array[Object] */
7861 var340 = 4;
7862 var341 = NEW_array__NativeArray(var340, &type_array__NativeArraykernel__Object);
7863 ((struct instance_array__NativeArray*)var341)->values[0] = (val*) var_value1;
7864 ((struct instance_array__NativeArray*)var341)->values[1] = (val*) var330;
7865 ((struct instance_array__NativeArray*)var341)->values[2] = (val*) var_value2;
7866 ((struct instance_array__NativeArray*)var341)->values[3] = (val*) var335;
7867 ((void (*)(val*, val*, long))(var339->class->vft[COLOR_array__Array__with_native]))(var339, var341, var340) /* with_native on <var339:Array[Object]>*/;
7868 }
7869 var342 = ((val* (*)(val*))(var339->class->vft[COLOR_string__Object__to_s]))(var339) /* to_s on <var339:Array[Object]>*/;
7870 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var342) /* add on <var_test:Array[String]>*/;
7871 var343 = NEW_array__Array(&type_array__Arraystring__String);
7872 ((void (*)(val*))(var343->class->vft[COLOR_array__Array__init]))(var343) /* init on <var343:Array[String]>*/;
7873 var_s = var343;
7874 var344 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
7875 var345 = ((val* (*)(val*))(var344->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(var344) /* box_kinds on <var344:AbstractCompiler(SeparateCompiler)>*/;
7876 var346 = ((val* (*)(val*))(var345->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var345) /* iterator on <var345:HashMap[MClass, Int]>*/;
7877 for(;;) {
7878 var347 = ((short int (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var346) /* is_ok on <var346:MapIterator[Object, nullable Object]>*/;
7879 if(!var347) break;
7880 var348 = ((val* (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__key]))(var346) /* key on <var346:MapIterator[Object, nullable Object]>*/;
7881 var_t = var348;
7882 var349 = ((val* (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__item]))(var346) /* item on <var346:MapIterator[Object, nullable Object]>*/;
7883 var350 = ((struct instance_kernel__Int*)var349)->value; /* autounbox from nullable Object to Int */;
7884 var_v = var350;
7885 if (varonce351) {
7886 var352 = varonce351;
7887 } else {
7888 var353 = "(";
7889 var354 = 1;
7890 var355 = string__NativeString__to_s_with_length(var353, var354);
7891 var352 = var355;
7892 varonce351 = var352;
7893 }
7894 if (varonce356) {
7895 var357 = varonce356;
7896 } else {
7897 var358 = "->class->box_kind == ";
7898 var359 = 21;
7899 var360 = string__NativeString__to_s_with_length(var358, var359);
7900 var357 = var360;
7901 varonce356 = var357;
7902 }
7903 if (varonce361) {
7904 var362 = varonce361;
7905 } else {
7906 var363 = " && ((struct instance_";
7907 var364 = 22;
7908 var365 = string__NativeString__to_s_with_length(var363, var364);
7909 var362 = var365;
7910 varonce361 = var362;
7911 }
7912 var366 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_t) /* c_name on <var_t:MClass>*/;
7913 if (varonce367) {
7914 var368 = varonce367;
7915 } else {
7916 var369 = "*)";
7917 var370 = 2;
7918 var371 = string__NativeString__to_s_with_length(var369, var370);
7919 var368 = var371;
7920 varonce367 = var368;
7921 }
7922 if (varonce372) {
7923 var373 = varonce372;
7924 } else {
7925 var374 = ")->value == ((struct instance_";
7926 var375 = 30;
7927 var376 = string__NativeString__to_s_with_length(var374, var375);
7928 var373 = var376;
7929 varonce372 = var373;
7930 }
7931 var377 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_t) /* c_name on <var_t:MClass>*/;
7932 if (varonce378) {
7933 var379 = varonce378;
7934 } else {
7935 var380 = "*)";
7936 var381 = 2;
7937 var382 = string__NativeString__to_s_with_length(var380, var381);
7938 var379 = var382;
7939 varonce378 = var379;
7940 }
7941 if (varonce383) {
7942 var384 = varonce383;
7943 } else {
7944 var385 = ")->value)";
7945 var386 = 9;
7946 var387 = string__NativeString__to_s_with_length(var385, var386);
7947 var384 = var387;
7948 varonce383 = var384;
7949 }
7950 var388 = NEW_array__Array(&type_array__Arraykernel__Object);
7951 { /* var388 = array_instance Array[Object] */
7952 var389 = 13;
7953 var390 = NEW_array__NativeArray(var389, &type_array__NativeArraykernel__Object);
7954 ((struct instance_array__NativeArray*)var390)->values[0] = (val*) var352;
7955 ((struct instance_array__NativeArray*)var390)->values[1] = (val*) var_value1;
7956 ((struct instance_array__NativeArray*)var390)->values[2] = (val*) var357;
7957 var391 = BOX_kernel__Int(var_v); /* autobox from Int to Object */
7958 ((struct instance_array__NativeArray*)var390)->values[3] = (val*) var391;
7959 ((struct instance_array__NativeArray*)var390)->values[4] = (val*) var362;
7960 ((struct instance_array__NativeArray*)var390)->values[5] = (val*) var366;
7961 ((struct instance_array__NativeArray*)var390)->values[6] = (val*) var368;
7962 ((struct instance_array__NativeArray*)var390)->values[7] = (val*) var_value1;
7963 ((struct instance_array__NativeArray*)var390)->values[8] = (val*) var373;
7964 ((struct instance_array__NativeArray*)var390)->values[9] = (val*) var377;
7965 ((struct instance_array__NativeArray*)var390)->values[10] = (val*) var379;
7966 ((struct instance_array__NativeArray*)var390)->values[11] = (val*) var_value2;
7967 ((struct instance_array__NativeArray*)var390)->values[12] = (val*) var384;
7968 ((void (*)(val*, val*, long))(var388->class->vft[COLOR_array__Array__with_native]))(var388, var390, var389) /* with_native on <var388:Array[Object]>*/;
7969 }
7970 var392 = ((val* (*)(val*))(var388->class->vft[COLOR_string__Object__to_s]))(var388) /* to_s on <var388:Array[Object]>*/;
7971 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var392) /* add on <var_s:Array[String]>*/;
7972 CONTINUE_label: (void)0;
7973 ((void (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__next]))(var346) /* next on <var346:MapIterator[Object, nullable Object]>*/;
7974 }
7975 BREAK_label: (void)0;
7976 if (varonce393) {
7977 var394 = varonce393;
7978 } else {
7979 var395 = "(";
7980 var396 = 1;
7981 var397 = string__NativeString__to_s_with_length(var395, var396);
7982 var394 = var397;
7983 varonce393 = var394;
7984 }
7985 if (varonce398) {
7986 var399 = varonce398;
7987 } else {
7988 var400 = " || ";
7989 var401 = 4;
7990 var402 = string__NativeString__to_s_with_length(var400, var401);
7991 var399 = var402;
7992 varonce398 = var399;
7993 }
7994 var403 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__Collection__join]))(var_s, var399) /* join on <var_s:Array[String]>*/;
7995 if (varonce404) {
7996 var405 = varonce404;
7997 } else {
7998 var406 = ")";
7999 var407 = 1;
8000 var408 = string__NativeString__to_s_with_length(var406, var407);
8001 var405 = var408;
8002 varonce404 = var405;
8003 }
8004 var409 = NEW_array__Array(&type_array__Arraykernel__Object);
8005 { /* var409 = array_instance Array[Object] */
8006 var410 = 3;
8007 var411 = NEW_array__NativeArray(var410, &type_array__NativeArraykernel__Object);
8008 ((struct instance_array__NativeArray*)var411)->values[0] = (val*) var394;
8009 ((struct instance_array__NativeArray*)var411)->values[1] = (val*) var403;
8010 ((struct instance_array__NativeArray*)var411)->values[2] = (val*) var405;
8011 ((void (*)(val*, val*, long))(var409->class->vft[COLOR_array__Array__with_native]))(var409, var411, var410) /* with_native on <var409:Array[Object]>*/;
8012 }
8013 var412 = ((val* (*)(val*))(var409->class->vft[COLOR_string__Object__to_s]))(var409) /* to_s on <var409:Array[Object]>*/;
8014 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var412) /* add on <var_test:Array[String]>*/;
8015 } else {
8016 if (varonce413) {
8017 var414 = varonce413;
8018 } else {
8019 var415 = " = ";
8020 var416 = 3;
8021 var417 = string__NativeString__to_s_with_length(var415, var416);
8022 var414 = var417;
8023 varonce413 = var414;
8024 }
8025 if (varonce418) {
8026 var419 = varonce418;
8027 } else {
8028 var420 = " == ";
8029 var421 = 4;
8030 var422 = string__NativeString__to_s_with_length(var420, var421);
8031 var419 = var422;
8032 varonce418 = var419;
8033 }
8034 if (varonce423) {
8035 var424 = varonce423;
8036 } else {
8037 var425 = ";";
8038 var426 = 1;
8039 var427 = string__NativeString__to_s_with_length(var425, var426);
8040 var424 = var427;
8041 varonce423 = var424;
8042 }
8043 var428 = NEW_array__Array(&type_array__Arraykernel__Object);
8044 { /* var428 = array_instance Array[Object] */
8045 var429 = 6;
8046 var430 = NEW_array__NativeArray(var429, &type_array__NativeArraykernel__Object);
8047 ((struct instance_array__NativeArray*)var430)->values[0] = (val*) var_res;
8048 ((struct instance_array__NativeArray*)var430)->values[1] = (val*) var414;
8049 ((struct instance_array__NativeArray*)var430)->values[2] = (val*) var_value1;
8050 ((struct instance_array__NativeArray*)var430)->values[3] = (val*) var419;
8051 ((struct instance_array__NativeArray*)var430)->values[4] = (val*) var_value2;
8052 ((struct instance_array__NativeArray*)var430)->values[5] = (val*) var424;
8053 ((void (*)(val*, val*, long))(var428->class->vft[COLOR_array__Array__with_native]))(var428, var430, var429) /* with_native on <var428:Array[Object]>*/;
8054 }
8055 var431 = ((val* (*)(val*))(var428->class->vft[COLOR_string__Object__to_s]))(var428) /* to_s on <var428:Array[Object]>*/;
8056 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var431) /* add on <self:SeparateCompilerVisitor>*/;
8057 var = var_res;
8058 goto RET_LABEL;
8059 }
8060 }
8061 if (varonce432) {
8062 var433 = varonce432;
8063 } else {
8064 var434 = " = ";
8065 var435 = 3;
8066 var436 = string__NativeString__to_s_with_length(var434, var435);
8067 var433 = var436;
8068 varonce432 = var433;
8069 }
8070 if (varonce437) {
8071 var438 = varonce437;
8072 } else {
8073 var439 = " == ";
8074 var440 = 4;
8075 var441 = string__NativeString__to_s_with_length(var439, var440);
8076 var438 = var441;
8077 varonce437 = var438;
8078 }
8079 if (varonce442) {
8080 var443 = varonce442;
8081 } else {
8082 var444 = " || (";
8083 var445 = 5;
8084 var446 = string__NativeString__to_s_with_length(var444, var445);
8085 var443 = var446;
8086 varonce442 = var443;
8087 }
8088 if (varonce447) {
8089 var448 = varonce447;
8090 } else {
8091 var449 = " && ";
8092 var450 = 4;
8093 var451 = string__NativeString__to_s_with_length(var449, var450);
8094 var448 = var451;
8095 varonce447 = var448;
8096 }
8097 var452 = ((val* (*)(val*, val*))(var_test->class->vft[COLOR_string__Collection__join]))(var_test, var448) /* join on <var_test:Array[String]>*/;
8098 if (varonce453) {
8099 var454 = varonce453;
8100 } else {
8101 var455 = ");";
8102 var456 = 2;
8103 var457 = string__NativeString__to_s_with_length(var455, var456);
8104 var454 = var457;
8105 varonce453 = var454;
8106 }
8107 var458 = NEW_array__Array(&type_array__Arraykernel__Object);
8108 { /* var458 = array_instance Array[Object] */
8109 var459 = 8;
8110 var460 = NEW_array__NativeArray(var459, &type_array__NativeArraykernel__Object);
8111 ((struct instance_array__NativeArray*)var460)->values[0] = (val*) var_res;
8112 ((struct instance_array__NativeArray*)var460)->values[1] = (val*) var433;
8113 ((struct instance_array__NativeArray*)var460)->values[2] = (val*) var_value1;
8114 ((struct instance_array__NativeArray*)var460)->values[3] = (val*) var438;
8115 ((struct instance_array__NativeArray*)var460)->values[4] = (val*) var_value2;
8116 ((struct instance_array__NativeArray*)var460)->values[5] = (val*) var443;
8117 ((struct instance_array__NativeArray*)var460)->values[6] = (val*) var452;
8118 ((struct instance_array__NativeArray*)var460)->values[7] = (val*) var454;
8119 ((void (*)(val*, val*, long))(var458->class->vft[COLOR_array__Array__with_native]))(var458, var460, var459) /* with_native on <var458:Array[Object]>*/;
8120 }
8121 var461 = ((val* (*)(val*))(var458->class->vft[COLOR_string__Object__to_s]))(var458) /* to_s on <var458:Array[Object]>*/;
8122 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var461) /* add on <self:SeparateCompilerVisitor>*/;
8123 var = var_res;
8124 goto RET_LABEL;
8125 RET_LABEL:;
8126 return var;
8127 }
8128 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8129 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
8130 val* var /* : RuntimeVariable */;
8131 val* var1 /* : RuntimeVariable */;
8132 var1 = separate_compiler__SeparateCompilerVisitor__equal_test(self, p0, p1);
8133 var = var1;
8134 RET_LABEL:;
8135 return var;
8136 }
8137 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
8138 short int separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
8139 short int var /* : Bool */;
8140 val* var_value /* var value: RuntimeVariable */;
8141 val* var1 /* : MType */;
8142 val* var_t /* var t: MType */;
8143 short int var2 /* : Bool */;
8144 int cltype;
8145 int idtype;
8146 val* var3 /* : MType */;
8147 short int var4 /* : Bool */;
8148 int cltype5;
8149 int idtype6;
8150 short int var7 /* : Bool */;
8151 short int var8 /* : Bool */;
8152 val* var9 /* : MClass */;
8153 val* var10 /* : MClassKind */;
8154 val* var_k /* var k: MClassKind */;
8155 short int var11 /* : Bool */;
8156 val* var12 /* : MClassKind */;
8157 short int var13 /* : Bool */;
8158 short int var_ /* var : Bool */;
8159 val* var14 /* : String */;
8160 static val* varonce;
8161 val* var15 /* : String */;
8162 char* var16 /* : NativeString */;
8163 long var17 /* : Int */;
8164 val* var18 /* : String */;
8165 short int var19 /* : Bool */;
8166 var_value = p0;
8167 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
8168 var_t = var1;
8169 /* <var_t:MType> isa MNullableType */
8170 cltype = type_model__MNullableType.color;
8171 idtype = type_model__MNullableType.id;
8172 if(cltype >= var_t->type->table_size) {
8173 var2 = 0;
8174 } else {
8175 var2 = var_t->type->type_table[cltype] == idtype;
8176 }
8177 if (var2){
8178 var3 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MNullableType__mtype]))(var_t) /* mtype on <var_t:MType(MNullableType)>*/;
8179 var_t = var3;
8180 } else {
8181 }
8182 /* <var_t:MType> isa MClassType */
8183 cltype5 = type_model__MClassType.color;
8184 idtype6 = type_model__MClassType.id;
8185 if(cltype5 >= var_t->type->table_size) {
8186 var4 = 0;
8187 } else {
8188 var4 = var_t->type->type_table[cltype5] == idtype6;
8189 }
8190 var7 = !var4;
8191 if (var7){
8192 var8 = 0;
8193 var = var8;
8194 goto RET_LABEL;
8195 } else {
8196 }
8197 var9 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__mclass]))(var_t) /* mclass on <var_t:MType(MClassType)>*/;
8198 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MClass__kind]))(var9) /* kind on <var9:MClass>*/;
8199 var_k = var10;
8200 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:SeparateCompilerVisitor>*/;
8201 var13 = ((short int (*)(val*, val*))(var_k->class->vft[COLOR_kernel__Object___61d_61d]))(var_k, var12) /* == on <var_k:MClassKind>*/;
8202 var_ = var13;
8203 if (var13){
8204 var11 = var_;
8205 } else {
8206 var14 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType(MClassType)>*/;
8207 if (varonce) {
8208 var15 = varonce;
8209 } else {
8210 var16 = "val*";
8211 var17 = 4;
8212 var18 = string__NativeString__to_s_with_length(var16, var17);
8213 var15 = var18;
8214 varonce = var15;
8215 }
8216 var19 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___33d_61d]))(var14, var15) /* != on <var14:String>*/;
8217 var11 = var19;
8218 }
8219 var = var11;
8220 goto RET_LABEL;
8221 RET_LABEL:;
8222 return var;
8223 }
8224 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: Object, RuntimeVariable): Bool */
8225 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
8226 short int var /* : Bool */;
8227 short int var1 /* : Bool */;
8228 var1 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, p0);
8229 var = var1;
8230 RET_LABEL:;
8231 return var;
8232 }
8233 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
8234 short int separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
8235 short int var /* : Bool */;
8236 val* var_value /* var value: RuntimeVariable */;
8237 val* var1 /* : MType */;
8238 val* var_t /* var t: MType */;
8239 short int var2 /* : Bool */;
8240 short int var3 /* : Bool */;
8241 int cltype;
8242 int idtype;
8243 short int var_ /* var : Bool */;
8244 short int var4 /* : Bool */;
8245 int cltype5;
8246 int idtype6;
8247 var_value = p0;
8248 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
8249 var_t = var1;
8250 /* <var_t:MType> isa MNullableType */
8251 cltype = type_model__MNullableType.color;
8252 idtype = type_model__MNullableType.id;
8253 if(cltype >= var_t->type->table_size) {
8254 var3 = 0;
8255 } else {
8256 var3 = var_t->type->type_table[cltype] == idtype;
8257 }
8258 var_ = var3;
8259 if (var3){
8260 var2 = var_;
8261 } else {
8262 /* <var_t:MType> isa MNullType */
8263 cltype5 = type_model__MNullType.color;
8264 idtype6 = type_model__MNullType.id;
8265 if(cltype5 >= var_t->type->table_size) {
8266 var4 = 0;
8267 } else {
8268 var4 = var_t->type->type_table[cltype5] == idtype6;
8269 }
8270 var2 = var4;
8271 }
8272 var = var2;
8273 goto RET_LABEL;
8274 RET_LABEL:;
8275 return var;
8276 }
8277 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: Object, RuntimeVariable): Bool */
8278 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
8279 short int var /* : Bool */;
8280 short int var1 /* : Bool */;
8281 var1 = separate_compiler__SeparateCompilerVisitor__maybe_null(self, p0);
8282 var = var1;
8283 RET_LABEL:;
8284 return var;
8285 }
8286 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: SeparateCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
8287 val* separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
8288 val* var /* : RuntimeVariable */;
8289 val* var_array /* var array: Array[RuntimeVariable] */;
8290 val* var_elttype /* var elttype: MType */;
8291 static val* varonce;
8292 val* var1 /* : String */;
8293 char* var2 /* : NativeString */;
8294 long var3 /* : Int */;
8295 val* var4 /* : String */;
8296 val* var5 /* : MClass */;
8297 val* var_nclass /* var nclass: MClass */;
8298 static val* varonce6;
8299 val* var7 /* : String */;
8300 char* var8 /* : NativeString */;
8301 long var9 /* : Int */;
8302 val* var10 /* : String */;
8303 val* var11 /* : MClass */;
8304 val* var_arrayclass /* var arrayclass: MClass */;
8305 val* var12 /* : Array[MType] */;
8306 long var13 /* : Int */;
8307 val* var14 /* : NativeArray[MType] */;
8308 val* var15 /* : MClassType */;
8309 val* var_arraytype /* var arraytype: MClassType */;
8310 val* var16 /* : RuntimeVariable */;
8311 val* var_res /* var res: RuntimeVariable */;
8312 static val* varonce17;
8313 val* var18 /* : String */;
8314 char* var19 /* : NativeString */;
8315 long var20 /* : Int */;
8316 val* var21 /* : String */;
8317 static val* varonce22;
8318 val* var23 /* : String */;
8319 char* var24 /* : NativeString */;
8320 long var25 /* : Int */;
8321 val* var26 /* : String */;
8322 static val* varonce27;
8323 val* var28 /* : String */;
8324 char* var29 /* : NativeString */;
8325 long var30 /* : Int */;
8326 val* var31 /* : String */;
8327 val* var32 /* : Array[Object] */;
8328 long var33 /* : Int */;
8329 val* var34 /* : NativeArray[Object] */;
8330 val* var35 /* : String */;
8331 long var36 /* : Int */;
8332 val* var37 /* : RuntimeVariable */;
8333 val* var_length /* var length: RuntimeVariable */;
8334 val* var38 /* : RuntimeVariable */;
8335 val* var_nat /* var nat: RuntimeVariable */;
8336 val* var39 /* : Range[Int] */;
8337 long var40 /* : Int */;
8338 long var41 /* : Int */;
8339 val* var42 /* : Discrete */;
8340 val* var43 /* : Discrete */;
8341 val* var44 /* : Iterator[nullable Object] */;
8342 short int var45 /* : Bool */;
8343 val* var46 /* : nullable Object */;
8344 long var_i /* var i: Int */;
8345 long var47 /* : Int */;
8346 val* var48 /* : nullable Object */;
8347 val* var49 /* : MClassType */;
8348 val* var50 /* : RuntimeVariable */;
8349 val* var_r /* var r: RuntimeVariable */;
8350 static val* varonce51;
8351 val* var52 /* : String */;
8352 char* var53 /* : NativeString */;
8353 long var54 /* : Int */;
8354 val* var55 /* : String */;
8355 val* var56 /* : String */;
8356 static val* varonce57;
8357 val* var58 /* : String */;
8358 char* var59 /* : NativeString */;
8359 long var60 /* : Int */;
8360 val* var61 /* : String */;
8361 static val* varonce62;
8362 val* var63 /* : String */;
8363 char* var64 /* : NativeString */;
8364 long var65 /* : Int */;
8365 val* var66 /* : String */;
8366 static val* varonce67;
8367 val* var68 /* : String */;
8368 char* var69 /* : NativeString */;
8369 long var70 /* : Int */;
8370 val* var71 /* : String */;
8371 static val* varonce72;
8372 val* var73 /* : String */;
8373 char* var74 /* : NativeString */;
8374 long var75 /* : Int */;
8375 val* var76 /* : String */;
8376 val* var77 /* : Array[Object] */;
8377 long var78 /* : Int */;
8378 val* var79 /* : NativeArray[Object] */;
8379 val* var80 /* : Object */;
8380 val* var81 /* : String */;
8381 static val* varonce82;
8382 val* var83 /* : String */;
8383 char* var84 /* : NativeString */;
8384 long var85 /* : Int */;
8385 val* var86 /* : String */;
8386 val* var87 /* : MClassDef */;
8387 val* var88 /* : MClassType */;
8388 val* var89 /* : MMethod */;
8389 val* var90 /* : Array[RuntimeVariable] */;
8390 long var91 /* : Int */;
8391 val* var92 /* : NativeArray[RuntimeVariable] */;
8392 val* var93 /* : nullable RuntimeVariable */;
8393 static val* varonce94;
8394 val* var95 /* : String */;
8395 char* var96 /* : NativeString */;
8396 long var97 /* : Int */;
8397 val* var98 /* : String */;
8398 var_array = p0;
8399 var_elttype = p1;
8400 if (varonce) {
8401 var1 = varonce;
8402 } else {
8403 var2 = "NativeArray";
8404 var3 = 11;
8405 var4 = string__NativeString__to_s_with_length(var2, var3);
8406 var1 = var4;
8407 varonce = var1;
8408 }
8409 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:SeparateCompilerVisitor>*/;
8410 var_nclass = var5;
8411 if (varonce6) {
8412 var7 = varonce6;
8413 } else {
8414 var8 = "Array";
8415 var9 = 5;
8416 var10 = string__NativeString__to_s_with_length(var8, var9);
8417 var7 = var10;
8418 varonce6 = var7;
8419 }
8420 var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var7) /* get_class on <self:SeparateCompilerVisitor>*/;
8421 var_arrayclass = var11;
8422 var12 = NEW_array__Array(&type_array__Arraymodel__MType);
8423 { /* var12 = array_instance Array[MType] */
8424 var13 = 1;
8425 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraymodel__MType);
8426 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var_elttype;
8427 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[MType]>*/;
8428 }
8429 var15 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var12) /* get_mtype on <var_arrayclass:MClass>*/;
8430 var_arraytype = var15;
8431 var16 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_arraytype) /* init_instance on <self:SeparateCompilerVisitor>*/;
8432 var_res = var16;
8433 if (varonce17) {
8434 var18 = varonce17;
8435 } else {
8436 var19 = "{ /* ";
8437 var20 = 5;
8438 var21 = string__NativeString__to_s_with_length(var19, var20);
8439 var18 = var21;
8440 varonce17 = var18;
8441 }
8442 if (varonce22) {
8443 var23 = varonce22;
8444 } else {
8445 var24 = " = array_instance Array[";
8446 var25 = 24;
8447 var26 = string__NativeString__to_s_with_length(var24, var25);
8448 var23 = var26;
8449 varonce22 = var23;
8450 }
8451 if (varonce27) {
8452 var28 = varonce27;
8453 } else {
8454 var29 = "] */";
8455 var30 = 4;
8456 var31 = string__NativeString__to_s_with_length(var29, var30);
8457 var28 = var31;
8458 varonce27 = var28;
8459 }
8460 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
8461 { /* var32 = array_instance Array[Object] */
8462 var33 = 5;
8463 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
8464 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var18;
8465 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_res;
8466 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
8467 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_elttype;
8468 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
8469 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
8470 }
8471 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
8472 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var35) /* add on <self:SeparateCompilerVisitor>*/;
8473 var36 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
8474 var37 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance]))(self, var36) /* int_instance on <self:SeparateCompilerVisitor>*/;
8475 var_length = var37;
8476 var38 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__native_array_instance]))(self, var_elttype, var_length) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
8477 var_nat = var38;
8478 var39 = NEW_range__Range(&type_range__Rangekernel__Int);
8479 var40 = 0;
8480 var41 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
8481 var42 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
8482 var43 = BOX_kernel__Int(var41); /* autobox from Int to Discrete */
8483 ((void (*)(val*, val*, val*))(var39->class->vft[COLOR_range__Range__without_last]))(var39, var42, var43) /* without_last on <var39:Range[Int]>*/;
8484 var44 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Range[Int]>*/;
8485 for(;;) {
8486 var45 = ((short int (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var44) /* is_ok on <var44:Iterator[nullable Object]>*/;
8487 if(!var45) break;
8488 var46 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__item]))(var44) /* item on <var44:Iterator[nullable Object]>*/;
8489 var47 = ((struct instance_kernel__Int*)var46)->value; /* autounbox from nullable Object to Int */;
8490 var_i = var47;
8491 var48 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[RuntimeVariable]>*/;
8492 var49 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
8493 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var48, var49) /* autobox on <self:SeparateCompilerVisitor>*/;
8494 var_r = var50;
8495 if (varonce51) {
8496 var52 = varonce51;
8497 } else {
8498 var53 = "((struct instance_";
8499 var54 = 18;
8500 var55 = string__NativeString__to_s_with_length(var53, var54);
8501 var52 = var55;
8502 varonce51 = var52;
8503 }
8504 var56 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
8505 if (varonce57) {
8506 var58 = varonce57;
8507 } else {
8508 var59 = "*)";
8509 var60 = 2;
8510 var61 = string__NativeString__to_s_with_length(var59, var60);
8511 var58 = var61;
8512 varonce57 = var58;
8513 }
8514 if (varonce62) {
8515 var63 = varonce62;
8516 } else {
8517 var64 = ")->values[";
8518 var65 = 10;
8519 var66 = string__NativeString__to_s_with_length(var64, var65);
8520 var63 = var66;
8521 varonce62 = var63;
8522 }
8523 if (varonce67) {
8524 var68 = varonce67;
8525 } else {
8526 var69 = "] = (val*) ";
8527 var70 = 11;
8528 var71 = string__NativeString__to_s_with_length(var69, var70);
8529 var68 = var71;
8530 varonce67 = var68;
8531 }
8532 if (varonce72) {
8533 var73 = varonce72;
8534 } else {
8535 var74 = ";";
8536 var75 = 1;
8537 var76 = string__NativeString__to_s_with_length(var74, var75);
8538 var73 = var76;
8539 varonce72 = var73;
8540 }
8541 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
8542 { /* var77 = array_instance Array[Object] */
8543 var78 = 9;
8544 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
8545 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var52;
8546 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var56;
8547 ((struct instance_array__NativeArray*)var79)->values[2] = (val*) var58;
8548 ((struct instance_array__NativeArray*)var79)->values[3] = (val*) var_nat;
8549 ((struct instance_array__NativeArray*)var79)->values[4] = (val*) var63;
8550 var80 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
8551 ((struct instance_array__NativeArray*)var79)->values[5] = (val*) var80;
8552 ((struct instance_array__NativeArray*)var79)->values[6] = (val*) var68;
8553 ((struct instance_array__NativeArray*)var79)->values[7] = (val*) var_r;
8554 ((struct instance_array__NativeArray*)var79)->values[8] = (val*) var73;
8555 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
8556 }
8557 var81 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
8558 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var81) /* add on <self:SeparateCompilerVisitor>*/;
8559 CONTINUE_label: (void)0;
8560 ((void (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__next]))(var44) /* next on <var44:Iterator[nullable Object]>*/;
8561 }
8562 BREAK_label: (void)0;
8563 if (varonce82) {
8564 var83 = varonce82;
8565 } else {
8566 var84 = "with_native";
8567 var85 = 11;
8568 var86 = string__NativeString__to_s_with_length(var84, var85);
8569 var83 = var86;
8570 varonce82 = var83;
8571 }
8572 var87 = ((val* (*)(val*))(var_arrayclass->class->vft[COLOR_model__MClass__intro]))(var_arrayclass) /* intro on <var_arrayclass:MClass>*/;
8573 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MClassDef__bound_mtype]))(var87) /* bound_mtype on <var87:MClassDef>*/;
8574 var89 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(self, var83, var88) /* get_property on <self:SeparateCompilerVisitor>*/;
8575 var90 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
8576 { /* var90 = array_instance Array[RuntimeVariable] */
8577 var91 = 3;
8578 var92 = NEW_array__NativeArray(var91, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
8579 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_res;
8580 ((struct instance_array__NativeArray*)var92)->values[1] = (val*) var_nat;
8581 ((struct instance_array__NativeArray*)var92)->values[2] = (val*) var_length;
8582 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[RuntimeVariable]>*/;
8583 }
8584 var93 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var89, var90) /* send on <self:SeparateCompilerVisitor>*/;
8585 var93;
8586 if (varonce94) {
8587 var95 = varonce94;
8588 } else {
8589 var96 = "}";
8590 var97 = 1;
8591 var98 = string__NativeString__to_s_with_length(var96, var97);
8592 var95 = var98;
8593 varonce94 = var95;
8594 }
8595 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var95) /* add on <self:SeparateCompilerVisitor>*/;
8596 var = var_res;
8597 goto RET_LABEL;
8598 RET_LABEL:;
8599 return var;
8600 }
8601 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
8602 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
8603 val* var /* : RuntimeVariable */;
8604 val* var1 /* : RuntimeVariable */;
8605 var1 = separate_compiler__SeparateCompilerVisitor__array_instance(self, p0, p1);
8606 var = var1;
8607 RET_LABEL:;
8608 return var;
8609 }
8610 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: SeparateCompilerVisitor, MType, RuntimeVariable): RuntimeVariable */
8611 val* separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
8612 val* var /* : RuntimeVariable */;
8613 val* var_elttype /* var elttype: MType */;
8614 val* var_length /* var length: RuntimeVariable */;
8615 static val* varonce;
8616 val* var1 /* : String */;
8617 char* var2 /* : NativeString */;
8618 long var3 /* : Int */;
8619 val* var4 /* : String */;
8620 val* var5 /* : MClass */;
8621 val* var6 /* : Array[MType] */;
8622 long var7 /* : Int */;
8623 val* var8 /* : NativeArray[MType] */;
8624 val* var9 /* : MClassType */;
8625 val* var_mtype /* var mtype: MClassType */;
8626 static val* varonce10;
8627 val* var11 /* : String */;
8628 char* var12 /* : NativeString */;
8629 long var13 /* : Int */;
8630 val* var14 /* : String */;
8631 val* var15 /* : MClass */;
8632 val* var16 /* : String */;
8633 val* var17 /* : Array[Object] */;
8634 long var18 /* : Int */;
8635 val* var19 /* : NativeArray[Object] */;
8636 val* var20 /* : String */;
8637 short int var21 /* : Bool */;
8638 int cltype;
8639 int idtype;
8640 val* var22 /* : AbstractCompiler */;
8641 val* var_compiler /* var compiler: SeparateCompiler */;
8642 short int var23 /* : Bool */;
8643 val* var24 /* : nullable Frame */;
8644 val* var25 /* : MPropDef */;
8645 val* var26 /* : MClassDef */;
8646 val* var27 /* : nullable Frame */;
8647 val* var28 /* : Array[RuntimeVariable] */;
8648 val* var29 /* : nullable Object */;
8649 val* var_recv /* var recv: RuntimeVariable */;
8650 val* var30 /* : String */;
8651 val* var_recv_type_info /* var recv_type_info: String */;
8652 val* var31 /* : String */;
8653 short int var32 /* : Bool */;
8654 val* var33 /* : ModelBuilder */;
8655 val* var34 /* : ToolContext */;
8656 val* var35 /* : OptionBool */;
8657 val* var36 /* : nullable Object */;
8658 short int var37 /* : Bool */;
8659 short int var_ /* var : Bool */;
8660 val* var38 /* : ModelBuilder */;
8661 val* var39 /* : ToolContext */;
8662 val* var40 /* : OptionBool */;
8663 val* var41 /* : nullable Object */;
8664 short int var42 /* : Bool */;
8665 static val* varonce43;
8666 val* var44 /* : String */;
8667 char* var45 /* : NativeString */;
8668 long var46 /* : Int */;
8669 val* var47 /* : String */;
8670 val* var48 /* : MClass */;
8671 val* var49 /* : String */;
8672 static val* varonce50;
8673 val* var51 /* : String */;
8674 char* var52 /* : NativeString */;
8675 long var53 /* : Int */;
8676 val* var54 /* : String */;
8677 static val* varonce55;
8678 val* var56 /* : String */;
8679 char* var57 /* : NativeString */;
8680 long var58 /* : Int */;
8681 val* var59 /* : String */;
8682 static val* varonce60;
8683 val* var61 /* : String */;
8684 char* var62 /* : NativeString */;
8685 long var63 /* : Int */;
8686 val* var64 /* : String */;
8687 static val* varonce65;
8688 val* var66 /* : String */;
8689 char* var67 /* : NativeString */;
8690 long var68 /* : Int */;
8691 val* var69 /* : String */;
8692 val* var70 /* : String */;
8693 static val* varonce71;
8694 val* var72 /* : String */;
8695 char* var73 /* : NativeString */;
8696 long var74 /* : Int */;
8697 val* var75 /* : String */;
8698 val* var76 /* : Array[Object] */;
8699 long var77 /* : Int */;
8700 val* var78 /* : NativeArray[Object] */;
8701 val* var79 /* : String */;
8702 val* var80 /* : RuntimeVariable */;
8703 static val* varonce81;
8704 val* var82 /* : String */;
8705 char* var83 /* : NativeString */;
8706 long var84 /* : Int */;
8707 val* var85 /* : String */;
8708 val* var86 /* : MClass */;
8709 val* var87 /* : String */;
8710 static val* varonce88;
8711 val* var89 /* : String */;
8712 char* var90 /* : NativeString */;
8713 long var91 /* : Int */;
8714 val* var92 /* : String */;
8715 static val* varonce93;
8716 val* var94 /* : String */;
8717 char* var95 /* : NativeString */;
8718 long var96 /* : Int */;
8719 val* var97 /* : String */;
8720 static val* varonce98;
8721 val* var99 /* : String */;
8722 char* var100 /* : NativeString */;
8723 long var101 /* : Int */;
8724 val* var102 /* : String */;
8725 val* var103 /* : String */;
8726 static val* varonce104;
8727 val* var105 /* : String */;
8728 char* var106 /* : NativeString */;
8729 long var107 /* : Int */;
8730 val* var108 /* : String */;
8731 val* var109 /* : Array[Object] */;
8732 long var110 /* : Int */;
8733 val* var111 /* : NativeArray[Object] */;
8734 val* var112 /* : String */;
8735 val* var113 /* : RuntimeVariable */;
8736 val* var114 /* : Set[MType] */;
8737 static val* varonce115;
8738 val* var116 /* : String */;
8739 char* var117 /* : NativeString */;
8740 long var118 /* : Int */;
8741 val* var119 /* : String */;
8742 val* var120 /* : String */;
8743 val* var121 /* : Array[Object] */;
8744 long var122 /* : Int */;
8745 val* var123 /* : NativeArray[Object] */;
8746 val* var124 /* : String */;
8747 static val* varonce125;
8748 val* var126 /* : String */;
8749 char* var127 /* : NativeString */;
8750 long var128 /* : Int */;
8751 val* var129 /* : String */;
8752 val* var130 /* : MClass */;
8753 val* var131 /* : String */;
8754 static val* varonce132;
8755 val* var133 /* : String */;
8756 char* var134 /* : NativeString */;
8757 long var135 /* : Int */;
8758 val* var136 /* : String */;
8759 static val* varonce137;
8760 val* var138 /* : String */;
8761 char* var139 /* : NativeString */;
8762 long var140 /* : Int */;
8763 val* var141 /* : String */;
8764 val* var142 /* : String */;
8765 static val* varonce143;
8766 val* var144 /* : String */;
8767 char* var145 /* : NativeString */;
8768 long var146 /* : Int */;
8769 val* var147 /* : String */;
8770 val* var148 /* : Array[Object] */;
8771 long var149 /* : Int */;
8772 val* var150 /* : NativeArray[Object] */;
8773 val* var151 /* : String */;
8774 val* var152 /* : RuntimeVariable */;
8775 var_elttype = p0;
8776 var_length = p1;
8777 if (varonce) {
8778 var1 = varonce;
8779 } else {
8780 var2 = "NativeArray";
8781 var3 = 11;
8782 var4 = string__NativeString__to_s_with_length(var2, var3);
8783 var1 = var4;
8784 varonce = var1;
8785 }
8786 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:SeparateCompilerVisitor>*/;
8787 var6 = NEW_array__Array(&type_array__Arraymodel__MType);
8788 { /* var6 = array_instance Array[MType] */
8789 var7 = 1;
8790 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraymodel__MType);
8791 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var_elttype;
8792 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[MType]>*/;
8793 }
8794 var9 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_model__MClass__get_mtype]))(var5, var6) /* get_mtype on <var5:MClass>*/;
8795 var_mtype = var9;
8796 if (varonce10) {
8797 var11 = varonce10;
8798 } else {
8799 var12 = "NEW_";
8800 var13 = 4;
8801 var14 = string__NativeString__to_s_with_length(var12, var13);
8802 var11 = var14;
8803 varonce10 = var11;
8804 }
8805 var15 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
8806 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var15) /* c_name on <var15:MClass>*/;
8807 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
8808 { /* var17 = array_instance Array[Object] */
8809 var18 = 2;
8810 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
8811 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var11;
8812 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var16;
8813 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
8814 }
8815 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
8816 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var20) /* require_declaration on <self:SeparateCompilerVisitor>*/;
8817 /* <var_mtype:MClassType> isa MGenericType */
8818 cltype = type_model__MGenericType.color;
8819 idtype = type_model__MGenericType.id;
8820 if(cltype >= var_mtype->type->table_size) {
8821 var21 = 0;
8822 } else {
8823 var21 = var_mtype->type->type_table[cltype] == idtype;
8824 }
8825 if (!var21) {
8826 fprintf(stderr, "Runtime error: %s", "Assert failed");
8827 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1533);
8828 show_backtrace(1);
8829 }
8830 var22 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
8831 var_compiler = var22;
8832 var23 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType(MGenericType)>*/;
8833 if (var23){
8834 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
8835 if (var24 == NULL) {
8836 fprintf(stderr, "Runtime error: %s", "Reciever is null");
8837 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1536);
8838 show_backtrace(1);
8839 } else {
8840 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var24) /* mpropdef on <var24:nullable Frame>*/;
8841 }
8842 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_model__MPropDef__mclassdef]))(var25) /* mclassdef on <var25:MPropDef>*/;
8843 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var26, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
8844 var27 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
8845 if (var27 == NULL) {
8846 fprintf(stderr, "Runtime error: %s", "Reciever is null");
8847 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1537);
8848 show_backtrace(1);
8849 } else {
8850 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var27) /* arguments on <var27:nullable Frame>*/;
8851 }
8852 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__first]))(var28) /* first on <var28:Array[RuntimeVariable]>*/;
8853 var_recv = var29;
8854 var30 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
8855 var_recv_type_info = var30;
8856 var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
8857 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var31) /* require_declaration on <self:SeparateCompilerVisitor>*/;
8858 var33 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
8859 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var33) /* toolcontext on <var33:ModelBuilder>*/;
8860 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var34) /* opt_phmod_typing on <var34:ToolContext>*/;
8861 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_opts__Option__value]))(var35) /* value on <var35:OptionBool>*/;
8862 var37 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
8863 var_ = var37;
8864 if (var37){
8865 var32 = var_;
8866 } else {
8867 var38 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
8868 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var38) /* toolcontext on <var38:ModelBuilder>*/;
8869 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var39) /* opt_phand_typing on <var39:ToolContext>*/;
8870 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_opts__Option__value]))(var40) /* value on <var40:OptionBool>*/;
8871 var42 = ((struct instance_kernel__Bool*)var41)->value; /* autounbox from nullable Object to Bool */;
8872 var32 = var42;
8873 }
8874 if (var32){
8875 if (varonce43) {
8876 var44 = varonce43;
8877 } else {
8878 var45 = "NEW_";
8879 var46 = 4;
8880 var47 = string__NativeString__to_s_with_length(var45, var46);
8881 var44 = var47;
8882 varonce43 = var44;
8883 }
8884 var48 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
8885 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var48) /* c_name on <var48:MClass>*/;
8886 if (varonce50) {
8887 var51 = varonce50;
8888 } else {
8889 var52 = "(";
8890 var53 = 1;
8891 var54 = string__NativeString__to_s_with_length(var52, var53);
8892 var51 = var54;
8893 varonce50 = var51;
8894 }
8895 if (varonce55) {
8896 var56 = varonce55;
8897 } else {
8898 var57 = ", ";
8899 var58 = 2;
8900 var59 = string__NativeString__to_s_with_length(var57, var58);
8901 var56 = var59;
8902 varonce55 = var56;
8903 }
8904 if (varonce60) {
8905 var61 = varonce60;
8906 } else {
8907 var62 = "->resolution_table->types[HASH(";
8908 var63 = 31;
8909 var64 = string__NativeString__to_s_with_length(var62, var63);
8910 var61 = var64;
8911 varonce60 = var61;
8912 }
8913 if (varonce65) {
8914 var66 = varonce65;
8915 } else {
8916 var67 = "->resolution_table->mask, ";
8917 var68 = 26;
8918 var69 = string__NativeString__to_s_with_length(var67, var68);
8919 var66 = var69;
8920 varonce65 = var66;
8921 }
8922 var70 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
8923 if (varonce71) {
8924 var72 = varonce71;
8925 } else {
8926 var73 = ")])";
8927 var74 = 3;
8928 var75 = string__NativeString__to_s_with_length(var73, var74);
8929 var72 = var75;
8930 varonce71 = var72;
8931 }
8932 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
8933 { /* var76 = array_instance Array[Object] */
8934 var77 = 11;
8935 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
8936 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var44;
8937 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var49;
8938 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var51;
8939 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var_length;
8940 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var56;
8941 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var_recv_type_info;
8942 ((struct instance_array__NativeArray*)var78)->values[6] = (val*) var61;
8943 ((struct instance_array__NativeArray*)var78)->values[7] = (val*) var_recv_type_info;
8944 ((struct instance_array__NativeArray*)var78)->values[8] = (val*) var66;
8945 ((struct instance_array__NativeArray*)var78)->values[9] = (val*) var70;
8946 ((struct instance_array__NativeArray*)var78)->values[10] = (val*) var72;
8947 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
8948 }
8949 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
8950 var80 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var79, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
8951 var = var80;
8952 goto RET_LABEL;
8953 } else {
8954 if (varonce81) {
8955 var82 = varonce81;
8956 } else {
8957 var83 = "NEW_";
8958 var84 = 4;
8959 var85 = string__NativeString__to_s_with_length(var83, var84);
8960 var82 = var85;
8961 varonce81 = var82;
8962 }
8963 var86 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
8964 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var86) /* c_name on <var86:MClass>*/;
8965 if (varonce88) {
8966 var89 = varonce88;
8967 } else {
8968 var90 = "(";
8969 var91 = 1;
8970 var92 = string__NativeString__to_s_with_length(var90, var91);
8971 var89 = var92;
8972 varonce88 = var89;
8973 }
8974 if (varonce93) {
8975 var94 = varonce93;
8976 } else {
8977 var95 = ", ";
8978 var96 = 2;
8979 var97 = string__NativeString__to_s_with_length(var95, var96);
8980 var94 = var97;
8981 varonce93 = var94;
8982 }
8983 if (varonce98) {
8984 var99 = varonce98;
8985 } else {
8986 var100 = "->resolution_table->types[";
8987 var101 = 26;
8988 var102 = string__NativeString__to_s_with_length(var100, var101);
8989 var99 = var102;
8990 varonce98 = var99;
8991 }
8992 var103 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
8993 if (varonce104) {
8994 var105 = varonce104;
8995 } else {
8996 var106 = "])";
8997 var107 = 2;
8998 var108 = string__NativeString__to_s_with_length(var106, var107);
8999 var105 = var108;
9000 varonce104 = var105;
9001 }
9002 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
9003 { /* var109 = array_instance Array[Object] */
9004 var110 = 9;
9005 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
9006 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var82;
9007 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var87;
9008 ((struct instance_array__NativeArray*)var111)->values[2] = (val*) var89;
9009 ((struct instance_array__NativeArray*)var111)->values[3] = (val*) var_length;
9010 ((struct instance_array__NativeArray*)var111)->values[4] = (val*) var94;
9011 ((struct instance_array__NativeArray*)var111)->values[5] = (val*) var_recv_type_info;
9012 ((struct instance_array__NativeArray*)var111)->values[6] = (val*) var99;
9013 ((struct instance_array__NativeArray*)var111)->values[7] = (val*) var103;
9014 ((struct instance_array__NativeArray*)var111)->values[8] = (val*) var105;
9015 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
9016 }
9017 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
9018 var113 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var112, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9019 var = var113;
9020 goto RET_LABEL;
9021 }
9022 } else {
9023 }
9024 var114 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
9025 ((void (*)(val*, val*))(var114->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var114, var_mtype) /* add on <var114:Set[MType]>*/;
9026 if (varonce115) {
9027 var116 = varonce115;
9028 } else {
9029 var117 = "type_";
9030 var118 = 5;
9031 var119 = string__NativeString__to_s_with_length(var117, var118);
9032 var116 = var119;
9033 varonce115 = var116;
9034 }
9035 var120 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType(MGenericType)>*/;
9036 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
9037 { /* var121 = array_instance Array[Object] */
9038 var122 = 2;
9039 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
9040 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var116;
9041 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var120;
9042 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
9043 }
9044 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
9045 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var124) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9046 if (varonce125) {
9047 var126 = varonce125;
9048 } else {
9049 var127 = "NEW_";
9050 var128 = 4;
9051 var129 = string__NativeString__to_s_with_length(var127, var128);
9052 var126 = var129;
9053 varonce125 = var126;
9054 }
9055 var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9056 var131 = ((val* (*)(val*))(var130->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var130) /* c_name on <var130:MClass>*/;
9057 if (varonce132) {
9058 var133 = varonce132;
9059 } else {
9060 var134 = "(";
9061 var135 = 1;
9062 var136 = string__NativeString__to_s_with_length(var134, var135);
9063 var133 = var136;
9064 varonce132 = var133;
9065 }
9066 if (varonce137) {
9067 var138 = varonce137;
9068 } else {
9069 var139 = ", &type_";
9070 var140 = 8;
9071 var141 = string__NativeString__to_s_with_length(var139, var140);
9072 var138 = var141;
9073 varonce137 = var138;
9074 }
9075 var142 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType(MGenericType)>*/;
9076 if (varonce143) {
9077 var144 = varonce143;
9078 } else {
9079 var145 = ")";
9080 var146 = 1;
9081 var147 = string__NativeString__to_s_with_length(var145, var146);
9082 var144 = var147;
9083 varonce143 = var144;
9084 }
9085 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
9086 { /* var148 = array_instance Array[Object] */
9087 var149 = 7;
9088 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
9089 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var126;
9090 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var131;
9091 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
9092 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_length;
9093 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
9094 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var142;
9095 ((struct instance_array__NativeArray*)var150)->values[6] = (val*) var144;
9096 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
9097 }
9098 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
9099 var152 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var151, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9100 var = var152;
9101 goto RET_LABEL;
9102 RET_LABEL:;
9103 return var;
9104 }
9105 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: Object, MType, RuntimeVariable): RuntimeVariable */
9106 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
9107 val* var /* : RuntimeVariable */;
9108 val* var1 /* : RuntimeVariable */;
9109 var1 = separate_compiler__SeparateCompilerVisitor__native_array_instance(self, p0, p1);
9110 var = var1;
9111 RET_LABEL:;
9112 return var;
9113 }
9114 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: SeparateCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
9115 void separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
9116 val* var_pname /* var pname: String */;
9117 val* var_ret_type /* var ret_type: nullable MType */;
9118 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
9119 val* var /* : nullable Object */;
9120 val* var1 /* : MType */;
9121 val* var_elttype /* var elttype: MType */;
9122 static val* varonce;
9123 val* var2 /* : String */;
9124 char* var3 /* : NativeString */;
9125 long var4 /* : Int */;
9126 val* var5 /* : String */;
9127 val* var6 /* : MClass */;
9128 val* var_nclass /* var nclass: MClass */;
9129 val* var7 /* : Array[Object] */;
9130 long var8 /* : Int */;
9131 val* var_ /* var : Array[Object] */;
9132 static val* varonce9;
9133 val* var10 /* : String */;
9134 char* var11 /* : NativeString */;
9135 long var12 /* : Int */;
9136 val* var13 /* : String */;
9137 val* var14 /* : String */;
9138 static val* varonce15;
9139 val* var16 /* : String */;
9140 char* var17 /* : NativeString */;
9141 long var18 /* : Int */;
9142 val* var19 /* : String */;
9143 long var20 /* : Int */;
9144 val* var21 /* : nullable Object */;
9145 static val* varonce22;
9146 val* var23 /* : String */;
9147 char* var24 /* : NativeString */;
9148 long var25 /* : Int */;
9149 val* var26 /* : String */;
9150 val* var27 /* : String */;
9151 val* var_recv /* var recv: String */;
9152 static val* varonce28;
9153 val* var29 /* : String */;
9154 char* var30 /* : NativeString */;
9155 long var31 /* : Int */;
9156 val* var32 /* : String */;
9157 short int var33 /* : Bool */;
9158 static val* varonce34;
9159 val* var35 /* : String */;
9160 char* var36 /* : NativeString */;
9161 long var37 /* : Int */;
9162 val* var38 /* : String */;
9163 long var39 /* : Int */;
9164 val* var40 /* : nullable Object */;
9165 static val* varonce41;
9166 val* var42 /* : String */;
9167 char* var43 /* : NativeString */;
9168 long var44 /* : Int */;
9169 val* var45 /* : String */;
9170 val* var46 /* : Array[Object] */;
9171 long var47 /* : Int */;
9172 val* var48 /* : NativeArray[Object] */;
9173 val* var49 /* : String */;
9174 val* var50 /* : RuntimeVariable */;
9175 static val* varonce51;
9176 val* var52 /* : String */;
9177 char* var53 /* : NativeString */;
9178 long var54 /* : Int */;
9179 val* var55 /* : String */;
9180 short int var56 /* : Bool */;
9181 static val* varonce57;
9182 val* var58 /* : String */;
9183 char* var59 /* : NativeString */;
9184 long var60 /* : Int */;
9185 val* var61 /* : String */;
9186 long var62 /* : Int */;
9187 val* var63 /* : nullable Object */;
9188 static val* varonce64;
9189 val* var65 /* : String */;
9190 char* var66 /* : NativeString */;
9191 long var67 /* : Int */;
9192 val* var68 /* : String */;
9193 long var69 /* : Int */;
9194 val* var70 /* : nullable Object */;
9195 static val* varonce71;
9196 val* var72 /* : String */;
9197 char* var73 /* : NativeString */;
9198 long var74 /* : Int */;
9199 val* var75 /* : String */;
9200 val* var76 /* : Array[Object] */;
9201 long var77 /* : Int */;
9202 val* var78 /* : NativeArray[Object] */;
9203 val* var79 /* : String */;
9204 static val* varonce80;
9205 val* var81 /* : String */;
9206 char* var82 /* : NativeString */;
9207 long var83 /* : Int */;
9208 val* var84 /* : String */;
9209 short int var85 /* : Bool */;
9210 val* var86 /* : Array[Object] */;
9211 long var87 /* : Int */;
9212 val* var_88 /* var : Array[Object] */;
9213 static val* varonce89;
9214 val* var90 /* : String */;
9215 char* var91 /* : NativeString */;
9216 long var92 /* : Int */;
9217 val* var93 /* : String */;
9218 val* var94 /* : String */;
9219 static val* varonce95;
9220 val* var96 /* : String */;
9221 char* var97 /* : NativeString */;
9222 long var98 /* : Int */;
9223 val* var99 /* : String */;
9224 long var100 /* : Int */;
9225 val* var101 /* : nullable Object */;
9226 static val* varonce102;
9227 val* var103 /* : String */;
9228 char* var104 /* : NativeString */;
9229 long var105 /* : Int */;
9230 val* var106 /* : String */;
9231 val* var107 /* : String */;
9232 val* var_recv1 /* var recv1: String */;
9233 static val* varonce108;
9234 val* var109 /* : String */;
9235 char* var110 /* : NativeString */;
9236 long var111 /* : Int */;
9237 val* var112 /* : String */;
9238 static val* varonce113;
9239 val* var114 /* : String */;
9240 char* var115 /* : NativeString */;
9241 long var116 /* : Int */;
9242 val* var117 /* : String */;
9243 static val* varonce118;
9244 val* var119 /* : String */;
9245 char* var120 /* : NativeString */;
9246 long var121 /* : Int */;
9247 val* var122 /* : String */;
9248 long var123 /* : Int */;
9249 val* var124 /* : nullable Object */;
9250 static val* varonce125;
9251 val* var126 /* : String */;
9252 char* var127 /* : NativeString */;
9253 long var128 /* : Int */;
9254 val* var129 /* : String */;
9255 val* var130 /* : String */;
9256 static val* varonce131;
9257 val* var132 /* : String */;
9258 char* var133 /* : NativeString */;
9259 long var134 /* : Int */;
9260 val* var135 /* : String */;
9261 val* var136 /* : Array[Object] */;
9262 long var137 /* : Int */;
9263 val* var138 /* : NativeArray[Object] */;
9264 val* var139 /* : String */;
9265 var_pname = p0;
9266 var_ret_type = p1;
9267 var_arguments = p2;
9268 var = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
9269 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var) /* mtype on <var:nullable Object(RuntimeVariable)>*/;
9270 var_elttype = var1;
9271 if (varonce) {
9272 var2 = varonce;
9273 } else {
9274 var3 = "NativeArray";
9275 var4 = 11;
9276 var5 = string__NativeString__to_s_with_length(var3, var4);
9277 var2 = var5;
9278 varonce = var2;
9279 }
9280 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var2) /* get_class on <self:SeparateCompilerVisitor>*/;
9281 var_nclass = var6;
9282 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
9283 var8 = 5;
9284 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
9285 var_ = var7;
9286 if (varonce9) {
9287 var10 = varonce9;
9288 } else {
9289 var11 = "((struct instance_";
9290 var12 = 18;
9291 var13 = string__NativeString__to_s_with_length(var11, var12);
9292 var10 = var13;
9293 varonce9 = var10;
9294 }
9295 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
9296 var14 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
9297 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
9298 if (varonce15) {
9299 var16 = varonce15;
9300 } else {
9301 var17 = "*)";
9302 var18 = 2;
9303 var19 = string__NativeString__to_s_with_length(var17, var18);
9304 var16 = var19;
9305 varonce15 = var16;
9306 }
9307 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
9308 var20 = 0;
9309 var21 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var20) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9310 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on <var_:Array[Object]>*/;
9311 if (varonce22) {
9312 var23 = varonce22;
9313 } else {
9314 var24 = ")->values";
9315 var25 = 9;
9316 var26 = string__NativeString__to_s_with_length(var24, var25);
9317 var23 = var26;
9318 varonce22 = var23;
9319 }
9320 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
9321 var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
9322 var_recv = var27;
9323 if (varonce28) {
9324 var29 = varonce28;
9325 } else {
9326 var30 = "[]";
9327 var31 = 2;
9328 var32 = string__NativeString__to_s_with_length(var30, var31);
9329 var29 = var32;
9330 varonce28 = var29;
9331 }
9332 var33 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var29) /* == on <var_pname:String>*/;
9333 if (var33){
9334 if (varonce34) {
9335 var35 = varonce34;
9336 } else {
9337 var36 = "[";
9338 var37 = 1;
9339 var38 = string__NativeString__to_s_with_length(var36, var37);
9340 var35 = var38;
9341 varonce34 = var35;
9342 }
9343 var39 = 1;
9344 var40 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var39) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9345 if (varonce41) {
9346 var42 = varonce41;
9347 } else {
9348 var43 = "]";
9349 var44 = 1;
9350 var45 = string__NativeString__to_s_with_length(var43, var44);
9351 var42 = var45;
9352 varonce41 = var42;
9353 }
9354 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
9355 { /* var46 = array_instance Array[Object] */
9356 var47 = 4;
9357 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
9358 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_recv;
9359 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var35;
9360 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var40;
9361 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
9362 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
9363 }
9364 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
9365 if (var_ret_type == NULL) {
9366 fprintf(stderr, "Runtime error: %s", "Cast failed");
9367 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1557);
9368 show_backtrace(1);
9369 }
9370 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var49, var_ret_type) /* new_expr on <self:SeparateCompilerVisitor>*/;
9371 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var50) /* ret on <self:SeparateCompilerVisitor>*/;
9372 goto RET_LABEL;
9373 } else {
9374 if (varonce51) {
9375 var52 = varonce51;
9376 } else {
9377 var53 = "[]=";
9378 var54 = 3;
9379 var55 = string__NativeString__to_s_with_length(var53, var54);
9380 var52 = var55;
9381 varonce51 = var52;
9382 }
9383 var56 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var52) /* == on <var_pname:String>*/;
9384 if (var56){
9385 if (varonce57) {
9386 var58 = varonce57;
9387 } else {
9388 var59 = "[";
9389 var60 = 1;
9390 var61 = string__NativeString__to_s_with_length(var59, var60);
9391 var58 = var61;
9392 varonce57 = var58;
9393 }
9394 var62 = 1;
9395 var63 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var62) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9396 if (varonce64) {
9397 var65 = varonce64;
9398 } else {
9399 var66 = "]=";
9400 var67 = 2;
9401 var68 = string__NativeString__to_s_with_length(var66, var67);
9402 var65 = var68;
9403 varonce64 = var65;
9404 }
9405 var69 = 2;
9406 var70 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var69) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9407 if (varonce71) {
9408 var72 = varonce71;
9409 } else {
9410 var73 = ";";
9411 var74 = 1;
9412 var75 = string__NativeString__to_s_with_length(var73, var74);
9413 var72 = var75;
9414 varonce71 = var72;
9415 }
9416 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
9417 { /* var76 = array_instance Array[Object] */
9418 var77 = 6;
9419 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
9420 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_recv;
9421 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var58;
9422 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var63;
9423 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var65;
9424 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
9425 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
9426 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
9427 }
9428 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
9429 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
9430 goto RET_LABEL;
9431 } else {
9432 if (varonce80) {
9433 var81 = varonce80;
9434 } else {
9435 var82 = "copy_to";
9436 var83 = 7;
9437 var84 = string__NativeString__to_s_with_length(var82, var83);
9438 var81 = var84;
9439 varonce80 = var81;
9440 }
9441 var85 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var81) /* == on <var_pname:String>*/;
9442 if (var85){
9443 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
9444 var87 = 5;
9445 ((void (*)(val*, long))(var86->class->vft[COLOR_array__Array__with_capacity]))(var86, var87) /* with_capacity on <var86:Array[Object]>*/;
9446 var_88 = var86;
9447 if (varonce89) {
9448 var90 = varonce89;
9449 } else {
9450 var91 = "((struct instance_";
9451 var92 = 18;
9452 var93 = string__NativeString__to_s_with_length(var91, var92);
9453 var90 = var93;
9454 varonce89 = var90;
9455 }
9456 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var90) /* add on <var_88:Array[Object]>*/;
9457 var94 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
9458 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var94) /* add on <var_88:Array[Object]>*/;
9459 if (varonce95) {
9460 var96 = varonce95;
9461 } else {
9462 var97 = "*)";
9463 var98 = 2;
9464 var99 = string__NativeString__to_s_with_length(var97, var98);
9465 var96 = var99;
9466 varonce95 = var96;
9467 }
9468 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var96) /* add on <var_88:Array[Object]>*/;
9469 var100 = 1;
9470 var101 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var100) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9471 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var101) /* add on <var_88:Array[Object]>*/;
9472 if (varonce102) {
9473 var103 = varonce102;
9474 } else {
9475 var104 = ")->values";
9476 var105 = 9;
9477 var106 = string__NativeString__to_s_with_length(var104, var105);
9478 var103 = var106;
9479 varonce102 = var103;
9480 }
9481 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var103) /* add on <var_88:Array[Object]>*/;
9482 var107 = ((val* (*)(val*))(var_88->class->vft[COLOR_string__Object__to_s]))(var_88) /* to_s on <var_88:Array[Object]>*/;
9483 var_recv1 = var107;
9484 if (varonce108) {
9485 var109 = varonce108;
9486 } else {
9487 var110 = "memcpy(";
9488 var111 = 7;
9489 var112 = string__NativeString__to_s_with_length(var110, var111);
9490 var109 = var112;
9491 varonce108 = var109;
9492 }
9493 if (varonce113) {
9494 var114 = varonce113;
9495 } else {
9496 var115 = ", ";
9497 var116 = 2;
9498 var117 = string__NativeString__to_s_with_length(var115, var116);
9499 var114 = var117;
9500 varonce113 = var114;
9501 }
9502 if (varonce118) {
9503 var119 = varonce118;
9504 } else {
9505 var120 = ", ";
9506 var121 = 2;
9507 var122 = string__NativeString__to_s_with_length(var120, var121);
9508 var119 = var122;
9509 varonce118 = var119;
9510 }
9511 var123 = 2;
9512 var124 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var123) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9513 if (varonce125) {
9514 var126 = varonce125;
9515 } else {
9516 var127 = "*sizeof(";
9517 var128 = 8;
9518 var129 = string__NativeString__to_s_with_length(var127, var128);
9519 var126 = var129;
9520 varonce125 = var126;
9521 }
9522 var130 = ((val* (*)(val*))(var_elttype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_elttype) /* ctype on <var_elttype:MType>*/;
9523 if (varonce131) {
9524 var132 = varonce131;
9525 } else {
9526 var133 = "));";
9527 var134 = 3;
9528 var135 = string__NativeString__to_s_with_length(var133, var134);
9529 var132 = var135;
9530 varonce131 = var132;
9531 }
9532 var136 = NEW_array__Array(&type_array__Arraykernel__Object);
9533 { /* var136 = array_instance Array[Object] */
9534 var137 = 9;
9535 var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
9536 ((struct instance_array__NativeArray*)var138)->values[0] = (val*) var109;
9537 ((struct instance_array__NativeArray*)var138)->values[1] = (val*) var_recv1;
9538 ((struct instance_array__NativeArray*)var138)->values[2] = (val*) var114;
9539 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var_recv;
9540 ((struct instance_array__NativeArray*)var138)->values[4] = (val*) var119;
9541 ((struct instance_array__NativeArray*)var138)->values[5] = (val*) var124;
9542 ((struct instance_array__NativeArray*)var138)->values[6] = (val*) var126;
9543 ((struct instance_array__NativeArray*)var138)->values[7] = (val*) var130;
9544 ((struct instance_array__NativeArray*)var138)->values[8] = (val*) var132;
9545 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
9546 }
9547 var139 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
9548 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var139) /* add on <self:SeparateCompilerVisitor>*/;
9549 goto RET_LABEL;
9550 } else {
9551 }
9552 }
9553 }
9554 RET_LABEL:;
9555 }
9556 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
9557 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
9558 separate_compiler__SeparateCompilerVisitor__native_array_def(self, p0, p1, p2);
9559 RET_LABEL:;
9560 }
9561 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: SeparateCompilerVisitor, MType, Array[RuntimeVariable]) */
9562 void separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
9563 val* var_ret_type /* var ret_type: MType */;
9564 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
9565 static val* varonce;
9566 val* var /* : String */;
9567 char* var1 /* : NativeString */;
9568 long var2 /* : Int */;
9569 val* var3 /* : String */;
9570 val* var4 /* : MClass */;
9571 val* var_mclass /* var mclass: MClass */;
9572 val* var5 /* : MClassType */;
9573 val* var6 /* : Array[MType] */;
9574 val* var7 /* : nullable Object */;
9575 short int var8 /* : Bool */;
9576 int cltype;
9577 int idtype;
9578 const char* var_class_name;
9579 val* var_ft /* var ft: MParameterType */;
9580 long var9 /* : Int */;
9581 val* var10 /* : nullable Object */;
9582 val* var11 /* : RuntimeVariable */;
9583 val* var_res /* var res: RuntimeVariable */;
9584 var_ret_type = p0;
9585 var_arguments = p1;
9586 if (varonce) {
9587 var = varonce;
9588 } else {
9589 var1 = "ArrayCapable";
9590 var2 = 12;
9591 var3 = string__NativeString__to_s_with_length(var1, var2);
9592 var = var3;
9593 varonce = var;
9594 }
9595 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var) /* get_class on <self:SeparateCompilerVisitor>*/;
9596 var_mclass = var4;
9597 var5 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
9598 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassType__arguments]))(var5) /* arguments on <var5:MClassType>*/;
9599 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__first]))(var6) /* first on <var6:Array[MType]>*/;
9600 /* <var7:nullable Object(MType)> isa MParameterType */
9601 cltype = type_model__MParameterType.color;
9602 idtype = type_model__MParameterType.id;
9603 if(cltype >= var7->type->table_size) {
9604 var8 = 0;
9605 } else {
9606 var8 = var7->type->type_table[cltype] == idtype;
9607 }
9608 if (!var8) {
9609 var_class_name = var7 == NULL ? "null" : var7->type->name;
9610 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name);
9611 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1572);
9612 show_backtrace(1);
9613 }
9614 var_ft = var7;
9615 var9 = 1;
9616 var10 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var9) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
9617 var11 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__native_array_instance]))(self, var_ft, var10) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
9618 var_res = var11;
9619 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var_res) /* ret on <self:SeparateCompilerVisitor>*/;
9620 RET_LABEL:;
9621 }
9622 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
9623 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
9624 separate_compiler__SeparateCompilerVisitor__calloc_array(self, p0, p1);
9625 RET_LABEL:;
9626 }
9627 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: SeparateCompilerVisitor, MClassDef, MType) */
9628 void separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
9629 val* var_mclassdef /* var mclassdef: MClassDef */;
9630 val* var_mtype /* var mtype: MType */;
9631 short int var /* : Bool */;
9632 val* var1 /* : AbstractCompiler */;
9633 val* var_compiler /* var compiler: SeparateCompiler */;
9634 val* var2 /* : Map[MClassDef, Set[MType]] */;
9635 val* var3 /* : nullable Frame */;
9636 val* var4 /* : MPropDef */;
9637 val* var5 /* : MClassDef */;
9638 short int var6 /* : Bool */;
9639 short int var7 /* : Bool */;
9640 val* var8 /* : Map[MClassDef, Set[MType]] */;
9641 val* var9 /* : nullable Frame */;
9642 val* var10 /* : MPropDef */;
9643 val* var11 /* : MClassDef */;
9644 val* var12 /* : HashSet[MType] */;
9645 val* var13 /* : Map[MClassDef, Set[MType]] */;
9646 val* var14 /* : nullable Frame */;
9647 val* var15 /* : MPropDef */;
9648 val* var16 /* : MClassDef */;
9649 val* var17 /* : nullable Object */;
9650 var_mclassdef = p0;
9651 var_mtype = p1;
9652 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
9653 if (!var) {
9654 fprintf(stderr, "Runtime error: %s", "Assert failed");
9655 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1578);
9656 show_backtrace(1);
9657 }
9658 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9659 var_compiler = var1;
9660 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
9661 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9662 if (var3 == NULL) {
9663 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9664 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1580);
9665 show_backtrace(1);
9666 } else {
9667 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var3) /* mpropdef on <var3:nullable Frame>*/;
9668 }
9669 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MPropDef__mclassdef]))(var4) /* mclassdef on <var4:MPropDef>*/;
9670 var6 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var5) /* has_key on <var2:Map[MClassDef, Set[MType]]>*/;
9671 var7 = !var6;
9672 if (var7){
9673 var8 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
9674 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9675 if (var9 == NULL) {
9676 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9677 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1581);
9678 show_backtrace(1);
9679 } else {
9680 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var9) /* mpropdef on <var9:nullable Frame>*/;
9681 }
9682 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mclassdef]))(var10) /* mclassdef on <var10:MPropDef>*/;
9683 var12 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
9684 ((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashSet__init]))(var12) /* init on <var12:HashSet[MType]>*/;
9685 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var11, var12) /* []= on <var8:Map[MClassDef, Set[MType]]>*/;
9686 } else {
9687 }
9688 var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
9689 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9690 if (var14 == NULL) {
9691 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9692 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1583);
9693 show_backtrace(1);
9694 } else {
9695 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var14) /* mpropdef on <var14:nullable Frame>*/;
9696 }
9697 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MPropDef__mclassdef]))(var15) /* mclassdef on <var15:MPropDef>*/;
9698 var17 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var16) /* [] on <var13:Map[MClassDef, Set[MType]]>*/;
9699 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var17, var_mtype) /* add on <var17:nullable Object(Set[MType])>*/;
9700 RET_LABEL:;
9701 }
9702 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: Object, MClassDef, MType) */
9703 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
9704 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, p0, p1);
9705 RET_LABEL:;
9706 }
9707 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
9708 val* separate_compiler__MMethodDef__separate_runtime_function(val* self) {
9709 val* var /* : AbstractRuntimeFunction */;
9710 val* var1 /* : nullable SeparateRuntimeFunction */;
9711 val* var_res /* var res: nullable SeparateRuntimeFunction */;
9712 val* var2 /* : null */;
9713 short int var3 /* : Bool */;
9714 val* var4 /* : SeparateRuntimeFunction */;
9715 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache]))(self) /* separate_runtime_function_cache on <self:MMethodDef>*/;
9716 var_res = var1;
9717 var2 = NULL;
9718 if (var_res == NULL) {
9719 var3 = 1; /* is null */
9720 } else {
9721 var3 = 0; /* arg is null but recv is not */
9722 }
9723 if (var3){
9724 var4 = NEW_separate_compiler__SeparateRuntimeFunction(&type_separate_compiler__SeparateRuntimeFunction);
9725 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:SeparateRuntimeFunction>*/;
9726 var_res = var4;
9727 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache_61d]))(self, var_res) /* separate_runtime_function_cache= on <self:MMethodDef>*/;
9728 } else {
9729 }
9730 var = var_res;
9731 goto RET_LABEL;
9732 RET_LABEL:;
9733 return var;
9734 }
9735 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: Object): AbstractRuntimeFunction */
9736 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function(val* self) {
9737 val* var /* : AbstractRuntimeFunction */;
9738 val* var1 /* : AbstractRuntimeFunction */;
9739 var1 = separate_compiler__MMethodDef__separate_runtime_function(self);
9740 var = var1;
9741 RET_LABEL:;
9742 return var;
9743 }
9744 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: MMethodDef): nullable SeparateRuntimeFunction */
9745 val* separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
9746 val* var /* : nullable SeparateRuntimeFunction */;
9747 val* var1 /* : nullable SeparateRuntimeFunction */;
9748 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val; /* @separate_runtime_function_cache on <self:MMethodDef> */
9749 var = var1;
9750 RET_LABEL:;
9751 return var;
9752 }
9753 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: Object): nullable SeparateRuntimeFunction */
9754 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
9755 val* var /* : nullable SeparateRuntimeFunction */;
9756 val* var1 /* : nullable SeparateRuntimeFunction */;
9757 var1 = separate_compiler__MMethodDef__separate_runtime_function_cache(self);
9758 var = var1;
9759 RET_LABEL:;
9760 return var;
9761 }
9762 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: MMethodDef, nullable SeparateRuntimeFunction) */
9763 void separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
9764 self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val = p0; /* @separate_runtime_function_cache on <self:MMethodDef> */
9765 RET_LABEL:;
9766 }
9767 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: Object, nullable SeparateRuntimeFunction) */
9768 void VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
9769 separate_compiler__MMethodDef__separate_runtime_function_cache_61d(self, p0);
9770 RET_LABEL:;
9771 }
9772 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
9773 val* separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
9774 val* var /* : AbstractRuntimeFunction */;
9775 val* var1 /* : nullable VirtualRuntimeFunction */;
9776 val* var_res /* var res: nullable VirtualRuntimeFunction */;
9777 val* var2 /* : null */;
9778 short int var3 /* : Bool */;
9779 val* var4 /* : VirtualRuntimeFunction */;
9780 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache]))(self) /* virtual_runtime_function_cache on <self:MMethodDef>*/;
9781 var_res = var1;
9782 var2 = NULL;
9783 if (var_res == NULL) {
9784 var3 = 1; /* is null */
9785 } else {
9786 var3 = 0; /* arg is null but recv is not */
9787 }
9788 if (var3){
9789 var4 = NEW_separate_compiler__VirtualRuntimeFunction(&type_separate_compiler__VirtualRuntimeFunction);
9790 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:VirtualRuntimeFunction>*/;
9791 var_res = var4;
9792 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d]))(self, var_res) /* virtual_runtime_function_cache= on <self:MMethodDef>*/;
9793 } else {
9794 }
9795 var = var_res;
9796 goto RET_LABEL;
9797 RET_LABEL:;
9798 return var;
9799 }
9800 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: Object): AbstractRuntimeFunction */
9801 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
9802 val* var /* : AbstractRuntimeFunction */;
9803 val* var1 /* : AbstractRuntimeFunction */;
9804 var1 = separate_compiler__MMethodDef__virtual_runtime_function(self);
9805 var = var1;
9806 RET_LABEL:;
9807 return var;
9808 }
9809 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: MMethodDef): nullable VirtualRuntimeFunction */
9810 val* separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
9811 val* var /* : nullable VirtualRuntimeFunction */;
9812 val* var1 /* : nullable VirtualRuntimeFunction */;
9813 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val; /* @virtual_runtime_function_cache on <self:MMethodDef> */
9814 var = var1;
9815 RET_LABEL:;
9816 return var;
9817 }
9818 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: Object): nullable VirtualRuntimeFunction */
9819 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
9820 val* var /* : nullable VirtualRuntimeFunction */;
9821 val* var1 /* : nullable VirtualRuntimeFunction */;
9822 var1 = separate_compiler__MMethodDef__virtual_runtime_function_cache(self);
9823 var = var1;
9824 RET_LABEL:;
9825 return var;
9826 }
9827 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: MMethodDef, nullable VirtualRuntimeFunction) */
9828 void separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
9829 self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val = p0; /* @virtual_runtime_function_cache on <self:MMethodDef> */
9830 RET_LABEL:;
9831 }
9832 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: Object, nullable VirtualRuntimeFunction) */
9833 void VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
9834 separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(self, p0);
9835 RET_LABEL:;
9836 }
9837 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: SeparateRuntimeFunction): String */
9838 val* separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
9839 val* var /* : String */;
9840 val* var1 /* : Array[Object] */;
9841 long var2 /* : Int */;
9842 val* var_ /* var : Array[Object] */;
9843 static val* varonce;
9844 val* var3 /* : String */;
9845 char* var4 /* : NativeString */;
9846 long var5 /* : Int */;
9847 val* var6 /* : String */;
9848 val* var7 /* : MMethodDef */;
9849 val* var8 /* : String */;
9850 static val* varonce9;
9851 val* var10 /* : String */;
9852 char* var11 /* : NativeString */;
9853 long var12 /* : Int */;
9854 val* var13 /* : String */;
9855 val* var14 /* : String */;
9856 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
9857 var2 = 3;
9858 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
9859 var_ = var1;
9860 if (varonce) {
9861 var3 = varonce;
9862 } else {
9863 var4 = "";
9864 var5 = 0;
9865 var6 = string__NativeString__to_s_with_length(var4, var5);
9866 var3 = var6;
9867 varonce = var3;
9868 }
9869 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
9870 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
9871 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on <var7:MMethodDef>*/;
9872 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
9873 if (varonce9) {
9874 var10 = varonce9;
9875 } else {
9876 var11 = "";
9877 var12 = 0;
9878 var13 = string__NativeString__to_s_with_length(var11, var12);
9879 var10 = var13;
9880 varonce9 = var10;
9881 }
9882 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
9883 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
9884 var = var14;
9885 goto RET_LABEL;
9886 RET_LABEL:;
9887 return var;
9888 }
9889 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: Object): String */
9890 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
9891 val* var /* : String */;
9892 val* var1 /* : String */;
9893 var1 = separate_compiler__SeparateRuntimeFunction__build_c_name(self);
9894 var = var1;
9895 RET_LABEL:;
9896 return var;
9897 }
9898 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: SeparateRuntimeFunction): String */
9899 val* separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
9900 val* var /* : String */;
9901 val* var1 /* : MMethodDef */;
9902 val* var2 /* : String */;
9903 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
9904 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MMethodDef>*/;
9905 var = var2;
9906 goto RET_LABEL;
9907 RET_LABEL:;
9908 return var;
9909 }
9910 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: Object): String */
9911 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
9912 val* var /* : String */;
9913 val* var1 /* : String */;
9914 var1 = separate_compiler__SeparateRuntimeFunction__to_s(self);
9915 var = var1;
9916 RET_LABEL:;
9917 return var;
9918 }