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