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