use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / abstract_compiler.sep.3.c
1 #include "abstract_compiler.sep.0.h"
2 /* method abstract_compiler#AIfExpr#stmt for (self: AIfExpr, AbstractCompilerVisitor) */
3 void abstract_compiler__AIfExpr__stmt(val* self, val* p0) {
4 val* var_v /* var v: AbstractCompilerVisitor */;
5 val* var /* : AExpr */;
6 val* var1 /* : RuntimeVariable */;
7 val* var_cond /* var cond: RuntimeVariable */;
8 static val* varonce;
9 val* var2 /* : String */;
10 char* var3 /* : NativeString */;
11 long var4 /* : Int */;
12 val* var5 /* : String */;
13 static val* varonce6;
14 val* var7 /* : String */;
15 char* var8 /* : NativeString */;
16 long var9 /* : Int */;
17 val* var10 /* : String */;
18 val* var11 /* : Array[Object] */;
19 long var12 /* : Int */;
20 val* var13 /* : NativeArray[Object] */;
21 val* var14 /* : String */;
22 val* var15 /* : nullable AExpr */;
23 static val* varonce16;
24 val* var17 /* : String */;
25 char* var18 /* : NativeString */;
26 long var19 /* : Int */;
27 val* var20 /* : String */;
28 val* var21 /* : nullable AExpr */;
29 static val* varonce22;
30 val* var23 /* : String */;
31 char* var24 /* : NativeString */;
32 long var25 /* : Int */;
33 val* var26 /* : String */;
34 var_v = p0;
35 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
36 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
37 var_cond = var1;
38 if (varonce) {
39 var2 = varonce;
40 } else {
41 var3 = "if (";
42 var4 = 4;
43 var5 = string__NativeString__to_s_with_length(var3, var4);
44 var2 = var5;
45 varonce = var2;
46 }
47 if (varonce6) {
48 var7 = varonce6;
49 } else {
50 var8 = "){";
51 var9 = 2;
52 var10 = string__NativeString__to_s_with_length(var8, var9);
53 var7 = var10;
54 varonce6 = var7;
55 }
56 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
57 { /* var11 = array_instance Array[Object] */
58 var12 = 3;
59 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
60 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var2;
61 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_cond;
62 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var7;
63 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
64 CHECK_NEW_array__Array(var11);
65 }
66 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
67 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var14) /* add on <var_v:AbstractCompilerVisitor>*/;
68 var15 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
69 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var15) /* stmt on <var_v:AbstractCompilerVisitor>*/;
70 if (varonce16) {
71 var17 = varonce16;
72 } else {
73 var18 = "} else {";
74 var19 = 8;
75 var20 = string__NativeString__to_s_with_length(var18, var19);
76 var17 = var20;
77 varonce16 = var17;
78 }
79 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
80 var21 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
81 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var21) /* stmt on <var_v:AbstractCompilerVisitor>*/;
82 if (varonce22) {
83 var23 = varonce22;
84 } else {
85 var24 = "}";
86 var25 = 1;
87 var26 = string__NativeString__to_s_with_length(var24, var25);
88 var23 = var26;
89 varonce22 = var23;
90 }
91 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var23) /* add on <var_v:AbstractCompilerVisitor>*/;
92 RET_LABEL:;
93 }
94 /* method abstract_compiler#AIfExpr#stmt for (self: Object, AbstractCompilerVisitor) */
95 void VIRTUAL_abstract_compiler__AIfExpr__stmt(val* self, val* p0) {
96 abstract_compiler__AIfExpr__stmt(self, p0);
97 RET_LABEL:;
98 }
99 /* method abstract_compiler#AIfExpr#expr for (self: AIfExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
100 val* abstract_compiler__AIfExpr__expr(val* self, val* p0) {
101 val* var /* : nullable RuntimeVariable */;
102 val* var_v /* var v: AbstractCompilerVisitor */;
103 val* var1 /* : nullable MType */;
104 val* var2 /* : RuntimeVariable */;
105 val* var_res /* var res: RuntimeVariable */;
106 val* var3 /* : AExpr */;
107 val* var4 /* : RuntimeVariable */;
108 val* var_cond /* var cond: RuntimeVariable */;
109 static val* varonce;
110 val* var5 /* : String */;
111 char* var6 /* : NativeString */;
112 long var7 /* : Int */;
113 val* var8 /* : String */;
114 static val* varonce9;
115 val* var10 /* : String */;
116 char* var11 /* : NativeString */;
117 long var12 /* : Int */;
118 val* var13 /* : String */;
119 val* var14 /* : Array[Object] */;
120 long var15 /* : Int */;
121 val* var16 /* : NativeArray[Object] */;
122 val* var17 /* : String */;
123 val* var18 /* : nullable AExpr */;
124 val* var19 /* : null */;
125 val* var20 /* : RuntimeVariable */;
126 static val* varonce21;
127 val* var22 /* : String */;
128 char* var23 /* : NativeString */;
129 long var24 /* : Int */;
130 val* var25 /* : String */;
131 val* var26 /* : nullable AExpr */;
132 val* var27 /* : null */;
133 val* var28 /* : RuntimeVariable */;
134 static val* varonce29;
135 val* var30 /* : String */;
136 char* var31 /* : NativeString */;
137 long var32 /* : Int */;
138 val* var33 /* : String */;
139 var_v = p0;
140 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AIfExpr>*/;
141 if (var1 == NULL) {
142 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 1851);
143 exit(1);
144 }
145 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var1) /* new_var on <var_v:AbstractCompilerVisitor>*/;
146 var_res = var2;
147 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
148 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var3) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
149 var_cond = var4;
150 if (varonce) {
151 var5 = varonce;
152 } else {
153 var6 = "if (";
154 var7 = 4;
155 var8 = string__NativeString__to_s_with_length(var6, var7);
156 var5 = var8;
157 varonce = var5;
158 }
159 if (varonce9) {
160 var10 = varonce9;
161 } else {
162 var11 = "){";
163 var12 = 2;
164 var13 = string__NativeString__to_s_with_length(var11, var12);
165 var10 = var13;
166 varonce9 = var10;
167 }
168 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
169 { /* var14 = array_instance Array[Object] */
170 var15 = 3;
171 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
172 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
173 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_cond;
174 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
175 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
176 CHECK_NEW_array__Array(var14);
177 }
178 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
179 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
180 var18 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
181 if (var18 == NULL) {
182 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 1854);
183 exit(1);
184 }
185 var19 = NULL;
186 var20 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var18, var19) /* expr on <var_v:AbstractCompilerVisitor>*/;
187 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_res, var20) /* assign on <var_v:AbstractCompilerVisitor>*/;
188 if (varonce21) {
189 var22 = varonce21;
190 } else {
191 var23 = "} else {";
192 var24 = 8;
193 var25 = string__NativeString__to_s_with_length(var23, var24);
194 var22 = var25;
195 varonce21 = var22;
196 }
197 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var22) /* add on <var_v:AbstractCompilerVisitor>*/;
198 var26 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
199 if (var26 == NULL) {
200 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 1856);
201 exit(1);
202 }
203 var27 = NULL;
204 var28 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var26, var27) /* expr on <var_v:AbstractCompilerVisitor>*/;
205 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_res, var28) /* assign on <var_v:AbstractCompilerVisitor>*/;
206 if (varonce29) {
207 var30 = varonce29;
208 } else {
209 var31 = "}";
210 var32 = 1;
211 var33 = string__NativeString__to_s_with_length(var31, var32);
212 var30 = var33;
213 varonce29 = var30;
214 }
215 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var30) /* add on <var_v:AbstractCompilerVisitor>*/;
216 var = var_res;
217 goto RET_LABEL;
218 RET_LABEL:;
219 return var;
220 }
221 /* method abstract_compiler#AIfExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
222 val* VIRTUAL_abstract_compiler__AIfExpr__expr(val* self, val* p0) {
223 val* var /* : nullable RuntimeVariable */;
224 val* var1 /* : nullable RuntimeVariable */;
225 var1 = abstract_compiler__AIfExpr__expr(self, p0);
226 var = var1;
227 RET_LABEL:;
228 return var;
229 }
230 /* method abstract_compiler#AIfexprExpr#expr for (self: AIfexprExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
231 val* abstract_compiler__AIfexprExpr__expr(val* self, val* p0) {
232 val* var /* : nullable RuntimeVariable */;
233 val* var_v /* var v: AbstractCompilerVisitor */;
234 val* var1 /* : nullable MType */;
235 val* var2 /* : RuntimeVariable */;
236 val* var_res /* var res: RuntimeVariable */;
237 val* var3 /* : AExpr */;
238 val* var4 /* : RuntimeVariable */;
239 val* var_cond /* var cond: RuntimeVariable */;
240 static val* varonce;
241 val* var5 /* : String */;
242 char* var6 /* : NativeString */;
243 long var7 /* : Int */;
244 val* var8 /* : String */;
245 static val* varonce9;
246 val* var10 /* : String */;
247 char* var11 /* : NativeString */;
248 long var12 /* : Int */;
249 val* var13 /* : String */;
250 val* var14 /* : Array[Object] */;
251 long var15 /* : Int */;
252 val* var16 /* : NativeArray[Object] */;
253 val* var17 /* : String */;
254 val* var18 /* : AExpr */;
255 val* var19 /* : null */;
256 val* var20 /* : RuntimeVariable */;
257 static val* varonce21;
258 val* var22 /* : String */;
259 char* var23 /* : NativeString */;
260 long var24 /* : Int */;
261 val* var25 /* : String */;
262 val* var26 /* : AExpr */;
263 val* var27 /* : null */;
264 val* var28 /* : RuntimeVariable */;
265 static val* varonce29;
266 val* var30 /* : String */;
267 char* var31 /* : NativeString */;
268 long var32 /* : Int */;
269 val* var33 /* : String */;
270 var_v = p0;
271 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AIfexprExpr>*/;
272 if (var1 == NULL) {
273 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 1865);
274 exit(1);
275 }
276 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var1) /* new_var on <var_v:AbstractCompilerVisitor>*/;
277 var_res = var2;
278 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
279 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var3) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
280 var_cond = var4;
281 if (varonce) {
282 var5 = varonce;
283 } else {
284 var6 = "if (";
285 var7 = 4;
286 var8 = string__NativeString__to_s_with_length(var6, var7);
287 var5 = var8;
288 varonce = var5;
289 }
290 if (varonce9) {
291 var10 = varonce9;
292 } else {
293 var11 = "){";
294 var12 = 2;
295 var13 = string__NativeString__to_s_with_length(var11, var12);
296 var10 = var13;
297 varonce9 = var10;
298 }
299 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
300 { /* var14 = array_instance Array[Object] */
301 var15 = 3;
302 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
303 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
304 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_cond;
305 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
306 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
307 CHECK_NEW_array__Array(var14);
308 }
309 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
310 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
311 var18 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
312 var19 = NULL;
313 var20 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var18, var19) /* expr on <var_v:AbstractCompilerVisitor>*/;
314 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_res, var20) /* assign on <var_v:AbstractCompilerVisitor>*/;
315 if (varonce21) {
316 var22 = varonce21;
317 } else {
318 var23 = "} else {";
319 var24 = 8;
320 var25 = string__NativeString__to_s_with_length(var23, var24);
321 var22 = var25;
322 varonce21 = var22;
323 }
324 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var22) /* add on <var_v:AbstractCompilerVisitor>*/;
325 var26 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
326 var27 = NULL;
327 var28 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var26, var27) /* expr on <var_v:AbstractCompilerVisitor>*/;
328 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_res, var28) /* assign on <var_v:AbstractCompilerVisitor>*/;
329 if (varonce29) {
330 var30 = varonce29;
331 } else {
332 var31 = "}";
333 var32 = 1;
334 var33 = string__NativeString__to_s_with_length(var31, var32);
335 var30 = var33;
336 varonce29 = var30;
337 }
338 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var30) /* add on <var_v:AbstractCompilerVisitor>*/;
339 var = var_res;
340 goto RET_LABEL;
341 RET_LABEL:;
342 return var;
343 }
344 /* method abstract_compiler#AIfexprExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
345 val* VIRTUAL_abstract_compiler__AIfexprExpr__expr(val* self, val* p0) {
346 val* var /* : nullable RuntimeVariable */;
347 val* var1 /* : nullable RuntimeVariable */;
348 var1 = abstract_compiler__AIfexprExpr__expr(self, p0);
349 var = var1;
350 RET_LABEL:;
351 return var;
352 }
353 /* method abstract_compiler#ADoExpr#stmt for (self: ADoExpr, AbstractCompilerVisitor) */
354 void abstract_compiler__ADoExpr__stmt(val* self, val* p0) {
355 val* var_v /* var v: AbstractCompilerVisitor */;
356 val* var /* : nullable AExpr */;
357 val* var1 /* : nullable EscapeMark */;
358 val* var_escapemark /* var escapemark: nullable EscapeMark */;
359 val* var2 /* : null */;
360 short int var3 /* : Bool */;
361 static val* varonce;
362 val* var4 /* : String */;
363 char* var5 /* : NativeString */;
364 long var6 /* : Int */;
365 val* var7 /* : String */;
366 val* var8 /* : String */;
367 static val* varonce9;
368 val* var10 /* : String */;
369 char* var11 /* : NativeString */;
370 long var12 /* : Int */;
371 val* var13 /* : String */;
372 val* var14 /* : Array[Object] */;
373 long var15 /* : Int */;
374 val* var16 /* : NativeArray[Object] */;
375 val* var17 /* : String */;
376 var_v = p0;
377 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADoExpr__n_block]))(self) /* n_block on <self:ADoExpr>*/;
378 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var) /* stmt on <var_v:AbstractCompilerVisitor>*/;
379 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ADoExpr__escapemark]))(self) /* escapemark on <self:ADoExpr>*/;
380 var_escapemark = var1;
381 var2 = NULL;
382 if (var_escapemark == NULL) {
383 var3 = 0; /* is null */
384 } else {
385 var3 = 1; /* arg is null and recv is not */
386 }
387 if (var3){
388 if (varonce) {
389 var4 = varonce;
390 } else {
391 var5 = "BREAK_";
392 var6 = 6;
393 var7 = string__NativeString__to_s_with_length(var5, var6);
394 var4 = var7;
395 varonce = var4;
396 }
397 var8 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var_escapemark) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
398 if (varonce9) {
399 var10 = varonce9;
400 } else {
401 var11 = ": (void)0;";
402 var12 = 10;
403 var13 = string__NativeString__to_s_with_length(var11, var12);
404 var10 = var13;
405 varonce9 = var10;
406 }
407 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
408 { /* var14 = array_instance Array[Object] */
409 var15 = 3;
410 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
411 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var4;
412 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var8;
413 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
414 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
415 CHECK_NEW_array__Array(var14);
416 }
417 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
418 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
419 } else {
420 }
421 RET_LABEL:;
422 }
423 /* method abstract_compiler#ADoExpr#stmt for (self: Object, AbstractCompilerVisitor) */
424 void VIRTUAL_abstract_compiler__ADoExpr__stmt(val* self, val* p0) {
425 abstract_compiler__ADoExpr__stmt(self, p0);
426 RET_LABEL:;
427 }
428 /* method abstract_compiler#AWhileExpr#stmt for (self: AWhileExpr, AbstractCompilerVisitor) */
429 void abstract_compiler__AWhileExpr__stmt(val* self, val* p0) {
430 val* var_v /* var v: AbstractCompilerVisitor */;
431 static val* varonce;
432 val* var /* : String */;
433 char* var1 /* : NativeString */;
434 long var2 /* : Int */;
435 val* var3 /* : String */;
436 val* var4 /* : AExpr */;
437 val* var5 /* : RuntimeVariable */;
438 val* var_cond /* var cond: RuntimeVariable */;
439 static val* varonce6;
440 val* var7 /* : String */;
441 char* var8 /* : NativeString */;
442 long var9 /* : Int */;
443 val* var10 /* : String */;
444 static val* varonce11;
445 val* var12 /* : String */;
446 char* var13 /* : NativeString */;
447 long var14 /* : Int */;
448 val* var15 /* : String */;
449 val* var16 /* : Array[Object] */;
450 long var17 /* : Int */;
451 val* var18 /* : NativeArray[Object] */;
452 val* var19 /* : String */;
453 val* var20 /* : nullable AExpr */;
454 static val* varonce21;
455 val* var22 /* : String */;
456 char* var23 /* : NativeString */;
457 long var24 /* : Int */;
458 val* var25 /* : String */;
459 val* var26 /* : nullable EscapeMark */;
460 val* var27 /* : String */;
461 static val* varonce28;
462 val* var29 /* : String */;
463 char* var30 /* : NativeString */;
464 long var31 /* : Int */;
465 val* var32 /* : String */;
466 val* var33 /* : Array[Object] */;
467 long var34 /* : Int */;
468 val* var35 /* : NativeArray[Object] */;
469 val* var36 /* : String */;
470 static val* varonce37;
471 val* var38 /* : String */;
472 char* var39 /* : NativeString */;
473 long var40 /* : Int */;
474 val* var41 /* : String */;
475 static val* varonce42;
476 val* var43 /* : String */;
477 char* var44 /* : NativeString */;
478 long var45 /* : Int */;
479 val* var46 /* : String */;
480 val* var47 /* : nullable EscapeMark */;
481 val* var48 /* : String */;
482 static val* varonce49;
483 val* var50 /* : String */;
484 char* var51 /* : NativeString */;
485 long var52 /* : Int */;
486 val* var53 /* : String */;
487 val* var54 /* : Array[Object] */;
488 long var55 /* : Int */;
489 val* var56 /* : NativeArray[Object] */;
490 val* var57 /* : String */;
491 var_v = p0;
492 if (varonce) {
493 var = varonce;
494 } else {
495 var1 = "for(;;) {";
496 var2 = 9;
497 var3 = string__NativeString__to_s_with_length(var1, var2);
498 var = var3;
499 varonce = var;
500 }
501 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var) /* add on <var_v:AbstractCompilerVisitor>*/;
502 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on <self:AWhileExpr>*/;
503 var5 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var4) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
504 var_cond = var5;
505 if (varonce6) {
506 var7 = varonce6;
507 } else {
508 var8 = "if (!";
509 var9 = 5;
510 var10 = string__NativeString__to_s_with_length(var8, var9);
511 var7 = var10;
512 varonce6 = var7;
513 }
514 if (varonce11) {
515 var12 = varonce11;
516 } else {
517 var13 = ") break;";
518 var14 = 8;
519 var15 = string__NativeString__to_s_with_length(var13, var14);
520 var12 = var15;
521 varonce11 = var12;
522 }
523 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
524 { /* var16 = array_instance Array[Object] */
525 var17 = 3;
526 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
527 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
528 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_cond;
529 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
530 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
531 CHECK_NEW_array__Array(var16);
532 }
533 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
534 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var19) /* add on <var_v:AbstractCompilerVisitor>*/;
535 var20 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on <self:AWhileExpr>*/;
536 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var20) /* stmt on <var_v:AbstractCompilerVisitor>*/;
537 if (varonce21) {
538 var22 = varonce21;
539 } else {
540 var23 = "CONTINUE_";
541 var24 = 9;
542 var25 = string__NativeString__to_s_with_length(var23, var24);
543 var22 = var25;
544 varonce21 = var22;
545 }
546 var26 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark]))(self) /* escapemark on <self:AWhileExpr>*/;
547 var27 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var26) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
548 if (varonce28) {
549 var29 = varonce28;
550 } else {
551 var30 = ": (void)0;";
552 var31 = 10;
553 var32 = string__NativeString__to_s_with_length(var30, var31);
554 var29 = var32;
555 varonce28 = var29;
556 }
557 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
558 { /* var33 = array_instance Array[Object] */
559 var34 = 3;
560 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
561 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var22;
562 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var27;
563 ((struct instance_array__NativeArray*)var35)->values[2] = (val*) var29;
564 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
565 CHECK_NEW_array__Array(var33);
566 }
567 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
568 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var36) /* add on <var_v:AbstractCompilerVisitor>*/;
569 if (varonce37) {
570 var38 = varonce37;
571 } else {
572 var39 = "}";
573 var40 = 1;
574 var41 = string__NativeString__to_s_with_length(var39, var40);
575 var38 = var41;
576 varonce37 = var38;
577 }
578 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var38) /* add on <var_v:AbstractCompilerVisitor>*/;
579 if (varonce42) {
580 var43 = varonce42;
581 } else {
582 var44 = "BREAK_";
583 var45 = 6;
584 var46 = string__NativeString__to_s_with_length(var44, var45);
585 var43 = var46;
586 varonce42 = var43;
587 }
588 var47 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AWhileExpr__escapemark]))(self) /* escapemark on <self:AWhileExpr>*/;
589 var48 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var47) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
590 if (varonce49) {
591 var50 = varonce49;
592 } else {
593 var51 = ": (void)0;";
594 var52 = 10;
595 var53 = string__NativeString__to_s_with_length(var51, var52);
596 var50 = var53;
597 varonce49 = var50;
598 }
599 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
600 { /* var54 = array_instance Array[Object] */
601 var55 = 3;
602 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
603 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var43;
604 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var48;
605 ((struct instance_array__NativeArray*)var56)->values[2] = (val*) var50;
606 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
607 CHECK_NEW_array__Array(var54);
608 }
609 var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
610 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var57) /* add on <var_v:AbstractCompilerVisitor>*/;
611 RET_LABEL:;
612 }
613 /* method abstract_compiler#AWhileExpr#stmt for (self: Object, AbstractCompilerVisitor) */
614 void VIRTUAL_abstract_compiler__AWhileExpr__stmt(val* self, val* p0) {
615 abstract_compiler__AWhileExpr__stmt(self, p0);
616 RET_LABEL:;
617 }
618 /* method abstract_compiler#ALoopExpr#stmt for (self: ALoopExpr, AbstractCompilerVisitor) */
619 void abstract_compiler__ALoopExpr__stmt(val* self, val* p0) {
620 val* var_v /* var v: AbstractCompilerVisitor */;
621 static val* varonce;
622 val* var /* : String */;
623 char* var1 /* : NativeString */;
624 long var2 /* : Int */;
625 val* var3 /* : String */;
626 val* var4 /* : nullable AExpr */;
627 static val* varonce5;
628 val* var6 /* : String */;
629 char* var7 /* : NativeString */;
630 long var8 /* : Int */;
631 val* var9 /* : String */;
632 val* var10 /* : nullable EscapeMark */;
633 val* var11 /* : String */;
634 static val* varonce12;
635 val* var13 /* : String */;
636 char* var14 /* : NativeString */;
637 long var15 /* : Int */;
638 val* var16 /* : String */;
639 val* var17 /* : Array[Object] */;
640 long var18 /* : Int */;
641 val* var19 /* : NativeArray[Object] */;
642 val* var20 /* : String */;
643 static val* varonce21;
644 val* var22 /* : String */;
645 char* var23 /* : NativeString */;
646 long var24 /* : Int */;
647 val* var25 /* : String */;
648 static val* varonce26;
649 val* var27 /* : String */;
650 char* var28 /* : NativeString */;
651 long var29 /* : Int */;
652 val* var30 /* : String */;
653 val* var31 /* : nullable EscapeMark */;
654 val* var32 /* : String */;
655 static val* varonce33;
656 val* var34 /* : String */;
657 char* var35 /* : NativeString */;
658 long var36 /* : Int */;
659 val* var37 /* : String */;
660 val* var38 /* : Array[Object] */;
661 long var39 /* : Int */;
662 val* var40 /* : NativeArray[Object] */;
663 val* var41 /* : String */;
664 var_v = p0;
665 if (varonce) {
666 var = varonce;
667 } else {
668 var1 = "for(;;) {";
669 var2 = 9;
670 var3 = string__NativeString__to_s_with_length(var1, var2);
671 var = var3;
672 varonce = var;
673 }
674 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var) /* add on <var_v:AbstractCompilerVisitor>*/;
675 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on <self:ALoopExpr>*/;
676 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var4) /* stmt on <var_v:AbstractCompilerVisitor>*/;
677 if (varonce5) {
678 var6 = varonce5;
679 } else {
680 var7 = "CONTINUE_";
681 var8 = 9;
682 var9 = string__NativeString__to_s_with_length(var7, var8);
683 var6 = var9;
684 varonce5 = var6;
685 }
686 var10 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark]))(self) /* escapemark on <self:ALoopExpr>*/;
687 var11 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var10) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
688 if (varonce12) {
689 var13 = varonce12;
690 } else {
691 var14 = ": (void)0;";
692 var15 = 10;
693 var16 = string__NativeString__to_s_with_length(var14, var15);
694 var13 = var16;
695 varonce12 = var13;
696 }
697 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
698 { /* var17 = array_instance Array[Object] */
699 var18 = 3;
700 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
701 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var6;
702 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var11;
703 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
704 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
705 CHECK_NEW_array__Array(var17);
706 }
707 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
708 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var20) /* add on <var_v:AbstractCompilerVisitor>*/;
709 if (varonce21) {
710 var22 = varonce21;
711 } else {
712 var23 = "}";
713 var24 = 1;
714 var25 = string__NativeString__to_s_with_length(var23, var24);
715 var22 = var25;
716 varonce21 = var22;
717 }
718 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var22) /* add on <var_v:AbstractCompilerVisitor>*/;
719 if (varonce26) {
720 var27 = varonce26;
721 } else {
722 var28 = "BREAK_";
723 var29 = 6;
724 var30 = string__NativeString__to_s_with_length(var28, var29);
725 var27 = var30;
726 varonce26 = var27;
727 }
728 var31 = ((val* (*)(val*))(self->class->vft[COLOR_scope__ALoopExpr__escapemark]))(self) /* escapemark on <self:ALoopExpr>*/;
729 var32 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var31) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
730 if (varonce33) {
731 var34 = varonce33;
732 } else {
733 var35 = ": (void)0;";
734 var36 = 10;
735 var37 = string__NativeString__to_s_with_length(var35, var36);
736 var34 = var37;
737 varonce33 = var34;
738 }
739 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
740 { /* var38 = array_instance Array[Object] */
741 var39 = 3;
742 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
743 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var27;
744 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var32;
745 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34;
746 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
747 CHECK_NEW_array__Array(var38);
748 }
749 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
750 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var41) /* add on <var_v:AbstractCompilerVisitor>*/;
751 RET_LABEL:;
752 }
753 /* method abstract_compiler#ALoopExpr#stmt for (self: Object, AbstractCompilerVisitor) */
754 void VIRTUAL_abstract_compiler__ALoopExpr__stmt(val* self, val* p0) {
755 abstract_compiler__ALoopExpr__stmt(self, p0);
756 RET_LABEL:;
757 }
758 /* method abstract_compiler#AForExpr#stmt for (self: AForExpr, AbstractCompilerVisitor) */
759 void abstract_compiler__AForExpr__stmt(val* self, val* p0) {
760 val* var_v /* var v: AbstractCompilerVisitor */;
761 val* var /* : AExpr */;
762 val* var_nexpr /* var nexpr: AExpr */;
763 short int var1 /* : Bool */;
764 short int var2 /* : Bool */;
765 val* var3 /* : nullable Array[Variable] */;
766 long var4 /* : Int */;
767 long var5 /* : Int */;
768 short int var6 /* : Bool */;
769 short int var8 /* : Bool */;
770 short int var_ /* var : Bool */;
771 short int var9 /* : Bool */;
772 int cltype;
773 int idtype;
774 short int var_10 /* var : Bool */;
775 val* var11 /* : AbstractCompiler */;
776 val* var12 /* : ModelBuilder */;
777 val* var13 /* : ToolContext */;
778 val* var14 /* : OptionBool */;
779 val* var15 /* : nullable Object */;
780 short int var16 /* : Bool */;
781 short int var17 /* : Bool */;
782 val* var18 /* : AExpr */;
783 val* var19 /* : null */;
784 val* var20 /* : RuntimeVariable */;
785 val* var_from /* var from: RuntimeVariable */;
786 val* var21 /* : AExpr */;
787 val* var22 /* : null */;
788 val* var23 /* : RuntimeVariable */;
789 val* var_to /* var to: RuntimeVariable */;
790 val* var24 /* : nullable Array[Variable] */;
791 val* var25 /* : nullable Object */;
792 val* var26 /* : RuntimeVariable */;
793 val* var_variable /* var variable: RuntimeVariable */;
794 static val* varonce;
795 val* var27 /* : String */;
796 char* var28 /* : NativeString */;
797 long var29 /* : Int */;
798 val* var30 /* : String */;
799 static val* varonce31;
800 val* var32 /* : String */;
801 char* var33 /* : NativeString */;
802 long var34 /* : Int */;
803 val* var35 /* : String */;
804 val* var36 /* : MType */;
805 val* var37 /* : MMethod */;
806 val* var38 /* : Array[RuntimeVariable] */;
807 long var39 /* : Int */;
808 val* var40 /* : NativeArray[RuntimeVariable] */;
809 val* var41 /* : nullable RuntimeVariable */;
810 val* var_ok /* var ok: nullable RuntimeVariable */;
811 val* var42 /* : null */;
812 short int var43 /* : Bool */;
813 static val* varonce44;
814 val* var45 /* : String */;
815 char* var46 /* : NativeString */;
816 long var47 /* : Int */;
817 val* var48 /* : String */;
818 static val* varonce49;
819 val* var50 /* : String */;
820 char* var51 /* : NativeString */;
821 long var52 /* : Int */;
822 val* var53 /* : String */;
823 val* var54 /* : Array[Object] */;
824 long var55 /* : Int */;
825 val* var56 /* : NativeArray[Object] */;
826 val* var57 /* : String */;
827 val* var58 /* : nullable AExpr */;
828 static val* varonce59;
829 val* var60 /* : String */;
830 char* var61 /* : NativeString */;
831 long var62 /* : Int */;
832 val* var63 /* : String */;
833 val* var64 /* : nullable EscapeMark */;
834 val* var65 /* : String */;
835 static val* varonce66;
836 val* var67 /* : String */;
837 char* var68 /* : NativeString */;
838 long var69 /* : Int */;
839 val* var70 /* : String */;
840 val* var71 /* : Array[Object] */;
841 long var72 /* : Int */;
842 val* var73 /* : NativeArray[Object] */;
843 val* var74 /* : String */;
844 static val* varonce75;
845 val* var76 /* : String */;
846 char* var77 /* : NativeString */;
847 long var78 /* : Int */;
848 val* var79 /* : String */;
849 val* var80 /* : MType */;
850 val* var81 /* : MMethod */;
851 val* var82 /* : Array[RuntimeVariable] */;
852 long var83 /* : Int */;
853 val* var84 /* : NativeArray[RuntimeVariable] */;
854 val* var85 /* : nullable RuntimeVariable */;
855 val* var_succ /* var succ: nullable RuntimeVariable */;
856 val* var86 /* : null */;
857 short int var87 /* : Bool */;
858 static val* varonce88;
859 val* var89 /* : String */;
860 char* var90 /* : NativeString */;
861 long var91 /* : Int */;
862 val* var92 /* : String */;
863 static val* varonce93;
864 val* var94 /* : String */;
865 char* var95 /* : NativeString */;
866 long var96 /* : Int */;
867 val* var97 /* : String */;
868 val* var98 /* : nullable EscapeMark */;
869 val* var99 /* : String */;
870 static val* varonce100;
871 val* var101 /* : String */;
872 char* var102 /* : NativeString */;
873 long var103 /* : Int */;
874 val* var104 /* : String */;
875 val* var105 /* : Array[Object] */;
876 long var106 /* : Int */;
877 val* var107 /* : NativeArray[Object] */;
878 val* var108 /* : String */;
879 val* var109 /* : AExpr */;
880 val* var110 /* : null */;
881 val* var111 /* : RuntimeVariable */;
882 val* var_cl /* var cl: RuntimeVariable */;
883 val* var112 /* : nullable MMethod */;
884 val* var_it_meth /* var it_meth: nullable MMethod */;
885 val* var113 /* : null */;
886 short int var114 /* : Bool */;
887 val* var115 /* : Array[RuntimeVariable] */;
888 long var116 /* : Int */;
889 val* var117 /* : NativeArray[RuntimeVariable] */;
890 val* var118 /* : nullable RuntimeVariable */;
891 val* var_it /* var it: nullable RuntimeVariable */;
892 val* var119 /* : null */;
893 short int var120 /* : Bool */;
894 static val* varonce121;
895 val* var122 /* : String */;
896 char* var123 /* : NativeString */;
897 long var124 /* : Int */;
898 val* var125 /* : String */;
899 val* var126 /* : nullable MMethod */;
900 val* var_isok_meth /* var isok_meth: nullable MMethod */;
901 val* var127 /* : null */;
902 short int var128 /* : Bool */;
903 val* var129 /* : Array[RuntimeVariable] */;
904 long var130 /* : Int */;
905 val* var131 /* : NativeArray[RuntimeVariable] */;
906 val* var132 /* : nullable RuntimeVariable */;
907 val* var_ok133 /* var ok: nullable RuntimeVariable */;
908 val* var134 /* : null */;
909 short int var135 /* : Bool */;
910 static val* varonce136;
911 val* var137 /* : String */;
912 char* var138 /* : NativeString */;
913 long var139 /* : Int */;
914 val* var140 /* : String */;
915 static val* varonce141;
916 val* var142 /* : String */;
917 char* var143 /* : NativeString */;
918 long var144 /* : Int */;
919 val* var145 /* : String */;
920 val* var146 /* : Array[Object] */;
921 long var147 /* : Int */;
922 val* var148 /* : NativeArray[Object] */;
923 val* var149 /* : String */;
924 val* var150 /* : nullable Array[Variable] */;
925 long var151 /* : Int */;
926 long var152 /* : Int */;
927 short int var153 /* : Bool */;
928 short int var155 /* : Bool */;
929 val* var156 /* : nullable MMethod */;
930 val* var_item_meth /* var item_meth: nullable MMethod */;
931 val* var157 /* : null */;
932 short int var158 /* : Bool */;
933 val* var159 /* : Array[RuntimeVariable] */;
934 long var160 /* : Int */;
935 val* var161 /* : NativeArray[RuntimeVariable] */;
936 val* var162 /* : nullable RuntimeVariable */;
937 val* var_i /* var i: nullable RuntimeVariable */;
938 val* var163 /* : null */;
939 short int var164 /* : Bool */;
940 val* var165 /* : nullable Array[Variable] */;
941 val* var166 /* : nullable Object */;
942 val* var167 /* : RuntimeVariable */;
943 val* var168 /* : nullable Array[Variable] */;
944 long var169 /* : Int */;
945 long var170 /* : Int */;
946 short int var171 /* : Bool */;
947 short int var173 /* : Bool */;
948 val* var174 /* : nullable MMethod */;
949 val* var_key_meth /* var key_meth: nullable MMethod */;
950 val* var175 /* : null */;
951 short int var176 /* : Bool */;
952 val* var177 /* : Array[RuntimeVariable] */;
953 long var178 /* : Int */;
954 val* var179 /* : NativeArray[RuntimeVariable] */;
955 val* var180 /* : nullable RuntimeVariable */;
956 val* var_i181 /* var i: nullable RuntimeVariable */;
957 val* var182 /* : null */;
958 short int var183 /* : Bool */;
959 val* var184 /* : nullable Array[Variable] */;
960 long var185 /* : Int */;
961 val* var186 /* : nullable Object */;
962 val* var187 /* : RuntimeVariable */;
963 val* var188 /* : nullable MMethod */;
964 val* var_item_meth189 /* var item_meth: nullable MMethod */;
965 val* var190 /* : null */;
966 short int var191 /* : Bool */;
967 val* var192 /* : Array[RuntimeVariable] */;
968 long var193 /* : Int */;
969 val* var194 /* : NativeArray[RuntimeVariable] */;
970 val* var195 /* : nullable RuntimeVariable */;
971 val* var196 /* : null */;
972 short int var197 /* : Bool */;
973 val* var198 /* : nullable Array[Variable] */;
974 long var199 /* : Int */;
975 val* var200 /* : nullable Object */;
976 val* var201 /* : RuntimeVariable */;
977 val* var202 /* : nullable AExpr */;
978 static val* varonce203;
979 val* var204 /* : String */;
980 char* var205 /* : NativeString */;
981 long var206 /* : Int */;
982 val* var207 /* : String */;
983 val* var208 /* : nullable EscapeMark */;
984 val* var209 /* : String */;
985 static val* varonce210;
986 val* var211 /* : String */;
987 char* var212 /* : NativeString */;
988 long var213 /* : Int */;
989 val* var214 /* : String */;
990 val* var215 /* : Array[Object] */;
991 long var216 /* : Int */;
992 val* var217 /* : NativeArray[Object] */;
993 val* var218 /* : String */;
994 val* var219 /* : nullable MMethod */;
995 val* var_next_meth /* var next_meth: nullable MMethod */;
996 val* var220 /* : null */;
997 short int var221 /* : Bool */;
998 val* var222 /* : Array[RuntimeVariable] */;
999 long var223 /* : Int */;
1000 val* var224 /* : NativeArray[RuntimeVariable] */;
1001 val* var225 /* : nullable RuntimeVariable */;
1002 static val* varonce226;
1003 val* var227 /* : String */;
1004 char* var228 /* : NativeString */;
1005 long var229 /* : Int */;
1006 val* var230 /* : String */;
1007 static val* varonce231;
1008 val* var232 /* : String */;
1009 char* var233 /* : NativeString */;
1010 long var234 /* : Int */;
1011 val* var235 /* : String */;
1012 val* var236 /* : nullable EscapeMark */;
1013 val* var237 /* : String */;
1014 static val* varonce238;
1015 val* var239 /* : String */;
1016 char* var240 /* : NativeString */;
1017 long var241 /* : Int */;
1018 val* var242 /* : String */;
1019 val* var243 /* : Array[Object] */;
1020 long var244 /* : Int */;
1021 val* var245 /* : NativeArray[Object] */;
1022 val* var246 /* : String */;
1023 var_v = p0;
1024 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
1025 var_nexpr = var;
1026 var3 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1027 if (var3 == NULL) {
1028 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1917);
1029 exit(1);
1030 } else {
1031 var4 = ((long (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__length]))(var3) /* length on <var3:nullable Array[Variable]>*/;
1032 }
1033 var5 = 1;
1034 { /* Inline kernel#Int#== (var4,var5) */
1035 var8 = var4 == var5;
1036 var6 = var8;
1037 goto RET_LABEL7;
1038 RET_LABEL7:(void)0;
1039 }
1040 var_ = var6;
1041 if (var6){
1042 /* <var_nexpr:AExpr> isa AOrangeExpr */
1043 cltype = type_parser_nodes__AOrangeExpr.color;
1044 idtype = type_parser_nodes__AOrangeExpr.id;
1045 if(cltype >= var_nexpr->type->table_size) {
1046 var9 = 0;
1047 } else {
1048 var9 = var_nexpr->type->type_table[cltype] == idtype;
1049 }
1050 var2 = var9;
1051 } else {
1052 var2 = var_;
1053 }
1054 var_10 = var2;
1055 if (var2){
1056 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
1057 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler>*/;
1058 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
1059 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_shortcut_range]))(var13) /* opt_no_shortcut_range on <var13:ToolContext>*/;
1060 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
1061 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
1062 var17 = !var16;
1063 var1 = var17;
1064 } else {
1065 var1 = var_10;
1066 }
1067 if (var1){
1068 var18 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(var_nexpr) /* n_expr on <var_nexpr:AExpr(AOrangeExpr)>*/;
1069 var19 = NULL;
1070 var20 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var18, var19) /* expr on <var_v:AbstractCompilerVisitor>*/;
1071 var_from = var20;
1072 var21 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(var_nexpr) /* n_expr2 on <var_nexpr:AExpr(AOrangeExpr)>*/;
1073 var22 = NULL;
1074 var23 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var21, var22) /* expr on <var_v:AbstractCompilerVisitor>*/;
1075 var_to = var23;
1076 var24 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1077 if (var24 == NULL) {
1078 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1920);
1079 exit(1);
1080 } else {
1081 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Collection__first]))(var24) /* first on <var24:nullable Array[Variable]>*/;
1082 }
1083 var26 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variable]))(var_v, var25) /* variable on <var_v:AbstractCompilerVisitor>*/;
1084 var_variable = var26;
1085 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_variable, var_from) /* assign on <var_v:AbstractCompilerVisitor>*/;
1086 if (varonce) {
1087 var27 = varonce;
1088 } else {
1089 var28 = "for(;;) { /* shortcut range */";
1090 var29 = 30;
1091 var30 = string__NativeString__to_s_with_length(var28, var29);
1092 var27 = var30;
1093 varonce = var27;
1094 }
1095 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var27) /* add on <var_v:AbstractCompilerVisitor>*/;
1096 if (varonce31) {
1097 var32 = varonce31;
1098 } else {
1099 var33 = "<";
1100 var34 = 1;
1101 var35 = string__NativeString__to_s_with_length(var33, var34);
1102 var32 = var35;
1103 varonce31 = var32;
1104 }
1105 var36 = ((val* (*)(val*))(var_variable->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_variable) /* mtype on <var_variable:RuntimeVariable>*/;
1106 var37 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(var_v, var32, var36) /* get_property on <var_v:AbstractCompilerVisitor>*/;
1107 var38 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1108 { /* var38 = array_instance Array[RuntimeVariable] */
1109 var39 = 2;
1110 var40 = NEW_array__NativeArray(var39, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1111 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var_variable;
1112 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_to;
1113 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[RuntimeVariable]>*/;
1114 CHECK_NEW_array__Array(var38);
1115 }
1116 var41 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var37, var38) /* send on <var_v:AbstractCompilerVisitor>*/;
1117 var_ok = var41;
1118 var42 = NULL;
1119 if (var_ok == NULL) {
1120 var43 = 0; /* is null */
1121 } else {
1122 var43 = 1; /* arg is null and recv is not */
1123 }
1124 if (!var43) {
1125 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1926);
1126 exit(1);
1127 }
1128 if (varonce44) {
1129 var45 = varonce44;
1130 } else {
1131 var46 = "if(!";
1132 var47 = 4;
1133 var48 = string__NativeString__to_s_with_length(var46, var47);
1134 var45 = var48;
1135 varonce44 = var45;
1136 }
1137 if (varonce49) {
1138 var50 = varonce49;
1139 } else {
1140 var51 = ") break;";
1141 var52 = 8;
1142 var53 = string__NativeString__to_s_with_length(var51, var52);
1143 var50 = var53;
1144 varonce49 = var50;
1145 }
1146 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
1147 { /* var54 = array_instance Array[Object] */
1148 var55 = 3;
1149 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
1150 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var45;
1151 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var_ok;
1152 ((struct instance_array__NativeArray*)var56)->values[2] = (val*) var50;
1153 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
1154 CHECK_NEW_array__Array(var54);
1155 }
1156 var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
1157 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var57) /* add on <var_v:AbstractCompilerVisitor>*/;
1158 var58 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
1159 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var58) /* stmt on <var_v:AbstractCompilerVisitor>*/;
1160 if (varonce59) {
1161 var60 = varonce59;
1162 } else {
1163 var61 = "CONTINUE_";
1164 var62 = 9;
1165 var63 = string__NativeString__to_s_with_length(var61, var62);
1166 var60 = var63;
1167 varonce59 = var60;
1168 }
1169 var64 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on <self:AForExpr>*/;
1170 var65 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var64) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
1171 if (varonce66) {
1172 var67 = varonce66;
1173 } else {
1174 var68 = ": (void)0;";
1175 var69 = 10;
1176 var70 = string__NativeString__to_s_with_length(var68, var69);
1177 var67 = var70;
1178 varonce66 = var67;
1179 }
1180 var71 = NEW_array__Array(&type_array__Arraykernel__Object);
1181 { /* var71 = array_instance Array[Object] */
1182 var72 = 3;
1183 var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
1184 ((struct instance_array__NativeArray*)var73)->values[0] = (val*) var60;
1185 ((struct instance_array__NativeArray*)var73)->values[1] = (val*) var65;
1186 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var67;
1187 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
1188 CHECK_NEW_array__Array(var71);
1189 }
1190 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
1191 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var74) /* add on <var_v:AbstractCompilerVisitor>*/;
1192 if (varonce75) {
1193 var76 = varonce75;
1194 } else {
1195 var77 = "succ";
1196 var78 = 4;
1197 var79 = string__NativeString__to_s_with_length(var77, var78);
1198 var76 = var79;
1199 varonce75 = var76;
1200 }
1201 var80 = ((val* (*)(val*))(var_variable->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_variable) /* mtype on <var_variable:RuntimeVariable>*/;
1202 var81 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(var_v, var76, var80) /* get_property on <var_v:AbstractCompilerVisitor>*/;
1203 var82 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1204 { /* var82 = array_instance Array[RuntimeVariable] */
1205 var83 = 1;
1206 var84 = NEW_array__NativeArray(var83, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1207 ((struct instance_array__NativeArray*)var84)->values[0] = (val*) var_variable;
1208 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[RuntimeVariable]>*/;
1209 CHECK_NEW_array__Array(var82);
1210 }
1211 var85 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var81, var82) /* send on <var_v:AbstractCompilerVisitor>*/;
1212 var_succ = var85;
1213 var86 = NULL;
1214 if (var_succ == NULL) {
1215 var87 = 0; /* is null */
1216 } else {
1217 var87 = 1; /* arg is null and recv is not */
1218 }
1219 if (!var87) {
1220 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1933);
1221 exit(1);
1222 }
1223 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_variable, var_succ) /* assign on <var_v:AbstractCompilerVisitor>*/;
1224 if (varonce88) {
1225 var89 = varonce88;
1226 } else {
1227 var90 = "}";
1228 var91 = 1;
1229 var92 = string__NativeString__to_s_with_length(var90, var91);
1230 var89 = var92;
1231 varonce88 = var89;
1232 }
1233 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var89) /* add on <var_v:AbstractCompilerVisitor>*/;
1234 if (varonce93) {
1235 var94 = varonce93;
1236 } else {
1237 var95 = "BREAK_";
1238 var96 = 6;
1239 var97 = string__NativeString__to_s_with_length(var95, var96);
1240 var94 = var97;
1241 varonce93 = var94;
1242 }
1243 var98 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on <self:AForExpr>*/;
1244 var99 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var98) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
1245 if (varonce100) {
1246 var101 = varonce100;
1247 } else {
1248 var102 = ": (void)0;";
1249 var103 = 10;
1250 var104 = string__NativeString__to_s_with_length(var102, var103);
1251 var101 = var104;
1252 varonce100 = var101;
1253 }
1254 var105 = NEW_array__Array(&type_array__Arraykernel__Object);
1255 { /* var105 = array_instance Array[Object] */
1256 var106 = 3;
1257 var107 = NEW_array__NativeArray(var106, &type_array__NativeArraykernel__Object);
1258 ((struct instance_array__NativeArray*)var107)->values[0] = (val*) var94;
1259 ((struct instance_array__NativeArray*)var107)->values[1] = (val*) var99;
1260 ((struct instance_array__NativeArray*)var107)->values[2] = (val*) var101;
1261 ((void (*)(val*, val*, long))(var105->class->vft[COLOR_array__Array__with_native]))(var105, var107, var106) /* with_native on <var105:Array[Object]>*/;
1262 CHECK_NEW_array__Array(var105);
1263 }
1264 var108 = ((val* (*)(val*))(var105->class->vft[COLOR_string__Object__to_s]))(var105) /* to_s on <var105:Array[Object]>*/;
1265 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var108) /* add on <var_v:AbstractCompilerVisitor>*/;
1266 goto RET_LABEL;
1267 } else {
1268 }
1269 var109 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
1270 var110 = NULL;
1271 var111 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var109, var110) /* expr on <var_v:AbstractCompilerVisitor>*/;
1272 var_cl = var111;
1273 var112 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__method_iterator]))(self) /* method_iterator on <self:AForExpr>*/;
1274 var_it_meth = var112;
1275 var113 = NULL;
1276 if (var_it_meth == NULL) {
1277 var114 = 0; /* is null */
1278 } else {
1279 var114 = 1; /* arg is null and recv is not */
1280 }
1281 if (!var114) {
1282 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1942);
1283 exit(1);
1284 }
1285 var115 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1286 { /* var115 = array_instance Array[RuntimeVariable] */
1287 var116 = 1;
1288 var117 = NEW_array__NativeArray(var116, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1289 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var_cl;
1290 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[RuntimeVariable]>*/;
1291 CHECK_NEW_array__Array(var115);
1292 }
1293 var118 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_it_meth, var115) /* send on <var_v:AbstractCompilerVisitor>*/;
1294 var_it = var118;
1295 var119 = NULL;
1296 if (var_it == NULL) {
1297 var120 = 0; /* is null */
1298 } else {
1299 var120 = 1; /* arg is null and recv is not */
1300 }
1301 if (!var120) {
1302 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1944);
1303 exit(1);
1304 }
1305 if (varonce121) {
1306 var122 = varonce121;
1307 } else {
1308 var123 = "for(;;) {";
1309 var124 = 9;
1310 var125 = string__NativeString__to_s_with_length(var123, var124);
1311 var122 = var125;
1312 varonce121 = var122;
1313 }
1314 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var122) /* add on <var_v:AbstractCompilerVisitor>*/;
1315 var126 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__method_is_ok]))(self) /* method_is_ok on <self:AForExpr>*/;
1316 var_isok_meth = var126;
1317 var127 = NULL;
1318 if (var_isok_meth == NULL) {
1319 var128 = 0; /* is null */
1320 } else {
1321 var128 = 1; /* arg is null and recv is not */
1322 }
1323 if (!var128) {
1324 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1947);
1325 exit(1);
1326 }
1327 var129 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1328 { /* var129 = array_instance Array[RuntimeVariable] */
1329 var130 = 1;
1330 var131 = NEW_array__NativeArray(var130, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1331 ((struct instance_array__NativeArray*)var131)->values[0] = (val*) var_it;
1332 ((void (*)(val*, val*, long))(var129->class->vft[COLOR_array__Array__with_native]))(var129, var131, var130) /* with_native on <var129:Array[RuntimeVariable]>*/;
1333 CHECK_NEW_array__Array(var129);
1334 }
1335 var132 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_isok_meth, var129) /* send on <var_v:AbstractCompilerVisitor>*/;
1336 var_ok133 = var132;
1337 var134 = NULL;
1338 if (var_ok133 == NULL) {
1339 var135 = 0; /* is null */
1340 } else {
1341 var135 = 1; /* arg is null and recv is not */
1342 }
1343 if (!var135) {
1344 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1949);
1345 exit(1);
1346 }
1347 if (varonce136) {
1348 var137 = varonce136;
1349 } else {
1350 var138 = "if(!";
1351 var139 = 4;
1352 var140 = string__NativeString__to_s_with_length(var138, var139);
1353 var137 = var140;
1354 varonce136 = var137;
1355 }
1356 if (varonce141) {
1357 var142 = varonce141;
1358 } else {
1359 var143 = ") break;";
1360 var144 = 8;
1361 var145 = string__NativeString__to_s_with_length(var143, var144);
1362 var142 = var145;
1363 varonce141 = var142;
1364 }
1365 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
1366 { /* var146 = array_instance Array[Object] */
1367 var147 = 3;
1368 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
1369 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var137;
1370 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var_ok133;
1371 ((struct instance_array__NativeArray*)var148)->values[2] = (val*) var142;
1372 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
1373 CHECK_NEW_array__Array(var146);
1374 }
1375 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
1376 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var149) /* add on <var_v:AbstractCompilerVisitor>*/;
1377 var150 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1378 if (var150 == NULL) {
1379 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1951);
1380 exit(1);
1381 } else {
1382 var151 = ((long (*)(val*))(var150->class->vft[COLOR_abstract_collection__Collection__length]))(var150) /* length on <var150:nullable Array[Variable]>*/;
1383 }
1384 var152 = 1;
1385 { /* Inline kernel#Int#== (var151,var152) */
1386 var155 = var151 == var152;
1387 var153 = var155;
1388 goto RET_LABEL154;
1389 RET_LABEL154:(void)0;
1390 }
1391 if (var153){
1392 var156 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__method_item]))(self) /* method_item on <self:AForExpr>*/;
1393 var_item_meth = var156;
1394 var157 = NULL;
1395 if (var_item_meth == NULL) {
1396 var158 = 0; /* is null */
1397 } else {
1398 var158 = 1; /* arg is null and recv is not */
1399 }
1400 if (!var158) {
1401 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1953);
1402 exit(1);
1403 }
1404 var159 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1405 { /* var159 = array_instance Array[RuntimeVariable] */
1406 var160 = 1;
1407 var161 = NEW_array__NativeArray(var160, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1408 ((struct instance_array__NativeArray*)var161)->values[0] = (val*) var_it;
1409 ((void (*)(val*, val*, long))(var159->class->vft[COLOR_array__Array__with_native]))(var159, var161, var160) /* with_native on <var159:Array[RuntimeVariable]>*/;
1410 CHECK_NEW_array__Array(var159);
1411 }
1412 var162 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_item_meth, var159) /* send on <var_v:AbstractCompilerVisitor>*/;
1413 var_i = var162;
1414 var163 = NULL;
1415 if (var_i == NULL) {
1416 var164 = 0; /* is null */
1417 } else {
1418 var164 = 1; /* arg is null and recv is not */
1419 }
1420 if (!var164) {
1421 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1955);
1422 exit(1);
1423 }
1424 var165 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1425 if (var165 == NULL) {
1426 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1956);
1427 exit(1);
1428 } else {
1429 var166 = ((val* (*)(val*))(var165->class->vft[COLOR_abstract_collection__Collection__first]))(var165) /* first on <var165:nullable Array[Variable]>*/;
1430 }
1431 var167 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variable]))(var_v, var166) /* variable on <var_v:AbstractCompilerVisitor>*/;
1432 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var167, var_i) /* assign on <var_v:AbstractCompilerVisitor>*/;
1433 } else {
1434 var168 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1435 if (var168 == NULL) {
1436 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1957);
1437 exit(1);
1438 } else {
1439 var169 = ((long (*)(val*))(var168->class->vft[COLOR_abstract_collection__Collection__length]))(var168) /* length on <var168:nullable Array[Variable]>*/;
1440 }
1441 var170 = 2;
1442 { /* Inline kernel#Int#== (var169,var170) */
1443 var173 = var169 == var170;
1444 var171 = var173;
1445 goto RET_LABEL172;
1446 RET_LABEL172:(void)0;
1447 }
1448 if (var171){
1449 var174 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__method_key]))(self) /* method_key on <self:AForExpr>*/;
1450 var_key_meth = var174;
1451 var175 = NULL;
1452 if (var_key_meth == NULL) {
1453 var176 = 0; /* is null */
1454 } else {
1455 var176 = 1; /* arg is null and recv is not */
1456 }
1457 if (!var176) {
1458 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1959);
1459 exit(1);
1460 }
1461 var177 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1462 { /* var177 = array_instance Array[RuntimeVariable] */
1463 var178 = 1;
1464 var179 = NEW_array__NativeArray(var178, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1465 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var_it;
1466 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[RuntimeVariable]>*/;
1467 CHECK_NEW_array__Array(var177);
1468 }
1469 var180 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_key_meth, var177) /* send on <var_v:AbstractCompilerVisitor>*/;
1470 var_i181 = var180;
1471 var182 = NULL;
1472 if (var_i181 == NULL) {
1473 var183 = 0; /* is null */
1474 } else {
1475 var183 = 1; /* arg is null and recv is not */
1476 }
1477 if (!var183) {
1478 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1961);
1479 exit(1);
1480 }
1481 var184 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1482 var185 = 0;
1483 if (var184 == NULL) {
1484 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1962);
1485 exit(1);
1486 } else {
1487 var186 = ((val* (*)(val*, long))(var184->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var184, var185) /* [] on <var184:nullable Array[Variable]>*/;
1488 }
1489 var187 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variable]))(var_v, var186) /* variable on <var_v:AbstractCompilerVisitor>*/;
1490 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var187, var_i181) /* assign on <var_v:AbstractCompilerVisitor>*/;
1491 var188 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__method_item]))(self) /* method_item on <self:AForExpr>*/;
1492 var_item_meth189 = var188;
1493 var190 = NULL;
1494 if (var_item_meth189 == NULL) {
1495 var191 = 0; /* is null */
1496 } else {
1497 var191 = 1; /* arg is null and recv is not */
1498 }
1499 if (!var191) {
1500 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1964);
1501 exit(1);
1502 }
1503 var192 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1504 { /* var192 = array_instance Array[RuntimeVariable] */
1505 var193 = 1;
1506 var194 = NEW_array__NativeArray(var193, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1507 ((struct instance_array__NativeArray*)var194)->values[0] = (val*) var_it;
1508 ((void (*)(val*, val*, long))(var192->class->vft[COLOR_array__Array__with_native]))(var192, var194, var193) /* with_native on <var192:Array[RuntimeVariable]>*/;
1509 CHECK_NEW_array__Array(var192);
1510 }
1511 var195 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_item_meth189, var192) /* send on <var_v:AbstractCompilerVisitor>*/;
1512 var_i181 = var195;
1513 var196 = NULL;
1514 if (var_i181 == NULL) {
1515 var197 = 0; /* is null */
1516 } else {
1517 var197 = 1; /* arg is null and recv is not */
1518 }
1519 if (!var197) {
1520 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1966);
1521 exit(1);
1522 }
1523 var198 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
1524 var199 = 1;
1525 if (var198 == NULL) {
1526 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 1967);
1527 exit(1);
1528 } else {
1529 var200 = ((val* (*)(val*, long))(var198->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var198, var199) /* [] on <var198:nullable Array[Variable]>*/;
1530 }
1531 var201 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variable]))(var_v, var200) /* variable on <var_v:AbstractCompilerVisitor>*/;
1532 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var201, var_i181) /* assign on <var_v:AbstractCompilerVisitor>*/;
1533 } else {
1534 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/abstract_compiler.nit", 1969);
1535 exit(1);
1536 }
1537 }
1538 var202 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
1539 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var202) /* stmt on <var_v:AbstractCompilerVisitor>*/;
1540 if (varonce203) {
1541 var204 = varonce203;
1542 } else {
1543 var205 = "CONTINUE_";
1544 var206 = 9;
1545 var207 = string__NativeString__to_s_with_length(var205, var206);
1546 var204 = var207;
1547 varonce203 = var204;
1548 }
1549 var208 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on <self:AForExpr>*/;
1550 var209 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var208) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
1551 if (varonce210) {
1552 var211 = varonce210;
1553 } else {
1554 var212 = ": (void)0;";
1555 var213 = 10;
1556 var214 = string__NativeString__to_s_with_length(var212, var213);
1557 var211 = var214;
1558 varonce210 = var211;
1559 }
1560 var215 = NEW_array__Array(&type_array__Arraykernel__Object);
1561 { /* var215 = array_instance Array[Object] */
1562 var216 = 3;
1563 var217 = NEW_array__NativeArray(var216, &type_array__NativeArraykernel__Object);
1564 ((struct instance_array__NativeArray*)var217)->values[0] = (val*) var204;
1565 ((struct instance_array__NativeArray*)var217)->values[1] = (val*) var209;
1566 ((struct instance_array__NativeArray*)var217)->values[2] = (val*) var211;
1567 ((void (*)(val*, val*, long))(var215->class->vft[COLOR_array__Array__with_native]))(var215, var217, var216) /* with_native on <var215:Array[Object]>*/;
1568 CHECK_NEW_array__Array(var215);
1569 }
1570 var218 = ((val* (*)(val*))(var215->class->vft[COLOR_string__Object__to_s]))(var215) /* to_s on <var215:Array[Object]>*/;
1571 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var218) /* add on <var_v:AbstractCompilerVisitor>*/;
1572 var219 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AForExpr__method_next]))(self) /* method_next on <self:AForExpr>*/;
1573 var_next_meth = var219;
1574 var220 = NULL;
1575 if (var_next_meth == NULL) {
1576 var221 = 0; /* is null */
1577 } else {
1578 var221 = 1; /* arg is null and recv is not */
1579 }
1580 if (!var221) {
1581 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 1974);
1582 exit(1);
1583 }
1584 var222 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1585 { /* var222 = array_instance Array[RuntimeVariable] */
1586 var223 = 1;
1587 var224 = NEW_array__NativeArray(var223, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1588 ((struct instance_array__NativeArray*)var224)->values[0] = (val*) var_it;
1589 ((void (*)(val*, val*, long))(var222->class->vft[COLOR_array__Array__with_native]))(var222, var224, var223) /* with_native on <var222:Array[RuntimeVariable]>*/;
1590 CHECK_NEW_array__Array(var222);
1591 }
1592 var225 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_next_meth, var222) /* send on <var_v:AbstractCompilerVisitor>*/;
1593 var225;
1594 if (varonce226) {
1595 var227 = varonce226;
1596 } else {
1597 var228 = "}";
1598 var229 = 1;
1599 var230 = string__NativeString__to_s_with_length(var228, var229);
1600 var227 = var230;
1601 varonce226 = var227;
1602 }
1603 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var227) /* add on <var_v:AbstractCompilerVisitor>*/;
1604 if (varonce231) {
1605 var232 = varonce231;
1606 } else {
1607 var233 = "BREAK_";
1608 var234 = 6;
1609 var235 = string__NativeString__to_s_with_length(var233, var234);
1610 var232 = var235;
1611 varonce231 = var232;
1612 }
1613 var236 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__escapemark]))(self) /* escapemark on <self:AForExpr>*/;
1614 var237 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_name]))(var_v, var236) /* escapemark_name on <var_v:AbstractCompilerVisitor>*/;
1615 if (varonce238) {
1616 var239 = varonce238;
1617 } else {
1618 var240 = ": (void)0;";
1619 var241 = 10;
1620 var242 = string__NativeString__to_s_with_length(var240, var241);
1621 var239 = var242;
1622 varonce238 = var239;
1623 }
1624 var243 = NEW_array__Array(&type_array__Arraykernel__Object);
1625 { /* var243 = array_instance Array[Object] */
1626 var244 = 3;
1627 var245 = NEW_array__NativeArray(var244, &type_array__NativeArraykernel__Object);
1628 ((struct instance_array__NativeArray*)var245)->values[0] = (val*) var232;
1629 ((struct instance_array__NativeArray*)var245)->values[1] = (val*) var237;
1630 ((struct instance_array__NativeArray*)var245)->values[2] = (val*) var239;
1631 ((void (*)(val*, val*, long))(var243->class->vft[COLOR_array__Array__with_native]))(var243, var245, var244) /* with_native on <var243:Array[Object]>*/;
1632 CHECK_NEW_array__Array(var243);
1633 }
1634 var246 = ((val* (*)(val*))(var243->class->vft[COLOR_string__Object__to_s]))(var243) /* to_s on <var243:Array[Object]>*/;
1635 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var246) /* add on <var_v:AbstractCompilerVisitor>*/;
1636 RET_LABEL:;
1637 }
1638 /* method abstract_compiler#AForExpr#stmt for (self: Object, AbstractCompilerVisitor) */
1639 void VIRTUAL_abstract_compiler__AForExpr__stmt(val* self, val* p0) {
1640 abstract_compiler__AForExpr__stmt(self, p0);
1641 RET_LABEL:;
1642 }
1643 /* method abstract_compiler#AAssertExpr#stmt for (self: AAssertExpr, AbstractCompilerVisitor) */
1644 void abstract_compiler__AAssertExpr__stmt(val* self, val* p0) {
1645 val* var_v /* var v: AbstractCompilerVisitor */;
1646 val* var /* : AbstractCompiler */;
1647 val* var1 /* : ModelBuilder */;
1648 val* var2 /* : ToolContext */;
1649 val* var3 /* : OptionBool */;
1650 val* var4 /* : nullable Object */;
1651 short int var5 /* : Bool */;
1652 val* var6 /* : AExpr */;
1653 val* var7 /* : RuntimeVariable */;
1654 val* var_cond /* var cond: RuntimeVariable */;
1655 static val* varonce;
1656 val* var8 /* : String */;
1657 char* var9 /* : NativeString */;
1658 long var10 /* : Int */;
1659 val* var11 /* : String */;
1660 static val* varonce12;
1661 val* var13 /* : String */;
1662 char* var14 /* : NativeString */;
1663 long var15 /* : Int */;
1664 val* var16 /* : String */;
1665 val* var17 /* : Array[Object] */;
1666 long var18 /* : Int */;
1667 val* var19 /* : NativeArray[Object] */;
1668 val* var20 /* : String */;
1669 val* var21 /* : nullable AExpr */;
1670 val* var22 /* : nullable TId */;
1671 val* var_nid /* var nid: nullable TId */;
1672 val* var23 /* : null */;
1673 short int var24 /* : Bool */;
1674 static val* varonce25;
1675 val* var26 /* : String */;
1676 char* var27 /* : NativeString */;
1677 long var28 /* : Int */;
1678 val* var29 /* : String */;
1679 val* var30 /* : String */;
1680 static val* varonce31;
1681 val* var32 /* : String */;
1682 char* var33 /* : NativeString */;
1683 long var34 /* : Int */;
1684 val* var35 /* : String */;
1685 val* var36 /* : Array[Object] */;
1686 long var37 /* : Int */;
1687 val* var38 /* : NativeArray[Object] */;
1688 val* var39 /* : String */;
1689 static val* varonce40;
1690 val* var41 /* : String */;
1691 char* var42 /* : NativeString */;
1692 long var43 /* : Int */;
1693 val* var44 /* : String */;
1694 static val* varonce45;
1695 val* var46 /* : String */;
1696 char* var47 /* : NativeString */;
1697 long var48 /* : Int */;
1698 val* var49 /* : String */;
1699 var_v = p0;
1700 var = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
1701 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler>*/;
1702 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
1703 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_assert]))(var2) /* opt_no_check_assert on <var2:ToolContext>*/;
1704 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
1705 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
1706 if (var5){
1707 goto RET_LABEL;
1708 } else {
1709 }
1710 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on <self:AAssertExpr>*/;
1711 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var6) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
1712 var_cond = var7;
1713 if (varonce) {
1714 var8 = varonce;
1715 } else {
1716 var9 = "if (!";
1717 var10 = 5;
1718 var11 = string__NativeString__to_s_with_length(var9, var10);
1719 var8 = var11;
1720 varonce = var8;
1721 }
1722 if (varonce12) {
1723 var13 = varonce12;
1724 } else {
1725 var14 = ") {";
1726 var15 = 3;
1727 var16 = string__NativeString__to_s_with_length(var14, var15);
1728 var13 = var16;
1729 varonce12 = var13;
1730 }
1731 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
1732 { /* var17 = array_instance Array[Object] */
1733 var18 = 3;
1734 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
1735 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8;
1736 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_cond;
1737 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
1738 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
1739 CHECK_NEW_array__Array(var17);
1740 }
1741 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
1742 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var20) /* add on <var_v:AbstractCompilerVisitor>*/;
1743 var21 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on <self:AAssertExpr>*/;
1744 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var21) /* stmt on <var_v:AbstractCompilerVisitor>*/;
1745 var22 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_id]))(self) /* n_id on <self:AAssertExpr>*/;
1746 var_nid = var22;
1747 var23 = NULL;
1748 if (var_nid == NULL) {
1749 var24 = 0; /* is null */
1750 } else {
1751 var24 = 1; /* arg is null and recv is not */
1752 }
1753 if (var24){
1754 if (varonce25) {
1755 var26 = varonce25;
1756 } else {
1757 var27 = "Assert \'";
1758 var28 = 8;
1759 var29 = string__NativeString__to_s_with_length(var27, var28);
1760 var26 = var29;
1761 varonce25 = var26;
1762 }
1763 var30 = ((val* (*)(val*))(var_nid->class->vft[COLOR_parser_nodes__Token__text]))(var_nid) /* text on <var_nid:nullable TId(TId)>*/;
1764 if (varonce31) {
1765 var32 = varonce31;
1766 } else {
1767 var33 = "\' failed";
1768 var34 = 8;
1769 var35 = string__NativeString__to_s_with_length(var33, var34);
1770 var32 = var35;
1771 varonce31 = var32;
1772 }
1773 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
1774 { /* var36 = array_instance Array[Object] */
1775 var37 = 3;
1776 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
1777 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var26;
1778 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var30;
1779 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var32;
1780 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
1781 CHECK_NEW_array__Array(var36);
1782 }
1783 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
1784 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var39) /* add_abort on <var_v:AbstractCompilerVisitor>*/;
1785 } else {
1786 if (varonce40) {
1787 var41 = varonce40;
1788 } else {
1789 var42 = "Assert failed";
1790 var43 = 13;
1791 var44 = string__NativeString__to_s_with_length(var42, var43);
1792 var41 = var44;
1793 varonce40 = var41;
1794 }
1795 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var41) /* add_abort on <var_v:AbstractCompilerVisitor>*/;
1796 }
1797 if (varonce45) {
1798 var46 = varonce45;
1799 } else {
1800 var47 = "}";
1801 var48 = 1;
1802 var49 = string__NativeString__to_s_with_length(var47, var48);
1803 var46 = var49;
1804 varonce45 = var46;
1805 }
1806 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var46) /* add on <var_v:AbstractCompilerVisitor>*/;
1807 RET_LABEL:;
1808 }
1809 /* method abstract_compiler#AAssertExpr#stmt for (self: Object, AbstractCompilerVisitor) */
1810 void VIRTUAL_abstract_compiler__AAssertExpr__stmt(val* self, val* p0) {
1811 abstract_compiler__AAssertExpr__stmt(self, p0);
1812 RET_LABEL:;
1813 }
1814 /* method abstract_compiler#AOrExpr#expr for (self: AOrExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
1815 val* abstract_compiler__AOrExpr__expr(val* self, val* p0) {
1816 val* var /* : nullable RuntimeVariable */;
1817 val* var_v /* var v: AbstractCompilerVisitor */;
1818 val* var1 /* : nullable MType */;
1819 val* var2 /* : RuntimeVariable */;
1820 val* var_res /* var res: RuntimeVariable */;
1821 val* var3 /* : AExpr */;
1822 val* var4 /* : RuntimeVariable */;
1823 val* var_i1 /* var i1: RuntimeVariable */;
1824 static val* varonce;
1825 val* var5 /* : String */;
1826 char* var6 /* : NativeString */;
1827 long var7 /* : Int */;
1828 val* var8 /* : String */;
1829 static val* varonce9;
1830 val* var10 /* : String */;
1831 char* var11 /* : NativeString */;
1832 long var12 /* : Int */;
1833 val* var13 /* : String */;
1834 val* var14 /* : Array[Object] */;
1835 long var15 /* : Int */;
1836 val* var16 /* : NativeArray[Object] */;
1837 val* var17 /* : String */;
1838 static val* varonce18;
1839 val* var19 /* : String */;
1840 char* var20 /* : NativeString */;
1841 long var21 /* : Int */;
1842 val* var22 /* : String */;
1843 val* var23 /* : Array[Object] */;
1844 long var24 /* : Int */;
1845 val* var25 /* : NativeArray[Object] */;
1846 val* var26 /* : String */;
1847 static val* varonce27;
1848 val* var28 /* : String */;
1849 char* var29 /* : NativeString */;
1850 long var30 /* : Int */;
1851 val* var31 /* : String */;
1852 val* var32 /* : AExpr */;
1853 val* var33 /* : RuntimeVariable */;
1854 val* var_i2 /* var i2: RuntimeVariable */;
1855 static val* varonce34;
1856 val* var35 /* : String */;
1857 char* var36 /* : NativeString */;
1858 long var37 /* : Int */;
1859 val* var38 /* : String */;
1860 static val* varonce39;
1861 val* var40 /* : String */;
1862 char* var41 /* : NativeString */;
1863 long var42 /* : Int */;
1864 val* var43 /* : String */;
1865 val* var44 /* : Array[Object] */;
1866 long var45 /* : Int */;
1867 val* var46 /* : NativeArray[Object] */;
1868 val* var47 /* : String */;
1869 static val* varonce48;
1870 val* var49 /* : String */;
1871 char* var50 /* : NativeString */;
1872 long var51 /* : Int */;
1873 val* var52 /* : String */;
1874 var_v = p0;
1875 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrExpr>*/;
1876 if (var1 == NULL) {
1877 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2002);
1878 exit(1);
1879 }
1880 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var1) /* new_var on <var_v:AbstractCompilerVisitor>*/;
1881 var_res = var2;
1882 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
1883 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var3) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
1884 var_i1 = var4;
1885 if (varonce) {
1886 var5 = varonce;
1887 } else {
1888 var6 = "if (";
1889 var7 = 4;
1890 var8 = string__NativeString__to_s_with_length(var6, var7);
1891 var5 = var8;
1892 varonce = var5;
1893 }
1894 if (varonce9) {
1895 var10 = varonce9;
1896 } else {
1897 var11 = ") {";
1898 var12 = 3;
1899 var13 = string__NativeString__to_s_with_length(var11, var12);
1900 var10 = var13;
1901 varonce9 = var10;
1902 }
1903 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
1904 { /* var14 = array_instance Array[Object] */
1905 var15 = 3;
1906 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
1907 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
1908 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_i1;
1909 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
1910 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
1911 CHECK_NEW_array__Array(var14);
1912 }
1913 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
1914 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
1915 if (varonce18) {
1916 var19 = varonce18;
1917 } else {
1918 var20 = " = 1;";
1919 var21 = 5;
1920 var22 = string__NativeString__to_s_with_length(var20, var21);
1921 var19 = var22;
1922 varonce18 = var19;
1923 }
1924 var23 = NEW_array__Array(&type_array__Arraykernel__Object);
1925 { /* var23 = array_instance Array[Object] */
1926 var24 = 2;
1927 var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
1928 ((struct instance_array__NativeArray*)var25)->values[0] = (val*) var_res;
1929 ((struct instance_array__NativeArray*)var25)->values[1] = (val*) var19;
1930 ((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
1931 CHECK_NEW_array__Array(var23);
1932 }
1933 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
1934 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var26) /* add on <var_v:AbstractCompilerVisitor>*/;
1935 if (varonce27) {
1936 var28 = varonce27;
1937 } else {
1938 var29 = "} else {";
1939 var30 = 8;
1940 var31 = string__NativeString__to_s_with_length(var29, var30);
1941 var28 = var31;
1942 varonce27 = var28;
1943 }
1944 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var28) /* add on <var_v:AbstractCompilerVisitor>*/;
1945 var32 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
1946 var33 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var32) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
1947 var_i2 = var33;
1948 if (varonce34) {
1949 var35 = varonce34;
1950 } else {
1951 var36 = " = ";
1952 var37 = 3;
1953 var38 = string__NativeString__to_s_with_length(var36, var37);
1954 var35 = var38;
1955 varonce34 = var35;
1956 }
1957 if (varonce39) {
1958 var40 = varonce39;
1959 } else {
1960 var41 = ";";
1961 var42 = 1;
1962 var43 = string__NativeString__to_s_with_length(var41, var42);
1963 var40 = var43;
1964 varonce39 = var40;
1965 }
1966 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
1967 { /* var44 = array_instance Array[Object] */
1968 var45 = 4;
1969 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
1970 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var_res;
1971 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var35;
1972 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var_i2;
1973 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var40;
1974 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
1975 CHECK_NEW_array__Array(var44);
1976 }
1977 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
1978 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var47) /* add on <var_v:AbstractCompilerVisitor>*/;
1979 if (varonce48) {
1980 var49 = varonce48;
1981 } else {
1982 var50 = "}";
1983 var51 = 1;
1984 var52 = string__NativeString__to_s_with_length(var50, var51);
1985 var49 = var52;
1986 varonce48 = var49;
1987 }
1988 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var49) /* add on <var_v:AbstractCompilerVisitor>*/;
1989 var = var_res;
1990 goto RET_LABEL;
1991 RET_LABEL:;
1992 return var;
1993 }
1994 /* method abstract_compiler#AOrExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
1995 val* VIRTUAL_abstract_compiler__AOrExpr__expr(val* self, val* p0) {
1996 val* var /* : nullable RuntimeVariable */;
1997 val* var1 /* : nullable RuntimeVariable */;
1998 var1 = abstract_compiler__AOrExpr__expr(self, p0);
1999 var = var1;
2000 RET_LABEL:;
2001 return var;
2002 }
2003 /* method abstract_compiler#AImpliesExpr#expr for (self: AImpliesExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2004 val* abstract_compiler__AImpliesExpr__expr(val* self, val* p0) {
2005 val* var /* : nullable RuntimeVariable */;
2006 val* var_v /* var v: AbstractCompilerVisitor */;
2007 val* var1 /* : nullable MType */;
2008 val* var2 /* : RuntimeVariable */;
2009 val* var_res /* var res: RuntimeVariable */;
2010 val* var3 /* : AExpr */;
2011 val* var4 /* : RuntimeVariable */;
2012 val* var_i1 /* var i1: RuntimeVariable */;
2013 static val* varonce;
2014 val* var5 /* : String */;
2015 char* var6 /* : NativeString */;
2016 long var7 /* : Int */;
2017 val* var8 /* : String */;
2018 static val* varonce9;
2019 val* var10 /* : String */;
2020 char* var11 /* : NativeString */;
2021 long var12 /* : Int */;
2022 val* var13 /* : String */;
2023 val* var14 /* : Array[Object] */;
2024 long var15 /* : Int */;
2025 val* var16 /* : NativeArray[Object] */;
2026 val* var17 /* : String */;
2027 static val* varonce18;
2028 val* var19 /* : String */;
2029 char* var20 /* : NativeString */;
2030 long var21 /* : Int */;
2031 val* var22 /* : String */;
2032 val* var23 /* : Array[Object] */;
2033 long var24 /* : Int */;
2034 val* var25 /* : NativeArray[Object] */;
2035 val* var26 /* : String */;
2036 static val* varonce27;
2037 val* var28 /* : String */;
2038 char* var29 /* : NativeString */;
2039 long var30 /* : Int */;
2040 val* var31 /* : String */;
2041 val* var32 /* : AExpr */;
2042 val* var33 /* : RuntimeVariable */;
2043 val* var_i2 /* var i2: RuntimeVariable */;
2044 static val* varonce34;
2045 val* var35 /* : String */;
2046 char* var36 /* : NativeString */;
2047 long var37 /* : Int */;
2048 val* var38 /* : String */;
2049 static val* varonce39;
2050 val* var40 /* : String */;
2051 char* var41 /* : NativeString */;
2052 long var42 /* : Int */;
2053 val* var43 /* : String */;
2054 val* var44 /* : Array[Object] */;
2055 long var45 /* : Int */;
2056 val* var46 /* : NativeArray[Object] */;
2057 val* var47 /* : String */;
2058 static val* varonce48;
2059 val* var49 /* : String */;
2060 char* var50 /* : NativeString */;
2061 long var51 /* : Int */;
2062 val* var52 /* : String */;
2063 var_v = p0;
2064 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AImpliesExpr>*/;
2065 if (var1 == NULL) {
2066 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2017);
2067 exit(1);
2068 }
2069 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var1) /* new_var on <var_v:AbstractCompilerVisitor>*/;
2070 var_res = var2;
2071 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on <self:AImpliesExpr>*/;
2072 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var3) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
2073 var_i1 = var4;
2074 if (varonce) {
2075 var5 = varonce;
2076 } else {
2077 var6 = "if (!";
2078 var7 = 5;
2079 var8 = string__NativeString__to_s_with_length(var6, var7);
2080 var5 = var8;
2081 varonce = var5;
2082 }
2083 if (varonce9) {
2084 var10 = varonce9;
2085 } else {
2086 var11 = ") {";
2087 var12 = 3;
2088 var13 = string__NativeString__to_s_with_length(var11, var12);
2089 var10 = var13;
2090 varonce9 = var10;
2091 }
2092 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
2093 { /* var14 = array_instance Array[Object] */
2094 var15 = 3;
2095 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
2096 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
2097 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_i1;
2098 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
2099 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
2100 CHECK_NEW_array__Array(var14);
2101 }
2102 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
2103 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
2104 if (varonce18) {
2105 var19 = varonce18;
2106 } else {
2107 var20 = " = 1;";
2108 var21 = 5;
2109 var22 = string__NativeString__to_s_with_length(var20, var21);
2110 var19 = var22;
2111 varonce18 = var19;
2112 }
2113 var23 = NEW_array__Array(&type_array__Arraykernel__Object);
2114 { /* var23 = array_instance Array[Object] */
2115 var24 = 2;
2116 var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
2117 ((struct instance_array__NativeArray*)var25)->values[0] = (val*) var_res;
2118 ((struct instance_array__NativeArray*)var25)->values[1] = (val*) var19;
2119 ((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
2120 CHECK_NEW_array__Array(var23);
2121 }
2122 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
2123 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var26) /* add on <var_v:AbstractCompilerVisitor>*/;
2124 if (varonce27) {
2125 var28 = varonce27;
2126 } else {
2127 var29 = "} else {";
2128 var30 = 8;
2129 var31 = string__NativeString__to_s_with_length(var29, var30);
2130 var28 = var31;
2131 varonce27 = var28;
2132 }
2133 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var28) /* add on <var_v:AbstractCompilerVisitor>*/;
2134 var32 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on <self:AImpliesExpr>*/;
2135 var33 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var32) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
2136 var_i2 = var33;
2137 if (varonce34) {
2138 var35 = varonce34;
2139 } else {
2140 var36 = " = ";
2141 var37 = 3;
2142 var38 = string__NativeString__to_s_with_length(var36, var37);
2143 var35 = var38;
2144 varonce34 = var35;
2145 }
2146 if (varonce39) {
2147 var40 = varonce39;
2148 } else {
2149 var41 = ";";
2150 var42 = 1;
2151 var43 = string__NativeString__to_s_with_length(var41, var42);
2152 var40 = var43;
2153 varonce39 = var40;
2154 }
2155 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
2156 { /* var44 = array_instance Array[Object] */
2157 var45 = 4;
2158 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
2159 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var_res;
2160 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var35;
2161 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var_i2;
2162 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var40;
2163 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
2164 CHECK_NEW_array__Array(var44);
2165 }
2166 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
2167 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var47) /* add on <var_v:AbstractCompilerVisitor>*/;
2168 if (varonce48) {
2169 var49 = varonce48;
2170 } else {
2171 var50 = "}";
2172 var51 = 1;
2173 var52 = string__NativeString__to_s_with_length(var50, var51);
2174 var49 = var52;
2175 varonce48 = var49;
2176 }
2177 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var49) /* add on <var_v:AbstractCompilerVisitor>*/;
2178 var = var_res;
2179 goto RET_LABEL;
2180 RET_LABEL:;
2181 return var;
2182 }
2183 /* method abstract_compiler#AImpliesExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2184 val* VIRTUAL_abstract_compiler__AImpliesExpr__expr(val* self, val* p0) {
2185 val* var /* : nullable RuntimeVariable */;
2186 val* var1 /* : nullable RuntimeVariable */;
2187 var1 = abstract_compiler__AImpliesExpr__expr(self, p0);
2188 var = var1;
2189 RET_LABEL:;
2190 return var;
2191 }
2192 /* method abstract_compiler#AAndExpr#expr for (self: AAndExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2193 val* abstract_compiler__AAndExpr__expr(val* self, val* p0) {
2194 val* var /* : nullable RuntimeVariable */;
2195 val* var_v /* var v: AbstractCompilerVisitor */;
2196 val* var1 /* : nullable MType */;
2197 val* var2 /* : RuntimeVariable */;
2198 val* var_res /* var res: RuntimeVariable */;
2199 val* var3 /* : AExpr */;
2200 val* var4 /* : RuntimeVariable */;
2201 val* var_i1 /* var i1: RuntimeVariable */;
2202 static val* varonce;
2203 val* var5 /* : String */;
2204 char* var6 /* : NativeString */;
2205 long var7 /* : Int */;
2206 val* var8 /* : String */;
2207 static val* varonce9;
2208 val* var10 /* : String */;
2209 char* var11 /* : NativeString */;
2210 long var12 /* : Int */;
2211 val* var13 /* : String */;
2212 val* var14 /* : Array[Object] */;
2213 long var15 /* : Int */;
2214 val* var16 /* : NativeArray[Object] */;
2215 val* var17 /* : String */;
2216 static val* varonce18;
2217 val* var19 /* : String */;
2218 char* var20 /* : NativeString */;
2219 long var21 /* : Int */;
2220 val* var22 /* : String */;
2221 val* var23 /* : Array[Object] */;
2222 long var24 /* : Int */;
2223 val* var25 /* : NativeArray[Object] */;
2224 val* var26 /* : String */;
2225 static val* varonce27;
2226 val* var28 /* : String */;
2227 char* var29 /* : NativeString */;
2228 long var30 /* : Int */;
2229 val* var31 /* : String */;
2230 val* var32 /* : AExpr */;
2231 val* var33 /* : RuntimeVariable */;
2232 val* var_i2 /* var i2: RuntimeVariable */;
2233 static val* varonce34;
2234 val* var35 /* : String */;
2235 char* var36 /* : NativeString */;
2236 long var37 /* : Int */;
2237 val* var38 /* : String */;
2238 static val* varonce39;
2239 val* var40 /* : String */;
2240 char* var41 /* : NativeString */;
2241 long var42 /* : Int */;
2242 val* var43 /* : String */;
2243 val* var44 /* : Array[Object] */;
2244 long var45 /* : Int */;
2245 val* var46 /* : NativeArray[Object] */;
2246 val* var47 /* : String */;
2247 static val* varonce48;
2248 val* var49 /* : String */;
2249 char* var50 /* : NativeString */;
2250 long var51 /* : Int */;
2251 val* var52 /* : String */;
2252 var_v = p0;
2253 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AAndExpr>*/;
2254 if (var1 == NULL) {
2255 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2032);
2256 exit(1);
2257 }
2258 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var1) /* new_var on <var_v:AbstractCompilerVisitor>*/;
2259 var_res = var2;
2260 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
2261 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var3) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
2262 var_i1 = var4;
2263 if (varonce) {
2264 var5 = varonce;
2265 } else {
2266 var6 = "if (!";
2267 var7 = 5;
2268 var8 = string__NativeString__to_s_with_length(var6, var7);
2269 var5 = var8;
2270 varonce = var5;
2271 }
2272 if (varonce9) {
2273 var10 = varonce9;
2274 } else {
2275 var11 = ") {";
2276 var12 = 3;
2277 var13 = string__NativeString__to_s_with_length(var11, var12);
2278 var10 = var13;
2279 varonce9 = var10;
2280 }
2281 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
2282 { /* var14 = array_instance Array[Object] */
2283 var15 = 3;
2284 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
2285 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
2286 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_i1;
2287 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
2288 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
2289 CHECK_NEW_array__Array(var14);
2290 }
2291 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
2292 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var17) /* add on <var_v:AbstractCompilerVisitor>*/;
2293 if (varonce18) {
2294 var19 = varonce18;
2295 } else {
2296 var20 = " = 0;";
2297 var21 = 5;
2298 var22 = string__NativeString__to_s_with_length(var20, var21);
2299 var19 = var22;
2300 varonce18 = var19;
2301 }
2302 var23 = NEW_array__Array(&type_array__Arraykernel__Object);
2303 { /* var23 = array_instance Array[Object] */
2304 var24 = 2;
2305 var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
2306 ((struct instance_array__NativeArray*)var25)->values[0] = (val*) var_res;
2307 ((struct instance_array__NativeArray*)var25)->values[1] = (val*) var19;
2308 ((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
2309 CHECK_NEW_array__Array(var23);
2310 }
2311 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
2312 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var26) /* add on <var_v:AbstractCompilerVisitor>*/;
2313 if (varonce27) {
2314 var28 = varonce27;
2315 } else {
2316 var29 = "} else {";
2317 var30 = 8;
2318 var31 = string__NativeString__to_s_with_length(var29, var30);
2319 var28 = var31;
2320 varonce27 = var28;
2321 }
2322 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var28) /* add on <var_v:AbstractCompilerVisitor>*/;
2323 var32 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
2324 var33 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var32) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
2325 var_i2 = var33;
2326 if (varonce34) {
2327 var35 = varonce34;
2328 } else {
2329 var36 = " = ";
2330 var37 = 3;
2331 var38 = string__NativeString__to_s_with_length(var36, var37);
2332 var35 = var38;
2333 varonce34 = var35;
2334 }
2335 if (varonce39) {
2336 var40 = varonce39;
2337 } else {
2338 var41 = ";";
2339 var42 = 1;
2340 var43 = string__NativeString__to_s_with_length(var41, var42);
2341 var40 = var43;
2342 varonce39 = var40;
2343 }
2344 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
2345 { /* var44 = array_instance Array[Object] */
2346 var45 = 4;
2347 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
2348 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var_res;
2349 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var35;
2350 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var_i2;
2351 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var40;
2352 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
2353 CHECK_NEW_array__Array(var44);
2354 }
2355 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
2356 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var47) /* add on <var_v:AbstractCompilerVisitor>*/;
2357 if (varonce48) {
2358 var49 = varonce48;
2359 } else {
2360 var50 = "}";
2361 var51 = 1;
2362 var52 = string__NativeString__to_s_with_length(var50, var51);
2363 var49 = var52;
2364 varonce48 = var49;
2365 }
2366 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var49) /* add on <var_v:AbstractCompilerVisitor>*/;
2367 var = var_res;
2368 goto RET_LABEL;
2369 RET_LABEL:;
2370 return var;
2371 }
2372 /* method abstract_compiler#AAndExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2373 val* VIRTUAL_abstract_compiler__AAndExpr__expr(val* self, val* p0) {
2374 val* var /* : nullable RuntimeVariable */;
2375 val* var1 /* : nullable RuntimeVariable */;
2376 var1 = abstract_compiler__AAndExpr__expr(self, p0);
2377 var = var1;
2378 RET_LABEL:;
2379 return var;
2380 }
2381 /* method abstract_compiler#ANotExpr#expr for (self: ANotExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2382 val* abstract_compiler__ANotExpr__expr(val* self, val* p0) {
2383 val* var /* : nullable RuntimeVariable */;
2384 val* var_v /* var v: AbstractCompilerVisitor */;
2385 val* var1 /* : AExpr */;
2386 val* var2 /* : RuntimeVariable */;
2387 val* var_cond /* var cond: RuntimeVariable */;
2388 static val* varonce;
2389 val* var3 /* : String */;
2390 char* var4 /* : NativeString */;
2391 long var5 /* : Int */;
2392 val* var6 /* : String */;
2393 val* var7 /* : Array[Object] */;
2394 long var8 /* : Int */;
2395 val* var9 /* : NativeArray[Object] */;
2396 val* var10 /* : String */;
2397 val* var11 /* : nullable MType */;
2398 val* var12 /* : RuntimeVariable */;
2399 var_v = p0;
2400 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on <self:ANotExpr>*/;
2401 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr_bool]))(var_v, var1) /* expr_bool on <var_v:AbstractCompilerVisitor>*/;
2402 var_cond = var2;
2403 if (varonce) {
2404 var3 = varonce;
2405 } else {
2406 var4 = "!";
2407 var5 = 1;
2408 var6 = string__NativeString__to_s_with_length(var4, var5);
2409 var3 = var6;
2410 varonce = var3;
2411 }
2412 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
2413 { /* var7 = array_instance Array[Object] */
2414 var8 = 2;
2415 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
2416 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var3;
2417 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var_cond;
2418 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
2419 CHECK_NEW_array__Array(var7);
2420 }
2421 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
2422 var11 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ANotExpr>*/;
2423 if (var11 == NULL) {
2424 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2048);
2425 exit(1);
2426 }
2427 var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var10, var11) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
2428 var = var12;
2429 goto RET_LABEL;
2430 RET_LABEL:;
2431 return var;
2432 }
2433 /* method abstract_compiler#ANotExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2434 val* VIRTUAL_abstract_compiler__ANotExpr__expr(val* self, val* p0) {
2435 val* var /* : nullable RuntimeVariable */;
2436 val* var1 /* : nullable RuntimeVariable */;
2437 var1 = abstract_compiler__ANotExpr__expr(self, p0);
2438 var = var1;
2439 RET_LABEL:;
2440 return var;
2441 }
2442 /* method abstract_compiler#AOrElseExpr#expr for (self: AOrElseExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2443 val* abstract_compiler__AOrElseExpr__expr(val* self, val* p0) {
2444 val* var /* : nullable RuntimeVariable */;
2445 val* var_v /* var v: AbstractCompilerVisitor */;
2446 val* var1 /* : nullable MType */;
2447 val* var2 /* : RuntimeVariable */;
2448 val* var_res /* var res: RuntimeVariable */;
2449 val* var3 /* : AExpr */;
2450 val* var4 /* : null */;
2451 val* var5 /* : RuntimeVariable */;
2452 val* var_i1 /* var i1: RuntimeVariable */;
2453 static val* varonce;
2454 val* var6 /* : String */;
2455 char* var7 /* : NativeString */;
2456 long var8 /* : Int */;
2457 val* var9 /* : String */;
2458 static val* varonce10;
2459 val* var11 /* : String */;
2460 char* var12 /* : NativeString */;
2461 long var13 /* : Int */;
2462 val* var14 /* : String */;
2463 val* var15 /* : Array[Object] */;
2464 long var16 /* : Int */;
2465 val* var17 /* : NativeArray[Object] */;
2466 val* var18 /* : String */;
2467 static val* varonce19;
2468 val* var20 /* : String */;
2469 char* var21 /* : NativeString */;
2470 long var22 /* : Int */;
2471 val* var23 /* : String */;
2472 val* var24 /* : AExpr */;
2473 val* var25 /* : null */;
2474 val* var26 /* : RuntimeVariable */;
2475 val* var_i2 /* var i2: RuntimeVariable */;
2476 static val* varonce27;
2477 val* var28 /* : String */;
2478 char* var29 /* : NativeString */;
2479 long var30 /* : Int */;
2480 val* var31 /* : String */;
2481 var_v = p0;
2482 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrElseExpr>*/;
2483 if (var1 == NULL) {
2484 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2055);
2485 exit(1);
2486 }
2487 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var1) /* new_var on <var_v:AbstractCompilerVisitor>*/;
2488 var_res = var2;
2489 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr]))(self) /* n_expr on <self:AOrElseExpr>*/;
2490 var4 = NULL;
2491 var5 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var3, var4) /* expr on <var_v:AbstractCompilerVisitor>*/;
2492 var_i1 = var5;
2493 if (varonce) {
2494 var6 = varonce;
2495 } else {
2496 var7 = "if (";
2497 var8 = 4;
2498 var9 = string__NativeString__to_s_with_length(var7, var8);
2499 var6 = var9;
2500 varonce = var6;
2501 }
2502 if (varonce10) {
2503 var11 = varonce10;
2504 } else {
2505 var12 = "!=NULL) {";
2506 var13 = 9;
2507 var14 = string__NativeString__to_s_with_length(var12, var13);
2508 var11 = var14;
2509 varonce10 = var11;
2510 }
2511 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
2512 { /* var15 = array_instance Array[Object] */
2513 var16 = 3;
2514 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
2515 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
2516 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_i1;
2517 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
2518 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
2519 CHECK_NEW_array__Array(var15);
2520 }
2521 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
2522 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var18) /* add on <var_v:AbstractCompilerVisitor>*/;
2523 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_res, var_i1) /* assign on <var_v:AbstractCompilerVisitor>*/;
2524 if (varonce19) {
2525 var20 = varonce19;
2526 } else {
2527 var21 = "} else {";
2528 var22 = 8;
2529 var23 = string__NativeString__to_s_with_length(var21, var22);
2530 var20 = var23;
2531 varonce19 = var20;
2532 }
2533 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var20) /* add on <var_v:AbstractCompilerVisitor>*/;
2534 var24 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr2]))(self) /* n_expr2 on <self:AOrElseExpr>*/;
2535 var25 = NULL;
2536 var26 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var24, var25) /* expr on <var_v:AbstractCompilerVisitor>*/;
2537 var_i2 = var26;
2538 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var_res, var_i2) /* assign on <var_v:AbstractCompilerVisitor>*/;
2539 if (varonce27) {
2540 var28 = varonce27;
2541 } else {
2542 var29 = "}";
2543 var30 = 1;
2544 var31 = string__NativeString__to_s_with_length(var29, var30);
2545 var28 = var31;
2546 varonce27 = var28;
2547 }
2548 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var28) /* add on <var_v:AbstractCompilerVisitor>*/;
2549 var = var_res;
2550 goto RET_LABEL;
2551 RET_LABEL:;
2552 return var;
2553 }
2554 /* method abstract_compiler#AOrElseExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2555 val* VIRTUAL_abstract_compiler__AOrElseExpr__expr(val* self, val* p0) {
2556 val* var /* : nullable RuntimeVariable */;
2557 val* var1 /* : nullable RuntimeVariable */;
2558 var1 = abstract_compiler__AOrElseExpr__expr(self, p0);
2559 var = var1;
2560 RET_LABEL:;
2561 return var;
2562 }
2563 /* method abstract_compiler#AEeExpr#expr for (self: AEeExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2564 val* abstract_compiler__AEeExpr__expr(val* self, val* p0) {
2565 val* var /* : nullable RuntimeVariable */;
2566 val* var_v /* var v: AbstractCompilerVisitor */;
2567 val* var1 /* : AExpr */;
2568 val* var2 /* : null */;
2569 val* var3 /* : RuntimeVariable */;
2570 val* var_value1 /* var value1: RuntimeVariable */;
2571 val* var4 /* : AExpr */;
2572 val* var5 /* : null */;
2573 val* var6 /* : RuntimeVariable */;
2574 val* var_value2 /* var value2: RuntimeVariable */;
2575 val* var7 /* : RuntimeVariable */;
2576 var_v = p0;
2577 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AEeExpr__n_expr]))(self) /* n_expr on <self:AEeExpr>*/;
2578 var2 = NULL;
2579 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
2580 var_value1 = var3;
2581 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AEeExpr__n_expr2]))(self) /* n_expr2 on <self:AEeExpr>*/;
2582 var5 = NULL;
2583 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var4, var5) /* expr on <var_v:AbstractCompilerVisitor>*/;
2584 var_value2 = var6;
2585 var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__equal_test]))(var_v, var_value1, var_value2) /* equal_test on <var_v:AbstractCompilerVisitor>*/;
2586 var = var7;
2587 goto RET_LABEL;
2588 RET_LABEL:;
2589 return var;
2590 }
2591 /* method abstract_compiler#AEeExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2592 val* VIRTUAL_abstract_compiler__AEeExpr__expr(val* self, val* p0) {
2593 val* var /* : nullable RuntimeVariable */;
2594 val* var1 /* : nullable RuntimeVariable */;
2595 var1 = abstract_compiler__AEeExpr__expr(self, p0);
2596 var = var1;
2597 RET_LABEL:;
2598 return var;
2599 }
2600 /* method abstract_compiler#AIntExpr#expr for (self: AIntExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2601 val* abstract_compiler__AIntExpr__expr(val* self, val* p0) {
2602 val* var /* : nullable RuntimeVariable */;
2603 val* var_v /* var v: AbstractCompilerVisitor */;
2604 val* var1 /* : nullable Int */;
2605 val* var2 /* : String */;
2606 val* var3 /* : Array[Object] */;
2607 long var4 /* : Int */;
2608 val* var5 /* : NativeArray[Object] */;
2609 val* var6 /* : String */;
2610 val* var7 /* : nullable MType */;
2611 val* var8 /* : RuntimeVariable */;
2612 var_v = p0;
2613 var1 = ((val* (*)(val*))(self->class->vft[COLOR_literal__AIntExpr__value]))(self) /* value on <self:AIntExpr>*/;
2614 if (var1 == NULL) {
2615 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 2077);
2616 exit(1);
2617 } else {
2618 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:nullable Int>*/;
2619 }
2620 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2621 { /* var3 = array_instance Array[Object] */
2622 var4 = 1;
2623 var5 = NEW_array__NativeArray(var4, &type_array__NativeArraykernel__Object);
2624 ((struct instance_array__NativeArray*)var5)->values[0] = (val*) var2;
2625 ((void (*)(val*, val*, long))(var3->class->vft[COLOR_array__Array__with_native]))(var3, var5, var4) /* with_native on <var3:Array[Object]>*/;
2626 CHECK_NEW_array__Array(var3);
2627 }
2628 var6 = ((val* (*)(val*))(var3->class->vft[COLOR_string__Object__to_s]))(var3) /* to_s on <var3:Array[Object]>*/;
2629 var7 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AIntExpr>*/;
2630 if (var7 == NULL) {
2631 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2077);
2632 exit(1);
2633 }
2634 var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var6, var7) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
2635 var = var8;
2636 goto RET_LABEL;
2637 RET_LABEL:;
2638 return var;
2639 }
2640 /* method abstract_compiler#AIntExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2641 val* VIRTUAL_abstract_compiler__AIntExpr__expr(val* self, val* p0) {
2642 val* var /* : nullable RuntimeVariable */;
2643 val* var1 /* : nullable RuntimeVariable */;
2644 var1 = abstract_compiler__AIntExpr__expr(self, p0);
2645 var = var1;
2646 RET_LABEL:;
2647 return var;
2648 }
2649 /* method abstract_compiler#AFloatExpr#expr for (self: AFloatExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2650 val* abstract_compiler__AFloatExpr__expr(val* self, val* p0) {
2651 val* var /* : nullable RuntimeVariable */;
2652 val* var_v /* var v: AbstractCompilerVisitor */;
2653 val* var1 /* : TFloat */;
2654 val* var2 /* : String */;
2655 val* var3 /* : Array[Object] */;
2656 long var4 /* : Int */;
2657 val* var5 /* : NativeArray[Object] */;
2658 val* var6 /* : String */;
2659 val* var7 /* : nullable MType */;
2660 val* var8 /* : RuntimeVariable */;
2661 var_v = p0;
2662 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AFloatExpr__n_float]))(self) /* n_float on <self:AFloatExpr>*/;
2663 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TFloat>*/;
2664 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2665 { /* var3 = array_instance Array[Object] */
2666 var4 = 1;
2667 var5 = NEW_array__NativeArray(var4, &type_array__NativeArraykernel__Object);
2668 ((struct instance_array__NativeArray*)var5)->values[0] = (val*) var2;
2669 ((void (*)(val*, val*, long))(var3->class->vft[COLOR_array__Array__with_native]))(var3, var5, var4) /* with_native on <var3:Array[Object]>*/;
2670 CHECK_NEW_array__Array(var3);
2671 }
2672 var6 = ((val* (*)(val*))(var3->class->vft[COLOR_string__Object__to_s]))(var3) /* to_s on <var3:Array[Object]>*/;
2673 var7 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AFloatExpr>*/;
2674 if (var7 == NULL) {
2675 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2081);
2676 exit(1);
2677 }
2678 var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var6, var7) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
2679 var = var8;
2680 goto RET_LABEL;
2681 RET_LABEL:;
2682 return var;
2683 }
2684 /* method abstract_compiler#AFloatExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2685 val* VIRTUAL_abstract_compiler__AFloatExpr__expr(val* self, val* p0) {
2686 val* var /* : nullable RuntimeVariable */;
2687 val* var1 /* : nullable RuntimeVariable */;
2688 var1 = abstract_compiler__AFloatExpr__expr(self, p0);
2689 var = var1;
2690 RET_LABEL:;
2691 return var;
2692 }
2693 /* method abstract_compiler#ACharExpr#expr for (self: ACharExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2694 val* abstract_compiler__ACharExpr__expr(val* self, val* p0) {
2695 val* var /* : nullable RuntimeVariable */;
2696 val* var_v /* var v: AbstractCompilerVisitor */;
2697 static val* varonce;
2698 val* var1 /* : String */;
2699 char* var2 /* : NativeString */;
2700 long var3 /* : Int */;
2701 val* var4 /* : String */;
2702 val* var5 /* : nullable Char */;
2703 val* var6 /* : String */;
2704 val* var7 /* : String */;
2705 static val* varonce8;
2706 val* var9 /* : String */;
2707 char* var10 /* : NativeString */;
2708 long var11 /* : Int */;
2709 val* var12 /* : String */;
2710 val* var13 /* : Array[Object] */;
2711 long var14 /* : Int */;
2712 val* var15 /* : NativeArray[Object] */;
2713 val* var16 /* : String */;
2714 val* var17 /* : nullable MType */;
2715 val* var18 /* : RuntimeVariable */;
2716 var_v = p0;
2717 if (varonce) {
2718 var1 = varonce;
2719 } else {
2720 var2 = "\'";
2721 var3 = 1;
2722 var4 = string__NativeString__to_s_with_length(var2, var3);
2723 var1 = var4;
2724 varonce = var1;
2725 }
2726 var5 = ((val* (*)(val*))(self->class->vft[COLOR_literal__ACharExpr__value]))(self) /* value on <self:ACharExpr>*/;
2727 if (var5 == NULL) {
2728 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 2085);
2729 exit(1);
2730 } else {
2731 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:nullable Char>*/;
2732 }
2733 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_string__AbstractString__escape_to_c]))(var6) /* escape_to_c on <var6:String>*/;
2734 if (varonce8) {
2735 var9 = varonce8;
2736 } else {
2737 var10 = "\'";
2738 var11 = 1;
2739 var12 = string__NativeString__to_s_with_length(var10, var11);
2740 var9 = var12;
2741 varonce8 = var9;
2742 }
2743 var13 = NEW_array__Array(&type_array__Arraykernel__Object);
2744 { /* var13 = array_instance Array[Object] */
2745 var14 = 3;
2746 var15 = NEW_array__NativeArray(var14, &type_array__NativeArraykernel__Object);
2747 ((struct instance_array__NativeArray*)var15)->values[0] = (val*) var1;
2748 ((struct instance_array__NativeArray*)var15)->values[1] = (val*) var7;
2749 ((struct instance_array__NativeArray*)var15)->values[2] = (val*) var9;
2750 ((void (*)(val*, val*, long))(var13->class->vft[COLOR_array__Array__with_native]))(var13, var15, var14) /* with_native on <var13:Array[Object]>*/;
2751 CHECK_NEW_array__Array(var13);
2752 }
2753 var16 = ((val* (*)(val*))(var13->class->vft[COLOR_string__Object__to_s]))(var13) /* to_s on <var13:Array[Object]>*/;
2754 var17 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ACharExpr>*/;
2755 if (var17 == NULL) {
2756 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2085);
2757 exit(1);
2758 }
2759 var18 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var16, var17) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
2760 var = var18;
2761 goto RET_LABEL;
2762 RET_LABEL:;
2763 return var;
2764 }
2765 /* method abstract_compiler#ACharExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2766 val* VIRTUAL_abstract_compiler__ACharExpr__expr(val* self, val* p0) {
2767 val* var /* : nullable RuntimeVariable */;
2768 val* var1 /* : nullable RuntimeVariable */;
2769 var1 = abstract_compiler__ACharExpr__expr(self, p0);
2770 var = var1;
2771 RET_LABEL:;
2772 return var;
2773 }
2774 /* method abstract_compiler#AArrayExpr#expr for (self: AArrayExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2775 val* abstract_compiler__AArrayExpr__expr(val* self, val* p0) {
2776 val* var /* : nullable RuntimeVariable */;
2777 val* var_v /* var v: AbstractCompilerVisitor */;
2778 val* var1 /* : nullable MType */;
2779 short int var2 /* : Bool */;
2780 int cltype;
2781 int idtype;
2782 val* var3 /* : Array[MType] */;
2783 val* var4 /* : nullable Object */;
2784 val* var_mtype /* var mtype: MType */;
2785 val* var5 /* : Array[RuntimeVariable] */;
2786 val* var_array /* var array: Array[RuntimeVariable] */;
2787 val* var6 /* : AExprs */;
2788 val* var7 /* : ANodes[AExpr] */;
2789 val* var8 /* : Iterator[nullable Object] */;
2790 short int var9 /* : Bool */;
2791 val* var10 /* : nullable Object */;
2792 val* var_nexpr /* var nexpr: AExpr */;
2793 val* var11 /* : RuntimeVariable */;
2794 val* var_i /* var i: RuntimeVariable */;
2795 val* var12 /* : RuntimeVariable */;
2796 var_v = p0;
2797 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AArrayExpr>*/;
2798 /* <var1:nullable MType> isa MClassType */
2799 cltype = type_model__MClassType.color;
2800 idtype = type_model__MClassType.id;
2801 if(var1 == NULL) {
2802 var2 = 0;
2803 } else {
2804 if(cltype >= var1->type->table_size) {
2805 var2 = 0;
2806 } else {
2807 var2 = var1->type->type_table[cltype] == idtype;
2808 }
2809 }
2810 if (!var2) {
2811 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2091);
2812 exit(1);
2813 }
2814 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassType__arguments]))(var1) /* arguments on <var1:nullable MType(MClassType)>*/;
2815 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__first]))(var3) /* first on <var3:Array[MType]>*/;
2816 var_mtype = var4;
2817 var5 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2818 ((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[RuntimeVariable]>*/;
2819 CHECK_NEW_array__Array(var5);
2820 var_array = var5;
2821 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
2822 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var6) /* n_exprs on <var6:AExprs>*/;
2823 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:ANodes[AExpr]>*/;
2824 for(;;) {
2825 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
2826 if(!var9) break;
2827 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
2828 var_nexpr = var10;
2829 var11 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var_nexpr, var_mtype) /* expr on <var_v:AbstractCompilerVisitor>*/;
2830 var_i = var11;
2831 ((void (*)(val*, val*))(var_array->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_array, var_i) /* add on <var_array:Array[RuntimeVariable]>*/;
2832 CONTINUE_label: (void)0;
2833 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
2834 }
2835 BREAK_label: (void)0;
2836 var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__array_instance]))(var_v, var_array, var_mtype) /* array_instance on <var_v:AbstractCompilerVisitor>*/;
2837 var = var12;
2838 goto RET_LABEL;
2839 RET_LABEL:;
2840 return var;
2841 }
2842 /* method abstract_compiler#AArrayExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2843 val* VIRTUAL_abstract_compiler__AArrayExpr__expr(val* self, val* p0) {
2844 val* var /* : nullable RuntimeVariable */;
2845 val* var1 /* : nullable RuntimeVariable */;
2846 var1 = abstract_compiler__AArrayExpr__expr(self, p0);
2847 var = var1;
2848 RET_LABEL:;
2849 return var;
2850 }
2851 /* method abstract_compiler#AStringFormExpr#expr for (self: AStringFormExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2852 val* abstract_compiler__AStringFormExpr__expr(val* self, val* p0) {
2853 val* var /* : nullable RuntimeVariable */;
2854 val* var_v /* var v: AbstractCompilerVisitor */;
2855 val* var1 /* : nullable String */;
2856 val* var2 /* : RuntimeVariable */;
2857 var_v = p0;
2858 var1 = ((val* (*)(val*))(self->class->vft[COLOR_literal__AStringFormExpr__value]))(self) /* value on <self:AStringFormExpr>*/;
2859 if (var1 == NULL) {
2860 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2102);
2861 exit(1);
2862 }
2863 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__string_instance]))(var_v, var1) /* string_instance on <var_v:AbstractCompilerVisitor>*/;
2864 var = var2;
2865 goto RET_LABEL;
2866 RET_LABEL:;
2867 return var;
2868 }
2869 /* method abstract_compiler#AStringFormExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
2870 val* VIRTUAL_abstract_compiler__AStringFormExpr__expr(val* self, val* p0) {
2871 val* var /* : nullable RuntimeVariable */;
2872 val* var1 /* : nullable RuntimeVariable */;
2873 var1 = abstract_compiler__AStringFormExpr__expr(self, p0);
2874 var = var1;
2875 RET_LABEL:;
2876 return var;
2877 }
2878 /* method abstract_compiler#ASuperstringExpr#expr for (self: ASuperstringExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
2879 val* abstract_compiler__ASuperstringExpr__expr(val* self, val* p0) {
2880 val* var /* : nullable RuntimeVariable */;
2881 val* var_v /* var v: AbstractCompilerVisitor */;
2882 val* var1 /* : Array[RuntimeVariable] */;
2883 val* var_array /* var array: Array[RuntimeVariable] */;
2884 val* var2 /* : ANodes[AExpr] */;
2885 val* var3 /* : Iterator[nullable Object] */;
2886 short int var4 /* : Bool */;
2887 val* var5 /* : nullable Object */;
2888 val* var_ne /* var ne: AExpr */;
2889 short int var6 /* : Bool */;
2890 short int var7 /* : Bool */;
2891 int cltype;
2892 int idtype;
2893 short int var_ /* var : Bool */;
2894 val* var8 /* : nullable String */;
2895 static val* varonce;
2896 val* var9 /* : String */;
2897 char* var10 /* : NativeString */;
2898 long var11 /* : Int */;
2899 val* var12 /* : String */;
2900 short int var13 /* : Bool */;
2901 val* var14 /* : null */;
2902 val* var15 /* : RuntimeVariable */;
2903 val* var_i /* var i: RuntimeVariable */;
2904 val* var16 /* : MClassType */;
2905 val* var17 /* : RuntimeVariable */;
2906 val* var_a /* var a: RuntimeVariable */;
2907 static val* varonce18;
2908 val* var19 /* : String */;
2909 char* var20 /* : NativeString */;
2910 long var21 /* : Int */;
2911 val* var22 /* : String */;
2912 val* var23 /* : MType */;
2913 val* var24 /* : MMethod */;
2914 val* var25 /* : Array[RuntimeVariable] */;
2915 long var26 /* : Int */;
2916 val* var27 /* : NativeArray[RuntimeVariable] */;
2917 val* var28 /* : nullable RuntimeVariable */;
2918 val* var_res /* var res: nullable RuntimeVariable */;
2919 var_v = p0;
2920 var1 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2921 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[RuntimeVariable]>*/;
2922 CHECK_NEW_array__Array(var1);
2923 var_array = var1;
2924 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
2925 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:ANodes[AExpr]>*/;
2926 for(;;) {
2927 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
2928 if(!var4) break;
2929 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
2930 var_ne = var5;
2931 /* <var_ne:AExpr> isa AStringFormExpr */
2932 cltype = type_parser_nodes__AStringFormExpr.color;
2933 idtype = type_parser_nodes__AStringFormExpr.id;
2934 if(cltype >= var_ne->type->table_size) {
2935 var7 = 0;
2936 } else {
2937 var7 = var_ne->type->type_table[cltype] == idtype;
2938 }
2939 var_ = var7;
2940 if (var7){
2941 var8 = ((val* (*)(val*))(var_ne->class->vft[COLOR_literal__AStringFormExpr__value]))(var_ne) /* value on <var_ne:AExpr(AStringFormExpr)>*/;
2942 if (varonce) {
2943 var9 = varonce;
2944 } else {
2945 var10 = "";
2946 var11 = 0;
2947 var12 = string__NativeString__to_s_with_length(var10, var11);
2948 var9 = var12;
2949 varonce = var9;
2950 }
2951 if (var8 == NULL) {
2952 var13 = 0; /* <var9:String> cannot be null */
2953 } else {
2954 var13 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___61d_61d]))(var8, var9) /* == on <var8:nullable String>*/;
2955 }
2956 var6 = var13;
2957 } else {
2958 var6 = var_;
2959 }
2960 if (var6){
2961 goto CONTINUE_label;
2962 } else {
2963 }
2964 var14 = NULL;
2965 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var_ne, var14) /* expr on <var_v:AbstractCompilerVisitor>*/;
2966 var_i = var15;
2967 ((void (*)(val*, val*))(var_array->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_array, var_i) /* add on <var_array:Array[RuntimeVariable]>*/;
2968 CONTINUE_label: (void)0;
2969 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
2970 }
2971 BREAK_label: (void)0;
2972 var16 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(var_v) /* object_type on <var_v:AbstractCompilerVisitor>*/;
2973 var17 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__array_instance]))(var_v, var_array, var16) /* array_instance on <var_v:AbstractCompilerVisitor>*/;
2974 var_a = var17;
2975 if (varonce18) {
2976 var19 = varonce18;
2977 } else {
2978 var20 = "to_s";
2979 var21 = 4;
2980 var22 = string__NativeString__to_s_with_length(var20, var21);
2981 var19 = var22;
2982 varonce18 = var19;
2983 }
2984 var23 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_a) /* mtype on <var_a:RuntimeVariable>*/;
2985 var24 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(var_v, var19, var23) /* get_property on <var_v:AbstractCompilerVisitor>*/;
2986 var25 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2987 { /* var25 = array_instance Array[RuntimeVariable] */
2988 var26 = 1;
2989 var27 = NEW_array__NativeArray(var26, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
2990 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var_a;
2991 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[RuntimeVariable]>*/;
2992 CHECK_NEW_array__Array(var25);
2993 }
2994 var28 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var24, var25) /* send on <var_v:AbstractCompilerVisitor>*/;
2995 var_res = var28;
2996 var = var_res;
2997 goto RET_LABEL;
2998 RET_LABEL:;
2999 return var;
3000 }
3001 /* method abstract_compiler#ASuperstringExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3002 val* VIRTUAL_abstract_compiler__ASuperstringExpr__expr(val* self, val* p0) {
3003 val* var /* : nullable RuntimeVariable */;
3004 val* var1 /* : nullable RuntimeVariable */;
3005 var1 = abstract_compiler__ASuperstringExpr__expr(self, p0);
3006 var = var1;
3007 RET_LABEL:;
3008 return var;
3009 }
3010 /* method abstract_compiler#ACrangeExpr#expr for (self: ACrangeExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3011 val* abstract_compiler__ACrangeExpr__expr(val* self, val* p0) {
3012 val* var /* : nullable RuntimeVariable */;
3013 val* var_v /* var v: AbstractCompilerVisitor */;
3014 val* var1 /* : AExpr */;
3015 val* var2 /* : null */;
3016 val* var3 /* : RuntimeVariable */;
3017 val* var_i1 /* var i1: RuntimeVariable */;
3018 val* var4 /* : AExpr */;
3019 val* var5 /* : null */;
3020 val* var6 /* : RuntimeVariable */;
3021 val* var_i2 /* var i2: RuntimeVariable */;
3022 val* var7 /* : nullable MType */;
3023 short int var8 /* : Bool */;
3024 int cltype;
3025 int idtype;
3026 val* var_mtype /* var mtype: MClassType */;
3027 val* var9 /* : RuntimeVariable */;
3028 val* var_res /* var res: RuntimeVariable */;
3029 static val* varonce;
3030 val* var10 /* : String */;
3031 char* var11 /* : NativeString */;
3032 long var12 /* : Int */;
3033 val* var13 /* : String */;
3034 val* var14 /* : MType */;
3035 val* var15 /* : MMethod */;
3036 val* var16 /* : Array[RuntimeVariable] */;
3037 long var17 /* : Int */;
3038 val* var18 /* : NativeArray[RuntimeVariable] */;
3039 val* var19 /* : nullable RuntimeVariable */;
3040 val* var_it /* var it: nullable RuntimeVariable */;
3041 var_v = p0;
3042 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ACrangeExpr>*/;
3043 var2 = NULL;
3044 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
3045 var_i1 = var3;
3046 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ACrangeExpr>*/;
3047 var5 = NULL;
3048 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var4, var5) /* expr on <var_v:AbstractCompilerVisitor>*/;
3049 var_i2 = var6;
3050 var7 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ACrangeExpr>*/;
3051 /* <var7:nullable MType> isa MClassType */
3052 cltype = type_model__MClassType.color;
3053 idtype = type_model__MClassType.id;
3054 if(var7 == NULL) {
3055 var8 = 0;
3056 } else {
3057 if(cltype >= var7->type->table_size) {
3058 var8 = 0;
3059 } else {
3060 var8 = var7->type->type_table[cltype] == idtype;
3061 }
3062 }
3063 if (!var8) {
3064 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2125);
3065 exit(1);
3066 }
3067 var_mtype = var7;
3068 var9 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_mtype) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
3069 var_res = var9;
3070 if (varonce) {
3071 var10 = varonce;
3072 } else {
3073 var11 = "init";
3074 var12 = 4;
3075 var13 = string__NativeString__to_s_with_length(var11, var12);
3076 var10 = var13;
3077 varonce = var10;
3078 }
3079 var14 = ((val* (*)(val*))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_res) /* mtype on <var_res:RuntimeVariable>*/;
3080 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(var_v, var10, var14) /* get_property on <var_v:AbstractCompilerVisitor>*/;
3081 var16 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3082 { /* var16 = array_instance Array[RuntimeVariable] */
3083 var17 = 3;
3084 var18 = NEW_array__NativeArray(var17, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
3085 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var_res;
3086 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_i1;
3087 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var_i2;
3088 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[RuntimeVariable]>*/;
3089 CHECK_NEW_array__Array(var16);
3090 }
3091 var19 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var15, var16) /* send on <var_v:AbstractCompilerVisitor>*/;
3092 var_it = var19;
3093 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_init_instance]))(var_v, var_res, var_mtype) /* check_init_instance on <var_v:AbstractCompilerVisitor>*/;
3094 var = var_res;
3095 goto RET_LABEL;
3096 RET_LABEL:;
3097 return var;
3098 }
3099 /* method abstract_compiler#ACrangeExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3100 val* VIRTUAL_abstract_compiler__ACrangeExpr__expr(val* self, val* p0) {
3101 val* var /* : nullable RuntimeVariable */;
3102 val* var1 /* : nullable RuntimeVariable */;
3103 var1 = abstract_compiler__ACrangeExpr__expr(self, p0);
3104 var = var1;
3105 RET_LABEL:;
3106 return var;
3107 }
3108 /* method abstract_compiler#AOrangeExpr#expr for (self: AOrangeExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3109 val* abstract_compiler__AOrangeExpr__expr(val* self, val* p0) {
3110 val* var /* : nullable RuntimeVariable */;
3111 val* var_v /* var v: AbstractCompilerVisitor */;
3112 val* var1 /* : AExpr */;
3113 val* var2 /* : null */;
3114 val* var3 /* : RuntimeVariable */;
3115 val* var_i1 /* var i1: RuntimeVariable */;
3116 val* var4 /* : AExpr */;
3117 val* var5 /* : null */;
3118 val* var6 /* : RuntimeVariable */;
3119 val* var_i2 /* var i2: RuntimeVariable */;
3120 val* var7 /* : nullable MType */;
3121 short int var8 /* : Bool */;
3122 int cltype;
3123 int idtype;
3124 val* var_mtype /* var mtype: MClassType */;
3125 val* var9 /* : RuntimeVariable */;
3126 val* var_res /* var res: RuntimeVariable */;
3127 static val* varonce;
3128 val* var10 /* : String */;
3129 char* var11 /* : NativeString */;
3130 long var12 /* : Int */;
3131 val* var13 /* : String */;
3132 val* var14 /* : MType */;
3133 val* var15 /* : MMethod */;
3134 val* var16 /* : Array[RuntimeVariable] */;
3135 long var17 /* : Int */;
3136 val* var18 /* : NativeArray[RuntimeVariable] */;
3137 val* var19 /* : nullable RuntimeVariable */;
3138 val* var_it /* var it: nullable RuntimeVariable */;
3139 var_v = p0;
3140 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:AOrangeExpr>*/;
3141 var2 = NULL;
3142 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
3143 var_i1 = var3;
3144 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:AOrangeExpr>*/;
3145 var5 = NULL;
3146 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var4, var5) /* expr on <var_v:AbstractCompilerVisitor>*/;
3147 var_i2 = var6;
3148 var7 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrangeExpr>*/;
3149 /* <var7:nullable MType> isa MClassType */
3150 cltype = type_model__MClassType.color;
3151 idtype = type_model__MClassType.id;
3152 if(var7 == NULL) {
3153 var8 = 0;
3154 } else {
3155 if(cltype >= var7->type->table_size) {
3156 var8 = 0;
3157 } else {
3158 var8 = var7->type->type_table[cltype] == idtype;
3159 }
3160 }
3161 if (!var8) {
3162 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2138);
3163 exit(1);
3164 }
3165 var_mtype = var7;
3166 var9 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_mtype) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
3167 var_res = var9;
3168 if (varonce) {
3169 var10 = varonce;
3170 } else {
3171 var11 = "without_last";
3172 var12 = 12;
3173 var13 = string__NativeString__to_s_with_length(var11, var12);
3174 var10 = var13;
3175 varonce = var10;
3176 }
3177 var14 = ((val* (*)(val*))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_res) /* mtype on <var_res:RuntimeVariable>*/;
3178 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(var_v, var10, var14) /* get_property on <var_v:AbstractCompilerVisitor>*/;
3179 var16 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
3180 { /* var16 = array_instance Array[RuntimeVariable] */
3181 var17 = 3;
3182 var18 = NEW_array__NativeArray(var17, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
3183 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var_res;
3184 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_i1;
3185 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var_i2;
3186 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[RuntimeVariable]>*/;
3187 CHECK_NEW_array__Array(var16);
3188 }
3189 var19 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var15, var16) /* send on <var_v:AbstractCompilerVisitor>*/;
3190 var_it = var19;
3191 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_init_instance]))(var_v, var_res, var_mtype) /* check_init_instance on <var_v:AbstractCompilerVisitor>*/;
3192 var = var_res;
3193 goto RET_LABEL;
3194 RET_LABEL:;
3195 return var;
3196 }
3197 /* method abstract_compiler#AOrangeExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3198 val* VIRTUAL_abstract_compiler__AOrangeExpr__expr(val* self, val* p0) {
3199 val* var /* : nullable RuntimeVariable */;
3200 val* var1 /* : nullable RuntimeVariable */;
3201 var1 = abstract_compiler__AOrangeExpr__expr(self, p0);
3202 var = var1;
3203 RET_LABEL:;
3204 return var;
3205 }
3206 /* method abstract_compiler#ATrueExpr#expr for (self: ATrueExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3207 val* abstract_compiler__ATrueExpr__expr(val* self, val* p0) {
3208 val* var /* : nullable RuntimeVariable */;
3209 val* var_v /* var v: AbstractCompilerVisitor */;
3210 static val* varonce;
3211 val* var1 /* : String */;
3212 char* var2 /* : NativeString */;
3213 long var3 /* : Int */;
3214 val* var4 /* : String */;
3215 val* var5 /* : nullable MType */;
3216 val* var6 /* : RuntimeVariable */;
3217 var_v = p0;
3218 if (varonce) {
3219 var1 = varonce;
3220 } else {
3221 var2 = "1";
3222 var3 = 1;
3223 var4 = string__NativeString__to_s_with_length(var2, var3);
3224 var1 = var4;
3225 varonce = var1;
3226 }
3227 var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ATrueExpr>*/;
3228 if (var5 == NULL) {
3229 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2147);
3230 exit(1);
3231 }
3232 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var1, var5) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
3233 var = var6;
3234 goto RET_LABEL;
3235 RET_LABEL:;
3236 return var;
3237 }
3238 /* method abstract_compiler#ATrueExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3239 val* VIRTUAL_abstract_compiler__ATrueExpr__expr(val* self, val* p0) {
3240 val* var /* : nullable RuntimeVariable */;
3241 val* var1 /* : nullable RuntimeVariable */;
3242 var1 = abstract_compiler__ATrueExpr__expr(self, p0);
3243 var = var1;
3244 RET_LABEL:;
3245 return var;
3246 }
3247 /* method abstract_compiler#AFalseExpr#expr for (self: AFalseExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3248 val* abstract_compiler__AFalseExpr__expr(val* self, val* p0) {
3249 val* var /* : nullable RuntimeVariable */;
3250 val* var_v /* var v: AbstractCompilerVisitor */;
3251 static val* varonce;
3252 val* var1 /* : String */;
3253 char* var2 /* : NativeString */;
3254 long var3 /* : Int */;
3255 val* var4 /* : String */;
3256 val* var5 /* : nullable MType */;
3257 val* var6 /* : RuntimeVariable */;
3258 var_v = p0;
3259 if (varonce) {
3260 var1 = varonce;
3261 } else {
3262 var2 = "0";
3263 var3 = 1;
3264 var4 = string__NativeString__to_s_with_length(var2, var3);
3265 var1 = var4;
3266 varonce = var1;
3267 }
3268 var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AFalseExpr>*/;
3269 if (var5 == NULL) {
3270 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2151);
3271 exit(1);
3272 }
3273 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var1, var5) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
3274 var = var6;
3275 goto RET_LABEL;
3276 RET_LABEL:;
3277 return var;
3278 }
3279 /* method abstract_compiler#AFalseExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3280 val* VIRTUAL_abstract_compiler__AFalseExpr__expr(val* self, val* p0) {
3281 val* var /* : nullable RuntimeVariable */;
3282 val* var1 /* : nullable RuntimeVariable */;
3283 var1 = abstract_compiler__AFalseExpr__expr(self, p0);
3284 var = var1;
3285 RET_LABEL:;
3286 return var;
3287 }
3288 /* method abstract_compiler#ANullExpr#expr for (self: ANullExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3289 val* abstract_compiler__ANullExpr__expr(val* self, val* p0) {
3290 val* var /* : nullable RuntimeVariable */;
3291 val* var_v /* var v: AbstractCompilerVisitor */;
3292 static val* varonce;
3293 val* var1 /* : String */;
3294 char* var2 /* : NativeString */;
3295 long var3 /* : Int */;
3296 val* var4 /* : String */;
3297 val* var5 /* : nullable MType */;
3298 val* var6 /* : RuntimeVariable */;
3299 var_v = p0;
3300 if (varonce) {
3301 var1 = varonce;
3302 } else {
3303 var2 = "NULL";
3304 var3 = 4;
3305 var4 = string__NativeString__to_s_with_length(var2, var3);
3306 var1 = var4;
3307 varonce = var1;
3308 }
3309 var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ANullExpr>*/;
3310 if (var5 == NULL) {
3311 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2155);
3312 exit(1);
3313 }
3314 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var1, var5) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
3315 var = var6;
3316 goto RET_LABEL;
3317 RET_LABEL:;
3318 return var;
3319 }
3320 /* method abstract_compiler#ANullExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3321 val* VIRTUAL_abstract_compiler__ANullExpr__expr(val* self, val* p0) {
3322 val* var /* : nullable RuntimeVariable */;
3323 val* var1 /* : nullable RuntimeVariable */;
3324 var1 = abstract_compiler__ANullExpr__expr(self, p0);
3325 var = var1;
3326 RET_LABEL:;
3327 return var;
3328 }
3329 /* method abstract_compiler#AIsaExpr#expr for (self: AIsaExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3330 val* abstract_compiler__AIsaExpr__expr(val* self, val* p0) {
3331 val* var /* : nullable RuntimeVariable */;
3332 val* var_v /* var v: AbstractCompilerVisitor */;
3333 val* var1 /* : AExpr */;
3334 val* var2 /* : null */;
3335 val* var3 /* : RuntimeVariable */;
3336 val* var_i /* var i: RuntimeVariable */;
3337 val* var4 /* : nullable MType */;
3338 static val* varonce;
3339 val* var5 /* : String */;
3340 char* var6 /* : NativeString */;
3341 long var7 /* : Int */;
3342 val* var8 /* : String */;
3343 val* var9 /* : RuntimeVariable */;
3344 var_v = p0;
3345 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
3346 var2 = NULL;
3347 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
3348 var_i = var3;
3349 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AIsaExpr__cast_type]))(self) /* cast_type on <self:AIsaExpr>*/;
3350 if (var4 == NULL) {
3351 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2162);
3352 exit(1);
3353 }
3354 if (varonce) {
3355 var5 = varonce;
3356 } else {
3357 var6 = "isa";
3358 var7 = 3;
3359 var8 = string__NativeString__to_s_with_length(var6, var7);
3360 var5 = var8;
3361 varonce = var5;
3362 }
3363 var9 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test]))(var_v, var_i, var4, var5) /* type_test on <var_v:AbstractCompilerVisitor>*/;
3364 var = var9;
3365 goto RET_LABEL;
3366 RET_LABEL:;
3367 return var;
3368 }
3369 /* method abstract_compiler#AIsaExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3370 val* VIRTUAL_abstract_compiler__AIsaExpr__expr(val* self, val* p0) {
3371 val* var /* : nullable RuntimeVariable */;
3372 val* var1 /* : nullable RuntimeVariable */;
3373 var1 = abstract_compiler__AIsaExpr__expr(self, p0);
3374 var = var1;
3375 RET_LABEL:;
3376 return var;
3377 }
3378 /* method abstract_compiler#AAsCastExpr#expr for (self: AAsCastExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3379 val* abstract_compiler__AAsCastExpr__expr(val* self, val* p0) {
3380 val* var /* : nullable RuntimeVariable */;
3381 val* var_v /* var v: AbstractCompilerVisitor */;
3382 val* var1 /* : AExpr */;
3383 val* var2 /* : null */;
3384 val* var3 /* : RuntimeVariable */;
3385 val* var_i /* var i: RuntimeVariable */;
3386 val* var4 /* : AbstractCompiler */;
3387 val* var5 /* : ModelBuilder */;
3388 val* var6 /* : ToolContext */;
3389 val* var7 /* : OptionBool */;
3390 val* var8 /* : nullable Object */;
3391 short int var9 /* : Bool */;
3392 val* var10 /* : nullable MType */;
3393 static val* varonce;
3394 val* var11 /* : String */;
3395 char* var12 /* : NativeString */;
3396 long var13 /* : Int */;
3397 val* var14 /* : String */;
3398 val* var15 /* : RuntimeVariable */;
3399 val* var_cond /* var cond: RuntimeVariable */;
3400 static val* varonce16;
3401 val* var17 /* : String */;
3402 char* var18 /* : NativeString */;
3403 long var19 /* : Int */;
3404 val* var20 /* : String */;
3405 static val* varonce21;
3406 val* var22 /* : String */;
3407 char* var23 /* : NativeString */;
3408 long var24 /* : Int */;
3409 val* var25 /* : String */;
3410 val* var26 /* : Array[Object] */;
3411 long var27 /* : Int */;
3412 val* var28 /* : NativeArray[Object] */;
3413 val* var29 /* : String */;
3414 static val* varonce30;
3415 val* var31 /* : String */;
3416 char* var32 /* : NativeString */;
3417 long var33 /* : Int */;
3418 val* var34 /* : String */;
3419 static val* varonce35;
3420 val* var36 /* : String */;
3421 char* var37 /* : NativeString */;
3422 long var38 /* : Int */;
3423 val* var39 /* : String */;
3424 var_v = p0;
3425 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_expr]))(self) /* n_expr on <self:AAsCastExpr>*/;
3426 var2 = NULL;
3427 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
3428 var_i = var3;
3429 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
3430 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var4) /* modelbuilder on <var4:AbstractCompiler>*/;
3431 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var5) /* toolcontext on <var5:ModelBuilder>*/;
3432 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_assert]))(var6) /* opt_no_check_assert on <var6:ToolContext>*/;
3433 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_opts__Option__value]))(var7) /* value on <var7:OptionBool>*/;
3434 var9 = ((struct instance_kernel__Bool*)var8)->value; /* autounbox from nullable Object to Bool */;
3435 if (var9){
3436 var = var_i;
3437 goto RET_LABEL;
3438 } else {
3439 }
3440 var10 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AAsCastExpr>*/;
3441 if (var10 == NULL) {
3442 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2172);
3443 exit(1);
3444 }
3445 if (varonce) {
3446 var11 = varonce;
3447 } else {
3448 var12 = "as";
3449 var13 = 2;
3450 var14 = string__NativeString__to_s_with_length(var12, var13);
3451 var11 = var14;
3452 varonce = var11;
3453 }
3454 var15 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test]))(var_v, var_i, var10, var11) /* type_test on <var_v:AbstractCompilerVisitor>*/;
3455 var_cond = var15;
3456 if (varonce16) {
3457 var17 = varonce16;
3458 } else {
3459 var18 = "if (!";
3460 var19 = 5;
3461 var20 = string__NativeString__to_s_with_length(var18, var19);
3462 var17 = var20;
3463 varonce16 = var17;
3464 }
3465 if (varonce21) {
3466 var22 = varonce21;
3467 } else {
3468 var23 = ") {";
3469 var24 = 3;
3470 var25 = string__NativeString__to_s_with_length(var23, var24);
3471 var22 = var25;
3472 varonce21 = var22;
3473 }
3474 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
3475 { /* var26 = array_instance Array[Object] */
3476 var27 = 3;
3477 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
3478 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
3479 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_cond;
3480 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
3481 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
3482 CHECK_NEW_array__Array(var26);
3483 }
3484 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
3485 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var29) /* add on <var_v:AbstractCompilerVisitor>*/;
3486 if (varonce30) {
3487 var31 = varonce30;
3488 } else {
3489 var32 = "Cast failed";
3490 var33 = 11;
3491 var34 = string__NativeString__to_s_with_length(var32, var33);
3492 var31 = var34;
3493 varonce30 = var31;
3494 }
3495 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var31) /* add_abort on <var_v:AbstractCompilerVisitor>*/;
3496 if (varonce35) {
3497 var36 = varonce35;
3498 } else {
3499 var37 = "}";
3500 var38 = 1;
3501 var39 = string__NativeString__to_s_with_length(var37, var38);
3502 var36 = var39;
3503 varonce35 = var36;
3504 }
3505 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var36) /* add on <var_v:AbstractCompilerVisitor>*/;
3506 var = var_i;
3507 goto RET_LABEL;
3508 RET_LABEL:;
3509 return var;
3510 }
3511 /* method abstract_compiler#AAsCastExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3512 val* VIRTUAL_abstract_compiler__AAsCastExpr__expr(val* self, val* p0) {
3513 val* var /* : nullable RuntimeVariable */;
3514 val* var1 /* : nullable RuntimeVariable */;
3515 var1 = abstract_compiler__AAsCastExpr__expr(self, p0);
3516 var = var1;
3517 RET_LABEL:;
3518 return var;
3519 }
3520 /* method abstract_compiler#AAsNotnullExpr#expr for (self: AAsNotnullExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3521 val* abstract_compiler__AAsNotnullExpr__expr(val* self, val* p0) {
3522 val* var /* : nullable RuntimeVariable */;
3523 val* var_v /* var v: AbstractCompilerVisitor */;
3524 val* var1 /* : AExpr */;
3525 val* var2 /* : null */;
3526 val* var3 /* : RuntimeVariable */;
3527 val* var_i /* var i: RuntimeVariable */;
3528 val* var4 /* : AbstractCompiler */;
3529 val* var5 /* : ModelBuilder */;
3530 val* var6 /* : ToolContext */;
3531 val* var7 /* : OptionBool */;
3532 val* var8 /* : nullable Object */;
3533 short int var9 /* : Bool */;
3534 static val* varonce;
3535 val* var10 /* : String */;
3536 char* var11 /* : NativeString */;
3537 long var12 /* : Int */;
3538 val* var13 /* : String */;
3539 static val* varonce14;
3540 val* var15 /* : String */;
3541 char* var16 /* : NativeString */;
3542 long var17 /* : Int */;
3543 val* var18 /* : String */;
3544 val* var19 /* : Array[Object] */;
3545 long var20 /* : Int */;
3546 val* var21 /* : NativeArray[Object] */;
3547 val* var22 /* : String */;
3548 static val* varonce23;
3549 val* var24 /* : String */;
3550 char* var25 /* : NativeString */;
3551 long var26 /* : Int */;
3552 val* var27 /* : String */;
3553 static val* varonce28;
3554 val* var29 /* : String */;
3555 char* var30 /* : NativeString */;
3556 long var31 /* : Int */;
3557 val* var32 /* : String */;
3558 var_v = p0;
3559 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsNotnullExpr__n_expr]))(self) /* n_expr on <self:AAsNotnullExpr>*/;
3560 var2 = NULL;
3561 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
3562 var_i = var3;
3563 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
3564 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var4) /* modelbuilder on <var4:AbstractCompiler>*/;
3565 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var5) /* toolcontext on <var5:ModelBuilder>*/;
3566 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_assert]))(var6) /* opt_no_check_assert on <var6:ToolContext>*/;
3567 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_opts__Option__value]))(var7) /* value on <var7:OptionBool>*/;
3568 var9 = ((struct instance_kernel__Bool*)var8)->value; /* autounbox from nullable Object to Bool */;
3569 if (var9){
3570 var = var_i;
3571 goto RET_LABEL;
3572 } else {
3573 }
3574 if (varonce) {
3575 var10 = varonce;
3576 } else {
3577 var11 = "if (";
3578 var12 = 4;
3579 var13 = string__NativeString__to_s_with_length(var11, var12);
3580 var10 = var13;
3581 varonce = var10;
3582 }
3583 if (varonce14) {
3584 var15 = varonce14;
3585 } else {
3586 var16 = " == NULL) {";
3587 var17 = 11;
3588 var18 = string__NativeString__to_s_with_length(var16, var17);
3589 var15 = var18;
3590 varonce14 = var15;
3591 }
3592 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
3593 { /* var19 = array_instance Array[Object] */
3594 var20 = 3;
3595 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
3596 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var10;
3597 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_i;
3598 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
3599 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
3600 CHECK_NEW_array__Array(var19);
3601 }
3602 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
3603 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var22) /* add on <var_v:AbstractCompilerVisitor>*/;
3604 if (varonce23) {
3605 var24 = varonce23;
3606 } else {
3607 var25 = "Cast failed";
3608 var26 = 11;
3609 var27 = string__NativeString__to_s_with_length(var25, var26);
3610 var24 = var27;
3611 varonce23 = var24;
3612 }
3613 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var24) /* add_abort on <var_v:AbstractCompilerVisitor>*/;
3614 if (varonce28) {
3615 var29 = varonce28;
3616 } else {
3617 var30 = "}";
3618 var31 = 1;
3619 var32 = string__NativeString__to_s_with_length(var30, var31);
3620 var29 = var32;
3621 varonce28 = var29;
3622 }
3623 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var29) /* add on <var_v:AbstractCompilerVisitor>*/;
3624 var = var_i;
3625 goto RET_LABEL;
3626 RET_LABEL:;
3627 return var;
3628 }
3629 /* method abstract_compiler#AAsNotnullExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3630 val* VIRTUAL_abstract_compiler__AAsNotnullExpr__expr(val* self, val* p0) {
3631 val* var /* : nullable RuntimeVariable */;
3632 val* var1 /* : nullable RuntimeVariable */;
3633 var1 = abstract_compiler__AAsNotnullExpr__expr(self, p0);
3634 var = var1;
3635 RET_LABEL:;
3636 return var;
3637 }
3638 /* method abstract_compiler#AParExpr#expr for (self: AParExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3639 val* abstract_compiler__AParExpr__expr(val* self, val* p0) {
3640 val* var /* : nullable RuntimeVariable */;
3641 val* var_v /* var v: AbstractCompilerVisitor */;
3642 val* var1 /* : AExpr */;
3643 val* var2 /* : null */;
3644 val* var3 /* : RuntimeVariable */;
3645 var_v = p0;
3646 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AParExpr>*/;
3647 var2 = NULL;
3648 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
3649 var = var3;
3650 goto RET_LABEL;
3651 RET_LABEL:;
3652 return var;
3653 }
3654 /* method abstract_compiler#AParExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
3655 val* VIRTUAL_abstract_compiler__AParExpr__expr(val* self, val* p0) {
3656 val* var /* : nullable RuntimeVariable */;
3657 val* var1 /* : nullable RuntimeVariable */;
3658 var1 = abstract_compiler__AParExpr__expr(self, p0);
3659 var = var1;
3660 RET_LABEL:;
3661 return var;
3662 }
3663 /* method abstract_compiler#AOnceExpr#expr for (self: AOnceExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
3664 val* abstract_compiler__AOnceExpr__expr(val* self, val* p0) {
3665 val* var /* : nullable RuntimeVariable */;
3666 val* var_v /* var v: AbstractCompilerVisitor */;
3667 val* var1 /* : nullable MType */;
3668 val* var_mtype /* var mtype: MType */;
3669 static val* varonce;
3670 val* var2 /* : String */;
3671 char* var3 /* : NativeString */;
3672 long var4 /* : Int */;
3673 val* var5 /* : String */;
3674 val* var6 /* : String */;
3675 val* var_name /* var name: String */;
3676 static val* varonce7;
3677 val* var8 /* : String */;
3678 char* var9 /* : NativeString */;
3679 long var10 /* : Int */;
3680 val* var11 /* : String */;
3681 val* var12 /* : String */;
3682 val* var13 /* : String */;
3683 val* var_guard /* var guard: String */;
3684 static val* varonce14;
3685 val* var15 /* : String */;
3686 char* var16 /* : NativeString */;
3687 long var17 /* : Int */;
3688 val* var18 /* : String */;
3689 val* var19 /* : String */;
3690 static val* varonce20;
3691 val* var21 /* : String */;
3692 char* var22 /* : NativeString */;
3693 long var23 /* : Int */;
3694 val* var24 /* : String */;
3695 static val* varonce25;
3696 val* var26 /* : String */;
3697 char* var27 /* : NativeString */;
3698 long var28 /* : Int */;
3699 val* var29 /* : String */;
3700 val* var30 /* : Array[Object] */;
3701 long var31 /* : Int */;
3702 val* var32 /* : NativeArray[Object] */;
3703 val* var33 /* : String */;
3704 static val* varonce34;
3705 val* var35 /* : String */;
3706 char* var36 /* : NativeString */;
3707 long var37 /* : Int */;
3708 val* var38 /* : String */;
3709 static val* varonce39;
3710 val* var40 /* : String */;
3711 char* var41 /* : NativeString */;
3712 long var42 /* : Int */;
3713 val* var43 /* : String */;
3714 val* var44 /* : Array[Object] */;
3715 long var45 /* : Int */;
3716 val* var46 /* : NativeArray[Object] */;
3717 val* var47 /* : String */;
3718 val* var48 /* : RuntimeVariable */;
3719 val* var_res /* var res: RuntimeVariable */;
3720 static val* varonce49;
3721 val* var50 /* : String */;
3722 char* var51 /* : NativeString */;
3723 long var52 /* : Int */;
3724 val* var53 /* : String */;
3725 static val* varonce54;
3726 val* var55 /* : String */;
3727 char* var56 /* : NativeString */;
3728 long var57 /* : Int */;
3729 val* var58 /* : String */;
3730 val* var59 /* : Array[Object] */;
3731 long var60 /* : Int */;
3732 val* var61 /* : NativeArray[Object] */;
3733 val* var62 /* : String */;
3734 static val* varonce63;
3735 val* var64 /* : String */;
3736 char* var65 /* : NativeString */;
3737 long var66 /* : Int */;
3738 val* var67 /* : String */;
3739 static val* varonce68;
3740 val* var69 /* : String */;
3741 char* var70 /* : NativeString */;
3742 long var71 /* : Int */;
3743 val* var72 /* : String */;
3744 val* var73 /* : Array[Object] */;
3745 long var74 /* : Int */;
3746 val* var75 /* : NativeArray[Object] */;
3747 val* var76 /* : String */;
3748 static val* varonce77;
3749 val* var78 /* : String */;
3750 char* var79 /* : NativeString */;
3751 long var80 /* : Int */;
3752 val* var81 /* : String */;
3753 val* var82 /* : AExpr */;
3754 val* var83 /* : RuntimeVariable */;
3755 val* var_i /* var i: RuntimeVariable */;
3756 static val* varonce84;
3757 val* var85 /* : String */;
3758 char* var86 /* : NativeString */;
3759 long var87 /* : Int */;
3760 val* var88 /* : String */;
3761 static val* varonce89;
3762 val* var90 /* : String */;
3763 char* var91 /* : NativeString */;
3764 long var92 /* : Int */;
3765 val* var93 /* : String */;
3766 val* var94 /* : Array[Object] */;
3767 long var95 /* : Int */;
3768 val* var96 /* : NativeArray[Object] */;
3769 val* var97 /* : String */;
3770 static val* varonce98;
3771 val* var99 /* : String */;
3772 char* var100 /* : NativeString */;
3773 long var101 /* : Int */;
3774 val* var102 /* : String */;
3775 static val* varonce103;
3776 val* var104 /* : String */;
3777 char* var105 /* : NativeString */;
3778 long var106 /* : Int */;
3779 val* var107 /* : String */;
3780 val* var108 /* : Array[Object] */;
3781 long var109 /* : Int */;
3782 val* var110 /* : NativeArray[Object] */;
3783 val* var111 /* : String */;
3784 static val* varonce112;
3785 val* var113 /* : String */;
3786 char* var114 /* : NativeString */;
3787 long var115 /* : Int */;
3788 val* var116 /* : String */;
3789 val* var117 /* : Array[Object] */;
3790 long var118 /* : Int */;
3791 val* var119 /* : NativeArray[Object] */;
3792 val* var120 /* : String */;
3793 static val* varonce121;
3794 val* var122 /* : String */;
3795 char* var123 /* : NativeString */;
3796 long var124 /* : Int */;
3797 val* var125 /* : String */;
3798 var_v = p0;
3799 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOnceExpr>*/;
3800 if (var1 == NULL) {
3801 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2200);
3802 exit(1);
3803 }
3804 var_mtype = var1;
3805 if (varonce) {
3806 var2 = varonce;
3807 } else {
3808 var3 = "varonce";
3809 var4 = 7;
3810 var5 = string__NativeString__to_s_with_length(var3, var4);
3811 var2 = var5;
3812 varonce = var2;
3813 }
3814 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var2) /* get_name on <var_v:AbstractCompilerVisitor>*/;
3815 var_name = var6;
3816 if (varonce7) {
3817 var8 = varonce7;
3818 } else {
3819 var9 = "_guard";
3820 var10 = 6;
3821 var11 = string__NativeString__to_s_with_length(var9, var10);
3822 var8 = var11;
3823 varonce7 = var8;
3824 }
3825 var12 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var8) /* + on <var_name:String>*/;
3826 var13 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var12) /* get_name on <var_v:AbstractCompilerVisitor>*/;
3827 var_guard = var13;
3828 if (varonce14) {
3829 var15 = varonce14;
3830 } else {
3831 var16 = "static ";
3832 var17 = 7;
3833 var18 = string__NativeString__to_s_with_length(var16, var17);
3834 var15 = var18;
3835 varonce14 = var15;
3836 }
3837 var19 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
3838 if (varonce20) {
3839 var21 = varonce20;
3840 } else {
3841 var22 = " ";
3842 var23 = 1;
3843 var24 = string__NativeString__to_s_with_length(var22, var23);
3844 var21 = var24;
3845 varonce20 = var21;
3846 }
3847 if (varonce25) {
3848 var26 = varonce25;
3849 } else {
3850 var27 = ";";
3851 var28 = 1;
3852 var29 = string__NativeString__to_s_with_length(var27, var28);
3853 var26 = var29;
3854 varonce25 = var26;
3855 }
3856 var30 = NEW_array__Array(&type_array__Arraykernel__Object);
3857 { /* var30 = array_instance Array[Object] */
3858 var31 = 5;
3859 var32 = NEW_array__NativeArray(var31, &type_array__NativeArraykernel__Object);
3860 ((struct instance_array__NativeArray*)var32)->values[0] = (val*) var15;
3861 ((struct instance_array__NativeArray*)var32)->values[1] = (val*) var19;
3862 ((struct instance_array__NativeArray*)var32)->values[2] = (val*) var21;
3863 ((struct instance_array__NativeArray*)var32)->values[3] = (val*) var_name;
3864 ((struct instance_array__NativeArray*)var32)->values[4] = (val*) var26;
3865 ((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[Object]>*/;
3866 CHECK_NEW_array__Array(var30);
3867 }
3868 var33 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Object__to_s]))(var30) /* to_s on <var30:Array[Object]>*/;
3869 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var33) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
3870 if (varonce34) {
3871 var35 = varonce34;
3872 } else {
3873 var36 = "static int ";
3874 var37 = 11;
3875 var38 = string__NativeString__to_s_with_length(var36, var37);
3876 var35 = var38;
3877 varonce34 = var35;
3878 }
3879 if (varonce39) {
3880 var40 = varonce39;
3881 } else {
3882 var41 = ";";
3883 var42 = 1;
3884 var43 = string__NativeString__to_s_with_length(var41, var42);
3885 var40 = var43;
3886 varonce39 = var40;
3887 }
3888 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
3889 { /* var44 = array_instance Array[Object] */
3890 var45 = 3;
3891 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
3892 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var35;
3893 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_guard;
3894 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
3895 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
3896 CHECK_NEW_array__Array(var44);
3897 }
3898 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
3899 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var47) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
3900 var48 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_mtype) /* new_var on <var_v:AbstractCompilerVisitor>*/;
3901 var_res = var48;
3902 if (varonce49) {
3903 var50 = varonce49;
3904 } else {
3905 var51 = "if (";
3906 var52 = 4;
3907 var53 = string__NativeString__to_s_with_length(var51, var52);
3908 var50 = var53;
3909 varonce49 = var50;
3910 }
3911 if (varonce54) {
3912 var55 = varonce54;
3913 } else {
3914 var56 = ") {";
3915 var57 = 3;
3916 var58 = string__NativeString__to_s_with_length(var56, var57);
3917 var55 = var58;
3918 varonce54 = var55;
3919 }
3920 var59 = NEW_array__Array(&type_array__Arraykernel__Object);
3921 { /* var59 = array_instance Array[Object] */
3922 var60 = 3;
3923 var61 = NEW_array__NativeArray(var60, &type_array__NativeArraykernel__Object);
3924 ((struct instance_array__NativeArray*)var61)->values[0] = (val*) var50;
3925 ((struct instance_array__NativeArray*)var61)->values[1] = (val*) var_guard;
3926 ((struct instance_array__NativeArray*)var61)->values[2] = (val*) var55;
3927 ((void (*)(val*, val*, long))(var59->class->vft[COLOR_array__Array__with_native]))(var59, var61, var60) /* with_native on <var59:Array[Object]>*/;
3928 CHECK_NEW_array__Array(var59);
3929 }
3930 var62 = ((val* (*)(val*))(var59->class->vft[COLOR_string__Object__to_s]))(var59) /* to_s on <var59:Array[Object]>*/;
3931 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var62) /* add on <var_v:AbstractCompilerVisitor>*/;
3932 if (varonce63) {
3933 var64 = varonce63;
3934 } else {
3935 var65 = " = ";
3936 var66 = 3;
3937 var67 = string__NativeString__to_s_with_length(var65, var66);
3938 var64 = var67;
3939 varonce63 = var64;
3940 }
3941 if (varonce68) {
3942 var69 = varonce68;
3943 } else {
3944 var70 = ";";
3945 var71 = 1;
3946 var72 = string__NativeString__to_s_with_length(var70, var71);
3947 var69 = var72;
3948 varonce68 = var69;
3949 }
3950 var73 = NEW_array__Array(&type_array__Arraykernel__Object);
3951 { /* var73 = array_instance Array[Object] */
3952 var74 = 4;
3953 var75 = NEW_array__NativeArray(var74, &type_array__NativeArraykernel__Object);
3954 ((struct instance_array__NativeArray*)var75)->values[0] = (val*) var_res;
3955 ((struct instance_array__NativeArray*)var75)->values[1] = (val*) var64;
3956 ((struct instance_array__NativeArray*)var75)->values[2] = (val*) var_name;
3957 ((struct instance_array__NativeArray*)var75)->values[3] = (val*) var69;
3958 ((void (*)(val*, val*, long))(var73->class->vft[COLOR_array__Array__with_native]))(var73, var75, var74) /* with_native on <var73:Array[Object]>*/;
3959 CHECK_NEW_array__Array(var73);
3960 }
3961 var76 = ((val* (*)(val*))(var73->class->vft[COLOR_string__Object__to_s]))(var73) /* to_s on <var73:Array[Object]>*/;
3962 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var76) /* add on <var_v:AbstractCompilerVisitor>*/;
3963 if (varonce77) {
3964 var78 = varonce77;
3965 } else {
3966 var79 = "} else {";
3967 var80 = 8;
3968 var81 = string__NativeString__to_s_with_length(var79, var80);
3969 var78 = var81;
3970 varonce77 = var78;
3971 }
3972 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var78) /* add on <var_v:AbstractCompilerVisitor>*/;
3973 var82 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AOnceExpr>*/;
3974 var83 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var82, var_mtype) /* expr on <var_v:AbstractCompilerVisitor>*/;
3975 var_i = var83;
3976 if (varonce84) {
3977 var85 = varonce84;
3978 } else {
3979 var86 = " = ";
3980 var87 = 3;
3981 var88 = string__NativeString__to_s_with_length(var86, var87);
3982 var85 = var88;
3983 varonce84 = var85;
3984 }
3985 if (varonce89) {
3986 var90 = varonce89;
3987 } else {
3988 var91 = ";";
3989 var92 = 1;
3990 var93 = string__NativeString__to_s_with_length(var91, var92);
3991 var90 = var93;
3992 varonce89 = var90;
3993 }
3994 var94 = NEW_array__Array(&type_array__Arraykernel__Object);
3995 { /* var94 = array_instance Array[Object] */
3996 var95 = 4;
3997 var96 = NEW_array__NativeArray(var95, &type_array__NativeArraykernel__Object);
3998 ((struct instance_array__NativeArray*)var96)->values[0] = (val*) var_res;
3999 ((struct instance_array__NativeArray*)var96)->values[1] = (val*) var85;
4000 ((struct instance_array__NativeArray*)var96)->values[2] = (val*) var_i;
4001 ((struct instance_array__NativeArray*)var96)->values[3] = (val*) var90;
4002 ((void (*)(val*, val*, long))(var94->class->vft[COLOR_array__Array__with_native]))(var94, var96, var95) /* with_native on <var94:Array[Object]>*/;
4003 CHECK_NEW_array__Array(var94);
4004 }
4005 var97 = ((val* (*)(val*))(var94->class->vft[COLOR_string__Object__to_s]))(var94) /* to_s on <var94:Array[Object]>*/;
4006 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var97) /* add on <var_v:AbstractCompilerVisitor>*/;
4007 if (varonce98) {
4008 var99 = varonce98;
4009 } else {
4010 var100 = " = ";
4011 var101 = 3;
4012 var102 = string__NativeString__to_s_with_length(var100, var101);
4013 var99 = var102;
4014 varonce98 = var99;
4015 }
4016 if (varonce103) {
4017 var104 = varonce103;
4018 } else {
4019 var105 = ";";
4020 var106 = 1;
4021 var107 = string__NativeString__to_s_with_length(var105, var106);
4022 var104 = var107;
4023 varonce103 = var104;
4024 }
4025 var108 = NEW_array__Array(&type_array__Arraykernel__Object);
4026 { /* var108 = array_instance Array[Object] */
4027 var109 = 4;
4028 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraykernel__Object);
4029 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_name;
4030 ((struct instance_array__NativeArray*)var110)->values[1] = (val*) var99;
4031 ((struct instance_array__NativeArray*)var110)->values[2] = (val*) var_res;
4032 ((struct instance_array__NativeArray*)var110)->values[3] = (val*) var104;
4033 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[Object]>*/;
4034 CHECK_NEW_array__Array(var108);
4035 }
4036 var111 = ((val* (*)(val*))(var108->class->vft[COLOR_string__Object__to_s]))(var108) /* to_s on <var108:Array[Object]>*/;
4037 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var111) /* add on <var_v:AbstractCompilerVisitor>*/;
4038 if (varonce112) {
4039 var113 = varonce112;
4040 } else {
4041 var114 = " = 1;";
4042 var115 = 5;
4043 var116 = string__NativeString__to_s_with_length(var114, var115);
4044 var113 = var116;
4045 varonce112 = var113;
4046 }
4047 var117 = NEW_array__Array(&type_array__Arraykernel__Object);
4048 { /* var117 = array_instance Array[Object] */
4049 var118 = 2;
4050 var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
4051 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var_guard;
4052 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var113;
4053 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
4054 CHECK_NEW_array__Array(var117);
4055 }
4056 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
4057 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var120) /* add on <var_v:AbstractCompilerVisitor>*/;
4058 if (varonce121) {
4059 var122 = varonce121;
4060 } else {
4061 var123 = "}";
4062 var124 = 1;
4063 var125 = string__NativeString__to_s_with_length(var123, var124);
4064 var122 = var125;
4065 varonce121 = var122;
4066 }
4067 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var122) /* add on <var_v:AbstractCompilerVisitor>*/;
4068 var = var_res;
4069 goto RET_LABEL;
4070 RET_LABEL:;
4071 return var;
4072 }
4073 /* method abstract_compiler#AOnceExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4074 val* VIRTUAL_abstract_compiler__AOnceExpr__expr(val* self, val* p0) {
4075 val* var /* : nullable RuntimeVariable */;
4076 val* var1 /* : nullable RuntimeVariable */;
4077 var1 = abstract_compiler__AOnceExpr__expr(self, p0);
4078 var = var1;
4079 RET_LABEL:;
4080 return var;
4081 }
4082 /* method abstract_compiler#ASendExpr#expr for (self: ASendExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4083 val* abstract_compiler__ASendExpr__expr(val* self, val* p0) {
4084 val* var /* : nullable RuntimeVariable */;
4085 val* var_v /* var v: AbstractCompilerVisitor */;
4086 val* var1 /* : AExpr */;
4087 val* var2 /* : null */;
4088 val* var3 /* : RuntimeVariable */;
4089 val* var_recv /* var recv: RuntimeVariable */;
4090 val* var4 /* : Array[RuntimeVariable] */;
4091 long var5 /* : Int */;
4092 val* var_ /* var : Array[RuntimeVariable] */;
4093 val* var_args /* var args: Array[RuntimeVariable] */;
4094 val* var6 /* : nullable Array[AExpr] */;
4095 val* var7 /* : Iterator[nullable Object] */;
4096 short int var8 /* : Bool */;
4097 val* var9 /* : nullable Object */;
4098 val* var_a /* var a: AExpr */;
4099 val* var10 /* : null */;
4100 val* var11 /* : RuntimeVariable */;
4101 val* var12 /* : nullable CallSite */;
4102 val* var13 /* : nullable RuntimeVariable */;
4103 var_v = p0;
4104 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
4105 var2 = NULL;
4106 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
4107 var_recv = var3;
4108 var4 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4109 var5 = 1;
4110 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[RuntimeVariable]>*/;
4111 CHECK_NEW_array__Array(var4);
4112 var_ = var4;
4113 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
4114 var_args = var_;
4115 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments]))(self) /* raw_arguments on <self:ASendExpr>*/;
4116 if (var6 == NULL) {
4117 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2223);
4118 exit(1);
4119 }
4120 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:nullable Array[AExpr](Array[AExpr])>*/;
4121 for(;;) {
4122 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
4123 if(!var8) break;
4124 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
4125 var_a = var9;
4126 var10 = NULL;
4127 var11 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var_a, var10) /* expr on <var_v:AbstractCompilerVisitor>*/;
4128 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var11) /* add on <var_args:Array[RuntimeVariable]>*/;
4129 CONTINUE_label: (void)0;
4130 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
4131 }
4132 BREAK_label: (void)0;
4133 var12 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendExpr>*/;
4134 if (var12 == NULL) {
4135 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2226);
4136 exit(1);
4137 }
4138 var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var12, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
4139 var = var13;
4140 goto RET_LABEL;
4141 RET_LABEL:;
4142 return var;
4143 }
4144 /* method abstract_compiler#ASendExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4145 val* VIRTUAL_abstract_compiler__ASendExpr__expr(val* self, val* p0) {
4146 val* var /* : nullable RuntimeVariable */;
4147 val* var1 /* : nullable RuntimeVariable */;
4148 var1 = abstract_compiler__ASendExpr__expr(self, p0);
4149 var = var1;
4150 RET_LABEL:;
4151 return var;
4152 }
4153 /* method abstract_compiler#ASendReassignFormExpr#stmt for (self: ASendReassignFormExpr, AbstractCompilerVisitor) */
4154 void abstract_compiler__ASendReassignFormExpr__stmt(val* self, val* p0) {
4155 val* var_v /* var v: AbstractCompilerVisitor */;
4156 val* var /* : AExpr */;
4157 val* var1 /* : null */;
4158 val* var2 /* : RuntimeVariable */;
4159 val* var_recv /* var recv: RuntimeVariable */;
4160 val* var3 /* : Array[RuntimeVariable] */;
4161 long var4 /* : Int */;
4162 val* var_ /* var : Array[RuntimeVariable] */;
4163 val* var_args /* var args: Array[RuntimeVariable] */;
4164 val* var5 /* : nullable Array[AExpr] */;
4165 val* var6 /* : Iterator[nullable Object] */;
4166 short int var7 /* : Bool */;
4167 val* var8 /* : nullable Object */;
4168 val* var_a /* var a: AExpr */;
4169 val* var9 /* : null */;
4170 val* var10 /* : RuntimeVariable */;
4171 val* var11 /* : AExpr */;
4172 val* var12 /* : null */;
4173 val* var13 /* : RuntimeVariable */;
4174 val* var_value /* var value: RuntimeVariable */;
4175 val* var14 /* : nullable CallSite */;
4176 val* var15 /* : nullable RuntimeVariable */;
4177 val* var_left /* var left: nullable RuntimeVariable */;
4178 val* var16 /* : null */;
4179 short int var17 /* : Bool */;
4180 val* var18 /* : nullable CallSite */;
4181 val* var19 /* : Array[RuntimeVariable] */;
4182 long var20 /* : Int */;
4183 val* var21 /* : NativeArray[RuntimeVariable] */;
4184 val* var22 /* : nullable RuntimeVariable */;
4185 val* var_res /* var res: nullable RuntimeVariable */;
4186 val* var23 /* : null */;
4187 short int var24 /* : Bool */;
4188 val* var25 /* : nullable CallSite */;
4189 val* var26 /* : nullable RuntimeVariable */;
4190 var_v = p0;
4191 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
4192 var1 = NULL;
4193 var2 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var, var1) /* expr on <var_v:AbstractCompilerVisitor>*/;
4194 var_recv = var2;
4195 var3 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4196 var4 = 1;
4197 ((void (*)(val*, long))(var3->class->vft[COLOR_array__Array__with_capacity]))(var3, var4) /* with_capacity on <var3:Array[RuntimeVariable]>*/;
4198 CHECK_NEW_array__Array(var3);
4199 var_ = var3;
4200 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
4201 var_args = var_;
4202 var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments]))(self) /* raw_arguments on <self:ASendReassignFormExpr>*/;
4203 if (var5 == NULL) {
4204 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2235);
4205 exit(1);
4206 }
4207 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:nullable Array[AExpr](Array[AExpr])>*/;
4208 for(;;) {
4209 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
4210 if(!var7) break;
4211 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
4212 var_a = var8;
4213 var9 = NULL;
4214 var10 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var_a, var9) /* expr on <var_v:AbstractCompilerVisitor>*/;
4215 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var10) /* add on <var_args:Array[RuntimeVariable]>*/;
4216 CONTINUE_label: (void)0;
4217 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
4218 }
4219 BREAK_label: (void)0;
4220 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
4221 var12 = NULL;
4222 var13 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var11, var12) /* expr on <var_v:AbstractCompilerVisitor>*/;
4223 var_value = var13;
4224 var14 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendReassignFormExpr>*/;
4225 if (var14 == NULL) {
4226 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2240);
4227 exit(1);
4228 }
4229 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var14, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
4230 var_left = var15;
4231 var16 = NULL;
4232 if (var_left == NULL) {
4233 var17 = 0; /* is null */
4234 } else {
4235 var17 = 1; /* arg is null and recv is not */
4236 }
4237 if (!var17) {
4238 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 2241);
4239 exit(1);
4240 }
4241 var18 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:ASendReassignFormExpr>*/;
4242 if (var18 == NULL) {
4243 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2243);
4244 exit(1);
4245 }
4246 var19 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4247 { /* var19 = array_instance Array[RuntimeVariable] */
4248 var20 = 2;
4249 var21 = NEW_array__NativeArray(var20, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
4250 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var_left;
4251 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_value;
4252 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[RuntimeVariable]>*/;
4253 CHECK_NEW_array__Array(var19);
4254 }
4255 var22 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var18, var19) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
4256 var_res = var22;
4257 var23 = NULL;
4258 if (var_res == NULL) {
4259 var24 = 0; /* is null */
4260 } else {
4261 var24 = 1; /* arg is null and recv is not */
4262 }
4263 if (!var24) {
4264 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 2244);
4265 exit(1);
4266 }
4267 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var_res) /* add on <var_args:Array[RuntimeVariable]>*/;
4268 var25 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite]))(self) /* write_callsite on <self:ASendReassignFormExpr>*/;
4269 if (var25 == NULL) {
4270 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2247);
4271 exit(1);
4272 }
4273 var26 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var25, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
4274 var26;
4275 RET_LABEL:;
4276 }
4277 /* method abstract_compiler#ASendReassignFormExpr#stmt for (self: Object, AbstractCompilerVisitor) */
4278 void VIRTUAL_abstract_compiler__ASendReassignFormExpr__stmt(val* self, val* p0) {
4279 abstract_compiler__ASendReassignFormExpr__stmt(self, p0);
4280 RET_LABEL:;
4281 }
4282 /* method abstract_compiler#ASuperExpr#expr for (self: ASuperExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4283 val* abstract_compiler__ASuperExpr__expr(val* self, val* p0) {
4284 val* var /* : nullable RuntimeVariable */;
4285 val* var_v /* var v: AbstractCompilerVisitor */;
4286 val* var1 /* : nullable Frame */;
4287 val* var2 /* : Array[RuntimeVariable] */;
4288 val* var3 /* : nullable Object */;
4289 val* var_recv /* var recv: RuntimeVariable */;
4290 val* var4 /* : Array[RuntimeVariable] */;
4291 long var5 /* : Int */;
4292 val* var_ /* var : Array[RuntimeVariable] */;
4293 val* var_args /* var args: Array[RuntimeVariable] */;
4294 val* var6 /* : AExprs */;
4295 val* var7 /* : ANodes[AExpr] */;
4296 val* var8 /* : Iterator[nullable Object] */;
4297 short int var9 /* : Bool */;
4298 val* var10 /* : nullable Object */;
4299 val* var_a /* var a: AExpr */;
4300 val* var11 /* : null */;
4301 val* var12 /* : RuntimeVariable */;
4302 long var13 /* : Int */;
4303 long var14 /* : Int */;
4304 short int var15 /* : Bool */;
4305 short int var17 /* : Bool */;
4306 val* var18 /* : nullable Frame */;
4307 val* var19 /* : Array[RuntimeVariable] */;
4308 val* var20 /* : nullable MMethod */;
4309 val* var_mproperty /* var mproperty: nullable MMethod */;
4310 val* var21 /* : null */;
4311 short int var22 /* : Bool */;
4312 val* var23 /* : MPropDef */;
4313 val* var24 /* : nullable MSignature */;
4314 long var25 /* : Int */;
4315 long var26 /* : Int */;
4316 short int var27 /* : Bool */;
4317 short int var29 /* : Bool */;
4318 val* var30 /* : Array[RuntimeVariable] */;
4319 long var31 /* : Int */;
4320 val* var_32 /* var : Array[RuntimeVariable] */;
4321 val* var33 /* : nullable RuntimeVariable */;
4322 val* var_res /* var res: nullable RuntimeVariable */;
4323 val* var34 /* : nullable Frame */;
4324 val* var35 /* : MPropDef */;
4325 short int var36 /* : Bool */;
4326 int cltype;
4327 int idtype;
4328 val* var37 /* : MType */;
4329 short int var38 /* : Bool */;
4330 int cltype39;
4331 int idtype40;
4332 val* var41 /* : nullable RuntimeVariable */;
4333 var_v = p0;
4334 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(var_v) /* frame on <var_v:AbstractCompilerVisitor>*/;
4335 if (var1 == NULL) {
4336 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 2254);
4337 exit(1);
4338 } else {
4339 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var1) /* arguments on <var1:nullable Frame>*/;
4340 }
4341 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[RuntimeVariable]>*/;
4342 var_recv = var3;
4343 var4 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4344 var5 = 1;
4345 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[RuntimeVariable]>*/;
4346 CHECK_NEW_array__Array(var4);
4347 var_ = var4;
4348 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
4349 var_args = var_;
4350 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
4351 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var6) /* n_exprs on <var6:AExprs>*/;
4352 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:ANodes[AExpr]>*/;
4353 for(;;) {
4354 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
4355 if(!var9) break;
4356 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
4357 var_a = var10;
4358 var11 = NULL;
4359 var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var_a, var11) /* expr on <var_v:AbstractCompilerVisitor>*/;
4360 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var12) /* add on <var_args:Array[RuntimeVariable]>*/;
4361 CONTINUE_label: (void)0;
4362 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
4363 }
4364 BREAK_label: (void)0;
4365 var13 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[RuntimeVariable]>*/;
4366 var14 = 1;
4367 { /* Inline kernel#Int#== (var13,var14) */
4368 var17 = var13 == var14;
4369 var15 = var17;
4370 goto RET_LABEL16;
4371 RET_LABEL16:(void)0;
4372 }
4373 if (var15){
4374 var18 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(var_v) /* frame on <var_v:AbstractCompilerVisitor>*/;
4375 if (var18 == NULL) {
4376 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 2260);
4377 exit(1);
4378 } else {
4379 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var18) /* arguments on <var18:nullable Frame>*/;
4380 }
4381 var_args = var19;
4382 } else {
4383 }
4384 var20 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASuperExpr__mproperty]))(self) /* mproperty on <self:ASuperExpr>*/;
4385 var_mproperty = var20;
4386 var21 = NULL;
4387 if (var_mproperty == NULL) {
4388 var22 = 0; /* is null */
4389 } else {
4390 var22 = 1; /* arg is null and recv is not */
4391 }
4392 if (var22){
4393 var23 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro]))(var_mproperty) /* intro on <var_mproperty:nullable MMethod(MMethod)>*/;
4394 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_model__MMethodDef__msignature]))(var23) /* msignature on <var23:MPropDef(MMethodDef)>*/;
4395 if (var24 == NULL) {
4396 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 2265);
4397 exit(1);
4398 } else {
4399 var25 = ((long (*)(val*))(var24->class->vft[COLOR_model__MSignature__arity]))(var24) /* arity on <var24:nullable MSignature>*/;
4400 }
4401 var26 = 0;
4402 { /* Inline kernel#Int#== (var25,var26) */
4403 var29 = var25 == var26;
4404 var27 = var29;
4405 goto RET_LABEL28;
4406 RET_LABEL28:(void)0;
4407 }
4408 if (var27){
4409 var30 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4410 var31 = 1;
4411 ((void (*)(val*, long))(var30->class->vft[COLOR_array__Array__with_capacity]))(var30, var31) /* with_capacity on <var30:Array[RuntimeVariable]>*/;
4412 CHECK_NEW_array__Array(var30);
4413 var_32 = var30;
4414 ((void (*)(val*, val*))(var_32->class->vft[COLOR_abstract_collection__Sequence__push]))(var_32, var_recv) /* push on <var_32:Array[RuntimeVariable]>*/;
4415 var_args = var_32;
4416 } else {
4417 }
4418 var33 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_mproperty, var_args) /* send on <var_v:AbstractCompilerVisitor>*/;
4419 var_res = var33;
4420 var = var_res;
4421 goto RET_LABEL;
4422 } else {
4423 }
4424 var34 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(var_v) /* frame on <var_v:AbstractCompilerVisitor>*/;
4425 if (var34 == NULL) {
4426 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 2274);
4427 exit(1);
4428 } else {
4429 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var34) /* mpropdef on <var34:nullable Frame>*/;
4430 }
4431 /* <var35:MPropDef> isa MMethodDef */
4432 cltype = type_model__MMethodDef.color;
4433 idtype = type_model__MMethodDef.id;
4434 if(cltype >= var35->type->table_size) {
4435 var36 = 0;
4436 } else {
4437 var36 = var35->type->type_table[cltype] == idtype;
4438 }
4439 if (!var36) {
4440 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2274);
4441 exit(1);
4442 }
4443 var37 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_recv) /* mtype on <var_recv:RuntimeVariable>*/;
4444 /* <var37:MType> isa MClassType */
4445 cltype39 = type_model__MClassType.color;
4446 idtype40 = type_model__MClassType.id;
4447 if(cltype39 >= var37->type->table_size) {
4448 var38 = 0;
4449 } else {
4450 var38 = var37->type->type_table[cltype39] == idtype40;
4451 }
4452 if (!var38) {
4453 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2274);
4454 exit(1);
4455 }
4456 var41 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__supercall]))(var_v, var35, var37, var_args) /* supercall on <var_v:AbstractCompilerVisitor>*/;
4457 var = var41;
4458 goto RET_LABEL;
4459 RET_LABEL:;
4460 return var;
4461 }
4462 /* method abstract_compiler#ASuperExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4463 val* VIRTUAL_abstract_compiler__ASuperExpr__expr(val* self, val* p0) {
4464 val* var /* : nullable RuntimeVariable */;
4465 val* var1 /* : nullable RuntimeVariable */;
4466 var1 = abstract_compiler__ASuperExpr__expr(self, p0);
4467 var = var1;
4468 RET_LABEL:;
4469 return var;
4470 }
4471 /* method abstract_compiler#ANewExpr#expr for (self: ANewExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4472 val* abstract_compiler__ANewExpr__expr(val* self, val* p0) {
4473 val* var /* : nullable RuntimeVariable */;
4474 val* var_v /* var v: AbstractCompilerVisitor */;
4475 val* var1 /* : nullable MType */;
4476 short int var2 /* : Bool */;
4477 int cltype;
4478 int idtype;
4479 val* var_mtype /* var mtype: MClassType */;
4480 val* var3 /* : String */;
4481 val* var_ctype /* var ctype: String */;
4482 static val* varonce;
4483 val* var4 /* : String */;
4484 char* var5 /* : NativeString */;
4485 long var6 /* : Int */;
4486 val* var7 /* : String */;
4487 short int var8 /* : Bool */;
4488 val* var9 /* : RuntimeVariable */;
4489 val* var_recv /* var recv: nullable Object */;
4490 static val* varonce10;
4491 val* var11 /* : String */;
4492 char* var12 /* : NativeString */;
4493 long var13 /* : Int */;
4494 val* var14 /* : String */;
4495 short int var15 /* : Bool */;
4496 static val* varonce16;
4497 val* var17 /* : String */;
4498 char* var18 /* : NativeString */;
4499 long var19 /* : Int */;
4500 val* var20 /* : String */;
4501 val* var21 /* : RuntimeVariable */;
4502 static val* varonce22;
4503 val* var23 /* : String */;
4504 char* var24 /* : NativeString */;
4505 long var25 /* : Int */;
4506 val* var26 /* : String */;
4507 val* var27 /* : Array[Object] */;
4508 long var28 /* : Int */;
4509 val* var29 /* : NativeArray[Object] */;
4510 val* var30 /* : String */;
4511 val* var31 /* : Array[RuntimeVariable] */;
4512 long var32 /* : Int */;
4513 val* var_ /* var : Array[RuntimeVariable] */;
4514 val* var_args /* var args: Array[RuntimeVariable] */;
4515 val* var33 /* : AExprs */;
4516 val* var34 /* : ANodes[AExpr] */;
4517 val* var35 /* : Iterator[nullable Object] */;
4518 short int var36 /* : Bool */;
4519 val* var37 /* : nullable Object */;
4520 val* var_a /* var a: AExpr */;
4521 val* var38 /* : null */;
4522 val* var39 /* : RuntimeVariable */;
4523 val* var40 /* : nullable CallSite */;
4524 val* var41 /* : nullable RuntimeVariable */;
4525 val* var_res2 /* var res2: nullable RuntimeVariable */;
4526 val* var42 /* : null */;
4527 short int var43 /* : Bool */;
4528 var_v = p0;
4529 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ANewExpr>*/;
4530 /* <var1:nullable MType> isa MClassType */
4531 cltype = type_model__MClassType.color;
4532 idtype = type_model__MClassType.id;
4533 if(var1 == NULL) {
4534 var2 = 0;
4535 } else {
4536 if(cltype >= var1->type->table_size) {
4537 var2 = 0;
4538 } else {
4539 var2 = var1->type->type_table[cltype] == idtype;
4540 }
4541 }
4542 if (!var2) {
4543 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2281);
4544 exit(1);
4545 }
4546 var_mtype = var1;
4547 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
4548 var_ctype = var3;
4549 if (varonce) {
4550 var4 = varonce;
4551 } else {
4552 var5 = "val*";
4553 var6 = 4;
4554 var7 = string__NativeString__to_s_with_length(var5, var6);
4555 var4 = var7;
4556 varonce = var4;
4557 }
4558 var8 = ((short int (*)(val*, val*))(var_ctype->class->vft[COLOR_kernel__Object___61d_61d]))(var_ctype, var4) /* == on <var_ctype:String>*/;
4559 if (var8){
4560 var9 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_mtype) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
4561 var_recv = var9;
4562 } else {
4563 if (varonce10) {
4564 var11 = varonce10;
4565 } else {
4566 var12 = "void*";
4567 var13 = 5;
4568 var14 = string__NativeString__to_s_with_length(var12, var13);
4569 var11 = var14;
4570 varonce10 = var11;
4571 }
4572 var15 = ((short int (*)(val*, val*))(var_ctype->class->vft[COLOR_kernel__Object___61d_61d]))(var_ctype, var11) /* == on <var_ctype:String>*/;
4573 if (var15){
4574 if (varonce16) {
4575 var17 = varonce16;
4576 } else {
4577 var18 = "NULL/*special!*/";
4578 var19 = 16;
4579 var20 = string__NativeString__to_s_with_length(var18, var19);
4580 var17 = var20;
4581 varonce16 = var17;
4582 }
4583 var21 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(var_v, var17, var_mtype) /* new_expr on <var_v:AbstractCompilerVisitor>*/;
4584 var_recv = var21;
4585 } else {
4586 if (varonce22) {
4587 var23 = varonce22;
4588 } else {
4589 var24 = "cannot new ";
4590 var25 = 11;
4591 var26 = string__NativeString__to_s_with_length(var24, var25);
4592 var23 = var26;
4593 varonce22 = var23;
4594 }
4595 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
4596 { /* var27 = array_instance Array[Object] */
4597 var28 = 2;
4598 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
4599 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var23;
4600 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_mtype;
4601 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
4602 CHECK_NEW_array__Array(var27);
4603 }
4604 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
4605 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var30) /* debug on <self:ANewExpr>*/;
4606 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/abstract_compiler.nit", 2290);
4607 exit(1);
4608 }
4609 }
4610 var31 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4611 var32 = 1;
4612 ((void (*)(val*, long))(var31->class->vft[COLOR_array__Array__with_capacity]))(var31, var32) /* with_capacity on <var31:Array[RuntimeVariable]>*/;
4613 CHECK_NEW_array__Array(var31);
4614 var_ = var31;
4615 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
4616 var_args = var_;
4617 var33 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANewExpr__n_args]))(self) /* n_args on <self:ANewExpr>*/;
4618 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var33) /* n_exprs on <var33:AExprs>*/;
4619 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Collection__iterator]))(var34) /* iterator on <var34:ANodes[AExpr]>*/;
4620 for(;;) {
4621 var36 = ((short int (*)(val*))(var35->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var35) /* is_ok on <var35:Iterator[nullable Object]>*/;
4622 if(!var36) break;
4623 var37 = ((val* (*)(val*))(var35->class->vft[COLOR_abstract_collection__Iterator__item]))(var35) /* item on <var35:Iterator[nullable Object]>*/;
4624 var_a = var37;
4625 var38 = NULL;
4626 var39 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var_a, var38) /* expr on <var_v:AbstractCompilerVisitor>*/;
4627 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var39) /* add on <var_args:Array[RuntimeVariable]>*/;
4628 CONTINUE_label: (void)0;
4629 ((void (*)(val*))(var35->class->vft[COLOR_abstract_collection__Iterator__next]))(var35) /* next on <var35:Iterator[nullable Object]>*/;
4630 }
4631 BREAK_label: (void)0;
4632 var40 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ANewExpr__callsite]))(self) /* callsite on <self:ANewExpr>*/;
4633 if (var40 == NULL) {
4634 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2296);
4635 exit(1);
4636 }
4637 var41 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var40, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
4638 var_res2 = var41;
4639 var42 = NULL;
4640 if (var_res2 == NULL) {
4641 var43 = 0; /* is null */
4642 } else {
4643 var43 = 1; /* arg is null and recv is not */
4644 }
4645 if (var43){
4646 var = var_res2;
4647 goto RET_LABEL;
4648 } else {
4649 }
4650 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_init_instance]))(var_v, var_recv, var_mtype) /* check_init_instance on <var_v:AbstractCompilerVisitor>*/;
4651 var = var_recv;
4652 goto RET_LABEL;
4653 RET_LABEL:;
4654 return var;
4655 }
4656 /* method abstract_compiler#ANewExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4657 val* VIRTUAL_abstract_compiler__ANewExpr__expr(val* self, val* p0) {
4658 val* var /* : nullable RuntimeVariable */;
4659 val* var1 /* : nullable RuntimeVariable */;
4660 var1 = abstract_compiler__ANewExpr__expr(self, p0);
4661 var = var1;
4662 RET_LABEL:;
4663 return var;
4664 }
4665 /* method abstract_compiler#AAttrExpr#expr for (self: AAttrExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4666 val* abstract_compiler__AAttrExpr__expr(val* self, val* p0) {
4667 val* var /* : nullable RuntimeVariable */;
4668 val* var_v /* var v: AbstractCompilerVisitor */;
4669 val* var1 /* : AExpr */;
4670 val* var2 /* : null */;
4671 val* var3 /* : RuntimeVariable */;
4672 val* var_recv /* var recv: RuntimeVariable */;
4673 val* var4 /* : nullable MAttribute */;
4674 val* var_mproperty /* var mproperty: MAttribute */;
4675 val* var5 /* : RuntimeVariable */;
4676 var_v = p0;
4677 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrExpr>*/;
4678 var2 = NULL;
4679 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
4680 var_recv = var3;
4681 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty]))(self) /* mproperty on <self:AAttrExpr>*/;
4682 if (var4 == NULL) {
4683 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2310);
4684 exit(1);
4685 }
4686 var_mproperty = var4;
4687 var5 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__read_attribute]))(var_v, var_mproperty, var_recv) /* read_attribute on <var_v:AbstractCompilerVisitor>*/;
4688 var = var5;
4689 goto RET_LABEL;
4690 RET_LABEL:;
4691 return var;
4692 }
4693 /* method abstract_compiler#AAttrExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4694 val* VIRTUAL_abstract_compiler__AAttrExpr__expr(val* self, val* p0) {
4695 val* var /* : nullable RuntimeVariable */;
4696 val* var1 /* : nullable RuntimeVariable */;
4697 var1 = abstract_compiler__AAttrExpr__expr(self, p0);
4698 var = var1;
4699 RET_LABEL:;
4700 return var;
4701 }
4702 /* method abstract_compiler#AAttrAssignExpr#stmt for (self: AAttrAssignExpr, AbstractCompilerVisitor) */
4703 void abstract_compiler__AAttrAssignExpr__stmt(val* self, val* p0) {
4704 val* var_v /* var v: AbstractCompilerVisitor */;
4705 val* var /* : AExpr */;
4706 val* var1 /* : null */;
4707 val* var2 /* : RuntimeVariable */;
4708 val* var_recv /* var recv: RuntimeVariable */;
4709 val* var3 /* : AExpr */;
4710 val* var4 /* : null */;
4711 val* var5 /* : RuntimeVariable */;
4712 val* var_i /* var i: RuntimeVariable */;
4713 val* var6 /* : nullable MAttribute */;
4714 val* var_mproperty /* var mproperty: MAttribute */;
4715 var_v = p0;
4716 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrAssignExpr>*/;
4717 var1 = NULL;
4718 var2 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var, var1) /* expr on <var_v:AbstractCompilerVisitor>*/;
4719 var_recv = var2;
4720 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AAttrAssignExpr>*/;
4721 var4 = NULL;
4722 var5 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var3, var4) /* expr on <var_v:AbstractCompilerVisitor>*/;
4723 var_i = var5;
4724 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty]))(self) /* mproperty on <self:AAttrAssignExpr>*/;
4725 if (var6 == NULL) {
4726 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2320);
4727 exit(1);
4728 }
4729 var_mproperty = var6;
4730 ((void (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__write_attribute]))(var_v, var_mproperty, var_recv, var_i) /* write_attribute on <var_v:AbstractCompilerVisitor>*/;
4731 RET_LABEL:;
4732 }
4733 /* method abstract_compiler#AAttrAssignExpr#stmt for (self: Object, AbstractCompilerVisitor) */
4734 void VIRTUAL_abstract_compiler__AAttrAssignExpr__stmt(val* self, val* p0) {
4735 abstract_compiler__AAttrAssignExpr__stmt(self, p0);
4736 RET_LABEL:;
4737 }
4738 /* method abstract_compiler#AAttrReassignExpr#stmt for (self: AAttrReassignExpr, AbstractCompilerVisitor) */
4739 void abstract_compiler__AAttrReassignExpr__stmt(val* self, val* p0) {
4740 val* var_v /* var v: AbstractCompilerVisitor */;
4741 val* var /* : AExpr */;
4742 val* var1 /* : null */;
4743 val* var2 /* : RuntimeVariable */;
4744 val* var_recv /* var recv: RuntimeVariable */;
4745 val* var3 /* : AExpr */;
4746 val* var4 /* : null */;
4747 val* var5 /* : RuntimeVariable */;
4748 val* var_value /* var value: RuntimeVariable */;
4749 val* var6 /* : nullable MAttribute */;
4750 val* var_mproperty /* var mproperty: MAttribute */;
4751 val* var7 /* : RuntimeVariable */;
4752 val* var_attr /* var attr: RuntimeVariable */;
4753 val* var8 /* : nullable CallSite */;
4754 val* var9 /* : Array[RuntimeVariable] */;
4755 long var10 /* : Int */;
4756 val* var11 /* : NativeArray[RuntimeVariable] */;
4757 val* var12 /* : nullable RuntimeVariable */;
4758 val* var_res /* var res: nullable RuntimeVariable */;
4759 val* var13 /* : null */;
4760 short int var14 /* : Bool */;
4761 var_v = p0;
4762 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
4763 var1 = NULL;
4764 var2 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var, var1) /* expr on <var_v:AbstractCompilerVisitor>*/;
4765 var_recv = var2;
4766 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AAttrReassignExpr>*/;
4767 var4 = NULL;
4768 var5 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var3, var4) /* expr on <var_v:AbstractCompilerVisitor>*/;
4769 var_value = var5;
4770 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty]))(self) /* mproperty on <self:AAttrReassignExpr>*/;
4771 if (var6 == NULL) {
4772 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2330);
4773 exit(1);
4774 }
4775 var_mproperty = var6;
4776 var7 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__read_attribute]))(var_v, var_mproperty, var_recv) /* read_attribute on <var_v:AbstractCompilerVisitor>*/;
4777 var_attr = var7;
4778 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AAttrReassignExpr>*/;
4779 if (var8 == NULL) {
4780 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2332);
4781 exit(1);
4782 }
4783 var9 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4784 { /* var9 = array_instance Array[RuntimeVariable] */
4785 var10 = 2;
4786 var11 = NEW_array__NativeArray(var10, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
4787 ((struct instance_array__NativeArray*)var11)->values[0] = (val*) var_attr;
4788 ((struct instance_array__NativeArray*)var11)->values[1] = (val*) var_value;
4789 ((void (*)(val*, val*, long))(var9->class->vft[COLOR_array__Array__with_native]))(var9, var11, var10) /* with_native on <var9:Array[RuntimeVariable]>*/;
4790 CHECK_NEW_array__Array(var9);
4791 }
4792 var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var8, var9) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
4793 var_res = var12;
4794 var13 = NULL;
4795 if (var_res == NULL) {
4796 var14 = 0; /* is null */
4797 } else {
4798 var14 = 1; /* arg is null and recv is not */
4799 }
4800 if (!var14) {
4801 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 2333);
4802 exit(1);
4803 }
4804 ((void (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__write_attribute]))(var_v, var_mproperty, var_recv, var_res) /* write_attribute on <var_v:AbstractCompilerVisitor>*/;
4805 RET_LABEL:;
4806 }
4807 /* method abstract_compiler#AAttrReassignExpr#stmt for (self: Object, AbstractCompilerVisitor) */
4808 void VIRTUAL_abstract_compiler__AAttrReassignExpr__stmt(val* self, val* p0) {
4809 abstract_compiler__AAttrReassignExpr__stmt(self, p0);
4810 RET_LABEL:;
4811 }
4812 /* method abstract_compiler#AIssetAttrExpr#expr for (self: AIssetAttrExpr, AbstractCompilerVisitor): nullable RuntimeVariable */
4813 val* abstract_compiler__AIssetAttrExpr__expr(val* self, val* p0) {
4814 val* var /* : nullable RuntimeVariable */;
4815 val* var_v /* var v: AbstractCompilerVisitor */;
4816 val* var1 /* : AExpr */;
4817 val* var2 /* : null */;
4818 val* var3 /* : RuntimeVariable */;
4819 val* var_recv /* var recv: RuntimeVariable */;
4820 val* var4 /* : nullable MAttribute */;
4821 val* var_mproperty /* var mproperty: MAttribute */;
4822 val* var5 /* : RuntimeVariable */;
4823 var_v = p0;
4824 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AIssetAttrExpr>*/;
4825 var2 = NULL;
4826 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(var_v, var1, var2) /* expr on <var_v:AbstractCompilerVisitor>*/;
4827 var_recv = var3;
4828 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty]))(self) /* mproperty on <self:AIssetAttrExpr>*/;
4829 if (var4 == NULL) {
4830 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2342);
4831 exit(1);
4832 }
4833 var_mproperty = var4;
4834 var5 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__isset_attribute]))(var_v, var_mproperty, var_recv) /* isset_attribute on <var_v:AbstractCompilerVisitor>*/;
4835 var = var5;
4836 goto RET_LABEL;
4837 RET_LABEL:;
4838 return var;
4839 }
4840 /* method abstract_compiler#AIssetAttrExpr#expr for (self: Object, AbstractCompilerVisitor): nullable RuntimeVariable */
4841 val* VIRTUAL_abstract_compiler__AIssetAttrExpr__expr(val* self, val* p0) {
4842 val* var /* : nullable RuntimeVariable */;
4843 val* var1 /* : nullable RuntimeVariable */;
4844 var1 = abstract_compiler__AIssetAttrExpr__expr(self, p0);
4845 var = var1;
4846 RET_LABEL:;
4847 return var;
4848 }
4849 /* method abstract_compiler#ADebugTypeExpr#stmt for (self: ADebugTypeExpr, AbstractCompilerVisitor) */
4850 void abstract_compiler__ADebugTypeExpr__stmt(val* self, val* p0) {
4851 val* var_v /* var v: AbstractCompilerVisitor */;
4852 var_v = p0;
4853 RET_LABEL:;
4854 }
4855 /* method abstract_compiler#ADebugTypeExpr#stmt for (self: Object, AbstractCompilerVisitor) */
4856 void VIRTUAL_abstract_compiler__ADebugTypeExpr__stmt(val* self, val* p0) {
4857 abstract_compiler__ADebugTypeExpr__stmt(self, p0);
4858 RET_LABEL:;
4859 }
4860 /* method abstract_compiler#Array#- for (self: Array[nullable Object], Array[nullable Object]): Array[nullable Object] */
4861 val* abstract_compiler__Array___45d(val* self, val* p0) {
4862 val* var /* : Array[nullable Object] */;
4863 short int var1 /* : Bool */;
4864 int cltype;
4865 int idtype;
4866 const struct type* type_struct;
4867 val* var_o /* var o: Array[nullable Object] */;
4868 val* var2 /* : Array[nullable Object] */;
4869 val* var_res /* var res: Array[nullable Object] */;
4870 val* var3 /* : Iterator[nullable Object] */;
4871 short int var4 /* : Bool */;
4872 val* var5 /* : nullable Object */;
4873 val* var_e /* var e: nullable Object */;
4874 short int var6 /* : Bool */;
4875 short int var7 /* : Bool */;
4876 /* Covariant cast for argument 0 (o) <p0:Array[nullable Object]> isa Array[Array#0] */
4877 /* <p0:Array[nullable Object]> isa Array[Array#0] */
4878 type_struct = self->type->resolution_table->types[COLOR_array__Arrayarray__Array_FT0];
4879 cltype = type_struct->color;
4880 idtype = type_struct->id;
4881 if(cltype >= p0->type->table_size) {
4882 var1 = 0;
4883 } else {
4884 var1 = p0->type->type_table[cltype] == idtype;
4885 }
4886 if (!var1) {
4887 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 2357);
4888 exit(1);
4889 }
4890 var_o = p0;
4891 var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayarray__Array_FT0]);
4892 ((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[nullable Object]>*/;
4893 CHECK_NEW_array__Array(var2);
4894 var_res = var2;
4895 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Array[nullable Object]>*/;
4896 for(;;) {
4897 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4898 if(!var4) break;
4899 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4900 var_e = var5;
4901 var6 = ((short int (*)(val*, val*))(var_o->class->vft[COLOR_abstract_collection__Collection__has]))(var_o, var_e) /* has on <var_o:Array[nullable Object]>*/;
4902 var7 = !var6;
4903 if (var7){
4904 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_e) /* add on <var_res:Array[nullable Object]>*/;
4905 } else {
4906 }
4907 CONTINUE_label: (void)0;
4908 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4909 }
4910 BREAK_label: (void)0;
4911 var = var_res;
4912 goto RET_LABEL;
4913 RET_LABEL:;
4914 return var;
4915 }
4916 /* method abstract_compiler#Array#- for (self: Object, Array[nullable Object]): Array[nullable Object] */
4917 val* VIRTUAL_abstract_compiler__Array___45d(val* self, val* p0) {
4918 val* var /* : Array[nullable Object] */;
4919 val* var1 /* : Array[nullable Object] */;
4920 var1 = abstract_compiler__Array___45d(self, p0);
4921 var = var1;
4922 RET_LABEL:;
4923 return var;
4924 }
4925 /* method abstract_compiler#MModule#properties for (self: MModule, MClass): Set[MProperty] */
4926 val* abstract_compiler__MModule__properties(val* self, val* p0) {
4927 val* var /* : Set[MProperty] */;
4928 val* var_mclass /* var mclass: MClass */;
4929 val* var1 /* : Map[MClass, Set[MProperty]] */;
4930 short int var2 /* : Bool */;
4931 short int var3 /* : Bool */;
4932 val* var4 /* : HashSet[MProperty] */;
4933 val* var_properties /* var properties: HashSet[MProperty] */;
4934 val* var5 /* : Array[MClass] */;
4935 val* var_parents /* var parents: Array[MClass] */;
4936 val* var6 /* : POSet[MClass] */;
4937 short int var7 /* : Bool */;
4938 val* var8 /* : POSetElement[MClass] */;
4939 val* var9 /* : Collection[Object] */;
4940 val* var10 /* : Iterator[nullable Object] */;
4941 short int var11 /* : Bool */;
4942 val* var12 /* : nullable Object */;
4943 val* var_parent /* var parent: MClass */;
4944 val* var13 /* : Set[MProperty] */;
4945 val* var14 /* : Array[MClassDef] */;
4946 val* var15 /* : Iterator[nullable Object] */;
4947 short int var16 /* : Bool */;
4948 val* var17 /* : nullable Object */;
4949 val* var_mclassdef /* var mclassdef: MClassDef */;
4950 val* var18 /* : Array[MProperty] */;
4951 val* var19 /* : Iterator[nullable Object] */;
4952 short int var20 /* : Bool */;
4953 val* var21 /* : nullable Object */;
4954 val* var_mprop /* var mprop: MProperty */;
4955 val* var24 /* : Map[MClass, Set[MProperty]] */;
4956 val* var25 /* : Map[MClass, Set[MProperty]] */;
4957 val* var26 /* : nullable Object */;
4958 var_mclass = p0;
4959 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MModule__properties_cache]))(self) /* properties_cache on <self:MModule>*/;
4960 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_mclass) /* has_key on <var1:Map[MClass, Set[MProperty]]>*/;
4961 var3 = !var2;
4962 if (var3){
4963 var4 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MProperty);
4964 ((void (*)(val*))(var4->class->vft[COLOR_hash_collection__HashSet__init]))(var4) /* init on <var4:HashSet[MProperty]>*/;
4965 CHECK_NEW_hash_collection__HashSet(var4);
4966 var_properties = var4;
4967 var5 = NEW_array__Array(&type_array__Arraymodel__MClass);
4968 ((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[MClass]>*/;
4969 CHECK_NEW_array__Array(var5);
4970 var_parents = var5;
4971 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(self) /* flatten_mclass_hierarchy on <self:MModule>*/;
4972 var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__Collection__has]))(var6, var_mclass) /* has on <var6:POSet[MClass]>*/;
4973 if (var7){
4974 var8 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, self) /* in_hierarchy on <var_mclass:MClass>*/;
4975 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var8) /* direct_greaters on <var8:POSetElement[MClass]>*/;
4976 ((void (*)(val*, val*))(var_parents->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_parents, var9) /* add_all on <var_parents:Array[MClass]>*/;
4977 } else {
4978 }
4979 var10 = ((val* (*)(val*))(var_parents->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_parents) /* iterator on <var_parents:Array[MClass]>*/;
4980 for(;;) {
4981 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
4982 if(!var11) break;
4983 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
4984 var_parent = var12;
4985 var13 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MModule__properties]))(self, var_parent) /* properties on <self:MModule>*/;
4986 ((void (*)(val*, val*))(var_properties->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_properties, var13) /* add_all on <var_properties:HashSet[MProperty]>*/;
4987 CONTINUE_label: (void)0;
4988 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
4989 }
4990 BREAK_label: (void)0;
4991 var14 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclassdefs]))(var_mclass) /* mclassdefs on <var_mclass:MClass>*/;
4992 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Collection__iterator]))(var14) /* iterator on <var14:Array[MClassDef]>*/;
4993 for(;;) {
4994 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
4995 if(!var16) break;
4996 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
4997 var_mclassdef = var17;
4998 var18 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__intro_mproperties]))(var_mclassdef) /* intro_mproperties on <var_mclassdef:MClassDef>*/;
4999 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[MProperty]>*/;
5000 for(;;) {
5001 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
5002 if(!var20) break;
5003 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
5004 var_mprop = var21;
5005 ((void (*)(val*, val*))(var_properties->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_properties, var_mprop) /* add on <var_properties:HashSet[MProperty]>*/;
5006 CONTINUE_label22: (void)0;
5007 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
5008 }
5009 BREAK_label22: (void)0;
5010 CONTINUE_label23: (void)0;
5011 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
5012 }
5013 BREAK_label23: (void)0;
5014 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MModule__properties_cache]))(self) /* properties_cache on <self:MModule>*/;
5015 ((void (*)(val*, val*, val*))(var24->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var24, var_mclass, var_properties) /* []= on <var24:Map[MClass, Set[MProperty]]>*/;
5016 } else {
5017 }
5018 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MModule__properties_cache]))(self) /* properties_cache on <self:MModule>*/;
5019 var26 = ((val* (*)(val*, val*))(var25->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var25, var_mclass) /* [] on <var25:Map[MClass, Set[MProperty]]>*/;
5020 var = var26;
5021 goto RET_LABEL;
5022 RET_LABEL:;
5023 return var;
5024 }
5025 /* method abstract_compiler#MModule#properties for (self: Object, MClass): Set[MProperty] */
5026 val* VIRTUAL_abstract_compiler__MModule__properties(val* self, val* p0) {
5027 val* var /* : Set[MProperty] */;
5028 val* var1 /* : Set[MProperty] */;
5029 var1 = abstract_compiler__MModule__properties(self, p0);
5030 var = var1;
5031 RET_LABEL:;
5032 return var;
5033 }
5034 /* method abstract_compiler#MModule#properties_cache for (self: MModule): Map[MClass, Set[MProperty]] */
5035 val* abstract_compiler__MModule__properties_cache(val* self) {
5036 val* var /* : Map[MClass, Set[MProperty]] */;
5037 val* var1 /* : Map[MClass, Set[MProperty]] */;
5038 var1 = self->attrs[COLOR_abstract_compiler__MModule___64dproperties_cache].val; /* @properties_cache on <self:MModule> */
5039 if (var1 == NULL) {
5040 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @properties_cache", "src/abstract_compiler.nit", 2386);
5041 exit(1);
5042 }
5043 var = var1;
5044 RET_LABEL:;
5045 return var;
5046 }
5047 /* method abstract_compiler#MModule#properties_cache for (self: Object): Map[MClass, Set[MProperty]] */
5048 val* VIRTUAL_abstract_compiler__MModule__properties_cache(val* self) {
5049 val* var /* : Map[MClass, Set[MProperty]] */;
5050 val* var1 /* : Map[MClass, Set[MProperty]] */;
5051 var1 = abstract_compiler__MModule__properties_cache(self);
5052 var = var1;
5053 RET_LABEL:;
5054 return var;
5055 }
5056 /* method abstract_compiler#MModule#properties_cache= for (self: MModule, Map[MClass, Set[MProperty]]) */
5057 void abstract_compiler__MModule__properties_cache_61d(val* self, val* p0) {
5058 self->attrs[COLOR_abstract_compiler__MModule___64dproperties_cache].val = p0; /* @properties_cache on <self:MModule> */
5059 RET_LABEL:;
5060 }
5061 /* method abstract_compiler#MModule#properties_cache= for (self: Object, Map[MClass, Set[MProperty]]) */
5062 void VIRTUAL_abstract_compiler__MModule__properties_cache_61d(val* self, val* p0) {
5063 abstract_compiler__MModule__properties_cache_61d(self, p0);
5064 RET_LABEL:;
5065 }