nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / separate_compiler.sep.4.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: SeparateCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
3 val* separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
4 val* var /* : RuntimeVariable */;
5 val* var_value /* var value: RuntimeVariable */;
6 val* var_mtype /* var mtype: MType */;
7 val* var_tag /* var tag: String */;
8 static val* varonce;
9 val* var1 /* : String */;
10 char* var2 /* : NativeString */;
11 long var3 /* : Int */;
12 val* var4 /* : FlatString */;
13 val* var5 /* : String */;
14 static val* varonce6;
15 val* var7 /* : String */;
16 char* var8 /* : NativeString */;
17 long var9 /* : Int */;
18 val* var10 /* : FlatString */;
19 static val* varonce11;
20 val* var12 /* : String */;
21 char* var13 /* : NativeString */;
22 long var14 /* : Int */;
23 val* var15 /* : FlatString */;
24 val* var16 /* : Array[Object] */;
25 long var17 /* : Int */;
26 val* var18 /* : NativeArray[Object] */;
27 val* var19 /* : String */;
28 val* var20 /* : AbstractCompiler */;
29 val* var22 /* : AbstractCompiler */;
30 val* var_compiler /* var compiler: SeparateCompiler */;
31 val* var23 /* : nullable Frame */;
32 val* var25 /* : nullable Frame */;
33 val* var26 /* : Array[RuntimeVariable] */;
34 val* var28 /* : Array[RuntimeVariable] */;
35 val* var29 /* : nullable Object */;
36 val* var_recv /* var recv: RuntimeVariable */;
37 val* var30 /* : String */;
38 val* var_recv_type_info /* var recv_type_info: String */;
39 val* var31 /* : MClassType */;
40 val* var32 /* : RuntimeVariable */;
41 val* var_res /* var res: RuntimeVariable */;
42 static val* varonce33;
43 val* var34 /* : String */;
44 char* var35 /* : NativeString */;
45 long var36 /* : Int */;
46 val* var37 /* : FlatString */;
47 val* var38 /* : String */;
48 val* var_cltype /* var cltype: String */;
49 static val* varonce39;
50 val* var40 /* : String */;
51 char* var41 /* : NativeString */;
52 long var42 /* : Int */;
53 val* var43 /* : FlatString */;
54 static val* varonce44;
55 val* var45 /* : String */;
56 char* var46 /* : NativeString */;
57 long var47 /* : Int */;
58 val* var48 /* : FlatString */;
59 val* var49 /* : Array[Object] */;
60 long var50 /* : Int */;
61 val* var51 /* : NativeArray[Object] */;
62 val* var52 /* : String */;
63 static val* varonce53;
64 val* var54 /* : String */;
65 char* var55 /* : NativeString */;
66 long var56 /* : Int */;
67 val* var57 /* : FlatString */;
68 val* var58 /* : String */;
69 val* var_idtype /* var idtype: String */;
70 static val* varonce59;
71 val* var60 /* : String */;
72 char* var61 /* : NativeString */;
73 long var62 /* : Int */;
74 val* var63 /* : FlatString */;
75 static val* varonce64;
76 val* var65 /* : String */;
77 char* var66 /* : NativeString */;
78 long var67 /* : Int */;
79 val* var68 /* : FlatString */;
80 val* var69 /* : Array[Object] */;
81 long var70 /* : Int */;
82 val* var71 /* : NativeArray[Object] */;
83 val* var72 /* : String */;
84 short int var73 /* : Bool */;
85 short int var_maybe_null /* var maybe_null: Bool */;
86 static val* varonce74;
87 val* var75 /* : String */;
88 char* var76 /* : NativeString */;
89 long var77 /* : Int */;
90 val* var78 /* : FlatString */;
91 val* var_accept_null /* var accept_null: String */;
92 val* var_ntype /* var ntype: MType */;
93 short int var79 /* : Bool */;
94 int cltype;
95 int idtype;
96 val* var80 /* : MType */;
97 val* var82 /* : MType */;
98 static val* varonce83;
99 val* var84 /* : String */;
100 char* var85 /* : NativeString */;
101 long var86 /* : Int */;
102 val* var87 /* : FlatString */;
103 val* var88 /* : MType */;
104 val* var90 /* : MType */;
105 val* var91 /* : nullable Frame */;
106 val* var93 /* : nullable Frame */;
107 val* var94 /* : MPropDef */;
108 val* var96 /* : MPropDef */;
109 val* var97 /* : MClassDef */;
110 val* var99 /* : MClassDef */;
111 val* var100 /* : MModule */;
112 val* var102 /* : MModule */;
113 val* var103 /* : nullable Frame */;
114 val* var105 /* : nullable Frame */;
115 val* var106 /* : MPropDef */;
116 val* var108 /* : MPropDef */;
117 val* var109 /* : MClassDef */;
118 val* var111 /* : MClassDef */;
119 val* var112 /* : MClassType */;
120 val* var114 /* : MClassType */;
121 short int var115 /* : Bool */;
122 static val* varonce116;
123 val* var117 /* : String */;
124 char* var118 /* : NativeString */;
125 long var119 /* : Int */;
126 val* var120 /* : FlatString */;
127 val* var121 /* : String */;
128 static val* varonce122;
129 val* var123 /* : String */;
130 char* var124 /* : NativeString */;
131 long var125 /* : Int */;
132 val* var126 /* : FlatString */;
133 static val* varonce127;
134 val* var128 /* : String */;
135 char* var129 /* : NativeString */;
136 long var130 /* : Int */;
137 val* var131 /* : FlatString */;
138 val* var132 /* : Array[Object] */;
139 long var133 /* : Int */;
140 val* var134 /* : NativeArray[Object] */;
141 val* var135 /* : String */;
142 val* var136 /* : ModelBuilder */;
143 val* var138 /* : ModelBuilder */;
144 val* var139 /* : ToolContext */;
145 val* var141 /* : ToolContext */;
146 val* var142 /* : OptionBool */;
147 val* var144 /* : OptionBool */;
148 val* var145 /* : nullable Object */;
149 val* var147 /* : nullable Object */;
150 short int var148 /* : Bool */;
151 val* var149 /* : AbstractCompiler */;
152 val* var151 /* : AbstractCompiler */;
153 val* var152 /* : HashMap[String, Int] */;
154 val* var154 /* : HashMap[String, Int] */;
155 val* var_ /* var : HashMap[String, Int] */;
156 val* var_155 /* var : String */;
157 val* var156 /* : nullable Object */;
158 long var157 /* : Int */;
159 long var158 /* : Int */;
160 short int var160 /* : Bool */;
161 int cltype161;
162 int idtype162;
163 const char* var_class_name;
164 long var163 /* : Int */;
165 long var164 /* : Int */;
166 val* var165 /* : nullable Object */;
167 static val* varonce166;
168 val* var167 /* : String */;
169 char* var168 /* : NativeString */;
170 long var169 /* : Int */;
171 val* var170 /* : FlatString */;
172 static val* varonce171;
173 val* var172 /* : String */;
174 char* var173 /* : NativeString */;
175 long var174 /* : Int */;
176 val* var175 /* : FlatString */;
177 val* var176 /* : Array[Object] */;
178 long var177 /* : Int */;
179 val* var178 /* : NativeArray[Object] */;
180 val* var179 /* : String */;
181 short int var180 /* : Bool */;
182 static val* varonce181;
183 val* var182 /* : String */;
184 char* var183 /* : NativeString */;
185 long var184 /* : Int */;
186 val* var185 /* : FlatString */;
187 val* var186 /* : String */;
188 val* var_type_struct /* var type_struct: String */;
189 static val* varonce187;
190 val* var188 /* : String */;
191 char* var189 /* : NativeString */;
192 long var190 /* : Int */;
193 val* var191 /* : FlatString */;
194 static val* varonce192;
195 val* var193 /* : String */;
196 char* var194 /* : NativeString */;
197 long var195 /* : Int */;
198 val* var196 /* : FlatString */;
199 val* var197 /* : Array[Object] */;
200 long var198 /* : Int */;
201 val* var199 /* : NativeArray[Object] */;
202 val* var200 /* : String */;
203 val* var201 /* : nullable Frame */;
204 val* var203 /* : nullable Frame */;
205 val* var204 /* : MPropDef */;
206 val* var206 /* : MPropDef */;
207 val* var207 /* : MClassDef */;
208 val* var209 /* : MClassDef */;
209 val* var210 /* : String */;
210 static val* varonce211;
211 val* var212 /* : String */;
212 char* var213 /* : NativeString */;
213 long var214 /* : Int */;
214 val* var215 /* : FlatString */;
215 static val* varonce216;
216 val* var217 /* : String */;
217 char* var218 /* : NativeString */;
218 long var219 /* : Int */;
219 val* var220 /* : FlatString */;
220 val* var221 /* : String */;
221 static val* varonce222;
222 val* var223 /* : String */;
223 char* var224 /* : NativeString */;
224 long var225 /* : Int */;
225 val* var226 /* : FlatString */;
226 val* var227 /* : Array[Object] */;
227 long var228 /* : Int */;
228 val* var229 /* : NativeArray[Object] */;
229 val* var230 /* : String */;
230 val* var231 /* : ModelBuilder */;
231 val* var233 /* : ModelBuilder */;
232 val* var234 /* : ToolContext */;
233 val* var236 /* : ToolContext */;
234 val* var237 /* : OptionBool */;
235 val* var239 /* : OptionBool */;
236 val* var240 /* : nullable Object */;
237 val* var242 /* : nullable Object */;
238 short int var243 /* : Bool */;
239 val* var244 /* : AbstractCompiler */;
240 val* var246 /* : AbstractCompiler */;
241 val* var247 /* : HashMap[String, Int] */;
242 val* var249 /* : HashMap[String, Int] */;
243 val* var_250 /* var : HashMap[String, Int] */;
244 val* var_251 /* var : String */;
245 val* var252 /* : nullable Object */;
246 long var253 /* : Int */;
247 long var254 /* : Int */;
248 short int var256 /* : Bool */;
249 int cltype257;
250 int idtype258;
251 const char* var_class_name259;
252 long var260 /* : Int */;
253 long var261 /* : Int */;
254 val* var262 /* : nullable Object */;
255 static val* varonce263;
256 val* var264 /* : String */;
257 char* var265 /* : NativeString */;
258 long var266 /* : Int */;
259 val* var267 /* : FlatString */;
260 static val* varonce268;
261 val* var269 /* : String */;
262 char* var270 /* : NativeString */;
263 long var271 /* : Int */;
264 val* var272 /* : FlatString */;
265 val* var273 /* : Array[Object] */;
266 long var274 /* : Int */;
267 val* var275 /* : NativeArray[Object] */;
268 val* var276 /* : String */;
269 static val* varonce277;
270 val* var278 /* : String */;
271 char* var279 /* : NativeString */;
272 long var280 /* : Int */;
273 val* var281 /* : FlatString */;
274 static val* varonce282;
275 val* var283 /* : String */;
276 char* var284 /* : NativeString */;
277 long var285 /* : Int */;
278 val* var286 /* : FlatString */;
279 val* var287 /* : Array[Object] */;
280 long var288 /* : Int */;
281 val* var289 /* : NativeArray[Object] */;
282 val* var290 /* : String */;
283 static val* varonce291;
284 val* var292 /* : String */;
285 char* var293 /* : NativeString */;
286 long var294 /* : Int */;
287 val* var295 /* : FlatString */;
288 static val* varonce296;
289 val* var297 /* : String */;
290 char* var298 /* : NativeString */;
291 long var299 /* : Int */;
292 val* var300 /* : FlatString */;
293 val* var301 /* : Array[Object] */;
294 long var302 /* : Int */;
295 val* var303 /* : NativeArray[Object] */;
296 val* var304 /* : String */;
297 short int var305 /* : Bool */;
298 short int var_306 /* var : Bool */;
299 static val* varonce307;
300 val* var308 /* : String */;
301 char* var309 /* : NativeString */;
302 long var310 /* : Int */;
303 val* var311 /* : FlatString */;
304 short int var312 /* : Bool */;
305 short int var313 /* : Bool */;
306 static val* varonce314;
307 val* var315 /* : String */;
308 char* var316 /* : NativeString */;
309 long var317 /* : Int */;
310 val* var318 /* : FlatString */;
311 val* var319 /* : String */;
312 val* var_is_nullable /* var is_nullable: String */;
313 static val* varonce320;
314 val* var321 /* : String */;
315 char* var322 /* : NativeString */;
316 long var323 /* : Int */;
317 val* var324 /* : FlatString */;
318 static val* varonce325;
319 val* var326 /* : String */;
320 char* var327 /* : NativeString */;
321 long var328 /* : Int */;
322 val* var329 /* : FlatString */;
323 val* var330 /* : Array[Object] */;
324 long var331 /* : Int */;
325 val* var332 /* : NativeArray[Object] */;
326 val* var333 /* : String */;
327 static val* varonce334;
328 val* var335 /* : String */;
329 char* var336 /* : NativeString */;
330 long var337 /* : Int */;
331 val* var338 /* : FlatString */;
332 static val* varonce339;
333 val* var340 /* : String */;
334 char* var341 /* : NativeString */;
335 long var342 /* : Int */;
336 val* var343 /* : FlatString */;
337 val* var344 /* : Array[Object] */;
338 long var345 /* : Int */;
339 val* var346 /* : NativeArray[Object] */;
340 val* var347 /* : String */;
341 val* var348 /* : String */;
342 short int var349 /* : Bool */;
343 int cltype350;
344 int idtype351;
345 val* var352 /* : Set[MType] */;
346 val* var354 /* : Set[MType] */;
347 static val* varonce355;
348 val* var356 /* : String */;
349 char* var357 /* : NativeString */;
350 long var358 /* : Int */;
351 val* var359 /* : FlatString */;
352 val* var360 /* : String */;
353 val* var361 /* : Array[Object] */;
354 long var362 /* : Int */;
355 val* var363 /* : NativeArray[Object] */;
356 val* var364 /* : String */;
357 static val* varonce365;
358 val* var366 /* : String */;
359 char* var367 /* : NativeString */;
360 long var368 /* : Int */;
361 val* var369 /* : FlatString */;
362 val* var370 /* : String */;
363 static val* varonce371;
364 val* var372 /* : String */;
365 char* var373 /* : NativeString */;
366 long var374 /* : Int */;
367 val* var375 /* : FlatString */;
368 val* var376 /* : Array[Object] */;
369 long var377 /* : Int */;
370 val* var378 /* : NativeArray[Object] */;
371 val* var379 /* : String */;
372 static val* varonce380;
373 val* var381 /* : String */;
374 char* var382 /* : NativeString */;
375 long var383 /* : Int */;
376 val* var384 /* : FlatString */;
377 val* var385 /* : String */;
378 static val* varonce386;
379 val* var387 /* : String */;
380 char* var388 /* : NativeString */;
381 long var389 /* : Int */;
382 val* var390 /* : FlatString */;
383 val* var391 /* : Array[Object] */;
384 long var392 /* : Int */;
385 val* var393 /* : NativeArray[Object] */;
386 val* var394 /* : String */;
387 static val* varonce395;
388 val* var396 /* : String */;
389 char* var397 /* : NativeString */;
390 long var398 /* : Int */;
391 val* var399 /* : FlatString */;
392 val* var400 /* : String */;
393 static val* varonce401;
394 val* var402 /* : String */;
395 char* var403 /* : NativeString */;
396 long var404 /* : Int */;
397 val* var405 /* : FlatString */;
398 val* var406 /* : Array[Object] */;
399 long var407 /* : Int */;
400 val* var408 /* : NativeArray[Object] */;
401 val* var409 /* : String */;
402 val* var410 /* : ModelBuilder */;
403 val* var412 /* : ModelBuilder */;
404 val* var413 /* : ToolContext */;
405 val* var415 /* : ToolContext */;
406 val* var416 /* : OptionBool */;
407 val* var418 /* : OptionBool */;
408 val* var419 /* : nullable Object */;
409 val* var421 /* : nullable Object */;
410 short int var422 /* : Bool */;
411 val* var423 /* : AbstractCompiler */;
412 val* var425 /* : AbstractCompiler */;
413 val* var426 /* : HashMap[String, Int] */;
414 val* var428 /* : HashMap[String, Int] */;
415 val* var_429 /* var : HashMap[String, Int] */;
416 val* var_430 /* var : String */;
417 val* var431 /* : nullable Object */;
418 long var432 /* : Int */;
419 long var433 /* : Int */;
420 short int var435 /* : Bool */;
421 int cltype436;
422 int idtype437;
423 const char* var_class_name438;
424 long var439 /* : Int */;
425 long var440 /* : Int */;
426 val* var441 /* : nullable Object */;
427 static val* varonce442;
428 val* var443 /* : String */;
429 char* var444 /* : NativeString */;
430 long var445 /* : Int */;
431 val* var446 /* : FlatString */;
432 static val* varonce447;
433 val* var448 /* : String */;
434 char* var449 /* : NativeString */;
435 long var450 /* : Int */;
436 val* var451 /* : FlatString */;
437 val* var452 /* : Array[Object] */;
438 long var453 /* : Int */;
439 val* var454 /* : NativeArray[Object] */;
440 val* var455 /* : String */;
441 static val* varonce456;
442 val* var457 /* : String */;
443 char* var458 /* : NativeString */;
444 long var459 /* : Int */;
445 val* var460 /* : FlatString */;
446 static val* varonce461;
447 val* var462 /* : String */;
448 char* var463 /* : NativeString */;
449 long var464 /* : Int */;
450 val* var465 /* : FlatString */;
451 val* var466 /* : String */;
452 static val* varonce467;
453 val* var468 /* : String */;
454 char* var469 /* : NativeString */;
455 long var470 /* : Int */;
456 val* var471 /* : FlatString */;
457 val* var472 /* : Array[Object] */;
458 long var473 /* : Int */;
459 val* var474 /* : NativeArray[Object] */;
460 val* var475 /* : String */;
461 static val* varonce476;
462 val* var477 /* : String */;
463 char* var478 /* : NativeString */;
464 long var479 /* : Int */;
465 val* var480 /* : FlatString */;
466 static val* varonce481;
467 val* var482 /* : String */;
468 char* var483 /* : NativeString */;
469 long var484 /* : Int */;
470 val* var485 /* : FlatString */;
471 val* var486 /* : Array[Object] */;
472 long var487 /* : Int */;
473 val* var488 /* : NativeArray[Object] */;
474 val* var489 /* : String */;
475 static val* varonce490;
476 val* var491 /* : String */;
477 char* var492 /* : NativeString */;
478 long var493 /* : Int */;
479 val* var494 /* : FlatString */;
480 static val* varonce495;
481 val* var496 /* : String */;
482 char* var497 /* : NativeString */;
483 long var498 /* : Int */;
484 val* var499 /* : FlatString */;
485 val* var500 /* : Array[Object] */;
486 long var501 /* : Int */;
487 val* var502 /* : NativeArray[Object] */;
488 val* var503 /* : String */;
489 static val* varonce504;
490 val* var505 /* : String */;
491 char* var506 /* : NativeString */;
492 long var507 /* : Int */;
493 val* var508 /* : FlatString */;
494 val* var509 /* : String */;
495 val* var_value_type_info /* var value_type_info: String */;
496 static val* varonce510;
497 val* var511 /* : String */;
498 char* var512 /* : NativeString */;
499 long var513 /* : Int */;
500 val* var514 /* : FlatString */;
501 static val* varonce515;
502 val* var516 /* : String */;
503 char* var517 /* : NativeString */;
504 long var518 /* : Int */;
505 val* var519 /* : FlatString */;
506 static val* varonce520;
507 val* var521 /* : String */;
508 char* var522 /* : NativeString */;
509 long var523 /* : Int */;
510 val* var524 /* : FlatString */;
511 val* var525 /* : Array[Object] */;
512 long var526 /* : Int */;
513 val* var527 /* : NativeArray[Object] */;
514 val* var528 /* : String */;
515 static val* varonce529;
516 val* var530 /* : String */;
517 char* var531 /* : NativeString */;
518 long var532 /* : Int */;
519 val* var533 /* : FlatString */;
520 val* var534 /* : Array[Object] */;
521 long var535 /* : Int */;
522 val* var536 /* : NativeArray[Object] */;
523 val* var537 /* : String */;
524 static val* varonce538;
525 val* var539 /* : String */;
526 char* var540 /* : NativeString */;
527 long var541 /* : Int */;
528 val* var542 /* : FlatString */;
529 static val* varonce543;
530 val* var544 /* : String */;
531 char* var545 /* : NativeString */;
532 long var546 /* : Int */;
533 val* var547 /* : FlatString */;
534 static val* varonce548;
535 val* var549 /* : String */;
536 char* var550 /* : NativeString */;
537 long var551 /* : Int */;
538 val* var552 /* : FlatString */;
539 static val* varonce553;
540 val* var554 /* : String */;
541 char* var555 /* : NativeString */;
542 long var556 /* : Int */;
543 val* var557 /* : FlatString */;
544 static val* varonce558;
545 val* var559 /* : String */;
546 char* var560 /* : NativeString */;
547 long var561 /* : Int */;
548 val* var562 /* : FlatString */;
549 val* var563 /* : Array[Object] */;
550 long var564 /* : Int */;
551 val* var565 /* : NativeArray[Object] */;
552 val* var566 /* : String */;
553 static val* varonce567;
554 val* var568 /* : String */;
555 char* var569 /* : NativeString */;
556 long var570 /* : Int */;
557 val* var571 /* : FlatString */;
558 static val* varonce572;
559 val* var573 /* : String */;
560 char* var574 /* : NativeString */;
561 long var575 /* : Int */;
562 val* var576 /* : FlatString */;
563 var_value = p0;
564 var_mtype = p1;
565 var_tag = p2;
566 if (varonce) {
567 var1 = varonce;
568 } else {
569 var2 = "/* ";
570 var3 = 3;
571 var4 = string__NativeString__to_s_with_length(var2, var3);
572 var1 = var4;
573 varonce = var1;
574 }
575 {
576 var5 = abstract_compiler__RuntimeVariable__inspect(var_value);
577 }
578 if (varonce6) {
579 var7 = varonce6;
580 } else {
581 var8 = " isa ";
582 var9 = 5;
583 var10 = string__NativeString__to_s_with_length(var8, var9);
584 var7 = var10;
585 varonce6 = var7;
586 }
587 if (varonce11) {
588 var12 = varonce11;
589 } else {
590 var13 = " */";
591 var14 = 3;
592 var15 = string__NativeString__to_s_with_length(var13, var14);
593 var12 = var15;
594 varonce11 = var12;
595 }
596 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
597 { /* var16 = array_instance Array[Object] */
598 var17 = 5;
599 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
600 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var1;
601 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var5;
602 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var7;
603 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var_mtype;
604 ((struct instance_array__NativeArray*)var18)->values[4] = (val*) var12;
605 {
606 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
607 }
608 }
609 {
610 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
611 }
612 {
613 abstract_compiler__AbstractCompilerVisitor__add(self, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
614 }
615 {
616 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
617 var22 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
618 if (unlikely(var22 == NULL)) {
619 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
620 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
621 show_backtrace(1);
622 }
623 var20 = var22;
624 RET_LABEL21:(void)0;
625 }
626 }
627 var_compiler = var20;
628 {
629 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
630 var25 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
631 var23 = var25;
632 RET_LABEL24:(void)0;
633 }
634 }
635 if (var23 == NULL) {
636 PRINT_ERROR("Runtime error: %s", "Receiver is null");
637 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1466);
638 show_backtrace(1);
639 } else {
640 { /* Inline abstract_compiler#Frame#arguments (var23) on <var23:nullable Frame> */
641 if (unlikely(var23 == NULL)) {
642 PRINT_ERROR("Runtime error: %s", "Receiver is null");
643 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
644 show_backtrace(1);
645 }
646 var28 = var23->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <var23:nullable Frame> */
647 if (unlikely(var28 == NULL)) {
648 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
649 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
650 show_backtrace(1);
651 }
652 var26 = var28;
653 RET_LABEL27:(void)0;
654 }
655 }
656 {
657 var29 = abstract_collection__SequenceRead__first(var26);
658 }
659 var_recv = var29;
660 {
661 var30 = separate_compiler__SeparateCompilerVisitor__type_info(self, var_recv);
662 }
663 var_recv_type_info = var30;
664 {
665 var31 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
666 }
667 {
668 var32 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var31);
669 }
670 var_res = var32;
671 if (varonce33) {
672 var34 = varonce33;
673 } else {
674 var35 = "cltype";
675 var36 = 6;
676 var37 = string__NativeString__to_s_with_length(var35, var36);
677 var34 = var37;
678 varonce33 = var34;
679 }
680 {
681 var38 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var34);
682 }
683 var_cltype = var38;
684 if (varonce39) {
685 var40 = varonce39;
686 } else {
687 var41 = "int ";
688 var42 = 4;
689 var43 = string__NativeString__to_s_with_length(var41, var42);
690 var40 = var43;
691 varonce39 = var40;
692 }
693 if (varonce44) {
694 var45 = varonce44;
695 } else {
696 var46 = ";";
697 var47 = 1;
698 var48 = string__NativeString__to_s_with_length(var46, var47);
699 var45 = var48;
700 varonce44 = var45;
701 }
702 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
703 { /* var49 = array_instance Array[Object] */
704 var50 = 3;
705 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
706 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var40;
707 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var_cltype;
708 ((struct instance_array__NativeArray*)var51)->values[2] = (val*) var45;
709 {
710 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
711 }
712 }
713 {
714 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
715 }
716 {
717 abstract_compiler__AbstractCompilerVisitor__add_decl(self, var52); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateCompilerVisitor>*/
718 }
719 if (varonce53) {
720 var54 = varonce53;
721 } else {
722 var55 = "idtype";
723 var56 = 6;
724 var57 = string__NativeString__to_s_with_length(var55, var56);
725 var54 = var57;
726 varonce53 = var54;
727 }
728 {
729 var58 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var54);
730 }
731 var_idtype = var58;
732 if (varonce59) {
733 var60 = varonce59;
734 } else {
735 var61 = "int ";
736 var62 = 4;
737 var63 = string__NativeString__to_s_with_length(var61, var62);
738 var60 = var63;
739 varonce59 = var60;
740 }
741 if (varonce64) {
742 var65 = varonce64;
743 } else {
744 var66 = ";";
745 var67 = 1;
746 var68 = string__NativeString__to_s_with_length(var66, var67);
747 var65 = var68;
748 varonce64 = var65;
749 }
750 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
751 { /* var69 = array_instance Array[Object] */
752 var70 = 3;
753 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
754 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var60;
755 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var_idtype;
756 ((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65;
757 {
758 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
759 }
760 }
761 {
762 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
763 }
764 {
765 abstract_compiler__AbstractCompilerVisitor__add_decl(self, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateCompilerVisitor>*/
766 }
767 {
768 var73 = separate_compiler__SeparateCompilerVisitor__maybe_null(self, var_value);
769 }
770 var_maybe_null = var73;
771 if (varonce74) {
772 var75 = varonce74;
773 } else {
774 var76 = "0";
775 var77 = 1;
776 var78 = string__NativeString__to_s_with_length(var76, var77);
777 var75 = var78;
778 varonce74 = var75;
779 }
780 var_accept_null = var75;
781 var_ntype = var_mtype;
782 /* <var_ntype:MType> isa MNullableType */
783 cltype = type_model__MNullableType.color;
784 idtype = type_model__MNullableType.id;
785 if(cltype >= var_ntype->type->table_size) {
786 var79 = 0;
787 } else {
788 var79 = var_ntype->type->type_table[cltype] == idtype;
789 }
790 if (var79){
791 {
792 { /* Inline model#MNullableType#mtype (var_ntype) on <var_ntype:MType(MNullableType)> */
793 var82 = var_ntype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_ntype:MType(MNullableType)> */
794 if (unlikely(var82 == NULL)) {
795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
796 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
797 show_backtrace(1);
798 }
799 var80 = var82;
800 RET_LABEL81:(void)0;
801 }
802 }
803 var_ntype = var80;
804 if (varonce83) {
805 var84 = varonce83;
806 } else {
807 var85 = "1";
808 var86 = 1;
809 var87 = string__NativeString__to_s_with_length(var85, var86);
810 var84 = var87;
811 varonce83 = var84;
812 }
813 var_accept_null = var84;
814 } else {
815 }
816 {
817 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
818 var90 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
819 if (unlikely(var90 == NULL)) {
820 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
821 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
822 show_backtrace(1);
823 }
824 var88 = var90;
825 RET_LABEL89:(void)0;
826 }
827 }
828 {
829 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
830 var93 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
831 var91 = var93;
832 RET_LABEL92:(void)0;
833 }
834 }
835 if (var91 == NULL) {
836 PRINT_ERROR("Runtime error: %s", "Receiver is null");
837 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1484);
838 show_backtrace(1);
839 } else {
840 { /* Inline abstract_compiler#Frame#mpropdef (var91) on <var91:nullable Frame> */
841 if (unlikely(var91 == NULL)) {
842 PRINT_ERROR("Runtime error: %s", "Receiver is null");
843 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
844 show_backtrace(1);
845 }
846 var96 = var91->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var91:nullable Frame> */
847 if (unlikely(var96 == NULL)) {
848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
849 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
850 show_backtrace(1);
851 }
852 var94 = var96;
853 RET_LABEL95:(void)0;
854 }
855 }
856 {
857 { /* Inline model#MPropDef#mclassdef (var94) on <var94:MPropDef> */
858 var99 = var94->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var94:MPropDef> */
859 if (unlikely(var99 == NULL)) {
860 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
861 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
862 show_backtrace(1);
863 }
864 var97 = var99;
865 RET_LABEL98:(void)0;
866 }
867 }
868 {
869 { /* Inline model#MClassDef#mmodule (var97) on <var97:MClassDef> */
870 var102 = var97->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var97:MClassDef> */
871 if (unlikely(var102 == NULL)) {
872 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
873 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
874 show_backtrace(1);
875 }
876 var100 = var102;
877 RET_LABEL101:(void)0;
878 }
879 }
880 {
881 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
882 var105 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
883 var103 = var105;
884 RET_LABEL104:(void)0;
885 }
886 }
887 if (var103 == NULL) {
888 PRINT_ERROR("Runtime error: %s", "Receiver is null");
889 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1484);
890 show_backtrace(1);
891 } else {
892 { /* Inline abstract_compiler#Frame#mpropdef (var103) on <var103:nullable Frame> */
893 if (unlikely(var103 == NULL)) {
894 PRINT_ERROR("Runtime error: %s", "Receiver is null");
895 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
896 show_backtrace(1);
897 }
898 var108 = var103->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var103:nullable Frame> */
899 if (unlikely(var108 == NULL)) {
900 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
901 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
902 show_backtrace(1);
903 }
904 var106 = var108;
905 RET_LABEL107:(void)0;
906 }
907 }
908 {
909 { /* Inline model#MPropDef#mclassdef (var106) on <var106:MPropDef> */
910 var111 = var106->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var106:MPropDef> */
911 if (unlikely(var111 == NULL)) {
912 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
913 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
914 show_backtrace(1);
915 }
916 var109 = var111;
917 RET_LABEL110:(void)0;
918 }
919 }
920 {
921 { /* Inline model#MClassDef#bound_mtype (var109) on <var109:MClassDef> */
922 var114 = var109->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var109:MClassDef> */
923 if (unlikely(var114 == NULL)) {
924 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
925 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
926 show_backtrace(1);
927 }
928 var112 = var114;
929 RET_LABEL113:(void)0;
930 }
931 }
932 {
933 var115 = model__MType__is_subtype(var88, var100, var112, var_mtype);
934 }
935 if (var115){
936 if (varonce116) {
937 var117 = varonce116;
938 } else {
939 var118 = " = 1; /* easy ";
940 var119 = 14;
941 var120 = string__NativeString__to_s_with_length(var118, var119);
942 var117 = var120;
943 varonce116 = var117;
944 }
945 {
946 var121 = abstract_compiler__RuntimeVariable__inspect(var_value);
947 }
948 if (varonce122) {
949 var123 = varonce122;
950 } else {
951 var124 = " isa ";
952 var125 = 5;
953 var126 = string__NativeString__to_s_with_length(var124, var125);
954 var123 = var126;
955 varonce122 = var123;
956 }
957 if (varonce127) {
958 var128 = varonce127;
959 } else {
960 var129 = "*/";
961 var130 = 2;
962 var131 = string__NativeString__to_s_with_length(var129, var130);
963 var128 = var131;
964 varonce127 = var128;
965 }
966 var132 = NEW_array__Array(&type_array__Arraykernel__Object);
967 { /* var132 = array_instance Array[Object] */
968 var133 = 6;
969 var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object);
970 ((struct instance_array__NativeArray*)var134)->values[0] = (val*) var_res;
971 ((struct instance_array__NativeArray*)var134)->values[1] = (val*) var117;
972 ((struct instance_array__NativeArray*)var134)->values[2] = (val*) var121;
973 ((struct instance_array__NativeArray*)var134)->values[3] = (val*) var123;
974 ((struct instance_array__NativeArray*)var134)->values[4] = (val*) var_mtype;
975 ((struct instance_array__NativeArray*)var134)->values[5] = (val*) var128;
976 {
977 ((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on <var132:Array[Object]>*/;
978 }
979 }
980 {
981 var135 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on <var132:Array[Object]>*/;
982 }
983 {
984 abstract_compiler__AbstractCompilerVisitor__add(self, var135); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
985 }
986 {
987 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var_compiler) on <var_compiler:SeparateCompiler> */
988 var138 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var_compiler:SeparateCompiler> */
989 if (unlikely(var138 == NULL)) {
990 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
991 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
992 show_backtrace(1);
993 }
994 var136 = var138;
995 RET_LABEL137:(void)0;
996 }
997 }
998 {
999 { /* Inline modelbuilder#ModelBuilder#toolcontext (var136) on <var136:ModelBuilder> */
1000 var141 = var136->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var136:ModelBuilder> */
1001 if (unlikely(var141 == NULL)) {
1002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1003 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1004 show_backtrace(1);
1005 }
1006 var139 = var141;
1007 RET_LABEL140:(void)0;
1008 }
1009 }
1010 {
1011 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var139) on <var139:ToolContext> */
1012 var144 = var139->attrs[COLOR_abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var139:ToolContext> */
1013 if (unlikely(var144 == NULL)) {
1014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
1015 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 61);
1016 show_backtrace(1);
1017 }
1018 var142 = var144;
1019 RET_LABEL143:(void)0;
1020 }
1021 }
1022 {
1023 { /* Inline opts#Option#value (var142) on <var142:OptionBool> */
1024 var147 = var142->attrs[COLOR_opts__Option___value].val; /* _value on <var142:OptionBool> */
1025 var145 = var147;
1026 RET_LABEL146:(void)0;
1027 }
1028 }
1029 var148 = ((struct instance_kernel__Bool*)var145)->value; /* autounbox from nullable Object to Bool */;
1030 if (var148){
1031 {
1032 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1033 var151 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1034 if (unlikely(var151 == NULL)) {
1035 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1036 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1037 show_backtrace(1);
1038 }
1039 var149 = var151;
1040 RET_LABEL150:(void)0;
1041 }
1042 }
1043 {
1044 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (var149) on <var149:AbstractCompiler(SeparateCompiler)> */
1045 var154 = var149->attrs[COLOR_abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <var149:AbstractCompiler(SeparateCompiler)> */
1046 if (unlikely(var154 == NULL)) {
1047 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
1048 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 947);
1049 show_backtrace(1);
1050 }
1051 var152 = var154;
1052 RET_LABEL153:(void)0;
1053 }
1054 }
1055 var_ = var152;
1056 var_155 = var_tag;
1057 {
1058 var156 = hash_collection__HashMap___91d_93d(var_, var_155);
1059 }
1060 var157 = 1;
1061 {
1062 { /* Inline kernel#Int#+ (var156,var157) on <var156:nullable Object(Int)> */
1063 /* Covariant cast for argument 0 (i) <var157:Int> isa OTHER */
1064 /* <var157:Int> isa OTHER */
1065 var160 = 1; /* easy <var157:Int> isa OTHER*/
1066 if (unlikely(!var160)) {
1067 var_class_name = type_kernel__Int.name;
1068 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1069 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1070 show_backtrace(1);
1071 }
1072 var163 = ((struct instance_kernel__Int*)var156)->value; /* autounbox from nullable Object to Int */;
1073 var164 = var163 + var157;
1074 var158 = var164;
1075 goto RET_LABEL159;
1076 RET_LABEL159:(void)0;
1077 }
1078 }
1079 {
1080 var165 = BOX_kernel__Int(var158); /* autobox from Int to nullable Object */
1081 hash_collection__HashMap___91d_93d_61d(var_, var_155, var165); /* Direct call hash_collection#HashMap#[]= on <var_:HashMap[String, Int]>*/
1082 }
1083 if (varonce166) {
1084 var167 = varonce166;
1085 } else {
1086 var168 = "count_type_test_skipped_";
1087 var169 = 24;
1088 var170 = string__NativeString__to_s_with_length(var168, var169);
1089 var167 = var170;
1090 varonce166 = var167;
1091 }
1092 if (varonce171) {
1093 var172 = varonce171;
1094 } else {
1095 var173 = "++;";
1096 var174 = 3;
1097 var175 = string__NativeString__to_s_with_length(var173, var174);
1098 var172 = var175;
1099 varonce171 = var172;
1100 }
1101 var176 = NEW_array__Array(&type_array__Arraykernel__Object);
1102 { /* var176 = array_instance Array[Object] */
1103 var177 = 3;
1104 var178 = NEW_array__NativeArray(var177, &type_array__NativeArraykernel__Object);
1105 ((struct instance_array__NativeArray*)var178)->values[0] = (val*) var167;
1106 ((struct instance_array__NativeArray*)var178)->values[1] = (val*) var_tag;
1107 ((struct instance_array__NativeArray*)var178)->values[2] = (val*) var172;
1108 {
1109 ((void (*)(val*, val*, long))(var176->class->vft[COLOR_array__Array__with_native]))(var176, var178, var177) /* with_native on <var176:Array[Object]>*/;
1110 }
1111 }
1112 {
1113 var179 = ((val* (*)(val*))(var176->class->vft[COLOR_string__Object__to_s]))(var176) /* to_s on <var176:Array[Object]>*/;
1114 }
1115 {
1116 abstract_compiler__AbstractCompilerVisitor__add(self, var179); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1117 }
1118 } else {
1119 }
1120 var = var_res;
1121 goto RET_LABEL;
1122 } else {
1123 }
1124 {
1125 var180 = ((short int (*)(val*))(var_ntype->class->vft[COLOR_model__MType__need_anchor]))(var_ntype) /* need_anchor on <var_ntype:MType>*/;
1126 }
1127 if (var180){
1128 if (varonce181) {
1129 var182 = varonce181;
1130 } else {
1131 var183 = "type_struct";
1132 var184 = 11;
1133 var185 = string__NativeString__to_s_with_length(var183, var184);
1134 var182 = var185;
1135 varonce181 = var182;
1136 }
1137 {
1138 var186 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var182);
1139 }
1140 var_type_struct = var186;
1141 if (varonce187) {
1142 var188 = varonce187;
1143 } else {
1144 var189 = "const struct type* ";
1145 var190 = 19;
1146 var191 = string__NativeString__to_s_with_length(var189, var190);
1147 var188 = var191;
1148 varonce187 = var188;
1149 }
1150 if (varonce192) {
1151 var193 = varonce192;
1152 } else {
1153 var194 = ";";
1154 var195 = 1;
1155 var196 = string__NativeString__to_s_with_length(var194, var195);
1156 var193 = var196;
1157 varonce192 = var193;
1158 }
1159 var197 = NEW_array__Array(&type_array__Arraykernel__Object);
1160 { /* var197 = array_instance Array[Object] */
1161 var198 = 3;
1162 var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object);
1163 ((struct instance_array__NativeArray*)var199)->values[0] = (val*) var188;
1164 ((struct instance_array__NativeArray*)var199)->values[1] = (val*) var_type_struct;
1165 ((struct instance_array__NativeArray*)var199)->values[2] = (val*) var193;
1166 {
1167 ((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
1168 }
1169 }
1170 {
1171 var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
1172 }
1173 {
1174 abstract_compiler__AbstractCompilerVisitor__add_decl(self, var200); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateCompilerVisitor>*/
1175 }
1176 {
1177 separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on <self:SeparateCompilerVisitor>*/
1178 }
1179 {
1180 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
1181 var203 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
1182 var201 = var203;
1183 RET_LABEL202:(void)0;
1184 }
1185 }
1186 if (var201 == NULL) {
1187 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1188 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1499);
1189 show_backtrace(1);
1190 } else {
1191 { /* Inline abstract_compiler#Frame#mpropdef (var201) on <var201:nullable Frame> */
1192 if (unlikely(var201 == NULL)) {
1193 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1194 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
1195 show_backtrace(1);
1196 }
1197 var206 = var201->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var201:nullable Frame> */
1198 if (unlikely(var206 == NULL)) {
1199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
1200 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
1201 show_backtrace(1);
1202 }
1203 var204 = var206;
1204 RET_LABEL205:(void)0;
1205 }
1206 }
1207 {
1208 { /* Inline model#MPropDef#mclassdef (var204) on <var204:MPropDef> */
1209 var209 = var204->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var204:MPropDef> */
1210 if (unlikely(var209 == NULL)) {
1211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1212 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
1213 show_backtrace(1);
1214 }
1215 var207 = var209;
1216 RET_LABEL208:(void)0;
1217 }
1218 }
1219 {
1220 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, var207, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#link_unresolved_type on <self:SeparateCompilerVisitor>*/
1221 }
1222 {
1223 var210 = separate_compiler__MType__const_color(var_mtype);
1224 }
1225 {
1226 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var210); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
1227 }
1228 if (varonce211) {
1229 var212 = varonce211;
1230 } else {
1231 var213 = " = ";
1232 var214 = 3;
1233 var215 = string__NativeString__to_s_with_length(var213, var214);
1234 var212 = var215;
1235 varonce211 = var212;
1236 }
1237 if (varonce216) {
1238 var217 = varonce216;
1239 } else {
1240 var218 = "->resolution_table->types[";
1241 var219 = 26;
1242 var220 = string__NativeString__to_s_with_length(var218, var219);
1243 var217 = var220;
1244 varonce216 = var217;
1245 }
1246 {
1247 var221 = separate_compiler__MType__const_color(var_mtype);
1248 }
1249 if (varonce222) {
1250 var223 = varonce222;
1251 } else {
1252 var224 = "];";
1253 var225 = 2;
1254 var226 = string__NativeString__to_s_with_length(var224, var225);
1255 var223 = var226;
1256 varonce222 = var223;
1257 }
1258 var227 = NEW_array__Array(&type_array__Arraykernel__Object);
1259 { /* var227 = array_instance Array[Object] */
1260 var228 = 6;
1261 var229 = NEW_array__NativeArray(var228, &type_array__NativeArraykernel__Object);
1262 ((struct instance_array__NativeArray*)var229)->values[0] = (val*) var_type_struct;
1263 ((struct instance_array__NativeArray*)var229)->values[1] = (val*) var212;
1264 ((struct instance_array__NativeArray*)var229)->values[2] = (val*) var_recv_type_info;
1265 ((struct instance_array__NativeArray*)var229)->values[3] = (val*) var217;
1266 ((struct instance_array__NativeArray*)var229)->values[4] = (val*) var221;
1267 ((struct instance_array__NativeArray*)var229)->values[5] = (val*) var223;
1268 {
1269 ((void (*)(val*, val*, long))(var227->class->vft[COLOR_array__Array__with_native]))(var227, var229, var228) /* with_native on <var227:Array[Object]>*/;
1270 }
1271 }
1272 {
1273 var230 = ((val* (*)(val*))(var227->class->vft[COLOR_string__Object__to_s]))(var227) /* to_s on <var227:Array[Object]>*/;
1274 }
1275 {
1276 abstract_compiler__AbstractCompilerVisitor__add(self, var230); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1277 }
1278 {
1279 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var_compiler) on <var_compiler:SeparateCompiler> */
1280 var233 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var_compiler:SeparateCompiler> */
1281 if (unlikely(var233 == NULL)) {
1282 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1283 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
1284 show_backtrace(1);
1285 }
1286 var231 = var233;
1287 RET_LABEL232:(void)0;
1288 }
1289 }
1290 {
1291 { /* Inline modelbuilder#ModelBuilder#toolcontext (var231) on <var231:ModelBuilder> */
1292 var236 = var231->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var231:ModelBuilder> */
1293 if (unlikely(var236 == NULL)) {
1294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1295 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1296 show_backtrace(1);
1297 }
1298 var234 = var236;
1299 RET_LABEL235:(void)0;
1300 }
1301 }
1302 {
1303 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var234) on <var234:ToolContext> */
1304 var239 = var234->attrs[COLOR_abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var234:ToolContext> */
1305 if (unlikely(var239 == NULL)) {
1306 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
1307 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 61);
1308 show_backtrace(1);
1309 }
1310 var237 = var239;
1311 RET_LABEL238:(void)0;
1312 }
1313 }
1314 {
1315 { /* Inline opts#Option#value (var237) on <var237:OptionBool> */
1316 var242 = var237->attrs[COLOR_opts__Option___value].val; /* _value on <var237:OptionBool> */
1317 var240 = var242;
1318 RET_LABEL241:(void)0;
1319 }
1320 }
1321 var243 = ((struct instance_kernel__Bool*)var240)->value; /* autounbox from nullable Object to Bool */;
1322 if (var243){
1323 {
1324 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1325 var246 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1326 if (unlikely(var246 == NULL)) {
1327 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1328 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1329 show_backtrace(1);
1330 }
1331 var244 = var246;
1332 RET_LABEL245:(void)0;
1333 }
1334 }
1335 {
1336 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (var244) on <var244:AbstractCompiler(SeparateCompiler)> */
1337 var249 = var244->attrs[COLOR_abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <var244:AbstractCompiler(SeparateCompiler)> */
1338 if (unlikely(var249 == NULL)) {
1339 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
1340 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 946);
1341 show_backtrace(1);
1342 }
1343 var247 = var249;
1344 RET_LABEL248:(void)0;
1345 }
1346 }
1347 var_250 = var247;
1348 var_251 = var_tag;
1349 {
1350 var252 = hash_collection__HashMap___91d_93d(var_250, var_251);
1351 }
1352 var253 = 1;
1353 {
1354 { /* Inline kernel#Int#+ (var252,var253) on <var252:nullable Object(Int)> */
1355 /* Covariant cast for argument 0 (i) <var253:Int> isa OTHER */
1356 /* <var253:Int> isa OTHER */
1357 var256 = 1; /* easy <var253:Int> isa OTHER*/
1358 if (unlikely(!var256)) {
1359 var_class_name259 = type_kernel__Int.name;
1360 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name259);
1361 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1362 show_backtrace(1);
1363 }
1364 var260 = ((struct instance_kernel__Int*)var252)->value; /* autounbox from nullable Object to Int */;
1365 var261 = var260 + var253;
1366 var254 = var261;
1367 goto RET_LABEL255;
1368 RET_LABEL255:(void)0;
1369 }
1370 }
1371 {
1372 var262 = BOX_kernel__Int(var254); /* autobox from Int to nullable Object */
1373 hash_collection__HashMap___91d_93d_61d(var_250, var_251, var262); /* Direct call hash_collection#HashMap#[]= on <var_250:HashMap[String, Int]>*/
1374 }
1375 if (varonce263) {
1376 var264 = varonce263;
1377 } else {
1378 var265 = "count_type_test_unresolved_";
1379 var266 = 27;
1380 var267 = string__NativeString__to_s_with_length(var265, var266);
1381 var264 = var267;
1382 varonce263 = var264;
1383 }
1384 if (varonce268) {
1385 var269 = varonce268;
1386 } else {
1387 var270 = "++;";
1388 var271 = 3;
1389 var272 = string__NativeString__to_s_with_length(var270, var271);
1390 var269 = var272;
1391 varonce268 = var269;
1392 }
1393 var273 = NEW_array__Array(&type_array__Arraykernel__Object);
1394 { /* var273 = array_instance Array[Object] */
1395 var274 = 3;
1396 var275 = NEW_array__NativeArray(var274, &type_array__NativeArraykernel__Object);
1397 ((struct instance_array__NativeArray*)var275)->values[0] = (val*) var264;
1398 ((struct instance_array__NativeArray*)var275)->values[1] = (val*) var_tag;
1399 ((struct instance_array__NativeArray*)var275)->values[2] = (val*) var269;
1400 {
1401 ((void (*)(val*, val*, long))(var273->class->vft[COLOR_array__Array__with_native]))(var273, var275, var274) /* with_native on <var273:Array[Object]>*/;
1402 }
1403 }
1404 {
1405 var276 = ((val* (*)(val*))(var273->class->vft[COLOR_string__Object__to_s]))(var273) /* to_s on <var273:Array[Object]>*/;
1406 }
1407 {
1408 abstract_compiler__AbstractCompilerVisitor__add(self, var276); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1409 }
1410 } else {
1411 }
1412 {
1413 separate_compiler__SeparateCompilerVisitor__hardening_cast_type(self, var_type_struct); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_cast_type on <self:SeparateCompilerVisitor>*/
1414 }
1415 if (varonce277) {
1416 var278 = varonce277;
1417 } else {
1418 var279 = " = ";
1419 var280 = 3;
1420 var281 = string__NativeString__to_s_with_length(var279, var280);
1421 var278 = var281;
1422 varonce277 = var278;
1423 }
1424 if (varonce282) {
1425 var283 = varonce282;
1426 } else {
1427 var284 = "->color;";
1428 var285 = 8;
1429 var286 = string__NativeString__to_s_with_length(var284, var285);
1430 var283 = var286;
1431 varonce282 = var283;
1432 }
1433 var287 = NEW_array__Array(&type_array__Arraykernel__Object);
1434 { /* var287 = array_instance Array[Object] */
1435 var288 = 4;
1436 var289 = NEW_array__NativeArray(var288, &type_array__NativeArraykernel__Object);
1437 ((struct instance_array__NativeArray*)var289)->values[0] = (val*) var_cltype;
1438 ((struct instance_array__NativeArray*)var289)->values[1] = (val*) var278;
1439 ((struct instance_array__NativeArray*)var289)->values[2] = (val*) var_type_struct;
1440 ((struct instance_array__NativeArray*)var289)->values[3] = (val*) var283;
1441 {
1442 ((void (*)(val*, val*, long))(var287->class->vft[COLOR_array__Array__with_native]))(var287, var289, var288) /* with_native on <var287:Array[Object]>*/;
1443 }
1444 }
1445 {
1446 var290 = ((val* (*)(val*))(var287->class->vft[COLOR_string__Object__to_s]))(var287) /* to_s on <var287:Array[Object]>*/;
1447 }
1448 {
1449 abstract_compiler__AbstractCompilerVisitor__add(self, var290); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1450 }
1451 if (varonce291) {
1452 var292 = varonce291;
1453 } else {
1454 var293 = " = ";
1455 var294 = 3;
1456 var295 = string__NativeString__to_s_with_length(var293, var294);
1457 var292 = var295;
1458 varonce291 = var292;
1459 }
1460 if (varonce296) {
1461 var297 = varonce296;
1462 } else {
1463 var298 = "->id;";
1464 var299 = 5;
1465 var300 = string__NativeString__to_s_with_length(var298, var299);
1466 var297 = var300;
1467 varonce296 = var297;
1468 }
1469 var301 = NEW_array__Array(&type_array__Arraykernel__Object);
1470 { /* var301 = array_instance Array[Object] */
1471 var302 = 4;
1472 var303 = NEW_array__NativeArray(var302, &type_array__NativeArraykernel__Object);
1473 ((struct instance_array__NativeArray*)var303)->values[0] = (val*) var_idtype;
1474 ((struct instance_array__NativeArray*)var303)->values[1] = (val*) var292;
1475 ((struct instance_array__NativeArray*)var303)->values[2] = (val*) var_type_struct;
1476 ((struct instance_array__NativeArray*)var303)->values[3] = (val*) var297;
1477 {
1478 ((void (*)(val*, val*, long))(var301->class->vft[COLOR_array__Array__with_native]))(var301, var303, var302) /* with_native on <var301:Array[Object]>*/;
1479 }
1480 }
1481 {
1482 var304 = ((val* (*)(val*))(var301->class->vft[COLOR_string__Object__to_s]))(var301) /* to_s on <var301:Array[Object]>*/;
1483 }
1484 {
1485 abstract_compiler__AbstractCompilerVisitor__add(self, var304); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1486 }
1487 var_306 = var_maybe_null;
1488 if (var_maybe_null){
1489 if (varonce307) {
1490 var308 = varonce307;
1491 } else {
1492 var309 = "0";
1493 var310 = 1;
1494 var311 = string__NativeString__to_s_with_length(var309, var310);
1495 var308 = var311;
1496 varonce307 = var308;
1497 }
1498 {
1499 var313 = string__FlatString___61d_61d(var_accept_null, var308);
1500 var312 = var313;
1501 }
1502 var305 = var312;
1503 } else {
1504 var305 = var_306;
1505 }
1506 if (var305){
1507 if (varonce314) {
1508 var315 = varonce314;
1509 } else {
1510 var316 = "is_nullable";
1511 var317 = 11;
1512 var318 = string__NativeString__to_s_with_length(var316, var317);
1513 var315 = var318;
1514 varonce314 = var315;
1515 }
1516 {
1517 var319 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var315);
1518 }
1519 var_is_nullable = var319;
1520 if (varonce320) {
1521 var321 = varonce320;
1522 } else {
1523 var322 = "short int ";
1524 var323 = 10;
1525 var324 = string__NativeString__to_s_with_length(var322, var323);
1526 var321 = var324;
1527 varonce320 = var321;
1528 }
1529 if (varonce325) {
1530 var326 = varonce325;
1531 } else {
1532 var327 = ";";
1533 var328 = 1;
1534 var329 = string__NativeString__to_s_with_length(var327, var328);
1535 var326 = var329;
1536 varonce325 = var326;
1537 }
1538 var330 = NEW_array__Array(&type_array__Arraykernel__Object);
1539 { /* var330 = array_instance Array[Object] */
1540 var331 = 3;
1541 var332 = NEW_array__NativeArray(var331, &type_array__NativeArraykernel__Object);
1542 ((struct instance_array__NativeArray*)var332)->values[0] = (val*) var321;
1543 ((struct instance_array__NativeArray*)var332)->values[1] = (val*) var_is_nullable;
1544 ((struct instance_array__NativeArray*)var332)->values[2] = (val*) var326;
1545 {
1546 ((void (*)(val*, val*, long))(var330->class->vft[COLOR_array__Array__with_native]))(var330, var332, var331) /* with_native on <var330:Array[Object]>*/;
1547 }
1548 }
1549 {
1550 var333 = ((val* (*)(val*))(var330->class->vft[COLOR_string__Object__to_s]))(var330) /* to_s on <var330:Array[Object]>*/;
1551 }
1552 {
1553 abstract_compiler__AbstractCompilerVisitor__add_decl(self, var333); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateCompilerVisitor>*/
1554 }
1555 if (varonce334) {
1556 var335 = varonce334;
1557 } else {
1558 var336 = " = ";
1559 var337 = 3;
1560 var338 = string__NativeString__to_s_with_length(var336, var337);
1561 var335 = var338;
1562 varonce334 = var335;
1563 }
1564 if (varonce339) {
1565 var340 = varonce339;
1566 } else {
1567 var341 = "->is_nullable;";
1568 var342 = 14;
1569 var343 = string__NativeString__to_s_with_length(var341, var342);
1570 var340 = var343;
1571 varonce339 = var340;
1572 }
1573 var344 = NEW_array__Array(&type_array__Arraykernel__Object);
1574 { /* var344 = array_instance Array[Object] */
1575 var345 = 4;
1576 var346 = NEW_array__NativeArray(var345, &type_array__NativeArraykernel__Object);
1577 ((struct instance_array__NativeArray*)var346)->values[0] = (val*) var_is_nullable;
1578 ((struct instance_array__NativeArray*)var346)->values[1] = (val*) var335;
1579 ((struct instance_array__NativeArray*)var346)->values[2] = (val*) var_type_struct;
1580 ((struct instance_array__NativeArray*)var346)->values[3] = (val*) var340;
1581 {
1582 ((void (*)(val*, val*, long))(var344->class->vft[COLOR_array__Array__with_native]))(var344, var346, var345) /* with_native on <var344:Array[Object]>*/;
1583 }
1584 }
1585 {
1586 var347 = ((val* (*)(val*))(var344->class->vft[COLOR_string__Object__to_s]))(var344) /* to_s on <var344:Array[Object]>*/;
1587 }
1588 {
1589 abstract_compiler__AbstractCompilerVisitor__add(self, var347); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1590 }
1591 {
1592 var348 = string__String__to_s(var_is_nullable);
1593 }
1594 var_accept_null = var348;
1595 } else {
1596 }
1597 } else {
1598 /* <var_ntype:MType> isa MClassType */
1599 cltype350 = type_model__MClassType.color;
1600 idtype351 = type_model__MClassType.id;
1601 if(cltype350 >= var_ntype->type->table_size) {
1602 var349 = 0;
1603 } else {
1604 var349 = var_ntype->type->type_table[cltype350] == idtype351;
1605 }
1606 if (var349){
1607 {
1608 { /* Inline separate_compiler#SeparateCompiler#undead_types (var_compiler) on <var_compiler:SeparateCompiler> */
1609 var354 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var_compiler:SeparateCompiler> */
1610 if (unlikely(var354 == NULL)) {
1611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
1612 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 156);
1613 show_backtrace(1);
1614 }
1615 var352 = var354;
1616 RET_LABEL353:(void)0;
1617 }
1618 }
1619 {
1620 ((void (*)(val*, val*))(var352->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var352, var_mtype) /* add on <var352:Set[MType]>*/;
1621 }
1622 if (varonce355) {
1623 var356 = varonce355;
1624 } else {
1625 var357 = "type_";
1626 var358 = 5;
1627 var359 = string__NativeString__to_s_with_length(var357, var358);
1628 var356 = var359;
1629 varonce355 = var356;
1630 }
1631 {
1632 var360 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
1633 }
1634 var361 = NEW_array__Array(&type_array__Arraykernel__Object);
1635 { /* var361 = array_instance Array[Object] */
1636 var362 = 2;
1637 var363 = NEW_array__NativeArray(var362, &type_array__NativeArraykernel__Object);
1638 ((struct instance_array__NativeArray*)var363)->values[0] = (val*) var356;
1639 ((struct instance_array__NativeArray*)var363)->values[1] = (val*) var360;
1640 {
1641 ((void (*)(val*, val*, long))(var361->class->vft[COLOR_array__Array__with_native]))(var361, var363, var362) /* with_native on <var361:Array[Object]>*/;
1642 }
1643 }
1644 {
1645 var364 = ((val* (*)(val*))(var361->class->vft[COLOR_string__Object__to_s]))(var361) /* to_s on <var361:Array[Object]>*/;
1646 }
1647 {
1648 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var364); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
1649 }
1650 if (varonce365) {
1651 var366 = varonce365;
1652 } else {
1653 var367 = "(&type_";
1654 var368 = 7;
1655 var369 = string__NativeString__to_s_with_length(var367, var368);
1656 var366 = var369;
1657 varonce365 = var366;
1658 }
1659 {
1660 var370 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
1661 }
1662 if (varonce371) {
1663 var372 = varonce371;
1664 } else {
1665 var373 = ")";
1666 var374 = 1;
1667 var375 = string__NativeString__to_s_with_length(var373, var374);
1668 var372 = var375;
1669 varonce371 = var372;
1670 }
1671 var376 = NEW_array__Array(&type_array__Arraykernel__Object);
1672 { /* var376 = array_instance Array[Object] */
1673 var377 = 3;
1674 var378 = NEW_array__NativeArray(var377, &type_array__NativeArraykernel__Object);
1675 ((struct instance_array__NativeArray*)var378)->values[0] = (val*) var366;
1676 ((struct instance_array__NativeArray*)var378)->values[1] = (val*) var370;
1677 ((struct instance_array__NativeArray*)var378)->values[2] = (val*) var372;
1678 {
1679 ((void (*)(val*, val*, long))(var376->class->vft[COLOR_array__Array__with_native]))(var376, var378, var377) /* with_native on <var376:Array[Object]>*/;
1680 }
1681 }
1682 {
1683 var379 = ((val* (*)(val*))(var376->class->vft[COLOR_string__Object__to_s]))(var376) /* to_s on <var376:Array[Object]>*/;
1684 }
1685 {
1686 separate_compiler__SeparateCompilerVisitor__hardening_cast_type(self, var379); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_cast_type on <self:SeparateCompilerVisitor>*/
1687 }
1688 if (varonce380) {
1689 var381 = varonce380;
1690 } else {
1691 var382 = " = type_";
1692 var383 = 8;
1693 var384 = string__NativeString__to_s_with_length(var382, var383);
1694 var381 = var384;
1695 varonce380 = var381;
1696 }
1697 {
1698 var385 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
1699 }
1700 if (varonce386) {
1701 var387 = varonce386;
1702 } else {
1703 var388 = ".color;";
1704 var389 = 7;
1705 var390 = string__NativeString__to_s_with_length(var388, var389);
1706 var387 = var390;
1707 varonce386 = var387;
1708 }
1709 var391 = NEW_array__Array(&type_array__Arraykernel__Object);
1710 { /* var391 = array_instance Array[Object] */
1711 var392 = 4;
1712 var393 = NEW_array__NativeArray(var392, &type_array__NativeArraykernel__Object);
1713 ((struct instance_array__NativeArray*)var393)->values[0] = (val*) var_cltype;
1714 ((struct instance_array__NativeArray*)var393)->values[1] = (val*) var381;
1715 ((struct instance_array__NativeArray*)var393)->values[2] = (val*) var385;
1716 ((struct instance_array__NativeArray*)var393)->values[3] = (val*) var387;
1717 {
1718 ((void (*)(val*, val*, long))(var391->class->vft[COLOR_array__Array__with_native]))(var391, var393, var392) /* with_native on <var391:Array[Object]>*/;
1719 }
1720 }
1721 {
1722 var394 = ((val* (*)(val*))(var391->class->vft[COLOR_string__Object__to_s]))(var391) /* to_s on <var391:Array[Object]>*/;
1723 }
1724 {
1725 abstract_compiler__AbstractCompilerVisitor__add(self, var394); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1726 }
1727 if (varonce395) {
1728 var396 = varonce395;
1729 } else {
1730 var397 = " = type_";
1731 var398 = 8;
1732 var399 = string__NativeString__to_s_with_length(var397, var398);
1733 var396 = var399;
1734 varonce395 = var396;
1735 }
1736 {
1737 var400 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
1738 }
1739 if (varonce401) {
1740 var402 = varonce401;
1741 } else {
1742 var403 = ".id;";
1743 var404 = 4;
1744 var405 = string__NativeString__to_s_with_length(var403, var404);
1745 var402 = var405;
1746 varonce401 = var402;
1747 }
1748 var406 = NEW_array__Array(&type_array__Arraykernel__Object);
1749 { /* var406 = array_instance Array[Object] */
1750 var407 = 4;
1751 var408 = NEW_array__NativeArray(var407, &type_array__NativeArraykernel__Object);
1752 ((struct instance_array__NativeArray*)var408)->values[0] = (val*) var_idtype;
1753 ((struct instance_array__NativeArray*)var408)->values[1] = (val*) var396;
1754 ((struct instance_array__NativeArray*)var408)->values[2] = (val*) var400;
1755 ((struct instance_array__NativeArray*)var408)->values[3] = (val*) var402;
1756 {
1757 ((void (*)(val*, val*, long))(var406->class->vft[COLOR_array__Array__with_native]))(var406, var408, var407) /* with_native on <var406:Array[Object]>*/;
1758 }
1759 }
1760 {
1761 var409 = ((val* (*)(val*))(var406->class->vft[COLOR_string__Object__to_s]))(var406) /* to_s on <var406:Array[Object]>*/;
1762 }
1763 {
1764 abstract_compiler__AbstractCompilerVisitor__add(self, var409); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1765 }
1766 {
1767 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var_compiler) on <var_compiler:SeparateCompiler> */
1768 var412 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var_compiler:SeparateCompiler> */
1769 if (unlikely(var412 == NULL)) {
1770 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1771 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
1772 show_backtrace(1);
1773 }
1774 var410 = var412;
1775 RET_LABEL411:(void)0;
1776 }
1777 }
1778 {
1779 { /* Inline modelbuilder#ModelBuilder#toolcontext (var410) on <var410:ModelBuilder> */
1780 var415 = var410->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var410:ModelBuilder> */
1781 if (unlikely(var415 == NULL)) {
1782 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1783 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1784 show_backtrace(1);
1785 }
1786 var413 = var415;
1787 RET_LABEL414:(void)0;
1788 }
1789 }
1790 {
1791 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var413) on <var413:ToolContext> */
1792 var418 = var413->attrs[COLOR_abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var413:ToolContext> */
1793 if (unlikely(var418 == NULL)) {
1794 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
1795 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 61);
1796 show_backtrace(1);
1797 }
1798 var416 = var418;
1799 RET_LABEL417:(void)0;
1800 }
1801 }
1802 {
1803 { /* Inline opts#Option#value (var416) on <var416:OptionBool> */
1804 var421 = var416->attrs[COLOR_opts__Option___value].val; /* _value on <var416:OptionBool> */
1805 var419 = var421;
1806 RET_LABEL420:(void)0;
1807 }
1808 }
1809 var422 = ((struct instance_kernel__Bool*)var419)->value; /* autounbox from nullable Object to Bool */;
1810 if (var422){
1811 {
1812 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1813 var425 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1814 if (unlikely(var425 == NULL)) {
1815 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1816 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1817 show_backtrace(1);
1818 }
1819 var423 = var425;
1820 RET_LABEL424:(void)0;
1821 }
1822 }
1823 {
1824 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (var423) on <var423:AbstractCompiler(SeparateCompiler)> */
1825 var428 = var423->attrs[COLOR_abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <var423:AbstractCompiler(SeparateCompiler)> */
1826 if (unlikely(var428 == NULL)) {
1827 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
1828 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 945);
1829 show_backtrace(1);
1830 }
1831 var426 = var428;
1832 RET_LABEL427:(void)0;
1833 }
1834 }
1835 var_429 = var426;
1836 var_430 = var_tag;
1837 {
1838 var431 = hash_collection__HashMap___91d_93d(var_429, var_430);
1839 }
1840 var432 = 1;
1841 {
1842 { /* Inline kernel#Int#+ (var431,var432) on <var431:nullable Object(Int)> */
1843 /* Covariant cast for argument 0 (i) <var432:Int> isa OTHER */
1844 /* <var432:Int> isa OTHER */
1845 var435 = 1; /* easy <var432:Int> isa OTHER*/
1846 if (unlikely(!var435)) {
1847 var_class_name438 = type_kernel__Int.name;
1848 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name438);
1849 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1850 show_backtrace(1);
1851 }
1852 var439 = ((struct instance_kernel__Int*)var431)->value; /* autounbox from nullable Object to Int */;
1853 var440 = var439 + var432;
1854 var433 = var440;
1855 goto RET_LABEL434;
1856 RET_LABEL434:(void)0;
1857 }
1858 }
1859 {
1860 var441 = BOX_kernel__Int(var433); /* autobox from Int to nullable Object */
1861 hash_collection__HashMap___91d_93d_61d(var_429, var_430, var441); /* Direct call hash_collection#HashMap#[]= on <var_429:HashMap[String, Int]>*/
1862 }
1863 if (varonce442) {
1864 var443 = varonce442;
1865 } else {
1866 var444 = "count_type_test_resolved_";
1867 var445 = 25;
1868 var446 = string__NativeString__to_s_with_length(var444, var445);
1869 var443 = var446;
1870 varonce442 = var443;
1871 }
1872 if (varonce447) {
1873 var448 = varonce447;
1874 } else {
1875 var449 = "++;";
1876 var450 = 3;
1877 var451 = string__NativeString__to_s_with_length(var449, var450);
1878 var448 = var451;
1879 varonce447 = var448;
1880 }
1881 var452 = NEW_array__Array(&type_array__Arraykernel__Object);
1882 { /* var452 = array_instance Array[Object] */
1883 var453 = 3;
1884 var454 = NEW_array__NativeArray(var453, &type_array__NativeArraykernel__Object);
1885 ((struct instance_array__NativeArray*)var454)->values[0] = (val*) var443;
1886 ((struct instance_array__NativeArray*)var454)->values[1] = (val*) var_tag;
1887 ((struct instance_array__NativeArray*)var454)->values[2] = (val*) var448;
1888 {
1889 ((void (*)(val*, val*, long))(var452->class->vft[COLOR_array__Array__with_native]))(var452, var454, var453) /* with_native on <var452:Array[Object]>*/;
1890 }
1891 }
1892 {
1893 var455 = ((val* (*)(val*))(var452->class->vft[COLOR_string__Object__to_s]))(var452) /* to_s on <var452:Array[Object]>*/;
1894 }
1895 {
1896 abstract_compiler__AbstractCompilerVisitor__add(self, var455); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1897 }
1898 } else {
1899 }
1900 } else {
1901 if (varonce456) {
1902 var457 = varonce456;
1903 } else {
1904 var458 = "PRINT_ERROR(\"NOT YET IMPLEMENTED: type_test(%s, ";
1905 var459 = 48;
1906 var460 = string__NativeString__to_s_with_length(var458, var459);
1907 var457 = var460;
1908 varonce456 = var457;
1909 }
1910 if (varonce461) {
1911 var462 = varonce461;
1912 } else {
1913 var463 = ").\\n\", \"";
1914 var464 = 8;
1915 var465 = string__NativeString__to_s_with_length(var463, var464);
1916 var462 = var465;
1917 varonce461 = var462;
1918 }
1919 {
1920 var466 = abstract_compiler__RuntimeVariable__inspect(var_value);
1921 }
1922 if (varonce467) {
1923 var468 = varonce467;
1924 } else {
1925 var469 = "\"); show_backtrace(1);";
1926 var470 = 22;
1927 var471 = string__NativeString__to_s_with_length(var469, var470);
1928 var468 = var471;
1929 varonce467 = var468;
1930 }
1931 var472 = NEW_array__Array(&type_array__Arraykernel__Object);
1932 { /* var472 = array_instance Array[Object] */
1933 var473 = 5;
1934 var474 = NEW_array__NativeArray(var473, &type_array__NativeArraykernel__Object);
1935 ((struct instance_array__NativeArray*)var474)->values[0] = (val*) var457;
1936 ((struct instance_array__NativeArray*)var474)->values[1] = (val*) var_mtype;
1937 ((struct instance_array__NativeArray*)var474)->values[2] = (val*) var462;
1938 ((struct instance_array__NativeArray*)var474)->values[3] = (val*) var466;
1939 ((struct instance_array__NativeArray*)var474)->values[4] = (val*) var468;
1940 {
1941 ((void (*)(val*, val*, long))(var472->class->vft[COLOR_array__Array__with_native]))(var472, var474, var473) /* with_native on <var472:Array[Object]>*/;
1942 }
1943 }
1944 {
1945 var475 = ((val* (*)(val*))(var472->class->vft[COLOR_string__Object__to_s]))(var472) /* to_s on <var472:Array[Object]>*/;
1946 }
1947 {
1948 abstract_compiler__AbstractCompilerVisitor__add(self, var475); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1949 }
1950 }
1951 }
1952 if (var_maybe_null){
1953 if (varonce476) {
1954 var477 = varonce476;
1955 } else {
1956 var478 = "if(";
1957 var479 = 3;
1958 var480 = string__NativeString__to_s_with_length(var478, var479);
1959 var477 = var480;
1960 varonce476 = var477;
1961 }
1962 if (varonce481) {
1963 var482 = varonce481;
1964 } else {
1965 var483 = " == NULL) {";
1966 var484 = 11;
1967 var485 = string__NativeString__to_s_with_length(var483, var484);
1968 var482 = var485;
1969 varonce481 = var482;
1970 }
1971 var486 = NEW_array__Array(&type_array__Arraykernel__Object);
1972 { /* var486 = array_instance Array[Object] */
1973 var487 = 3;
1974 var488 = NEW_array__NativeArray(var487, &type_array__NativeArraykernel__Object);
1975 ((struct instance_array__NativeArray*)var488)->values[0] = (val*) var477;
1976 ((struct instance_array__NativeArray*)var488)->values[1] = (val*) var_value;
1977 ((struct instance_array__NativeArray*)var488)->values[2] = (val*) var482;
1978 {
1979 ((void (*)(val*, val*, long))(var486->class->vft[COLOR_array__Array__with_native]))(var486, var488, var487) /* with_native on <var486:Array[Object]>*/;
1980 }
1981 }
1982 {
1983 var489 = ((val* (*)(val*))(var486->class->vft[COLOR_string__Object__to_s]))(var486) /* to_s on <var486:Array[Object]>*/;
1984 }
1985 {
1986 abstract_compiler__AbstractCompilerVisitor__add(self, var489); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1987 }
1988 if (varonce490) {
1989 var491 = varonce490;
1990 } else {
1991 var492 = " = ";
1992 var493 = 3;
1993 var494 = string__NativeString__to_s_with_length(var492, var493);
1994 var491 = var494;
1995 varonce490 = var491;
1996 }
1997 if (varonce495) {
1998 var496 = varonce495;
1999 } else {
2000 var497 = ";";
2001 var498 = 1;
2002 var499 = string__NativeString__to_s_with_length(var497, var498);
2003 var496 = var499;
2004 varonce495 = var496;
2005 }
2006 var500 = NEW_array__Array(&type_array__Arraykernel__Object);
2007 { /* var500 = array_instance Array[Object] */
2008 var501 = 4;
2009 var502 = NEW_array__NativeArray(var501, &type_array__NativeArraykernel__Object);
2010 ((struct instance_array__NativeArray*)var502)->values[0] = (val*) var_res;
2011 ((struct instance_array__NativeArray*)var502)->values[1] = (val*) var491;
2012 ((struct instance_array__NativeArray*)var502)->values[2] = (val*) var_accept_null;
2013 ((struct instance_array__NativeArray*)var502)->values[3] = (val*) var496;
2014 {
2015 ((void (*)(val*, val*, long))(var500->class->vft[COLOR_array__Array__with_native]))(var500, var502, var501) /* with_native on <var500:Array[Object]>*/;
2016 }
2017 }
2018 {
2019 var503 = ((val* (*)(val*))(var500->class->vft[COLOR_string__Object__to_s]))(var500) /* to_s on <var500:Array[Object]>*/;
2020 }
2021 {
2022 abstract_compiler__AbstractCompilerVisitor__add(self, var503); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2023 }
2024 if (varonce504) {
2025 var505 = varonce504;
2026 } else {
2027 var506 = "} else {";
2028 var507 = 8;
2029 var508 = string__NativeString__to_s_with_length(var506, var507);
2030 var505 = var508;
2031 varonce504 = var505;
2032 }
2033 {
2034 abstract_compiler__AbstractCompilerVisitor__add(self, var505); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2035 }
2036 } else {
2037 }
2038 {
2039 var509 = separate_compiler__SeparateCompilerVisitor__type_info(self, var_value);
2040 }
2041 var_value_type_info = var509;
2042 if (varonce510) {
2043 var511 = varonce510;
2044 } else {
2045 var512 = "if(";
2046 var513 = 3;
2047 var514 = string__NativeString__to_s_with_length(var512, var513);
2048 var511 = var514;
2049 varonce510 = var511;
2050 }
2051 if (varonce515) {
2052 var516 = varonce515;
2053 } else {
2054 var517 = " >= ";
2055 var518 = 4;
2056 var519 = string__NativeString__to_s_with_length(var517, var518);
2057 var516 = var519;
2058 varonce515 = var516;
2059 }
2060 if (varonce520) {
2061 var521 = varonce520;
2062 } else {
2063 var522 = "->table_size) {";
2064 var523 = 15;
2065 var524 = string__NativeString__to_s_with_length(var522, var523);
2066 var521 = var524;
2067 varonce520 = var521;
2068 }
2069 var525 = NEW_array__Array(&type_array__Arraykernel__Object);
2070 { /* var525 = array_instance Array[Object] */
2071 var526 = 5;
2072 var527 = NEW_array__NativeArray(var526, &type_array__NativeArraykernel__Object);
2073 ((struct instance_array__NativeArray*)var527)->values[0] = (val*) var511;
2074 ((struct instance_array__NativeArray*)var527)->values[1] = (val*) var_cltype;
2075 ((struct instance_array__NativeArray*)var527)->values[2] = (val*) var516;
2076 ((struct instance_array__NativeArray*)var527)->values[3] = (val*) var_value_type_info;
2077 ((struct instance_array__NativeArray*)var527)->values[4] = (val*) var521;
2078 {
2079 ((void (*)(val*, val*, long))(var525->class->vft[COLOR_array__Array__with_native]))(var525, var527, var526) /* with_native on <var525:Array[Object]>*/;
2080 }
2081 }
2082 {
2083 var528 = ((val* (*)(val*))(var525->class->vft[COLOR_string__Object__to_s]))(var525) /* to_s on <var525:Array[Object]>*/;
2084 }
2085 {
2086 abstract_compiler__AbstractCompilerVisitor__add(self, var528); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2087 }
2088 if (varonce529) {
2089 var530 = varonce529;
2090 } else {
2091 var531 = " = 0;";
2092 var532 = 5;
2093 var533 = string__NativeString__to_s_with_length(var531, var532);
2094 var530 = var533;
2095 varonce529 = var530;
2096 }
2097 var534 = NEW_array__Array(&type_array__Arraykernel__Object);
2098 { /* var534 = array_instance Array[Object] */
2099 var535 = 2;
2100 var536 = NEW_array__NativeArray(var535, &type_array__NativeArraykernel__Object);
2101 ((struct instance_array__NativeArray*)var536)->values[0] = (val*) var_res;
2102 ((struct instance_array__NativeArray*)var536)->values[1] = (val*) var530;
2103 {
2104 ((void (*)(val*, val*, long))(var534->class->vft[COLOR_array__Array__with_native]))(var534, var536, var535) /* with_native on <var534:Array[Object]>*/;
2105 }
2106 }
2107 {
2108 var537 = ((val* (*)(val*))(var534->class->vft[COLOR_string__Object__to_s]))(var534) /* to_s on <var534:Array[Object]>*/;
2109 }
2110 {
2111 abstract_compiler__AbstractCompilerVisitor__add(self, var537); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2112 }
2113 if (varonce538) {
2114 var539 = varonce538;
2115 } else {
2116 var540 = "} else {";
2117 var541 = 8;
2118 var542 = string__NativeString__to_s_with_length(var540, var541);
2119 var539 = var542;
2120 varonce538 = var539;
2121 }
2122 {
2123 abstract_compiler__AbstractCompilerVisitor__add(self, var539); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2124 }
2125 if (varonce543) {
2126 var544 = varonce543;
2127 } else {
2128 var545 = " = ";
2129 var546 = 3;
2130 var547 = string__NativeString__to_s_with_length(var545, var546);
2131 var544 = var547;
2132 varonce543 = var544;
2133 }
2134 if (varonce548) {
2135 var549 = varonce548;
2136 } else {
2137 var550 = "->type_table[";
2138 var551 = 13;
2139 var552 = string__NativeString__to_s_with_length(var550, var551);
2140 var549 = var552;
2141 varonce548 = var549;
2142 }
2143 if (varonce553) {
2144 var554 = varonce553;
2145 } else {
2146 var555 = "] == ";
2147 var556 = 5;
2148 var557 = string__NativeString__to_s_with_length(var555, var556);
2149 var554 = var557;
2150 varonce553 = var554;
2151 }
2152 if (varonce558) {
2153 var559 = varonce558;
2154 } else {
2155 var560 = ";";
2156 var561 = 1;
2157 var562 = string__NativeString__to_s_with_length(var560, var561);
2158 var559 = var562;
2159 varonce558 = var559;
2160 }
2161 var563 = NEW_array__Array(&type_array__Arraykernel__Object);
2162 { /* var563 = array_instance Array[Object] */
2163 var564 = 8;
2164 var565 = NEW_array__NativeArray(var564, &type_array__NativeArraykernel__Object);
2165 ((struct instance_array__NativeArray*)var565)->values[0] = (val*) var_res;
2166 ((struct instance_array__NativeArray*)var565)->values[1] = (val*) var544;
2167 ((struct instance_array__NativeArray*)var565)->values[2] = (val*) var_value_type_info;
2168 ((struct instance_array__NativeArray*)var565)->values[3] = (val*) var549;
2169 ((struct instance_array__NativeArray*)var565)->values[4] = (val*) var_cltype;
2170 ((struct instance_array__NativeArray*)var565)->values[5] = (val*) var554;
2171 ((struct instance_array__NativeArray*)var565)->values[6] = (val*) var_idtype;
2172 ((struct instance_array__NativeArray*)var565)->values[7] = (val*) var559;
2173 {
2174 ((void (*)(val*, val*, long))(var563->class->vft[COLOR_array__Array__with_native]))(var563, var565, var564) /* with_native on <var563:Array[Object]>*/;
2175 }
2176 }
2177 {
2178 var566 = ((val* (*)(val*))(var563->class->vft[COLOR_string__Object__to_s]))(var563) /* to_s on <var563:Array[Object]>*/;
2179 }
2180 {
2181 abstract_compiler__AbstractCompilerVisitor__add(self, var566); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2182 }
2183 if (varonce567) {
2184 var568 = varonce567;
2185 } else {
2186 var569 = "}";
2187 var570 = 1;
2188 var571 = string__NativeString__to_s_with_length(var569, var570);
2189 var568 = var571;
2190 varonce567 = var568;
2191 }
2192 {
2193 abstract_compiler__AbstractCompilerVisitor__add(self, var568); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2194 }
2195 if (var_maybe_null){
2196 if (varonce572) {
2197 var573 = varonce572;
2198 } else {
2199 var574 = "}";
2200 var575 = 1;
2201 var576 = string__NativeString__to_s_with_length(var574, var575);
2202 var573 = var576;
2203 varonce572 = var573;
2204 }
2205 {
2206 abstract_compiler__AbstractCompilerVisitor__add(self, var573); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2207 }
2208 } else {
2209 }
2210 var = var_res;
2211 goto RET_LABEL;
2212 RET_LABEL:;
2213 return var;
2214 }
2215 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
2216 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
2217 val* var /* : RuntimeVariable */;
2218 val* var1 /* : RuntimeVariable */;
2219 var1 = separate_compiler__SeparateCompilerVisitor__type_test(self, p0, p1, p2);
2220 var = var1;
2221 RET_LABEL:;
2222 return var;
2223 }
2224 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
2225 val* separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
2226 val* var /* : RuntimeVariable */;
2227 val* var_value1 /* var value1: RuntimeVariable */;
2228 val* var_value2 /* var value2: RuntimeVariable */;
2229 val* var1 /* : MClassType */;
2230 val* var2 /* : RuntimeVariable */;
2231 val* var_res /* var res: RuntimeVariable */;
2232 short int var3 /* : Bool */;
2233 val* var4 /* : MType */;
2234 val* var6 /* : MType */;
2235 val* var7 /* : String */;
2236 static val* varonce;
2237 val* var8 /* : String */;
2238 char* var9 /* : NativeString */;
2239 long var10 /* : Int */;
2240 val* var11 /* : FlatString */;
2241 short int var12 /* : Bool */;
2242 short int var13 /* : Bool */;
2243 val* var_other /* var other: nullable Object */;
2244 short int var15 /* : Bool */;
2245 short int var16 /* : Bool */;
2246 short int var17 /* : Bool */;
2247 short int var_ /* var : Bool */;
2248 val* var18 /* : MType */;
2249 val* var20 /* : MType */;
2250 val* var21 /* : String */;
2251 static val* varonce22;
2252 val* var23 /* : String */;
2253 char* var24 /* : NativeString */;
2254 long var25 /* : Int */;
2255 val* var26 /* : FlatString */;
2256 short int var27 /* : Bool */;
2257 short int var28 /* : Bool */;
2258 val* var_tmp /* var tmp: RuntimeVariable */;
2259 val* var29 /* : MType */;
2260 val* var31 /* : MType */;
2261 val* var32 /* : String */;
2262 static val* varonce33;
2263 val* var34 /* : String */;
2264 char* var35 /* : NativeString */;
2265 long var36 /* : Int */;
2266 val* var37 /* : FlatString */;
2267 short int var38 /* : Bool */;
2268 short int var39 /* : Bool */;
2269 short int var41 /* : Bool */;
2270 short int var42 /* : Bool */;
2271 short int var43 /* : Bool */;
2272 val* var44 /* : MType */;
2273 val* var46 /* : MType */;
2274 val* var47 /* : MType */;
2275 val* var49 /* : MType */;
2276 short int var50 /* : Bool */;
2277 short int var51 /* : Bool */;
2278 val* var_other53 /* var other: nullable Object */;
2279 short int var54 /* : Bool */;
2280 short int var56 /* : Bool */;
2281 static val* varonce57;
2282 val* var58 /* : String */;
2283 char* var59 /* : NativeString */;
2284 long var60 /* : Int */;
2285 val* var61 /* : FlatString */;
2286 val* var62 /* : MType */;
2287 val* var64 /* : MType */;
2288 static val* varonce65;
2289 val* var66 /* : String */;
2290 char* var67 /* : NativeString */;
2291 long var68 /* : Int */;
2292 val* var69 /* : FlatString */;
2293 val* var70 /* : MType */;
2294 val* var72 /* : MType */;
2295 static val* varonce73;
2296 val* var74 /* : String */;
2297 char* var75 /* : NativeString */;
2298 long var76 /* : Int */;
2299 val* var77 /* : FlatString */;
2300 val* var78 /* : Array[Object] */;
2301 long var79 /* : Int */;
2302 val* var80 /* : NativeArray[Object] */;
2303 val* var81 /* : String */;
2304 val* var82 /* : MType */;
2305 val* var84 /* : MType */;
2306 val* var85 /* : String */;
2307 static val* varonce86;
2308 val* var87 /* : String */;
2309 char* var88 /* : NativeString */;
2310 long var89 /* : Int */;
2311 val* var90 /* : FlatString */;
2312 short int var91 /* : Bool */;
2313 short int var92 /* : Bool */;
2314 short int var94 /* : Bool */;
2315 short int var95 /* : Bool */;
2316 short int var96 /* : Bool */;
2317 static val* varonce97;
2318 val* var98 /* : String */;
2319 char* var99 /* : NativeString */;
2320 long var100 /* : Int */;
2321 val* var101 /* : FlatString */;
2322 val* var102 /* : MType */;
2323 val* var104 /* : MType */;
2324 static val* varonce105;
2325 val* var106 /* : String */;
2326 char* var107 /* : NativeString */;
2327 long var108 /* : Int */;
2328 val* var109 /* : FlatString */;
2329 val* var110 /* : MType */;
2330 val* var112 /* : MType */;
2331 static val* varonce113;
2332 val* var114 /* : String */;
2333 char* var115 /* : NativeString */;
2334 long var116 /* : Int */;
2335 val* var117 /* : FlatString */;
2336 val* var118 /* : Array[Object] */;
2337 long var119 /* : Int */;
2338 val* var120 /* : NativeArray[Object] */;
2339 val* var121 /* : String */;
2340 val* var122 /* : MType */;
2341 val* var124 /* : MType */;
2342 short int var125 /* : Bool */;
2343 int cltype;
2344 int idtype;
2345 const char* var_class_name;
2346 val* var_mtype1 /* var mtype1: MClassType */;
2347 static val* varonce126;
2348 val* var127 /* : String */;
2349 char* var128 /* : NativeString */;
2350 long var129 /* : Int */;
2351 val* var130 /* : FlatString */;
2352 val* var131 /* : String */;
2353 val* var132 /* : Array[Object] */;
2354 long var133 /* : Int */;
2355 val* var134 /* : NativeArray[Object] */;
2356 val* var135 /* : String */;
2357 static val* varonce136;
2358 val* var137 /* : String */;
2359 char* var138 /* : NativeString */;
2360 long var139 /* : Int */;
2361 val* var140 /* : FlatString */;
2362 static val* varonce141;
2363 val* var142 /* : String */;
2364 char* var143 /* : NativeString */;
2365 long var144 /* : Int */;
2366 val* var145 /* : FlatString */;
2367 static val* varonce146;
2368 val* var147 /* : String */;
2369 char* var148 /* : NativeString */;
2370 long var149 /* : Int */;
2371 val* var150 /* : FlatString */;
2372 val* var151 /* : String */;
2373 static val* varonce152;
2374 val* var153 /* : String */;
2375 char* var154 /* : NativeString */;
2376 long var155 /* : Int */;
2377 val* var156 /* : FlatString */;
2378 val* var157 /* : Array[Object] */;
2379 long var158 /* : Int */;
2380 val* var159 /* : NativeArray[Object] */;
2381 val* var160 /* : String */;
2382 static val* varonce161;
2383 val* var162 /* : String */;
2384 char* var163 /* : NativeString */;
2385 long var164 /* : Int */;
2386 val* var165 /* : FlatString */;
2387 static val* varonce166;
2388 val* var167 /* : String */;
2389 char* var168 /* : NativeString */;
2390 long var169 /* : Int */;
2391 val* var170 /* : FlatString */;
2392 static val* varonce171;
2393 val* var172 /* : String */;
2394 char* var173 /* : NativeString */;
2395 long var174 /* : Int */;
2396 val* var175 /* : FlatString */;
2397 static val* varonce176;
2398 val* var177 /* : String */;
2399 char* var178 /* : NativeString */;
2400 long var179 /* : Int */;
2401 val* var180 /* : FlatString */;
2402 static val* varonce181;
2403 val* var182 /* : String */;
2404 char* var183 /* : NativeString */;
2405 long var184 /* : Int */;
2406 val* var185 /* : FlatString */;
2407 static val* varonce186;
2408 val* var187 /* : String */;
2409 char* var188 /* : NativeString */;
2410 long var189 /* : Int */;
2411 val* var190 /* : FlatString */;
2412 static val* varonce191;
2413 val* var192 /* : String */;
2414 char* var193 /* : NativeString */;
2415 long var194 /* : Int */;
2416 val* var195 /* : FlatString */;
2417 val* var196 /* : Array[Object] */;
2418 long var197 /* : Int */;
2419 val* var198 /* : NativeArray[Object] */;
2420 val* var199 /* : String */;
2421 var_value1 = p0;
2422 var_value2 = p1;
2423 {
2424 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
2425 }
2426 {
2427 var2 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var1);
2428 }
2429 var_res = var2;
2430 {
2431 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
2432 var6 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
2433 if (unlikely(var6 == NULL)) {
2434 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2435 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2436 show_backtrace(1);
2437 }
2438 var4 = var6;
2439 RET_LABEL5:(void)0;
2440 }
2441 }
2442 {
2443 var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
2444 }
2445 if (varonce) {
2446 var8 = varonce;
2447 } else {
2448 var9 = "val*";
2449 var10 = 4;
2450 var11 = string__NativeString__to_s_with_length(var9, var10);
2451 var8 = var11;
2452 varonce = var8;
2453 }
2454 {
2455 { /* Inline kernel#Object#!= (var7,var8) on <var7:String> */
2456 var_other = var8;
2457 {
2458 var16 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_kernel__Object___61d_61d]))(var7, var_other) /* == on <var7:String>*/;
2459 var15 = var16;
2460 }
2461 var17 = !var15;
2462 var13 = var17;
2463 goto RET_LABEL14;
2464 RET_LABEL14:(void)0;
2465 }
2466 var12 = var13;
2467 }
2468 var_ = var12;
2469 if (var12){
2470 {
2471 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
2472 var20 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
2473 if (unlikely(var20 == NULL)) {
2474 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2475 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2476 show_backtrace(1);
2477 }
2478 var18 = var20;
2479 RET_LABEL19:(void)0;
2480 }
2481 }
2482 {
2483 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__MType__ctype]))(var18) /* ctype on <var18:MType>*/;
2484 }
2485 if (varonce22) {
2486 var23 = varonce22;
2487 } else {
2488 var24 = "val*";
2489 var25 = 4;
2490 var26 = string__NativeString__to_s_with_length(var24, var25);
2491 var23 = var26;
2492 varonce22 = var23;
2493 }
2494 {
2495 var28 = string__FlatString___61d_61d(var21, var23);
2496 var27 = var28;
2497 }
2498 var3 = var27;
2499 } else {
2500 var3 = var_;
2501 }
2502 if (var3){
2503 var_tmp = var_value1;
2504 var_value1 = var_value2;
2505 var_value2 = var_tmp;
2506 } else {
2507 }
2508 {
2509 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
2510 var31 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
2511 if (unlikely(var31 == NULL)) {
2512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2513 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2514 show_backtrace(1);
2515 }
2516 var29 = var31;
2517 RET_LABEL30:(void)0;
2518 }
2519 }
2520 {
2521 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_compiler__MType__ctype]))(var29) /* ctype on <var29:MType>*/;
2522 }
2523 if (varonce33) {
2524 var34 = varonce33;
2525 } else {
2526 var35 = "val*";
2527 var36 = 4;
2528 var37 = string__NativeString__to_s_with_length(var35, var36);
2529 var34 = var37;
2530 varonce33 = var34;
2531 }
2532 {
2533 { /* Inline kernel#Object#!= (var32,var34) on <var32:String> */
2534 var_other = var34;
2535 {
2536 var42 = ((short int (*)(val*, val*))(var32->class->vft[COLOR_kernel__Object___61d_61d]))(var32, var_other) /* == on <var32:String>*/;
2537 var41 = var42;
2538 }
2539 var43 = !var41;
2540 var39 = var43;
2541 goto RET_LABEL40;
2542 RET_LABEL40:(void)0;
2543 }
2544 var38 = var39;
2545 }
2546 if (var38){
2547 {
2548 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
2549 var46 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
2550 if (unlikely(var46 == NULL)) {
2551 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2552 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2553 show_backtrace(1);
2554 }
2555 var44 = var46;
2556 RET_LABEL45:(void)0;
2557 }
2558 }
2559 {
2560 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
2561 var49 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
2562 if (unlikely(var49 == NULL)) {
2563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2564 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2565 show_backtrace(1);
2566 }
2567 var47 = var49;
2568 RET_LABEL48:(void)0;
2569 }
2570 }
2571 {
2572 { /* Inline kernel#Object#== (var44,var47) on <var44:MType> */
2573 var_other53 = var47;
2574 {
2575 { /* Inline kernel#Object#is_same_instance (var44,var_other53) on <var44:MType> */
2576 var56 = var44 == var_other53;
2577 var54 = var56;
2578 goto RET_LABEL55;
2579 RET_LABEL55:(void)0;
2580 }
2581 }
2582 var51 = var54;
2583 goto RET_LABEL52;
2584 RET_LABEL52:(void)0;
2585 }
2586 var50 = var51;
2587 }
2588 if (var50){
2589 if (varonce57) {
2590 var58 = varonce57;
2591 } else {
2592 var59 = " = 1; /* is_same_type_test: compatible types ";
2593 var60 = 45;
2594 var61 = string__NativeString__to_s_with_length(var59, var60);
2595 var58 = var61;
2596 varonce57 = var58;
2597 }
2598 {
2599 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
2600 var64 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
2601 if (unlikely(var64 == NULL)) {
2602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2603 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2604 show_backtrace(1);
2605 }
2606 var62 = var64;
2607 RET_LABEL63:(void)0;
2608 }
2609 }
2610 if (varonce65) {
2611 var66 = varonce65;
2612 } else {
2613 var67 = " vs. ";
2614 var68 = 5;
2615 var69 = string__NativeString__to_s_with_length(var67, var68);
2616 var66 = var69;
2617 varonce65 = var66;
2618 }
2619 {
2620 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
2621 var72 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
2622 if (unlikely(var72 == NULL)) {
2623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2624 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2625 show_backtrace(1);
2626 }
2627 var70 = var72;
2628 RET_LABEL71:(void)0;
2629 }
2630 }
2631 if (varonce73) {
2632 var74 = varonce73;
2633 } else {
2634 var75 = " */";
2635 var76 = 3;
2636 var77 = string__NativeString__to_s_with_length(var75, var76);
2637 var74 = var77;
2638 varonce73 = var74;
2639 }
2640 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
2641 { /* var78 = array_instance Array[Object] */
2642 var79 = 6;
2643 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
2644 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var_res;
2645 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var58;
2646 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var62;
2647 ((struct instance_array__NativeArray*)var80)->values[3] = (val*) var66;
2648 ((struct instance_array__NativeArray*)var80)->values[4] = (val*) var70;
2649 ((struct instance_array__NativeArray*)var80)->values[5] = (val*) var74;
2650 {
2651 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
2652 }
2653 }
2654 {
2655 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
2656 }
2657 {
2658 abstract_compiler__AbstractCompilerVisitor__add(self, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2659 }
2660 } else {
2661 {
2662 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
2663 var84 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
2664 if (unlikely(var84 == NULL)) {
2665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2666 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2667 show_backtrace(1);
2668 }
2669 var82 = var84;
2670 RET_LABEL83:(void)0;
2671 }
2672 }
2673 {
2674 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_abstract_compiler__MType__ctype]))(var82) /* ctype on <var82:MType>*/;
2675 }
2676 if (varonce86) {
2677 var87 = varonce86;
2678 } else {
2679 var88 = "val*";
2680 var89 = 4;
2681 var90 = string__NativeString__to_s_with_length(var88, var89);
2682 var87 = var90;
2683 varonce86 = var87;
2684 }
2685 {
2686 { /* Inline kernel#Object#!= (var85,var87) on <var85:String> */
2687 var_other = var87;
2688 {
2689 var95 = ((short int (*)(val*, val*))(var85->class->vft[COLOR_kernel__Object___61d_61d]))(var85, var_other) /* == on <var85:String>*/;
2690 var94 = var95;
2691 }
2692 var96 = !var94;
2693 var92 = var96;
2694 goto RET_LABEL93;
2695 RET_LABEL93:(void)0;
2696 }
2697 var91 = var92;
2698 }
2699 if (var91){
2700 if (varonce97) {
2701 var98 = varonce97;
2702 } else {
2703 var99 = " = 0; /* is_same_type_test: incompatible types ";
2704 var100 = 47;
2705 var101 = string__NativeString__to_s_with_length(var99, var100);
2706 var98 = var101;
2707 varonce97 = var98;
2708 }
2709 {
2710 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
2711 var104 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
2712 if (unlikely(var104 == NULL)) {
2713 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2714 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2715 show_backtrace(1);
2716 }
2717 var102 = var104;
2718 RET_LABEL103:(void)0;
2719 }
2720 }
2721 if (varonce105) {
2722 var106 = varonce105;
2723 } else {
2724 var107 = " vs. ";
2725 var108 = 5;
2726 var109 = string__NativeString__to_s_with_length(var107, var108);
2727 var106 = var109;
2728 varonce105 = var106;
2729 }
2730 {
2731 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
2732 var112 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
2733 if (unlikely(var112 == NULL)) {
2734 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2735 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2736 show_backtrace(1);
2737 }
2738 var110 = var112;
2739 RET_LABEL111:(void)0;
2740 }
2741 }
2742 if (varonce113) {
2743 var114 = varonce113;
2744 } else {
2745 var115 = "*/";
2746 var116 = 2;
2747 var117 = string__NativeString__to_s_with_length(var115, var116);
2748 var114 = var117;
2749 varonce113 = var114;
2750 }
2751 var118 = NEW_array__Array(&type_array__Arraykernel__Object);
2752 { /* var118 = array_instance Array[Object] */
2753 var119 = 6;
2754 var120 = NEW_array__NativeArray(var119, &type_array__NativeArraykernel__Object);
2755 ((struct instance_array__NativeArray*)var120)->values[0] = (val*) var_res;
2756 ((struct instance_array__NativeArray*)var120)->values[1] = (val*) var98;
2757 ((struct instance_array__NativeArray*)var120)->values[2] = (val*) var102;
2758 ((struct instance_array__NativeArray*)var120)->values[3] = (val*) var106;
2759 ((struct instance_array__NativeArray*)var120)->values[4] = (val*) var110;
2760 ((struct instance_array__NativeArray*)var120)->values[5] = (val*) var114;
2761 {
2762 ((void (*)(val*, val*, long))(var118->class->vft[COLOR_array__Array__with_native]))(var118, var120, var119) /* with_native on <var118:Array[Object]>*/;
2763 }
2764 }
2765 {
2766 var121 = ((val* (*)(val*))(var118->class->vft[COLOR_string__Object__to_s]))(var118) /* to_s on <var118:Array[Object]>*/;
2767 }
2768 {
2769 abstract_compiler__AbstractCompilerVisitor__add(self, var121); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2770 }
2771 } else {
2772 {
2773 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
2774 var124 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
2775 if (unlikely(var124 == NULL)) {
2776 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2777 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
2778 show_backtrace(1);
2779 }
2780 var122 = var124;
2781 RET_LABEL123:(void)0;
2782 }
2783 }
2784 /* <var122:MType> isa MClassType */
2785 cltype = type_model__MClassType.color;
2786 idtype = type_model__MClassType.id;
2787 if(cltype >= var122->type->table_size) {
2788 var125 = 0;
2789 } else {
2790 var125 = var122->type->type_table[cltype] == idtype;
2791 }
2792 if (unlikely(!var125)) {
2793 var_class_name = var122 == NULL ? "null" : var122->type->name;
2794 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
2795 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1563);
2796 show_backtrace(1);
2797 }
2798 var_mtype1 = var122;
2799 if (varonce126) {
2800 var127 = varonce126;
2801 } else {
2802 var128 = "class_";
2803 var129 = 6;
2804 var130 = string__NativeString__to_s_with_length(var128, var129);
2805 var127 = var130;
2806 varonce126 = var127;
2807 }
2808 {
2809 var131 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
2810 }
2811 var132 = NEW_array__Array(&type_array__Arraykernel__Object);
2812 { /* var132 = array_instance Array[Object] */
2813 var133 = 2;
2814 var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object);
2815 ((struct instance_array__NativeArray*)var134)->values[0] = (val*) var127;
2816 ((struct instance_array__NativeArray*)var134)->values[1] = (val*) var131;
2817 {
2818 ((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on <var132:Array[Object]>*/;
2819 }
2820 }
2821 {
2822 var135 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on <var132:Array[Object]>*/;
2823 }
2824 {
2825 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var135); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
2826 }
2827 if (varonce136) {
2828 var137 = varonce136;
2829 } else {
2830 var138 = " = (";
2831 var139 = 4;
2832 var140 = string__NativeString__to_s_with_length(var138, var139);
2833 var137 = var140;
2834 varonce136 = var137;
2835 }
2836 if (varonce141) {
2837 var142 = varonce141;
2838 } else {
2839 var143 = " != NULL) && (";
2840 var144 = 14;
2841 var145 = string__NativeString__to_s_with_length(var143, var144);
2842 var142 = var145;
2843 varonce141 = var142;
2844 }
2845 if (varonce146) {
2846 var147 = varonce146;
2847 } else {
2848 var148 = "->class == &class_";
2849 var149 = 18;
2850 var150 = string__NativeString__to_s_with_length(var148, var149);
2851 var147 = var150;
2852 varonce146 = var147;
2853 }
2854 {
2855 var151 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
2856 }
2857 if (varonce152) {
2858 var153 = varonce152;
2859 } else {
2860 var154 = "); /* is_same_type_test */";
2861 var155 = 26;
2862 var156 = string__NativeString__to_s_with_length(var154, var155);
2863 var153 = var156;
2864 varonce152 = var153;
2865 }
2866 var157 = NEW_array__Array(&type_array__Arraykernel__Object);
2867 { /* var157 = array_instance Array[Object] */
2868 var158 = 8;
2869 var159 = NEW_array__NativeArray(var158, &type_array__NativeArraykernel__Object);
2870 ((struct instance_array__NativeArray*)var159)->values[0] = (val*) var_res;
2871 ((struct instance_array__NativeArray*)var159)->values[1] = (val*) var137;
2872 ((struct instance_array__NativeArray*)var159)->values[2] = (val*) var_value2;
2873 ((struct instance_array__NativeArray*)var159)->values[3] = (val*) var142;
2874 ((struct instance_array__NativeArray*)var159)->values[4] = (val*) var_value2;
2875 ((struct instance_array__NativeArray*)var159)->values[5] = (val*) var147;
2876 ((struct instance_array__NativeArray*)var159)->values[6] = (val*) var151;
2877 ((struct instance_array__NativeArray*)var159)->values[7] = (val*) var153;
2878 {
2879 ((void (*)(val*, val*, long))(var157->class->vft[COLOR_array__Array__with_native]))(var157, var159, var158) /* with_native on <var157:Array[Object]>*/;
2880 }
2881 }
2882 {
2883 var160 = ((val* (*)(val*))(var157->class->vft[COLOR_string__Object__to_s]))(var157) /* to_s on <var157:Array[Object]>*/;
2884 }
2885 {
2886 abstract_compiler__AbstractCompilerVisitor__add(self, var160); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2887 }
2888 }
2889 }
2890 } else {
2891 if (varonce161) {
2892 var162 = varonce161;
2893 } else {
2894 var163 = " = (";
2895 var164 = 4;
2896 var165 = string__NativeString__to_s_with_length(var163, var164);
2897 var162 = var165;
2898 varonce161 = var162;
2899 }
2900 if (varonce166) {
2901 var167 = varonce166;
2902 } else {
2903 var168 = " == ";
2904 var169 = 4;
2905 var170 = string__NativeString__to_s_with_length(var168, var169);
2906 var167 = var170;
2907 varonce166 = var167;
2908 }
2909 if (varonce171) {
2910 var172 = varonce171;
2911 } else {
2912 var173 = ") || (";
2913 var174 = 6;
2914 var175 = string__NativeString__to_s_with_length(var173, var174);
2915 var172 = var175;
2916 varonce171 = var172;
2917 }
2918 if (varonce176) {
2919 var177 = varonce176;
2920 } else {
2921 var178 = " != NULL && ";
2922 var179 = 12;
2923 var180 = string__NativeString__to_s_with_length(var178, var179);
2924 var177 = var180;
2925 varonce176 = var177;
2926 }
2927 if (varonce181) {
2928 var182 = varonce181;
2929 } else {
2930 var183 = " != NULL && ";
2931 var184 = 12;
2932 var185 = string__NativeString__to_s_with_length(var183, var184);
2933 var182 = var185;
2934 varonce181 = var182;
2935 }
2936 if (varonce186) {
2937 var187 = varonce186;
2938 } else {
2939 var188 = "->class == ";
2940 var189 = 11;
2941 var190 = string__NativeString__to_s_with_length(var188, var189);
2942 var187 = var190;
2943 varonce186 = var187;
2944 }
2945 if (varonce191) {
2946 var192 = varonce191;
2947 } else {
2948 var193 = "->class); /* is_same_type_test */";
2949 var194 = 33;
2950 var195 = string__NativeString__to_s_with_length(var193, var194);
2951 var192 = var195;
2952 varonce191 = var192;
2953 }
2954 var196 = NEW_array__Array(&type_array__Arraykernel__Object);
2955 { /* var196 = array_instance Array[Object] */
2956 var197 = 14;
2957 var198 = NEW_array__NativeArray(var197, &type_array__NativeArraykernel__Object);
2958 ((struct instance_array__NativeArray*)var198)->values[0] = (val*) var_res;
2959 ((struct instance_array__NativeArray*)var198)->values[1] = (val*) var162;
2960 ((struct instance_array__NativeArray*)var198)->values[2] = (val*) var_value1;
2961 ((struct instance_array__NativeArray*)var198)->values[3] = (val*) var167;
2962 ((struct instance_array__NativeArray*)var198)->values[4] = (val*) var_value2;
2963 ((struct instance_array__NativeArray*)var198)->values[5] = (val*) var172;
2964 ((struct instance_array__NativeArray*)var198)->values[6] = (val*) var_value1;
2965 ((struct instance_array__NativeArray*)var198)->values[7] = (val*) var177;
2966 ((struct instance_array__NativeArray*)var198)->values[8] = (val*) var_value2;
2967 ((struct instance_array__NativeArray*)var198)->values[9] = (val*) var182;
2968 ((struct instance_array__NativeArray*)var198)->values[10] = (val*) var_value1;
2969 ((struct instance_array__NativeArray*)var198)->values[11] = (val*) var187;
2970 ((struct instance_array__NativeArray*)var198)->values[12] = (val*) var_value2;
2971 ((struct instance_array__NativeArray*)var198)->values[13] = (val*) var192;
2972 {
2973 ((void (*)(val*, val*, long))(var196->class->vft[COLOR_array__Array__with_native]))(var196, var198, var197) /* with_native on <var196:Array[Object]>*/;
2974 }
2975 }
2976 {
2977 var199 = ((val* (*)(val*))(var196->class->vft[COLOR_string__Object__to_s]))(var196) /* to_s on <var196:Array[Object]>*/;
2978 }
2979 {
2980 abstract_compiler__AbstractCompilerVisitor__add(self, var199); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2981 }
2982 }
2983 var = var_res;
2984 goto RET_LABEL;
2985 RET_LABEL:;
2986 return var;
2987 }
2988 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
2989 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
2990 val* var /* : RuntimeVariable */;
2991 val* var1 /* : RuntimeVariable */;
2992 var1 = separate_compiler__SeparateCompilerVisitor__is_same_type_test(self, p0, p1);
2993 var = var1;
2994 RET_LABEL:;
2995 return var;
2996 }
2997 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: SeparateCompilerVisitor, RuntimeVariable): String */
2998 val* separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
2999 val* var /* : String */;
3000 val* var_value /* var value: RuntimeVariable */;
3001 static val* varonce;
3002 val* var1 /* : String */;
3003 char* var2 /* : NativeString */;
3004 long var3 /* : Int */;
3005 val* var4 /* : FlatString */;
3006 val* var5 /* : String */;
3007 val* var_res /* var res: String */;
3008 static val* varonce6;
3009 val* var7 /* : String */;
3010 char* var8 /* : NativeString */;
3011 long var9 /* : Int */;
3012 val* var10 /* : FlatString */;
3013 static val* varonce11;
3014 val* var12 /* : String */;
3015 char* var13 /* : NativeString */;
3016 long var14 /* : Int */;
3017 val* var15 /* : FlatString */;
3018 val* var16 /* : Array[Object] */;
3019 long var17 /* : Int */;
3020 val* var18 /* : NativeArray[Object] */;
3021 val* var19 /* : String */;
3022 val* var20 /* : MType */;
3023 val* var22 /* : MType */;
3024 val* var23 /* : String */;
3025 static val* varonce24;
3026 val* var25 /* : String */;
3027 char* var26 /* : NativeString */;
3028 long var27 /* : Int */;
3029 val* var28 /* : FlatString */;
3030 short int var29 /* : Bool */;
3031 short int var30 /* : Bool */;
3032 static val* varonce31;
3033 val* var32 /* : String */;
3034 char* var33 /* : NativeString */;
3035 long var34 /* : Int */;
3036 val* var35 /* : FlatString */;
3037 static val* varonce36;
3038 val* var37 /* : String */;
3039 char* var38 /* : NativeString */;
3040 long var39 /* : Int */;
3041 val* var40 /* : FlatString */;
3042 static val* varonce41;
3043 val* var42 /* : String */;
3044 char* var43 /* : NativeString */;
3045 long var44 /* : Int */;
3046 val* var45 /* : FlatString */;
3047 val* var46 /* : Array[Object] */;
3048 long var47 /* : Int */;
3049 val* var48 /* : NativeArray[Object] */;
3050 val* var49 /* : String */;
3051 short int var50 /* : Bool */;
3052 short int var51 /* : Bool */;
3053 val* var52 /* : MType */;
3054 val* var54 /* : MType */;
3055 short int var55 /* : Bool */;
3056 int cltype;
3057 int idtype;
3058 short int var_ /* var : Bool */;
3059 val* var56 /* : MType */;
3060 val* var58 /* : MType */;
3061 short int var59 /* : Bool */;
3062 int cltype60;
3063 int idtype61;
3064 const char* var_class_name;
3065 val* var62 /* : MClass */;
3066 val* var64 /* : MClass */;
3067 val* var65 /* : MClassKind */;
3068 val* var67 /* : MClassKind */;
3069 val* var68 /* : MClassKind */;
3070 short int var69 /* : Bool */;
3071 short int var70 /* : Bool */;
3072 val* var_other /* var other: nullable Object */;
3073 short int var72 /* : Bool */;
3074 short int var74 /* : Bool */;
3075 short int var_75 /* var : Bool */;
3076 val* var76 /* : MType */;
3077 val* var78 /* : MType */;
3078 short int var79 /* : Bool */;
3079 int cltype80;
3080 int idtype81;
3081 const char* var_class_name82;
3082 val* var83 /* : String */;
3083 static val* varonce84;
3084 val* var85 /* : String */;
3085 char* var86 /* : NativeString */;
3086 long var87 /* : Int */;
3087 val* var88 /* : FlatString */;
3088 short int var89 /* : Bool */;
3089 short int var90 /* : Bool */;
3090 val* var_other92 /* var other: nullable Object */;
3091 short int var93 /* : Bool */;
3092 short int var94 /* : Bool */;
3093 short int var95 /* : Bool */;
3094 static val* varonce96;
3095 val* var97 /* : String */;
3096 char* var98 /* : NativeString */;
3097 long var99 /* : Int */;
3098 val* var100 /* : FlatString */;
3099 val* var101 /* : MType */;
3100 val* var103 /* : MType */;
3101 short int var104 /* : Bool */;
3102 int cltype105;
3103 int idtype106;
3104 const char* var_class_name107;
3105 val* var108 /* : MClass */;
3106 val* var110 /* : MClass */;
3107 static val* varonce111;
3108 val* var112 /* : String */;
3109 char* var113 /* : NativeString */;
3110 long var114 /* : Int */;
3111 val* var115 /* : FlatString */;
3112 val* var116 /* : Array[Object] */;
3113 long var117 /* : Int */;
3114 val* var118 /* : NativeArray[Object] */;
3115 val* var119 /* : String */;
3116 static val* varonce120;
3117 val* var121 /* : String */;
3118 char* var122 /* : NativeString */;
3119 long var123 /* : Int */;
3120 val* var124 /* : FlatString */;
3121 val* var125 /* : MType */;
3122 val* var127 /* : MType */;
3123 val* var128 /* : String */;
3124 val* var129 /* : Array[Object] */;
3125 long var130 /* : Int */;
3126 val* var131 /* : NativeArray[Object] */;
3127 val* var132 /* : String */;
3128 static val* varonce133;
3129 val* var134 /* : String */;
3130 char* var135 /* : NativeString */;
3131 long var136 /* : Int */;
3132 val* var137 /* : FlatString */;
3133 val* var138 /* : MType */;
3134 val* var140 /* : MType */;
3135 val* var141 /* : String */;
3136 static val* varonce142;
3137 val* var143 /* : String */;
3138 char* var144 /* : NativeString */;
3139 long var145 /* : Int */;
3140 val* var146 /* : FlatString */;
3141 val* var147 /* : Array[Object] */;
3142 long var148 /* : Int */;
3143 val* var149 /* : NativeArray[Object] */;
3144 val* var150 /* : String */;
3145 var_value = p0;
3146 if (varonce) {
3147 var1 = varonce;
3148 } else {
3149 var2 = "var_class_name";
3150 var3 = 14;
3151 var4 = string__NativeString__to_s_with_length(var2, var3);
3152 var1 = var4;
3153 varonce = var1;
3154 }
3155 {
3156 var5 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var1);
3157 }
3158 var_res = var5;
3159 if (varonce6) {
3160 var7 = varonce6;
3161 } else {
3162 var8 = "const char* ";
3163 var9 = 12;
3164 var10 = string__NativeString__to_s_with_length(var8, var9);
3165 var7 = var10;
3166 varonce6 = var7;
3167 }
3168 if (varonce11) {
3169 var12 = varonce11;
3170 } else {
3171 var13 = ";";
3172 var14 = 1;
3173 var15 = string__NativeString__to_s_with_length(var13, var14);
3174 var12 = var15;
3175 varonce11 = var12;
3176 }
3177 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
3178 { /* var16 = array_instance Array[Object] */
3179 var17 = 3;
3180 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
3181 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
3182 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_res;
3183 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
3184 {
3185 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
3186 }
3187 }
3188 {
3189 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
3190 }
3191 {
3192 abstract_compiler__AbstractCompilerVisitor__add_decl(self, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateCompilerVisitor>*/
3193 }
3194 {
3195 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3196 var22 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3197 if (unlikely(var22 == NULL)) {
3198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3199 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3200 show_backtrace(1);
3201 }
3202 var20 = var22;
3203 RET_LABEL21:(void)0;
3204 }
3205 }
3206 {
3207 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_compiler__MType__ctype]))(var20) /* ctype on <var20:MType>*/;
3208 }
3209 if (varonce24) {
3210 var25 = varonce24;
3211 } else {
3212 var26 = "val*";
3213 var27 = 4;
3214 var28 = string__NativeString__to_s_with_length(var26, var27);
3215 var25 = var28;
3216 varonce24 = var25;
3217 }
3218 {
3219 var30 = string__FlatString___61d_61d(var23, var25);
3220 var29 = var30;
3221 }
3222 if (var29){
3223 if (varonce31) {
3224 var32 = varonce31;
3225 } else {
3226 var33 = " = ";
3227 var34 = 3;
3228 var35 = string__NativeString__to_s_with_length(var33, var34);
3229 var32 = var35;
3230 varonce31 = var32;
3231 }
3232 if (varonce36) {
3233 var37 = varonce36;
3234 } else {
3235 var38 = " == NULL ? \"null\" : ";
3236 var39 = 20;
3237 var40 = string__NativeString__to_s_with_length(var38, var39);
3238 var37 = var40;
3239 varonce36 = var37;
3240 }
3241 if (varonce41) {
3242 var42 = varonce41;
3243 } else {
3244 var43 = "->type->name;";
3245 var44 = 13;
3246 var45 = string__NativeString__to_s_with_length(var43, var44);
3247 var42 = var45;
3248 varonce41 = var42;
3249 }
3250 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
3251 { /* var46 = array_instance Array[Object] */
3252 var47 = 6;
3253 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
3254 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
3255 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var32;
3256 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_value;
3257 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var37;
3258 ((struct instance_array__NativeArray*)var48)->values[4] = (val*) var_value;
3259 ((struct instance_array__NativeArray*)var48)->values[5] = (val*) var42;
3260 {
3261 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
3262 }
3263 }
3264 {
3265 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
3266 }
3267 {
3268 abstract_compiler__AbstractCompilerVisitor__add(self, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3269 }
3270 } else {
3271 {
3272 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3273 var54 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3274 if (unlikely(var54 == NULL)) {
3275 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3276 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3277 show_backtrace(1);
3278 }
3279 var52 = var54;
3280 RET_LABEL53:(void)0;
3281 }
3282 }
3283 /* <var52:MType> isa MClassType */
3284 cltype = type_model__MClassType.color;
3285 idtype = type_model__MClassType.id;
3286 if(cltype >= var52->type->table_size) {
3287 var55 = 0;
3288 } else {
3289 var55 = var52->type->type_table[cltype] == idtype;
3290 }
3291 var_ = var55;
3292 if (var55){
3293 {
3294 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3295 var58 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3296 if (unlikely(var58 == NULL)) {
3297 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3298 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3299 show_backtrace(1);
3300 }
3301 var56 = var58;
3302 RET_LABEL57:(void)0;
3303 }
3304 }
3305 /* <var56:MType> isa MClassType */
3306 cltype60 = type_model__MClassType.color;
3307 idtype61 = type_model__MClassType.id;
3308 if(cltype60 >= var56->type->table_size) {
3309 var59 = 0;
3310 } else {
3311 var59 = var56->type->type_table[cltype60] == idtype61;
3312 }
3313 if (unlikely(!var59)) {
3314 var_class_name = var56 == NULL ? "null" : var56->type->name;
3315 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3316 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1579);
3317 show_backtrace(1);
3318 }
3319 {
3320 { /* Inline model#MClassType#mclass (var56) on <var56:MType(MClassType)> */
3321 var64 = var56->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var56:MType(MClassType)> */
3322 if (unlikely(var64 == NULL)) {
3323 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3324 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
3325 show_backtrace(1);
3326 }
3327 var62 = var64;
3328 RET_LABEL63:(void)0;
3329 }
3330 }
3331 {
3332 { /* Inline model#MClass#kind (var62) on <var62:MClass> */
3333 var67 = var62->attrs[COLOR_model__MClass___kind].val; /* _kind on <var62:MClass> */
3334 if (unlikely(var67 == NULL)) {
3335 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3336 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
3337 show_backtrace(1);
3338 }
3339 var65 = var67;
3340 RET_LABEL66:(void)0;
3341 }
3342 }
3343 {
3344 var68 = model__Object__extern_kind(self);
3345 }
3346 {
3347 { /* Inline kernel#Object#== (var65,var68) on <var65:MClassKind> */
3348 var_other = var68;
3349 {
3350 { /* Inline kernel#Object#is_same_instance (var65,var_other) on <var65:MClassKind> */
3351 var74 = var65 == var_other;
3352 var72 = var74;
3353 goto RET_LABEL73;
3354 RET_LABEL73:(void)0;
3355 }
3356 }
3357 var70 = var72;
3358 goto RET_LABEL71;
3359 RET_LABEL71:(void)0;
3360 }
3361 var69 = var70;
3362 }
3363 var51 = var69;
3364 } else {
3365 var51 = var_;
3366 }
3367 var_75 = var51;
3368 if (var51){
3369 {
3370 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3371 var78 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3372 if (unlikely(var78 == NULL)) {
3373 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3374 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3375 show_backtrace(1);
3376 }
3377 var76 = var78;
3378 RET_LABEL77:(void)0;
3379 }
3380 }
3381 /* <var76:MType> isa MClassType */
3382 cltype80 = type_model__MClassType.color;
3383 idtype81 = type_model__MClassType.id;
3384 if(cltype80 >= var76->type->table_size) {
3385 var79 = 0;
3386 } else {
3387 var79 = var76->type->type_table[cltype80] == idtype81;
3388 }
3389 if (unlikely(!var79)) {
3390 var_class_name82 = var76 == NULL ? "null" : var76->type->name;
3391 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name82);
3392 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1580);
3393 show_backtrace(1);
3394 }
3395 {
3396 var83 = model__MType__name(var76);
3397 }
3398 if (varonce84) {
3399 var85 = varonce84;
3400 } else {
3401 var86 = "NativeString";
3402 var87 = 12;
3403 var88 = string__NativeString__to_s_with_length(var86, var87);
3404 var85 = var88;
3405 varonce84 = var85;
3406 }
3407 {
3408 { /* Inline kernel#Object#!= (var83,var85) on <var83:String> */
3409 var_other92 = var85;
3410 {
3411 var94 = ((short int (*)(val*, val*))(var83->class->vft[COLOR_kernel__Object___61d_61d]))(var83, var_other92) /* == on <var83:String>*/;
3412 var93 = var94;
3413 }
3414 var95 = !var93;
3415 var90 = var95;
3416 goto RET_LABEL91;
3417 RET_LABEL91:(void)0;
3418 }
3419 var89 = var90;
3420 }
3421 var50 = var89;
3422 } else {
3423 var50 = var_75;
3424 }
3425 if (var50){
3426 if (varonce96) {
3427 var97 = varonce96;
3428 } else {
3429 var98 = " = \"";
3430 var99 = 4;
3431 var100 = string__NativeString__to_s_with_length(var98, var99);
3432 var97 = var100;
3433 varonce96 = var97;
3434 }
3435 {
3436 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3437 var103 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3438 if (unlikely(var103 == NULL)) {
3439 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3440 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3441 show_backtrace(1);
3442 }
3443 var101 = var103;
3444 RET_LABEL102:(void)0;
3445 }
3446 }
3447 /* <var101:MType> isa MClassType */
3448 cltype105 = type_model__MClassType.color;
3449 idtype106 = type_model__MClassType.id;
3450 if(cltype105 >= var101->type->table_size) {
3451 var104 = 0;
3452 } else {
3453 var104 = var101->type->type_table[cltype105] == idtype106;
3454 }
3455 if (unlikely(!var104)) {
3456 var_class_name107 = var101 == NULL ? "null" : var101->type->name;
3457 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name107);
3458 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1581);
3459 show_backtrace(1);
3460 }
3461 {
3462 { /* Inline model#MClassType#mclass (var101) on <var101:MType(MClassType)> */
3463 var110 = var101->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var101:MType(MClassType)> */
3464 if (unlikely(var110 == NULL)) {
3465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3466 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
3467 show_backtrace(1);
3468 }
3469 var108 = var110;
3470 RET_LABEL109:(void)0;
3471 }
3472 }
3473 if (varonce111) {
3474 var112 = varonce111;
3475 } else {
3476 var113 = "\";";
3477 var114 = 2;
3478 var115 = string__NativeString__to_s_with_length(var113, var114);
3479 var112 = var115;
3480 varonce111 = var112;
3481 }
3482 var116 = NEW_array__Array(&type_array__Arraykernel__Object);
3483 { /* var116 = array_instance Array[Object] */
3484 var117 = 4;
3485 var118 = NEW_array__NativeArray(var117, &type_array__NativeArraykernel__Object);
3486 ((struct instance_array__NativeArray*)var118)->values[0] = (val*) var_res;
3487 ((struct instance_array__NativeArray*)var118)->values[1] = (val*) var97;
3488 ((struct instance_array__NativeArray*)var118)->values[2] = (val*) var108;
3489 ((struct instance_array__NativeArray*)var118)->values[3] = (val*) var112;
3490 {
3491 ((void (*)(val*, val*, long))(var116->class->vft[COLOR_array__Array__with_native]))(var116, var118, var117) /* with_native on <var116:Array[Object]>*/;
3492 }
3493 }
3494 {
3495 var119 = ((val* (*)(val*))(var116->class->vft[COLOR_string__Object__to_s]))(var116) /* to_s on <var116:Array[Object]>*/;
3496 }
3497 {
3498 abstract_compiler__AbstractCompilerVisitor__add(self, var119); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3499 }
3500 } else {
3501 if (varonce120) {
3502 var121 = varonce120;
3503 } else {
3504 var122 = "type_";
3505 var123 = 5;
3506 var124 = string__NativeString__to_s_with_length(var122, var123);
3507 var121 = var124;
3508 varonce120 = var121;
3509 }
3510 {
3511 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3512 var127 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3513 if (unlikely(var127 == NULL)) {
3514 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3515 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3516 show_backtrace(1);
3517 }
3518 var125 = var127;
3519 RET_LABEL126:(void)0;
3520 }
3521 }
3522 {
3523 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_abstract_compiler__MType__c_name]))(var125) /* c_name on <var125:MType>*/;
3524 }
3525 var129 = NEW_array__Array(&type_array__Arraykernel__Object);
3526 { /* var129 = array_instance Array[Object] */
3527 var130 = 2;
3528 var131 = NEW_array__NativeArray(var130, &type_array__NativeArraykernel__Object);
3529 ((struct instance_array__NativeArray*)var131)->values[0] = (val*) var121;
3530 ((struct instance_array__NativeArray*)var131)->values[1] = (val*) var128;
3531 {
3532 ((void (*)(val*, val*, long))(var129->class->vft[COLOR_array__Array__with_native]))(var129, var131, var130) /* with_native on <var129:Array[Object]>*/;
3533 }
3534 }
3535 {
3536 var132 = ((val* (*)(val*))(var129->class->vft[COLOR_string__Object__to_s]))(var129) /* to_s on <var129:Array[Object]>*/;
3537 }
3538 {
3539 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var132); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
3540 }
3541 if (varonce133) {
3542 var134 = varonce133;
3543 } else {
3544 var135 = " = type_";
3545 var136 = 8;
3546 var137 = string__NativeString__to_s_with_length(var135, var136);
3547 var134 = var137;
3548 varonce133 = var134;
3549 }
3550 {
3551 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3552 var140 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3553 if (unlikely(var140 == NULL)) {
3554 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3555 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
3556 show_backtrace(1);
3557 }
3558 var138 = var140;
3559 RET_LABEL139:(void)0;
3560 }
3561 }
3562 {
3563 var141 = ((val* (*)(val*))(var138->class->vft[COLOR_abstract_compiler__MType__c_name]))(var138) /* c_name on <var138:MType>*/;
3564 }
3565 if (varonce142) {
3566 var143 = varonce142;
3567 } else {
3568 var144 = ".name;";
3569 var145 = 6;
3570 var146 = string__NativeString__to_s_with_length(var144, var145);
3571 var143 = var146;
3572 varonce142 = var143;
3573 }
3574 var147 = NEW_array__Array(&type_array__Arraykernel__Object);
3575 { /* var147 = array_instance Array[Object] */
3576 var148 = 4;
3577 var149 = NEW_array__NativeArray(var148, &type_array__NativeArraykernel__Object);
3578 ((struct instance_array__NativeArray*)var149)->values[0] = (val*) var_res;
3579 ((struct instance_array__NativeArray*)var149)->values[1] = (val*) var134;
3580 ((struct instance_array__NativeArray*)var149)->values[2] = (val*) var141;
3581 ((struct instance_array__NativeArray*)var149)->values[3] = (val*) var143;
3582 {
3583 ((void (*)(val*, val*, long))(var147->class->vft[COLOR_array__Array__with_native]))(var147, var149, var148) /* with_native on <var147:Array[Object]>*/;
3584 }
3585 }
3586 {
3587 var150 = ((val* (*)(val*))(var147->class->vft[COLOR_string__Object__to_s]))(var147) /* to_s on <var147:Array[Object]>*/;
3588 }
3589 {
3590 abstract_compiler__AbstractCompilerVisitor__add(self, var150); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3591 }
3592 }
3593 }
3594 var = var_res;
3595 goto RET_LABEL;
3596 RET_LABEL:;
3597 return var;
3598 }
3599 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
3600 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
3601 val* var /* : String */;
3602 val* var1 /* : String */;
3603 var1 = separate_compiler__SeparateCompilerVisitor__class_name_string(self, p0);
3604 var = var1;
3605 RET_LABEL:;
3606 return var;
3607 }
3608 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
3609 val* separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
3610 val* var /* : RuntimeVariable */;
3611 val* var_value1 /* var value1: RuntimeVariable */;
3612 val* var_value2 /* var value2: RuntimeVariable */;
3613 val* var1 /* : MClassType */;
3614 val* var2 /* : RuntimeVariable */;
3615 val* var_res /* var res: RuntimeVariable */;
3616 short int var3 /* : Bool */;
3617 val* var4 /* : MType */;
3618 val* var6 /* : MType */;
3619 val* var7 /* : String */;
3620 static val* varonce;
3621 val* var8 /* : String */;
3622 char* var9 /* : NativeString */;
3623 long var10 /* : Int */;
3624 val* var11 /* : FlatString */;
3625 short int var12 /* : Bool */;
3626 short int var13 /* : Bool */;
3627 val* var_other /* var other: nullable Object */;
3628 short int var15 /* : Bool */;
3629 short int var16 /* : Bool */;
3630 short int var17 /* : Bool */;
3631 short int var_ /* var : Bool */;
3632 val* var18 /* : MType */;
3633 val* var20 /* : MType */;
3634 val* var21 /* : String */;
3635 static val* varonce22;
3636 val* var23 /* : String */;
3637 char* var24 /* : NativeString */;
3638 long var25 /* : Int */;
3639 val* var26 /* : FlatString */;
3640 short int var27 /* : Bool */;
3641 short int var28 /* : Bool */;
3642 val* var_tmp /* var tmp: RuntimeVariable */;
3643 val* var29 /* : MType */;
3644 val* var31 /* : MType */;
3645 val* var32 /* : String */;
3646 static val* varonce33;
3647 val* var34 /* : String */;
3648 char* var35 /* : NativeString */;
3649 long var36 /* : Int */;
3650 val* var37 /* : FlatString */;
3651 short int var38 /* : Bool */;
3652 short int var39 /* : Bool */;
3653 short int var41 /* : Bool */;
3654 short int var42 /* : Bool */;
3655 short int var43 /* : Bool */;
3656 val* var44 /* : MType */;
3657 val* var46 /* : MType */;
3658 val* var47 /* : MType */;
3659 val* var49 /* : MType */;
3660 short int var50 /* : Bool */;
3661 short int var51 /* : Bool */;
3662 val* var_other53 /* var other: nullable Object */;
3663 short int var54 /* : Bool */;
3664 short int var56 /* : Bool */;
3665 static val* varonce57;
3666 val* var58 /* : String */;
3667 char* var59 /* : NativeString */;
3668 long var60 /* : Int */;
3669 val* var61 /* : FlatString */;
3670 static val* varonce62;
3671 val* var63 /* : String */;
3672 char* var64 /* : NativeString */;
3673 long var65 /* : Int */;
3674 val* var66 /* : FlatString */;
3675 static val* varonce67;
3676 val* var68 /* : String */;
3677 char* var69 /* : NativeString */;
3678 long var70 /* : Int */;
3679 val* var71 /* : FlatString */;
3680 val* var72 /* : Array[Object] */;
3681 long var73 /* : Int */;
3682 val* var74 /* : NativeArray[Object] */;
3683 val* var75 /* : String */;
3684 val* var76 /* : MType */;
3685 val* var78 /* : MType */;
3686 val* var79 /* : String */;
3687 static val* varonce80;
3688 val* var81 /* : String */;
3689 char* var82 /* : NativeString */;
3690 long var83 /* : Int */;
3691 val* var84 /* : FlatString */;
3692 short int var85 /* : Bool */;
3693 short int var86 /* : Bool */;
3694 short int var88 /* : Bool */;
3695 short int var89 /* : Bool */;
3696 short int var90 /* : Bool */;
3697 static val* varonce91;
3698 val* var92 /* : String */;
3699 char* var93 /* : NativeString */;
3700 long var94 /* : Int */;
3701 val* var95 /* : FlatString */;
3702 val* var96 /* : MType */;
3703 val* var98 /* : MType */;
3704 static val* varonce99;
3705 val* var100 /* : String */;
3706 char* var101 /* : NativeString */;
3707 long var102 /* : Int */;
3708 val* var103 /* : FlatString */;
3709 val* var104 /* : MType */;
3710 val* var106 /* : MType */;
3711 static val* varonce107;
3712 val* var108 /* : String */;
3713 char* var109 /* : NativeString */;
3714 long var110 /* : Int */;
3715 val* var111 /* : FlatString */;
3716 val* var112 /* : Array[Object] */;
3717 long var113 /* : Int */;
3718 val* var114 /* : NativeArray[Object] */;
3719 val* var115 /* : String */;
3720 val* var116 /* : MType */;
3721 val* var118 /* : MType */;
3722 short int var119 /* : Bool */;
3723 int cltype;
3724 int idtype;
3725 const char* var_class_name;
3726 val* var_mtype1 /* var mtype1: MClassType */;
3727 static val* varonce120;
3728 val* var121 /* : String */;
3729 char* var122 /* : NativeString */;
3730 long var123 /* : Int */;
3731 val* var124 /* : FlatString */;
3732 val* var125 /* : String */;
3733 val* var126 /* : Array[Object] */;
3734 long var127 /* : Int */;
3735 val* var128 /* : NativeArray[Object] */;
3736 val* var129 /* : String */;
3737 static val* varonce130;
3738 val* var131 /* : String */;
3739 char* var132 /* : NativeString */;
3740 long var133 /* : Int */;
3741 val* var134 /* : FlatString */;
3742 static val* varonce135;
3743 val* var136 /* : String */;
3744 char* var137 /* : NativeString */;
3745 long var138 /* : Int */;
3746 val* var139 /* : FlatString */;
3747 static val* varonce140;
3748 val* var141 /* : String */;
3749 char* var142 /* : NativeString */;
3750 long var143 /* : Int */;
3751 val* var144 /* : FlatString */;
3752 val* var145 /* : String */;
3753 static val* varonce146;
3754 val* var147 /* : String */;
3755 char* var148 /* : NativeString */;
3756 long var149 /* : Int */;
3757 val* var150 /* : FlatString */;
3758 val* var151 /* : Array[Object] */;
3759 long var152 /* : Int */;
3760 val* var153 /* : NativeArray[Object] */;
3761 val* var154 /* : String */;
3762 static val* varonce155;
3763 val* var156 /* : String */;
3764 char* var157 /* : NativeString */;
3765 long var158 /* : Int */;
3766 val* var159 /* : FlatString */;
3767 static val* varonce160;
3768 val* var161 /* : String */;
3769 char* var162 /* : NativeString */;
3770 long var163 /* : Int */;
3771 val* var164 /* : FlatString */;
3772 val* var165 /* : Array[Object] */;
3773 long var166 /* : Int */;
3774 val* var167 /* : NativeArray[Object] */;
3775 val* var168 /* : String */;
3776 static val* varonce169;
3777 val* var170 /* : String */;
3778 char* var171 /* : NativeString */;
3779 long var172 /* : Int */;
3780 val* var173 /* : FlatString */;
3781 val* var174 /* : MType */;
3782 val* var176 /* : MType */;
3783 val* var177 /* : RuntimeVariable */;
3784 static val* varonce178;
3785 val* var179 /* : String */;
3786 char* var180 /* : NativeString */;
3787 long var181 /* : Int */;
3788 val* var182 /* : FlatString */;
3789 static val* varonce183;
3790 val* var184 /* : String */;
3791 char* var185 /* : NativeString */;
3792 long var186 /* : Int */;
3793 val* var187 /* : FlatString */;
3794 val* var188 /* : Array[Object] */;
3795 long var189 /* : Int */;
3796 val* var190 /* : NativeArray[Object] */;
3797 val* var191 /* : String */;
3798 static val* varonce192;
3799 val* var193 /* : String */;
3800 char* var194 /* : NativeString */;
3801 long var195 /* : Int */;
3802 val* var196 /* : FlatString */;
3803 short int var197 /* : Bool */;
3804 short int var_maybe_null /* var maybe_null: Bool */;
3805 val* var198 /* : Array[String] */;
3806 val* var_test /* var test: Array[String] */;
3807 val* var199 /* : MType */;
3808 val* var201 /* : MType */;
3809 val* var_t1 /* var t1: MType */;
3810 short int var202 /* : Bool */;
3811 int cltype203;
3812 int idtype204;
3813 static val* varonce205;
3814 val* var206 /* : String */;
3815 char* var207 /* : NativeString */;
3816 long var208 /* : Int */;
3817 val* var209 /* : FlatString */;
3818 val* var210 /* : Array[Object] */;
3819 long var211 /* : Int */;
3820 val* var212 /* : NativeArray[Object] */;
3821 val* var213 /* : String */;
3822 val* var214 /* : MType */;
3823 val* var216 /* : MType */;
3824 short int var217 /* : Bool */;
3825 val* var218 /* : MType */;
3826 val* var220 /* : MType */;
3827 val* var_t2 /* var t2: MType */;
3828 short int var221 /* : Bool */;
3829 int cltype222;
3830 int idtype223;
3831 static val* varonce224;
3832 val* var225 /* : String */;
3833 char* var226 /* : NativeString */;
3834 long var227 /* : Int */;
3835 val* var228 /* : FlatString */;
3836 val* var229 /* : Array[Object] */;
3837 long var230 /* : Int */;
3838 val* var231 /* : NativeArray[Object] */;
3839 val* var232 /* : String */;
3840 val* var233 /* : MType */;
3841 val* var235 /* : MType */;
3842 short int var236 /* : Bool */;
3843 short int var237 /* : Bool */;
3844 short int var_incompatible /* var incompatible: Bool */;
3845 val* var238 /* : String */;
3846 static val* varonce239;
3847 val* var240 /* : String */;
3848 char* var241 /* : NativeString */;
3849 long var242 /* : Int */;
3850 val* var243 /* : FlatString */;
3851 short int var244 /* : Bool */;
3852 short int var245 /* : Bool */;
3853 short int var247 /* : Bool */;
3854 short int var248 /* : Bool */;
3855 short int var249 /* : Bool */;
3856 val* var_primitive /* var primitive: nullable Object */;
3857 short int var250 /* : Bool */;
3858 short int var251 /* : Bool */;
3859 short int var253 /* : Bool */;
3860 short int var255 /* : Bool */;
3861 val* var256 /* : String */;
3862 static val* varonce257;
3863 val* var258 /* : String */;
3864 char* var259 /* : NativeString */;
3865 long var260 /* : Int */;
3866 val* var261 /* : FlatString */;
3867 short int var262 /* : Bool */;
3868 short int var263 /* : Bool */;
3869 short int var265 /* : Bool */;
3870 short int var266 /* : Bool */;
3871 short int var267 /* : Bool */;
3872 short int var268 /* : Bool */;
3873 short int var269 /* : Bool */;
3874 static val* varonce270;
3875 val* var271 /* : String */;
3876 char* var272 /* : NativeString */;
3877 long var273 /* : Int */;
3878 val* var274 /* : FlatString */;
3879 static val* varonce275;
3880 val* var276 /* : String */;
3881 char* var277 /* : NativeString */;
3882 long var278 /* : Int */;
3883 val* var279 /* : FlatString */;
3884 val* var280 /* : Array[Object] */;
3885 long var281 /* : Int */;
3886 val* var282 /* : NativeArray[Object] */;
3887 val* var283 /* : String */;
3888 short int var284 /* : Bool */;
3889 val* var285 /* : String */;
3890 static val* varonce286;
3891 val* var287 /* : String */;
3892 char* var288 /* : NativeString */;
3893 long var289 /* : Int */;
3894 val* var290 /* : FlatString */;
3895 short int var291 /* : Bool */;
3896 short int var292 /* : Bool */;
3897 short int var294 /* : Bool */;
3898 short int var295 /* : Bool */;
3899 short int var296 /* : Bool */;
3900 short int var297 /* : Bool */;
3901 static val* varonce298;
3902 val* var299 /* : String */;
3903 char* var300 /* : NativeString */;
3904 long var301 /* : Int */;
3905 val* var302 /* : FlatString */;
3906 static val* varonce303;
3907 val* var304 /* : String */;
3908 char* var305 /* : NativeString */;
3909 long var306 /* : Int */;
3910 val* var307 /* : FlatString */;
3911 val* var308 /* : Array[Object] */;
3912 long var309 /* : Int */;
3913 val* var310 /* : NativeArray[Object] */;
3914 val* var311 /* : String */;
3915 short int var312 /* : Bool */;
3916 val* var313 /* : null */;
3917 static val* varonce314;
3918 val* var315 /* : String */;
3919 char* var316 /* : NativeString */;
3920 long var317 /* : Int */;
3921 val* var318 /* : FlatString */;
3922 static val* varonce319;
3923 val* var320 /* : String */;
3924 char* var321 /* : NativeString */;
3925 long var322 /* : Int */;
3926 val* var323 /* : FlatString */;
3927 static val* varonce324;
3928 val* var325 /* : String */;
3929 char* var326 /* : NativeString */;
3930 long var327 /* : Int */;
3931 val* var328 /* : FlatString */;
3932 static val* varonce329;
3933 val* var330 /* : String */;
3934 char* var331 /* : NativeString */;
3935 long var332 /* : Int */;
3936 val* var333 /* : FlatString */;
3937 static val* varonce334;
3938 val* var335 /* : String */;
3939 char* var336 /* : NativeString */;
3940 long var337 /* : Int */;
3941 val* var338 /* : FlatString */;
3942 val* var339 /* : Array[Object] */;
3943 long var340 /* : Int */;
3944 val* var341 /* : NativeArray[Object] */;
3945 val* var342 /* : String */;
3946 static val* varonce343;
3947 val* var344 /* : String */;
3948 char* var345 /* : NativeString */;
3949 long var346 /* : Int */;
3950 val* var347 /* : FlatString */;
3951 static val* varonce348;
3952 val* var349 /* : String */;
3953 char* var350 /* : NativeString */;
3954 long var351 /* : Int */;
3955 val* var352 /* : FlatString */;
3956 static val* varonce353;
3957 val* var354 /* : String */;
3958 char* var355 /* : NativeString */;
3959 long var356 /* : Int */;
3960 val* var357 /* : FlatString */;
3961 val* var358 /* : Array[Object] */;
3962 long var359 /* : Int */;
3963 val* var360 /* : NativeArray[Object] */;
3964 val* var361 /* : String */;
3965 val* var362 /* : null */;
3966 short int var363 /* : Bool */;
3967 short int var364 /* : Bool */;
3968 short int var366 /* : Bool */;
3969 short int var367 /* : Bool */;
3970 short int var368 /* : Bool */;
3971 static val* varonce369;
3972 val* var370 /* : String */;
3973 char* var371 /* : NativeString */;
3974 long var372 /* : Int */;
3975 val* var373 /* : FlatString */;
3976 val* var374 /* : String */;
3977 static val* varonce375;
3978 val* var376 /* : String */;
3979 char* var377 /* : NativeString */;
3980 long var378 /* : Int */;
3981 val* var379 /* : FlatString */;
3982 static val* varonce380;
3983 val* var381 /* : String */;
3984 char* var382 /* : NativeString */;
3985 long var383 /* : Int */;
3986 val* var384 /* : FlatString */;
3987 val* var385 /* : String */;
3988 static val* varonce386;
3989 val* var387 /* : String */;
3990 char* var388 /* : NativeString */;
3991 long var389 /* : Int */;
3992 val* var390 /* : FlatString */;
3993 static val* varonce391;
3994 val* var392 /* : String */;
3995 char* var393 /* : NativeString */;
3996 long var394 /* : Int */;
3997 val* var395 /* : FlatString */;
3998 val* var396 /* : Array[Object] */;
3999 long var397 /* : Int */;
4000 val* var398 /* : NativeArray[Object] */;
4001 val* var399 /* : String */;
4002 short int var400 /* : Bool */;
4003 short int var401 /* : Bool */;
4004 short int var_402 /* var : Bool */;
4005 short int var403 /* : Bool */;
4006 static val* varonce404;
4007 val* var405 /* : String */;
4008 char* var406 /* : NativeString */;
4009 long var407 /* : Int */;
4010 val* var408 /* : FlatString */;
4011 static val* varonce409;
4012 val* var410 /* : String */;
4013 char* var411 /* : NativeString */;
4014 long var412 /* : Int */;
4015 val* var413 /* : FlatString */;
4016 val* var414 /* : Array[Object] */;
4017 long var415 /* : Int */;
4018 val* var416 /* : NativeArray[Object] */;
4019 val* var417 /* : String */;
4020 val* var418 /* : Array[String] */;
4021 val* var_s /* var s: Array[String] */;
4022 val* var419 /* : AbstractCompiler */;
4023 val* var421 /* : AbstractCompiler */;
4024 val* var422 /* : HashMap[MClass, Int] */;
4025 val* var424 /* : HashMap[MClass, Int] */;
4026 val* var_425 /* var : HashMap[MClass, Int] */;
4027 val* var426 /* : HashMapIterator[Object, nullable Object] */;
4028 val* var_427 /* var : HashMapIterator[MClass, Int] */;
4029 short int var428 /* : Bool */;
4030 val* var429 /* : Object */;
4031 val* var_t /* var t: MClass */;
4032 val* var430 /* : nullable Object */;
4033 long var431 /* : Int */;
4034 long var_v /* var v: Int */;
4035 static val* varonce432;
4036 val* var433 /* : String */;
4037 char* var434 /* : NativeString */;
4038 long var435 /* : Int */;
4039 val* var436 /* : FlatString */;
4040 static val* varonce437;
4041 val* var438 /* : String */;
4042 char* var439 /* : NativeString */;
4043 long var440 /* : Int */;
4044 val* var441 /* : FlatString */;
4045 static val* varonce442;
4046 val* var443 /* : String */;
4047 char* var444 /* : NativeString */;
4048 long var445 /* : Int */;
4049 val* var446 /* : FlatString */;
4050 val* var447 /* : String */;
4051 static val* varonce448;
4052 val* var449 /* : String */;
4053 char* var450 /* : NativeString */;
4054 long var451 /* : Int */;
4055 val* var452 /* : FlatString */;
4056 static val* varonce453;
4057 val* var454 /* : String */;
4058 char* var455 /* : NativeString */;
4059 long var456 /* : Int */;
4060 val* var457 /* : FlatString */;
4061 val* var458 /* : String */;
4062 static val* varonce459;
4063 val* var460 /* : String */;
4064 char* var461 /* : NativeString */;
4065 long var462 /* : Int */;
4066 val* var463 /* : FlatString */;
4067 static val* varonce464;
4068 val* var465 /* : String */;
4069 char* var466 /* : NativeString */;
4070 long var467 /* : Int */;
4071 val* var468 /* : FlatString */;
4072 val* var469 /* : Array[Object] */;
4073 long var470 /* : Int */;
4074 val* var471 /* : NativeArray[Object] */;
4075 val* var472 /* : Object */;
4076 val* var473 /* : String */;
4077 static val* varonce475;
4078 val* var476 /* : String */;
4079 char* var477 /* : NativeString */;
4080 long var478 /* : Int */;
4081 val* var479 /* : FlatString */;
4082 static val* varonce480;
4083 val* var481 /* : String */;
4084 char* var482 /* : NativeString */;
4085 long var483 /* : Int */;
4086 val* var484 /* : FlatString */;
4087 val* var485 /* : String */;
4088 static val* varonce486;
4089 val* var487 /* : String */;
4090 char* var488 /* : NativeString */;
4091 long var489 /* : Int */;
4092 val* var490 /* : FlatString */;
4093 val* var491 /* : Array[Object] */;
4094 long var492 /* : Int */;
4095 val* var493 /* : NativeArray[Object] */;
4096 val* var494 /* : String */;
4097 static val* varonce495;
4098 val* var496 /* : String */;
4099 char* var497 /* : NativeString */;
4100 long var498 /* : Int */;
4101 val* var499 /* : FlatString */;
4102 static val* varonce500;
4103 val* var501 /* : String */;
4104 char* var502 /* : NativeString */;
4105 long var503 /* : Int */;
4106 val* var504 /* : FlatString */;
4107 static val* varonce505;
4108 val* var506 /* : String */;
4109 char* var507 /* : NativeString */;
4110 long var508 /* : Int */;
4111 val* var509 /* : FlatString */;
4112 val* var510 /* : Array[Object] */;
4113 long var511 /* : Int */;
4114 val* var512 /* : NativeArray[Object] */;
4115 val* var513 /* : String */;
4116 static val* varonce514;
4117 val* var515 /* : String */;
4118 char* var516 /* : NativeString */;
4119 long var517 /* : Int */;
4120 val* var518 /* : FlatString */;
4121 static val* varonce519;
4122 val* var520 /* : String */;
4123 char* var521 /* : NativeString */;
4124 long var522 /* : Int */;
4125 val* var523 /* : FlatString */;
4126 static val* varonce524;
4127 val* var525 /* : String */;
4128 char* var526 /* : NativeString */;
4129 long var527 /* : Int */;
4130 val* var528 /* : FlatString */;
4131 static val* varonce529;
4132 val* var530 /* : String */;
4133 char* var531 /* : NativeString */;
4134 long var532 /* : Int */;
4135 val* var533 /* : FlatString */;
4136 val* var534 /* : String */;
4137 static val* varonce535;
4138 val* var536 /* : String */;
4139 char* var537 /* : NativeString */;
4140 long var538 /* : Int */;
4141 val* var539 /* : FlatString */;
4142 val* var540 /* : Array[Object] */;
4143 long var541 /* : Int */;
4144 val* var542 /* : NativeArray[Object] */;
4145 val* var543 /* : String */;
4146 var_value1 = p0;
4147 var_value2 = p1;
4148 {
4149 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
4150 }
4151 {
4152 var2 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var1);
4153 }
4154 var_res = var2;
4155 {
4156 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
4157 var6 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
4158 if (unlikely(var6 == NULL)) {
4159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4160 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4161 show_backtrace(1);
4162 }
4163 var4 = var6;
4164 RET_LABEL5:(void)0;
4165 }
4166 }
4167 {
4168 var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
4169 }
4170 if (varonce) {
4171 var8 = varonce;
4172 } else {
4173 var9 = "val*";
4174 var10 = 4;
4175 var11 = string__NativeString__to_s_with_length(var9, var10);
4176 var8 = var11;
4177 varonce = var8;
4178 }
4179 {
4180 { /* Inline kernel#Object#!= (var7,var8) on <var7:String> */
4181 var_other = var8;
4182 {
4183 var16 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_kernel__Object___61d_61d]))(var7, var_other) /* == on <var7:String>*/;
4184 var15 = var16;
4185 }
4186 var17 = !var15;
4187 var13 = var17;
4188 goto RET_LABEL14;
4189 RET_LABEL14:(void)0;
4190 }
4191 var12 = var13;
4192 }
4193 var_ = var12;
4194 if (var12){
4195 {
4196 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
4197 var20 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
4198 if (unlikely(var20 == NULL)) {
4199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4200 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4201 show_backtrace(1);
4202 }
4203 var18 = var20;
4204 RET_LABEL19:(void)0;
4205 }
4206 }
4207 {
4208 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__MType__ctype]))(var18) /* ctype on <var18:MType>*/;
4209 }
4210 if (varonce22) {
4211 var23 = varonce22;
4212 } else {
4213 var24 = "val*";
4214 var25 = 4;
4215 var26 = string__NativeString__to_s_with_length(var24, var25);
4216 var23 = var26;
4217 varonce22 = var23;
4218 }
4219 {
4220 var28 = string__FlatString___61d_61d(var21, var23);
4221 var27 = var28;
4222 }
4223 var3 = var27;
4224 } else {
4225 var3 = var_;
4226 }
4227 if (var3){
4228 var_tmp = var_value1;
4229 var_value1 = var_value2;
4230 var_value2 = var_tmp;
4231 } else {
4232 }
4233 {
4234 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
4235 var31 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
4236 if (unlikely(var31 == NULL)) {
4237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4238 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4239 show_backtrace(1);
4240 }
4241 var29 = var31;
4242 RET_LABEL30:(void)0;
4243 }
4244 }
4245 {
4246 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_compiler__MType__ctype]))(var29) /* ctype on <var29:MType>*/;
4247 }
4248 if (varonce33) {
4249 var34 = varonce33;
4250 } else {
4251 var35 = "val*";
4252 var36 = 4;
4253 var37 = string__NativeString__to_s_with_length(var35, var36);
4254 var34 = var37;
4255 varonce33 = var34;
4256 }
4257 {
4258 { /* Inline kernel#Object#!= (var32,var34) on <var32:String> */
4259 var_other = var34;
4260 {
4261 var42 = ((short int (*)(val*, val*))(var32->class->vft[COLOR_kernel__Object___61d_61d]))(var32, var_other) /* == on <var32:String>*/;
4262 var41 = var42;
4263 }
4264 var43 = !var41;
4265 var39 = var43;
4266 goto RET_LABEL40;
4267 RET_LABEL40:(void)0;
4268 }
4269 var38 = var39;
4270 }
4271 if (var38){
4272 {
4273 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
4274 var46 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
4275 if (unlikely(var46 == NULL)) {
4276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4277 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4278 show_backtrace(1);
4279 }
4280 var44 = var46;
4281 RET_LABEL45:(void)0;
4282 }
4283 }
4284 {
4285 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
4286 var49 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
4287 if (unlikely(var49 == NULL)) {
4288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4289 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4290 show_backtrace(1);
4291 }
4292 var47 = var49;
4293 RET_LABEL48:(void)0;
4294 }
4295 }
4296 {
4297 { /* Inline kernel#Object#== (var44,var47) on <var44:MType> */
4298 var_other53 = var47;
4299 {
4300 { /* Inline kernel#Object#is_same_instance (var44,var_other53) on <var44:MType> */
4301 var56 = var44 == var_other53;
4302 var54 = var56;
4303 goto RET_LABEL55;
4304 RET_LABEL55:(void)0;
4305 }
4306 }
4307 var51 = var54;
4308 goto RET_LABEL52;
4309 RET_LABEL52:(void)0;
4310 }
4311 var50 = var51;
4312 }
4313 if (var50){
4314 if (varonce57) {
4315 var58 = varonce57;
4316 } else {
4317 var59 = " = ";
4318 var60 = 3;
4319 var61 = string__NativeString__to_s_with_length(var59, var60);
4320 var58 = var61;
4321 varonce57 = var58;
4322 }
4323 if (varonce62) {
4324 var63 = varonce62;
4325 } else {
4326 var64 = " == ";
4327 var65 = 4;
4328 var66 = string__NativeString__to_s_with_length(var64, var65);
4329 var63 = var66;
4330 varonce62 = var63;
4331 }
4332 if (varonce67) {
4333 var68 = varonce67;
4334 } else {
4335 var69 = ";";
4336 var70 = 1;
4337 var71 = string__NativeString__to_s_with_length(var69, var70);
4338 var68 = var71;
4339 varonce67 = var68;
4340 }
4341 var72 = NEW_array__Array(&type_array__Arraykernel__Object);
4342 { /* var72 = array_instance Array[Object] */
4343 var73 = 6;
4344 var74 = NEW_array__NativeArray(var73, &type_array__NativeArraykernel__Object);
4345 ((struct instance_array__NativeArray*)var74)->values[0] = (val*) var_res;
4346 ((struct instance_array__NativeArray*)var74)->values[1] = (val*) var58;
4347 ((struct instance_array__NativeArray*)var74)->values[2] = (val*) var_value1;
4348 ((struct instance_array__NativeArray*)var74)->values[3] = (val*) var63;
4349 ((struct instance_array__NativeArray*)var74)->values[4] = (val*) var_value2;
4350 ((struct instance_array__NativeArray*)var74)->values[5] = (val*) var68;
4351 {
4352 ((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Object]>*/;
4353 }
4354 }
4355 {
4356 var75 = ((val* (*)(val*))(var72->class->vft[COLOR_string__Object__to_s]))(var72) /* to_s on <var72:Array[Object]>*/;
4357 }
4358 {
4359 abstract_compiler__AbstractCompilerVisitor__add(self, var75); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4360 }
4361 } else {
4362 {
4363 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
4364 var78 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
4365 if (unlikely(var78 == NULL)) {
4366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4367 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4368 show_backtrace(1);
4369 }
4370 var76 = var78;
4371 RET_LABEL77:(void)0;
4372 }
4373 }
4374 {
4375 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_abstract_compiler__MType__ctype]))(var76) /* ctype on <var76:MType>*/;
4376 }
4377 if (varonce80) {
4378 var81 = varonce80;
4379 } else {
4380 var82 = "val*";
4381 var83 = 4;
4382 var84 = string__NativeString__to_s_with_length(var82, var83);
4383 var81 = var84;
4384 varonce80 = var81;
4385 }
4386 {
4387 { /* Inline kernel#Object#!= (var79,var81) on <var79:String> */
4388 var_other = var81;
4389 {
4390 var89 = ((short int (*)(val*, val*))(var79->class->vft[COLOR_kernel__Object___61d_61d]))(var79, var_other) /* == on <var79:String>*/;
4391 var88 = var89;
4392 }
4393 var90 = !var88;
4394 var86 = var90;
4395 goto RET_LABEL87;
4396 RET_LABEL87:(void)0;
4397 }
4398 var85 = var86;
4399 }
4400 if (var85){
4401 if (varonce91) {
4402 var92 = varonce91;
4403 } else {
4404 var93 = " = 0; /* incompatible types ";
4405 var94 = 28;
4406 var95 = string__NativeString__to_s_with_length(var93, var94);
4407 var92 = var95;
4408 varonce91 = var92;
4409 }
4410 {
4411 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
4412 var98 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
4413 if (unlikely(var98 == NULL)) {
4414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4415 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4416 show_backtrace(1);
4417 }
4418 var96 = var98;
4419 RET_LABEL97:(void)0;
4420 }
4421 }
4422 if (varonce99) {
4423 var100 = varonce99;
4424 } else {
4425 var101 = " vs. ";
4426 var102 = 5;
4427 var103 = string__NativeString__to_s_with_length(var101, var102);
4428 var100 = var103;
4429 varonce99 = var100;
4430 }
4431 {
4432 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value2) on <var_value2:RuntimeVariable> */
4433 var106 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value2:RuntimeVariable> */
4434 if (unlikely(var106 == NULL)) {
4435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4436 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4437 show_backtrace(1);
4438 }
4439 var104 = var106;
4440 RET_LABEL105:(void)0;
4441 }
4442 }
4443 if (varonce107) {
4444 var108 = varonce107;
4445 } else {
4446 var109 = "*/";
4447 var110 = 2;
4448 var111 = string__NativeString__to_s_with_length(var109, var110);
4449 var108 = var111;
4450 varonce107 = var108;
4451 }
4452 var112 = NEW_array__Array(&type_array__Arraykernel__Object);
4453 { /* var112 = array_instance Array[Object] */
4454 var113 = 6;
4455 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraykernel__Object);
4456 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_res;
4457 ((struct instance_array__NativeArray*)var114)->values[1] = (val*) var92;
4458 ((struct instance_array__NativeArray*)var114)->values[2] = (val*) var96;
4459 ((struct instance_array__NativeArray*)var114)->values[3] = (val*) var100;
4460 ((struct instance_array__NativeArray*)var114)->values[4] = (val*) var104;
4461 ((struct instance_array__NativeArray*)var114)->values[5] = (val*) var108;
4462 {
4463 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[Object]>*/;
4464 }
4465 }
4466 {
4467 var115 = ((val* (*)(val*))(var112->class->vft[COLOR_string__Object__to_s]))(var112) /* to_s on <var112:Array[Object]>*/;
4468 }
4469 {
4470 abstract_compiler__AbstractCompilerVisitor__add(self, var115); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4471 }
4472 } else {
4473 {
4474 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
4475 var118 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
4476 if (unlikely(var118 == NULL)) {
4477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4478 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4479 show_backtrace(1);
4480 }
4481 var116 = var118;
4482 RET_LABEL117:(void)0;
4483 }
4484 }
4485 /* <var116:MType> isa MClassType */
4486 cltype = type_model__MClassType.color;
4487 idtype = type_model__MClassType.id;
4488 if(cltype >= var116->type->table_size) {
4489 var119 = 0;
4490 } else {
4491 var119 = var116->type->type_table[cltype] == idtype;
4492 }
4493 if (unlikely(!var119)) {
4494 var_class_name = var116 == NULL ? "null" : var116->type->name;
4495 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
4496 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1603);
4497 show_backtrace(1);
4498 }
4499 var_mtype1 = var116;
4500 if (varonce120) {
4501 var121 = varonce120;
4502 } else {
4503 var122 = "class_";
4504 var123 = 6;
4505 var124 = string__NativeString__to_s_with_length(var122, var123);
4506 var121 = var124;
4507 varonce120 = var121;
4508 }
4509 {
4510 var125 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
4511 }
4512 var126 = NEW_array__Array(&type_array__Arraykernel__Object);
4513 { /* var126 = array_instance Array[Object] */
4514 var127 = 2;
4515 var128 = NEW_array__NativeArray(var127, &type_array__NativeArraykernel__Object);
4516 ((struct instance_array__NativeArray*)var128)->values[0] = (val*) var121;
4517 ((struct instance_array__NativeArray*)var128)->values[1] = (val*) var125;
4518 {
4519 ((void (*)(val*, val*, long))(var126->class->vft[COLOR_array__Array__with_native]))(var126, var128, var127) /* with_native on <var126:Array[Object]>*/;
4520 }
4521 }
4522 {
4523 var129 = ((val* (*)(val*))(var126->class->vft[COLOR_string__Object__to_s]))(var126) /* to_s on <var126:Array[Object]>*/;
4524 }
4525 {
4526 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var129); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
4527 }
4528 if (varonce130) {
4529 var131 = varonce130;
4530 } else {
4531 var132 = " = (";
4532 var133 = 4;
4533 var134 = string__NativeString__to_s_with_length(var132, var133);
4534 var131 = var134;
4535 varonce130 = var131;
4536 }
4537 if (varonce135) {
4538 var136 = varonce135;
4539 } else {
4540 var137 = " != NULL) && (";
4541 var138 = 14;
4542 var139 = string__NativeString__to_s_with_length(var137, var138);
4543 var136 = var139;
4544 varonce135 = var136;
4545 }
4546 if (varonce140) {
4547 var141 = varonce140;
4548 } else {
4549 var142 = "->class == &class_";
4550 var143 = 18;
4551 var144 = string__NativeString__to_s_with_length(var142, var143);
4552 var141 = var144;
4553 varonce140 = var141;
4554 }
4555 {
4556 var145 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
4557 }
4558 if (varonce146) {
4559 var147 = varonce146;
4560 } else {
4561 var148 = ");";
4562 var149 = 2;
4563 var150 = string__NativeString__to_s_with_length(var148, var149);
4564 var147 = var150;
4565 varonce146 = var147;
4566 }
4567 var151 = NEW_array__Array(&type_array__Arraykernel__Object);
4568 { /* var151 = array_instance Array[Object] */
4569 var152 = 8;
4570 var153 = NEW_array__NativeArray(var152, &type_array__NativeArraykernel__Object);
4571 ((struct instance_array__NativeArray*)var153)->values[0] = (val*) var_res;
4572 ((struct instance_array__NativeArray*)var153)->values[1] = (val*) var131;
4573 ((struct instance_array__NativeArray*)var153)->values[2] = (val*) var_value2;
4574 ((struct instance_array__NativeArray*)var153)->values[3] = (val*) var136;
4575 ((struct instance_array__NativeArray*)var153)->values[4] = (val*) var_value2;
4576 ((struct instance_array__NativeArray*)var153)->values[5] = (val*) var141;
4577 ((struct instance_array__NativeArray*)var153)->values[6] = (val*) var145;
4578 ((struct instance_array__NativeArray*)var153)->values[7] = (val*) var147;
4579 {
4580 ((void (*)(val*, val*, long))(var151->class->vft[COLOR_array__Array__with_native]))(var151, var153, var152) /* with_native on <var151:Array[Object]>*/;
4581 }
4582 }
4583 {
4584 var154 = ((val* (*)(val*))(var151->class->vft[COLOR_string__Object__to_s]))(var151) /* to_s on <var151:Array[Object]>*/;
4585 }
4586 {
4587 abstract_compiler__AbstractCompilerVisitor__add(self, var154); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4588 }
4589 if (varonce155) {
4590 var156 = varonce155;
4591 } else {
4592 var157 = "if (";
4593 var158 = 4;
4594 var159 = string__NativeString__to_s_with_length(var157, var158);
4595 var156 = var159;
4596 varonce155 = var156;
4597 }
4598 if (varonce160) {
4599 var161 = varonce160;
4600 } else {
4601 var162 = ") {";
4602 var163 = 3;
4603 var164 = string__NativeString__to_s_with_length(var162, var163);
4604 var161 = var164;
4605 varonce160 = var161;
4606 }
4607 var165 = NEW_array__Array(&type_array__Arraykernel__Object);
4608 { /* var165 = array_instance Array[Object] */
4609 var166 = 3;
4610 var167 = NEW_array__NativeArray(var166, &type_array__NativeArraykernel__Object);
4611 ((struct instance_array__NativeArray*)var167)->values[0] = (val*) var156;
4612 ((struct instance_array__NativeArray*)var167)->values[1] = (val*) var_res;
4613 ((struct instance_array__NativeArray*)var167)->values[2] = (val*) var161;
4614 {
4615 ((void (*)(val*, val*, long))(var165->class->vft[COLOR_array__Array__with_native]))(var165, var167, var166) /* with_native on <var165:Array[Object]>*/;
4616 }
4617 }
4618 {
4619 var168 = ((val* (*)(val*))(var165->class->vft[COLOR_string__Object__to_s]))(var165) /* to_s on <var165:Array[Object]>*/;
4620 }
4621 {
4622 abstract_compiler__AbstractCompilerVisitor__add(self, var168); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4623 }
4624 if (varonce169) {
4625 var170 = varonce169;
4626 } else {
4627 var171 = " = (";
4628 var172 = 4;
4629 var173 = string__NativeString__to_s_with_length(var171, var172);
4630 var170 = var173;
4631 varonce169 = var170;
4632 }
4633 {
4634 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value1) on <var_value1:RuntimeVariable> */
4635 var176 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value1:RuntimeVariable> */
4636 if (unlikely(var176 == NULL)) {
4637 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4638 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
4639 show_backtrace(1);
4640 }
4641 var174 = var176;
4642 RET_LABEL175:(void)0;
4643 }
4644 }
4645 {
4646 var177 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_value2, var174);
4647 }
4648 if (varonce178) {
4649 var179 = varonce178;
4650 } else {
4651 var180 = " == ";
4652 var181 = 4;
4653 var182 = string__NativeString__to_s_with_length(var180, var181);
4654 var179 = var182;
4655 varonce178 = var179;
4656 }
4657 if (varonce183) {
4658 var184 = varonce183;
4659 } else {
4660 var185 = ");";
4661 var186 = 2;
4662 var187 = string__NativeString__to_s_with_length(var185, var186);
4663 var184 = var187;
4664 varonce183 = var184;
4665 }
4666 var188 = NEW_array__Array(&type_array__Arraykernel__Object);
4667 { /* var188 = array_instance Array[Object] */
4668 var189 = 6;
4669 var190 = NEW_array__NativeArray(var189, &type_array__NativeArraykernel__Object);
4670 ((struct instance_array__NativeArray*)var190)->values[0] = (val*) var_res;
4671 ((struct instance_array__NativeArray*)var190)->values[1] = (val*) var170;
4672 ((struct instance_array__NativeArray*)var190)->values[2] = (val*) var177;
4673 ((struct instance_array__NativeArray*)var190)->values[3] = (val*) var179;
4674 ((struct instance_array__NativeArray*)var190)->values[4] = (val*) var_value1;
4675 ((struct instance_array__NativeArray*)var190)->values[5] = (val*) var184;
4676 {
4677 ((void (*)(val*, val*, long))(var188->class->vft[COLOR_array__Array__with_native]))(var188, var190, var189) /* with_native on <var188:Array[Object]>*/;
4678 }
4679 }
4680 {
4681 var191 = ((val* (*)(val*))(var188->class->vft[COLOR_string__Object__to_s]))(var188) /* to_s on <var188:Array[Object]>*/;
4682 }
4683 {
4684 abstract_compiler__AbstractCompilerVisitor__add(self, var191); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4685 }
4686 if (varonce192) {
4687 var193 = varonce192;
4688 } else {
4689 var194 = "}";
4690 var195 = 1;
4691 var196 = string__NativeString__to_s_with_length(var194, var195);
4692 var193 = var196;
4693 varonce192 = var193;
4694 }
4695 {
4696 abstract_compiler__AbstractCompilerVisitor__add(self, var193); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4697 }
4698 }
4699 }
4700 var = var_res;
4701 goto RET_LABEL;
4702 } else {
4703 }
4704 var197 = 1;
4705 var_maybe_null = var197;
4706 var198 = NEW_array__Array(&type_array__Arraystring__String);
4707 {
4708 ((void (*)(val*))(var198->class->vft[COLOR_kernel__Object__init]))(var198) /* init on <var198:Array[String]>*/;
4709 }
4710 var_test = var198;
4711 {
4712 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value1) on <var_value1:RuntimeVariable> */
4713 var201 = var_value1->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value1:RuntimeVariable> */
4714 if (unlikely(var201 == NULL)) {
4715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4716 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
4717 show_backtrace(1);
4718 }
4719 var199 = var201;
4720 RET_LABEL200:(void)0;
4721 }
4722 }
4723 var_t1 = var199;
4724 /* <var_t1:MType> isa MNullableType */
4725 cltype203 = type_model__MNullableType.color;
4726 idtype204 = type_model__MNullableType.id;
4727 if(cltype203 >= var_t1->type->table_size) {
4728 var202 = 0;
4729 } else {
4730 var202 = var_t1->type->type_table[cltype203] == idtype204;
4731 }
4732 if (var202){
4733 if (varonce205) {
4734 var206 = varonce205;
4735 } else {
4736 var207 = " != NULL";
4737 var208 = 8;
4738 var209 = string__NativeString__to_s_with_length(var207, var208);
4739 var206 = var209;
4740 varonce205 = var206;
4741 }
4742 var210 = NEW_array__Array(&type_array__Arraykernel__Object);
4743 { /* var210 = array_instance Array[Object] */
4744 var211 = 2;
4745 var212 = NEW_array__NativeArray(var211, &type_array__NativeArraykernel__Object);
4746 ((struct instance_array__NativeArray*)var212)->values[0] = (val*) var_value1;
4747 ((struct instance_array__NativeArray*)var212)->values[1] = (val*) var206;
4748 {
4749 ((void (*)(val*, val*, long))(var210->class->vft[COLOR_array__Array__with_native]))(var210, var212, var211) /* with_native on <var210:Array[Object]>*/;
4750 }
4751 }
4752 {
4753 var213 = ((val* (*)(val*))(var210->class->vft[COLOR_string__Object__to_s]))(var210) /* to_s on <var210:Array[Object]>*/;
4754 }
4755 {
4756 array__Array__add(var_test, var213); /* Direct call array#Array#add on <var_test:Array[String]>*/
4757 }
4758 {
4759 { /* Inline model#MNullableType#mtype (var_t1) on <var_t1:MType(MNullableType)> */
4760 var216 = var_t1->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_t1:MType(MNullableType)> */
4761 if (unlikely(var216 == NULL)) {
4762 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4763 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
4764 show_backtrace(1);
4765 }
4766 var214 = var216;
4767 RET_LABEL215:(void)0;
4768 }
4769 }
4770 var_t1 = var214;
4771 } else {
4772 var217 = 0;
4773 var_maybe_null = var217;
4774 }
4775 {
4776 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value2) on <var_value2:RuntimeVariable> */
4777 var220 = var_value2->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value2:RuntimeVariable> */
4778 if (unlikely(var220 == NULL)) {
4779 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4780 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
4781 show_backtrace(1);
4782 }
4783 var218 = var220;
4784 RET_LABEL219:(void)0;
4785 }
4786 }
4787 var_t2 = var218;
4788 /* <var_t2:MType> isa MNullableType */
4789 cltype222 = type_model__MNullableType.color;
4790 idtype223 = type_model__MNullableType.id;
4791 if(cltype222 >= var_t2->type->table_size) {
4792 var221 = 0;
4793 } else {
4794 var221 = var_t2->type->type_table[cltype222] == idtype223;
4795 }
4796 if (var221){
4797 if (varonce224) {
4798 var225 = varonce224;
4799 } else {
4800 var226 = " != NULL";
4801 var227 = 8;
4802 var228 = string__NativeString__to_s_with_length(var226, var227);
4803 var225 = var228;
4804 varonce224 = var225;
4805 }
4806 var229 = NEW_array__Array(&type_array__Arraykernel__Object);
4807 { /* var229 = array_instance Array[Object] */
4808 var230 = 2;
4809 var231 = NEW_array__NativeArray(var230, &type_array__NativeArraykernel__Object);
4810 ((struct instance_array__NativeArray*)var231)->values[0] = (val*) var_value2;
4811 ((struct instance_array__NativeArray*)var231)->values[1] = (val*) var225;
4812 {
4813 ((void (*)(val*, val*, long))(var229->class->vft[COLOR_array__Array__with_native]))(var229, var231, var230) /* with_native on <var229:Array[Object]>*/;
4814 }
4815 }
4816 {
4817 var232 = ((val* (*)(val*))(var229->class->vft[COLOR_string__Object__to_s]))(var229) /* to_s on <var229:Array[Object]>*/;
4818 }
4819 {
4820 array__Array__add(var_test, var232); /* Direct call array#Array#add on <var_test:Array[String]>*/
4821 }
4822 {
4823 { /* Inline model#MNullableType#mtype (var_t2) on <var_t2:MType(MNullableType)> */
4824 var235 = var_t2->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_t2:MType(MNullableType)> */
4825 if (unlikely(var235 == NULL)) {
4826 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4827 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
4828 show_backtrace(1);
4829 }
4830 var233 = var235;
4831 RET_LABEL234:(void)0;
4832 }
4833 }
4834 var_t2 = var233;
4835 } else {
4836 var236 = 0;
4837 var_maybe_null = var236;
4838 }
4839 var237 = 0;
4840 var_incompatible = var237;
4841 {
4842 var238 = ((val* (*)(val*))(var_t1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t1) /* ctype on <var_t1:MType>*/;
4843 }
4844 if (varonce239) {
4845 var240 = varonce239;
4846 } else {
4847 var241 = "val*";
4848 var242 = 4;
4849 var243 = string__NativeString__to_s_with_length(var241, var242);
4850 var240 = var243;
4851 varonce239 = var240;
4852 }
4853 {
4854 { /* Inline kernel#Object#!= (var238,var240) on <var238:String> */
4855 var_other = var240;
4856 {
4857 var248 = ((short int (*)(val*, val*))(var238->class->vft[COLOR_kernel__Object___61d_61d]))(var238, var_other) /* == on <var238:String>*/;
4858 var247 = var248;
4859 }
4860 var249 = !var247;
4861 var245 = var249;
4862 goto RET_LABEL246;
4863 RET_LABEL246:(void)0;
4864 }
4865 var244 = var245;
4866 }
4867 if (var244){
4868 var_primitive = var_t1;
4869 {
4870 { /* Inline kernel#Object#== (var_t1,var_t2) on <var_t1:MType> */
4871 var_other53 = var_t2;
4872 {
4873 { /* Inline kernel#Object#is_same_instance (var_t1,var_other53) on <var_t1:MType> */
4874 var255 = var_t1 == var_other53;
4875 var253 = var255;
4876 goto RET_LABEL254;
4877 RET_LABEL254:(void)0;
4878 }
4879 }
4880 var251 = var253;
4881 goto RET_LABEL252;
4882 RET_LABEL252:(void)0;
4883 }
4884 var250 = var251;
4885 }
4886 if (var250){
4887 } else {
4888 {
4889 var256 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
4890 }
4891 if (varonce257) {
4892 var258 = varonce257;
4893 } else {
4894 var259 = "val*";
4895 var260 = 4;
4896 var261 = string__NativeString__to_s_with_length(var259, var260);
4897 var258 = var261;
4898 varonce257 = var258;
4899 }
4900 {
4901 { /* Inline kernel#Object#!= (var256,var258) on <var256:String> */
4902 var_other = var258;
4903 {
4904 var266 = ((short int (*)(val*, val*))(var256->class->vft[COLOR_kernel__Object___61d_61d]))(var256, var_other) /* == on <var256:String>*/;
4905 var265 = var266;
4906 }
4907 var267 = !var265;
4908 var263 = var267;
4909 goto RET_LABEL264;
4910 RET_LABEL264:(void)0;
4911 }
4912 var262 = var263;
4913 }
4914 if (var262){
4915 var268 = 1;
4916 var_incompatible = var268;
4917 } else {
4918 {
4919 var269 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, var_value2);
4920 }
4921 if (var269){
4922 if (varonce270) {
4923 var271 = varonce270;
4924 } else {
4925 var272 = "->class == ";
4926 var273 = 11;
4927 var274 = string__NativeString__to_s_with_length(var272, var273);
4928 var271 = var274;
4929 varonce270 = var271;
4930 }
4931 if (varonce275) {
4932 var276 = varonce275;
4933 } else {
4934 var277 = "->class";
4935 var278 = 7;
4936 var279 = string__NativeString__to_s_with_length(var277, var278);
4937 var276 = var279;
4938 varonce275 = var276;
4939 }
4940 var280 = NEW_array__Array(&type_array__Arraykernel__Object);
4941 { /* var280 = array_instance Array[Object] */
4942 var281 = 4;
4943 var282 = NEW_array__NativeArray(var281, &type_array__NativeArraykernel__Object);
4944 ((struct instance_array__NativeArray*)var282)->values[0] = (val*) var_value1;
4945 ((struct instance_array__NativeArray*)var282)->values[1] = (val*) var271;
4946 ((struct instance_array__NativeArray*)var282)->values[2] = (val*) var_value2;
4947 ((struct instance_array__NativeArray*)var282)->values[3] = (val*) var276;
4948 {
4949 ((void (*)(val*, val*, long))(var280->class->vft[COLOR_array__Array__with_native]))(var280, var282, var281) /* with_native on <var280:Array[Object]>*/;
4950 }
4951 }
4952 {
4953 var283 = ((val* (*)(val*))(var280->class->vft[COLOR_string__Object__to_s]))(var280) /* to_s on <var280:Array[Object]>*/;
4954 }
4955 {
4956 array__Array__add(var_test, var283); /* Direct call array#Array#add on <var_test:Array[String]>*/
4957 }
4958 } else {
4959 var284 = 1;
4960 var_incompatible = var284;
4961 }
4962 }
4963 }
4964 } else {
4965 {
4966 var285 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
4967 }
4968 if (varonce286) {
4969 var287 = varonce286;
4970 } else {
4971 var288 = "val*";
4972 var289 = 4;
4973 var290 = string__NativeString__to_s_with_length(var288, var289);
4974 var287 = var290;
4975 varonce286 = var287;
4976 }
4977 {
4978 { /* Inline kernel#Object#!= (var285,var287) on <var285:String> */
4979 var_other = var287;
4980 {
4981 var295 = ((short int (*)(val*, val*))(var285->class->vft[COLOR_kernel__Object___61d_61d]))(var285, var_other) /* == on <var285:String>*/;
4982 var294 = var295;
4983 }
4984 var296 = !var294;
4985 var292 = var296;
4986 goto RET_LABEL293;
4987 RET_LABEL293:(void)0;
4988 }
4989 var291 = var292;
4990 }
4991 if (var291){
4992 var_primitive = var_t2;
4993 {
4994 var297 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, var_value1);
4995 }
4996 if (var297){
4997 if (varonce298) {
4998 var299 = varonce298;
4999 } else {
5000 var300 = "->class == ";
5001 var301 = 11;
5002 var302 = string__NativeString__to_s_with_length(var300, var301);
5003 var299 = var302;
5004 varonce298 = var299;
5005 }
5006 if (varonce303) {
5007 var304 = varonce303;
5008 } else {
5009 var305 = "->class";
5010 var306 = 7;
5011 var307 = string__NativeString__to_s_with_length(var305, var306);
5012 var304 = var307;
5013 varonce303 = var304;
5014 }
5015 var308 = NEW_array__Array(&type_array__Arraykernel__Object);
5016 { /* var308 = array_instance Array[Object] */
5017 var309 = 4;
5018 var310 = NEW_array__NativeArray(var309, &type_array__NativeArraykernel__Object);
5019 ((struct instance_array__NativeArray*)var310)->values[0] = (val*) var_value1;
5020 ((struct instance_array__NativeArray*)var310)->values[1] = (val*) var299;
5021 ((struct instance_array__NativeArray*)var310)->values[2] = (val*) var_value2;
5022 ((struct instance_array__NativeArray*)var310)->values[3] = (val*) var304;
5023 {
5024 ((void (*)(val*, val*, long))(var308->class->vft[COLOR_array__Array__with_native]))(var308, var310, var309) /* with_native on <var308:Array[Object]>*/;
5025 }
5026 }
5027 {
5028 var311 = ((val* (*)(val*))(var308->class->vft[COLOR_string__Object__to_s]))(var308) /* to_s on <var308:Array[Object]>*/;
5029 }
5030 {
5031 array__Array__add(var_test, var311); /* Direct call array#Array#add on <var_test:Array[String]>*/
5032 }
5033 } else {
5034 var312 = 1;
5035 var_incompatible = var312;
5036 }
5037 } else {
5038 var313 = NULL;
5039 var_primitive = var313;
5040 }
5041 }
5042 if (var_incompatible){
5043 if (var_maybe_null){
5044 if (varonce314) {
5045 var315 = varonce314;
5046 } else {
5047 var316 = " = ";
5048 var317 = 3;
5049 var318 = string__NativeString__to_s_with_length(var316, var317);
5050 var315 = var318;
5051 varonce314 = var315;
5052 }
5053 if (varonce319) {
5054 var320 = varonce319;
5055 } else {
5056 var321 = " == ";
5057 var322 = 4;
5058 var323 = string__NativeString__to_s_with_length(var321, var322);
5059 var320 = var323;
5060 varonce319 = var320;
5061 }
5062 if (varonce324) {
5063 var325 = varonce324;
5064 } else {
5065 var326 = "; /* incompatible types ";
5066 var327 = 24;
5067 var328 = string__NativeString__to_s_with_length(var326, var327);
5068 var325 = var328;
5069 varonce324 = var325;
5070 }
5071 if (varonce329) {
5072 var330 = varonce329;
5073 } else {
5074 var331 = " vs. ";
5075 var332 = 5;
5076 var333 = string__NativeString__to_s_with_length(var331, var332);
5077 var330 = var333;
5078 varonce329 = var330;
5079 }
5080 if (varonce334) {
5081 var335 = varonce334;
5082 } else {
5083 var336 = "; but may be NULL*/";
5084 var337 = 19;
5085 var338 = string__NativeString__to_s_with_length(var336, var337);
5086 var335 = var338;
5087 varonce334 = var335;
5088 }
5089 var339 = NEW_array__Array(&type_array__Arraykernel__Object);
5090 { /* var339 = array_instance Array[Object] */
5091 var340 = 10;
5092 var341 = NEW_array__NativeArray(var340, &type_array__NativeArraykernel__Object);
5093 ((struct instance_array__NativeArray*)var341)->values[0] = (val*) var_res;
5094 ((struct instance_array__NativeArray*)var341)->values[1] = (val*) var315;
5095 ((struct instance_array__NativeArray*)var341)->values[2] = (val*) var_value1;
5096 ((struct instance_array__NativeArray*)var341)->values[3] = (val*) var320;
5097 ((struct instance_array__NativeArray*)var341)->values[4] = (val*) var_value2;
5098 ((struct instance_array__NativeArray*)var341)->values[5] = (val*) var325;
5099 ((struct instance_array__NativeArray*)var341)->values[6] = (val*) var_t1;
5100 ((struct instance_array__NativeArray*)var341)->values[7] = (val*) var330;
5101 ((struct instance_array__NativeArray*)var341)->values[8] = (val*) var_t2;
5102 ((struct instance_array__NativeArray*)var341)->values[9] = (val*) var335;
5103 {
5104 ((void (*)(val*, val*, long))(var339->class->vft[COLOR_array__Array__with_native]))(var339, var341, var340) /* with_native on <var339:Array[Object]>*/;
5105 }
5106 }
5107 {
5108 var342 = ((val* (*)(val*))(var339->class->vft[COLOR_string__Object__to_s]))(var339) /* to_s on <var339:Array[Object]>*/;
5109 }
5110 {
5111 abstract_compiler__AbstractCompilerVisitor__add(self, var342); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5112 }
5113 var = var_res;
5114 goto RET_LABEL;
5115 } else {
5116 if (varonce343) {
5117 var344 = varonce343;
5118 } else {
5119 var345 = " = 0; /* incompatible types ";
5120 var346 = 28;
5121 var347 = string__NativeString__to_s_with_length(var345, var346);
5122 var344 = var347;
5123 varonce343 = var344;
5124 }
5125 if (varonce348) {
5126 var349 = varonce348;
5127 } else {
5128 var350 = " vs. ";
5129 var351 = 5;
5130 var352 = string__NativeString__to_s_with_length(var350, var351);
5131 var349 = var352;
5132 varonce348 = var349;
5133 }
5134 if (varonce353) {
5135 var354 = varonce353;
5136 } else {
5137 var355 = "; cannot be NULL */";
5138 var356 = 19;
5139 var357 = string__NativeString__to_s_with_length(var355, var356);
5140 var354 = var357;
5141 varonce353 = var354;
5142 }
5143 var358 = NEW_array__Array(&type_array__Arraykernel__Object);
5144 { /* var358 = array_instance Array[Object] */
5145 var359 = 6;
5146 var360 = NEW_array__NativeArray(var359, &type_array__NativeArraykernel__Object);
5147 ((struct instance_array__NativeArray*)var360)->values[0] = (val*) var_res;
5148 ((struct instance_array__NativeArray*)var360)->values[1] = (val*) var344;
5149 ((struct instance_array__NativeArray*)var360)->values[2] = (val*) var_t1;
5150 ((struct instance_array__NativeArray*)var360)->values[3] = (val*) var349;
5151 ((struct instance_array__NativeArray*)var360)->values[4] = (val*) var_t2;
5152 ((struct instance_array__NativeArray*)var360)->values[5] = (val*) var354;
5153 {
5154 ((void (*)(val*, val*, long))(var358->class->vft[COLOR_array__Array__with_native]))(var358, var360, var359) /* with_native on <var358:Array[Object]>*/;
5155 }
5156 }
5157 {
5158 var361 = ((val* (*)(val*))(var358->class->vft[COLOR_string__Object__to_s]))(var358) /* to_s on <var358:Array[Object]>*/;
5159 }
5160 {
5161 abstract_compiler__AbstractCompilerVisitor__add(self, var361); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5162 }
5163 var = var_res;
5164 goto RET_LABEL;
5165 }
5166 } else {
5167 }
5168 var362 = NULL;
5169 if (var_primitive == NULL) {
5170 var363 = 0; /* is null */
5171 } else {
5172 var363 = 1; /* arg is null and recv is not */
5173 }
5174 if (0) {
5175 { /* Inline kernel#Object#!= (var_primitive,var362) on <var_primitive:nullable Object(nullable MType)> */
5176 var_other = var362;
5177 {
5178 var367 = ((short int (*)(val*, val*))(var_primitive->class->vft[COLOR_kernel__Object___61d_61d]))(var_primitive, var_other) /* == on <var_primitive:nullable MType(MType)>*/;
5179 var366 = var367;
5180 }
5181 var368 = !var366;
5182 var364 = var368;
5183 goto RET_LABEL365;
5184 RET_LABEL365:(void)0;
5185 }
5186 var363 = var364;
5187 }
5188 if (var363){
5189 if (varonce369) {
5190 var370 = varonce369;
5191 } else {
5192 var371 = "((struct instance_";
5193 var372 = 18;
5194 var373 = string__NativeString__to_s_with_length(var371, var372);
5195 var370 = var373;
5196 varonce369 = var370;
5197 }
5198 {
5199 var374 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_primitive) /* c_name on <var_primitive:nullable Object(MType)>*/;
5200 }
5201 if (varonce375) {
5202 var376 = varonce375;
5203 } else {
5204 var377 = "*)";
5205 var378 = 2;
5206 var379 = string__NativeString__to_s_with_length(var377, var378);
5207 var376 = var379;
5208 varonce375 = var376;
5209 }
5210 if (varonce380) {
5211 var381 = varonce380;
5212 } else {
5213 var382 = ")->value == ((struct instance_";
5214 var383 = 30;
5215 var384 = string__NativeString__to_s_with_length(var382, var383);
5216 var381 = var384;
5217 varonce380 = var381;
5218 }
5219 {
5220 var385 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_primitive) /* c_name on <var_primitive:nullable Object(MType)>*/;
5221 }
5222 if (varonce386) {
5223 var387 = varonce386;
5224 } else {
5225 var388 = "*)";
5226 var389 = 2;
5227 var390 = string__NativeString__to_s_with_length(var388, var389);
5228 var387 = var390;
5229 varonce386 = var387;
5230 }
5231 if (varonce391) {
5232 var392 = varonce391;
5233 } else {
5234 var393 = ")->value";
5235 var394 = 8;
5236 var395 = string__NativeString__to_s_with_length(var393, var394);
5237 var392 = var395;
5238 varonce391 = var392;
5239 }
5240 var396 = NEW_array__Array(&type_array__Arraykernel__Object);
5241 { /* var396 = array_instance Array[Object] */
5242 var397 = 9;
5243 var398 = NEW_array__NativeArray(var397, &type_array__NativeArraykernel__Object);
5244 ((struct instance_array__NativeArray*)var398)->values[0] = (val*) var370;
5245 ((struct instance_array__NativeArray*)var398)->values[1] = (val*) var374;
5246 ((struct instance_array__NativeArray*)var398)->values[2] = (val*) var376;
5247 ((struct instance_array__NativeArray*)var398)->values[3] = (val*) var_value1;
5248 ((struct instance_array__NativeArray*)var398)->values[4] = (val*) var381;
5249 ((struct instance_array__NativeArray*)var398)->values[5] = (val*) var385;
5250 ((struct instance_array__NativeArray*)var398)->values[6] = (val*) var387;
5251 ((struct instance_array__NativeArray*)var398)->values[7] = (val*) var_value2;
5252 ((struct instance_array__NativeArray*)var398)->values[8] = (val*) var392;
5253 {
5254 ((void (*)(val*, val*, long))(var396->class->vft[COLOR_array__Array__with_native]))(var396, var398, var397) /* with_native on <var396:Array[Object]>*/;
5255 }
5256 }
5257 {
5258 var399 = ((val* (*)(val*))(var396->class->vft[COLOR_string__Object__to_s]))(var396) /* to_s on <var396:Array[Object]>*/;
5259 }
5260 {
5261 array__Array__add(var_test, var399); /* Direct call array#Array#add on <var_test:Array[String]>*/
5262 }
5263 } else {
5264 {
5265 var401 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, var_value1);
5266 }
5267 var_402 = var401;
5268 if (var401){
5269 {
5270 var403 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, var_value2);
5271 }
5272 var400 = var403;
5273 } else {
5274 var400 = var_402;
5275 }
5276 if (var400){
5277 if (varonce404) {
5278 var405 = varonce404;
5279 } else {
5280 var406 = "->class == ";
5281 var407 = 11;
5282 var408 = string__NativeString__to_s_with_length(var406, var407);
5283 var405 = var408;
5284 varonce404 = var405;
5285 }
5286 if (varonce409) {
5287 var410 = varonce409;
5288 } else {
5289 var411 = "->class";
5290 var412 = 7;
5291 var413 = string__NativeString__to_s_with_length(var411, var412);
5292 var410 = var413;
5293 varonce409 = var410;
5294 }
5295 var414 = NEW_array__Array(&type_array__Arraykernel__Object);
5296 { /* var414 = array_instance Array[Object] */
5297 var415 = 4;
5298 var416 = NEW_array__NativeArray(var415, &type_array__NativeArraykernel__Object);
5299 ((struct instance_array__NativeArray*)var416)->values[0] = (val*) var_value1;
5300 ((struct instance_array__NativeArray*)var416)->values[1] = (val*) var405;
5301 ((struct instance_array__NativeArray*)var416)->values[2] = (val*) var_value2;
5302 ((struct instance_array__NativeArray*)var416)->values[3] = (val*) var410;
5303 {
5304 ((void (*)(val*, val*, long))(var414->class->vft[COLOR_array__Array__with_native]))(var414, var416, var415) /* with_native on <var414:Array[Object]>*/;
5305 }
5306 }
5307 {
5308 var417 = ((val* (*)(val*))(var414->class->vft[COLOR_string__Object__to_s]))(var414) /* to_s on <var414:Array[Object]>*/;
5309 }
5310 {
5311 array__Array__add(var_test, var417); /* Direct call array#Array#add on <var_test:Array[String]>*/
5312 }
5313 var418 = NEW_array__Array(&type_array__Arraystring__String);
5314 {
5315 ((void (*)(val*))(var418->class->vft[COLOR_kernel__Object__init]))(var418) /* init on <var418:Array[String]>*/;
5316 }
5317 var_s = var418;
5318 {
5319 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5320 var421 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5321 if (unlikely(var421 == NULL)) {
5322 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5323 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5324 show_backtrace(1);
5325 }
5326 var419 = var421;
5327 RET_LABEL420:(void)0;
5328 }
5329 }
5330 {
5331 { /* Inline separate_compiler#SeparateCompiler#box_kinds (var419) on <var419:AbstractCompiler(SeparateCompiler)> */
5332 var424 = var419->attrs[COLOR_separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <var419:AbstractCompiler(SeparateCompiler)> */
5333 if (unlikely(var424 == NULL)) {
5334 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
5335 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 216);
5336 show_backtrace(1);
5337 }
5338 var422 = var424;
5339 RET_LABEL423:(void)0;
5340 }
5341 }
5342 var_425 = var422;
5343 {
5344 var426 = hash_collection__HashMap__iterator(var_425);
5345 }
5346 var_427 = var426;
5347 for(;;) {
5348 {
5349 var428 = hash_collection__HashMapIterator__is_ok(var_427);
5350 }
5351 if (var428){
5352 {
5353 var429 = hash_collection__HashMapIterator__key(var_427);
5354 }
5355 var_t = var429;
5356 {
5357 var430 = hash_collection__HashMapIterator__item(var_427);
5358 }
5359 var431 = ((struct instance_kernel__Int*)var430)->value; /* autounbox from nullable Object to Int */;
5360 var_v = var431;
5361 if (varonce432) {
5362 var433 = varonce432;
5363 } else {
5364 var434 = "(";
5365 var435 = 1;
5366 var436 = string__NativeString__to_s_with_length(var434, var435);
5367 var433 = var436;
5368 varonce432 = var433;
5369 }
5370 if (varonce437) {
5371 var438 = varonce437;
5372 } else {
5373 var439 = "->class->box_kind == ";
5374 var440 = 21;
5375 var441 = string__NativeString__to_s_with_length(var439, var440);
5376 var438 = var441;
5377 varonce437 = var438;
5378 }
5379 if (varonce442) {
5380 var443 = varonce442;
5381 } else {
5382 var444 = " && ((struct instance_";
5383 var445 = 22;
5384 var446 = string__NativeString__to_s_with_length(var444, var445);
5385 var443 = var446;
5386 varonce442 = var443;
5387 }
5388 {
5389 var447 = abstract_compiler__MClass__c_name(var_t);
5390 }
5391 if (varonce448) {
5392 var449 = varonce448;
5393 } else {
5394 var450 = "*)";
5395 var451 = 2;
5396 var452 = string__NativeString__to_s_with_length(var450, var451);
5397 var449 = var452;
5398 varonce448 = var449;
5399 }
5400 if (varonce453) {
5401 var454 = varonce453;
5402 } else {
5403 var455 = ")->value == ((struct instance_";
5404 var456 = 30;
5405 var457 = string__NativeString__to_s_with_length(var455, var456);
5406 var454 = var457;
5407 varonce453 = var454;
5408 }
5409 {
5410 var458 = abstract_compiler__MClass__c_name(var_t);
5411 }
5412 if (varonce459) {
5413 var460 = varonce459;
5414 } else {
5415 var461 = "*)";
5416 var462 = 2;
5417 var463 = string__NativeString__to_s_with_length(var461, var462);
5418 var460 = var463;
5419 varonce459 = var460;
5420 }
5421 if (varonce464) {
5422 var465 = varonce464;
5423 } else {
5424 var466 = ")->value)";
5425 var467 = 9;
5426 var468 = string__NativeString__to_s_with_length(var466, var467);
5427 var465 = var468;
5428 varonce464 = var465;
5429 }
5430 var469 = NEW_array__Array(&type_array__Arraykernel__Object);
5431 { /* var469 = array_instance Array[Object] */
5432 var470 = 13;
5433 var471 = NEW_array__NativeArray(var470, &type_array__NativeArraykernel__Object);
5434 ((struct instance_array__NativeArray*)var471)->values[0] = (val*) var433;
5435 ((struct instance_array__NativeArray*)var471)->values[1] = (val*) var_value1;
5436 ((struct instance_array__NativeArray*)var471)->values[2] = (val*) var438;
5437 var472 = BOX_kernel__Int(var_v); /* autobox from Int to Object */
5438 ((struct instance_array__NativeArray*)var471)->values[3] = (val*) var472;
5439 ((struct instance_array__NativeArray*)var471)->values[4] = (val*) var443;
5440 ((struct instance_array__NativeArray*)var471)->values[5] = (val*) var447;
5441 ((struct instance_array__NativeArray*)var471)->values[6] = (val*) var449;
5442 ((struct instance_array__NativeArray*)var471)->values[7] = (val*) var_value1;
5443 ((struct instance_array__NativeArray*)var471)->values[8] = (val*) var454;
5444 ((struct instance_array__NativeArray*)var471)->values[9] = (val*) var458;
5445 ((struct instance_array__NativeArray*)var471)->values[10] = (val*) var460;
5446 ((struct instance_array__NativeArray*)var471)->values[11] = (val*) var_value2;
5447 ((struct instance_array__NativeArray*)var471)->values[12] = (val*) var465;
5448 {
5449 ((void (*)(val*, val*, long))(var469->class->vft[COLOR_array__Array__with_native]))(var469, var471, var470) /* with_native on <var469:Array[Object]>*/;
5450 }
5451 }
5452 {
5453 var473 = ((val* (*)(val*))(var469->class->vft[COLOR_string__Object__to_s]))(var469) /* to_s on <var469:Array[Object]>*/;
5454 }
5455 {
5456 array__Array__add(var_s, var473); /* Direct call array#Array#add on <var_s:Array[String]>*/
5457 }
5458 {
5459 hash_collection__HashMapIterator__next(var_427); /* Direct call hash_collection#HashMapIterator#next on <var_427:HashMapIterator[MClass, Int]>*/
5460 }
5461 } else {
5462 goto BREAK_label;
5463 }
5464 }
5465 BREAK_label: (void)0;
5466 {
5467 { /* Inline abstract_collection#MapIterator#finish (var_427) on <var_427:HashMapIterator[MClass, Int]> */
5468 RET_LABEL474:(void)0;
5469 }
5470 }
5471 if (varonce475) {
5472 var476 = varonce475;
5473 } else {
5474 var477 = "(";
5475 var478 = 1;
5476 var479 = string__NativeString__to_s_with_length(var477, var478);
5477 var476 = var479;
5478 varonce475 = var476;
5479 }
5480 if (varonce480) {
5481 var481 = varonce480;
5482 } else {
5483 var482 = " || ";
5484 var483 = 4;
5485 var484 = string__NativeString__to_s_with_length(var482, var483);
5486 var481 = var484;
5487 varonce480 = var481;
5488 }
5489 {
5490 var485 = string__Collection__join(var_s, var481);
5491 }
5492 if (varonce486) {
5493 var487 = varonce486;
5494 } else {
5495 var488 = ")";
5496 var489 = 1;
5497 var490 = string__NativeString__to_s_with_length(var488, var489);
5498 var487 = var490;
5499 varonce486 = var487;
5500 }
5501 var491 = NEW_array__Array(&type_array__Arraykernel__Object);
5502 { /* var491 = array_instance Array[Object] */
5503 var492 = 3;
5504 var493 = NEW_array__NativeArray(var492, &type_array__NativeArraykernel__Object);
5505 ((struct instance_array__NativeArray*)var493)->values[0] = (val*) var476;
5506 ((struct instance_array__NativeArray*)var493)->values[1] = (val*) var485;
5507 ((struct instance_array__NativeArray*)var493)->values[2] = (val*) var487;
5508 {
5509 ((void (*)(val*, val*, long))(var491->class->vft[COLOR_array__Array__with_native]))(var491, var493, var492) /* with_native on <var491:Array[Object]>*/;
5510 }
5511 }
5512 {
5513 var494 = ((val* (*)(val*))(var491->class->vft[COLOR_string__Object__to_s]))(var491) /* to_s on <var491:Array[Object]>*/;
5514 }
5515 {
5516 array__Array__add(var_test, var494); /* Direct call array#Array#add on <var_test:Array[String]>*/
5517 }
5518 } else {
5519 if (varonce495) {
5520 var496 = varonce495;
5521 } else {
5522 var497 = " = ";
5523 var498 = 3;
5524 var499 = string__NativeString__to_s_with_length(var497, var498);
5525 var496 = var499;
5526 varonce495 = var496;
5527 }
5528 if (varonce500) {
5529 var501 = varonce500;
5530 } else {
5531 var502 = " == ";
5532 var503 = 4;
5533 var504 = string__NativeString__to_s_with_length(var502, var503);
5534 var501 = var504;
5535 varonce500 = var501;
5536 }
5537 if (varonce505) {
5538 var506 = varonce505;
5539 } else {
5540 var507 = ";";
5541 var508 = 1;
5542 var509 = string__NativeString__to_s_with_length(var507, var508);
5543 var506 = var509;
5544 varonce505 = var506;
5545 }
5546 var510 = NEW_array__Array(&type_array__Arraykernel__Object);
5547 { /* var510 = array_instance Array[Object] */
5548 var511 = 6;
5549 var512 = NEW_array__NativeArray(var511, &type_array__NativeArraykernel__Object);
5550 ((struct instance_array__NativeArray*)var512)->values[0] = (val*) var_res;
5551 ((struct instance_array__NativeArray*)var512)->values[1] = (val*) var496;
5552 ((struct instance_array__NativeArray*)var512)->values[2] = (val*) var_value1;
5553 ((struct instance_array__NativeArray*)var512)->values[3] = (val*) var501;
5554 ((struct instance_array__NativeArray*)var512)->values[4] = (val*) var_value2;
5555 ((struct instance_array__NativeArray*)var512)->values[5] = (val*) var506;
5556 {
5557 ((void (*)(val*, val*, long))(var510->class->vft[COLOR_array__Array__with_native]))(var510, var512, var511) /* with_native on <var510:Array[Object]>*/;
5558 }
5559 }
5560 {
5561 var513 = ((val* (*)(val*))(var510->class->vft[COLOR_string__Object__to_s]))(var510) /* to_s on <var510:Array[Object]>*/;
5562 }
5563 {
5564 abstract_compiler__AbstractCompilerVisitor__add(self, var513); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5565 }
5566 var = var_res;
5567 goto RET_LABEL;
5568 }
5569 }
5570 if (varonce514) {
5571 var515 = varonce514;
5572 } else {
5573 var516 = " = ";
5574 var517 = 3;
5575 var518 = string__NativeString__to_s_with_length(var516, var517);
5576 var515 = var518;
5577 varonce514 = var515;
5578 }
5579 if (varonce519) {
5580 var520 = varonce519;
5581 } else {
5582 var521 = " == ";
5583 var522 = 4;
5584 var523 = string__NativeString__to_s_with_length(var521, var522);
5585 var520 = var523;
5586 varonce519 = var520;
5587 }
5588 if (varonce524) {
5589 var525 = varonce524;
5590 } else {
5591 var526 = " || (";
5592 var527 = 5;
5593 var528 = string__NativeString__to_s_with_length(var526, var527);
5594 var525 = var528;
5595 varonce524 = var525;
5596 }
5597 if (varonce529) {
5598 var530 = varonce529;
5599 } else {
5600 var531 = " && ";
5601 var532 = 4;
5602 var533 = string__NativeString__to_s_with_length(var531, var532);
5603 var530 = var533;
5604 varonce529 = var530;
5605 }
5606 {
5607 var534 = string__Collection__join(var_test, var530);
5608 }
5609 if (varonce535) {
5610 var536 = varonce535;
5611 } else {
5612 var537 = ");";
5613 var538 = 2;
5614 var539 = string__NativeString__to_s_with_length(var537, var538);
5615 var536 = var539;
5616 varonce535 = var536;
5617 }
5618 var540 = NEW_array__Array(&type_array__Arraykernel__Object);
5619 { /* var540 = array_instance Array[Object] */
5620 var541 = 8;
5621 var542 = NEW_array__NativeArray(var541, &type_array__NativeArraykernel__Object);
5622 ((struct instance_array__NativeArray*)var542)->values[0] = (val*) var_res;
5623 ((struct instance_array__NativeArray*)var542)->values[1] = (val*) var515;
5624 ((struct instance_array__NativeArray*)var542)->values[2] = (val*) var_value1;
5625 ((struct instance_array__NativeArray*)var542)->values[3] = (val*) var520;
5626 ((struct instance_array__NativeArray*)var542)->values[4] = (val*) var_value2;
5627 ((struct instance_array__NativeArray*)var542)->values[5] = (val*) var525;
5628 ((struct instance_array__NativeArray*)var542)->values[6] = (val*) var534;
5629 ((struct instance_array__NativeArray*)var542)->values[7] = (val*) var536;
5630 {
5631 ((void (*)(val*, val*, long))(var540->class->vft[COLOR_array__Array__with_native]))(var540, var542, var541) /* with_native on <var540:Array[Object]>*/;
5632 }
5633 }
5634 {
5635 var543 = ((val* (*)(val*))(var540->class->vft[COLOR_string__Object__to_s]))(var540) /* to_s on <var540:Array[Object]>*/;
5636 }
5637 {
5638 abstract_compiler__AbstractCompilerVisitor__add(self, var543); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5639 }
5640 var = var_res;
5641 goto RET_LABEL;
5642 RET_LABEL:;
5643 return var;
5644 }
5645 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
5646 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
5647 val* var /* : RuntimeVariable */;
5648 val* var1 /* : RuntimeVariable */;
5649 var1 = separate_compiler__SeparateCompilerVisitor__equal_test(self, p0, p1);
5650 var = var1;
5651 RET_LABEL:;
5652 return var;
5653 }
5654 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
5655 short int separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
5656 short int var /* : Bool */;
5657 val* var_value /* var value: RuntimeVariable */;
5658 val* var1 /* : MType */;
5659 val* var3 /* : MType */;
5660 val* var4 /* : MType */;
5661 val* var_t /* var t: MType */;
5662 short int var5 /* : Bool */;
5663 int cltype;
5664 int idtype;
5665 short int var6 /* : Bool */;
5666 short int var7 /* : Bool */;
5667 val* var8 /* : MClass */;
5668 val* var10 /* : MClass */;
5669 val* var11 /* : MClassKind */;
5670 val* var13 /* : MClassKind */;
5671 val* var_k /* var k: MClassKind */;
5672 short int var14 /* : Bool */;
5673 val* var15 /* : MClassKind */;
5674 short int var16 /* : Bool */;
5675 short int var17 /* : Bool */;
5676 val* var_other /* var other: nullable Object */;
5677 short int var19 /* : Bool */;
5678 short int var21 /* : Bool */;
5679 short int var_ /* var : Bool */;
5680 val* var22 /* : String */;
5681 static val* varonce;
5682 val* var23 /* : String */;
5683 char* var24 /* : NativeString */;
5684 long var25 /* : Int */;
5685 val* var26 /* : FlatString */;
5686 short int var27 /* : Bool */;
5687 short int var28 /* : Bool */;
5688 val* var_other30 /* var other: nullable Object */;
5689 short int var31 /* : Bool */;
5690 short int var32 /* : Bool */;
5691 short int var33 /* : Bool */;
5692 var_value = p0;
5693 {
5694 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
5695 var3 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
5696 if (unlikely(var3 == NULL)) {
5697 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
5698 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
5699 show_backtrace(1);
5700 }
5701 var1 = var3;
5702 RET_LABEL2:(void)0;
5703 }
5704 }
5705 {
5706 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MType__as_notnullable]))(var1) /* as_notnullable on <var1:MType>*/;
5707 }
5708 var_t = var4;
5709 /* <var_t:MType> isa MClassType */
5710 cltype = type_model__MClassType.color;
5711 idtype = type_model__MClassType.id;
5712 if(cltype >= var_t->type->table_size) {
5713 var5 = 0;
5714 } else {
5715 var5 = var_t->type->type_table[cltype] == idtype;
5716 }
5717 var6 = !var5;
5718 if (var6){
5719 var7 = 0;
5720 var = var7;
5721 goto RET_LABEL;
5722 } else {
5723 }
5724 {
5725 { /* Inline model#MClassType#mclass (var_t) on <var_t:MType(MClassType)> */
5726 var10 = var_t->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_t:MType(MClassType)> */
5727 if (unlikely(var10 == NULL)) {
5728 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5729 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
5730 show_backtrace(1);
5731 }
5732 var8 = var10;
5733 RET_LABEL9:(void)0;
5734 }
5735 }
5736 {
5737 { /* Inline model#MClass#kind (var8) on <var8:MClass> */
5738 var13 = var8->attrs[COLOR_model__MClass___kind].val; /* _kind on <var8:MClass> */
5739 if (unlikely(var13 == NULL)) {
5740 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
5741 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
5742 show_backtrace(1);
5743 }
5744 var11 = var13;
5745 RET_LABEL12:(void)0;
5746 }
5747 }
5748 var_k = var11;
5749 {
5750 var15 = model__Object__interface_kind(self);
5751 }
5752 {
5753 { /* Inline kernel#Object#== (var_k,var15) on <var_k:MClassKind> */
5754 var_other = var15;
5755 {
5756 { /* Inline kernel#Object#is_same_instance (var_k,var_other) on <var_k:MClassKind> */
5757 var21 = var_k == var_other;
5758 var19 = var21;
5759 goto RET_LABEL20;
5760 RET_LABEL20:(void)0;
5761 }
5762 }
5763 var17 = var19;
5764 goto RET_LABEL18;
5765 RET_LABEL18:(void)0;
5766 }
5767 var16 = var17;
5768 }
5769 var_ = var16;
5770 if (var16){
5771 var14 = var_;
5772 } else {
5773 {
5774 var22 = abstract_compiler__MClassType__ctype(var_t);
5775 }
5776 if (varonce) {
5777 var23 = varonce;
5778 } else {
5779 var24 = "val*";
5780 var25 = 4;
5781 var26 = string__NativeString__to_s_with_length(var24, var25);
5782 var23 = var26;
5783 varonce = var23;
5784 }
5785 {
5786 { /* Inline kernel#Object#!= (var22,var23) on <var22:String> */
5787 var_other30 = var23;
5788 {
5789 var32 = ((short int (*)(val*, val*))(var22->class->vft[COLOR_kernel__Object___61d_61d]))(var22, var_other30) /* == on <var22:String>*/;
5790 var31 = var32;
5791 }
5792 var33 = !var31;
5793 var28 = var33;
5794 goto RET_LABEL29;
5795 RET_LABEL29:(void)0;
5796 }
5797 var27 = var28;
5798 }
5799 var14 = var27;
5800 }
5801 var = var14;
5802 goto RET_LABEL;
5803 RET_LABEL:;
5804 return var;
5805 }
5806 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: Object, RuntimeVariable): Bool */
5807 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
5808 short int var /* : Bool */;
5809 short int var1 /* : Bool */;
5810 var1 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, p0);
5811 var = var1;
5812 RET_LABEL:;
5813 return var;
5814 }
5815 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
5816 short int separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
5817 short int var /* : Bool */;
5818 val* var_value /* var value: RuntimeVariable */;
5819 val* var1 /* : MType */;
5820 val* var3 /* : MType */;
5821 val* var_t /* var t: MType */;
5822 short int var4 /* : Bool */;
5823 short int var5 /* : Bool */;
5824 int cltype;
5825 int idtype;
5826 short int var_ /* var : Bool */;
5827 short int var6 /* : Bool */;
5828 int cltype7;
5829 int idtype8;
5830 var_value = p0;
5831 {
5832 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
5833 var3 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
5834 if (unlikely(var3 == NULL)) {
5835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
5836 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
5837 show_backtrace(1);
5838 }
5839 var1 = var3;
5840 RET_LABEL2:(void)0;
5841 }
5842 }
5843 var_t = var1;
5844 /* <var_t:MType> isa MNullableType */
5845 cltype = type_model__MNullableType.color;
5846 idtype = type_model__MNullableType.id;
5847 if(cltype >= var_t->type->table_size) {
5848 var5 = 0;
5849 } else {
5850 var5 = var_t->type->type_table[cltype] == idtype;
5851 }
5852 var_ = var5;
5853 if (var5){
5854 var4 = var_;
5855 } else {
5856 /* <var_t:MType> isa MNullType */
5857 cltype7 = type_model__MNullType.color;
5858 idtype8 = type_model__MNullType.id;
5859 if(cltype7 >= var_t->type->table_size) {
5860 var6 = 0;
5861 } else {
5862 var6 = var_t->type->type_table[cltype7] == idtype8;
5863 }
5864 var4 = var6;
5865 }
5866 var = var4;
5867 goto RET_LABEL;
5868 RET_LABEL:;
5869 return var;
5870 }
5871 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: Object, RuntimeVariable): Bool */
5872 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
5873 short int var /* : Bool */;
5874 short int var1 /* : Bool */;
5875 var1 = separate_compiler__SeparateCompilerVisitor__maybe_null(self, p0);
5876 var = var1;
5877 RET_LABEL:;
5878 return var;
5879 }
5880 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: SeparateCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
5881 val* separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
5882 val* var /* : RuntimeVariable */;
5883 val* var_array /* var array: Array[RuntimeVariable] */;
5884 val* var_elttype /* var elttype: MType */;
5885 static val* varonce;
5886 val* var1 /* : String */;
5887 char* var2 /* : NativeString */;
5888 long var3 /* : Int */;
5889 val* var4 /* : FlatString */;
5890 val* var5 /* : MClass */;
5891 val* var_nclass /* var nclass: MClass */;
5892 static val* varonce6;
5893 val* var7 /* : String */;
5894 char* var8 /* : NativeString */;
5895 long var9 /* : Int */;
5896 val* var10 /* : FlatString */;
5897 val* var11 /* : MClass */;
5898 val* var_arrayclass /* var arrayclass: MClass */;
5899 val* var12 /* : Array[MType] */;
5900 long var13 /* : Int */;
5901 val* var_ /* var : Array[MType] */;
5902 val* var14 /* : MClassType */;
5903 val* var_arraytype /* var arraytype: MClassType */;
5904 val* var15 /* : RuntimeVariable */;
5905 val* var_res /* var res: RuntimeVariable */;
5906 static val* varonce16;
5907 val* var17 /* : String */;
5908 char* var18 /* : NativeString */;
5909 long var19 /* : Int */;
5910 val* var20 /* : FlatString */;
5911 static val* varonce21;
5912 val* var22 /* : String */;
5913 char* var23 /* : NativeString */;
5914 long var24 /* : Int */;
5915 val* var25 /* : FlatString */;
5916 static val* varonce26;
5917 val* var27 /* : String */;
5918 char* var28 /* : NativeString */;
5919 long var29 /* : Int */;
5920 val* var30 /* : FlatString */;
5921 val* var31 /* : Array[Object] */;
5922 long var32 /* : Int */;
5923 val* var33 /* : NativeArray[Object] */;
5924 val* var34 /* : String */;
5925 long var35 /* : Int */;
5926 long var37 /* : Int */;
5927 val* var38 /* : RuntimeVariable */;
5928 val* var_length /* var length: RuntimeVariable */;
5929 val* var39 /* : RuntimeVariable */;
5930 val* var_nat /* var nat: RuntimeVariable */;
5931 long var40 /* : Int */;
5932 long var_i /* var i: Int */;
5933 long var41 /* : Int */;
5934 long var43 /* : Int */;
5935 long var_44 /* var : Int */;
5936 short int var45 /* : Bool */;
5937 short int var47 /* : Bool */;
5938 int cltype;
5939 int idtype;
5940 const char* var_class_name;
5941 short int var48 /* : Bool */;
5942 val* var49 /* : nullable Object */;
5943 val* var50 /* : MClassType */;
5944 val* var51 /* : RuntimeVariable */;
5945 val* var_r /* var r: RuntimeVariable */;
5946 static val* varonce52;
5947 val* var53 /* : String */;
5948 char* var54 /* : NativeString */;
5949 long var55 /* : Int */;
5950 val* var56 /* : FlatString */;
5951 val* var57 /* : String */;
5952 static val* varonce58;
5953 val* var59 /* : String */;
5954 char* var60 /* : NativeString */;
5955 long var61 /* : Int */;
5956 val* var62 /* : FlatString */;
5957 static val* varonce63;
5958 val* var64 /* : String */;
5959 char* var65 /* : NativeString */;
5960 long var66 /* : Int */;
5961 val* var67 /* : FlatString */;
5962 static val* varonce68;
5963 val* var69 /* : String */;
5964 char* var70 /* : NativeString */;
5965 long var71 /* : Int */;
5966 val* var72 /* : FlatString */;
5967 static val* varonce73;
5968 val* var74 /* : String */;
5969 char* var75 /* : NativeString */;
5970 long var76 /* : Int */;
5971 val* var77 /* : FlatString */;
5972 val* var78 /* : Array[Object] */;
5973 long var79 /* : Int */;
5974 val* var80 /* : NativeArray[Object] */;
5975 val* var81 /* : Object */;
5976 val* var82 /* : String */;
5977 long var83 /* : Int */;
5978 long var84 /* : Int */;
5979 static val* varonce85;
5980 val* var86 /* : String */;
5981 char* var87 /* : NativeString */;
5982 long var88 /* : Int */;
5983 val* var89 /* : FlatString */;
5984 val* var90 /* : MClassDef */;
5985 val* var92 /* : MClassDef */;
5986 val* var93 /* : MClassType */;
5987 val* var95 /* : MClassType */;
5988 val* var96 /* : MMethod */;
5989 val* var97 /* : Array[RuntimeVariable] */;
5990 long var98 /* : Int */;
5991 val* var_99 /* var : Array[RuntimeVariable] */;
5992 val* var100 /* : nullable RuntimeVariable */;
5993 static val* varonce101;
5994 val* var102 /* : String */;
5995 char* var103 /* : NativeString */;
5996 long var104 /* : Int */;
5997 val* var105 /* : FlatString */;
5998 var_array = p0;
5999 var_elttype = p1;
6000 if (varonce) {
6001 var1 = varonce;
6002 } else {
6003 var2 = "NativeArray";
6004 var3 = 11;
6005 var4 = string__NativeString__to_s_with_length(var2, var3);
6006 var1 = var4;
6007 varonce = var1;
6008 }
6009 {
6010 var5 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var1);
6011 }
6012 var_nclass = var5;
6013 if (varonce6) {
6014 var7 = varonce6;
6015 } else {
6016 var8 = "Array";
6017 var9 = 5;
6018 var10 = string__NativeString__to_s_with_length(var8, var9);
6019 var7 = var10;
6020 varonce6 = var7;
6021 }
6022 {
6023 var11 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var7);
6024 }
6025 var_arrayclass = var11;
6026 var12 = NEW_array__Array(&type_array__Arraymodel__MType);
6027 var13 = 1;
6028 {
6029 array__Array__with_capacity(var12, var13); /* Direct call array#Array#with_capacity on <var12:Array[MType]>*/
6030 }
6031 var_ = var12;
6032 {
6033 array__AbstractArray__push(var_, var_elttype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
6034 }
6035 {
6036 var14 = model__MClass__get_mtype(var_arrayclass, var_);
6037 }
6038 var_arraytype = var14;
6039 {
6040 var15 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_arraytype) /* init_instance on <self:SeparateCompilerVisitor>*/;
6041 }
6042 var_res = var15;
6043 if (varonce16) {
6044 var17 = varonce16;
6045 } else {
6046 var18 = "{ /* ";
6047 var19 = 5;
6048 var20 = string__NativeString__to_s_with_length(var18, var19);
6049 var17 = var20;
6050 varonce16 = var17;
6051 }
6052 if (varonce21) {
6053 var22 = varonce21;
6054 } else {
6055 var23 = " = array_instance Array[";
6056 var24 = 24;
6057 var25 = string__NativeString__to_s_with_length(var23, var24);
6058 var22 = var25;
6059 varonce21 = var22;
6060 }
6061 if (varonce26) {
6062 var27 = varonce26;
6063 } else {
6064 var28 = "] */";
6065 var29 = 4;
6066 var30 = string__NativeString__to_s_with_length(var28, var29);
6067 var27 = var30;
6068 varonce26 = var27;
6069 }
6070 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
6071 { /* var31 = array_instance Array[Object] */
6072 var32 = 5;
6073 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
6074 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var17;
6075 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var_res;
6076 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var22;
6077 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var_elttype;
6078 ((struct instance_array__NativeArray*)var33)->values[4] = (val*) var27;
6079 {
6080 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
6081 }
6082 }
6083 {
6084 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
6085 }
6086 {
6087 abstract_compiler__AbstractCompilerVisitor__add(self, var34); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6088 }
6089 {
6090 { /* Inline array#AbstractArrayRead#length (var_array) on <var_array:Array[RuntimeVariable]> */
6091 var37 = var_array->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_array:Array[RuntimeVariable]> */
6092 var35 = var37;
6093 RET_LABEL36:(void)0;
6094 }
6095 }
6096 {
6097 var38 = abstract_compiler__AbstractCompilerVisitor__int_instance(self, var35);
6098 }
6099 var_length = var38;
6100 {
6101 var39 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__native_array_instance]))(self, var_elttype, var_length) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
6102 }
6103 var_nat = var39;
6104 var40 = 0;
6105 var_i = var40;
6106 {
6107 { /* Inline array#AbstractArrayRead#length (var_array) on <var_array:Array[RuntimeVariable]> */
6108 var43 = var_array->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_array:Array[RuntimeVariable]> */
6109 var41 = var43;
6110 RET_LABEL42:(void)0;
6111 }
6112 }
6113 var_44 = var41;
6114 for(;;) {
6115 {
6116 { /* Inline kernel#Int#< (var_i,var_44) on <var_i:Int> */
6117 /* Covariant cast for argument 0 (i) <var_44:Int> isa OTHER */
6118 /* <var_44:Int> isa OTHER */
6119 var47 = 1; /* easy <var_44:Int> isa OTHER*/
6120 if (unlikely(!var47)) {
6121 var_class_name = type_kernel__Int.name;
6122 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6123 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
6124 show_backtrace(1);
6125 }
6126 var48 = var_i < var_44;
6127 var45 = var48;
6128 goto RET_LABEL46;
6129 RET_LABEL46:(void)0;
6130 }
6131 }
6132 if (var45){
6133 {
6134 var49 = array__Array___91d_93d(var_array, var_i);
6135 }
6136 {
6137 var50 = abstract_compiler__AbstractCompilerVisitor__object_type(self);
6138 }
6139 {
6140 var51 = separate_compiler__SeparateCompilerVisitor__autobox(self, var49, var50);
6141 }
6142 var_r = var51;
6143 if (varonce52) {
6144 var53 = varonce52;
6145 } else {
6146 var54 = "((struct instance_";
6147 var55 = 18;
6148 var56 = string__NativeString__to_s_with_length(var54, var55);
6149 var53 = var56;
6150 varonce52 = var53;
6151 }
6152 {
6153 var57 = abstract_compiler__MClass__c_name(var_nclass);
6154 }
6155 if (varonce58) {
6156 var59 = varonce58;
6157 } else {
6158 var60 = "*)";
6159 var61 = 2;
6160 var62 = string__NativeString__to_s_with_length(var60, var61);
6161 var59 = var62;
6162 varonce58 = var59;
6163 }
6164 if (varonce63) {
6165 var64 = varonce63;
6166 } else {
6167 var65 = ")->values[";
6168 var66 = 10;
6169 var67 = string__NativeString__to_s_with_length(var65, var66);
6170 var64 = var67;
6171 varonce63 = var64;
6172 }
6173 if (varonce68) {
6174 var69 = varonce68;
6175 } else {
6176 var70 = "] = (val*) ";
6177 var71 = 11;
6178 var72 = string__NativeString__to_s_with_length(var70, var71);
6179 var69 = var72;
6180 varonce68 = var69;
6181 }
6182 if (varonce73) {
6183 var74 = varonce73;
6184 } else {
6185 var75 = ";";
6186 var76 = 1;
6187 var77 = string__NativeString__to_s_with_length(var75, var76);
6188 var74 = var77;
6189 varonce73 = var74;
6190 }
6191 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
6192 { /* var78 = array_instance Array[Object] */
6193 var79 = 9;
6194 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
6195 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var53;
6196 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var57;
6197 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var59;
6198 ((struct instance_array__NativeArray*)var80)->values[3] = (val*) var_nat;
6199 ((struct instance_array__NativeArray*)var80)->values[4] = (val*) var64;
6200 var81 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
6201 ((struct instance_array__NativeArray*)var80)->values[5] = (val*) var81;
6202 ((struct instance_array__NativeArray*)var80)->values[6] = (val*) var69;
6203 ((struct instance_array__NativeArray*)var80)->values[7] = (val*) var_r;
6204 ((struct instance_array__NativeArray*)var80)->values[8] = (val*) var74;
6205 {
6206 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
6207 }
6208 }
6209 {
6210 var82 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
6211 }
6212 {
6213 abstract_compiler__AbstractCompilerVisitor__add(self, var82); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6214 }
6215 var83 = 1;
6216 {
6217 var84 = kernel__Int__successor(var_i, var83);
6218 }
6219 var_i = var84;
6220 } else {
6221 goto BREAK_label;
6222 }
6223 }
6224 BREAK_label: (void)0;
6225 if (varonce85) {
6226 var86 = varonce85;
6227 } else {
6228 var87 = "with_native";
6229 var88 = 11;
6230 var89 = string__NativeString__to_s_with_length(var87, var88);
6231 var86 = var89;
6232 varonce85 = var86;
6233 }
6234 {
6235 { /* Inline model#MClass#intro (var_arrayclass) on <var_arrayclass:MClass> */
6236 var92 = var_arrayclass->attrs[COLOR_model__MClass___intro].val; /* _intro on <var_arrayclass:MClass> */
6237 if (unlikely(var92 == NULL)) {
6238 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6239 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420);
6240 show_backtrace(1);
6241 }
6242 var90 = var92;
6243 RET_LABEL91:(void)0;
6244 }
6245 }
6246 {
6247 { /* Inline model#MClassDef#bound_mtype (var90) on <var90:MClassDef> */
6248 var95 = var90->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var90:MClassDef> */
6249 if (unlikely(var95 == NULL)) {
6250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6251 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
6252 show_backtrace(1);
6253 }
6254 var93 = var95;
6255 RET_LABEL94:(void)0;
6256 }
6257 }
6258 {
6259 var96 = abstract_compiler__AbstractCompilerVisitor__get_property(self, var86, var93);
6260 }
6261 var97 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
6262 var98 = 3;
6263 {
6264 array__Array__with_capacity(var97, var98); /* Direct call array#Array#with_capacity on <var97:Array[RuntimeVariable]>*/
6265 }
6266 var_99 = var97;
6267 {
6268 array__AbstractArray__push(var_99, var_res); /* Direct call array#AbstractArray#push on <var_99:Array[RuntimeVariable]>*/
6269 }
6270 {
6271 array__AbstractArray__push(var_99, var_nat); /* Direct call array#AbstractArray#push on <var_99:Array[RuntimeVariable]>*/
6272 }
6273 {
6274 array__AbstractArray__push(var_99, var_length); /* Direct call array#AbstractArray#push on <var_99:Array[RuntimeVariable]>*/
6275 }
6276 {
6277 var100 = separate_compiler__SeparateCompilerVisitor__send(self, var96, var_99);
6278 }
6279 if (varonce101) {
6280 var102 = varonce101;
6281 } else {
6282 var103 = "}";
6283 var104 = 1;
6284 var105 = string__NativeString__to_s_with_length(var103, var104);
6285 var102 = var105;
6286 varonce101 = var102;
6287 }
6288 {
6289 abstract_compiler__AbstractCompilerVisitor__add(self, var102); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6290 }
6291 var = var_res;
6292 goto RET_LABEL;
6293 RET_LABEL:;
6294 return var;
6295 }
6296 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
6297 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
6298 val* var /* : RuntimeVariable */;
6299 val* var1 /* : RuntimeVariable */;
6300 var1 = separate_compiler__SeparateCompilerVisitor__array_instance(self, p0, p1);
6301 var = var1;
6302 RET_LABEL:;
6303 return var;
6304 }
6305 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: SeparateCompilerVisitor, MType, RuntimeVariable): RuntimeVariable */
6306 val* separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
6307 val* var /* : RuntimeVariable */;
6308 val* var_elttype /* var elttype: MType */;
6309 val* var_length /* var length: RuntimeVariable */;
6310 static val* varonce;
6311 val* var1 /* : String */;
6312 char* var2 /* : NativeString */;
6313 long var3 /* : Int */;
6314 val* var4 /* : FlatString */;
6315 val* var5 /* : MClass */;
6316 val* var6 /* : Array[MType] */;
6317 long var7 /* : Int */;
6318 val* var_ /* var : Array[MType] */;
6319 val* var8 /* : MClassType */;
6320 val* var_mtype /* var mtype: MClassType */;
6321 static val* varonce9;
6322 val* var10 /* : String */;
6323 char* var11 /* : NativeString */;
6324 long var12 /* : Int */;
6325 val* var13 /* : FlatString */;
6326 val* var14 /* : MClass */;
6327 val* var16 /* : MClass */;
6328 val* var17 /* : String */;
6329 val* var18 /* : Array[Object] */;
6330 long var19 /* : Int */;
6331 val* var20 /* : NativeArray[Object] */;
6332 val* var21 /* : String */;
6333 short int var22 /* : Bool */;
6334 int cltype;
6335 int idtype;
6336 val* var23 /* : AbstractCompiler */;
6337 val* var25 /* : AbstractCompiler */;
6338 val* var_compiler /* var compiler: SeparateCompiler */;
6339 short int var26 /* : Bool */;
6340 short int var28 /* : Bool */;
6341 val* var29 /* : nullable Frame */;
6342 val* var31 /* : nullable Frame */;
6343 val* var32 /* : MPropDef */;
6344 val* var34 /* : MPropDef */;
6345 val* var35 /* : MClassDef */;
6346 val* var37 /* : MClassDef */;
6347 val* var38 /* : nullable Frame */;
6348 val* var40 /* : nullable Frame */;
6349 val* var41 /* : Array[RuntimeVariable] */;
6350 val* var43 /* : Array[RuntimeVariable] */;
6351 val* var44 /* : nullable Object */;
6352 val* var_recv /* var recv: RuntimeVariable */;
6353 val* var45 /* : String */;
6354 val* var_recv_type_info /* var recv_type_info: String */;
6355 val* var46 /* : String */;
6356 static val* varonce47;
6357 val* var48 /* : String */;
6358 char* var49 /* : NativeString */;
6359 long var50 /* : Int */;
6360 val* var51 /* : FlatString */;
6361 val* var52 /* : MClass */;
6362 val* var54 /* : MClass */;
6363 val* var55 /* : String */;
6364 static val* varonce56;
6365 val* var57 /* : String */;
6366 char* var58 /* : NativeString */;
6367 long var59 /* : Int */;
6368 val* var60 /* : FlatString */;
6369 static val* varonce61;
6370 val* var62 /* : String */;
6371 char* var63 /* : NativeString */;
6372 long var64 /* : Int */;
6373 val* var65 /* : FlatString */;
6374 static val* varonce66;
6375 val* var67 /* : String */;
6376 char* var68 /* : NativeString */;
6377 long var69 /* : Int */;
6378 val* var70 /* : FlatString */;
6379 val* var71 /* : String */;
6380 static val* varonce72;
6381 val* var73 /* : String */;
6382 char* var74 /* : NativeString */;
6383 long var75 /* : Int */;
6384 val* var76 /* : FlatString */;
6385 val* var77 /* : Array[Object] */;
6386 long var78 /* : Int */;
6387 val* var79 /* : NativeArray[Object] */;
6388 val* var80 /* : String */;
6389 val* var81 /* : RuntimeVariable */;
6390 val* var82 /* : Set[MType] */;
6391 val* var84 /* : Set[MType] */;
6392 static val* varonce85;
6393 val* var86 /* : String */;
6394 char* var87 /* : NativeString */;
6395 long var88 /* : Int */;
6396 val* var89 /* : FlatString */;
6397 val* var90 /* : String */;
6398 val* var91 /* : Array[Object] */;
6399 long var92 /* : Int */;
6400 val* var93 /* : NativeArray[Object] */;
6401 val* var94 /* : String */;
6402 static val* varonce95;
6403 val* var96 /* : String */;
6404 char* var97 /* : NativeString */;
6405 long var98 /* : Int */;
6406 val* var99 /* : FlatString */;
6407 val* var100 /* : MClass */;
6408 val* var102 /* : MClass */;
6409 val* var103 /* : String */;
6410 static val* varonce104;
6411 val* var105 /* : String */;
6412 char* var106 /* : NativeString */;
6413 long var107 /* : Int */;
6414 val* var108 /* : FlatString */;
6415 static val* varonce109;
6416 val* var110 /* : String */;
6417 char* var111 /* : NativeString */;
6418 long var112 /* : Int */;
6419 val* var113 /* : FlatString */;
6420 val* var114 /* : String */;
6421 static val* varonce115;
6422 val* var116 /* : String */;
6423 char* var117 /* : NativeString */;
6424 long var118 /* : Int */;
6425 val* var119 /* : FlatString */;
6426 val* var120 /* : Array[Object] */;
6427 long var121 /* : Int */;
6428 val* var122 /* : NativeArray[Object] */;
6429 val* var123 /* : String */;
6430 val* var124 /* : RuntimeVariable */;
6431 var_elttype = p0;
6432 var_length = p1;
6433 if (varonce) {
6434 var1 = varonce;
6435 } else {
6436 var2 = "NativeArray";
6437 var3 = 11;
6438 var4 = string__NativeString__to_s_with_length(var2, var3);
6439 var1 = var4;
6440 varonce = var1;
6441 }
6442 {
6443 var5 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var1);
6444 }
6445 var6 = NEW_array__Array(&type_array__Arraymodel__MType);
6446 var7 = 1;
6447 {
6448 array__Array__with_capacity(var6, var7); /* Direct call array#Array#with_capacity on <var6:Array[MType]>*/
6449 }
6450 var_ = var6;
6451 {
6452 array__AbstractArray__push(var_, var_elttype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
6453 }
6454 {
6455 var8 = model__MClass__get_mtype(var5, var_);
6456 }
6457 var_mtype = var8;
6458 if (varonce9) {
6459 var10 = varonce9;
6460 } else {
6461 var11 = "NEW_";
6462 var12 = 4;
6463 var13 = string__NativeString__to_s_with_length(var11, var12);
6464 var10 = var13;
6465 varonce9 = var10;
6466 }
6467 {
6468 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
6469 var16 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
6470 if (unlikely(var16 == NULL)) {
6471 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6472 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
6473 show_backtrace(1);
6474 }
6475 var14 = var16;
6476 RET_LABEL15:(void)0;
6477 }
6478 }
6479 {
6480 var17 = abstract_compiler__MClass__c_name(var14);
6481 }
6482 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
6483 { /* var18 = array_instance Array[Object] */
6484 var19 = 2;
6485 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
6486 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var10;
6487 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var17;
6488 {
6489 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
6490 }
6491 }
6492 {
6493 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
6494 }
6495 {
6496 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var21); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6497 }
6498 /* <var_mtype:MClassType> isa MGenericType */
6499 cltype = type_model__MGenericType.color;
6500 idtype = type_model__MGenericType.id;
6501 if(cltype >= var_mtype->type->table_size) {
6502 var22 = 0;
6503 } else {
6504 var22 = var_mtype->type->type_table[cltype] == idtype;
6505 }
6506 if (unlikely(!var22)) {
6507 PRINT_ERROR("Runtime error: %s", "Assert failed");
6508 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1715);
6509 show_backtrace(1);
6510 }
6511 {
6512 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6513 var25 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6514 if (unlikely(var25 == NULL)) {
6515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6516 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6517 show_backtrace(1);
6518 }
6519 var23 = var25;
6520 RET_LABEL24:(void)0;
6521 }
6522 }
6523 var_compiler = var23;
6524 {
6525 { /* Inline model#MGenericType#need_anchor (var_mtype) on <var_mtype:MClassType(MGenericType)> */
6526 var28 = var_mtype->attrs[COLOR_model__MGenericType___need_anchor].s; /* _need_anchor on <var_mtype:MClassType(MGenericType)> */
6527 var26 = var28;
6528 RET_LABEL27:(void)0;
6529 }
6530 }
6531 if (var26){
6532 {
6533 separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on <self:SeparateCompilerVisitor>*/
6534 }
6535 {
6536 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
6537 var31 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
6538 var29 = var31;
6539 RET_LABEL30:(void)0;
6540 }
6541 }
6542 if (var29 == NULL) {
6543 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6544 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1719);
6545 show_backtrace(1);
6546 } else {
6547 { /* Inline abstract_compiler#Frame#mpropdef (var29) on <var29:nullable Frame> */
6548 if (unlikely(var29 == NULL)) {
6549 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6550 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
6551 show_backtrace(1);
6552 }
6553 var34 = var29->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var29:nullable Frame> */
6554 if (unlikely(var34 == NULL)) {
6555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
6556 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
6557 show_backtrace(1);
6558 }
6559 var32 = var34;
6560 RET_LABEL33:(void)0;
6561 }
6562 }
6563 {
6564 { /* Inline model#MPropDef#mclassdef (var32) on <var32:MPropDef> */
6565 var37 = var32->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var32:MPropDef> */
6566 if (unlikely(var37 == NULL)) {
6567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
6568 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
6569 show_backtrace(1);
6570 }
6571 var35 = var37;
6572 RET_LABEL36:(void)0;
6573 }
6574 }
6575 {
6576 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, var35, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#link_unresolved_type on <self:SeparateCompilerVisitor>*/
6577 }
6578 {
6579 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
6580 var40 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
6581 var38 = var40;
6582 RET_LABEL39:(void)0;
6583 }
6584 }
6585 if (var38 == NULL) {
6586 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6587 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1720);
6588 show_backtrace(1);
6589 } else {
6590 { /* Inline abstract_compiler#Frame#arguments (var38) on <var38:nullable Frame> */
6591 if (unlikely(var38 == NULL)) {
6592 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6593 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
6594 show_backtrace(1);
6595 }
6596 var43 = var38->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <var38:nullable Frame> */
6597 if (unlikely(var43 == NULL)) {
6598 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
6599 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
6600 show_backtrace(1);
6601 }
6602 var41 = var43;
6603 RET_LABEL42:(void)0;
6604 }
6605 }
6606 {
6607 var44 = abstract_collection__SequenceRead__first(var41);
6608 }
6609 var_recv = var44;
6610 {
6611 var45 = separate_compiler__SeparateCompilerVisitor__type_info(self, var_recv);
6612 }
6613 var_recv_type_info = var45;
6614 {
6615 var46 = separate_compiler__MType__const_color(var_mtype);
6616 }
6617 {
6618 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6619 }
6620 if (varonce47) {
6621 var48 = varonce47;
6622 } else {
6623 var49 = "NEW_";
6624 var50 = 4;
6625 var51 = string__NativeString__to_s_with_length(var49, var50);
6626 var48 = var51;
6627 varonce47 = var48;
6628 }
6629 {
6630 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType(MGenericType)> */
6631 var54 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType(MGenericType)> */
6632 if (unlikely(var54 == NULL)) {
6633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6634 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
6635 show_backtrace(1);
6636 }
6637 var52 = var54;
6638 RET_LABEL53:(void)0;
6639 }
6640 }
6641 {
6642 var55 = abstract_compiler__MClass__c_name(var52);
6643 }
6644 if (varonce56) {
6645 var57 = varonce56;
6646 } else {
6647 var58 = "(";
6648 var59 = 1;
6649 var60 = string__NativeString__to_s_with_length(var58, var59);
6650 var57 = var60;
6651 varonce56 = var57;
6652 }
6653 if (varonce61) {
6654 var62 = varonce61;
6655 } else {
6656 var63 = ", ";
6657 var64 = 2;
6658 var65 = string__NativeString__to_s_with_length(var63, var64);
6659 var62 = var65;
6660 varonce61 = var62;
6661 }
6662 if (varonce66) {
6663 var67 = varonce66;
6664 } else {
6665 var68 = "->resolution_table->types[";
6666 var69 = 26;
6667 var70 = string__NativeString__to_s_with_length(var68, var69);
6668 var67 = var70;
6669 varonce66 = var67;
6670 }
6671 {
6672 var71 = separate_compiler__MType__const_color(var_mtype);
6673 }
6674 if (varonce72) {
6675 var73 = varonce72;
6676 } else {
6677 var74 = "])";
6678 var75 = 2;
6679 var76 = string__NativeString__to_s_with_length(var74, var75);
6680 var73 = var76;
6681 varonce72 = var73;
6682 }
6683 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
6684 { /* var77 = array_instance Array[Object] */
6685 var78 = 9;
6686 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
6687 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var48;
6688 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var55;
6689 ((struct instance_array__NativeArray*)var79)->values[2] = (val*) var57;
6690 ((struct instance_array__NativeArray*)var79)->values[3] = (val*) var_length;
6691 ((struct instance_array__NativeArray*)var79)->values[4] = (val*) var62;
6692 ((struct instance_array__NativeArray*)var79)->values[5] = (val*) var_recv_type_info;
6693 ((struct instance_array__NativeArray*)var79)->values[6] = (val*) var67;
6694 ((struct instance_array__NativeArray*)var79)->values[7] = (val*) var71;
6695 ((struct instance_array__NativeArray*)var79)->values[8] = (val*) var73;
6696 {
6697 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
6698 }
6699 }
6700 {
6701 var80 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
6702 }
6703 {
6704 var81 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var80, var_mtype);
6705 }
6706 var = var81;
6707 goto RET_LABEL;
6708 } else {
6709 }
6710 {
6711 { /* Inline separate_compiler#SeparateCompiler#undead_types (var_compiler) on <var_compiler:SeparateCompiler> */
6712 var84 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var_compiler:SeparateCompiler> */
6713 if (unlikely(var84 == NULL)) {
6714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
6715 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 156);
6716 show_backtrace(1);
6717 }
6718 var82 = var84;
6719 RET_LABEL83:(void)0;
6720 }
6721 }
6722 {
6723 ((void (*)(val*, val*))(var82->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var82, var_mtype) /* add on <var82:Set[MType]>*/;
6724 }
6725 if (varonce85) {
6726 var86 = varonce85;
6727 } else {
6728 var87 = "type_";
6729 var88 = 5;
6730 var89 = string__NativeString__to_s_with_length(var87, var88);
6731 var86 = var89;
6732 varonce85 = var86;
6733 }
6734 {
6735 var90 = abstract_compiler__MGenericType__c_name(var_mtype);
6736 }
6737 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
6738 { /* var91 = array_instance Array[Object] */
6739 var92 = 2;
6740 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
6741 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var86;
6742 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var90;
6743 {
6744 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
6745 }
6746 }
6747 {
6748 var94 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
6749 }
6750 {
6751 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var94); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6752 }
6753 if (varonce95) {
6754 var96 = varonce95;
6755 } else {
6756 var97 = "NEW_";
6757 var98 = 4;
6758 var99 = string__NativeString__to_s_with_length(var97, var98);
6759 var96 = var99;
6760 varonce95 = var96;
6761 }
6762 {
6763 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType(MGenericType)> */
6764 var102 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType(MGenericType)> */
6765 if (unlikely(var102 == NULL)) {
6766 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6767 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
6768 show_backtrace(1);
6769 }
6770 var100 = var102;
6771 RET_LABEL101:(void)0;
6772 }
6773 }
6774 {
6775 var103 = abstract_compiler__MClass__c_name(var100);
6776 }
6777 if (varonce104) {
6778 var105 = varonce104;
6779 } else {
6780 var106 = "(";
6781 var107 = 1;
6782 var108 = string__NativeString__to_s_with_length(var106, var107);
6783 var105 = var108;
6784 varonce104 = var105;
6785 }
6786 if (varonce109) {
6787 var110 = varonce109;
6788 } else {
6789 var111 = ", &type_";
6790 var112 = 8;
6791 var113 = string__NativeString__to_s_with_length(var111, var112);
6792 var110 = var113;
6793 varonce109 = var110;
6794 }
6795 {
6796 var114 = abstract_compiler__MGenericType__c_name(var_mtype);
6797 }
6798 if (varonce115) {
6799 var116 = varonce115;
6800 } else {
6801 var117 = ")";
6802 var118 = 1;
6803 var119 = string__NativeString__to_s_with_length(var117, var118);
6804 var116 = var119;
6805 varonce115 = var116;
6806 }
6807 var120 = NEW_array__Array(&type_array__Arraykernel__Object);
6808 { /* var120 = array_instance Array[Object] */
6809 var121 = 7;
6810 var122 = NEW_array__NativeArray(var121, &type_array__NativeArraykernel__Object);
6811 ((struct instance_array__NativeArray*)var122)->values[0] = (val*) var96;
6812 ((struct instance_array__NativeArray*)var122)->values[1] = (val*) var103;
6813 ((struct instance_array__NativeArray*)var122)->values[2] = (val*) var105;
6814 ((struct instance_array__NativeArray*)var122)->values[3] = (val*) var_length;
6815 ((struct instance_array__NativeArray*)var122)->values[4] = (val*) var110;
6816 ((struct instance_array__NativeArray*)var122)->values[5] = (val*) var114;
6817 ((struct instance_array__NativeArray*)var122)->values[6] = (val*) var116;
6818 {
6819 ((void (*)(val*, val*, long))(var120->class->vft[COLOR_array__Array__with_native]))(var120, var122, var121) /* with_native on <var120:Array[Object]>*/;
6820 }
6821 }
6822 {
6823 var123 = ((val* (*)(val*))(var120->class->vft[COLOR_string__Object__to_s]))(var120) /* to_s on <var120:Array[Object]>*/;
6824 }
6825 {
6826 var124 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var123, var_mtype);
6827 }
6828 var = var124;
6829 goto RET_LABEL;
6830 RET_LABEL:;
6831 return var;
6832 }
6833 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: Object, MType, RuntimeVariable): RuntimeVariable */
6834 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
6835 val* var /* : RuntimeVariable */;
6836 val* var1 /* : RuntimeVariable */;
6837 var1 = separate_compiler__SeparateCompilerVisitor__native_array_instance(self, p0, p1);
6838 var = var1;
6839 RET_LABEL:;
6840 return var;
6841 }
6842 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: SeparateCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
6843 void separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
6844 val* var_pname /* var pname: String */;
6845 val* var_ret_type /* var ret_type: nullable MType */;
6846 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
6847 val* var /* : nullable Object */;
6848 val* var1 /* : MType */;
6849 val* var3 /* : MType */;
6850 val* var_elttype /* var elttype: MType */;
6851 static val* varonce;
6852 val* var4 /* : String */;
6853 char* var5 /* : NativeString */;
6854 long var6 /* : Int */;
6855 val* var7 /* : FlatString */;
6856 val* var8 /* : MClass */;
6857 val* var_nclass /* var nclass: MClass */;
6858 static val* varonce9;
6859 val* var10 /* : String */;
6860 char* var11 /* : NativeString */;
6861 long var12 /* : Int */;
6862 val* var13 /* : FlatString */;
6863 val* var14 /* : String */;
6864 static val* varonce15;
6865 val* var16 /* : String */;
6866 char* var17 /* : NativeString */;
6867 long var18 /* : Int */;
6868 val* var19 /* : FlatString */;
6869 long var20 /* : Int */;
6870 val* var21 /* : nullable Object */;
6871 static val* varonce22;
6872 val* var23 /* : String */;
6873 char* var24 /* : NativeString */;
6874 long var25 /* : Int */;
6875 val* var26 /* : FlatString */;
6876 val* var27 /* : Array[Object] */;
6877 long var28 /* : Int */;
6878 val* var29 /* : NativeArray[Object] */;
6879 val* var30 /* : String */;
6880 val* var_recv /* var recv: String */;
6881 static val* varonce31;
6882 val* var32 /* : String */;
6883 char* var33 /* : NativeString */;
6884 long var34 /* : Int */;
6885 val* var35 /* : FlatString */;
6886 short int var36 /* : Bool */;
6887 short int var37 /* : Bool */;
6888 static val* varonce38;
6889 val* var39 /* : String */;
6890 char* var40 /* : NativeString */;
6891 long var41 /* : Int */;
6892 val* var42 /* : FlatString */;
6893 long var43 /* : Int */;
6894 val* var44 /* : nullable Object */;
6895 static val* varonce45;
6896 val* var46 /* : String */;
6897 char* var47 /* : NativeString */;
6898 long var48 /* : Int */;
6899 val* var49 /* : FlatString */;
6900 val* var50 /* : Array[Object] */;
6901 long var51 /* : Int */;
6902 val* var52 /* : NativeArray[Object] */;
6903 val* var53 /* : String */;
6904 val* var54 /* : RuntimeVariable */;
6905 static val* varonce55;
6906 val* var56 /* : String */;
6907 char* var57 /* : NativeString */;
6908 long var58 /* : Int */;
6909 val* var59 /* : FlatString */;
6910 short int var60 /* : Bool */;
6911 short int var61 /* : Bool */;
6912 static val* varonce62;
6913 val* var63 /* : String */;
6914 char* var64 /* : NativeString */;
6915 long var65 /* : Int */;
6916 val* var66 /* : FlatString */;
6917 long var67 /* : Int */;
6918 val* var68 /* : nullable Object */;
6919 static val* varonce69;
6920 val* var70 /* : String */;
6921 char* var71 /* : NativeString */;
6922 long var72 /* : Int */;
6923 val* var73 /* : FlatString */;
6924 long var74 /* : Int */;
6925 val* var75 /* : nullable Object */;
6926 static val* varonce76;
6927 val* var77 /* : String */;
6928 char* var78 /* : NativeString */;
6929 long var79 /* : Int */;
6930 val* var80 /* : FlatString */;
6931 val* var81 /* : Array[Object] */;
6932 long var82 /* : Int */;
6933 val* var83 /* : NativeArray[Object] */;
6934 val* var84 /* : String */;
6935 static val* varonce85;
6936 val* var86 /* : String */;
6937 char* var87 /* : NativeString */;
6938 long var88 /* : Int */;
6939 val* var89 /* : FlatString */;
6940 short int var90 /* : Bool */;
6941 short int var91 /* : Bool */;
6942 static val* varonce92;
6943 val* var93 /* : String */;
6944 char* var94 /* : NativeString */;
6945 long var95 /* : Int */;
6946 val* var96 /* : FlatString */;
6947 val* var97 /* : String */;
6948 static val* varonce98;
6949 val* var99 /* : String */;
6950 char* var100 /* : NativeString */;
6951 long var101 /* : Int */;
6952 val* var102 /* : FlatString */;
6953 long var103 /* : Int */;
6954 val* var104 /* : nullable Object */;
6955 static val* varonce105;
6956 val* var106 /* : String */;
6957 char* var107 /* : NativeString */;
6958 long var108 /* : Int */;
6959 val* var109 /* : FlatString */;
6960 val* var110 /* : Array[Object] */;
6961 long var111 /* : Int */;
6962 val* var112 /* : NativeArray[Object] */;
6963 val* var113 /* : String */;
6964 val* var114 /* : RuntimeVariable */;
6965 static val* varonce115;
6966 val* var116 /* : String */;
6967 char* var117 /* : NativeString */;
6968 long var118 /* : Int */;
6969 val* var119 /* : FlatString */;
6970 short int var120 /* : Bool */;
6971 short int var121 /* : Bool */;
6972 static val* varonce122;
6973 val* var123 /* : String */;
6974 char* var124 /* : NativeString */;
6975 long var125 /* : Int */;
6976 val* var126 /* : FlatString */;
6977 val* var127 /* : String */;
6978 static val* varonce128;
6979 val* var129 /* : String */;
6980 char* var130 /* : NativeString */;
6981 long var131 /* : Int */;
6982 val* var132 /* : FlatString */;
6983 long var133 /* : Int */;
6984 val* var134 /* : nullable Object */;
6985 static val* varonce135;
6986 val* var136 /* : String */;
6987 char* var137 /* : NativeString */;
6988 long var138 /* : Int */;
6989 val* var139 /* : FlatString */;
6990 val* var140 /* : Array[Object] */;
6991 long var141 /* : Int */;
6992 val* var142 /* : NativeArray[Object] */;
6993 val* var143 /* : String */;
6994 val* var_recv1 /* var recv1: String */;
6995 static val* varonce144;
6996 val* var145 /* : String */;
6997 char* var146 /* : NativeString */;
6998 long var147 /* : Int */;
6999 val* var148 /* : FlatString */;
7000 static val* varonce149;
7001 val* var150 /* : String */;
7002 char* var151 /* : NativeString */;
7003 long var152 /* : Int */;
7004 val* var153 /* : FlatString */;
7005 static val* varonce154;
7006 val* var155 /* : String */;
7007 char* var156 /* : NativeString */;
7008 long var157 /* : Int */;
7009 val* var158 /* : FlatString */;
7010 long var159 /* : Int */;
7011 val* var160 /* : nullable Object */;
7012 static val* varonce161;
7013 val* var162 /* : String */;
7014 char* var163 /* : NativeString */;
7015 long var164 /* : Int */;
7016 val* var165 /* : FlatString */;
7017 val* var166 /* : String */;
7018 static val* varonce167;
7019 val* var168 /* : String */;
7020 char* var169 /* : NativeString */;
7021 long var170 /* : Int */;
7022 val* var171 /* : FlatString */;
7023 val* var172 /* : Array[Object] */;
7024 long var173 /* : Int */;
7025 val* var174 /* : NativeArray[Object] */;
7026 val* var175 /* : String */;
7027 var_pname = p0;
7028 var_ret_type = p1;
7029 var_arguments = p2;
7030 {
7031 var = abstract_collection__SequenceRead__first(var_arguments);
7032 }
7033 {
7034 { /* Inline abstract_compiler#RuntimeVariable#mtype (var) on <var:nullable Object(RuntimeVariable)> */
7035 var3 = var->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var:nullable Object(RuntimeVariable)> */
7036 if (unlikely(var3 == NULL)) {
7037 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
7038 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
7039 show_backtrace(1);
7040 }
7041 var1 = var3;
7042 RET_LABEL2:(void)0;
7043 }
7044 }
7045 var_elttype = var1;
7046 if (varonce) {
7047 var4 = varonce;
7048 } else {
7049 var5 = "NativeArray";
7050 var6 = 11;
7051 var7 = string__NativeString__to_s_with_length(var5, var6);
7052 var4 = var7;
7053 varonce = var4;
7054 }
7055 {
7056 var8 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var4);
7057 }
7058 var_nclass = var8;
7059 if (varonce9) {
7060 var10 = varonce9;
7061 } else {
7062 var11 = "((struct instance_";
7063 var12 = 18;
7064 var13 = string__NativeString__to_s_with_length(var11, var12);
7065 var10 = var13;
7066 varonce9 = var10;
7067 }
7068 {
7069 var14 = abstract_compiler__MClass__c_name(var_nclass);
7070 }
7071 if (varonce15) {
7072 var16 = varonce15;
7073 } else {
7074 var17 = "*)";
7075 var18 = 2;
7076 var19 = string__NativeString__to_s_with_length(var17, var18);
7077 var16 = var19;
7078 varonce15 = var16;
7079 }
7080 var20 = 0;
7081 {
7082 var21 = array__Array___91d_93d(var_arguments, var20);
7083 }
7084 if (varonce22) {
7085 var23 = varonce22;
7086 } else {
7087 var24 = ")->values";
7088 var25 = 9;
7089 var26 = string__NativeString__to_s_with_length(var24, var25);
7090 var23 = var26;
7091 varonce22 = var23;
7092 }
7093 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
7094 { /* var27 = array_instance Array[Object] */
7095 var28 = 5;
7096 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
7097 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var10;
7098 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var14;
7099 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var16;
7100 ((struct instance_array__NativeArray*)var29)->values[3] = (val*) var21;
7101 ((struct instance_array__NativeArray*)var29)->values[4] = (val*) var23;
7102 {
7103 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
7104 }
7105 }
7106 {
7107 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
7108 }
7109 var_recv = var30;
7110 if (varonce31) {
7111 var32 = varonce31;
7112 } else {
7113 var33 = "[]";
7114 var34 = 2;
7115 var35 = string__NativeString__to_s_with_length(var33, var34);
7116 var32 = var35;
7117 varonce31 = var32;
7118 }
7119 {
7120 var37 = string__FlatString___61d_61d(var_pname, var32);
7121 var36 = var37;
7122 }
7123 if (var36){
7124 if (varonce38) {
7125 var39 = varonce38;
7126 } else {
7127 var40 = "[";
7128 var41 = 1;
7129 var42 = string__NativeString__to_s_with_length(var40, var41);
7130 var39 = var42;
7131 varonce38 = var39;
7132 }
7133 var43 = 1;
7134 {
7135 var44 = array__Array___91d_93d(var_arguments, var43);
7136 }
7137 if (varonce45) {
7138 var46 = varonce45;
7139 } else {
7140 var47 = "]";
7141 var48 = 1;
7142 var49 = string__NativeString__to_s_with_length(var47, var48);
7143 var46 = var49;
7144 varonce45 = var46;
7145 }
7146 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
7147 { /* var50 = array_instance Array[Object] */
7148 var51 = 4;
7149 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
7150 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var_recv;
7151 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var39;
7152 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var44;
7153 ((struct instance_array__NativeArray*)var52)->values[3] = (val*) var46;
7154 {
7155 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
7156 }
7157 }
7158 {
7159 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
7160 }
7161 if (unlikely(var_ret_type == NULL)) {
7162 PRINT_ERROR("Runtime error: %s", "Cast failed");
7163 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1736);
7164 show_backtrace(1);
7165 }
7166 {
7167 var54 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var53, var_ret_type);
7168 }
7169 {
7170 abstract_compiler__AbstractCompilerVisitor__ret(self, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <self:SeparateCompilerVisitor>*/
7171 }
7172 goto RET_LABEL;
7173 } else {
7174 if (varonce55) {
7175 var56 = varonce55;
7176 } else {
7177 var57 = "[]=";
7178 var58 = 3;
7179 var59 = string__NativeString__to_s_with_length(var57, var58);
7180 var56 = var59;
7181 varonce55 = var56;
7182 }
7183 {
7184 var61 = string__FlatString___61d_61d(var_pname, var56);
7185 var60 = var61;
7186 }
7187 if (var60){
7188 if (varonce62) {
7189 var63 = varonce62;
7190 } else {
7191 var64 = "[";
7192 var65 = 1;
7193 var66 = string__NativeString__to_s_with_length(var64, var65);
7194 var63 = var66;
7195 varonce62 = var63;
7196 }
7197 var67 = 1;
7198 {
7199 var68 = array__Array___91d_93d(var_arguments, var67);
7200 }
7201 if (varonce69) {
7202 var70 = varonce69;
7203 } else {
7204 var71 = "]=";
7205 var72 = 2;
7206 var73 = string__NativeString__to_s_with_length(var71, var72);
7207 var70 = var73;
7208 varonce69 = var70;
7209 }
7210 var74 = 2;
7211 {
7212 var75 = array__Array___91d_93d(var_arguments, var74);
7213 }
7214 if (varonce76) {
7215 var77 = varonce76;
7216 } else {
7217 var78 = ";";
7218 var79 = 1;
7219 var80 = string__NativeString__to_s_with_length(var78, var79);
7220 var77 = var80;
7221 varonce76 = var77;
7222 }
7223 var81 = NEW_array__Array(&type_array__Arraykernel__Object);
7224 { /* var81 = array_instance Array[Object] */
7225 var82 = 6;
7226 var83 = NEW_array__NativeArray(var82, &type_array__NativeArraykernel__Object);
7227 ((struct instance_array__NativeArray*)var83)->values[0] = (val*) var_recv;
7228 ((struct instance_array__NativeArray*)var83)->values[1] = (val*) var63;
7229 ((struct instance_array__NativeArray*)var83)->values[2] = (val*) var68;
7230 ((struct instance_array__NativeArray*)var83)->values[3] = (val*) var70;
7231 ((struct instance_array__NativeArray*)var83)->values[4] = (val*) var75;
7232 ((struct instance_array__NativeArray*)var83)->values[5] = (val*) var77;
7233 {
7234 ((void (*)(val*, val*, long))(var81->class->vft[COLOR_array__Array__with_native]))(var81, var83, var82) /* with_native on <var81:Array[Object]>*/;
7235 }
7236 }
7237 {
7238 var84 = ((val* (*)(val*))(var81->class->vft[COLOR_string__Object__to_s]))(var81) /* to_s on <var81:Array[Object]>*/;
7239 }
7240 {
7241 abstract_compiler__AbstractCompilerVisitor__add(self, var84); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7242 }
7243 goto RET_LABEL;
7244 } else {
7245 if (varonce85) {
7246 var86 = varonce85;
7247 } else {
7248 var87 = "length";
7249 var88 = 6;
7250 var89 = string__NativeString__to_s_with_length(var87, var88);
7251 var86 = var89;
7252 varonce85 = var86;
7253 }
7254 {
7255 var91 = string__FlatString___61d_61d(var_pname, var86);
7256 var90 = var91;
7257 }
7258 if (var90){
7259 if (varonce92) {
7260 var93 = varonce92;
7261 } else {
7262 var94 = "((struct instance_";
7263 var95 = 18;
7264 var96 = string__NativeString__to_s_with_length(var94, var95);
7265 var93 = var96;
7266 varonce92 = var93;
7267 }
7268 {
7269 var97 = abstract_compiler__MClass__c_name(var_nclass);
7270 }
7271 if (varonce98) {
7272 var99 = varonce98;
7273 } else {
7274 var100 = "*)";
7275 var101 = 2;
7276 var102 = string__NativeString__to_s_with_length(var100, var101);
7277 var99 = var102;
7278 varonce98 = var99;
7279 }
7280 var103 = 0;
7281 {
7282 var104 = array__Array___91d_93d(var_arguments, var103);
7283 }
7284 if (varonce105) {
7285 var106 = varonce105;
7286 } else {
7287 var107 = ")->length";
7288 var108 = 9;
7289 var109 = string__NativeString__to_s_with_length(var107, var108);
7290 var106 = var109;
7291 varonce105 = var106;
7292 }
7293 var110 = NEW_array__Array(&type_array__Arraykernel__Object);
7294 { /* var110 = array_instance Array[Object] */
7295 var111 = 5;
7296 var112 = NEW_array__NativeArray(var111, &type_array__NativeArraykernel__Object);
7297 ((struct instance_array__NativeArray*)var112)->values[0] = (val*) var93;
7298 ((struct instance_array__NativeArray*)var112)->values[1] = (val*) var97;
7299 ((struct instance_array__NativeArray*)var112)->values[2] = (val*) var99;
7300 ((struct instance_array__NativeArray*)var112)->values[3] = (val*) var104;
7301 ((struct instance_array__NativeArray*)var112)->values[4] = (val*) var106;
7302 {
7303 ((void (*)(val*, val*, long))(var110->class->vft[COLOR_array__Array__with_native]))(var110, var112, var111) /* with_native on <var110:Array[Object]>*/;
7304 }
7305 }
7306 {
7307 var113 = ((val* (*)(val*))(var110->class->vft[COLOR_string__Object__to_s]))(var110) /* to_s on <var110:Array[Object]>*/;
7308 }
7309 if (unlikely(var_ret_type == NULL)) {
7310 PRINT_ERROR("Runtime error: %s", "Cast failed");
7311 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1742);
7312 show_backtrace(1);
7313 }
7314 {
7315 var114 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var113, var_ret_type);
7316 }
7317 {
7318 abstract_compiler__AbstractCompilerVisitor__ret(self, var114); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <self:SeparateCompilerVisitor>*/
7319 }
7320 goto RET_LABEL;
7321 } else {
7322 if (varonce115) {
7323 var116 = varonce115;
7324 } else {
7325 var117 = "copy_to";
7326 var118 = 7;
7327 var119 = string__NativeString__to_s_with_length(var117, var118);
7328 var116 = var119;
7329 varonce115 = var116;
7330 }
7331 {
7332 var121 = string__FlatString___61d_61d(var_pname, var116);
7333 var120 = var121;
7334 }
7335 if (var120){
7336 if (varonce122) {
7337 var123 = varonce122;
7338 } else {
7339 var124 = "((struct instance_";
7340 var125 = 18;
7341 var126 = string__NativeString__to_s_with_length(var124, var125);
7342 var123 = var126;
7343 varonce122 = var123;
7344 }
7345 {
7346 var127 = abstract_compiler__MClass__c_name(var_nclass);
7347 }
7348 if (varonce128) {
7349 var129 = varonce128;
7350 } else {
7351 var130 = "*)";
7352 var131 = 2;
7353 var132 = string__NativeString__to_s_with_length(var130, var131);
7354 var129 = var132;
7355 varonce128 = var129;
7356 }
7357 var133 = 1;
7358 {
7359 var134 = array__Array___91d_93d(var_arguments, var133);
7360 }
7361 if (varonce135) {
7362 var136 = varonce135;
7363 } else {
7364 var137 = ")->values";
7365 var138 = 9;
7366 var139 = string__NativeString__to_s_with_length(var137, var138);
7367 var136 = var139;
7368 varonce135 = var136;
7369 }
7370 var140 = NEW_array__Array(&type_array__Arraykernel__Object);
7371 { /* var140 = array_instance Array[Object] */
7372 var141 = 5;
7373 var142 = NEW_array__NativeArray(var141, &type_array__NativeArraykernel__Object);
7374 ((struct instance_array__NativeArray*)var142)->values[0] = (val*) var123;
7375 ((struct instance_array__NativeArray*)var142)->values[1] = (val*) var127;
7376 ((struct instance_array__NativeArray*)var142)->values[2] = (val*) var129;
7377 ((struct instance_array__NativeArray*)var142)->values[3] = (val*) var134;
7378 ((struct instance_array__NativeArray*)var142)->values[4] = (val*) var136;
7379 {
7380 ((void (*)(val*, val*, long))(var140->class->vft[COLOR_array__Array__with_native]))(var140, var142, var141) /* with_native on <var140:Array[Object]>*/;
7381 }
7382 }
7383 {
7384 var143 = ((val* (*)(val*))(var140->class->vft[COLOR_string__Object__to_s]))(var140) /* to_s on <var140:Array[Object]>*/;
7385 }
7386 var_recv1 = var143;
7387 if (varonce144) {
7388 var145 = varonce144;
7389 } else {
7390 var146 = "memmove(";
7391 var147 = 8;
7392 var148 = string__NativeString__to_s_with_length(var146, var147);
7393 var145 = var148;
7394 varonce144 = var145;
7395 }
7396 if (varonce149) {
7397 var150 = varonce149;
7398 } else {
7399 var151 = ", ";
7400 var152 = 2;
7401 var153 = string__NativeString__to_s_with_length(var151, var152);
7402 var150 = var153;
7403 varonce149 = var150;
7404 }
7405 if (varonce154) {
7406 var155 = varonce154;
7407 } else {
7408 var156 = ", ";
7409 var157 = 2;
7410 var158 = string__NativeString__to_s_with_length(var156, var157);
7411 var155 = var158;
7412 varonce154 = var155;
7413 }
7414 var159 = 2;
7415 {
7416 var160 = array__Array___91d_93d(var_arguments, var159);
7417 }
7418 if (varonce161) {
7419 var162 = varonce161;
7420 } else {
7421 var163 = "*sizeof(";
7422 var164 = 8;
7423 var165 = string__NativeString__to_s_with_length(var163, var164);
7424 var162 = var165;
7425 varonce161 = var162;
7426 }
7427 {
7428 var166 = ((val* (*)(val*))(var_elttype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_elttype) /* ctype on <var_elttype:MType>*/;
7429 }
7430 if (varonce167) {
7431 var168 = varonce167;
7432 } else {
7433 var169 = "));";
7434 var170 = 3;
7435 var171 = string__NativeString__to_s_with_length(var169, var170);
7436 var168 = var171;
7437 varonce167 = var168;
7438 }
7439 var172 = NEW_array__Array(&type_array__Arraykernel__Object);
7440 { /* var172 = array_instance Array[Object] */
7441 var173 = 9;
7442 var174 = NEW_array__NativeArray(var173, &type_array__NativeArraykernel__Object);
7443 ((struct instance_array__NativeArray*)var174)->values[0] = (val*) var145;
7444 ((struct instance_array__NativeArray*)var174)->values[1] = (val*) var_recv1;
7445 ((struct instance_array__NativeArray*)var174)->values[2] = (val*) var150;
7446 ((struct instance_array__NativeArray*)var174)->values[3] = (val*) var_recv;
7447 ((struct instance_array__NativeArray*)var174)->values[4] = (val*) var155;
7448 ((struct instance_array__NativeArray*)var174)->values[5] = (val*) var160;
7449 ((struct instance_array__NativeArray*)var174)->values[6] = (val*) var162;
7450 ((struct instance_array__NativeArray*)var174)->values[7] = (val*) var166;
7451 ((struct instance_array__NativeArray*)var174)->values[8] = (val*) var168;
7452 {
7453 ((void (*)(val*, val*, long))(var172->class->vft[COLOR_array__Array__with_native]))(var172, var174, var173) /* with_native on <var172:Array[Object]>*/;
7454 }
7455 }
7456 {
7457 var175 = ((val* (*)(val*))(var172->class->vft[COLOR_string__Object__to_s]))(var172) /* to_s on <var172:Array[Object]>*/;
7458 }
7459 {
7460 abstract_compiler__AbstractCompilerVisitor__add(self, var175); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7461 }
7462 goto RET_LABEL;
7463 } else {
7464 }
7465 }
7466 }
7467 }
7468 RET_LABEL:;
7469 }
7470 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
7471 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
7472 separate_compiler__SeparateCompilerVisitor__native_array_def(self, p0, p1, p2); /* Direct call separate_compiler#SeparateCompilerVisitor#native_array_def on <self:Object(SeparateCompilerVisitor)>*/
7473 RET_LABEL:;
7474 }
7475 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: SeparateCompilerVisitor, MType, Array[RuntimeVariable]) */
7476 void separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
7477 val* var_ret_type /* var ret_type: MType */;
7478 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
7479 static val* varonce;
7480 val* var /* : String */;
7481 char* var1 /* : NativeString */;
7482 long var2 /* : Int */;
7483 val* var3 /* : FlatString */;
7484 val* var4 /* : MClass */;
7485 val* var_mclass /* var mclass: MClass */;
7486 val* var5 /* : Array[MParameterType] */;
7487 val* var7 /* : Array[MParameterType] */;
7488 val* var8 /* : nullable Object */;
7489 val* var_ft /* var ft: MParameterType */;
7490 long var9 /* : Int */;
7491 val* var10 /* : nullable Object */;
7492 val* var11 /* : RuntimeVariable */;
7493 val* var_res /* var res: RuntimeVariable */;
7494 var_ret_type = p0;
7495 var_arguments = p1;
7496 if (varonce) {
7497 var = varonce;
7498 } else {
7499 var1 = "ArrayCapable";
7500 var2 = 12;
7501 var3 = string__NativeString__to_s_with_length(var1, var2);
7502 var = var3;
7503 varonce = var;
7504 }
7505 {
7506 var4 = abstract_compiler__AbstractCompilerVisitor__get_class(self, var);
7507 }
7508 var_mclass = var4;
7509 {
7510 { /* Inline model#MClass#mparameters (var_mclass) on <var_mclass:MClass> */
7511 var7 = var_mclass->attrs[COLOR_model__MClass___mparameters].val; /* _mparameters on <var_mclass:MClass> */
7512 if (unlikely(var7 == NULL)) {
7513 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
7514 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 367);
7515 show_backtrace(1);
7516 }
7517 var5 = var7;
7518 RET_LABEL6:(void)0;
7519 }
7520 }
7521 {
7522 var8 = abstract_collection__SequenceRead__first(var5);
7523 }
7524 var_ft = var8;
7525 var9 = 1;
7526 {
7527 var10 = array__Array___91d_93d(var_arguments, var9);
7528 }
7529 {
7530 var11 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__native_array_instance]))(self, var_ft, var10) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
7531 }
7532 var_res = var11;
7533 {
7534 abstract_compiler__AbstractCompilerVisitor__ret(self, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <self:SeparateCompilerVisitor>*/
7535 }
7536 RET_LABEL:;
7537 }
7538 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
7539 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
7540 separate_compiler__SeparateCompilerVisitor__calloc_array(self, p0, p1); /* Direct call separate_compiler#SeparateCompilerVisitor#calloc_array on <self:Object(SeparateCompilerVisitor)>*/
7541 RET_LABEL:;
7542 }
7543 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: SeparateCompilerVisitor, MClassDef, MType) */
7544 void separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
7545 val* var_mclassdef /* var mclassdef: MClassDef */;
7546 val* var_mtype /* var mtype: MType */;
7547 short int var /* : Bool */;
7548 val* var1 /* : AbstractCompiler */;
7549 val* var3 /* : AbstractCompiler */;
7550 val* var_compiler /* var compiler: SeparateCompiler */;
7551 val* var4 /* : Map[MClassDef, Set[MType]] */;
7552 val* var6 /* : Map[MClassDef, Set[MType]] */;
7553 val* var7 /* : nullable Frame */;
7554 val* var9 /* : nullable Frame */;
7555 val* var10 /* : MPropDef */;
7556 val* var12 /* : MPropDef */;
7557 val* var13 /* : MClassDef */;
7558 val* var15 /* : MClassDef */;
7559 short int var16 /* : Bool */;
7560 short int var17 /* : Bool */;
7561 val* var18 /* : Map[MClassDef, Set[MType]] */;
7562 val* var20 /* : Map[MClassDef, Set[MType]] */;
7563 val* var21 /* : nullable Frame */;
7564 val* var23 /* : nullable Frame */;
7565 val* var24 /* : MPropDef */;
7566 val* var26 /* : MPropDef */;
7567 val* var27 /* : MClassDef */;
7568 val* var29 /* : MClassDef */;
7569 val* var30 /* : HashSet[MType] */;
7570 val* var31 /* : Map[MClassDef, Set[MType]] */;
7571 val* var33 /* : Map[MClassDef, Set[MType]] */;
7572 val* var34 /* : nullable Frame */;
7573 val* var36 /* : nullable Frame */;
7574 val* var37 /* : MPropDef */;
7575 val* var39 /* : MPropDef */;
7576 val* var40 /* : MClassDef */;
7577 val* var42 /* : MClassDef */;
7578 val* var43 /* : nullable Object */;
7579 var_mclassdef = p0;
7580 var_mtype = p1;
7581 {
7582 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7583 }
7584 if (unlikely(!var)) {
7585 PRINT_ERROR("Runtime error: %s", "Assert failed");
7586 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1760);
7587 show_backtrace(1);
7588 }
7589 {
7590 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7591 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7592 if (unlikely(var3 == NULL)) {
7593 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7594 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7595 show_backtrace(1);
7596 }
7597 var1 = var3;
7598 RET_LABEL2:(void)0;
7599 }
7600 }
7601 var_compiler = var1;
7602 {
7603 { /* Inline separate_compiler#SeparateCompiler#live_unresolved_types (var_compiler) on <var_compiler:SeparateCompiler> */
7604 var6 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <var_compiler:SeparateCompiler> */
7605 if (unlikely(var6 == NULL)) {
7606 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
7607 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 157);
7608 show_backtrace(1);
7609 }
7610 var4 = var6;
7611 RET_LABEL5:(void)0;
7612 }
7613 }
7614 {
7615 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
7616 var9 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
7617 var7 = var9;
7618 RET_LABEL8:(void)0;
7619 }
7620 }
7621 if (var7 == NULL) {
7622 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7623 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1762);
7624 show_backtrace(1);
7625 } else {
7626 { /* Inline abstract_compiler#Frame#mpropdef (var7) on <var7:nullable Frame> */
7627 if (unlikely(var7 == NULL)) {
7628 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7629 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
7630 show_backtrace(1);
7631 }
7632 var12 = var7->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var7:nullable Frame> */
7633 if (unlikely(var12 == NULL)) {
7634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
7635 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
7636 show_backtrace(1);
7637 }
7638 var10 = var12;
7639 RET_LABEL11:(void)0;
7640 }
7641 }
7642 {
7643 { /* Inline model#MPropDef#mclassdef (var10) on <var10:MPropDef> */
7644 var15 = var10->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var10:MPropDef> */
7645 if (unlikely(var15 == NULL)) {
7646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7647 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
7648 show_backtrace(1);
7649 }
7650 var13 = var15;
7651 RET_LABEL14:(void)0;
7652 }
7653 }
7654 {
7655 var16 = abstract_collection__MapRead__has_key(var4, var13);
7656 }
7657 var17 = !var16;
7658 if (var17){
7659 {
7660 { /* Inline separate_compiler#SeparateCompiler#live_unresolved_types (var_compiler) on <var_compiler:SeparateCompiler> */
7661 var20 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <var_compiler:SeparateCompiler> */
7662 if (unlikely(var20 == NULL)) {
7663 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
7664 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 157);
7665 show_backtrace(1);
7666 }
7667 var18 = var20;
7668 RET_LABEL19:(void)0;
7669 }
7670 }
7671 {
7672 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
7673 var23 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
7674 var21 = var23;
7675 RET_LABEL22:(void)0;
7676 }
7677 }
7678 if (var21 == NULL) {
7679 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7680 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1763);
7681 show_backtrace(1);
7682 } else {
7683 { /* Inline abstract_compiler#Frame#mpropdef (var21) on <var21:nullable Frame> */
7684 if (unlikely(var21 == NULL)) {
7685 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7686 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
7687 show_backtrace(1);
7688 }
7689 var26 = var21->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var21:nullable Frame> */
7690 if (unlikely(var26 == NULL)) {
7691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
7692 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
7693 show_backtrace(1);
7694 }
7695 var24 = var26;
7696 RET_LABEL25:(void)0;
7697 }
7698 }
7699 {
7700 { /* Inline model#MPropDef#mclassdef (var24) on <var24:MPropDef> */
7701 var29 = var24->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var24:MPropDef> */
7702 if (unlikely(var29 == NULL)) {
7703 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7704 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
7705 show_backtrace(1);
7706 }
7707 var27 = var29;
7708 RET_LABEL28:(void)0;
7709 }
7710 }
7711 var30 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
7712 {
7713 ((void (*)(val*))(var30->class->vft[COLOR_kernel__Object__init]))(var30) /* init on <var30:HashSet[MType]>*/;
7714 }
7715 {
7716 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var18, var27, var30) /* []= on <var18:Map[MClassDef, Set[MType]]>*/;
7717 }
7718 } else {
7719 }
7720 {
7721 { /* Inline separate_compiler#SeparateCompiler#live_unresolved_types (var_compiler) on <var_compiler:SeparateCompiler> */
7722 var33 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <var_compiler:SeparateCompiler> */
7723 if (unlikely(var33 == NULL)) {
7724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
7725 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 157);
7726 show_backtrace(1);
7727 }
7728 var31 = var33;
7729 RET_LABEL32:(void)0;
7730 }
7731 }
7732 {
7733 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
7734 var36 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
7735 var34 = var36;
7736 RET_LABEL35:(void)0;
7737 }
7738 }
7739 if (var34 == NULL) {
7740 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7741 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1765);
7742 show_backtrace(1);
7743 } else {
7744 { /* Inline abstract_compiler#Frame#mpropdef (var34) on <var34:nullable Frame> */
7745 if (unlikely(var34 == NULL)) {
7746 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7747 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
7748 show_backtrace(1);
7749 }
7750 var39 = var34->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var34:nullable Frame> */
7751 if (unlikely(var39 == NULL)) {
7752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
7753 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
7754 show_backtrace(1);
7755 }
7756 var37 = var39;
7757 RET_LABEL38:(void)0;
7758 }
7759 }
7760 {
7761 { /* Inline model#MPropDef#mclassdef (var37) on <var37:MPropDef> */
7762 var42 = var37->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var37:MPropDef> */
7763 if (unlikely(var42 == NULL)) {
7764 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7765 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
7766 show_backtrace(1);
7767 }
7768 var40 = var42;
7769 RET_LABEL41:(void)0;
7770 }
7771 }
7772 {
7773 var43 = ((val* (*)(val*, val*))(var31->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var31, var40) /* [] on <var31:Map[MClassDef, Set[MType]]>*/;
7774 }
7775 {
7776 ((void (*)(val*, val*))(var43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var43, var_mtype) /* add on <var43:nullable Object(Set[MType])>*/;
7777 }
7778 RET_LABEL:;
7779 }
7780 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: Object, MClassDef, MType) */
7781 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
7782 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, p0, p1); /* Direct call separate_compiler#SeparateCompilerVisitor#link_unresolved_type on <self:Object(SeparateCompilerVisitor)>*/
7783 RET_LABEL:;
7784 }
7785 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
7786 val* separate_compiler__MMethodDef__separate_runtime_function(val* self) {
7787 val* var /* : AbstractRuntimeFunction */;
7788 val* var1 /* : nullable SeparateRuntimeFunction */;
7789 val* var3 /* : nullable SeparateRuntimeFunction */;
7790 val* var_res /* var res: nullable SeparateRuntimeFunction */;
7791 val* var4 /* : null */;
7792 short int var5 /* : Bool */;
7793 short int var6 /* : Bool */;
7794 val* var_other /* var other: nullable Object */;
7795 short int var8 /* : Bool */;
7796 short int var10 /* : Bool */;
7797 val* var11 /* : SeparateRuntimeFunction */;
7798 {
7799 { /* Inline separate_compiler#MMethodDef#separate_runtime_function_cache (self) on <self:MMethodDef> */
7800 var3 = self->attrs[COLOR_separate_compiler__MMethodDef___separate_runtime_function_cache].val; /* _separate_runtime_function_cache on <self:MMethodDef> */
7801 var1 = var3;
7802 RET_LABEL2:(void)0;
7803 }
7804 }
7805 var_res = var1;
7806 var4 = NULL;
7807 if (var_res == NULL) {
7808 var5 = 1; /* is null */
7809 } else {
7810 var5 = 0; /* arg is null but recv is not */
7811 }
7812 if (0) {
7813 { /* Inline kernel#Object#== (var_res,var4) on <var_res:nullable SeparateRuntimeFunction> */
7814 var_other = var4;
7815 {
7816 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable SeparateRuntimeFunction(SeparateRuntimeFunction)> */
7817 var10 = var_res == var_other;
7818 var8 = var10;
7819 goto RET_LABEL9;
7820 RET_LABEL9:(void)0;
7821 }
7822 }
7823 var6 = var8;
7824 goto RET_LABEL7;
7825 RET_LABEL7:(void)0;
7826 }
7827 var5 = var6;
7828 }
7829 if (var5){
7830 var11 = NEW_separate_compiler__SeparateRuntimeFunction(&type_separate_compiler__SeparateRuntimeFunction);
7831 {
7832 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d]))(var11, self) /* mmethoddef= on <var11:SeparateRuntimeFunction>*/;
7833 }
7834 {
7835 ((void (*)(val*))(var11->class->vft[COLOR_kernel__Object__init]))(var11) /* init on <var11:SeparateRuntimeFunction>*/;
7836 }
7837 var_res = var11;
7838 {
7839 { /* Inline separate_compiler#MMethodDef#separate_runtime_function_cache= (self,var_res) on <self:MMethodDef> */
7840 self->attrs[COLOR_separate_compiler__MMethodDef___separate_runtime_function_cache].val = var_res; /* _separate_runtime_function_cache on <self:MMethodDef> */
7841 RET_LABEL12:(void)0;
7842 }
7843 }
7844 } else {
7845 }
7846 var = var_res;
7847 goto RET_LABEL;
7848 RET_LABEL:;
7849 return var;
7850 }
7851 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: Object): AbstractRuntimeFunction */
7852 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function(val* self) {
7853 val* var /* : AbstractRuntimeFunction */;
7854 val* var1 /* : AbstractRuntimeFunction */;
7855 var1 = separate_compiler__MMethodDef__separate_runtime_function(self);
7856 var = var1;
7857 RET_LABEL:;
7858 return var;
7859 }
7860 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: MMethodDef): nullable SeparateRuntimeFunction */
7861 val* separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
7862 val* var /* : nullable SeparateRuntimeFunction */;
7863 val* var1 /* : nullable SeparateRuntimeFunction */;
7864 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___separate_runtime_function_cache].val; /* _separate_runtime_function_cache on <self:MMethodDef> */
7865 var = var1;
7866 RET_LABEL:;
7867 return var;
7868 }
7869 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: Object): nullable SeparateRuntimeFunction */
7870 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
7871 val* var /* : nullable SeparateRuntimeFunction */;
7872 val* var1 /* : nullable SeparateRuntimeFunction */;
7873 val* var3 /* : nullable SeparateRuntimeFunction */;
7874 { /* Inline separate_compiler#MMethodDef#separate_runtime_function_cache (self) on <self:Object(MMethodDef)> */
7875 var3 = self->attrs[COLOR_separate_compiler__MMethodDef___separate_runtime_function_cache].val; /* _separate_runtime_function_cache on <self:Object(MMethodDef)> */
7876 var1 = var3;
7877 RET_LABEL2:(void)0;
7878 }
7879 var = var1;
7880 RET_LABEL:;
7881 return var;
7882 }
7883 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: MMethodDef, nullable SeparateRuntimeFunction) */
7884 void separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
7885 self->attrs[COLOR_separate_compiler__MMethodDef___separate_runtime_function_cache].val = p0; /* _separate_runtime_function_cache on <self:MMethodDef> */
7886 RET_LABEL:;
7887 }
7888 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: Object, nullable SeparateRuntimeFunction) */
7889 void VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
7890 { /* Inline separate_compiler#MMethodDef#separate_runtime_function_cache= (self,p0) on <self:Object(MMethodDef)> */
7891 self->attrs[COLOR_separate_compiler__MMethodDef___separate_runtime_function_cache].val = p0; /* _separate_runtime_function_cache on <self:Object(MMethodDef)> */
7892 RET_LABEL1:(void)0;
7893 }
7894 RET_LABEL:;
7895 }
7896 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
7897 val* separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
7898 val* var /* : AbstractRuntimeFunction */;
7899 val* var1 /* : nullable VirtualRuntimeFunction */;
7900 val* var3 /* : nullable VirtualRuntimeFunction */;
7901 val* var_res /* var res: nullable VirtualRuntimeFunction */;
7902 val* var4 /* : null */;
7903 short int var5 /* : Bool */;
7904 short int var6 /* : Bool */;
7905 val* var_other /* var other: nullable Object */;
7906 short int var8 /* : Bool */;
7907 short int var10 /* : Bool */;
7908 val* var11 /* : VirtualRuntimeFunction */;
7909 {
7910 { /* Inline separate_compiler#MMethodDef#virtual_runtime_function_cache (self) on <self:MMethodDef> */
7911 var3 = self->attrs[COLOR_separate_compiler__MMethodDef___virtual_runtime_function_cache].val; /* _virtual_runtime_function_cache on <self:MMethodDef> */
7912 var1 = var3;
7913 RET_LABEL2:(void)0;
7914 }
7915 }
7916 var_res = var1;
7917 var4 = NULL;
7918 if (var_res == NULL) {
7919 var5 = 1; /* is null */
7920 } else {
7921 var5 = 0; /* arg is null but recv is not */
7922 }
7923 if (0) {
7924 { /* Inline kernel#Object#== (var_res,var4) on <var_res:nullable VirtualRuntimeFunction> */
7925 var_other = var4;
7926 {
7927 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable VirtualRuntimeFunction(VirtualRuntimeFunction)> */
7928 var10 = var_res == var_other;
7929 var8 = var10;
7930 goto RET_LABEL9;
7931 RET_LABEL9:(void)0;
7932 }
7933 }
7934 var6 = var8;
7935 goto RET_LABEL7;
7936 RET_LABEL7:(void)0;
7937 }
7938 var5 = var6;
7939 }
7940 if (var5){
7941 var11 = NEW_separate_compiler__VirtualRuntimeFunction(&type_separate_compiler__VirtualRuntimeFunction);
7942 {
7943 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d]))(var11, self) /* mmethoddef= on <var11:VirtualRuntimeFunction>*/;
7944 }
7945 {
7946 ((void (*)(val*))(var11->class->vft[COLOR_kernel__Object__init]))(var11) /* init on <var11:VirtualRuntimeFunction>*/;
7947 }
7948 var_res = var11;
7949 {
7950 { /* Inline separate_compiler#MMethodDef#virtual_runtime_function_cache= (self,var_res) on <self:MMethodDef> */
7951 self->attrs[COLOR_separate_compiler__MMethodDef___virtual_runtime_function_cache].val = var_res; /* _virtual_runtime_function_cache on <self:MMethodDef> */
7952 RET_LABEL12:(void)0;
7953 }
7954 }
7955 } else {
7956 }
7957 var = var_res;
7958 goto RET_LABEL;
7959 RET_LABEL:;
7960 return var;
7961 }
7962 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: Object): AbstractRuntimeFunction */
7963 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
7964 val* var /* : AbstractRuntimeFunction */;
7965 val* var1 /* : AbstractRuntimeFunction */;
7966 var1 = separate_compiler__MMethodDef__virtual_runtime_function(self);
7967 var = var1;
7968 RET_LABEL:;
7969 return var;
7970 }
7971 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: MMethodDef): nullable VirtualRuntimeFunction */
7972 val* separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
7973 val* var /* : nullable VirtualRuntimeFunction */;
7974 val* var1 /* : nullable VirtualRuntimeFunction */;
7975 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___virtual_runtime_function_cache].val; /* _virtual_runtime_function_cache on <self:MMethodDef> */
7976 var = var1;
7977 RET_LABEL:;
7978 return var;
7979 }
7980 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: Object): nullable VirtualRuntimeFunction */
7981 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
7982 val* var /* : nullable VirtualRuntimeFunction */;
7983 val* var1 /* : nullable VirtualRuntimeFunction */;
7984 val* var3 /* : nullable VirtualRuntimeFunction */;
7985 { /* Inline separate_compiler#MMethodDef#virtual_runtime_function_cache (self) on <self:Object(MMethodDef)> */
7986 var3 = self->attrs[COLOR_separate_compiler__MMethodDef___virtual_runtime_function_cache].val; /* _virtual_runtime_function_cache on <self:Object(MMethodDef)> */
7987 var1 = var3;
7988 RET_LABEL2:(void)0;
7989 }
7990 var = var1;
7991 RET_LABEL:;
7992 return var;
7993 }
7994 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: MMethodDef, nullable VirtualRuntimeFunction) */
7995 void separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
7996 self->attrs[COLOR_separate_compiler__MMethodDef___virtual_runtime_function_cache].val = p0; /* _virtual_runtime_function_cache on <self:MMethodDef> */
7997 RET_LABEL:;
7998 }
7999 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: Object, nullable VirtualRuntimeFunction) */
8000 void VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
8001 { /* Inline separate_compiler#MMethodDef#virtual_runtime_function_cache= (self,p0) on <self:Object(MMethodDef)> */
8002 self->attrs[COLOR_separate_compiler__MMethodDef___virtual_runtime_function_cache].val = p0; /* _virtual_runtime_function_cache on <self:Object(MMethodDef)> */
8003 RET_LABEL1:(void)0;
8004 }
8005 RET_LABEL:;
8006 }
8007 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: SeparateRuntimeFunction): String */
8008 val* separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
8009 val* var /* : String */;
8010 val* var1 /* : MMethodDef */;
8011 val* var3 /* : MMethodDef */;
8012 val* var4 /* : String */;
8013 val* var5 /* : Array[Object] */;
8014 long var6 /* : Int */;
8015 val* var7 /* : NativeArray[Object] */;
8016 val* var8 /* : String */;
8017 {
8018 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:SeparateRuntimeFunction> */
8019 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:SeparateRuntimeFunction> */
8020 if (unlikely(var3 == NULL)) {
8021 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
8022 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
8023 show_backtrace(1);
8024 }
8025 var1 = var3;
8026 RET_LABEL2:(void)0;
8027 }
8028 }
8029 {
8030 var4 = abstract_compiler__MPropDef__c_name(var1);
8031 }
8032 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
8033 { /* var5 = array_instance Array[Object] */
8034 var6 = 1;
8035 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
8036 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var4;
8037 {
8038 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
8039 }
8040 }
8041 {
8042 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
8043 }
8044 var = var8;
8045 goto RET_LABEL;
8046 RET_LABEL:;
8047 return var;
8048 }
8049 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: Object): String */
8050 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
8051 val* var /* : String */;
8052 val* var1 /* : String */;
8053 var1 = separate_compiler__SeparateRuntimeFunction__build_c_name(self);
8054 var = var1;
8055 RET_LABEL:;
8056 return var;
8057 }
8058 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: SeparateRuntimeFunction): String */
8059 val* separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
8060 val* var /* : String */;
8061 val* var1 /* : MMethodDef */;
8062 val* var3 /* : MMethodDef */;
8063 val* var4 /* : String */;
8064 val* var6 /* : String */;
8065 {
8066 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:SeparateRuntimeFunction> */
8067 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:SeparateRuntimeFunction> */
8068 if (unlikely(var3 == NULL)) {
8069 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
8070 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
8071 show_backtrace(1);
8072 }
8073 var1 = var3;
8074 RET_LABEL2:(void)0;
8075 }
8076 }
8077 {
8078 { /* Inline model#MPropDef#to_s (var1) on <var1:MMethodDef> */
8079 var6 = var1->attrs[COLOR_model__MPropDef___to_s].val; /* _to_s on <var1:MMethodDef> */
8080 if (unlikely(var6 == NULL)) {
8081 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
8082 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1920);
8083 show_backtrace(1);
8084 }
8085 var4 = var6;
8086 RET_LABEL5:(void)0;
8087 }
8088 }
8089 var = var4;
8090 goto RET_LABEL;
8091 RET_LABEL:;
8092 return var;
8093 }
8094 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: Object): String */
8095 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
8096 val* var /* : String */;
8097 val* var1 /* : String */;
8098 var1 = separate_compiler__SeparateRuntimeFunction__to_s(self);
8099 var = var1;
8100 RET_LABEL:;
8101 return var;
8102 }
8103 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: SeparateRuntimeFunction, AbstractCompiler) */
8104 void separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
8105 short int var /* : Bool */;
8106 int cltype;
8107 int idtype;
8108 const struct type* type_struct;
8109 const char* var_class_name;
8110 val* var_compiler /* var compiler: AbstractCompiler */;
8111 val* var1 /* : MMethodDef */;
8112 val* var3 /* : MMethodDef */;
8113 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
8114 val* var4 /* : MMethodDef */;
8115 val* var6 /* : MMethodDef */;
8116 val* var7 /* : MClassDef */;
8117 val* var9 /* : MClassDef */;
8118 val* var10 /* : MClassType */;
8119 val* var12 /* : MClassType */;
8120 val* var_recv /* var recv: MClassType */;
8121 val* var13 /* : AbstractCompilerVisitor */;
8122 val* var_v /* var v: AbstractCompilerVisitor */;
8123 val* var14 /* : RuntimeVariable */;
8124 static val* varonce;
8125 val* var15 /* : String */;
8126 char* var16 /* : NativeString */;
8127 long var17 /* : Int */;
8128 val* var18 /* : FlatString */;
8129 val* var_selfvar /* var selfvar: RuntimeVariable */;
8130 val* var19 /* : Array[RuntimeVariable] */;
8131 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
8132 val* var20 /* : Frame */;
8133 val* var_frame /* var frame: Frame */;
8134 val* var22 /* : nullable MSignature */;
8135 val* var24 /* : nullable MSignature */;
8136 val* var25 /* : MClassDef */;
8137 val* var27 /* : MClassDef */;
8138 val* var28 /* : MClassType */;
8139 val* var30 /* : MClassType */;
8140 val* var31 /* : MClassDef */;
8141 val* var33 /* : MClassDef */;
8142 val* var34 /* : MClassType */;
8143 val* var36 /* : MClassType */;
8144 val* var37 /* : MClassDef */;
8145 val* var39 /* : MClassDef */;
8146 val* var40 /* : MModule */;
8147 val* var42 /* : MModule */;
8148 short int var43 /* : Bool */;
8149 val* var44 /* : MSignature */;
8150 val* var_msignature /* var msignature: MSignature */;
8151 val* var45 /* : FlatBuffer */;
8152 val* var_sig /* var sig: FlatBuffer */;
8153 val* var46 /* : FlatBuffer */;
8154 val* var_comment /* var comment: FlatBuffer */;
8155 val* var47 /* : nullable MType */;
8156 val* var49 /* : nullable MType */;
8157 val* var_ret /* var ret: nullable MType */;
8158 val* var50 /* : null */;
8159 short int var51 /* : Bool */;
8160 short int var52 /* : Bool */;
8161 val* var_other /* var other: nullable Object */;
8162 short int var54 /* : Bool */;
8163 short int var55 /* : Bool */;
8164 short int var56 /* : Bool */;
8165 val* var57 /* : String */;
8166 static val* varonce58;
8167 val* var59 /* : String */;
8168 char* var60 /* : NativeString */;
8169 long var61 /* : Int */;
8170 val* var62 /* : FlatString */;
8171 val* var63 /* : Array[Object] */;
8172 long var64 /* : Int */;
8173 val* var65 /* : NativeArray[Object] */;
8174 val* var66 /* : String */;
8175 static val* varonce67;
8176 val* var68 /* : String */;
8177 char* var69 /* : NativeString */;
8178 long var70 /* : Int */;
8179 val* var71 /* : FlatString */;
8180 val* var72 /* : String */;
8181 static val* varonce73;
8182 val* var74 /* : String */;
8183 char* var75 /* : NativeString */;
8184 long var76 /* : Int */;
8185 val* var77 /* : FlatString */;
8186 val* var78 /* : MType */;
8187 val* var80 /* : MType */;
8188 val* var81 /* : String */;
8189 static val* varonce82;
8190 val* var83 /* : String */;
8191 char* var84 /* : NativeString */;
8192 long var85 /* : Int */;
8193 val* var86 /* : FlatString */;
8194 val* var87 /* : Array[Object] */;
8195 long var88 /* : Int */;
8196 val* var89 /* : NativeArray[Object] */;
8197 val* var90 /* : String */;
8198 static val* varonce91;
8199 val* var92 /* : String */;
8200 char* var93 /* : NativeString */;
8201 long var94 /* : Int */;
8202 val* var95 /* : FlatString */;
8203 static val* varonce96;
8204 val* var97 /* : String */;
8205 char* var98 /* : NativeString */;
8206 long var99 /* : Int */;
8207 val* var100 /* : FlatString */;
8208 val* var101 /* : MType */;
8209 val* var103 /* : MType */;
8210 val* var104 /* : Array[Object] */;
8211 long var105 /* : Int */;
8212 val* var106 /* : NativeArray[Object] */;
8213 val* var107 /* : String */;
8214 long var108 /* : Int */;
8215 long var_i /* var i: Int */;
8216 long var109 /* : Int */;
8217 long var_ /* var : Int */;
8218 short int var110 /* : Bool */;
8219 short int var112 /* : Bool */;
8220 int cltype113;
8221 int idtype114;
8222 const char* var_class_name115;
8223 short int var116 /* : Bool */;
8224 val* var117 /* : Array[MParameter] */;
8225 val* var119 /* : Array[MParameter] */;
8226 val* var120 /* : nullable Object */;
8227 val* var121 /* : MType */;
8228 val* var123 /* : MType */;
8229 val* var_mtype /* var mtype: MType */;
8230 long var124 /* : Int */;
8231 long var126 /* : Int */;
8232 short int var127 /* : Bool */;
8233 short int var128 /* : Bool */;
8234 short int var130 /* : Bool */;
8235 static val* varonce131;
8236 val* var132 /* : String */;
8237 char* var133 /* : NativeString */;
8238 long var134 /* : Int */;
8239 val* var135 /* : FlatString */;
8240 val* var136 /* : MClass */;
8241 val* var137 /* : Array[MType] */;
8242 long var138 /* : Int */;
8243 val* var_139 /* var : Array[MType] */;
8244 val* var140 /* : MClassType */;
8245 static val* varonce141;
8246 val* var142 /* : String */;
8247 char* var143 /* : NativeString */;
8248 long var144 /* : Int */;
8249 val* var145 /* : FlatString */;
8250 val* var146 /* : Array[Object] */;
8251 long var147 /* : Int */;
8252 val* var148 /* : NativeArray[Object] */;
8253 val* var149 /* : String */;
8254 static val* varonce150;
8255 val* var151 /* : String */;
8256 char* var152 /* : NativeString */;
8257 long var153 /* : Int */;
8258 val* var154 /* : FlatString */;
8259 val* var155 /* : String */;
8260 static val* varonce156;
8261 val* var157 /* : String */;
8262 char* var158 /* : NativeString */;
8263 long var159 /* : Int */;
8264 val* var160 /* : FlatString */;
8265 val* var161 /* : Array[Object] */;
8266 long var162 /* : Int */;
8267 val* var163 /* : NativeArray[Object] */;
8268 val* var164 /* : Object */;
8269 val* var165 /* : String */;
8270 val* var166 /* : RuntimeVariable */;
8271 static val* varonce167;
8272 val* var168 /* : String */;
8273 char* var169 /* : NativeString */;
8274 long var170 /* : Int */;
8275 val* var171 /* : FlatString */;
8276 val* var172 /* : Array[Object] */;
8277 long var173 /* : Int */;
8278 val* var174 /* : NativeArray[Object] */;
8279 val* var175 /* : Object */;
8280 val* var176 /* : String */;
8281 val* var_argvar /* var argvar: RuntimeVariable */;
8282 long var177 /* : Int */;
8283 long var178 /* : Int */;
8284 static val* varonce179;
8285 val* var180 /* : String */;
8286 char* var181 /* : NativeString */;
8287 long var182 /* : Int */;
8288 val* var183 /* : FlatString */;
8289 static val* varonce184;
8290 val* var185 /* : String */;
8291 char* var186 /* : NativeString */;
8292 long var187 /* : Int */;
8293 val* var188 /* : FlatString */;
8294 val* var189 /* : null */;
8295 short int var190 /* : Bool */;
8296 short int var191 /* : Bool */;
8297 short int var193 /* : Bool */;
8298 short int var194 /* : Bool */;
8299 short int var195 /* : Bool */;
8300 static val* varonce196;
8301 val* var197 /* : String */;
8302 char* var198 /* : NativeString */;
8303 long var199 /* : Int */;
8304 val* var200 /* : FlatString */;
8305 val* var201 /* : Array[Object] */;
8306 long var202 /* : Int */;
8307 val* var203 /* : NativeArray[Object] */;
8308 val* var204 /* : String */;
8309 val* var205 /* : String */;
8310 static val* varonce206;
8311 val* var207 /* : String */;
8312 char* var208 /* : NativeString */;
8313 long var209 /* : Int */;
8314 val* var210 /* : FlatString */;
8315 val* var211 /* : Array[Object] */;
8316 long var212 /* : Int */;
8317 val* var213 /* : NativeArray[Object] */;
8318 val* var214 /* : String */;
8319 static val* varonce215;
8320 val* var216 /* : String */;
8321 char* var217 /* : NativeString */;
8322 long var218 /* : Int */;
8323 val* var219 /* : FlatString */;
8324 static val* varonce220;
8325 val* var221 /* : String */;
8326 char* var222 /* : NativeString */;
8327 long var223 /* : Int */;
8328 val* var224 /* : FlatString */;
8329 static val* varonce225;
8330 val* var226 /* : String */;
8331 char* var227 /* : NativeString */;
8332 long var228 /* : Int */;
8333 val* var229 /* : FlatString */;
8334 val* var230 /* : Array[Object] */;
8335 long var231 /* : Int */;
8336 val* var232 /* : NativeArray[Object] */;
8337 val* var233 /* : String */;
8338 static val* varonce234;
8339 val* var235 /* : String */;
8340 char* var236 /* : NativeString */;
8341 long var237 /* : Int */;
8342 val* var238 /* : FlatString */;
8343 val* var239 /* : Array[Object] */;
8344 long var240 /* : Int */;
8345 val* var241 /* : NativeArray[Object] */;
8346 val* var242 /* : String */;
8347 val* var243 /* : null */;
8348 short int var244 /* : Bool */;
8349 short int var245 /* : Bool */;
8350 short int var247 /* : Bool */;
8351 short int var248 /* : Bool */;
8352 short int var249 /* : Bool */;
8353 val* var250 /* : RuntimeVariable */;
8354 static val* varonce252;
8355 val* var253 /* : String */;
8356 char* var254 /* : NativeString */;
8357 long var255 /* : Int */;
8358 val* var256 /* : FlatString */;
8359 val* var257 /* : String */;
8360 val* var259 /* : nullable Object */;
8361 val* var260 /* : MType */;
8362 val* var262 /* : MType */;
8363 short int var263 /* : Bool */;
8364 short int var264 /* : Bool */;
8365 short int var266 /* : Bool */;
8366 short int var267 /* : Bool */;
8367 short int var268 /* : Bool */;
8368 val* var269 /* : nullable RuntimeVariable */;
8369 val* var270 /* : nullable String */;
8370 val* var272 /* : nullable String */;
8371 static val* varonce273;
8372 val* var274 /* : String */;
8373 char* var275 /* : NativeString */;
8374 long var276 /* : Int */;
8375 val* var277 /* : FlatString */;
8376 val* var278 /* : Array[Object] */;
8377 long var279 /* : Int */;
8378 val* var280 /* : NativeArray[Object] */;
8379 val* var281 /* : String */;
8380 val* var282 /* : null */;
8381 short int var283 /* : Bool */;
8382 short int var284 /* : Bool */;
8383 short int var286 /* : Bool */;
8384 short int var287 /* : Bool */;
8385 short int var288 /* : Bool */;
8386 static val* varonce289;
8387 val* var290 /* : String */;
8388 char* var291 /* : NativeString */;
8389 long var292 /* : Int */;
8390 val* var293 /* : FlatString */;
8391 val* var294 /* : nullable RuntimeVariable */;
8392 val* var296 /* : nullable RuntimeVariable */;
8393 static val* varonce297;
8394 val* var298 /* : String */;
8395 char* var299 /* : NativeString */;
8396 long var300 /* : Int */;
8397 val* var301 /* : FlatString */;
8398 val* var302 /* : Array[Object] */;
8399 long var303 /* : Int */;
8400 val* var304 /* : NativeArray[Object] */;
8401 val* var305 /* : String */;
8402 static val* varonce306;
8403 val* var307 /* : String */;
8404 char* var308 /* : NativeString */;
8405 long var309 /* : Int */;
8406 val* var310 /* : FlatString */;
8407 val* var311 /* : String */;
8408 static val* varonce312;
8409 val* var313 /* : String */;
8410 char* var314 /* : NativeString */;
8411 long var315 /* : Int */;
8412 val* var316 /* : FlatString */;
8413 long var317 /* : Int */;
8414 short int var318 /* : Bool */;
8415 short int var319 /* : Bool */;
8416 val* var320 /* : HashMap[String, String] */;
8417 val* var322 /* : HashMap[String, String] */;
8418 val* var323 /* : String */;
8419 val* var324 /* : MClassDef */;
8420 val* var326 /* : MClassDef */;
8421 val* var327 /* : MModule */;
8422 val* var329 /* : MModule */;
8423 val* var330 /* : String */;
8424 val* var332 /* : String */;
8425 static val* varonce333;
8426 val* var334 /* : String */;
8427 char* var335 /* : NativeString */;
8428 long var336 /* : Int */;
8429 val* var337 /* : FlatString */;
8430 val* var338 /* : MClassDef */;
8431 val* var340 /* : MClassDef */;
8432 val* var341 /* : MClass */;
8433 val* var343 /* : MClass */;
8434 val* var344 /* : String */;
8435 val* var346 /* : String */;
8436 static val* varonce347;
8437 val* var348 /* : String */;
8438 char* var349 /* : NativeString */;
8439 long var350 /* : Int */;
8440 val* var351 /* : FlatString */;
8441 val* var352 /* : MProperty */;
8442 val* var354 /* : MProperty */;
8443 val* var355 /* : String */;
8444 val* var357 /* : String */;
8445 static val* varonce358;
8446 val* var359 /* : String */;
8447 char* var360 /* : NativeString */;
8448 long var361 /* : Int */;
8449 val* var362 /* : FlatString */;
8450 val* var363 /* : Location */;
8451 val* var365 /* : Location */;
8452 val* var366 /* : nullable SourceFile */;
8453 val* var368 /* : nullable SourceFile */;
8454 val* var369 /* : String */;
8455 val* var371 /* : String */;
8456 static val* varonce372;
8457 val* var373 /* : String */;
8458 char* var374 /* : NativeString */;
8459 long var375 /* : Int */;
8460 val* var376 /* : FlatString */;
8461 val* var377 /* : Location */;
8462 val* var379 /* : Location */;
8463 long var380 /* : Int */;
8464 long var382 /* : Int */;
8465 static val* varonce383;
8466 val* var384 /* : String */;
8467 char* var385 /* : NativeString */;
8468 long var386 /* : Int */;
8469 val* var387 /* : FlatString */;
8470 val* var388 /* : Array[Object] */;
8471 long var389 /* : Int */;
8472 val* var390 /* : NativeArray[Object] */;
8473 val* var391 /* : Object */;
8474 val* var392 /* : String */;
8475 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
8476 /* <p0:AbstractCompiler> isa COMPILER */
8477 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
8478 cltype = type_struct->color;
8479 idtype = type_struct->id;
8480 if(cltype >= p0->type->table_size) {
8481 var = 0;
8482 } else {
8483 var = p0->type->type_table[cltype] == idtype;
8484 }
8485 if (unlikely(!var)) {
8486 var_class_name = p0 == NULL ? "null" : p0->type->name;
8487 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
8488 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1801);
8489 show_backtrace(1);
8490 }
8491 var_compiler = p0;
8492 {
8493 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:SeparateRuntimeFunction> */
8494 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:SeparateRuntimeFunction> */
8495 if (unlikely(var3 == NULL)) {
8496 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
8497 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
8498 show_backtrace(1);
8499 }
8500 var1 = var3;
8501 RET_LABEL2:(void)0;
8502 }
8503 }
8504 var_mmethoddef = var1;
8505 {
8506 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:SeparateRuntimeFunction> */
8507 var6 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:SeparateRuntimeFunction> */
8508 if (unlikely(var6 == NULL)) {
8509 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
8510 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
8511 show_backtrace(1);
8512 }
8513 var4 = var6;
8514 RET_LABEL5:(void)0;
8515 }
8516 }
8517 {
8518 { /* Inline model#MPropDef#mclassdef (var4) on <var4:MMethodDef> */
8519 var9 = var4->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var4:MMethodDef> */
8520 if (unlikely(var9 == NULL)) {
8521 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8522 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8523 show_backtrace(1);
8524 }
8525 var7 = var9;
8526 RET_LABEL8:(void)0;
8527 }
8528 }
8529 {
8530 { /* Inline model#MClassDef#bound_mtype (var7) on <var7:MClassDef> */
8531 var12 = var7->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var7:MClassDef> */
8532 if (unlikely(var12 == NULL)) {
8533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8534 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
8535 show_backtrace(1);
8536 }
8537 var10 = var12;
8538 RET_LABEL11:(void)0;
8539 }
8540 }
8541 var_recv = var10;
8542 {
8543 var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
8544 }
8545 var_v = var13;
8546 var14 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
8547 if (varonce) {
8548 var15 = varonce;
8549 } else {
8550 var16 = "self";
8551 var17 = 4;
8552 var18 = string__NativeString__to_s_with_length(var16, var17);
8553 var15 = var18;
8554 varonce = var15;
8555 }
8556 {
8557 abstract_compiler__RuntimeVariable__init(var14, var15, var_recv, var_recv); /* Direct call abstract_compiler#RuntimeVariable#init on <var14:RuntimeVariable>*/
8558 }
8559 var_selfvar = var14;
8560 var19 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
8561 {
8562 ((void (*)(val*))(var19->class->vft[COLOR_kernel__Object__init]))(var19) /* init on <var19:Array[RuntimeVariable]>*/;
8563 }
8564 var_arguments = var19;
8565 var20 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
8566 {
8567 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__Frame__visitor_61d]))(var20, var_v) /* visitor= on <var20:Frame>*/;
8568 }
8569 {
8570 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__Frame__mpropdef_61d]))(var20, var_mmethoddef) /* mpropdef= on <var20:Frame>*/;
8571 }
8572 {
8573 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__Frame__receiver_61d]))(var20, var_recv) /* receiver= on <var20:Frame>*/;
8574 }
8575 {
8576 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__Frame__arguments_61d]))(var20, var_arguments) /* arguments= on <var20:Frame>*/;
8577 }
8578 {
8579 ((void (*)(val*))(var20->class->vft[COLOR_kernel__Object__init]))(var20) /* init on <var20:Frame>*/;
8580 }
8581 var_frame = var20;
8582 {
8583 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (var_v,var_frame) on <var_v:AbstractCompilerVisitor> */
8584 var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <var_v:AbstractCompilerVisitor> */
8585 RET_LABEL21:(void)0;
8586 }
8587 }
8588 {
8589 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
8590 var24 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
8591 var22 = var24;
8592 RET_LABEL23:(void)0;
8593 }
8594 }
8595 {
8596 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
8597 var27 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
8598 if (unlikely(var27 == NULL)) {
8599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8600 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8601 show_backtrace(1);
8602 }
8603 var25 = var27;
8604 RET_LABEL26:(void)0;
8605 }
8606 }
8607 {
8608 { /* Inline model#MClassDef#bound_mtype (var25) on <var25:MClassDef> */
8609 var30 = var25->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var25:MClassDef> */
8610 if (unlikely(var30 == NULL)) {
8611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8612 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
8613 show_backtrace(1);
8614 }
8615 var28 = var30;
8616 RET_LABEL29:(void)0;
8617 }
8618 }
8619 {
8620 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
8621 var33 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
8622 if (unlikely(var33 == NULL)) {
8623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8624 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8625 show_backtrace(1);
8626 }
8627 var31 = var33;
8628 RET_LABEL32:(void)0;
8629 }
8630 }
8631 {
8632 { /* Inline model#MClassDef#bound_mtype (var31) on <var31:MClassDef> */
8633 var36 = var31->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var31:MClassDef> */
8634 if (unlikely(var36 == NULL)) {
8635 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8636 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
8637 show_backtrace(1);
8638 }
8639 var34 = var36;
8640 RET_LABEL35:(void)0;
8641 }
8642 }
8643 {
8644 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
8645 var39 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
8646 if (unlikely(var39 == NULL)) {
8647 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8648 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8649 show_backtrace(1);
8650 }
8651 var37 = var39;
8652 RET_LABEL38:(void)0;
8653 }
8654 }
8655 {
8656 { /* Inline model#MClassDef#mmodule (var37) on <var37:MClassDef> */
8657 var42 = var37->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var37:MClassDef> */
8658 if (unlikely(var42 == NULL)) {
8659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8660 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
8661 show_backtrace(1);
8662 }
8663 var40 = var42;
8664 RET_LABEL41:(void)0;
8665 }
8666 }
8667 var43 = 1;
8668 if (var22 == NULL) {
8669 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8670 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1812);
8671 show_backtrace(1);
8672 } else {
8673 var44 = model__MSignature__resolve_for(var22, var28, var34, var40, var43);
8674 }
8675 var_msignature = var44;
8676 var45 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
8677 {
8678 ((void (*)(val*))(var45->class->vft[COLOR_kernel__Object__init]))(var45) /* init on <var45:FlatBuffer>*/;
8679 }
8680 var_sig = var45;
8681 var46 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
8682 {
8683 ((void (*)(val*))(var46->class->vft[COLOR_kernel__Object__init]))(var46) /* init on <var46:FlatBuffer>*/;
8684 }
8685 var_comment = var46;
8686 {
8687 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
8688 var49 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
8689 var47 = var49;
8690 RET_LABEL48:(void)0;
8691 }
8692 }
8693 var_ret = var47;
8694 var50 = NULL;
8695 if (var_ret == NULL) {
8696 var51 = 0; /* is null */
8697 } else {
8698 var51 = 1; /* arg is null and recv is not */
8699 }
8700 if (0) {
8701 { /* Inline kernel#Object#!= (var_ret,var50) on <var_ret:nullable MType> */
8702 var_other = var50;
8703 {
8704 var55 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
8705 var54 = var55;
8706 }
8707 var56 = !var54;
8708 var52 = var56;
8709 goto RET_LABEL53;
8710 RET_LABEL53:(void)0;
8711 }
8712 var51 = var52;
8713 }
8714 if (var51){
8715 {
8716 var57 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
8717 }
8718 if (varonce58) {
8719 var59 = varonce58;
8720 } else {
8721 var60 = " ";
8722 var61 = 1;
8723 var62 = string__NativeString__to_s_with_length(var60, var61);
8724 var59 = var62;
8725 varonce58 = var59;
8726 }
8727 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
8728 { /* var63 = array_instance Array[Object] */
8729 var64 = 2;
8730 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
8731 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var57;
8732 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var59;
8733 {
8734 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
8735 }
8736 }
8737 {
8738 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
8739 }
8740 {
8741 string__FlatBuffer__append(var_sig, var66); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
8742 }
8743 } else {
8744 if (varonce67) {
8745 var68 = varonce67;
8746 } else {
8747 var69 = "void ";
8748 var70 = 5;
8749 var71 = string__NativeString__to_s_with_length(var69, var70);
8750 var68 = var71;
8751 varonce67 = var68;
8752 }
8753 {
8754 string__FlatBuffer__append(var_sig, var68); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
8755 }
8756 }
8757 {
8758 var72 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
8759 }
8760 {
8761 string__FlatBuffer__append(var_sig, var72); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
8762 }
8763 if (varonce73) {
8764 var74 = varonce73;
8765 } else {
8766 var75 = "(";
8767 var76 = 1;
8768 var77 = string__NativeString__to_s_with_length(var75, var76);
8769 var74 = var77;
8770 varonce73 = var74;
8771 }
8772 {
8773 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_selfvar) on <var_selfvar:RuntimeVariable> */
8774 var80 = var_selfvar->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_selfvar:RuntimeVariable> */
8775 if (unlikely(var80 == NULL)) {
8776 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8777 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
8778 show_backtrace(1);
8779 }
8780 var78 = var80;
8781 RET_LABEL79:(void)0;
8782 }
8783 }
8784 {
8785 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_compiler__MType__ctype]))(var78) /* ctype on <var78:MType>*/;
8786 }
8787 if (varonce82) {
8788 var83 = varonce82;
8789 } else {
8790 var84 = " ";
8791 var85 = 1;
8792 var86 = string__NativeString__to_s_with_length(var84, var85);
8793 var83 = var86;
8794 varonce82 = var83;
8795 }
8796 var87 = NEW_array__Array(&type_array__Arraykernel__Object);
8797 { /* var87 = array_instance Array[Object] */
8798 var88 = 4;
8799 var89 = NEW_array__NativeArray(var88, &type_array__NativeArraykernel__Object);
8800 ((struct instance_array__NativeArray*)var89)->values[0] = (val*) var74;
8801 ((struct instance_array__NativeArray*)var89)->values[1] = (val*) var81;
8802 ((struct instance_array__NativeArray*)var89)->values[2] = (val*) var83;
8803 ((struct instance_array__NativeArray*)var89)->values[3] = (val*) var_selfvar;
8804 {
8805 ((void (*)(val*, val*, long))(var87->class->vft[COLOR_array__Array__with_native]))(var87, var89, var88) /* with_native on <var87:Array[Object]>*/;
8806 }
8807 }
8808 {
8809 var90 = ((val* (*)(val*))(var87->class->vft[COLOR_string__Object__to_s]))(var87) /* to_s on <var87:Array[Object]>*/;
8810 }
8811 {
8812 string__FlatBuffer__append(var_sig, var90); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
8813 }
8814 if (varonce91) {
8815 var92 = varonce91;
8816 } else {
8817 var93 = "(";
8818 var94 = 1;
8819 var95 = string__NativeString__to_s_with_length(var93, var94);
8820 var92 = var95;
8821 varonce91 = var92;
8822 }
8823 if (varonce96) {
8824 var97 = varonce96;
8825 } else {
8826 var98 = ": ";
8827 var99 = 2;
8828 var100 = string__NativeString__to_s_with_length(var98, var99);
8829 var97 = var100;
8830 varonce96 = var97;
8831 }
8832 {
8833 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_selfvar) on <var_selfvar:RuntimeVariable> */
8834 var103 = var_selfvar->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_selfvar:RuntimeVariable> */
8835 if (unlikely(var103 == NULL)) {
8836 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8837 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
8838 show_backtrace(1);
8839 }
8840 var101 = var103;
8841 RET_LABEL102:(void)0;
8842 }
8843 }
8844 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
8845 { /* var104 = array_instance Array[Object] */
8846 var105 = 4;
8847 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
8848 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var92;
8849 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var_selfvar;
8850 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var97;
8851 ((struct instance_array__NativeArray*)var106)->values[3] = (val*) var101;
8852 {
8853 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
8854 }
8855 }
8856 {
8857 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
8858 }
8859 {
8860 string__FlatBuffer__append(var_comment, var107); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
8861 }
8862 {
8863 array__Array__add(var_arguments, var_selfvar); /* Direct call array#Array#add on <var_arguments:Array[RuntimeVariable]>*/
8864 }
8865 var108 = 0;
8866 var_i = var108;
8867 {
8868 var109 = model__MSignature__arity(var_msignature);
8869 }
8870 var_ = var109;
8871 for(;;) {
8872 {
8873 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
8874 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
8875 /* <var_:Int> isa OTHER */
8876 var112 = 1; /* easy <var_:Int> isa OTHER*/
8877 if (unlikely(!var112)) {
8878 var_class_name115 = type_kernel__Int.name;
8879 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name115);
8880 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
8881 show_backtrace(1);
8882 }
8883 var116 = var_i < var_;
8884 var110 = var116;
8885 goto RET_LABEL111;
8886 RET_LABEL111:(void)0;
8887 }
8888 }
8889 if (var110){
8890 {
8891 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
8892 var119 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
8893 if (unlikely(var119 == NULL)) {
8894 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
8895 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
8896 show_backtrace(1);
8897 }
8898 var117 = var119;
8899 RET_LABEL118:(void)0;
8900 }
8901 }
8902 {
8903 var120 = array__Array___91d_93d(var117, var_i);
8904 }
8905 {
8906 { /* Inline model#MParameter#mtype (var120) on <var120:nullable Object(MParameter)> */
8907 var123 = var120->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var120:nullable Object(MParameter)> */
8908 if (unlikely(var123 == NULL)) {
8909 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8910 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
8911 show_backtrace(1);
8912 }
8913 var121 = var123;
8914 RET_LABEL122:(void)0;
8915 }
8916 }
8917 var_mtype = var121;
8918 {
8919 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
8920 var126 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
8921 var124 = var126;
8922 RET_LABEL125:(void)0;
8923 }
8924 }
8925 {
8926 { /* Inline kernel#Int#== (var_i,var124) on <var_i:Int> */
8927 var130 = var_i == var124;
8928 var128 = var130;
8929 goto RET_LABEL129;
8930 RET_LABEL129:(void)0;
8931 }
8932 var127 = var128;
8933 }
8934 if (var127){
8935 if (varonce131) {
8936 var132 = varonce131;
8937 } else {
8938 var133 = "Array";
8939 var134 = 5;
8940 var135 = string__NativeString__to_s_with_length(var133, var134);
8941 var132 = var135;
8942 varonce131 = var132;
8943 }
8944 {
8945 var136 = abstract_compiler__AbstractCompilerVisitor__get_class(var_v, var132);
8946 }
8947 var137 = NEW_array__Array(&type_array__Arraymodel__MType);
8948 var138 = 1;
8949 {
8950 array__Array__with_capacity(var137, var138); /* Direct call array#Array#with_capacity on <var137:Array[MType]>*/
8951 }
8952 var_139 = var137;
8953 {
8954 array__AbstractArray__push(var_139, var_mtype); /* Direct call array#AbstractArray#push on <var_139:Array[MType]>*/
8955 }
8956 {
8957 var140 = model__MClass__get_mtype(var136, var_139);
8958 }
8959 var_mtype = var140;
8960 } else {
8961 }
8962 if (varonce141) {
8963 var142 = varonce141;
8964 } else {
8965 var143 = ", ";
8966 var144 = 2;
8967 var145 = string__NativeString__to_s_with_length(var143, var144);
8968 var142 = var145;
8969 varonce141 = var142;
8970 }
8971 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
8972 { /* var146 = array_instance Array[Object] */
8973 var147 = 2;
8974 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
8975 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var142;
8976 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var_mtype;
8977 {
8978 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
8979 }
8980 }
8981 {
8982 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
8983 }
8984 {
8985 string__FlatBuffer__append(var_comment, var149); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
8986 }
8987 if (varonce150) {
8988 var151 = varonce150;
8989 } else {
8990 var152 = ", ";
8991 var153 = 2;
8992 var154 = string__NativeString__to_s_with_length(var152, var153);
8993 var151 = var154;
8994 varonce150 = var151;
8995 }
8996 {
8997 var155 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
8998 }
8999 if (varonce156) {
9000 var157 = varonce156;
9001 } else {
9002 var158 = " p";
9003 var159 = 2;
9004 var160 = string__NativeString__to_s_with_length(var158, var159);
9005 var157 = var160;
9006 varonce156 = var157;
9007 }
9008 var161 = NEW_array__Array(&type_array__Arraykernel__Object);
9009 { /* var161 = array_instance Array[Object] */
9010 var162 = 4;
9011 var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object);
9012 ((struct instance_array__NativeArray*)var163)->values[0] = (val*) var151;
9013 ((struct instance_array__NativeArray*)var163)->values[1] = (val*) var155;
9014 ((struct instance_array__NativeArray*)var163)->values[2] = (val*) var157;
9015 var164 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
9016 ((struct instance_array__NativeArray*)var163)->values[3] = (val*) var164;
9017 {
9018 ((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on <var161:Array[Object]>*/;
9019 }
9020 }
9021 {
9022 var165 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on <var161:Array[Object]>*/;
9023 }
9024 {
9025 string__FlatBuffer__append(var_sig, var165); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
9026 }
9027 var166 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
9028 if (varonce167) {
9029 var168 = varonce167;
9030 } else {
9031 var169 = "p";
9032 var170 = 1;
9033 var171 = string__NativeString__to_s_with_length(var169, var170);
9034 var168 = var171;
9035 varonce167 = var168;
9036 }
9037 var172 = NEW_array__Array(&type_array__Arraykernel__Object);
9038 { /* var172 = array_instance Array[Object] */
9039 var173 = 2;
9040 var174 = NEW_array__NativeArray(var173, &type_array__NativeArraykernel__Object);
9041 ((struct instance_array__NativeArray*)var174)->values[0] = (val*) var168;
9042 var175 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
9043 ((struct instance_array__NativeArray*)var174)->values[1] = (val*) var175;
9044 {
9045 ((void (*)(val*, val*, long))(var172->class->vft[COLOR_array__Array__with_native]))(var172, var174, var173) /* with_native on <var172:Array[Object]>*/;
9046 }
9047 }
9048 {
9049 var176 = ((val* (*)(val*))(var172->class->vft[COLOR_string__Object__to_s]))(var172) /* to_s on <var172:Array[Object]>*/;
9050 }
9051 {
9052 abstract_compiler__RuntimeVariable__init(var166, var176, var_mtype, var_mtype); /* Direct call abstract_compiler#RuntimeVariable#init on <var166:RuntimeVariable>*/
9053 }
9054 var_argvar = var166;
9055 {
9056 array__Array__add(var_arguments, var_argvar); /* Direct call array#Array#add on <var_arguments:Array[RuntimeVariable]>*/
9057 }
9058 var177 = 1;
9059 {
9060 var178 = kernel__Int__successor(var_i, var177);
9061 }
9062 var_i = var178;
9063 } else {
9064 goto BREAK_label;
9065 }
9066 }
9067 BREAK_label: (void)0;
9068 if (varonce179) {
9069 var180 = varonce179;
9070 } else {
9071 var181 = ")";
9072 var182 = 1;
9073 var183 = string__NativeString__to_s_with_length(var181, var182);
9074 var180 = var183;
9075 varonce179 = var180;
9076 }
9077 {
9078 string__FlatBuffer__append(var_sig, var180); /* Direct call string#FlatBuffer#append on <var_sig:FlatBuffer>*/
9079 }
9080 if (varonce184) {
9081 var185 = varonce184;
9082 } else {
9083 var186 = ")";
9084 var187 = 1;
9085 var188 = string__NativeString__to_s_with_length(var186, var187);
9086 var185 = var188;
9087 varonce184 = var185;
9088 }
9089 {
9090 string__FlatBuffer__append(var_comment, var185); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
9091 }
9092 var189 = NULL;
9093 if (var_ret == NULL) {
9094 var190 = 0; /* is null */
9095 } else {
9096 var190 = 1; /* arg is null and recv is not */
9097 }
9098 if (0) {
9099 { /* Inline kernel#Object#!= (var_ret,var189) on <var_ret:nullable MType> */
9100 var_other = var189;
9101 {
9102 var194 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
9103 var193 = var194;
9104 }
9105 var195 = !var193;
9106 var191 = var195;
9107 goto RET_LABEL192;
9108 RET_LABEL192:(void)0;
9109 }
9110 var190 = var191;
9111 }
9112 if (var190){
9113 if (varonce196) {
9114 var197 = varonce196;
9115 } else {
9116 var198 = ": ";
9117 var199 = 2;
9118 var200 = string__NativeString__to_s_with_length(var198, var199);
9119 var197 = var200;
9120 varonce196 = var197;
9121 }
9122 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
9123 { /* var201 = array_instance Array[Object] */
9124 var202 = 2;
9125 var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object);
9126 ((struct instance_array__NativeArray*)var203)->values[0] = (val*) var197;
9127 ((struct instance_array__NativeArray*)var203)->values[1] = (val*) var_ret;
9128 {
9129 ((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on <var201:Array[Object]>*/;
9130 }
9131 }
9132 {
9133 var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on <var201:Array[Object]>*/;
9134 }
9135 {
9136 string__FlatBuffer__append(var_comment, var204); /* Direct call string#FlatBuffer#append on <var_comment:FlatBuffer>*/
9137 }
9138 } else {
9139 }
9140 {
9141 var205 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
9142 }
9143 if (varonce206) {
9144 var207 = varonce206;
9145 } else {
9146 var208 = ";";
9147 var209 = 1;
9148 var210 = string__NativeString__to_s_with_length(var208, var209);
9149 var207 = var210;
9150 varonce206 = var207;
9151 }
9152 var211 = NEW_array__Array(&type_array__Arraykernel__Object);
9153 { /* var211 = array_instance Array[Object] */
9154 var212 = 2;
9155 var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
9156 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var_sig;
9157 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var207;
9158 {
9159 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
9160 }
9161 }
9162 {
9163 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
9164 }
9165 {
9166 abstract_compiler__AbstractCompiler__provide_declaration(var_compiler, var205, var214); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <var_compiler:AbstractCompiler>*/
9167 }
9168 if (varonce215) {
9169 var216 = varonce215;
9170 } else {
9171 var217 = "/* method ";
9172 var218 = 10;
9173 var219 = string__NativeString__to_s_with_length(var217, var218);
9174 var216 = var219;
9175 varonce215 = var216;
9176 }
9177 if (varonce220) {
9178 var221 = varonce220;
9179 } else {
9180 var222 = " for ";
9181 var223 = 5;
9182 var224 = string__NativeString__to_s_with_length(var222, var223);
9183 var221 = var224;
9184 varonce220 = var221;
9185 }
9186 if (varonce225) {
9187 var226 = varonce225;
9188 } else {
9189 var227 = " */";
9190 var228 = 3;
9191 var229 = string__NativeString__to_s_with_length(var227, var228);
9192 var226 = var229;
9193 varonce225 = var226;
9194 }
9195 var230 = NEW_array__Array(&type_array__Arraykernel__Object);
9196 { /* var230 = array_instance Array[Object] */
9197 var231 = 5;
9198 var232 = NEW_array__NativeArray(var231, &type_array__NativeArraykernel__Object);
9199 ((struct instance_array__NativeArray*)var232)->values[0] = (val*) var216;
9200 ((struct instance_array__NativeArray*)var232)->values[1] = (val*) self;
9201 ((struct instance_array__NativeArray*)var232)->values[2] = (val*) var221;
9202 ((struct instance_array__NativeArray*)var232)->values[3] = (val*) var_comment;
9203 ((struct instance_array__NativeArray*)var232)->values[4] = (val*) var226;
9204 {
9205 ((void (*)(val*, val*, long))(var230->class->vft[COLOR_array__Array__with_native]))(var230, var232, var231) /* with_native on <var230:Array[Object]>*/;
9206 }
9207 }
9208 {
9209 var233 = ((val* (*)(val*))(var230->class->vft[COLOR_string__Object__to_s]))(var230) /* to_s on <var230:Array[Object]>*/;
9210 }
9211 {
9212 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var233); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
9213 }
9214 if (varonce234) {
9215 var235 = varonce234;
9216 } else {
9217 var236 = " {";
9218 var237 = 2;
9219 var238 = string__NativeString__to_s_with_length(var236, var237);
9220 var235 = var238;
9221 varonce234 = var235;
9222 }
9223 var239 = NEW_array__Array(&type_array__Arraykernel__Object);
9224 { /* var239 = array_instance Array[Object] */
9225 var240 = 2;
9226 var241 = NEW_array__NativeArray(var240, &type_array__NativeArraykernel__Object);
9227 ((struct instance_array__NativeArray*)var241)->values[0] = (val*) var_sig;
9228 ((struct instance_array__NativeArray*)var241)->values[1] = (val*) var235;
9229 {
9230 ((void (*)(val*, val*, long))(var239->class->vft[COLOR_array__Array__with_native]))(var239, var241, var240) /* with_native on <var239:Array[Object]>*/;
9231 }
9232 }
9233 {
9234 var242 = ((val* (*)(val*))(var239->class->vft[COLOR_string__Object__to_s]))(var239) /* to_s on <var239:Array[Object]>*/;
9235 }
9236 {
9237 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var242); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:AbstractCompilerVisitor>*/
9238 }
9239 var243 = NULL;
9240 if (var_ret == NULL) {
9241 var244 = 0; /* is null */
9242 } else {
9243 var244 = 1; /* arg is null and recv is not */
9244 }
9245 if (0) {
9246 { /* Inline kernel#Object#!= (var_ret,var243) on <var_ret:nullable MType> */
9247 var_other = var243;
9248 {
9249 var248 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
9250 var247 = var248;
9251 }
9252 var249 = !var247;
9253 var245 = var249;
9254 goto RET_LABEL246;
9255 RET_LABEL246:(void)0;
9256 }
9257 var244 = var245;
9258 }
9259 if (var244){
9260 {
9261 var250 = abstract_compiler__AbstractCompilerVisitor__new_var(var_v, var_ret);
9262 }
9263 {
9264 { /* Inline abstract_compiler#Frame#returnvar= (var_frame,var250) on <var_frame:Frame> */
9265 var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val = var250; /* _returnvar on <var_frame:Frame> */
9266 RET_LABEL251:(void)0;
9267 }
9268 }
9269 } else {
9270 }
9271 if (varonce252) {
9272 var253 = varonce252;
9273 } else {
9274 var254 = "RET_LABEL";
9275 var255 = 9;
9276 var256 = string__NativeString__to_s_with_length(var254, var255);
9277 var253 = var256;
9278 varonce252 = var253;
9279 }
9280 {
9281 var257 = abstract_compiler__AbstractCompilerVisitor__get_name(var_v, var253);
9282 }
9283 {
9284 { /* Inline abstract_compiler#Frame#returnlabel= (var_frame,var257) on <var_frame:Frame> */
9285 var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val = var257; /* _returnlabel on <var_frame:Frame> */
9286 RET_LABEL258:(void)0;
9287 }
9288 }
9289 {
9290 var259 = abstract_collection__SequenceRead__first(var_arguments);
9291 }
9292 {
9293 { /* Inline abstract_compiler#RuntimeVariable#mtype (var259) on <var259:nullable Object(RuntimeVariable)> */
9294 var262 = var259->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var259:nullable Object(RuntimeVariable)> */
9295 if (unlikely(var262 == NULL)) {
9296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
9297 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
9298 show_backtrace(1);
9299 }
9300 var260 = var262;
9301 RET_LABEL261:(void)0;
9302 }
9303 }
9304 {
9305 { /* Inline kernel#Object#!= (var_recv,var260) on <var_recv:MClassType> */
9306 var_other = var260;
9307 {
9308 var267 = ((short int (*)(val*, val*))(var_recv->class->vft[COLOR_kernel__Object___61d_61d]))(var_recv, var_other) /* == on <var_recv:MClassType>*/;
9309 var266 = var267;
9310 }
9311 var268 = !var266;
9312 var264 = var268;
9313 goto RET_LABEL265;
9314 RET_LABEL265:(void)0;
9315 }
9316 var263 = var264;
9317 }
9318 if (var263){
9319 } else {
9320 }
9321 {
9322 var269 = abstract_compiler__MMethodDef__compile_inside_to_c(var_mmethoddef, var_v, var_arguments);
9323 }
9324 {
9325 { /* Inline abstract_compiler#Frame#returnlabel (var_frame) on <var_frame:Frame> */
9326 var272 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on <var_frame:Frame> */
9327 var270 = var272;
9328 RET_LABEL271:(void)0;
9329 }
9330 }
9331 if (unlikely(var270 == NULL)) {
9332 PRINT_ERROR("Runtime error: %s", "Cast failed");
9333 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1855);
9334 show_backtrace(1);
9335 }
9336 if (varonce273) {
9337 var274 = varonce273;
9338 } else {
9339 var275 = ":;";
9340 var276 = 2;
9341 var277 = string__NativeString__to_s_with_length(var275, var276);
9342 var274 = var277;
9343 varonce273 = var274;
9344 }
9345 var278 = NEW_array__Array(&type_array__Arraykernel__Object);
9346 { /* var278 = array_instance Array[Object] */
9347 var279 = 2;
9348 var280 = NEW_array__NativeArray(var279, &type_array__NativeArraykernel__Object);
9349 ((struct instance_array__NativeArray*)var280)->values[0] = (val*) var270;
9350 ((struct instance_array__NativeArray*)var280)->values[1] = (val*) var274;
9351 {
9352 ((void (*)(val*, val*, long))(var278->class->vft[COLOR_array__Array__with_native]))(var278, var280, var279) /* with_native on <var278:Array[Object]>*/;
9353 }
9354 }
9355 {
9356 var281 = ((val* (*)(val*))(var278->class->vft[COLOR_string__Object__to_s]))(var278) /* to_s on <var278:Array[Object]>*/;
9357 }
9358 {
9359 abstract_compiler__AbstractCompilerVisitor__add(var_v, var281); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
9360 }
9361 var282 = NULL;
9362 if (var_ret == NULL) {
9363 var283 = 0; /* is null */
9364 } else {
9365 var283 = 1; /* arg is null and recv is not */
9366 }
9367 if (0) {
9368 { /* Inline kernel#Object#!= (var_ret,var282) on <var_ret:nullable MType> */
9369 var_other = var282;
9370 {
9371 var287 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
9372 var286 = var287;
9373 }
9374 var288 = !var286;
9375 var284 = var288;
9376 goto RET_LABEL285;
9377 RET_LABEL285:(void)0;
9378 }
9379 var283 = var284;
9380 }
9381 if (var283){
9382 if (varonce289) {
9383 var290 = varonce289;
9384 } else {
9385 var291 = "return ";
9386 var292 = 7;
9387 var293 = string__NativeString__to_s_with_length(var291, var292);
9388 var290 = var293;
9389 varonce289 = var290;
9390 }
9391 {
9392 { /* Inline abstract_compiler#Frame#returnvar (var_frame) on <var_frame:Frame> */
9393 var296 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val; /* _returnvar on <var_frame:Frame> */
9394 var294 = var296;
9395 RET_LABEL295:(void)0;
9396 }
9397 }
9398 if (unlikely(var294 == NULL)) {
9399 PRINT_ERROR("Runtime error: %s", "Cast failed");
9400 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1857);
9401 show_backtrace(1);
9402 }
9403 if (varonce297) {
9404 var298 = varonce297;
9405 } else {
9406 var299 = ";";
9407 var300 = 1;
9408 var301 = string__NativeString__to_s_with_length(var299, var300);
9409 var298 = var301;
9410 varonce297 = var298;
9411 }
9412 var302 = NEW_array__Array(&type_array__Arraykernel__Object);
9413 { /* var302 = array_instance Array[Object] */
9414 var303 = 3;
9415 var304 = NEW_array__NativeArray(var303, &type_array__NativeArraykernel__Object);
9416 ((struct instance_array__NativeArray*)var304)->values[0] = (val*) var290;
9417 ((struct instance_array__NativeArray*)var304)->values[1] = (val*) var294;
9418 ((struct instance_array__NativeArray*)var304)->values[2] = (val*) var298;
9419 {
9420 ((void (*)(val*, val*, long))(var302->class->vft[COLOR_array__Array__with_native]))(var302, var304, var303) /* with_native on <var302:Array[Object]>*/;
9421 }
9422 }
9423 {
9424 var305 = ((val* (*)(val*))(var302->class->vft[COLOR_string__Object__to_s]))(var302) /* to_s on <var302:Array[Object]>*/;
9425 }
9426 {
9427 abstract_compiler__AbstractCompilerVisitor__add(var_v, var305); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
9428 }
9429 } else {
9430 }
9431 if (varonce306) {
9432 var307 = varonce306;
9433 } else {
9434 var308 = "}";
9435 var309 = 1;
9436 var310 = string__NativeString__to_s_with_length(var308, var309);
9437 var307 = var310;
9438 varonce306 = var307;
9439 }
9440 {
9441 abstract_compiler__AbstractCompilerVisitor__add(var_v, var307); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
9442 }
9443 {
9444 var311 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
9445 }
9446 if (varonce312) {
9447 var313 = varonce312;
9448 } else {
9449 var314 = "VIRTUAL";
9450 var315 = 7;
9451 var316 = string__NativeString__to_s_with_length(var314, var315);
9452 var313 = var316;
9453 varonce312 = var313;
9454 }
9455 var317 = 0;
9456 {
9457 var318 = string__Text__has_substring(var311, var313, var317);
9458 }
9459 var319 = !var318;
9460 if (var319){
9461 {
9462 { /* Inline abstract_compiler#AbstractCompiler#names (var_compiler) on <var_compiler:AbstractCompiler> */
9463 var322 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <var_compiler:AbstractCompiler> */
9464 if (unlikely(var322 == NULL)) {
9465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
9466 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 460);
9467 show_backtrace(1);
9468 }
9469 var320 = var322;
9470 RET_LABEL321:(void)0;
9471 }
9472 }
9473 {
9474 var323 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
9475 }
9476 {
9477 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
9478 var326 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
9479 if (unlikely(var326 == NULL)) {
9480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
9481 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
9482 show_backtrace(1);
9483 }
9484 var324 = var326;
9485 RET_LABEL325:(void)0;
9486 }
9487 }
9488 {
9489 { /* Inline model#MClassDef#mmodule (var324) on <var324:MClassDef> */
9490 var329 = var324->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var324:MClassDef> */
9491 if (unlikely(var329 == NULL)) {
9492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
9493 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
9494 show_backtrace(1);
9495 }
9496 var327 = var329;
9497 RET_LABEL328:(void)0;
9498 }
9499 }
9500 {
9501 { /* Inline mmodule#MModule#name (var327) on <var327:MModule> */
9502 var332 = var327->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var327:MModule> */
9503 if (unlikely(var332 == NULL)) {
9504 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
9505 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
9506 show_backtrace(1);
9507 }
9508 var330 = var332;
9509 RET_LABEL331:(void)0;
9510 }
9511 }
9512 if (varonce333) {
9513 var334 = varonce333;
9514 } else {
9515 var335 = "::";
9516 var336 = 2;
9517 var337 = string__NativeString__to_s_with_length(var335, var336);
9518 var334 = var337;
9519 varonce333 = var334;
9520 }
9521 {
9522 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
9523 var340 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
9524 if (unlikely(var340 == NULL)) {
9525 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
9526 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
9527 show_backtrace(1);
9528 }
9529 var338 = var340;
9530 RET_LABEL339:(void)0;
9531 }
9532 }
9533 {
9534 { /* Inline model#MClassDef#mclass (var338) on <var338:MClassDef> */
9535 var343 = var338->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var338:MClassDef> */
9536 if (unlikely(var343 == NULL)) {
9537 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9538 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
9539 show_backtrace(1);
9540 }
9541 var341 = var343;
9542 RET_LABEL342:(void)0;
9543 }
9544 }
9545 {
9546 { /* Inline model#MClass#name (var341) on <var341:MClass> */
9547 var346 = var341->attrs[COLOR_model__MClass___name].val; /* _name on <var341:MClass> */
9548 if (unlikely(var346 == NULL)) {
9549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
9550 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
9551 show_backtrace(1);
9552 }
9553 var344 = var346;
9554 RET_LABEL345:(void)0;
9555 }
9556 }
9557 if (varonce347) {
9558 var348 = varonce347;
9559 } else {
9560 var349 = "::";
9561 var350 = 2;
9562 var351 = string__NativeString__to_s_with_length(var349, var350);
9563 var348 = var351;
9564 varonce347 = var348;
9565 }
9566 {
9567 { /* Inline model#MPropDef#mproperty (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
9568 var354 = var_mmethoddef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mmethoddef:MMethodDef> */
9569 if (unlikely(var354 == NULL)) {
9570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
9571 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
9572 show_backtrace(1);
9573 }
9574 var352 = var354;
9575 RET_LABEL353:(void)0;
9576 }
9577 }
9578 {
9579 { /* Inline model#MProperty#name (var352) on <var352:MProperty(MMethod)> */
9580 var357 = var352->attrs[COLOR_model__MProperty___name].val; /* _name on <var352:MProperty(MMethod)> */
9581 if (unlikely(var357 == NULL)) {
9582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
9583 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
9584 show_backtrace(1);
9585 }
9586 var355 = var357;
9587 RET_LABEL356:(void)0;
9588 }
9589 }
9590 if (varonce358) {
9591 var359 = varonce358;
9592 } else {
9593 var360 = " (";
9594 var361 = 2;
9595 var362 = string__NativeString__to_s_with_length(var360, var361);
9596 var359 = var362;
9597 varonce358 = var359;
9598 }
9599 {
9600 { /* Inline model#MPropDef#location (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
9601 var365 = var_mmethoddef->attrs[COLOR_model__MPropDef___location].val; /* _location on <var_mmethoddef:MMethodDef> */
9602 if (unlikely(var365 == NULL)) {
9603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
9604 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1892);
9605 show_backtrace(1);
9606 }
9607 var363 = var365;
9608 RET_LABEL364:(void)0;
9609 }
9610 }
9611 {
9612 { /* Inline location#Location#file (var363) on <var363:Location> */
9613 var368 = var363->attrs[COLOR_location__Location___file].val; /* _file on <var363:Location> */
9614 var366 = var368;
9615 RET_LABEL367:(void)0;
9616 }
9617 }
9618 if (var366 == NULL) {
9619 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9620 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1860);
9621 show_backtrace(1);
9622 } else {
9623 { /* Inline location#SourceFile#filename (var366) on <var366:nullable SourceFile> */
9624 if (unlikely(var366 == NULL)) {
9625 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9626 PRINT_ERROR(" (%s:%d)\n", "location.nit", 22);
9627 show_backtrace(1);
9628 }
9629 var371 = var366->attrs[COLOR_location__SourceFile___filename].val; /* _filename on <var366:nullable SourceFile> */
9630 if (unlikely(var371 == NULL)) {
9631 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
9632 PRINT_ERROR(" (%s:%d)\n", "location.nit", 22);
9633 show_backtrace(1);
9634 }
9635 var369 = var371;
9636 RET_LABEL370:(void)0;
9637 }
9638 }
9639 if (varonce372) {
9640 var373 = varonce372;
9641 } else {
9642 var374 = ":";
9643 var375 = 1;
9644 var376 = string__NativeString__to_s_with_length(var374, var375);
9645 var373 = var376;
9646 varonce372 = var373;
9647 }
9648 {
9649 { /* Inline model#MPropDef#location (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
9650 var379 = var_mmethoddef->attrs[COLOR_model__MPropDef___location].val; /* _location on <var_mmethoddef:MMethodDef> */
9651 if (unlikely(var379 == NULL)) {
9652 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
9653 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1892);
9654 show_backtrace(1);
9655 }
9656 var377 = var379;
9657 RET_LABEL378:(void)0;
9658 }
9659 }
9660 {
9661 { /* Inline location#Location#line_start (var377) on <var377:Location> */
9662 var382 = var377->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var377:Location> */
9663 var380 = var382;
9664 RET_LABEL381:(void)0;
9665 }
9666 }
9667 if (varonce383) {
9668 var384 = varonce383;
9669 } else {
9670 var385 = ")";
9671 var386 = 1;
9672 var387 = string__NativeString__to_s_with_length(var385, var386);
9673 var384 = var387;
9674 varonce383 = var384;
9675 }
9676 var388 = NEW_array__Array(&type_array__Arraykernel__Object);
9677 { /* var388 = array_instance Array[Object] */
9678 var389 = 10;
9679 var390 = NEW_array__NativeArray(var389, &type_array__NativeArraykernel__Object);
9680 ((struct instance_array__NativeArray*)var390)->values[0] = (val*) var330;
9681 ((struct instance_array__NativeArray*)var390)->values[1] = (val*) var334;
9682 ((struct instance_array__NativeArray*)var390)->values[2] = (val*) var344;
9683 ((struct instance_array__NativeArray*)var390)->values[3] = (val*) var348;
9684 ((struct instance_array__NativeArray*)var390)->values[4] = (val*) var355;
9685 ((struct instance_array__NativeArray*)var390)->values[5] = (val*) var359;
9686 ((struct instance_array__NativeArray*)var390)->values[6] = (val*) var369;
9687 ((struct instance_array__NativeArray*)var390)->values[7] = (val*) var373;
9688 var391 = BOX_kernel__Int(var380); /* autobox from Int to Object */
9689 ((struct instance_array__NativeArray*)var390)->values[8] = (val*) var391;
9690 ((struct instance_array__NativeArray*)var390)->values[9] = (val*) var384;
9691 {
9692 ((void (*)(val*, val*, long))(var388->class->vft[COLOR_array__Array__with_native]))(var388, var390, var389) /* with_native on <var388:Array[Object]>*/;
9693 }
9694 }
9695 {
9696 var392 = ((val* (*)(val*))(var388->class->vft[COLOR_string__Object__to_s]))(var388) /* to_s on <var388:Array[Object]>*/;
9697 }
9698 {
9699 hash_collection__HashMap___91d_93d_61d(var320, var323, var392); /* Direct call hash_collection#HashMap#[]= on <var320:HashMap[String, String]>*/
9700 }
9701 } else {
9702 }
9703 RET_LABEL:;
9704 }
9705 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
9706 void VIRTUAL_separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
9707 separate_compiler__SeparateRuntimeFunction__compile_to_c(self, p0); /* Direct call separate_compiler#SeparateRuntimeFunction#compile_to_c on <self:Object(SeparateRuntimeFunction)>*/
9708 RET_LABEL:;
9709 }
9710 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: VirtualRuntimeFunction): String */
9711 val* separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
9712 val* var /* : String */;
9713 static val* varonce;
9714 val* var1 /* : String */;
9715 char* var2 /* : NativeString */;
9716 long var3 /* : Int */;
9717 val* var4 /* : FlatString */;
9718 val* var5 /* : MMethodDef */;
9719 val* var7 /* : MMethodDef */;
9720 val* var8 /* : String */;
9721 val* var9 /* : Array[Object] */;
9722 long var10 /* : Int */;
9723 val* var11 /* : NativeArray[Object] */;
9724 val* var12 /* : String */;
9725 if (varonce) {
9726 var1 = varonce;
9727 } else {
9728 var2 = "VIRTUAL_";
9729 var3 = 8;
9730 var4 = string__NativeString__to_s_with_length(var2, var3);
9731 var1 = var4;
9732 varonce = var1;
9733 }
9734 {
9735 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:VirtualRuntimeFunction> */
9736 var7 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:VirtualRuntimeFunction> */
9737 if (unlikely(var7 == NULL)) {
9738 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
9739 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
9740 show_backtrace(1);
9741 }
9742 var5 = var7;
9743 RET_LABEL6:(void)0;
9744 }
9745 }
9746 {
9747 var8 = abstract_compiler__MPropDef__c_name(var5);
9748 }
9749 var9 = NEW_array__Array(&type_array__Arraykernel__Object);
9750 { /* var9 = array_instance Array[Object] */
9751 var10 = 2;
9752 var11 = NEW_array__NativeArray(var10, &type_array__NativeArraykernel__Object);
9753 ((struct instance_array__NativeArray*)var11)->values[0] = (val*) var1;
9754 ((struct instance_array__NativeArray*)var11)->values[1] = (val*) var8;
9755 {
9756 ((void (*)(val*, val*, long))(var9->class->vft[COLOR_array__Array__with_native]))(var9, var11, var10) /* with_native on <var9:Array[Object]>*/;
9757 }
9758 }
9759 {
9760 var12 = ((val* (*)(val*))(var9->class->vft[COLOR_string__Object__to_s]))(var9) /* to_s on <var9:Array[Object]>*/;
9761 }
9762 var = var12;
9763 goto RET_LABEL;
9764 RET_LABEL:;
9765 return var;
9766 }
9767 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: Object): String */
9768 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
9769 val* var /* : String */;
9770 val* var1 /* : String */;
9771 var1 = separate_compiler__VirtualRuntimeFunction__build_c_name(self);
9772 var = var1;
9773 RET_LABEL:;
9774 return var;
9775 }
9776 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: VirtualRuntimeFunction): String */
9777 val* separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
9778 val* var /* : String */;
9779 val* var1 /* : MMethodDef */;
9780 val* var3 /* : MMethodDef */;
9781 val* var4 /* : String */;
9782 val* var6 /* : String */;
9783 {
9784 { /* Inline abstract_compiler#AbstractRuntimeFunction#mmethoddef (self) on <self:VirtualRuntimeFunction> */
9785 var3 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___mmethoddef].val; /* _mmethoddef on <self:VirtualRuntimeFunction> */
9786 if (unlikely(var3 == NULL)) {
9787 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmethoddef");
9788 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1598);
9789 show_backtrace(1);
9790 }
9791 var1 = var3;
9792 RET_LABEL2:(void)0;
9793 }
9794 }
9795 {
9796 { /* Inline model#MPropDef#to_s (var1) on <var1:MMethodDef> */
9797 var6 = var1->attrs[COLOR_model__MPropDef___to_s].val; /* _to_s on <var1:MMethodDef> */
9798 if (unlikely(var6 == NULL)) {
9799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
9800 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1920);
9801 show_backtrace(1);
9802 }
9803 var4 = var6;
9804 RET_LABEL5:(void)0;
9805 }
9806 }
9807 var = var4;
9808 goto RET_LABEL;
9809 RET_LABEL:;
9810 return var;
9811 }
9812 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: Object): String */
9813 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
9814 val* var /* : String */;
9815 val* var1 /* : String */;
9816 var1 = separate_compiler__VirtualRuntimeFunction__to_s(self);
9817 var = var1;
9818 RET_LABEL:;
9819 return var;
9820 }