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