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