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