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