pep8analysis: add copyright info for viz.js
[nit.git] / c_src / separate_compiler.sep.2.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
3 val* separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
4 val* var /* : String */;
5 val* var_value /* var value: RuntimeVariable */;
6 val* var1 /* : MType */;
7 val* var2 /* : String */;
8 static val* varonce;
9 val* var3 /* : String */;
10 char* var4 /* : NativeString */;
11 long var5 /* : Int */;
12 val* var6 /* : String */;
13 short int var7 /* : Bool */;
14 val* var8 /* : Array[Object] */;
15 long var9 /* : Int */;
16 val* var_ /* var : Array[Object] */;
17 static val* varonce10;
18 val* var11 /* : String */;
19 char* var12 /* : NativeString */;
20 long var13 /* : Int */;
21 val* var14 /* : String */;
22 static val* varonce15;
23 val* var16 /* : String */;
24 char* var17 /* : NativeString */;
25 long var18 /* : Int */;
26 val* var19 /* : String */;
27 val* var20 /* : String */;
28 val* var21 /* : AbstractCompiler */;
29 val* var22 /* : Set[MType] */;
30 val* var23 /* : MType */;
31 static val* varonce24;
32 val* var25 /* : String */;
33 char* var26 /* : NativeString */;
34 long var27 /* : Int */;
35 val* var28 /* : String */;
36 val* var29 /* : MType */;
37 val* var30 /* : String */;
38 val* var31 /* : Array[Object] */;
39 long var32 /* : Int */;
40 val* var33 /* : NativeArray[Object] */;
41 val* var34 /* : String */;
42 val* var35 /* : Array[Object] */;
43 long var36 /* : Int */;
44 val* var_37 /* var : Array[Object] */;
45 static val* varonce38;
46 val* var39 /* : String */;
47 char* var40 /* : NativeString */;
48 long var41 /* : Int */;
49 val* var42 /* : String */;
50 val* var43 /* : MType */;
51 val* var44 /* : String */;
52 static val* varonce45;
53 val* var46 /* : String */;
54 char* var47 /* : NativeString */;
55 long var48 /* : Int */;
56 val* var49 /* : String */;
57 val* var50 /* : String */;
58 var_value = p0;
59 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
60 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MType>*/;
61 if (varonce) {
62 var3 = varonce;
63 } else {
64 var4 = "val*";
65 var5 = 4;
66 var6 = string__NativeString__to_s_with_length(var4, var5);
67 var3 = var6;
68 varonce = var3;
69 }
70 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
71 if (var7){
72 var8 = NEW_array__Array(&type_array__Arraykernel__Object);
73 var9 = 3;
74 ((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[Object]>*/;
75 var_ = var8;
76 if (varonce10) {
77 var11 = varonce10;
78 } else {
79 var12 = "";
80 var13 = 0;
81 var14 = string__NativeString__to_s_with_length(var12, var13);
82 var11 = var14;
83 varonce10 = var11;
84 }
85 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
86 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_value) /* add on <var_:Array[Object]>*/;
87 if (varonce15) {
88 var16 = varonce15;
89 } else {
90 var17 = "->type";
91 var18 = 6;
92 var19 = string__NativeString__to_s_with_length(var17, var18);
93 var16 = var19;
94 varonce15 = var16;
95 }
96 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
97 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
98 var = var20;
99 goto RET_LABEL;
100 } else {
101 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
102 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var21) /* undead_types on <var21:AbstractCompiler(SeparateCompiler)>*/;
103 var23 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
104 ((void (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var22, var23) /* add on <var22:Set[MType]>*/;
105 if (varonce24) {
106 var25 = varonce24;
107 } else {
108 var26 = "type_";
109 var27 = 5;
110 var28 = string__NativeString__to_s_with_length(var26, var27);
111 var25 = var28;
112 varonce24 = var25;
113 }
114 var29 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
115 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_compiler__MType__c_name]))(var29) /* c_name on <var29:MType>*/;
116 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
117 { /* var31 = array_instance Array[Object] */
118 var32 = 2;
119 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
120 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var25;
121 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var30;
122 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
123 }
124 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
125 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var34) /* require_declaration on <self:SeparateCompilerVisitor>*/;
126 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
127 var36 = 3;
128 ((void (*)(val*, long))(var35->class->vft[COLOR_array__Array__with_capacity]))(var35, var36) /* with_capacity on <var35:Array[Object]>*/;
129 var_37 = var35;
130 if (varonce38) {
131 var39 = varonce38;
132 } else {
133 var40 = "(&type_";
134 var41 = 7;
135 var42 = string__NativeString__to_s_with_length(var40, var41);
136 var39 = var42;
137 varonce38 = var39;
138 }
139 ((void (*)(val*, val*))(var_37->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_37, var39) /* add on <var_37:Array[Object]>*/;
140 var43 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
141 var44 = ((val* (*)(val*))(var43->class->vft[COLOR_abstract_compiler__MType__c_name]))(var43) /* c_name on <var43:MType>*/;
142 ((void (*)(val*, val*))(var_37->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_37, var44) /* add on <var_37:Array[Object]>*/;
143 if (varonce45) {
144 var46 = varonce45;
145 } else {
146 var47 = ")";
147 var48 = 1;
148 var49 = string__NativeString__to_s_with_length(var47, var48);
149 var46 = var49;
150 varonce45 = var46;
151 }
152 ((void (*)(val*, val*))(var_37->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_37, var46) /* add on <var_37:Array[Object]>*/;
153 var50 = ((val* (*)(val*))(var_37->class->vft[COLOR_string__Object__to_s]))(var_37) /* to_s on <var_37:Array[Object]>*/;
154 var = var50;
155 goto RET_LABEL;
156 }
157 RET_LABEL:;
158 return var;
159 }
160 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: Object, RuntimeVariable): String */
161 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
162 val* var /* : String */;
163 val* var1 /* : String */;
164 var1 = separate_compiler__SeparateCompilerVisitor__type_info(self, p0);
165 var = var1;
166 RET_LABEL:;
167 return var;
168 }
169 /* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
170 val* separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
171 val* var /* : nullable RuntimeVariable */;
172 val* var_mmethod /* var mmethod: MMethod */;
173 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
174 val* var1 /* : MPropDef */;
175 val* var2 /* : MPropDef */;
176 val* var3 /* : nullable MSignature */;
177 val* var4 /* : nullable Object */;
178 val* var5 /* : MType */;
179 val* var6 /* : String */;
180 static val* varonce;
181 val* var7 /* : String */;
182 char* var8 /* : NativeString */;
183 long var9 /* : Int */;
184 val* var10 /* : String */;
185 short int var11 /* : Bool */;
186 val* var12 /* : AbstractCompiler */;
187 val* var13 /* : MModule */;
188 val* var_m /* var m: MModule */;
189 val* var14 /* : AbstractCompiler */;
190 val* var15 /* : AbstractCompiler */;
191 val* var16 /* : MModule */;
192 val* var17 /* : nullable Object */;
193 val* var18 /* : MType */;
194 val* var19 /* : nullable RuntimeVariable */;
195 val* var_res /* var res: nullable RuntimeVariable */;
196 val* var20 /* : AbstractCompiler */;
197 val* var21 /* : String */;
198 val* var22 /* : nullable RuntimeVariable */;
199 var_mmethod = p0;
200 var_arguments = p1;
201 var1 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
202 var2 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
203 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MMethodDef__msignature]))(var2) /* msignature on <var2:MPropDef(MMethodDef)>*/;
204 if (var3 == NULL) {
205 fprintf(stderr, "Runtime error: %s", "Cast failed");
206 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 994);
207 show_backtrace(1);
208 }
209 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__varargize]))(self, var1, var3, var_arguments) /* varargize on <self:SeparateCompilerVisitor>*/;
210 var4 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
211 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var4) /* mcasttype on <var4:nullable Object(RuntimeVariable)>*/;
212 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__MType__ctype]))(var5) /* ctype on <var5:MType>*/;
213 if (varonce) {
214 var7 = varonce;
215 } else {
216 var8 = "val*";
217 var9 = 4;
218 var10 = string__NativeString__to_s_with_length(var8, var9);
219 var7 = var10;
220 varonce = var7;
221 }
222 var11 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___33d_61d]))(var6, var7) /* != on <var6:String>*/;
223 if (var11){
224 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
225 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var12) /* mainmodule on <var12:AbstractCompiler(SeparateCompiler)>*/;
226 var_m = var13;
227 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
228 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
229 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule]))(var15) /* realmainmodule on <var15:AbstractCompiler(SeparateCompiler)>*/;
230 ((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var14, var16) /* mainmodule= on <var14:AbstractCompiler(SeparateCompiler)>*/;
231 var17 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
232 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var17) /* mcasttype on <var17:nullable Object(RuntimeVariable)>*/;
233 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>*/;
234 var_res = var19;
235 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
236 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var20, var_m) /* mainmodule= on <var20:AbstractCompiler(SeparateCompiler)>*/;
237 var = var_res;
238 goto RET_LABEL;
239 } else {
240 }
241 var21 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_mmethod) /* const_color on <var_mmethod:MMethod>*/;
242 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>*/;
243 var = var22;
244 goto RET_LABEL;
245 RET_LABEL:;
246 return var;
247 }
248 /* method separate_compiler#SeparateCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
249 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
250 val* var /* : nullable RuntimeVariable */;
251 val* var1 /* : nullable RuntimeVariable */;
252 var1 = separate_compiler__SeparateCompilerVisitor__send(self, p0, p1);
253 var = var1;
254 RET_LABEL:;
255 return var;
256 }
257 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
258 val* separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
259 val* var /* : nullable RuntimeVariable */;
260 val* var_mmethod /* var mmethod: MMethod */;
261 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
262 val* var_const_color /* var const_color: String */;
263 long var1 /* : Int */;
264 val* var2 /* : MPropDef */;
265 val* var3 /* : nullable MSignature */;
266 long var4 /* : Int */;
267 long var5 /* : Int */;
268 long var6 /* : Int */;
269 long var8 /* : Int */;
270 short int var9 /* : Bool */;
271 short int var11 /* : Bool */;
272 static val* varonce;
273 val* var12 /* : String */;
274 char* var13 /* : NativeString */;
275 long var14 /* : Int */;
276 val* var15 /* : String */;
277 static val* varonce16;
278 val* var17 /* : String */;
279 char* var18 /* : NativeString */;
280 long var19 /* : Int */;
281 val* var20 /* : String */;
282 long var21 /* : Int */;
283 static val* varonce22;
284 val* var23 /* : String */;
285 char* var24 /* : NativeString */;
286 long var25 /* : Int */;
287 val* var26 /* : String */;
288 val* var27 /* : Array[Object] */;
289 long var28 /* : Int */;
290 val* var29 /* : NativeArray[Object] */;
291 val* var30 /* : Object */;
292 val* var31 /* : String */;
293 val* var32 /* : MPropDef */;
294 val* var33 /* : nullable MSignature */;
295 val* var34 /* : MPropDef */;
296 val* var35 /* : MClassDef */;
297 val* var36 /* : MClassType */;
298 val* var37 /* : MPropDef */;
299 val* var38 /* : MClassDef */;
300 val* var39 /* : MClassType */;
301 val* var40 /* : MPropDef */;
302 val* var41 /* : MClassDef */;
303 val* var42 /* : MModule */;
304 short int var43 /* : Bool */;
305 val* var44 /* : MType */;
306 val* var_msignature /* var msignature: MSignature */;
307 val* var45 /* : nullable MType */;
308 val* var_ret /* var ret: nullable MType */;
309 short int var46 /* : Bool */;
310 val* var47 /* : nullable Object */;
311 val* var48 /* : MType */;
312 val* var49 /* : RuntimeVariable */;
313 val* var_res /* var res: nullable RuntimeVariable */;
314 val* var50 /* : null */;
315 short int var51 /* : Bool */;
316 val* var52 /* : null */;
317 val* var53 /* : RuntimeVariable */;
318 val* var54 /* : Buffer */;
319 val* var_s /* var s: Buffer */;
320 val* var55 /* : Buffer */;
321 val* var_ss /* var ss: Buffer */;
322 val* var56 /* : nullable Object */;
323 val* var_recv /* var recv: RuntimeVariable */;
324 static val* varonce57;
325 val* var58 /* : String */;
326 char* var59 /* : NativeString */;
327 long var60 /* : Int */;
328 val* var61 /* : String */;
329 val* var62 /* : Array[Object] */;
330 long var63 /* : Int */;
331 val* var64 /* : NativeArray[Object] */;
332 val* var65 /* : String */;
333 val* var66 /* : Range[Int] */;
334 long var67 /* : Int */;
335 long var68 /* : Int */;
336 val* var69 /* : Discrete */;
337 val* var70 /* : Discrete */;
338 val* var71 /* : Iterator[nullable Object] */;
339 short int var72 /* : Bool */;
340 val* var73 /* : nullable Object */;
341 long var_i /* var i: Int */;
342 long var74 /* : Int */;
343 long var75 /* : Int */;
344 long var76 /* : Int */;
345 long var78 /* : Int */;
346 val* var79 /* : nullable Object */;
347 val* var_a /* var a: RuntimeVariable */;
348 val* var80 /* : Array[MParameter] */;
349 val* var81 /* : nullable Object */;
350 val* var82 /* : MType */;
351 val* var_t /* var t: MType */;
352 long var83 /* : Int */;
353 short int var84 /* : Bool */;
354 short int var86 /* : Bool */;
355 long var87 /* : Int */;
356 long var88 /* : Int */;
357 long var90 /* : Int */;
358 val* var91 /* : nullable Object */;
359 val* var92 /* : MType */;
360 static val* varonce93;
361 val* var94 /* : String */;
362 char* var95 /* : NativeString */;
363 long var96 /* : Int */;
364 val* var97 /* : String */;
365 val* var98 /* : String */;
366 val* var99 /* : Array[Object] */;
367 long var100 /* : Int */;
368 val* var101 /* : NativeArray[Object] */;
369 val* var102 /* : String */;
370 val* var103 /* : RuntimeVariable */;
371 static val* varonce104;
372 val* var105 /* : String */;
373 char* var106 /* : NativeString */;
374 long var107 /* : Int */;
375 val* var108 /* : String */;
376 val* var109 /* : Array[Object] */;
377 long var110 /* : Int */;
378 val* var111 /* : NativeArray[Object] */;
379 val* var112 /* : String */;
380 short int var113 /* : Bool */;
381 short int var114 /* : Bool */;
382 val* var115 /* : AbstractCompiler */;
383 val* var116 /* : ModelBuilder */;
384 val* var117 /* : ToolContext */;
385 val* var118 /* : OptionBool */;
386 val* var119 /* : nullable Object */;
387 short int var120 /* : Bool */;
388 short int var121 /* : Bool */;
389 short int var_ /* var : Bool */;
390 val* var122 /* : String */;
391 static val* varonce123;
392 val* var124 /* : String */;
393 char* var125 /* : NativeString */;
394 long var126 /* : Int */;
395 val* var127 /* : String */;
396 short int var128 /* : Bool */;
397 short int var_129 /* var : Bool */;
398 val* var130 /* : String */;
399 static val* varonce131;
400 val* var132 /* : String */;
401 char* var133 /* : NativeString */;
402 long var134 /* : Int */;
403 val* var135 /* : String */;
404 short int var136 /* : Bool */;
405 short int var_consider_null /* var consider_null: Bool */;
406 short int var137 /* : Bool */;
407 val* var138 /* : MType */;
408 short int var139 /* : Bool */;
409 int cltype;
410 int idtype;
411 short int var_140 /* var : Bool */;
412 short int var_maybenull /* var maybenull: Bool */;
413 static val* varonce141;
414 val* var142 /* : String */;
415 char* var143 /* : NativeString */;
416 long var144 /* : Int */;
417 val* var145 /* : String */;
418 static val* varonce146;
419 val* var147 /* : String */;
420 char* var148 /* : NativeString */;
421 long var149 /* : Int */;
422 val* var150 /* : String */;
423 val* var151 /* : Array[Object] */;
424 long var152 /* : Int */;
425 val* var153 /* : NativeArray[Object] */;
426 val* var154 /* : String */;
427 val* var155 /* : String */;
428 static val* varonce156;
429 val* var157 /* : String */;
430 char* var158 /* : NativeString */;
431 long var159 /* : Int */;
432 val* var160 /* : String */;
433 short int var161 /* : Bool */;
434 val* var162 /* : null */;
435 short int var163 /* : Bool */;
436 long var164 /* : Int */;
437 val* var165 /* : nullable Object */;
438 val* var_arg /* var arg: RuntimeVariable */;
439 val* var166 /* : MType */;
440 short int var167 /* : Bool */;
441 int cltype168;
442 int idtype169;
443 static val* varonce170;
444 val* var171 /* : String */;
445 char* var172 /* : NativeString */;
446 long var173 /* : Int */;
447 val* var174 /* : String */;
448 static val* varonce175;
449 val* var176 /* : String */;
450 char* var177 /* : NativeString */;
451 long var178 /* : Int */;
452 val* var179 /* : String */;
453 val* var180 /* : Array[Object] */;
454 long var181 /* : Int */;
455 val* var182 /* : NativeArray[Object] */;
456 val* var183 /* : String */;
457 val* var184 /* : MType */;
458 short int var185 /* : Bool */;
459 int cltype186;
460 int idtype187;
461 static val* varonce188;
462 val* var189 /* : String */;
463 char* var190 /* : NativeString */;
464 long var191 /* : Int */;
465 val* var192 /* : String */;
466 val* var193 /* : Array[Object] */;
467 long var194 /* : Int */;
468 val* var195 /* : NativeArray[Object] */;
469 val* var196 /* : String */;
470 static val* varonce197;
471 val* var198 /* : String */;
472 char* var199 /* : NativeString */;
473 long var200 /* : Int */;
474 val* var201 /* : String */;
475 val* var202 /* : String */;
476 static val* varonce203;
477 val* var204 /* : String */;
478 char* var205 /* : NativeString */;
479 long var206 /* : Int */;
480 val* var207 /* : String */;
481 val* var208 /* : Array[Object] */;
482 long var209 /* : Int */;
483 val* var210 /* : NativeArray[Object] */;
484 val* var211 /* : String */;
485 val* var212 /* : String */;
486 static val* varonce213;
487 val* var214 /* : String */;
488 char* var215 /* : NativeString */;
489 long var216 /* : Int */;
490 val* var217 /* : String */;
491 short int var218 /* : Bool */;
492 val* var219 /* : null */;
493 short int var220 /* : Bool */;
494 long var221 /* : Int */;
495 val* var222 /* : nullable Object */;
496 val* var_arg223 /* var arg: RuntimeVariable */;
497 val* var224 /* : MType */;
498 short int var225 /* : Bool */;
499 int cltype226;
500 int idtype227;
501 static val* varonce228;
502 val* var229 /* : String */;
503 char* var230 /* : NativeString */;
504 long var231 /* : Int */;
505 val* var232 /* : String */;
506 static val* varonce233;
507 val* var234 /* : String */;
508 char* var235 /* : NativeString */;
509 long var236 /* : Int */;
510 val* var237 /* : String */;
511 val* var238 /* : Array[Object] */;
512 long var239 /* : Int */;
513 val* var240 /* : NativeArray[Object] */;
514 val* var241 /* : String */;
515 val* var242 /* : MType */;
516 short int var243 /* : Bool */;
517 int cltype244;
518 int idtype245;
519 static val* varonce246;
520 val* var247 /* : String */;
521 char* var248 /* : NativeString */;
522 long var249 /* : Int */;
523 val* var250 /* : String */;
524 val* var251 /* : Array[Object] */;
525 long var252 /* : Int */;
526 val* var253 /* : NativeArray[Object] */;
527 val* var254 /* : String */;
528 static val* varonce255;
529 val* var256 /* : String */;
530 char* var257 /* : NativeString */;
531 long var258 /* : Int */;
532 val* var259 /* : String */;
533 val* var260 /* : String */;
534 static val* varonce261;
535 val* var262 /* : String */;
536 char* var263 /* : NativeString */;
537 long var264 /* : Int */;
538 val* var265 /* : String */;
539 val* var266 /* : Array[Object] */;
540 long var267 /* : Int */;
541 val* var268 /* : NativeArray[Object] */;
542 val* var269 /* : String */;
543 static val* varonce270;
544 val* var271 /* : String */;
545 char* var272 /* : NativeString */;
546 long var273 /* : Int */;
547 val* var274 /* : String */;
548 static val* varonce275;
549 val* var276 /* : String */;
550 char* var277 /* : NativeString */;
551 long var278 /* : Int */;
552 val* var279 /* : String */;
553 short int var280 /* : Bool */;
554 val* var281 /* : AbstractCompiler */;
555 val* var282 /* : ModelBuilder */;
556 val* var283 /* : ToolContext */;
557 val* var284 /* : OptionBool */;
558 val* var285 /* : nullable Object */;
559 short int var286 /* : Bool */;
560 short int var287 /* : Bool */;
561 short int var_288 /* var : Bool */;
562 short int var289 /* : Bool */;
563 val* var290 /* : String */;
564 static val* varonce291;
565 val* var292 /* : String */;
566 char* var293 /* : NativeString */;
567 long var294 /* : Int */;
568 val* var295 /* : String */;
569 short int var296 /* : Bool */;
570 short int var_297 /* var : Bool */;
571 val* var298 /* : String */;
572 static val* varonce299;
573 val* var300 /* : String */;
574 char* var301 /* : NativeString */;
575 long var302 /* : Int */;
576 val* var303 /* : String */;
577 short int var304 /* : Bool */;
578 val* var305 /* : null */;
579 short int var306 /* : Bool */;
580 long var307 /* : Int */;
581 val* var308 /* : nullable Object */;
582 val* var_arg309 /* var arg: RuntimeVariable */;
583 val* var310 /* : MType */;
584 short int var311 /* : Bool */;
585 int cltype312;
586 int idtype313;
587 val* var314 /* : String */;
588 static val* varonce315;
589 val* var316 /* : String */;
590 char* var317 /* : NativeString */;
591 long var318 /* : Int */;
592 val* var319 /* : String */;
593 short int var320 /* : Bool */;
594 static val* varonce321;
595 val* var322 /* : String */;
596 char* var323 /* : NativeString */;
597 long var324 /* : Int */;
598 val* var325 /* : String */;
599 val* var326 /* : Array[Object] */;
600 long var327 /* : Int */;
601 val* var328 /* : NativeArray[Object] */;
602 val* var329 /* : String */;
603 static val* varonce330;
604 val* var331 /* : String */;
605 char* var332 /* : NativeString */;
606 long var333 /* : Int */;
607 val* var334 /* : String */;
608 val* var335 /* : Array[Object] */;
609 long var336 /* : Int */;
610 val* var337 /* : NativeArray[Object] */;
611 val* var338 /* : String */;
612 static val* varonce339;
613 val* var340 /* : String */;
614 char* var341 /* : NativeString */;
615 long var342 /* : Int */;
616 val* var343 /* : String */;
617 val* var344 /* : null */;
618 short int var345 /* : Bool */;
619 static val* varonce346;
620 val* var347 /* : String */;
621 char* var348 /* : NativeString */;
622 long var349 /* : Int */;
623 val* var350 /* : String */;
624 val* var_r /* var r: nullable Object */;
625 val* var351 /* : String */;
626 val* var352 /* : Array[Object] */;
627 long var353 /* : Int */;
628 val* var_354 /* var : Array[Object] */;
629 static val* varonce355;
630 val* var356 /* : String */;
631 char* var357 /* : NativeString */;
632 long var358 /* : Int */;
633 val* var359 /* : String */;
634 static val* varonce360;
635 val* var361 /* : String */;
636 char* var362 /* : NativeString */;
637 long var363 /* : Int */;
638 val* var364 /* : String */;
639 static val* varonce365;
640 val* var366 /* : String */;
641 char* var367 /* : NativeString */;
642 long var368 /* : Int */;
643 val* var369 /* : String */;
644 val* var370 /* : nullable Object */;
645 static val* varonce371;
646 val* var372 /* : String */;
647 char* var373 /* : NativeString */;
648 long var374 /* : Int */;
649 val* var375 /* : String */;
650 static val* varonce376;
651 val* var377 /* : String */;
652 char* var378 /* : NativeString */;
653 long var379 /* : Int */;
654 val* var380 /* : String */;
655 static val* varonce381;
656 val* var382 /* : String */;
657 char* var383 /* : NativeString */;
658 long var384 /* : Int */;
659 val* var385 /* : String */;
660 static val* varonce386;
661 val* var387 /* : String */;
662 char* var388 /* : NativeString */;
663 long var389 /* : Int */;
664 val* var390 /* : String */;
665 val* var391 /* : nullable Object */;
666 val* var392 /* : String */;
667 static val* varonce393;
668 val* var394 /* : String */;
669 char* var395 /* : NativeString */;
670 long var396 /* : Int */;
671 val* var397 /* : String */;
672 val* var398 /* : String */;
673 val* var_call /* var call: String */;
674 val* var399 /* : null */;
675 short int var400 /* : Bool */;
676 static val* varonce401;
677 val* var402 /* : String */;
678 char* var403 /* : NativeString */;
679 long var404 /* : Int */;
680 val* var405 /* : String */;
681 static val* varonce406;
682 val* var407 /* : String */;
683 char* var408 /* : NativeString */;
684 long var409 /* : Int */;
685 val* var410 /* : String */;
686 val* var411 /* : Array[Object] */;
687 long var412 /* : Int */;
688 val* var413 /* : NativeArray[Object] */;
689 val* var414 /* : String */;
690 static val* varonce415;
691 val* var416 /* : String */;
692 char* var417 /* : NativeString */;
693 long var418 /* : Int */;
694 val* var419 /* : String */;
695 val* var420 /* : Array[Object] */;
696 long var421 /* : Int */;
697 val* var422 /* : NativeArray[Object] */;
698 val* var423 /* : String */;
699 static val* varonce424;
700 val* var425 /* : String */;
701 char* var426 /* : NativeString */;
702 long var427 /* : Int */;
703 val* var428 /* : String */;
704 var_mmethod = p0;
705 var_arguments = p1;
706 var_const_color = p2;
707 var1 = ((long (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_arguments) /* length on <var_arguments:Array[RuntimeVariable]>*/;
708 var2 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
709 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MMethodDef__msignature]))(var2) /* msignature on <var2:MPropDef(MMethodDef)>*/;
710 if (var3 == NULL) {
711 fprintf(stderr, "Runtime error: %s", "Receiver is null");
712 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1011);
713 show_backtrace(1);
714 } else {
715 var4 = ((long (*)(val*))(var3->class->vft[COLOR_model__MSignature__arity]))(var3) /* arity on <var3:nullable MSignature>*/;
716 }
717 var5 = 1;
718 { /* Inline kernel#Int#+ (var4,var5) */
719 var8 = var4 + var5;
720 var6 = var8;
721 goto RET_LABEL7;
722 RET_LABEL7:(void)0;
723 }
724 { /* Inline kernel#Int#== (var1,var6) */
725 var11 = var1 == var6;
726 var9 = var11;
727 goto RET_LABEL10;
728 RET_LABEL10:(void)0;
729 }
730 if (!var9) {
731 if (varonce) {
732 var12 = varonce;
733 } else {
734 var13 = "Invalid arity for ";
735 var14 = 18;
736 var15 = string__NativeString__to_s_with_length(var13, var14);
737 var12 = var15;
738 varonce = var12;
739 }
740 if (varonce16) {
741 var17 = varonce16;
742 } else {
743 var18 = ". ";
744 var19 = 2;
745 var20 = string__NativeString__to_s_with_length(var18, var19);
746 var17 = var20;
747 varonce16 = var17;
748 }
749 var21 = ((long (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_arguments) /* length on <var_arguments:Array[RuntimeVariable]>*/;
750 if (varonce22) {
751 var23 = varonce22;
752 } else {
753 var24 = " arguments given.";
754 var25 = 17;
755 var26 = string__NativeString__to_s_with_length(var24, var25);
756 var23 = var26;
757 varonce22 = var23;
758 }
759 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
760 { /* var27 = array_instance Array[Object] */
761 var28 = 5;
762 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
763 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var12;
764 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_mmethod;
765 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var17;
766 var30 = BOX_kernel__Int(var21); /* autobox from Int to Object */
767 ((struct instance_array__NativeArray*)var29)->values[3] = (val*) var30;
768 ((struct instance_array__NativeArray*)var29)->values[4] = (val*) var23;
769 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
770 }
771 var31 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
772 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__debug]))(self, var31) /* debug on <self:SeparateCompilerVisitor>*/;
773 fprintf(stderr, "Runtime error: %s", "Assert failed");
774 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1011);
775 show_backtrace(1);
776 }
777 var32 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
778 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_model__MMethodDef__msignature]))(var32) /* msignature on <var32:MPropDef(MMethodDef)>*/;
779 var34 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
780 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_model__MPropDef__mclassdef]))(var34) /* mclassdef on <var34:MPropDef(MMethodDef)>*/;
781 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_model__MClassDef__bound_mtype]))(var35) /* bound_mtype on <var35:MClassDef>*/;
782 var37 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
783 var38 = ((val* (*)(val*))(var37->class->vft[COLOR_model__MPropDef__mclassdef]))(var37) /* mclassdef on <var37:MPropDef(MMethodDef)>*/;
784 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_model__MClassDef__bound_mtype]))(var38) /* bound_mtype on <var38:MClassDef>*/;
785 var40 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
786 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_model__MPropDef__mclassdef]))(var40) /* mclassdef on <var40:MPropDef(MMethodDef)>*/;
787 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_model__MClassDef__mmodule]))(var41) /* mmodule on <var41:MClassDef>*/;
788 var43 = 1;
789 if (var33 == NULL) {
790 fprintf(stderr, "Runtime error: %s", "Receiver is null");
791 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1014);
792 show_backtrace(1);
793 } else {
794 var44 = ((val* (*)(val*, val*, val*, val*, short int))(var33->class->vft[COLOR_model__MType__resolve_for]))(var33, var36, var39, var42, var43) /* resolve_for on <var33:nullable MSignature>*/;
795 }
796 var_msignature = var44;
797 var45 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
798 var_ret = var45;
799 var46 = ((short int (*)(val*))(var_mmethod->class->vft[COLOR_model__MMethod__is_new]))(var_mmethod) /* is_new on <var_mmethod:MMethod>*/;
800 if (var46){
801 var47 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
802 var48 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var47) /* mtype on <var47:nullable Object(RuntimeVariable)>*/;
803 var_ret = var48;
804 var49 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
805 var_res = var49;
806 } else {
807 var50 = NULL;
808 if (var_ret == NULL) {
809 var51 = 1; /* is null */
810 } else {
811 var51 = 0; /* arg is null but recv is not */
812 }
813 if (var51){
814 var52 = NULL;
815 var_res = var52;
816 } else {
817 var53 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
818 var_res = var53;
819 }
820 }
821 var54 = NEW_string__Buffer(&type_string__Buffer);
822 ((void (*)(val*))(var54->class->vft[COLOR_string__Buffer__init]))(var54) /* init on <var54:Buffer>*/;
823 var_s = var54;
824 var55 = NEW_string__Buffer(&type_string__Buffer);
825 ((void (*)(val*))(var55->class->vft[COLOR_string__Buffer__init]))(var55) /* init on <var55:Buffer>*/;
826 var_ss = var55;
827 var56 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
828 var_recv = var56;
829 if (varonce57) {
830 var58 = varonce57;
831 } else {
832 var59 = "val*";
833 var60 = 4;
834 var61 = string__NativeString__to_s_with_length(var59, var60);
835 var58 = var61;
836 varonce57 = var58;
837 }
838 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var58) /* append on <var_s:Buffer>*/;
839 var62 = NEW_array__Array(&type_array__Arraykernel__Object);
840 { /* var62 = array_instance Array[Object] */
841 var63 = 1;
842 var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object);
843 ((struct instance_array__NativeArray*)var64)->values[0] = (val*) var_recv;
844 ((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on <var62:Array[Object]>*/;
845 }
846 var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on <var62:Array[Object]>*/;
847 ((void (*)(val*, val*))(var_ss->class->vft[COLOR_abstract_collection__Sequence__append]))(var_ss, var65) /* append on <var_ss:Buffer>*/;
848 var66 = NEW_range__Range(&type_range__Rangekernel__Int);
849 var67 = 0;
850 var68 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
851 var69 = BOX_kernel__Int(var67); /* autobox from Int to Discrete */
852 var70 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
853 ((void (*)(val*, val*, val*))(var66->class->vft[COLOR_range__Range__without_last]))(var66, var69, var70) /* without_last on <var66:Range[Int]>*/;
854 var71 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:Range[Int]>*/;
855 for(;;) {
856 var72 = ((short int (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var71) /* is_ok on <var71:Iterator[nullable Object]>*/;
857 if(!var72) break;
858 var73 = ((val* (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__item]))(var71) /* item on <var71:Iterator[nullable Object]>*/;
859 var74 = ((struct instance_kernel__Int*)var73)->value; /* autounbox from nullable Object to Int */;
860 var_i = var74;
861 var75 = 1;
862 { /* Inline kernel#Int#+ (var_i,var75) */
863 var78 = var_i + var75;
864 var76 = var78;
865 goto RET_LABEL77;
866 RET_LABEL77:(void)0;
867 }
868 var79 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var76) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
869 var_a = var79;
870 var80 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
871 var81 = ((val* (*)(val*, long))(var80->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var80, var_i) /* [] on <var80:Array[MParameter]>*/;
872 var82 = ((val* (*)(val*))(var81->class->vft[COLOR_model__MParameter__mtype]))(var81) /* mtype on <var81:nullable Object(MParameter)>*/;
873 var_t = var82;
874 var83 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
875 { /* Inline kernel#Int#== (var_i,var83) */
876 var86 = var_i == var83;
877 var84 = var86;
878 goto RET_LABEL85;
879 RET_LABEL85:(void)0;
880 }
881 if (var84){
882 var87 = 1;
883 { /* Inline kernel#Int#+ (var_i,var87) */
884 var90 = var_i + var87;
885 var88 = var90;
886 goto RET_LABEL89;
887 RET_LABEL89:(void)0;
888 }
889 var91 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var88) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
890 var92 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var91) /* mcasttype on <var91:nullable Object(RuntimeVariable)>*/;
891 var_t = var92;
892 } else {
893 }
894 if (varonce93) {
895 var94 = varonce93;
896 } else {
897 var95 = ", ";
898 var96 = 2;
899 var97 = string__NativeString__to_s_with_length(var95, var96);
900 var94 = var97;
901 varonce93 = var94;
902 }
903 var98 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType>*/;
904 var99 = NEW_array__Array(&type_array__Arraykernel__Object);
905 { /* var99 = array_instance Array[Object] */
906 var100 = 2;
907 var101 = NEW_array__NativeArray(var100, &type_array__NativeArraykernel__Object);
908 ((struct instance_array__NativeArray*)var101)->values[0] = (val*) var94;
909 ((struct instance_array__NativeArray*)var101)->values[1] = (val*) var98;
910 ((void (*)(val*, val*, long))(var99->class->vft[COLOR_array__Array__with_native]))(var99, var101, var100) /* with_native on <var99:Array[Object]>*/;
911 }
912 var102 = ((val* (*)(val*))(var99->class->vft[COLOR_string__Object__to_s]))(var99) /* to_s on <var99:Array[Object]>*/;
913 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var102) /* append on <var_s:Buffer>*/;
914 var103 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_a, var_t) /* autobox on <self:SeparateCompilerVisitor>*/;
915 var_a = var103;
916 if (varonce104) {
917 var105 = varonce104;
918 } else {
919 var106 = ", ";
920 var107 = 2;
921 var108 = string__NativeString__to_s_with_length(var106, var107);
922 var105 = var108;
923 varonce104 = var105;
924 }
925 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
926 { /* var109 = array_instance Array[Object] */
927 var110 = 2;
928 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
929 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var105;
930 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var_a;
931 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
932 }
933 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
934 ((void (*)(val*, val*))(var_ss->class->vft[COLOR_abstract_collection__Sequence__append]))(var_ss, var112) /* append on <var_ss:Buffer>*/;
935 CONTINUE_label: (void)0;
936 ((void (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__next]))(var71) /* next on <var71:Iterator[nullable Object]>*/;
937 }
938 BREAK_label: (void)0;
939 var115 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
940 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var115) /* modelbuilder on <var115:AbstractCompiler(SeparateCompiler)>*/;
941 var117 = ((val* (*)(val*))(var116->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var116) /* toolcontext on <var116:ModelBuilder>*/;
942 var118 = ((val* (*)(val*))(var117->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(var117) /* opt_no_check_other on <var117:ToolContext>*/;
943 var119 = ((val* (*)(val*))(var118->class->vft[COLOR_opts__Option__value]))(var118) /* value on <var118:OptionBool>*/;
944 var120 = ((struct instance_kernel__Bool*)var119)->value; /* autounbox from nullable Object to Bool */;
945 var121 = !var120;
946 var_ = var121;
947 if (var121){
948 var114 = var_;
949 } else {
950 var122 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
951 if (varonce123) {
952 var124 = varonce123;
953 } else {
954 var125 = "==";
955 var126 = 2;
956 var127 = string__NativeString__to_s_with_length(var125, var126);
957 var124 = var127;
958 varonce123 = var124;
959 }
960 var128 = ((short int (*)(val*, val*))(var122->class->vft[COLOR_kernel__Object___61d_61d]))(var122, var124) /* == on <var122:String>*/;
961 var114 = var128;
962 }
963 var_129 = var114;
964 if (var114){
965 var113 = var_129;
966 } else {
967 var130 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
968 if (varonce131) {
969 var132 = varonce131;
970 } else {
971 var133 = "!=";
972 var134 = 2;
973 var135 = string__NativeString__to_s_with_length(var133, var134);
974 var132 = var135;
975 varonce131 = var132;
976 }
977 var136 = ((short int (*)(val*, val*))(var130->class->vft[COLOR_kernel__Object___61d_61d]))(var130, var132) /* == on <var130:String>*/;
978 var113 = var136;
979 }
980 var_consider_null = var113;
981 var138 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
982 /* <var138:MType> isa MNullableType */
983 cltype = type_model__MNullableType.color;
984 idtype = type_model__MNullableType.id;
985 if(cltype >= var138->type->table_size) {
986 var139 = 0;
987 } else {
988 var139 = var138->type->type_table[cltype] == idtype;
989 }
990 var_140 = var139;
991 if (var139){
992 var137 = var_consider_null;
993 } else {
994 var137 = var_140;
995 }
996 var_maybenull = var137;
997 if (var_maybenull){
998 if (varonce141) {
999 var142 = varonce141;
1000 } else {
1001 var143 = "if (";
1002 var144 = 4;
1003 var145 = string__NativeString__to_s_with_length(var143, var144);
1004 var142 = var145;
1005 varonce141 = var142;
1006 }
1007 if (varonce146) {
1008 var147 = varonce146;
1009 } else {
1010 var148 = " == NULL) {";
1011 var149 = 11;
1012 var150 = string__NativeString__to_s_with_length(var148, var149);
1013 var147 = var150;
1014 varonce146 = var147;
1015 }
1016 var151 = NEW_array__Array(&type_array__Arraykernel__Object);
1017 { /* var151 = array_instance Array[Object] */
1018 var152 = 3;
1019 var153 = NEW_array__NativeArray(var152, &type_array__NativeArraykernel__Object);
1020 ((struct instance_array__NativeArray*)var153)->values[0] = (val*) var142;
1021 ((struct instance_array__NativeArray*)var153)->values[1] = (val*) var_recv;
1022 ((struct instance_array__NativeArray*)var153)->values[2] = (val*) var147;
1023 ((void (*)(val*, val*, long))(var151->class->vft[COLOR_array__Array__with_native]))(var151, var153, var152) /* with_native on <var151:Array[Object]>*/;
1024 }
1025 var154 = ((val* (*)(val*))(var151->class->vft[COLOR_string__Object__to_s]))(var151) /* to_s on <var151:Array[Object]>*/;
1026 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var154) /* add on <self:SeparateCompilerVisitor>*/;
1027 var155 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1028 if (varonce156) {
1029 var157 = varonce156;
1030 } else {
1031 var158 = "==";
1032 var159 = 2;
1033 var160 = string__NativeString__to_s_with_length(var158, var159);
1034 var157 = var160;
1035 varonce156 = var157;
1036 }
1037 var161 = ((short int (*)(val*, val*))(var155->class->vft[COLOR_kernel__Object___61d_61d]))(var155, var157) /* == on <var155:String>*/;
1038 if (var161){
1039 var162 = NULL;
1040 if (var_res == NULL) {
1041 var163 = 0; /* is null */
1042 } else {
1043 var163 = 1; /* arg is null and recv is not */
1044 }
1045 if (!var163) {
1046 fprintf(stderr, "Runtime error: %s", "Assert failed");
1047 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1047);
1048 show_backtrace(1);
1049 }
1050 var164 = 1;
1051 var165 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var164) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1052 var_arg = var165;
1053 var166 = ((val* (*)(val*))(var_arg->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg) /* mcasttype on <var_arg:RuntimeVariable>*/;
1054 /* <var166:MType> isa MNullableType */
1055 cltype168 = type_model__MNullableType.color;
1056 idtype169 = type_model__MNullableType.id;
1057 if(cltype168 >= var166->type->table_size) {
1058 var167 = 0;
1059 } else {
1060 var167 = var166->type->type_table[cltype168] == idtype169;
1061 }
1062 if (var167){
1063 if (varonce170) {
1064 var171 = varonce170;
1065 } else {
1066 var172 = " = (";
1067 var173 = 4;
1068 var174 = string__NativeString__to_s_with_length(var172, var173);
1069 var171 = var174;
1070 varonce170 = var171;
1071 }
1072 if (varonce175) {
1073 var176 = varonce175;
1074 } else {
1075 var177 = " == NULL);";
1076 var178 = 10;
1077 var179 = string__NativeString__to_s_with_length(var177, var178);
1078 var176 = var179;
1079 varonce175 = var176;
1080 }
1081 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
1082 { /* var180 = array_instance Array[Object] */
1083 var181 = 4;
1084 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
1085 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var_res;
1086 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var171;
1087 ((struct instance_array__NativeArray*)var182)->values[2] = (val*) var_arg;
1088 ((struct instance_array__NativeArray*)var182)->values[3] = (val*) var176;
1089 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
1090 }
1091 var183 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
1092 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var183) /* add on <self:SeparateCompilerVisitor>*/;
1093 } else {
1094 var184 = ((val* (*)(val*))(var_arg->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg) /* mcasttype on <var_arg:RuntimeVariable>*/;
1095 /* <var184:MType> isa MNullType */
1096 cltype186 = type_model__MNullType.color;
1097 idtype187 = type_model__MNullType.id;
1098 if(cltype186 >= var184->type->table_size) {
1099 var185 = 0;
1100 } else {
1101 var185 = var184->type->type_table[cltype186] == idtype187;
1102 }
1103 if (var185){
1104 if (varonce188) {
1105 var189 = varonce188;
1106 } else {
1107 var190 = " = 1; /* is null */";
1108 var191 = 19;
1109 var192 = string__NativeString__to_s_with_length(var190, var191);
1110 var189 = var192;
1111 varonce188 = var189;
1112 }
1113 var193 = NEW_array__Array(&type_array__Arraykernel__Object);
1114 { /* var193 = array_instance Array[Object] */
1115 var194 = 2;
1116 var195 = NEW_array__NativeArray(var194, &type_array__NativeArraykernel__Object);
1117 ((struct instance_array__NativeArray*)var195)->values[0] = (val*) var_res;
1118 ((struct instance_array__NativeArray*)var195)->values[1] = (val*) var189;
1119 ((void (*)(val*, val*, long))(var193->class->vft[COLOR_array__Array__with_native]))(var193, var195, var194) /* with_native on <var193:Array[Object]>*/;
1120 }
1121 var196 = ((val* (*)(val*))(var193->class->vft[COLOR_string__Object__to_s]))(var193) /* to_s on <var193:Array[Object]>*/;
1122 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var196) /* add on <self:SeparateCompilerVisitor>*/;
1123 } else {
1124 if (varonce197) {
1125 var198 = varonce197;
1126 } else {
1127 var199 = " = 0; /* ";
1128 var200 = 9;
1129 var201 = string__NativeString__to_s_with_length(var199, var200);
1130 var198 = var201;
1131 varonce197 = var198;
1132 }
1133 var202 = ((val* (*)(val*))(var_arg->class->vft[COLOR_string__Object__inspect]))(var_arg) /* inspect on <var_arg:RuntimeVariable>*/;
1134 if (varonce203) {
1135 var204 = varonce203;
1136 } else {
1137 var205 = " cannot be null */";
1138 var206 = 18;
1139 var207 = string__NativeString__to_s_with_length(var205, var206);
1140 var204 = var207;
1141 varonce203 = var204;
1142 }
1143 var208 = NEW_array__Array(&type_array__Arraykernel__Object);
1144 { /* var208 = array_instance Array[Object] */
1145 var209 = 4;
1146 var210 = NEW_array__NativeArray(var209, &type_array__NativeArraykernel__Object);
1147 ((struct instance_array__NativeArray*)var210)->values[0] = (val*) var_res;
1148 ((struct instance_array__NativeArray*)var210)->values[1] = (val*) var198;
1149 ((struct instance_array__NativeArray*)var210)->values[2] = (val*) var202;
1150 ((struct instance_array__NativeArray*)var210)->values[3] = (val*) var204;
1151 ((void (*)(val*, val*, long))(var208->class->vft[COLOR_array__Array__with_native]))(var208, var210, var209) /* with_native on <var208:Array[Object]>*/;
1152 }
1153 var211 = ((val* (*)(val*))(var208->class->vft[COLOR_string__Object__to_s]))(var208) /* to_s on <var208:Array[Object]>*/;
1154 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var211) /* add on <self:SeparateCompilerVisitor>*/;
1155 }
1156 }
1157 } else {
1158 var212 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1159 if (varonce213) {
1160 var214 = varonce213;
1161 } else {
1162 var215 = "!=";
1163 var216 = 2;
1164 var217 = string__NativeString__to_s_with_length(var215, var216);
1165 var214 = var217;
1166 varonce213 = var214;
1167 }
1168 var218 = ((short int (*)(val*, val*))(var212->class->vft[COLOR_kernel__Object___61d_61d]))(var212, var214) /* == on <var212:String>*/;
1169 if (var218){
1170 var219 = NULL;
1171 if (var_res == NULL) {
1172 var220 = 0; /* is null */
1173 } else {
1174 var220 = 1; /* arg is null and recv is not */
1175 }
1176 if (!var220) {
1177 fprintf(stderr, "Runtime error: %s", "Assert failed");
1178 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1057);
1179 show_backtrace(1);
1180 }
1181 var221 = 1;
1182 var222 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var221) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1183 var_arg223 = var222;
1184 var224 = ((val* (*)(val*))(var_arg223->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg223) /* mcasttype on <var_arg223:RuntimeVariable>*/;
1185 /* <var224:MType> isa MNullableType */
1186 cltype226 = type_model__MNullableType.color;
1187 idtype227 = type_model__MNullableType.id;
1188 if(cltype226 >= var224->type->table_size) {
1189 var225 = 0;
1190 } else {
1191 var225 = var224->type->type_table[cltype226] == idtype227;
1192 }
1193 if (var225){
1194 if (varonce228) {
1195 var229 = varonce228;
1196 } else {
1197 var230 = " = (";
1198 var231 = 4;
1199 var232 = string__NativeString__to_s_with_length(var230, var231);
1200 var229 = var232;
1201 varonce228 = var229;
1202 }
1203 if (varonce233) {
1204 var234 = varonce233;
1205 } else {
1206 var235 = " != NULL);";
1207 var236 = 10;
1208 var237 = string__NativeString__to_s_with_length(var235, var236);
1209 var234 = var237;
1210 varonce233 = var234;
1211 }
1212 var238 = NEW_array__Array(&type_array__Arraykernel__Object);
1213 { /* var238 = array_instance Array[Object] */
1214 var239 = 4;
1215 var240 = NEW_array__NativeArray(var239, &type_array__NativeArraykernel__Object);
1216 ((struct instance_array__NativeArray*)var240)->values[0] = (val*) var_res;
1217 ((struct instance_array__NativeArray*)var240)->values[1] = (val*) var229;
1218 ((struct instance_array__NativeArray*)var240)->values[2] = (val*) var_arg223;
1219 ((struct instance_array__NativeArray*)var240)->values[3] = (val*) var234;
1220 ((void (*)(val*, val*, long))(var238->class->vft[COLOR_array__Array__with_native]))(var238, var240, var239) /* with_native on <var238:Array[Object]>*/;
1221 }
1222 var241 = ((val* (*)(val*))(var238->class->vft[COLOR_string__Object__to_s]))(var238) /* to_s on <var238:Array[Object]>*/;
1223 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var241) /* add on <self:SeparateCompilerVisitor>*/;
1224 } else {
1225 var242 = ((val* (*)(val*))(var_arg223->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg223) /* mcasttype on <var_arg223:RuntimeVariable>*/;
1226 /* <var242:MType> isa MNullType */
1227 cltype244 = type_model__MNullType.color;
1228 idtype245 = type_model__MNullType.id;
1229 if(cltype244 >= var242->type->table_size) {
1230 var243 = 0;
1231 } else {
1232 var243 = var242->type->type_table[cltype244] == idtype245;
1233 }
1234 if (var243){
1235 if (varonce246) {
1236 var247 = varonce246;
1237 } else {
1238 var248 = " = 0; /* is null */";
1239 var249 = 19;
1240 var250 = string__NativeString__to_s_with_length(var248, var249);
1241 var247 = var250;
1242 varonce246 = var247;
1243 }
1244 var251 = NEW_array__Array(&type_array__Arraykernel__Object);
1245 { /* var251 = array_instance Array[Object] */
1246 var252 = 2;
1247 var253 = NEW_array__NativeArray(var252, &type_array__NativeArraykernel__Object);
1248 ((struct instance_array__NativeArray*)var253)->values[0] = (val*) var_res;
1249 ((struct instance_array__NativeArray*)var253)->values[1] = (val*) var247;
1250 ((void (*)(val*, val*, long))(var251->class->vft[COLOR_array__Array__with_native]))(var251, var253, var252) /* with_native on <var251:Array[Object]>*/;
1251 }
1252 var254 = ((val* (*)(val*))(var251->class->vft[COLOR_string__Object__to_s]))(var251) /* to_s on <var251:Array[Object]>*/;
1253 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var254) /* add on <self:SeparateCompilerVisitor>*/;
1254 } else {
1255 if (varonce255) {
1256 var256 = varonce255;
1257 } else {
1258 var257 = " = 1; /* ";
1259 var258 = 9;
1260 var259 = string__NativeString__to_s_with_length(var257, var258);
1261 var256 = var259;
1262 varonce255 = var256;
1263 }
1264 var260 = ((val* (*)(val*))(var_arg223->class->vft[COLOR_string__Object__inspect]))(var_arg223) /* inspect on <var_arg223:RuntimeVariable>*/;
1265 if (varonce261) {
1266 var262 = varonce261;
1267 } else {
1268 var263 = " cannot be null */";
1269 var264 = 18;
1270 var265 = string__NativeString__to_s_with_length(var263, var264);
1271 var262 = var265;
1272 varonce261 = var262;
1273 }
1274 var266 = NEW_array__Array(&type_array__Arraykernel__Object);
1275 { /* var266 = array_instance Array[Object] */
1276 var267 = 4;
1277 var268 = NEW_array__NativeArray(var267, &type_array__NativeArraykernel__Object);
1278 ((struct instance_array__NativeArray*)var268)->values[0] = (val*) var_res;
1279 ((struct instance_array__NativeArray*)var268)->values[1] = (val*) var256;
1280 ((struct instance_array__NativeArray*)var268)->values[2] = (val*) var260;
1281 ((struct instance_array__NativeArray*)var268)->values[3] = (val*) var262;
1282 ((void (*)(val*, val*, long))(var266->class->vft[COLOR_array__Array__with_native]))(var266, var268, var267) /* with_native on <var266:Array[Object]>*/;
1283 }
1284 var269 = ((val* (*)(val*))(var266->class->vft[COLOR_string__Object__to_s]))(var266) /* to_s on <var266:Array[Object]>*/;
1285 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var269) /* add on <self:SeparateCompilerVisitor>*/;
1286 }
1287 }
1288 } else {
1289 if (varonce270) {
1290 var271 = varonce270;
1291 } else {
1292 var272 = "Receiver is null";
1293 var273 = 16;
1294 var274 = string__NativeString__to_s_with_length(var272, var273);
1295 var271 = var274;
1296 varonce270 = var271;
1297 }
1298 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var271) /* add_abort on <self:SeparateCompilerVisitor>*/;
1299 }
1300 }
1301 if (varonce275) {
1302 var276 = varonce275;
1303 } else {
1304 var277 = "} else {";
1305 var278 = 8;
1306 var279 = string__NativeString__to_s_with_length(var277, var278);
1307 var276 = var279;
1308 varonce275 = var276;
1309 }
1310 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var276) /* add on <self:SeparateCompilerVisitor>*/;
1311 } else {
1312 }
1313 var281 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1314 var282 = ((val* (*)(val*))(var281->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var281) /* modelbuilder on <var281:AbstractCompiler(SeparateCompiler)>*/;
1315 var283 = ((val* (*)(val*))(var282->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var282) /* toolcontext on <var282:ModelBuilder>*/;
1316 var284 = ((val* (*)(val*))(var283->class->vft[COLOR_separate_compiler__ToolContext__opt_no_shortcut_equate]))(var283) /* opt_no_shortcut_equate on <var283:ToolContext>*/;
1317 var285 = ((val* (*)(val*))(var284->class->vft[COLOR_opts__Option__value]))(var284) /* value on <var284:OptionBool>*/;
1318 var286 = ((struct instance_kernel__Bool*)var285)->value; /* autounbox from nullable Object to Bool */;
1319 var287 = !var286;
1320 var_288 = var287;
1321 if (var287){
1322 var290 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1323 if (varonce291) {
1324 var292 = varonce291;
1325 } else {
1326 var293 = "==";
1327 var294 = 2;
1328 var295 = string__NativeString__to_s_with_length(var293, var294);
1329 var292 = var295;
1330 varonce291 = var292;
1331 }
1332 var296 = ((short int (*)(val*, val*))(var290->class->vft[COLOR_kernel__Object___61d_61d]))(var290, var292) /* == on <var290:String>*/;
1333 var_297 = var296;
1334 if (var296){
1335 var289 = var_297;
1336 } else {
1337 var298 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1338 if (varonce299) {
1339 var300 = varonce299;
1340 } else {
1341 var301 = "!=";
1342 var302 = 2;
1343 var303 = string__NativeString__to_s_with_length(var301, var302);
1344 var300 = var303;
1345 varonce299 = var300;
1346 }
1347 var304 = ((short int (*)(val*, val*))(var298->class->vft[COLOR_kernel__Object___61d_61d]))(var298, var300) /* == on <var298:String>*/;
1348 var289 = var304;
1349 }
1350 var280 = var289;
1351 } else {
1352 var280 = var_288;
1353 }
1354 if (var280){
1355 var305 = NULL;
1356 if (var_res == NULL) {
1357 var306 = 0; /* is null */
1358 } else {
1359 var306 = 1; /* arg is null and recv is not */
1360 }
1361 if (!var306) {
1362 fprintf(stderr, "Runtime error: %s", "Assert failed");
1363 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1072);
1364 show_backtrace(1);
1365 }
1366 var307 = 1;
1367 var308 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var307) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1368 var_arg309 = var308;
1369 var310 = ((val* (*)(val*))(var_arg309->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg309) /* mcasttype on <var_arg309:RuntimeVariable>*/;
1370 /* <var310:MType> isa MNullType */
1371 cltype312 = type_model__MNullType.color;
1372 idtype313 = type_model__MNullType.id;
1373 if(cltype312 >= var310->type->table_size) {
1374 var311 = 0;
1375 } else {
1376 var311 = var310->type->type_table[cltype312] == idtype313;
1377 }
1378 if (var311){
1379 var314 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1380 if (varonce315) {
1381 var316 = varonce315;
1382 } else {
1383 var317 = "==";
1384 var318 = 2;
1385 var319 = string__NativeString__to_s_with_length(var317, var318);
1386 var316 = var319;
1387 varonce315 = var316;
1388 }
1389 var320 = ((short int (*)(val*, val*))(var314->class->vft[COLOR_kernel__Object___61d_61d]))(var314, var316) /* == on <var314:String>*/;
1390 if (var320){
1391 if (varonce321) {
1392 var322 = varonce321;
1393 } else {
1394 var323 = " = 0; /* arg is null but recv is not */";
1395 var324 = 39;
1396 var325 = string__NativeString__to_s_with_length(var323, var324);
1397 var322 = var325;
1398 varonce321 = var322;
1399 }
1400 var326 = NEW_array__Array(&type_array__Arraykernel__Object);
1401 { /* var326 = array_instance Array[Object] */
1402 var327 = 2;
1403 var328 = NEW_array__NativeArray(var327, &type_array__NativeArraykernel__Object);
1404 ((struct instance_array__NativeArray*)var328)->values[0] = (val*) var_res;
1405 ((struct instance_array__NativeArray*)var328)->values[1] = (val*) var322;
1406 ((void (*)(val*, val*, long))(var326->class->vft[COLOR_array__Array__with_native]))(var326, var328, var327) /* with_native on <var326:Array[Object]>*/;
1407 }
1408 var329 = ((val* (*)(val*))(var326->class->vft[COLOR_string__Object__to_s]))(var326) /* to_s on <var326:Array[Object]>*/;
1409 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var329) /* add on <self:SeparateCompilerVisitor>*/;
1410 } else {
1411 if (varonce330) {
1412 var331 = varonce330;
1413 } else {
1414 var332 = " = 1; /* arg is null and recv is not */";
1415 var333 = 39;
1416 var334 = string__NativeString__to_s_with_length(var332, var333);
1417 var331 = var334;
1418 varonce330 = var331;
1419 }
1420 var335 = NEW_array__Array(&type_array__Arraykernel__Object);
1421 { /* var335 = array_instance Array[Object] */
1422 var336 = 2;
1423 var337 = NEW_array__NativeArray(var336, &type_array__NativeArraykernel__Object);
1424 ((struct instance_array__NativeArray*)var337)->values[0] = (val*) var_res;
1425 ((struct instance_array__NativeArray*)var337)->values[1] = (val*) var331;
1426 ((void (*)(val*, val*, long))(var335->class->vft[COLOR_array__Array__with_native]))(var335, var337, var336) /* with_native on <var335:Array[Object]>*/;
1427 }
1428 var338 = ((val* (*)(val*))(var335->class->vft[COLOR_string__Object__to_s]))(var335) /* to_s on <var335:Array[Object]>*/;
1429 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var338) /* add on <self:SeparateCompilerVisitor>*/;
1430 }
1431 if (var_maybenull){
1432 if (varonce339) {
1433 var340 = varonce339;
1434 } else {
1435 var341 = "}";
1436 var342 = 1;
1437 var343 = string__NativeString__to_s_with_length(var341, var342);
1438 var340 = var343;
1439 varonce339 = var340;
1440 }
1441 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var340) /* add on <self:SeparateCompilerVisitor>*/;
1442 } else {
1443 }
1444 var = var_res;
1445 goto RET_LABEL;
1446 } else {
1447 }
1448 } else {
1449 }
1450 var344 = NULL;
1451 if (var_ret == NULL) {
1452 var345 = 1; /* is null */
1453 } else {
1454 var345 = 0; /* arg is null but recv is not */
1455 }
1456 if (var345){
1457 if (varonce346) {
1458 var347 = varonce346;
1459 } else {
1460 var348 = "void";
1461 var349 = 4;
1462 var350 = string__NativeString__to_s_with_length(var348, var349);
1463 var347 = var350;
1464 varonce346 = var347;
1465 }
1466 var_r = var347;
1467 } else {
1468 var351 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
1469 var_r = var351;
1470 }
1471 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var_const_color) /* require_declaration on <self:SeparateCompilerVisitor>*/;
1472 var352 = NEW_array__Array(&type_array__Arraykernel__Object);
1473 var353 = 15;
1474 ((void (*)(val*, long))(var352->class->vft[COLOR_array__Array__with_capacity]))(var352, var353) /* with_capacity on <var352:Array[Object]>*/;
1475 var_354 = var352;
1476 if (varonce355) {
1477 var356 = varonce355;
1478 } else {
1479 var357 = "((";
1480 var358 = 2;
1481 var359 = string__NativeString__to_s_with_length(var357, var358);
1482 var356 = var359;
1483 varonce355 = var356;
1484 }
1485 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var356) /* add on <var_354:Array[Object]>*/;
1486 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var_r) /* add on <var_354:Array[Object]>*/;
1487 if (varonce360) {
1488 var361 = varonce360;
1489 } else {
1490 var362 = " (*)(";
1491 var363 = 5;
1492 var364 = string__NativeString__to_s_with_length(var362, var363);
1493 var361 = var364;
1494 varonce360 = var361;
1495 }
1496 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var361) /* add on <var_354:Array[Object]>*/;
1497 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var_s) /* add on <var_354:Array[Object]>*/;
1498 if (varonce365) {
1499 var366 = varonce365;
1500 } else {
1501 var367 = "))(";
1502 var368 = 3;
1503 var369 = string__NativeString__to_s_with_length(var367, var368);
1504 var366 = var369;
1505 varonce365 = var366;
1506 }
1507 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var366) /* add on <var_354:Array[Object]>*/;
1508 var370 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1509 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var370) /* add on <var_354:Array[Object]>*/;
1510 if (varonce371) {
1511 var372 = varonce371;
1512 } else {
1513 var373 = "->class->vft[";
1514 var374 = 13;
1515 var375 = string__NativeString__to_s_with_length(var373, var374);
1516 var372 = var375;
1517 varonce371 = var372;
1518 }
1519 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var372) /* add on <var_354:Array[Object]>*/;
1520 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var_const_color) /* add on <var_354:Array[Object]>*/;
1521 if (varonce376) {
1522 var377 = varonce376;
1523 } else {
1524 var378 = "]))(";
1525 var379 = 4;
1526 var380 = string__NativeString__to_s_with_length(var378, var379);
1527 var377 = var380;
1528 varonce376 = var377;
1529 }
1530 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var377) /* add on <var_354:Array[Object]>*/;
1531 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var_ss) /* add on <var_354:Array[Object]>*/;
1532 if (varonce381) {
1533 var382 = varonce381;
1534 } else {
1535 var383 = ") /* ";
1536 var384 = 5;
1537 var385 = string__NativeString__to_s_with_length(var383, var384);
1538 var382 = var385;
1539 varonce381 = var382;
1540 }
1541 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var382) /* add on <var_354:Array[Object]>*/;
1542 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var_mmethod) /* add on <var_354:Array[Object]>*/;
1543 if (varonce386) {
1544 var387 = varonce386;
1545 } else {
1546 var388 = " on ";
1547 var389 = 4;
1548 var390 = string__NativeString__to_s_with_length(var388, var389);
1549 var387 = var390;
1550 varonce386 = var387;
1551 }
1552 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var387) /* add on <var_354:Array[Object]>*/;
1553 var391 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1554 var392 = ((val* (*)(val*))(var391->class->vft[COLOR_string__Object__inspect]))(var391) /* inspect on <var391:nullable Object(RuntimeVariable)>*/;
1555 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var392) /* add on <var_354:Array[Object]>*/;
1556 if (varonce393) {
1557 var394 = varonce393;
1558 } else {
1559 var395 = "*/";
1560 var396 = 2;
1561 var397 = string__NativeString__to_s_with_length(var395, var396);
1562 var394 = var397;
1563 varonce393 = var394;
1564 }
1565 ((void (*)(val*, val*))(var_354->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_354, var394) /* add on <var_354:Array[Object]>*/;
1566 var398 = ((val* (*)(val*))(var_354->class->vft[COLOR_string__Object__to_s]))(var_354) /* to_s on <var_354:Array[Object]>*/;
1567 var_call = var398;
1568 var399 = NULL;
1569 if (var_res == NULL) {
1570 var400 = 0; /* is null */
1571 } else {
1572 var400 = 1; /* arg is null and recv is not */
1573 }
1574 if (var400){
1575 if (varonce401) {
1576 var402 = varonce401;
1577 } else {
1578 var403 = " = ";
1579 var404 = 3;
1580 var405 = string__NativeString__to_s_with_length(var403, var404);
1581 var402 = var405;
1582 varonce401 = var402;
1583 }
1584 if (varonce406) {
1585 var407 = varonce406;
1586 } else {
1587 var408 = ";";
1588 var409 = 1;
1589 var410 = string__NativeString__to_s_with_length(var408, var409);
1590 var407 = var410;
1591 varonce406 = var407;
1592 }
1593 var411 = NEW_array__Array(&type_array__Arraykernel__Object);
1594 { /* var411 = array_instance Array[Object] */
1595 var412 = 4;
1596 var413 = NEW_array__NativeArray(var412, &type_array__NativeArraykernel__Object);
1597 ((struct instance_array__NativeArray*)var413)->values[0] = (val*) var_res;
1598 ((struct instance_array__NativeArray*)var413)->values[1] = (val*) var402;
1599 ((struct instance_array__NativeArray*)var413)->values[2] = (val*) var_call;
1600 ((struct instance_array__NativeArray*)var413)->values[3] = (val*) var407;
1601 ((void (*)(val*, val*, long))(var411->class->vft[COLOR_array__Array__with_native]))(var411, var413, var412) /* with_native on <var411:Array[Object]>*/;
1602 }
1603 var414 = ((val* (*)(val*))(var411->class->vft[COLOR_string__Object__to_s]))(var411) /* to_s on <var411:Array[Object]>*/;
1604 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var414) /* add on <self:SeparateCompilerVisitor>*/;
1605 } else {
1606 if (varonce415) {
1607 var416 = varonce415;
1608 } else {
1609 var417 = ";";
1610 var418 = 1;
1611 var419 = string__NativeString__to_s_with_length(var417, var418);
1612 var416 = var419;
1613 varonce415 = var416;
1614 }
1615 var420 = NEW_array__Array(&type_array__Arraykernel__Object);
1616 { /* var420 = array_instance Array[Object] */
1617 var421 = 2;
1618 var422 = NEW_array__NativeArray(var421, &type_array__NativeArraykernel__Object);
1619 ((struct instance_array__NativeArray*)var422)->values[0] = (val*) var_call;
1620 ((struct instance_array__NativeArray*)var422)->values[1] = (val*) var416;
1621 ((void (*)(val*, val*, long))(var420->class->vft[COLOR_array__Array__with_native]))(var420, var422, var421) /* with_native on <var420:Array[Object]>*/;
1622 }
1623 var423 = ((val* (*)(val*))(var420->class->vft[COLOR_string__Object__to_s]))(var420) /* to_s on <var420:Array[Object]>*/;
1624 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var423) /* add on <self:SeparateCompilerVisitor>*/;
1625 }
1626 if (var_maybenull){
1627 if (varonce424) {
1628 var425 = varonce424;
1629 } else {
1630 var426 = "}";
1631 var427 = 1;
1632 var428 = string__NativeString__to_s_with_length(var426, var427);
1633 var425 = var428;
1634 varonce424 = var425;
1635 }
1636 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var425) /* add on <self:SeparateCompilerVisitor>*/;
1637 } else {
1638 }
1639 var = var_res;
1640 goto RET_LABEL;
1641 RET_LABEL:;
1642 return var;
1643 }
1644 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: Object, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
1645 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
1646 val* var /* : nullable RuntimeVariable */;
1647 val* var1 /* : nullable RuntimeVariable */;
1648 var1 = separate_compiler__SeparateCompilerVisitor__table_send(self, p0, p1, p2);
1649 var = var1;
1650 RET_LABEL:;
1651 return var;
1652 }
1653 /* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
1654 val* separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
1655 val* var /* : nullable RuntimeVariable */;
1656 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
1657 val* var_recvtype /* var recvtype: MClassType */;
1658 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1659 long var1 /* : Int */;
1660 val* var2 /* : nullable MSignature */;
1661 long var3 /* : Int */;
1662 long var4 /* : Int */;
1663 long var5 /* : Int */;
1664 long var7 /* : Int */;
1665 short int var8 /* : Bool */;
1666 short int var10 /* : Bool */;
1667 static val* varonce;
1668 val* var11 /* : String */;
1669 char* var12 /* : NativeString */;
1670 long var13 /* : Int */;
1671 val* var14 /* : String */;
1672 static val* varonce15;
1673 val* var16 /* : String */;
1674 char* var17 /* : NativeString */;
1675 long var18 /* : Int */;
1676 val* var19 /* : String */;
1677 long var20 /* : Int */;
1678 static val* varonce21;
1679 val* var22 /* : String */;
1680 char* var23 /* : NativeString */;
1681 long var24 /* : Int */;
1682 val* var25 /* : String */;
1683 val* var26 /* : Array[Object] */;
1684 long var27 /* : Int */;
1685 val* var28 /* : NativeArray[Object] */;
1686 val* var29 /* : Object */;
1687 val* var30 /* : String */;
1688 val* var31 /* : nullable MSignature */;
1689 val* var32 /* : nullable MType */;
1690 val* var_ret /* var ret: nullable MType */;
1691 val* var33 /* : MProperty */;
1692 short int var34 /* : Bool */;
1693 val* var35 /* : nullable Object */;
1694 val* var36 /* : MType */;
1695 val* var37 /* : RuntimeVariable */;
1696 val* var_res /* var res: nullable RuntimeVariable */;
1697 val* var38 /* : null */;
1698 short int var39 /* : Bool */;
1699 val* var40 /* : null */;
1700 val* var41 /* : MClassDef */;
1701 val* var42 /* : MClassType */;
1702 val* var43 /* : MClassDef */;
1703 val* var44 /* : MClassType */;
1704 val* var45 /* : MClassDef */;
1705 val* var46 /* : MModule */;
1706 short int var47 /* : Bool */;
1707 val* var48 /* : MType */;
1708 val* var49 /* : RuntimeVariable */;
1709 short int var50 /* : Bool */;
1710 short int var51 /* : Bool */;
1711 val* var52 /* : AbstractCompiler */;
1712 val* var53 /* : ModelBuilder */;
1713 val* var54 /* : HashMap[MPropDef, APropdef] */;
1714 short int var55 /* : Bool */;
1715 short int var_ /* var : Bool */;
1716 val* var56 /* : AbstractCompiler */;
1717 val* var57 /* : ModelBuilder */;
1718 val* var58 /* : HashMap[MPropDef, APropdef] */;
1719 val* var59 /* : nullable Object */;
1720 short int var60 /* : Bool */;
1721 int cltype;
1722 int idtype;
1723 short int var_61 /* var : Bool */;
1724 val* var62 /* : AbstractCompiler */;
1725 val* var63 /* : ModelBuilder */;
1726 val* var64 /* : ToolContext */;
1727 val* var65 /* : OptionBool */;
1728 val* var66 /* : nullable Object */;
1729 short int var67 /* : Bool */;
1730 short int var68 /* : Bool */;
1731 val* var69 /* : Frame */;
1732 val* var_frame /* var frame: Frame */;
1733 static val* varonce70;
1734 val* var71 /* : String */;
1735 char* var72 /* : NativeString */;
1736 long var73 /* : Int */;
1737 val* var74 /* : String */;
1738 val* var75 /* : String */;
1739 val* var76 /* : nullable Frame */;
1740 val* var_old_frame /* var old_frame: nullable Frame */;
1741 static val* varonce77;
1742 val* var78 /* : String */;
1743 char* var79 /* : NativeString */;
1744 long var80 /* : Int */;
1745 val* var81 /* : String */;
1746 static val* varonce82;
1747 val* var83 /* : String */;
1748 char* var84 /* : NativeString */;
1749 long var85 /* : Int */;
1750 val* var86 /* : String */;
1751 static val* varonce87;
1752 val* var88 /* : String */;
1753 char* var89 /* : NativeString */;
1754 long var90 /* : Int */;
1755 val* var91 /* : String */;
1756 val* var92 /* : String */;
1757 static val* varonce93;
1758 val* var94 /* : String */;
1759 char* var95 /* : NativeString */;
1760 long var96 /* : Int */;
1761 val* var97 /* : String */;
1762 val* var98 /* : Array[Object] */;
1763 long var99 /* : Int */;
1764 val* var100 /* : NativeArray[Object] */;
1765 val* var101 /* : String */;
1766 val* var102 /* : nullable RuntimeVariable */;
1767 val* var103 /* : nullable String */;
1768 static val* varonce104;
1769 val* var105 /* : String */;
1770 char* var106 /* : NativeString */;
1771 long var107 /* : Int */;
1772 val* var108 /* : String */;
1773 val* var109 /* : Array[Object] */;
1774 long var110 /* : Int */;
1775 val* var111 /* : NativeArray[Object] */;
1776 val* var112 /* : String */;
1777 static val* varonce113;
1778 val* var114 /* : String */;
1779 char* var115 /* : NativeString */;
1780 long var116 /* : Int */;
1781 val* var117 /* : String */;
1782 val* var118 /* : String */;
1783 val* var119 /* : null */;
1784 short int var120 /* : Bool */;
1785 val* var121 /* : String */;
1786 static val* varonce122;
1787 val* var123 /* : String */;
1788 char* var124 /* : NativeString */;
1789 long var125 /* : Int */;
1790 val* var126 /* : String */;
1791 static val* varonce127;
1792 val* var128 /* : String */;
1793 char* var129 /* : NativeString */;
1794 long var130 /* : Int */;
1795 val* var131 /* : String */;
1796 val* var132 /* : String */;
1797 static val* varonce133;
1798 val* var134 /* : String */;
1799 char* var135 /* : NativeString */;
1800 long var136 /* : Int */;
1801 val* var137 /* : String */;
1802 val* var138 /* : Array[Object] */;
1803 long var139 /* : Int */;
1804 val* var140 /* : NativeArray[Object] */;
1805 val* var141 /* : String */;
1806 val* var142 /* : null */;
1807 static val* varonce143;
1808 val* var144 /* : String */;
1809 char* var145 /* : NativeString */;
1810 long var146 /* : Int */;
1811 val* var147 /* : String */;
1812 val* var148 /* : String */;
1813 static val* varonce149;
1814 val* var150 /* : String */;
1815 char* var151 /* : NativeString */;
1816 long var152 /* : Int */;
1817 val* var153 /* : String */;
1818 static val* varonce154;
1819 val* var155 /* : String */;
1820 char* var156 /* : NativeString */;
1821 long var157 /* : Int */;
1822 val* var158 /* : String */;
1823 val* var159 /* : String */;
1824 static val* varonce160;
1825 val* var161 /* : String */;
1826 char* var162 /* : NativeString */;
1827 long var163 /* : Int */;
1828 val* var164 /* : String */;
1829 val* var165 /* : Array[Object] */;
1830 long var166 /* : Int */;
1831 val* var167 /* : NativeArray[Object] */;
1832 val* var168 /* : String */;
1833 var_mmethoddef = p0;
1834 var_recvtype = p1;
1835 var_arguments = p2;
1836 var1 = ((long (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_arguments) /* length on <var_arguments:Array[RuntimeVariable]>*/;
1837 var2 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
1838 if (var2 == NULL) {
1839 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1840 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1108);
1841 show_backtrace(1);
1842 } else {
1843 var3 = ((long (*)(val*))(var2->class->vft[COLOR_model__MSignature__arity]))(var2) /* arity on <var2:nullable MSignature>*/;
1844 }
1845 var4 = 1;
1846 { /* Inline kernel#Int#+ (var3,var4) */
1847 var7 = var3 + var4;
1848 var5 = var7;
1849 goto RET_LABEL6;
1850 RET_LABEL6:(void)0;
1851 }
1852 { /* Inline kernel#Int#== (var1,var5) */
1853 var10 = var1 == var5;
1854 var8 = var10;
1855 goto RET_LABEL9;
1856 RET_LABEL9:(void)0;
1857 }
1858 if (!var8) {
1859 if (varonce) {
1860 var11 = varonce;
1861 } else {
1862 var12 = "Invalid arity for ";
1863 var13 = 18;
1864 var14 = string__NativeString__to_s_with_length(var12, var13);
1865 var11 = var14;
1866 varonce = var11;
1867 }
1868 if (varonce15) {
1869 var16 = varonce15;
1870 } else {
1871 var17 = ". ";
1872 var18 = 2;
1873 var19 = string__NativeString__to_s_with_length(var17, var18);
1874 var16 = var19;
1875 varonce15 = var16;
1876 }
1877 var20 = ((long (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_arguments) /* length on <var_arguments:Array[RuntimeVariable]>*/;
1878 if (varonce21) {
1879 var22 = varonce21;
1880 } else {
1881 var23 = " arguments given.";
1882 var24 = 17;
1883 var25 = string__NativeString__to_s_with_length(var23, var24);
1884 var22 = var25;
1885 varonce21 = var22;
1886 }
1887 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
1888 { /* var26 = array_instance Array[Object] */
1889 var27 = 5;
1890 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
1891 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var11;
1892 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_mmethoddef;
1893 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var16;
1894 var29 = BOX_kernel__Int(var20); /* autobox from Int to Object */
1895 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var29;
1896 ((struct instance_array__NativeArray*)var28)->values[4] = (val*) var22;
1897 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
1898 }
1899 var30 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
1900 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__debug]))(self, var30) /* debug on <self:SeparateCompilerVisitor>*/;
1901 fprintf(stderr, "Runtime error: %s", "Assert failed");
1902 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1108);
1903 show_backtrace(1);
1904 }
1905 var31 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
1906 if (var31 == NULL) {
1907 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1908 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1111);
1909 show_backtrace(1);
1910 } else {
1911 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_model__MSignature__return_mtype]))(var31) /* return_mtype on <var31:nullable MSignature>*/;
1912 }
1913 var_ret = var32;
1914 var33 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1915 var34 = ((short int (*)(val*))(var33->class->vft[COLOR_model__MMethod__is_new]))(var33) /* is_new on <var33:MProperty(MMethod)>*/;
1916 if (var34){
1917 var35 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1918 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var35) /* mtype on <var35:nullable Object(RuntimeVariable)>*/;
1919 var_ret = var36;
1920 var37 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
1921 var_res = var37;
1922 } else {
1923 var38 = NULL;
1924 if (var_ret == NULL) {
1925 var39 = 1; /* is null */
1926 } else {
1927 var39 = 0; /* arg is null but recv is not */
1928 }
1929 if (var39){
1930 var40 = NULL;
1931 var_res = var40;
1932 } else {
1933 var41 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1934 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_model__MClassDef__bound_mtype]))(var41) /* bound_mtype on <var41:MClassDef>*/;
1935 var43 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1936 var44 = ((val* (*)(val*))(var43->class->vft[COLOR_model__MClassDef__bound_mtype]))(var43) /* bound_mtype on <var43:MClassDef>*/;
1937 var45 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1938 var46 = ((val* (*)(val*))(var45->class->vft[COLOR_model__MClassDef__mmodule]))(var45) /* mmodule on <var45:MClassDef>*/;
1939 var47 = 1;
1940 var48 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var42, var44, var46, var47) /* resolve_for on <var_ret:nullable MType(MType)>*/;
1941 var_ret = var48;
1942 var49 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
1943 var_res = var49;
1944 }
1945 }
1946 var52 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1947 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var52) /* modelbuilder on <var52:AbstractCompiler(SeparateCompiler)>*/;
1948 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var53) /* mpropdef2npropdef on <var53:ModelBuilder>*/;
1949 var55 = ((short int (*)(val*, val*))(var54->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var54, var_mmethoddef) /* has_key on <var54:HashMap[MPropDef, APropdef]>*/;
1950 var_ = var55;
1951 if (var55){
1952 var56 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1953 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var56) /* modelbuilder on <var56:AbstractCompiler(SeparateCompiler)>*/;
1954 var58 = ((val* (*)(val*))(var57->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var57) /* mpropdef2npropdef on <var57:ModelBuilder>*/;
1955 var59 = ((val* (*)(val*, val*))(var58->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var58, var_mmethoddef) /* [] on <var58:HashMap[MPropDef, APropdef]>*/;
1956 /* <var59:nullable Object(APropdef)> isa AInternMethPropdef */
1957 cltype = type_parser_nodes__AInternMethPropdef.color;
1958 idtype = type_parser_nodes__AInternMethPropdef.id;
1959 if(cltype >= var59->type->table_size) {
1960 var60 = 0;
1961 } else {
1962 var60 = var59->type->type_table[cltype] == idtype;
1963 }
1964 var51 = var60;
1965 } else {
1966 var51 = var_;
1967 }
1968 var_61 = var51;
1969 if (var51){
1970 var62 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1971 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var62) /* modelbuilder on <var62:AbstractCompiler(SeparateCompiler)>*/;
1972 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var63) /* toolcontext on <var63:ModelBuilder>*/;
1973 var65 = ((val* (*)(val*))(var64->class->vft[COLOR_separate_compiler__ToolContext__opt_no_inline_intern]))(var64) /* opt_no_inline_intern on <var64:ToolContext>*/;
1974 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_opts__Option__value]))(var65) /* value on <var65:OptionBool>*/;
1975 var67 = ((struct instance_kernel__Bool*)var66)->value; /* autounbox from nullable Object to Bool */;
1976 var68 = !var67;
1977 var50 = var68;
1978 } else {
1979 var50 = var_61;
1980 }
1981 if (var50){
1982 var69 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
1983 ((void (*)(val*, val*, val*, val*, val*))(var69->class->vft[COLOR_abstract_compiler__Frame__init]))(var69, self, var_mmethoddef, var_recvtype, var_arguments) /* init on <var69:Frame>*/;
1984 var_frame = var69;
1985 if (varonce70) {
1986 var71 = varonce70;
1987 } else {
1988 var72 = "RET_LABEL";
1989 var73 = 9;
1990 var74 = string__NativeString__to_s_with_length(var72, var73);
1991 var71 = var74;
1992 varonce70 = var71;
1993 }
1994 var75 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var71) /* get_name on <self:SeparateCompilerVisitor>*/;
1995 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var75) /* returnlabel= on <var_frame:Frame>*/;
1996 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var_res) /* returnvar= on <var_frame:Frame>*/;
1997 var76 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
1998 var_old_frame = var76;
1999 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2000 if (varonce77) {
2001 var78 = varonce77;
2002 } else {
2003 var79 = "{ /* Inline ";
2004 var80 = 12;
2005 var81 = string__NativeString__to_s_with_length(var79, var80);
2006 var78 = var81;
2007 varonce77 = var78;
2008 }
2009 if (varonce82) {
2010 var83 = varonce82;
2011 } else {
2012 var84 = " (";
2013 var85 = 2;
2014 var86 = string__NativeString__to_s_with_length(var84, var85);
2015 var83 = var86;
2016 varonce82 = var83;
2017 }
2018 if (varonce87) {
2019 var88 = varonce87;
2020 } else {
2021 var89 = ",";
2022 var90 = 1;
2023 var91 = string__NativeString__to_s_with_length(var89, var90);
2024 var88 = var91;
2025 varonce87 = var88;
2026 }
2027 var92 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var88) /* join on <var_arguments:Array[RuntimeVariable]>*/;
2028 if (varonce93) {
2029 var94 = varonce93;
2030 } else {
2031 var95 = ") */";
2032 var96 = 4;
2033 var97 = string__NativeString__to_s_with_length(var95, var96);
2034 var94 = var97;
2035 varonce93 = var94;
2036 }
2037 var98 = NEW_array__Array(&type_array__Arraykernel__Object);
2038 { /* var98 = array_instance Array[Object] */
2039 var99 = 5;
2040 var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object);
2041 ((struct instance_array__NativeArray*)var100)->values[0] = (val*) var78;
2042 ((struct instance_array__NativeArray*)var100)->values[1] = (val*) var_mmethoddef;
2043 ((struct instance_array__NativeArray*)var100)->values[2] = (val*) var83;
2044 ((struct instance_array__NativeArray*)var100)->values[3] = (val*) var92;
2045 ((struct instance_array__NativeArray*)var100)->values[4] = (val*) var94;
2046 ((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on <var98:Array[Object]>*/;
2047 }
2048 var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on <var98:Array[Object]>*/;
2049 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var101) /* add on <self:SeparateCompilerVisitor>*/;
2050 var102 = ((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>*/;
2051 var102;
2052 var103 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
2053 if (var103 == NULL) {
2054 fprintf(stderr, "Runtime error: %s", "Cast failed");
2055 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1132);
2056 show_backtrace(1);
2057 }
2058 if (varonce104) {
2059 var105 = varonce104;
2060 } else {
2061 var106 = ":(void)0;";
2062 var107 = 9;
2063 var108 = string__NativeString__to_s_with_length(var106, var107);
2064 var105 = var108;
2065 varonce104 = var105;
2066 }
2067 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
2068 { /* var109 = array_instance Array[Object] */
2069 var110 = 2;
2070 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
2071 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var103;
2072 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var105;
2073 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
2074 }
2075 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
2076 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var112) /* add on <self:SeparateCompilerVisitor>*/;
2077 if (varonce113) {
2078 var114 = varonce113;
2079 } else {
2080 var115 = "}";
2081 var116 = 1;
2082 var117 = string__NativeString__to_s_with_length(var115, var116);
2083 var114 = var117;
2084 varonce113 = var114;
2085 }
2086 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var114) /* add on <self:SeparateCompilerVisitor>*/;
2087 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_old_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2088 var = var_res;
2089 goto RET_LABEL;
2090 } else {
2091 }
2092 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__adapt_signature]))(self, var_mmethoddef, var_arguments) /* adapt_signature on <self:SeparateCompilerVisitor>*/;
2093 var118 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
2094 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var118) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2095 var119 = NULL;
2096 if (var_res == NULL) {
2097 var120 = 1; /* is null */
2098 } else {
2099 var120 = 0; /* arg is null but recv is not */
2100 }
2101 if (var120){
2102 var121 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
2103 if (varonce122) {
2104 var123 = varonce122;
2105 } else {
2106 var124 = "(";
2107 var125 = 1;
2108 var126 = string__NativeString__to_s_with_length(var124, var125);
2109 var123 = var126;
2110 varonce122 = var123;
2111 }
2112 if (varonce127) {
2113 var128 = varonce127;
2114 } else {
2115 var129 = ", ";
2116 var130 = 2;
2117 var131 = string__NativeString__to_s_with_length(var129, var130);
2118 var128 = var131;
2119 varonce127 = var128;
2120 }
2121 var132 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var128) /* join on <var_arguments:Array[RuntimeVariable]>*/;
2122 if (varonce133) {
2123 var134 = varonce133;
2124 } else {
2125 var135 = ");";
2126 var136 = 2;
2127 var137 = string__NativeString__to_s_with_length(var135, var136);
2128 var134 = var137;
2129 varonce133 = var134;
2130 }
2131 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
2132 { /* var138 = array_instance Array[Object] */
2133 var139 = 4;
2134 var140 = NEW_array__NativeArray(var139, &type_array__NativeArraykernel__Object);
2135 ((struct instance_array__NativeArray*)var140)->values[0] = (val*) var121;
2136 ((struct instance_array__NativeArray*)var140)->values[1] = (val*) var123;
2137 ((struct instance_array__NativeArray*)var140)->values[2] = (val*) var132;
2138 ((struct instance_array__NativeArray*)var140)->values[3] = (val*) var134;
2139 ((void (*)(val*, val*, long))(var138->class->vft[COLOR_array__Array__with_native]))(var138, var140, var139) /* with_native on <var138:Array[Object]>*/;
2140 }
2141 var141 = ((val* (*)(val*))(var138->class->vft[COLOR_string__Object__to_s]))(var138) /* to_s on <var138:Array[Object]>*/;
2142 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var141) /* add on <self:SeparateCompilerVisitor>*/;
2143 var142 = NULL;
2144 var = var142;
2145 goto RET_LABEL;
2146 } else {
2147 if (varonce143) {
2148 var144 = varonce143;
2149 } else {
2150 var145 = " = ";
2151 var146 = 3;
2152 var147 = string__NativeString__to_s_with_length(var145, var146);
2153 var144 = var147;
2154 varonce143 = var144;
2155 }
2156 var148 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
2157 if (varonce149) {
2158 var150 = varonce149;
2159 } else {
2160 var151 = "(";
2161 var152 = 1;
2162 var153 = string__NativeString__to_s_with_length(var151, var152);
2163 var150 = var153;
2164 varonce149 = var150;
2165 }
2166 if (varonce154) {
2167 var155 = varonce154;
2168 } else {
2169 var156 = ", ";
2170 var157 = 2;
2171 var158 = string__NativeString__to_s_with_length(var156, var157);
2172 var155 = var158;
2173 varonce154 = var155;
2174 }
2175 var159 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var155) /* join on <var_arguments:Array[RuntimeVariable]>*/;
2176 if (varonce160) {
2177 var161 = varonce160;
2178 } else {
2179 var162 = ");";
2180 var163 = 2;
2181 var164 = string__NativeString__to_s_with_length(var162, var163);
2182 var161 = var164;
2183 varonce160 = var161;
2184 }
2185 var165 = NEW_array__Array(&type_array__Arraykernel__Object);
2186 { /* var165 = array_instance Array[Object] */
2187 var166 = 6;
2188 var167 = NEW_array__NativeArray(var166, &type_array__NativeArraykernel__Object);
2189 ((struct instance_array__NativeArray*)var167)->values[0] = (val*) var_res;
2190 ((struct instance_array__NativeArray*)var167)->values[1] = (val*) var144;
2191 ((struct instance_array__NativeArray*)var167)->values[2] = (val*) var148;
2192 ((struct instance_array__NativeArray*)var167)->values[3] = (val*) var150;
2193 ((struct instance_array__NativeArray*)var167)->values[4] = (val*) var159;
2194 ((struct instance_array__NativeArray*)var167)->values[5] = (val*) var161;
2195 ((void (*)(val*, val*, long))(var165->class->vft[COLOR_array__Array__with_native]))(var165, var167, var166) /* with_native on <var165:Array[Object]>*/;
2196 }
2197 var168 = ((val* (*)(val*))(var165->class->vft[COLOR_string__Object__to_s]))(var165) /* to_s on <var165:Array[Object]>*/;
2198 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var168) /* add on <self:SeparateCompilerVisitor>*/;
2199 }
2200 var = var_res;
2201 goto RET_LABEL;
2202 RET_LABEL:;
2203 return var;
2204 }
2205 /* method separate_compiler#SeparateCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2206 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
2207 val* var /* : nullable RuntimeVariable */;
2208 val* var1 /* : nullable RuntimeVariable */;
2209 var1 = separate_compiler__SeparateCompilerVisitor__call(self, p0, p1, p2);
2210 var = var1;
2211 RET_LABEL:;
2212 return var;
2213 }
2214 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2215 val* separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
2216 val* var /* : nullable RuntimeVariable */;
2217 val* var_m /* var m: MMethodDef */;
2218 val* var_recvtype /* var recvtype: MClassType */;
2219 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2220 val* var1 /* : nullable Object */;
2221 val* var2 /* : MType */;
2222 val* var3 /* : String */;
2223 static val* varonce;
2224 val* var4 /* : String */;
2225 char* var5 /* : NativeString */;
2226 long var6 /* : Int */;
2227 val* var7 /* : String */;
2228 short int var8 /* : Bool */;
2229 val* var9 /* : AbstractCompiler */;
2230 val* var10 /* : MModule */;
2231 val* var_main /* var main: MModule */;
2232 val* var11 /* : AbstractCompiler */;
2233 val* var12 /* : AbstractCompiler */;
2234 val* var13 /* : MModule */;
2235 val* var14 /* : nullable RuntimeVariable */;
2236 val* var_res /* var res: nullable RuntimeVariable */;
2237 val* var15 /* : AbstractCompiler */;
2238 val* var16 /* : MProperty */;
2239 val* var17 /* : String */;
2240 val* var18 /* : nullable RuntimeVariable */;
2241 var_m = p0;
2242 var_recvtype = p1;
2243 var_arguments = p2;
2244 var1 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
2245 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var1) /* mcasttype on <var1:nullable Object(RuntimeVariable)>*/;
2246 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
2247 if (varonce) {
2248 var4 = varonce;
2249 } else {
2250 var5 = "val*";
2251 var6 = 4;
2252 var7 = string__NativeString__to_s_with_length(var5, var6);
2253 var4 = var7;
2254 varonce = var4;
2255 }
2256 var8 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___33d_61d]))(var3, var4) /* != on <var3:String>*/;
2257 if (var8){
2258 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2259 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var9) /* mainmodule on <var9:AbstractCompiler(SeparateCompiler)>*/;
2260 var_main = var10;
2261 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2262 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2263 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule]))(var12) /* realmainmodule on <var12:AbstractCompiler(SeparateCompiler)>*/;
2264 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var11, var13) /* mainmodule= on <var11:AbstractCompiler(SeparateCompiler)>*/;
2265 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>*/;
2266 var_res = var14;
2267 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2268 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var15, var_main) /* mainmodule= on <var15:AbstractCompiler(SeparateCompiler)>*/;
2269 var = var_res;
2270 goto RET_LABEL;
2271 } else {
2272 }
2273 var16 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mproperty]))(var_m) /* mproperty on <var_m:MMethodDef>*/;
2274 var17 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:MMethodDef>*/;
2275 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>*/;
2276 var = var18;
2277 goto RET_LABEL;
2278 RET_LABEL:;
2279 return var;
2280 }
2281 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2282 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
2283 val* var /* : nullable RuntimeVariable */;
2284 val* var1 /* : nullable RuntimeVariable */;
2285 var1 = separate_compiler__SeparateCompilerVisitor__supercall(self, p0, p1, p2);
2286 var = var1;
2287 RET_LABEL:;
2288 return var;
2289 }
2290 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
2291 val* separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
2292 val* var /* : RuntimeVariable */;
2293 val* var_mpropdef /* var mpropdef: MPropDef */;
2294 val* var_recv /* var recv: RuntimeVariable */;
2295 val* var_varargs /* var varargs: Array[RuntimeVariable] */;
2296 val* var_elttype /* var elttype: MType */;
2297 val* var1 /* : nullable Frame */;
2298 val* var_old_frame /* var old_frame: nullable Frame */;
2299 val* var2 /* : Frame */;
2300 val* var3 /* : MClassDef */;
2301 val* var4 /* : MClassType */;
2302 val* var5 /* : Array[RuntimeVariable] */;
2303 long var6 /* : Int */;
2304 val* var_ /* var : Array[RuntimeVariable] */;
2305 val* var_frame /* var frame: Frame */;
2306 val* var7 /* : RuntimeVariable */;
2307 val* var_res /* var res: RuntimeVariable */;
2308 var_mpropdef = p0;
2309 var_recv = p1;
2310 var_varargs = p2;
2311 var_elttype = p3;
2312 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
2313 var_old_frame = var1;
2314 var2 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
2315 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
2316 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
2317 var5 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2318 var6 = 1;
2319 ((void (*)(val*, long))(var5->class->vft[COLOR_array__Array__with_capacity]))(var5, var6) /* with_capacity on <var5:Array[RuntimeVariable]>*/;
2320 var_ = var5;
2321 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
2322 ((void (*)(val*, val*, val*, val*, val*))(var2->class->vft[COLOR_abstract_compiler__Frame__init]))(var2, self, var_mpropdef, var4, var_) /* init on <var2:Frame>*/;
2323 var_frame = var2;
2324 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2325 var7 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__array_instance]))(self, var_varargs, var_elttype) /* array_instance on <self:SeparateCompilerVisitor>*/;
2326 var_res = var7;
2327 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_old_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2328 var = var_res;
2329 goto RET_LABEL;
2330 RET_LABEL:;
2331 return var;
2332 }
2333 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
2334 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
2335 val* var /* : RuntimeVariable */;
2336 val* var1 /* : RuntimeVariable */;
2337 var1 = separate_compiler__SeparateCompilerVisitor__vararg_instance(self, p0, p1, p2, p3);
2338 var = var1;
2339 RET_LABEL:;
2340 return var;
2341 }
2342 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
2343 val* separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
2344 val* var /* : RuntimeVariable */;
2345 val* var_a /* var a: MAttribute */;
2346 val* var_recv /* var recv: RuntimeVariable */;
2347 val* var1 /* : MClassType */;
2348 val* var2 /* : RuntimeVariable */;
2349 val* var_res /* var res: RuntimeVariable */;
2350 val* var3 /* : MPropDef */;
2351 val* var4 /* : nullable MType */;
2352 val* var_mtype /* var mtype: MType */;
2353 val* var5 /* : MPropDef */;
2354 val* var6 /* : MClassDef */;
2355 val* var_intromclassdef /* var intromclassdef: MClassDef */;
2356 val* var7 /* : MClassType */;
2357 val* var8 /* : MClassType */;
2358 val* var9 /* : MModule */;
2359 short int var10 /* : Bool */;
2360 val* var11 /* : MType */;
2361 short int var12 /* : Bool */;
2362 int cltype;
2363 int idtype;
2364 static val* varonce;
2365 val* var13 /* : String */;
2366 char* var14 /* : NativeString */;
2367 long var15 /* : Int */;
2368 val* var16 /* : String */;
2369 static val* varonce17;
2370 val* var18 /* : String */;
2371 char* var19 /* : NativeString */;
2372 long var20 /* : Int */;
2373 val* var21 /* : String */;
2374 val* var22 /* : String */;
2375 static val* varonce23;
2376 val* var24 /* : String */;
2377 char* var25 /* : NativeString */;
2378 long var26 /* : Int */;
2379 val* var27 /* : String */;
2380 val* var28 /* : Array[Object] */;
2381 long var29 /* : Int */;
2382 val* var30 /* : NativeArray[Object] */;
2383 val* var31 /* : String */;
2384 val* var32 /* : String */;
2385 val* var33 /* : AbstractCompiler */;
2386 val* var34 /* : ModelBuilder */;
2387 val* var35 /* : ToolContext */;
2388 val* var36 /* : OptionBool */;
2389 val* var37 /* : nullable Object */;
2390 short int var38 /* : Bool */;
2391 static val* varonce39;
2392 val* var40 /* : String */;
2393 char* var41 /* : NativeString */;
2394 long var42 /* : Int */;
2395 val* var43 /* : String */;
2396 static val* varonce44;
2397 val* var45 /* : String */;
2398 char* var46 /* : NativeString */;
2399 long var47 /* : Int */;
2400 val* var48 /* : String */;
2401 val* var49 /* : String */;
2402 static val* varonce50;
2403 val* var51 /* : String */;
2404 char* var52 /* : NativeString */;
2405 long var53 /* : Int */;
2406 val* var54 /* : String */;
2407 static val* varonce55;
2408 val* var56 /* : String */;
2409 char* var57 /* : NativeString */;
2410 long var58 /* : Int */;
2411 val* var59 /* : String */;
2412 val* var60 /* : String */;
2413 static val* varonce61;
2414 val* var62 /* : String */;
2415 char* var63 /* : NativeString */;
2416 long var64 /* : Int */;
2417 val* var65 /* : String */;
2418 val* var66 /* : Array[Object] */;
2419 long var67 /* : Int */;
2420 val* var68 /* : NativeArray[Object] */;
2421 val* var69 /* : String */;
2422 val* var70 /* : String */;
2423 static val* varonce71;
2424 val* var72 /* : String */;
2425 char* var73 /* : NativeString */;
2426 long var74 /* : Int */;
2427 val* var75 /* : String */;
2428 short int var76 /* : Bool */;
2429 static val* varonce77;
2430 val* var78 /* : String */;
2431 char* var79 /* : NativeString */;
2432 long var80 /* : Int */;
2433 val* var81 /* : String */;
2434 static val* varonce82;
2435 val* var83 /* : String */;
2436 char* var84 /* : NativeString */;
2437 long var85 /* : Int */;
2438 val* var86 /* : String */;
2439 val* var87 /* : String */;
2440 static val* varonce88;
2441 val* var89 /* : String */;
2442 char* var90 /* : NativeString */;
2443 long var91 /* : Int */;
2444 val* var92 /* : String */;
2445 static val* varonce93;
2446 val* var94 /* : String */;
2447 char* var95 /* : NativeString */;
2448 long var96 /* : Int */;
2449 val* var97 /* : String */;
2450 val* var98 /* : String */;
2451 static val* varonce99;
2452 val* var100 /* : String */;
2453 char* var101 /* : NativeString */;
2454 long var102 /* : Int */;
2455 val* var103 /* : String */;
2456 val* var104 /* : Array[Object] */;
2457 long var105 /* : Int */;
2458 val* var106 /* : NativeArray[Object] */;
2459 val* var107 /* : String */;
2460 static val* varonce108;
2461 val* var109 /* : String */;
2462 char* var110 /* : NativeString */;
2463 long var111 /* : Int */;
2464 val* var112 /* : String */;
2465 static val* varonce113;
2466 val* var114 /* : String */;
2467 char* var115 /* : NativeString */;
2468 long var116 /* : Int */;
2469 val* var117 /* : String */;
2470 val* var118 /* : String */;
2471 static val* varonce119;
2472 val* var120 /* : String */;
2473 char* var121 /* : NativeString */;
2474 long var122 /* : Int */;
2475 val* var123 /* : String */;
2476 val* var124 /* : Array[Object] */;
2477 long var125 /* : Int */;
2478 val* var126 /* : NativeArray[Object] */;
2479 val* var127 /* : String */;
2480 var_a = p0;
2481 var_recv = p1;
2482 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
2483 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
2484 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
2485 var_res = var2;
2486 var3 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2487 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var3) /* static_mtype on <var3:MPropDef(MAttributeDef)>*/;
2488 if (var4 == NULL) {
2489 fprintf(stderr, "Runtime error: %s", "Cast failed");
2490 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1191);
2491 show_backtrace(1);
2492 }
2493 var_mtype = var4;
2494 var5 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2495 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MPropDef__mclassdef]))(var5) /* mclassdef on <var5:MPropDef(MAttributeDef)>*/;
2496 var_intromclassdef = var6;
2497 var7 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2498 var8 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2499 var9 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2500 var10 = 1;
2501 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>*/;
2502 var_mtype = var11;
2503 /* <var_mtype:MType> isa MNullableType */
2504 cltype = type_model__MNullableType.color;
2505 idtype = type_model__MNullableType.id;
2506 if(cltype >= var_mtype->type->table_size) {
2507 var12 = 0;
2508 } else {
2509 var12 = var_mtype->type->type_table[cltype] == idtype;
2510 }
2511 if (var12){
2512 if (varonce) {
2513 var13 = varonce;
2514 } else {
2515 var14 = " = 1; /* easy isset: ";
2516 var15 = 21;
2517 var16 = string__NativeString__to_s_with_length(var14, var15);
2518 var13 = var16;
2519 varonce = var13;
2520 }
2521 if (varonce17) {
2522 var18 = varonce17;
2523 } else {
2524 var19 = " on ";
2525 var20 = 4;
2526 var21 = string__NativeString__to_s_with_length(var19, var20);
2527 var18 = var21;
2528 varonce17 = var18;
2529 }
2530 var22 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2531 if (varonce23) {
2532 var24 = varonce23;
2533 } else {
2534 var25 = " */";
2535 var26 = 3;
2536 var27 = string__NativeString__to_s_with_length(var25, var26);
2537 var24 = var27;
2538 varonce23 = var24;
2539 }
2540 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
2541 { /* var28 = array_instance Array[Object] */
2542 var29 = 6;
2543 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
2544 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var_res;
2545 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var13;
2546 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var_a;
2547 ((struct instance_array__NativeArray*)var30)->values[3] = (val*) var18;
2548 ((struct instance_array__NativeArray*)var30)->values[4] = (val*) var22;
2549 ((struct instance_array__NativeArray*)var30)->values[5] = (val*) var24;
2550 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
2551 }
2552 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
2553 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var31) /* add on <self:SeparateCompilerVisitor>*/;
2554 var = var_res;
2555 goto RET_LABEL;
2556 } else {
2557 }
2558 var32 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2559 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var32) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2560 var33 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2561 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var33) /* modelbuilder on <var33:AbstractCompiler(SeparateCompiler)>*/;
2562 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var34) /* toolcontext on <var34:ModelBuilder>*/;
2563 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var35) /* opt_no_union_attribute on <var35:ToolContext>*/;
2564 var37 = ((val* (*)(val*))(var36->class->vft[COLOR_opts__Option__value]))(var36) /* value on <var36:OptionBool>*/;
2565 var38 = ((struct instance_kernel__Bool*)var37)->value; /* autounbox from nullable Object to Bool */;
2566 if (var38){
2567 if (varonce39) {
2568 var40 = varonce39;
2569 } else {
2570 var41 = " = ";
2571 var42 = 3;
2572 var43 = string__NativeString__to_s_with_length(var41, var42);
2573 var40 = var43;
2574 varonce39 = var40;
2575 }
2576 if (varonce44) {
2577 var45 = varonce44;
2578 } else {
2579 var46 = "->attrs[";
2580 var47 = 8;
2581 var48 = string__NativeString__to_s_with_length(var46, var47);
2582 var45 = var48;
2583 varonce44 = var45;
2584 }
2585 var49 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2586 if (varonce50) {
2587 var51 = varonce50;
2588 } else {
2589 var52 = "] != NULL; /* ";
2590 var53 = 14;
2591 var54 = string__NativeString__to_s_with_length(var52, var53);
2592 var51 = var54;
2593 varonce50 = var51;
2594 }
2595 if (varonce55) {
2596 var56 = varonce55;
2597 } else {
2598 var57 = " on ";
2599 var58 = 4;
2600 var59 = string__NativeString__to_s_with_length(var57, var58);
2601 var56 = var59;
2602 varonce55 = var56;
2603 }
2604 var60 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2605 if (varonce61) {
2606 var62 = varonce61;
2607 } else {
2608 var63 = "*/";
2609 var64 = 2;
2610 var65 = string__NativeString__to_s_with_length(var63, var64);
2611 var62 = var65;
2612 varonce61 = var62;
2613 }
2614 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
2615 { /* var66 = array_instance Array[Object] */
2616 var67 = 10;
2617 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
2618 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var_res;
2619 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var40;
2620 ((struct instance_array__NativeArray*)var68)->values[2] = (val*) var_recv;
2621 ((struct instance_array__NativeArray*)var68)->values[3] = (val*) var45;
2622 ((struct instance_array__NativeArray*)var68)->values[4] = (val*) var49;
2623 ((struct instance_array__NativeArray*)var68)->values[5] = (val*) var51;
2624 ((struct instance_array__NativeArray*)var68)->values[6] = (val*) var_a;
2625 ((struct instance_array__NativeArray*)var68)->values[7] = (val*) var56;
2626 ((struct instance_array__NativeArray*)var68)->values[8] = (val*) var60;
2627 ((struct instance_array__NativeArray*)var68)->values[9] = (val*) var62;
2628 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
2629 }
2630 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
2631 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var69) /* add on <self:SeparateCompilerVisitor>*/;
2632 } else {
2633 var70 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
2634 if (varonce71) {
2635 var72 = varonce71;
2636 } else {
2637 var73 = "val*";
2638 var74 = 4;
2639 var75 = string__NativeString__to_s_with_length(var73, var74);
2640 var72 = var75;
2641 varonce71 = var72;
2642 }
2643 var76 = ((short int (*)(val*, val*))(var70->class->vft[COLOR_kernel__Object___61d_61d]))(var70, var72) /* == on <var70:String>*/;
2644 if (var76){
2645 if (varonce77) {
2646 var78 = varonce77;
2647 } else {
2648 var79 = " = ";
2649 var80 = 3;
2650 var81 = string__NativeString__to_s_with_length(var79, var80);
2651 var78 = var81;
2652 varonce77 = var78;
2653 }
2654 if (varonce82) {
2655 var83 = varonce82;
2656 } else {
2657 var84 = "->attrs[";
2658 var85 = 8;
2659 var86 = string__NativeString__to_s_with_length(var84, var85);
2660 var83 = var86;
2661 varonce82 = var83;
2662 }
2663 var87 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2664 if (varonce88) {
2665 var89 = varonce88;
2666 } else {
2667 var90 = "].val != NULL; /* ";
2668 var91 = 18;
2669 var92 = string__NativeString__to_s_with_length(var90, var91);
2670 var89 = var92;
2671 varonce88 = var89;
2672 }
2673 if (varonce93) {
2674 var94 = varonce93;
2675 } else {
2676 var95 = " on ";
2677 var96 = 4;
2678 var97 = string__NativeString__to_s_with_length(var95, var96);
2679 var94 = var97;
2680 varonce93 = var94;
2681 }
2682 var98 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2683 if (varonce99) {
2684 var100 = varonce99;
2685 } else {
2686 var101 = " */";
2687 var102 = 3;
2688 var103 = string__NativeString__to_s_with_length(var101, var102);
2689 var100 = var103;
2690 varonce99 = var100;
2691 }
2692 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
2693 { /* var104 = array_instance Array[Object] */
2694 var105 = 10;
2695 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
2696 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var_res;
2697 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var78;
2698 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var_recv;
2699 ((struct instance_array__NativeArray*)var106)->values[3] = (val*) var83;
2700 ((struct instance_array__NativeArray*)var106)->values[4] = (val*) var87;
2701 ((struct instance_array__NativeArray*)var106)->values[5] = (val*) var89;
2702 ((struct instance_array__NativeArray*)var106)->values[6] = (val*) var_a;
2703 ((struct instance_array__NativeArray*)var106)->values[7] = (val*) var94;
2704 ((struct instance_array__NativeArray*)var106)->values[8] = (val*) var98;
2705 ((struct instance_array__NativeArray*)var106)->values[9] = (val*) var100;
2706 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
2707 }
2708 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
2709 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var107) /* add on <self:SeparateCompilerVisitor>*/;
2710 } else {
2711 if (varonce108) {
2712 var109 = varonce108;
2713 } else {
2714 var110 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: ";
2715 var111 = 51;
2716 var112 = string__NativeString__to_s_with_length(var110, var111);
2717 var109 = var112;
2718 varonce108 = var109;
2719 }
2720 if (varonce113) {
2721 var114 = varonce113;
2722 } else {
2723 var115 = " on ";
2724 var116 = 4;
2725 var117 = string__NativeString__to_s_with_length(var115, var116);
2726 var114 = var117;
2727 varonce113 = var114;
2728 }
2729 var118 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2730 if (varonce119) {
2731 var120 = varonce119;
2732 } else {
2733 var121 = " */";
2734 var122 = 3;
2735 var123 = string__NativeString__to_s_with_length(var121, var122);
2736 var120 = var123;
2737 varonce119 = var120;
2738 }
2739 var124 = NEW_array__Array(&type_array__Arraykernel__Object);
2740 { /* var124 = array_instance Array[Object] */
2741 var125 = 6;
2742 var126 = NEW_array__NativeArray(var125, &type_array__NativeArraykernel__Object);
2743 ((struct instance_array__NativeArray*)var126)->values[0] = (val*) var_res;
2744 ((struct instance_array__NativeArray*)var126)->values[1] = (val*) var109;
2745 ((struct instance_array__NativeArray*)var126)->values[2] = (val*) var_a;
2746 ((struct instance_array__NativeArray*)var126)->values[3] = (val*) var114;
2747 ((struct instance_array__NativeArray*)var126)->values[4] = (val*) var118;
2748 ((struct instance_array__NativeArray*)var126)->values[5] = (val*) var120;
2749 ((void (*)(val*, val*, long))(var124->class->vft[COLOR_array__Array__with_native]))(var124, var126, var125) /* with_native on <var124:Array[Object]>*/;
2750 }
2751 var127 = ((val* (*)(val*))(var124->class->vft[COLOR_string__Object__to_s]))(var124) /* to_s on <var124:Array[Object]>*/;
2752 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var127) /* add on <self:SeparateCompilerVisitor>*/;
2753 }
2754 }
2755 var = var_res;
2756 goto RET_LABEL;
2757 RET_LABEL:;
2758 return var;
2759 }
2760 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
2761 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
2762 val* var /* : RuntimeVariable */;
2763 val* var1 /* : RuntimeVariable */;
2764 var1 = separate_compiler__SeparateCompilerVisitor__isset_attribute(self, p0, p1);
2765 var = var1;
2766 RET_LABEL:;
2767 return var;
2768 }
2769 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
2770 val* separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
2771 val* var /* : RuntimeVariable */;
2772 val* var_a /* var a: MAttribute */;
2773 val* var_recv /* var recv: RuntimeVariable */;
2774 val* var1 /* : MPropDef */;
2775 val* var2 /* : nullable MType */;
2776 val* var_ret /* var ret: MType */;
2777 val* var3 /* : MPropDef */;
2778 val* var4 /* : MClassDef */;
2779 val* var_intromclassdef /* var intromclassdef: MClassDef */;
2780 val* var5 /* : MClassType */;
2781 val* var6 /* : MClassType */;
2782 val* var7 /* : MModule */;
2783 short int var8 /* : Bool */;
2784 val* var9 /* : MType */;
2785 val* var10 /* : String */;
2786 val* var11 /* : AbstractCompiler */;
2787 val* var12 /* : ModelBuilder */;
2788 val* var13 /* : ToolContext */;
2789 val* var14 /* : OptionBool */;
2790 val* var15 /* : nullable Object */;
2791 short int var16 /* : Bool */;
2792 val* var17 /* : MClassType */;
2793 val* var18 /* : MType */;
2794 val* var_cret /* var cret: MType */;
2795 val* var19 /* : RuntimeVariable */;
2796 val* var_res /* var res: RuntimeVariable */;
2797 static val* varonce;
2798 val* var20 /* : String */;
2799 char* var21 /* : NativeString */;
2800 long var22 /* : Int */;
2801 val* var23 /* : String */;
2802 static val* varonce24;
2803 val* var25 /* : String */;
2804 char* var26 /* : NativeString */;
2805 long var27 /* : Int */;
2806 val* var28 /* : String */;
2807 val* var29 /* : String */;
2808 static val* varonce30;
2809 val* var31 /* : String */;
2810 char* var32 /* : NativeString */;
2811 long var33 /* : Int */;
2812 val* var34 /* : String */;
2813 static val* varonce35;
2814 val* var36 /* : String */;
2815 char* var37 /* : NativeString */;
2816 long var38 /* : Int */;
2817 val* var39 /* : String */;
2818 val* var40 /* : String */;
2819 static val* varonce41;
2820 val* var42 /* : String */;
2821 char* var43 /* : NativeString */;
2822 long var44 /* : Int */;
2823 val* var45 /* : String */;
2824 val* var46 /* : Array[Object] */;
2825 long var47 /* : Int */;
2826 val* var48 /* : NativeArray[Object] */;
2827 val* var49 /* : String */;
2828 short int var50 /* : Bool */;
2829 short int var51 /* : Bool */;
2830 int cltype;
2831 int idtype;
2832 short int var52 /* : Bool */;
2833 short int var_ /* var : Bool */;
2834 val* var53 /* : AbstractCompiler */;
2835 val* var54 /* : ModelBuilder */;
2836 val* var55 /* : ToolContext */;
2837 val* var56 /* : OptionBool */;
2838 val* var57 /* : nullable Object */;
2839 short int var58 /* : Bool */;
2840 short int var59 /* : Bool */;
2841 static val* varonce60;
2842 val* var61 /* : String */;
2843 char* var62 /* : NativeString */;
2844 long var63 /* : Int */;
2845 val* var64 /* : String */;
2846 static val* varonce65;
2847 val* var66 /* : String */;
2848 char* var67 /* : NativeString */;
2849 long var68 /* : Int */;
2850 val* var69 /* : String */;
2851 val* var70 /* : Array[Object] */;
2852 long var71 /* : Int */;
2853 val* var72 /* : NativeArray[Object] */;
2854 val* var73 /* : String */;
2855 static val* varonce74;
2856 val* var75 /* : String */;
2857 char* var76 /* : NativeString */;
2858 long var77 /* : Int */;
2859 val* var78 /* : String */;
2860 val* var79 /* : String */;
2861 val* var80 /* : Array[Object] */;
2862 long var81 /* : Int */;
2863 val* var82 /* : NativeArray[Object] */;
2864 val* var83 /* : String */;
2865 static val* varonce84;
2866 val* var85 /* : String */;
2867 char* var86 /* : NativeString */;
2868 long var87 /* : Int */;
2869 val* var88 /* : String */;
2870 val* var89 /* : RuntimeVariable */;
2871 val* var90 /* : RuntimeVariable */;
2872 val* var_res91 /* var res: RuntimeVariable */;
2873 static val* varonce92;
2874 val* var93 /* : String */;
2875 char* var94 /* : NativeString */;
2876 long var95 /* : Int */;
2877 val* var96 /* : String */;
2878 static val* varonce97;
2879 val* var98 /* : String */;
2880 char* var99 /* : NativeString */;
2881 long var100 /* : Int */;
2882 val* var101 /* : String */;
2883 val* var102 /* : String */;
2884 static val* varonce103;
2885 val* var104 /* : String */;
2886 char* var105 /* : NativeString */;
2887 long var106 /* : Int */;
2888 val* var107 /* : String */;
2889 val* var108 /* : String */;
2890 static val* varonce109;
2891 val* var110 /* : String */;
2892 char* var111 /* : NativeString */;
2893 long var112 /* : Int */;
2894 val* var113 /* : String */;
2895 static val* varonce114;
2896 val* var115 /* : String */;
2897 char* var116 /* : NativeString */;
2898 long var117 /* : Int */;
2899 val* var118 /* : String */;
2900 val* var119 /* : String */;
2901 static val* varonce120;
2902 val* var121 /* : String */;
2903 char* var122 /* : NativeString */;
2904 long var123 /* : Int */;
2905 val* var124 /* : String */;
2906 val* var125 /* : Array[Object] */;
2907 long var126 /* : Int */;
2908 val* var127 /* : NativeArray[Object] */;
2909 val* var128 /* : String */;
2910 short int var129 /* : Bool */;
2911 short int var130 /* : Bool */;
2912 val* var131 /* : String */;
2913 static val* varonce132;
2914 val* var133 /* : String */;
2915 char* var134 /* : NativeString */;
2916 long var135 /* : Int */;
2917 val* var136 /* : String */;
2918 short int var137 /* : Bool */;
2919 short int var_138 /* var : Bool */;
2920 short int var139 /* : Bool */;
2921 int cltype140;
2922 int idtype141;
2923 short int var142 /* : Bool */;
2924 short int var_143 /* var : Bool */;
2925 val* var144 /* : AbstractCompiler */;
2926 val* var145 /* : ModelBuilder */;
2927 val* var146 /* : ToolContext */;
2928 val* var147 /* : OptionBool */;
2929 val* var148 /* : nullable Object */;
2930 short int var149 /* : Bool */;
2931 short int var150 /* : Bool */;
2932 static val* varonce151;
2933 val* var152 /* : String */;
2934 char* var153 /* : NativeString */;
2935 long var154 /* : Int */;
2936 val* var155 /* : String */;
2937 static val* varonce156;
2938 val* var157 /* : String */;
2939 char* var158 /* : NativeString */;
2940 long var159 /* : Int */;
2941 val* var160 /* : String */;
2942 val* var161 /* : Array[Object] */;
2943 long var162 /* : Int */;
2944 val* var163 /* : NativeArray[Object] */;
2945 val* var164 /* : String */;
2946 static val* varonce165;
2947 val* var166 /* : String */;
2948 char* var167 /* : NativeString */;
2949 long var168 /* : Int */;
2950 val* var169 /* : String */;
2951 val* var170 /* : String */;
2952 val* var171 /* : Array[Object] */;
2953 long var172 /* : Int */;
2954 val* var173 /* : NativeArray[Object] */;
2955 val* var174 /* : String */;
2956 static val* varonce175;
2957 val* var176 /* : String */;
2958 char* var177 /* : NativeString */;
2959 long var178 /* : Int */;
2960 val* var179 /* : String */;
2961 var_a = p0;
2962 var_recv = p1;
2963 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
2964 var1 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2965 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var1) /* static_mtype on <var1:MPropDef(MAttributeDef)>*/;
2966 if (var2 == NULL) {
2967 fprintf(stderr, "Runtime error: %s", "Cast failed");
2968 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1219);
2969 show_backtrace(1);
2970 }
2971 var_ret = var2;
2972 var3 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2973 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mclassdef]))(var3) /* mclassdef on <var3:MPropDef(MAttributeDef)>*/;
2974 var_intromclassdef = var4;
2975 var5 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2976 var6 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2977 var7 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2978 var8 = 1;
2979 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>*/;
2980 var_ret = var9;
2981 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2982 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2983 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2984 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler(SeparateCompiler)>*/;
2985 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
2986 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var13) /* opt_no_union_attribute on <var13:ToolContext>*/;
2987 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
2988 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
2989 if (var16){
2990 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
2991 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MType__as_nullable]))(var17) /* as_nullable on <var17:MClassType>*/;
2992 var_cret = var18;
2993 var19 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_cret) /* new_var on <self:SeparateCompilerVisitor>*/;
2994 var_res = var19;
2995 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype_61d]))(var_res, var_ret) /* mcasttype= on <var_res:RuntimeVariable>*/;
2996 if (varonce) {
2997 var20 = varonce;
2998 } else {
2999 var21 = " = ";
3000 var22 = 3;
3001 var23 = string__NativeString__to_s_with_length(var21, var22);
3002 var20 = var23;
3003 varonce = var20;
3004 }
3005 if (varonce24) {
3006 var25 = varonce24;
3007 } else {
3008 var26 = "->attrs[";
3009 var27 = 8;
3010 var28 = string__NativeString__to_s_with_length(var26, var27);
3011 var25 = var28;
3012 varonce24 = var25;
3013 }
3014 var29 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3015 if (varonce30) {
3016 var31 = varonce30;
3017 } else {
3018 var32 = "]; /* ";
3019 var33 = 6;
3020 var34 = string__NativeString__to_s_with_length(var32, var33);
3021 var31 = var34;
3022 varonce30 = var31;
3023 }
3024 if (varonce35) {
3025 var36 = varonce35;
3026 } else {
3027 var37 = " on ";
3028 var38 = 4;
3029 var39 = string__NativeString__to_s_with_length(var37, var38);
3030 var36 = var39;
3031 varonce35 = var36;
3032 }
3033 var40 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3034 if (varonce41) {
3035 var42 = varonce41;
3036 } else {
3037 var43 = " */";
3038 var44 = 3;
3039 var45 = string__NativeString__to_s_with_length(var43, var44);
3040 var42 = var45;
3041 varonce41 = var42;
3042 }
3043 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
3044 { /* var46 = array_instance Array[Object] */
3045 var47 = 10;
3046 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
3047 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
3048 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var20;
3049 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_recv;
3050 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var25;
3051 ((struct instance_array__NativeArray*)var48)->values[4] = (val*) var29;
3052 ((struct instance_array__NativeArray*)var48)->values[5] = (val*) var31;
3053 ((struct instance_array__NativeArray*)var48)->values[6] = (val*) var_a;
3054 ((struct instance_array__NativeArray*)var48)->values[7] = (val*) var36;
3055 ((struct instance_array__NativeArray*)var48)->values[8] = (val*) var40;
3056 ((struct instance_array__NativeArray*)var48)->values[9] = (val*) var42;
3057 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
3058 }
3059 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
3060 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var49) /* add on <self:SeparateCompilerVisitor>*/;
3061 /* <var_ret:MType> isa MNullableType */
3062 cltype = type_model__MNullableType.color;
3063 idtype = type_model__MNullableType.id;
3064 if(cltype >= var_ret->type->table_size) {
3065 var51 = 0;
3066 } else {
3067 var51 = var_ret->type->type_table[cltype] == idtype;
3068 }
3069 var52 = !var51;
3070 var_ = var52;
3071 if (var52){
3072 var53 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3073 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var53) /* modelbuilder on <var53:AbstractCompiler(SeparateCompiler)>*/;
3074 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var54) /* toolcontext on <var54:ModelBuilder>*/;
3075 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var55) /* opt_no_check_initialization on <var55:ToolContext>*/;
3076 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_opts__Option__value]))(var56) /* value on <var56:OptionBool>*/;
3077 var58 = ((struct instance_kernel__Bool*)var57)->value; /* autounbox from nullable Object to Bool */;
3078 var59 = !var58;
3079 var50 = var59;
3080 } else {
3081 var50 = var_;
3082 }
3083 if (var50){
3084 if (varonce60) {
3085 var61 = varonce60;
3086 } else {
3087 var62 = "if (";
3088 var63 = 4;
3089 var64 = string__NativeString__to_s_with_length(var62, var63);
3090 var61 = var64;
3091 varonce60 = var61;
3092 }
3093 if (varonce65) {
3094 var66 = varonce65;
3095 } else {
3096 var67 = " == NULL) {";
3097 var68 = 11;
3098 var69 = string__NativeString__to_s_with_length(var67, var68);
3099 var66 = var69;
3100 varonce65 = var66;
3101 }
3102 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
3103 { /* var70 = array_instance Array[Object] */
3104 var71 = 3;
3105 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
3106 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var61;
3107 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var_res;
3108 ((struct instance_array__NativeArray*)var72)->values[2] = (val*) var66;
3109 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
3110 }
3111 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
3112 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var73) /* add on <self:SeparateCompilerVisitor>*/;
3113 if (varonce74) {
3114 var75 = varonce74;
3115 } else {
3116 var76 = "Uninitialized attribute ";
3117 var77 = 24;
3118 var78 = string__NativeString__to_s_with_length(var76, var77);
3119 var75 = var78;
3120 varonce74 = var75;
3121 }
3122 var79 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__name]))(var_a) /* name on <var_a:MAttribute>*/;
3123 var80 = NEW_array__Array(&type_array__Arraykernel__Object);
3124 { /* var80 = array_instance Array[Object] */
3125 var81 = 2;
3126 var82 = NEW_array__NativeArray(var81, &type_array__NativeArraykernel__Object);
3127 ((struct instance_array__NativeArray*)var82)->values[0] = (val*) var75;
3128 ((struct instance_array__NativeArray*)var82)->values[1] = (val*) var79;
3129 ((void (*)(val*, val*, long))(var80->class->vft[COLOR_array__Array__with_native]))(var80, var82, var81) /* with_native on <var80:Array[Object]>*/;
3130 }
3131 var83 = ((val* (*)(val*))(var80->class->vft[COLOR_string__Object__to_s]))(var80) /* to_s on <var80:Array[Object]>*/;
3132 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var83) /* add_abort on <self:SeparateCompilerVisitor>*/;
3133 if (varonce84) {
3134 var85 = varonce84;
3135 } else {
3136 var86 = "}";
3137 var87 = 1;
3138 var88 = string__NativeString__to_s_with_length(var86, var87);
3139 var85 = var88;
3140 varonce84 = var85;
3141 }
3142 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var85) /* add on <self:SeparateCompilerVisitor>*/;
3143 } else {
3144 }
3145 var89 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_res, var_ret) /* autobox on <self:SeparateCompilerVisitor>*/;
3146 var = var89;
3147 goto RET_LABEL;
3148 } else {
3149 var90 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
3150 var_res91 = var90;
3151 if (varonce92) {
3152 var93 = varonce92;
3153 } else {
3154 var94 = " = ";
3155 var95 = 3;
3156 var96 = string__NativeString__to_s_with_length(var94, var95);
3157 var93 = var96;
3158 varonce92 = var93;
3159 }
3160 if (varonce97) {
3161 var98 = varonce97;
3162 } else {
3163 var99 = "->attrs[";
3164 var100 = 8;
3165 var101 = string__NativeString__to_s_with_length(var99, var100);
3166 var98 = var101;
3167 varonce97 = var98;
3168 }
3169 var102 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3170 if (varonce103) {
3171 var104 = varonce103;
3172 } else {
3173 var105 = "].";
3174 var106 = 2;
3175 var107 = string__NativeString__to_s_with_length(var105, var106);
3176 var104 = var107;
3177 varonce103 = var104;
3178 }
3179 var108 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_ret) /* ctypename on <var_ret:MType>*/;
3180 if (varonce109) {
3181 var110 = varonce109;
3182 } else {
3183 var111 = "; /* ";
3184 var112 = 5;
3185 var113 = string__NativeString__to_s_with_length(var111, var112);
3186 var110 = var113;
3187 varonce109 = var110;
3188 }
3189 if (varonce114) {
3190 var115 = varonce114;
3191 } else {
3192 var116 = " on ";
3193 var117 = 4;
3194 var118 = string__NativeString__to_s_with_length(var116, var117);
3195 var115 = var118;
3196 varonce114 = var115;
3197 }
3198 var119 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3199 if (varonce120) {
3200 var121 = varonce120;
3201 } else {
3202 var122 = " */";
3203 var123 = 3;
3204 var124 = string__NativeString__to_s_with_length(var122, var123);
3205 var121 = var124;
3206 varonce120 = var121;
3207 }
3208 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
3209 { /* var125 = array_instance Array[Object] */
3210 var126 = 12;
3211 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
3212 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var_res91;
3213 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var93;
3214 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var_recv;
3215 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var98;
3216 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var102;
3217 ((struct instance_array__NativeArray*)var127)->values[5] = (val*) var104;
3218 ((struct instance_array__NativeArray*)var127)->values[6] = (val*) var108;
3219 ((struct instance_array__NativeArray*)var127)->values[7] = (val*) var110;
3220 ((struct instance_array__NativeArray*)var127)->values[8] = (val*) var_a;
3221 ((struct instance_array__NativeArray*)var127)->values[9] = (val*) var115;
3222 ((struct instance_array__NativeArray*)var127)->values[10] = (val*) var119;
3223 ((struct instance_array__NativeArray*)var127)->values[11] = (val*) var121;
3224 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
3225 }
3226 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
3227 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var128) /* add on <self:SeparateCompilerVisitor>*/;
3228 var131 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:MType>*/;
3229 if (varonce132) {
3230 var133 = varonce132;
3231 } else {
3232 var134 = "val*";
3233 var135 = 4;
3234 var136 = string__NativeString__to_s_with_length(var134, var135);
3235 var133 = var136;
3236 varonce132 = var133;
3237 }
3238 var137 = ((short int (*)(val*, val*))(var131->class->vft[COLOR_kernel__Object___61d_61d]))(var131, var133) /* == on <var131:String>*/;
3239 var_138 = var137;
3240 if (var137){
3241 /* <var_ret:MType> isa MNullableType */
3242 cltype140 = type_model__MNullableType.color;
3243 idtype141 = type_model__MNullableType.id;
3244 if(cltype140 >= var_ret->type->table_size) {
3245 var139 = 0;
3246 } else {
3247 var139 = var_ret->type->type_table[cltype140] == idtype141;
3248 }
3249 var142 = !var139;
3250 var130 = var142;
3251 } else {
3252 var130 = var_138;
3253 }
3254 var_143 = var130;
3255 if (var130){
3256 var144 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3257 var145 = ((val* (*)(val*))(var144->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var144) /* modelbuilder on <var144:AbstractCompiler(SeparateCompiler)>*/;
3258 var146 = ((val* (*)(val*))(var145->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var145) /* toolcontext on <var145:ModelBuilder>*/;
3259 var147 = ((val* (*)(val*))(var146->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var146) /* opt_no_check_initialization on <var146:ToolContext>*/;
3260 var148 = ((val* (*)(val*))(var147->class->vft[COLOR_opts__Option__value]))(var147) /* value on <var147:OptionBool>*/;
3261 var149 = ((struct instance_kernel__Bool*)var148)->value; /* autounbox from nullable Object to Bool */;
3262 var150 = !var149;
3263 var129 = var150;
3264 } else {
3265 var129 = var_143;
3266 }
3267 if (var129){
3268 if (varonce151) {
3269 var152 = varonce151;
3270 } else {
3271 var153 = "if (";
3272 var154 = 4;
3273 var155 = string__NativeString__to_s_with_length(var153, var154);
3274 var152 = var155;
3275 varonce151 = var152;
3276 }
3277 if (varonce156) {
3278 var157 = varonce156;
3279 } else {
3280 var158 = " == NULL) {";
3281 var159 = 11;
3282 var160 = string__NativeString__to_s_with_length(var158, var159);
3283 var157 = var160;
3284 varonce156 = var157;
3285 }
3286 var161 = NEW_array__Array(&type_array__Arraykernel__Object);
3287 { /* var161 = array_instance Array[Object] */
3288 var162 = 3;
3289 var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object);
3290 ((struct instance_array__NativeArray*)var163)->values[0] = (val*) var152;
3291 ((struct instance_array__NativeArray*)var163)->values[1] = (val*) var_res91;
3292 ((struct instance_array__NativeArray*)var163)->values[2] = (val*) var157;
3293 ((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on <var161:Array[Object]>*/;
3294 }
3295 var164 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on <var161:Array[Object]>*/;
3296 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var164) /* add on <self:SeparateCompilerVisitor>*/;
3297 if (varonce165) {
3298 var166 = varonce165;
3299 } else {
3300 var167 = "Uninitialized attribute ";
3301 var168 = 24;
3302 var169 = string__NativeString__to_s_with_length(var167, var168);
3303 var166 = var169;
3304 varonce165 = var166;
3305 }
3306 var170 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__name]))(var_a) /* name on <var_a:MAttribute>*/;
3307 var171 = NEW_array__Array(&type_array__Arraykernel__Object);
3308 { /* var171 = array_instance Array[Object] */
3309 var172 = 2;
3310 var173 = NEW_array__NativeArray(var172, &type_array__NativeArraykernel__Object);
3311 ((struct instance_array__NativeArray*)var173)->values[0] = (val*) var166;
3312 ((struct instance_array__NativeArray*)var173)->values[1] = (val*) var170;
3313 ((void (*)(val*, val*, long))(var171->class->vft[COLOR_array__Array__with_native]))(var171, var173, var172) /* with_native on <var171:Array[Object]>*/;
3314 }
3315 var174 = ((val* (*)(val*))(var171->class->vft[COLOR_string__Object__to_s]))(var171) /* to_s on <var171:Array[Object]>*/;
3316 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var174) /* add_abort on <self:SeparateCompilerVisitor>*/;
3317 if (varonce175) {
3318 var176 = varonce175;
3319 } else {
3320 var177 = "}";
3321 var178 = 1;
3322 var179 = string__NativeString__to_s_with_length(var177, var178);
3323 var176 = var179;
3324 varonce175 = var176;
3325 }
3326 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var176) /* add on <self:SeparateCompilerVisitor>*/;
3327 } else {
3328 }
3329 var = var_res91;
3330 goto RET_LABEL;
3331 }
3332 RET_LABEL:;
3333 return var;
3334 }
3335 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
3336 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
3337 val* var /* : RuntimeVariable */;
3338 val* var1 /* : RuntimeVariable */;
3339 var1 = separate_compiler__SeparateCompilerVisitor__read_attribute(self, p0, p1);
3340 var = var1;
3341 RET_LABEL:;
3342 return var;
3343 }
3344 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
3345 void separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
3346 val* var_a /* var a: MAttribute */;
3347 val* var_recv /* var recv: RuntimeVariable */;
3348 val* var_value /* var value: RuntimeVariable */;
3349 val* var /* : MPropDef */;
3350 val* var1 /* : nullable MType */;
3351 val* var_mtype /* var mtype: MType */;
3352 val* var2 /* : MPropDef */;
3353 val* var3 /* : MClassDef */;
3354 val* var_intromclassdef /* var intromclassdef: MClassDef */;
3355 val* var4 /* : MClassType */;
3356 val* var5 /* : MClassType */;
3357 val* var6 /* : MModule */;
3358 short int var7 /* : Bool */;
3359 val* var8 /* : MType */;
3360 val* var9 /* : RuntimeVariable */;
3361 val* var10 /* : String */;
3362 val* var11 /* : AbstractCompiler */;
3363 val* var12 /* : ModelBuilder */;
3364 val* var13 /* : ToolContext */;
3365 val* var14 /* : OptionBool */;
3366 val* var15 /* : nullable Object */;
3367 short int var16 /* : Bool */;
3368 val* var17 /* : Array[Object] */;
3369 long var18 /* : Int */;
3370 val* var_ /* var : Array[Object] */;
3371 static val* varonce;
3372 val* var19 /* : String */;
3373 char* var20 /* : NativeString */;
3374 long var21 /* : Int */;
3375 val* var22 /* : String */;
3376 static val* varonce23;
3377 val* var24 /* : String */;
3378 char* var25 /* : NativeString */;
3379 long var26 /* : Int */;
3380 val* var27 /* : String */;
3381 val* var28 /* : String */;
3382 static val* varonce29;
3383 val* var30 /* : String */;
3384 char* var31 /* : NativeString */;
3385 long var32 /* : Int */;
3386 val* var33 /* : String */;
3387 val* var34 /* : String */;
3388 val* var_attr /* var attr: String */;
3389 val* var35 /* : String */;
3390 static val* varonce36;
3391 val* var37 /* : String */;
3392 char* var38 /* : NativeString */;
3393 long var39 /* : Int */;
3394 val* var40 /* : String */;
3395 short int var41 /* : Bool */;
3396 short int var42 /* : Bool */;
3397 int cltype;
3398 int idtype;
3399 static val* varonce43;
3400 val* var44 /* : String */;
3401 char* var45 /* : NativeString */;
3402 long var46 /* : Int */;
3403 val* var47 /* : String */;
3404 static val* varonce48;
3405 val* var49 /* : String */;
3406 char* var50 /* : NativeString */;
3407 long var51 /* : Int */;
3408 val* var52 /* : String */;
3409 val* var53 /* : Array[Object] */;
3410 long var54 /* : Int */;
3411 val* var55 /* : NativeArray[Object] */;
3412 val* var56 /* : String */;
3413 static val* varonce57;
3414 val* var58 /* : String */;
3415 char* var59 /* : NativeString */;
3416 long var60 /* : Int */;
3417 val* var61 /* : String */;
3418 val* var62 /* : String */;
3419 static val* varonce63;
3420 val* var64 /* : String */;
3421 char* var65 /* : NativeString */;
3422 long var66 /* : Int */;
3423 val* var67 /* : String */;
3424 static val* varonce68;
3425 val* var69 /* : String */;
3426 char* var70 /* : NativeString */;
3427 long var71 /* : Int */;
3428 val* var72 /* : String */;
3429 static val* varonce73;
3430 val* var74 /* : String */;
3431 char* var75 /* : NativeString */;
3432 long var76 /* : Int */;
3433 val* var77 /* : String */;
3434 static val* varonce78;
3435 val* var79 /* : String */;
3436 char* var80 /* : NativeString */;
3437 long var81 /* : Int */;
3438 val* var82 /* : String */;
3439 val* var83 /* : String */;
3440 static val* varonce84;
3441 val* var85 /* : String */;
3442 char* var86 /* : NativeString */;
3443 long var87 /* : Int */;
3444 val* var88 /* : String */;
3445 val* var89 /* : Array[Object] */;
3446 long var90 /* : Int */;
3447 val* var91 /* : NativeArray[Object] */;
3448 val* var92 /* : String */;
3449 static val* varonce93;
3450 val* var94 /* : String */;
3451 char* var95 /* : NativeString */;
3452 long var96 /* : Int */;
3453 val* var97 /* : String */;
3454 val* var98 /* : MClassType */;
3455 val* var99 /* : MType */;
3456 val* var100 /* : RuntimeVariable */;
3457 static val* varonce101;
3458 val* var102 /* : String */;
3459 char* var103 /* : NativeString */;
3460 long var104 /* : Int */;
3461 val* var105 /* : String */;
3462 static val* varonce106;
3463 val* var107 /* : String */;
3464 char* var108 /* : NativeString */;
3465 long var109 /* : Int */;
3466 val* var110 /* : String */;
3467 static val* varonce111;
3468 val* var112 /* : String */;
3469 char* var113 /* : NativeString */;
3470 long var114 /* : Int */;
3471 val* var115 /* : String */;
3472 val* var116 /* : String */;
3473 static val* varonce117;
3474 val* var118 /* : String */;
3475 char* var119 /* : NativeString */;
3476 long var120 /* : Int */;
3477 val* var121 /* : String */;
3478 val* var122 /* : Array[Object] */;
3479 long var123 /* : Int */;
3480 val* var124 /* : NativeArray[Object] */;
3481 val* var125 /* : String */;
3482 static val* varonce126;
3483 val* var127 /* : String */;
3484 char* var128 /* : NativeString */;
3485 long var129 /* : Int */;
3486 val* var130 /* : String */;
3487 static val* varonce131;
3488 val* var132 /* : String */;
3489 char* var133 /* : NativeString */;
3490 long var134 /* : Int */;
3491 val* var135 /* : String */;
3492 static val* varonce136;
3493 val* var137 /* : String */;
3494 char* var138 /* : NativeString */;
3495 long var139 /* : Int */;
3496 val* var140 /* : String */;
3497 static val* varonce141;
3498 val* var142 /* : String */;
3499 char* var143 /* : NativeString */;
3500 long var144 /* : Int */;
3501 val* var145 /* : String */;
3502 val* var146 /* : String */;
3503 static val* varonce147;
3504 val* var148 /* : String */;
3505 char* var149 /* : NativeString */;
3506 long var150 /* : Int */;
3507 val* var151 /* : String */;
3508 val* var152 /* : Array[Object] */;
3509 long var153 /* : Int */;
3510 val* var154 /* : NativeArray[Object] */;
3511 val* var155 /* : String */;
3512 static val* varonce156;
3513 val* var157 /* : String */;
3514 char* var158 /* : NativeString */;
3515 long var159 /* : Int */;
3516 val* var160 /* : String */;
3517 val* var161 /* : String */;
3518 static val* varonce162;
3519 val* var163 /* : String */;
3520 char* var164 /* : NativeString */;
3521 long var165 /* : Int */;
3522 val* var166 /* : String */;
3523 val* var167 /* : String */;
3524 static val* varonce168;
3525 val* var169 /* : String */;
3526 char* var170 /* : NativeString */;
3527 long var171 /* : Int */;
3528 val* var172 /* : String */;
3529 static val* varonce173;
3530 val* var174 /* : String */;
3531 char* var175 /* : NativeString */;
3532 long var176 /* : Int */;
3533 val* var177 /* : String */;
3534 static val* varonce178;
3535 val* var179 /* : String */;
3536 char* var180 /* : NativeString */;
3537 long var181 /* : Int */;
3538 val* var182 /* : String */;
3539 val* var183 /* : String */;
3540 static val* varonce184;
3541 val* var185 /* : String */;
3542 char* var186 /* : NativeString */;
3543 long var187 /* : Int */;
3544 val* var188 /* : String */;
3545 val* var189 /* : Array[Object] */;
3546 long var190 /* : Int */;
3547 val* var191 /* : NativeArray[Object] */;
3548 val* var192 /* : String */;
3549 var_a = p0;
3550 var_recv = p1;
3551 var_value = p2;
3552 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
3553 var = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3554 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var) /* static_mtype on <var:MPropDef(MAttributeDef)>*/;
3555 if (var1 == NULL) {
3556 fprintf(stderr, "Runtime error: %s", "Cast failed");
3557 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1262);
3558 show_backtrace(1);
3559 }
3560 var_mtype = var1;
3561 var2 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3562 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MPropDef(MAttributeDef)>*/;
3563 var_intromclassdef = var3;
3564 var4 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3565 var5 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3566 var6 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
3567 var7 = 1;
3568 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>*/;
3569 var_mtype = var8;
3570 var9 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value, var_mtype) /* autobox on <self:SeparateCompilerVisitor>*/;
3571 var_value = var9;
3572 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3573 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3574 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3575 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler(SeparateCompiler)>*/;
3576 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
3577 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var13) /* opt_no_union_attribute on <var13:ToolContext>*/;
3578 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
3579 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
3580 if (var16){
3581 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
3582 var18 = 5;
3583 ((void (*)(val*, long))(var17->class->vft[COLOR_array__Array__with_capacity]))(var17, var18) /* with_capacity on <var17:Array[Object]>*/;
3584 var_ = var17;
3585 if (varonce) {
3586 var19 = varonce;
3587 } else {
3588 var20 = "";
3589 var21 = 0;
3590 var22 = string__NativeString__to_s_with_length(var20, var21);
3591 var19 = var22;
3592 varonce = var19;
3593 }
3594 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
3595 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_recv) /* add on <var_:Array[Object]>*/;
3596 if (varonce23) {
3597 var24 = varonce23;
3598 } else {
3599 var25 = "->attrs[";
3600 var26 = 8;
3601 var27 = string__NativeString__to_s_with_length(var25, var26);
3602 var24 = var27;
3603 varonce23 = var24;
3604 }
3605 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on <var_:Array[Object]>*/;
3606 var28 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3607 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var28) /* add on <var_:Array[Object]>*/;
3608 if (varonce29) {
3609 var30 = varonce29;
3610 } else {
3611 var31 = "]";
3612 var32 = 1;
3613 var33 = string__NativeString__to_s_with_length(var31, var32);
3614 var30 = var33;
3615 varonce29 = var30;
3616 }
3617 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var30) /* add on <var_:Array[Object]>*/;
3618 var34 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3619 var_attr = var34;
3620 var35 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
3621 if (varonce36) {
3622 var37 = varonce36;
3623 } else {
3624 var38 = "val*";
3625 var39 = 4;
3626 var40 = string__NativeString__to_s_with_length(var38, var39);
3627 var37 = var40;
3628 varonce36 = var37;
3629 }
3630 var41 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___33d_61d]))(var35, var37) /* != on <var35:String>*/;
3631 if (var41){
3632 /* <var_mtype:MType> isa MClassType */
3633 cltype = type_model__MClassType.color;
3634 idtype = type_model__MClassType.id;
3635 if(cltype >= var_mtype->type->table_size) {
3636 var42 = 0;
3637 } else {
3638 var42 = var_mtype->type->type_table[cltype] == idtype;
3639 }
3640 if (!var42) {
3641 fprintf(stderr, "Runtime error: %s", "Assert failed");
3642 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1273);
3643 show_backtrace(1);
3644 }
3645 if (varonce43) {
3646 var44 = varonce43;
3647 } else {
3648 var45 = "if (";
3649 var46 = 4;
3650 var47 = string__NativeString__to_s_with_length(var45, var46);
3651 var44 = var47;
3652 varonce43 = var44;
3653 }
3654 if (varonce48) {
3655 var49 = varonce48;
3656 } else {
3657 var50 = " != NULL) {";
3658 var51 = 11;
3659 var52 = string__NativeString__to_s_with_length(var50, var51);
3660 var49 = var52;
3661 varonce48 = var49;
3662 }
3663 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
3664 { /* var53 = array_instance Array[Object] */
3665 var54 = 3;
3666 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
3667 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var44;
3668 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_attr;
3669 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var49;
3670 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
3671 }
3672 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
3673 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var56) /* add on <self:SeparateCompilerVisitor>*/;
3674 if (varonce57) {
3675 var58 = varonce57;
3676 } else {
3677 var59 = "((struct instance_";
3678 var60 = 18;
3679 var61 = string__NativeString__to_s_with_length(var59, var60);
3680 var58 = var61;
3681 varonce57 = var58;
3682 }
3683 var62 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__c_instance_name]))(var_mtype) /* c_instance_name on <var_mtype:MType(MClassType)>*/;
3684 if (varonce63) {
3685 var64 = varonce63;
3686 } else {
3687 var65 = "*)";
3688 var66 = 2;
3689 var67 = string__NativeString__to_s_with_length(var65, var66);
3690 var64 = var67;
3691 varonce63 = var64;
3692 }
3693 if (varonce68) {
3694 var69 = varonce68;
3695 } else {
3696 var70 = ")->value = ";
3697 var71 = 11;
3698 var72 = string__NativeString__to_s_with_length(var70, var71);
3699 var69 = var72;
3700 varonce68 = var69;
3701 }
3702 if (varonce73) {
3703 var74 = varonce73;
3704 } else {
3705 var75 = "; /* ";
3706 var76 = 5;
3707 var77 = string__NativeString__to_s_with_length(var75, var76);
3708 var74 = var77;
3709 varonce73 = var74;
3710 }
3711 if (varonce78) {
3712 var79 = varonce78;
3713 } else {
3714 var80 = " on ";
3715 var81 = 4;
3716 var82 = string__NativeString__to_s_with_length(var80, var81);
3717 var79 = var82;
3718 varonce78 = var79;
3719 }
3720 var83 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3721 if (varonce84) {
3722 var85 = varonce84;
3723 } else {
3724 var86 = " */";
3725 var87 = 3;
3726 var88 = string__NativeString__to_s_with_length(var86, var87);
3727 var85 = var88;
3728 varonce84 = var85;
3729 }
3730 var89 = NEW_array__Array(&type_array__Arraykernel__Object);
3731 { /* var89 = array_instance Array[Object] */
3732 var90 = 11;
3733 var91 = NEW_array__NativeArray(var90, &type_array__NativeArraykernel__Object);
3734 ((struct instance_array__NativeArray*)var91)->values[0] = (val*) var58;
3735 ((struct instance_array__NativeArray*)var91)->values[1] = (val*) var62;
3736 ((struct instance_array__NativeArray*)var91)->values[2] = (val*) var64;
3737 ((struct instance_array__NativeArray*)var91)->values[3] = (val*) var_attr;
3738 ((struct instance_array__NativeArray*)var91)->values[4] = (val*) var69;
3739 ((struct instance_array__NativeArray*)var91)->values[5] = (val*) var_value;
3740 ((struct instance_array__NativeArray*)var91)->values[6] = (val*) var74;
3741 ((struct instance_array__NativeArray*)var91)->values[7] = (val*) var_a;
3742 ((struct instance_array__NativeArray*)var91)->values[8] = (val*) var79;
3743 ((struct instance_array__NativeArray*)var91)->values[9] = (val*) var83;
3744 ((struct instance_array__NativeArray*)var91)->values[10] = (val*) var85;
3745 ((void (*)(val*, val*, long))(var89->class->vft[COLOR_array__Array__with_native]))(var89, var91, var90) /* with_native on <var89:Array[Object]>*/;
3746 }
3747 var92 = ((val* (*)(val*))(var89->class->vft[COLOR_string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
3748 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var92) /* add on <self:SeparateCompilerVisitor>*/;
3749 if (varonce93) {
3750 var94 = varonce93;
3751 } else {
3752 var95 = "} else {";
3753 var96 = 8;
3754 var97 = string__NativeString__to_s_with_length(var95, var96);
3755 var94 = var97;
3756 varonce93 = var94;
3757 }
3758 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var94) /* add on <self:SeparateCompilerVisitor>*/;
3759 var98 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
3760 var99 = ((val* (*)(val*))(var98->class->vft[COLOR_model__MType__as_nullable]))(var98) /* as_nullable on <var98:MClassType>*/;
3761 var100 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value, var99) /* autobox on <self:SeparateCompilerVisitor>*/;
3762 var_value = var100;
3763 if (varonce101) {
3764 var102 = varonce101;
3765 } else {
3766 var103 = " = ";
3767 var104 = 3;
3768 var105 = string__NativeString__to_s_with_length(var103, var104);
3769 var102 = var105;
3770 varonce101 = var102;
3771 }
3772 if (varonce106) {
3773 var107 = varonce106;
3774 } else {
3775 var108 = "; /* ";
3776 var109 = 5;
3777 var110 = string__NativeString__to_s_with_length(var108, var109);
3778 var107 = var110;
3779 varonce106 = var107;
3780 }
3781 if (varonce111) {
3782 var112 = varonce111;
3783 } else {
3784 var113 = " on ";
3785 var114 = 4;
3786 var115 = string__NativeString__to_s_with_length(var113, var114);
3787 var112 = var115;
3788 varonce111 = var112;
3789 }
3790 var116 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3791 if (varonce117) {
3792 var118 = varonce117;
3793 } else {
3794 var119 = " */";
3795 var120 = 3;
3796 var121 = string__NativeString__to_s_with_length(var119, var120);
3797 var118 = var121;
3798 varonce117 = var118;
3799 }
3800 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
3801 { /* var122 = array_instance Array[Object] */
3802 var123 = 8;
3803 var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object);
3804 ((struct instance_array__NativeArray*)var124)->values[0] = (val*) var_attr;
3805 ((struct instance_array__NativeArray*)var124)->values[1] = (val*) var102;
3806 ((struct instance_array__NativeArray*)var124)->values[2] = (val*) var_value;
3807 ((struct instance_array__NativeArray*)var124)->values[3] = (val*) var107;
3808 ((struct instance_array__NativeArray*)var124)->values[4] = (val*) var_a;
3809 ((struct instance_array__NativeArray*)var124)->values[5] = (val*) var112;
3810 ((struct instance_array__NativeArray*)var124)->values[6] = (val*) var116;
3811 ((struct instance_array__NativeArray*)var124)->values[7] = (val*) var118;
3812 ((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on <var122:Array[Object]>*/;
3813 }
3814 var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on <var122:Array[Object]>*/;
3815 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var125) /* add on <self:SeparateCompilerVisitor>*/;
3816 if (varonce126) {
3817 var127 = varonce126;
3818 } else {
3819 var128 = "}";
3820 var129 = 1;
3821 var130 = string__NativeString__to_s_with_length(var128, var129);
3822 var127 = var130;
3823 varonce126 = var127;
3824 }
3825 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var127) /* add on <self:SeparateCompilerVisitor>*/;
3826 } else {
3827 if (varonce131) {
3828 var132 = varonce131;
3829 } else {
3830 var133 = " = ";
3831 var134 = 3;
3832 var135 = string__NativeString__to_s_with_length(var133, var134);
3833 var132 = var135;
3834 varonce131 = var132;
3835 }
3836 if (varonce136) {
3837 var137 = varonce136;
3838 } else {
3839 var138 = "; /* ";
3840 var139 = 5;
3841 var140 = string__NativeString__to_s_with_length(var138, var139);
3842 var137 = var140;
3843 varonce136 = var137;
3844 }
3845 if (varonce141) {
3846 var142 = varonce141;
3847 } else {
3848 var143 = " on ";
3849 var144 = 4;
3850 var145 = string__NativeString__to_s_with_length(var143, var144);
3851 var142 = var145;
3852 varonce141 = var142;
3853 }
3854 var146 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3855 if (varonce147) {
3856 var148 = varonce147;
3857 } else {
3858 var149 = " */";
3859 var150 = 3;
3860 var151 = string__NativeString__to_s_with_length(var149, var150);
3861 var148 = var151;
3862 varonce147 = var148;
3863 }
3864 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
3865 { /* var152 = array_instance Array[Object] */
3866 var153 = 8;
3867 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
3868 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var_attr;
3869 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var132;
3870 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var_value;
3871 ((struct instance_array__NativeArray*)var154)->values[3] = (val*) var137;
3872 ((struct instance_array__NativeArray*)var154)->values[4] = (val*) var_a;
3873 ((struct instance_array__NativeArray*)var154)->values[5] = (val*) var142;
3874 ((struct instance_array__NativeArray*)var154)->values[6] = (val*) var146;
3875 ((struct instance_array__NativeArray*)var154)->values[7] = (val*) var148;
3876 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
3877 }
3878 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
3879 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var155) /* add on <self:SeparateCompilerVisitor>*/;
3880 }
3881 } else {
3882 if (varonce156) {
3883 var157 = varonce156;
3884 } else {
3885 var158 = "->attrs[";
3886 var159 = 8;
3887 var160 = string__NativeString__to_s_with_length(var158, var159);
3888 var157 = var160;
3889 varonce156 = var157;
3890 }
3891 var161 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3892 if (varonce162) {
3893 var163 = varonce162;
3894 } else {
3895 var164 = "].";
3896 var165 = 2;
3897 var166 = string__NativeString__to_s_with_length(var164, var165);
3898 var163 = var166;
3899 varonce162 = var163;
3900 }
3901 var167 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_mtype) /* ctypename on <var_mtype:MType>*/;
3902 if (varonce168) {
3903 var169 = varonce168;
3904 } else {
3905 var170 = " = ";
3906 var171 = 3;
3907 var172 = string__NativeString__to_s_with_length(var170, var171);
3908 var169 = var172;
3909 varonce168 = var169;
3910 }
3911 if (varonce173) {
3912 var174 = varonce173;
3913 } else {
3914 var175 = "; /* ";
3915 var176 = 5;
3916 var177 = string__NativeString__to_s_with_length(var175, var176);
3917 var174 = var177;
3918 varonce173 = var174;
3919 }
3920 if (varonce178) {
3921 var179 = varonce178;
3922 } else {
3923 var180 = " on ";
3924 var181 = 4;
3925 var182 = string__NativeString__to_s_with_length(var180, var181);
3926 var179 = var182;
3927 varonce178 = var179;
3928 }
3929 var183 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3930 if (varonce184) {
3931 var185 = varonce184;
3932 } else {
3933 var186 = " */";
3934 var187 = 3;
3935 var188 = string__NativeString__to_s_with_length(var186, var187);
3936 var185 = var188;
3937 varonce184 = var185;
3938 }
3939 var189 = NEW_array__Array(&type_array__Arraykernel__Object);
3940 { /* var189 = array_instance Array[Object] */
3941 var190 = 12;
3942 var191 = NEW_array__NativeArray(var190, &type_array__NativeArraykernel__Object);
3943 ((struct instance_array__NativeArray*)var191)->values[0] = (val*) var_recv;
3944 ((struct instance_array__NativeArray*)var191)->values[1] = (val*) var157;
3945 ((struct instance_array__NativeArray*)var191)->values[2] = (val*) var161;
3946 ((struct instance_array__NativeArray*)var191)->values[3] = (val*) var163;
3947 ((struct instance_array__NativeArray*)var191)->values[4] = (val*) var167;
3948 ((struct instance_array__NativeArray*)var191)->values[5] = (val*) var169;
3949 ((struct instance_array__NativeArray*)var191)->values[6] = (val*) var_value;
3950 ((struct instance_array__NativeArray*)var191)->values[7] = (val*) var174;
3951 ((struct instance_array__NativeArray*)var191)->values[8] = (val*) var_a;
3952 ((struct instance_array__NativeArray*)var191)->values[9] = (val*) var179;
3953 ((struct instance_array__NativeArray*)var191)->values[10] = (val*) var183;
3954 ((struct instance_array__NativeArray*)var191)->values[11] = (val*) var185;
3955 ((void (*)(val*, val*, long))(var189->class->vft[COLOR_array__Array__with_native]))(var189, var191, var190) /* with_native on <var189:Array[Object]>*/;
3956 }
3957 var192 = ((val* (*)(val*))(var189->class->vft[COLOR_string__Object__to_s]))(var189) /* to_s on <var189:Array[Object]>*/;
3958 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var192) /* add on <self:SeparateCompilerVisitor>*/;
3959 }
3960 RET_LABEL:;
3961 }
3962 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
3963 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
3964 separate_compiler__SeparateCompilerVisitor__write_attribute(self, p0, p1, p2);
3965 RET_LABEL:;
3966 }
3967 /* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: SeparateCompilerVisitor, MType) */
3968 void separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(val* self, val* p0) {
3969 val* var_mtype /* var mtype: MType */;
3970 val* var /* : AbstractCompiler */;
3971 val* var1 /* : ModelBuilder */;
3972 val* var2 /* : ToolContext */;
3973 val* var3 /* : OptionBool */;
3974 val* var4 /* : nullable Object */;
3975 short int var5 /* : Bool */;
3976 short int var6 /* : Bool */;
3977 val* var7 /* : String */;
3978 val* var8 /* : String */;
3979 val* var_col /* var col: String */;
3980 static val* varonce;
3981 val* var9 /* : String */;
3982 char* var10 /* : NativeString */;
3983 long var11 /* : Int */;
3984 val* var12 /* : String */;
3985 static val* varonce13;
3986 val* var14 /* : String */;
3987 char* var15 /* : NativeString */;
3988 long var16 /* : Int */;
3989 val* var17 /* : String */;
3990 val* var18 /* : Array[Object] */;
3991 long var19 /* : Int */;
3992 val* var20 /* : NativeArray[Object] */;
3993 val* var21 /* : String */;
3994 static val* varonce22;
3995 val* var23 /* : String */;
3996 char* var24 /* : NativeString */;
3997 long var25 /* : Int */;
3998 val* var26 /* : String */;
3999 val* var27 /* : String */;
4000 val* var28 /* : String */;
4001 static val* varonce29;
4002 val* var30 /* : String */;
4003 char* var31 /* : NativeString */;
4004 long var32 /* : Int */;
4005 val* var33 /* : String */;
4006 val* var34 /* : Array[Object] */;
4007 long var35 /* : Int */;
4008 val* var36 /* : NativeArray[Object] */;
4009 val* var37 /* : String */;
4010 static val* varonce38;
4011 val* var39 /* : String */;
4012 char* var40 /* : NativeString */;
4013 long var41 /* : Int */;
4014 val* var42 /* : String */;
4015 static val* varonce43;
4016 val* var44 /* : String */;
4017 char* var45 /* : NativeString */;
4018 long var46 /* : Int */;
4019 val* var47 /* : String */;
4020 var_mtype = p0;
4021 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4022 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler(SeparateCompiler)>*/;
4023 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
4024 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var2) /* opt_hardening on <var2:ToolContext>*/;
4025 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
4026 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
4027 var6 = !var5;
4028 if (var6){
4029 goto RET_LABEL;
4030 } else {
4031 }
4032 var7 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MType>*/;
4033 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var7) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4034 var8 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MType>*/;
4035 var_col = var8;
4036 if (varonce) {
4037 var9 = varonce;
4038 } else {
4039 var10 = "if(";
4040 var11 = 3;
4041 var12 = string__NativeString__to_s_with_length(var10, var11);
4042 var9 = var12;
4043 varonce = var9;
4044 }
4045 if (varonce13) {
4046 var14 = varonce13;
4047 } else {
4048 var15 = " == -1) {";
4049 var16 = 9;
4050 var17 = string__NativeString__to_s_with_length(var15, var16);
4051 var14 = var17;
4052 varonce13 = var14;
4053 }
4054 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
4055 { /* var18 = array_instance Array[Object] */
4056 var19 = 3;
4057 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
4058 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
4059 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_col;
4060 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
4061 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
4062 }
4063 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
4064 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var21) /* add on <self:SeparateCompilerVisitor>*/;
4065 if (varonce22) {
4066 var23 = varonce22;
4067 } else {
4068 var24 = "fprintf(stderr, \"Resolution of a dead open type: %s\\n\", \"";
4069 var25 = 57;
4070 var26 = string__NativeString__to_s_with_length(var24, var25);
4071 var23 = var26;
4072 varonce22 = var23;
4073 }
4074 var27 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:MType>*/;
4075 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_string__AbstractString__escape_to_c]))(var27) /* escape_to_c on <var27:String>*/;
4076 if (varonce29) {
4077 var30 = varonce29;
4078 } else {
4079 var31 = "\");";
4080 var32 = 3;
4081 var33 = string__NativeString__to_s_with_length(var31, var32);
4082 var30 = var33;
4083 varonce29 = var30;
4084 }
4085 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
4086 { /* var34 = array_instance Array[Object] */
4087 var35 = 3;
4088 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
4089 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var23;
4090 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var28;
4091 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var30;
4092 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
4093 }
4094 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
4095 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var37) /* add on <self:SeparateCompilerVisitor>*/;
4096 if (varonce38) {
4097 var39 = varonce38;
4098 } else {
4099 var40 = "open type dead";
4100 var41 = 14;
4101 var42 = string__NativeString__to_s_with_length(var40, var41);
4102 var39 = var42;
4103 varonce38 = var39;
4104 }
4105 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var39) /* add_abort on <self:SeparateCompilerVisitor>*/;
4106 if (varonce43) {
4107 var44 = varonce43;
4108 } else {
4109 var45 = "}";
4110 var46 = 1;
4111 var47 = string__NativeString__to_s_with_length(var45, var46);
4112 var44 = var47;
4113 varonce43 = var44;
4114 }
4115 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var44) /* add on <self:SeparateCompilerVisitor>*/;
4116 RET_LABEL:;
4117 }
4118 /* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: Object, MType) */
4119 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(val* self, val* p0) {
4120 separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, p0);
4121 RET_LABEL:;
4122 }
4123 /* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: SeparateCompilerVisitor, String) */
4124 void separate_compiler__SeparateCompilerVisitor__hardening_cast_type(val* self, val* p0) {
4125 val* var_t /* var t: String */;
4126 val* var /* : AbstractCompiler */;
4127 val* var1 /* : ModelBuilder */;
4128 val* var2 /* : ToolContext */;
4129 val* var3 /* : OptionBool */;
4130 val* var4 /* : nullable Object */;
4131 short int var5 /* : Bool */;
4132 short int var6 /* : Bool */;
4133 static val* varonce;
4134 val* var7 /* : String */;
4135 char* var8 /* : NativeString */;
4136 long var9 /* : Int */;
4137 val* var10 /* : String */;
4138 static val* varonce11;
4139 val* var12 /* : String */;
4140 char* var13 /* : NativeString */;
4141 long var14 /* : Int */;
4142 val* var15 /* : String */;
4143 val* var16 /* : Array[Object] */;
4144 long var17 /* : Int */;
4145 val* var18 /* : NativeArray[Object] */;
4146 val* var19 /* : String */;
4147 static val* varonce20;
4148 val* var21 /* : String */;
4149 char* var22 /* : NativeString */;
4150 long var23 /* : Int */;
4151 val* var24 /* : String */;
4152 static val* varonce25;
4153 val* var26 /* : String */;
4154 char* var27 /* : NativeString */;
4155 long var28 /* : Int */;
4156 val* var29 /* : String */;
4157 static val* varonce30;
4158 val* var31 /* : String */;
4159 char* var32 /* : NativeString */;
4160 long var33 /* : Int */;
4161 val* var34 /* : String */;
4162 static val* varonce35;
4163 val* var36 /* : String */;
4164 char* var37 /* : NativeString */;
4165 long var38 /* : Int */;
4166 val* var39 /* : String */;
4167 static val* varonce40;
4168 val* var41 /* : String */;
4169 char* var42 /* : NativeString */;
4170 long var43 /* : Int */;
4171 val* var44 /* : String */;
4172 val* var45 /* : Array[Object] */;
4173 long var46 /* : Int */;
4174 val* var47 /* : NativeArray[Object] */;
4175 val* var48 /* : String */;
4176 static val* varonce49;
4177 val* var50 /* : String */;
4178 char* var51 /* : NativeString */;
4179 long var52 /* : Int */;
4180 val* var53 /* : String */;
4181 static val* varonce54;
4182 val* var55 /* : String */;
4183 char* var56 /* : NativeString */;
4184 long var57 /* : Int */;
4185 val* var58 /* : String */;
4186 val* var59 /* : Array[Object] */;
4187 long var60 /* : Int */;
4188 val* var61 /* : NativeArray[Object] */;
4189 val* var62 /* : String */;
4190 static val* varonce63;
4191 val* var64 /* : String */;
4192 char* var65 /* : NativeString */;
4193 long var66 /* : Int */;
4194 val* var67 /* : String */;
4195 static val* varonce68;
4196 val* var69 /* : String */;
4197 char* var70 /* : NativeString */;
4198 long var71 /* : Int */;
4199 val* var72 /* : String */;
4200 var_t = p0;
4201 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4202 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler(SeparateCompiler)>*/;
4203 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
4204 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var2) /* opt_hardening on <var2:ToolContext>*/;
4205 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
4206 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
4207 var6 = !var5;
4208 if (var6){
4209 goto RET_LABEL;
4210 } else {
4211 }
4212 if (varonce) {
4213 var7 = varonce;
4214 } else {
4215 var8 = "if(";
4216 var9 = 3;
4217 var10 = string__NativeString__to_s_with_length(var8, var9);
4218 var7 = var10;
4219 varonce = var7;
4220 }
4221 if (varonce11) {
4222 var12 = varonce11;
4223 } else {
4224 var13 = " == NULL) {";
4225 var14 = 11;
4226 var15 = string__NativeString__to_s_with_length(var13, var14);
4227 var12 = var15;
4228 varonce11 = var12;
4229 }
4230 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
4231 { /* var16 = array_instance Array[Object] */
4232 var17 = 3;
4233 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
4234 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
4235 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_t;
4236 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
4237 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
4238 }
4239 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
4240 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var19) /* add on <self:SeparateCompilerVisitor>*/;
4241 if (varonce20) {
4242 var21 = varonce20;
4243 } else {
4244 var22 = "cast type null";
4245 var23 = 14;
4246 var24 = string__NativeString__to_s_with_length(var22, var23);
4247 var21 = var24;
4248 varonce20 = var21;
4249 }
4250 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var21) /* add_abort on <self:SeparateCompilerVisitor>*/;
4251 if (varonce25) {
4252 var26 = varonce25;
4253 } else {
4254 var27 = "}";
4255 var28 = 1;
4256 var29 = string__NativeString__to_s_with_length(var27, var28);
4257 var26 = var29;
4258 varonce25 = var26;
4259 }
4260 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var26) /* add on <self:SeparateCompilerVisitor>*/;
4261 if (varonce30) {
4262 var31 = varonce30;
4263 } else {
4264 var32 = "if(";
4265 var33 = 3;
4266 var34 = string__NativeString__to_s_with_length(var32, var33);
4267 var31 = var34;
4268 varonce30 = var31;
4269 }
4270 if (varonce35) {
4271 var36 = varonce35;
4272 } else {
4273 var37 = "->id == -1 || ";
4274 var38 = 14;
4275 var39 = string__NativeString__to_s_with_length(var37, var38);
4276 var36 = var39;
4277 varonce35 = var36;
4278 }
4279 if (varonce40) {
4280 var41 = varonce40;
4281 } else {
4282 var42 = "->color == -1) {";
4283 var43 = 16;
4284 var44 = string__NativeString__to_s_with_length(var42, var43);
4285 var41 = var44;
4286 varonce40 = var41;
4287 }
4288 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
4289 { /* var45 = array_instance Array[Object] */
4290 var46 = 5;
4291 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
4292 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var31;
4293 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var_t;
4294 ((struct instance_array__NativeArray*)var47)->values[2] = (val*) var36;
4295 ((struct instance_array__NativeArray*)var47)->values[3] = (val*) var_t;
4296 ((struct instance_array__NativeArray*)var47)->values[4] = (val*) var41;
4297 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
4298 }
4299 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
4300 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var48) /* add on <self:SeparateCompilerVisitor>*/;
4301 if (varonce49) {
4302 var50 = varonce49;
4303 } else {
4304 var51 = "fprintf(stderr, \"Try to cast on a dead cast type: %s\\n\", ";
4305 var52 = 57;
4306 var53 = string__NativeString__to_s_with_length(var51, var52);
4307 var50 = var53;
4308 varonce49 = var50;
4309 }
4310 if (varonce54) {
4311 var55 = varonce54;
4312 } else {
4313 var56 = "->name);";
4314 var57 = 8;
4315 var58 = string__NativeString__to_s_with_length(var56, var57);
4316 var55 = var58;
4317 varonce54 = var55;
4318 }
4319 var59 = NEW_array__Array(&type_array__Arraykernel__Object);
4320 { /* var59 = array_instance Array[Object] */
4321 var60 = 3;
4322 var61 = NEW_array__NativeArray(var60, &type_array__NativeArraykernel__Object);
4323 ((struct instance_array__NativeArray*)var61)->values[0] = (val*) var50;
4324 ((struct instance_array__NativeArray*)var61)->values[1] = (val*) var_t;
4325 ((struct instance_array__NativeArray*)var61)->values[2] = (val*) var55;
4326 ((void (*)(val*, val*, long))(var59->class->vft[COLOR_array__Array__with_native]))(var59, var61, var60) /* with_native on <var59:Array[Object]>*/;
4327 }
4328 var62 = ((val* (*)(val*))(var59->class->vft[COLOR_string__Object__to_s]))(var59) /* to_s on <var59:Array[Object]>*/;
4329 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var62) /* add on <self:SeparateCompilerVisitor>*/;
4330 if (varonce63) {
4331 var64 = varonce63;
4332 } else {
4333 var65 = "cast type dead";
4334 var66 = 14;
4335 var67 = string__NativeString__to_s_with_length(var65, var66);
4336 var64 = var67;
4337 varonce63 = var64;
4338 }
4339 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var64) /* add_abort on <self:SeparateCompilerVisitor>*/;
4340 if (varonce68) {
4341 var69 = varonce68;
4342 } else {
4343 var70 = "}";
4344 var71 = 1;
4345 var72 = string__NativeString__to_s_with_length(var70, var71);
4346 var69 = var72;
4347 varonce68 = var69;
4348 }
4349 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var69) /* add on <self:SeparateCompilerVisitor>*/;
4350 RET_LABEL:;
4351 }
4352 /* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: Object, String) */
4353 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__hardening_cast_type(val* self, val* p0) {
4354 separate_compiler__SeparateCompilerVisitor__hardening_cast_type(self, p0);
4355 RET_LABEL:;
4356 }
4357 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: SeparateCompilerVisitor, MClassType): RuntimeVariable */
4358 val* separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
4359 val* var /* : RuntimeVariable */;
4360 val* var_mtype /* var mtype: MClassType */;
4361 static val* varonce;
4362 val* var1 /* : String */;
4363 char* var2 /* : NativeString */;
4364 long var3 /* : Int */;
4365 val* var4 /* : String */;
4366 val* var5 /* : MClass */;
4367 val* var6 /* : String */;
4368 val* var7 /* : Array[Object] */;
4369 long var8 /* : Int */;
4370 val* var9 /* : NativeArray[Object] */;
4371 val* var10 /* : String */;
4372 val* var11 /* : AbstractCompiler */;
4373 val* var_compiler /* var compiler: SeparateCompiler */;
4374 short int var12 /* : Bool */;
4375 short int var13 /* : Bool */;
4376 int cltype;
4377 int idtype;
4378 short int var_ /* var : Bool */;
4379 short int var14 /* : Bool */;
4380 val* var15 /* : nullable Frame */;
4381 val* var16 /* : MPropDef */;
4382 val* var17 /* : MClassDef */;
4383 val* var18 /* : nullable Frame */;
4384 val* var19 /* : Array[RuntimeVariable] */;
4385 val* var20 /* : nullable Object */;
4386 val* var_recv /* var recv: RuntimeVariable */;
4387 val* var21 /* : String */;
4388 val* var_recv_type_info /* var recv_type_info: String */;
4389 val* var22 /* : String */;
4390 short int var23 /* : Bool */;
4391 val* var24 /* : ModelBuilder */;
4392 val* var25 /* : ToolContext */;
4393 val* var26 /* : OptionBool */;
4394 val* var27 /* : nullable Object */;
4395 short int var28 /* : Bool */;
4396 short int var_29 /* var : Bool */;
4397 val* var30 /* : ModelBuilder */;
4398 val* var31 /* : ToolContext */;
4399 val* var32 /* : OptionBool */;
4400 val* var33 /* : nullable Object */;
4401 short int var34 /* : Bool */;
4402 static val* varonce35;
4403 val* var36 /* : String */;
4404 char* var37 /* : NativeString */;
4405 long var38 /* : Int */;
4406 val* var39 /* : String */;
4407 val* var40 /* : MClass */;
4408 val* var41 /* : String */;
4409 static val* varonce42;
4410 val* var43 /* : String */;
4411 char* var44 /* : NativeString */;
4412 long var45 /* : Int */;
4413 val* var46 /* : String */;
4414 static val* varonce47;
4415 val* var48 /* : String */;
4416 char* var49 /* : NativeString */;
4417 long var50 /* : Int */;
4418 val* var51 /* : String */;
4419 static val* varonce52;
4420 val* var53 /* : String */;
4421 char* var54 /* : NativeString */;
4422 long var55 /* : Int */;
4423 val* var56 /* : String */;
4424 val* var57 /* : String */;
4425 static val* varonce58;
4426 val* var59 /* : String */;
4427 char* var60 /* : NativeString */;
4428 long var61 /* : Int */;
4429 val* var62 /* : String */;
4430 val* var63 /* : Array[Object] */;
4431 long var64 /* : Int */;
4432 val* var65 /* : NativeArray[Object] */;
4433 val* var66 /* : String */;
4434 val* var67 /* : RuntimeVariable */;
4435 static val* varonce68;
4436 val* var69 /* : String */;
4437 char* var70 /* : NativeString */;
4438 long var71 /* : Int */;
4439 val* var72 /* : String */;
4440 val* var73 /* : MClass */;
4441 val* var74 /* : String */;
4442 static val* varonce75;
4443 val* var76 /* : String */;
4444 char* var77 /* : NativeString */;
4445 long var78 /* : Int */;
4446 val* var79 /* : String */;
4447 static val* varonce80;
4448 val* var81 /* : String */;
4449 char* var82 /* : NativeString */;
4450 long var83 /* : Int */;
4451 val* var84 /* : String */;
4452 val* var85 /* : String */;
4453 static val* varonce86;
4454 val* var87 /* : String */;
4455 char* var88 /* : NativeString */;
4456 long var89 /* : Int */;
4457 val* var90 /* : String */;
4458 val* var91 /* : Array[Object] */;
4459 long var92 /* : Int */;
4460 val* var93 /* : NativeArray[Object] */;
4461 val* var94 /* : String */;
4462 val* var95 /* : RuntimeVariable */;
4463 val* var96 /* : Set[MType] */;
4464 static val* varonce97;
4465 val* var98 /* : String */;
4466 char* var99 /* : NativeString */;
4467 long var100 /* : Int */;
4468 val* var101 /* : String */;
4469 val* var102 /* : String */;
4470 val* var103 /* : Array[Object] */;
4471 long var104 /* : Int */;
4472 val* var105 /* : NativeArray[Object] */;
4473 val* var106 /* : String */;
4474 static val* varonce107;
4475 val* var108 /* : String */;
4476 char* var109 /* : NativeString */;
4477 long var110 /* : Int */;
4478 val* var111 /* : String */;
4479 val* var112 /* : MClass */;
4480 val* var113 /* : String */;
4481 static val* varonce114;
4482 val* var115 /* : String */;
4483 char* var116 /* : NativeString */;
4484 long var117 /* : Int */;
4485 val* var118 /* : String */;
4486 val* var119 /* : String */;
4487 static val* varonce120;
4488 val* var121 /* : String */;
4489 char* var122 /* : NativeString */;
4490 long var123 /* : Int */;
4491 val* var124 /* : String */;
4492 val* var125 /* : Array[Object] */;
4493 long var126 /* : Int */;
4494 val* var127 /* : NativeArray[Object] */;
4495 val* var128 /* : String */;
4496 val* var129 /* : RuntimeVariable */;
4497 var_mtype = p0;
4498 if (varonce) {
4499 var1 = varonce;
4500 } else {
4501 var2 = "NEW_";
4502 var3 = 4;
4503 var4 = string__NativeString__to_s_with_length(var2, var3);
4504 var1 = var4;
4505 varonce = var1;
4506 }
4507 var5 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
4508 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var5) /* c_name on <var5:MClass>*/;
4509 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
4510 { /* var7 = array_instance Array[Object] */
4511 var8 = 2;
4512 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
4513 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var1;
4514 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var6;
4515 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
4516 }
4517 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
4518 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4519 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4520 var_compiler = var11;
4521 /* <var_mtype:MClassType> isa MGenericType */
4522 cltype = type_model__MGenericType.color;
4523 idtype = type_model__MGenericType.id;
4524 if(cltype >= var_mtype->type->table_size) {
4525 var13 = 0;
4526 } else {
4527 var13 = var_mtype->type->type_table[cltype] == idtype;
4528 }
4529 var_ = var13;
4530 if (var13){
4531 var14 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType(MGenericType)>*/;
4532 var12 = var14;
4533 } else {
4534 var12 = var_;
4535 }
4536 if (var12){
4537 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__hardening_live_open_type]))(self, var_mtype) /* hardening_live_open_type on <self:SeparateCompilerVisitor>*/;
4538 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4539 if (var15 == NULL) {
4540 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4541 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1322);
4542 show_backtrace(1);
4543 } else {
4544 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var15) /* mpropdef on <var15:nullable Frame>*/;
4545 }
4546 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mclassdef]))(var16) /* mclassdef on <var16:MPropDef>*/;
4547 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var17, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
4548 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4549 if (var18 == NULL) {
4550 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4551 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1323);
4552 show_backtrace(1);
4553 } else {
4554 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var18) /* arguments on <var18:nullable Frame>*/;
4555 }
4556 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__first]))(var19) /* first on <var19:Array[RuntimeVariable]>*/;
4557 var_recv = var20;
4558 var21 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
4559 var_recv_type_info = var21;
4560 var22 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
4561 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var22) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4562 var24 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4563 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var24) /* toolcontext on <var24:ModelBuilder>*/;
4564 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var25) /* opt_phmod_typing on <var25:ToolContext>*/;
4565 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_opts__Option__value]))(var26) /* value on <var26:OptionBool>*/;
4566 var28 = ((struct instance_kernel__Bool*)var27)->value; /* autounbox from nullable Object to Bool */;
4567 var_29 = var28;
4568 if (var28){
4569 var23 = var_29;
4570 } else {
4571 var30 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4572 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var30) /* toolcontext on <var30:ModelBuilder>*/;
4573 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var31) /* opt_phand_typing on <var31:ToolContext>*/;
4574 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_opts__Option__value]))(var32) /* value on <var32:OptionBool>*/;
4575 var34 = ((struct instance_kernel__Bool*)var33)->value; /* autounbox from nullable Object to Bool */;
4576 var23 = var34;
4577 }
4578 if (var23){
4579 if (varonce35) {
4580 var36 = varonce35;
4581 } else {
4582 var37 = "NEW_";
4583 var38 = 4;
4584 var39 = string__NativeString__to_s_with_length(var37, var38);
4585 var36 = var39;
4586 varonce35 = var36;
4587 }
4588 var40 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
4589 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var40) /* c_name on <var40:MClass>*/;
4590 if (varonce42) {
4591 var43 = varonce42;
4592 } else {
4593 var44 = "(";
4594 var45 = 1;
4595 var46 = string__NativeString__to_s_with_length(var44, var45);
4596 var43 = var46;
4597 varonce42 = var43;
4598 }
4599 if (varonce47) {
4600 var48 = varonce47;
4601 } else {
4602 var49 = "->resolution_table->types[HASH(";
4603 var50 = 31;
4604 var51 = string__NativeString__to_s_with_length(var49, var50);
4605 var48 = var51;
4606 varonce47 = var48;
4607 }
4608 if (varonce52) {
4609 var53 = varonce52;
4610 } else {
4611 var54 = "->resolution_table->mask, ";
4612 var55 = 26;
4613 var56 = string__NativeString__to_s_with_length(var54, var55);
4614 var53 = var56;
4615 varonce52 = var53;
4616 }
4617 var57 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
4618 if (varonce58) {
4619 var59 = varonce58;
4620 } else {
4621 var60 = ")])";
4622 var61 = 3;
4623 var62 = string__NativeString__to_s_with_length(var60, var61);
4624 var59 = var62;
4625 varonce58 = var59;
4626 }
4627 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
4628 { /* var63 = array_instance Array[Object] */
4629 var64 = 9;
4630 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
4631 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var36;
4632 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var41;
4633 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var43;
4634 ((struct instance_array__NativeArray*)var65)->values[3] = (val*) var_recv_type_info;
4635 ((struct instance_array__NativeArray*)var65)->values[4] = (val*) var48;
4636 ((struct instance_array__NativeArray*)var65)->values[5] = (val*) var_recv_type_info;
4637 ((struct instance_array__NativeArray*)var65)->values[6] = (val*) var53;
4638 ((struct instance_array__NativeArray*)var65)->values[7] = (val*) var57;
4639 ((struct instance_array__NativeArray*)var65)->values[8] = (val*) var59;
4640 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
4641 }
4642 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
4643 var67 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var66, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4644 var = var67;
4645 goto RET_LABEL;
4646 } else {
4647 if (varonce68) {
4648 var69 = varonce68;
4649 } else {
4650 var70 = "NEW_";
4651 var71 = 4;
4652 var72 = string__NativeString__to_s_with_length(var70, var71);
4653 var69 = var72;
4654 varonce68 = var69;
4655 }
4656 var73 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
4657 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var73) /* c_name on <var73:MClass>*/;
4658 if (varonce75) {
4659 var76 = varonce75;
4660 } else {
4661 var77 = "(";
4662 var78 = 1;
4663 var79 = string__NativeString__to_s_with_length(var77, var78);
4664 var76 = var79;
4665 varonce75 = var76;
4666 }
4667 if (varonce80) {
4668 var81 = varonce80;
4669 } else {
4670 var82 = "->resolution_table->types[";
4671 var83 = 26;
4672 var84 = string__NativeString__to_s_with_length(var82, var83);
4673 var81 = var84;
4674 varonce80 = var81;
4675 }
4676 var85 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
4677 if (varonce86) {
4678 var87 = varonce86;
4679 } else {
4680 var88 = "])";
4681 var89 = 2;
4682 var90 = string__NativeString__to_s_with_length(var88, var89);
4683 var87 = var90;
4684 varonce86 = var87;
4685 }
4686 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
4687 { /* var91 = array_instance Array[Object] */
4688 var92 = 7;
4689 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
4690 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var69;
4691 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var74;
4692 ((struct instance_array__NativeArray*)var93)->values[2] = (val*) var76;
4693 ((struct instance_array__NativeArray*)var93)->values[3] = (val*) var_recv_type_info;
4694 ((struct instance_array__NativeArray*)var93)->values[4] = (val*) var81;
4695 ((struct instance_array__NativeArray*)var93)->values[5] = (val*) var85;
4696 ((struct instance_array__NativeArray*)var93)->values[6] = (val*) var87;
4697 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
4698 }
4699 var94 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
4700 var95 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var94, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4701 var = var95;
4702 goto RET_LABEL;
4703 }
4704 } else {
4705 }
4706 var96 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
4707 ((void (*)(val*, val*))(var96->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var96, var_mtype) /* add on <var96:Set[MType]>*/;
4708 if (varonce97) {
4709 var98 = varonce97;
4710 } else {
4711 var99 = "type_";
4712 var100 = 5;
4713 var101 = string__NativeString__to_s_with_length(var99, var100);
4714 var98 = var101;
4715 varonce97 = var98;
4716 }
4717 var102 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
4718 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
4719 { /* var103 = array_instance Array[Object] */
4720 var104 = 2;
4721 var105 = NEW_array__NativeArray(var104, &type_array__NativeArraykernel__Object);
4722 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var98;
4723 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var102;
4724 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
4725 }
4726 var106 = ((val* (*)(val*))(var103->class->vft[COLOR_string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
4727 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var106) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4728 if (varonce107) {
4729 var108 = varonce107;
4730 } else {
4731 var109 = "NEW_";
4732 var110 = 4;
4733 var111 = string__NativeString__to_s_with_length(var109, var110);
4734 var108 = var111;
4735 varonce107 = var108;
4736 }
4737 var112 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
4738 var113 = ((val* (*)(val*))(var112->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var112) /* c_name on <var112:MClass>*/;
4739 if (varonce114) {
4740 var115 = varonce114;
4741 } else {
4742 var116 = "(&type_";
4743 var117 = 7;
4744 var118 = string__NativeString__to_s_with_length(var116, var117);
4745 var115 = var118;
4746 varonce114 = var115;
4747 }
4748 var119 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
4749 if (varonce120) {
4750 var121 = varonce120;
4751 } else {
4752 var122 = ")";
4753 var123 = 1;
4754 var124 = string__NativeString__to_s_with_length(var122, var123);
4755 var121 = var124;
4756 varonce120 = var121;
4757 }
4758 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
4759 { /* var125 = array_instance Array[Object] */
4760 var126 = 5;
4761 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
4762 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var108;
4763 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var113;
4764 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var115;
4765 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var119;
4766 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var121;
4767 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
4768 }
4769 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
4770 var129 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var128, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4771 var = var129;
4772 goto RET_LABEL;
4773 RET_LABEL:;
4774 return var;
4775 }
4776 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
4777 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
4778 val* var /* : RuntimeVariable */;
4779 val* var1 /* : RuntimeVariable */;
4780 var1 = separate_compiler__SeparateCompilerVisitor__init_instance(self, p0);
4781 var = var1;
4782 RET_LABEL:;
4783 return var;
4784 }
4785 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: SeparateCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
4786 val* separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
4787 val* var /* : RuntimeVariable */;
4788 val* var_value /* var value: RuntimeVariable */;
4789 val* var_mtype /* var mtype: MType */;
4790 val* var_tag /* var tag: String */;
4791 static val* varonce;
4792 val* var1 /* : String */;
4793 char* var2 /* : NativeString */;
4794 long var3 /* : Int */;
4795 val* var4 /* : String */;
4796 val* var5 /* : String */;
4797 static val* varonce6;
4798 val* var7 /* : String */;
4799 char* var8 /* : NativeString */;
4800 long var9 /* : Int */;
4801 val* var10 /* : String */;
4802 static val* varonce11;
4803 val* var12 /* : String */;
4804 char* var13 /* : NativeString */;
4805 long var14 /* : Int */;
4806 val* var15 /* : String */;
4807 val* var16 /* : Array[Object] */;
4808 long var17 /* : Int */;
4809 val* var18 /* : NativeArray[Object] */;
4810 val* var19 /* : String */;
4811 val* var20 /* : AbstractCompiler */;
4812 val* var_compiler /* var compiler: SeparateCompiler */;
4813 val* var21 /* : nullable Frame */;
4814 val* var22 /* : Array[RuntimeVariable] */;
4815 val* var23 /* : nullable Object */;
4816 val* var_recv /* var recv: RuntimeVariable */;
4817 val* var24 /* : String */;
4818 val* var_recv_type_info /* var recv_type_info: String */;
4819 val* var25 /* : MClassType */;
4820 val* var26 /* : RuntimeVariable */;
4821 val* var_res /* var res: RuntimeVariable */;
4822 static val* varonce27;
4823 val* var28 /* : String */;
4824 char* var29 /* : NativeString */;
4825 long var30 /* : Int */;
4826 val* var31 /* : String */;
4827 val* var32 /* : String */;
4828 val* var_cltype /* var cltype: String */;
4829 static val* varonce33;
4830 val* var34 /* : String */;
4831 char* var35 /* : NativeString */;
4832 long var36 /* : Int */;
4833 val* var37 /* : String */;
4834 static val* varonce38;
4835 val* var39 /* : String */;
4836 char* var40 /* : NativeString */;
4837 long var41 /* : Int */;
4838 val* var42 /* : String */;
4839 val* var43 /* : Array[Object] */;
4840 long var44 /* : Int */;
4841 val* var45 /* : NativeArray[Object] */;
4842 val* var46 /* : String */;
4843 static val* varonce47;
4844 val* var48 /* : String */;
4845 char* var49 /* : NativeString */;
4846 long var50 /* : Int */;
4847 val* var51 /* : String */;
4848 val* var52 /* : String */;
4849 val* var_idtype /* var idtype: String */;
4850 static val* varonce53;
4851 val* var54 /* : String */;
4852 char* var55 /* : NativeString */;
4853 long var56 /* : Int */;
4854 val* var57 /* : String */;
4855 static val* varonce58;
4856 val* var59 /* : String */;
4857 char* var60 /* : NativeString */;
4858 long var61 /* : Int */;
4859 val* var62 /* : String */;
4860 val* var63 /* : Array[Object] */;
4861 long var64 /* : Int */;
4862 val* var65 /* : NativeArray[Object] */;
4863 val* var66 /* : String */;
4864 short int var67 /* : Bool */;
4865 short int var_maybe_null /* var maybe_null: Bool */;
4866 static val* varonce68;
4867 val* var69 /* : String */;
4868 char* var70 /* : NativeString */;
4869 long var71 /* : Int */;
4870 val* var72 /* : String */;
4871 val* var_accept_null /* var accept_null: String */;
4872 val* var_ntype /* var ntype: MType */;
4873 short int var73 /* : Bool */;
4874 int cltype;
4875 int idtype;
4876 val* var74 /* : MType */;
4877 static val* varonce75;
4878 val* var76 /* : String */;
4879 char* var77 /* : NativeString */;
4880 long var78 /* : Int */;
4881 val* var79 /* : String */;
4882 val* var80 /* : MType */;
4883 val* var81 /* : nullable Frame */;
4884 val* var82 /* : MPropDef */;
4885 val* var83 /* : MClassDef */;
4886 val* var84 /* : MModule */;
4887 val* var85 /* : nullable Frame */;
4888 val* var86 /* : MPropDef */;
4889 val* var87 /* : MClassDef */;
4890 val* var88 /* : MClassType */;
4891 short int var89 /* : Bool */;
4892 static val* varonce90;
4893 val* var91 /* : String */;
4894 char* var92 /* : NativeString */;
4895 long var93 /* : Int */;
4896 val* var94 /* : String */;
4897 val* var95 /* : String */;
4898 static val* varonce96;
4899 val* var97 /* : String */;
4900 char* var98 /* : NativeString */;
4901 long var99 /* : Int */;
4902 val* var100 /* : String */;
4903 static val* varonce101;
4904 val* var102 /* : String */;
4905 char* var103 /* : NativeString */;
4906 long var104 /* : Int */;
4907 val* var105 /* : String */;
4908 val* var106 /* : Array[Object] */;
4909 long var107 /* : Int */;
4910 val* var108 /* : NativeArray[Object] */;
4911 val* var109 /* : String */;
4912 val* var110 /* : ModelBuilder */;
4913 val* var111 /* : ToolContext */;
4914 val* var112 /* : OptionBool */;
4915 val* var113 /* : nullable Object */;
4916 short int var114 /* : Bool */;
4917 val* var115 /* : AbstractCompiler */;
4918 val* var116 /* : HashMap[String, Int] */;
4919 val* var_ /* var : HashMap[String, Int] */;
4920 val* var_117 /* var : String */;
4921 val* var118 /* : nullable Object */;
4922 long var119 /* : Int */;
4923 long var120 /* : Int */;
4924 long var122 /* : Int */;
4925 long var123 /* : Int */;
4926 val* var124 /* : nullable Object */;
4927 static val* varonce125;
4928 val* var126 /* : String */;
4929 char* var127 /* : NativeString */;
4930 long var128 /* : Int */;
4931 val* var129 /* : String */;
4932 static val* varonce130;
4933 val* var131 /* : String */;
4934 char* var132 /* : NativeString */;
4935 long var133 /* : Int */;
4936 val* var134 /* : String */;
4937 val* var135 /* : Array[Object] */;
4938 long var136 /* : Int */;
4939 val* var137 /* : NativeArray[Object] */;
4940 val* var138 /* : String */;
4941 short int var139 /* : Bool */;
4942 static val* varonce140;
4943 val* var141 /* : String */;
4944 char* var142 /* : NativeString */;
4945 long var143 /* : Int */;
4946 val* var144 /* : String */;
4947 val* var145 /* : String */;
4948 val* var_type_struct /* var type_struct: String */;
4949 static val* varonce146;
4950 val* var147 /* : String */;
4951 char* var148 /* : NativeString */;
4952 long var149 /* : Int */;
4953 val* var150 /* : String */;
4954 static val* varonce151;
4955 val* var152 /* : String */;
4956 char* var153 /* : NativeString */;
4957 long var154 /* : Int */;
4958 val* var155 /* : String */;
4959 val* var156 /* : Array[Object] */;
4960 long var157 /* : Int */;
4961 val* var158 /* : NativeArray[Object] */;
4962 val* var159 /* : String */;
4963 val* var160 /* : nullable Frame */;
4964 val* var161 /* : MPropDef */;
4965 val* var162 /* : MClassDef */;
4966 val* var163 /* : String */;
4967 short int var164 /* : Bool */;
4968 val* var165 /* : ModelBuilder */;
4969 val* var166 /* : ToolContext */;
4970 val* var167 /* : OptionBool */;
4971 val* var168 /* : nullable Object */;
4972 short int var169 /* : Bool */;
4973 short int var_170 /* var : Bool */;
4974 val* var171 /* : ModelBuilder */;
4975 val* var172 /* : ToolContext */;
4976 val* var173 /* : OptionBool */;
4977 val* var174 /* : nullable Object */;
4978 short int var175 /* : Bool */;
4979 static val* varonce176;
4980 val* var177 /* : String */;
4981 char* var178 /* : NativeString */;
4982 long var179 /* : Int */;
4983 val* var180 /* : String */;
4984 static val* varonce181;
4985 val* var182 /* : String */;
4986 char* var183 /* : NativeString */;
4987 long var184 /* : Int */;
4988 val* var185 /* : String */;
4989 static val* varonce186;
4990 val* var187 /* : String */;
4991 char* var188 /* : NativeString */;
4992 long var189 /* : Int */;
4993 val* var190 /* : String */;
4994 val* var191 /* : String */;
4995 static val* varonce192;
4996 val* var193 /* : String */;
4997 char* var194 /* : NativeString */;
4998 long var195 /* : Int */;
4999 val* var196 /* : String */;
5000 val* var197 /* : Array[Object] */;
5001 long var198 /* : Int */;
5002 val* var199 /* : NativeArray[Object] */;
5003 val* var200 /* : String */;
5004 static val* varonce201;
5005 val* var202 /* : String */;
5006 char* var203 /* : NativeString */;
5007 long var204 /* : Int */;
5008 val* var205 /* : String */;
5009 static val* varonce206;
5010 val* var207 /* : String */;
5011 char* var208 /* : NativeString */;
5012 long var209 /* : Int */;
5013 val* var210 /* : String */;
5014 val* var211 /* : String */;
5015 static val* varonce212;
5016 val* var213 /* : String */;
5017 char* var214 /* : NativeString */;
5018 long var215 /* : Int */;
5019 val* var216 /* : String */;
5020 val* var217 /* : Array[Object] */;
5021 long var218 /* : Int */;
5022 val* var219 /* : NativeArray[Object] */;
5023 val* var220 /* : String */;
5024 val* var221 /* : ModelBuilder */;
5025 val* var222 /* : ToolContext */;
5026 val* var223 /* : OptionBool */;
5027 val* var224 /* : nullable Object */;
5028 short int var225 /* : Bool */;
5029 val* var226 /* : AbstractCompiler */;
5030 val* var227 /* : HashMap[String, Int] */;
5031 val* var_228 /* var : HashMap[String, Int] */;
5032 val* var_229 /* var : String */;
5033 val* var230 /* : nullable Object */;
5034 long var231 /* : Int */;
5035 long var232 /* : Int */;
5036 long var234 /* : Int */;
5037 long var235 /* : Int */;
5038 val* var236 /* : nullable Object */;
5039 static val* varonce237;
5040 val* var238 /* : String */;
5041 char* var239 /* : NativeString */;
5042 long var240 /* : Int */;
5043 val* var241 /* : String */;
5044 static val* varonce242;
5045 val* var243 /* : String */;
5046 char* var244 /* : NativeString */;
5047 long var245 /* : Int */;
5048 val* var246 /* : String */;
5049 val* var247 /* : Array[Object] */;
5050 long var248 /* : Int */;
5051 val* var249 /* : NativeArray[Object] */;
5052 val* var250 /* : String */;
5053 static val* varonce251;
5054 val* var252 /* : String */;
5055 char* var253 /* : NativeString */;
5056 long var254 /* : Int */;
5057 val* var255 /* : String */;
5058 static val* varonce256;
5059 val* var257 /* : String */;
5060 char* var258 /* : NativeString */;
5061 long var259 /* : Int */;
5062 val* var260 /* : String */;
5063 val* var261 /* : Array[Object] */;
5064 long var262 /* : Int */;
5065 val* var263 /* : NativeArray[Object] */;
5066 val* var264 /* : String */;
5067 static val* varonce265;
5068 val* var266 /* : String */;
5069 char* var267 /* : NativeString */;
5070 long var268 /* : Int */;
5071 val* var269 /* : String */;
5072 static val* varonce270;
5073 val* var271 /* : String */;
5074 char* var272 /* : NativeString */;
5075 long var273 /* : Int */;
5076 val* var274 /* : String */;
5077 val* var275 /* : Array[Object] */;
5078 long var276 /* : Int */;
5079 val* var277 /* : NativeArray[Object] */;
5080 val* var278 /* : String */;
5081 short int var279 /* : Bool */;
5082 short int var_280 /* var : Bool */;
5083 static val* varonce281;
5084 val* var282 /* : String */;
5085 char* var283 /* : NativeString */;
5086 long var284 /* : Int */;
5087 val* var285 /* : String */;
5088 short int var286 /* : Bool */;
5089 static val* varonce287;
5090 val* var288 /* : String */;
5091 char* var289 /* : NativeString */;
5092 long var290 /* : Int */;
5093 val* var291 /* : String */;
5094 val* var292 /* : String */;
5095 val* var_is_nullable /* var is_nullable: String */;
5096 static val* varonce293;
5097 val* var294 /* : String */;
5098 char* var295 /* : NativeString */;
5099 long var296 /* : Int */;
5100 val* var297 /* : String */;
5101 static val* varonce298;
5102 val* var299 /* : String */;
5103 char* var300 /* : NativeString */;
5104 long var301 /* : Int */;
5105 val* var302 /* : String */;
5106 val* var303 /* : Array[Object] */;
5107 long var304 /* : Int */;
5108 val* var305 /* : NativeArray[Object] */;
5109 val* var306 /* : String */;
5110 static val* varonce307;
5111 val* var308 /* : String */;
5112 char* var309 /* : NativeString */;
5113 long var310 /* : Int */;
5114 val* var311 /* : String */;
5115 static val* varonce312;
5116 val* var313 /* : String */;
5117 char* var314 /* : NativeString */;
5118 long var315 /* : Int */;
5119 val* var316 /* : String */;
5120 val* var317 /* : Array[Object] */;
5121 long var318 /* : Int */;
5122 val* var319 /* : NativeArray[Object] */;
5123 val* var320 /* : String */;
5124 val* var321 /* : String */;
5125 short int var322 /* : Bool */;
5126 int cltype323;
5127 int idtype324;
5128 val* var325 /* : Set[MType] */;
5129 static val* varonce326;
5130 val* var327 /* : String */;
5131 char* var328 /* : NativeString */;
5132 long var329 /* : Int */;
5133 val* var330 /* : String */;
5134 val* var331 /* : String */;
5135 val* var332 /* : Array[Object] */;
5136 long var333 /* : Int */;
5137 val* var334 /* : NativeArray[Object] */;
5138 val* var335 /* : String */;
5139 static val* varonce336;
5140 val* var337 /* : String */;
5141 char* var338 /* : NativeString */;
5142 long var339 /* : Int */;
5143 val* var340 /* : String */;
5144 val* var341 /* : String */;
5145 static val* varonce342;
5146 val* var343 /* : String */;
5147 char* var344 /* : NativeString */;
5148 long var345 /* : Int */;
5149 val* var346 /* : String */;
5150 val* var347 /* : Array[Object] */;
5151 long var348 /* : Int */;
5152 val* var349 /* : NativeArray[Object] */;
5153 val* var350 /* : String */;
5154 static val* varonce351;
5155 val* var352 /* : String */;
5156 char* var353 /* : NativeString */;
5157 long var354 /* : Int */;
5158 val* var355 /* : String */;
5159 val* var356 /* : String */;
5160 static val* varonce357;
5161 val* var358 /* : String */;
5162 char* var359 /* : NativeString */;
5163 long var360 /* : Int */;
5164 val* var361 /* : String */;
5165 val* var362 /* : Array[Object] */;
5166 long var363 /* : Int */;
5167 val* var364 /* : NativeArray[Object] */;
5168 val* var365 /* : String */;
5169 static val* varonce366;
5170 val* var367 /* : String */;
5171 char* var368 /* : NativeString */;
5172 long var369 /* : Int */;
5173 val* var370 /* : String */;
5174 val* var371 /* : String */;
5175 static val* varonce372;
5176 val* var373 /* : String */;
5177 char* var374 /* : NativeString */;
5178 long var375 /* : Int */;
5179 val* var376 /* : String */;
5180 val* var377 /* : Array[Object] */;
5181 long var378 /* : Int */;
5182 val* var379 /* : NativeArray[Object] */;
5183 val* var380 /* : String */;
5184 val* var381 /* : ModelBuilder */;
5185 val* var382 /* : ToolContext */;
5186 val* var383 /* : OptionBool */;
5187 val* var384 /* : nullable Object */;
5188 short int var385 /* : Bool */;
5189 val* var386 /* : AbstractCompiler */;
5190 val* var387 /* : HashMap[String, Int] */;
5191 val* var_388 /* var : HashMap[String, Int] */;
5192 val* var_389 /* var : String */;
5193 val* var390 /* : nullable Object */;
5194 long var391 /* : Int */;
5195 long var392 /* : Int */;
5196 long var394 /* : Int */;
5197 long var395 /* : Int */;
5198 val* var396 /* : nullable Object */;
5199 static val* varonce397;
5200 val* var398 /* : String */;
5201 char* var399 /* : NativeString */;
5202 long var400 /* : Int */;
5203 val* var401 /* : String */;
5204 static val* varonce402;
5205 val* var403 /* : String */;
5206 char* var404 /* : NativeString */;
5207 long var405 /* : Int */;
5208 val* var406 /* : String */;
5209 val* var407 /* : Array[Object] */;
5210 long var408 /* : Int */;
5211 val* var409 /* : NativeArray[Object] */;
5212 val* var410 /* : String */;
5213 static val* varonce411;
5214 val* var412 /* : String */;
5215 char* var413 /* : NativeString */;
5216 long var414 /* : Int */;
5217 val* var415 /* : String */;
5218 static val* varonce416;
5219 val* var417 /* : String */;
5220 char* var418 /* : NativeString */;
5221 long var419 /* : Int */;
5222 val* var420 /* : String */;
5223 val* var421 /* : String */;
5224 static val* varonce422;
5225 val* var423 /* : String */;
5226 char* var424 /* : NativeString */;
5227 long var425 /* : Int */;
5228 val* var426 /* : String */;
5229 val* var427 /* : Array[Object] */;
5230 long var428 /* : Int */;
5231 val* var429 /* : NativeArray[Object] */;
5232 val* var430 /* : String */;
5233 static val* varonce431;
5234 val* var432 /* : String */;
5235 char* var433 /* : NativeString */;
5236 long var434 /* : Int */;
5237 val* var435 /* : String */;
5238 static val* varonce436;
5239 val* var437 /* : String */;
5240 char* var438 /* : NativeString */;
5241 long var439 /* : Int */;
5242 val* var440 /* : String */;
5243 val* var441 /* : Array[Object] */;
5244 long var442 /* : Int */;
5245 val* var443 /* : NativeArray[Object] */;
5246 val* var444 /* : String */;
5247 static val* varonce445;
5248 val* var446 /* : String */;
5249 char* var447 /* : NativeString */;
5250 long var448 /* : Int */;
5251 val* var449 /* : String */;
5252 static val* varonce450;
5253 val* var451 /* : String */;
5254 char* var452 /* : NativeString */;
5255 long var453 /* : Int */;
5256 val* var454 /* : String */;
5257 val* var455 /* : Array[Object] */;
5258 long var456 /* : Int */;
5259 val* var457 /* : NativeArray[Object] */;
5260 val* var458 /* : String */;
5261 static val* varonce459;
5262 val* var460 /* : String */;
5263 char* var461 /* : NativeString */;
5264 long var462 /* : Int */;
5265 val* var463 /* : String */;
5266 val* var464 /* : String */;
5267 val* var_value_type_info /* var value_type_info: String */;
5268 short int var465 /* : Bool */;
5269 val* var466 /* : ModelBuilder */;
5270 val* var467 /* : ToolContext */;
5271 val* var468 /* : OptionBool */;
5272 val* var469 /* : nullable Object */;
5273 short int var470 /* : Bool */;
5274 short int var_471 /* var : Bool */;
5275 val* var472 /* : ModelBuilder */;
5276 val* var473 /* : ToolContext */;
5277 val* var474 /* : OptionBool */;
5278 val* var475 /* : nullable Object */;
5279 short int var476 /* : Bool */;
5280 static val* varonce477;
5281 val* var478 /* : String */;
5282 char* var479 /* : NativeString */;
5283 long var480 /* : Int */;
5284 val* var481 /* : String */;
5285 static val* varonce482;
5286 val* var483 /* : String */;
5287 char* var484 /* : NativeString */;
5288 long var485 /* : Int */;
5289 val* var486 /* : String */;
5290 static val* varonce487;
5291 val* var488 /* : String */;
5292 char* var489 /* : NativeString */;
5293 long var490 /* : Int */;
5294 val* var491 /* : String */;
5295 val* var492 /* : Array[Object] */;
5296 long var493 /* : Int */;
5297 val* var494 /* : NativeArray[Object] */;
5298 val* var495 /* : String */;
5299 static val* varonce496;
5300 val* var497 /* : String */;
5301 char* var498 /* : NativeString */;
5302 long var499 /* : Int */;
5303 val* var500 /* : String */;
5304 static val* varonce501;
5305 val* var502 /* : String */;
5306 char* var503 /* : NativeString */;
5307 long var504 /* : Int */;
5308 val* var505 /* : String */;
5309 static val* varonce506;
5310 val* var507 /* : String */;
5311 char* var508 /* : NativeString */;
5312 long var509 /* : Int */;
5313 val* var510 /* : String */;
5314 val* var511 /* : Array[Object] */;
5315 long var512 /* : Int */;
5316 val* var513 /* : NativeArray[Object] */;
5317 val* var514 /* : String */;
5318 static val* varonce515;
5319 val* var516 /* : String */;
5320 char* var517 /* : NativeString */;
5321 long var518 /* : Int */;
5322 val* var519 /* : String */;
5323 val* var520 /* : Array[Object] */;
5324 long var521 /* : Int */;
5325 val* var522 /* : NativeArray[Object] */;
5326 val* var523 /* : String */;
5327 static val* varonce524;
5328 val* var525 /* : String */;
5329 char* var526 /* : NativeString */;
5330 long var527 /* : Int */;
5331 val* var528 /* : String */;
5332 static val* varonce529;
5333 val* var530 /* : String */;
5334 char* var531 /* : NativeString */;
5335 long var532 /* : Int */;
5336 val* var533 /* : String */;
5337 static val* varonce534;
5338 val* var535 /* : String */;
5339 char* var536 /* : NativeString */;
5340 long var537 /* : Int */;
5341 val* var538 /* : String */;
5342 static val* varonce539;
5343 val* var540 /* : String */;
5344 char* var541 /* : NativeString */;
5345 long var542 /* : Int */;
5346 val* var543 /* : String */;
5347 static val* varonce544;
5348 val* var545 /* : String */;
5349 char* var546 /* : NativeString */;
5350 long var547 /* : Int */;
5351 val* var548 /* : String */;
5352 val* var549 /* : Array[Object] */;
5353 long var550 /* : Int */;
5354 val* var551 /* : NativeArray[Object] */;
5355 val* var552 /* : String */;
5356 static val* varonce553;
5357 val* var554 /* : String */;
5358 char* var555 /* : NativeString */;
5359 long var556 /* : Int */;
5360 val* var557 /* : String */;
5361 static val* varonce558;
5362 val* var559 /* : String */;
5363 char* var560 /* : NativeString */;
5364 long var561 /* : Int */;
5365 val* var562 /* : String */;
5366 var_value = p0;
5367 var_mtype = p1;
5368 var_tag = p2;
5369 if (varonce) {
5370 var1 = varonce;
5371 } else {
5372 var2 = "/* ";
5373 var3 = 3;
5374 var4 = string__NativeString__to_s_with_length(var2, var3);
5375 var1 = var4;
5376 varonce = var1;
5377 }
5378 var5 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
5379 if (varonce6) {
5380 var7 = varonce6;
5381 } else {
5382 var8 = " isa ";
5383 var9 = 5;
5384 var10 = string__NativeString__to_s_with_length(var8, var9);
5385 var7 = var10;
5386 varonce6 = var7;
5387 }
5388 if (varonce11) {
5389 var12 = varonce11;
5390 } else {
5391 var13 = " */";
5392 var14 = 3;
5393 var15 = string__NativeString__to_s_with_length(var13, var14);
5394 var12 = var15;
5395 varonce11 = var12;
5396 }
5397 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
5398 { /* var16 = array_instance Array[Object] */
5399 var17 = 5;
5400 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
5401 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var1;
5402 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var5;
5403 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var7;
5404 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var_mtype;
5405 ((struct instance_array__NativeArray*)var18)->values[4] = (val*) var12;
5406 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
5407 }
5408 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
5409 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var19) /* add on <self:SeparateCompilerVisitor>*/;
5410 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5411 var_compiler = var20;
5412 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5413 if (var21 == NULL) {
5414 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5415 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1342);
5416 show_backtrace(1);
5417 } else {
5418 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var21) /* arguments on <var21:nullable Frame>*/;
5419 }
5420 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__first]))(var22) /* first on <var22:Array[RuntimeVariable]>*/;
5421 var_recv = var23;
5422 var24 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
5423 var_recv_type_info = var24;
5424 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
5425 var26 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var25) /* new_var on <self:SeparateCompilerVisitor>*/;
5426 var_res = var26;
5427 if (varonce27) {
5428 var28 = varonce27;
5429 } else {
5430 var29 = "cltype";
5431 var30 = 6;
5432 var31 = string__NativeString__to_s_with_length(var29, var30);
5433 var28 = var31;
5434 varonce27 = var28;
5435 }
5436 var32 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var28) /* get_name on <self:SeparateCompilerVisitor>*/;
5437 var_cltype = var32;
5438 if (varonce33) {
5439 var34 = varonce33;
5440 } else {
5441 var35 = "int ";
5442 var36 = 4;
5443 var37 = string__NativeString__to_s_with_length(var35, var36);
5444 var34 = var37;
5445 varonce33 = var34;
5446 }
5447 if (varonce38) {
5448 var39 = varonce38;
5449 } else {
5450 var40 = ";";
5451 var41 = 1;
5452 var42 = string__NativeString__to_s_with_length(var40, var41);
5453 var39 = var42;
5454 varonce38 = var39;
5455 }
5456 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
5457 { /* var43 = array_instance Array[Object] */
5458 var44 = 3;
5459 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
5460 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var34;
5461 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var_cltype;
5462 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var39;
5463 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
5464 }
5465 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
5466 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var46) /* add_decl on <self:SeparateCompilerVisitor>*/;
5467 if (varonce47) {
5468 var48 = varonce47;
5469 } else {
5470 var49 = "idtype";
5471 var50 = 6;
5472 var51 = string__NativeString__to_s_with_length(var49, var50);
5473 var48 = var51;
5474 varonce47 = var48;
5475 }
5476 var52 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var48) /* get_name on <self:SeparateCompilerVisitor>*/;
5477 var_idtype = var52;
5478 if (varonce53) {
5479 var54 = varonce53;
5480 } else {
5481 var55 = "int ";
5482 var56 = 4;
5483 var57 = string__NativeString__to_s_with_length(var55, var56);
5484 var54 = var57;
5485 varonce53 = var54;
5486 }
5487 if (varonce58) {
5488 var59 = varonce58;
5489 } else {
5490 var60 = ";";
5491 var61 = 1;
5492 var62 = string__NativeString__to_s_with_length(var60, var61);
5493 var59 = var62;
5494 varonce58 = var59;
5495 }
5496 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
5497 { /* var63 = array_instance Array[Object] */
5498 var64 = 3;
5499 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
5500 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var54;
5501 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var_idtype;
5502 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var59;
5503 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
5504 }
5505 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
5506 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var66) /* add_decl on <self:SeparateCompilerVisitor>*/;
5507 var67 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__maybe_null]))(self, var_value) /* maybe_null on <self:SeparateCompilerVisitor>*/;
5508 var_maybe_null = var67;
5509 if (varonce68) {
5510 var69 = varonce68;
5511 } else {
5512 var70 = "0";
5513 var71 = 1;
5514 var72 = string__NativeString__to_s_with_length(var70, var71);
5515 var69 = var72;
5516 varonce68 = var69;
5517 }
5518 var_accept_null = var69;
5519 var_ntype = var_mtype;
5520 /* <var_ntype:MType> isa MNullableType */
5521 cltype = type_model__MNullableType.color;
5522 idtype = type_model__MNullableType.id;
5523 if(cltype >= var_ntype->type->table_size) {
5524 var73 = 0;
5525 } else {
5526 var73 = var_ntype->type->type_table[cltype] == idtype;
5527 }
5528 if (var73){
5529 var74 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_model__MNullableType__mtype]))(var_ntype) /* mtype on <var_ntype:MType(MNullableType)>*/;
5530 var_ntype = var74;
5531 if (varonce75) {
5532 var76 = varonce75;
5533 } else {
5534 var77 = "1";
5535 var78 = 1;
5536 var79 = string__NativeString__to_s_with_length(var77, var78);
5537 var76 = var79;
5538 varonce75 = var76;
5539 }
5540 var_accept_null = var76;
5541 } else {
5542 }
5543 var80 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
5544 var81 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5545 if (var81 == NULL) {
5546 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5547 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1360);
5548 show_backtrace(1);
5549 } else {
5550 var82 = ((val* (*)(val*))(var81->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var81) /* mpropdef on <var81:nullable Frame>*/;
5551 }
5552 var83 = ((val* (*)(val*))(var82->class->vft[COLOR_model__MPropDef__mclassdef]))(var82) /* mclassdef on <var82:MPropDef>*/;
5553 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_model__MClassDef__mmodule]))(var83) /* mmodule on <var83:MClassDef>*/;
5554 var85 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5555 if (var85 == NULL) {
5556 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5557 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1360);
5558 show_backtrace(1);
5559 } else {
5560 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var85) /* mpropdef on <var85:nullable Frame>*/;
5561 }
5562 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_model__MPropDef__mclassdef]))(var86) /* mclassdef on <var86:MPropDef>*/;
5563 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MClassDef__bound_mtype]))(var87) /* bound_mtype on <var87:MClassDef>*/;
5564 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>*/;
5565 if (var89){
5566 if (varonce90) {
5567 var91 = varonce90;
5568 } else {
5569 var92 = " = 1; /* easy ";
5570 var93 = 14;
5571 var94 = string__NativeString__to_s_with_length(var92, var93);
5572 var91 = var94;
5573 varonce90 = var91;
5574 }
5575 var95 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
5576 if (varonce96) {
5577 var97 = varonce96;
5578 } else {
5579 var98 = " isa ";
5580 var99 = 5;
5581 var100 = string__NativeString__to_s_with_length(var98, var99);
5582 var97 = var100;
5583 varonce96 = var97;
5584 }
5585 if (varonce101) {
5586 var102 = varonce101;
5587 } else {
5588 var103 = "*/";
5589 var104 = 2;
5590 var105 = string__NativeString__to_s_with_length(var103, var104);
5591 var102 = var105;
5592 varonce101 = var102;
5593 }
5594 var106 = NEW_array__Array(&type_array__Arraykernel__Object);
5595 { /* var106 = array_instance Array[Object] */
5596 var107 = 6;
5597 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
5598 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var_res;
5599 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var91;
5600 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var95;
5601 ((struct instance_array__NativeArray*)var108)->values[3] = (val*) var97;
5602 ((struct instance_array__NativeArray*)var108)->values[4] = (val*) var_mtype;
5603 ((struct instance_array__NativeArray*)var108)->values[5] = (val*) var102;
5604 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
5605 }
5606 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
5607 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var109) /* add on <self:SeparateCompilerVisitor>*/;
5608 var110 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5609 var111 = ((val* (*)(val*))(var110->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var110) /* toolcontext on <var110:ModelBuilder>*/;
5610 var112 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var111) /* opt_typing_test_metrics on <var111:ToolContext>*/;
5611 var113 = ((val* (*)(val*))(var112->class->vft[COLOR_opts__Option__value]))(var112) /* value on <var112:OptionBool>*/;
5612 var114 = ((struct instance_kernel__Bool*)var113)->value; /* autounbox from nullable Object to Bool */;
5613 if (var114){
5614 var115 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5615 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(var115) /* count_type_test_skipped on <var115:AbstractCompiler(SeparateCompiler)>*/;
5616 var_ = var116;
5617 var_117 = var_tag;
5618 var118 = ((val* (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_, var_117) /* [] on <var_:HashMap[String, Int]>*/;
5619 var119 = 1;
5620 { /* Inline kernel#Int#+ (var118,var119) */
5621 var122 = ((struct instance_kernel__Int*)var118)->value; /* autounbox from nullable Object to Int */;
5622 var123 = var122 + var119;
5623 var120 = var123;
5624 goto RET_LABEL121;
5625 RET_LABEL121:(void)0;
5626 }
5627 var124 = BOX_kernel__Int(var120); /* autobox from Int to nullable Object */
5628 ((void (*)(val*, val*, val*))(var_->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_, var_117, var124) /* []= on <var_:HashMap[String, Int]>*/;
5629 if (varonce125) {
5630 var126 = varonce125;
5631 } else {
5632 var127 = "count_type_test_skipped_";
5633 var128 = 24;
5634 var129 = string__NativeString__to_s_with_length(var127, var128);
5635 var126 = var129;
5636 varonce125 = var126;
5637 }
5638 if (varonce130) {
5639 var131 = varonce130;
5640 } else {
5641 var132 = "++;";
5642 var133 = 3;
5643 var134 = string__NativeString__to_s_with_length(var132, var133);
5644 var131 = var134;
5645 varonce130 = var131;
5646 }
5647 var135 = NEW_array__Array(&type_array__Arraykernel__Object);
5648 { /* var135 = array_instance Array[Object] */
5649 var136 = 3;
5650 var137 = NEW_array__NativeArray(var136, &type_array__NativeArraykernel__Object);
5651 ((struct instance_array__NativeArray*)var137)->values[0] = (val*) var126;
5652 ((struct instance_array__NativeArray*)var137)->values[1] = (val*) var_tag;
5653 ((struct instance_array__NativeArray*)var137)->values[2] = (val*) var131;
5654 ((void (*)(val*, val*, long))(var135->class->vft[COLOR_array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
5655 }
5656 var138 = ((val* (*)(val*))(var135->class->vft[COLOR_string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
5657 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var138) /* add on <self:SeparateCompilerVisitor>*/;
5658 } else {
5659 }
5660 var = var_res;
5661 goto RET_LABEL;
5662 } else {
5663 }
5664 var139 = ((short int (*)(val*))(var_ntype->class->vft[COLOR_model__MType__need_anchor]))(var_ntype) /* need_anchor on <var_ntype:MType>*/;
5665 if (var139){
5666 if (varonce140) {
5667 var141 = varonce140;
5668 } else {
5669 var142 = "type_struct";
5670 var143 = 11;
5671 var144 = string__NativeString__to_s_with_length(var142, var143);
5672 var141 = var144;
5673 varonce140 = var141;
5674 }
5675 var145 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var141) /* get_name on <self:SeparateCompilerVisitor>*/;
5676 var_type_struct = var145;
5677 if (varonce146) {
5678 var147 = varonce146;
5679 } else {
5680 var148 = "const struct type* ";
5681 var149 = 19;
5682 var150 = string__NativeString__to_s_with_length(var148, var149);
5683 var147 = var150;
5684 varonce146 = var147;
5685 }
5686 if (varonce151) {
5687 var152 = varonce151;
5688 } else {
5689 var153 = ";";
5690 var154 = 1;
5691 var155 = string__NativeString__to_s_with_length(var153, var154);
5692 var152 = var155;
5693 varonce151 = var152;
5694 }
5695 var156 = NEW_array__Array(&type_array__Arraykernel__Object);
5696 { /* var156 = array_instance Array[Object] */
5697 var157 = 3;
5698 var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object);
5699 ((struct instance_array__NativeArray*)var158)->values[0] = (val*) var147;
5700 ((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_type_struct;
5701 ((struct instance_array__NativeArray*)var158)->values[2] = (val*) var152;
5702 ((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on <var156:Array[Object]>*/;
5703 }
5704 var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on <var156:Array[Object]>*/;
5705 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var159) /* add_decl on <self:SeparateCompilerVisitor>*/;
5706 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__hardening_live_open_type]))(self, var_mtype) /* hardening_live_open_type on <self:SeparateCompilerVisitor>*/;
5707 var160 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5708 if (var160 == NULL) {
5709 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5710 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1375);
5711 show_backtrace(1);
5712 } else {
5713 var161 = ((val* (*)(val*))(var160->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var160) /* mpropdef on <var160:nullable Frame>*/;
5714 }
5715 var162 = ((val* (*)(val*))(var161->class->vft[COLOR_model__MPropDef__mclassdef]))(var161) /* mclassdef on <var161:MPropDef>*/;
5716 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var162, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
5717 var163 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MType>*/;
5718 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var163) /* require_declaration on <self:SeparateCompilerVisitor>*/;
5719 var165 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5720 var166 = ((val* (*)(val*))(var165->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var165) /* toolcontext on <var165:ModelBuilder>*/;
5721 var167 = ((val* (*)(val*))(var166->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var166) /* opt_phmod_typing on <var166:ToolContext>*/;
5722 var168 = ((val* (*)(val*))(var167->class->vft[COLOR_opts__Option__value]))(var167) /* value on <var167:OptionBool>*/;
5723 var169 = ((struct instance_kernel__Bool*)var168)->value; /* autounbox from nullable Object to Bool */;
5724 var_170 = var169;
5725 if (var169){
5726 var164 = var_170;
5727 } else {
5728 var171 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5729 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var171) /* toolcontext on <var171:ModelBuilder>*/;
5730 var173 = ((val* (*)(val*))(var172->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var172) /* opt_phand_typing on <var172:ToolContext>*/;
5731 var174 = ((val* (*)(val*))(var173->class->vft[COLOR_opts__Option__value]))(var173) /* value on <var173:OptionBool>*/;
5732 var175 = ((struct instance_kernel__Bool*)var174)->value; /* autounbox from nullable Object to Bool */;
5733 var164 = var175;
5734 }
5735 if (var164){
5736 if (varonce176) {
5737 var177 = varonce176;
5738 } else {
5739 var178 = " = ";
5740 var179 = 3;
5741 var180 = string__NativeString__to_s_with_length(var178, var179);
5742 var177 = var180;
5743 varonce176 = var177;
5744 }
5745 if (varonce181) {
5746 var182 = varonce181;
5747 } else {
5748 var183 = "->resolution_table->types[HASH(";
5749 var184 = 31;
5750 var185 = string__NativeString__to_s_with_length(var183, var184);
5751 var182 = var185;
5752 varonce181 = var182;
5753 }
5754 if (varonce186) {
5755 var187 = varonce186;
5756 } else {
5757 var188 = "->resolution_table->mask, ";
5758 var189 = 26;
5759 var190 = string__NativeString__to_s_with_length(var188, var189);
5760 var187 = var190;
5761 varonce186 = var187;
5762 }
5763 var191 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MType>*/;
5764 if (varonce192) {
5765 var193 = varonce192;
5766 } else {
5767 var194 = ")];";
5768 var195 = 3;
5769 var196 = string__NativeString__to_s_with_length(var194, var195);
5770 var193 = var196;
5771 varonce192 = var193;
5772 }
5773 var197 = NEW_array__Array(&type_array__Arraykernel__Object);
5774 { /* var197 = array_instance Array[Object] */
5775 var198 = 8;
5776 var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object);
5777 ((struct instance_array__NativeArray*)var199)->values[0] = (val*) var_type_struct;
5778 ((struct instance_array__NativeArray*)var199)->values[1] = (val*) var177;
5779 ((struct instance_array__NativeArray*)var199)->values[2] = (val*) var_recv_type_info;
5780 ((struct instance_array__NativeArray*)var199)->values[3] = (val*) var182;
5781 ((struct instance_array__NativeArray*)var199)->values[4] = (val*) var_recv_type_info;
5782 ((struct instance_array__NativeArray*)var199)->values[5] = (val*) var187;
5783 ((struct instance_array__NativeArray*)var199)->values[6] = (val*) var191;
5784 ((struct instance_array__NativeArray*)var199)->values[7] = (val*) var193;
5785 ((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
5786 }
5787 var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
5788 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var200) /* add on <self:SeparateCompilerVisitor>*/;
5789 } else {
5790 if (varonce201) {
5791 var202 = varonce201;
5792 } else {
5793 var203 = " = ";
5794 var204 = 3;
5795 var205 = string__NativeString__to_s_with_length(var203, var204);
5796 var202 = var205;
5797 varonce201 = var202;
5798 }
5799 if (varonce206) {
5800 var207 = varonce206;
5801 } else {
5802 var208 = "->resolution_table->types[";
5803 var209 = 26;
5804 var210 = string__NativeString__to_s_with_length(var208, var209);
5805 var207 = var210;
5806 varonce206 = var207;
5807 }
5808 var211 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MType>*/;
5809 if (varonce212) {
5810 var213 = varonce212;
5811 } else {
5812 var214 = "];";
5813 var215 = 2;
5814 var216 = string__NativeString__to_s_with_length(var214, var215);
5815 var213 = var216;
5816 varonce212 = var213;
5817 }
5818 var217 = NEW_array__Array(&type_array__Arraykernel__Object);
5819 { /* var217 = array_instance Array[Object] */
5820 var218 = 6;
5821 var219 = NEW_array__NativeArray(var218, &type_array__NativeArraykernel__Object);
5822 ((struct instance_array__NativeArray*)var219)->values[0] = (val*) var_type_struct;
5823 ((struct instance_array__NativeArray*)var219)->values[1] = (val*) var202;
5824 ((struct instance_array__NativeArray*)var219)->values[2] = (val*) var_recv_type_info;
5825 ((struct instance_array__NativeArray*)var219)->values[3] = (val*) var207;
5826 ((struct instance_array__NativeArray*)var219)->values[4] = (val*) var211;
5827 ((struct instance_array__NativeArray*)var219)->values[5] = (val*) var213;
5828 ((void (*)(val*, val*, long))(var217->class->vft[COLOR_array__Array__with_native]))(var217, var219, var218) /* with_native on <var217:Array[Object]>*/;
5829 }
5830 var220 = ((val* (*)(val*))(var217->class->vft[COLOR_string__Object__to_s]))(var217) /* to_s on <var217:Array[Object]>*/;
5831 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var220) /* add on <self:SeparateCompilerVisitor>*/;
5832 }
5833 var221 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5834 var222 = ((val* (*)(val*))(var221->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var221) /* toolcontext on <var221:ModelBuilder>*/;
5835 var223 = ((val* (*)(val*))(var222->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var222) /* opt_typing_test_metrics on <var222:ToolContext>*/;
5836 var224 = ((val* (*)(val*))(var223->class->vft[COLOR_opts__Option__value]))(var223) /* value on <var223:OptionBool>*/;
5837 var225 = ((struct instance_kernel__Bool*)var224)->value; /* autounbox from nullable Object to Bool */;
5838 if (var225){
5839 var226 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5840 var227 = ((val* (*)(val*))(var226->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(var226) /* count_type_test_unresolved on <var226:AbstractCompiler(SeparateCompiler)>*/;
5841 var_228 = var227;
5842 var_229 = var_tag;
5843 var230 = ((val* (*)(val*, val*))(var_228->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_228, var_229) /* [] on <var_228:HashMap[String, Int]>*/;
5844 var231 = 1;
5845 { /* Inline kernel#Int#+ (var230,var231) */
5846 var234 = ((struct instance_kernel__Int*)var230)->value; /* autounbox from nullable Object to Int */;
5847 var235 = var234 + var231;
5848 var232 = var235;
5849 goto RET_LABEL233;
5850 RET_LABEL233:(void)0;
5851 }
5852 var236 = BOX_kernel__Int(var232); /* autobox from Int to nullable Object */
5853 ((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]>*/;
5854 if (varonce237) {
5855 var238 = varonce237;
5856 } else {
5857 var239 = "count_type_test_unresolved_";
5858 var240 = 27;
5859 var241 = string__NativeString__to_s_with_length(var239, var240);
5860 var238 = var241;
5861 varonce237 = var238;
5862 }
5863 if (varonce242) {
5864 var243 = varonce242;
5865 } else {
5866 var244 = "++;";
5867 var245 = 3;
5868 var246 = string__NativeString__to_s_with_length(var244, var245);
5869 var243 = var246;
5870 varonce242 = var243;
5871 }
5872 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
5873 { /* var247 = array_instance Array[Object] */
5874 var248 = 3;
5875 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
5876 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var238;
5877 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var_tag;
5878 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
5879 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
5880 }
5881 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
5882 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var250) /* add on <self:SeparateCompilerVisitor>*/;
5883 } else {
5884 }
5885 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__hardening_cast_type]))(self, var_type_struct) /* hardening_cast_type on <self:SeparateCompilerVisitor>*/;
5886 if (varonce251) {
5887 var252 = varonce251;
5888 } else {
5889 var253 = " = ";
5890 var254 = 3;
5891 var255 = string__NativeString__to_s_with_length(var253, var254);
5892 var252 = var255;
5893 varonce251 = var252;
5894 }
5895 if (varonce256) {
5896 var257 = varonce256;
5897 } else {
5898 var258 = "->color;";
5899 var259 = 8;
5900 var260 = string__NativeString__to_s_with_length(var258, var259);
5901 var257 = var260;
5902 varonce256 = var257;
5903 }
5904 var261 = NEW_array__Array(&type_array__Arraykernel__Object);
5905 { /* var261 = array_instance Array[Object] */
5906 var262 = 4;
5907 var263 = NEW_array__NativeArray(var262, &type_array__NativeArraykernel__Object);
5908 ((struct instance_array__NativeArray*)var263)->values[0] = (val*) var_cltype;
5909 ((struct instance_array__NativeArray*)var263)->values[1] = (val*) var252;
5910 ((struct instance_array__NativeArray*)var263)->values[2] = (val*) var_type_struct;
5911 ((struct instance_array__NativeArray*)var263)->values[3] = (val*) var257;
5912 ((void (*)(val*, val*, long))(var261->class->vft[COLOR_array__Array__with_native]))(var261, var263, var262) /* with_native on <var261:Array[Object]>*/;
5913 }
5914 var264 = ((val* (*)(val*))(var261->class->vft[COLOR_string__Object__to_s]))(var261) /* to_s on <var261:Array[Object]>*/;
5915 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var264) /* add on <self:SeparateCompilerVisitor>*/;
5916 if (varonce265) {
5917 var266 = varonce265;
5918 } else {
5919 var267 = " = ";
5920 var268 = 3;
5921 var269 = string__NativeString__to_s_with_length(var267, var268);
5922 var266 = var269;
5923 varonce265 = var266;
5924 }
5925 if (varonce270) {
5926 var271 = varonce270;
5927 } else {
5928 var272 = "->id;";
5929 var273 = 5;
5930 var274 = string__NativeString__to_s_with_length(var272, var273);
5931 var271 = var274;
5932 varonce270 = var271;
5933 }
5934 var275 = NEW_array__Array(&type_array__Arraykernel__Object);
5935 { /* var275 = array_instance Array[Object] */
5936 var276 = 4;
5937 var277 = NEW_array__NativeArray(var276, &type_array__NativeArraykernel__Object);
5938 ((struct instance_array__NativeArray*)var277)->values[0] = (val*) var_idtype;
5939 ((struct instance_array__NativeArray*)var277)->values[1] = (val*) var266;
5940 ((struct instance_array__NativeArray*)var277)->values[2] = (val*) var_type_struct;
5941 ((struct instance_array__NativeArray*)var277)->values[3] = (val*) var271;
5942 ((void (*)(val*, val*, long))(var275->class->vft[COLOR_array__Array__with_native]))(var275, var277, var276) /* with_native on <var275:Array[Object]>*/;
5943 }
5944 var278 = ((val* (*)(val*))(var275->class->vft[COLOR_string__Object__to_s]))(var275) /* to_s on <var275:Array[Object]>*/;
5945 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var278) /* add on <self:SeparateCompilerVisitor>*/;
5946 var_280 = var_maybe_null;
5947 if (var_maybe_null){
5948 if (varonce281) {
5949 var282 = varonce281;
5950 } else {
5951 var283 = "0";
5952 var284 = 1;
5953 var285 = string__NativeString__to_s_with_length(var283, var284);
5954 var282 = var285;
5955 varonce281 = var282;
5956 }
5957 var286 = ((short int (*)(val*, val*))(var_accept_null->class->vft[COLOR_kernel__Object___61d_61d]))(var_accept_null, var282) /* == on <var_accept_null:String>*/;
5958 var279 = var286;
5959 } else {
5960 var279 = var_280;
5961 }
5962 if (var279){
5963 if (varonce287) {
5964 var288 = varonce287;
5965 } else {
5966 var289 = "is_nullable";
5967 var290 = 11;
5968 var291 = string__NativeString__to_s_with_length(var289, var290);
5969 var288 = var291;
5970 varonce287 = var288;
5971 }
5972 var292 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var288) /* get_name on <self:SeparateCompilerVisitor>*/;
5973 var_is_nullable = var292;
5974 if (varonce293) {
5975 var294 = varonce293;
5976 } else {
5977 var295 = "short int ";
5978 var296 = 10;
5979 var297 = string__NativeString__to_s_with_length(var295, var296);
5980 var294 = var297;
5981 varonce293 = var294;
5982 }
5983 if (varonce298) {
5984 var299 = varonce298;
5985 } else {
5986 var300 = ";";
5987 var301 = 1;
5988 var302 = string__NativeString__to_s_with_length(var300, var301);
5989 var299 = var302;
5990 varonce298 = var299;
5991 }
5992 var303 = NEW_array__Array(&type_array__Arraykernel__Object);
5993 { /* var303 = array_instance Array[Object] */
5994 var304 = 3;
5995 var305 = NEW_array__NativeArray(var304, &type_array__NativeArraykernel__Object);
5996 ((struct instance_array__NativeArray*)var305)->values[0] = (val*) var294;
5997 ((struct instance_array__NativeArray*)var305)->values[1] = (val*) var_is_nullable;
5998 ((struct instance_array__NativeArray*)var305)->values[2] = (val*) var299;
5999 ((void (*)(val*, val*, long))(var303->class->vft[COLOR_array__Array__with_native]))(var303, var305, var304) /* with_native on <var303:Array[Object]>*/;
6000 }
6001 var306 = ((val* (*)(val*))(var303->class->vft[COLOR_string__Object__to_s]))(var303) /* to_s on <var303:Array[Object]>*/;
6002 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var306) /* add_decl on <self:SeparateCompilerVisitor>*/;
6003 if (varonce307) {
6004 var308 = varonce307;
6005 } else {
6006 var309 = " = ";
6007 var310 = 3;
6008 var311 = string__NativeString__to_s_with_length(var309, var310);
6009 var308 = var311;
6010 varonce307 = var308;
6011 }
6012 if (varonce312) {
6013 var313 = varonce312;
6014 } else {
6015 var314 = "->is_nullable;";
6016 var315 = 14;
6017 var316 = string__NativeString__to_s_with_length(var314, var315);
6018 var313 = var316;
6019 varonce312 = var313;
6020 }
6021 var317 = NEW_array__Array(&type_array__Arraykernel__Object);
6022 { /* var317 = array_instance Array[Object] */
6023 var318 = 4;
6024 var319 = NEW_array__NativeArray(var318, &type_array__NativeArraykernel__Object);
6025 ((struct instance_array__NativeArray*)var319)->values[0] = (val*) var_is_nullable;
6026 ((struct instance_array__NativeArray*)var319)->values[1] = (val*) var308;
6027 ((struct instance_array__NativeArray*)var319)->values[2] = (val*) var_type_struct;
6028 ((struct instance_array__NativeArray*)var319)->values[3] = (val*) var313;
6029 ((void (*)(val*, val*, long))(var317->class->vft[COLOR_array__Array__with_native]))(var317, var319, var318) /* with_native on <var317:Array[Object]>*/;
6030 }
6031 var320 = ((val* (*)(val*))(var317->class->vft[COLOR_string__Object__to_s]))(var317) /* to_s on <var317:Array[Object]>*/;
6032 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var320) /* add on <self:SeparateCompilerVisitor>*/;
6033 var321 = ((val* (*)(val*))(var_is_nullable->class->vft[COLOR_string__Object__to_s]))(var_is_nullable) /* to_s on <var_is_nullable:String>*/;
6034 var_accept_null = var321;
6035 } else {
6036 }
6037 } else {
6038 /* <var_ntype:MType> isa MClassType */
6039 cltype323 = type_model__MClassType.color;
6040 idtype324 = type_model__MClassType.id;
6041 if(cltype323 >= var_ntype->type->table_size) {
6042 var322 = 0;
6043 } else {
6044 var322 = var_ntype->type->type_table[cltype323] == idtype324;
6045 }
6046 if (var322){
6047 var325 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
6048 ((void (*)(val*, val*))(var325->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var325, var_mtype) /* add on <var325:Set[MType]>*/;
6049 if (varonce326) {
6050 var327 = varonce326;
6051 } else {
6052 var328 = "type_";
6053 var329 = 5;
6054 var330 = string__NativeString__to_s_with_length(var328, var329);
6055 var327 = var330;
6056 varonce326 = var327;
6057 }
6058 var331 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6059 var332 = NEW_array__Array(&type_array__Arraykernel__Object);
6060 { /* var332 = array_instance Array[Object] */
6061 var333 = 2;
6062 var334 = NEW_array__NativeArray(var333, &type_array__NativeArraykernel__Object);
6063 ((struct instance_array__NativeArray*)var334)->values[0] = (val*) var327;
6064 ((struct instance_array__NativeArray*)var334)->values[1] = (val*) var331;
6065 ((void (*)(val*, val*, long))(var332->class->vft[COLOR_array__Array__with_native]))(var332, var334, var333) /* with_native on <var332:Array[Object]>*/;
6066 }
6067 var335 = ((val* (*)(val*))(var332->class->vft[COLOR_string__Object__to_s]))(var332) /* to_s on <var332:Array[Object]>*/;
6068 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var335) /* require_declaration on <self:SeparateCompilerVisitor>*/;
6069 if (varonce336) {
6070 var337 = varonce336;
6071 } else {
6072 var338 = "(&type_";
6073 var339 = 7;
6074 var340 = string__NativeString__to_s_with_length(var338, var339);
6075 var337 = var340;
6076 varonce336 = var337;
6077 }
6078 var341 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6079 if (varonce342) {
6080 var343 = varonce342;
6081 } else {
6082 var344 = ")";
6083 var345 = 1;
6084 var346 = string__NativeString__to_s_with_length(var344, var345);
6085 var343 = var346;
6086 varonce342 = var343;
6087 }
6088 var347 = NEW_array__Array(&type_array__Arraykernel__Object);
6089 { /* var347 = array_instance Array[Object] */
6090 var348 = 3;
6091 var349 = NEW_array__NativeArray(var348, &type_array__NativeArraykernel__Object);
6092 ((struct instance_array__NativeArray*)var349)->values[0] = (val*) var337;
6093 ((struct instance_array__NativeArray*)var349)->values[1] = (val*) var341;
6094 ((struct instance_array__NativeArray*)var349)->values[2] = (val*) var343;
6095 ((void (*)(val*, val*, long))(var347->class->vft[COLOR_array__Array__with_native]))(var347, var349, var348) /* with_native on <var347:Array[Object]>*/;
6096 }
6097 var350 = ((val* (*)(val*))(var347->class->vft[COLOR_string__Object__to_s]))(var347) /* to_s on <var347:Array[Object]>*/;
6098 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__hardening_cast_type]))(self, var350) /* hardening_cast_type on <self:SeparateCompilerVisitor>*/;
6099 if (varonce351) {
6100 var352 = varonce351;
6101 } else {
6102 var353 = " = type_";
6103 var354 = 8;
6104 var355 = string__NativeString__to_s_with_length(var353, var354);
6105 var352 = var355;
6106 varonce351 = var352;
6107 }
6108 var356 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6109 if (varonce357) {
6110 var358 = varonce357;
6111 } else {
6112 var359 = ".color;";
6113 var360 = 7;
6114 var361 = string__NativeString__to_s_with_length(var359, var360);
6115 var358 = var361;
6116 varonce357 = var358;
6117 }
6118 var362 = NEW_array__Array(&type_array__Arraykernel__Object);
6119 { /* var362 = array_instance Array[Object] */
6120 var363 = 4;
6121 var364 = NEW_array__NativeArray(var363, &type_array__NativeArraykernel__Object);
6122 ((struct instance_array__NativeArray*)var364)->values[0] = (val*) var_cltype;
6123 ((struct instance_array__NativeArray*)var364)->values[1] = (val*) var352;
6124 ((struct instance_array__NativeArray*)var364)->values[2] = (val*) var356;
6125 ((struct instance_array__NativeArray*)var364)->values[3] = (val*) var358;
6126 ((void (*)(val*, val*, long))(var362->class->vft[COLOR_array__Array__with_native]))(var362, var364, var363) /* with_native on <var362:Array[Object]>*/;
6127 }
6128 var365 = ((val* (*)(val*))(var362->class->vft[COLOR_string__Object__to_s]))(var362) /* to_s on <var362:Array[Object]>*/;
6129 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var365) /* add on <self:SeparateCompilerVisitor>*/;
6130 if (varonce366) {
6131 var367 = varonce366;
6132 } else {
6133 var368 = " = type_";
6134 var369 = 8;
6135 var370 = string__NativeString__to_s_with_length(var368, var369);
6136 var367 = var370;
6137 varonce366 = var367;
6138 }
6139 var371 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6140 if (varonce372) {
6141 var373 = varonce372;
6142 } else {
6143 var374 = ".id;";
6144 var375 = 4;
6145 var376 = string__NativeString__to_s_with_length(var374, var375);
6146 var373 = var376;
6147 varonce372 = var373;
6148 }
6149 var377 = NEW_array__Array(&type_array__Arraykernel__Object);
6150 { /* var377 = array_instance Array[Object] */
6151 var378 = 4;
6152 var379 = NEW_array__NativeArray(var378, &type_array__NativeArraykernel__Object);
6153 ((struct instance_array__NativeArray*)var379)->values[0] = (val*) var_idtype;
6154 ((struct instance_array__NativeArray*)var379)->values[1] = (val*) var367;
6155 ((struct instance_array__NativeArray*)var379)->values[2] = (val*) var371;
6156 ((struct instance_array__NativeArray*)var379)->values[3] = (val*) var373;
6157 ((void (*)(val*, val*, long))(var377->class->vft[COLOR_array__Array__with_native]))(var377, var379, var378) /* with_native on <var377:Array[Object]>*/;
6158 }
6159 var380 = ((val* (*)(val*))(var377->class->vft[COLOR_string__Object__to_s]))(var377) /* to_s on <var377:Array[Object]>*/;
6160 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var380) /* add on <self:SeparateCompilerVisitor>*/;
6161 var381 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
6162 var382 = ((val* (*)(val*))(var381->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var381) /* toolcontext on <var381:ModelBuilder>*/;
6163 var383 = ((val* (*)(val*))(var382->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var382) /* opt_typing_test_metrics on <var382:ToolContext>*/;
6164 var384 = ((val* (*)(val*))(var383->class->vft[COLOR_opts__Option__value]))(var383) /* value on <var383:OptionBool>*/;
6165 var385 = ((struct instance_kernel__Bool*)var384)->value; /* autounbox from nullable Object to Bool */;
6166 if (var385){
6167 var386 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
6168 var387 = ((val* (*)(val*))(var386->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(var386) /* count_type_test_resolved on <var386:AbstractCompiler(SeparateCompiler)>*/;
6169 var_388 = var387;
6170 var_389 = var_tag;
6171 var390 = ((val* (*)(val*, val*))(var_388->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_388, var_389) /* [] on <var_388:HashMap[String, Int]>*/;
6172 var391 = 1;
6173 { /* Inline kernel#Int#+ (var390,var391) */
6174 var394 = ((struct instance_kernel__Int*)var390)->value; /* autounbox from nullable Object to Int */;
6175 var395 = var394 + var391;
6176 var392 = var395;
6177 goto RET_LABEL393;
6178 RET_LABEL393:(void)0;
6179 }
6180 var396 = BOX_kernel__Int(var392); /* autobox from Int to nullable Object */
6181 ((void (*)(val*, val*, val*))(var_388->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_388, var_389, var396) /* []= on <var_388:HashMap[String, Int]>*/;
6182 if (varonce397) {
6183 var398 = varonce397;
6184 } else {
6185 var399 = "count_type_test_resolved_";
6186 var400 = 25;
6187 var401 = string__NativeString__to_s_with_length(var399, var400);
6188 var398 = var401;
6189 varonce397 = var398;
6190 }
6191 if (varonce402) {
6192 var403 = varonce402;
6193 } else {
6194 var404 = "++;";
6195 var405 = 3;
6196 var406 = string__NativeString__to_s_with_length(var404, var405);
6197 var403 = var406;
6198 varonce402 = var403;
6199 }
6200 var407 = NEW_array__Array(&type_array__Arraykernel__Object);
6201 { /* var407 = array_instance Array[Object] */
6202 var408 = 3;
6203 var409 = NEW_array__NativeArray(var408, &type_array__NativeArraykernel__Object);
6204 ((struct instance_array__NativeArray*)var409)->values[0] = (val*) var398;
6205 ((struct instance_array__NativeArray*)var409)->values[1] = (val*) var_tag;
6206 ((struct instance_array__NativeArray*)var409)->values[2] = (val*) var403;
6207 ((void (*)(val*, val*, long))(var407->class->vft[COLOR_array__Array__with_native]))(var407, var409, var408) /* with_native on <var407:Array[Object]>*/;
6208 }
6209 var410 = ((val* (*)(val*))(var407->class->vft[COLOR_string__Object__to_s]))(var407) /* to_s on <var407:Array[Object]>*/;
6210 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var410) /* add on <self:SeparateCompilerVisitor>*/;
6211 } else {
6212 }
6213 } else {
6214 if (varonce411) {
6215 var412 = varonce411;
6216 } else {
6217 var413 = "printf(\"NOT YET IMPLEMENTED: type_test(%s, ";
6218 var414 = 43;
6219 var415 = string__NativeString__to_s_with_length(var413, var414);
6220 var412 = var415;
6221 varonce411 = var412;
6222 }
6223 if (varonce416) {
6224 var417 = varonce416;
6225 } else {
6226 var418 = ").\\n\", \"";
6227 var419 = 8;
6228 var420 = string__NativeString__to_s_with_length(var418, var419);
6229 var417 = var420;
6230 varonce416 = var417;
6231 }
6232 var421 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
6233 if (varonce422) {
6234 var423 = varonce422;
6235 } else {
6236 var424 = "\"); show_backtrace(1);";
6237 var425 = 22;
6238 var426 = string__NativeString__to_s_with_length(var424, var425);
6239 var423 = var426;
6240 varonce422 = var423;
6241 }
6242 var427 = NEW_array__Array(&type_array__Arraykernel__Object);
6243 { /* var427 = array_instance Array[Object] */
6244 var428 = 5;
6245 var429 = NEW_array__NativeArray(var428, &type_array__NativeArraykernel__Object);
6246 ((struct instance_array__NativeArray*)var429)->values[0] = (val*) var412;
6247 ((struct instance_array__NativeArray*)var429)->values[1] = (val*) var_mtype;
6248 ((struct instance_array__NativeArray*)var429)->values[2] = (val*) var417;
6249 ((struct instance_array__NativeArray*)var429)->values[3] = (val*) var421;
6250 ((struct instance_array__NativeArray*)var429)->values[4] = (val*) var423;
6251 ((void (*)(val*, val*, long))(var427->class->vft[COLOR_array__Array__with_native]))(var427, var429, var428) /* with_native on <var427:Array[Object]>*/;
6252 }
6253 var430 = ((val* (*)(val*))(var427->class->vft[COLOR_string__Object__to_s]))(var427) /* to_s on <var427:Array[Object]>*/;
6254 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var430) /* add on <self:SeparateCompilerVisitor>*/;
6255 }
6256 }
6257 if (var_maybe_null){
6258 if (varonce431) {
6259 var432 = varonce431;
6260 } else {
6261 var433 = "if(";
6262 var434 = 3;
6263 var435 = string__NativeString__to_s_with_length(var433, var434);
6264 var432 = var435;
6265 varonce431 = var432;
6266 }
6267 if (varonce436) {
6268 var437 = varonce436;
6269 } else {
6270 var438 = " == NULL) {";
6271 var439 = 11;
6272 var440 = string__NativeString__to_s_with_length(var438, var439);
6273 var437 = var440;
6274 varonce436 = var437;
6275 }
6276 var441 = NEW_array__Array(&type_array__Arraykernel__Object);
6277 { /* var441 = array_instance Array[Object] */
6278 var442 = 3;
6279 var443 = NEW_array__NativeArray(var442, &type_array__NativeArraykernel__Object);
6280 ((struct instance_array__NativeArray*)var443)->values[0] = (val*) var432;
6281 ((struct instance_array__NativeArray*)var443)->values[1] = (val*) var_value;
6282 ((struct instance_array__NativeArray*)var443)->values[2] = (val*) var437;
6283 ((void (*)(val*, val*, long))(var441->class->vft[COLOR_array__Array__with_native]))(var441, var443, var442) /* with_native on <var441:Array[Object]>*/;
6284 }
6285 var444 = ((val* (*)(val*))(var441->class->vft[COLOR_string__Object__to_s]))(var441) /* to_s on <var441:Array[Object]>*/;
6286 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var444) /* add on <self:SeparateCompilerVisitor>*/;
6287 if (varonce445) {
6288 var446 = varonce445;
6289 } else {
6290 var447 = " = ";
6291 var448 = 3;
6292 var449 = string__NativeString__to_s_with_length(var447, var448);
6293 var446 = var449;
6294 varonce445 = var446;
6295 }
6296 if (varonce450) {
6297 var451 = varonce450;
6298 } else {
6299 var452 = ";";
6300 var453 = 1;
6301 var454 = string__NativeString__to_s_with_length(var452, var453);
6302 var451 = var454;
6303 varonce450 = var451;
6304 }
6305 var455 = NEW_array__Array(&type_array__Arraykernel__Object);
6306 { /* var455 = array_instance Array[Object] */
6307 var456 = 4;
6308 var457 = NEW_array__NativeArray(var456, &type_array__NativeArraykernel__Object);
6309 ((struct instance_array__NativeArray*)var457)->values[0] = (val*) var_res;
6310 ((struct instance_array__NativeArray*)var457)->values[1] = (val*) var446;
6311 ((struct instance_array__NativeArray*)var457)->values[2] = (val*) var_accept_null;
6312 ((struct instance_array__NativeArray*)var457)->values[3] = (val*) var451;
6313 ((void (*)(val*, val*, long))(var455->class->vft[COLOR_array__Array__with_native]))(var455, var457, var456) /* with_native on <var455:Array[Object]>*/;
6314 }
6315 var458 = ((val* (*)(val*))(var455->class->vft[COLOR_string__Object__to_s]))(var455) /* to_s on <var455:Array[Object]>*/;
6316 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var458) /* add on <self:SeparateCompilerVisitor>*/;
6317 if (varonce459) {
6318 var460 = varonce459;
6319 } else {
6320 var461 = "} else {";
6321 var462 = 8;
6322 var463 = string__NativeString__to_s_with_length(var461, var462);
6323 var460 = var463;
6324 varonce459 = var460;
6325 }
6326 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var460) /* add on <self:SeparateCompilerVisitor>*/;
6327 } else {
6328 }
6329 var464 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_value) /* type_info on <self:SeparateCompilerVisitor>*/;
6330 var_value_type_info = var464;
6331 var466 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
6332 var467 = ((val* (*)(val*))(var466->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var466) /* toolcontext on <var466:ModelBuilder>*/;
6333 var468 = ((val* (*)(val*))(var467->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var467) /* opt_phmod_typing on <var467:ToolContext>*/;
6334 var469 = ((val* (*)(val*))(var468->class->vft[COLOR_opts__Option__value]))(var468) /* value on <var468:OptionBool>*/;
6335 var470 = ((struct instance_kernel__Bool*)var469)->value; /* autounbox from nullable Object to Bool */;
6336 var_471 = var470;
6337 if (var470){
6338 var465 = var_471;
6339 } else {
6340 var472 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
6341 var473 = ((val* (*)(val*))(var472->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var472) /* toolcontext on <var472:ModelBuilder>*/;
6342 var474 = ((val* (*)(val*))(var473->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var473) /* opt_phand_typing on <var473:ToolContext>*/;
6343 var475 = ((val* (*)(val*))(var474->class->vft[COLOR_opts__Option__value]))(var474) /* value on <var474:OptionBool>*/;
6344 var476 = ((struct instance_kernel__Bool*)var475)->value; /* autounbox from nullable Object to Bool */;
6345 var465 = var476;
6346 }
6347 if (var465){
6348 if (varonce477) {
6349 var478 = varonce477;
6350 } else {
6351 var479 = " = HASH(";
6352 var480 = 8;
6353 var481 = string__NativeString__to_s_with_length(var479, var480);
6354 var478 = var481;
6355 varonce477 = var478;
6356 }
6357 if (varonce482) {
6358 var483 = varonce482;
6359 } else {
6360 var484 = "->color, ";
6361 var485 = 9;
6362 var486 = string__NativeString__to_s_with_length(var484, var485);
6363 var483 = var486;
6364 varonce482 = var483;
6365 }
6366 if (varonce487) {
6367 var488 = varonce487;
6368 } else {
6369 var489 = ");";
6370 var490 = 2;
6371 var491 = string__NativeString__to_s_with_length(var489, var490);
6372 var488 = var491;
6373 varonce487 = var488;
6374 }
6375 var492 = NEW_array__Array(&type_array__Arraykernel__Object);
6376 { /* var492 = array_instance Array[Object] */
6377 var493 = 6;
6378 var494 = NEW_array__NativeArray(var493, &type_array__NativeArraykernel__Object);
6379 ((struct instance_array__NativeArray*)var494)->values[0] = (val*) var_cltype;
6380 ((struct instance_array__NativeArray*)var494)->values[1] = (val*) var478;
6381 ((struct instance_array__NativeArray*)var494)->values[2] = (val*) var_value_type_info;
6382 ((struct instance_array__NativeArray*)var494)->values[3] = (val*) var483;
6383 ((struct instance_array__NativeArray*)var494)->values[4] = (val*) var_idtype;
6384 ((struct instance_array__NativeArray*)var494)->values[5] = (val*) var488;
6385 ((void (*)(val*, val*, long))(var492->class->vft[COLOR_array__Array__with_native]))(var492, var494, var493) /* with_native on <var492:Array[Object]>*/;
6386 }
6387 var495 = ((val* (*)(val*))(var492->class->vft[COLOR_string__Object__to_s]))(var492) /* to_s on <var492:Array[Object]>*/;
6388 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var495) /* add on <self:SeparateCompilerVisitor>*/;
6389 } else {
6390 }
6391 if (varonce496) {
6392 var497 = varonce496;
6393 } else {
6394 var498 = "if(";
6395 var499 = 3;
6396 var500 = string__NativeString__to_s_with_length(var498, var499);
6397 var497 = var500;
6398 varonce496 = var497;
6399 }
6400 if (varonce501) {
6401 var502 = varonce501;
6402 } else {
6403 var503 = " >= ";
6404 var504 = 4;
6405 var505 = string__NativeString__to_s_with_length(var503, var504);
6406 var502 = var505;
6407 varonce501 = var502;
6408 }
6409 if (varonce506) {
6410 var507 = varonce506;
6411 } else {
6412 var508 = "->table_size) {";
6413 var509 = 15;
6414 var510 = string__NativeString__to_s_with_length(var508, var509);
6415 var507 = var510;
6416 varonce506 = var507;
6417 }
6418 var511 = NEW_array__Array(&type_array__Arraykernel__Object);
6419 { /* var511 = array_instance Array[Object] */
6420 var512 = 5;
6421 var513 = NEW_array__NativeArray(var512, &type_array__NativeArraykernel__Object);
6422 ((struct instance_array__NativeArray*)var513)->values[0] = (val*) var497;
6423 ((struct instance_array__NativeArray*)var513)->values[1] = (val*) var_cltype;
6424 ((struct instance_array__NativeArray*)var513)->values[2] = (val*) var502;
6425 ((struct instance_array__NativeArray*)var513)->values[3] = (val*) var_value_type_info;
6426 ((struct instance_array__NativeArray*)var513)->values[4] = (val*) var507;
6427 ((void (*)(val*, val*, long))(var511->class->vft[COLOR_array__Array__with_native]))(var511, var513, var512) /* with_native on <var511:Array[Object]>*/;
6428 }
6429 var514 = ((val* (*)(val*))(var511->class->vft[COLOR_string__Object__to_s]))(var511) /* to_s on <var511:Array[Object]>*/;
6430 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var514) /* add on <self:SeparateCompilerVisitor>*/;
6431 if (varonce515) {
6432 var516 = varonce515;
6433 } else {
6434 var517 = " = 0;";
6435 var518 = 5;
6436 var519 = string__NativeString__to_s_with_length(var517, var518);
6437 var516 = var519;
6438 varonce515 = var516;
6439 }
6440 var520 = NEW_array__Array(&type_array__Arraykernel__Object);
6441 { /* var520 = array_instance Array[Object] */
6442 var521 = 2;
6443 var522 = NEW_array__NativeArray(var521, &type_array__NativeArraykernel__Object);
6444 ((struct instance_array__NativeArray*)var522)->values[0] = (val*) var_res;
6445 ((struct instance_array__NativeArray*)var522)->values[1] = (val*) var516;
6446 ((void (*)(val*, val*, long))(var520->class->vft[COLOR_array__Array__with_native]))(var520, var522, var521) /* with_native on <var520:Array[Object]>*/;
6447 }
6448 var523 = ((val* (*)(val*))(var520->class->vft[COLOR_string__Object__to_s]))(var520) /* to_s on <var520:Array[Object]>*/;
6449 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var523) /* add on <self:SeparateCompilerVisitor>*/;
6450 if (varonce524) {
6451 var525 = varonce524;
6452 } else {
6453 var526 = "} else {";
6454 var527 = 8;
6455 var528 = string__NativeString__to_s_with_length(var526, var527);
6456 var525 = var528;
6457 varonce524 = var525;
6458 }
6459 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var525) /* add on <self:SeparateCompilerVisitor>*/;
6460 if (varonce529) {
6461 var530 = varonce529;
6462 } else {
6463 var531 = " = ";
6464 var532 = 3;
6465 var533 = string__NativeString__to_s_with_length(var531, var532);
6466 var530 = var533;
6467 varonce529 = var530;
6468 }
6469 if (varonce534) {
6470 var535 = varonce534;
6471 } else {
6472 var536 = "->type_table[";
6473 var537 = 13;
6474 var538 = string__NativeString__to_s_with_length(var536, var537);
6475 var535 = var538;
6476 varonce534 = var535;
6477 }
6478 if (varonce539) {
6479 var540 = varonce539;
6480 } else {
6481 var541 = "] == ";
6482 var542 = 5;
6483 var543 = string__NativeString__to_s_with_length(var541, var542);
6484 var540 = var543;
6485 varonce539 = var540;
6486 }
6487 if (varonce544) {
6488 var545 = varonce544;
6489 } else {
6490 var546 = ";";
6491 var547 = 1;
6492 var548 = string__NativeString__to_s_with_length(var546, var547);
6493 var545 = var548;
6494 varonce544 = var545;
6495 }
6496 var549 = NEW_array__Array(&type_array__Arraykernel__Object);
6497 { /* var549 = array_instance Array[Object] */
6498 var550 = 8;
6499 var551 = NEW_array__NativeArray(var550, &type_array__NativeArraykernel__Object);
6500 ((struct instance_array__NativeArray*)var551)->values[0] = (val*) var_res;
6501 ((struct instance_array__NativeArray*)var551)->values[1] = (val*) var530;
6502 ((struct instance_array__NativeArray*)var551)->values[2] = (val*) var_value_type_info;
6503 ((struct instance_array__NativeArray*)var551)->values[3] = (val*) var535;
6504 ((struct instance_array__NativeArray*)var551)->values[4] = (val*) var_cltype;
6505 ((struct instance_array__NativeArray*)var551)->values[5] = (val*) var540;
6506 ((struct instance_array__NativeArray*)var551)->values[6] = (val*) var_idtype;
6507 ((struct instance_array__NativeArray*)var551)->values[7] = (val*) var545;
6508 ((void (*)(val*, val*, long))(var549->class->vft[COLOR_array__Array__with_native]))(var549, var551, var550) /* with_native on <var549:Array[Object]>*/;
6509 }
6510 var552 = ((val* (*)(val*))(var549->class->vft[COLOR_string__Object__to_s]))(var549) /* to_s on <var549:Array[Object]>*/;
6511 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var552) /* add on <self:SeparateCompilerVisitor>*/;
6512 if (varonce553) {
6513 var554 = varonce553;
6514 } else {
6515 var555 = "}";
6516 var556 = 1;
6517 var557 = string__NativeString__to_s_with_length(var555, var556);
6518 var554 = var557;
6519 varonce553 = var554;
6520 }
6521 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var554) /* add on <self:SeparateCompilerVisitor>*/;
6522 if (var_maybe_null){
6523 if (varonce558) {
6524 var559 = varonce558;
6525 } else {
6526 var560 = "}";
6527 var561 = 1;
6528 var562 = string__NativeString__to_s_with_length(var560, var561);
6529 var559 = var562;
6530 varonce558 = var559;
6531 }
6532 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var559) /* add on <self:SeparateCompilerVisitor>*/;
6533 } else {
6534 }
6535 var = var_res;
6536 goto RET_LABEL;
6537 RET_LABEL:;
6538 return var;
6539 }
6540 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
6541 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
6542 val* var /* : RuntimeVariable */;
6543 val* var1 /* : RuntimeVariable */;
6544 var1 = separate_compiler__SeparateCompilerVisitor__type_test(self, p0, p1, p2);
6545 var = var1;
6546 RET_LABEL:;
6547 return var;
6548 }
6549 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
6550 val* separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
6551 val* var /* : RuntimeVariable */;
6552 val* var_value1 /* var value1: RuntimeVariable */;
6553 val* var_value2 /* var value2: RuntimeVariable */;
6554 val* var1 /* : MClassType */;
6555 val* var2 /* : RuntimeVariable */;
6556 val* var_res /* var res: RuntimeVariable */;
6557 short int var3 /* : Bool */;
6558 val* var4 /* : MType */;
6559 val* var5 /* : String */;
6560 static val* varonce;
6561 val* var6 /* : String */;
6562 char* var7 /* : NativeString */;
6563 long var8 /* : Int */;
6564 val* var9 /* : String */;
6565 short int var10 /* : Bool */;
6566 short int var_ /* var : Bool */;
6567 val* var11 /* : MType */;
6568 val* var12 /* : String */;
6569 static val* varonce13;
6570 val* var14 /* : String */;
6571 char* var15 /* : NativeString */;
6572 long var16 /* : Int */;
6573 val* var17 /* : String */;
6574 short int var18 /* : Bool */;
6575 val* var_tmp /* var tmp: RuntimeVariable */;
6576 val* var19 /* : MType */;
6577 val* var20 /* : String */;
6578 static val* varonce21;
6579 val* var22 /* : String */;
6580 char* var23 /* : NativeString */;
6581 long var24 /* : Int */;
6582 val* var25 /* : String */;
6583 short int var26 /* : Bool */;
6584 val* var27 /* : MType */;
6585 val* var28 /* : MType */;
6586 short int var29 /* : Bool */;
6587 static val* varonce30;
6588 val* var31 /* : String */;
6589 char* var32 /* : NativeString */;
6590 long var33 /* : Int */;
6591 val* var34 /* : String */;
6592 val* var35 /* : MType */;
6593 static val* varonce36;
6594 val* var37 /* : String */;
6595 char* var38 /* : NativeString */;
6596 long var39 /* : Int */;
6597 val* var40 /* : String */;
6598 val* var41 /* : MType */;
6599 static val* varonce42;
6600 val* var43 /* : String */;
6601 char* var44 /* : NativeString */;
6602 long var45 /* : Int */;
6603 val* var46 /* : String */;
6604 val* var47 /* : Array[Object] */;
6605 long var48 /* : Int */;
6606 val* var49 /* : NativeArray[Object] */;
6607 val* var50 /* : String */;
6608 val* var51 /* : MType */;
6609 val* var52 /* : String */;
6610 static val* varonce53;
6611 val* var54 /* : String */;
6612 char* var55 /* : NativeString */;
6613 long var56 /* : Int */;
6614 val* var57 /* : String */;
6615 short int var58 /* : Bool */;
6616 static val* varonce59;
6617 val* var60 /* : String */;
6618 char* var61 /* : NativeString */;
6619 long var62 /* : Int */;
6620 val* var63 /* : String */;
6621 val* var64 /* : MType */;
6622 static val* varonce65;
6623 val* var66 /* : String */;
6624 char* var67 /* : NativeString */;
6625 long var68 /* : Int */;
6626 val* var69 /* : String */;
6627 val* var70 /* : MType */;
6628 static val* varonce71;
6629 val* var72 /* : String */;
6630 char* var73 /* : NativeString */;
6631 long var74 /* : Int */;
6632 val* var75 /* : String */;
6633 val* var76 /* : Array[Object] */;
6634 long var77 /* : Int */;
6635 val* var78 /* : NativeArray[Object] */;
6636 val* var79 /* : String */;
6637 val* var80 /* : MType */;
6638 short int var81 /* : Bool */;
6639 int cltype;
6640 int idtype;
6641 const char* var_class_name;
6642 val* var_mtype1 /* var mtype1: MClassType */;
6643 static val* varonce82;
6644 val* var83 /* : String */;
6645 char* var84 /* : NativeString */;
6646 long var85 /* : Int */;
6647 val* var86 /* : String */;
6648 val* var87 /* : String */;
6649 val* var88 /* : Array[Object] */;
6650 long var89 /* : Int */;
6651 val* var90 /* : NativeArray[Object] */;
6652 val* var91 /* : String */;
6653 static val* varonce92;
6654 val* var93 /* : String */;
6655 char* var94 /* : NativeString */;
6656 long var95 /* : Int */;
6657 val* var96 /* : String */;
6658 static val* varonce97;
6659 val* var98 /* : String */;
6660 char* var99 /* : NativeString */;
6661 long var100 /* : Int */;
6662 val* var101 /* : String */;
6663 static val* varonce102;
6664 val* var103 /* : String */;
6665 char* var104 /* : NativeString */;
6666 long var105 /* : Int */;
6667 val* var106 /* : String */;
6668 val* var107 /* : String */;
6669 static val* varonce108;
6670 val* var109 /* : String */;
6671 char* var110 /* : NativeString */;
6672 long var111 /* : Int */;
6673 val* var112 /* : String */;
6674 val* var113 /* : Array[Object] */;
6675 long var114 /* : Int */;
6676 val* var115 /* : NativeArray[Object] */;
6677 val* var116 /* : String */;
6678 static val* varonce117;
6679 val* var118 /* : String */;
6680 char* var119 /* : NativeString */;
6681 long var120 /* : Int */;
6682 val* var121 /* : String */;
6683 static val* varonce122;
6684 val* var123 /* : String */;
6685 char* var124 /* : NativeString */;
6686 long var125 /* : Int */;
6687 val* var126 /* : String */;
6688 static val* varonce127;
6689 val* var128 /* : String */;
6690 char* var129 /* : NativeString */;
6691 long var130 /* : Int */;
6692 val* var131 /* : String */;
6693 static val* varonce132;
6694 val* var133 /* : String */;
6695 char* var134 /* : NativeString */;
6696 long var135 /* : Int */;
6697 val* var136 /* : String */;
6698 static val* varonce137;
6699 val* var138 /* : String */;
6700 char* var139 /* : NativeString */;
6701 long var140 /* : Int */;
6702 val* var141 /* : String */;
6703 static val* varonce142;
6704 val* var143 /* : String */;
6705 char* var144 /* : NativeString */;
6706 long var145 /* : Int */;
6707 val* var146 /* : String */;
6708 static val* varonce147;
6709 val* var148 /* : String */;
6710 char* var149 /* : NativeString */;
6711 long var150 /* : Int */;
6712 val* var151 /* : String */;
6713 val* var152 /* : Array[Object] */;
6714 long var153 /* : Int */;
6715 val* var154 /* : NativeArray[Object] */;
6716 val* var155 /* : String */;
6717 var_value1 = p0;
6718 var_value2 = p1;
6719 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
6720 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
6721 var_res = var2;
6722 var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6723 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
6724 if (varonce) {
6725 var6 = varonce;
6726 } else {
6727 var7 = "val*";
6728 var8 = 4;
6729 var9 = string__NativeString__to_s_with_length(var7, var8);
6730 var6 = var9;
6731 varonce = var6;
6732 }
6733 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
6734 var_ = var10;
6735 if (var10){
6736 var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6737 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
6738 if (varonce13) {
6739 var14 = varonce13;
6740 } else {
6741 var15 = "val*";
6742 var16 = 4;
6743 var17 = string__NativeString__to_s_with_length(var15, var16);
6744 var14 = var17;
6745 varonce13 = var14;
6746 }
6747 var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
6748 var3 = var18;
6749 } else {
6750 var3 = var_;
6751 }
6752 if (var3){
6753 var_tmp = var_value1;
6754 var_value1 = var_value2;
6755 var_value2 = var_tmp;
6756 } else {
6757 }
6758 var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6759 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
6760 if (varonce21) {
6761 var22 = varonce21;
6762 } else {
6763 var23 = "val*";
6764 var24 = 4;
6765 var25 = string__NativeString__to_s_with_length(var23, var24);
6766 var22 = var25;
6767 varonce21 = var22;
6768 }
6769 var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
6770 if (var26){
6771 var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6772 var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6773 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
6774 if (var29){
6775 if (varonce30) {
6776 var31 = varonce30;
6777 } else {
6778 var32 = " = 1; /* is_same_type_test: compatible types ";
6779 var33 = 45;
6780 var34 = string__NativeString__to_s_with_length(var32, var33);
6781 var31 = var34;
6782 varonce30 = var31;
6783 }
6784 var35 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6785 if (varonce36) {
6786 var37 = varonce36;
6787 } else {
6788 var38 = " vs. ";
6789 var39 = 5;
6790 var40 = string__NativeString__to_s_with_length(var38, var39);
6791 var37 = var40;
6792 varonce36 = var37;
6793 }
6794 var41 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6795 if (varonce42) {
6796 var43 = varonce42;
6797 } else {
6798 var44 = " */";
6799 var45 = 3;
6800 var46 = string__NativeString__to_s_with_length(var44, var45);
6801 var43 = var46;
6802 varonce42 = var43;
6803 }
6804 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
6805 { /* var47 = array_instance Array[Object] */
6806 var48 = 6;
6807 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
6808 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var_res;
6809 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var31;
6810 ((struct instance_array__NativeArray*)var49)->values[2] = (val*) var35;
6811 ((struct instance_array__NativeArray*)var49)->values[3] = (val*) var37;
6812 ((struct instance_array__NativeArray*)var49)->values[4] = (val*) var41;
6813 ((struct instance_array__NativeArray*)var49)->values[5] = (val*) var43;
6814 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
6815 }
6816 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
6817 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var50) /* add on <self:SeparateCompilerVisitor>*/;
6818 } else {
6819 var51 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6820 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_compiler__MType__ctype]))(var51) /* ctype on <var51:MType>*/;
6821 if (varonce53) {
6822 var54 = varonce53;
6823 } else {
6824 var55 = "val*";
6825 var56 = 4;
6826 var57 = string__NativeString__to_s_with_length(var55, var56);
6827 var54 = var57;
6828 varonce53 = var54;
6829 }
6830 var58 = ((short int (*)(val*, val*))(var52->class->vft[COLOR_kernel__Object___33d_61d]))(var52, var54) /* != on <var52:String>*/;
6831 if (var58){
6832 if (varonce59) {
6833 var60 = varonce59;
6834 } else {
6835 var61 = " = 0; /* is_same_type_test: incompatible types ";
6836 var62 = 47;
6837 var63 = string__NativeString__to_s_with_length(var61, var62);
6838 var60 = var63;
6839 varonce59 = var60;
6840 }
6841 var64 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6842 if (varonce65) {
6843 var66 = varonce65;
6844 } else {
6845 var67 = " vs. ";
6846 var68 = 5;
6847 var69 = string__NativeString__to_s_with_length(var67, var68);
6848 var66 = var69;
6849 varonce65 = var66;
6850 }
6851 var70 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6852 if (varonce71) {
6853 var72 = varonce71;
6854 } else {
6855 var73 = "*/";
6856 var74 = 2;
6857 var75 = string__NativeString__to_s_with_length(var73, var74);
6858 var72 = var75;
6859 varonce71 = var72;
6860 }
6861 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
6862 { /* var76 = array_instance Array[Object] */
6863 var77 = 6;
6864 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
6865 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_res;
6866 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var60;
6867 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var64;
6868 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var66;
6869 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
6870 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
6871 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
6872 }
6873 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
6874 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
6875 } else {
6876 var80 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6877 /* <var80:MType> isa MClassType */
6878 cltype = type_model__MClassType.color;
6879 idtype = type_model__MClassType.id;
6880 if(cltype >= var80->type->table_size) {
6881 var81 = 0;
6882 } else {
6883 var81 = var80->type->type_table[cltype] == idtype;
6884 }
6885 if (!var81) {
6886 var_class_name = var80 == NULL ? "null" : var80->type->name;
6887 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
6888 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1446);
6889 show_backtrace(1);
6890 }
6891 var_mtype1 = var80;
6892 if (varonce82) {
6893 var83 = varonce82;
6894 } else {
6895 var84 = "class_";
6896 var85 = 6;
6897 var86 = string__NativeString__to_s_with_length(var84, var85);
6898 var83 = var86;
6899 varonce82 = var83;
6900 }
6901 var87 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
6902 var88 = NEW_array__Array(&type_array__Arraykernel__Object);
6903 { /* var88 = array_instance Array[Object] */
6904 var89 = 2;
6905 var90 = NEW_array__NativeArray(var89, &type_array__NativeArraykernel__Object);
6906 ((struct instance_array__NativeArray*)var90)->values[0] = (val*) var83;
6907 ((struct instance_array__NativeArray*)var90)->values[1] = (val*) var87;
6908 ((void (*)(val*, val*, long))(var88->class->vft[COLOR_array__Array__with_native]))(var88, var90, var89) /* with_native on <var88:Array[Object]>*/;
6909 }
6910 var91 = ((val* (*)(val*))(var88->class->vft[COLOR_string__Object__to_s]))(var88) /* to_s on <var88:Array[Object]>*/;
6911 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var91) /* require_declaration on <self:SeparateCompilerVisitor>*/;
6912 if (varonce92) {
6913 var93 = varonce92;
6914 } else {
6915 var94 = " = (";
6916 var95 = 4;
6917 var96 = string__NativeString__to_s_with_length(var94, var95);
6918 var93 = var96;
6919 varonce92 = var93;
6920 }
6921 if (varonce97) {
6922 var98 = varonce97;
6923 } else {
6924 var99 = " != NULL) && (";
6925 var100 = 14;
6926 var101 = string__NativeString__to_s_with_length(var99, var100);
6927 var98 = var101;
6928 varonce97 = var98;
6929 }
6930 if (varonce102) {
6931 var103 = varonce102;
6932 } else {
6933 var104 = "->class == &class_";
6934 var105 = 18;
6935 var106 = string__NativeString__to_s_with_length(var104, var105);
6936 var103 = var106;
6937 varonce102 = var103;
6938 }
6939 var107 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
6940 if (varonce108) {
6941 var109 = varonce108;
6942 } else {
6943 var110 = "); /* is_same_type_test */";
6944 var111 = 26;
6945 var112 = string__NativeString__to_s_with_length(var110, var111);
6946 var109 = var112;
6947 varonce108 = var109;
6948 }
6949 var113 = NEW_array__Array(&type_array__Arraykernel__Object);
6950 { /* var113 = array_instance Array[Object] */
6951 var114 = 8;
6952 var115 = NEW_array__NativeArray(var114, &type_array__NativeArraykernel__Object);
6953 ((struct instance_array__NativeArray*)var115)->values[0] = (val*) var_res;
6954 ((struct instance_array__NativeArray*)var115)->values[1] = (val*) var93;
6955 ((struct instance_array__NativeArray*)var115)->values[2] = (val*) var_value2;
6956 ((struct instance_array__NativeArray*)var115)->values[3] = (val*) var98;
6957 ((struct instance_array__NativeArray*)var115)->values[4] = (val*) var_value2;
6958 ((struct instance_array__NativeArray*)var115)->values[5] = (val*) var103;
6959 ((struct instance_array__NativeArray*)var115)->values[6] = (val*) var107;
6960 ((struct instance_array__NativeArray*)var115)->values[7] = (val*) var109;
6961 ((void (*)(val*, val*, long))(var113->class->vft[COLOR_array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
6962 }
6963 var116 = ((val* (*)(val*))(var113->class->vft[COLOR_string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
6964 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var116) /* add on <self:SeparateCompilerVisitor>*/;
6965 }
6966 }
6967 } else {
6968 if (varonce117) {
6969 var118 = varonce117;
6970 } else {
6971 var119 = " = (";
6972 var120 = 4;
6973 var121 = string__NativeString__to_s_with_length(var119, var120);
6974 var118 = var121;
6975 varonce117 = var118;
6976 }
6977 if (varonce122) {
6978 var123 = varonce122;
6979 } else {
6980 var124 = " == ";
6981 var125 = 4;
6982 var126 = string__NativeString__to_s_with_length(var124, var125);
6983 var123 = var126;
6984 varonce122 = var123;
6985 }
6986 if (varonce127) {
6987 var128 = varonce127;
6988 } else {
6989 var129 = ") || (";
6990 var130 = 6;
6991 var131 = string__NativeString__to_s_with_length(var129, var130);
6992 var128 = var131;
6993 varonce127 = var128;
6994 }
6995 if (varonce132) {
6996 var133 = varonce132;
6997 } else {
6998 var134 = " != NULL && ";
6999 var135 = 12;
7000 var136 = string__NativeString__to_s_with_length(var134, var135);
7001 var133 = var136;
7002 varonce132 = var133;
7003 }
7004 if (varonce137) {
7005 var138 = varonce137;
7006 } else {
7007 var139 = " != NULL && ";
7008 var140 = 12;
7009 var141 = string__NativeString__to_s_with_length(var139, var140);
7010 var138 = var141;
7011 varonce137 = var138;
7012 }
7013 if (varonce142) {
7014 var143 = varonce142;
7015 } else {
7016 var144 = "->class == ";
7017 var145 = 11;
7018 var146 = string__NativeString__to_s_with_length(var144, var145);
7019 var143 = var146;
7020 varonce142 = var143;
7021 }
7022 if (varonce147) {
7023 var148 = varonce147;
7024 } else {
7025 var149 = "->class); /* is_same_type_test */";
7026 var150 = 33;
7027 var151 = string__NativeString__to_s_with_length(var149, var150);
7028 var148 = var151;
7029 varonce147 = var148;
7030 }
7031 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
7032 { /* var152 = array_instance Array[Object] */
7033 var153 = 14;
7034 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
7035 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var_res;
7036 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var118;
7037 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var_value1;
7038 ((struct instance_array__NativeArray*)var154)->values[3] = (val*) var123;
7039 ((struct instance_array__NativeArray*)var154)->values[4] = (val*) var_value2;
7040 ((struct instance_array__NativeArray*)var154)->values[5] = (val*) var128;
7041 ((struct instance_array__NativeArray*)var154)->values[6] = (val*) var_value1;
7042 ((struct instance_array__NativeArray*)var154)->values[7] = (val*) var133;
7043 ((struct instance_array__NativeArray*)var154)->values[8] = (val*) var_value2;
7044 ((struct instance_array__NativeArray*)var154)->values[9] = (val*) var138;
7045 ((struct instance_array__NativeArray*)var154)->values[10] = (val*) var_value1;
7046 ((struct instance_array__NativeArray*)var154)->values[11] = (val*) var143;
7047 ((struct instance_array__NativeArray*)var154)->values[12] = (val*) var_value2;
7048 ((struct instance_array__NativeArray*)var154)->values[13] = (val*) var148;
7049 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
7050 }
7051 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
7052 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var155) /* add on <self:SeparateCompilerVisitor>*/;
7053 }
7054 var = var_res;
7055 goto RET_LABEL;
7056 RET_LABEL:;
7057 return var;
7058 }
7059 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7060 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
7061 val* var /* : RuntimeVariable */;
7062 val* var1 /* : RuntimeVariable */;
7063 var1 = separate_compiler__SeparateCompilerVisitor__is_same_type_test(self, p0, p1);
7064 var = var1;
7065 RET_LABEL:;
7066 return var;
7067 }
7068 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: SeparateCompilerVisitor, RuntimeVariable): String */
7069 val* separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
7070 val* var /* : String */;
7071 val* var_value /* var value: RuntimeVariable */;
7072 static val* varonce;
7073 val* var1 /* : String */;
7074 char* var2 /* : NativeString */;
7075 long var3 /* : Int */;
7076 val* var4 /* : String */;
7077 val* var5 /* : String */;
7078 val* var_res /* var res: String */;
7079 static val* varonce6;
7080 val* var7 /* : String */;
7081 char* var8 /* : NativeString */;
7082 long var9 /* : Int */;
7083 val* var10 /* : String */;
7084 static val* varonce11;
7085 val* var12 /* : String */;
7086 char* var13 /* : NativeString */;
7087 long var14 /* : Int */;
7088 val* var15 /* : String */;
7089 val* var16 /* : Array[Object] */;
7090 long var17 /* : Int */;
7091 val* var18 /* : NativeArray[Object] */;
7092 val* var19 /* : String */;
7093 val* var20 /* : MType */;
7094 val* var21 /* : String */;
7095 static val* varonce22;
7096 val* var23 /* : String */;
7097 char* var24 /* : NativeString */;
7098 long var25 /* : Int */;
7099 val* var26 /* : String */;
7100 short int var27 /* : Bool */;
7101 static val* varonce28;
7102 val* var29 /* : String */;
7103 char* var30 /* : NativeString */;
7104 long var31 /* : Int */;
7105 val* var32 /* : String */;
7106 static val* varonce33;
7107 val* var34 /* : String */;
7108 char* var35 /* : NativeString */;
7109 long var36 /* : Int */;
7110 val* var37 /* : String */;
7111 static val* varonce38;
7112 val* var39 /* : String */;
7113 char* var40 /* : NativeString */;
7114 long var41 /* : Int */;
7115 val* var42 /* : String */;
7116 val* var43 /* : Array[Object] */;
7117 long var44 /* : Int */;
7118 val* var45 /* : NativeArray[Object] */;
7119 val* var46 /* : String */;
7120 short int var47 /* : Bool */;
7121 val* var48 /* : MType */;
7122 short int var49 /* : Bool */;
7123 int cltype;
7124 int idtype;
7125 short int var_ /* var : Bool */;
7126 val* var50 /* : MType */;
7127 short int var51 /* : Bool */;
7128 int cltype52;
7129 int idtype53;
7130 const char* var_class_name;
7131 val* var54 /* : MClass */;
7132 val* var55 /* : MClassKind */;
7133 val* var56 /* : MClassKind */;
7134 short int var57 /* : Bool */;
7135 static val* varonce58;
7136 val* var59 /* : String */;
7137 char* var60 /* : NativeString */;
7138 long var61 /* : Int */;
7139 val* var62 /* : String */;
7140 val* var63 /* : MType */;
7141 short int var64 /* : Bool */;
7142 int cltype65;
7143 int idtype66;
7144 const char* var_class_name67;
7145 val* var68 /* : MClass */;
7146 static val* varonce69;
7147 val* var70 /* : String */;
7148 char* var71 /* : NativeString */;
7149 long var72 /* : Int */;
7150 val* var73 /* : String */;
7151 val* var74 /* : Array[Object] */;
7152 long var75 /* : Int */;
7153 val* var76 /* : NativeArray[Object] */;
7154 val* var77 /* : String */;
7155 static val* varonce78;
7156 val* var79 /* : String */;
7157 char* var80 /* : NativeString */;
7158 long var81 /* : Int */;
7159 val* var82 /* : String */;
7160 val* var83 /* : MType */;
7161 val* var84 /* : String */;
7162 val* var85 /* : Array[Object] */;
7163 long var86 /* : Int */;
7164 val* var87 /* : NativeArray[Object] */;
7165 val* var88 /* : String */;
7166 static val* varonce89;
7167 val* var90 /* : String */;
7168 char* var91 /* : NativeString */;
7169 long var92 /* : Int */;
7170 val* var93 /* : String */;
7171 val* var94 /* : MType */;
7172 val* var95 /* : String */;
7173 static val* varonce96;
7174 val* var97 /* : String */;
7175 char* var98 /* : NativeString */;
7176 long var99 /* : Int */;
7177 val* var100 /* : String */;
7178 val* var101 /* : Array[Object] */;
7179 long var102 /* : Int */;
7180 val* var103 /* : NativeArray[Object] */;
7181 val* var104 /* : String */;
7182 var_value = p0;
7183 if (varonce) {
7184 var1 = varonce;
7185 } else {
7186 var2 = "var_class_name";
7187 var3 = 14;
7188 var4 = string__NativeString__to_s_with_length(var2, var3);
7189 var1 = var4;
7190 varonce = var1;
7191 }
7192 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var1) /* get_name on <self:SeparateCompilerVisitor>*/;
7193 var_res = var5;
7194 if (varonce6) {
7195 var7 = varonce6;
7196 } else {
7197 var8 = "const char* ";
7198 var9 = 12;
7199 var10 = string__NativeString__to_s_with_length(var8, var9);
7200 var7 = var10;
7201 varonce6 = var7;
7202 }
7203 if (varonce11) {
7204 var12 = varonce11;
7205 } else {
7206 var13 = ";";
7207 var14 = 1;
7208 var15 = string__NativeString__to_s_with_length(var13, var14);
7209 var12 = var15;
7210 varonce11 = var12;
7211 }
7212 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
7213 { /* var16 = array_instance Array[Object] */
7214 var17 = 3;
7215 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
7216 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
7217 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_res;
7218 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
7219 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
7220 }
7221 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
7222 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var19) /* add_decl on <self:SeparateCompilerVisitor>*/;
7223 var20 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7224 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_compiler__MType__ctype]))(var20) /* ctype on <var20:MType>*/;
7225 if (varonce22) {
7226 var23 = varonce22;
7227 } else {
7228 var24 = "val*";
7229 var25 = 4;
7230 var26 = string__NativeString__to_s_with_length(var24, var25);
7231 var23 = var26;
7232 varonce22 = var23;
7233 }
7234 var27 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var23) /* == on <var21:String>*/;
7235 if (var27){
7236 if (varonce28) {
7237 var29 = varonce28;
7238 } else {
7239 var30 = " = ";
7240 var31 = 3;
7241 var32 = string__NativeString__to_s_with_length(var30, var31);
7242 var29 = var32;
7243 varonce28 = var29;
7244 }
7245 if (varonce33) {
7246 var34 = varonce33;
7247 } else {
7248 var35 = " == NULL ? \"null\" : ";
7249 var36 = 20;
7250 var37 = string__NativeString__to_s_with_length(var35, var36);
7251 var34 = var37;
7252 varonce33 = var34;
7253 }
7254 if (varonce38) {
7255 var39 = varonce38;
7256 } else {
7257 var40 = "->type->name;";
7258 var41 = 13;
7259 var42 = string__NativeString__to_s_with_length(var40, var41);
7260 var39 = var42;
7261 varonce38 = var39;
7262 }
7263 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
7264 { /* var43 = array_instance Array[Object] */
7265 var44 = 6;
7266 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
7267 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var_res;
7268 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var29;
7269 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var_value;
7270 ((struct instance_array__NativeArray*)var45)->values[3] = (val*) var34;
7271 ((struct instance_array__NativeArray*)var45)->values[4] = (val*) var_value;
7272 ((struct instance_array__NativeArray*)var45)->values[5] = (val*) var39;
7273 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
7274 }
7275 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
7276 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var46) /* add on <self:SeparateCompilerVisitor>*/;
7277 } else {
7278 var48 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7279 /* <var48:MType> isa MClassType */
7280 cltype = type_model__MClassType.color;
7281 idtype = type_model__MClassType.id;
7282 if(cltype >= var48->type->table_size) {
7283 var49 = 0;
7284 } else {
7285 var49 = var48->type->type_table[cltype] == idtype;
7286 }
7287 var_ = var49;
7288 if (var49){
7289 var50 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7290 /* <var50:MType> isa MClassType */
7291 cltype52 = type_model__MClassType.color;
7292 idtype53 = type_model__MClassType.id;
7293 if(cltype52 >= var50->type->table_size) {
7294 var51 = 0;
7295 } else {
7296 var51 = var50->type->type_table[cltype52] == idtype53;
7297 }
7298 if (!var51) {
7299 var_class_name = var50 == NULL ? "null" : var50->type->name;
7300 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
7301 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1462);
7302 show_backtrace(1);
7303 }
7304 var54 = ((val* (*)(val*))(var50->class->vft[COLOR_model__MClassType__mclass]))(var50) /* mclass on <var50:MType(MClassType)>*/;
7305 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_model__MClass__kind]))(var54) /* kind on <var54:MClass>*/;
7306 var56 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:SeparateCompilerVisitor>*/;
7307 var57 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_kernel__Object___61d_61d]))(var55, var56) /* == on <var55:MClassKind>*/;
7308 var47 = var57;
7309 } else {
7310 var47 = var_;
7311 }
7312 if (var47){
7313 if (varonce58) {
7314 var59 = varonce58;
7315 } else {
7316 var60 = " = \"";
7317 var61 = 4;
7318 var62 = string__NativeString__to_s_with_length(var60, var61);
7319 var59 = var62;
7320 varonce58 = var59;
7321 }
7322 var63 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7323 /* <var63:MType> isa MClassType */
7324 cltype65 = type_model__MClassType.color;
7325 idtype66 = type_model__MClassType.id;
7326 if(cltype65 >= var63->type->table_size) {
7327 var64 = 0;
7328 } else {
7329 var64 = var63->type->type_table[cltype65] == idtype66;
7330 }
7331 if (!var64) {
7332 var_class_name67 = var63 == NULL ? "null" : var63->type->name;
7333 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name67);
7334 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1463);
7335 show_backtrace(1);
7336 }
7337 var68 = ((val* (*)(val*))(var63->class->vft[COLOR_model__MClassType__mclass]))(var63) /* mclass on <var63:MType(MClassType)>*/;
7338 if (varonce69) {
7339 var70 = varonce69;
7340 } else {
7341 var71 = "\";";
7342 var72 = 2;
7343 var73 = string__NativeString__to_s_with_length(var71, var72);
7344 var70 = var73;
7345 varonce69 = var70;
7346 }
7347 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
7348 { /* var74 = array_instance Array[Object] */
7349 var75 = 4;
7350 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
7351 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var_res;
7352 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var59;
7353 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var68;
7354 ((struct instance_array__NativeArray*)var76)->values[3] = (val*) var70;
7355 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
7356 }
7357 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
7358 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var77) /* add on <self:SeparateCompilerVisitor>*/;
7359 } else {
7360 if (varonce78) {
7361 var79 = varonce78;
7362 } else {
7363 var80 = "type_";
7364 var81 = 5;
7365 var82 = string__NativeString__to_s_with_length(var80, var81);
7366 var79 = var82;
7367 varonce78 = var79;
7368 }
7369 var83 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7370 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_compiler__MType__c_name]))(var83) /* c_name on <var83:MType>*/;
7371 var85 = NEW_array__Array(&type_array__Arraykernel__Object);
7372 { /* var85 = array_instance Array[Object] */
7373 var86 = 2;
7374 var87 = NEW_array__NativeArray(var86, &type_array__NativeArraykernel__Object);
7375 ((struct instance_array__NativeArray*)var87)->values[0] = (val*) var79;
7376 ((struct instance_array__NativeArray*)var87)->values[1] = (val*) var84;
7377 ((void (*)(val*, val*, long))(var85->class->vft[COLOR_array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
7378 }
7379 var88 = ((val* (*)(val*))(var85->class->vft[COLOR_string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
7380 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var88) /* require_declaration on <self:SeparateCompilerVisitor>*/;
7381 if (varonce89) {
7382 var90 = varonce89;
7383 } else {
7384 var91 = " = type_";
7385 var92 = 8;
7386 var93 = string__NativeString__to_s_with_length(var91, var92);
7387 var90 = var93;
7388 varonce89 = var90;
7389 }
7390 var94 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7391 var95 = ((val* (*)(val*))(var94->class->vft[COLOR_abstract_compiler__MType__c_name]))(var94) /* c_name on <var94:MType>*/;
7392 if (varonce96) {
7393 var97 = varonce96;
7394 } else {
7395 var98 = ".name;";
7396 var99 = 6;
7397 var100 = string__NativeString__to_s_with_length(var98, var99);
7398 var97 = var100;
7399 varonce96 = var97;
7400 }
7401 var101 = NEW_array__Array(&type_array__Arraykernel__Object);
7402 { /* var101 = array_instance Array[Object] */
7403 var102 = 4;
7404 var103 = NEW_array__NativeArray(var102, &type_array__NativeArraykernel__Object);
7405 ((struct instance_array__NativeArray*)var103)->values[0] = (val*) var_res;
7406 ((struct instance_array__NativeArray*)var103)->values[1] = (val*) var90;
7407 ((struct instance_array__NativeArray*)var103)->values[2] = (val*) var95;
7408 ((struct instance_array__NativeArray*)var103)->values[3] = (val*) var97;
7409 ((void (*)(val*, val*, long))(var101->class->vft[COLOR_array__Array__with_native]))(var101, var103, var102) /* with_native on <var101:Array[Object]>*/;
7410 }
7411 var104 = ((val* (*)(val*))(var101->class->vft[COLOR_string__Object__to_s]))(var101) /* to_s on <var101:Array[Object]>*/;
7412 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var104) /* add on <self:SeparateCompilerVisitor>*/;
7413 }
7414 }
7415 var = var_res;
7416 goto RET_LABEL;
7417 RET_LABEL:;
7418 return var;
7419 }
7420 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
7421 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
7422 val* var /* : String */;
7423 val* var1 /* : String */;
7424 var1 = separate_compiler__SeparateCompilerVisitor__class_name_string(self, p0);
7425 var = var1;
7426 RET_LABEL:;
7427 return var;
7428 }
7429 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7430 val* separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
7431 val* var /* : RuntimeVariable */;
7432 val* var_value1 /* var value1: RuntimeVariable */;
7433 val* var_value2 /* var value2: RuntimeVariable */;
7434 val* var1 /* : MClassType */;
7435 val* var2 /* : RuntimeVariable */;
7436 val* var_res /* var res: RuntimeVariable */;
7437 short int var3 /* : Bool */;
7438 val* var4 /* : MType */;
7439 val* var5 /* : String */;
7440 static val* varonce;
7441 val* var6 /* : String */;
7442 char* var7 /* : NativeString */;
7443 long var8 /* : Int */;
7444 val* var9 /* : String */;
7445 short int var10 /* : Bool */;
7446 short int var_ /* var : Bool */;
7447 val* var11 /* : MType */;
7448 val* var12 /* : String */;
7449 static val* varonce13;
7450 val* var14 /* : String */;
7451 char* var15 /* : NativeString */;
7452 long var16 /* : Int */;
7453 val* var17 /* : String */;
7454 short int var18 /* : Bool */;
7455 val* var_tmp /* var tmp: RuntimeVariable */;
7456 val* var19 /* : MType */;
7457 val* var20 /* : String */;
7458 static val* varonce21;
7459 val* var22 /* : String */;
7460 char* var23 /* : NativeString */;
7461 long var24 /* : Int */;
7462 val* var25 /* : String */;
7463 short int var26 /* : Bool */;
7464 val* var27 /* : MType */;
7465 val* var28 /* : MType */;
7466 short int var29 /* : Bool */;
7467 static val* varonce30;
7468 val* var31 /* : String */;
7469 char* var32 /* : NativeString */;
7470 long var33 /* : Int */;
7471 val* var34 /* : String */;
7472 static val* varonce35;
7473 val* var36 /* : String */;
7474 char* var37 /* : NativeString */;
7475 long var38 /* : Int */;
7476 val* var39 /* : String */;
7477 static val* varonce40;
7478 val* var41 /* : String */;
7479 char* var42 /* : NativeString */;
7480 long var43 /* : Int */;
7481 val* var44 /* : String */;
7482 val* var45 /* : Array[Object] */;
7483 long var46 /* : Int */;
7484 val* var47 /* : NativeArray[Object] */;
7485 val* var48 /* : String */;
7486 val* var49 /* : MType */;
7487 val* var50 /* : String */;
7488 static val* varonce51;
7489 val* var52 /* : String */;
7490 char* var53 /* : NativeString */;
7491 long var54 /* : Int */;
7492 val* var55 /* : String */;
7493 short int var56 /* : Bool */;
7494 static val* varonce57;
7495 val* var58 /* : String */;
7496 char* var59 /* : NativeString */;
7497 long var60 /* : Int */;
7498 val* var61 /* : String */;
7499 val* var62 /* : MType */;
7500 static val* varonce63;
7501 val* var64 /* : String */;
7502 char* var65 /* : NativeString */;
7503 long var66 /* : Int */;
7504 val* var67 /* : String */;
7505 val* var68 /* : MType */;
7506 static val* varonce69;
7507 val* var70 /* : String */;
7508 char* var71 /* : NativeString */;
7509 long var72 /* : Int */;
7510 val* var73 /* : String */;
7511 val* var74 /* : Array[Object] */;
7512 long var75 /* : Int */;
7513 val* var76 /* : NativeArray[Object] */;
7514 val* var77 /* : String */;
7515 val* var78 /* : MType */;
7516 short int var79 /* : Bool */;
7517 int cltype;
7518 int idtype;
7519 const char* var_class_name;
7520 val* var_mtype1 /* var mtype1: MClassType */;
7521 static val* varonce80;
7522 val* var81 /* : String */;
7523 char* var82 /* : NativeString */;
7524 long var83 /* : Int */;
7525 val* var84 /* : String */;
7526 val* var85 /* : String */;
7527 val* var86 /* : Array[Object] */;
7528 long var87 /* : Int */;
7529 val* var88 /* : NativeArray[Object] */;
7530 val* var89 /* : String */;
7531 static val* varonce90;
7532 val* var91 /* : String */;
7533 char* var92 /* : NativeString */;
7534 long var93 /* : Int */;
7535 val* var94 /* : String */;
7536 static val* varonce95;
7537 val* var96 /* : String */;
7538 char* var97 /* : NativeString */;
7539 long var98 /* : Int */;
7540 val* var99 /* : String */;
7541 static val* varonce100;
7542 val* var101 /* : String */;
7543 char* var102 /* : NativeString */;
7544 long var103 /* : Int */;
7545 val* var104 /* : String */;
7546 val* var105 /* : String */;
7547 static val* varonce106;
7548 val* var107 /* : String */;
7549 char* var108 /* : NativeString */;
7550 long var109 /* : Int */;
7551 val* var110 /* : String */;
7552 val* var111 /* : Array[Object] */;
7553 long var112 /* : Int */;
7554 val* var113 /* : NativeArray[Object] */;
7555 val* var114 /* : String */;
7556 static val* varonce115;
7557 val* var116 /* : String */;
7558 char* var117 /* : NativeString */;
7559 long var118 /* : Int */;
7560 val* var119 /* : String */;
7561 static val* varonce120;
7562 val* var121 /* : String */;
7563 char* var122 /* : NativeString */;
7564 long var123 /* : Int */;
7565 val* var124 /* : String */;
7566 val* var125 /* : Array[Object] */;
7567 long var126 /* : Int */;
7568 val* var127 /* : NativeArray[Object] */;
7569 val* var128 /* : String */;
7570 static val* varonce129;
7571 val* var130 /* : String */;
7572 char* var131 /* : NativeString */;
7573 long var132 /* : Int */;
7574 val* var133 /* : String */;
7575 val* var134 /* : MType */;
7576 val* var135 /* : RuntimeVariable */;
7577 static val* varonce136;
7578 val* var137 /* : String */;
7579 char* var138 /* : NativeString */;
7580 long var139 /* : Int */;
7581 val* var140 /* : String */;
7582 static val* varonce141;
7583 val* var142 /* : String */;
7584 char* var143 /* : NativeString */;
7585 long var144 /* : Int */;
7586 val* var145 /* : String */;
7587 val* var146 /* : Array[Object] */;
7588 long var147 /* : Int */;
7589 val* var148 /* : NativeArray[Object] */;
7590 val* var149 /* : String */;
7591 static val* varonce150;
7592 val* var151 /* : String */;
7593 char* var152 /* : NativeString */;
7594 long var153 /* : Int */;
7595 val* var154 /* : String */;
7596 short int var155 /* : Bool */;
7597 short int var_maybe_null /* var maybe_null: Bool */;
7598 val* var156 /* : Array[String] */;
7599 val* var_test /* var test: Array[String] */;
7600 val* var157 /* : MType */;
7601 val* var_t1 /* var t1: MType */;
7602 short int var158 /* : Bool */;
7603 int cltype159;
7604 int idtype160;
7605 static val* varonce161;
7606 val* var162 /* : String */;
7607 char* var163 /* : NativeString */;
7608 long var164 /* : Int */;
7609 val* var165 /* : String */;
7610 val* var166 /* : Array[Object] */;
7611 long var167 /* : Int */;
7612 val* var168 /* : NativeArray[Object] */;
7613 val* var169 /* : String */;
7614 val* var170 /* : MType */;
7615 short int var171 /* : Bool */;
7616 val* var172 /* : MType */;
7617 val* var_t2 /* var t2: MType */;
7618 short int var173 /* : Bool */;
7619 int cltype174;
7620 int idtype175;
7621 static val* varonce176;
7622 val* var177 /* : String */;
7623 char* var178 /* : NativeString */;
7624 long var179 /* : Int */;
7625 val* var180 /* : String */;
7626 val* var181 /* : Array[Object] */;
7627 long var182 /* : Int */;
7628 val* var183 /* : NativeArray[Object] */;
7629 val* var184 /* : String */;
7630 val* var185 /* : MType */;
7631 short int var186 /* : Bool */;
7632 short int var187 /* : Bool */;
7633 short int var_incompatible /* var incompatible: Bool */;
7634 val* var188 /* : String */;
7635 static val* varonce189;
7636 val* var190 /* : String */;
7637 char* var191 /* : NativeString */;
7638 long var192 /* : Int */;
7639 val* var193 /* : String */;
7640 short int var194 /* : Bool */;
7641 val* var_primitive /* var primitive: nullable Object */;
7642 short int var195 /* : Bool */;
7643 val* var196 /* : String */;
7644 static val* varonce197;
7645 val* var198 /* : String */;
7646 char* var199 /* : NativeString */;
7647 long var200 /* : Int */;
7648 val* var201 /* : String */;
7649 short int var202 /* : Bool */;
7650 short int var203 /* : Bool */;
7651 short int var204 /* : Bool */;
7652 static val* varonce205;
7653 val* var206 /* : String */;
7654 char* var207 /* : NativeString */;
7655 long var208 /* : Int */;
7656 val* var209 /* : String */;
7657 static val* varonce210;
7658 val* var211 /* : String */;
7659 char* var212 /* : NativeString */;
7660 long var213 /* : Int */;
7661 val* var214 /* : String */;
7662 val* var215 /* : Array[Object] */;
7663 long var216 /* : Int */;
7664 val* var217 /* : NativeArray[Object] */;
7665 val* var218 /* : String */;
7666 short int var219 /* : Bool */;
7667 val* var220 /* : String */;
7668 static val* varonce221;
7669 val* var222 /* : String */;
7670 char* var223 /* : NativeString */;
7671 long var224 /* : Int */;
7672 val* var225 /* : String */;
7673 short int var226 /* : Bool */;
7674 short int var227 /* : Bool */;
7675 static val* varonce228;
7676 val* var229 /* : String */;
7677 char* var230 /* : NativeString */;
7678 long var231 /* : Int */;
7679 val* var232 /* : String */;
7680 static val* varonce233;
7681 val* var234 /* : String */;
7682 char* var235 /* : NativeString */;
7683 long var236 /* : Int */;
7684 val* var237 /* : String */;
7685 val* var238 /* : Array[Object] */;
7686 long var239 /* : Int */;
7687 val* var240 /* : NativeArray[Object] */;
7688 val* var241 /* : String */;
7689 short int var242 /* : Bool */;
7690 val* var243 /* : null */;
7691 static val* varonce244;
7692 val* var245 /* : String */;
7693 char* var246 /* : NativeString */;
7694 long var247 /* : Int */;
7695 val* var248 /* : String */;
7696 static val* varonce249;
7697 val* var250 /* : String */;
7698 char* var251 /* : NativeString */;
7699 long var252 /* : Int */;
7700 val* var253 /* : String */;
7701 static val* varonce254;
7702 val* var255 /* : String */;
7703 char* var256 /* : NativeString */;
7704 long var257 /* : Int */;
7705 val* var258 /* : String */;
7706 static val* varonce259;
7707 val* var260 /* : String */;
7708 char* var261 /* : NativeString */;
7709 long var262 /* : Int */;
7710 val* var263 /* : String */;
7711 static val* varonce264;
7712 val* var265 /* : String */;
7713 char* var266 /* : NativeString */;
7714 long var267 /* : Int */;
7715 val* var268 /* : String */;
7716 val* var269 /* : Array[Object] */;
7717 long var270 /* : Int */;
7718 val* var271 /* : NativeArray[Object] */;
7719 val* var272 /* : String */;
7720 static val* varonce273;
7721 val* var274 /* : String */;
7722 char* var275 /* : NativeString */;
7723 long var276 /* : Int */;
7724 val* var277 /* : String */;
7725 static val* varonce278;
7726 val* var279 /* : String */;
7727 char* var280 /* : NativeString */;
7728 long var281 /* : Int */;
7729 val* var282 /* : String */;
7730 static val* varonce283;
7731 val* var284 /* : String */;
7732 char* var285 /* : NativeString */;
7733 long var286 /* : Int */;
7734 val* var287 /* : String */;
7735 val* var288 /* : Array[Object] */;
7736 long var289 /* : Int */;
7737 val* var290 /* : NativeArray[Object] */;
7738 val* var291 /* : String */;
7739 val* var292 /* : null */;
7740 short int var293 /* : Bool */;
7741 static val* varonce294;
7742 val* var295 /* : String */;
7743 char* var296 /* : NativeString */;
7744 long var297 /* : Int */;
7745 val* var298 /* : String */;
7746 val* var299 /* : String */;
7747 static val* varonce300;
7748 val* var301 /* : String */;
7749 char* var302 /* : NativeString */;
7750 long var303 /* : Int */;
7751 val* var304 /* : String */;
7752 static val* varonce305;
7753 val* var306 /* : String */;
7754 char* var307 /* : NativeString */;
7755 long var308 /* : Int */;
7756 val* var309 /* : String */;
7757 val* var310 /* : String */;
7758 static val* varonce311;
7759 val* var312 /* : String */;
7760 char* var313 /* : NativeString */;
7761 long var314 /* : Int */;
7762 val* var315 /* : String */;
7763 static val* varonce316;
7764 val* var317 /* : String */;
7765 char* var318 /* : NativeString */;
7766 long var319 /* : Int */;
7767 val* var320 /* : String */;
7768 val* var321 /* : Array[Object] */;
7769 long var322 /* : Int */;
7770 val* var323 /* : NativeArray[Object] */;
7771 val* var324 /* : String */;
7772 short int var325 /* : Bool */;
7773 short int var326 /* : Bool */;
7774 short int var_327 /* var : Bool */;
7775 short int var328 /* : Bool */;
7776 static val* varonce329;
7777 val* var330 /* : String */;
7778 char* var331 /* : NativeString */;
7779 long var332 /* : Int */;
7780 val* var333 /* : String */;
7781 static val* varonce334;
7782 val* var335 /* : String */;
7783 char* var336 /* : NativeString */;
7784 long var337 /* : Int */;
7785 val* var338 /* : String */;
7786 val* var339 /* : Array[Object] */;
7787 long var340 /* : Int */;
7788 val* var341 /* : NativeArray[Object] */;
7789 val* var342 /* : String */;
7790 val* var343 /* : Array[String] */;
7791 val* var_s /* var s: Array[String] */;
7792 val* var344 /* : AbstractCompiler */;
7793 val* var345 /* : HashMap[MClass, Int] */;
7794 val* var346 /* : MapIterator[Object, nullable Object] */;
7795 short int var347 /* : Bool */;
7796 val* var348 /* : Object */;
7797 val* var_t /* var t: MClass */;
7798 val* var349 /* : nullable Object */;
7799 long var_v /* var v: Int */;
7800 long var350 /* : Int */;
7801 static val* varonce351;
7802 val* var352 /* : String */;
7803 char* var353 /* : NativeString */;
7804 long var354 /* : Int */;
7805 val* var355 /* : String */;
7806 static val* varonce356;
7807 val* var357 /* : String */;
7808 char* var358 /* : NativeString */;
7809 long var359 /* : Int */;
7810 val* var360 /* : String */;
7811 static val* varonce361;
7812 val* var362 /* : String */;
7813 char* var363 /* : NativeString */;
7814 long var364 /* : Int */;
7815 val* var365 /* : String */;
7816 val* var366 /* : String */;
7817 static val* varonce367;
7818 val* var368 /* : String */;
7819 char* var369 /* : NativeString */;
7820 long var370 /* : Int */;
7821 val* var371 /* : String */;
7822 static val* varonce372;
7823 val* var373 /* : String */;
7824 char* var374 /* : NativeString */;
7825 long var375 /* : Int */;
7826 val* var376 /* : String */;
7827 val* var377 /* : String */;
7828 static val* varonce378;
7829 val* var379 /* : String */;
7830 char* var380 /* : NativeString */;
7831 long var381 /* : Int */;
7832 val* var382 /* : String */;
7833 static val* varonce383;
7834 val* var384 /* : String */;
7835 char* var385 /* : NativeString */;
7836 long var386 /* : Int */;
7837 val* var387 /* : String */;
7838 val* var388 /* : Array[Object] */;
7839 long var389 /* : Int */;
7840 val* var390 /* : NativeArray[Object] */;
7841 val* var391 /* : Object */;
7842 val* var392 /* : String */;
7843 static val* varonce393;
7844 val* var394 /* : String */;
7845 char* var395 /* : NativeString */;
7846 long var396 /* : Int */;
7847 val* var397 /* : String */;
7848 static val* varonce398;
7849 val* var399 /* : String */;
7850 char* var400 /* : NativeString */;
7851 long var401 /* : Int */;
7852 val* var402 /* : String */;
7853 val* var403 /* : String */;
7854 static val* varonce404;
7855 val* var405 /* : String */;
7856 char* var406 /* : NativeString */;
7857 long var407 /* : Int */;
7858 val* var408 /* : String */;
7859 val* var409 /* : Array[Object] */;
7860 long var410 /* : Int */;
7861 val* var411 /* : NativeArray[Object] */;
7862 val* var412 /* : String */;
7863 static val* varonce413;
7864 val* var414 /* : String */;
7865 char* var415 /* : NativeString */;
7866 long var416 /* : Int */;
7867 val* var417 /* : String */;
7868 static val* varonce418;
7869 val* var419 /* : String */;
7870 char* var420 /* : NativeString */;
7871 long var421 /* : Int */;
7872 val* var422 /* : String */;
7873 static val* varonce423;
7874 val* var424 /* : String */;
7875 char* var425 /* : NativeString */;
7876 long var426 /* : Int */;
7877 val* var427 /* : String */;
7878 val* var428 /* : Array[Object] */;
7879 long var429 /* : Int */;
7880 val* var430 /* : NativeArray[Object] */;
7881 val* var431 /* : String */;
7882 static val* varonce432;
7883 val* var433 /* : String */;
7884 char* var434 /* : NativeString */;
7885 long var435 /* : Int */;
7886 val* var436 /* : String */;
7887 static val* varonce437;
7888 val* var438 /* : String */;
7889 char* var439 /* : NativeString */;
7890 long var440 /* : Int */;
7891 val* var441 /* : String */;
7892 static val* varonce442;
7893 val* var443 /* : String */;
7894 char* var444 /* : NativeString */;
7895 long var445 /* : Int */;
7896 val* var446 /* : String */;
7897 static val* varonce447;
7898 val* var448 /* : String */;
7899 char* var449 /* : NativeString */;
7900 long var450 /* : Int */;
7901 val* var451 /* : String */;
7902 val* var452 /* : String */;
7903 static val* varonce453;
7904 val* var454 /* : String */;
7905 char* var455 /* : NativeString */;
7906 long var456 /* : Int */;
7907 val* var457 /* : String */;
7908 val* var458 /* : Array[Object] */;
7909 long var459 /* : Int */;
7910 val* var460 /* : NativeArray[Object] */;
7911 val* var461 /* : String */;
7912 var_value1 = p0;
7913 var_value2 = p1;
7914 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
7915 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
7916 var_res = var2;
7917 var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7918 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
7919 if (varonce) {
7920 var6 = varonce;
7921 } else {
7922 var7 = "val*";
7923 var8 = 4;
7924 var9 = string__NativeString__to_s_with_length(var7, var8);
7925 var6 = var9;
7926 varonce = var6;
7927 }
7928 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
7929 var_ = var10;
7930 if (var10){
7931 var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7932 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
7933 if (varonce13) {
7934 var14 = varonce13;
7935 } else {
7936 var15 = "val*";
7937 var16 = 4;
7938 var17 = string__NativeString__to_s_with_length(var15, var16);
7939 var14 = var17;
7940 varonce13 = var14;
7941 }
7942 var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
7943 var3 = var18;
7944 } else {
7945 var3 = var_;
7946 }
7947 if (var3){
7948 var_tmp = var_value1;
7949 var_value1 = var_value2;
7950 var_value2 = var_tmp;
7951 } else {
7952 }
7953 var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7954 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
7955 if (varonce21) {
7956 var22 = varonce21;
7957 } else {
7958 var23 = "val*";
7959 var24 = 4;
7960 var25 = string__NativeString__to_s_with_length(var23, var24);
7961 var22 = var25;
7962 varonce21 = var22;
7963 }
7964 var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
7965 if (var26){
7966 var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7967 var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7968 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
7969 if (var29){
7970 if (varonce30) {
7971 var31 = varonce30;
7972 } else {
7973 var32 = " = ";
7974 var33 = 3;
7975 var34 = string__NativeString__to_s_with_length(var32, var33);
7976 var31 = var34;
7977 varonce30 = var31;
7978 }
7979 if (varonce35) {
7980 var36 = varonce35;
7981 } else {
7982 var37 = " == ";
7983 var38 = 4;
7984 var39 = string__NativeString__to_s_with_length(var37, var38);
7985 var36 = var39;
7986 varonce35 = var36;
7987 }
7988 if (varonce40) {
7989 var41 = varonce40;
7990 } else {
7991 var42 = ";";
7992 var43 = 1;
7993 var44 = string__NativeString__to_s_with_length(var42, var43);
7994 var41 = var44;
7995 varonce40 = var41;
7996 }
7997 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
7998 { /* var45 = array_instance Array[Object] */
7999 var46 = 6;
8000 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
8001 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var_res;
8002 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var31;
8003 ((struct instance_array__NativeArray*)var47)->values[2] = (val*) var_value1;
8004 ((struct instance_array__NativeArray*)var47)->values[3] = (val*) var36;
8005 ((struct instance_array__NativeArray*)var47)->values[4] = (val*) var_value2;
8006 ((struct instance_array__NativeArray*)var47)->values[5] = (val*) var41;
8007 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
8008 }
8009 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
8010 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var48) /* add on <self:SeparateCompilerVisitor>*/;
8011 } else {
8012 var49 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
8013 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_compiler__MType__ctype]))(var49) /* ctype on <var49:MType>*/;
8014 if (varonce51) {
8015 var52 = varonce51;
8016 } else {
8017 var53 = "val*";
8018 var54 = 4;
8019 var55 = string__NativeString__to_s_with_length(var53, var54);
8020 var52 = var55;
8021 varonce51 = var52;
8022 }
8023 var56 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___33d_61d]))(var50, var52) /* != on <var50:String>*/;
8024 if (var56){
8025 if (varonce57) {
8026 var58 = varonce57;
8027 } else {
8028 var59 = " = 0; /* incompatible types ";
8029 var60 = 28;
8030 var61 = string__NativeString__to_s_with_length(var59, var60);
8031 var58 = var61;
8032 varonce57 = var58;
8033 }
8034 var62 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
8035 if (varonce63) {
8036 var64 = varonce63;
8037 } else {
8038 var65 = " vs. ";
8039 var66 = 5;
8040 var67 = string__NativeString__to_s_with_length(var65, var66);
8041 var64 = var67;
8042 varonce63 = var64;
8043 }
8044 var68 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
8045 if (varonce69) {
8046 var70 = varonce69;
8047 } else {
8048 var71 = "*/";
8049 var72 = 2;
8050 var73 = string__NativeString__to_s_with_length(var71, var72);
8051 var70 = var73;
8052 varonce69 = var70;
8053 }
8054 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
8055 { /* var74 = array_instance Array[Object] */
8056 var75 = 6;
8057 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
8058 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var_res;
8059 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var58;
8060 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var62;
8061 ((struct instance_array__NativeArray*)var76)->values[3] = (val*) var64;
8062 ((struct instance_array__NativeArray*)var76)->values[4] = (val*) var68;
8063 ((struct instance_array__NativeArray*)var76)->values[5] = (val*) var70;
8064 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
8065 }
8066 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
8067 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var77) /* add on <self:SeparateCompilerVisitor>*/;
8068 } else {
8069 var78 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
8070 /* <var78:MType> isa MClassType */
8071 cltype = type_model__MClassType.color;
8072 idtype = type_model__MClassType.id;
8073 if(cltype >= var78->type->table_size) {
8074 var79 = 0;
8075 } else {
8076 var79 = var78->type->type_table[cltype] == idtype;
8077 }
8078 if (!var79) {
8079 var_class_name = var78 == NULL ? "null" : var78->type->name;
8080 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
8081 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1485);
8082 show_backtrace(1);
8083 }
8084 var_mtype1 = var78;
8085 if (varonce80) {
8086 var81 = varonce80;
8087 } else {
8088 var82 = "class_";
8089 var83 = 6;
8090 var84 = string__NativeString__to_s_with_length(var82, var83);
8091 var81 = var84;
8092 varonce80 = var81;
8093 }
8094 var85 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
8095 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
8096 { /* var86 = array_instance Array[Object] */
8097 var87 = 2;
8098 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
8099 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var81;
8100 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var85;
8101 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
8102 }
8103 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
8104 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var89) /* require_declaration on <self:SeparateCompilerVisitor>*/;
8105 if (varonce90) {
8106 var91 = varonce90;
8107 } else {
8108 var92 = " = (";
8109 var93 = 4;
8110 var94 = string__NativeString__to_s_with_length(var92, var93);
8111 var91 = var94;
8112 varonce90 = var91;
8113 }
8114 if (varonce95) {
8115 var96 = varonce95;
8116 } else {
8117 var97 = " != NULL) && (";
8118 var98 = 14;
8119 var99 = string__NativeString__to_s_with_length(var97, var98);
8120 var96 = var99;
8121 varonce95 = var96;
8122 }
8123 if (varonce100) {
8124 var101 = varonce100;
8125 } else {
8126 var102 = "->class == &class_";
8127 var103 = 18;
8128 var104 = string__NativeString__to_s_with_length(var102, var103);
8129 var101 = var104;
8130 varonce100 = var101;
8131 }
8132 var105 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
8133 if (varonce106) {
8134 var107 = varonce106;
8135 } else {
8136 var108 = ");";
8137 var109 = 2;
8138 var110 = string__NativeString__to_s_with_length(var108, var109);
8139 var107 = var110;
8140 varonce106 = var107;
8141 }
8142 var111 = NEW_array__Array(&type_array__Arraykernel__Object);
8143 { /* var111 = array_instance Array[Object] */
8144 var112 = 8;
8145 var113 = NEW_array__NativeArray(var112, &type_array__NativeArraykernel__Object);
8146 ((struct instance_array__NativeArray*)var113)->values[0] = (val*) var_res;
8147 ((struct instance_array__NativeArray*)var113)->values[1] = (val*) var91;
8148 ((struct instance_array__NativeArray*)var113)->values[2] = (val*) var_value2;
8149 ((struct instance_array__NativeArray*)var113)->values[3] = (val*) var96;
8150 ((struct instance_array__NativeArray*)var113)->values[4] = (val*) var_value2;
8151 ((struct instance_array__NativeArray*)var113)->values[5] = (val*) var101;
8152 ((struct instance_array__NativeArray*)var113)->values[6] = (val*) var105;
8153 ((struct instance_array__NativeArray*)var113)->values[7] = (val*) var107;
8154 ((void (*)(val*, val*, long))(var111->class->vft[COLOR_array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
8155 }
8156 var114 = ((val* (*)(val*))(var111->class->vft[COLOR_string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
8157 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var114) /* add on <self:SeparateCompilerVisitor>*/;
8158 if (varonce115) {
8159 var116 = varonce115;
8160 } else {
8161 var117 = "if (";
8162 var118 = 4;
8163 var119 = string__NativeString__to_s_with_length(var117, var118);
8164 var116 = var119;
8165 varonce115 = var116;
8166 }
8167 if (varonce120) {
8168 var121 = varonce120;
8169 } else {
8170 var122 = ") {";
8171 var123 = 3;
8172 var124 = string__NativeString__to_s_with_length(var122, var123);
8173 var121 = var124;
8174 varonce120 = var121;
8175 }
8176 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
8177 { /* var125 = array_instance Array[Object] */
8178 var126 = 3;
8179 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
8180 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var116;
8181 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var_res;
8182 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var121;
8183 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
8184 }
8185 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
8186 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var128) /* add on <self:SeparateCompilerVisitor>*/;
8187 if (varonce129) {
8188 var130 = varonce129;
8189 } else {
8190 var131 = " = (";
8191 var132 = 4;
8192 var133 = string__NativeString__to_s_with_length(var131, var132);
8193 var130 = var133;
8194 varonce129 = var130;
8195 }
8196 var134 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
8197 var135 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value2, var134) /* autobox on <self:SeparateCompilerVisitor>*/;
8198 if (varonce136) {
8199 var137 = varonce136;
8200 } else {
8201 var138 = " == ";
8202 var139 = 4;
8203 var140 = string__NativeString__to_s_with_length(var138, var139);
8204 var137 = var140;
8205 varonce136 = var137;
8206 }
8207 if (varonce141) {
8208 var142 = varonce141;
8209 } else {
8210 var143 = ");";
8211 var144 = 2;
8212 var145 = string__NativeString__to_s_with_length(var143, var144);
8213 var142 = var145;
8214 varonce141 = var142;
8215 }
8216 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
8217 { /* var146 = array_instance Array[Object] */
8218 var147 = 6;
8219 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
8220 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var_res;
8221 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var130;
8222 ((struct instance_array__NativeArray*)var148)->values[2] = (val*) var135;
8223 ((struct instance_array__NativeArray*)var148)->values[3] = (val*) var137;
8224 ((struct instance_array__NativeArray*)var148)->values[4] = (val*) var_value1;
8225 ((struct instance_array__NativeArray*)var148)->values[5] = (val*) var142;
8226 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
8227 }
8228 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
8229 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var149) /* add on <self:SeparateCompilerVisitor>*/;
8230 if (varonce150) {
8231 var151 = varonce150;
8232 } else {
8233 var152 = "}";
8234 var153 = 1;
8235 var154 = string__NativeString__to_s_with_length(var152, var153);
8236 var151 = var154;
8237 varonce150 = var151;
8238 }
8239 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var151) /* add on <self:SeparateCompilerVisitor>*/;
8240 }
8241 }
8242 var = var_res;
8243 goto RET_LABEL;
8244 } else {
8245 }
8246 var155 = 1;
8247 var_maybe_null = var155;
8248 var156 = NEW_array__Array(&type_array__Arraystring__String);
8249 ((void (*)(val*))(var156->class->vft[COLOR_array__Array__init]))(var156) /* init on <var156:Array[String]>*/;
8250 var_test = var156;
8251 var157 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value1) /* mcasttype on <var_value1:RuntimeVariable>*/;
8252 var_t1 = var157;
8253 /* <var_t1:MType> isa MNullableType */
8254 cltype159 = type_model__MNullableType.color;
8255 idtype160 = type_model__MNullableType.id;
8256 if(cltype159 >= var_t1->type->table_size) {
8257 var158 = 0;
8258 } else {
8259 var158 = var_t1->type->type_table[cltype159] == idtype160;
8260 }
8261 if (var158){
8262 if (varonce161) {
8263 var162 = varonce161;
8264 } else {
8265 var163 = " != NULL";
8266 var164 = 8;
8267 var165 = string__NativeString__to_s_with_length(var163, var164);
8268 var162 = var165;
8269 varonce161 = var162;
8270 }
8271 var166 = NEW_array__Array(&type_array__Arraykernel__Object);
8272 { /* var166 = array_instance Array[Object] */
8273 var167 = 2;
8274 var168 = NEW_array__NativeArray(var167, &type_array__NativeArraykernel__Object);
8275 ((struct instance_array__NativeArray*)var168)->values[0] = (val*) var_value1;
8276 ((struct instance_array__NativeArray*)var168)->values[1] = (val*) var162;
8277 ((void (*)(val*, val*, long))(var166->class->vft[COLOR_array__Array__with_native]))(var166, var168, var167) /* with_native on <var166:Array[Object]>*/;
8278 }
8279 var169 = ((val* (*)(val*))(var166->class->vft[COLOR_string__Object__to_s]))(var166) /* to_s on <var166:Array[Object]>*/;
8280 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var169) /* add on <var_test:Array[String]>*/;
8281 var170 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:MType(MNullableType)>*/;
8282 var_t1 = var170;
8283 } else {
8284 var171 = 0;
8285 var_maybe_null = var171;
8286 }
8287 var172 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value2) /* mcasttype on <var_value2:RuntimeVariable>*/;
8288 var_t2 = var172;
8289 /* <var_t2:MType> isa MNullableType */
8290 cltype174 = type_model__MNullableType.color;
8291 idtype175 = type_model__MNullableType.id;
8292 if(cltype174 >= var_t2->type->table_size) {
8293 var173 = 0;
8294 } else {
8295 var173 = var_t2->type->type_table[cltype174] == idtype175;
8296 }
8297 if (var173){
8298 if (varonce176) {
8299 var177 = varonce176;
8300 } else {
8301 var178 = " != NULL";
8302 var179 = 8;
8303 var180 = string__NativeString__to_s_with_length(var178, var179);
8304 var177 = var180;
8305 varonce176 = var177;
8306 }
8307 var181 = NEW_array__Array(&type_array__Arraykernel__Object);
8308 { /* var181 = array_instance Array[Object] */
8309 var182 = 2;
8310 var183 = NEW_array__NativeArray(var182, &type_array__NativeArraykernel__Object);
8311 ((struct instance_array__NativeArray*)var183)->values[0] = (val*) var_value2;
8312 ((struct instance_array__NativeArray*)var183)->values[1] = (val*) var177;
8313 ((void (*)(val*, val*, long))(var181->class->vft[COLOR_array__Array__with_native]))(var181, var183, var182) /* with_native on <var181:Array[Object]>*/;
8314 }
8315 var184 = ((val* (*)(val*))(var181->class->vft[COLOR_string__Object__to_s]))(var181) /* to_s on <var181:Array[Object]>*/;
8316 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var184) /* add on <var_test:Array[String]>*/;
8317 var185 = ((val* (*)(val*))(var_t2->class->vft[COLOR_model__MNullableType__mtype]))(var_t2) /* mtype on <var_t2:MType(MNullableType)>*/;
8318 var_t2 = var185;
8319 } else {
8320 var186 = 0;
8321 var_maybe_null = var186;
8322 }
8323 var187 = 0;
8324 var_incompatible = var187;
8325 var188 = ((val* (*)(val*))(var_t1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t1) /* ctype on <var_t1:MType>*/;
8326 if (varonce189) {
8327 var190 = varonce189;
8328 } else {
8329 var191 = "val*";
8330 var192 = 4;
8331 var193 = string__NativeString__to_s_with_length(var191, var192);
8332 var190 = var193;
8333 varonce189 = var190;
8334 }
8335 var194 = ((short int (*)(val*, val*))(var188->class->vft[COLOR_kernel__Object___33d_61d]))(var188, var190) /* != on <var188:String>*/;
8336 if (var194){
8337 var_primitive = var_t1;
8338 var195 = ((short int (*)(val*, val*))(var_t1->class->vft[COLOR_kernel__Object___61d_61d]))(var_t1, var_t2) /* == on <var_t1:MType>*/;
8339 if (var195){
8340 } else {
8341 var196 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
8342 if (varonce197) {
8343 var198 = varonce197;
8344 } else {
8345 var199 = "val*";
8346 var200 = 4;
8347 var201 = string__NativeString__to_s_with_length(var199, var200);
8348 var198 = var201;
8349 varonce197 = var198;
8350 }
8351 var202 = ((short int (*)(val*, val*))(var196->class->vft[COLOR_kernel__Object___33d_61d]))(var196, var198) /* != on <var196:String>*/;
8352 if (var202){
8353 var203 = 1;
8354 var_incompatible = var203;
8355 } else {
8356 var204 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value2) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8357 if (var204){
8358 if (varonce205) {
8359 var206 = varonce205;
8360 } else {
8361 var207 = "->class == ";
8362 var208 = 11;
8363 var209 = string__NativeString__to_s_with_length(var207, var208);
8364 var206 = var209;
8365 varonce205 = var206;
8366 }
8367 if (varonce210) {
8368 var211 = varonce210;
8369 } else {
8370 var212 = "->class";
8371 var213 = 7;
8372 var214 = string__NativeString__to_s_with_length(var212, var213);
8373 var211 = var214;
8374 varonce210 = var211;
8375 }
8376 var215 = NEW_array__Array(&type_array__Arraykernel__Object);
8377 { /* var215 = array_instance Array[Object] */
8378 var216 = 4;
8379 var217 = NEW_array__NativeArray(var216, &type_array__NativeArraykernel__Object);
8380 ((struct instance_array__NativeArray*)var217)->values[0] = (val*) var_value1;
8381 ((struct instance_array__NativeArray*)var217)->values[1] = (val*) var206;
8382 ((struct instance_array__NativeArray*)var217)->values[2] = (val*) var_value2;
8383 ((struct instance_array__NativeArray*)var217)->values[3] = (val*) var211;
8384 ((void (*)(val*, val*, long))(var215->class->vft[COLOR_array__Array__with_native]))(var215, var217, var216) /* with_native on <var215:Array[Object]>*/;
8385 }
8386 var218 = ((val* (*)(val*))(var215->class->vft[COLOR_string__Object__to_s]))(var215) /* to_s on <var215:Array[Object]>*/;
8387 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var218) /* add on <var_test:Array[String]>*/;
8388 } else {
8389 var219 = 1;
8390 var_incompatible = var219;
8391 }
8392 }
8393 }
8394 } else {
8395 var220 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
8396 if (varonce221) {
8397 var222 = varonce221;
8398 } else {
8399 var223 = "val*";
8400 var224 = 4;
8401 var225 = string__NativeString__to_s_with_length(var223, var224);
8402 var222 = var225;
8403 varonce221 = var222;
8404 }
8405 var226 = ((short int (*)(val*, val*))(var220->class->vft[COLOR_kernel__Object___33d_61d]))(var220, var222) /* != on <var220:String>*/;
8406 if (var226){
8407 var_primitive = var_t2;
8408 var227 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value1) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8409 if (var227){
8410 if (varonce228) {
8411 var229 = varonce228;
8412 } else {
8413 var230 = "->class == ";
8414 var231 = 11;
8415 var232 = string__NativeString__to_s_with_length(var230, var231);
8416 var229 = var232;
8417 varonce228 = var229;
8418 }
8419 if (varonce233) {
8420 var234 = varonce233;
8421 } else {
8422 var235 = "->class";
8423 var236 = 7;
8424 var237 = string__NativeString__to_s_with_length(var235, var236);
8425 var234 = var237;
8426 varonce233 = var234;
8427 }
8428 var238 = NEW_array__Array(&type_array__Arraykernel__Object);
8429 { /* var238 = array_instance Array[Object] */
8430 var239 = 4;
8431 var240 = NEW_array__NativeArray(var239, &type_array__NativeArraykernel__Object);
8432 ((struct instance_array__NativeArray*)var240)->values[0] = (val*) var_value1;
8433 ((struct instance_array__NativeArray*)var240)->values[1] = (val*) var229;
8434 ((struct instance_array__NativeArray*)var240)->values[2] = (val*) var_value2;
8435 ((struct instance_array__NativeArray*)var240)->values[3] = (val*) var234;
8436 ((void (*)(val*, val*, long))(var238->class->vft[COLOR_array__Array__with_native]))(var238, var240, var239) /* with_native on <var238:Array[Object]>*/;
8437 }
8438 var241 = ((val* (*)(val*))(var238->class->vft[COLOR_string__Object__to_s]))(var238) /* to_s on <var238:Array[Object]>*/;
8439 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var241) /* add on <var_test:Array[String]>*/;
8440 } else {
8441 var242 = 1;
8442 var_incompatible = var242;
8443 }
8444 } else {
8445 var243 = NULL;
8446 var_primitive = var243;
8447 }
8448 }
8449 if (var_incompatible){
8450 if (var_maybe_null){
8451 if (varonce244) {
8452 var245 = varonce244;
8453 } else {
8454 var246 = " = ";
8455 var247 = 3;
8456 var248 = string__NativeString__to_s_with_length(var246, var247);
8457 var245 = var248;
8458 varonce244 = var245;
8459 }
8460 if (varonce249) {
8461 var250 = varonce249;
8462 } else {
8463 var251 = " == ";
8464 var252 = 4;
8465 var253 = string__NativeString__to_s_with_length(var251, var252);
8466 var250 = var253;
8467 varonce249 = var250;
8468 }
8469 if (varonce254) {
8470 var255 = varonce254;
8471 } else {
8472 var256 = "; /* incompatible types ";
8473 var257 = 24;
8474 var258 = string__NativeString__to_s_with_length(var256, var257);
8475 var255 = var258;
8476 varonce254 = var255;
8477 }
8478 if (varonce259) {
8479 var260 = varonce259;
8480 } else {
8481 var261 = " vs. ";
8482 var262 = 5;
8483 var263 = string__NativeString__to_s_with_length(var261, var262);
8484 var260 = var263;
8485 varonce259 = var260;
8486 }
8487 if (varonce264) {
8488 var265 = varonce264;
8489 } else {
8490 var266 = "; but may be NULL*/";
8491 var267 = 19;
8492 var268 = string__NativeString__to_s_with_length(var266, var267);
8493 var265 = var268;
8494 varonce264 = var265;
8495 }
8496 var269 = NEW_array__Array(&type_array__Arraykernel__Object);
8497 { /* var269 = array_instance Array[Object] */
8498 var270 = 10;
8499 var271 = NEW_array__NativeArray(var270, &type_array__NativeArraykernel__Object);
8500 ((struct instance_array__NativeArray*)var271)->values[0] = (val*) var_res;
8501 ((struct instance_array__NativeArray*)var271)->values[1] = (val*) var245;
8502 ((struct instance_array__NativeArray*)var271)->values[2] = (val*) var_value1;
8503 ((struct instance_array__NativeArray*)var271)->values[3] = (val*) var250;
8504 ((struct instance_array__NativeArray*)var271)->values[4] = (val*) var_value2;
8505 ((struct instance_array__NativeArray*)var271)->values[5] = (val*) var255;
8506 ((struct instance_array__NativeArray*)var271)->values[6] = (val*) var_t1;
8507 ((struct instance_array__NativeArray*)var271)->values[7] = (val*) var260;
8508 ((struct instance_array__NativeArray*)var271)->values[8] = (val*) var_t2;
8509 ((struct instance_array__NativeArray*)var271)->values[9] = (val*) var265;
8510 ((void (*)(val*, val*, long))(var269->class->vft[COLOR_array__Array__with_native]))(var269, var271, var270) /* with_native on <var269:Array[Object]>*/;
8511 }
8512 var272 = ((val* (*)(val*))(var269->class->vft[COLOR_string__Object__to_s]))(var269) /* to_s on <var269:Array[Object]>*/;
8513 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var272) /* add on <self:SeparateCompilerVisitor>*/;
8514 var = var_res;
8515 goto RET_LABEL;
8516 } else {
8517 if (varonce273) {
8518 var274 = varonce273;
8519 } else {
8520 var275 = " = 0; /* incompatible types ";
8521 var276 = 28;
8522 var277 = string__NativeString__to_s_with_length(var275, var276);
8523 var274 = var277;
8524 varonce273 = var274;
8525 }
8526 if (varonce278) {
8527 var279 = varonce278;
8528 } else {
8529 var280 = " vs. ";
8530 var281 = 5;
8531 var282 = string__NativeString__to_s_with_length(var280, var281);
8532 var279 = var282;
8533 varonce278 = var279;
8534 }
8535 if (varonce283) {
8536 var284 = varonce283;
8537 } else {
8538 var285 = "; cannot be NULL */";
8539 var286 = 19;
8540 var287 = string__NativeString__to_s_with_length(var285, var286);
8541 var284 = var287;
8542 varonce283 = var284;
8543 }
8544 var288 = NEW_array__Array(&type_array__Arraykernel__Object);
8545 { /* var288 = array_instance Array[Object] */
8546 var289 = 6;
8547 var290 = NEW_array__NativeArray(var289, &type_array__NativeArraykernel__Object);
8548 ((struct instance_array__NativeArray*)var290)->values[0] = (val*) var_res;
8549 ((struct instance_array__NativeArray*)var290)->values[1] = (val*) var274;
8550 ((struct instance_array__NativeArray*)var290)->values[2] = (val*) var_t1;
8551 ((struct instance_array__NativeArray*)var290)->values[3] = (val*) var279;
8552 ((struct instance_array__NativeArray*)var290)->values[4] = (val*) var_t2;
8553 ((struct instance_array__NativeArray*)var290)->values[5] = (val*) var284;
8554 ((void (*)(val*, val*, long))(var288->class->vft[COLOR_array__Array__with_native]))(var288, var290, var289) /* with_native on <var288:Array[Object]>*/;
8555 }
8556 var291 = ((val* (*)(val*))(var288->class->vft[COLOR_string__Object__to_s]))(var288) /* to_s on <var288:Array[Object]>*/;
8557 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var291) /* add on <self:SeparateCompilerVisitor>*/;
8558 var = var_res;
8559 goto RET_LABEL;
8560 }
8561 } else {
8562 }
8563 var292 = NULL;
8564 if (var_primitive == NULL) {
8565 var293 = 0; /* is null */
8566 } else {
8567 var293 = 1; /* arg is null and recv is not */
8568 }
8569 if (var293){
8570 if (varonce294) {
8571 var295 = varonce294;
8572 } else {
8573 var296 = "((struct instance_";
8574 var297 = 18;
8575 var298 = string__NativeString__to_s_with_length(var296, var297);
8576 var295 = var298;
8577 varonce294 = var295;
8578 }
8579 var299 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_separate_compiler__MType__c_instance_name]))(var_primitive) /* c_instance_name on <var_primitive:nullable Object(MType)>*/;
8580 if (varonce300) {
8581 var301 = varonce300;
8582 } else {
8583 var302 = "*)";
8584 var303 = 2;
8585 var304 = string__NativeString__to_s_with_length(var302, var303);
8586 var301 = var304;
8587 varonce300 = var301;
8588 }
8589 if (varonce305) {
8590 var306 = varonce305;
8591 } else {
8592 var307 = ")->value == ((struct instance_";
8593 var308 = 30;
8594 var309 = string__NativeString__to_s_with_length(var307, var308);
8595 var306 = var309;
8596 varonce305 = var306;
8597 }
8598 var310 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_separate_compiler__MType__c_instance_name]))(var_primitive) /* c_instance_name on <var_primitive:nullable Object(MType)>*/;
8599 if (varonce311) {
8600 var312 = varonce311;
8601 } else {
8602 var313 = "*)";
8603 var314 = 2;
8604 var315 = string__NativeString__to_s_with_length(var313, var314);
8605 var312 = var315;
8606 varonce311 = var312;
8607 }
8608 if (varonce316) {
8609 var317 = varonce316;
8610 } else {
8611 var318 = ")->value";
8612 var319 = 8;
8613 var320 = string__NativeString__to_s_with_length(var318, var319);
8614 var317 = var320;
8615 varonce316 = var317;
8616 }
8617 var321 = NEW_array__Array(&type_array__Arraykernel__Object);
8618 { /* var321 = array_instance Array[Object] */
8619 var322 = 9;
8620 var323 = NEW_array__NativeArray(var322, &type_array__NativeArraykernel__Object);
8621 ((struct instance_array__NativeArray*)var323)->values[0] = (val*) var295;
8622 ((struct instance_array__NativeArray*)var323)->values[1] = (val*) var299;
8623 ((struct instance_array__NativeArray*)var323)->values[2] = (val*) var301;
8624 ((struct instance_array__NativeArray*)var323)->values[3] = (val*) var_value1;
8625 ((struct instance_array__NativeArray*)var323)->values[4] = (val*) var306;
8626 ((struct instance_array__NativeArray*)var323)->values[5] = (val*) var310;
8627 ((struct instance_array__NativeArray*)var323)->values[6] = (val*) var312;
8628 ((struct instance_array__NativeArray*)var323)->values[7] = (val*) var_value2;
8629 ((struct instance_array__NativeArray*)var323)->values[8] = (val*) var317;
8630 ((void (*)(val*, val*, long))(var321->class->vft[COLOR_array__Array__with_native]))(var321, var323, var322) /* with_native on <var321:Array[Object]>*/;
8631 }
8632 var324 = ((val* (*)(val*))(var321->class->vft[COLOR_string__Object__to_s]))(var321) /* to_s on <var321:Array[Object]>*/;
8633 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var324) /* add on <var_test:Array[String]>*/;
8634 } else {
8635 var326 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value1) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8636 var_327 = var326;
8637 if (var326){
8638 var328 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value2) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8639 var325 = var328;
8640 } else {
8641 var325 = var_327;
8642 }
8643 if (var325){
8644 if (varonce329) {
8645 var330 = varonce329;
8646 } else {
8647 var331 = "->class == ";
8648 var332 = 11;
8649 var333 = string__NativeString__to_s_with_length(var331, var332);
8650 var330 = var333;
8651 varonce329 = var330;
8652 }
8653 if (varonce334) {
8654 var335 = varonce334;
8655 } else {
8656 var336 = "->class";
8657 var337 = 7;
8658 var338 = string__NativeString__to_s_with_length(var336, var337);
8659 var335 = var338;
8660 varonce334 = var335;
8661 }
8662 var339 = NEW_array__Array(&type_array__Arraykernel__Object);
8663 { /* var339 = array_instance Array[Object] */
8664 var340 = 4;
8665 var341 = NEW_array__NativeArray(var340, &type_array__NativeArraykernel__Object);
8666 ((struct instance_array__NativeArray*)var341)->values[0] = (val*) var_value1;
8667 ((struct instance_array__NativeArray*)var341)->values[1] = (val*) var330;
8668 ((struct instance_array__NativeArray*)var341)->values[2] = (val*) var_value2;
8669 ((struct instance_array__NativeArray*)var341)->values[3] = (val*) var335;
8670 ((void (*)(val*, val*, long))(var339->class->vft[COLOR_array__Array__with_native]))(var339, var341, var340) /* with_native on <var339:Array[Object]>*/;
8671 }
8672 var342 = ((val* (*)(val*))(var339->class->vft[COLOR_string__Object__to_s]))(var339) /* to_s on <var339:Array[Object]>*/;
8673 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var342) /* add on <var_test:Array[String]>*/;
8674 var343 = NEW_array__Array(&type_array__Arraystring__String);
8675 ((void (*)(val*))(var343->class->vft[COLOR_array__Array__init]))(var343) /* init on <var343:Array[String]>*/;
8676 var_s = var343;
8677 var344 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
8678 var345 = ((val* (*)(val*))(var344->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(var344) /* box_kinds on <var344:AbstractCompiler(SeparateCompiler)>*/;
8679 var346 = ((val* (*)(val*))(var345->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var345) /* iterator on <var345:HashMap[MClass, Int]>*/;
8680 for(;;) {
8681 var347 = ((short int (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var346) /* is_ok on <var346:MapIterator[Object, nullable Object]>*/;
8682 if(!var347) break;
8683 var348 = ((val* (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__key]))(var346) /* key on <var346:MapIterator[Object, nullable Object]>*/;
8684 var_t = var348;
8685 var349 = ((val* (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__item]))(var346) /* item on <var346:MapIterator[Object, nullable Object]>*/;
8686 var350 = ((struct instance_kernel__Int*)var349)->value; /* autounbox from nullable Object to Int */;
8687 var_v = var350;
8688 if (varonce351) {
8689 var352 = varonce351;
8690 } else {
8691 var353 = "(";
8692 var354 = 1;
8693 var355 = string__NativeString__to_s_with_length(var353, var354);
8694 var352 = var355;
8695 varonce351 = var352;
8696 }
8697 if (varonce356) {
8698 var357 = varonce356;
8699 } else {
8700 var358 = "->class->box_kind == ";
8701 var359 = 21;
8702 var360 = string__NativeString__to_s_with_length(var358, var359);
8703 var357 = var360;
8704 varonce356 = var357;
8705 }
8706 if (varonce361) {
8707 var362 = varonce361;
8708 } else {
8709 var363 = " && ((struct instance_";
8710 var364 = 22;
8711 var365 = string__NativeString__to_s_with_length(var363, var364);
8712 var362 = var365;
8713 varonce361 = var362;
8714 }
8715 var366 = ((val* (*)(val*))(var_t->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_t) /* c_instance_name on <var_t:MClass>*/;
8716 if (varonce367) {
8717 var368 = varonce367;
8718 } else {
8719 var369 = "*)";
8720 var370 = 2;
8721 var371 = string__NativeString__to_s_with_length(var369, var370);
8722 var368 = var371;
8723 varonce367 = var368;
8724 }
8725 if (varonce372) {
8726 var373 = varonce372;
8727 } else {
8728 var374 = ")->value == ((struct instance_";
8729 var375 = 30;
8730 var376 = string__NativeString__to_s_with_length(var374, var375);
8731 var373 = var376;
8732 varonce372 = var373;
8733 }
8734 var377 = ((val* (*)(val*))(var_t->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_t) /* c_instance_name on <var_t:MClass>*/;
8735 if (varonce378) {
8736 var379 = varonce378;
8737 } else {
8738 var380 = "*)";
8739 var381 = 2;
8740 var382 = string__NativeString__to_s_with_length(var380, var381);
8741 var379 = var382;
8742 varonce378 = var379;
8743 }
8744 if (varonce383) {
8745 var384 = varonce383;
8746 } else {
8747 var385 = ")->value)";
8748 var386 = 9;
8749 var387 = string__NativeString__to_s_with_length(var385, var386);
8750 var384 = var387;
8751 varonce383 = var384;
8752 }
8753 var388 = NEW_array__Array(&type_array__Arraykernel__Object);
8754 { /* var388 = array_instance Array[Object] */
8755 var389 = 13;
8756 var390 = NEW_array__NativeArray(var389, &type_array__NativeArraykernel__Object);
8757 ((struct instance_array__NativeArray*)var390)->values[0] = (val*) var352;
8758 ((struct instance_array__NativeArray*)var390)->values[1] = (val*) var_value1;
8759 ((struct instance_array__NativeArray*)var390)->values[2] = (val*) var357;
8760 var391 = BOX_kernel__Int(var_v); /* autobox from Int to Object */
8761 ((struct instance_array__NativeArray*)var390)->values[3] = (val*) var391;
8762 ((struct instance_array__NativeArray*)var390)->values[4] = (val*) var362;
8763 ((struct instance_array__NativeArray*)var390)->values[5] = (val*) var366;
8764 ((struct instance_array__NativeArray*)var390)->values[6] = (val*) var368;
8765 ((struct instance_array__NativeArray*)var390)->values[7] = (val*) var_value1;
8766 ((struct instance_array__NativeArray*)var390)->values[8] = (val*) var373;
8767 ((struct instance_array__NativeArray*)var390)->values[9] = (val*) var377;
8768 ((struct instance_array__NativeArray*)var390)->values[10] = (val*) var379;
8769 ((struct instance_array__NativeArray*)var390)->values[11] = (val*) var_value2;
8770 ((struct instance_array__NativeArray*)var390)->values[12] = (val*) var384;
8771 ((void (*)(val*, val*, long))(var388->class->vft[COLOR_array__Array__with_native]))(var388, var390, var389) /* with_native on <var388:Array[Object]>*/;
8772 }
8773 var392 = ((val* (*)(val*))(var388->class->vft[COLOR_string__Object__to_s]))(var388) /* to_s on <var388:Array[Object]>*/;
8774 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var392) /* add on <var_s:Array[String]>*/;
8775 CONTINUE_label: (void)0;
8776 ((void (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__next]))(var346) /* next on <var346:MapIterator[Object, nullable Object]>*/;
8777 }
8778 BREAK_label: (void)0;
8779 if (varonce393) {
8780 var394 = varonce393;
8781 } else {
8782 var395 = "(";
8783 var396 = 1;
8784 var397 = string__NativeString__to_s_with_length(var395, var396);
8785 var394 = var397;
8786 varonce393 = var394;
8787 }
8788 if (varonce398) {
8789 var399 = varonce398;
8790 } else {
8791 var400 = " || ";
8792 var401 = 4;
8793 var402 = string__NativeString__to_s_with_length(var400, var401);
8794 var399 = var402;
8795 varonce398 = var399;
8796 }
8797 var403 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__Collection__join]))(var_s, var399) /* join on <var_s:Array[String]>*/;
8798 if (varonce404) {
8799 var405 = varonce404;
8800 } else {
8801 var406 = ")";
8802 var407 = 1;
8803 var408 = string__NativeString__to_s_with_length(var406, var407);
8804 var405 = var408;
8805 varonce404 = var405;
8806 }
8807 var409 = NEW_array__Array(&type_array__Arraykernel__Object);
8808 { /* var409 = array_instance Array[Object] */
8809 var410 = 3;
8810 var411 = NEW_array__NativeArray(var410, &type_array__NativeArraykernel__Object);
8811 ((struct instance_array__NativeArray*)var411)->values[0] = (val*) var394;
8812 ((struct instance_array__NativeArray*)var411)->values[1] = (val*) var403;
8813 ((struct instance_array__NativeArray*)var411)->values[2] = (val*) var405;
8814 ((void (*)(val*, val*, long))(var409->class->vft[COLOR_array__Array__with_native]))(var409, var411, var410) /* with_native on <var409:Array[Object]>*/;
8815 }
8816 var412 = ((val* (*)(val*))(var409->class->vft[COLOR_string__Object__to_s]))(var409) /* to_s on <var409:Array[Object]>*/;
8817 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var412) /* add on <var_test:Array[String]>*/;
8818 } else {
8819 if (varonce413) {
8820 var414 = varonce413;
8821 } else {
8822 var415 = " = ";
8823 var416 = 3;
8824 var417 = string__NativeString__to_s_with_length(var415, var416);
8825 var414 = var417;
8826 varonce413 = var414;
8827 }
8828 if (varonce418) {
8829 var419 = varonce418;
8830 } else {
8831 var420 = " == ";
8832 var421 = 4;
8833 var422 = string__NativeString__to_s_with_length(var420, var421);
8834 var419 = var422;
8835 varonce418 = var419;
8836 }
8837 if (varonce423) {
8838 var424 = varonce423;
8839 } else {
8840 var425 = ";";
8841 var426 = 1;
8842 var427 = string__NativeString__to_s_with_length(var425, var426);
8843 var424 = var427;
8844 varonce423 = var424;
8845 }
8846 var428 = NEW_array__Array(&type_array__Arraykernel__Object);
8847 { /* var428 = array_instance Array[Object] */
8848 var429 = 6;
8849 var430 = NEW_array__NativeArray(var429, &type_array__NativeArraykernel__Object);
8850 ((struct instance_array__NativeArray*)var430)->values[0] = (val*) var_res;
8851 ((struct instance_array__NativeArray*)var430)->values[1] = (val*) var414;
8852 ((struct instance_array__NativeArray*)var430)->values[2] = (val*) var_value1;
8853 ((struct instance_array__NativeArray*)var430)->values[3] = (val*) var419;
8854 ((struct instance_array__NativeArray*)var430)->values[4] = (val*) var_value2;
8855 ((struct instance_array__NativeArray*)var430)->values[5] = (val*) var424;
8856 ((void (*)(val*, val*, long))(var428->class->vft[COLOR_array__Array__with_native]))(var428, var430, var429) /* with_native on <var428:Array[Object]>*/;
8857 }
8858 var431 = ((val* (*)(val*))(var428->class->vft[COLOR_string__Object__to_s]))(var428) /* to_s on <var428:Array[Object]>*/;
8859 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var431) /* add on <self:SeparateCompilerVisitor>*/;
8860 var = var_res;
8861 goto RET_LABEL;
8862 }
8863 }
8864 if (varonce432) {
8865 var433 = varonce432;
8866 } else {
8867 var434 = " = ";
8868 var435 = 3;
8869 var436 = string__NativeString__to_s_with_length(var434, var435);
8870 var433 = var436;
8871 varonce432 = var433;
8872 }
8873 if (varonce437) {
8874 var438 = varonce437;
8875 } else {
8876 var439 = " == ";
8877 var440 = 4;
8878 var441 = string__NativeString__to_s_with_length(var439, var440);
8879 var438 = var441;
8880 varonce437 = var438;
8881 }
8882 if (varonce442) {
8883 var443 = varonce442;
8884 } else {
8885 var444 = " || (";
8886 var445 = 5;
8887 var446 = string__NativeString__to_s_with_length(var444, var445);
8888 var443 = var446;
8889 varonce442 = var443;
8890 }
8891 if (varonce447) {
8892 var448 = varonce447;
8893 } else {
8894 var449 = " && ";
8895 var450 = 4;
8896 var451 = string__NativeString__to_s_with_length(var449, var450);
8897 var448 = var451;
8898 varonce447 = var448;
8899 }
8900 var452 = ((val* (*)(val*, val*))(var_test->class->vft[COLOR_string__Collection__join]))(var_test, var448) /* join on <var_test:Array[String]>*/;
8901 if (varonce453) {
8902 var454 = varonce453;
8903 } else {
8904 var455 = ");";
8905 var456 = 2;
8906 var457 = string__NativeString__to_s_with_length(var455, var456);
8907 var454 = var457;
8908 varonce453 = var454;
8909 }
8910 var458 = NEW_array__Array(&type_array__Arraykernel__Object);
8911 { /* var458 = array_instance Array[Object] */
8912 var459 = 8;
8913 var460 = NEW_array__NativeArray(var459, &type_array__NativeArraykernel__Object);
8914 ((struct instance_array__NativeArray*)var460)->values[0] = (val*) var_res;
8915 ((struct instance_array__NativeArray*)var460)->values[1] = (val*) var433;
8916 ((struct instance_array__NativeArray*)var460)->values[2] = (val*) var_value1;
8917 ((struct instance_array__NativeArray*)var460)->values[3] = (val*) var438;
8918 ((struct instance_array__NativeArray*)var460)->values[4] = (val*) var_value2;
8919 ((struct instance_array__NativeArray*)var460)->values[5] = (val*) var443;
8920 ((struct instance_array__NativeArray*)var460)->values[6] = (val*) var452;
8921 ((struct instance_array__NativeArray*)var460)->values[7] = (val*) var454;
8922 ((void (*)(val*, val*, long))(var458->class->vft[COLOR_array__Array__with_native]))(var458, var460, var459) /* with_native on <var458:Array[Object]>*/;
8923 }
8924 var461 = ((val* (*)(val*))(var458->class->vft[COLOR_string__Object__to_s]))(var458) /* to_s on <var458:Array[Object]>*/;
8925 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var461) /* add on <self:SeparateCompilerVisitor>*/;
8926 var = var_res;
8927 goto RET_LABEL;
8928 RET_LABEL:;
8929 return var;
8930 }
8931 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8932 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
8933 val* var /* : RuntimeVariable */;
8934 val* var1 /* : RuntimeVariable */;
8935 var1 = separate_compiler__SeparateCompilerVisitor__equal_test(self, p0, p1);
8936 var = var1;
8937 RET_LABEL:;
8938 return var;
8939 }
8940 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
8941 short int separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
8942 short int var /* : Bool */;
8943 val* var_value /* var value: RuntimeVariable */;
8944 val* var1 /* : MType */;
8945 val* var_t /* var t: MType */;
8946 short int var2 /* : Bool */;
8947 int cltype;
8948 int idtype;
8949 val* var3 /* : MType */;
8950 short int var4 /* : Bool */;
8951 int cltype5;
8952 int idtype6;
8953 short int var7 /* : Bool */;
8954 short int var8 /* : Bool */;
8955 val* var9 /* : MClass */;
8956 val* var10 /* : MClassKind */;
8957 val* var_k /* var k: MClassKind */;
8958 short int var11 /* : Bool */;
8959 val* var12 /* : MClassKind */;
8960 short int var13 /* : Bool */;
8961 short int var_ /* var : Bool */;
8962 val* var14 /* : String */;
8963 static val* varonce;
8964 val* var15 /* : String */;
8965 char* var16 /* : NativeString */;
8966 long var17 /* : Int */;
8967 val* var18 /* : String */;
8968 short int var19 /* : Bool */;
8969 var_value = p0;
8970 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
8971 var_t = var1;
8972 /* <var_t:MType> isa MNullableType */
8973 cltype = type_model__MNullableType.color;
8974 idtype = type_model__MNullableType.id;
8975 if(cltype >= var_t->type->table_size) {
8976 var2 = 0;
8977 } else {
8978 var2 = var_t->type->type_table[cltype] == idtype;
8979 }
8980 if (var2){
8981 var3 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MNullableType__mtype]))(var_t) /* mtype on <var_t:MType(MNullableType)>*/;
8982 var_t = var3;
8983 } else {
8984 }
8985 /* <var_t:MType> isa MClassType */
8986 cltype5 = type_model__MClassType.color;
8987 idtype6 = type_model__MClassType.id;
8988 if(cltype5 >= var_t->type->table_size) {
8989 var4 = 0;
8990 } else {
8991 var4 = var_t->type->type_table[cltype5] == idtype6;
8992 }
8993 var7 = !var4;
8994 if (var7){
8995 var8 = 0;
8996 var = var8;
8997 goto RET_LABEL;
8998 } else {
8999 }
9000 var9 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__mclass]))(var_t) /* mclass on <var_t:MType(MClassType)>*/;
9001 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MClass__kind]))(var9) /* kind on <var9:MClass>*/;
9002 var_k = var10;
9003 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:SeparateCompilerVisitor>*/;
9004 var13 = ((short int (*)(val*, val*))(var_k->class->vft[COLOR_kernel__Object___61d_61d]))(var_k, var12) /* == on <var_k:MClassKind>*/;
9005 var_ = var13;
9006 if (var13){
9007 var11 = var_;
9008 } else {
9009 var14 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType(MClassType)>*/;
9010 if (varonce) {
9011 var15 = varonce;
9012 } else {
9013 var16 = "val*";
9014 var17 = 4;
9015 var18 = string__NativeString__to_s_with_length(var16, var17);
9016 var15 = var18;
9017 varonce = var15;
9018 }
9019 var19 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___33d_61d]))(var14, var15) /* != on <var14:String>*/;
9020 var11 = var19;
9021 }
9022 var = var11;
9023 goto RET_LABEL;
9024 RET_LABEL:;
9025 return var;
9026 }
9027 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: Object, RuntimeVariable): Bool */
9028 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
9029 short int var /* : Bool */;
9030 short int var1 /* : Bool */;
9031 var1 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, p0);
9032 var = var1;
9033 RET_LABEL:;
9034 return var;
9035 }
9036 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
9037 short int separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
9038 short int var /* : Bool */;
9039 val* var_value /* var value: RuntimeVariable */;
9040 val* var1 /* : MType */;
9041 val* var_t /* var t: MType */;
9042 short int var2 /* : Bool */;
9043 short int var3 /* : Bool */;
9044 int cltype;
9045 int idtype;
9046 short int var_ /* var : Bool */;
9047 short int var4 /* : Bool */;
9048 int cltype5;
9049 int idtype6;
9050 var_value = p0;
9051 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
9052 var_t = var1;
9053 /* <var_t:MType> isa MNullableType */
9054 cltype = type_model__MNullableType.color;
9055 idtype = type_model__MNullableType.id;
9056 if(cltype >= var_t->type->table_size) {
9057 var3 = 0;
9058 } else {
9059 var3 = var_t->type->type_table[cltype] == idtype;
9060 }
9061 var_ = var3;
9062 if (var3){
9063 var2 = var_;
9064 } else {
9065 /* <var_t:MType> isa MNullType */
9066 cltype5 = type_model__MNullType.color;
9067 idtype6 = type_model__MNullType.id;
9068 if(cltype5 >= var_t->type->table_size) {
9069 var4 = 0;
9070 } else {
9071 var4 = var_t->type->type_table[cltype5] == idtype6;
9072 }
9073 var2 = var4;
9074 }
9075 var = var2;
9076 goto RET_LABEL;
9077 RET_LABEL:;
9078 return var;
9079 }
9080 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: Object, RuntimeVariable): Bool */
9081 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
9082 short int var /* : Bool */;
9083 short int var1 /* : Bool */;
9084 var1 = separate_compiler__SeparateCompilerVisitor__maybe_null(self, p0);
9085 var = var1;
9086 RET_LABEL:;
9087 return var;
9088 }
9089 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: SeparateCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
9090 val* separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
9091 val* var /* : RuntimeVariable */;
9092 val* var_array /* var array: Array[RuntimeVariable] */;
9093 val* var_elttype /* var elttype: MType */;
9094 static val* varonce;
9095 val* var1 /* : String */;
9096 char* var2 /* : NativeString */;
9097 long var3 /* : Int */;
9098 val* var4 /* : String */;
9099 val* var5 /* : MClass */;
9100 val* var_nclass /* var nclass: MClass */;
9101 static val* varonce6;
9102 val* var7 /* : String */;
9103 char* var8 /* : NativeString */;
9104 long var9 /* : Int */;
9105 val* var10 /* : String */;
9106 val* var11 /* : MClass */;
9107 val* var_arrayclass /* var arrayclass: MClass */;
9108 val* var12 /* : Array[MType] */;
9109 long var13 /* : Int */;
9110 val* var14 /* : NativeArray[MType] */;
9111 val* var15 /* : MClassType */;
9112 val* var_arraytype /* var arraytype: MClassType */;
9113 val* var16 /* : RuntimeVariable */;
9114 val* var_res /* var res: RuntimeVariable */;
9115 static val* varonce17;
9116 val* var18 /* : String */;
9117 char* var19 /* : NativeString */;
9118 long var20 /* : Int */;
9119 val* var21 /* : String */;
9120 static val* varonce22;
9121 val* var23 /* : String */;
9122 char* var24 /* : NativeString */;
9123 long var25 /* : Int */;
9124 val* var26 /* : String */;
9125 static val* varonce27;
9126 val* var28 /* : String */;
9127 char* var29 /* : NativeString */;
9128 long var30 /* : Int */;
9129 val* var31 /* : String */;
9130 val* var32 /* : Array[Object] */;
9131 long var33 /* : Int */;
9132 val* var34 /* : NativeArray[Object] */;
9133 val* var35 /* : String */;
9134 long var36 /* : Int */;
9135 val* var37 /* : RuntimeVariable */;
9136 val* var_length /* var length: RuntimeVariable */;
9137 val* var38 /* : RuntimeVariable */;
9138 val* var_nat /* var nat: RuntimeVariable */;
9139 val* var39 /* : Range[Int] */;
9140 long var40 /* : Int */;
9141 long var41 /* : Int */;
9142 val* var42 /* : Discrete */;
9143 val* var43 /* : Discrete */;
9144 val* var44 /* : Iterator[nullable Object] */;
9145 short int var45 /* : Bool */;
9146 val* var46 /* : nullable Object */;
9147 long var_i /* var i: Int */;
9148 long var47 /* : Int */;
9149 val* var48 /* : nullable Object */;
9150 val* var49 /* : MClassType */;
9151 val* var50 /* : RuntimeVariable */;
9152 val* var_r /* var r: RuntimeVariable */;
9153 static val* varonce51;
9154 val* var52 /* : String */;
9155 char* var53 /* : NativeString */;
9156 long var54 /* : Int */;
9157 val* var55 /* : String */;
9158 val* var56 /* : String */;
9159 static val* varonce57;
9160 val* var58 /* : String */;
9161 char* var59 /* : NativeString */;
9162 long var60 /* : Int */;
9163 val* var61 /* : String */;
9164 static val* varonce62;
9165 val* var63 /* : String */;
9166 char* var64 /* : NativeString */;
9167 long var65 /* : Int */;
9168 val* var66 /* : String */;
9169 static val* varonce67;
9170 val* var68 /* : String */;
9171 char* var69 /* : NativeString */;
9172 long var70 /* : Int */;
9173 val* var71 /* : String */;
9174 static val* varonce72;
9175 val* var73 /* : String */;
9176 char* var74 /* : NativeString */;
9177 long var75 /* : Int */;
9178 val* var76 /* : String */;
9179 val* var77 /* : Array[Object] */;
9180 long var78 /* : Int */;
9181 val* var79 /* : NativeArray[Object] */;
9182 val* var80 /* : Object */;
9183 val* var81 /* : String */;
9184 static val* varonce82;
9185 val* var83 /* : String */;
9186 char* var84 /* : NativeString */;
9187 long var85 /* : Int */;
9188 val* var86 /* : String */;
9189 val* var87 /* : MClassDef */;
9190 val* var88 /* : MClassType */;
9191 val* var89 /* : MMethod */;
9192 val* var90 /* : Array[RuntimeVariable] */;
9193 long var91 /* : Int */;
9194 val* var92 /* : NativeArray[RuntimeVariable] */;
9195 val* var93 /* : nullable RuntimeVariable */;
9196 static val* varonce94;
9197 val* var95 /* : String */;
9198 char* var96 /* : NativeString */;
9199 long var97 /* : Int */;
9200 val* var98 /* : String */;
9201 var_array = p0;
9202 var_elttype = p1;
9203 if (varonce) {
9204 var1 = varonce;
9205 } else {
9206 var2 = "NativeArray";
9207 var3 = 11;
9208 var4 = string__NativeString__to_s_with_length(var2, var3);
9209 var1 = var4;
9210 varonce = var1;
9211 }
9212 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:SeparateCompilerVisitor>*/;
9213 var_nclass = var5;
9214 if (varonce6) {
9215 var7 = varonce6;
9216 } else {
9217 var8 = "Array";
9218 var9 = 5;
9219 var10 = string__NativeString__to_s_with_length(var8, var9);
9220 var7 = var10;
9221 varonce6 = var7;
9222 }
9223 var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var7) /* get_class on <self:SeparateCompilerVisitor>*/;
9224 var_arrayclass = var11;
9225 var12 = NEW_array__Array(&type_array__Arraymodel__MType);
9226 { /* var12 = array_instance Array[MType] */
9227 var13 = 1;
9228 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraymodel__MType);
9229 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var_elttype;
9230 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[MType]>*/;
9231 }
9232 var15 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var12) /* get_mtype on <var_arrayclass:MClass>*/;
9233 var_arraytype = var15;
9234 var16 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_arraytype) /* init_instance on <self:SeparateCompilerVisitor>*/;
9235 var_res = var16;
9236 if (varonce17) {
9237 var18 = varonce17;
9238 } else {
9239 var19 = "{ /* ";
9240 var20 = 5;
9241 var21 = string__NativeString__to_s_with_length(var19, var20);
9242 var18 = var21;
9243 varonce17 = var18;
9244 }
9245 if (varonce22) {
9246 var23 = varonce22;
9247 } else {
9248 var24 = " = array_instance Array[";
9249 var25 = 24;
9250 var26 = string__NativeString__to_s_with_length(var24, var25);
9251 var23 = var26;
9252 varonce22 = var23;
9253 }
9254 if (varonce27) {
9255 var28 = varonce27;
9256 } else {
9257 var29 = "] */";
9258 var30 = 4;
9259 var31 = string__NativeString__to_s_with_length(var29, var30);
9260 var28 = var31;
9261 varonce27 = var28;
9262 }
9263 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9264 { /* var32 = array_instance Array[Object] */
9265 var33 = 5;
9266 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
9267 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var18;
9268 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_res;
9269 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
9270 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_elttype;
9271 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
9272 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
9273 }
9274 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
9275 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var35) /* add on <self:SeparateCompilerVisitor>*/;
9276 var36 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
9277 var37 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance]))(self, var36) /* int_instance on <self:SeparateCompilerVisitor>*/;
9278 var_length = var37;
9279 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>*/;
9280 var_nat = var38;
9281 var39 = NEW_range__Range(&type_range__Rangekernel__Int);
9282 var40 = 0;
9283 var41 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
9284 var42 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
9285 var43 = BOX_kernel__Int(var41); /* autobox from Int to Discrete */
9286 ((void (*)(val*, val*, val*))(var39->class->vft[COLOR_range__Range__without_last]))(var39, var42, var43) /* without_last on <var39:Range[Int]>*/;
9287 var44 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Range[Int]>*/;
9288 for(;;) {
9289 var45 = ((short int (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var44) /* is_ok on <var44:Iterator[nullable Object]>*/;
9290 if(!var45) break;
9291 var46 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__item]))(var44) /* item on <var44:Iterator[nullable Object]>*/;
9292 var47 = ((struct instance_kernel__Int*)var46)->value; /* autounbox from nullable Object to Int */;
9293 var_i = var47;
9294 var48 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[RuntimeVariable]>*/;
9295 var49 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
9296 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var48, var49) /* autobox on <self:SeparateCompilerVisitor>*/;
9297 var_r = var50;
9298 if (varonce51) {
9299 var52 = varonce51;
9300 } else {
9301 var53 = "((struct instance_";
9302 var54 = 18;
9303 var55 = string__NativeString__to_s_with_length(var53, var54);
9304 var52 = var55;
9305 varonce51 = var52;
9306 }
9307 var56 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
9308 if (varonce57) {
9309 var58 = varonce57;
9310 } else {
9311 var59 = "*)";
9312 var60 = 2;
9313 var61 = string__NativeString__to_s_with_length(var59, var60);
9314 var58 = var61;
9315 varonce57 = var58;
9316 }
9317 if (varonce62) {
9318 var63 = varonce62;
9319 } else {
9320 var64 = ")->values[";
9321 var65 = 10;
9322 var66 = string__NativeString__to_s_with_length(var64, var65);
9323 var63 = var66;
9324 varonce62 = var63;
9325 }
9326 if (varonce67) {
9327 var68 = varonce67;
9328 } else {
9329 var69 = "] = (val*) ";
9330 var70 = 11;
9331 var71 = string__NativeString__to_s_with_length(var69, var70);
9332 var68 = var71;
9333 varonce67 = var68;
9334 }
9335 if (varonce72) {
9336 var73 = varonce72;
9337 } else {
9338 var74 = ";";
9339 var75 = 1;
9340 var76 = string__NativeString__to_s_with_length(var74, var75);
9341 var73 = var76;
9342 varonce72 = var73;
9343 }
9344 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
9345 { /* var77 = array_instance Array[Object] */
9346 var78 = 9;
9347 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
9348 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var52;
9349 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var56;
9350 ((struct instance_array__NativeArray*)var79)->values[2] = (val*) var58;
9351 ((struct instance_array__NativeArray*)var79)->values[3] = (val*) var_nat;
9352 ((struct instance_array__NativeArray*)var79)->values[4] = (val*) var63;
9353 var80 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
9354 ((struct instance_array__NativeArray*)var79)->values[5] = (val*) var80;
9355 ((struct instance_array__NativeArray*)var79)->values[6] = (val*) var68;
9356 ((struct instance_array__NativeArray*)var79)->values[7] = (val*) var_r;
9357 ((struct instance_array__NativeArray*)var79)->values[8] = (val*) var73;
9358 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
9359 }
9360 var81 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
9361 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var81) /* add on <self:SeparateCompilerVisitor>*/;
9362 CONTINUE_label: (void)0;
9363 ((void (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__next]))(var44) /* next on <var44:Iterator[nullable Object]>*/;
9364 }
9365 BREAK_label: (void)0;
9366 if (varonce82) {
9367 var83 = varonce82;
9368 } else {
9369 var84 = "with_native";
9370 var85 = 11;
9371 var86 = string__NativeString__to_s_with_length(var84, var85);
9372 var83 = var86;
9373 varonce82 = var83;
9374 }
9375 var87 = ((val* (*)(val*))(var_arrayclass->class->vft[COLOR_model__MClass__intro]))(var_arrayclass) /* intro on <var_arrayclass:MClass>*/;
9376 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MClassDef__bound_mtype]))(var87) /* bound_mtype on <var87:MClassDef>*/;
9377 var89 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(self, var83, var88) /* get_property on <self:SeparateCompilerVisitor>*/;
9378 var90 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
9379 { /* var90 = array_instance Array[RuntimeVariable] */
9380 var91 = 3;
9381 var92 = NEW_array__NativeArray(var91, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
9382 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_res;
9383 ((struct instance_array__NativeArray*)var92)->values[1] = (val*) var_nat;
9384 ((struct instance_array__NativeArray*)var92)->values[2] = (val*) var_length;
9385 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[RuntimeVariable]>*/;
9386 }
9387 var93 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var89, var90) /* send on <self:SeparateCompilerVisitor>*/;
9388 var93;
9389 if (varonce94) {
9390 var95 = varonce94;
9391 } else {
9392 var96 = "}";
9393 var97 = 1;
9394 var98 = string__NativeString__to_s_with_length(var96, var97);
9395 var95 = var98;
9396 varonce94 = var95;
9397 }
9398 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var95) /* add on <self:SeparateCompilerVisitor>*/;
9399 var = var_res;
9400 goto RET_LABEL;
9401 RET_LABEL:;
9402 return var;
9403 }
9404 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
9405 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
9406 val* var /* : RuntimeVariable */;
9407 val* var1 /* : RuntimeVariable */;
9408 var1 = separate_compiler__SeparateCompilerVisitor__array_instance(self, p0, p1);
9409 var = var1;
9410 RET_LABEL:;
9411 return var;
9412 }
9413 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: SeparateCompilerVisitor, MType, RuntimeVariable): RuntimeVariable */
9414 val* separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
9415 val* var /* : RuntimeVariable */;
9416 val* var_elttype /* var elttype: MType */;
9417 val* var_length /* var length: RuntimeVariable */;
9418 static val* varonce;
9419 val* var1 /* : String */;
9420 char* var2 /* : NativeString */;
9421 long var3 /* : Int */;
9422 val* var4 /* : String */;
9423 val* var5 /* : MClass */;
9424 val* var6 /* : Array[MType] */;
9425 long var7 /* : Int */;
9426 val* var8 /* : NativeArray[MType] */;
9427 val* var9 /* : MClassType */;
9428 val* var_mtype /* var mtype: MClassType */;
9429 static val* varonce10;
9430 val* var11 /* : String */;
9431 char* var12 /* : NativeString */;
9432 long var13 /* : Int */;
9433 val* var14 /* : String */;
9434 val* var15 /* : MClass */;
9435 val* var16 /* : String */;
9436 val* var17 /* : Array[Object] */;
9437 long var18 /* : Int */;
9438 val* var19 /* : NativeArray[Object] */;
9439 val* var20 /* : String */;
9440 short int var21 /* : Bool */;
9441 int cltype;
9442 int idtype;
9443 val* var22 /* : AbstractCompiler */;
9444 val* var_compiler /* var compiler: SeparateCompiler */;
9445 short int var23 /* : Bool */;
9446 val* var24 /* : nullable Frame */;
9447 val* var25 /* : MPropDef */;
9448 val* var26 /* : MClassDef */;
9449 val* var27 /* : nullable Frame */;
9450 val* var28 /* : Array[RuntimeVariable] */;
9451 val* var29 /* : nullable Object */;
9452 val* var_recv /* var recv: RuntimeVariable */;
9453 val* var30 /* : String */;
9454 val* var_recv_type_info /* var recv_type_info: String */;
9455 val* var31 /* : String */;
9456 short int var32 /* : Bool */;
9457 val* var33 /* : ModelBuilder */;
9458 val* var34 /* : ToolContext */;
9459 val* var35 /* : OptionBool */;
9460 val* var36 /* : nullable Object */;
9461 short int var37 /* : Bool */;
9462 short int var_ /* var : Bool */;
9463 val* var38 /* : ModelBuilder */;
9464 val* var39 /* : ToolContext */;
9465 val* var40 /* : OptionBool */;
9466 val* var41 /* : nullable Object */;
9467 short int var42 /* : Bool */;
9468 static val* varonce43;
9469 val* var44 /* : String */;
9470 char* var45 /* : NativeString */;
9471 long var46 /* : Int */;
9472 val* var47 /* : String */;
9473 val* var48 /* : MClass */;
9474 val* var49 /* : String */;
9475 static val* varonce50;
9476 val* var51 /* : String */;
9477 char* var52 /* : NativeString */;
9478 long var53 /* : Int */;
9479 val* var54 /* : String */;
9480 static val* varonce55;
9481 val* var56 /* : String */;
9482 char* var57 /* : NativeString */;
9483 long var58 /* : Int */;
9484 val* var59 /* : String */;
9485 static val* varonce60;
9486 val* var61 /* : String */;
9487 char* var62 /* : NativeString */;
9488 long var63 /* : Int */;
9489 val* var64 /* : String */;
9490 static val* varonce65;
9491 val* var66 /* : String */;
9492 char* var67 /* : NativeString */;
9493 long var68 /* : Int */;
9494 val* var69 /* : String */;
9495 val* var70 /* : String */;
9496 static val* varonce71;
9497 val* var72 /* : String */;
9498 char* var73 /* : NativeString */;
9499 long var74 /* : Int */;
9500 val* var75 /* : String */;
9501 val* var76 /* : Array[Object] */;
9502 long var77 /* : Int */;
9503 val* var78 /* : NativeArray[Object] */;
9504 val* var79 /* : String */;
9505 val* var80 /* : RuntimeVariable */;
9506 static val* varonce81;
9507 val* var82 /* : String */;
9508 char* var83 /* : NativeString */;
9509 long var84 /* : Int */;
9510 val* var85 /* : String */;
9511 val* var86 /* : MClass */;
9512 val* var87 /* : String */;
9513 static val* varonce88;
9514 val* var89 /* : String */;
9515 char* var90 /* : NativeString */;
9516 long var91 /* : Int */;
9517 val* var92 /* : String */;
9518 static val* varonce93;
9519 val* var94 /* : String */;
9520 char* var95 /* : NativeString */;
9521 long var96 /* : Int */;
9522 val* var97 /* : String */;
9523 static val* varonce98;
9524 val* var99 /* : String */;
9525 char* var100 /* : NativeString */;
9526 long var101 /* : Int */;
9527 val* var102 /* : String */;
9528 val* var103 /* : String */;
9529 static val* varonce104;
9530 val* var105 /* : String */;
9531 char* var106 /* : NativeString */;
9532 long var107 /* : Int */;
9533 val* var108 /* : String */;
9534 val* var109 /* : Array[Object] */;
9535 long var110 /* : Int */;
9536 val* var111 /* : NativeArray[Object] */;
9537 val* var112 /* : String */;
9538 val* var113 /* : RuntimeVariable */;
9539 val* var114 /* : Set[MType] */;
9540 static val* varonce115;
9541 val* var116 /* : String */;
9542 char* var117 /* : NativeString */;
9543 long var118 /* : Int */;
9544 val* var119 /* : String */;
9545 val* var120 /* : String */;
9546 val* var121 /* : Array[Object] */;
9547 long var122 /* : Int */;
9548 val* var123 /* : NativeArray[Object] */;
9549 val* var124 /* : String */;
9550 static val* varonce125;
9551 val* var126 /* : String */;
9552 char* var127 /* : NativeString */;
9553 long var128 /* : Int */;
9554 val* var129 /* : String */;
9555 val* var130 /* : MClass */;
9556 val* var131 /* : String */;
9557 static val* varonce132;
9558 val* var133 /* : String */;
9559 char* var134 /* : NativeString */;
9560 long var135 /* : Int */;
9561 val* var136 /* : String */;
9562 static val* varonce137;
9563 val* var138 /* : String */;
9564 char* var139 /* : NativeString */;
9565 long var140 /* : Int */;
9566 val* var141 /* : String */;
9567 val* var142 /* : String */;
9568 static val* varonce143;
9569 val* var144 /* : String */;
9570 char* var145 /* : NativeString */;
9571 long var146 /* : Int */;
9572 val* var147 /* : String */;
9573 val* var148 /* : Array[Object] */;
9574 long var149 /* : Int */;
9575 val* var150 /* : NativeArray[Object] */;
9576 val* var151 /* : String */;
9577 val* var152 /* : RuntimeVariable */;
9578 var_elttype = p0;
9579 var_length = p1;
9580 if (varonce) {
9581 var1 = varonce;
9582 } else {
9583 var2 = "NativeArray";
9584 var3 = 11;
9585 var4 = string__NativeString__to_s_with_length(var2, var3);
9586 var1 = var4;
9587 varonce = var1;
9588 }
9589 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:SeparateCompilerVisitor>*/;
9590 var6 = NEW_array__Array(&type_array__Arraymodel__MType);
9591 { /* var6 = array_instance Array[MType] */
9592 var7 = 1;
9593 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraymodel__MType);
9594 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var_elttype;
9595 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[MType]>*/;
9596 }
9597 var9 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_model__MClass__get_mtype]))(var5, var6) /* get_mtype on <var5:MClass>*/;
9598 var_mtype = var9;
9599 if (varonce10) {
9600 var11 = varonce10;
9601 } else {
9602 var12 = "NEW_";
9603 var13 = 4;
9604 var14 = string__NativeString__to_s_with_length(var12, var13);
9605 var11 = var14;
9606 varonce10 = var11;
9607 }
9608 var15 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
9609 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var15) /* c_name on <var15:MClass>*/;
9610 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
9611 { /* var17 = array_instance Array[Object] */
9612 var18 = 2;
9613 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
9614 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var11;
9615 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var16;
9616 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
9617 }
9618 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
9619 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var20) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9620 /* <var_mtype:MClassType> isa MGenericType */
9621 cltype = type_model__MGenericType.color;
9622 idtype = type_model__MGenericType.id;
9623 if(cltype >= var_mtype->type->table_size) {
9624 var21 = 0;
9625 } else {
9626 var21 = var_mtype->type->type_table[cltype] == idtype;
9627 }
9628 if (!var21) {
9629 fprintf(stderr, "Runtime error: %s", "Assert failed");
9630 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1598);
9631 show_backtrace(1);
9632 }
9633 var22 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9634 var_compiler = var22;
9635 var23 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType(MGenericType)>*/;
9636 if (var23){
9637 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__hardening_live_open_type]))(self, var_mtype) /* hardening_live_open_type on <self:SeparateCompilerVisitor>*/;
9638 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9639 if (var24 == NULL) {
9640 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9641 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1602);
9642 show_backtrace(1);
9643 } else {
9644 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var24) /* mpropdef on <var24:nullable Frame>*/;
9645 }
9646 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_model__MPropDef__mclassdef]))(var25) /* mclassdef on <var25:MPropDef>*/;
9647 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var26, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
9648 var27 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9649 if (var27 == NULL) {
9650 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9651 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1603);
9652 show_backtrace(1);
9653 } else {
9654 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var27) /* arguments on <var27:nullable Frame>*/;
9655 }
9656 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__first]))(var28) /* first on <var28:Array[RuntimeVariable]>*/;
9657 var_recv = var29;
9658 var30 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
9659 var_recv_type_info = var30;
9660 var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
9661 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var31) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9662 var33 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
9663 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var33) /* toolcontext on <var33:ModelBuilder>*/;
9664 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var34) /* opt_phmod_typing on <var34:ToolContext>*/;
9665 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_opts__Option__value]))(var35) /* value on <var35:OptionBool>*/;
9666 var37 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
9667 var_ = var37;
9668 if (var37){
9669 var32 = var_;
9670 } else {
9671 var38 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
9672 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var38) /* toolcontext on <var38:ModelBuilder>*/;
9673 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var39) /* opt_phand_typing on <var39:ToolContext>*/;
9674 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_opts__Option__value]))(var40) /* value on <var40:OptionBool>*/;
9675 var42 = ((struct instance_kernel__Bool*)var41)->value; /* autounbox from nullable Object to Bool */;
9676 var32 = var42;
9677 }
9678 if (var32){
9679 if (varonce43) {
9680 var44 = varonce43;
9681 } else {
9682 var45 = "NEW_";
9683 var46 = 4;
9684 var47 = string__NativeString__to_s_with_length(var45, var46);
9685 var44 = var47;
9686 varonce43 = var44;
9687 }
9688 var48 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9689 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var48) /* c_name on <var48:MClass>*/;
9690 if (varonce50) {
9691 var51 = varonce50;
9692 } else {
9693 var52 = "(";
9694 var53 = 1;
9695 var54 = string__NativeString__to_s_with_length(var52, var53);
9696 var51 = var54;
9697 varonce50 = var51;
9698 }
9699 if (varonce55) {
9700 var56 = varonce55;
9701 } else {
9702 var57 = ", ";
9703 var58 = 2;
9704 var59 = string__NativeString__to_s_with_length(var57, var58);
9705 var56 = var59;
9706 varonce55 = var56;
9707 }
9708 if (varonce60) {
9709 var61 = varonce60;
9710 } else {
9711 var62 = "->resolution_table->types[HASH(";
9712 var63 = 31;
9713 var64 = string__NativeString__to_s_with_length(var62, var63);
9714 var61 = var64;
9715 varonce60 = var61;
9716 }
9717 if (varonce65) {
9718 var66 = varonce65;
9719 } else {
9720 var67 = "->resolution_table->mask, ";
9721 var68 = 26;
9722 var69 = string__NativeString__to_s_with_length(var67, var68);
9723 var66 = var69;
9724 varonce65 = var66;
9725 }
9726 var70 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
9727 if (varonce71) {
9728 var72 = varonce71;
9729 } else {
9730 var73 = ")])";
9731 var74 = 3;
9732 var75 = string__NativeString__to_s_with_length(var73, var74);
9733 var72 = var75;
9734 varonce71 = var72;
9735 }
9736 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
9737 { /* var76 = array_instance Array[Object] */
9738 var77 = 11;
9739 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
9740 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var44;
9741 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var49;
9742 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var51;
9743 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var_length;
9744 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var56;
9745 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var_recv_type_info;
9746 ((struct instance_array__NativeArray*)var78)->values[6] = (val*) var61;
9747 ((struct instance_array__NativeArray*)var78)->values[7] = (val*) var_recv_type_info;
9748 ((struct instance_array__NativeArray*)var78)->values[8] = (val*) var66;
9749 ((struct instance_array__NativeArray*)var78)->values[9] = (val*) var70;
9750 ((struct instance_array__NativeArray*)var78)->values[10] = (val*) var72;
9751 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
9752 }
9753 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
9754 var80 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var79, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9755 var = var80;
9756 goto RET_LABEL;
9757 } else {
9758 if (varonce81) {
9759 var82 = varonce81;
9760 } else {
9761 var83 = "NEW_";
9762 var84 = 4;
9763 var85 = string__NativeString__to_s_with_length(var83, var84);
9764 var82 = var85;
9765 varonce81 = var82;
9766 }
9767 var86 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9768 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var86) /* c_name on <var86:MClass>*/;
9769 if (varonce88) {
9770 var89 = varonce88;
9771 } else {
9772 var90 = "(";
9773 var91 = 1;
9774 var92 = string__NativeString__to_s_with_length(var90, var91);
9775 var89 = var92;
9776 varonce88 = var89;
9777 }
9778 if (varonce93) {
9779 var94 = varonce93;
9780 } else {
9781 var95 = ", ";
9782 var96 = 2;
9783 var97 = string__NativeString__to_s_with_length(var95, var96);
9784 var94 = var97;
9785 varonce93 = var94;
9786 }
9787 if (varonce98) {
9788 var99 = varonce98;
9789 } else {
9790 var100 = "->resolution_table->types[";
9791 var101 = 26;
9792 var102 = string__NativeString__to_s_with_length(var100, var101);
9793 var99 = var102;
9794 varonce98 = var99;
9795 }
9796 var103 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
9797 if (varonce104) {
9798 var105 = varonce104;
9799 } else {
9800 var106 = "])";
9801 var107 = 2;
9802 var108 = string__NativeString__to_s_with_length(var106, var107);
9803 var105 = var108;
9804 varonce104 = var105;
9805 }
9806 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
9807 { /* var109 = array_instance Array[Object] */
9808 var110 = 9;
9809 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
9810 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var82;
9811 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var87;
9812 ((struct instance_array__NativeArray*)var111)->values[2] = (val*) var89;
9813 ((struct instance_array__NativeArray*)var111)->values[3] = (val*) var_length;
9814 ((struct instance_array__NativeArray*)var111)->values[4] = (val*) var94;
9815 ((struct instance_array__NativeArray*)var111)->values[5] = (val*) var_recv_type_info;
9816 ((struct instance_array__NativeArray*)var111)->values[6] = (val*) var99;
9817 ((struct instance_array__NativeArray*)var111)->values[7] = (val*) var103;
9818 ((struct instance_array__NativeArray*)var111)->values[8] = (val*) var105;
9819 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
9820 }
9821 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
9822 var113 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var112, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9823 var = var113;
9824 goto RET_LABEL;
9825 }
9826 } else {
9827 }
9828 var114 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
9829 ((void (*)(val*, val*))(var114->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var114, var_mtype) /* add on <var114:Set[MType]>*/;
9830 if (varonce115) {
9831 var116 = varonce115;
9832 } else {
9833 var117 = "type_";
9834 var118 = 5;
9835 var119 = string__NativeString__to_s_with_length(var117, var118);
9836 var116 = var119;
9837 varonce115 = var116;
9838 }
9839 var120 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType(MGenericType)>*/;
9840 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
9841 { /* var121 = array_instance Array[Object] */
9842 var122 = 2;
9843 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
9844 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var116;
9845 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var120;
9846 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
9847 }
9848 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
9849 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var124) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9850 if (varonce125) {
9851 var126 = varonce125;
9852 } else {
9853 var127 = "NEW_";
9854 var128 = 4;
9855 var129 = string__NativeString__to_s_with_length(var127, var128);
9856 var126 = var129;
9857 varonce125 = var126;
9858 }
9859 var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9860 var131 = ((val* (*)(val*))(var130->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var130) /* c_name on <var130:MClass>*/;
9861 if (varonce132) {
9862 var133 = varonce132;
9863 } else {
9864 var134 = "(";
9865 var135 = 1;
9866 var136 = string__NativeString__to_s_with_length(var134, var135);
9867 var133 = var136;
9868 varonce132 = var133;
9869 }
9870 if (varonce137) {
9871 var138 = varonce137;
9872 } else {
9873 var139 = ", &type_";
9874 var140 = 8;
9875 var141 = string__NativeString__to_s_with_length(var139, var140);
9876 var138 = var141;
9877 varonce137 = var138;
9878 }
9879 var142 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType(MGenericType)>*/;
9880 if (varonce143) {
9881 var144 = varonce143;
9882 } else {
9883 var145 = ")";
9884 var146 = 1;
9885 var147 = string__NativeString__to_s_with_length(var145, var146);
9886 var144 = var147;
9887 varonce143 = var144;
9888 }
9889 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
9890 { /* var148 = array_instance Array[Object] */
9891 var149 = 7;
9892 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
9893 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var126;
9894 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var131;
9895 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
9896 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_length;
9897 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
9898 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var142;
9899 ((struct instance_array__NativeArray*)var150)->values[6] = (val*) var144;
9900 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
9901 }
9902 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
9903 var152 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var151, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9904 var = var152;
9905 goto RET_LABEL;
9906 RET_LABEL:;
9907 return var;
9908 }
9909 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: Object, MType, RuntimeVariable): RuntimeVariable */
9910 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
9911 val* var /* : RuntimeVariable */;
9912 val* var1 /* : RuntimeVariable */;
9913 var1 = separate_compiler__SeparateCompilerVisitor__native_array_instance(self, p0, p1);
9914 var = var1;
9915 RET_LABEL:;
9916 return var;
9917 }