misc/vim: inform the user when no results are found
[nit.git] / c_src / nit__separate_erasure_compiler.sep.2.c
1 #include "nit__separate_erasure_compiler.sep.0.h"
2 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#type_test for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
3 val* nit___nit__SeparateErasureCompilerVisitor___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 /* : MClassType */;
29 val* var21 /* : RuntimeVariable */;
30 val* var_res /* var res: RuntimeVariable */;
31 static val* varonce22;
32 val* var23 /* : String */;
33 char* var24 /* : NativeString */;
34 long var25 /* : Int */;
35 val* var26 /* : FlatString */;
36 val* var27 /* : String */;
37 val* var_cltype /* var cltype: String */;
38 static val* varonce28;
39 val* var29 /* : String */;
40 char* var30 /* : NativeString */;
41 long var31 /* : Int */;
42 val* var32 /* : FlatString */;
43 static val* varonce33;
44 val* var34 /* : String */;
45 char* var35 /* : NativeString */;
46 long var36 /* : Int */;
47 val* var37 /* : FlatString */;
48 val* var38 /* : Array[Object] */;
49 long var39 /* : Int */;
50 val* var40 /* : NativeArray[Object] */;
51 val* var41 /* : String */;
52 static val* varonce42;
53 val* var43 /* : String */;
54 char* var44 /* : NativeString */;
55 long var45 /* : Int */;
56 val* var46 /* : FlatString */;
57 val* var47 /* : String */;
58 val* var_idtype /* var idtype: String */;
59 static val* varonce48;
60 val* var49 /* : String */;
61 char* var50 /* : NativeString */;
62 long var51 /* : Int */;
63 val* var52 /* : FlatString */;
64 static val* varonce53;
65 val* var54 /* : String */;
66 char* var55 /* : NativeString */;
67 long var56 /* : Int */;
68 val* var57 /* : FlatString */;
69 val* var58 /* : Array[Object] */;
70 long var59 /* : Int */;
71 val* var60 /* : NativeArray[Object] */;
72 val* var61 /* : String */;
73 short int var62 /* : Bool */;
74 short int var_maybe_null /* var maybe_null: Bool */;
75 static val* varonce63;
76 val* var64 /* : String */;
77 char* var65 /* : NativeString */;
78 long var66 /* : Int */;
79 val* var67 /* : FlatString */;
80 val* var_accept_null /* var accept_null: String */;
81 short int var68 /* : Bool */;
82 int cltype;
83 int idtype;
84 val* var69 /* : MType */;
85 val* var71 /* : MType */;
86 static val* varonce72;
87 val* var73 /* : String */;
88 char* var74 /* : NativeString */;
89 long var75 /* : Int */;
90 val* var76 /* : FlatString */;
91 short int var77 /* : Bool */;
92 int cltype78;
93 int idtype79;
94 val* var80 /* : nullable StaticFrame */;
95 val* var82 /* : nullable StaticFrame */;
96 val* var83 /* : MPropDef */;
97 val* var85 /* : MPropDef */;
98 val* var86 /* : MClassDef */;
99 val* var88 /* : MClassDef */;
100 val* var89 /* : MClassType */;
101 val* var91 /* : MClassType */;
102 val* var92 /* : nullable StaticFrame */;
103 val* var94 /* : nullable StaticFrame */;
104 val* var95 /* : MPropDef */;
105 val* var97 /* : MPropDef */;
106 val* var98 /* : MClassDef */;
107 val* var100 /* : MClassDef */;
108 val* var101 /* : MClassType */;
109 val* var103 /* : MClassType */;
110 val* var104 /* : nullable StaticFrame */;
111 val* var106 /* : nullable StaticFrame */;
112 val* var107 /* : MPropDef */;
113 val* var109 /* : MPropDef */;
114 val* var110 /* : MClassDef */;
115 val* var112 /* : MClassDef */;
116 val* var113 /* : MModule */;
117 val* var115 /* : MModule */;
118 short int var116 /* : Bool */;
119 val* var117 /* : MType */;
120 short int var118 /* : Bool */;
121 int cltype119;
122 int idtype120;
123 val* var121 /* : MType */;
124 val* var123 /* : MType */;
125 static val* varonce124;
126 val* var125 /* : String */;
127 char* var126 /* : NativeString */;
128 long var127 /* : Int */;
129 val* var128 /* : FlatString */;
130 val* var129 /* : MType */;
131 val* var131 /* : MType */;
132 val* var132 /* : nullable StaticFrame */;
133 val* var134 /* : nullable StaticFrame */;
134 val* var135 /* : MPropDef */;
135 val* var137 /* : MPropDef */;
136 val* var138 /* : MClassDef */;
137 val* var140 /* : MClassDef */;
138 val* var141 /* : MModule */;
139 val* var143 /* : MModule */;
140 val* var144 /* : nullable StaticFrame */;
141 val* var146 /* : nullable StaticFrame */;
142 val* var147 /* : MPropDef */;
143 val* var149 /* : MPropDef */;
144 val* var150 /* : MClassDef */;
145 val* var152 /* : MClassDef */;
146 val* var153 /* : MClassType */;
147 val* var155 /* : MClassType */;
148 short int var156 /* : Bool */;
149 static val* varonce157;
150 val* var158 /* : String */;
151 char* var159 /* : NativeString */;
152 long var160 /* : Int */;
153 val* var161 /* : FlatString */;
154 val* var162 /* : String */;
155 static val* varonce163;
156 val* var164 /* : String */;
157 char* var165 /* : NativeString */;
158 long var166 /* : Int */;
159 val* var167 /* : FlatString */;
160 static val* varonce168;
161 val* var169 /* : String */;
162 char* var170 /* : NativeString */;
163 long var171 /* : Int */;
164 val* var172 /* : FlatString */;
165 val* var173 /* : Array[Object] */;
166 long var174 /* : Int */;
167 val* var175 /* : NativeArray[Object] */;
168 val* var176 /* : String */;
169 val* var177 /* : AbstractCompiler */;
170 val* var179 /* : AbstractCompiler */;
171 val* var180 /* : ModelBuilder */;
172 val* var182 /* : ModelBuilder */;
173 val* var183 /* : ToolContext */;
174 val* var185 /* : ToolContext */;
175 val* var186 /* : OptionBool */;
176 val* var188 /* : OptionBool */;
177 val* var189 /* : nullable Object */;
178 val* var191 /* : nullable Object */;
179 short int var192 /* : Bool */;
180 val* var193 /* : AbstractCompiler */;
181 val* var195 /* : AbstractCompiler */;
182 val* var196 /* : HashMap[String, Int] */;
183 val* var198 /* : HashMap[String, Int] */;
184 val* var_ /* var : HashMap[String, Int] */;
185 val* var_199 /* var : String */;
186 val* var200 /* : nullable Object */;
187 long var201 /* : Int */;
188 long var202 /* : Int */;
189 short int var204 /* : Bool */;
190 int cltype205;
191 int idtype206;
192 const char* var_class_name;
193 long var207 /* : Int */;
194 long var208 /* : Int */;
195 val* var209 /* : nullable Object */;
196 static val* varonce210;
197 val* var211 /* : String */;
198 char* var212 /* : NativeString */;
199 long var213 /* : Int */;
200 val* var214 /* : FlatString */;
201 static val* varonce215;
202 val* var216 /* : String */;
203 char* var217 /* : NativeString */;
204 long var218 /* : Int */;
205 val* var219 /* : FlatString */;
206 val* var220 /* : Array[Object] */;
207 long var221 /* : Int */;
208 val* var222 /* : NativeArray[Object] */;
209 val* var223 /* : String */;
210 val* var224 /* : MType */;
211 val* var226 /* : MType */;
212 val* var227 /* : String */;
213 static val* varonce228;
214 val* var229 /* : String */;
215 char* var230 /* : NativeString */;
216 long var231 /* : Int */;
217 val* var232 /* : FlatString */;
218 short int var233 /* : Bool */;
219 static val* varonce234;
220 val* var235 /* : String */;
221 char* var236 /* : NativeString */;
222 long var237 /* : Int */;
223 val* var238 /* : FlatString */;
224 val* var239 /* : Array[Object] */;
225 long var240 /* : Int */;
226 val* var241 /* : NativeArray[Object] */;
227 val* var242 /* : String */;
228 val* var_class_ptr /* var class_ptr: nullable Object */;
229 val* var243 /* : MType */;
230 val* var245 /* : MType */;
231 short int var246 /* : Bool */;
232 int cltype247;
233 int idtype248;
234 const char* var_class_name249;
235 val* var250 /* : MClass */;
236 val* var252 /* : MClass */;
237 val* var_mclass /* var mclass: MClass */;
238 static val* varonce253;
239 val* var254 /* : String */;
240 char* var255 /* : NativeString */;
241 long var256 /* : Int */;
242 val* var257 /* : FlatString */;
243 val* var258 /* : String */;
244 val* var259 /* : Array[Object] */;
245 long var260 /* : Int */;
246 val* var261 /* : NativeArray[Object] */;
247 val* var262 /* : String */;
248 static val* varonce263;
249 val* var264 /* : String */;
250 char* var265 /* : NativeString */;
251 long var266 /* : Int */;
252 val* var267 /* : FlatString */;
253 val* var268 /* : String */;
254 static val* varonce269;
255 val* var270 /* : String */;
256 char* var271 /* : NativeString */;
257 long var272 /* : Int */;
258 val* var273 /* : FlatString */;
259 val* var274 /* : Array[Object] */;
260 long var275 /* : Int */;
261 val* var276 /* : NativeArray[Object] */;
262 val* var277 /* : String */;
263 short int var278 /* : Bool */;
264 int cltype279;
265 int idtype280;
266 static val* varonce281;
267 val* var282 /* : String */;
268 char* var283 /* : NativeString */;
269 long var284 /* : Int */;
270 val* var285 /* : FlatString */;
271 val* var286 /* : MClass */;
272 val* var288 /* : MClass */;
273 val* var289 /* : String */;
274 val* var290 /* : Array[Object] */;
275 long var291 /* : Int */;
276 val* var292 /* : NativeArray[Object] */;
277 val* var293 /* : String */;
278 static val* varonce294;
279 val* var295 /* : String */;
280 char* var296 /* : NativeString */;
281 long var297 /* : Int */;
282 val* var298 /* : FlatString */;
283 val* var299 /* : MClass */;
284 val* var301 /* : MClass */;
285 val* var302 /* : String */;
286 static val* varonce303;
287 val* var304 /* : String */;
288 char* var305 /* : NativeString */;
289 long var306 /* : Int */;
290 val* var307 /* : FlatString */;
291 val* var308 /* : Array[Object] */;
292 long var309 /* : Int */;
293 val* var310 /* : NativeArray[Object] */;
294 val* var311 /* : String */;
295 static val* varonce312;
296 val* var313 /* : String */;
297 char* var314 /* : NativeString */;
298 long var315 /* : Int */;
299 val* var316 /* : FlatString */;
300 val* var317 /* : MClass */;
301 val* var319 /* : MClass */;
302 val* var320 /* : String */;
303 static val* varonce321;
304 val* var322 /* : String */;
305 char* var323 /* : NativeString */;
306 long var324 /* : Int */;
307 val* var325 /* : FlatString */;
308 val* var326 /* : Array[Object] */;
309 long var327 /* : Int */;
310 val* var328 /* : NativeArray[Object] */;
311 val* var329 /* : String */;
312 val* var330 /* : AbstractCompiler */;
313 val* var332 /* : AbstractCompiler */;
314 val* var333 /* : ModelBuilder */;
315 val* var335 /* : ModelBuilder */;
316 val* var336 /* : ToolContext */;
317 val* var338 /* : ToolContext */;
318 val* var339 /* : OptionBool */;
319 val* var341 /* : OptionBool */;
320 val* var342 /* : nullable Object */;
321 val* var344 /* : nullable Object */;
322 short int var345 /* : Bool */;
323 val* var346 /* : AbstractCompiler */;
324 val* var348 /* : AbstractCompiler */;
325 val* var349 /* : HashMap[String, Int] */;
326 val* var351 /* : HashMap[String, Int] */;
327 val* var_352 /* var : HashMap[String, Int] */;
328 val* var_353 /* var : String */;
329 val* var354 /* : nullable Object */;
330 long var355 /* : Int */;
331 long var356 /* : Int */;
332 short int var358 /* : Bool */;
333 int cltype359;
334 int idtype360;
335 const char* var_class_name361;
336 long var362 /* : Int */;
337 long var363 /* : Int */;
338 val* var364 /* : nullable Object */;
339 static val* varonce365;
340 val* var366 /* : String */;
341 char* var367 /* : NativeString */;
342 long var368 /* : Int */;
343 val* var369 /* : FlatString */;
344 static val* varonce370;
345 val* var371 /* : String */;
346 char* var372 /* : NativeString */;
347 long var373 /* : Int */;
348 val* var374 /* : FlatString */;
349 val* var375 /* : Array[Object] */;
350 long var376 /* : Int */;
351 val* var377 /* : NativeArray[Object] */;
352 val* var378 /* : String */;
353 short int var379 /* : Bool */;
354 int cltype380;
355 int idtype381;
356 val* var382 /* : nullable StaticFrame */;
357 val* var384 /* : nullable StaticFrame */;
358 val* var385 /* : Array[RuntimeVariable] */;
359 val* var387 /* : Array[RuntimeVariable] */;
360 val* var388 /* : nullable Object */;
361 val* var_recv /* var recv: RuntimeVariable */;
362 val* var389 /* : MType */;
363 val* var391 /* : MType */;
364 val* var392 /* : String */;
365 static val* varonce393;
366 val* var394 /* : String */;
367 char* var395 /* : NativeString */;
368 long var396 /* : Int */;
369 val* var397 /* : FlatString */;
370 short int var398 /* : Bool */;
371 static val* varonce399;
372 val* var400 /* : String */;
373 char* var401 /* : NativeString */;
374 long var402 /* : Int */;
375 val* var403 /* : FlatString */;
376 val* var404 /* : Array[Object] */;
377 long var405 /* : Int */;
378 val* var406 /* : NativeArray[Object] */;
379 val* var407 /* : String */;
380 val* var_recv_ptr /* var recv_ptr: nullable Object */;
381 val* var408 /* : MType */;
382 val* var410 /* : MType */;
383 short int var411 /* : Bool */;
384 int cltype412;
385 int idtype413;
386 const char* var_class_name414;
387 val* var415 /* : MClass */;
388 val* var417 /* : MClass */;
389 val* var_mclass418 /* var mclass: MClass */;
390 static val* varonce419;
391 val* var420 /* : String */;
392 char* var421 /* : NativeString */;
393 long var422 /* : Int */;
394 val* var423 /* : FlatString */;
395 val* var424 /* : String */;
396 val* var425 /* : Array[Object] */;
397 long var426 /* : Int */;
398 val* var427 /* : NativeArray[Object] */;
399 val* var428 /* : String */;
400 static val* varonce429;
401 val* var430 /* : String */;
402 char* var431 /* : NativeString */;
403 long var432 /* : Int */;
404 val* var433 /* : FlatString */;
405 val* var434 /* : String */;
406 static val* varonce435;
407 val* var436 /* : String */;
408 char* var437 /* : NativeString */;
409 long var438 /* : Int */;
410 val* var439 /* : FlatString */;
411 val* var440 /* : Array[Object] */;
412 long var441 /* : Int */;
413 val* var442 /* : NativeArray[Object] */;
414 val* var443 /* : String */;
415 static val* varonce444;
416 val* var445 /* : String */;
417 char* var446 /* : NativeString */;
418 long var447 /* : Int */;
419 val* var448 /* : FlatString */;
420 val* var449 /* : String */;
421 val* var_entry /* var entry: String */;
422 static val* varonce450;
423 val* var451 /* : String */;
424 char* var452 /* : NativeString */;
425 long var453 /* : Int */;
426 val* var454 /* : FlatString */;
427 static val* varonce455;
428 val* var456 /* : String */;
429 char* var457 /* : NativeString */;
430 long var458 /* : Int */;
431 val* var459 /* : FlatString */;
432 val* var460 /* : Array[Object] */;
433 long var461 /* : Int */;
434 val* var462 /* : NativeArray[Object] */;
435 val* var463 /* : String */;
436 val* var464 /* : MVirtualTypeProp */;
437 val* var466 /* : MVirtualTypeProp */;
438 val* var467 /* : String */;
439 static val* varonce468;
440 val* var469 /* : String */;
441 char* var470 /* : NativeString */;
442 long var471 /* : Int */;
443 val* var472 /* : FlatString */;
444 static val* varonce473;
445 val* var474 /* : String */;
446 char* var475 /* : NativeString */;
447 long var476 /* : Int */;
448 val* var477 /* : FlatString */;
449 val* var478 /* : MVirtualTypeProp */;
450 val* var480 /* : MVirtualTypeProp */;
451 val* var481 /* : String */;
452 static val* varonce482;
453 val* var483 /* : String */;
454 char* var484 /* : NativeString */;
455 long var485 /* : Int */;
456 val* var486 /* : FlatString */;
457 val* var487 /* : Array[Object] */;
458 long var488 /* : Int */;
459 val* var489 /* : NativeArray[Object] */;
460 val* var490 /* : String */;
461 static val* varonce491;
462 val* var492 /* : String */;
463 char* var493 /* : NativeString */;
464 long var494 /* : Int */;
465 val* var495 /* : FlatString */;
466 static val* varonce496;
467 val* var497 /* : String */;
468 char* var498 /* : NativeString */;
469 long var499 /* : Int */;
470 val* var500 /* : FlatString */;
471 val* var501 /* : Array[Object] */;
472 long var502 /* : Int */;
473 val* var503 /* : NativeArray[Object] */;
474 val* var504 /* : String */;
475 static val* varonce505;
476 val* var506 /* : String */;
477 char* var507 /* : NativeString */;
478 long var508 /* : Int */;
479 val* var509 /* : FlatString */;
480 static val* varonce510;
481 val* var511 /* : String */;
482 char* var512 /* : NativeString */;
483 long var513 /* : Int */;
484 val* var514 /* : FlatString */;
485 val* var515 /* : Array[Object] */;
486 long var516 /* : Int */;
487 val* var517 /* : NativeArray[Object] */;
488 val* var518 /* : String */;
489 short int var519 /* : Bool */;
490 short int var_520 /* var : Bool */;
491 static val* varonce521;
492 val* var522 /* : String */;
493 char* var523 /* : NativeString */;
494 long var524 /* : Int */;
495 val* var525 /* : FlatString */;
496 short int var526 /* : Bool */;
497 static val* varonce527;
498 val* var528 /* : String */;
499 char* var529 /* : NativeString */;
500 long var530 /* : Int */;
501 val* var531 /* : FlatString */;
502 val* var532 /* : String */;
503 val* var_is_nullable /* var is_nullable: String */;
504 static val* varonce533;
505 val* var534 /* : String */;
506 char* var535 /* : NativeString */;
507 long var536 /* : Int */;
508 val* var537 /* : FlatString */;
509 static val* varonce538;
510 val* var539 /* : String */;
511 char* var540 /* : NativeString */;
512 long var541 /* : Int */;
513 val* var542 /* : FlatString */;
514 val* var543 /* : Array[Object] */;
515 long var544 /* : Int */;
516 val* var545 /* : NativeArray[Object] */;
517 val* var546 /* : String */;
518 static val* varonce547;
519 val* var548 /* : String */;
520 char* var549 /* : NativeString */;
521 long var550 /* : Int */;
522 val* var551 /* : FlatString */;
523 static val* varonce552;
524 val* var553 /* : String */;
525 char* var554 /* : NativeString */;
526 long var555 /* : Int */;
527 val* var556 /* : FlatString */;
528 val* var557 /* : Array[Object] */;
529 long var558 /* : Int */;
530 val* var559 /* : NativeArray[Object] */;
531 val* var560 /* : String */;
532 val* var561 /* : String */;
533 val* var562 /* : AbstractCompiler */;
534 val* var564 /* : AbstractCompiler */;
535 val* var565 /* : ModelBuilder */;
536 val* var567 /* : ModelBuilder */;
537 val* var568 /* : ToolContext */;
538 val* var570 /* : ToolContext */;
539 val* var571 /* : OptionBool */;
540 val* var573 /* : OptionBool */;
541 val* var574 /* : nullable Object */;
542 val* var576 /* : nullable Object */;
543 short int var577 /* : Bool */;
544 val* var578 /* : AbstractCompiler */;
545 val* var580 /* : AbstractCompiler */;
546 val* var581 /* : HashMap[String, Int] */;
547 val* var583 /* : HashMap[String, Int] */;
548 val* var_584 /* var : HashMap[String, Int] */;
549 val* var_585 /* var : String */;
550 val* var586 /* : nullable Object */;
551 long var587 /* : Int */;
552 long var588 /* : Int */;
553 short int var590 /* : Bool */;
554 int cltype591;
555 int idtype592;
556 const char* var_class_name593;
557 long var594 /* : Int */;
558 long var595 /* : Int */;
559 val* var596 /* : nullable Object */;
560 static val* varonce597;
561 val* var598 /* : String */;
562 char* var599 /* : NativeString */;
563 long var600 /* : Int */;
564 val* var601 /* : FlatString */;
565 static val* varonce602;
566 val* var603 /* : String */;
567 char* var604 /* : NativeString */;
568 long var605 /* : Int */;
569 val* var606 /* : FlatString */;
570 val* var607 /* : Array[Object] */;
571 long var608 /* : Int */;
572 val* var609 /* : NativeArray[Object] */;
573 val* var610 /* : String */;
574 static val* varonce611;
575 val* var612 /* : String */;
576 char* var613 /* : NativeString */;
577 long var614 /* : Int */;
578 val* var615 /* : FlatString */;
579 val* var616 /* : String */;
580 static val* varonce617;
581 val* var618 /* : String */;
582 char* var619 /* : NativeString */;
583 long var620 /* : Int */;
584 val* var621 /* : FlatString */;
585 static val* varonce622;
586 val* var623 /* : String */;
587 char* var624 /* : NativeString */;
588 long var625 /* : Int */;
589 val* var626 /* : FlatString */;
590 val* var627 /* : Array[Object] */;
591 long var628 /* : Int */;
592 val* var629 /* : NativeArray[Object] */;
593 val* var630 /* : String */;
594 static val* varonce631;
595 val* var632 /* : String */;
596 char* var633 /* : NativeString */;
597 long var634 /* : Int */;
598 val* var635 /* : FlatString */;
599 static val* varonce636;
600 val* var637 /* : String */;
601 char* var638 /* : NativeString */;
602 long var639 /* : Int */;
603 val* var640 /* : FlatString */;
604 val* var641 /* : Array[Object] */;
605 long var642 /* : Int */;
606 val* var643 /* : NativeArray[Object] */;
607 val* var644 /* : String */;
608 static val* varonce645;
609 val* var646 /* : String */;
610 char* var647 /* : NativeString */;
611 long var648 /* : Int */;
612 val* var649 /* : FlatString */;
613 static val* varonce650;
614 val* var651 /* : String */;
615 char* var652 /* : NativeString */;
616 long var653 /* : Int */;
617 val* var654 /* : FlatString */;
618 val* var655 /* : Array[Object] */;
619 long var656 /* : Int */;
620 val* var657 /* : NativeArray[Object] */;
621 val* var658 /* : String */;
622 static val* varonce659;
623 val* var660 /* : String */;
624 char* var661 /* : NativeString */;
625 long var662 /* : Int */;
626 val* var663 /* : FlatString */;
627 static val* varonce664;
628 val* var665 /* : String */;
629 char* var666 /* : NativeString */;
630 long var667 /* : Int */;
631 val* var668 /* : FlatString */;
632 static val* varonce669;
633 val* var670 /* : String */;
634 char* var671 /* : NativeString */;
635 long var672 /* : Int */;
636 val* var673 /* : FlatString */;
637 static val* varonce674;
638 val* var675 /* : String */;
639 char* var676 /* : NativeString */;
640 long var677 /* : Int */;
641 val* var678 /* : FlatString */;
642 val* var679 /* : Array[Object] */;
643 long var680 /* : Int */;
644 val* var681 /* : NativeArray[Object] */;
645 val* var682 /* : String */;
646 static val* varonce683;
647 val* var684 /* : String */;
648 char* var685 /* : NativeString */;
649 long var686 /* : Int */;
650 val* var687 /* : FlatString */;
651 val* var688 /* : Array[Object] */;
652 long var689 /* : Int */;
653 val* var690 /* : NativeArray[Object] */;
654 val* var691 /* : String */;
655 static val* varonce692;
656 val* var693 /* : String */;
657 char* var694 /* : NativeString */;
658 long var695 /* : Int */;
659 val* var696 /* : FlatString */;
660 static val* varonce697;
661 val* var698 /* : String */;
662 char* var699 /* : NativeString */;
663 long var700 /* : Int */;
664 val* var701 /* : FlatString */;
665 static val* varonce702;
666 val* var703 /* : String */;
667 char* var704 /* : NativeString */;
668 long var705 /* : Int */;
669 val* var706 /* : FlatString */;
670 static val* varonce707;
671 val* var708 /* : String */;
672 char* var709 /* : NativeString */;
673 long var710 /* : Int */;
674 val* var711 /* : FlatString */;
675 static val* varonce712;
676 val* var713 /* : String */;
677 char* var714 /* : NativeString */;
678 long var715 /* : Int */;
679 val* var716 /* : FlatString */;
680 val* var717 /* : Array[Object] */;
681 long var718 /* : Int */;
682 val* var719 /* : NativeArray[Object] */;
683 val* var720 /* : String */;
684 static val* varonce721;
685 val* var722 /* : String */;
686 char* var723 /* : NativeString */;
687 long var724 /* : Int */;
688 val* var725 /* : FlatString */;
689 static val* varonce726;
690 val* var727 /* : String */;
691 char* var728 /* : NativeString */;
692 long var729 /* : Int */;
693 val* var730 /* : FlatString */;
694 var_value = p0;
695 var_mtype = p1;
696 var_tag = p2;
697 if (varonce) {
698 var1 = varonce;
699 } else {
700 var2 = "/* type test for ";
701 var3 = 17;
702 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
703 var1 = var4;
704 varonce = var1;
705 }
706 {
707 var5 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_value);
708 }
709 if (varonce6) {
710 var7 = varonce6;
711 } else {
712 var8 = " isa ";
713 var9 = 5;
714 var10 = standard___standard__NativeString___to_s_with_length(var8, var9);
715 var7 = var10;
716 varonce6 = var7;
717 }
718 if (varonce11) {
719 var12 = varonce11;
720 } else {
721 var13 = " */";
722 var14 = 3;
723 var15 = standard___standard__NativeString___to_s_with_length(var13, var14);
724 var12 = var15;
725 varonce11 = var12;
726 }
727 var16 = NEW_standard__Array(&type_standard__Array__standard__Object);
728 { /* var16 = array_instance Array[Object] */
729 var17 = 5;
730 var18 = NEW_standard__NativeArray(var17, &type_standard__NativeArray__standard__Object);
731 ((struct instance_standard__NativeArray*)var18)->values[0] = (val*) var1;
732 ((struct instance_standard__NativeArray*)var18)->values[1] = (val*) var5;
733 ((struct instance_standard__NativeArray*)var18)->values[2] = (val*) var7;
734 ((struct instance_standard__NativeArray*)var18)->values[3] = (val*) var_mtype;
735 ((struct instance_standard__NativeArray*)var18)->values[4] = (val*) var12;
736 {
737 ((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]>*/;
738 }
739 }
740 {
741 var19 = ((val* (*)(val* self))(var16->class->vft[COLOR_standard__string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
742 }
743 {
744 nit___nit__AbstractCompilerVisitor___add(self, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
745 }
746 {
747 var20 = nit___nit__AbstractCompilerVisitor___bool_type(self);
748 }
749 {
750 var21 = nit___nit__AbstractCompilerVisitor___new_var(self, var20);
751 }
752 var_res = var21;
753 if (varonce22) {
754 var23 = varonce22;
755 } else {
756 var24 = "cltype";
757 var25 = 6;
758 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
759 var23 = var26;
760 varonce22 = var23;
761 }
762 {
763 var27 = nit___nit__AbstractCompilerVisitor___get_name(self, var23);
764 }
765 var_cltype = var27;
766 if (varonce28) {
767 var29 = varonce28;
768 } else {
769 var30 = "int ";
770 var31 = 4;
771 var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
772 var29 = var32;
773 varonce28 = var29;
774 }
775 if (varonce33) {
776 var34 = varonce33;
777 } else {
778 var35 = ";";
779 var36 = 1;
780 var37 = standard___standard__NativeString___to_s_with_length(var35, var36);
781 var34 = var37;
782 varonce33 = var34;
783 }
784 var38 = NEW_standard__Array(&type_standard__Array__standard__Object);
785 { /* var38 = array_instance Array[Object] */
786 var39 = 3;
787 var40 = NEW_standard__NativeArray(var39, &type_standard__NativeArray__standard__Object);
788 ((struct instance_standard__NativeArray*)var40)->values[0] = (val*) var29;
789 ((struct instance_standard__NativeArray*)var40)->values[1] = (val*) var_cltype;
790 ((struct instance_standard__NativeArray*)var40)->values[2] = (val*) var34;
791 {
792 ((void (*)(val* self, val* p0, long p1))(var38->class->vft[COLOR_standard__array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
793 }
794 }
795 {
796 var41 = ((val* (*)(val* self))(var38->class->vft[COLOR_standard__string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
797 }
798 {
799 nit___nit__AbstractCompilerVisitor___add_decl(self, var41); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateErasureCompilerVisitor>*/
800 }
801 if (varonce42) {
802 var43 = varonce42;
803 } else {
804 var44 = "idtype";
805 var45 = 6;
806 var46 = standard___standard__NativeString___to_s_with_length(var44, var45);
807 var43 = var46;
808 varonce42 = var43;
809 }
810 {
811 var47 = nit___nit__AbstractCompilerVisitor___get_name(self, var43);
812 }
813 var_idtype = var47;
814 if (varonce48) {
815 var49 = varonce48;
816 } else {
817 var50 = "int ";
818 var51 = 4;
819 var52 = standard___standard__NativeString___to_s_with_length(var50, var51);
820 var49 = var52;
821 varonce48 = var49;
822 }
823 if (varonce53) {
824 var54 = varonce53;
825 } else {
826 var55 = ";";
827 var56 = 1;
828 var57 = standard___standard__NativeString___to_s_with_length(var55, var56);
829 var54 = var57;
830 varonce53 = var54;
831 }
832 var58 = NEW_standard__Array(&type_standard__Array__standard__Object);
833 { /* var58 = array_instance Array[Object] */
834 var59 = 3;
835 var60 = NEW_standard__NativeArray(var59, &type_standard__NativeArray__standard__Object);
836 ((struct instance_standard__NativeArray*)var60)->values[0] = (val*) var49;
837 ((struct instance_standard__NativeArray*)var60)->values[1] = (val*) var_idtype;
838 ((struct instance_standard__NativeArray*)var60)->values[2] = (val*) var54;
839 {
840 ((void (*)(val* self, val* p0, long p1))(var58->class->vft[COLOR_standard__array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
841 }
842 }
843 {
844 var61 = ((val* (*)(val* self))(var58->class->vft[COLOR_standard__string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
845 }
846 {
847 nit___nit__AbstractCompilerVisitor___add_decl(self, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateErasureCompilerVisitor>*/
848 }
849 {
850 var62 = nit___nit__SeparateCompilerVisitor___maybe_null(self, var_value);
851 }
852 var_maybe_null = var62;
853 if (varonce63) {
854 var64 = varonce63;
855 } else {
856 var65 = "0";
857 var66 = 1;
858 var67 = standard___standard__NativeString___to_s_with_length(var65, var66);
859 var64 = var67;
860 varonce63 = var64;
861 }
862 var_accept_null = var64;
863 /* <var_mtype:MType> isa MNullableType */
864 cltype = type_nit__MNullableType.color;
865 idtype = type_nit__MNullableType.id;
866 if(cltype >= var_mtype->type->table_size) {
867 var68 = 0;
868 } else {
869 var68 = var_mtype->type->type_table[cltype] == idtype;
870 }
871 if (var68){
872 {
873 { /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:MType(MNullableType)> */
874 var71 = var_mtype->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_mtype:MType(MNullableType)> */
875 if (unlikely(var71 == NULL)) {
876 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
877 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
878 show_backtrace(1);
879 }
880 var69 = var71;
881 RET_LABEL70:(void)0;
882 }
883 }
884 var_mtype = var69;
885 if (varonce72) {
886 var73 = varonce72;
887 } else {
888 var74 = "1";
889 var75 = 1;
890 var76 = standard___standard__NativeString___to_s_with_length(var74, var75);
891 var73 = var76;
892 varonce72 = var73;
893 }
894 var_accept_null = var73;
895 } else {
896 }
897 /* <var_mtype:MType> isa MParameterType */
898 cltype78 = type_nit__MParameterType.color;
899 idtype79 = type_nit__MParameterType.id;
900 if(cltype78 >= var_mtype->type->table_size) {
901 var77 = 0;
902 } else {
903 var77 = var_mtype->type->type_table[cltype78] == idtype79;
904 }
905 if (var77){
906 {
907 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateErasureCompilerVisitor> */
908 var82 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
909 var80 = var82;
910 RET_LABEL81:(void)0;
911 }
912 }
913 if (var80 == NULL) {
914 PRINT_ERROR("Runtime error: %s", "Receiver is null");
915 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 510);
916 show_backtrace(1);
917 } else {
918 { /* Inline abstract_compiler#StaticFrame#mpropdef (var80) on <var80:nullable StaticFrame> */
919 if (unlikely(var80 == NULL)) {
920 PRINT_ERROR("Runtime error: %s", "Receiver is null");
921 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
922 show_backtrace(1);
923 }
924 var85 = var80->attrs[COLOR_nit__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var80:nullable StaticFrame> */
925 if (unlikely(var85 == NULL)) {
926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
927 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
928 show_backtrace(1);
929 }
930 var83 = var85;
931 RET_LABEL84:(void)0;
932 }
933 }
934 {
935 { /* Inline model#MPropDef#mclassdef (var83) on <var83:MPropDef> */
936 var88 = var83->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var83:MPropDef> */
937 if (unlikely(var88 == NULL)) {
938 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
939 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
940 show_backtrace(1);
941 }
942 var86 = var88;
943 RET_LABEL87:(void)0;
944 }
945 }
946 {
947 { /* Inline model#MClassDef#bound_mtype (var86) on <var86:MClassDef> */
948 var91 = var86->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var86:MClassDef> */
949 if (unlikely(var91 == NULL)) {
950 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
951 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
952 show_backtrace(1);
953 }
954 var89 = var91;
955 RET_LABEL90:(void)0;
956 }
957 }
958 {
959 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateErasureCompilerVisitor> */
960 var94 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
961 var92 = var94;
962 RET_LABEL93:(void)0;
963 }
964 }
965 if (var92 == NULL) {
966 PRINT_ERROR("Runtime error: %s", "Receiver is null");
967 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 510);
968 show_backtrace(1);
969 } else {
970 { /* Inline abstract_compiler#StaticFrame#mpropdef (var92) on <var92:nullable StaticFrame> */
971 if (unlikely(var92 == NULL)) {
972 PRINT_ERROR("Runtime error: %s", "Receiver is null");
973 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
974 show_backtrace(1);
975 }
976 var97 = var92->attrs[COLOR_nit__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var92:nullable StaticFrame> */
977 if (unlikely(var97 == NULL)) {
978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
979 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
980 show_backtrace(1);
981 }
982 var95 = var97;
983 RET_LABEL96:(void)0;
984 }
985 }
986 {
987 { /* Inline model#MPropDef#mclassdef (var95) on <var95:MPropDef> */
988 var100 = var95->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var95:MPropDef> */
989 if (unlikely(var100 == NULL)) {
990 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
991 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
992 show_backtrace(1);
993 }
994 var98 = var100;
995 RET_LABEL99:(void)0;
996 }
997 }
998 {
999 { /* Inline model#MClassDef#bound_mtype (var98) on <var98:MClassDef> */
1000 var103 = var98->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var98:MClassDef> */
1001 if (unlikely(var103 == NULL)) {
1002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1003 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
1004 show_backtrace(1);
1005 }
1006 var101 = var103;
1007 RET_LABEL102:(void)0;
1008 }
1009 }
1010 {
1011 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateErasureCompilerVisitor> */
1012 var106 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
1013 var104 = var106;
1014 RET_LABEL105:(void)0;
1015 }
1016 }
1017 if (var104 == NULL) {
1018 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1019 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 510);
1020 show_backtrace(1);
1021 } else {
1022 { /* Inline abstract_compiler#StaticFrame#mpropdef (var104) on <var104:nullable StaticFrame> */
1023 if (unlikely(var104 == NULL)) {
1024 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1025 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
1026 show_backtrace(1);
1027 }
1028 var109 = var104->attrs[COLOR_nit__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var104:nullable StaticFrame> */
1029 if (unlikely(var109 == NULL)) {
1030 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
1031 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
1032 show_backtrace(1);
1033 }
1034 var107 = var109;
1035 RET_LABEL108:(void)0;
1036 }
1037 }
1038 {
1039 { /* Inline model#MPropDef#mclassdef (var107) on <var107:MPropDef> */
1040 var112 = var107->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var107:MPropDef> */
1041 if (unlikely(var112 == NULL)) {
1042 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1043 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
1044 show_backtrace(1);
1045 }
1046 var110 = var112;
1047 RET_LABEL111:(void)0;
1048 }
1049 }
1050 {
1051 { /* Inline model#MClassDef#mmodule (var110) on <var110:MClassDef> */
1052 var115 = var110->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var110:MClassDef> */
1053 if (unlikely(var115 == NULL)) {
1054 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1055 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
1056 show_backtrace(1);
1057 }
1058 var113 = var115;
1059 RET_LABEL114:(void)0;
1060 }
1061 }
1062 var116 = 0;
1063 {
1064 var117 = nit___nit__MParameterType___MType__resolve_for(var_mtype, var89, var101, var113, var116);
1065 }
1066 var_mtype = var117;
1067 /* <var_mtype:MType> isa MNullableType */
1068 cltype119 = type_nit__MNullableType.color;
1069 idtype120 = type_nit__MNullableType.id;
1070 if(cltype119 >= var_mtype->type->table_size) {
1071 var118 = 0;
1072 } else {
1073 var118 = var_mtype->type->type_table[cltype119] == idtype120;
1074 }
1075 if (var118){
1076 {
1077 { /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:MType(MNullableType)> */
1078 var123 = var_mtype->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_mtype:MType(MNullableType)> */
1079 if (unlikely(var123 == NULL)) {
1080 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1081 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
1082 show_backtrace(1);
1083 }
1084 var121 = var123;
1085 RET_LABEL122:(void)0;
1086 }
1087 }
1088 var_mtype = var121;
1089 if (varonce124) {
1090 var125 = varonce124;
1091 } else {
1092 var126 = "1";
1093 var127 = 1;
1094 var128 = standard___standard__NativeString___to_s_with_length(var126, var127);
1095 var125 = var128;
1096 varonce124 = var125;
1097 }
1098 var_accept_null = var125;
1099 } else {
1100 }
1101 } else {
1102 }
1103 {
1104 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
1105 var131 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
1106 if (unlikely(var131 == NULL)) {
1107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
1108 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1683);
1109 show_backtrace(1);
1110 }
1111 var129 = var131;
1112 RET_LABEL130:(void)0;
1113 }
1114 }
1115 {
1116 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateErasureCompilerVisitor> */
1117 var134 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
1118 var132 = var134;
1119 RET_LABEL133:(void)0;
1120 }
1121 }
1122 if (var132 == NULL) {
1123 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1124 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 517);
1125 show_backtrace(1);
1126 } else {
1127 { /* Inline abstract_compiler#StaticFrame#mpropdef (var132) on <var132:nullable StaticFrame> */
1128 if (unlikely(var132 == NULL)) {
1129 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1130 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
1131 show_backtrace(1);
1132 }
1133 var137 = var132->attrs[COLOR_nit__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var132:nullable StaticFrame> */
1134 if (unlikely(var137 == NULL)) {
1135 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
1136 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
1137 show_backtrace(1);
1138 }
1139 var135 = var137;
1140 RET_LABEL136:(void)0;
1141 }
1142 }
1143 {
1144 { /* Inline model#MPropDef#mclassdef (var135) on <var135:MPropDef> */
1145 var140 = var135->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var135:MPropDef> */
1146 if (unlikely(var140 == NULL)) {
1147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1148 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
1149 show_backtrace(1);
1150 }
1151 var138 = var140;
1152 RET_LABEL139:(void)0;
1153 }
1154 }
1155 {
1156 { /* Inline model#MClassDef#mmodule (var138) on <var138:MClassDef> */
1157 var143 = var138->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var138:MClassDef> */
1158 if (unlikely(var143 == NULL)) {
1159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1160 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
1161 show_backtrace(1);
1162 }
1163 var141 = var143;
1164 RET_LABEL142:(void)0;
1165 }
1166 }
1167 {
1168 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateErasureCompilerVisitor> */
1169 var146 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
1170 var144 = var146;
1171 RET_LABEL145:(void)0;
1172 }
1173 }
1174 if (var144 == NULL) {
1175 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1176 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 517);
1177 show_backtrace(1);
1178 } else {
1179 { /* Inline abstract_compiler#StaticFrame#mpropdef (var144) on <var144:nullable StaticFrame> */
1180 if (unlikely(var144 == NULL)) {
1181 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1182 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
1183 show_backtrace(1);
1184 }
1185 var149 = var144->attrs[COLOR_nit__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var144:nullable StaticFrame> */
1186 if (unlikely(var149 == NULL)) {
1187 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
1188 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1724);
1189 show_backtrace(1);
1190 }
1191 var147 = var149;
1192 RET_LABEL148:(void)0;
1193 }
1194 }
1195 {
1196 { /* Inline model#MPropDef#mclassdef (var147) on <var147:MPropDef> */
1197 var152 = var147->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var147:MPropDef> */
1198 if (unlikely(var152 == NULL)) {
1199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1200 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
1201 show_backtrace(1);
1202 }
1203 var150 = var152;
1204 RET_LABEL151:(void)0;
1205 }
1206 }
1207 {
1208 { /* Inline model#MClassDef#bound_mtype (var150) on <var150:MClassDef> */
1209 var155 = var150->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var150:MClassDef> */
1210 if (unlikely(var155 == NULL)) {
1211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1212 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
1213 show_backtrace(1);
1214 }
1215 var153 = var155;
1216 RET_LABEL154:(void)0;
1217 }
1218 }
1219 {
1220 var156 = nit___nit__MType___is_subtype(var129, var141, var153, var_mtype);
1221 }
1222 if (var156){
1223 if (varonce157) {
1224 var158 = varonce157;
1225 } else {
1226 var159 = " = 1; /* easy ";
1227 var160 = 14;
1228 var161 = standard___standard__NativeString___to_s_with_length(var159, var160);
1229 var158 = var161;
1230 varonce157 = var158;
1231 }
1232 {
1233 var162 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_value);
1234 }
1235 if (varonce163) {
1236 var164 = varonce163;
1237 } else {
1238 var165 = " isa ";
1239 var166 = 5;
1240 var167 = standard___standard__NativeString___to_s_with_length(var165, var166);
1241 var164 = var167;
1242 varonce163 = var164;
1243 }
1244 if (varonce168) {
1245 var169 = varonce168;
1246 } else {
1247 var170 = "*/";
1248 var171 = 2;
1249 var172 = standard___standard__NativeString___to_s_with_length(var170, var171);
1250 var169 = var172;
1251 varonce168 = var169;
1252 }
1253 var173 = NEW_standard__Array(&type_standard__Array__standard__Object);
1254 { /* var173 = array_instance Array[Object] */
1255 var174 = 6;
1256 var175 = NEW_standard__NativeArray(var174, &type_standard__NativeArray__standard__Object);
1257 ((struct instance_standard__NativeArray*)var175)->values[0] = (val*) var_res;
1258 ((struct instance_standard__NativeArray*)var175)->values[1] = (val*) var158;
1259 ((struct instance_standard__NativeArray*)var175)->values[2] = (val*) var162;
1260 ((struct instance_standard__NativeArray*)var175)->values[3] = (val*) var164;
1261 ((struct instance_standard__NativeArray*)var175)->values[4] = (val*) var_mtype;
1262 ((struct instance_standard__NativeArray*)var175)->values[5] = (val*) var169;
1263 {
1264 ((void (*)(val* self, val* p0, long p1))(var173->class->vft[COLOR_standard__array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
1265 }
1266 }
1267 {
1268 var176 = ((val* (*)(val* self))(var173->class->vft[COLOR_standard__string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
1269 }
1270 {
1271 nit___nit__AbstractCompilerVisitor___add(self, var176); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
1272 }
1273 {
1274 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
1275 var179 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
1276 if (unlikely(var179 == NULL)) {
1277 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1278 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1279 show_backtrace(1);
1280 }
1281 var177 = var179;
1282 RET_LABEL178:(void)0;
1283 }
1284 }
1285 {
1286 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var177) on <var177:AbstractCompiler(SeparateCompiler)> */
1287 var182 = var177->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var177:AbstractCompiler(SeparateCompiler)> */
1288 if (unlikely(var182 == NULL)) {
1289 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1290 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
1291 show_backtrace(1);
1292 }
1293 var180 = var182;
1294 RET_LABEL181:(void)0;
1295 }
1296 }
1297 {
1298 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var180) on <var180:ModelBuilder> */
1299 var185 = var180->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var180:ModelBuilder> */
1300 if (unlikely(var185 == NULL)) {
1301 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1302 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1303 show_backtrace(1);
1304 }
1305 var183 = var185;
1306 RET_LABEL184:(void)0;
1307 }
1308 }
1309 {
1310 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var183) on <var183:ToolContext> */
1311 var188 = var183->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var183:ToolContext> */
1312 if (unlikely(var188 == NULL)) {
1313 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
1314 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 59);
1315 show_backtrace(1);
1316 }
1317 var186 = var188;
1318 RET_LABEL187:(void)0;
1319 }
1320 }
1321 {
1322 { /* Inline opts#Option#value (var186) on <var186:OptionBool> */
1323 var191 = var186->attrs[COLOR_opts__Option___value].val; /* _value on <var186:OptionBool> */
1324 var189 = var191;
1325 RET_LABEL190:(void)0;
1326 }
1327 }
1328 var192 = ((struct instance_standard__Bool*)var189)->value; /* autounbox from nullable Object to Bool */;
1329 if (var192){
1330 {
1331 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
1332 var195 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
1333 if (unlikely(var195 == NULL)) {
1334 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1335 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1336 show_backtrace(1);
1337 }
1338 var193 = var195;
1339 RET_LABEL194:(void)0;
1340 }
1341 }
1342 {
1343 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_skipped (var193) on <var193:AbstractCompiler(SeparateCompiler)> */
1344 var198 = var193->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <var193:AbstractCompiler(SeparateCompiler)> */
1345 if (unlikely(var198 == NULL)) {
1346 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
1347 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 966);
1348 show_backtrace(1);
1349 }
1350 var196 = var198;
1351 RET_LABEL197:(void)0;
1352 }
1353 }
1354 var_ = var196;
1355 var_199 = var_tag;
1356 {
1357 var200 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_, var_199);
1358 }
1359 var201 = 1;
1360 {
1361 { /* Inline kernel#Int#+ (var200,var201) on <var200:nullable Object(Int)> */
1362 /* Covariant cast for argument 0 (i) <var201:Int> isa OTHER */
1363 /* <var201:Int> isa OTHER */
1364 var204 = 1; /* easy <var201:Int> isa OTHER*/
1365 if (unlikely(!var204)) {
1366 var_class_name = type_standard__Int.name;
1367 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1368 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
1369 show_backtrace(1);
1370 }
1371 var207 = ((struct instance_standard__Int*)var200)->value; /* autounbox from nullable Object to Int */;
1372 var208 = var207 + var201;
1373 var202 = var208;
1374 goto RET_LABEL203;
1375 RET_LABEL203:(void)0;
1376 }
1377 }
1378 {
1379 var209 = BOX_standard__Int(var202); /* autobox from Int to nullable Object */
1380 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_, var_199, var209); /* Direct call hash_collection#HashMap#[]= on <var_:HashMap[String, Int]>*/
1381 }
1382 if (varonce210) {
1383 var211 = varonce210;
1384 } else {
1385 var212 = "count_type_test_skipped_";
1386 var213 = 24;
1387 var214 = standard___standard__NativeString___to_s_with_length(var212, var213);
1388 var211 = var214;
1389 varonce210 = var211;
1390 }
1391 if (varonce215) {
1392 var216 = varonce215;
1393 } else {
1394 var217 = "++;";
1395 var218 = 3;
1396 var219 = standard___standard__NativeString___to_s_with_length(var217, var218);
1397 var216 = var219;
1398 varonce215 = var216;
1399 }
1400 var220 = NEW_standard__Array(&type_standard__Array__standard__Object);
1401 { /* var220 = array_instance Array[Object] */
1402 var221 = 3;
1403 var222 = NEW_standard__NativeArray(var221, &type_standard__NativeArray__standard__Object);
1404 ((struct instance_standard__NativeArray*)var222)->values[0] = (val*) var211;
1405 ((struct instance_standard__NativeArray*)var222)->values[1] = (val*) var_tag;
1406 ((struct instance_standard__NativeArray*)var222)->values[2] = (val*) var216;
1407 {
1408 ((void (*)(val* self, val* p0, long p1))(var220->class->vft[COLOR_standard__array__Array__with_native]))(var220, var222, var221) /* with_native on <var220:Array[Object]>*/;
1409 }
1410 }
1411 {
1412 var223 = ((val* (*)(val* self))(var220->class->vft[COLOR_standard__string__Object__to_s]))(var220) /* to_s on <var220:Array[Object]>*/;
1413 }
1414 {
1415 nit___nit__AbstractCompilerVisitor___add(self, var223); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
1416 }
1417 } else {
1418 }
1419 var = var_res;
1420 goto RET_LABEL;
1421 } else {
1422 }
1423 {
1424 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1425 var226 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1426 if (unlikely(var226 == NULL)) {
1427 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1428 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
1429 show_backtrace(1);
1430 }
1431 var224 = var226;
1432 RET_LABEL225:(void)0;
1433 }
1434 }
1435 {
1436 var227 = ((val* (*)(val* self))(var224->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var224) /* ctype on <var224:MType>*/;
1437 }
1438 if (varonce228) {
1439 var229 = varonce228;
1440 } else {
1441 var230 = "val*";
1442 var231 = 4;
1443 var232 = standard___standard__NativeString___to_s_with_length(var230, var231);
1444 var229 = var232;
1445 varonce228 = var229;
1446 }
1447 {
1448 var233 = ((short int (*)(val* self, val* p0))(var227->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var227, var229) /* == on <var227:String>*/;
1449 }
1450 if (var233){
1451 if (varonce234) {
1452 var235 = varonce234;
1453 } else {
1454 var236 = "->class->";
1455 var237 = 9;
1456 var238 = standard___standard__NativeString___to_s_with_length(var236, var237);
1457 var235 = var238;
1458 varonce234 = var235;
1459 }
1460 var239 = NEW_standard__Array(&type_standard__Array__standard__Object);
1461 { /* var239 = array_instance Array[Object] */
1462 var240 = 2;
1463 var241 = NEW_standard__NativeArray(var240, &type_standard__NativeArray__standard__Object);
1464 ((struct instance_standard__NativeArray*)var241)->values[0] = (val*) var_value;
1465 ((struct instance_standard__NativeArray*)var241)->values[1] = (val*) var235;
1466 {
1467 ((void (*)(val* self, val* p0, long p1))(var239->class->vft[COLOR_standard__array__Array__with_native]))(var239, var241, var240) /* with_native on <var239:Array[Object]>*/;
1468 }
1469 }
1470 {
1471 var242 = ((val* (*)(val* self))(var239->class->vft[COLOR_standard__string__Object__to_s]))(var239) /* to_s on <var239:Array[Object]>*/;
1472 }
1473 var_class_ptr = var242;
1474 } else {
1475 {
1476 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1477 var245 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1478 if (unlikely(var245 == NULL)) {
1479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1480 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
1481 show_backtrace(1);
1482 }
1483 var243 = var245;
1484 RET_LABEL244:(void)0;
1485 }
1486 }
1487 /* <var243:MType> isa MClassType */
1488 cltype247 = type_nit__MClassType.color;
1489 idtype248 = type_nit__MClassType.id;
1490 if(cltype247 >= var243->type->table_size) {
1491 var246 = 0;
1492 } else {
1493 var246 = var243->type->type_table[cltype247] == idtype248;
1494 }
1495 if (unlikely(!var246)) {
1496 var_class_name249 = var243 == NULL ? "null" : var243->type->name;
1497 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name249);
1498 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 530);
1499 show_backtrace(1);
1500 }
1501 {
1502 { /* Inline model#MClassType#mclass (var243) on <var243:MType(MClassType)> */
1503 var252 = var243->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var243:MType(MClassType)> */
1504 if (unlikely(var252 == NULL)) {
1505 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1506 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1507 show_backtrace(1);
1508 }
1509 var250 = var252;
1510 RET_LABEL251:(void)0;
1511 }
1512 }
1513 var_mclass = var250;
1514 if (varonce253) {
1515 var254 = varonce253;
1516 } else {
1517 var255 = "class_";
1518 var256 = 6;
1519 var257 = standard___standard__NativeString___to_s_with_length(var255, var256);
1520 var254 = var257;
1521 varonce253 = var254;
1522 }
1523 {
1524 var258 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_mclass);
1525 }
1526 var259 = NEW_standard__Array(&type_standard__Array__standard__Object);
1527 { /* var259 = array_instance Array[Object] */
1528 var260 = 2;
1529 var261 = NEW_standard__NativeArray(var260, &type_standard__NativeArray__standard__Object);
1530 ((struct instance_standard__NativeArray*)var261)->values[0] = (val*) var254;
1531 ((struct instance_standard__NativeArray*)var261)->values[1] = (val*) var258;
1532 {
1533 ((void (*)(val* self, val* p0, long p1))(var259->class->vft[COLOR_standard__array__Array__with_native]))(var259, var261, var260) /* with_native on <var259:Array[Object]>*/;
1534 }
1535 }
1536 {
1537 var262 = ((val* (*)(val* self))(var259->class->vft[COLOR_standard__string__Object__to_s]))(var259) /* to_s on <var259:Array[Object]>*/;
1538 }
1539 {
1540 nit___nit__AbstractCompilerVisitor___require_declaration(self, var262); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
1541 }
1542 if (varonce263) {
1543 var264 = varonce263;
1544 } else {
1545 var265 = "class_";
1546 var266 = 6;
1547 var267 = standard___standard__NativeString___to_s_with_length(var265, var266);
1548 var264 = var267;
1549 varonce263 = var264;
1550 }
1551 {
1552 var268 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_mclass);
1553 }
1554 if (varonce269) {
1555 var270 = varonce269;
1556 } else {
1557 var271 = ".";
1558 var272 = 1;
1559 var273 = standard___standard__NativeString___to_s_with_length(var271, var272);
1560 var270 = var273;
1561 varonce269 = var270;
1562 }
1563 var274 = NEW_standard__Array(&type_standard__Array__standard__Object);
1564 { /* var274 = array_instance Array[Object] */
1565 var275 = 3;
1566 var276 = NEW_standard__NativeArray(var275, &type_standard__NativeArray__standard__Object);
1567 ((struct instance_standard__NativeArray*)var276)->values[0] = (val*) var264;
1568 ((struct instance_standard__NativeArray*)var276)->values[1] = (val*) var268;
1569 ((struct instance_standard__NativeArray*)var276)->values[2] = (val*) var270;
1570 {
1571 ((void (*)(val* self, val* p0, long p1))(var274->class->vft[COLOR_standard__array__Array__with_native]))(var274, var276, var275) /* with_native on <var274:Array[Object]>*/;
1572 }
1573 }
1574 {
1575 var277 = ((val* (*)(val* self))(var274->class->vft[COLOR_standard__string__Object__to_s]))(var274) /* to_s on <var274:Array[Object]>*/;
1576 }
1577 var_class_ptr = var277;
1578 }
1579 /* <var_mtype:MType> isa MClassType */
1580 cltype279 = type_nit__MClassType.color;
1581 idtype280 = type_nit__MClassType.id;
1582 if(cltype279 >= var_mtype->type->table_size) {
1583 var278 = 0;
1584 } else {
1585 var278 = var_mtype->type->type_table[cltype279] == idtype280;
1586 }
1587 if (var278){
1588 if (varonce281) {
1589 var282 = varonce281;
1590 } else {
1591 var283 = "class_";
1592 var284 = 6;
1593 var285 = standard___standard__NativeString___to_s_with_length(var283, var284);
1594 var282 = var285;
1595 varonce281 = var282;
1596 }
1597 {
1598 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1599 var288 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1600 if (unlikely(var288 == NULL)) {
1601 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1602 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1603 show_backtrace(1);
1604 }
1605 var286 = var288;
1606 RET_LABEL287:(void)0;
1607 }
1608 }
1609 {
1610 var289 = nit___nit__MClass___nit__model_base__MEntity__c_name(var286);
1611 }
1612 var290 = NEW_standard__Array(&type_standard__Array__standard__Object);
1613 { /* var290 = array_instance Array[Object] */
1614 var291 = 2;
1615 var292 = NEW_standard__NativeArray(var291, &type_standard__NativeArray__standard__Object);
1616 ((struct instance_standard__NativeArray*)var292)->values[0] = (val*) var282;
1617 ((struct instance_standard__NativeArray*)var292)->values[1] = (val*) var289;
1618 {
1619 ((void (*)(val* self, val* p0, long p1))(var290->class->vft[COLOR_standard__array__Array__with_native]))(var290, var292, var291) /* with_native on <var290:Array[Object]>*/;
1620 }
1621 }
1622 {
1623 var293 = ((val* (*)(val* self))(var290->class->vft[COLOR_standard__string__Object__to_s]))(var290) /* to_s on <var290:Array[Object]>*/;
1624 }
1625 {
1626 nit___nit__AbstractCompilerVisitor___require_declaration(self, var293); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
1627 }
1628 if (varonce294) {
1629 var295 = varonce294;
1630 } else {
1631 var296 = " = class_";
1632 var297 = 9;
1633 var298 = standard___standard__NativeString___to_s_with_length(var296, var297);
1634 var295 = var298;
1635 varonce294 = var295;
1636 }
1637 {
1638 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1639 var301 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1640 if (unlikely(var301 == NULL)) {
1641 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1642 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1643 show_backtrace(1);
1644 }
1645 var299 = var301;
1646 RET_LABEL300:(void)0;
1647 }
1648 }
1649 {
1650 var302 = nit___nit__MClass___nit__model_base__MEntity__c_name(var299);
1651 }
1652 if (varonce303) {
1653 var304 = varonce303;
1654 } else {
1655 var305 = ".color;";
1656 var306 = 7;
1657 var307 = standard___standard__NativeString___to_s_with_length(var305, var306);
1658 var304 = var307;
1659 varonce303 = var304;
1660 }
1661 var308 = NEW_standard__Array(&type_standard__Array__standard__Object);
1662 { /* var308 = array_instance Array[Object] */
1663 var309 = 4;
1664 var310 = NEW_standard__NativeArray(var309, &type_standard__NativeArray__standard__Object);
1665 ((struct instance_standard__NativeArray*)var310)->values[0] = (val*) var_cltype;
1666 ((struct instance_standard__NativeArray*)var310)->values[1] = (val*) var295;
1667 ((struct instance_standard__NativeArray*)var310)->values[2] = (val*) var302;
1668 ((struct instance_standard__NativeArray*)var310)->values[3] = (val*) var304;
1669 {
1670 ((void (*)(val* self, val* p0, long p1))(var308->class->vft[COLOR_standard__array__Array__with_native]))(var308, var310, var309) /* with_native on <var308:Array[Object]>*/;
1671 }
1672 }
1673 {
1674 var311 = ((val* (*)(val* self))(var308->class->vft[COLOR_standard__string__Object__to_s]))(var308) /* to_s on <var308:Array[Object]>*/;
1675 }
1676 {
1677 nit___nit__AbstractCompilerVisitor___add(self, var311); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
1678 }
1679 if (varonce312) {
1680 var313 = varonce312;
1681 } else {
1682 var314 = " = class_";
1683 var315 = 9;
1684 var316 = standard___standard__NativeString___to_s_with_length(var314, var315);
1685 var313 = var316;
1686 varonce312 = var313;
1687 }
1688 {
1689 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1690 var319 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1691 if (unlikely(var319 == NULL)) {
1692 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1693 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
1694 show_backtrace(1);
1695 }
1696 var317 = var319;
1697 RET_LABEL318:(void)0;
1698 }
1699 }
1700 {
1701 var320 = nit___nit__MClass___nit__model_base__MEntity__c_name(var317);
1702 }
1703 if (varonce321) {
1704 var322 = varonce321;
1705 } else {
1706 var323 = ".id;";
1707 var324 = 4;
1708 var325 = standard___standard__NativeString___to_s_with_length(var323, var324);
1709 var322 = var325;
1710 varonce321 = var322;
1711 }
1712 var326 = NEW_standard__Array(&type_standard__Array__standard__Object);
1713 { /* var326 = array_instance Array[Object] */
1714 var327 = 4;
1715 var328 = NEW_standard__NativeArray(var327, &type_standard__NativeArray__standard__Object);
1716 ((struct instance_standard__NativeArray*)var328)->values[0] = (val*) var_idtype;
1717 ((struct instance_standard__NativeArray*)var328)->values[1] = (val*) var313;
1718 ((struct instance_standard__NativeArray*)var328)->values[2] = (val*) var320;
1719 ((struct instance_standard__NativeArray*)var328)->values[3] = (val*) var322;
1720 {
1721 ((void (*)(val* self, val* p0, long p1))(var326->class->vft[COLOR_standard__array__Array__with_native]))(var326, var328, var327) /* with_native on <var326:Array[Object]>*/;
1722 }
1723 }
1724 {
1725 var329 = ((val* (*)(val* self))(var326->class->vft[COLOR_standard__string__Object__to_s]))(var326) /* to_s on <var326:Array[Object]>*/;
1726 }
1727 {
1728 nit___nit__AbstractCompilerVisitor___add(self, var329); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
1729 }
1730 {
1731 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
1732 var332 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
1733 if (unlikely(var332 == NULL)) {
1734 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1735 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1736 show_backtrace(1);
1737 }
1738 var330 = var332;
1739 RET_LABEL331:(void)0;
1740 }
1741 }
1742 {
1743 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var330) on <var330:AbstractCompiler(SeparateCompiler)> */
1744 var335 = var330->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var330:AbstractCompiler(SeparateCompiler)> */
1745 if (unlikely(var335 == NULL)) {
1746 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1747 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
1748 show_backtrace(1);
1749 }
1750 var333 = var335;
1751 RET_LABEL334:(void)0;
1752 }
1753 }
1754 {
1755 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var333) on <var333:ModelBuilder> */
1756 var338 = var333->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var333:ModelBuilder> */
1757 if (unlikely(var338 == NULL)) {
1758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1759 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1760 show_backtrace(1);
1761 }
1762 var336 = var338;
1763 RET_LABEL337:(void)0;
1764 }
1765 }
1766 {
1767 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var336) on <var336:ToolContext> */
1768 var341 = var336->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var336:ToolContext> */
1769 if (unlikely(var341 == NULL)) {
1770 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
1771 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 59);
1772 show_backtrace(1);
1773 }
1774 var339 = var341;
1775 RET_LABEL340:(void)0;
1776 }
1777 }
1778 {
1779 { /* Inline opts#Option#value (var339) on <var339:OptionBool> */
1780 var344 = var339->attrs[COLOR_opts__Option___value].val; /* _value on <var339:OptionBool> */
1781 var342 = var344;
1782 RET_LABEL343:(void)0;
1783 }
1784 }
1785 var345 = ((struct instance_standard__Bool*)var342)->value; /* autounbox from nullable Object to Bool */;
1786 if (var345){
1787 {
1788 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
1789 var348 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
1790 if (unlikely(var348 == NULL)) {
1791 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1792 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
1793 show_backtrace(1);
1794 }
1795 var346 = var348;
1796 RET_LABEL347:(void)0;
1797 }
1798 }
1799 {
1800 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_resolved (var346) on <var346:AbstractCompiler(SeparateCompiler)> */
1801 var351 = var346->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <var346:AbstractCompiler(SeparateCompiler)> */
1802 if (unlikely(var351 == NULL)) {
1803 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
1804 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 964);
1805 show_backtrace(1);
1806 }
1807 var349 = var351;
1808 RET_LABEL350:(void)0;
1809 }
1810 }
1811 var_352 = var349;
1812 var_353 = var_tag;
1813 {
1814 var354 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_352, var_353);
1815 }
1816 var355 = 1;
1817 {
1818 { /* Inline kernel#Int#+ (var354,var355) on <var354:nullable Object(Int)> */
1819 /* Covariant cast for argument 0 (i) <var355:Int> isa OTHER */
1820 /* <var355:Int> isa OTHER */
1821 var358 = 1; /* easy <var355:Int> isa OTHER*/
1822 if (unlikely(!var358)) {
1823 var_class_name361 = type_standard__Int.name;
1824 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name361);
1825 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
1826 show_backtrace(1);
1827 }
1828 var362 = ((struct instance_standard__Int*)var354)->value; /* autounbox from nullable Object to Int */;
1829 var363 = var362 + var355;
1830 var356 = var363;
1831 goto RET_LABEL357;
1832 RET_LABEL357:(void)0;
1833 }
1834 }
1835 {
1836 var364 = BOX_standard__Int(var356); /* autobox from Int to nullable Object */
1837 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_352, var_353, var364); /* Direct call hash_collection#HashMap#[]= on <var_352:HashMap[String, Int]>*/
1838 }
1839 if (varonce365) {
1840 var366 = varonce365;
1841 } else {
1842 var367 = "count_type_test_resolved_";
1843 var368 = 25;
1844 var369 = standard___standard__NativeString___to_s_with_length(var367, var368);
1845 var366 = var369;
1846 varonce365 = var366;
1847 }
1848 if (varonce370) {
1849 var371 = varonce370;
1850 } else {
1851 var372 = "++;";
1852 var373 = 3;
1853 var374 = standard___standard__NativeString___to_s_with_length(var372, var373);
1854 var371 = var374;
1855 varonce370 = var371;
1856 }
1857 var375 = NEW_standard__Array(&type_standard__Array__standard__Object);
1858 { /* var375 = array_instance Array[Object] */
1859 var376 = 3;
1860 var377 = NEW_standard__NativeArray(var376, &type_standard__NativeArray__standard__Object);
1861 ((struct instance_standard__NativeArray*)var377)->values[0] = (val*) var366;
1862 ((struct instance_standard__NativeArray*)var377)->values[1] = (val*) var_tag;
1863 ((struct instance_standard__NativeArray*)var377)->values[2] = (val*) var371;
1864 {
1865 ((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]>*/;
1866 }
1867 }
1868 {
1869 var378 = ((val* (*)(val* self))(var375->class->vft[COLOR_standard__string__Object__to_s]))(var375) /* to_s on <var375:Array[Object]>*/;
1870 }
1871 {
1872 nit___nit__AbstractCompilerVisitor___add(self, var378); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
1873 }
1874 } else {
1875 }
1876 } else {
1877 /* <var_mtype:MType> isa MVirtualType */
1878 cltype380 = type_nit__MVirtualType.color;
1879 idtype381 = type_nit__MVirtualType.id;
1880 if(cltype380 >= var_mtype->type->table_size) {
1881 var379 = 0;
1882 } else {
1883 var379 = var_mtype->type->type_table[cltype380] == idtype381;
1884 }
1885 if (var379){
1886 {
1887 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateErasureCompilerVisitor> */
1888 var384 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
1889 var382 = var384;
1890 RET_LABEL383:(void)0;
1891 }
1892 }
1893 if (var382 == NULL) {
1894 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1895 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 544);
1896 show_backtrace(1);
1897 } else {
1898 { /* Inline abstract_compiler#StaticFrame#arguments (var382) on <var382:nullable StaticFrame> */
1899 if (unlikely(var382 == NULL)) {
1900 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1901 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1731);
1902 show_backtrace(1);
1903 }
1904 var387 = var382->attrs[COLOR_nit__abstract_compiler__StaticFrame___arguments].val; /* _arguments on <var382:nullable StaticFrame> */
1905 if (unlikely(var387 == NULL)) {
1906 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
1907 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1731);
1908 show_backtrace(1);
1909 }
1910 var385 = var387;
1911 RET_LABEL386:(void)0;
1912 }
1913 }
1914 {
1915 var388 = standard___standard__SequenceRead___Collection__first(var385);
1916 }
1917 var_recv = var388;
1918 {
1919 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_recv) on <var_recv:RuntimeVariable> */
1920 var391 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
1921 if (unlikely(var391 == NULL)) {
1922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1923 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
1924 show_backtrace(1);
1925 }
1926 var389 = var391;
1927 RET_LABEL390:(void)0;
1928 }
1929 }
1930 {
1931 var392 = ((val* (*)(val* self))(var389->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var389) /* ctype on <var389:MType>*/;
1932 }
1933 if (varonce393) {
1934 var394 = varonce393;
1935 } else {
1936 var395 = "val*";
1937 var396 = 4;
1938 var397 = standard___standard__NativeString___to_s_with_length(var395, var396);
1939 var394 = var397;
1940 varonce393 = var394;
1941 }
1942 {
1943 var398 = ((short int (*)(val* self, val* p0))(var392->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var392, var394) /* == on <var392:String>*/;
1944 }
1945 if (var398){
1946 if (varonce399) {
1947 var400 = varonce399;
1948 } else {
1949 var401 = "->class->";
1950 var402 = 9;
1951 var403 = standard___standard__NativeString___to_s_with_length(var401, var402);
1952 var400 = var403;
1953 varonce399 = var400;
1954 }
1955 var404 = NEW_standard__Array(&type_standard__Array__standard__Object);
1956 { /* var404 = array_instance Array[Object] */
1957 var405 = 2;
1958 var406 = NEW_standard__NativeArray(var405, &type_standard__NativeArray__standard__Object);
1959 ((struct instance_standard__NativeArray*)var406)->values[0] = (val*) var_recv;
1960 ((struct instance_standard__NativeArray*)var406)->values[1] = (val*) var400;
1961 {
1962 ((void (*)(val* self, val* p0, long p1))(var404->class->vft[COLOR_standard__array__Array__with_native]))(var404, var406, var405) /* with_native on <var404:Array[Object]>*/;
1963 }
1964 }
1965 {
1966 var407 = ((val* (*)(val* self))(var404->class->vft[COLOR_standard__string__Object__to_s]))(var404) /* to_s on <var404:Array[Object]>*/;
1967 }
1968 var_recv_ptr = var407;
1969 } else {
1970 {
1971 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_recv) on <var_recv:RuntimeVariable> */
1972 var410 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
1973 if (unlikely(var410 == NULL)) {
1974 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1975 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
1976 show_backtrace(1);
1977 }
1978 var408 = var410;
1979 RET_LABEL409:(void)0;
1980 }
1981 }
1982 /* <var408:MType> isa MClassType */
1983 cltype412 = type_nit__MClassType.color;
1984 idtype413 = type_nit__MClassType.id;
1985 if(cltype412 >= var408->type->table_size) {
1986 var411 = 0;
1987 } else {
1988 var411 = var408->type->type_table[cltype412] == idtype413;
1989 }
1990 if (unlikely(!var411)) {
1991 var_class_name414 = var408 == NULL ? "null" : var408->type->name;
1992 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name414);
1993 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 549);
1994 show_backtrace(1);
1995 }
1996 {
1997 { /* Inline model#MClassType#mclass (var408) on <var408:MType(MClassType)> */
1998 var417 = var408->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var408:MType(MClassType)> */
1999 if (unlikely(var417 == NULL)) {
2000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2001 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
2002 show_backtrace(1);
2003 }
2004 var415 = var417;
2005 RET_LABEL416:(void)0;
2006 }
2007 }
2008 var_mclass418 = var415;
2009 if (varonce419) {
2010 var420 = varonce419;
2011 } else {
2012 var421 = "class_";
2013 var422 = 6;
2014 var423 = standard___standard__NativeString___to_s_with_length(var421, var422);
2015 var420 = var423;
2016 varonce419 = var420;
2017 }
2018 {
2019 var424 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_mclass418);
2020 }
2021 var425 = NEW_standard__Array(&type_standard__Array__standard__Object);
2022 { /* var425 = array_instance Array[Object] */
2023 var426 = 2;
2024 var427 = NEW_standard__NativeArray(var426, &type_standard__NativeArray__standard__Object);
2025 ((struct instance_standard__NativeArray*)var427)->values[0] = (val*) var420;
2026 ((struct instance_standard__NativeArray*)var427)->values[1] = (val*) var424;
2027 {
2028 ((void (*)(val* self, val* p0, long p1))(var425->class->vft[COLOR_standard__array__Array__with_native]))(var425, var427, var426) /* with_native on <var425:Array[Object]>*/;
2029 }
2030 }
2031 {
2032 var428 = ((val* (*)(val* self))(var425->class->vft[COLOR_standard__string__Object__to_s]))(var425) /* to_s on <var425:Array[Object]>*/;
2033 }
2034 {
2035 nit___nit__AbstractCompilerVisitor___require_declaration(self, var428); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
2036 }
2037 if (varonce429) {
2038 var430 = varonce429;
2039 } else {
2040 var431 = "class_";
2041 var432 = 6;
2042 var433 = standard___standard__NativeString___to_s_with_length(var431, var432);
2043 var430 = var433;
2044 varonce429 = var430;
2045 }
2046 {
2047 var434 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_mclass418);
2048 }
2049 if (varonce435) {
2050 var436 = varonce435;
2051 } else {
2052 var437 = ".";
2053 var438 = 1;
2054 var439 = standard___standard__NativeString___to_s_with_length(var437, var438);
2055 var436 = var439;
2056 varonce435 = var436;
2057 }
2058 var440 = NEW_standard__Array(&type_standard__Array__standard__Object);
2059 { /* var440 = array_instance Array[Object] */
2060 var441 = 3;
2061 var442 = NEW_standard__NativeArray(var441, &type_standard__NativeArray__standard__Object);
2062 ((struct instance_standard__NativeArray*)var442)->values[0] = (val*) var430;
2063 ((struct instance_standard__NativeArray*)var442)->values[1] = (val*) var434;
2064 ((struct instance_standard__NativeArray*)var442)->values[2] = (val*) var436;
2065 {
2066 ((void (*)(val* self, val* p0, long p1))(var440->class->vft[COLOR_standard__array__Array__with_native]))(var440, var442, var441) /* with_native on <var440:Array[Object]>*/;
2067 }
2068 }
2069 {
2070 var443 = ((val* (*)(val* self))(var440->class->vft[COLOR_standard__string__Object__to_s]))(var440) /* to_s on <var440:Array[Object]>*/;
2071 }
2072 var_recv_ptr = var443;
2073 }
2074 if (varonce444) {
2075 var445 = varonce444;
2076 } else {
2077 var446 = "entry";
2078 var447 = 5;
2079 var448 = standard___standard__NativeString___to_s_with_length(var446, var447);
2080 var445 = var448;
2081 varonce444 = var445;
2082 }
2083 {
2084 var449 = nit___nit__AbstractCompilerVisitor___get_name(self, var445);
2085 }
2086 var_entry = var449;
2087 if (varonce450) {
2088 var451 = varonce450;
2089 } else {
2090 var452 = "struct vts_entry ";
2091 var453 = 17;
2092 var454 = standard___standard__NativeString___to_s_with_length(var452, var453);
2093 var451 = var454;
2094 varonce450 = var451;
2095 }
2096 if (varonce455) {
2097 var456 = varonce455;
2098 } else {
2099 var457 = ";";
2100 var458 = 1;
2101 var459 = standard___standard__NativeString___to_s_with_length(var457, var458);
2102 var456 = var459;
2103 varonce455 = var456;
2104 }
2105 var460 = NEW_standard__Array(&type_standard__Array__standard__Object);
2106 { /* var460 = array_instance Array[Object] */
2107 var461 = 3;
2108 var462 = NEW_standard__NativeArray(var461, &type_standard__NativeArray__standard__Object);
2109 ((struct instance_standard__NativeArray*)var462)->values[0] = (val*) var451;
2110 ((struct instance_standard__NativeArray*)var462)->values[1] = (val*) var_entry;
2111 ((struct instance_standard__NativeArray*)var462)->values[2] = (val*) var456;
2112 {
2113 ((void (*)(val* self, val* p0, long p1))(var460->class->vft[COLOR_standard__array__Array__with_native]))(var460, var462, var461) /* with_native on <var460:Array[Object]>*/;
2114 }
2115 }
2116 {
2117 var463 = ((val* (*)(val* self))(var460->class->vft[COLOR_standard__string__Object__to_s]))(var460) /* to_s on <var460:Array[Object]>*/;
2118 }
2119 {
2120 nit___nit__AbstractCompilerVisitor___add(self, var463); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2121 }
2122 {
2123 { /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
2124 var466 = var_mtype->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
2125 if (unlikely(var466 == NULL)) {
2126 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2127 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1254);
2128 show_backtrace(1);
2129 }
2130 var464 = var466;
2131 RET_LABEL465:(void)0;
2132 }
2133 }
2134 {
2135 var467 = nit__separate_compiler___MEntity___const_color(var464);
2136 }
2137 {
2138 nit___nit__AbstractCompilerVisitor___require_declaration(self, var467); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
2139 }
2140 if (varonce468) {
2141 var469 = varonce468;
2142 } else {
2143 var470 = " = ";
2144 var471 = 3;
2145 var472 = standard___standard__NativeString___to_s_with_length(var470, var471);
2146 var469 = var472;
2147 varonce468 = var469;
2148 }
2149 if (varonce473) {
2150 var474 = varonce473;
2151 } else {
2152 var475 = "vts_table->vts[";
2153 var476 = 15;
2154 var477 = standard___standard__NativeString___to_s_with_length(var475, var476);
2155 var474 = var477;
2156 varonce473 = var474;
2157 }
2158 {
2159 { /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
2160 var480 = var_mtype->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
2161 if (unlikely(var480 == NULL)) {
2162 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2163 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1254);
2164 show_backtrace(1);
2165 }
2166 var478 = var480;
2167 RET_LABEL479:(void)0;
2168 }
2169 }
2170 {
2171 var481 = nit__separate_compiler___MEntity___const_color(var478);
2172 }
2173 if (varonce482) {
2174 var483 = varonce482;
2175 } else {
2176 var484 = "];";
2177 var485 = 2;
2178 var486 = standard___standard__NativeString___to_s_with_length(var484, var485);
2179 var483 = var486;
2180 varonce482 = var483;
2181 }
2182 var487 = NEW_standard__Array(&type_standard__Array__standard__Object);
2183 { /* var487 = array_instance Array[Object] */
2184 var488 = 6;
2185 var489 = NEW_standard__NativeArray(var488, &type_standard__NativeArray__standard__Object);
2186 ((struct instance_standard__NativeArray*)var489)->values[0] = (val*) var_entry;
2187 ((struct instance_standard__NativeArray*)var489)->values[1] = (val*) var469;
2188 ((struct instance_standard__NativeArray*)var489)->values[2] = (val*) var_recv_ptr;
2189 ((struct instance_standard__NativeArray*)var489)->values[3] = (val*) var474;
2190 ((struct instance_standard__NativeArray*)var489)->values[4] = (val*) var481;
2191 ((struct instance_standard__NativeArray*)var489)->values[5] = (val*) var483;
2192 {
2193 ((void (*)(val* self, val* p0, long p1))(var487->class->vft[COLOR_standard__array__Array__with_native]))(var487, var489, var488) /* with_native on <var487:Array[Object]>*/;
2194 }
2195 }
2196 {
2197 var490 = ((val* (*)(val* self))(var487->class->vft[COLOR_standard__string__Object__to_s]))(var487) /* to_s on <var487:Array[Object]>*/;
2198 }
2199 {
2200 nit___nit__AbstractCompilerVisitor___add(self, var490); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2201 }
2202 if (varonce491) {
2203 var492 = varonce491;
2204 } else {
2205 var493 = " = ";
2206 var494 = 3;
2207 var495 = standard___standard__NativeString___to_s_with_length(var493, var494);
2208 var492 = var495;
2209 varonce491 = var492;
2210 }
2211 if (varonce496) {
2212 var497 = varonce496;
2213 } else {
2214 var498 = ".class->color;";
2215 var499 = 14;
2216 var500 = standard___standard__NativeString___to_s_with_length(var498, var499);
2217 var497 = var500;
2218 varonce496 = var497;
2219 }
2220 var501 = NEW_standard__Array(&type_standard__Array__standard__Object);
2221 { /* var501 = array_instance Array[Object] */
2222 var502 = 4;
2223 var503 = NEW_standard__NativeArray(var502, &type_standard__NativeArray__standard__Object);
2224 ((struct instance_standard__NativeArray*)var503)->values[0] = (val*) var_cltype;
2225 ((struct instance_standard__NativeArray*)var503)->values[1] = (val*) var492;
2226 ((struct instance_standard__NativeArray*)var503)->values[2] = (val*) var_entry;
2227 ((struct instance_standard__NativeArray*)var503)->values[3] = (val*) var497;
2228 {
2229 ((void (*)(val* self, val* p0, long p1))(var501->class->vft[COLOR_standard__array__Array__with_native]))(var501, var503, var502) /* with_native on <var501:Array[Object]>*/;
2230 }
2231 }
2232 {
2233 var504 = ((val* (*)(val* self))(var501->class->vft[COLOR_standard__string__Object__to_s]))(var501) /* to_s on <var501:Array[Object]>*/;
2234 }
2235 {
2236 nit___nit__AbstractCompilerVisitor___add(self, var504); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2237 }
2238 if (varonce505) {
2239 var506 = varonce505;
2240 } else {
2241 var507 = " = ";
2242 var508 = 3;
2243 var509 = standard___standard__NativeString___to_s_with_length(var507, var508);
2244 var506 = var509;
2245 varonce505 = var506;
2246 }
2247 if (varonce510) {
2248 var511 = varonce510;
2249 } else {
2250 var512 = ".class->id;";
2251 var513 = 11;
2252 var514 = standard___standard__NativeString___to_s_with_length(var512, var513);
2253 var511 = var514;
2254 varonce510 = var511;
2255 }
2256 var515 = NEW_standard__Array(&type_standard__Array__standard__Object);
2257 { /* var515 = array_instance Array[Object] */
2258 var516 = 4;
2259 var517 = NEW_standard__NativeArray(var516, &type_standard__NativeArray__standard__Object);
2260 ((struct instance_standard__NativeArray*)var517)->values[0] = (val*) var_idtype;
2261 ((struct instance_standard__NativeArray*)var517)->values[1] = (val*) var506;
2262 ((struct instance_standard__NativeArray*)var517)->values[2] = (val*) var_entry;
2263 ((struct instance_standard__NativeArray*)var517)->values[3] = (val*) var511;
2264 {
2265 ((void (*)(val* self, val* p0, long p1))(var515->class->vft[COLOR_standard__array__Array__with_native]))(var515, var517, var516) /* with_native on <var515:Array[Object]>*/;
2266 }
2267 }
2268 {
2269 var518 = ((val* (*)(val* self))(var515->class->vft[COLOR_standard__string__Object__to_s]))(var515) /* to_s on <var515:Array[Object]>*/;
2270 }
2271 {
2272 nit___nit__AbstractCompilerVisitor___add(self, var518); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2273 }
2274 var_520 = var_maybe_null;
2275 if (var_maybe_null){
2276 if (varonce521) {
2277 var522 = varonce521;
2278 } else {
2279 var523 = "0";
2280 var524 = 1;
2281 var525 = standard___standard__NativeString___to_s_with_length(var523, var524);
2282 var522 = var525;
2283 varonce521 = var522;
2284 }
2285 {
2286 var526 = ((short int (*)(val* self, val* p0))(var_accept_null->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_accept_null, var522) /* == on <var_accept_null:String>*/;
2287 }
2288 var519 = var526;
2289 } else {
2290 var519 = var_520;
2291 }
2292 if (var519){
2293 if (varonce527) {
2294 var528 = varonce527;
2295 } else {
2296 var529 = "is_nullable";
2297 var530 = 11;
2298 var531 = standard___standard__NativeString___to_s_with_length(var529, var530);
2299 var528 = var531;
2300 varonce527 = var528;
2301 }
2302 {
2303 var532 = nit___nit__AbstractCompilerVisitor___get_name(self, var528);
2304 }
2305 var_is_nullable = var532;
2306 if (varonce533) {
2307 var534 = varonce533;
2308 } else {
2309 var535 = "short int ";
2310 var536 = 10;
2311 var537 = standard___standard__NativeString___to_s_with_length(var535, var536);
2312 var534 = var537;
2313 varonce533 = var534;
2314 }
2315 if (varonce538) {
2316 var539 = varonce538;
2317 } else {
2318 var540 = ";";
2319 var541 = 1;
2320 var542 = standard___standard__NativeString___to_s_with_length(var540, var541);
2321 var539 = var542;
2322 varonce538 = var539;
2323 }
2324 var543 = NEW_standard__Array(&type_standard__Array__standard__Object);
2325 { /* var543 = array_instance Array[Object] */
2326 var544 = 3;
2327 var545 = NEW_standard__NativeArray(var544, &type_standard__NativeArray__standard__Object);
2328 ((struct instance_standard__NativeArray*)var545)->values[0] = (val*) var534;
2329 ((struct instance_standard__NativeArray*)var545)->values[1] = (val*) var_is_nullable;
2330 ((struct instance_standard__NativeArray*)var545)->values[2] = (val*) var539;
2331 {
2332 ((void (*)(val* self, val* p0, long p1))(var543->class->vft[COLOR_standard__array__Array__with_native]))(var543, var545, var544) /* with_native on <var543:Array[Object]>*/;
2333 }
2334 }
2335 {
2336 var546 = ((val* (*)(val* self))(var543->class->vft[COLOR_standard__string__Object__to_s]))(var543) /* to_s on <var543:Array[Object]>*/;
2337 }
2338 {
2339 nit___nit__AbstractCompilerVisitor___add_decl(self, var546); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateErasureCompilerVisitor>*/
2340 }
2341 if (varonce547) {
2342 var548 = varonce547;
2343 } else {
2344 var549 = " = ";
2345 var550 = 3;
2346 var551 = standard___standard__NativeString___to_s_with_length(var549, var550);
2347 var548 = var551;
2348 varonce547 = var548;
2349 }
2350 if (varonce552) {
2351 var553 = varonce552;
2352 } else {
2353 var554 = ".is_nullable;";
2354 var555 = 13;
2355 var556 = standard___standard__NativeString___to_s_with_length(var554, var555);
2356 var553 = var556;
2357 varonce552 = var553;
2358 }
2359 var557 = NEW_standard__Array(&type_standard__Array__standard__Object);
2360 { /* var557 = array_instance Array[Object] */
2361 var558 = 4;
2362 var559 = NEW_standard__NativeArray(var558, &type_standard__NativeArray__standard__Object);
2363 ((struct instance_standard__NativeArray*)var559)->values[0] = (val*) var_is_nullable;
2364 ((struct instance_standard__NativeArray*)var559)->values[1] = (val*) var548;
2365 ((struct instance_standard__NativeArray*)var559)->values[2] = (val*) var_entry;
2366 ((struct instance_standard__NativeArray*)var559)->values[3] = (val*) var553;
2367 {
2368 ((void (*)(val* self, val* p0, long p1))(var557->class->vft[COLOR_standard__array__Array__with_native]))(var557, var559, var558) /* with_native on <var557:Array[Object]>*/;
2369 }
2370 }
2371 {
2372 var560 = ((val* (*)(val* self))(var557->class->vft[COLOR_standard__string__Object__to_s]))(var557) /* to_s on <var557:Array[Object]>*/;
2373 }
2374 {
2375 nit___nit__AbstractCompilerVisitor___add(self, var560); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2376 }
2377 {
2378 var561 = standard___standard__String___Object__to_s(var_is_nullable);
2379 }
2380 var_accept_null = var561;
2381 } else {
2382 }
2383 {
2384 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
2385 var564 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
2386 if (unlikely(var564 == NULL)) {
2387 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2388 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
2389 show_backtrace(1);
2390 }
2391 var562 = var564;
2392 RET_LABEL563:(void)0;
2393 }
2394 }
2395 {
2396 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var562) on <var562:AbstractCompiler(SeparateCompiler)> */
2397 var567 = var562->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var562:AbstractCompiler(SeparateCompiler)> */
2398 if (unlikely(var567 == NULL)) {
2399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2400 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 481);
2401 show_backtrace(1);
2402 }
2403 var565 = var567;
2404 RET_LABEL566:(void)0;
2405 }
2406 }
2407 {
2408 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var565) on <var565:ModelBuilder> */
2409 var570 = var565->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var565:ModelBuilder> */
2410 if (unlikely(var570 == NULL)) {
2411 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2412 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
2413 show_backtrace(1);
2414 }
2415 var568 = var570;
2416 RET_LABEL569:(void)0;
2417 }
2418 }
2419 {
2420 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (var568) on <var568:ToolContext> */
2421 var573 = var568->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var568:ToolContext> */
2422 if (unlikely(var573 == NULL)) {
2423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
2424 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 59);
2425 show_backtrace(1);
2426 }
2427 var571 = var573;
2428 RET_LABEL572:(void)0;
2429 }
2430 }
2431 {
2432 { /* Inline opts#Option#value (var571) on <var571:OptionBool> */
2433 var576 = var571->attrs[COLOR_opts__Option___value].val; /* _value on <var571:OptionBool> */
2434 var574 = var576;
2435 RET_LABEL575:(void)0;
2436 }
2437 }
2438 var577 = ((struct instance_standard__Bool*)var574)->value; /* autounbox from nullable Object to Bool */;
2439 if (var577){
2440 {
2441 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
2442 var580 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
2443 if (unlikely(var580 == NULL)) {
2444 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2445 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
2446 show_backtrace(1);
2447 }
2448 var578 = var580;
2449 RET_LABEL579:(void)0;
2450 }
2451 }
2452 {
2453 { /* Inline abstract_compiler#AbstractCompiler#count_type_test_unresolved (var578) on <var578:AbstractCompiler(SeparateCompiler)> */
2454 var583 = var578->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <var578:AbstractCompiler(SeparateCompiler)> */
2455 if (unlikely(var583 == NULL)) {
2456 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
2457 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 965);
2458 show_backtrace(1);
2459 }
2460 var581 = var583;
2461 RET_LABEL582:(void)0;
2462 }
2463 }
2464 var_584 = var581;
2465 var_585 = var_tag;
2466 {
2467 var586 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var_584, var_585);
2468 }
2469 var587 = 1;
2470 {
2471 { /* Inline kernel#Int#+ (var586,var587) on <var586:nullable Object(Int)> */
2472 /* Covariant cast for argument 0 (i) <var587:Int> isa OTHER */
2473 /* <var587:Int> isa OTHER */
2474 var590 = 1; /* easy <var587:Int> isa OTHER*/
2475 if (unlikely(!var590)) {
2476 var_class_name593 = type_standard__Int.name;
2477 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name593);
2478 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
2479 show_backtrace(1);
2480 }
2481 var594 = ((struct instance_standard__Int*)var586)->value; /* autounbox from nullable Object to Int */;
2482 var595 = var594 + var587;
2483 var588 = var595;
2484 goto RET_LABEL589;
2485 RET_LABEL589:(void)0;
2486 }
2487 }
2488 {
2489 var596 = BOX_standard__Int(var588); /* autobox from Int to nullable Object */
2490 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var_584, var_585, var596); /* Direct call hash_collection#HashMap#[]= on <var_584:HashMap[String, Int]>*/
2491 }
2492 if (varonce597) {
2493 var598 = varonce597;
2494 } else {
2495 var599 = "count_type_test_unresolved_";
2496 var600 = 27;
2497 var601 = standard___standard__NativeString___to_s_with_length(var599, var600);
2498 var598 = var601;
2499 varonce597 = var598;
2500 }
2501 if (varonce602) {
2502 var603 = varonce602;
2503 } else {
2504 var604 = "++;";
2505 var605 = 3;
2506 var606 = standard___standard__NativeString___to_s_with_length(var604, var605);
2507 var603 = var606;
2508 varonce602 = var603;
2509 }
2510 var607 = NEW_standard__Array(&type_standard__Array__standard__Object);
2511 { /* var607 = array_instance Array[Object] */
2512 var608 = 3;
2513 var609 = NEW_standard__NativeArray(var608, &type_standard__NativeArray__standard__Object);
2514 ((struct instance_standard__NativeArray*)var609)->values[0] = (val*) var598;
2515 ((struct instance_standard__NativeArray*)var609)->values[1] = (val*) var_tag;
2516 ((struct instance_standard__NativeArray*)var609)->values[2] = (val*) var603;
2517 {
2518 ((void (*)(val* self, val* p0, long p1))(var607->class->vft[COLOR_standard__array__Array__with_native]))(var607, var609, var608) /* with_native on <var607:Array[Object]>*/;
2519 }
2520 }
2521 {
2522 var610 = ((val* (*)(val* self))(var607->class->vft[COLOR_standard__string__Object__to_s]))(var607) /* to_s on <var607:Array[Object]>*/;
2523 }
2524 {
2525 nit___nit__AbstractCompilerVisitor___add(self, var610); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2526 }
2527 } else {
2528 }
2529 } else {
2530 if (varonce611) {
2531 var612 = varonce611;
2532 } else {
2533 var613 = "type_test(";
2534 var614 = 10;
2535 var615 = standard___standard__NativeString___to_s_with_length(var613, var614);
2536 var612 = var615;
2537 varonce611 = var612;
2538 }
2539 {
2540 var616 = nit___nit__RuntimeVariable___standard__string__Object__inspect(var_value);
2541 }
2542 if (varonce617) {
2543 var618 = varonce617;
2544 } else {
2545 var619 = ", ";
2546 var620 = 2;
2547 var621 = standard___standard__NativeString___to_s_with_length(var619, var620);
2548 var618 = var621;
2549 varonce617 = var618;
2550 }
2551 if (varonce622) {
2552 var623 = varonce622;
2553 } else {
2554 var624 = ")";
2555 var625 = 1;
2556 var626 = standard___standard__NativeString___to_s_with_length(var624, var625);
2557 var623 = var626;
2558 varonce622 = var623;
2559 }
2560 var627 = NEW_standard__Array(&type_standard__Array__standard__Object);
2561 { /* var627 = array_instance Array[Object] */
2562 var628 = 5;
2563 var629 = NEW_standard__NativeArray(var628, &type_standard__NativeArray__standard__Object);
2564 ((struct instance_standard__NativeArray*)var629)->values[0] = (val*) var612;
2565 ((struct instance_standard__NativeArray*)var629)->values[1] = (val*) var616;
2566 ((struct instance_standard__NativeArray*)var629)->values[2] = (val*) var618;
2567 ((struct instance_standard__NativeArray*)var629)->values[3] = (val*) var_mtype;
2568 ((struct instance_standard__NativeArray*)var629)->values[4] = (val*) var623;
2569 {
2570 ((void (*)(val* self, val* p0, long p1))(var627->class->vft[COLOR_standard__array__Array__with_native]))(var627, var629, var628) /* with_native on <var627:Array[Object]>*/;
2571 }
2572 }
2573 {
2574 var630 = ((val* (*)(val* self))(var627->class->vft[COLOR_standard__string__Object__to_s]))(var627) /* to_s on <var627:Array[Object]>*/;
2575 }
2576 {
2577 nit___nit__AbstractCompilerVisitor___debug(self, var630); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateErasureCompilerVisitor>*/
2578 }
2579 PRINT_ERROR("Runtime error: %s", "Aborted");
2580 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 571);
2581 show_backtrace(1);
2582 }
2583 }
2584 if (var_maybe_null){
2585 if (varonce631) {
2586 var632 = varonce631;
2587 } else {
2588 var633 = "if(";
2589 var634 = 3;
2590 var635 = standard___standard__NativeString___to_s_with_length(var633, var634);
2591 var632 = var635;
2592 varonce631 = var632;
2593 }
2594 if (varonce636) {
2595 var637 = varonce636;
2596 } else {
2597 var638 = " == NULL) {";
2598 var639 = 11;
2599 var640 = standard___standard__NativeString___to_s_with_length(var638, var639);
2600 var637 = var640;
2601 varonce636 = var637;
2602 }
2603 var641 = NEW_standard__Array(&type_standard__Array__standard__Object);
2604 { /* var641 = array_instance Array[Object] */
2605 var642 = 3;
2606 var643 = NEW_standard__NativeArray(var642, &type_standard__NativeArray__standard__Object);
2607 ((struct instance_standard__NativeArray*)var643)->values[0] = (val*) var632;
2608 ((struct instance_standard__NativeArray*)var643)->values[1] = (val*) var_value;
2609 ((struct instance_standard__NativeArray*)var643)->values[2] = (val*) var637;
2610 {
2611 ((void (*)(val* self, val* p0, long p1))(var641->class->vft[COLOR_standard__array__Array__with_native]))(var641, var643, var642) /* with_native on <var641:Array[Object]>*/;
2612 }
2613 }
2614 {
2615 var644 = ((val* (*)(val* self))(var641->class->vft[COLOR_standard__string__Object__to_s]))(var641) /* to_s on <var641:Array[Object]>*/;
2616 }
2617 {
2618 nit___nit__AbstractCompilerVisitor___add(self, var644); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2619 }
2620 if (varonce645) {
2621 var646 = varonce645;
2622 } else {
2623 var647 = " = ";
2624 var648 = 3;
2625 var649 = standard___standard__NativeString___to_s_with_length(var647, var648);
2626 var646 = var649;
2627 varonce645 = var646;
2628 }
2629 if (varonce650) {
2630 var651 = varonce650;
2631 } else {
2632 var652 = ";";
2633 var653 = 1;
2634 var654 = standard___standard__NativeString___to_s_with_length(var652, var653);
2635 var651 = var654;
2636 varonce650 = var651;
2637 }
2638 var655 = NEW_standard__Array(&type_standard__Array__standard__Object);
2639 { /* var655 = array_instance Array[Object] */
2640 var656 = 4;
2641 var657 = NEW_standard__NativeArray(var656, &type_standard__NativeArray__standard__Object);
2642 ((struct instance_standard__NativeArray*)var657)->values[0] = (val*) var_res;
2643 ((struct instance_standard__NativeArray*)var657)->values[1] = (val*) var646;
2644 ((struct instance_standard__NativeArray*)var657)->values[2] = (val*) var_accept_null;
2645 ((struct instance_standard__NativeArray*)var657)->values[3] = (val*) var651;
2646 {
2647 ((void (*)(val* self, val* p0, long p1))(var655->class->vft[COLOR_standard__array__Array__with_native]))(var655, var657, var656) /* with_native on <var655:Array[Object]>*/;
2648 }
2649 }
2650 {
2651 var658 = ((val* (*)(val* self))(var655->class->vft[COLOR_standard__string__Object__to_s]))(var655) /* to_s on <var655:Array[Object]>*/;
2652 }
2653 {
2654 nit___nit__AbstractCompilerVisitor___add(self, var658); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2655 }
2656 if (varonce659) {
2657 var660 = varonce659;
2658 } else {
2659 var661 = "} else {";
2660 var662 = 8;
2661 var663 = standard___standard__NativeString___to_s_with_length(var661, var662);
2662 var660 = var663;
2663 varonce659 = var660;
2664 }
2665 {
2666 nit___nit__AbstractCompilerVisitor___add(self, var660); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2667 }
2668 } else {
2669 }
2670 if (varonce664) {
2671 var665 = varonce664;
2672 } else {
2673 var666 = "if(";
2674 var667 = 3;
2675 var668 = standard___standard__NativeString___to_s_with_length(var666, var667);
2676 var665 = var668;
2677 varonce664 = var665;
2678 }
2679 if (varonce669) {
2680 var670 = varonce669;
2681 } else {
2682 var671 = " >= ";
2683 var672 = 4;
2684 var673 = standard___standard__NativeString___to_s_with_length(var671, var672);
2685 var670 = var673;
2686 varonce669 = var670;
2687 }
2688 if (varonce674) {
2689 var675 = varonce674;
2690 } else {
2691 var676 = "type_table->size) {";
2692 var677 = 19;
2693 var678 = standard___standard__NativeString___to_s_with_length(var676, var677);
2694 var675 = var678;
2695 varonce674 = var675;
2696 }
2697 var679 = NEW_standard__Array(&type_standard__Array__standard__Object);
2698 { /* var679 = array_instance Array[Object] */
2699 var680 = 5;
2700 var681 = NEW_standard__NativeArray(var680, &type_standard__NativeArray__standard__Object);
2701 ((struct instance_standard__NativeArray*)var681)->values[0] = (val*) var665;
2702 ((struct instance_standard__NativeArray*)var681)->values[1] = (val*) var_cltype;
2703 ((struct instance_standard__NativeArray*)var681)->values[2] = (val*) var670;
2704 ((struct instance_standard__NativeArray*)var681)->values[3] = (val*) var_class_ptr;
2705 ((struct instance_standard__NativeArray*)var681)->values[4] = (val*) var675;
2706 {
2707 ((void (*)(val* self, val* p0, long p1))(var679->class->vft[COLOR_standard__array__Array__with_native]))(var679, var681, var680) /* with_native on <var679:Array[Object]>*/;
2708 }
2709 }
2710 {
2711 var682 = ((val* (*)(val* self))(var679->class->vft[COLOR_standard__string__Object__to_s]))(var679) /* to_s on <var679:Array[Object]>*/;
2712 }
2713 {
2714 nit___nit__AbstractCompilerVisitor___add(self, var682); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2715 }
2716 if (varonce683) {
2717 var684 = varonce683;
2718 } else {
2719 var685 = " = 0;";
2720 var686 = 5;
2721 var687 = standard___standard__NativeString___to_s_with_length(var685, var686);
2722 var684 = var687;
2723 varonce683 = var684;
2724 }
2725 var688 = NEW_standard__Array(&type_standard__Array__standard__Object);
2726 { /* var688 = array_instance Array[Object] */
2727 var689 = 2;
2728 var690 = NEW_standard__NativeArray(var689, &type_standard__NativeArray__standard__Object);
2729 ((struct instance_standard__NativeArray*)var690)->values[0] = (val*) var_res;
2730 ((struct instance_standard__NativeArray*)var690)->values[1] = (val*) var684;
2731 {
2732 ((void (*)(val* self, val* p0, long p1))(var688->class->vft[COLOR_standard__array__Array__with_native]))(var688, var690, var689) /* with_native on <var688:Array[Object]>*/;
2733 }
2734 }
2735 {
2736 var691 = ((val* (*)(val* self))(var688->class->vft[COLOR_standard__string__Object__to_s]))(var688) /* to_s on <var688:Array[Object]>*/;
2737 }
2738 {
2739 nit___nit__AbstractCompilerVisitor___add(self, var691); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2740 }
2741 if (varonce692) {
2742 var693 = varonce692;
2743 } else {
2744 var694 = "} else {";
2745 var695 = 8;
2746 var696 = standard___standard__NativeString___to_s_with_length(var694, var695);
2747 var693 = var696;
2748 varonce692 = var693;
2749 }
2750 {
2751 nit___nit__AbstractCompilerVisitor___add(self, var693); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2752 }
2753 if (varonce697) {
2754 var698 = varonce697;
2755 } else {
2756 var699 = " = ";
2757 var700 = 3;
2758 var701 = standard___standard__NativeString___to_s_with_length(var699, var700);
2759 var698 = var701;
2760 varonce697 = var698;
2761 }
2762 if (varonce702) {
2763 var703 = varonce702;
2764 } else {
2765 var704 = "type_table->table[";
2766 var705 = 18;
2767 var706 = standard___standard__NativeString___to_s_with_length(var704, var705);
2768 var703 = var706;
2769 varonce702 = var703;
2770 }
2771 if (varonce707) {
2772 var708 = varonce707;
2773 } else {
2774 var709 = "] == ";
2775 var710 = 5;
2776 var711 = standard___standard__NativeString___to_s_with_length(var709, var710);
2777 var708 = var711;
2778 varonce707 = var708;
2779 }
2780 if (varonce712) {
2781 var713 = varonce712;
2782 } else {
2783 var714 = ";";
2784 var715 = 1;
2785 var716 = standard___standard__NativeString___to_s_with_length(var714, var715);
2786 var713 = var716;
2787 varonce712 = var713;
2788 }
2789 var717 = NEW_standard__Array(&type_standard__Array__standard__Object);
2790 { /* var717 = array_instance Array[Object] */
2791 var718 = 8;
2792 var719 = NEW_standard__NativeArray(var718, &type_standard__NativeArray__standard__Object);
2793 ((struct instance_standard__NativeArray*)var719)->values[0] = (val*) var_res;
2794 ((struct instance_standard__NativeArray*)var719)->values[1] = (val*) var698;
2795 ((struct instance_standard__NativeArray*)var719)->values[2] = (val*) var_class_ptr;
2796 ((struct instance_standard__NativeArray*)var719)->values[3] = (val*) var703;
2797 ((struct instance_standard__NativeArray*)var719)->values[4] = (val*) var_cltype;
2798 ((struct instance_standard__NativeArray*)var719)->values[5] = (val*) var708;
2799 ((struct instance_standard__NativeArray*)var719)->values[6] = (val*) var_idtype;
2800 ((struct instance_standard__NativeArray*)var719)->values[7] = (val*) var713;
2801 {
2802 ((void (*)(val* self, val* p0, long p1))(var717->class->vft[COLOR_standard__array__Array__with_native]))(var717, var719, var718) /* with_native on <var717:Array[Object]>*/;
2803 }
2804 }
2805 {
2806 var720 = ((val* (*)(val* self))(var717->class->vft[COLOR_standard__string__Object__to_s]))(var717) /* to_s on <var717:Array[Object]>*/;
2807 }
2808 {
2809 nit___nit__AbstractCompilerVisitor___add(self, var720); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2810 }
2811 if (varonce721) {
2812 var722 = varonce721;
2813 } else {
2814 var723 = "}";
2815 var724 = 1;
2816 var725 = standard___standard__NativeString___to_s_with_length(var723, var724);
2817 var722 = var725;
2818 varonce721 = var722;
2819 }
2820 {
2821 nit___nit__AbstractCompilerVisitor___add(self, var722); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2822 }
2823 if (var_maybe_null){
2824 if (varonce726) {
2825 var727 = varonce726;
2826 } else {
2827 var728 = "}";
2828 var729 = 1;
2829 var730 = standard___standard__NativeString___to_s_with_length(var728, var729);
2830 var727 = var730;
2831 varonce726 = var727;
2832 }
2833 {
2834 nit___nit__AbstractCompilerVisitor___add(self, var727); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
2835 }
2836 } else {
2837 }
2838 var = var_res;
2839 goto RET_LABEL;
2840 RET_LABEL:;
2841 return var;
2842 }
2843 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#unbox_extern for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
2844 val* nit___nit__SeparateErasureCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__unbox_extern(val* self, val* p0, val* p1) {
2845 val* var /* : RuntimeVariable */;
2846 val* var_value /* var value: RuntimeVariable */;
2847 val* var_mtype /* var mtype: MType */;
2848 short int var1 /* : Bool */;
2849 short int var2 /* : Bool */;
2850 short int var3 /* : Bool */;
2851 int cltype;
2852 int idtype;
2853 short int var_ /* var : Bool */;
2854 val* var4 /* : MClass */;
2855 val* var6 /* : MClass */;
2856 val* var7 /* : MClassKind */;
2857 val* var9 /* : MClassKind */;
2858 val* var10 /* : MClassKind */;
2859 short int var11 /* : Bool */;
2860 val* var_other /* var other: nullable Object */;
2861 short int var13 /* : Bool */;
2862 short int var15 /* : Bool */;
2863 short int var_16 /* var : Bool */;
2864 val* var17 /* : MClass */;
2865 val* var19 /* : MClass */;
2866 val* var20 /* : String */;
2867 val* var22 /* : String */;
2868 static val* varonce;
2869 val* var23 /* : String */;
2870 char* var24 /* : NativeString */;
2871 long var25 /* : Int */;
2872 val* var26 /* : FlatString */;
2873 short int var27 /* : Bool */;
2874 val* var_other29 /* var other: nullable Object */;
2875 short int var30 /* : Bool */;
2876 short int var31 /* : Bool */;
2877 val* var32 /* : AbstractCompiler */;
2878 val* var34 /* : AbstractCompiler */;
2879 val* var35 /* : MModule */;
2880 val* var37 /* : MModule */;
2881 val* var38 /* : MClassType */;
2882 val* var_pointer_type /* var pointer_type: MClassType */;
2883 val* var39 /* : RuntimeVariable */;
2884 val* var_res /* var res: RuntimeVariable */;
2885 static val* varonce40;
2886 val* var41 /* : String */;
2887 char* var42 /* : NativeString */;
2888 long var43 /* : Int */;
2889 val* var44 /* : FlatString */;
2890 val* var45 /* : String */;
2891 static val* varonce46;
2892 val* var47 /* : String */;
2893 char* var48 /* : NativeString */;
2894 long var49 /* : Int */;
2895 val* var50 /* : FlatString */;
2896 static val* varonce51;
2897 val* var52 /* : String */;
2898 char* var53 /* : NativeString */;
2899 long var54 /* : Int */;
2900 val* var55 /* : FlatString */;
2901 val* var56 /* : MType */;
2902 val* var58 /* : MType */;
2903 static val* varonce59;
2904 val* var60 /* : String */;
2905 char* var61 /* : NativeString */;
2906 long var62 /* : Int */;
2907 val* var63 /* : FlatString */;
2908 val* var64 /* : Array[Object] */;
2909 long var65 /* : Int */;
2910 val* var66 /* : NativeArray[Object] */;
2911 val* var67 /* : String */;
2912 var_value = p0;
2913 var_mtype = p1;
2914 /* <var_mtype:MType> isa MClassType */
2915 cltype = type_nit__MClassType.color;
2916 idtype = type_nit__MClassType.id;
2917 if(cltype >= var_mtype->type->table_size) {
2918 var3 = 0;
2919 } else {
2920 var3 = var_mtype->type->type_table[cltype] == idtype;
2921 }
2922 var_ = var3;
2923 if (var3){
2924 {
2925 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
2926 var6 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
2927 if (unlikely(var6 == NULL)) {
2928 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2929 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
2930 show_backtrace(1);
2931 }
2932 var4 = var6;
2933 RET_LABEL5:(void)0;
2934 }
2935 }
2936 {
2937 { /* Inline model#MClass#kind (var4) on <var4:MClass> */
2938 var9 = var4->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var4:MClass> */
2939 if (unlikely(var9 == NULL)) {
2940 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2941 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
2942 show_backtrace(1);
2943 }
2944 var7 = var9;
2945 RET_LABEL8:(void)0;
2946 }
2947 }
2948 {
2949 var10 = nit__model___standard__Object___extern_kind(self);
2950 }
2951 {
2952 { /* Inline kernel#Object#== (var7,var10) on <var7:MClassKind> */
2953 var_other = var10;
2954 {
2955 { /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:MClassKind> */
2956 var15 = var7 == var_other;
2957 var13 = var15;
2958 goto RET_LABEL14;
2959 RET_LABEL14:(void)0;
2960 }
2961 }
2962 var11 = var13;
2963 goto RET_LABEL12;
2964 RET_LABEL12:(void)0;
2965 }
2966 }
2967 var2 = var11;
2968 } else {
2969 var2 = var_;
2970 }
2971 var_16 = var2;
2972 if (var2){
2973 {
2974 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
2975 var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
2976 if (unlikely(var19 == NULL)) {
2977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2978 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
2979 show_backtrace(1);
2980 }
2981 var17 = var19;
2982 RET_LABEL18:(void)0;
2983 }
2984 }
2985 {
2986 { /* Inline model#MClass#name (var17) on <var17:MClass> */
2987 var22 = var17->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var17:MClass> */
2988 if (unlikely(var22 == NULL)) {
2989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2990 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
2991 show_backtrace(1);
2992 }
2993 var20 = var22;
2994 RET_LABEL21:(void)0;
2995 }
2996 }
2997 if (varonce) {
2998 var23 = varonce;
2999 } else {
3000 var24 = "NativeString";
3001 var25 = 12;
3002 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
3003 var23 = var26;
3004 varonce = var23;
3005 }
3006 {
3007 { /* Inline kernel#Object#!= (var20,var23) on <var20:String> */
3008 var_other29 = var23;
3009 {
3010 var30 = ((short int (*)(val* self, val* p0))(var20->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var20, var_other29) /* == on <var20:String>*/;
3011 }
3012 var31 = !var30;
3013 var27 = var31;
3014 goto RET_LABEL28;
3015 RET_LABEL28:(void)0;
3016 }
3017 }
3018 var1 = var27;
3019 } else {
3020 var1 = var_16;
3021 }
3022 if (var1){
3023 {
3024 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
3025 var34 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3026 if (unlikely(var34 == NULL)) {
3027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3028 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
3029 show_backtrace(1);
3030 }
3031 var32 = var34;
3032 RET_LABEL33:(void)0;
3033 }
3034 }
3035 {
3036 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var32) on <var32:AbstractCompiler(SeparateCompiler)> */
3037 var37 = var32->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var32:AbstractCompiler(SeparateCompiler)> */
3038 if (unlikely(var37 == NULL)) {
3039 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3040 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
3041 show_backtrace(1);
3042 }
3043 var35 = var37;
3044 RET_LABEL36:(void)0;
3045 }
3046 }
3047 {
3048 var38 = nit__model___MModule___pointer_type(var35);
3049 }
3050 var_pointer_type = var38;
3051 {
3052 var39 = nit___nit__AbstractCompilerVisitor___new_var_extern(self, var_mtype);
3053 }
3054 var_res = var39;
3055 if (varonce40) {
3056 var41 = varonce40;
3057 } else {
3058 var42 = " = ((struct instance_";
3059 var43 = 21;
3060 var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
3061 var41 = var44;
3062 varonce40 = var41;
3063 }
3064 {
3065 var45 = ((val* (*)(val* self))(var_pointer_type->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_pointer_type) /* c_name on <var_pointer_type:MClassType>*/;
3066 }
3067 if (varonce46) {
3068 var47 = varonce46;
3069 } else {
3070 var48 = "*)";
3071 var49 = 2;
3072 var50 = standard___standard__NativeString___to_s_with_length(var48, var49);
3073 var47 = var50;
3074 varonce46 = var47;
3075 }
3076 if (varonce51) {
3077 var52 = varonce51;
3078 } else {
3079 var53 = ")->value; /* unboxing ";
3080 var54 = 22;
3081 var55 = standard___standard__NativeString___to_s_with_length(var53, var54);
3082 var52 = var55;
3083 varonce51 = var52;
3084 }
3085 {
3086 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3087 var58 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3088 if (unlikely(var58 == NULL)) {
3089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3090 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
3091 show_backtrace(1);
3092 }
3093 var56 = var58;
3094 RET_LABEL57:(void)0;
3095 }
3096 }
3097 if (varonce59) {
3098 var60 = varonce59;
3099 } else {
3100 var61 = " */";
3101 var62 = 3;
3102 var63 = standard___standard__NativeString___to_s_with_length(var61, var62);
3103 var60 = var63;
3104 varonce59 = var60;
3105 }
3106 var64 = NEW_standard__Array(&type_standard__Array__standard__Object);
3107 { /* var64 = array_instance Array[Object] */
3108 var65 = 8;
3109 var66 = NEW_standard__NativeArray(var65, &type_standard__NativeArray__standard__Object);
3110 ((struct instance_standard__NativeArray*)var66)->values[0] = (val*) var_res;
3111 ((struct instance_standard__NativeArray*)var66)->values[1] = (val*) var41;
3112 ((struct instance_standard__NativeArray*)var66)->values[2] = (val*) var45;
3113 ((struct instance_standard__NativeArray*)var66)->values[3] = (val*) var47;
3114 ((struct instance_standard__NativeArray*)var66)->values[4] = (val*) var_value;
3115 ((struct instance_standard__NativeArray*)var66)->values[5] = (val*) var52;
3116 ((struct instance_standard__NativeArray*)var66)->values[6] = (val*) var56;
3117 ((struct instance_standard__NativeArray*)var66)->values[7] = (val*) var60;
3118 {
3119 ((void (*)(val* self, val* p0, long p1))(var64->class->vft[COLOR_standard__array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
3120 }
3121 }
3122 {
3123 var67 = ((val* (*)(val* self))(var64->class->vft[COLOR_standard__string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
3124 }
3125 {
3126 nit___nit__AbstractCompilerVisitor___add(self, var67); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
3127 }
3128 var = var_res;
3129 goto RET_LABEL;
3130 } else {
3131 var = var_value;
3132 goto RET_LABEL;
3133 }
3134 RET_LABEL:;
3135 return var;
3136 }
3137 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#box_extern for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
3138 val* nit___nit__SeparateErasureCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__box_extern(val* self, val* p0, val* p1) {
3139 val* var /* : RuntimeVariable */;
3140 val* var_value /* var value: RuntimeVariable */;
3141 val* var_mtype /* var mtype: MType */;
3142 short int var1 /* : Bool */;
3143 short int var2 /* : Bool */;
3144 short int var3 /* : Bool */;
3145 int cltype;
3146 int idtype;
3147 short int var_ /* var : Bool */;
3148 val* var4 /* : MClass */;
3149 val* var6 /* : MClass */;
3150 val* var7 /* : MClassKind */;
3151 val* var9 /* : MClassKind */;
3152 val* var10 /* : MClassKind */;
3153 short int var11 /* : Bool */;
3154 val* var_other /* var other: nullable Object */;
3155 short int var13 /* : Bool */;
3156 short int var15 /* : Bool */;
3157 short int var_16 /* var : Bool */;
3158 val* var17 /* : MClass */;
3159 val* var19 /* : MClass */;
3160 val* var20 /* : String */;
3161 val* var22 /* : String */;
3162 static val* varonce;
3163 val* var23 /* : String */;
3164 char* var24 /* : NativeString */;
3165 long var25 /* : Int */;
3166 val* var26 /* : FlatString */;
3167 short int var27 /* : Bool */;
3168 val* var_other29 /* var other: nullable Object */;
3169 short int var30 /* : Bool */;
3170 short int var31 /* : Bool */;
3171 val* var32 /* : AbstractCompiler */;
3172 val* var34 /* : AbstractCompiler */;
3173 val* var35 /* : MModule */;
3174 val* var37 /* : MModule */;
3175 val* var38 /* : MClassType */;
3176 val* var_valtype /* var valtype: MClassType */;
3177 val* var39 /* : RuntimeVariable */;
3178 val* var_res /* var res: RuntimeVariable */;
3179 short int var40 /* : Bool */;
3180 val* var41 /* : AbstractCompiler */;
3181 val* var43 /* : AbstractCompiler */;
3182 val* var44 /* : nullable RapidTypeAnalysis */;
3183 val* var46 /* : nullable RapidTypeAnalysis */;
3184 val* var47 /* : null */;
3185 short int var48 /* : Bool */;
3186 short int var49 /* : Bool */;
3187 short int var51 /* : Bool */;
3188 short int var52 /* : Bool */;
3189 short int var_53 /* var : Bool */;
3190 val* var54 /* : AbstractCompiler */;
3191 val* var56 /* : AbstractCompiler */;
3192 val* var57 /* : nullable RapidTypeAnalysis */;
3193 val* var59 /* : nullable RapidTypeAnalysis */;
3194 val* var60 /* : HashSet[MClassType] */;
3195 val* var62 /* : HashSet[MClassType] */;
3196 val* var63 /* : MType */;
3197 val* var65 /* : MType */;
3198 short int var66 /* : Bool */;
3199 int cltype67;
3200 int idtype68;
3201 const char* var_class_name;
3202 short int var69 /* : Bool */;
3203 short int var70 /* : Bool */;
3204 static val* varonce71;
3205 val* var72 /* : String */;
3206 char* var73 /* : NativeString */;
3207 long var74 /* : Int */;
3208 val* var75 /* : FlatString */;
3209 val* var76 /* : MType */;
3210 val* var78 /* : MType */;
3211 static val* varonce79;
3212 val* var80 /* : String */;
3213 char* var81 /* : NativeString */;
3214 long var82 /* : Int */;
3215 val* var83 /* : FlatString */;
3216 val* var84 /* : MType */;
3217 val* var86 /* : MType */;
3218 static val* varonce87;
3219 val* var88 /* : String */;
3220 char* var89 /* : NativeString */;
3221 long var90 /* : Int */;
3222 val* var91 /* : FlatString */;
3223 val* var92 /* : Array[Object] */;
3224 long var93 /* : Int */;
3225 val* var94 /* : NativeArray[Object] */;
3226 val* var95 /* : String */;
3227 static val* varonce96;
3228 val* var97 /* : String */;
3229 char* var98 /* : NativeString */;
3230 long var99 /* : Int */;
3231 val* var100 /* : FlatString */;
3232 static val* varonce101;
3233 val* var102 /* : String */;
3234 char* var103 /* : NativeString */;
3235 long var104 /* : Int */;
3236 val* var105 /* : FlatString */;
3237 val* var106 /* : String */;
3238 val* var107 /* : Array[Object] */;
3239 long var108 /* : Int */;
3240 val* var109 /* : NativeArray[Object] */;
3241 val* var110 /* : String */;
3242 static val* varonce111;
3243 val* var112 /* : String */;
3244 char* var113 /* : NativeString */;
3245 long var114 /* : Int */;
3246 val* var115 /* : FlatString */;
3247 val* var116 /* : String */;
3248 static val* varonce117;
3249 val* var118 /* : String */;
3250 char* var119 /* : NativeString */;
3251 long var120 /* : Int */;
3252 val* var121 /* : FlatString */;
3253 static val* varonce122;
3254 val* var123 /* : String */;
3255 char* var124 /* : NativeString */;
3256 long var125 /* : Int */;
3257 val* var126 /* : FlatString */;
3258 val* var127 /* : MType */;
3259 val* var129 /* : MType */;
3260 static val* varonce130;
3261 val* var131 /* : String */;
3262 char* var132 /* : NativeString */;
3263 long var133 /* : Int */;
3264 val* var134 /* : FlatString */;
3265 val* var135 /* : Array[Object] */;
3266 long var136 /* : Int */;
3267 val* var137 /* : NativeArray[Object] */;
3268 val* var138 /* : String */;
3269 static val* varonce139;
3270 val* var140 /* : String */;
3271 char* var141 /* : NativeString */;
3272 long var142 /* : Int */;
3273 val* var143 /* : FlatString */;
3274 val* var144 /* : String */;
3275 val* var145 /* : Array[Object] */;
3276 long var146 /* : Int */;
3277 val* var147 /* : NativeArray[Object] */;
3278 val* var148 /* : String */;
3279 static val* varonce149;
3280 val* var150 /* : String */;
3281 char* var151 /* : NativeString */;
3282 long var152 /* : Int */;
3283 val* var153 /* : FlatString */;
3284 val* var154 /* : String */;
3285 static val* varonce155;
3286 val* var156 /* : String */;
3287 char* var157 /* : NativeString */;
3288 long var158 /* : Int */;
3289 val* var159 /* : FlatString */;
3290 val* var160 /* : Array[Object] */;
3291 long var161 /* : Int */;
3292 val* var162 /* : NativeArray[Object] */;
3293 val* var163 /* : String */;
3294 var_value = p0;
3295 var_mtype = p1;
3296 /* <var_mtype:MType> isa MClassType */
3297 cltype = type_nit__MClassType.color;
3298 idtype = type_nit__MClassType.id;
3299 if(cltype >= var_mtype->type->table_size) {
3300 var3 = 0;
3301 } else {
3302 var3 = var_mtype->type->type_table[cltype] == idtype;
3303 }
3304 var_ = var3;
3305 if (var3){
3306 {
3307 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3308 var6 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3309 if (unlikely(var6 == NULL)) {
3310 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3311 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
3312 show_backtrace(1);
3313 }
3314 var4 = var6;
3315 RET_LABEL5:(void)0;
3316 }
3317 }
3318 {
3319 { /* Inline model#MClass#kind (var4) on <var4:MClass> */
3320 var9 = var4->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var4:MClass> */
3321 if (unlikely(var9 == NULL)) {
3322 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3323 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
3324 show_backtrace(1);
3325 }
3326 var7 = var9;
3327 RET_LABEL8:(void)0;
3328 }
3329 }
3330 {
3331 var10 = nit__model___standard__Object___extern_kind(self);
3332 }
3333 {
3334 { /* Inline kernel#Object#== (var7,var10) on <var7:MClassKind> */
3335 var_other = var10;
3336 {
3337 { /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:MClassKind> */
3338 var15 = var7 == var_other;
3339 var13 = var15;
3340 goto RET_LABEL14;
3341 RET_LABEL14:(void)0;
3342 }
3343 }
3344 var11 = var13;
3345 goto RET_LABEL12;
3346 RET_LABEL12:(void)0;
3347 }
3348 }
3349 var2 = var11;
3350 } else {
3351 var2 = var_;
3352 }
3353 var_16 = var2;
3354 if (var2){
3355 {
3356 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3357 var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3358 if (unlikely(var19 == NULL)) {
3359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3360 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
3361 show_backtrace(1);
3362 }
3363 var17 = var19;
3364 RET_LABEL18:(void)0;
3365 }
3366 }
3367 {
3368 { /* Inline model#MClass#name (var17) on <var17:MClass> */
3369 var22 = var17->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var17:MClass> */
3370 if (unlikely(var22 == NULL)) {
3371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3372 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
3373 show_backtrace(1);
3374 }
3375 var20 = var22;
3376 RET_LABEL21:(void)0;
3377 }
3378 }
3379 if (varonce) {
3380 var23 = varonce;
3381 } else {
3382 var24 = "NativeString";
3383 var25 = 12;
3384 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
3385 var23 = var26;
3386 varonce = var23;
3387 }
3388 {
3389 { /* Inline kernel#Object#!= (var20,var23) on <var20:String> */
3390 var_other29 = var23;
3391 {
3392 var30 = ((short int (*)(val* self, val* p0))(var20->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var20, var_other29) /* == on <var20:String>*/;
3393 }
3394 var31 = !var30;
3395 var27 = var31;
3396 goto RET_LABEL28;
3397 RET_LABEL28:(void)0;
3398 }
3399 }
3400 var1 = var27;
3401 } else {
3402 var1 = var_16;
3403 }
3404 if (var1){
3405 {
3406 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
3407 var34 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3408 if (unlikely(var34 == NULL)) {
3409 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3410 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
3411 show_backtrace(1);
3412 }
3413 var32 = var34;
3414 RET_LABEL33:(void)0;
3415 }
3416 }
3417 {
3418 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var32) on <var32:AbstractCompiler(SeparateCompiler)> */
3419 var37 = var32->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var32:AbstractCompiler(SeparateCompiler)> */
3420 if (unlikely(var37 == NULL)) {
3421 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3422 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 474);
3423 show_backtrace(1);
3424 }
3425 var35 = var37;
3426 RET_LABEL36:(void)0;
3427 }
3428 }
3429 {
3430 var38 = nit__model___MModule___pointer_type(var35);
3431 }
3432 var_valtype = var38;
3433 {
3434 var39 = nit___nit__AbstractCompilerVisitor___new_var(self, var_mtype);
3435 }
3436 var_res = var39;
3437 {
3438 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
3439 var43 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3440 if (unlikely(var43 == NULL)) {
3441 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3442 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
3443 show_backtrace(1);
3444 }
3445 var41 = var43;
3446 RET_LABEL42:(void)0;
3447 }
3448 }
3449 {
3450 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var41) on <var41:AbstractCompiler(SeparateCompiler)> */
3451 var46 = var41->attrs[COLOR_nit__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var41:AbstractCompiler(SeparateCompiler)> */
3452 var44 = var46;
3453 RET_LABEL45:(void)0;
3454 }
3455 }
3456 var47 = NULL;
3457 if (var44 == NULL) {
3458 var48 = 0; /* is null */
3459 } else {
3460 var48 = 1; /* arg is null and recv is not */
3461 }
3462 if (0) {
3463 { /* Inline kernel#Object#!= (var44,var47) on <var44:nullable RapidTypeAnalysis> */
3464 var_other29 = var47;
3465 {
3466 var51 = ((short int (*)(val* self, val* p0))(var44->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var44, var_other29) /* == on <var44:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
3467 }
3468 var52 = !var51;
3469 var49 = var52;
3470 goto RET_LABEL50;
3471 RET_LABEL50:(void)0;
3472 }
3473 var48 = var49;
3474 }
3475 var_53 = var48;
3476 if (var48){
3477 {
3478 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
3479 var56 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3480 if (unlikely(var56 == NULL)) {
3481 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3482 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1059);
3483 show_backtrace(1);
3484 }
3485 var54 = var56;
3486 RET_LABEL55:(void)0;
3487 }
3488 }
3489 {
3490 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var54) on <var54:AbstractCompiler(SeparateCompiler)> */
3491 var59 = var54->attrs[COLOR_nit__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var54:AbstractCompiler(SeparateCompiler)> */
3492 var57 = var59;
3493 RET_LABEL58:(void)0;
3494 }
3495 }
3496 if (var57 == NULL) {
3497 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3498 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 611);
3499 show_backtrace(1);
3500 } else {
3501 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var57) on <var57:nullable RapidTypeAnalysis> */
3502 if (unlikely(var57 == NULL)) {
3503 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3504 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
3505 show_backtrace(1);
3506 }
3507 var62 = var57->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var57:nullable RapidTypeAnalysis> */
3508 if (unlikely(var62 == NULL)) {
3509 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
3510 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 53);
3511 show_backtrace(1);
3512 }
3513 var60 = var62;
3514 RET_LABEL61:(void)0;
3515 }
3516 }
3517 {
3518 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3519 var65 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3520 if (unlikely(var65 == NULL)) {
3521 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3522 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
3523 show_backtrace(1);
3524 }
3525 var63 = var65;
3526 RET_LABEL64:(void)0;
3527 }
3528 }
3529 /* <var63:MType> isa MClassType */
3530 cltype67 = type_nit__MClassType.color;
3531 idtype68 = type_nit__MClassType.id;
3532 if(cltype67 >= var63->type->table_size) {
3533 var66 = 0;
3534 } else {
3535 var66 = var63->type->type_table[cltype67] == idtype68;
3536 }
3537 if (unlikely(!var66)) {
3538 var_class_name = var63 == NULL ? "null" : var63->type->name;
3539 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3540 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 611);
3541 show_backtrace(1);
3542 }
3543 {
3544 var69 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var60, var63);
3545 }
3546 var70 = !var69;
3547 var40 = var70;
3548 } else {
3549 var40 = var_53;
3550 }
3551 if (var40){
3552 if (varonce71) {
3553 var72 = varonce71;
3554 } else {
3555 var73 = "/*no boxing of ";
3556 var74 = 15;
3557 var75 = standard___standard__NativeString___to_s_with_length(var73, var74);
3558 var72 = var75;
3559 varonce71 = var72;
3560 }
3561 {
3562 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3563 var78 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3564 if (unlikely(var78 == NULL)) {
3565 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3566 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
3567 show_backtrace(1);
3568 }
3569 var76 = var78;
3570 RET_LABEL77:(void)0;
3571 }
3572 }
3573 if (varonce79) {
3574 var80 = varonce79;
3575 } else {
3576 var81 = ": ";
3577 var82 = 2;
3578 var83 = standard___standard__NativeString___to_s_with_length(var81, var82);
3579 var80 = var83;
3580 varonce79 = var80;
3581 }
3582 {
3583 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3584 var86 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3585 if (unlikely(var86 == NULL)) {
3586 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3587 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
3588 show_backtrace(1);
3589 }
3590 var84 = var86;
3591 RET_LABEL85:(void)0;
3592 }
3593 }
3594 if (varonce87) {
3595 var88 = varonce87;
3596 } else {
3597 var89 = " is not live! */";
3598 var90 = 16;
3599 var91 = standard___standard__NativeString___to_s_with_length(var89, var90);
3600 var88 = var91;
3601 varonce87 = var88;
3602 }
3603 var92 = NEW_standard__Array(&type_standard__Array__standard__Object);
3604 { /* var92 = array_instance Array[Object] */
3605 var93 = 5;
3606 var94 = NEW_standard__NativeArray(var93, &type_standard__NativeArray__standard__Object);
3607 ((struct instance_standard__NativeArray*)var94)->values[0] = (val*) var72;
3608 ((struct instance_standard__NativeArray*)var94)->values[1] = (val*) var76;
3609 ((struct instance_standard__NativeArray*)var94)->values[2] = (val*) var80;
3610 ((struct instance_standard__NativeArray*)var94)->values[3] = (val*) var84;
3611 ((struct instance_standard__NativeArray*)var94)->values[4] = (val*) var88;
3612 {
3613 ((void (*)(val* self, val* p0, long p1))(var92->class->vft[COLOR_standard__array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
3614 }
3615 }
3616 {
3617 var95 = ((val* (*)(val* self))(var92->class->vft[COLOR_standard__string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
3618 }
3619 {
3620 nit___nit__AbstractCompilerVisitor___add(self, var95); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
3621 }
3622 if (varonce96) {
3623 var97 = varonce96;
3624 } else {
3625 var98 = "PRINT_ERROR(\"Dead code executed!\\n\"); show_backtrace(1);";
3626 var99 = 56;
3627 var100 = standard___standard__NativeString___to_s_with_length(var98, var99);
3628 var97 = var100;
3629 varonce96 = var97;
3630 }
3631 {
3632 nit___nit__AbstractCompilerVisitor___add(self, var97); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
3633 }
3634 var = var_res;
3635 goto RET_LABEL;
3636 } else {
3637 }
3638 if (varonce101) {
3639 var102 = varonce101;
3640 } else {
3641 var103 = "BOX_";
3642 var104 = 4;
3643 var105 = standard___standard__NativeString___to_s_with_length(var103, var104);
3644 var102 = var105;
3645 varonce101 = var102;
3646 }
3647 {
3648 var106 = ((val* (*)(val* self))(var_valtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
3649 }
3650 var107 = NEW_standard__Array(&type_standard__Array__standard__Object);
3651 { /* var107 = array_instance Array[Object] */
3652 var108 = 2;
3653 var109 = NEW_standard__NativeArray(var108, &type_standard__NativeArray__standard__Object);
3654 ((struct instance_standard__NativeArray*)var109)->values[0] = (val*) var102;
3655 ((struct instance_standard__NativeArray*)var109)->values[1] = (val*) var106;
3656 {
3657 ((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]>*/;
3658 }
3659 }
3660 {
3661 var110 = ((val* (*)(val* self))(var107->class->vft[COLOR_standard__string__Object__to_s]))(var107) /* to_s on <var107:Array[Object]>*/;
3662 }
3663 {
3664 nit___nit__AbstractCompilerVisitor___require_declaration(self, var110); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
3665 }
3666 if (varonce111) {
3667 var112 = varonce111;
3668 } else {
3669 var113 = " = BOX_";
3670 var114 = 7;
3671 var115 = standard___standard__NativeString___to_s_with_length(var113, var114);
3672 var112 = var115;
3673 varonce111 = var112;
3674 }
3675 {
3676 var116 = ((val* (*)(val* self))(var_valtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
3677 }
3678 if (varonce117) {
3679 var118 = varonce117;
3680 } else {
3681 var119 = "(";
3682 var120 = 1;
3683 var121 = standard___standard__NativeString___to_s_with_length(var119, var120);
3684 var118 = var121;
3685 varonce117 = var118;
3686 }
3687 if (varonce122) {
3688 var123 = varonce122;
3689 } else {
3690 var124 = "); /* boxing ";
3691 var125 = 13;
3692 var126 = standard___standard__NativeString___to_s_with_length(var124, var125);
3693 var123 = var126;
3694 varonce122 = var123;
3695 }
3696 {
3697 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3698 var129 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3699 if (unlikely(var129 == NULL)) {
3700 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3701 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
3702 show_backtrace(1);
3703 }
3704 var127 = var129;
3705 RET_LABEL128:(void)0;
3706 }
3707 }
3708 if (varonce130) {
3709 var131 = varonce130;
3710 } else {
3711 var132 = " */";
3712 var133 = 3;
3713 var134 = standard___standard__NativeString___to_s_with_length(var132, var133);
3714 var131 = var134;
3715 varonce130 = var131;
3716 }
3717 var135 = NEW_standard__Array(&type_standard__Array__standard__Object);
3718 { /* var135 = array_instance Array[Object] */
3719 var136 = 8;
3720 var137 = NEW_standard__NativeArray(var136, &type_standard__NativeArray__standard__Object);
3721 ((struct instance_standard__NativeArray*)var137)->values[0] = (val*) var_res;
3722 ((struct instance_standard__NativeArray*)var137)->values[1] = (val*) var112;
3723 ((struct instance_standard__NativeArray*)var137)->values[2] = (val*) var116;
3724 ((struct instance_standard__NativeArray*)var137)->values[3] = (val*) var118;
3725 ((struct instance_standard__NativeArray*)var137)->values[4] = (val*) var_value;
3726 ((struct instance_standard__NativeArray*)var137)->values[5] = (val*) var123;
3727 ((struct instance_standard__NativeArray*)var137)->values[6] = (val*) var127;
3728 ((struct instance_standard__NativeArray*)var137)->values[7] = (val*) var131;
3729 {
3730 ((void (*)(val* self, val* p0, long p1))(var135->class->vft[COLOR_standard__array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
3731 }
3732 }
3733 {
3734 var138 = ((val* (*)(val* self))(var135->class->vft[COLOR_standard__string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
3735 }
3736 {
3737 nit___nit__AbstractCompilerVisitor___add(self, var138); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
3738 }
3739 if (varonce139) {
3740 var140 = varonce139;
3741 } else {
3742 var141 = "class_";
3743 var142 = 6;
3744 var143 = standard___standard__NativeString___to_s_with_length(var141, var142);
3745 var140 = var143;
3746 varonce139 = var140;
3747 }
3748 {
3749 var144 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
3750 }
3751 var145 = NEW_standard__Array(&type_standard__Array__standard__Object);
3752 { /* var145 = array_instance Array[Object] */
3753 var146 = 2;
3754 var147 = NEW_standard__NativeArray(var146, &type_standard__NativeArray__standard__Object);
3755 ((struct instance_standard__NativeArray*)var147)->values[0] = (val*) var140;
3756 ((struct instance_standard__NativeArray*)var147)->values[1] = (val*) var144;
3757 {
3758 ((void (*)(val* self, val* p0, long p1))(var145->class->vft[COLOR_standard__array__Array__with_native]))(var145, var147, var146) /* with_native on <var145:Array[Object]>*/;
3759 }
3760 }
3761 {
3762 var148 = ((val* (*)(val* self))(var145->class->vft[COLOR_standard__string__Object__to_s]))(var145) /* to_s on <var145:Array[Object]>*/;
3763 }
3764 {
3765 nit___nit__AbstractCompilerVisitor___require_declaration(self, var148); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
3766 }
3767 if (varonce149) {
3768 var150 = varonce149;
3769 } else {
3770 var151 = "->class = &class_";
3771 var152 = 17;
3772 var153 = standard___standard__NativeString___to_s_with_length(var151, var152);
3773 var150 = var153;
3774 varonce149 = var150;
3775 }
3776 {
3777 var154 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
3778 }
3779 if (varonce155) {
3780 var156 = varonce155;
3781 } else {
3782 var157 = ";";
3783 var158 = 1;
3784 var159 = standard___standard__NativeString___to_s_with_length(var157, var158);
3785 var156 = var159;
3786 varonce155 = var156;
3787 }
3788 var160 = NEW_standard__Array(&type_standard__Array__standard__Object);
3789 { /* var160 = array_instance Array[Object] */
3790 var161 = 4;
3791 var162 = NEW_standard__NativeArray(var161, &type_standard__NativeArray__standard__Object);
3792 ((struct instance_standard__NativeArray*)var162)->values[0] = (val*) var_res;
3793 ((struct instance_standard__NativeArray*)var162)->values[1] = (val*) var150;
3794 ((struct instance_standard__NativeArray*)var162)->values[2] = (val*) var154;
3795 ((struct instance_standard__NativeArray*)var162)->values[3] = (val*) var156;
3796 {
3797 ((void (*)(val* self, val* p0, long p1))(var160->class->vft[COLOR_standard__array__Array__with_native]))(var160, var162, var161) /* with_native on <var160:Array[Object]>*/;
3798 }
3799 }
3800 {
3801 var163 = ((val* (*)(val* self))(var160->class->vft[COLOR_standard__string__Object__to_s]))(var160) /* to_s on <var160:Array[Object]>*/;
3802 }
3803 {
3804 nit___nit__AbstractCompilerVisitor___add(self, var163); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
3805 }
3806 var = var_res;
3807 goto RET_LABEL;
3808 } else {
3809 var = var_value;
3810 goto RET_LABEL;
3811 }
3812 RET_LABEL:;
3813 return var;
3814 }
3815 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#class_name_string for (self: SeparateErasureCompilerVisitor, RuntimeVariable): String */
3816 val* nit___nit__SeparateErasureCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
3817 val* var /* : String */;
3818 val* var_value /* var value: RuntimeVariable */;
3819 static val* varonce;
3820 val* var1 /* : String */;
3821 char* var2 /* : NativeString */;
3822 long var3 /* : Int */;
3823 val* var4 /* : FlatString */;
3824 val* var5 /* : String */;
3825 val* var_res /* var res: String */;
3826 static val* varonce6;
3827 val* var7 /* : String */;
3828 char* var8 /* : NativeString */;
3829 long var9 /* : Int */;
3830 val* var10 /* : FlatString */;
3831 static val* varonce11;
3832 val* var12 /* : String */;
3833 char* var13 /* : NativeString */;
3834 long var14 /* : Int */;
3835 val* var15 /* : FlatString */;
3836 val* var16 /* : Array[Object] */;
3837 long var17 /* : Int */;
3838 val* var18 /* : NativeArray[Object] */;
3839 val* var19 /* : String */;
3840 val* var20 /* : MType */;
3841 val* var22 /* : MType */;
3842 val* var23 /* : String */;
3843 static val* varonce24;
3844 val* var25 /* : String */;
3845 char* var26 /* : NativeString */;
3846 long var27 /* : Int */;
3847 val* var28 /* : FlatString */;
3848 short int var29 /* : Bool */;
3849 static val* varonce30;
3850 val* var31 /* : String */;
3851 char* var32 /* : NativeString */;
3852 long var33 /* : Int */;
3853 val* var34 /* : FlatString */;
3854 static val* varonce35;
3855 val* var36 /* : String */;
3856 char* var37 /* : NativeString */;
3857 long var38 /* : Int */;
3858 val* var39 /* : FlatString */;
3859 static val* varonce40;
3860 val* var41 /* : String */;
3861 char* var42 /* : NativeString */;
3862 long var43 /* : Int */;
3863 val* var44 /* : FlatString */;
3864 val* var45 /* : Array[Object] */;
3865 long var46 /* : Int */;
3866 val* var47 /* : NativeArray[Object] */;
3867 val* var48 /* : String */;
3868 static val* varonce49;
3869 val* var50 /* : String */;
3870 char* var51 /* : NativeString */;
3871 long var52 /* : Int */;
3872 val* var53 /* : FlatString */;
3873 val* var54 /* : MType */;
3874 val* var56 /* : MType */;
3875 val* var57 /* : String */;
3876 val* var58 /* : Array[Object] */;
3877 long var59 /* : Int */;
3878 val* var60 /* : NativeArray[Object] */;
3879 val* var61 /* : String */;
3880 static val* varonce62;
3881 val* var63 /* : String */;
3882 char* var64 /* : NativeString */;
3883 long var65 /* : Int */;
3884 val* var66 /* : FlatString */;
3885 val* var67 /* : MType */;
3886 val* var69 /* : MType */;
3887 val* var70 /* : String */;
3888 static val* varonce71;
3889 val* var72 /* : String */;
3890 char* var73 /* : NativeString */;
3891 long var74 /* : Int */;
3892 val* var75 /* : FlatString */;
3893 val* var76 /* : Array[Object] */;
3894 long var77 /* : Int */;
3895 val* var78 /* : NativeArray[Object] */;
3896 val* var79 /* : String */;
3897 var_value = p0;
3898 if (varonce) {
3899 var1 = varonce;
3900 } else {
3901 var2 = "var_class_name";
3902 var3 = 14;
3903 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
3904 var1 = var4;
3905 varonce = var1;
3906 }
3907 {
3908 var5 = nit___nit__AbstractCompilerVisitor___get_name(self, var1);
3909 }
3910 var_res = var5;
3911 if (varonce6) {
3912 var7 = varonce6;
3913 } else {
3914 var8 = "const char* ";
3915 var9 = 12;
3916 var10 = standard___standard__NativeString___to_s_with_length(var8, var9);
3917 var7 = var10;
3918 varonce6 = var7;
3919 }
3920 if (varonce11) {
3921 var12 = varonce11;
3922 } else {
3923 var13 = ";";
3924 var14 = 1;
3925 var15 = standard___standard__NativeString___to_s_with_length(var13, var14);
3926 var12 = var15;
3927 varonce11 = var12;
3928 }
3929 var16 = NEW_standard__Array(&type_standard__Array__standard__Object);
3930 { /* var16 = array_instance Array[Object] */
3931 var17 = 3;
3932 var18 = NEW_standard__NativeArray(var17, &type_standard__NativeArray__standard__Object);
3933 ((struct instance_standard__NativeArray*)var18)->values[0] = (val*) var7;
3934 ((struct instance_standard__NativeArray*)var18)->values[1] = (val*) var_res;
3935 ((struct instance_standard__NativeArray*)var18)->values[2] = (val*) var12;
3936 {
3937 ((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]>*/;
3938 }
3939 }
3940 {
3941 var19 = ((val* (*)(val* self))(var16->class->vft[COLOR_standard__string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
3942 }
3943 {
3944 nit___nit__AbstractCompilerVisitor___add_decl(self, var19); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <self:SeparateErasureCompilerVisitor>*/
3945 }
3946 {
3947 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3948 var22 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3949 if (unlikely(var22 == NULL)) {
3950 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3951 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
3952 show_backtrace(1);
3953 }
3954 var20 = var22;
3955 RET_LABEL21:(void)0;
3956 }
3957 }
3958 {
3959 var23 = ((val* (*)(val* self))(var20->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var20) /* ctype on <var20:MType>*/;
3960 }
3961 if (varonce24) {
3962 var25 = varonce24;
3963 } else {
3964 var26 = "val*";
3965 var27 = 4;
3966 var28 = standard___standard__NativeString___to_s_with_length(var26, var27);
3967 var25 = var28;
3968 varonce24 = var25;
3969 }
3970 {
3971 var29 = ((short int (*)(val* self, val* p0))(var23->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var23, var25) /* == on <var23:String>*/;
3972 }
3973 if (var29){
3974 if (varonce30) {
3975 var31 = varonce30;
3976 } else {
3977 var32 = " = ";
3978 var33 = 3;
3979 var34 = standard___standard__NativeString___to_s_with_length(var32, var33);
3980 var31 = var34;
3981 varonce30 = var31;
3982 }
3983 if (varonce35) {
3984 var36 = varonce35;
3985 } else {
3986 var37 = " == NULL ? \"null\" : ";
3987 var38 = 20;
3988 var39 = standard___standard__NativeString___to_s_with_length(var37, var38);
3989 var36 = var39;
3990 varonce35 = var36;
3991 }
3992 if (varonce40) {
3993 var41 = varonce40;
3994 } else {
3995 var42 = "->class->name;";
3996 var43 = 14;
3997 var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
3998 var41 = var44;
3999 varonce40 = var41;
4000 }
4001 var45 = NEW_standard__Array(&type_standard__Array__standard__Object);
4002 { /* var45 = array_instance Array[Object] */
4003 var46 = 6;
4004 var47 = NEW_standard__NativeArray(var46, &type_standard__NativeArray__standard__Object);
4005 ((struct instance_standard__NativeArray*)var47)->values[0] = (val*) var_res;
4006 ((struct instance_standard__NativeArray*)var47)->values[1] = (val*) var31;
4007 ((struct instance_standard__NativeArray*)var47)->values[2] = (val*) var_value;
4008 ((struct instance_standard__NativeArray*)var47)->values[3] = (val*) var36;
4009 ((struct instance_standard__NativeArray*)var47)->values[4] = (val*) var_value;
4010 ((struct instance_standard__NativeArray*)var47)->values[5] = (val*) var41;
4011 {
4012 ((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]>*/;
4013 }
4014 }
4015 {
4016 var48 = ((val* (*)(val* self))(var45->class->vft[COLOR_standard__string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
4017 }
4018 {
4019 nit___nit__AbstractCompilerVisitor___add(self, var48); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
4020 }
4021 } else {
4022 if (varonce49) {
4023 var50 = varonce49;
4024 } else {
4025 var51 = "class_";
4026 var52 = 6;
4027 var53 = standard___standard__NativeString___to_s_with_length(var51, var52);
4028 var50 = var53;
4029 varonce49 = var50;
4030 }
4031 {
4032 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
4033 var56 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
4034 if (unlikely(var56 == NULL)) {
4035 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4036 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
4037 show_backtrace(1);
4038 }
4039 var54 = var56;
4040 RET_LABEL55:(void)0;
4041 }
4042 }
4043 {
4044 var57 = ((val* (*)(val* self))(var54->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var54) /* c_name on <var54:MType>*/;
4045 }
4046 var58 = NEW_standard__Array(&type_standard__Array__standard__Object);
4047 { /* var58 = array_instance Array[Object] */
4048 var59 = 2;
4049 var60 = NEW_standard__NativeArray(var59, &type_standard__NativeArray__standard__Object);
4050 ((struct instance_standard__NativeArray*)var60)->values[0] = (val*) var50;
4051 ((struct instance_standard__NativeArray*)var60)->values[1] = (val*) var57;
4052 {
4053 ((void (*)(val* self, val* p0, long p1))(var58->class->vft[COLOR_standard__array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
4054 }
4055 }
4056 {
4057 var61 = ((val* (*)(val* self))(var58->class->vft[COLOR_standard__string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
4058 }
4059 {
4060 nit___nit__AbstractCompilerVisitor___require_declaration(self, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
4061 }
4062 if (varonce62) {
4063 var63 = varonce62;
4064 } else {
4065 var64 = " = class_";
4066 var65 = 9;
4067 var66 = standard___standard__NativeString___to_s_with_length(var64, var65);
4068 var63 = var66;
4069 varonce62 = var63;
4070 }
4071 {
4072 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
4073 var69 = var_value->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
4074 if (unlikely(var69 == NULL)) {
4075 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4076 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1680);
4077 show_backtrace(1);
4078 }
4079 var67 = var69;
4080 RET_LABEL68:(void)0;
4081 }
4082 }
4083 {
4084 var70 = ((val* (*)(val* self))(var67->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var67) /* c_name on <var67:MType>*/;
4085 }
4086 if (varonce71) {
4087 var72 = varonce71;
4088 } else {
4089 var73 = ".name;";
4090 var74 = 6;
4091 var75 = standard___standard__NativeString___to_s_with_length(var73, var74);
4092 var72 = var75;
4093 varonce71 = var72;
4094 }
4095 var76 = NEW_standard__Array(&type_standard__Array__standard__Object);
4096 { /* var76 = array_instance Array[Object] */
4097 var77 = 4;
4098 var78 = NEW_standard__NativeArray(var77, &type_standard__NativeArray__standard__Object);
4099 ((struct instance_standard__NativeArray*)var78)->values[0] = (val*) var_res;
4100 ((struct instance_standard__NativeArray*)var78)->values[1] = (val*) var63;
4101 ((struct instance_standard__NativeArray*)var78)->values[2] = (val*) var70;
4102 ((struct instance_standard__NativeArray*)var78)->values[3] = (val*) var72;
4103 {
4104 ((void (*)(val* self, val* p0, long p1))(var76->class->vft[COLOR_standard__array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
4105 }
4106 }
4107 {
4108 var79 = ((val* (*)(val* self))(var76->class->vft[COLOR_standard__string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
4109 }
4110 {
4111 nit___nit__AbstractCompilerVisitor___add(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
4112 }
4113 }
4114 var = var_res;
4115 goto RET_LABEL;
4116 RET_LABEL:;
4117 return var;
4118 }
4119 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#native_array_instance for (self: SeparateErasureCompilerVisitor, MType, RuntimeVariable): RuntimeVariable */
4120 val* nit___nit__SeparateErasureCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
4121 val* var /* : RuntimeVariable */;
4122 val* var_elttype /* var elttype: MType */;
4123 val* var_length /* var length: RuntimeVariable */;
4124 static val* varonce;
4125 val* var1 /* : String */;
4126 char* var2 /* : NativeString */;
4127 long var3 /* : Int */;
4128 val* var4 /* : FlatString */;
4129 val* var5 /* : MClass */;
4130 val* var_nclass /* var nclass: MClass */;
4131 val* var6 /* : Array[MType] */;
4132 long var7 /* : Int */;
4133 val* var_ /* var : Array[MType] */;
4134 val* var8 /* : MClassType */;
4135 val* var_mtype /* var mtype: MClassType */;
4136 val* var9 /* : RuntimeVariable */;
4137 val* var_res /* var res: RuntimeVariable */;
4138 short int var10 /* : Bool */;
4139 static val* varonce12;
4140 val* var13 /* : String */;
4141 char* var14 /* : NativeString */;
4142 long var15 /* : Int */;
4143 val* var16 /* : FlatString */;
4144 val* var17 /* : String */;
4145 val* var18 /* : Array[Object] */;
4146 long var19 /* : Int */;
4147 val* var20 /* : NativeArray[Object] */;
4148 val* var21 /* : String */;
4149 static val* varonce22;
4150 val* var23 /* : String */;
4151 char* var24 /* : NativeString */;
4152 long var25 /* : Int */;
4153 val* var26 /* : FlatString */;
4154 val* var27 /* : String */;
4155 static val* varonce28;
4156 val* var29 /* : String */;
4157 char* var30 /* : NativeString */;
4158 long var31 /* : Int */;
4159 val* var32 /* : FlatString */;
4160 static val* varonce33;
4161 val* var34 /* : String */;
4162 char* var35 /* : NativeString */;
4163 long var36 /* : Int */;
4164 val* var37 /* : FlatString */;
4165 val* var38 /* : Array[Object] */;
4166 long var39 /* : Int */;
4167 val* var40 /* : NativeArray[Object] */;
4168 val* var41 /* : String */;
4169 var_elttype = p0;
4170 var_length = p1;
4171 if (varonce) {
4172 var1 = varonce;
4173 } else {
4174 var2 = "NativeArray";
4175 var3 = 11;
4176 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
4177 var1 = var4;
4178 varonce = var1;
4179 }
4180 {
4181 var5 = nit___nit__AbstractCompilerVisitor___get_class(self, var1);
4182 }
4183 var_nclass = var5;
4184 var6 = NEW_standard__Array(&type_standard__Array__nit__MType);
4185 var7 = 1;
4186 {
4187 standard___standard__Array___with_capacity(var6, var7); /* Direct call array#Array#with_capacity on <var6:Array[MType]>*/
4188 }
4189 var_ = var6;
4190 {
4191 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var_elttype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
4192 }
4193 {
4194 var8 = nit___nit__MClass___get_mtype(var_nclass, var_);
4195 }
4196 var_mtype = var8;
4197 {
4198 var9 = nit___nit__AbstractCompilerVisitor___new_var(self, var_mtype);
4199 }
4200 var_res = var9;
4201 var10 = 1;
4202 {
4203 { /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res,var10) on <var_res:RuntimeVariable> */
4204 var_res->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___is_exact].s = var10; /* _is_exact on <var_res:RuntimeVariable> */
4205 RET_LABEL11:(void)0;
4206 }
4207 }
4208 if (varonce12) {
4209 var13 = varonce12;
4210 } else {
4211 var14 = "NEW_";
4212 var15 = 4;
4213 var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
4214 var13 = var16;
4215 varonce12 = var13;
4216 }
4217 {
4218 var17 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_nclass);
4219 }
4220 var18 = NEW_standard__Array(&type_standard__Array__standard__Object);
4221 { /* var18 = array_instance Array[Object] */
4222 var19 = 2;
4223 var20 = NEW_standard__NativeArray(var19, &type_standard__NativeArray__standard__Object);
4224 ((struct instance_standard__NativeArray*)var20)->values[0] = (val*) var13;
4225 ((struct instance_standard__NativeArray*)var20)->values[1] = (val*) var17;
4226 {
4227 ((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]>*/;
4228 }
4229 }
4230 {
4231 var21 = ((val* (*)(val* self))(var18->class->vft[COLOR_standard__string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
4232 }
4233 {
4234 nit___nit__AbstractCompilerVisitor___require_declaration(self, var21); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
4235 }
4236 if (varonce22) {
4237 var23 = varonce22;
4238 } else {
4239 var24 = " = NEW_";
4240 var25 = 7;
4241 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
4242 var23 = var26;
4243 varonce22 = var23;
4244 }
4245 {
4246 var27 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_nclass);
4247 }
4248 if (varonce28) {
4249 var29 = varonce28;
4250 } else {
4251 var30 = "(";
4252 var31 = 1;
4253 var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
4254 var29 = var32;
4255 varonce28 = var29;
4256 }
4257 if (varonce33) {
4258 var34 = varonce33;
4259 } else {
4260 var35 = ");";
4261 var36 = 2;
4262 var37 = standard___standard__NativeString___to_s_with_length(var35, var36);
4263 var34 = var37;
4264 varonce33 = var34;
4265 }
4266 var38 = NEW_standard__Array(&type_standard__Array__standard__Object);
4267 { /* var38 = array_instance Array[Object] */
4268 var39 = 6;
4269 var40 = NEW_standard__NativeArray(var39, &type_standard__NativeArray__standard__Object);
4270 ((struct instance_standard__NativeArray*)var40)->values[0] = (val*) var_res;
4271 ((struct instance_standard__NativeArray*)var40)->values[1] = (val*) var23;
4272 ((struct instance_standard__NativeArray*)var40)->values[2] = (val*) var27;
4273 ((struct instance_standard__NativeArray*)var40)->values[3] = (val*) var29;
4274 ((struct instance_standard__NativeArray*)var40)->values[4] = (val*) var_length;
4275 ((struct instance_standard__NativeArray*)var40)->values[5] = (val*) var34;
4276 {
4277 ((void (*)(val* self, val* p0, long p1))(var38->class->vft[COLOR_standard__array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
4278 }
4279 }
4280 {
4281 var41 = ((val* (*)(val* self))(var38->class->vft[COLOR_standard__string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
4282 }
4283 {
4284 nit___nit__AbstractCompilerVisitor___add(self, var41); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
4285 }
4286 var = var_res;
4287 goto RET_LABEL;
4288 RET_LABEL:;
4289 return var;
4290 }
4291 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#calloc_array for (self: SeparateErasureCompilerVisitor, MType, Array[RuntimeVariable]) */
4292 void nit___nit__SeparateErasureCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
4293 val* var_ret_type /* var ret_type: MType */;
4294 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
4295 short int var /* : Bool */;
4296 int cltype;
4297 int idtype;
4298 const char* var_class_name;
4299 val* var_ret /* var ret: MClassType */;
4300 static val* varonce;
4301 val* var1 /* : String */;
4302 char* var2 /* : NativeString */;
4303 long var3 /* : Int */;
4304 val* var4 /* : FlatString */;
4305 val* var5 /* : MClass */;
4306 val* var7 /* : MClass */;
4307 val* var8 /* : String */;
4308 val* var9 /* : Array[Object] */;
4309 long var10 /* : Int */;
4310 val* var11 /* : NativeArray[Object] */;
4311 val* var12 /* : String */;
4312 static val* varonce13;
4313 val* var14 /* : String */;
4314 char* var15 /* : NativeString */;
4315 long var16 /* : Int */;
4316 val* var17 /* : FlatString */;
4317 val* var18 /* : MClass */;
4318 val* var20 /* : MClass */;
4319 val* var21 /* : String */;
4320 static val* varonce22;
4321 val* var23 /* : String */;
4322 char* var24 /* : NativeString */;
4323 long var25 /* : Int */;
4324 val* var26 /* : FlatString */;
4325 long var27 /* : Int */;
4326 val* var28 /* : nullable Object */;
4327 static val* varonce29;
4328 val* var30 /* : String */;
4329 char* var31 /* : NativeString */;
4330 long var32 /* : Int */;
4331 val* var33 /* : FlatString */;
4332 val* var34 /* : Array[Object] */;
4333 long var35 /* : Int */;
4334 val* var36 /* : NativeArray[Object] */;
4335 val* var37 /* : String */;
4336 val* var38 /* : RuntimeVariable */;
4337 var_ret_type = p0;
4338 var_arguments = p1;
4339 /* <var_ret_type:MType> isa MClassType */
4340 cltype = type_nit__MClassType.color;
4341 idtype = type_nit__MClassType.id;
4342 if(cltype >= var_ret_type->type->table_size) {
4343 var = 0;
4344 } else {
4345 var = var_ret_type->type->type_table[cltype] == idtype;
4346 }
4347 if (unlikely(!var)) {
4348 var_class_name = var_ret_type == NULL ? "null" : var_ret_type->type->name;
4349 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
4350 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_erasure_compiler, 652);
4351 show_backtrace(1);
4352 }
4353 var_ret = var_ret_type;
4354 if (varonce) {
4355 var1 = varonce;
4356 } else {
4357 var2 = "NEW_";
4358 var3 = 4;
4359 var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
4360 var1 = var4;
4361 varonce = var1;
4362 }
4363 {
4364 { /* Inline model#MClassType#mclass (var_ret) on <var_ret:MClassType> */
4365 var7 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:MClassType> */
4366 if (unlikely(var7 == NULL)) {
4367 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4368 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
4369 show_backtrace(1);
4370 }
4371 var5 = var7;
4372 RET_LABEL6:(void)0;
4373 }
4374 }
4375 {
4376 var8 = nit___nit__MClass___nit__model_base__MEntity__c_name(var5);
4377 }
4378 var9 = NEW_standard__Array(&type_standard__Array__standard__Object);
4379 { /* var9 = array_instance Array[Object] */
4380 var10 = 2;
4381 var11 = NEW_standard__NativeArray(var10, &type_standard__NativeArray__standard__Object);
4382 ((struct instance_standard__NativeArray*)var11)->values[0] = (val*) var1;
4383 ((struct instance_standard__NativeArray*)var11)->values[1] = (val*) var8;
4384 {
4385 ((void (*)(val* self, val* p0, long p1))(var9->class->vft[COLOR_standard__array__Array__with_native]))(var9, var11, var10) /* with_native on <var9:Array[Object]>*/;
4386 }
4387 }
4388 {
4389 var12 = ((val* (*)(val* self))(var9->class->vft[COLOR_standard__string__Object__to_s]))(var9) /* to_s on <var9:Array[Object]>*/;
4390 }
4391 {
4392 nit___nit__AbstractCompilerVisitor___require_declaration(self, var12); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
4393 }
4394 if (varonce13) {
4395 var14 = varonce13;
4396 } else {
4397 var15 = "NEW_";
4398 var16 = 4;
4399 var17 = standard___standard__NativeString___to_s_with_length(var15, var16);
4400 var14 = var17;
4401 varonce13 = var14;
4402 }
4403 {
4404 { /* Inline model#MClassType#mclass (var_ret) on <var_ret:MClassType> */
4405 var20 = var_ret->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_ret:MClassType> */
4406 if (unlikely(var20 == NULL)) {
4407 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4408 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
4409 show_backtrace(1);
4410 }
4411 var18 = var20;
4412 RET_LABEL19:(void)0;
4413 }
4414 }
4415 {
4416 var21 = nit___nit__MClass___nit__model_base__MEntity__c_name(var18);
4417 }
4418 if (varonce22) {
4419 var23 = varonce22;
4420 } else {
4421 var24 = "(";
4422 var25 = 1;
4423 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
4424 var23 = var26;
4425 varonce22 = var23;
4426 }
4427 var27 = 1;
4428 {
4429 var28 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var27);
4430 }
4431 if (varonce29) {
4432 var30 = varonce29;
4433 } else {
4434 var31 = ")";
4435 var32 = 1;
4436 var33 = standard___standard__NativeString___to_s_with_length(var31, var32);
4437 var30 = var33;
4438 varonce29 = var30;
4439 }
4440 var34 = NEW_standard__Array(&type_standard__Array__standard__Object);
4441 { /* var34 = array_instance Array[Object] */
4442 var35 = 5;
4443 var36 = NEW_standard__NativeArray(var35, &type_standard__NativeArray__standard__Object);
4444 ((struct instance_standard__NativeArray*)var36)->values[0] = (val*) var14;
4445 ((struct instance_standard__NativeArray*)var36)->values[1] = (val*) var21;
4446 ((struct instance_standard__NativeArray*)var36)->values[2] = (val*) var23;
4447 ((struct instance_standard__NativeArray*)var36)->values[3] = (val*) var28;
4448 ((struct instance_standard__NativeArray*)var36)->values[4] = (val*) var30;
4449 {
4450 ((void (*)(val* self, val* p0, long p1))(var34->class->vft[COLOR_standard__array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
4451 }
4452 }
4453 {
4454 var37 = ((val* (*)(val* self))(var34->class->vft[COLOR_standard__string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
4455 }
4456 {
4457 var38 = nit___nit__AbstractCompilerVisitor___new_expr(self, var37, var_ret_type);
4458 }
4459 {
4460 nit___nit__AbstractCompilerVisitor___ret(self, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <self:SeparateErasureCompilerVisitor>*/
4461 }
4462 RET_LABEL:;
4463 }