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