c_src: update with new intern methods
[nit.git] / c_src / abstract_compiler.sep.2.c
1 #include "abstract_compiler.sep.0.h"
2 /* method abstract_compiler#AbstractCompilerVisitor#names for (self: AbstractCompilerVisitor): HashSet[String] */
3 val* abstract_compiler__AbstractCompilerVisitor__names(val* self) {
4 val* var /* : HashSet[String] */;
5 val* var1 /* : HashSet[String] */;
6 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dnames].val; /* @names on <self:AbstractCompilerVisitor> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @names");
9 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 943);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method abstract_compiler#AbstractCompilerVisitor#names for (self: Object): HashSet[String] */
17 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__names(val* self) {
18 val* var /* : HashSet[String] */;
19 val* var1 /* : HashSet[String] */;
20 var1 = abstract_compiler__AbstractCompilerVisitor__names(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method abstract_compiler#AbstractCompilerVisitor#names= for (self: AbstractCompilerVisitor, HashSet[String]) */
26 void abstract_compiler__AbstractCompilerVisitor__names_61d(val* self, val* p0) {
27 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dnames].val = p0; /* @names on <self:AbstractCompilerVisitor> */
28 RET_LABEL:;
29 }
30 /* method abstract_compiler#AbstractCompilerVisitor#names= for (self: Object, HashSet[String]) */
31 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__names_61d(val* self, val* p0) {
32 abstract_compiler__AbstractCompilerVisitor__names_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method abstract_compiler#AbstractCompilerVisitor#last for (self: AbstractCompilerVisitor): Int */
36 long abstract_compiler__AbstractCompilerVisitor__last(val* self) {
37 long var /* : Int */;
38 long var1 /* : Int */;
39 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dlast].l; /* @last on <self:AbstractCompilerVisitor> */
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method abstract_compiler#AbstractCompilerVisitor#last for (self: Object): Int */
45 long VIRTUAL_abstract_compiler__AbstractCompilerVisitor__last(val* self) {
46 long var /* : Int */;
47 long var1 /* : Int */;
48 var1 = abstract_compiler__AbstractCompilerVisitor__last(self);
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method abstract_compiler#AbstractCompilerVisitor#last= for (self: AbstractCompilerVisitor, Int) */
54 void abstract_compiler__AbstractCompilerVisitor__last_61d(val* self, long p0) {
55 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dlast].l = p0; /* @last on <self:AbstractCompilerVisitor> */
56 RET_LABEL:;
57 }
58 /* method abstract_compiler#AbstractCompilerVisitor#last= for (self: Object, Int) */
59 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__last_61d(val* self, long p0) {
60 abstract_compiler__AbstractCompilerVisitor__last_61d(self, p0);
61 RET_LABEL:;
62 }
63 /* method abstract_compiler#AbstractCompilerVisitor#get_name for (self: AbstractCompilerVisitor, String): String */
64 val* abstract_compiler__AbstractCompilerVisitor__get_name(val* self, val* p0) {
65 val* var /* : String */;
66 val* var_s /* var s: String */;
67 val* var1 /* : HashSet[String] */;
68 short int var2 /* : Bool */;
69 short int var3 /* : Bool */;
70 val* var4 /* : HashSet[String] */;
71 long var5 /* : Int */;
72 long var6 /* : Int */;
73 long var7 /* : Int */;
74 long var9 /* : Int */;
75 long var_i /* var i: Int */;
76 val* var10 /* : String */;
77 val* var11 /* : String */;
78 val* var_s2 /* var s2: String */;
79 val* var12 /* : HashSet[String] */;
80 short int var13 /* : Bool */;
81 short int var14 /* : Bool */;
82 val* var15 /* : HashSet[String] */;
83 long var16 /* : Int */;
84 long var17 /* : Int */;
85 long var19 /* : Int */;
86 var_s = p0;
87 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
88 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var_s) /* has on <var1:HashSet[String]>*/;
89 var3 = !var2;
90 if (var3){
91 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
92 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_s) /* add on <var4:HashSet[String]>*/;
93 var = var_s;
94 goto RET_LABEL;
95 } else {
96 }
97 var5 = ((long (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__last]))(self) /* last on <self:AbstractCompilerVisitor>*/;
98 var6 = 1;
99 { /* Inline kernel#Int#+ (var5,var6) */
100 var9 = var5 + var6;
101 var7 = var9;
102 goto RET_LABEL8;
103 RET_LABEL8:(void)0;
104 }
105 var_i = var7;
106 for(;;) {
107 var10 = string__Int__to_s(var_i);
108 var11 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__String___43d]))(var_s, var10) /* + on <var_s:String>*/;
109 var_s2 = var11;
110 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
111 var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Collection__has]))(var12, var_s2) /* has on <var12:HashSet[String]>*/;
112 var14 = !var13;
113 if (var14){
114 ((void (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__last_61d]))(self, var_i) /* last= on <self:AbstractCompilerVisitor>*/;
115 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
116 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var15, var_s2) /* add on <var15:HashSet[String]>*/;
117 var = var_s2;
118 goto RET_LABEL;
119 } else {
120 }
121 var16 = 1;
122 { /* Inline kernel#Int#+ (var_i,var16) */
123 var19 = var_i + var16;
124 var17 = var19;
125 goto RET_LABEL18;
126 RET_LABEL18:(void)0;
127 }
128 var_i = var17;
129 CONTINUE_label: (void)0;
130 }
131 BREAK_label: (void)0;
132 RET_LABEL:;
133 return var;
134 }
135 /* method abstract_compiler#AbstractCompilerVisitor#get_name for (self: Object, String): String */
136 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_name(val* self, val* p0) {
137 val* var /* : String */;
138 val* var1 /* : String */;
139 var1 = abstract_compiler__AbstractCompilerVisitor__get_name(self, p0);
140 var = var1;
141 RET_LABEL:;
142 return var;
143 }
144 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_name for (self: AbstractCompilerVisitor, nullable EscapeMark): String */
145 val* abstract_compiler__AbstractCompilerVisitor__escapemark_name(val* self, val* p0) {
146 val* var /* : String */;
147 val* var_e /* var e: nullable EscapeMark */;
148 val* var1 /* : null */;
149 short int var2 /* : Bool */;
150 val* var3 /* : HashMap[EscapeMark, String] */;
151 short int var4 /* : Bool */;
152 val* var5 /* : HashMap[EscapeMark, String] */;
153 val* var6 /* : nullable Object */;
154 val* var7 /* : nullable String */;
155 val* var_name /* var name: nullable String */;
156 val* var8 /* : null */;
157 short int var9 /* : Bool */;
158 static val* varonce;
159 val* var10 /* : String */;
160 char* var11 /* : NativeString */;
161 long var12 /* : Int */;
162 val* var13 /* : String */;
163 val* var14 /* : String */;
164 val* var15 /* : HashMap[EscapeMark, String] */;
165 var_e = p0;
166 var1 = NULL;
167 if (var_e == NULL) {
168 var2 = 0; /* is null */
169 } else {
170 var2 = 1; /* arg is null and recv is not */
171 }
172 if (!var2) {
173 fprintf(stderr, "Runtime error: %s", "Assert failed");
174 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 968);
175 show_backtrace(1);
176 }
177 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
178 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var3, var_e) /* has_key on <var3:HashMap[EscapeMark, String]>*/;
179 if (var4){
180 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
181 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on <var5:HashMap[EscapeMark, String]>*/;
182 var = var6;
183 goto RET_LABEL;
184 } else {
185 }
186 var7 = ((val* (*)(val*))(var_e->class->vft[COLOR_scope__EscapeMark__name]))(var_e) /* name on <var_e:nullable EscapeMark(EscapeMark)>*/;
187 var_name = var7;
188 var8 = NULL;
189 if (var_name == NULL) {
190 var9 = 1; /* is null */
191 } else {
192 var9 = 0; /* arg is null but recv is not */
193 }
194 if (var9){
195 if (varonce) {
196 var10 = varonce;
197 } else {
198 var11 = "label";
199 var12 = 5;
200 var13 = string__NativeString__to_s_with_length(var11, var12);
201 var10 = var13;
202 varonce = var10;
203 }
204 var_name = var10;
205 } else {
206 }
207 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var_name) /* get_name on <self:AbstractCompilerVisitor>*/;
208 var_name = var14;
209 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
210 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var15, var_e, var_name) /* []= on <var15:HashMap[EscapeMark, String]>*/;
211 var = var_name;
212 goto RET_LABEL;
213 RET_LABEL:;
214 return var;
215 }
216 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_name for (self: Object, nullable EscapeMark): String */
217 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_name(val* self, val* p0) {
218 val* var /* : String */;
219 val* var1 /* : String */;
220 var1 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(self, p0);
221 var = var1;
222 RET_LABEL:;
223 return var;
224 }
225 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names for (self: AbstractCompilerVisitor): HashMap[EscapeMark, String] */
226 val* abstract_compiler__AbstractCompilerVisitor__escapemark_names(val* self) {
227 val* var /* : HashMap[EscapeMark, String] */;
228 val* var1 /* : HashMap[EscapeMark, String] */;
229 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64descapemark_names].val; /* @escapemark_names on <self:AbstractCompilerVisitor> */
230 if (var1 == NULL) {
231 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @escapemark_names");
232 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 977);
233 show_backtrace(1);
234 }
235 var = var1;
236 RET_LABEL:;
237 return var;
238 }
239 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names for (self: Object): HashMap[EscapeMark, String] */
240 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_names(val* self) {
241 val* var /* : HashMap[EscapeMark, String] */;
242 val* var1 /* : HashMap[EscapeMark, String] */;
243 var1 = abstract_compiler__AbstractCompilerVisitor__escapemark_names(self);
244 var = var1;
245 RET_LABEL:;
246 return var;
247 }
248 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names= for (self: AbstractCompilerVisitor, HashMap[EscapeMark, String]) */
249 void abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(val* self, val* p0) {
250 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64descapemark_names].val = p0; /* @escapemark_names on <self:AbstractCompilerVisitor> */
251 RET_LABEL:;
252 }
253 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names= for (self: Object, HashMap[EscapeMark, String]) */
254 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(val* self, val* p0) {
255 abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(self, p0);
256 RET_LABEL:;
257 }
258 /* method abstract_compiler#AbstractCompilerVisitor#class_name_string for (self: AbstractCompilerVisitor, RuntimeVariable): String */
259 val* abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
260 val* var /* : String */;
261 const char* var_class_name;
262 var_class_name = self == NULL ? "null" : self->type->name;
263 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "class_name_string", var_class_name);
264 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 979);
265 show_backtrace(1);
266 RET_LABEL:;
267 return var;
268 }
269 /* method abstract_compiler#AbstractCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
270 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
271 val* var /* : String */;
272 val* var1 /* : String */;
273 var1 = abstract_compiler__AbstractCompilerVisitor__class_name_string(self, p0);
274 var = var1;
275 RET_LABEL:;
276 return var;
277 }
278 /* method abstract_compiler#AbstractCompilerVisitor#variables for (self: AbstractCompilerVisitor): HashMap[Variable, RuntimeVariable] */
279 val* abstract_compiler__AbstractCompilerVisitor__variables(val* self) {
280 val* var /* : HashMap[Variable, RuntimeVariable] */;
281 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
282 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dvariables].val; /* @variables on <self:AbstractCompilerVisitor> */
283 if (var1 == NULL) {
284 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @variables");
285 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 985);
286 show_backtrace(1);
287 }
288 var = var1;
289 RET_LABEL:;
290 return var;
291 }
292 /* method abstract_compiler#AbstractCompilerVisitor#variables for (self: Object): HashMap[Variable, RuntimeVariable] */
293 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variables(val* self) {
294 val* var /* : HashMap[Variable, RuntimeVariable] */;
295 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
296 var1 = abstract_compiler__AbstractCompilerVisitor__variables(self);
297 var = var1;
298 RET_LABEL:;
299 return var;
300 }
301 /* method abstract_compiler#AbstractCompilerVisitor#variables= for (self: AbstractCompilerVisitor, HashMap[Variable, RuntimeVariable]) */
302 void abstract_compiler__AbstractCompilerVisitor__variables_61d(val* self, val* p0) {
303 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dvariables].val = p0; /* @variables on <self:AbstractCompilerVisitor> */
304 RET_LABEL:;
305 }
306 /* method abstract_compiler#AbstractCompilerVisitor#variables= for (self: Object, HashMap[Variable, RuntimeVariable]) */
307 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variables_61d(val* self, val* p0) {
308 abstract_compiler__AbstractCompilerVisitor__variables_61d(self, p0);
309 RET_LABEL:;
310 }
311 /* method abstract_compiler#AbstractCompilerVisitor#variable for (self: AbstractCompilerVisitor, Variable): RuntimeVariable */
312 val* abstract_compiler__AbstractCompilerVisitor__variable(val* self, val* p0) {
313 val* var /* : RuntimeVariable */;
314 val* var_variable /* var variable: Variable */;
315 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
316 short int var2 /* : Bool */;
317 val* var3 /* : HashMap[Variable, RuntimeVariable] */;
318 val* var4 /* : nullable Object */;
319 static val* varonce;
320 val* var5 /* : String */;
321 char* var6 /* : NativeString */;
322 long var7 /* : Int */;
323 val* var8 /* : String */;
324 val* var9 /* : String */;
325 val* var10 /* : Array[Object] */;
326 long var11 /* : Int */;
327 val* var12 /* : NativeArray[Object] */;
328 val* var13 /* : String */;
329 val* var14 /* : String */;
330 val* var_name /* var name: String */;
331 val* var15 /* : nullable MType */;
332 val* var_mtype /* var mtype: MType */;
333 val* var16 /* : MType */;
334 val* var17 /* : RuntimeVariable */;
335 val* var_res /* var res: RuntimeVariable */;
336 val* var18 /* : String */;
337 static val* varonce19;
338 val* var20 /* : String */;
339 char* var21 /* : NativeString */;
340 long var22 /* : Int */;
341 val* var23 /* : String */;
342 static val* varonce24;
343 val* var25 /* : String */;
344 char* var26 /* : NativeString */;
345 long var27 /* : Int */;
346 val* var28 /* : String */;
347 static val* varonce29;
348 val* var30 /* : String */;
349 char* var31 /* : NativeString */;
350 long var32 /* : Int */;
351 val* var33 /* : String */;
352 static val* varonce34;
353 val* var35 /* : String */;
354 char* var36 /* : NativeString */;
355 long var37 /* : Int */;
356 val* var38 /* : String */;
357 val* var39 /* : Array[Object] */;
358 long var40 /* : Int */;
359 val* var41 /* : NativeArray[Object] */;
360 val* var42 /* : String */;
361 val* var43 /* : HashMap[Variable, RuntimeVariable] */;
362 var_variable = p0;
363 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
364 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_variable) /* has_key on <var1:HashMap[Variable, RuntimeVariable]>*/;
365 if (var2){
366 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
367 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, RuntimeVariable]>*/;
368 var = var4;
369 goto RET_LABEL;
370 } else {
371 if (varonce) {
372 var5 = varonce;
373 } else {
374 var6 = "var_";
375 var7 = 4;
376 var8 = string__NativeString__to_s_with_length(var6, var7);
377 var5 = var8;
378 varonce = var5;
379 }
380 var9 = ((val* (*)(val*))(var_variable->class->vft[COLOR_scope__Variable__name]))(var_variable) /* name on <var_variable:Variable>*/;
381 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
382 { /* var10 = array_instance Array[Object] */
383 var11 = 2;
384 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
385 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var5;
386 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var9;
387 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
388 }
389 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
390 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var13) /* get_name on <self:AbstractCompilerVisitor>*/;
391 var_name = var14;
392 var15 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
393 if (var15 == NULL) {
394 fprintf(stderr, "Runtime error: %s", "Cast failed");
395 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 994);
396 show_backtrace(1);
397 }
398 var_mtype = var15;
399 var16 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
400 var_mtype = var16;
401 var17 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
402 ((void (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var17, var_name, var_mtype, var_mtype) /* init on <var17:RuntimeVariable>*/;
403 var_res = var17;
404 var18 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
405 if (varonce19) {
406 var20 = varonce19;
407 } else {
408 var21 = " ";
409 var22 = 1;
410 var23 = string__NativeString__to_s_with_length(var21, var22);
411 var20 = var23;
412 varonce19 = var20;
413 }
414 if (varonce24) {
415 var25 = varonce24;
416 } else {
417 var26 = " /* var ";
418 var27 = 8;
419 var28 = string__NativeString__to_s_with_length(var26, var27);
420 var25 = var28;
421 varonce24 = var25;
422 }
423 if (varonce29) {
424 var30 = varonce29;
425 } else {
426 var31 = ": ";
427 var32 = 2;
428 var33 = string__NativeString__to_s_with_length(var31, var32);
429 var30 = var33;
430 varonce29 = var30;
431 }
432 if (varonce34) {
433 var35 = varonce34;
434 } else {
435 var36 = " */;";
436 var37 = 4;
437 var38 = string__NativeString__to_s_with_length(var36, var37);
438 var35 = var38;
439 varonce34 = var35;
440 }
441 var39 = NEW_array__Array(&type_array__Arraykernel__Object);
442 { /* var39 = array_instance Array[Object] */
443 var40 = 8;
444 var41 = NEW_array__NativeArray(var40, &type_array__NativeArraykernel__Object);
445 ((struct instance_array__NativeArray*)var41)->values[0] = (val*) var18;
446 ((struct instance_array__NativeArray*)var41)->values[1] = (val*) var20;
447 ((struct instance_array__NativeArray*)var41)->values[2] = (val*) var_name;
448 ((struct instance_array__NativeArray*)var41)->values[3] = (val*) var25;
449 ((struct instance_array__NativeArray*)var41)->values[4] = (val*) var_variable;
450 ((struct instance_array__NativeArray*)var41)->values[5] = (val*) var30;
451 ((struct instance_array__NativeArray*)var41)->values[6] = (val*) var_mtype;
452 ((struct instance_array__NativeArray*)var41)->values[7] = (val*) var35;
453 ((void (*)(val*, val*, long))(var39->class->vft[COLOR_array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
454 }
455 var42 = ((val* (*)(val*))(var39->class->vft[COLOR_string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
456 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var42) /* add_decl on <self:AbstractCompilerVisitor>*/;
457 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
458 ((void (*)(val*, val*, val*))(var43->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var43, var_variable, var_res) /* []= on <var43:HashMap[Variable, RuntimeVariable]>*/;
459 var = var_res;
460 goto RET_LABEL;
461 }
462 RET_LABEL:;
463 return var;
464 }
465 /* method abstract_compiler#AbstractCompilerVisitor#variable for (self: Object, Variable): RuntimeVariable */
466 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variable(val* self, val* p0) {
467 val* var /* : RuntimeVariable */;
468 val* var1 /* : RuntimeVariable */;
469 var1 = abstract_compiler__AbstractCompilerVisitor__variable(self, p0);
470 var = var1;
471 RET_LABEL:;
472 return var;
473 }
474 /* method abstract_compiler#AbstractCompilerVisitor#new_var for (self: AbstractCompilerVisitor, MType): RuntimeVariable */
475 val* abstract_compiler__AbstractCompilerVisitor__new_var(val* self, val* p0) {
476 val* var /* : RuntimeVariable */;
477 val* var_mtype /* var mtype: MType */;
478 val* var1 /* : MType */;
479 static val* varonce;
480 val* var2 /* : String */;
481 char* var3 /* : NativeString */;
482 long var4 /* : Int */;
483 val* var5 /* : String */;
484 val* var6 /* : String */;
485 val* var_name /* var name: String */;
486 val* var7 /* : RuntimeVariable */;
487 val* var_res /* var res: RuntimeVariable */;
488 val* var8 /* : String */;
489 static val* varonce9;
490 val* var10 /* : String */;
491 char* var11 /* : NativeString */;
492 long var12 /* : Int */;
493 val* var13 /* : String */;
494 static val* varonce14;
495 val* var15 /* : String */;
496 char* var16 /* : NativeString */;
497 long var17 /* : Int */;
498 val* var18 /* : String */;
499 static val* varonce19;
500 val* var20 /* : String */;
501 char* var21 /* : NativeString */;
502 long var22 /* : Int */;
503 val* var23 /* : String */;
504 val* var24 /* : Array[Object] */;
505 long var25 /* : Int */;
506 val* var26 /* : NativeArray[Object] */;
507 val* var27 /* : String */;
508 var_mtype = p0;
509 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
510 var_mtype = var1;
511 if (varonce) {
512 var2 = varonce;
513 } else {
514 var3 = "var";
515 var4 = 3;
516 var5 = string__NativeString__to_s_with_length(var3, var4);
517 var2 = var5;
518 varonce = var2;
519 }
520 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var2) /* get_name on <self:AbstractCompilerVisitor>*/;
521 var_name = var6;
522 var7 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
523 ((void (*)(val*, val*, val*, val*))(var7->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var7, var_name, var_mtype, var_mtype) /* init on <var7:RuntimeVariable>*/;
524 var_res = var7;
525 var8 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
526 if (varonce9) {
527 var10 = varonce9;
528 } else {
529 var11 = " ";
530 var12 = 1;
531 var13 = string__NativeString__to_s_with_length(var11, var12);
532 var10 = var13;
533 varonce9 = var10;
534 }
535 if (varonce14) {
536 var15 = varonce14;
537 } else {
538 var16 = " /* : ";
539 var17 = 6;
540 var18 = string__NativeString__to_s_with_length(var16, var17);
541 var15 = var18;
542 varonce14 = var15;
543 }
544 if (varonce19) {
545 var20 = varonce19;
546 } else {
547 var21 = " */;";
548 var22 = 4;
549 var23 = string__NativeString__to_s_with_length(var21, var22);
550 var20 = var23;
551 varonce19 = var20;
552 }
553 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
554 { /* var24 = array_instance Array[Object] */
555 var25 = 6;
556 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
557 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var8;
558 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var10;
559 ((struct instance_array__NativeArray*)var26)->values[2] = (val*) var_name;
560 ((struct instance_array__NativeArray*)var26)->values[3] = (val*) var15;
561 ((struct instance_array__NativeArray*)var26)->values[4] = (val*) var_mtype;
562 ((struct instance_array__NativeArray*)var26)->values[5] = (val*) var20;
563 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
564 }
565 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
566 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var27) /* add_decl on <self:AbstractCompilerVisitor>*/;
567 var = var_res;
568 goto RET_LABEL;
569 RET_LABEL:;
570 return var;
571 }
572 /* method abstract_compiler#AbstractCompilerVisitor#new_var for (self: Object, MType): RuntimeVariable */
573 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_var(val* self, val* p0) {
574 val* var /* : RuntimeVariable */;
575 val* var1 /* : RuntimeVariable */;
576 var1 = abstract_compiler__AbstractCompilerVisitor__new_var(self, p0);
577 var = var1;
578 RET_LABEL:;
579 return var;
580 }
581 /* method abstract_compiler#AbstractCompilerVisitor#new_named_var for (self: AbstractCompilerVisitor, MType, String): RuntimeVariable */
582 val* abstract_compiler__AbstractCompilerVisitor__new_named_var(val* self, val* p0, val* p1) {
583 val* var /* : RuntimeVariable */;
584 val* var_mtype /* var mtype: MType */;
585 val* var_name /* var name: String */;
586 val* var1 /* : MType */;
587 val* var2 /* : RuntimeVariable */;
588 val* var_res /* var res: RuntimeVariable */;
589 val* var3 /* : String */;
590 static val* varonce;
591 val* var4 /* : String */;
592 char* var5 /* : NativeString */;
593 long var6 /* : Int */;
594 val* var7 /* : String */;
595 static val* varonce8;
596 val* var9 /* : String */;
597 char* var10 /* : NativeString */;
598 long var11 /* : Int */;
599 val* var12 /* : String */;
600 static val* varonce13;
601 val* var14 /* : String */;
602 char* var15 /* : NativeString */;
603 long var16 /* : Int */;
604 val* var17 /* : String */;
605 val* var18 /* : Array[Object] */;
606 long var19 /* : Int */;
607 val* var20 /* : NativeArray[Object] */;
608 val* var21 /* : String */;
609 var_mtype = p0;
610 var_name = p1;
611 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
612 var_mtype = var1;
613 var2 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
614 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var2, var_name, var_mtype, var_mtype) /* init on <var2:RuntimeVariable>*/;
615 var_res = var2;
616 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
617 if (varonce) {
618 var4 = varonce;
619 } else {
620 var5 = " ";
621 var6 = 1;
622 var7 = string__NativeString__to_s_with_length(var5, var6);
623 var4 = var7;
624 varonce = var4;
625 }
626 if (varonce8) {
627 var9 = varonce8;
628 } else {
629 var10 = " /* : ";
630 var11 = 6;
631 var12 = string__NativeString__to_s_with_length(var10, var11);
632 var9 = var12;
633 varonce8 = var9;
634 }
635 if (varonce13) {
636 var14 = varonce13;
637 } else {
638 var15 = " */;";
639 var16 = 4;
640 var17 = string__NativeString__to_s_with_length(var15, var16);
641 var14 = var17;
642 varonce13 = var14;
643 }
644 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
645 { /* var18 = array_instance Array[Object] */
646 var19 = 6;
647 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
648 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var3;
649 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var4;
650 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var_name;
651 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var9;
652 ((struct instance_array__NativeArray*)var20)->values[4] = (val*) var_mtype;
653 ((struct instance_array__NativeArray*)var20)->values[5] = (val*) var14;
654 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
655 }
656 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
657 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var21) /* add_decl on <self:AbstractCompilerVisitor>*/;
658 var = var_res;
659 goto RET_LABEL;
660 RET_LABEL:;
661 return var;
662 }
663 /* method abstract_compiler#AbstractCompilerVisitor#new_named_var for (self: Object, MType, String): RuntimeVariable */
664 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_named_var(val* self, val* p0, val* p1) {
665 val* var /* : RuntimeVariable */;
666 val* var1 /* : RuntimeVariable */;
667 var1 = abstract_compiler__AbstractCompilerVisitor__new_named_var(self, p0, p1);
668 var = var1;
669 RET_LABEL:;
670 return var;
671 }
672 /* method abstract_compiler#AbstractCompilerVisitor#assign for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable) */
673 void abstract_compiler__AbstractCompilerVisitor__assign(val* self, val* p0, val* p1) {
674 val* var_left /* var left: RuntimeVariable */;
675 val* var_right /* var right: RuntimeVariable */;
676 val* var /* : MType */;
677 val* var1 /* : RuntimeVariable */;
678 static val* varonce;
679 val* var2 /* : String */;
680 char* var3 /* : NativeString */;
681 long var4 /* : Int */;
682 val* var5 /* : String */;
683 static val* varonce6;
684 val* var7 /* : String */;
685 char* var8 /* : NativeString */;
686 long var9 /* : Int */;
687 val* var10 /* : String */;
688 val* var11 /* : Array[Object] */;
689 long var12 /* : Int */;
690 val* var13 /* : NativeArray[Object] */;
691 val* var14 /* : String */;
692 var_left = p0;
693 var_right = p1;
694 var = ((val* (*)(val*))(var_left->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_left) /* mtype on <var_left:RuntimeVariable>*/;
695 var1 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_right, var) /* autobox on <self:AbstractCompilerVisitor>*/;
696 var_right = var1;
697 if (varonce) {
698 var2 = varonce;
699 } else {
700 var3 = " = ";
701 var4 = 3;
702 var5 = string__NativeString__to_s_with_length(var3, var4);
703 var2 = var5;
704 varonce = var2;
705 }
706 if (varonce6) {
707 var7 = varonce6;
708 } else {
709 var8 = ";";
710 var9 = 1;
711 var10 = string__NativeString__to_s_with_length(var8, var9);
712 var7 = var10;
713 varonce6 = var7;
714 }
715 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
716 { /* var11 = array_instance Array[Object] */
717 var12 = 4;
718 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
719 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_left;
720 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var2;
721 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var_right;
722 ((struct instance_array__NativeArray*)var13)->values[3] = (val*) var7;
723 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
724 }
725 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
726 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var14) /* add on <self:AbstractCompilerVisitor>*/;
727 RET_LABEL:;
728 }
729 /* method abstract_compiler#AbstractCompilerVisitor#assign for (self: Object, RuntimeVariable, RuntimeVariable) */
730 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__assign(val* self, val* p0, val* p1) {
731 abstract_compiler__AbstractCompilerVisitor__assign(self, p0, p1);
732 RET_LABEL:;
733 }
734 /* method abstract_compiler#AbstractCompilerVisitor#init_instance for (self: AbstractCompilerVisitor, MClassType): RuntimeVariable */
735 val* abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
736 val* var /* : RuntimeVariable */;
737 const char* var_class_name;
738 var_class_name = self == NULL ? "null" : self->type->name;
739 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "init_instance", var_class_name);
740 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1032);
741 show_backtrace(1);
742 RET_LABEL:;
743 return var;
744 }
745 /* method abstract_compiler#AbstractCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
746 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
747 val* var /* : RuntimeVariable */;
748 val* var1 /* : RuntimeVariable */;
749 var1 = abstract_compiler__AbstractCompilerVisitor__init_instance(self, p0);
750 var = var1;
751 RET_LABEL:;
752 return var;
753 }
754 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: AbstractCompilerVisitor, Int): RuntimeVariable */
755 val* abstract_compiler__AbstractCompilerVisitor__int_instance(val* self, long p0) {
756 val* var /* : RuntimeVariable */;
757 long var_value /* var value: Int */;
758 static val* varonce;
759 val* var1 /* : String */;
760 char* var2 /* : NativeString */;
761 long var3 /* : Int */;
762 val* var4 /* : String */;
763 val* var5 /* : MClass */;
764 val* var6 /* : MClassType */;
765 val* var7 /* : RuntimeVariable */;
766 val* var_res /* var res: RuntimeVariable */;
767 static val* varonce8;
768 val* var9 /* : String */;
769 char* var10 /* : NativeString */;
770 long var11 /* : Int */;
771 val* var12 /* : String */;
772 static val* varonce13;
773 val* var14 /* : String */;
774 char* var15 /* : NativeString */;
775 long var16 /* : Int */;
776 val* var17 /* : String */;
777 val* var18 /* : Array[Object] */;
778 long var19 /* : Int */;
779 val* var20 /* : NativeArray[Object] */;
780 val* var21 /* : Object */;
781 val* var22 /* : String */;
782 var_value = p0;
783 if (varonce) {
784 var1 = varonce;
785 } else {
786 var2 = "Int";
787 var3 = 3;
788 var4 = string__NativeString__to_s_with_length(var2, var3);
789 var1 = var4;
790 varonce = var1;
791 }
792 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:AbstractCompilerVisitor>*/;
793 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClass__mclass_type]))(var5) /* mclass_type on <var5:MClass>*/;
794 var7 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var6) /* new_var on <self:AbstractCompilerVisitor>*/;
795 var_res = var7;
796 if (varonce8) {
797 var9 = varonce8;
798 } else {
799 var10 = " = ";
800 var11 = 3;
801 var12 = string__NativeString__to_s_with_length(var10, var11);
802 var9 = var12;
803 varonce8 = var9;
804 }
805 if (varonce13) {
806 var14 = varonce13;
807 } else {
808 var15 = ";";
809 var16 = 1;
810 var17 = string__NativeString__to_s_with_length(var15, var16);
811 var14 = var17;
812 varonce13 = var14;
813 }
814 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
815 { /* var18 = array_instance Array[Object] */
816 var19 = 4;
817 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
818 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var_res;
819 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var9;
820 var21 = BOX_kernel__Int(var_value); /* autobox from Int to Object */
821 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var21;
822 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var14;
823 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
824 }
825 var22 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
826 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var22) /* add on <self:AbstractCompilerVisitor>*/;
827 var = var_res;
828 goto RET_LABEL;
829 RET_LABEL:;
830 return var;
831 }
832 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: Object, Int): RuntimeVariable */
833 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__int_instance(val* self, long p0) {
834 val* var /* : RuntimeVariable */;
835 val* var1 /* : RuntimeVariable */;
836 var1 = abstract_compiler__AbstractCompilerVisitor__int_instance(self, p0);
837 var = var1;
838 RET_LABEL:;
839 return var;
840 }
841 /* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: AbstractCompilerVisitor, String): RuntimeVariable */
842 val* abstract_compiler__AbstractCompilerVisitor__string_instance(val* self, val* p0) {
843 val* var /* : RuntimeVariable */;
844 val* var_string /* var string: String */;
845 static val* varonce;
846 val* var1 /* : String */;
847 char* var2 /* : NativeString */;
848 long var3 /* : Int */;
849 val* var4 /* : String */;
850 val* var5 /* : MClass */;
851 val* var6 /* : MClassType */;
852 val* var_mtype /* var mtype: MClassType */;
853 static val* varonce7;
854 val* var8 /* : String */;
855 char* var9 /* : NativeString */;
856 long var10 /* : Int */;
857 val* var11 /* : String */;
858 val* var12 /* : String */;
859 val* var_name /* var name: String */;
860 static val* varonce13;
861 val* var14 /* : String */;
862 char* var15 /* : NativeString */;
863 long var16 /* : Int */;
864 val* var17 /* : String */;
865 val* var18 /* : String */;
866 static val* varonce19;
867 val* var20 /* : String */;
868 char* var21 /* : NativeString */;
869 long var22 /* : Int */;
870 val* var23 /* : String */;
871 static val* varonce24;
872 val* var25 /* : String */;
873 char* var26 /* : NativeString */;
874 long var27 /* : Int */;
875 val* var28 /* : String */;
876 val* var29 /* : Array[Object] */;
877 long var30 /* : Int */;
878 val* var31 /* : NativeArray[Object] */;
879 val* var32 /* : String */;
880 val* var33 /* : RuntimeVariable */;
881 val* var_res /* var res: RuntimeVariable */;
882 static val* varonce34;
883 val* var35 /* : String */;
884 char* var36 /* : NativeString */;
885 long var37 /* : Int */;
886 val* var38 /* : String */;
887 static val* varonce39;
888 val* var40 /* : String */;
889 char* var41 /* : NativeString */;
890 long var42 /* : Int */;
891 val* var43 /* : String */;
892 val* var44 /* : Array[Object] */;
893 long var45 /* : Int */;
894 val* var46 /* : NativeArray[Object] */;
895 val* var47 /* : String */;
896 static val* varonce48;
897 val* var49 /* : String */;
898 char* var50 /* : NativeString */;
899 long var51 /* : Int */;
900 val* var52 /* : String */;
901 static val* varonce53;
902 val* var54 /* : String */;
903 char* var55 /* : NativeString */;
904 long var56 /* : Int */;
905 val* var57 /* : String */;
906 val* var58 /* : Array[Object] */;
907 long var59 /* : Int */;
908 val* var60 /* : NativeArray[Object] */;
909 val* var61 /* : String */;
910 static val* varonce62;
911 val* var63 /* : String */;
912 char* var64 /* : NativeString */;
913 long var65 /* : Int */;
914 val* var66 /* : String */;
915 static val* varonce67;
916 val* var68 /* : String */;
917 char* var69 /* : NativeString */;
918 long var70 /* : Int */;
919 val* var71 /* : String */;
920 val* var72 /* : MClass */;
921 val* var73 /* : MClassType */;
922 val* var_native_mtype /* var native_mtype: MClassType */;
923 val* var74 /* : RuntimeVariable */;
924 val* var_nat /* var nat: RuntimeVariable */;
925 static val* varonce75;
926 val* var76 /* : String */;
927 char* var77 /* : NativeString */;
928 long var78 /* : Int */;
929 val* var79 /* : String */;
930 val* var80 /* : String */;
931 static val* varonce81;
932 val* var82 /* : String */;
933 char* var83 /* : NativeString */;
934 long var84 /* : Int */;
935 val* var85 /* : String */;
936 val* var86 /* : Array[Object] */;
937 long var87 /* : Int */;
938 val* var88 /* : NativeArray[Object] */;
939 val* var89 /* : String */;
940 long var90 /* : Int */;
941 val* var91 /* : RuntimeVariable */;
942 val* var_length /* var length: RuntimeVariable */;
943 static val* varonce92;
944 val* var93 /* : String */;
945 char* var94 /* : NativeString */;
946 long var95 /* : Int */;
947 val* var96 /* : String */;
948 static val* varonce97;
949 val* var98 /* : String */;
950 char* var99 /* : NativeString */;
951 long var100 /* : Int */;
952 val* var101 /* : String */;
953 val* var102 /* : MMethod */;
954 val* var103 /* : Array[RuntimeVariable] */;
955 long var104 /* : Int */;
956 val* var105 /* : NativeArray[RuntimeVariable] */;
957 val* var106 /* : nullable RuntimeVariable */;
958 static val* varonce107;
959 val* var108 /* : String */;
960 char* var109 /* : NativeString */;
961 long var110 /* : Int */;
962 val* var111 /* : String */;
963 val* var112 /* : Array[Object] */;
964 long var113 /* : Int */;
965 val* var114 /* : NativeArray[Object] */;
966 val* var115 /* : String */;
967 static val* varonce116;
968 val* var117 /* : String */;
969 char* var118 /* : NativeString */;
970 long var119 /* : Int */;
971 val* var120 /* : String */;
972 static val* varonce121;
973 val* var122 /* : String */;
974 char* var123 /* : NativeString */;
975 long var124 /* : Int */;
976 val* var125 /* : String */;
977 val* var126 /* : Array[Object] */;
978 long var127 /* : Int */;
979 val* var128 /* : NativeArray[Object] */;
980 val* var129 /* : String */;
981 static val* varonce130;
982 val* var131 /* : String */;
983 char* var132 /* : NativeString */;
984 long var133 /* : Int */;
985 val* var134 /* : String */;
986 var_string = p0;
987 if (varonce) {
988 var1 = varonce;
989 } else {
990 var2 = "String";
991 var3 = 6;
992 var4 = string__NativeString__to_s_with_length(var2, var3);
993 var1 = var4;
994 varonce = var1;
995 }
996 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:AbstractCompilerVisitor>*/;
997 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClass__mclass_type]))(var5) /* mclass_type on <var5:MClass>*/;
998 var_mtype = var6;
999 if (varonce7) {
1000 var8 = varonce7;
1001 } else {
1002 var9 = "varonce";
1003 var10 = 7;
1004 var11 = string__NativeString__to_s_with_length(var9, var10);
1005 var8 = var11;
1006 varonce7 = var8;
1007 }
1008 var12 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var8) /* get_name on <self:AbstractCompilerVisitor>*/;
1009 var_name = var12;
1010 if (varonce13) {
1011 var14 = varonce13;
1012 } else {
1013 var15 = "static ";
1014 var16 = 7;
1015 var17 = string__NativeString__to_s_with_length(var15, var16);
1016 var14 = var17;
1017 varonce13 = var14;
1018 }
1019 var18 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
1020 if (varonce19) {
1021 var20 = varonce19;
1022 } else {
1023 var21 = " ";
1024 var22 = 1;
1025 var23 = string__NativeString__to_s_with_length(var21, var22);
1026 var20 = var23;
1027 varonce19 = var20;
1028 }
1029 if (varonce24) {
1030 var25 = varonce24;
1031 } else {
1032 var26 = ";";
1033 var27 = 1;
1034 var28 = string__NativeString__to_s_with_length(var26, var27);
1035 var25 = var28;
1036 varonce24 = var25;
1037 }
1038 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
1039 { /* var29 = array_instance Array[Object] */
1040 var30 = 5;
1041 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
1042 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var14;
1043 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var18;
1044 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var20;
1045 ((struct instance_array__NativeArray*)var31)->values[3] = (val*) var_name;
1046 ((struct instance_array__NativeArray*)var31)->values[4] = (val*) var25;
1047 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
1048 }
1049 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
1050 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var32) /* add_decl on <self:AbstractCompilerVisitor>*/;
1051 var33 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:AbstractCompilerVisitor>*/;
1052 var_res = var33;
1053 if (varonce34) {
1054 var35 = varonce34;
1055 } else {
1056 var36 = "if (";
1057 var37 = 4;
1058 var38 = string__NativeString__to_s_with_length(var36, var37);
1059 var35 = var38;
1060 varonce34 = var35;
1061 }
1062 if (varonce39) {
1063 var40 = varonce39;
1064 } else {
1065 var41 = ") {";
1066 var42 = 3;
1067 var43 = string__NativeString__to_s_with_length(var41, var42);
1068 var40 = var43;
1069 varonce39 = var40;
1070 }
1071 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
1072 { /* var44 = array_instance Array[Object] */
1073 var45 = 3;
1074 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
1075 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var35;
1076 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_name;
1077 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
1078 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
1079 }
1080 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
1081 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var47) /* add on <self:AbstractCompilerVisitor>*/;
1082 if (varonce48) {
1083 var49 = varonce48;
1084 } else {
1085 var50 = " = ";
1086 var51 = 3;
1087 var52 = string__NativeString__to_s_with_length(var50, var51);
1088 var49 = var52;
1089 varonce48 = var49;
1090 }
1091 if (varonce53) {
1092 var54 = varonce53;
1093 } else {
1094 var55 = ";";
1095 var56 = 1;
1096 var57 = string__NativeString__to_s_with_length(var55, var56);
1097 var54 = var57;
1098 varonce53 = var54;
1099 }
1100 var58 = NEW_array__Array(&type_array__Arraykernel__Object);
1101 { /* var58 = array_instance Array[Object] */
1102 var59 = 4;
1103 var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
1104 ((struct instance_array__NativeArray*)var60)->values[0] = (val*) var_res;
1105 ((struct instance_array__NativeArray*)var60)->values[1] = (val*) var49;
1106 ((struct instance_array__NativeArray*)var60)->values[2] = (val*) var_name;
1107 ((struct instance_array__NativeArray*)var60)->values[3] = (val*) var54;
1108 ((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
1109 }
1110 var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
1111 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var61) /* add on <self:AbstractCompilerVisitor>*/;
1112 if (varonce62) {
1113 var63 = varonce62;
1114 } else {
1115 var64 = "} else {";
1116 var65 = 8;
1117 var66 = string__NativeString__to_s_with_length(var64, var65);
1118 var63 = var66;
1119 varonce62 = var63;
1120 }
1121 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var63) /* add on <self:AbstractCompilerVisitor>*/;
1122 if (varonce67) {
1123 var68 = varonce67;
1124 } else {
1125 var69 = "NativeString";
1126 var70 = 12;
1127 var71 = string__NativeString__to_s_with_length(var69, var70);
1128 var68 = var71;
1129 varonce67 = var68;
1130 }
1131 var72 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var68) /* get_class on <self:AbstractCompilerVisitor>*/;
1132 var73 = ((val* (*)(val*))(var72->class->vft[COLOR_model__MClass__mclass_type]))(var72) /* mclass_type on <var72:MClass>*/;
1133 var_native_mtype = var73;
1134 var74 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_native_mtype) /* new_var on <self:AbstractCompilerVisitor>*/;
1135 var_nat = var74;
1136 if (varonce75) {
1137 var76 = varonce75;
1138 } else {
1139 var77 = " = \"";
1140 var78 = 4;
1141 var79 = string__NativeString__to_s_with_length(var77, var78);
1142 var76 = var79;
1143 varonce75 = var76;
1144 }
1145 var80 = ((val* (*)(val*))(var_string->class->vft[COLOR_string__AbstractString__escape_to_c]))(var_string) /* escape_to_c on <var_string:String>*/;
1146 if (varonce81) {
1147 var82 = varonce81;
1148 } else {
1149 var83 = "\";";
1150 var84 = 2;
1151 var85 = string__NativeString__to_s_with_length(var83, var84);
1152 var82 = var85;
1153 varonce81 = var82;
1154 }
1155 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
1156 { /* var86 = array_instance Array[Object] */
1157 var87 = 4;
1158 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
1159 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var_nat;
1160 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var76;
1161 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var80;
1162 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var82;
1163 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
1164 }
1165 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
1166 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var89) /* add on <self:AbstractCompilerVisitor>*/;
1167 var90 = ((long (*)(val*))(var_string->class->vft[COLOR_abstract_collection__Collection__length]))(var_string) /* length on <var_string:String>*/;
1168 var91 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance]))(self, var90) /* int_instance on <self:AbstractCompilerVisitor>*/;
1169 var_length = var91;
1170 if (varonce92) {
1171 var93 = varonce92;
1172 } else {
1173 var94 = " = ";
1174 var95 = 3;
1175 var96 = string__NativeString__to_s_with_length(var94, var95);
1176 var93 = var96;
1177 varonce92 = var93;
1178 }
1179 if (varonce97) {
1180 var98 = varonce97;
1181 } else {
1182 var99 = "to_s_with_length";
1183 var100 = 16;
1184 var101 = string__NativeString__to_s_with_length(var99, var100);
1185 var98 = var101;
1186 varonce97 = var98;
1187 }
1188 var102 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(self, var98, var_native_mtype) /* get_property on <self:AbstractCompilerVisitor>*/;
1189 var103 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1190 { /* var103 = array_instance Array[RuntimeVariable] */
1191 var104 = 2;
1192 var105 = NEW_array__NativeArray(var104, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
1193 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var_nat;
1194 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var_length;
1195 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[RuntimeVariable]>*/;
1196 }
1197 var106 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var102, var103) /* send on <self:AbstractCompilerVisitor>*/;
1198 if (var106 == NULL) {
1199 fprintf(stderr, "Runtime error: %s", "Cast failed");
1200 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1057);
1201 show_backtrace(1);
1202 }
1203 if (varonce107) {
1204 var108 = varonce107;
1205 } else {
1206 var109 = ";";
1207 var110 = 1;
1208 var111 = string__NativeString__to_s_with_length(var109, var110);
1209 var108 = var111;
1210 varonce107 = var108;
1211 }
1212 var112 = NEW_array__Array(&type_array__Arraykernel__Object);
1213 { /* var112 = array_instance Array[Object] */
1214 var113 = 4;
1215 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraykernel__Object);
1216 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_res;
1217 ((struct instance_array__NativeArray*)var114)->values[1] = (val*) var93;
1218 ((struct instance_array__NativeArray*)var114)->values[2] = (val*) var106;
1219 ((struct instance_array__NativeArray*)var114)->values[3] = (val*) var108;
1220 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[Object]>*/;
1221 }
1222 var115 = ((val* (*)(val*))(var112->class->vft[COLOR_string__Object__to_s]))(var112) /* to_s on <var112:Array[Object]>*/;
1223 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var115) /* add on <self:AbstractCompilerVisitor>*/;
1224 if (varonce116) {
1225 var117 = varonce116;
1226 } else {
1227 var118 = " = ";
1228 var119 = 3;
1229 var120 = string__NativeString__to_s_with_length(var118, var119);
1230 var117 = var120;
1231 varonce116 = var117;
1232 }
1233 if (varonce121) {
1234 var122 = varonce121;
1235 } else {
1236 var123 = ";";
1237 var124 = 1;
1238 var125 = string__NativeString__to_s_with_length(var123, var124);
1239 var122 = var125;
1240 varonce121 = var122;
1241 }
1242 var126 = NEW_array__Array(&type_array__Arraykernel__Object);
1243 { /* var126 = array_instance Array[Object] */
1244 var127 = 4;
1245 var128 = NEW_array__NativeArray(var127, &type_array__NativeArraykernel__Object);
1246 ((struct instance_array__NativeArray*)var128)->values[0] = (val*) var_name;
1247 ((struct instance_array__NativeArray*)var128)->values[1] = (val*) var117;
1248 ((struct instance_array__NativeArray*)var128)->values[2] = (val*) var_res;
1249 ((struct instance_array__NativeArray*)var128)->values[3] = (val*) var122;
1250 ((void (*)(val*, val*, long))(var126->class->vft[COLOR_array__Array__with_native]))(var126, var128, var127) /* with_native on <var126:Array[Object]>*/;
1251 }
1252 var129 = ((val* (*)(val*))(var126->class->vft[COLOR_string__Object__to_s]))(var126) /* to_s on <var126:Array[Object]>*/;
1253 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var129) /* add on <self:AbstractCompilerVisitor>*/;
1254 if (varonce130) {
1255 var131 = varonce130;
1256 } else {
1257 var132 = "}";
1258 var133 = 1;
1259 var134 = string__NativeString__to_s_with_length(var132, var133);
1260 var131 = var134;
1261 varonce130 = var131;
1262 }
1263 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var131) /* add on <self:AbstractCompilerVisitor>*/;
1264 var = var_res;
1265 goto RET_LABEL;
1266 RET_LABEL:;
1267 return var;
1268 }
1269 /* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: Object, String): RuntimeVariable */
1270 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__string_instance(val* self, val* p0) {
1271 val* var /* : RuntimeVariable */;
1272 val* var1 /* : RuntimeVariable */;
1273 var1 = abstract_compiler__AbstractCompilerVisitor__string_instance(self, p0);
1274 var = var1;
1275 RET_LABEL:;
1276 return var;
1277 }
1278 /* method abstract_compiler#AbstractCompilerVisitor#array_instance for (self: AbstractCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
1279 val* abstract_compiler__AbstractCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
1280 val* var /* : RuntimeVariable */;
1281 const char* var_class_name;
1282 var_class_name = self == NULL ? "null" : self->type->name;
1283 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "array_instance", var_class_name);
1284 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1063);
1285 show_backtrace(1);
1286 RET_LABEL:;
1287 return var;
1288 }
1289 /* method abstract_compiler#AbstractCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
1290 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
1291 val* var /* : RuntimeVariable */;
1292 val* var1 /* : RuntimeVariable */;
1293 var1 = abstract_compiler__AbstractCompilerVisitor__array_instance(self, p0, p1);
1294 var = var1;
1295 RET_LABEL:;
1296 return var;
1297 }
1298 /* method abstract_compiler#AbstractCompilerVisitor#vararg_instance for (self: AbstractCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
1299 val* abstract_compiler__AbstractCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
1300 val* var /* : RuntimeVariable */;
1301 const char* var_class_name;
1302 var_class_name = self == NULL ? "null" : self->type->name;
1303 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "vararg_instance", var_class_name);
1304 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1066);
1305 show_backtrace(1);
1306 RET_LABEL:;
1307 return var;
1308 }
1309 /* method abstract_compiler#AbstractCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
1310 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
1311 val* var /* : RuntimeVariable */;
1312 val* var1 /* : RuntimeVariable */;
1313 var1 = abstract_compiler__AbstractCompilerVisitor__vararg_instance(self, p0, p1, p2, p3);
1314 var = var1;
1315 RET_LABEL:;
1316 return var;
1317 }
1318 /* method abstract_compiler#AbstractCompilerVisitor#add for (self: AbstractCompilerVisitor, String) */
1319 void abstract_compiler__AbstractCompilerVisitor__add(val* self, val* p0) {
1320 val* var_s /* var s: String */;
1321 val* var /* : CodeWriter */;
1322 val* var1 /* : List[String] */;
1323 var_s = p0;
1324 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer]))(self) /* writer on <self:AbstractCompilerVisitor>*/;
1325 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var) /* lines on <var:CodeWriter>*/;
1326 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var_s) /* add on <var1:List[String]>*/;
1327 RET_LABEL:;
1328 }
1329 /* method abstract_compiler#AbstractCompilerVisitor#add for (self: Object, String) */
1330 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add(val* self, val* p0) {
1331 abstract_compiler__AbstractCompilerVisitor__add(self, p0);
1332 RET_LABEL:;
1333 }
1334 /* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: AbstractCompilerVisitor, String) */
1335 void abstract_compiler__AbstractCompilerVisitor__add_decl(val* self, val* p0) {
1336 val* var_s /* var s: String */;
1337 val* var /* : CodeWriter */;
1338 val* var1 /* : List[String] */;
1339 var_s = p0;
1340 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer]))(self) /* writer on <self:AbstractCompilerVisitor>*/;
1341 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var) /* decl_lines on <var:CodeWriter>*/;
1342 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var_s) /* add on <var1:List[String]>*/;
1343 RET_LABEL:;
1344 }
1345 /* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: Object, String) */
1346 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_decl(val* self, val* p0) {
1347 abstract_compiler__AbstractCompilerVisitor__add_decl(self, p0);
1348 RET_LABEL:;
1349 }
1350 /* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: AbstractCompilerVisitor, String) */
1351 void abstract_compiler__AbstractCompilerVisitor__require_declaration(val* self, val* p0) {
1352 val* var_key /* var key: String */;
1353 val* var /* : CodeWriter */;
1354 val* var1 /* : CodeFile */;
1355 val* var2 /* : HashSet[String] */;
1356 val* var_reqs /* var reqs: HashSet[String] */;
1357 short int var3 /* : Bool */;
1358 val* var4 /* : nullable ANode */;
1359 val* var_node /* var node: nullable ANode */;
1360 val* var5 /* : null */;
1361 short int var6 /* : Bool */;
1362 val* var7 /* : AbstractCompiler */;
1363 val* var8 /* : HashMap[String, ANode] */;
1364 var_key = p0;
1365 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer]))(self) /* writer on <self:AbstractCompilerVisitor>*/;
1366 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__file]))(var) /* file on <var:CodeWriter>*/;
1367 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__CodeFile__required_declarations]))(var1) /* required_declarations on <var1:CodeFile>*/;
1368 var_reqs = var2;
1369 var3 = ((short int (*)(val*, val*))(var_reqs->class->vft[COLOR_abstract_collection__Collection__has]))(var_reqs, var_key) /* has on <var_reqs:HashSet[String]>*/;
1370 if (var3){
1371 goto RET_LABEL;
1372 } else {
1373 }
1374 ((void (*)(val*, val*))(var_reqs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_reqs, var_key) /* add on <var_reqs:HashSet[String]>*/;
1375 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
1376 var_node = var4;
1377 var5 = NULL;
1378 if (var_node == NULL) {
1379 var6 = 0; /* is null */
1380 } else {
1381 var6 = 1; /* arg is null and recv is not */
1382 }
1383 if (var6){
1384 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1385 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__AbstractCompiler__requirers_of_declarations]))(var7) /* requirers_of_declarations on <var7:AbstractCompiler>*/;
1386 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var_key, var_node) /* []= on <var8:HashMap[String, ANode]>*/;
1387 } else {
1388 }
1389 RET_LABEL:;
1390 }
1391 /* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: Object, String) */
1392 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__require_declaration(val* self, val* p0) {
1393 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, p0);
1394 RET_LABEL:;
1395 }
1396 /* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: AbstractCompilerVisitor, String) */
1397 void abstract_compiler__AbstractCompilerVisitor__declare_once(val* self, val* p0) {
1398 val* var_s /* var s: String */;
1399 val* var /* : AbstractCompiler */;
1400 var_s = p0;
1401 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1402 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var, var_s, var_s) /* provide_declaration on <var:AbstractCompiler>*/;
1403 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var_s) /* require_declaration on <self:AbstractCompilerVisitor>*/;
1404 RET_LABEL:;
1405 }
1406 /* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: Object, String) */
1407 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__declare_once(val* self, val* p0) {
1408 abstract_compiler__AbstractCompilerVisitor__declare_once(self, p0);
1409 RET_LABEL:;
1410 }
1411 /* method abstract_compiler#AbstractCompilerVisitor#add_extern for (self: AbstractCompilerVisitor, String) */
1412 void abstract_compiler__AbstractCompilerVisitor__add_extern(val* self, val* p0) {
1413 val* var_file /* var file: String */;
1414 static val* varonce;
1415 val* var /* : String */;
1416 char* var1 /* : NativeString */;
1417 long var2 /* : Int */;
1418 val* var3 /* : String */;
1419 val* var4 /* : String */;
1420 static val* varonce5;
1421 val* var6 /* : String */;
1422 char* var7 /* : NativeString */;
1423 long var8 /* : Int */;
1424 val* var9 /* : String */;
1425 val* var10 /* : String */;
1426 val* var_tryfile /* var tryfile: String */;
1427 short int var11 /* : Bool */;
1428 static val* varonce12;
1429 val* var13 /* : String */;
1430 char* var14 /* : NativeString */;
1431 long var15 /* : Int */;
1432 val* var16 /* : String */;
1433 static val* varonce17;
1434 val* var18 /* : String */;
1435 char* var19 /* : NativeString */;
1436 long var20 /* : Int */;
1437 val* var21 /* : String */;
1438 val* var22 /* : String */;
1439 static val* varonce23;
1440 val* var24 /* : String */;
1441 char* var25 /* : NativeString */;
1442 long var26 /* : Int */;
1443 val* var27 /* : String */;
1444 val* var28 /* : Array[Object] */;
1445 long var29 /* : Int */;
1446 val* var30 /* : NativeArray[Object] */;
1447 val* var31 /* : String */;
1448 val* var32 /* : AbstractCompiler */;
1449 val* var33 /* : Array[String] */;
1450 static val* varonce34;
1451 val* var35 /* : String */;
1452 char* var36 /* : NativeString */;
1453 long var37 /* : Int */;
1454 val* var38 /* : String */;
1455 val* var39 /* : String */;
1456 short int var40 /* : Bool */;
1457 static val* varonce41;
1458 val* var42 /* : String */;
1459 char* var43 /* : NativeString */;
1460 long var44 /* : Int */;
1461 val* var45 /* : String */;
1462 static val* varonce46;
1463 val* var47 /* : String */;
1464 char* var48 /* : NativeString */;
1465 long var49 /* : Int */;
1466 val* var50 /* : String */;
1467 val* var51 /* : String */;
1468 static val* varonce52;
1469 val* var53 /* : String */;
1470 char* var54 /* : NativeString */;
1471 long var55 /* : Int */;
1472 val* var56 /* : String */;
1473 val* var57 /* : Array[Object] */;
1474 long var58 /* : Int */;
1475 val* var59 /* : NativeArray[Object] */;
1476 val* var60 /* : String */;
1477 val* var61 /* : AbstractCompiler */;
1478 val* var62 /* : Array[String] */;
1479 val* var63 /* : AbstractCompiler */;
1480 val* var64 /* : ArraySet[String] */;
1481 short int var65 /* : Bool */;
1482 val* var66 /* : AbstractCompiler */;
1483 val* var67 /* : ArraySet[String] */;
1484 static val* varonce68;
1485 val* var69 /* : String */;
1486 char* var70 /* : NativeString */;
1487 long var71 /* : Int */;
1488 val* var72 /* : String */;
1489 val* var73 /* : String */;
1490 short int var74 /* : Bool */;
1491 short int var75 /* : Bool */;
1492 static val* varonce76;
1493 val* var77 /* : String */;
1494 char* var78 /* : NativeString */;
1495 long var79 /* : Int */;
1496 val* var80 /* : String */;
1497 val* var81 /* : String */;
1498 short int var82 /* : Bool */;
1499 short int var83 /* : Bool */;
1500 val* var84 /* : ExternCFile */;
1501 static val* varonce85;
1502 val* var86 /* : String */;
1503 char* var87 /* : NativeString */;
1504 long var88 /* : Int */;
1505 val* var89 /* : String */;
1506 val* var90 /* : String */;
1507 static val* varonce91;
1508 val* var92 /* : String */;
1509 char* var93 /* : NativeString */;
1510 long var94 /* : Int */;
1511 val* var95 /* : String */;
1512 val* var_f /* var f: ExternCFile */;
1513 val* var96 /* : AbstractCompiler */;
1514 val* var97 /* : Array[ExternFile] */;
1515 val* var98 /* : AbstractCompiler */;
1516 val* var99 /* : Array[String] */;
1517 var_file = p0;
1518 if (varonce) {
1519 var = varonce;
1520 } else {
1521 var1 = ".nit";
1522 var2 = 4;
1523 var3 = string__NativeString__to_s_with_length(var1, var2);
1524 var = var3;
1525 varonce = var;
1526 }
1527 var4 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_file__String__strip_extension]))(var_file, var) /* strip_extension on <var_file:String>*/;
1528 var_file = var4;
1529 if (varonce5) {
1530 var6 = varonce5;
1531 } else {
1532 var7 = ".nit.h";
1533 var8 = 6;
1534 var9 = string__NativeString__to_s_with_length(var7, var8);
1535 var6 = var9;
1536 varonce5 = var6;
1537 }
1538 var10 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var6) /* + on <var_file:String>*/;
1539 var_tryfile = var10;
1540 var11 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
1541 if (var11){
1542 if (varonce12) {
1543 var13 = varonce12;
1544 } else {
1545 var14 = "#include \"";
1546 var15 = 10;
1547 var16 = string__NativeString__to_s_with_length(var14, var15);
1548 var13 = var16;
1549 varonce12 = var13;
1550 }
1551 if (varonce17) {
1552 var18 = varonce17;
1553 } else {
1554 var19 = "";
1555 var20 = 0;
1556 var21 = string__NativeString__to_s_with_length(var19, var20);
1557 var18 = var21;
1558 varonce17 = var18;
1559 }
1560 var22 = ((val* (*)(val*, val*))(var_tryfile->class->vft[COLOR_file__String__basename]))(var_tryfile, var18) /* basename on <var_tryfile:String>*/;
1561 if (varonce23) {
1562 var24 = varonce23;
1563 } else {
1564 var25 = "\"";
1565 var26 = 1;
1566 var27 = string__NativeString__to_s_with_length(var25, var26);
1567 var24 = var27;
1568 varonce23 = var24;
1569 }
1570 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
1571 { /* var28 = array_instance Array[Object] */
1572 var29 = 3;
1573 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
1574 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var13;
1575 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var22;
1576 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var24;
1577 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
1578 }
1579 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
1580 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__declare_once]))(self, var31) /* declare_once on <self:AbstractCompilerVisitor>*/;
1581 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1582 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_compiler__AbstractCompiler__files_to_copy]))(var32) /* files_to_copy on <var32:AbstractCompiler>*/;
1583 ((void (*)(val*, val*))(var33->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var33, var_tryfile) /* add on <var33:Array[String]>*/;
1584 } else {
1585 }
1586 if (varonce34) {
1587 var35 = varonce34;
1588 } else {
1589 var36 = "_nit.h";
1590 var37 = 6;
1591 var38 = string__NativeString__to_s_with_length(var36, var37);
1592 var35 = var38;
1593 varonce34 = var35;
1594 }
1595 var39 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var35) /* + on <var_file:String>*/;
1596 var_tryfile = var39;
1597 var40 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
1598 if (var40){
1599 if (varonce41) {
1600 var42 = varonce41;
1601 } else {
1602 var43 = "#include \"";
1603 var44 = 10;
1604 var45 = string__NativeString__to_s_with_length(var43, var44);
1605 var42 = var45;
1606 varonce41 = var42;
1607 }
1608 if (varonce46) {
1609 var47 = varonce46;
1610 } else {
1611 var48 = "";
1612 var49 = 0;
1613 var50 = string__NativeString__to_s_with_length(var48, var49);
1614 var47 = var50;
1615 varonce46 = var47;
1616 }
1617 var51 = ((val* (*)(val*, val*))(var_tryfile->class->vft[COLOR_file__String__basename]))(var_tryfile, var47) /* basename on <var_tryfile:String>*/;
1618 if (varonce52) {
1619 var53 = varonce52;
1620 } else {
1621 var54 = "\"";
1622 var55 = 1;
1623 var56 = string__NativeString__to_s_with_length(var54, var55);
1624 var53 = var56;
1625 varonce52 = var53;
1626 }
1627 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
1628 { /* var57 = array_instance Array[Object] */
1629 var58 = 3;
1630 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
1631 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var42;
1632 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var51;
1633 ((struct instance_array__NativeArray*)var59)->values[2] = (val*) var53;
1634 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
1635 }
1636 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
1637 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__declare_once]))(self, var60) /* declare_once on <self:AbstractCompilerVisitor>*/;
1638 var61 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1639 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_compiler__AbstractCompiler__files_to_copy]))(var61) /* files_to_copy on <var61:AbstractCompiler>*/;
1640 ((void (*)(val*, val*))(var62->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var62, var_tryfile) /* add on <var62:Array[String]>*/;
1641 } else {
1642 }
1643 var63 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1644 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_abstract_compiler__AbstractCompiler__seen_extern]))(var63) /* seen_extern on <var63:AbstractCompiler>*/;
1645 var65 = ((short int (*)(val*, val*))(var64->class->vft[COLOR_abstract_collection__Collection__has]))(var64, var_file) /* has on <var64:ArraySet[String]>*/;
1646 if (var65){
1647 goto RET_LABEL;
1648 } else {
1649 }
1650 var66 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1651 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_compiler__AbstractCompiler__seen_extern]))(var66) /* seen_extern on <var66:AbstractCompiler>*/;
1652 ((void (*)(val*, val*))(var67->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var67, var_file) /* add on <var67:ArraySet[String]>*/;
1653 if (varonce68) {
1654 var69 = varonce68;
1655 } else {
1656 var70 = ".nit.c";
1657 var71 = 6;
1658 var72 = string__NativeString__to_s_with_length(var70, var71);
1659 var69 = var72;
1660 varonce68 = var69;
1661 }
1662 var73 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var69) /* + on <var_file:String>*/;
1663 var_tryfile = var73;
1664 var74 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
1665 var75 = !var74;
1666 if (var75){
1667 if (varonce76) {
1668 var77 = varonce76;
1669 } else {
1670 var78 = "_nit.c";
1671 var79 = 6;
1672 var80 = string__NativeString__to_s_with_length(var78, var79);
1673 var77 = var80;
1674 varonce76 = var77;
1675 }
1676 var81 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var77) /* + on <var_file:String>*/;
1677 var_tryfile = var81;
1678 var82 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
1679 var83 = !var82;
1680 if (var83){
1681 goto RET_LABEL;
1682 } else {
1683 }
1684 } else {
1685 }
1686 var84 = NEW_c__ExternCFile(&type_c__ExternCFile);
1687 if (varonce85) {
1688 var86 = varonce85;
1689 } else {
1690 var87 = "";
1691 var88 = 0;
1692 var89 = string__NativeString__to_s_with_length(var87, var88);
1693 var86 = var89;
1694 varonce85 = var86;
1695 }
1696 var90 = ((val* (*)(val*, val*))(var_tryfile->class->vft[COLOR_file__String__basename]))(var_tryfile, var86) /* basename on <var_tryfile:String>*/;
1697 if (varonce91) {
1698 var92 = varonce91;
1699 } else {
1700 var93 = "";
1701 var94 = 0;
1702 var95 = string__NativeString__to_s_with_length(var93, var94);
1703 var92 = var95;
1704 varonce91 = var92;
1705 }
1706 ((void (*)(val*, val*, val*))(var84->class->vft[COLOR_c__ExternCFile__init]))(var84, var90, var92) /* init on <var84:ExternCFile>*/;
1707 var_f = var84;
1708 var96 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1709 var97 = ((val* (*)(val*))(var96->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var96) /* extern_bodies on <var96:AbstractCompiler>*/;
1710 ((void (*)(val*, val*))(var97->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var97, var_f) /* add on <var97:Array[ExternFile]>*/;
1711 var98 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
1712 var99 = ((val* (*)(val*))(var98->class->vft[COLOR_abstract_compiler__AbstractCompiler__files_to_copy]))(var98) /* files_to_copy on <var98:AbstractCompiler>*/;
1713 ((void (*)(val*, val*))(var99->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var99, var_tryfile) /* add on <var99:Array[String]>*/;
1714 RET_LABEL:;
1715 }
1716 /* method abstract_compiler#AbstractCompilerVisitor#add_extern for (self: Object, String) */
1717 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_extern(val* self, val* p0) {
1718 abstract_compiler__AbstractCompilerVisitor__add_extern(self, p0);
1719 RET_LABEL:;
1720 }
1721 /* method abstract_compiler#AbstractCompilerVisitor#new_expr for (self: AbstractCompilerVisitor, String, MType): RuntimeVariable */
1722 val* abstract_compiler__AbstractCompilerVisitor__new_expr(val* self, val* p0, val* p1) {
1723 val* var /* : RuntimeVariable */;
1724 val* var_cexpr /* var cexpr: String */;
1725 val* var_mtype /* var mtype: MType */;
1726 val* var1 /* : RuntimeVariable */;
1727 val* var_res /* var res: RuntimeVariable */;
1728 static val* varonce;
1729 val* var2 /* : String */;
1730 char* var3 /* : NativeString */;
1731 long var4 /* : Int */;
1732 val* var5 /* : String */;
1733 static val* varonce6;
1734 val* var7 /* : String */;
1735 char* var8 /* : NativeString */;
1736 long var9 /* : Int */;
1737 val* var10 /* : String */;
1738 val* var11 /* : Array[Object] */;
1739 long var12 /* : Int */;
1740 val* var13 /* : NativeArray[Object] */;
1741 val* var14 /* : String */;
1742 var_cexpr = p0;
1743 var_mtype = p1;
1744 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:AbstractCompilerVisitor>*/;
1745 var_res = var1;
1746 if (varonce) {
1747 var2 = varonce;
1748 } else {
1749 var3 = " = ";
1750 var4 = 3;
1751 var5 = string__NativeString__to_s_with_length(var3, var4);
1752 var2 = var5;
1753 varonce = var2;
1754 }
1755 if (varonce6) {
1756 var7 = varonce6;
1757 } else {
1758 var8 = ";";
1759 var9 = 1;
1760 var10 = string__NativeString__to_s_with_length(var8, var9);
1761 var7 = var10;
1762 varonce6 = var7;
1763 }
1764 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
1765 { /* var11 = array_instance Array[Object] */
1766 var12 = 4;
1767 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
1768 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_res;
1769 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var2;
1770 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var_cexpr;
1771 ((struct instance_array__NativeArray*)var13)->values[3] = (val*) var7;
1772 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
1773 }
1774 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
1775 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var14) /* add on <self:AbstractCompilerVisitor>*/;
1776 var = var_res;
1777 goto RET_LABEL;
1778 RET_LABEL:;
1779 return var;
1780 }
1781 /* method abstract_compiler#AbstractCompilerVisitor#new_expr for (self: Object, String, MType): RuntimeVariable */
1782 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_expr(val* self, val* p0, val* p1) {
1783 val* var /* : RuntimeVariable */;
1784 val* var1 /* : RuntimeVariable */;
1785 var1 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, p0, p1);
1786 var = var1;
1787 RET_LABEL:;
1788 return var;
1789 }
1790 /* method abstract_compiler#AbstractCompilerVisitor#add_abort for (self: AbstractCompilerVisitor, String) */
1791 void abstract_compiler__AbstractCompilerVisitor__add_abort(val* self, val* p0) {
1792 val* var_message /* var message: String */;
1793 static val* varonce;
1794 val* var /* : String */;
1795 char* var1 /* : NativeString */;
1796 long var2 /* : Int */;
1797 val* var3 /* : String */;
1798 val* var4 /* : String */;
1799 static val* varonce5;
1800 val* var6 /* : String */;
1801 char* var7 /* : NativeString */;
1802 long var8 /* : Int */;
1803 val* var9 /* : String */;
1804 val* var10 /* : Array[Object] */;
1805 long var11 /* : Int */;
1806 val* var12 /* : NativeArray[Object] */;
1807 val* var13 /* : String */;
1808 var_message = p0;
1809 if (varonce) {
1810 var = varonce;
1811 } else {
1812 var1 = "fprintf(stderr, \"Runtime error: %s\", \"";
1813 var2 = 38;
1814 var3 = string__NativeString__to_s_with_length(var1, var2);
1815 var = var3;
1816 varonce = var;
1817 }
1818 var4 = ((val* (*)(val*))(var_message->class->vft[COLOR_string__AbstractString__escape_to_c]))(var_message) /* escape_to_c on <var_message:String>*/;
1819 if (varonce5) {
1820 var6 = varonce5;
1821 } else {
1822 var7 = "\");";
1823 var8 = 3;
1824 var9 = string__NativeString__to_s_with_length(var7, var8);
1825 var6 = var9;
1826 varonce5 = var6;
1827 }
1828 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1829 { /* var10 = array_instance Array[Object] */
1830 var11 = 3;
1831 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
1832 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var;
1833 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var4;
1834 ((struct instance_array__NativeArray*)var12)->values[2] = (val*) var6;
1835 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
1836 }
1837 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
1838 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var13) /* add on <self:AbstractCompilerVisitor>*/;
1839 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_raw_abort]))(self) /* add_raw_abort on <self:AbstractCompilerVisitor>*/;
1840 RET_LABEL:;
1841 }
1842 /* method abstract_compiler#AbstractCompilerVisitor#add_abort for (self: Object, String) */
1843 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_abort(val* self, val* p0) {
1844 abstract_compiler__AbstractCompilerVisitor__add_abort(self, p0);
1845 RET_LABEL:;
1846 }
1847 /* method abstract_compiler#AbstractCompilerVisitor#add_raw_abort for (self: AbstractCompilerVisitor) */
1848 void abstract_compiler__AbstractCompilerVisitor__add_raw_abort(val* self) {
1849 short int var /* : Bool */;
1850 val* var1 /* : nullable ANode */;
1851 val* var2 /* : null */;
1852 short int var3 /* : Bool */;
1853 short int var_ /* var : Bool */;
1854 val* var4 /* : nullable ANode */;
1855 val* var5 /* : Location */;
1856 val* var6 /* : nullable SourceFile */;
1857 val* var7 /* : null */;
1858 short int var8 /* : Bool */;
1859 static val* varonce;
1860 val* var9 /* : String */;
1861 char* var10 /* : NativeString */;
1862 long var11 /* : Int */;
1863 val* var12 /* : String */;
1864 val* var13 /* : nullable ANode */;
1865 val* var14 /* : Location */;
1866 val* var15 /* : nullable SourceFile */;
1867 val* var16 /* : String */;
1868 val* var17 /* : String */;
1869 static val* varonce18;
1870 val* var19 /* : String */;
1871 char* var20 /* : NativeString */;
1872 long var21 /* : Int */;
1873 val* var22 /* : String */;
1874 val* var23 /* : nullable ANode */;
1875 val* var24 /* : Location */;
1876 long var25 /* : Int */;
1877 static val* varonce26;
1878 val* var27 /* : String */;
1879 char* var28 /* : NativeString */;
1880 long var29 /* : Int */;
1881 val* var30 /* : String */;
1882 val* var31 /* : Array[Object] */;
1883 long var32 /* : Int */;
1884 val* var33 /* : NativeArray[Object] */;
1885 val* var34 /* : Object */;
1886 val* var35 /* : String */;
1887 static val* varonce36;
1888 val* var37 /* : String */;
1889 char* var38 /* : NativeString */;
1890 long var39 /* : Int */;
1891 val* var40 /* : String */;
1892 static val* varonce41;
1893 val* var42 /* : String */;
1894 char* var43 /* : NativeString */;
1895 long var44 /* : Int */;
1896 val* var45 /* : String */;
1897 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
1898 var2 = NULL;
1899 if (var1 == NULL) {
1900 var3 = 0; /* is null */
1901 } else {
1902 var3 = 1; /* arg is null and recv is not */
1903 }
1904 var_ = var3;
1905 if (var3){
1906 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
1907 if (var4 == NULL) {
1908 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1909 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1142);
1910 show_backtrace(1);
1911 } else {
1912 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__ANode__location]))(var4) /* location on <var4:nullable ANode>*/;
1913 }
1914 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_location__Location__file]))(var5) /* file on <var5:Location>*/;
1915 var7 = NULL;
1916 if (var6 == NULL) {
1917 var8 = 0; /* is null */
1918 } else {
1919 var8 = 1; /* arg is null and recv is not */
1920 }
1921 var = var8;
1922 } else {
1923 var = var_;
1924 }
1925 if (var){
1926 if (varonce) {
1927 var9 = varonce;
1928 } else {
1929 var10 = "fprintf(stderr, \" (%s:%d)\\n\", \"";
1930 var11 = 31;
1931 var12 = string__NativeString__to_s_with_length(var10, var11);
1932 var9 = var12;
1933 varonce = var9;
1934 }
1935 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
1936 if (var13 == NULL) {
1937 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1938 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1143);
1939 show_backtrace(1);
1940 } else {
1941 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_parser_nodes__ANode__location]))(var13) /* location on <var13:nullable ANode>*/;
1942 }
1943 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_location__Location__file]))(var14) /* file on <var14:Location>*/;
1944 if (var15 == NULL) {
1945 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1946 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1143);
1947 show_backtrace(1);
1948 } else {
1949 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_location__SourceFile__filename]))(var15) /* filename on <var15:nullable SourceFile>*/;
1950 }
1951 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_string__AbstractString__escape_to_c]))(var16) /* escape_to_c on <var16:String>*/;
1952 if (varonce18) {
1953 var19 = varonce18;
1954 } else {
1955 var20 = "\", ";
1956 var21 = 3;
1957 var22 = string__NativeString__to_s_with_length(var20, var21);
1958 var19 = var22;
1959 varonce18 = var19;
1960 }
1961 var23 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
1962 if (var23 == NULL) {
1963 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1964 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1143);
1965 show_backtrace(1);
1966 } else {
1967 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_parser_nodes__ANode__location]))(var23) /* location on <var23:nullable ANode>*/;
1968 }
1969 var25 = ((long (*)(val*))(var24->class->vft[COLOR_location__Location__line_start]))(var24) /* line_start on <var24:Location>*/;
1970 if (varonce26) {
1971 var27 = varonce26;
1972 } else {
1973 var28 = ");";
1974 var29 = 2;
1975 var30 = string__NativeString__to_s_with_length(var28, var29);
1976 var27 = var30;
1977 varonce26 = var27;
1978 }
1979 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
1980 { /* var31 = array_instance Array[Object] */
1981 var32 = 5;
1982 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
1983 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var9;
1984 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var17;
1985 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var19;
1986 var34 = BOX_kernel__Int(var25); /* autobox from Int to Object */
1987 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var34;
1988 ((struct instance_array__NativeArray*)var33)->values[4] = (val*) var27;
1989 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
1990 }
1991 var35 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
1992 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var35) /* add on <self:AbstractCompilerVisitor>*/;
1993 } else {
1994 if (varonce36) {
1995 var37 = varonce36;
1996 } else {
1997 var38 = "fprintf(stderr, \"\\n\");";
1998 var39 = 22;
1999 var40 = string__NativeString__to_s_with_length(var38, var39);
2000 var37 = var40;
2001 varonce36 = var37;
2002 }
2003 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var37) /* add on <self:AbstractCompilerVisitor>*/;
2004 }
2005 if (varonce41) {
2006 var42 = varonce41;
2007 } else {
2008 var43 = "show_backtrace(1);";
2009 var44 = 18;
2010 var45 = string__NativeString__to_s_with_length(var43, var44);
2011 var42 = var45;
2012 varonce41 = var42;
2013 }
2014 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var42) /* add on <self:AbstractCompilerVisitor>*/;
2015 RET_LABEL:;
2016 }
2017 /* method abstract_compiler#AbstractCompilerVisitor#add_raw_abort for (self: Object) */
2018 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_raw_abort(val* self) {
2019 abstract_compiler__AbstractCompilerVisitor__add_raw_abort(self);
2020 RET_LABEL:;
2021 }
2022 /* method abstract_compiler#AbstractCompilerVisitor#add_cast for (self: AbstractCompilerVisitor, RuntimeVariable, MType, String) */
2023 void abstract_compiler__AbstractCompilerVisitor__add_cast(val* self, val* p0, val* p1, val* p2) {
2024 val* var_value /* var value: RuntimeVariable */;
2025 val* var_mtype /* var mtype: MType */;
2026 val* var_tag /* var tag: String */;
2027 val* var /* : RuntimeVariable */;
2028 val* var_res /* var res: RuntimeVariable */;
2029 static val* varonce;
2030 val* var1 /* : String */;
2031 char* var2 /* : NativeString */;
2032 long var3 /* : Int */;
2033 val* var4 /* : String */;
2034 static val* varonce5;
2035 val* var6 /* : String */;
2036 char* var7 /* : NativeString */;
2037 long var8 /* : Int */;
2038 val* var9 /* : String */;
2039 val* var10 /* : Array[Object] */;
2040 long var11 /* : Int */;
2041 val* var12 /* : NativeArray[Object] */;
2042 val* var13 /* : String */;
2043 val* var14 /* : String */;
2044 val* var_cn /* var cn: String */;
2045 static val* varonce15;
2046 val* var16 /* : String */;
2047 char* var17 /* : NativeString */;
2048 long var18 /* : Int */;
2049 val* var19 /* : String */;
2050 val* var20 /* : String */;
2051 val* var21 /* : String */;
2052 static val* varonce22;
2053 val* var23 /* : String */;
2054 char* var24 /* : NativeString */;
2055 long var25 /* : Int */;
2056 val* var26 /* : String */;
2057 static val* varonce27;
2058 val* var28 /* : String */;
2059 char* var29 /* : NativeString */;
2060 long var30 /* : Int */;
2061 val* var31 /* : String */;
2062 val* var32 /* : Array[Object] */;
2063 long var33 /* : Int */;
2064 val* var34 /* : NativeArray[Object] */;
2065 val* var35 /* : String */;
2066 static val* varonce36;
2067 val* var37 /* : String */;
2068 char* var38 /* : NativeString */;
2069 long var39 /* : Int */;
2070 val* var40 /* : String */;
2071 var_value = p0;
2072 var_mtype = p1;
2073 var_tag = p2;
2074 var = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test]))(self, var_value, var_mtype, var_tag) /* type_test on <self:AbstractCompilerVisitor>*/;
2075 var_res = var;
2076 if (varonce) {
2077 var1 = varonce;
2078 } else {
2079 var2 = "if (!";
2080 var3 = 5;
2081 var4 = string__NativeString__to_s_with_length(var2, var3);
2082 var1 = var4;
2083 varonce = var1;
2084 }
2085 if (varonce5) {
2086 var6 = varonce5;
2087 } else {
2088 var7 = ") {";
2089 var8 = 3;
2090 var9 = string__NativeString__to_s_with_length(var7, var8);
2091 var6 = var9;
2092 varonce5 = var6;
2093 }
2094 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
2095 { /* var10 = array_instance Array[Object] */
2096 var11 = 3;
2097 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
2098 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var1;
2099 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var_res;
2100 ((struct instance_array__NativeArray*)var12)->values[2] = (val*) var6;
2101 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
2102 }
2103 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
2104 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var13) /* add on <self:AbstractCompilerVisitor>*/;
2105 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__class_name_string]))(self, var_value) /* class_name_string on <self:AbstractCompilerVisitor>*/;
2106 var_cn = var14;
2107 if (varonce15) {
2108 var16 = varonce15;
2109 } else {
2110 var17 = "fprintf(stderr, \"Runtime error: Cast failed. Expected `%s`, got `%s`\", \"";
2111 var18 = 72;
2112 var19 = string__NativeString__to_s_with_length(var17, var18);
2113 var16 = var19;
2114 varonce15 = var16;
2115 }
2116 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:MType>*/;
2117 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_string__AbstractString__escape_to_c]))(var20) /* escape_to_c on <var20:String>*/;
2118 if (varonce22) {
2119 var23 = varonce22;
2120 } else {
2121 var24 = "\", ";
2122 var25 = 3;
2123 var26 = string__NativeString__to_s_with_length(var24, var25);
2124 var23 = var26;
2125 varonce22 = var23;
2126 }
2127 if (varonce27) {
2128 var28 = varonce27;
2129 } else {
2130 var29 = ");";
2131 var30 = 2;
2132 var31 = string__NativeString__to_s_with_length(var29, var30);
2133 var28 = var31;
2134 varonce27 = var28;
2135 }
2136 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
2137 { /* var32 = array_instance Array[Object] */
2138 var33 = 5;
2139 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
2140 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var16;
2141 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var21;
2142 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
2143 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_cn;
2144 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
2145 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
2146 }
2147 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
2148 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var35) /* add on <self:AbstractCompilerVisitor>*/;
2149 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_raw_abort]))(self) /* add_raw_abort on <self:AbstractCompilerVisitor>*/;
2150 if (varonce36) {
2151 var37 = varonce36;
2152 } else {
2153 var38 = "}";
2154 var39 = 1;
2155 var40 = string__NativeString__to_s_with_length(var38, var39);
2156 var37 = var40;
2157 varonce36 = var37;
2158 }
2159 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var37) /* add on <self:AbstractCompilerVisitor>*/;
2160 RET_LABEL:;
2161 }
2162 /* method abstract_compiler#AbstractCompilerVisitor#add_cast for (self: Object, RuntimeVariable, MType, String) */
2163 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_cast(val* self, val* p0, val* p1, val* p2) {
2164 abstract_compiler__AbstractCompilerVisitor__add_cast(self, p0, p1, p2);
2165 RET_LABEL:;
2166 }
2167 /* method abstract_compiler#AbstractCompilerVisitor#ret for (self: AbstractCompilerVisitor, RuntimeVariable) */
2168 void abstract_compiler__AbstractCompilerVisitor__ret(val* self, val* p0) {
2169 val* var_s /* var s: RuntimeVariable */;
2170 val* var /* : nullable Frame */;
2171 val* var1 /* : nullable RuntimeVariable */;
2172 static val* varonce;
2173 val* var2 /* : String */;
2174 char* var3 /* : NativeString */;
2175 long var4 /* : Int */;
2176 val* var5 /* : String */;
2177 val* var6 /* : nullable Frame */;
2178 val* var7 /* : nullable String */;
2179 static val* varonce8;
2180 val* var9 /* : String */;
2181 char* var10 /* : NativeString */;
2182 long var11 /* : Int */;
2183 val* var12 /* : String */;
2184 val* var13 /* : Array[Object] */;
2185 long var14 /* : Int */;
2186 val* var15 /* : NativeArray[Object] */;
2187 val* var16 /* : String */;
2188 var_s = p0;
2189 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
2190 if (var == NULL) {
2191 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2192 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1164);
2193 show_backtrace(1);
2194 } else {
2195 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var) /* returnvar on <var:nullable Frame>*/;
2196 }
2197 if (var1 == NULL) {
2198 fprintf(stderr, "Runtime error: %s", "Cast failed");
2199 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1164);
2200 show_backtrace(1);
2201 }
2202 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(self, var1, var_s) /* assign on <self:AbstractCompilerVisitor>*/;
2203 if (varonce) {
2204 var2 = varonce;
2205 } else {
2206 var3 = "goto ";
2207 var4 = 5;
2208 var5 = string__NativeString__to_s_with_length(var3, var4);
2209 var2 = var5;
2210 varonce = var2;
2211 }
2212 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
2213 if (var6 == NULL) {
2214 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2215 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1165);
2216 show_backtrace(1);
2217 } else {
2218 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var6) /* returnlabel on <var6:nullable Frame>*/;
2219 }
2220 if (var7 == NULL) {
2221 fprintf(stderr, "Runtime error: %s", "Cast failed");
2222 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1165);
2223 show_backtrace(1);
2224 }
2225 if (varonce8) {
2226 var9 = varonce8;
2227 } else {
2228 var10 = ";";
2229 var11 = 1;
2230 var12 = string__NativeString__to_s_with_length(var10, var11);
2231 var9 = var12;
2232 varonce8 = var9;
2233 }
2234 var13 = NEW_array__Array(&type_array__Arraykernel__Object);
2235 { /* var13 = array_instance Array[Object] */
2236 var14 = 3;
2237 var15 = NEW_array__NativeArray(var14, &type_array__NativeArraykernel__Object);
2238 ((struct instance_array__NativeArray*)var15)->values[0] = (val*) var2;
2239 ((struct instance_array__NativeArray*)var15)->values[1] = (val*) var7;
2240 ((struct instance_array__NativeArray*)var15)->values[2] = (val*) var9;
2241 ((void (*)(val*, val*, long))(var13->class->vft[COLOR_array__Array__with_native]))(var13, var15, var14) /* with_native on <var13:Array[Object]>*/;
2242 }
2243 var16 = ((val* (*)(val*))(var13->class->vft[COLOR_string__Object__to_s]))(var13) /* to_s on <var13:Array[Object]>*/;
2244 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var16) /* add on <self:AbstractCompilerVisitor>*/;
2245 RET_LABEL:;
2246 }
2247 /* method abstract_compiler#AbstractCompilerVisitor#ret for (self: Object, RuntimeVariable) */
2248 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__ret(val* self, val* p0) {
2249 abstract_compiler__AbstractCompilerVisitor__ret(self, p0);
2250 RET_LABEL:;
2251 }
2252 /* method abstract_compiler#AbstractCompilerVisitor#stmt for (self: AbstractCompilerVisitor, nullable AExpr) */
2253 void abstract_compiler__AbstractCompilerVisitor__stmt(val* self, val* p0) {
2254 val* var_nexpr /* var nexpr: nullable AExpr */;
2255 val* var /* : null */;
2256 short int var1 /* : Bool */;
2257 val* var2 /* : nullable ANode */;
2258 val* var_old /* var old: nullable ANode */;
2259 var_nexpr = p0;
2260 var = NULL;
2261 if (var_nexpr == NULL) {
2262 var1 = 1; /* is null */
2263 } else {
2264 var1 = 0; /* arg is null but recv is not */
2265 }
2266 if (var1){
2267 goto RET_LABEL;
2268 } else {
2269 }
2270 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
2271 var_old = var2;
2272 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_nexpr) /* current_node= on <self:AbstractCompilerVisitor>*/;
2273 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_abstract_compiler__AExpr__stmt]))(var_nexpr, self) /* stmt on <var_nexpr:nullable AExpr(AExpr)>*/;
2274 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_old) /* current_node= on <self:AbstractCompilerVisitor>*/;
2275 RET_LABEL:;
2276 }
2277 /* method abstract_compiler#AbstractCompilerVisitor#stmt for (self: Object, nullable AExpr) */
2278 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__stmt(val* self, val* p0) {
2279 abstract_compiler__AbstractCompilerVisitor__stmt(self, p0);
2280 RET_LABEL:;
2281 }
2282 /* method abstract_compiler#AbstractCompilerVisitor#expr for (self: AbstractCompilerVisitor, AExpr, nullable MType): RuntimeVariable */
2283 val* abstract_compiler__AbstractCompilerVisitor__expr(val* self, val* p0, val* p1) {
2284 val* var /* : RuntimeVariable */;
2285 val* var_nexpr /* var nexpr: AExpr */;
2286 val* var_mtype /* var mtype: nullable MType */;
2287 val* var1 /* : nullable ANode */;
2288 val* var_old /* var old: nullable ANode */;
2289 val* var2 /* : nullable RuntimeVariable */;
2290 val* var_res /* var res: RuntimeVariable */;
2291 val* var3 /* : null */;
2292 short int var4 /* : Bool */;
2293 val* var5 /* : MType */;
2294 val* var6 /* : RuntimeVariable */;
2295 val* var7 /* : nullable MType */;
2296 val* var8 /* : RuntimeVariable */;
2297 val* var9 /* : nullable MType */;
2298 val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */;
2299 short int var10 /* : Bool */;
2300 val* var11 /* : null */;
2301 short int var12 /* : Bool */;
2302 short int var_ /* var : Bool */;
2303 val* var13 /* : AbstractCompiler */;
2304 val* var14 /* : ModelBuilder */;
2305 val* var15 /* : ToolContext */;
2306 val* var16 /* : OptionBool */;
2307 val* var17 /* : nullable Object */;
2308 short int var18 /* : Bool */;
2309 short int var19 /* : Bool */;
2310 static val* varonce;
2311 val* var20 /* : String */;
2312 char* var21 /* : NativeString */;
2313 long var22 /* : Int */;
2314 val* var23 /* : String */;
2315 val* var24 /* : RuntimeVariable */;
2316 var_nexpr = p0;
2317 var_mtype = p1;
2318 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
2319 var_old = var1;
2320 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_nexpr) /* current_node= on <self:AbstractCompilerVisitor>*/;
2321 var2 = ((val* (*)(val*, val*))(var_nexpr->class->vft[COLOR_abstract_compiler__AExpr__expr]))(var_nexpr, self) /* expr on <var_nexpr:AExpr>*/;
2322 if (var2 == NULL) {
2323 fprintf(stderr, "Runtime error: %s", "Cast failed");
2324 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1184);
2325 show_backtrace(1);
2326 }
2327 var_res = var2;
2328 var3 = NULL;
2329 if (var_mtype == NULL) {
2330 var4 = 0; /* is null */
2331 } else {
2332 var4 = 1; /* arg is null and recv is not */
2333 }
2334 if (var4){
2335 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
2336 var_mtype = var5;
2337 var6 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_res, var_mtype) /* autobox on <self:AbstractCompilerVisitor>*/;
2338 var_res = var6;
2339 } else {
2340 }
2341 var7 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
2342 if (var7 == NULL) {
2343 fprintf(stderr, "Runtime error: %s", "Cast failed");
2344 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1189);
2345 show_backtrace(1);
2346 }
2347 var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autoadapt]))(self, var_res, var7) /* autoadapt on <self:AbstractCompilerVisitor>*/;
2348 var_res = var8;
2349 var9 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__implicit_cast_to]))(var_nexpr) /* implicit_cast_to on <var_nexpr:AExpr>*/;
2350 var_implicit_cast_to = var9;
2351 var11 = NULL;
2352 if (var_implicit_cast_to == NULL) {
2353 var12 = 0; /* is null */
2354 } else {
2355 var12 = 1; /* arg is null and recv is not */
2356 }
2357 var_ = var12;
2358 if (var12){
2359 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
2360 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var13) /* modelbuilder on <var13:AbstractCompiler>*/;
2361 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var14) /* toolcontext on <var14:ModelBuilder>*/;
2362 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_autocast]))(var15) /* opt_no_check_autocast on <var15:ToolContext>*/;
2363 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_opts__Option__value]))(var16) /* value on <var16:OptionBool>*/;
2364 var18 = ((struct instance_kernel__Bool*)var17)->value; /* autounbox from nullable Object to Bool */;
2365 var19 = !var18;
2366 var10 = var19;
2367 } else {
2368 var10 = var_;
2369 }
2370 if (var10){
2371 if (varonce) {
2372 var20 = varonce;
2373 } else {
2374 var21 = "auto";
2375 var22 = 4;
2376 var23 = string__NativeString__to_s_with_length(var21, var22);
2377 var20 = var23;
2378 varonce = var20;
2379 }
2380 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_cast]))(self, var_res, var_implicit_cast_to, var20) /* add_cast on <self:AbstractCompilerVisitor>*/;
2381 var24 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autoadapt]))(self, var_res, var_implicit_cast_to) /* autoadapt on <self:AbstractCompilerVisitor>*/;
2382 var_res = var24;
2383 } else {
2384 }
2385 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_old) /* current_node= on <self:AbstractCompilerVisitor>*/;
2386 var = var_res;
2387 goto RET_LABEL;
2388 RET_LABEL:;
2389 return var;
2390 }
2391 /* method abstract_compiler#AbstractCompilerVisitor#expr for (self: Object, AExpr, nullable MType): RuntimeVariable */
2392 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__expr(val* self, val* p0, val* p1) {
2393 val* var /* : RuntimeVariable */;
2394 val* var1 /* : RuntimeVariable */;
2395 var1 = abstract_compiler__AbstractCompilerVisitor__expr(self, p0, p1);
2396 var = var1;
2397 RET_LABEL:;
2398 return var;
2399 }
2400 /* method abstract_compiler#AbstractCompilerVisitor#expr_bool for (self: AbstractCompilerVisitor, AExpr): RuntimeVariable */
2401 val* abstract_compiler__AbstractCompilerVisitor__expr_bool(val* self, val* p0) {
2402 val* var /* : RuntimeVariable */;
2403 val* var_nexpr /* var nexpr: AExpr */;
2404 val* var1 /* : MClassType */;
2405 val* var2 /* : RuntimeVariable */;
2406 var_nexpr = p0;
2407 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:AbstractCompilerVisitor>*/;
2408 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(self, var_nexpr, var1) /* expr on <self:AbstractCompilerVisitor>*/;
2409 var = var2;
2410 goto RET_LABEL;
2411 RET_LABEL:;
2412 return var;
2413 }
2414 /* method abstract_compiler#AbstractCompilerVisitor#expr_bool for (self: Object, AExpr): RuntimeVariable */
2415 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__expr_bool(val* self, val* p0) {
2416 val* var /* : RuntimeVariable */;
2417 val* var1 /* : RuntimeVariable */;
2418 var1 = abstract_compiler__AbstractCompilerVisitor__expr_bool(self, p0);
2419 var = var1;
2420 RET_LABEL:;
2421 return var;
2422 }
2423 /* method abstract_compiler#AbstractCompilerVisitor#debug for (self: AbstractCompilerVisitor, String) */
2424 void abstract_compiler__AbstractCompilerVisitor__debug(val* self, val* p0) {
2425 val* var_message /* var message: String */;
2426 val* var /* : nullable ANode */;
2427 val* var_node /* var node: nullable ANode */;
2428 val* var1 /* : null */;
2429 short int var2 /* : Bool */;
2430 static val* varonce;
2431 val* var3 /* : String */;
2432 char* var4 /* : NativeString */;
2433 long var5 /* : Int */;
2434 val* var6 /* : String */;
2435 val* var7 /* : Array[Object] */;
2436 long var8 /* : Int */;
2437 val* var9 /* : NativeArray[Object] */;
2438 val* var10 /* : String */;
2439 static val* varonce11;
2440 val* var12 /* : String */;
2441 char* var13 /* : NativeString */;
2442 long var14 /* : Int */;
2443 val* var15 /* : String */;
2444 static val* varonce16;
2445 val* var17 /* : String */;
2446 char* var18 /* : NativeString */;
2447 long var19 /* : Int */;
2448 val* var20 /* : String */;
2449 val* var21 /* : Array[Object] */;
2450 long var22 /* : Int */;
2451 val* var23 /* : NativeArray[Object] */;
2452 val* var24 /* : String */;
2453 var_message = p0;
2454 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
2455 var_node = var;
2456 var1 = NULL;
2457 if (var_node == NULL) {
2458 var2 = 1; /* is null */
2459 } else {
2460 var2 = 0; /* arg is null but recv is not */
2461 }
2462 if (var2){
2463 if (varonce) {
2464 var3 = varonce;
2465 } else {
2466 var4 = "?: ";
2467 var5 = 3;
2468 var6 = string__NativeString__to_s_with_length(var4, var5);
2469 var3 = var6;
2470 varonce = var3;
2471 }
2472 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
2473 { /* var7 = array_instance Array[Object] */
2474 var8 = 2;
2475 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
2476 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var3;
2477 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var_message;
2478 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
2479 }
2480 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
2481 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var10) /* print on <self:AbstractCompilerVisitor>*/;
2482 } else {
2483 ((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__debug]))(var_node, var_message) /* debug on <var_node:nullable ANode(ANode)>*/;
2484 }
2485 if (varonce11) {
2486 var12 = varonce11;
2487 } else {
2488 var13 = "/* DEBUG: ";
2489 var14 = 10;
2490 var15 = string__NativeString__to_s_with_length(var13, var14);
2491 var12 = var15;
2492 varonce11 = var12;
2493 }
2494 if (varonce16) {
2495 var17 = varonce16;
2496 } else {
2497 var18 = " */";
2498 var19 = 3;
2499 var20 = string__NativeString__to_s_with_length(var18, var19);
2500 var17 = var20;
2501 varonce16 = var17;
2502 }
2503 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
2504 { /* var21 = array_instance Array[Object] */
2505 var22 = 3;
2506 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
2507 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var12;
2508 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var_message;
2509 ((struct instance_array__NativeArray*)var23)->values[2] = (val*) var17;
2510 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
2511 }
2512 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
2513 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var24) /* add on <self:AbstractCompilerVisitor>*/;
2514 RET_LABEL:;
2515 }
2516 /* method abstract_compiler#AbstractCompilerVisitor#debug for (self: Object, String) */
2517 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__debug(val* self, val* p0) {
2518 abstract_compiler__AbstractCompilerVisitor__debug(self, p0);
2519 RET_LABEL:;
2520 }
2521 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef for (self: AbstractRuntimeFunction): MMethodDef */
2522 val* abstract_compiler__AbstractRuntimeFunction__mmethoddef(val* self) {
2523 val* var /* : MMethodDef */;
2524 val* var1 /* : MMethodDef */;
2525 var1 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___64dmmethoddef].val; /* @mmethoddef on <self:AbstractRuntimeFunction> */
2526 if (var1 == NULL) {
2527 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmethoddef");
2528 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1222);
2529 show_backtrace(1);
2530 }
2531 var = var1;
2532 RET_LABEL:;
2533 return var;
2534 }
2535 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef for (self: Object): MMethodDef */
2536 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__mmethoddef(val* self) {
2537 val* var /* : MMethodDef */;
2538 val* var1 /* : MMethodDef */;
2539 var1 = abstract_compiler__AbstractRuntimeFunction__mmethoddef(self);
2540 var = var1;
2541 RET_LABEL:;
2542 return var;
2543 }
2544 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef= for (self: AbstractRuntimeFunction, MMethodDef) */
2545 void abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d(val* self, val* p0) {
2546 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___64dmmethoddef].val = p0; /* @mmethoddef on <self:AbstractRuntimeFunction> */
2547 RET_LABEL:;
2548 }
2549 /* method abstract_compiler#AbstractRuntimeFunction#mmethoddef= for (self: Object, MMethodDef) */
2550 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d(val* self, val* p0) {
2551 abstract_compiler__AbstractRuntimeFunction__mmethoddef_61d(self, p0);
2552 RET_LABEL:;
2553 }
2554 /* method abstract_compiler#AbstractRuntimeFunction#c_name for (self: AbstractRuntimeFunction): String */
2555 val* abstract_compiler__AbstractRuntimeFunction__c_name(val* self) {
2556 val* var /* : String */;
2557 val* var1 /* : nullable String */;
2558 val* var_res /* var res: nullable String */;
2559 val* var2 /* : null */;
2560 short int var3 /* : Bool */;
2561 val* var4 /* : String */;
2562 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name_cache]))(self) /* c_name_cache on <self:AbstractRuntimeFunction>*/;
2563 var_res = var1;
2564 var2 = NULL;
2565 if (var_res == NULL) {
2566 var3 = 0; /* is null */
2567 } else {
2568 var3 = 1; /* arg is null and recv is not */
2569 }
2570 if (var3){
2571 var = var_res;
2572 goto RET_LABEL;
2573 } else {
2574 }
2575 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__build_c_name]))(self) /* build_c_name on <self:AbstractRuntimeFunction>*/;
2576 var_res = var4;
2577 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:AbstractRuntimeFunction>*/;
2578 var = var_res;
2579 goto RET_LABEL;
2580 RET_LABEL:;
2581 return var;
2582 }
2583 /* method abstract_compiler#AbstractRuntimeFunction#c_name for (self: Object): String */
2584 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__c_name(val* self) {
2585 val* var /* : String */;
2586 val* var1 /* : String */;
2587 var1 = abstract_compiler__AbstractRuntimeFunction__c_name(self);
2588 var = var1;
2589 RET_LABEL:;
2590 return var;
2591 }
2592 /* method abstract_compiler#AbstractRuntimeFunction#build_c_name for (self: AbstractRuntimeFunction): String */
2593 val* abstract_compiler__AbstractRuntimeFunction__build_c_name(val* self) {
2594 val* var /* : String */;
2595 const char* var_class_name;
2596 var_class_name = self == NULL ? "null" : self->type->name;
2597 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "build_c_name", var_class_name);
2598 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1236);
2599 show_backtrace(1);
2600 RET_LABEL:;
2601 return var;
2602 }
2603 /* method abstract_compiler#AbstractRuntimeFunction#build_c_name for (self: Object): String */
2604 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__build_c_name(val* self) {
2605 val* var /* : String */;
2606 val* var1 /* : String */;
2607 var1 = abstract_compiler__AbstractRuntimeFunction__build_c_name(self);
2608 var = var1;
2609 RET_LABEL:;
2610 return var;
2611 }
2612 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache for (self: AbstractRuntimeFunction): nullable String */
2613 val* abstract_compiler__AbstractRuntimeFunction__c_name_cache(val* self) {
2614 val* var /* : nullable String */;
2615 val* var1 /* : nullable String */;
2616 var1 = self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___64dc_name_cache].val; /* @c_name_cache on <self:AbstractRuntimeFunction> */
2617 var = var1;
2618 RET_LABEL:;
2619 return var;
2620 }
2621 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache for (self: Object): nullable String */
2622 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__c_name_cache(val* self) {
2623 val* var /* : nullable String */;
2624 val* var1 /* : nullable String */;
2625 var1 = abstract_compiler__AbstractRuntimeFunction__c_name_cache(self);
2626 var = var1;
2627 RET_LABEL:;
2628 return var;
2629 }
2630 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache= for (self: AbstractRuntimeFunction, nullable String) */
2631 void abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d(val* self, val* p0) {
2632 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___64dc_name_cache].val = p0; /* @c_name_cache on <self:AbstractRuntimeFunction> */
2633 RET_LABEL:;
2634 }
2635 /* method abstract_compiler#AbstractRuntimeFunction#c_name_cache= for (self: Object, nullable String) */
2636 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d(val* self, val* p0) {
2637 abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d(self, p0);
2638 RET_LABEL:;
2639 }
2640 /* method abstract_compiler#AbstractRuntimeFunction#call for (self: AbstractRuntimeFunction, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2641 val* abstract_compiler__AbstractRuntimeFunction__call(val* self, val* p0, val* p1) {
2642 val* var /* : nullable RuntimeVariable */;
2643 short int var1 /* : Bool */;
2644 int cltype;
2645 int idtype;
2646 const struct type* type_struct;
2647 const char* var_class_name;
2648 const char* var_class_name2;
2649 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
2650 /* <p0:AbstractCompilerVisitor> isa VISITOR */
2651 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTVISITOR];
2652 cltype = type_struct->color;
2653 idtype = type_struct->id;
2654 if(cltype >= p0->type->table_size) {
2655 var1 = 0;
2656 } else {
2657 var1 = p0->type->type_table[cltype] == idtype;
2658 }
2659 if (!var1) {
2660 var_class_name = p0 == NULL ? "null" : p0->type->name;
2661 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
2662 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1241);
2663 show_backtrace(1);
2664 }
2665 var_class_name2 = self == NULL ? "null" : self->type->name;
2666 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "call", var_class_name2);
2667 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1241);
2668 show_backtrace(1);
2669 RET_LABEL:;
2670 return var;
2671 }
2672 /* method abstract_compiler#AbstractRuntimeFunction#call for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2673 val* VIRTUAL_abstract_compiler__AbstractRuntimeFunction__call(val* self, val* p0, val* p1) {
2674 val* var /* : nullable RuntimeVariable */;
2675 val* var1 /* : nullable RuntimeVariable */;
2676 var1 = abstract_compiler__AbstractRuntimeFunction__call(self, p0, p1);
2677 var = var1;
2678 RET_LABEL:;
2679 return var;
2680 }
2681 /* method abstract_compiler#AbstractRuntimeFunction#compile_to_c for (self: AbstractRuntimeFunction, AbstractCompiler) */
2682 void abstract_compiler__AbstractRuntimeFunction__compile_to_c(val* self, val* p0) {
2683 short int var /* : Bool */;
2684 int cltype;
2685 int idtype;
2686 const struct type* type_struct;
2687 const char* var_class_name;
2688 const char* var_class_name1;
2689 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
2690 /* <p0:AbstractCompiler> isa COMPILER */
2691 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
2692 cltype = type_struct->color;
2693 idtype = type_struct->id;
2694 if(cltype >= p0->type->table_size) {
2695 var = 0;
2696 } else {
2697 var = p0->type->type_table[cltype] == idtype;
2698 }
2699 if (!var) {
2700 var_class_name = p0 == NULL ? "null" : p0->type->name;
2701 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
2702 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1245);
2703 show_backtrace(1);
2704 }
2705 var_class_name1 = self == NULL ? "null" : self->type->name;
2706 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compile_to_c", var_class_name1);
2707 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1245);
2708 show_backtrace(1);
2709 RET_LABEL:;
2710 }
2711 /* method abstract_compiler#AbstractRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
2712 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__compile_to_c(val* self, val* p0) {
2713 abstract_compiler__AbstractRuntimeFunction__compile_to_c(self, p0);
2714 RET_LABEL:;
2715 }
2716 /* method abstract_compiler#AbstractRuntimeFunction#init for (self: AbstractRuntimeFunction, MMethodDef) */
2717 void abstract_compiler__AbstractRuntimeFunction__init(val* self, val* p0) {
2718 self->attrs[COLOR_abstract_compiler__AbstractRuntimeFunction___64dmmethoddef].val = p0; /* @mmethoddef on <self:AbstractRuntimeFunction> */
2719 RET_LABEL:;
2720 }
2721 /* method abstract_compiler#AbstractRuntimeFunction#init for (self: Object, MMethodDef) */
2722 void VIRTUAL_abstract_compiler__AbstractRuntimeFunction__init(val* self, val* p0) {
2723 abstract_compiler__AbstractRuntimeFunction__init(self, p0);
2724 RET_LABEL:;
2725 }
2726 /* method abstract_compiler#RuntimeVariable#name for (self: RuntimeVariable): String */
2727 val* abstract_compiler__RuntimeVariable__name(val* self) {
2728 val* var /* : String */;
2729 val* var1 /* : String */;
2730 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dname].val; /* @name on <self:RuntimeVariable> */
2731 if (var1 == NULL) {
2732 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
2733 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1255);
2734 show_backtrace(1);
2735 }
2736 var = var1;
2737 RET_LABEL:;
2738 return var;
2739 }
2740 /* method abstract_compiler#RuntimeVariable#name for (self: Object): String */
2741 val* VIRTUAL_abstract_compiler__RuntimeVariable__name(val* self) {
2742 val* var /* : String */;
2743 val* var1 /* : String */;
2744 var1 = abstract_compiler__RuntimeVariable__name(self);
2745 var = var1;
2746 RET_LABEL:;
2747 return var;
2748 }
2749 /* method abstract_compiler#RuntimeVariable#name= for (self: RuntimeVariable, String) */
2750 void abstract_compiler__RuntimeVariable__name_61d(val* self, val* p0) {
2751 self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dname].val = p0; /* @name on <self:RuntimeVariable> */
2752 RET_LABEL:;
2753 }
2754 /* method abstract_compiler#RuntimeVariable#name= for (self: Object, String) */
2755 void VIRTUAL_abstract_compiler__RuntimeVariable__name_61d(val* self, val* p0) {
2756 abstract_compiler__RuntimeVariable__name_61d(self, p0);
2757 RET_LABEL:;
2758 }
2759 /* method abstract_compiler#RuntimeVariable#mtype for (self: RuntimeVariable): MType */
2760 val* abstract_compiler__RuntimeVariable__mtype(val* self) {
2761 val* var /* : MType */;
2762 val* var1 /* : MType */;
2763 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dmtype].val; /* @mtype on <self:RuntimeVariable> */
2764 if (var1 == NULL) {
2765 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
2766 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1258);
2767 show_backtrace(1);
2768 }
2769 var = var1;
2770 RET_LABEL:;
2771 return var;
2772 }
2773 /* method abstract_compiler#RuntimeVariable#mtype for (self: Object): MType */
2774 val* VIRTUAL_abstract_compiler__RuntimeVariable__mtype(val* self) {
2775 val* var /* : MType */;
2776 val* var1 /* : MType */;
2777 var1 = abstract_compiler__RuntimeVariable__mtype(self);
2778 var = var1;
2779 RET_LABEL:;
2780 return var;
2781 }
2782 /* method abstract_compiler#RuntimeVariable#mtype= for (self: RuntimeVariable, MType) */
2783 void abstract_compiler__RuntimeVariable__mtype_61d(val* self, val* p0) {
2784 self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dmtype].val = p0; /* @mtype on <self:RuntimeVariable> */
2785 RET_LABEL:;
2786 }
2787 /* method abstract_compiler#RuntimeVariable#mtype= for (self: Object, MType) */
2788 void VIRTUAL_abstract_compiler__RuntimeVariable__mtype_61d(val* self, val* p0) {
2789 abstract_compiler__RuntimeVariable__mtype_61d(self, p0);
2790 RET_LABEL:;
2791 }
2792 /* method abstract_compiler#RuntimeVariable#mcasttype for (self: RuntimeVariable): MType */
2793 val* abstract_compiler__RuntimeVariable__mcasttype(val* self) {
2794 val* var /* : MType */;
2795 val* var1 /* : MType */;
2796 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dmcasttype].val; /* @mcasttype on <self:RuntimeVariable> */
2797 if (var1 == NULL) {
2798 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mcasttype");
2799 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1261);
2800 show_backtrace(1);
2801 }
2802 var = var1;
2803 RET_LABEL:;
2804 return var;
2805 }
2806 /* method abstract_compiler#RuntimeVariable#mcasttype for (self: Object): MType */
2807 val* VIRTUAL_abstract_compiler__RuntimeVariable__mcasttype(val* self) {
2808 val* var /* : MType */;
2809 val* var1 /* : MType */;
2810 var1 = abstract_compiler__RuntimeVariable__mcasttype(self);
2811 var = var1;
2812 RET_LABEL:;
2813 return var;
2814 }
2815 /* method abstract_compiler#RuntimeVariable#mcasttype= for (self: RuntimeVariable, MType) */
2816 void abstract_compiler__RuntimeVariable__mcasttype_61d(val* self, val* p0) {
2817 self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dmcasttype].val = p0; /* @mcasttype on <self:RuntimeVariable> */
2818 RET_LABEL:;
2819 }
2820 /* method abstract_compiler#RuntimeVariable#mcasttype= for (self: Object, MType) */
2821 void VIRTUAL_abstract_compiler__RuntimeVariable__mcasttype_61d(val* self, val* p0) {
2822 abstract_compiler__RuntimeVariable__mcasttype_61d(self, p0);
2823 RET_LABEL:;
2824 }
2825 /* method abstract_compiler#RuntimeVariable#is_exact for (self: RuntimeVariable): Bool */
2826 short int abstract_compiler__RuntimeVariable__is_exact(val* self) {
2827 short int var /* : Bool */;
2828 short int var1 /* : Bool */;
2829 var1 = self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dis_exact].s; /* @is_exact on <self:RuntimeVariable> */
2830 var = var1;
2831 RET_LABEL:;
2832 return var;
2833 }
2834 /* method abstract_compiler#RuntimeVariable#is_exact for (self: Object): Bool */
2835 short int VIRTUAL_abstract_compiler__RuntimeVariable__is_exact(val* self) {
2836 short int var /* : Bool */;
2837 short int var1 /* : Bool */;
2838 var1 = abstract_compiler__RuntimeVariable__is_exact(self);
2839 var = var1;
2840 RET_LABEL:;
2841 return var;
2842 }
2843 /* method abstract_compiler#RuntimeVariable#is_exact= for (self: RuntimeVariable, Bool) */
2844 void abstract_compiler__RuntimeVariable__is_exact_61d(val* self, short int p0) {
2845 self->attrs[COLOR_abstract_compiler__RuntimeVariable___64dis_exact].s = p0; /* @is_exact on <self:RuntimeVariable> */
2846 RET_LABEL:;
2847 }
2848 /* method abstract_compiler#RuntimeVariable#is_exact= for (self: Object, Bool) */
2849 void VIRTUAL_abstract_compiler__RuntimeVariable__is_exact_61d(val* self, short int p0) {
2850 abstract_compiler__RuntimeVariable__is_exact_61d(self, p0);
2851 RET_LABEL:;
2852 }
2853 /* method abstract_compiler#RuntimeVariable#init for (self: RuntimeVariable, String, MType, MType) */
2854 void abstract_compiler__RuntimeVariable__init(val* self, val* p0, val* p1, val* p2) {
2855 val* var_name /* var name: String */;
2856 val* var_mtype /* var mtype: MType */;
2857 val* var_mcasttype /* var mcasttype: MType */;
2858 short int var /* : Bool */;
2859 short int var1 /* : Bool */;
2860 short int var2 /* : Bool */;
2861 short int var3 /* : Bool */;
2862 var_name = p0;
2863 var_mtype = p1;
2864 var_mcasttype = p2;
2865 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__name_61d]))(self, var_name) /* name= on <self:RuntimeVariable>*/;
2866 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype_61d]))(self, var_mtype) /* mtype= on <self:RuntimeVariable>*/;
2867 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype_61d]))(self, var_mcasttype) /* mcasttype= on <self:RuntimeVariable>*/;
2868 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
2869 var1 = !var;
2870 if (!var1) {
2871 fprintf(stderr, "Runtime error: %s", "Assert failed");
2872 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1273);
2873 show_backtrace(1);
2874 }
2875 var2 = ((short int (*)(val*))(var_mcasttype->class->vft[COLOR_model__MType__need_anchor]))(var_mcasttype) /* need_anchor on <var_mcasttype:MType>*/;
2876 var3 = !var2;
2877 if (!var3) {
2878 fprintf(stderr, "Runtime error: %s", "Assert failed");
2879 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1274);
2880 show_backtrace(1);
2881 }
2882 RET_LABEL:;
2883 }
2884 /* method abstract_compiler#RuntimeVariable#init for (self: Object, String, MType, MType) */
2885 void VIRTUAL_abstract_compiler__RuntimeVariable__init(val* self, val* p0, val* p1, val* p2) {
2886 abstract_compiler__RuntimeVariable__init(self, p0, p1, p2);
2887 RET_LABEL:;
2888 }
2889 /* method abstract_compiler#RuntimeVariable#to_s for (self: RuntimeVariable): String */
2890 val* abstract_compiler__RuntimeVariable__to_s(val* self) {
2891 val* var /* : String */;
2892 val* var1 /* : String */;
2893 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(self) /* name on <self:RuntimeVariable>*/;
2894 var = var1;
2895 goto RET_LABEL;
2896 RET_LABEL:;
2897 return var;
2898 }
2899 /* method abstract_compiler#RuntimeVariable#to_s for (self: Object): String */
2900 val* VIRTUAL_abstract_compiler__RuntimeVariable__to_s(val* self) {
2901 val* var /* : String */;
2902 val* var1 /* : String */;
2903 var1 = abstract_compiler__RuntimeVariable__to_s(self);
2904 var = var1;
2905 RET_LABEL:;
2906 return var;
2907 }
2908 /* method abstract_compiler#RuntimeVariable#inspect for (self: RuntimeVariable): String */
2909 val* abstract_compiler__RuntimeVariable__inspect(val* self) {
2910 val* var /* : String */;
2911 short int var1 /* : Bool */;
2912 static val* varonce;
2913 val* var2 /* : String */;
2914 char* var3 /* : NativeString */;
2915 long var4 /* : Int */;
2916 val* var5 /* : String */;
2917 val* var_exact_str /* var exact_str: nullable Object */;
2918 static val* varonce6;
2919 val* var7 /* : String */;
2920 char* var8 /* : NativeString */;
2921 long var9 /* : Int */;
2922 val* var10 /* : String */;
2923 val* var11 /* : MType */;
2924 val* var12 /* : MType */;
2925 short int var13 /* : Bool */;
2926 val* var14 /* : MType */;
2927 val* var15 /* : Array[Object] */;
2928 long var16 /* : Int */;
2929 val* var17 /* : NativeArray[Object] */;
2930 val* var18 /* : String */;
2931 val* var_type_str /* var type_str: nullable Object */;
2932 val* var19 /* : MType */;
2933 static val* varonce20;
2934 val* var21 /* : String */;
2935 char* var22 /* : NativeString */;
2936 long var23 /* : Int */;
2937 val* var24 /* : String */;
2938 val* var25 /* : MType */;
2939 static val* varonce26;
2940 val* var27 /* : String */;
2941 char* var28 /* : NativeString */;
2942 long var29 /* : Int */;
2943 val* var30 /* : String */;
2944 val* var31 /* : Array[Object] */;
2945 long var32 /* : Int */;
2946 val* var33 /* : NativeArray[Object] */;
2947 val* var34 /* : String */;
2948 val* var35 /* : Array[Object] */;
2949 long var36 /* : Int */;
2950 val* var_ /* var : Array[Object] */;
2951 static val* varonce37;
2952 val* var38 /* : String */;
2953 char* var39 /* : NativeString */;
2954 long var40 /* : Int */;
2955 val* var41 /* : String */;
2956 val* var42 /* : String */;
2957 static val* varonce43;
2958 val* var44 /* : String */;
2959 char* var45 /* : NativeString */;
2960 long var46 /* : Int */;
2961 val* var47 /* : String */;
2962 static val* varonce48;
2963 val* var49 /* : String */;
2964 char* var50 /* : NativeString */;
2965 long var51 /* : Int */;
2966 val* var52 /* : String */;
2967 val* var53 /* : String */;
2968 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact]))(self) /* is_exact on <self:RuntimeVariable>*/;
2969 if (var1){
2970 if (varonce) {
2971 var2 = varonce;
2972 } else {
2973 var3 = " exact";
2974 var4 = 6;
2975 var5 = string__NativeString__to_s_with_length(var3, var4);
2976 var2 = var5;
2977 varonce = var2;
2978 }
2979 var_exact_str = var2;
2980 } else {
2981 if (varonce6) {
2982 var7 = varonce6;
2983 } else {
2984 var8 = "";
2985 var9 = 0;
2986 var10 = string__NativeString__to_s_with_length(var8, var9);
2987 var7 = var10;
2988 varonce6 = var7;
2989 }
2990 var_exact_str = var7;
2991 }
2992 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(self) /* mtype on <self:RuntimeVariable>*/;
2993 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(self) /* mcasttype on <self:RuntimeVariable>*/;
2994 var13 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var12) /* == on <var11:MType>*/;
2995 if (var13){
2996 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(self) /* mtype on <self:RuntimeVariable>*/;
2997 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
2998 { /* var15 = array_instance Array[Object] */
2999 var16 = 2;
3000 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
3001 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var14;
3002 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_exact_str;
3003 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
3004 }
3005 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
3006 var_type_str = var18;
3007 } else {
3008 var19 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(self) /* mtype on <self:RuntimeVariable>*/;
3009 if (varonce20) {
3010 var21 = varonce20;
3011 } else {
3012 var22 = "(";
3013 var23 = 1;
3014 var24 = string__NativeString__to_s_with_length(var22, var23);
3015 var21 = var24;
3016 varonce20 = var21;
3017 }
3018 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(self) /* mcasttype on <self:RuntimeVariable>*/;
3019 if (varonce26) {
3020 var27 = varonce26;
3021 } else {
3022 var28 = ")";
3023 var29 = 1;
3024 var30 = string__NativeString__to_s_with_length(var28, var29);
3025 var27 = var30;
3026 varonce26 = var27;
3027 }
3028 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
3029 { /* var31 = array_instance Array[Object] */
3030 var32 = 5;
3031 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
3032 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var19;
3033 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var21;
3034 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var25;
3035 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var_exact_str;
3036 ((struct instance_array__NativeArray*)var33)->values[4] = (val*) var27;
3037 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
3038 }
3039 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
3040 var_type_str = var34;
3041 }
3042 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
3043 var36 = 5;
3044 ((void (*)(val*, long))(var35->class->vft[COLOR_array__Array__with_capacity]))(var35, var36) /* with_capacity on <var35:Array[Object]>*/;
3045 var_ = var35;
3046 if (varonce37) {
3047 var38 = varonce37;
3048 } else {
3049 var39 = "<";
3050 var40 = 1;
3051 var41 = string__NativeString__to_s_with_length(var39, var40);
3052 var38 = var41;
3053 varonce37 = var38;
3054 }
3055 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var38) /* add on <var_:Array[Object]>*/;
3056 var42 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(self) /* name on <self:RuntimeVariable>*/;
3057 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var42) /* add on <var_:Array[Object]>*/;
3058 if (varonce43) {
3059 var44 = varonce43;
3060 } else {
3061 var45 = ":";
3062 var46 = 1;
3063 var47 = string__NativeString__to_s_with_length(var45, var46);
3064 var44 = var47;
3065 varonce43 = var44;
3066 }
3067 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var44) /* add on <var_:Array[Object]>*/;
3068 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_type_str) /* add on <var_:Array[Object]>*/;
3069 if (varonce48) {
3070 var49 = varonce48;
3071 } else {
3072 var50 = ">";
3073 var51 = 1;
3074 var52 = string__NativeString__to_s_with_length(var50, var51);
3075 var49 = var52;
3076 varonce48 = var49;
3077 }
3078 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var49) /* add on <var_:Array[Object]>*/;
3079 var53 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3080 var = var53;
3081 goto RET_LABEL;
3082 RET_LABEL:;
3083 return var;
3084 }
3085 /* method abstract_compiler#RuntimeVariable#inspect for (self: Object): String */
3086 val* VIRTUAL_abstract_compiler__RuntimeVariable__inspect(val* self) {
3087 val* var /* : String */;
3088 val* var1 /* : String */;
3089 var1 = abstract_compiler__RuntimeVariable__inspect(self);
3090 var = var1;
3091 RET_LABEL:;
3092 return var;
3093 }
3094 /* method abstract_compiler#Frame#visitor for (self: Frame): AbstractCompilerVisitor */
3095 val* abstract_compiler__Frame__visitor(val* self) {
3096 val* var /* : AbstractCompilerVisitor */;
3097 val* var1 /* : AbstractCompilerVisitor */;
3098 var1 = self->attrs[COLOR_abstract_compiler__Frame___64dvisitor].val; /* @visitor on <self:Frame> */
3099 if (var1 == NULL) {
3100 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visitor");
3101 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1302);
3102 show_backtrace(1);
3103 }
3104 var = var1;
3105 RET_LABEL:;
3106 return var;
3107 }
3108 /* method abstract_compiler#Frame#visitor for (self: Object): AbstractCompilerVisitor */
3109 val* VIRTUAL_abstract_compiler__Frame__visitor(val* self) {
3110 val* var /* : AbstractCompilerVisitor */;
3111 val* var1 /* : AbstractCompilerVisitor */;
3112 var1 = abstract_compiler__Frame__visitor(self);
3113 var = var1;
3114 RET_LABEL:;
3115 return var;
3116 }
3117 /* method abstract_compiler#Frame#visitor= for (self: Frame, AbstractCompilerVisitor) */
3118 void abstract_compiler__Frame__visitor_61d(val* self, val* p0) {
3119 short int var /* : Bool */;
3120 int cltype;
3121 int idtype;
3122 const struct type* type_struct;
3123 const char* var_class_name;
3124 /* Covariant cast for argument 0 (visitor) <p0:AbstractCompilerVisitor> isa VISITOR */
3125 /* <p0:AbstractCompilerVisitor> isa VISITOR */
3126 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__Frame_VTVISITOR];
3127 cltype = type_struct->color;
3128 idtype = type_struct->id;
3129 if(cltype >= p0->type->table_size) {
3130 var = 0;
3131 } else {
3132 var = p0->type->type_table[cltype] == idtype;
3133 }
3134 if (!var) {
3135 var_class_name = p0 == NULL ? "null" : p0->type->name;
3136 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
3137 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1302);
3138 show_backtrace(1);
3139 }
3140 self->attrs[COLOR_abstract_compiler__Frame___64dvisitor].val = p0; /* @visitor on <self:Frame> */
3141 RET_LABEL:;
3142 }
3143 /* method abstract_compiler#Frame#visitor= for (self: Object, AbstractCompilerVisitor) */
3144 void VIRTUAL_abstract_compiler__Frame__visitor_61d(val* self, val* p0) {
3145 abstract_compiler__Frame__visitor_61d(self, p0);
3146 RET_LABEL:;
3147 }
3148 /* method abstract_compiler#Frame#mpropdef for (self: Frame): MPropDef */
3149 val* abstract_compiler__Frame__mpropdef(val* self) {
3150 val* var /* : MPropDef */;
3151 val* var1 /* : MPropDef */;
3152 var1 = self->attrs[COLOR_abstract_compiler__Frame___64dmpropdef].val; /* @mpropdef on <self:Frame> */
3153 if (var1 == NULL) {
3154 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
3155 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1305);
3156 show_backtrace(1);
3157 }
3158 var = var1;
3159 RET_LABEL:;
3160 return var;
3161 }
3162 /* method abstract_compiler#Frame#mpropdef for (self: Object): MPropDef */
3163 val* VIRTUAL_abstract_compiler__Frame__mpropdef(val* self) {
3164 val* var /* : MPropDef */;
3165 val* var1 /* : MPropDef */;
3166 var1 = abstract_compiler__Frame__mpropdef(self);
3167 var = var1;
3168 RET_LABEL:;
3169 return var;
3170 }
3171 /* method abstract_compiler#Frame#mpropdef= for (self: Frame, MPropDef) */
3172 void abstract_compiler__Frame__mpropdef_61d(val* self, val* p0) {
3173 self->attrs[COLOR_abstract_compiler__Frame___64dmpropdef].val = p0; /* @mpropdef on <self:Frame> */
3174 RET_LABEL:;
3175 }
3176 /* method abstract_compiler#Frame#mpropdef= for (self: Object, MPropDef) */
3177 void VIRTUAL_abstract_compiler__Frame__mpropdef_61d(val* self, val* p0) {
3178 abstract_compiler__Frame__mpropdef_61d(self, p0);
3179 RET_LABEL:;
3180 }
3181 /* method abstract_compiler#Frame#receiver for (self: Frame): MClassType */
3182 val* abstract_compiler__Frame__receiver(val* self) {
3183 val* var /* : MClassType */;
3184 val* var1 /* : MClassType */;
3185 var1 = self->attrs[COLOR_abstract_compiler__Frame___64dreceiver].val; /* @receiver on <self:Frame> */
3186 if (var1 == NULL) {
3187 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @receiver");
3188 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1309);
3189 show_backtrace(1);
3190 }
3191 var = var1;
3192 RET_LABEL:;
3193 return var;
3194 }
3195 /* method abstract_compiler#Frame#receiver for (self: Object): MClassType */
3196 val* VIRTUAL_abstract_compiler__Frame__receiver(val* self) {
3197 val* var /* : MClassType */;
3198 val* var1 /* : MClassType */;
3199 var1 = abstract_compiler__Frame__receiver(self);
3200 var = var1;
3201 RET_LABEL:;
3202 return var;
3203 }
3204 /* method abstract_compiler#Frame#receiver= for (self: Frame, MClassType) */
3205 void abstract_compiler__Frame__receiver_61d(val* self, val* p0) {
3206 self->attrs[COLOR_abstract_compiler__Frame___64dreceiver].val = p0; /* @receiver on <self:Frame> */
3207 RET_LABEL:;
3208 }
3209 /* method abstract_compiler#Frame#receiver= for (self: Object, MClassType) */
3210 void VIRTUAL_abstract_compiler__Frame__receiver_61d(val* self, val* p0) {
3211 abstract_compiler__Frame__receiver_61d(self, p0);
3212 RET_LABEL:;
3213 }
3214 /* method abstract_compiler#Frame#arguments for (self: Frame): Array[RuntimeVariable] */
3215 val* abstract_compiler__Frame__arguments(val* self) {
3216 val* var /* : Array[RuntimeVariable] */;
3217 val* var1 /* : Array[RuntimeVariable] */;
3218 var1 = self->attrs[COLOR_abstract_compiler__Frame___64darguments].val; /* @arguments on <self:Frame> */
3219 if (var1 == NULL) {
3220 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @arguments");
3221 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1312);
3222 show_backtrace(1);
3223 }
3224 var = var1;
3225 RET_LABEL:;
3226 return var;
3227 }
3228 /* method abstract_compiler#Frame#arguments for (self: Object): Array[RuntimeVariable] */
3229 val* VIRTUAL_abstract_compiler__Frame__arguments(val* self) {
3230 val* var /* : Array[RuntimeVariable] */;
3231 val* var1 /* : Array[RuntimeVariable] */;
3232 var1 = abstract_compiler__Frame__arguments(self);
3233 var = var1;
3234 RET_LABEL:;
3235 return var;
3236 }
3237 /* method abstract_compiler#Frame#arguments= for (self: Frame, Array[RuntimeVariable]) */
3238 void abstract_compiler__Frame__arguments_61d(val* self, val* p0) {
3239 self->attrs[COLOR_abstract_compiler__Frame___64darguments].val = p0; /* @arguments on <self:Frame> */
3240 RET_LABEL:;
3241 }
3242 /* method abstract_compiler#Frame#arguments= for (self: Object, Array[RuntimeVariable]) */
3243 void VIRTUAL_abstract_compiler__Frame__arguments_61d(val* self, val* p0) {
3244 abstract_compiler__Frame__arguments_61d(self, p0);
3245 RET_LABEL:;
3246 }
3247 /* method abstract_compiler#Frame#returnvar for (self: Frame): nullable RuntimeVariable */
3248 val* abstract_compiler__Frame__returnvar(val* self) {
3249 val* var /* : nullable RuntimeVariable */;
3250 val* var1 /* : nullable RuntimeVariable */;
3251 var1 = self->attrs[COLOR_abstract_compiler__Frame___64dreturnvar].val; /* @returnvar on <self:Frame> */
3252 var = var1;
3253 RET_LABEL:;
3254 return var;
3255 }
3256 /* method abstract_compiler#Frame#returnvar for (self: Object): nullable RuntimeVariable */
3257 val* VIRTUAL_abstract_compiler__Frame__returnvar(val* self) {
3258 val* var /* : nullable RuntimeVariable */;
3259 val* var1 /* : nullable RuntimeVariable */;
3260 var1 = abstract_compiler__Frame__returnvar(self);
3261 var = var1;
3262 RET_LABEL:;
3263 return var;
3264 }
3265 /* method abstract_compiler#Frame#returnvar= for (self: Frame, nullable RuntimeVariable) */
3266 void abstract_compiler__Frame__returnvar_61d(val* self, val* p0) {
3267 self->attrs[COLOR_abstract_compiler__Frame___64dreturnvar].val = p0; /* @returnvar on <self:Frame> */
3268 RET_LABEL:;
3269 }
3270 /* method abstract_compiler#Frame#returnvar= for (self: Object, nullable RuntimeVariable) */
3271 void VIRTUAL_abstract_compiler__Frame__returnvar_61d(val* self, val* p0) {
3272 abstract_compiler__Frame__returnvar_61d(self, p0);
3273 RET_LABEL:;
3274 }
3275 /* method abstract_compiler#Frame#returnlabel for (self: Frame): nullable String */
3276 val* abstract_compiler__Frame__returnlabel(val* self) {
3277 val* var /* : nullable String */;
3278 val* var1 /* : nullable String */;
3279 var1 = self->attrs[COLOR_abstract_compiler__Frame___64dreturnlabel].val; /* @returnlabel on <self:Frame> */
3280 var = var1;
3281 RET_LABEL:;
3282 return var;
3283 }
3284 /* method abstract_compiler#Frame#returnlabel for (self: Object): nullable String */
3285 val* VIRTUAL_abstract_compiler__Frame__returnlabel(val* self) {
3286 val* var /* : nullable String */;
3287 val* var1 /* : nullable String */;
3288 var1 = abstract_compiler__Frame__returnlabel(self);
3289 var = var1;
3290 RET_LABEL:;
3291 return var;
3292 }
3293 /* method abstract_compiler#Frame#returnlabel= for (self: Frame, nullable String) */
3294 void abstract_compiler__Frame__returnlabel_61d(val* self, val* p0) {
3295 self->attrs[COLOR_abstract_compiler__Frame___64dreturnlabel].val = p0; /* @returnlabel on <self:Frame> */
3296 RET_LABEL:;
3297 }
3298 /* method abstract_compiler#Frame#returnlabel= for (self: Object, nullable String) */
3299 void VIRTUAL_abstract_compiler__Frame__returnlabel_61d(val* self, val* p0) {
3300 abstract_compiler__Frame__returnlabel_61d(self, p0);
3301 RET_LABEL:;
3302 }
3303 /* method abstract_compiler#Frame#init for (self: Frame, AbstractCompilerVisitor, MPropDef, MClassType, Array[RuntimeVariable]) */
3304 void abstract_compiler__Frame__init(val* self, val* p0, val* p1, val* p2, val* p3) {
3305 short int var /* : Bool */;
3306 int cltype;
3307 int idtype;
3308 const struct type* type_struct;
3309 const char* var_class_name;
3310 /* Covariant cast for argument 0 (visitor) <p0:AbstractCompilerVisitor> isa VISITOR */
3311 /* <p0:AbstractCompilerVisitor> isa VISITOR */
3312 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__Frame_VTVISITOR];
3313 cltype = type_struct->color;
3314 idtype = type_struct->id;
3315 if(cltype >= p0->type->table_size) {
3316 var = 0;
3317 } else {
3318 var = p0->type->type_table[cltype] == idtype;
3319 }
3320 if (!var) {
3321 var_class_name = p0 == NULL ? "null" : p0->type->name;
3322 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
3323 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1297);
3324 show_backtrace(1);
3325 }
3326 self->attrs[COLOR_abstract_compiler__Frame___64dvisitor].val = p0; /* @visitor on <self:Frame> */
3327 self->attrs[COLOR_abstract_compiler__Frame___64dmpropdef].val = p1; /* @mpropdef on <self:Frame> */
3328 self->attrs[COLOR_abstract_compiler__Frame___64dreceiver].val = p2; /* @receiver on <self:Frame> */
3329 self->attrs[COLOR_abstract_compiler__Frame___64darguments].val = p3; /* @arguments on <self:Frame> */
3330 RET_LABEL:;
3331 }
3332 /* method abstract_compiler#Frame#init for (self: Object, AbstractCompilerVisitor, MPropDef, MClassType, Array[RuntimeVariable]) */
3333 void VIRTUAL_abstract_compiler__Frame__init(val* self, val* p0, val* p1, val* p2, val* p3) {
3334 abstract_compiler__Frame__init(self, p0, p1, p2, p3);
3335 RET_LABEL:;
3336 }
3337 /* method abstract_compiler#MType#ctype for (self: MType): String */
3338 val* abstract_compiler__MType__ctype(val* self) {
3339 val* var /* : String */;
3340 static val* varonce;
3341 val* var1 /* : String */;
3342 char* var2 /* : NativeString */;
3343 long var3 /* : Int */;
3344 val* var4 /* : String */;
3345 if (varonce) {
3346 var1 = varonce;
3347 } else {
3348 var2 = "val*";
3349 var3 = 4;
3350 var4 = string__NativeString__to_s_with_length(var2, var3);
3351 var1 = var4;
3352 varonce = var1;
3353 }
3354 var = var1;
3355 goto RET_LABEL;
3356 RET_LABEL:;
3357 return var;
3358 }
3359 /* method abstract_compiler#MType#ctype for (self: Object): String */
3360 val* VIRTUAL_abstract_compiler__MType__ctype(val* self) {
3361 val* var /* : String */;
3362 val* var1 /* : String */;
3363 var1 = abstract_compiler__MType__ctype(self);
3364 var = var1;
3365 RET_LABEL:;
3366 return var;
3367 }
3368 /* method abstract_compiler#MType#ctypename for (self: MType): String */
3369 val* abstract_compiler__MType__ctypename(val* self) {
3370 val* var /* : String */;
3371 static val* varonce;
3372 val* var1 /* : String */;
3373 char* var2 /* : NativeString */;
3374 long var3 /* : Int */;
3375 val* var4 /* : String */;
3376 if (varonce) {
3377 var1 = varonce;
3378 } else {
3379 var2 = "val";
3380 var3 = 3;
3381 var4 = string__NativeString__to_s_with_length(var2, var3);
3382 var1 = var4;
3383 varonce = var1;
3384 }
3385 var = var1;
3386 goto RET_LABEL;
3387 RET_LABEL:;
3388 return var;
3389 }
3390 /* method abstract_compiler#MType#ctypename for (self: Object): String */
3391 val* VIRTUAL_abstract_compiler__MType__ctypename(val* self) {
3392 val* var /* : String */;
3393 val* var1 /* : String */;
3394 var1 = abstract_compiler__MType__ctypename(self);
3395 var = var1;
3396 RET_LABEL:;
3397 return var;
3398 }
3399 /* method abstract_compiler#MType#c_name for (self: MType): String */
3400 val* abstract_compiler__MType__c_name(val* self) {
3401 val* var /* : String */;
3402 const char* var_class_name;
3403 var_class_name = self == NULL ? "null" : self->type->name;
3404 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "c_name", var_class_name);
3405 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1328);
3406 show_backtrace(1);
3407 RET_LABEL:;
3408 return var;
3409 }
3410 /* method abstract_compiler#MType#c_name for (self: Object): String */
3411 val* VIRTUAL_abstract_compiler__MType__c_name(val* self) {
3412 val* var /* : String */;
3413 val* var1 /* : String */;
3414 var1 = abstract_compiler__MType__c_name(self);
3415 var = var1;
3416 RET_LABEL:;
3417 return var;
3418 }
3419 /* method abstract_compiler#MType#c_name_cache for (self: MType): nullable String */
3420 val* abstract_compiler__MType__c_name_cache(val* self) {
3421 val* var /* : nullable String */;
3422 val* var1 /* : nullable String */;
3423 var1 = self->attrs[COLOR_abstract_compiler__MType___64dc_name_cache].val; /* @c_name_cache on <self:MType> */
3424 var = var1;
3425 RET_LABEL:;
3426 return var;
3427 }
3428 /* method abstract_compiler#MType#c_name_cache for (self: Object): nullable String */
3429 val* VIRTUAL_abstract_compiler__MType__c_name_cache(val* self) {
3430 val* var /* : nullable String */;
3431 val* var1 /* : nullable String */;
3432 var1 = abstract_compiler__MType__c_name_cache(self);
3433 var = var1;
3434 RET_LABEL:;
3435 return var;
3436 }
3437 /* method abstract_compiler#MType#c_name_cache= for (self: MType, nullable String) */
3438 void abstract_compiler__MType__c_name_cache_61d(val* self, val* p0) {
3439 self->attrs[COLOR_abstract_compiler__MType___64dc_name_cache].val = p0; /* @c_name_cache on <self:MType> */
3440 RET_LABEL:;
3441 }
3442 /* method abstract_compiler#MType#c_name_cache= for (self: Object, nullable String) */
3443 void VIRTUAL_abstract_compiler__MType__c_name_cache_61d(val* self, val* p0) {
3444 abstract_compiler__MType__c_name_cache_61d(self, p0);
3445 RET_LABEL:;
3446 }
3447 /* method abstract_compiler#MClassType#c_name for (self: MClassType): String */
3448 val* abstract_compiler__MClassType__c_name(val* self) {
3449 val* var /* : String */;
3450 val* var1 /* : nullable String */;
3451 val* var_res /* var res: nullable String */;
3452 val* var2 /* : null */;
3453 short int var3 /* : Bool */;
3454 val* var4 /* : Array[Object] */;
3455 long var5 /* : Int */;
3456 val* var_ /* var : Array[Object] */;
3457 static val* varonce;
3458 val* var6 /* : String */;
3459 char* var7 /* : NativeString */;
3460 long var8 /* : Int */;
3461 val* var9 /* : String */;
3462 val* var10 /* : MClass */;
3463 val* var11 /* : MModule */;
3464 val* var12 /* : String */;
3465 val* var13 /* : String */;
3466 static val* varonce14;
3467 val* var15 /* : String */;
3468 char* var16 /* : NativeString */;
3469 long var17 /* : Int */;
3470 val* var18 /* : String */;
3471 val* var19 /* : MClass */;
3472 val* var20 /* : String */;
3473 val* var21 /* : String */;
3474 static val* varonce22;
3475 val* var23 /* : String */;
3476 char* var24 /* : NativeString */;
3477 long var25 /* : Int */;
3478 val* var26 /* : String */;
3479 val* var27 /* : String */;
3480 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache]))(self) /* c_name_cache on <self:MClassType>*/;
3481 var_res = var1;
3482 var2 = NULL;
3483 if (var_res == NULL) {
3484 var3 = 0; /* is null */
3485 } else {
3486 var3 = 1; /* arg is null and recv is not */
3487 }
3488 if (var3){
3489 var = var_res;
3490 goto RET_LABEL;
3491 } else {
3492 }
3493 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
3494 var5 = 5;
3495 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
3496 var_ = var4;
3497 if (varonce) {
3498 var6 = varonce;
3499 } else {
3500 var7 = "";
3501 var8 = 0;
3502 var9 = string__NativeString__to_s_with_length(var7, var8);
3503 var6 = var9;
3504 varonce = var6;
3505 }
3506 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
3507 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3508 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClass__intro_mmodule]))(var10) /* intro_mmodule on <var10:MClass>*/;
3509 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_mmodule__MModule__name]))(var11) /* name on <var11:MModule>*/;
3510 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_string__AbstractString__to_cmangle]))(var12) /* to_cmangle on <var12:String>*/;
3511 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
3512 if (varonce14) {
3513 var15 = varonce14;
3514 } else {
3515 var16 = "__";
3516 var17 = 2;
3517 var18 = string__NativeString__to_s_with_length(var16, var17);
3518 var15 = var18;
3519 varonce14 = var15;
3520 }
3521 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
3522 var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3523 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MClass__name]))(var19) /* name on <var19:MClass>*/;
3524 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_string__AbstractString__to_cmangle]))(var20) /* to_cmangle on <var20:String>*/;
3525 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on <var_:Array[Object]>*/;
3526 if (varonce22) {
3527 var23 = varonce22;
3528 } else {
3529 var24 = "";
3530 var25 = 0;
3531 var26 = string__NativeString__to_s_with_length(var24, var25);
3532 var23 = var26;
3533 varonce22 = var23;
3534 }
3535 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
3536 var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3537 var_res = var27;
3538 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MClassType>*/;
3539 var = var_res;
3540 goto RET_LABEL;
3541 RET_LABEL:;
3542 return var;
3543 }
3544 /* method abstract_compiler#MClassType#c_name for (self: Object): String */
3545 val* VIRTUAL_abstract_compiler__MClassType__c_name(val* self) {
3546 val* var /* : String */;
3547 val* var1 /* : String */;
3548 var1 = abstract_compiler__MClassType__c_name(self);
3549 var = var1;
3550 RET_LABEL:;
3551 return var;
3552 }
3553 /* method abstract_compiler#MClassType#ctype for (self: MClassType): String */
3554 val* abstract_compiler__MClassType__ctype(val* self) {
3555 val* var /* : String */;
3556 val* var1 /* : MClass */;
3557 val* var2 /* : String */;
3558 static val* varonce;
3559 val* var3 /* : String */;
3560 char* var4 /* : NativeString */;
3561 long var5 /* : Int */;
3562 val* var6 /* : String */;
3563 short int var7 /* : Bool */;
3564 static val* varonce8;
3565 val* var9 /* : String */;
3566 char* var10 /* : NativeString */;
3567 long var11 /* : Int */;
3568 val* var12 /* : String */;
3569 val* var13 /* : MClass */;
3570 val* var14 /* : String */;
3571 static val* varonce15;
3572 val* var16 /* : String */;
3573 char* var17 /* : NativeString */;
3574 long var18 /* : Int */;
3575 val* var19 /* : String */;
3576 short int var20 /* : Bool */;
3577 static val* varonce21;
3578 val* var22 /* : String */;
3579 char* var23 /* : NativeString */;
3580 long var24 /* : Int */;
3581 val* var25 /* : String */;
3582 val* var26 /* : MClass */;
3583 val* var27 /* : String */;
3584 static val* varonce28;
3585 val* var29 /* : String */;
3586 char* var30 /* : NativeString */;
3587 long var31 /* : Int */;
3588 val* var32 /* : String */;
3589 short int var33 /* : Bool */;
3590 static val* varonce34;
3591 val* var35 /* : String */;
3592 char* var36 /* : NativeString */;
3593 long var37 /* : Int */;
3594 val* var38 /* : String */;
3595 val* var39 /* : MClass */;
3596 val* var40 /* : String */;
3597 static val* varonce41;
3598 val* var42 /* : String */;
3599 char* var43 /* : NativeString */;
3600 long var44 /* : Int */;
3601 val* var45 /* : String */;
3602 short int var46 /* : Bool */;
3603 static val* varonce47;
3604 val* var48 /* : String */;
3605 char* var49 /* : NativeString */;
3606 long var50 /* : Int */;
3607 val* var51 /* : String */;
3608 val* var52 /* : MClass */;
3609 val* var53 /* : String */;
3610 static val* varonce54;
3611 val* var55 /* : String */;
3612 char* var56 /* : NativeString */;
3613 long var57 /* : Int */;
3614 val* var58 /* : String */;
3615 short int var59 /* : Bool */;
3616 static val* varonce60;
3617 val* var61 /* : String */;
3618 char* var62 /* : NativeString */;
3619 long var63 /* : Int */;
3620 val* var64 /* : String */;
3621 val* var65 /* : MClass */;
3622 val* var66 /* : String */;
3623 static val* varonce67;
3624 val* var68 /* : String */;
3625 char* var69 /* : NativeString */;
3626 long var70 /* : Int */;
3627 val* var71 /* : String */;
3628 short int var72 /* : Bool */;
3629 static val* varonce73;
3630 val* var74 /* : String */;
3631 char* var75 /* : NativeString */;
3632 long var76 /* : Int */;
3633 val* var77 /* : String */;
3634 val* var78 /* : MClass */;
3635 val* var79 /* : MClassKind */;
3636 val* var80 /* : MClassKind */;
3637 short int var81 /* : Bool */;
3638 static val* varonce82;
3639 val* var83 /* : String */;
3640 char* var84 /* : NativeString */;
3641 long var85 /* : Int */;
3642 val* var86 /* : String */;
3643 static val* varonce87;
3644 val* var88 /* : String */;
3645 char* var89 /* : NativeString */;
3646 long var90 /* : Int */;
3647 val* var91 /* : String */;
3648 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3649 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__name]))(var1) /* name on <var1:MClass>*/;
3650 if (varonce) {
3651 var3 = varonce;
3652 } else {
3653 var4 = "Int";
3654 var5 = 3;
3655 var6 = string__NativeString__to_s_with_length(var4, var5);
3656 var3 = var6;
3657 varonce = var3;
3658 }
3659 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
3660 if (var7){
3661 if (varonce8) {
3662 var9 = varonce8;
3663 } else {
3664 var10 = "long";
3665 var11 = 4;
3666 var12 = string__NativeString__to_s_with_length(var10, var11);
3667 var9 = var12;
3668 varonce8 = var9;
3669 }
3670 var = var9;
3671 goto RET_LABEL;
3672 } else {
3673 var13 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3674 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__name]))(var13) /* name on <var13:MClass>*/;
3675 if (varonce15) {
3676 var16 = varonce15;
3677 } else {
3678 var17 = "Bool";
3679 var18 = 4;
3680 var19 = string__NativeString__to_s_with_length(var17, var18);
3681 var16 = var19;
3682 varonce15 = var16;
3683 }
3684 var20 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var16) /* == on <var14:String>*/;
3685 if (var20){
3686 if (varonce21) {
3687 var22 = varonce21;
3688 } else {
3689 var23 = "short int";
3690 var24 = 9;
3691 var25 = string__NativeString__to_s_with_length(var23, var24);
3692 var22 = var25;
3693 varonce21 = var22;
3694 }
3695 var = var22;
3696 goto RET_LABEL;
3697 } else {
3698 var26 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3699 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClass__name]))(var26) /* name on <var26:MClass>*/;
3700 if (varonce28) {
3701 var29 = varonce28;
3702 } else {
3703 var30 = "Char";
3704 var31 = 4;
3705 var32 = string__NativeString__to_s_with_length(var30, var31);
3706 var29 = var32;
3707 varonce28 = var29;
3708 }
3709 var33 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var29) /* == on <var27:String>*/;
3710 if (var33){
3711 if (varonce34) {
3712 var35 = varonce34;
3713 } else {
3714 var36 = "char";
3715 var37 = 4;
3716 var38 = string__NativeString__to_s_with_length(var36, var37);
3717 var35 = var38;
3718 varonce34 = var35;
3719 }
3720 var = var35;
3721 goto RET_LABEL;
3722 } else {
3723 var39 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3724 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_model__MClass__name]))(var39) /* name on <var39:MClass>*/;
3725 if (varonce41) {
3726 var42 = varonce41;
3727 } else {
3728 var43 = "Float";
3729 var44 = 5;
3730 var45 = string__NativeString__to_s_with_length(var43, var44);
3731 var42 = var45;
3732 varonce41 = var42;
3733 }
3734 var46 = ((short int (*)(val*, val*))(var40->class->vft[COLOR_kernel__Object___61d_61d]))(var40, var42) /* == on <var40:String>*/;
3735 if (var46){
3736 if (varonce47) {
3737 var48 = varonce47;
3738 } else {
3739 var49 = "double";
3740 var50 = 6;
3741 var51 = string__NativeString__to_s_with_length(var49, var50);
3742 var48 = var51;
3743 varonce47 = var48;
3744 }
3745 var = var48;
3746 goto RET_LABEL;
3747 } else {
3748 var52 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3749 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MClass__name]))(var52) /* name on <var52:MClass>*/;
3750 if (varonce54) {
3751 var55 = varonce54;
3752 } else {
3753 var56 = "NativeString";
3754 var57 = 12;
3755 var58 = string__NativeString__to_s_with_length(var56, var57);
3756 var55 = var58;
3757 varonce54 = var55;
3758 }
3759 var59 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_kernel__Object___61d_61d]))(var53, var55) /* == on <var53:String>*/;
3760 if (var59){
3761 if (varonce60) {
3762 var61 = varonce60;
3763 } else {
3764 var62 = "char*";
3765 var63 = 5;
3766 var64 = string__NativeString__to_s_with_length(var62, var63);
3767 var61 = var64;
3768 varonce60 = var61;
3769 }
3770 var = var61;
3771 goto RET_LABEL;
3772 } else {
3773 var65 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3774 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_model__MClass__name]))(var65) /* name on <var65:MClass>*/;
3775 if (varonce67) {
3776 var68 = varonce67;
3777 } else {
3778 var69 = "NativeArray";
3779 var70 = 11;
3780 var71 = string__NativeString__to_s_with_length(var69, var70);
3781 var68 = var71;
3782 varonce67 = var68;
3783 }
3784 var72 = ((short int (*)(val*, val*))(var66->class->vft[COLOR_kernel__Object___61d_61d]))(var66, var68) /* == on <var66:String>*/;
3785 if (var72){
3786 if (varonce73) {
3787 var74 = varonce73;
3788 } else {
3789 var75 = "val*";
3790 var76 = 4;
3791 var77 = string__NativeString__to_s_with_length(var75, var76);
3792 var74 = var77;
3793 varonce73 = var74;
3794 }
3795 var = var74;
3796 goto RET_LABEL;
3797 } else {
3798 var78 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3799 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_model__MClass__kind]))(var78) /* kind on <var78:MClass>*/;
3800 var80 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:MClassType>*/;
3801 var81 = ((short int (*)(val*, val*))(var79->class->vft[COLOR_kernel__Object___61d_61d]))(var79, var80) /* == on <var79:MClassKind>*/;
3802 if (var81){
3803 if (varonce82) {
3804 var83 = varonce82;
3805 } else {
3806 var84 = "void*";
3807 var85 = 5;
3808 var86 = string__NativeString__to_s_with_length(var84, var85);
3809 var83 = var86;
3810 varonce82 = var83;
3811 }
3812 var = var83;
3813 goto RET_LABEL;
3814 } else {
3815 if (varonce87) {
3816 var88 = varonce87;
3817 } else {
3818 var89 = "val*";
3819 var90 = 4;
3820 var91 = string__NativeString__to_s_with_length(var89, var90);
3821 var88 = var91;
3822 varonce87 = var88;
3823 }
3824 var = var88;
3825 goto RET_LABEL;
3826 }
3827 }
3828 }
3829 }
3830 }
3831 }
3832 }
3833 RET_LABEL:;
3834 return var;
3835 }
3836 /* method abstract_compiler#MClassType#ctype for (self: Object): String */
3837 val* VIRTUAL_abstract_compiler__MClassType__ctype(val* self) {
3838 val* var /* : String */;
3839 val* var1 /* : String */;
3840 var1 = abstract_compiler__MClassType__ctype(self);
3841 var = var1;
3842 RET_LABEL:;
3843 return var;
3844 }
3845 /* method abstract_compiler#MClassType#ctypename for (self: MClassType): String */
3846 val* abstract_compiler__MClassType__ctypename(val* self) {
3847 val* var /* : String */;
3848 val* var1 /* : MClass */;
3849 val* var2 /* : String */;
3850 static val* varonce;
3851 val* var3 /* : String */;
3852 char* var4 /* : NativeString */;
3853 long var5 /* : Int */;
3854 val* var6 /* : String */;
3855 short int var7 /* : Bool */;
3856 static val* varonce8;
3857 val* var9 /* : String */;
3858 char* var10 /* : NativeString */;
3859 long var11 /* : Int */;
3860 val* var12 /* : String */;
3861 val* var13 /* : MClass */;
3862 val* var14 /* : String */;
3863 static val* varonce15;
3864 val* var16 /* : String */;
3865 char* var17 /* : NativeString */;
3866 long var18 /* : Int */;
3867 val* var19 /* : String */;
3868 short int var20 /* : Bool */;
3869 static val* varonce21;
3870 val* var22 /* : String */;
3871 char* var23 /* : NativeString */;
3872 long var24 /* : Int */;
3873 val* var25 /* : String */;
3874 val* var26 /* : MClass */;
3875 val* var27 /* : String */;
3876 static val* varonce28;
3877 val* var29 /* : String */;
3878 char* var30 /* : NativeString */;
3879 long var31 /* : Int */;
3880 val* var32 /* : String */;
3881 short int var33 /* : Bool */;
3882 static val* varonce34;
3883 val* var35 /* : String */;
3884 char* var36 /* : NativeString */;
3885 long var37 /* : Int */;
3886 val* var38 /* : String */;
3887 val* var39 /* : MClass */;
3888 val* var40 /* : String */;
3889 static val* varonce41;
3890 val* var42 /* : String */;
3891 char* var43 /* : NativeString */;
3892 long var44 /* : Int */;
3893 val* var45 /* : String */;
3894 short int var46 /* : Bool */;
3895 static val* varonce47;
3896 val* var48 /* : String */;
3897 char* var49 /* : NativeString */;
3898 long var50 /* : Int */;
3899 val* var51 /* : String */;
3900 val* var52 /* : MClass */;
3901 val* var53 /* : String */;
3902 static val* varonce54;
3903 val* var55 /* : String */;
3904 char* var56 /* : NativeString */;
3905 long var57 /* : Int */;
3906 val* var58 /* : String */;
3907 short int var59 /* : Bool */;
3908 static val* varonce60;
3909 val* var61 /* : String */;
3910 char* var62 /* : NativeString */;
3911 long var63 /* : Int */;
3912 val* var64 /* : String */;
3913 val* var65 /* : MClass */;
3914 val* var66 /* : String */;
3915 static val* varonce67;
3916 val* var68 /* : String */;
3917 char* var69 /* : NativeString */;
3918 long var70 /* : Int */;
3919 val* var71 /* : String */;
3920 short int var72 /* : Bool */;
3921 static val* varonce73;
3922 val* var74 /* : String */;
3923 char* var75 /* : NativeString */;
3924 long var76 /* : Int */;
3925 val* var77 /* : String */;
3926 val* var78 /* : MClass */;
3927 val* var79 /* : MClassKind */;
3928 val* var80 /* : MClassKind */;
3929 short int var81 /* : Bool */;
3930 static val* varonce82;
3931 val* var83 /* : String */;
3932 char* var84 /* : NativeString */;
3933 long var85 /* : Int */;
3934 val* var86 /* : String */;
3935 static val* varonce87;
3936 val* var88 /* : String */;
3937 char* var89 /* : NativeString */;
3938 long var90 /* : Int */;
3939 val* var91 /* : String */;
3940 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3941 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__name]))(var1) /* name on <var1:MClass>*/;
3942 if (varonce) {
3943 var3 = varonce;
3944 } else {
3945 var4 = "Int";
3946 var5 = 3;
3947 var6 = string__NativeString__to_s_with_length(var4, var5);
3948 var3 = var6;
3949 varonce = var3;
3950 }
3951 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
3952 if (var7){
3953 if (varonce8) {
3954 var9 = varonce8;
3955 } else {
3956 var10 = "l";
3957 var11 = 1;
3958 var12 = string__NativeString__to_s_with_length(var10, var11);
3959 var9 = var12;
3960 varonce8 = var9;
3961 }
3962 var = var9;
3963 goto RET_LABEL;
3964 } else {
3965 var13 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3966 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__name]))(var13) /* name on <var13:MClass>*/;
3967 if (varonce15) {
3968 var16 = varonce15;
3969 } else {
3970 var17 = "Bool";
3971 var18 = 4;
3972 var19 = string__NativeString__to_s_with_length(var17, var18);
3973 var16 = var19;
3974 varonce15 = var16;
3975 }
3976 var20 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var16) /* == on <var14:String>*/;
3977 if (var20){
3978 if (varonce21) {
3979 var22 = varonce21;
3980 } else {
3981 var23 = "s";
3982 var24 = 1;
3983 var25 = string__NativeString__to_s_with_length(var23, var24);
3984 var22 = var25;
3985 varonce21 = var22;
3986 }
3987 var = var22;
3988 goto RET_LABEL;
3989 } else {
3990 var26 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3991 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClass__name]))(var26) /* name on <var26:MClass>*/;
3992 if (varonce28) {
3993 var29 = varonce28;
3994 } else {
3995 var30 = "Char";
3996 var31 = 4;
3997 var32 = string__NativeString__to_s_with_length(var30, var31);
3998 var29 = var32;
3999 varonce28 = var29;
4000 }
4001 var33 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var29) /* == on <var27:String>*/;
4002 if (var33){
4003 if (varonce34) {
4004 var35 = varonce34;
4005 } else {
4006 var36 = "c";
4007 var37 = 1;
4008 var38 = string__NativeString__to_s_with_length(var36, var37);
4009 var35 = var38;
4010 varonce34 = var35;
4011 }
4012 var = var35;
4013 goto RET_LABEL;
4014 } else {
4015 var39 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4016 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_model__MClass__name]))(var39) /* name on <var39:MClass>*/;
4017 if (varonce41) {
4018 var42 = varonce41;
4019 } else {
4020 var43 = "Float";
4021 var44 = 5;
4022 var45 = string__NativeString__to_s_with_length(var43, var44);
4023 var42 = var45;
4024 varonce41 = var42;
4025 }
4026 var46 = ((short int (*)(val*, val*))(var40->class->vft[COLOR_kernel__Object___61d_61d]))(var40, var42) /* == on <var40:String>*/;
4027 if (var46){
4028 if (varonce47) {
4029 var48 = varonce47;
4030 } else {
4031 var49 = "d";
4032 var50 = 1;
4033 var51 = string__NativeString__to_s_with_length(var49, var50);
4034 var48 = var51;
4035 varonce47 = var48;
4036 }
4037 var = var48;
4038 goto RET_LABEL;
4039 } else {
4040 var52 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4041 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MClass__name]))(var52) /* name on <var52:MClass>*/;
4042 if (varonce54) {
4043 var55 = varonce54;
4044 } else {
4045 var56 = "NativeString";
4046 var57 = 12;
4047 var58 = string__NativeString__to_s_with_length(var56, var57);
4048 var55 = var58;
4049 varonce54 = var55;
4050 }
4051 var59 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_kernel__Object___61d_61d]))(var53, var55) /* == on <var53:String>*/;
4052 if (var59){
4053 if (varonce60) {
4054 var61 = varonce60;
4055 } else {
4056 var62 = "str";
4057 var63 = 3;
4058 var64 = string__NativeString__to_s_with_length(var62, var63);
4059 var61 = var64;
4060 varonce60 = var61;
4061 }
4062 var = var61;
4063 goto RET_LABEL;
4064 } else {
4065 var65 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4066 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_model__MClass__name]))(var65) /* name on <var65:MClass>*/;
4067 if (varonce67) {
4068 var68 = varonce67;
4069 } else {
4070 var69 = "NativeArray";
4071 var70 = 11;
4072 var71 = string__NativeString__to_s_with_length(var69, var70);
4073 var68 = var71;
4074 varonce67 = var68;
4075 }
4076 var72 = ((short int (*)(val*, val*))(var66->class->vft[COLOR_kernel__Object___61d_61d]))(var66, var68) /* == on <var66:String>*/;
4077 if (var72){
4078 if (varonce73) {
4079 var74 = varonce73;
4080 } else {
4081 var75 = "val";
4082 var76 = 3;
4083 var77 = string__NativeString__to_s_with_length(var75, var76);
4084 var74 = var77;
4085 varonce73 = var74;
4086 }
4087 var = var74;
4088 goto RET_LABEL;
4089 } else {
4090 var78 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4091 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_model__MClass__kind]))(var78) /* kind on <var78:MClass>*/;
4092 var80 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:MClassType>*/;
4093 var81 = ((short int (*)(val*, val*))(var79->class->vft[COLOR_kernel__Object___61d_61d]))(var79, var80) /* == on <var79:MClassKind>*/;
4094 if (var81){
4095 if (varonce82) {
4096 var83 = varonce82;
4097 } else {
4098 var84 = "ptr";
4099 var85 = 3;
4100 var86 = string__NativeString__to_s_with_length(var84, var85);
4101 var83 = var86;
4102 varonce82 = var83;
4103 }
4104 var = var83;
4105 goto RET_LABEL;
4106 } else {
4107 if (varonce87) {
4108 var88 = varonce87;
4109 } else {
4110 var89 = "val";
4111 var90 = 3;
4112 var91 = string__NativeString__to_s_with_length(var89, var90);
4113 var88 = var91;
4114 varonce87 = var88;
4115 }
4116 var = var88;
4117 goto RET_LABEL;
4118 }
4119 }
4120 }
4121 }
4122 }
4123 }
4124 }
4125 RET_LABEL:;
4126 return var;
4127 }
4128 /* method abstract_compiler#MClassType#ctypename for (self: Object): String */
4129 val* VIRTUAL_abstract_compiler__MClassType__ctypename(val* self) {
4130 val* var /* : String */;
4131 val* var1 /* : String */;
4132 var1 = abstract_compiler__MClassType__ctypename(self);
4133 var = var1;
4134 RET_LABEL:;
4135 return var;
4136 }
4137 /* method abstract_compiler#MGenericType#c_name for (self: MGenericType): String */
4138 val* abstract_compiler__MGenericType__c_name(val* self) {
4139 val* var /* : String */;
4140 val* var1 /* : nullable String */;
4141 val* var_res /* var res: nullable String */;
4142 val* var2 /* : null */;
4143 short int var3 /* : Bool */;
4144 val* var4 /* : String */;
4145 val* var5 /* : Array[MType] */;
4146 val* var6 /* : Iterator[nullable Object] */;
4147 short int var7 /* : Bool */;
4148 val* var8 /* : nullable Object */;
4149 val* var_t /* var t: MType */;
4150 val* var9 /* : String */;
4151 val* var10 /* : String */;
4152 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache]))(self) /* c_name_cache on <self:MGenericType>*/;
4153 var_res = var1;
4154 var2 = NULL;
4155 if (var_res == NULL) {
4156 var3 = 0; /* is null */
4157 } else {
4158 var3 = 1; /* arg is null and recv is not */
4159 }
4160 if (var3){
4161 var = var_res;
4162 goto RET_LABEL;
4163 } else {
4164 }
4165 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MGenericType__c_name]))(self) /* c_name on <self:MGenericType>*/;
4166 var_res = var4;
4167 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4168 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:Array[MType]>*/;
4169 for(;;) {
4170 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
4171 if(!var7) break;
4172 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
4173 var_t = var8;
4174 var9 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_t) /* c_name on <var_t:MType>*/;
4175 var10 = ((val* (*)(val*, val*))(var_res->class->vft[COLOR_string__String___43d]))(var_res, var9) /* + on <var_res:nullable String(String)>*/;
4176 var_res = var10;
4177 CONTINUE_label: (void)0;
4178 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
4179 }
4180 BREAK_label: (void)0;
4181 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MGenericType>*/;
4182 var = var_res;
4183 goto RET_LABEL;
4184 RET_LABEL:;
4185 return var;
4186 }
4187 /* method abstract_compiler#MGenericType#c_name for (self: Object): String */
4188 val* VIRTUAL_abstract_compiler__MGenericType__c_name(val* self) {
4189 val* var /* : String */;
4190 val* var1 /* : String */;
4191 var1 = abstract_compiler__MGenericType__c_name(self);
4192 var = var1;
4193 RET_LABEL:;
4194 return var;
4195 }
4196 /* method abstract_compiler#MParameterType#c_name for (self: MParameterType): String */
4197 val* abstract_compiler__MParameterType__c_name(val* self) {
4198 val* var /* : String */;
4199 val* var1 /* : nullable String */;
4200 val* var_res /* var res: nullable String */;
4201 val* var2 /* : null */;
4202 short int var3 /* : Bool */;
4203 val* var4 /* : Array[Object] */;
4204 long var5 /* : Int */;
4205 val* var_ /* var : Array[Object] */;
4206 static val* varonce;
4207 val* var6 /* : String */;
4208 char* var7 /* : NativeString */;
4209 long var8 /* : Int */;
4210 val* var9 /* : String */;
4211 val* var10 /* : MClass */;
4212 val* var11 /* : String */;
4213 static val* varonce12;
4214 val* var13 /* : String */;
4215 char* var14 /* : NativeString */;
4216 long var15 /* : Int */;
4217 val* var16 /* : String */;
4218 long var17 /* : Int */;
4219 val* var18 /* : nullable Object */;
4220 static val* varonce19;
4221 val* var20 /* : String */;
4222 char* var21 /* : NativeString */;
4223 long var22 /* : Int */;
4224 val* var23 /* : String */;
4225 val* var24 /* : String */;
4226 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache]))(self) /* c_name_cache on <self:MParameterType>*/;
4227 var_res = var1;
4228 var2 = NULL;
4229 if (var_res == NULL) {
4230 var3 = 0; /* is null */
4231 } else {
4232 var3 = 1; /* arg is null and recv is not */
4233 }
4234 if (var3){
4235 var = var_res;
4236 goto RET_LABEL;
4237 } else {
4238 }
4239 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
4240 var5 = 5;
4241 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
4242 var_ = var4;
4243 if (varonce) {
4244 var6 = varonce;
4245 } else {
4246 var7 = "";
4247 var8 = 0;
4248 var9 = string__NativeString__to_s_with_length(var7, var8);
4249 var6 = var9;
4250 varonce = var6;
4251 }
4252 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
4253 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
4254 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var10) /* c_name on <var10:MClass>*/;
4255 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
4256 if (varonce12) {
4257 var13 = varonce12;
4258 } else {
4259 var14 = "_FT";
4260 var15 = 3;
4261 var16 = string__NativeString__to_s_with_length(var14, var15);
4262 var13 = var16;
4263 varonce12 = var13;
4264 }
4265 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
4266 var17 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
4267 var18 = BOX_kernel__Int(var17); /* autobox from Int to nullable Object */
4268 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var18) /* add on <var_:Array[Object]>*/;
4269 if (varonce19) {
4270 var20 = varonce19;
4271 } else {
4272 var21 = "";
4273 var22 = 0;
4274 var23 = string__NativeString__to_s_with_length(var21, var22);
4275 var20 = var23;
4276 varonce19 = var20;
4277 }
4278 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var20) /* add on <var_:Array[Object]>*/;
4279 var24 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4280 var_res = var24;
4281 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MParameterType>*/;
4282 var = var_res;
4283 goto RET_LABEL;
4284 RET_LABEL:;
4285 return var;
4286 }
4287 /* method abstract_compiler#MParameterType#c_name for (self: Object): String */
4288 val* VIRTUAL_abstract_compiler__MParameterType__c_name(val* self) {
4289 val* var /* : String */;
4290 val* var1 /* : String */;
4291 var1 = abstract_compiler__MParameterType__c_name(self);
4292 var = var1;
4293 RET_LABEL:;
4294 return var;
4295 }
4296 /* method abstract_compiler#MVirtualType#c_name for (self: MVirtualType): String */
4297 val* abstract_compiler__MVirtualType__c_name(val* self) {
4298 val* var /* : String */;
4299 val* var1 /* : nullable String */;
4300 val* var_res /* var res: nullable String */;
4301 val* var2 /* : null */;
4302 short int var3 /* : Bool */;
4303 val* var4 /* : Array[Object] */;
4304 long var5 /* : Int */;
4305 val* var_ /* var : Array[Object] */;
4306 static val* varonce;
4307 val* var6 /* : String */;
4308 char* var7 /* : NativeString */;
4309 long var8 /* : Int */;
4310 val* var9 /* : String */;
4311 val* var10 /* : MProperty */;
4312 val* var11 /* : MPropDef */;
4313 val* var12 /* : MClassDef */;
4314 val* var13 /* : MClass */;
4315 val* var14 /* : String */;
4316 static val* varonce15;
4317 val* var16 /* : String */;
4318 char* var17 /* : NativeString */;
4319 long var18 /* : Int */;
4320 val* var19 /* : String */;
4321 val* var20 /* : MProperty */;
4322 val* var21 /* : String */;
4323 static val* varonce22;
4324 val* var23 /* : String */;
4325 char* var24 /* : NativeString */;
4326 long var25 /* : Int */;
4327 val* var26 /* : String */;
4328 val* var27 /* : String */;
4329 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache]))(self) /* c_name_cache on <self:MVirtualType>*/;
4330 var_res = var1;
4331 var2 = NULL;
4332 if (var_res == NULL) {
4333 var3 = 0; /* is null */
4334 } else {
4335 var3 = 1; /* arg is null and recv is not */
4336 }
4337 if (var3){
4338 var = var_res;
4339 goto RET_LABEL;
4340 } else {
4341 }
4342 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
4343 var5 = 5;
4344 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
4345 var_ = var4;
4346 if (varonce) {
4347 var6 = varonce;
4348 } else {
4349 var7 = "";
4350 var8 = 0;
4351 var9 = string__NativeString__to_s_with_length(var7, var8);
4352 var6 = var9;
4353 varonce = var6;
4354 }
4355 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
4356 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
4357 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MProperty__intro]))(var10) /* intro on <var10:MProperty>*/;
4358 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MPropDef__mclassdef]))(var11) /* mclassdef on <var11:MPropDef>*/;
4359 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:MClassDef>*/;
4360 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var13) /* c_name on <var13:MClass>*/;
4361 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
4362 if (varonce15) {
4363 var16 = varonce15;
4364 } else {
4365 var17 = "_VT";
4366 var18 = 3;
4367 var19 = string__NativeString__to_s_with_length(var17, var18);
4368 var16 = var19;
4369 varonce15 = var16;
4370 }
4371 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
4372 var20 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
4373 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MProperty__name]))(var20) /* name on <var20:MProperty>*/;
4374 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on <var_:Array[Object]>*/;
4375 if (varonce22) {
4376 var23 = varonce22;
4377 } else {
4378 var24 = "";
4379 var25 = 0;
4380 var26 = string__NativeString__to_s_with_length(var24, var25);
4381 var23 = var26;
4382 varonce22 = var23;
4383 }
4384 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
4385 var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4386 var_res = var27;
4387 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MVirtualType>*/;
4388 var = var_res;
4389 goto RET_LABEL;
4390 RET_LABEL:;
4391 return var;
4392 }
4393 /* method abstract_compiler#MVirtualType#c_name for (self: Object): String */
4394 val* VIRTUAL_abstract_compiler__MVirtualType__c_name(val* self) {
4395 val* var /* : String */;
4396 val* var1 /* : String */;
4397 var1 = abstract_compiler__MVirtualType__c_name(self);
4398 var = var1;
4399 RET_LABEL:;
4400 return var;
4401 }
4402 /* method abstract_compiler#MNullableType#c_name for (self: MNullableType): String */
4403 val* abstract_compiler__MNullableType__c_name(val* self) {
4404 val* var /* : String */;
4405 val* var1 /* : nullable String */;
4406 val* var_res /* var res: nullable String */;
4407 val* var2 /* : null */;
4408 short int var3 /* : Bool */;
4409 val* var4 /* : Array[Object] */;
4410 long var5 /* : Int */;
4411 val* var_ /* var : Array[Object] */;
4412 static val* varonce;
4413 val* var6 /* : String */;
4414 char* var7 /* : NativeString */;
4415 long var8 /* : Int */;
4416 val* var9 /* : String */;
4417 val* var10 /* : MType */;
4418 val* var11 /* : String */;
4419 static val* varonce12;
4420 val* var13 /* : String */;
4421 char* var14 /* : NativeString */;
4422 long var15 /* : Int */;
4423 val* var16 /* : String */;
4424 val* var17 /* : String */;
4425 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache]))(self) /* c_name_cache on <self:MNullableType>*/;
4426 var_res = var1;
4427 var2 = NULL;
4428 if (var_res == NULL) {
4429 var3 = 0; /* is null */
4430 } else {
4431 var3 = 1; /* arg is null and recv is not */
4432 }
4433 if (var3){
4434 var = var_res;
4435 goto RET_LABEL;
4436 } else {
4437 }
4438 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
4439 var5 = 3;
4440 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
4441 var_ = var4;
4442 if (varonce) {
4443 var6 = varonce;
4444 } else {
4445 var7 = "nullable_";
4446 var8 = 9;
4447 var9 = string__NativeString__to_s_with_length(var7, var8);
4448 var6 = var9;
4449 varonce = var6;
4450 }
4451 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
4452 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
4453 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__MType__c_name]))(var10) /* c_name on <var10:MType>*/;
4454 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
4455 if (varonce12) {
4456 var13 = varonce12;
4457 } else {
4458 var14 = "";
4459 var15 = 0;
4460 var16 = string__NativeString__to_s_with_length(var14, var15);
4461 var13 = var16;
4462 varonce12 = var13;
4463 }
4464 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
4465 var17 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4466 var_res = var17;
4467 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MNullableType>*/;
4468 var = var_res;
4469 goto RET_LABEL;
4470 RET_LABEL:;
4471 return var;
4472 }
4473 /* method abstract_compiler#MNullableType#c_name for (self: Object): String */
4474 val* VIRTUAL_abstract_compiler__MNullableType__c_name(val* self) {
4475 val* var /* : String */;
4476 val* var1 /* : String */;
4477 var1 = abstract_compiler__MNullableType__c_name(self);
4478 var = var1;
4479 RET_LABEL:;
4480 return var;
4481 }
4482 /* method abstract_compiler#MClass#c_name for (self: MClass): String */
4483 val* abstract_compiler__MClass__c_name(val* self) {
4484 val* var /* : String */;
4485 val* var1 /* : nullable String */;
4486 val* var_res /* var res: nullable String */;
4487 val* var2 /* : null */;
4488 short int var3 /* : Bool */;
4489 val* var4 /* : Array[Object] */;
4490 long var5 /* : Int */;
4491 val* var_ /* var : Array[Object] */;
4492 static val* varonce;
4493 val* var6 /* : String */;
4494 char* var7 /* : NativeString */;
4495 long var8 /* : Int */;
4496 val* var9 /* : String */;
4497 val* var10 /* : MModule */;
4498 val* var11 /* : String */;
4499 val* var12 /* : String */;
4500 static val* varonce13;
4501 val* var14 /* : String */;
4502 char* var15 /* : NativeString */;
4503 long var16 /* : Int */;
4504 val* var17 /* : String */;
4505 val* var18 /* : String */;
4506 val* var19 /* : String */;
4507 static val* varonce20;
4508 val* var21 /* : String */;
4509 char* var22 /* : NativeString */;
4510 long var23 /* : Int */;
4511 val* var24 /* : String */;
4512 val* var25 /* : String */;
4513 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MClass__c_name_cache]))(self) /* c_name_cache on <self:MClass>*/;
4514 var_res = var1;
4515 var2 = NULL;
4516 if (var_res == NULL) {
4517 var3 = 0; /* is null */
4518 } else {
4519 var3 = 1; /* arg is null and recv is not */
4520 }
4521 if (var3){
4522 var = var_res;
4523 goto RET_LABEL;
4524 } else {
4525 }
4526 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
4527 var5 = 5;
4528 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
4529 var_ = var4;
4530 if (varonce) {
4531 var6 = varonce;
4532 } else {
4533 var7 = "";
4534 var8 = 0;
4535 var9 = string__NativeString__to_s_with_length(var7, var8);
4536 var6 = var9;
4537 varonce = var6;
4538 }
4539 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
4540 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__intro_mmodule]))(self) /* intro_mmodule on <self:MClass>*/;
4541 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_mmodule__MModule__name]))(var10) /* name on <var10:MModule>*/;
4542 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_string__AbstractString__to_cmangle]))(var11) /* to_cmangle on <var11:String>*/;
4543 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
4544 if (varonce13) {
4545 var14 = varonce13;
4546 } else {
4547 var15 = "__";
4548 var16 = 2;
4549 var17 = string__NativeString__to_s_with_length(var15, var16);
4550 var14 = var17;
4551 varonce13 = var14;
4552 }
4553 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
4554 var18 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__name]))(self) /* name on <self:MClass>*/;
4555 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_string__AbstractString__to_cmangle]))(var18) /* to_cmangle on <var18:String>*/;
4556 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
4557 if (varonce20) {
4558 var21 = varonce20;
4559 } else {
4560 var22 = "";
4561 var23 = 0;
4562 var24 = string__NativeString__to_s_with_length(var22, var23);
4563 var21 = var24;
4564 varonce20 = var21;
4565 }
4566 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on <var_:Array[Object]>*/;
4567 var25 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4568 var_res = var25;
4569 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MClass__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MClass>*/;
4570 var = var_res;
4571 goto RET_LABEL;
4572 RET_LABEL:;
4573 return var;
4574 }
4575 /* method abstract_compiler#MClass#c_name for (self: Object): String */
4576 val* VIRTUAL_abstract_compiler__MClass__c_name(val* self) {
4577 val* var /* : String */;
4578 val* var1 /* : String */;
4579 var1 = abstract_compiler__MClass__c_name(self);
4580 var = var1;
4581 RET_LABEL:;
4582 return var;
4583 }
4584 /* method abstract_compiler#MClass#c_name_cache for (self: MClass): nullable String */
4585 val* abstract_compiler__MClass__c_name_cache(val* self) {
4586 val* var /* : nullable String */;
4587 val* var1 /* : nullable String */;
4588 var1 = self->attrs[COLOR_abstract_compiler__MClass___64dc_name_cache].val; /* @c_name_cache on <self:MClass> */
4589 var = var1;
4590 RET_LABEL:;
4591 return var;
4592 }
4593 /* method abstract_compiler#MClass#c_name_cache for (self: Object): nullable String */
4594 val* VIRTUAL_abstract_compiler__MClass__c_name_cache(val* self) {
4595 val* var /* : nullable String */;
4596 val* var1 /* : nullable String */;
4597 var1 = abstract_compiler__MClass__c_name_cache(self);
4598 var = var1;
4599 RET_LABEL:;
4600 return var;
4601 }
4602 /* method abstract_compiler#MClass#c_name_cache= for (self: MClass, nullable String) */
4603 void abstract_compiler__MClass__c_name_cache_61d(val* self, val* p0) {
4604 self->attrs[COLOR_abstract_compiler__MClass___64dc_name_cache].val = p0; /* @c_name_cache on <self:MClass> */
4605 RET_LABEL:;
4606 }
4607 /* method abstract_compiler#MClass#c_name_cache= for (self: Object, nullable String) */
4608 void VIRTUAL_abstract_compiler__MClass__c_name_cache_61d(val* self, val* p0) {
4609 abstract_compiler__MClass__c_name_cache_61d(self, p0);
4610 RET_LABEL:;
4611 }
4612 /* method abstract_compiler#MProperty#c_name for (self: MProperty): String */
4613 val* abstract_compiler__MProperty__c_name(val* self) {
4614 val* var /* : String */;
4615 val* var1 /* : nullable String */;
4616 val* var_res /* var res: nullable String */;
4617 val* var2 /* : null */;
4618 short int var3 /* : Bool */;
4619 val* var4 /* : Array[Object] */;
4620 long var5 /* : Int */;
4621 val* var_ /* var : Array[Object] */;
4622 static val* varonce;
4623 val* var6 /* : String */;
4624 char* var7 /* : NativeString */;
4625 long var8 /* : Int */;
4626 val* var9 /* : String */;
4627 val* var10 /* : MPropDef */;
4628 val* var11 /* : String */;
4629 static val* varonce12;
4630 val* var13 /* : String */;
4631 char* var14 /* : NativeString */;
4632 long var15 /* : Int */;
4633 val* var16 /* : String */;
4634 val* var17 /* : String */;
4635 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MProperty__c_name_cache]))(self) /* c_name_cache on <self:MProperty>*/;
4636 var_res = var1;
4637 var2 = NULL;
4638 if (var_res == NULL) {
4639 var3 = 0; /* is null */
4640 } else {
4641 var3 = 1; /* arg is null and recv is not */
4642 }
4643 if (var3){
4644 var = var_res;
4645 goto RET_LABEL;
4646 } else {
4647 }
4648 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
4649 var5 = 3;
4650 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
4651 var_ = var4;
4652 if (varonce) {
4653 var6 = varonce;
4654 } else {
4655 var7 = "";
4656 var8 = 0;
4657 var9 = string__NativeString__to_s_with_length(var7, var8);
4658 var6 = var9;
4659 varonce = var6;
4660 }
4661 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
4662 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro]))(self) /* intro on <self:MProperty>*/;
4663 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var10) /* c_name on <var10:MPropDef>*/;
4664 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
4665 if (varonce12) {
4666 var13 = varonce12;
4667 } else {
4668 var14 = "";
4669 var15 = 0;
4670 var16 = string__NativeString__to_s_with_length(var14, var15);
4671 var13 = var16;
4672 varonce12 = var13;
4673 }
4674 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
4675 var17 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4676 var_res = var17;
4677 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MProperty__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MProperty>*/;
4678 var = var_res;
4679 goto RET_LABEL;
4680 RET_LABEL:;
4681 return var;
4682 }
4683 /* method abstract_compiler#MProperty#c_name for (self: Object): String */
4684 val* VIRTUAL_abstract_compiler__MProperty__c_name(val* self) {
4685 val* var /* : String */;
4686 val* var1 /* : String */;
4687 var1 = abstract_compiler__MProperty__c_name(self);
4688 var = var1;
4689 RET_LABEL:;
4690 return var;
4691 }
4692 /* method abstract_compiler#MProperty#c_name_cache for (self: MProperty): nullable String */
4693 val* abstract_compiler__MProperty__c_name_cache(val* self) {
4694 val* var /* : nullable String */;
4695 val* var1 /* : nullable String */;
4696 var1 = self->attrs[COLOR_abstract_compiler__MProperty___64dc_name_cache].val; /* @c_name_cache on <self:MProperty> */
4697 var = var1;
4698 RET_LABEL:;
4699 return var;
4700 }
4701 /* method abstract_compiler#MProperty#c_name_cache for (self: Object): nullable String */
4702 val* VIRTUAL_abstract_compiler__MProperty__c_name_cache(val* self) {
4703 val* var /* : nullable String */;
4704 val* var1 /* : nullable String */;
4705 var1 = abstract_compiler__MProperty__c_name_cache(self);
4706 var = var1;
4707 RET_LABEL:;
4708 return var;
4709 }
4710 /* method abstract_compiler#MProperty#c_name_cache= for (self: MProperty, nullable String) */
4711 void abstract_compiler__MProperty__c_name_cache_61d(val* self, val* p0) {
4712 self->attrs[COLOR_abstract_compiler__MProperty___64dc_name_cache].val = p0; /* @c_name_cache on <self:MProperty> */
4713 RET_LABEL:;
4714 }
4715 /* method abstract_compiler#MProperty#c_name_cache= for (self: Object, nullable String) */
4716 void VIRTUAL_abstract_compiler__MProperty__c_name_cache_61d(val* self, val* p0) {
4717 abstract_compiler__MProperty__c_name_cache_61d(self, p0);
4718 RET_LABEL:;
4719 }
4720 /* method abstract_compiler#MPropDef#c_name_cache for (self: MPropDef): nullable String */
4721 val* abstract_compiler__MPropDef__c_name_cache(val* self) {
4722 val* var /* : nullable String */;
4723 val* var1 /* : nullable String */;
4724 var1 = self->attrs[COLOR_abstract_compiler__MPropDef___64dc_name_cache].val; /* @c_name_cache on <self:MPropDef> */
4725 var = var1;
4726 RET_LABEL:;
4727 return var;
4728 }
4729 /* method abstract_compiler#MPropDef#c_name_cache for (self: Object): nullable String */
4730 val* VIRTUAL_abstract_compiler__MPropDef__c_name_cache(val* self) {
4731 val* var /* : nullable String */;
4732 val* var1 /* : nullable String */;
4733 var1 = abstract_compiler__MPropDef__c_name_cache(self);
4734 var = var1;
4735 RET_LABEL:;
4736 return var;
4737 }
4738 /* method abstract_compiler#MPropDef#c_name_cache= for (self: MPropDef, nullable String) */
4739 void abstract_compiler__MPropDef__c_name_cache_61d(val* self, val* p0) {
4740 self->attrs[COLOR_abstract_compiler__MPropDef___64dc_name_cache].val = p0; /* @c_name_cache on <self:MPropDef> */
4741 RET_LABEL:;
4742 }
4743 /* method abstract_compiler#MPropDef#c_name_cache= for (self: Object, nullable String) */
4744 void VIRTUAL_abstract_compiler__MPropDef__c_name_cache_61d(val* self, val* p0) {
4745 abstract_compiler__MPropDef__c_name_cache_61d(self, p0);
4746 RET_LABEL:;
4747 }
4748 /* method abstract_compiler#MPropDef#c_name for (self: MPropDef): String */
4749 val* abstract_compiler__MPropDef__c_name(val* self) {
4750 val* var /* : String */;
4751 val* var1 /* : nullable String */;
4752 val* var_res /* var res: nullable String */;
4753 val* var2 /* : null */;
4754 short int var3 /* : Bool */;
4755 val* var4 /* : Array[Object] */;
4756 long var5 /* : Int */;
4757 val* var_ /* var : Array[Object] */;
4758 static val* varonce;
4759 val* var6 /* : String */;
4760 char* var7 /* : NativeString */;
4761 long var8 /* : Int */;
4762 val* var9 /* : String */;
4763 val* var10 /* : MClassDef */;
4764 val* var11 /* : MModule */;
4765 val* var12 /* : String */;
4766 val* var13 /* : String */;
4767 static val* varonce14;
4768 val* var15 /* : String */;
4769 char* var16 /* : NativeString */;
4770 long var17 /* : Int */;
4771 val* var18 /* : String */;
4772 val* var19 /* : MClassDef */;
4773 val* var20 /* : MClass */;
4774 val* var21 /* : String */;
4775 val* var22 /* : String */;
4776 static val* varonce23;
4777 val* var24 /* : String */;
4778 char* var25 /* : NativeString */;
4779 long var26 /* : Int */;
4780 val* var27 /* : String */;
4781 val* var28 /* : MProperty */;
4782 val* var29 /* : String */;
4783 val* var30 /* : String */;
4784 static val* varonce31;
4785 val* var32 /* : String */;
4786 char* var33 /* : NativeString */;
4787 long var34 /* : Int */;
4788 val* var35 /* : String */;
4789 val* var36 /* : String */;
4790 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MPropDef__c_name_cache]))(self) /* c_name_cache on <self:MPropDef>*/;
4791 var_res = var1;
4792 var2 = NULL;
4793 if (var_res == NULL) {
4794 var3 = 0; /* is null */
4795 } else {
4796 var3 = 1; /* arg is null and recv is not */
4797 }
4798 if (var3){
4799 var = var_res;
4800 goto RET_LABEL;
4801 } else {
4802 }
4803 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
4804 var5 = 7;
4805 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
4806 var_ = var4;
4807 if (varonce) {
4808 var6 = varonce;
4809 } else {
4810 var7 = "";
4811 var8 = 0;
4812 var9 = string__NativeString__to_s_with_length(var7, var8);
4813 var6 = var9;
4814 varonce = var6;
4815 }
4816 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
4817 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mclassdef]))(self) /* mclassdef on <self:MPropDef>*/;
4818 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassDef__mmodule]))(var10) /* mmodule on <var10:MClassDef>*/;
4819 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_mmodule__MModule__name]))(var11) /* name on <var11:MModule>*/;
4820 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_string__AbstractString__to_cmangle]))(var12) /* to_cmangle on <var12:String>*/;
4821 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
4822 if (varonce14) {
4823 var15 = varonce14;
4824 } else {
4825 var16 = "__";
4826 var17 = 2;
4827 var18 = string__NativeString__to_s_with_length(var16, var17);
4828 var15 = var18;
4829 varonce14 = var15;
4830 }
4831 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
4832 var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mclassdef]))(self) /* mclassdef on <self:MPropDef>*/;
4833 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MClassDef__mclass]))(var19) /* mclass on <var19:MClassDef>*/;
4834 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClass__name]))(var20) /* name on <var20:MClass>*/;
4835 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_string__AbstractString__to_cmangle]))(var21) /* to_cmangle on <var21:String>*/;
4836 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on <var_:Array[Object]>*/;
4837 if (varonce23) {
4838 var24 = varonce23;
4839 } else {
4840 var25 = "__";
4841 var26 = 2;
4842 var27 = string__NativeString__to_s_with_length(var25, var26);
4843 var24 = var27;
4844 varonce23 = var24;
4845 }
4846 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on <var_:Array[Object]>*/;
4847 var28 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
4848 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MProperty__name]))(var28) /* name on <var28:MProperty>*/;
4849 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_string__AbstractString__to_cmangle]))(var29) /* to_cmangle on <var29:String>*/;
4850 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var30) /* add on <var_:Array[Object]>*/;
4851 if (varonce31) {
4852 var32 = varonce31;
4853 } else {
4854 var33 = "";
4855 var34 = 0;
4856 var35 = string__NativeString__to_s_with_length(var33, var34);
4857 var32 = var35;
4858 varonce31 = var32;
4859 }
4860 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var32) /* add on <var_:Array[Object]>*/;
4861 var36 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4862 var_res = var36;
4863 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__MPropDef__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:MPropDef>*/;
4864 var = var_res;
4865 goto RET_LABEL;
4866 RET_LABEL:;
4867 return var;
4868 }
4869 /* method abstract_compiler#MPropDef#c_name for (self: Object): String */
4870 val* VIRTUAL_abstract_compiler__MPropDef__c_name(val* self) {
4871 val* var /* : String */;
4872 val* var1 /* : String */;
4873 var1 = abstract_compiler__MPropDef__c_name(self);
4874 var = var1;
4875 RET_LABEL:;
4876 return var;
4877 }
4878 /* method abstract_compiler#MMethodDef#can_inline for (self: MMethodDef, AbstractCompilerVisitor): Bool */
4879 short int abstract_compiler__MMethodDef__can_inline(val* self, val* p0) {
4880 short int var /* : Bool */;
4881 short int var1 /* : Bool */;
4882 int cltype;
4883 int idtype;
4884 const struct type* type_struct;
4885 const char* var_class_name;
4886 val* var_v /* var v: AbstractCompilerVisitor */;
4887 val* var2 /* : AbstractCompiler */;
4888 val* var3 /* : ModelBuilder */;
4889 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4890 val* var4 /* : HashMap[MPropDef, APropdef] */;
4891 short int var5 /* : Bool */;
4892 val* var6 /* : HashMap[MPropDef, APropdef] */;
4893 val* var7 /* : nullable Object */;
4894 val* var_npropdef /* var npropdef: APropdef */;
4895 short int var8 /* : Bool */;
4896 val* var9 /* : MProperty */;
4897 val* var10 /* : String */;
4898 static val* varonce;
4899 val* var11 /* : String */;
4900 char* var12 /* : NativeString */;
4901 long var13 /* : Int */;
4902 val* var14 /* : String */;
4903 short int var15 /* : Bool */;
4904 short int var16 /* : Bool */;
4905 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
4906 /* <p0:AbstractCompilerVisitor> isa VISITOR */
4907 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTVISITOR];
4908 cltype = type_struct->color;
4909 idtype = type_struct->id;
4910 if(cltype >= p0->type->table_size) {
4911 var1 = 0;
4912 } else {
4913 var1 = p0->type->type_table[cltype] == idtype;
4914 }
4915 if (!var1) {
4916 var_class_name = p0 == NULL ? "null" : p0->type->name;
4917 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
4918 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1474);
4919 show_backtrace(1);
4920 }
4921 var_v = p0;
4922 var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
4923 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var2) /* modelbuilder on <var2:AbstractCompiler>*/;
4924 var_modelbuilder = var3;
4925 var4 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4926 var5 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var4, self) /* has_key on <var4:HashMap[MPropDef, APropdef]>*/;
4927 if (var5){
4928 var6 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4929 var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var6, self) /* [] on <var6:HashMap[MPropDef, APropdef]>*/;
4930 var_npropdef = var7;
4931 var8 = ((short int (*)(val*))(var_npropdef->class->vft[COLOR_abstract_compiler__APropdef__can_inline]))(var_npropdef) /* can_inline on <var_npropdef:APropdef>*/;
4932 var = var8;
4933 goto RET_LABEL;
4934 } else {
4935 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MMethodDef>*/;
4936 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MProperty__name]))(var9) /* name on <var9:MProperty(MMethod)>*/;
4937 if (varonce) {
4938 var11 = varonce;
4939 } else {
4940 var12 = "init";
4941 var13 = 4;
4942 var14 = string__NativeString__to_s_with_length(var12, var13);
4943 var11 = var14;
4944 varonce = var11;
4945 }
4946 var15 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var11) /* == on <var10:String>*/;
4947 if (var15){
4948 var16 = 1;
4949 var = var16;
4950 goto RET_LABEL;
4951 } else {
4952 fprintf(stderr, "Runtime error: %s", "Aborted");
4953 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1485);
4954 show_backtrace(1);
4955 }
4956 }
4957 RET_LABEL:;
4958 return var;
4959 }
4960 /* method abstract_compiler#MMethodDef#can_inline for (self: Object, AbstractCompilerVisitor): Bool */
4961 short int VIRTUAL_abstract_compiler__MMethodDef__can_inline(val* self, val* p0) {
4962 short int var /* : Bool */;
4963 short int var1 /* : Bool */;
4964 var1 = abstract_compiler__MMethodDef__can_inline(self, p0);
4965 var = var1;
4966 RET_LABEL:;
4967 return var;
4968 }
4969 /* method abstract_compiler#MMethodDef#compile_inside_to_c for (self: MMethodDef, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
4970 val* abstract_compiler__MMethodDef__compile_inside_to_c(val* self, val* p0, val* p1) {
4971 val* var /* : nullable RuntimeVariable */;
4972 short int var1 /* : Bool */;
4973 int cltype;
4974 int idtype;
4975 const struct type* type_struct;
4976 const char* var_class_name;
4977 val* var_v /* var v: AbstractCompilerVisitor */;
4978 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
4979 val* var2 /* : AbstractCompiler */;
4980 val* var3 /* : ModelBuilder */;
4981 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4982 val* var4 /* : HashMap[MPropDef, APropdef] */;
4983 short int var5 /* : Bool */;
4984 val* var6 /* : HashMap[MPropDef, APropdef] */;
4985 val* var7 /* : nullable Object */;
4986 val* var_npropdef /* var npropdef: APropdef */;
4987 val* var8 /* : nullable ANode */;
4988 val* var_oldnode /* var oldnode: nullable ANode */;
4989 val* var9 /* : MProperty */;
4990 val* var10 /* : String */;
4991 static val* varonce;
4992 val* var11 /* : String */;
4993 char* var12 /* : NativeString */;
4994 long var13 /* : Int */;
4995 val* var14 /* : String */;
4996 short int var15 /* : Bool */;
4997 val* var16 /* : HashMap[MClassDef, AClassdef] */;
4998 val* var17 /* : MClassDef */;
4999 val* var18 /* : nullable Object */;
5000 val* var_nclassdef /* var nclassdef: AClassdef */;
5001 val* var19 /* : nullable ANode */;
5002 val* var_oldnode20 /* var oldnode: nullable ANode */;
5003 val* var21 /* : null */;
5004 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
5005 /* <p0:AbstractCompilerVisitor> isa VISITOR */
5006 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTVISITOR];
5007 cltype = type_struct->color;
5008 idtype = type_struct->id;
5009 if(cltype >= p0->type->table_size) {
5010 var1 = 0;
5011 } else {
5012 var1 = p0->type->type_table[cltype] == idtype;
5013 }
5014 if (!var1) {
5015 var_class_name = p0 == NULL ? "null" : p0->type->name;
5016 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
5017 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1489);
5018 show_backtrace(1);
5019 }
5020 var_v = p0;
5021 var_arguments = p1;
5022 var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5023 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var2) /* modelbuilder on <var2:AbstractCompiler>*/;
5024 var_modelbuilder = var3;
5025 var4 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
5026 var5 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var4, self) /* has_key on <var4:HashMap[MPropDef, APropdef]>*/;
5027 if (var5){
5028 var6 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
5029 var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var6, self) /* [] on <var6:HashMap[MPropDef, APropdef]>*/;
5030 var_npropdef = var7;
5031 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(var_v) /* current_node on <var_v:AbstractCompilerVisitor>*/;
5032 var_oldnode = var8;
5033 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(var_v, var_npropdef) /* current_node= on <var_v:AbstractCompilerVisitor>*/;
5034 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__MMethodDef__compile_parameter_check]))(self, var_v, var_arguments) /* compile_parameter_check on <self:MMethodDef>*/;
5035 ((void (*)(val*, val*, val*, val*))(var_npropdef->class->vft[COLOR_abstract_compiler__APropdef__compile_to_c]))(var_npropdef, var_v, self, var_arguments) /* compile_to_c on <var_npropdef:APropdef>*/;
5036 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(var_v, var_oldnode) /* current_node= on <var_v:AbstractCompilerVisitor>*/;
5037 } else {
5038 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MMethodDef>*/;
5039 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MProperty__name]))(var9) /* name on <var9:MProperty(MMethod)>*/;
5040 if (varonce) {
5041 var11 = varonce;
5042 } else {
5043 var12 = "init";
5044 var13 = 4;
5045 var14 = string__NativeString__to_s_with_length(var12, var13);
5046 var11 = var14;
5047 varonce = var11;
5048 }
5049 var15 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var11) /* == on <var10:String>*/;
5050 if (var15){
5051 var16 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var_modelbuilder) /* mclassdef2nclassdef on <var_modelbuilder:ModelBuilder>*/;
5052 var17 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mclassdef]))(self) /* mclassdef on <self:MMethodDef>*/;
5053 var18 = ((val* (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var16, var17) /* [] on <var16:HashMap[MClassDef, AClassdef]>*/;
5054 var_nclassdef = var18;
5055 var19 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(var_v) /* current_node on <var_v:AbstractCompilerVisitor>*/;
5056 var_oldnode20 = var19;
5057 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(var_v, var_nclassdef) /* current_node= on <var_v:AbstractCompilerVisitor>*/;
5058 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__MMethodDef__compile_parameter_check]))(self, var_v, var_arguments) /* compile_parameter_check on <self:MMethodDef>*/;
5059 ((void (*)(val*, val*, val*, val*))(var_nclassdef->class->vft[COLOR_abstract_compiler__AClassdef__compile_to_c]))(var_nclassdef, var_v, self, var_arguments) /* compile_to_c on <var_nclassdef:AClassdef>*/;
5060 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(var_v, var_oldnode20) /* current_node= on <var_v:AbstractCompilerVisitor>*/;
5061 } else {
5062 fprintf(stderr, "Runtime error: %s", "Aborted");
5063 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1508);
5064 show_backtrace(1);
5065 }
5066 }
5067 var21 = NULL;
5068 var = var21;
5069 goto RET_LABEL;
5070 RET_LABEL:;
5071 return var;
5072 }
5073 /* method abstract_compiler#MMethodDef#compile_inside_to_c for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
5074 val* VIRTUAL_abstract_compiler__MMethodDef__compile_inside_to_c(val* self, val* p0, val* p1) {
5075 val* var /* : nullable RuntimeVariable */;
5076 val* var1 /* : nullable RuntimeVariable */;
5077 var1 = abstract_compiler__MMethodDef__compile_inside_to_c(self, p0, p1);
5078 var = var1;
5079 RET_LABEL:;
5080 return var;
5081 }
5082 /* method abstract_compiler#MMethodDef#compile_parameter_check for (self: MMethodDef, AbstractCompilerVisitor, Array[RuntimeVariable]) */
5083 void abstract_compiler__MMethodDef__compile_parameter_check(val* self, val* p0, val* p1) {
5084 short int var /* : Bool */;
5085 int cltype;
5086 int idtype;
5087 const struct type* type_struct;
5088 const char* var_class_name;
5089 val* var_v /* var v: AbstractCompilerVisitor */;
5090 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
5091 val* var1 /* : AbstractCompiler */;
5092 val* var2 /* : ModelBuilder */;
5093 val* var3 /* : ToolContext */;
5094 val* var4 /* : OptionBool */;
5095 val* var5 /* : nullable Object */;
5096 short int var6 /* : Bool */;
5097 val* var7 /* : Range[Int] */;
5098 long var8 /* : Int */;
5099 val* var9 /* : nullable MSignature */;
5100 long var10 /* : Int */;
5101 val* var11 /* : Discrete */;
5102 val* var12 /* : Discrete */;
5103 val* var13 /* : Iterator[nullable Object] */;
5104 short int var14 /* : Bool */;
5105 val* var15 /* : nullable Object */;
5106 long var_i /* var i: Int */;
5107 long var16 /* : Int */;
5108 val* var17 /* : nullable MSignature */;
5109 long var18 /* : Int */;
5110 short int var19 /* : Bool */;
5111 short int var21 /* : Bool */;
5112 val* var22 /* : MProperty */;
5113 val* var23 /* : MPropDef */;
5114 val* var24 /* : nullable MSignature */;
5115 val* var25 /* : Array[MParameter] */;
5116 val* var26 /* : nullable Object */;
5117 val* var27 /* : MType */;
5118 val* var_origmtype /* var origmtype: MType */;
5119 short int var28 /* : Bool */;
5120 short int var29 /* : Bool */;
5121 val* var30 /* : nullable MSignature */;
5122 val* var31 /* : Array[MParameter] */;
5123 val* var32 /* : nullable Object */;
5124 val* var33 /* : MType */;
5125 val* var_mtype /* var mtype: MType */;
5126 static val* varonce;
5127 val* var34 /* : String */;
5128 char* var35 /* : NativeString */;
5129 long var36 /* : Int */;
5130 val* var37 /* : String */;
5131 static val* varonce38;
5132 val* var39 /* : String */;
5133 char* var40 /* : NativeString */;
5134 long var41 /* : Int */;
5135 val* var42 /* : String */;
5136 val* var43 /* : nullable MSignature */;
5137 val* var44 /* : Array[MParameter] */;
5138 val* var45 /* : nullable Object */;
5139 val* var46 /* : String */;
5140 static val* varonce47;
5141 val* var48 /* : String */;
5142 char* var49 /* : NativeString */;
5143 long var50 /* : Int */;
5144 val* var51 /* : String */;
5145 long var52 /* : Int */;
5146 long var53 /* : Int */;
5147 long var55 /* : Int */;
5148 val* var56 /* : nullable Object */;
5149 val* var57 /* : String */;
5150 static val* varonce58;
5151 val* var59 /* : String */;
5152 char* var60 /* : NativeString */;
5153 long var61 /* : Int */;
5154 val* var62 /* : String */;
5155 static val* varonce63;
5156 val* var64 /* : String */;
5157 char* var65 /* : NativeString */;
5158 long var66 /* : Int */;
5159 val* var67 /* : String */;
5160 val* var68 /* : Array[Object] */;
5161 long var69 /* : Int */;
5162 val* var70 /* : NativeArray[Object] */;
5163 val* var71 /* : Object */;
5164 val* var72 /* : String */;
5165 long var73 /* : Int */;
5166 long var74 /* : Int */;
5167 long var76 /* : Int */;
5168 val* var77 /* : nullable Object */;
5169 static val* varonce78;
5170 val* var79 /* : String */;
5171 char* var80 /* : NativeString */;
5172 long var81 /* : Int */;
5173 val* var82 /* : String */;
5174 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
5175 /* <p0:AbstractCompilerVisitor> isa VISITOR */
5176 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTVISITOR];
5177 cltype = type_struct->color;
5178 idtype = type_struct->id;
5179 if(cltype >= p0->type->table_size) {
5180 var = 0;
5181 } else {
5182 var = p0->type->type_table[cltype] == idtype;
5183 }
5184 if (!var) {
5185 var_class_name = p0 == NULL ? "null" : p0->type->name;
5186 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
5187 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1513);
5188 show_backtrace(1);
5189 }
5190 var_v = p0;
5191 var_arguments = p1;
5192 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5193 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var1) /* modelbuilder on <var1:AbstractCompiler>*/;
5194 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var2) /* toolcontext on <var2:ModelBuilder>*/;
5195 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_covariance]))(var3) /* opt_no_check_covariance on <var3:ToolContext>*/;
5196 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on <var4:OptionBool>*/;
5197 var6 = ((struct instance_kernel__Bool*)var5)->value; /* autounbox from nullable Object to Bool */;
5198 if (var6){
5199 goto RET_LABEL;
5200 } else {
5201 }
5202 var7 = NEW_range__Range(&type_range__Rangekernel__Int);
5203 var8 = 0;
5204 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MMethodDef__msignature]))(self) /* msignature on <self:MMethodDef>*/;
5205 if (var9 == NULL) {
5206 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5207 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1518);
5208 show_backtrace(1);
5209 } else {
5210 var10 = ((long (*)(val*))(var9->class->vft[COLOR_model__MSignature__arity]))(var9) /* arity on <var9:nullable MSignature>*/;
5211 }
5212 var11 = BOX_kernel__Int(var8); /* autobox from Int to Discrete */
5213 var12 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
5214 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_range__Range__without_last]))(var7, var11, var12) /* without_last on <var7:Range[Int]>*/;
5215 var13 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:Range[Int]>*/;
5216 for(;;) {
5217 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
5218 if(!var14) break;
5219 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
5220 var16 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
5221 var_i = var16;
5222 var17 = ((val* (*)(val*))(self->class->vft[COLOR_model__MMethodDef__msignature]))(self) /* msignature on <self:MMethodDef>*/;
5223 if (var17 == NULL) {
5224 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5225 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1520);
5226 show_backtrace(1);
5227 } else {
5228 var18 = ((long (*)(val*))(var17->class->vft[COLOR_model__MSignature__vararg_rank]))(var17) /* vararg_rank on <var17:nullable MSignature>*/;
5229 }
5230 { /* Inline kernel#Int#== (var18,var_i) */
5231 var21 = var18 == var_i;
5232 var19 = var21;
5233 goto RET_LABEL20;
5234 RET_LABEL20:(void)0;
5235 }
5236 if (var19){
5237 goto CONTINUE_label;
5238 } else {
5239 }
5240 var22 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MMethodDef>*/;
5241 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_model__MProperty__intro]))(var22) /* intro on <var22:MProperty(MMethod)>*/;
5242 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_model__MMethodDef__msignature]))(var23) /* msignature on <var23:MPropDef(MMethodDef)>*/;
5243 if (var24 == NULL) {
5244 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5245 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1523);
5246 show_backtrace(1);
5247 } else {
5248 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MSignature__mparameters]))(var24) /* mparameters on <var24:nullable MSignature>*/;
5249 }
5250 var26 = ((val* (*)(val*, long))(var25->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var25, var_i) /* [] on <var25:Array[MParameter]>*/;
5251 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MParameter__mtype]))(var26) /* mtype on <var26:nullable Object(MParameter)>*/;
5252 var_origmtype = var27;
5253 var28 = ((short int (*)(val*))(var_origmtype->class->vft[COLOR_model__MType__need_anchor]))(var_origmtype) /* need_anchor on <var_origmtype:MType>*/;
5254 var29 = !var28;
5255 if (var29){
5256 goto CONTINUE_label;
5257 } else {
5258 }
5259 var30 = ((val* (*)(val*))(self->class->vft[COLOR_model__MMethodDef__msignature]))(self) /* msignature on <self:MMethodDef>*/;
5260 if (var30 == NULL) {
5261 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5262 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1527);
5263 show_backtrace(1);
5264 } else {
5265 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_model__MSignature__mparameters]))(var30) /* mparameters on <var30:nullable MSignature>*/;
5266 }
5267 var32 = ((val* (*)(val*, long))(var31->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var31, var_i) /* [] on <var31:Array[MParameter]>*/;
5268 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_model__MParameter__mtype]))(var32) /* mtype on <var32:nullable Object(MParameter)>*/;
5269 var_mtype = var33;
5270 if (varonce) {
5271 var34 = varonce;
5272 } else {
5273 var35 = "/* Covariant cast for argument ";
5274 var36 = 31;
5275 var37 = string__NativeString__to_s_with_length(var35, var36);
5276 var34 = var37;
5277 varonce = var34;
5278 }
5279 if (varonce38) {
5280 var39 = varonce38;
5281 } else {
5282 var40 = " (";
5283 var41 = 2;
5284 var42 = string__NativeString__to_s_with_length(var40, var41);
5285 var39 = var42;
5286 varonce38 = var39;
5287 }
5288 var43 = ((val* (*)(val*))(self->class->vft[COLOR_model__MMethodDef__msignature]))(self) /* msignature on <self:MMethodDef>*/;
5289 if (var43 == NULL) {
5290 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5291 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1531);
5292 show_backtrace(1);
5293 } else {
5294 var44 = ((val* (*)(val*))(var43->class->vft[COLOR_model__MSignature__mparameters]))(var43) /* mparameters on <var43:nullable MSignature>*/;
5295 }
5296 var45 = ((val* (*)(val*, long))(var44->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var44, var_i) /* [] on <var44:Array[MParameter]>*/;
5297 var46 = ((val* (*)(val*))(var45->class->vft[COLOR_model__MParameter__name]))(var45) /* name on <var45:nullable Object(MParameter)>*/;
5298 if (varonce47) {
5299 var48 = varonce47;
5300 } else {
5301 var49 = ") ";
5302 var50 = 2;
5303 var51 = string__NativeString__to_s_with_length(var49, var50);
5304 var48 = var51;
5305 varonce47 = var48;
5306 }
5307 var52 = 1;
5308 { /* Inline kernel#Int#+ (var_i,var52) */
5309 var55 = var_i + var52;
5310 var53 = var55;
5311 goto RET_LABEL54;
5312 RET_LABEL54:(void)0;
5313 }
5314 var56 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var53) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
5315 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__inspect]))(var56) /* inspect on <var56:nullable Object(RuntimeVariable)>*/;
5316 if (varonce58) {
5317 var59 = varonce58;
5318 } else {
5319 var60 = " isa ";
5320 var61 = 5;
5321 var62 = string__NativeString__to_s_with_length(var60, var61);
5322 var59 = var62;
5323 varonce58 = var59;
5324 }
5325 if (varonce63) {
5326 var64 = varonce63;
5327 } else {
5328 var65 = " */";
5329 var66 = 3;
5330 var67 = string__NativeString__to_s_with_length(var65, var66);
5331 var64 = var67;
5332 varonce63 = var64;
5333 }
5334 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
5335 { /* var68 = array_instance Array[Object] */
5336 var69 = 9;
5337 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
5338 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var34;
5339 var71 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
5340 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var71;
5341 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var39;
5342 ((struct instance_array__NativeArray*)var70)->values[3] = (val*) var46;
5343 ((struct instance_array__NativeArray*)var70)->values[4] = (val*) var48;
5344 ((struct instance_array__NativeArray*)var70)->values[5] = (val*) var57;
5345 ((struct instance_array__NativeArray*)var70)->values[6] = (val*) var59;
5346 ((struct instance_array__NativeArray*)var70)->values[7] = (val*) var_mtype;
5347 ((struct instance_array__NativeArray*)var70)->values[8] = (val*) var64;
5348 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
5349 }
5350 var72 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
5351 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var72) /* add on <var_v:AbstractCompilerVisitor>*/;
5352 var73 = 1;
5353 { /* Inline kernel#Int#+ (var_i,var73) */
5354 var76 = var_i + var73;
5355 var74 = var76;
5356 goto RET_LABEL75;
5357 RET_LABEL75:(void)0;
5358 }
5359 var77 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var74) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
5360 if (varonce78) {
5361 var79 = varonce78;
5362 } else {
5363 var80 = "covariance";
5364 var81 = 10;
5365 var82 = string__NativeString__to_s_with_length(var80, var81);
5366 var79 = var82;
5367 varonce78 = var79;
5368 }
5369 ((void (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_cast]))(var_v, var77, var_mtype, var79) /* add_cast on <var_v:AbstractCompilerVisitor>*/;
5370 CONTINUE_label: (void)0;
5371 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
5372 }
5373 BREAK_label: (void)0;
5374 RET_LABEL:;
5375 }
5376 /* method abstract_compiler#MMethodDef#compile_parameter_check for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]) */
5377 void VIRTUAL_abstract_compiler__MMethodDef__compile_parameter_check(val* self, val* p0, val* p1) {
5378 abstract_compiler__MMethodDef__compile_parameter_check(self, p0, p1);
5379 RET_LABEL:;
5380 }
5381 /* method abstract_compiler#APropdef#compile_to_c for (self: APropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
5382 void abstract_compiler__APropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
5383 val* var_v /* var v: AbstractCompilerVisitor */;
5384 val* var_mpropdef /* var mpropdef: MMethodDef */;
5385 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
5386 static val* varonce;
5387 val* var /* : String */;
5388 char* var1 /* : NativeString */;
5389 long var2 /* : Int */;
5390 val* var3 /* : String */;
5391 val* var4 /* : String */;
5392 static val* varonce5;
5393 val* var6 /* : String */;
5394 char* var7 /* : NativeString */;
5395 long var8 /* : Int */;
5396 val* var9 /* : String */;
5397 static val* varonce10;
5398 val* var11 /* : String */;
5399 char* var12 /* : NativeString */;
5400 long var13 /* : Int */;
5401 val* var14 /* : String */;
5402 val* var15 /* : Location */;
5403 val* var16 /* : String */;
5404 static val* varonce17;
5405 val* var18 /* : String */;
5406 char* var19 /* : NativeString */;
5407 long var20 /* : Int */;
5408 val* var21 /* : String */;
5409 val* var22 /* : Array[Object] */;
5410 long var23 /* : Int */;
5411 val* var24 /* : NativeArray[Object] */;
5412 val* var25 /* : String */;
5413 static val* varonce26;
5414 val* var27 /* : String */;
5415 char* var28 /* : NativeString */;
5416 long var29 /* : Int */;
5417 val* var30 /* : String */;
5418 var_v = p0;
5419 var_mpropdef = p1;
5420 var_arguments = p2;
5421 if (varonce) {
5422 var = varonce;
5423 } else {
5424 var1 = "printf(\"NOT YET IMPLEMENTED ";
5425 var2 = 28;
5426 var3 = string__NativeString__to_s_with_length(var1, var2);
5427 var = var3;
5428 varonce = var;
5429 }
5430 var4 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:APropdef>*/;
5431 if (varonce5) {
5432 var6 = varonce5;
5433 } else {
5434 var7 = " ";
5435 var8 = 1;
5436 var9 = string__NativeString__to_s_with_length(var7, var8);
5437 var6 = var9;
5438 varonce5 = var6;
5439 }
5440 if (varonce10) {
5441 var11 = varonce10;
5442 } else {
5443 var12 = " at ";
5444 var13 = 4;
5445 var14 = string__NativeString__to_s_with_length(var12, var13);
5446 var11 = var14;
5447 varonce10 = var11;
5448 }
5449 var15 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:APropdef>*/;
5450 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Location>*/;
5451 if (varonce17) {
5452 var18 = varonce17;
5453 } else {
5454 var19 = "\\n\");";
5455 var20 = 5;
5456 var21 = string__NativeString__to_s_with_length(var19, var20);
5457 var18 = var21;
5458 varonce17 = var18;
5459 }
5460 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
5461 { /* var22 = array_instance Array[Object] */
5462 var23 = 7;
5463 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
5464 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var;
5465 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var4;
5466 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var6;
5467 ((struct instance_array__NativeArray*)var24)->values[3] = (val*) var_mpropdef;
5468 ((struct instance_array__NativeArray*)var24)->values[4] = (val*) var11;
5469 ((struct instance_array__NativeArray*)var24)->values[5] = (val*) var16;
5470 ((struct instance_array__NativeArray*)var24)->values[6] = (val*) var18;
5471 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
5472 }
5473 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
5474 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var25) /* add on <var_v:AbstractCompilerVisitor>*/;
5475 if (varonce26) {
5476 var27 = varonce26;
5477 } else {
5478 var28 = "Not yet implemented";
5479 var29 = 19;
5480 var30 = string__NativeString__to_s_with_length(var28, var29);
5481 var27 = var30;
5482 varonce26 = var27;
5483 }
5484 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var27) /* debug on <self:APropdef>*/;
5485 RET_LABEL:;
5486 }
5487 /* method abstract_compiler#APropdef#compile_to_c for (self: Object, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
5488 void VIRTUAL_abstract_compiler__APropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
5489 abstract_compiler__APropdef__compile_to_c(self, p0, p1, p2);
5490 RET_LABEL:;
5491 }
5492 /* method abstract_compiler#APropdef#can_inline for (self: APropdef): Bool */
5493 short int abstract_compiler__APropdef__can_inline(val* self) {
5494 short int var /* : Bool */;
5495 short int var1 /* : Bool */;
5496 var1 = 1;
5497 var = var1;
5498 goto RET_LABEL;
5499 RET_LABEL:;
5500 return var;
5501 }
5502 /* method abstract_compiler#APropdef#can_inline for (self: Object): Bool */
5503 short int VIRTUAL_abstract_compiler__APropdef__can_inline(val* self) {
5504 short int var /* : Bool */;
5505 short int var1 /* : Bool */;
5506 var1 = abstract_compiler__APropdef__can_inline(self);
5507 var = var1;
5508 RET_LABEL:;
5509 return var;
5510 }
5511 /* method abstract_compiler#AConcreteMethPropdef#compile_to_c for (self: AConcreteMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
5512 void abstract_compiler__AConcreteMethPropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
5513 val* var_v /* var v: AbstractCompilerVisitor */;
5514 val* var_mpropdef /* var mpropdef: MMethodDef */;
5515 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
5516 val* var /* : Range[Int] */;
5517 long var1 /* : Int */;
5518 val* var2 /* : nullable MSignature */;
5519 long var3 /* : Int */;
5520 val* var4 /* : Discrete */;
5521 val* var5 /* : Discrete */;
5522 val* var6 /* : Iterator[nullable Object] */;
5523 short int var7 /* : Bool */;
5524 val* var8 /* : nullable Object */;
5525 long var_i /* var i: Int */;
5526 long var9 /* : Int */;
5527 val* var10 /* : nullable ASignature */;
5528 val* var11 /* : ANodes[AParam] */;
5529 val* var12 /* : nullable Object */;
5530 val* var13 /* : nullable Variable */;
5531 val* var_variable /* var variable: Variable */;
5532 val* var14 /* : RuntimeVariable */;
5533 long var15 /* : Int */;
5534 long var16 /* : Int */;
5535 long var18 /* : Int */;
5536 val* var19 /* : nullable Object */;
5537 val* var20 /* : nullable Array[CallSite] */;
5538 val* var_auto_super_inits /* var auto_super_inits: nullable Array[CallSite] */;
5539 val* var21 /* : null */;
5540 short int var22 /* : Bool */;
5541 val* var23 /* : Array[RuntimeVariable] */;
5542 long var24 /* : Int */;
5543 val* var_ /* var : Array[RuntimeVariable] */;
5544 val* var25 /* : nullable Object */;
5545 val* var_args /* var args: Array[RuntimeVariable] */;
5546 val* var26 /* : Iterator[nullable Object] */;
5547 short int var27 /* : Bool */;
5548 val* var28 /* : nullable Object */;
5549 val* var_auto_super_init /* var auto_super_init: CallSite */;
5550 val* var29 /* : Range[Int] */;
5551 long var30 /* : Int */;
5552 val* var31 /* : MSignature */;
5553 long var32 /* : Int */;
5554 long var33 /* : Int */;
5555 long var34 /* : Int */;
5556 long var36 /* : Int */;
5557 val* var37 /* : Discrete */;
5558 val* var38 /* : Discrete */;
5559 val* var39 /* : Iterator[nullable Object] */;
5560 short int var40 /* : Bool */;
5561 val* var41 /* : nullable Object */;
5562 long var_i42 /* var i: Int */;
5563 long var43 /* : Int */;
5564 val* var44 /* : nullable Object */;
5565 val* var46 /* : nullable RuntimeVariable */;
5566 val* var48 /* : nullable AExpr */;
5567 var_v = p0;
5568 var_mpropdef = p1;
5569 var_arguments = p2;
5570 var = NEW_range__Range(&type_range__Rangekernel__Int);
5571 var1 = 0;
5572 var2 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:MMethodDef>*/;
5573 if (var2 == NULL) {
5574 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5575 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1552);
5576 show_backtrace(1);
5577 } else {
5578 var3 = ((long (*)(val*))(var2->class->vft[COLOR_model__MSignature__arity]))(var2) /* arity on <var2:nullable MSignature>*/;
5579 }
5580 var4 = BOX_kernel__Int(var1); /* autobox from Int to Discrete */
5581 var5 = BOX_kernel__Int(var3); /* autobox from Int to Discrete */
5582 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_range__Range__without_last]))(var, var4, var5) /* without_last on <var:Range[Int]>*/;
5583 var6 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:Range[Int]>*/;
5584 for(;;) {
5585 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
5586 if(!var7) break;
5587 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
5588 var9 = ((struct instance_kernel__Int*)var8)->value; /* autounbox from nullable Object to Int */;
5589 var_i = var9;
5590 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
5591 if (var10 == NULL) {
5592 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5593 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1553);
5594 show_backtrace(1);
5595 } else {
5596 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var10) /* n_params on <var10:nullable ASignature>*/;
5597 }
5598 var12 = ((val* (*)(val*, long))(var11->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var11, var_i) /* [] on <var11:ANodes[AParam]>*/;
5599 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_scope__AParam__variable]))(var12) /* variable on <var12:nullable Object(AParam)>*/;
5600 if (var13 == NULL) {
5601 fprintf(stderr, "Runtime error: %s", "Cast failed");
5602 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1553);
5603 show_backtrace(1);
5604 }
5605 var_variable = var13;
5606 var14 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variable]))(var_v, var_variable) /* variable on <var_v:AbstractCompilerVisitor>*/;
5607 var15 = 1;
5608 { /* Inline kernel#Int#+ (var_i,var15) */
5609 var18 = var_i + var15;
5610 var16 = var18;
5611 goto RET_LABEL17;
5612 RET_LABEL17:(void)0;
5613 }
5614 var19 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var16) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
5615 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var14, var19) /* assign on <var_v:AbstractCompilerVisitor>*/;
5616 CONTINUE_label: (void)0;
5617 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
5618 }
5619 BREAK_label: (void)0;
5620 var20 = ((val* (*)(val*))(self->class->vft[COLOR_auto_super_init__AConcreteMethPropdef__auto_super_inits]))(self) /* auto_super_inits on <self:AConcreteMethPropdef>*/;
5621 var_auto_super_inits = var20;
5622 var21 = NULL;
5623 if (var_auto_super_inits == NULL) {
5624 var22 = 0; /* is null */
5625 } else {
5626 var22 = 1; /* arg is null and recv is not */
5627 }
5628 if (var22){
5629 var23 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5630 var24 = 1;
5631 ((void (*)(val*, long))(var23->class->vft[COLOR_array__Array__with_capacity]))(var23, var24) /* with_capacity on <var23:Array[RuntimeVariable]>*/;
5632 var_ = var23;
5633 var25 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
5634 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var25) /* push on <var_:Array[RuntimeVariable]>*/;
5635 var_args = var_;
5636 var26 = ((val* (*)(val*))(var_auto_super_inits->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_auto_super_inits) /* iterator on <var_auto_super_inits:nullable Array[CallSite](Array[CallSite])>*/;
5637 for(;;) {
5638 var27 = ((short int (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var26) /* is_ok on <var26:Iterator[nullable Object]>*/;
5639 if(!var27) break;
5640 var28 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__item]))(var26) /* item on <var26:Iterator[nullable Object]>*/;
5641 var_auto_super_init = var28;
5642 ((void (*)(val*))(var_args->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var_args) /* clear on <var_args:Array[RuntimeVariable]>*/;
5643 var29 = NEW_range__Range(&type_range__Rangekernel__Int);
5644 var30 = 0;
5645 var31 = ((val* (*)(val*))(var_auto_super_init->class->vft[COLOR_typing__CallSite__msignature]))(var_auto_super_init) /* msignature on <var_auto_super_init:CallSite>*/;
5646 var32 = ((long (*)(val*))(var31->class->vft[COLOR_model__MSignature__arity]))(var31) /* arity on <var31:MSignature>*/;
5647 var33 = 1;
5648 { /* Inline kernel#Int#+ (var32,var33) */
5649 var36 = var32 + var33;
5650 var34 = var36;
5651 goto RET_LABEL35;
5652 RET_LABEL35:(void)0;
5653 }
5654 var37 = BOX_kernel__Int(var30); /* autobox from Int to Discrete */
5655 var38 = BOX_kernel__Int(var34); /* autobox from Int to Discrete */
5656 ((void (*)(val*, val*, val*))(var29->class->vft[COLOR_range__Range__without_last]))(var29, var37, var38) /* without_last on <var29:Range[Int]>*/;
5657 var39 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Collection__iterator]))(var29) /* iterator on <var29:Range[Int]>*/;
5658 for(;;) {
5659 var40 = ((short int (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var39) /* is_ok on <var39:Iterator[nullable Object]>*/;
5660 if(!var40) break;
5661 var41 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__item]))(var39) /* item on <var39:Iterator[nullable Object]>*/;
5662 var43 = ((struct instance_kernel__Int*)var41)->value; /* autounbox from nullable Object to Int */;
5663 var_i42 = var43;
5664 var44 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var_i42) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
5665 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var44) /* add on <var_args:Array[RuntimeVariable]>*/;
5666 CONTINUE_label45: (void)0;
5667 ((void (*)(val*))(var39->class->vft[COLOR_abstract_collection__Iterator__next]))(var39) /* next on <var39:Iterator[nullable Object]>*/;
5668 }
5669 BREAK_label45: (void)0;
5670 var46 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(var_v, var_auto_super_init, var_args) /* compile_callsite on <var_v:AbstractCompilerVisitor>*/;
5671 var46;
5672 CONTINUE_label47: (void)0;
5673 ((void (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__next]))(var26) /* next on <var26:Iterator[nullable Object]>*/;
5674 }
5675 BREAK_label47: (void)0;
5676 } else {
5677 }
5678 var48 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteMethPropdef__n_block]))(self) /* n_block on <self:AConcreteMethPropdef>*/;
5679 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__stmt]))(var_v, var48) /* stmt on <var_v:AbstractCompilerVisitor>*/;
5680 RET_LABEL:;
5681 }
5682 /* method abstract_compiler#AConcreteMethPropdef#compile_to_c for (self: Object, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
5683 void VIRTUAL_abstract_compiler__AConcreteMethPropdef__compile_to_c(val* self, val* p0, val* p1, val* p2) {
5684 abstract_compiler__AConcreteMethPropdef__compile_to_c(self, p0, p1, p2);
5685 RET_LABEL:;
5686 }
5687 /* method abstract_compiler#AConcreteMethPropdef#can_inline for (self: AConcreteMethPropdef): Bool */
5688 short int abstract_compiler__AConcreteMethPropdef__can_inline(val* self) {
5689 short int var /* : Bool */;
5690 val* var1 /* : nullable Array[CallSite] */;
5691 val* var2 /* : null */;
5692 short int var3 /* : Bool */;
5693 short int var4 /* : Bool */;
5694 val* var5 /* : nullable AExpr */;
5695 val* var_nblock /* var nblock: nullable AExpr */;
5696 val* var6 /* : null */;
5697 short int var7 /* : Bool */;
5698 short int var8 /* : Bool */;
5699 short int var9 /* : Bool */;
5700 short int var10 /* : Bool */;
5701 val* var11 /* : nullable MPropDef */;
5702 val* var12 /* : MProperty */;
5703 val* var13 /* : String */;
5704 static val* varonce;
5705 val* var14 /* : String */;
5706 char* var15 /* : NativeString */;
5707 long var16 /* : Int */;
5708 val* var17 /* : String */;
5709 short int var18 /* : Bool */;
5710 short int var_ /* var : Bool */;
5711 val* var19 /* : nullable MPropDef */;
5712 val* var20 /* : MProperty */;
5713 val* var21 /* : String */;
5714 static val* varonce22;
5715 val* var23 /* : String */;
5716 char* var24 /* : NativeString */;
5717 long var25 /* : Int */;
5718 val* var26 /* : String */;
5719 short int var27 /* : Bool */;
5720 short int var_28 /* var : Bool */;
5721 val* var29 /* : nullable MPropDef */;
5722 val* var30 /* : MClassDef */;
5723 val* var31 /* : MClass */;
5724 val* var32 /* : String */;
5725 static val* varonce33;
5726 val* var34 /* : String */;
5727 char* var35 /* : NativeString */;
5728 long var36 /* : Int */;
5729 val* var37 /* : String */;
5730 short int var38 /* : Bool */;
5731 short int var39 /* : Bool */;
5732 short int var40 /* : Bool */;
5733 short int var41 /* : Bool */;
5734 int cltype;
5735 int idtype;
5736 short int var_42 /* var : Bool */;
5737 val* var43 /* : ANodes[AExpr] */;
5738 long var44 /* : Int */;
5739 long var45 /* : Int */;
5740 short int var46 /* : Bool */;
5741 short int var48 /* : Bool */;
5742 short int var49 /* : Bool */;
5743 short int var50 /* : Bool */;
5744 var1 = ((val* (*)(val*))(self->class->vft[COLOR_auto_super_init__AConcreteMethPropdef__auto_super_inits]))(self) /* auto_super_inits on <self:AConcreteMethPropdef>*/;
5745 var2 = NULL;
5746 if (var1 == NULL) {
5747 var3 = 0; /* is null */
5748 } else {
5749 var3 = 1; /* arg is null and recv is not */
5750 }
5751 if (var3){
5752 var4 = 0;
5753 var = var4;
5754 goto RET_LABEL;
5755 } else {
5756 }
5757 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteMethPropdef__n_block]))(self) /* n_block on <self:AConcreteMethPropdef>*/;
5758 var_nblock = var5;
5759 var6 = NULL;
5760 if (var_nblock == NULL) {
5761 var7 = 1; /* is null */
5762 } else {
5763 var7 = 0; /* arg is null but recv is not */
5764 }
5765 if (var7){
5766 var8 = 1;
5767 var = var8;
5768 goto RET_LABEL;
5769 } else {
5770 }
5771 var11 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
5772 if (var11 == NULL) {
5773 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5774 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1576);
5775 show_backtrace(1);
5776 } else {
5777 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MPropDef__mproperty]))(var11) /* mproperty on <var11:nullable MPropDef(nullable MMethodDef)>*/;
5778 }
5779 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MProperty__name]))(var12) /* name on <var12:MProperty(MMethod)>*/;
5780 if (varonce) {
5781 var14 = varonce;
5782 } else {
5783 var15 = "==";
5784 var16 = 2;
5785 var17 = string__NativeString__to_s_with_length(var15, var16);
5786 var14 = var17;
5787 varonce = var14;
5788 }
5789 var18 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var14) /* == on <var13:String>*/;
5790 var_ = var18;
5791 if (var18){
5792 var10 = var_;
5793 } else {
5794 var19 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
5795 if (var19 == NULL) {
5796 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5797 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1576);
5798 show_backtrace(1);
5799 } else {
5800 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MPropDef__mproperty]))(var19) /* mproperty on <var19:nullable MPropDef(nullable MMethodDef)>*/;
5801 }
5802 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MProperty__name]))(var20) /* name on <var20:MProperty(MMethod)>*/;
5803 if (varonce22) {
5804 var23 = varonce22;
5805 } else {
5806 var24 = "!=";
5807 var25 = 2;
5808 var26 = string__NativeString__to_s_with_length(var24, var25);
5809 var23 = var26;
5810 varonce22 = var23;
5811 }
5812 var27 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var23) /* == on <var21:String>*/;
5813 var10 = var27;
5814 }
5815 var_28 = var10;
5816 if (var10){
5817 var29 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
5818 if (var29 == NULL) {
5819 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5820 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 1576);
5821 show_backtrace(1);
5822 } else {
5823 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_model__MPropDef__mclassdef]))(var29) /* mclassdef on <var29:nullable MPropDef(nullable MMethodDef)>*/;
5824 }
5825 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_model__MClassDef__mclass]))(var30) /* mclass on <var30:MClassDef>*/;
5826 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_model__MClass__name]))(var31) /* name on <var31:MClass>*/;
5827 if (varonce33) {
5828 var34 = varonce33;
5829 } else {
5830 var35 = "Object";
5831 var36 = 6;
5832 var37 = string__NativeString__to_s_with_length(var35, var36);
5833 var34 = var37;
5834 varonce33 = var34;
5835 }
5836 var38 = ((short int (*)(val*, val*))(var32->class->vft[COLOR_kernel__Object___61d_61d]))(var32, var34) /* == on <var32:String>*/;
5837 var9 = var38;
5838 } else {
5839 var9 = var_28;
5840 }
5841 if (var9){
5842 var39 = 1;
5843 var = var39;
5844 goto RET_LABEL;
5845 } else {
5846 }
5847 /* <var_nblock:nullable AExpr(AExpr)> isa ABlockExpr */
5848 cltype = type_parser_nodes__ABlockExpr.color;
5849 idtype = type_parser_nodes__ABlockExpr.id;
5850 if(cltype >= var_nblock->type->table_size) {
5851 var41 = 0;
5852 } else {
5853 var41 = var_nblock->type->type_table[cltype] == idtype;
5854 }
5855 var_42 = var41;
5856 if (var41){
5857 var43 = ((val* (*)(val*))(var_nblock->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(var_nblock) /* n_expr on <var_nblock:nullable AExpr(ABlockExpr)>*/;
5858 var44 = ((long (*)(val*))(var43->class->vft[COLOR_abstract_collection__Collection__length]))(var43) /* length on <var43:ANodes[AExpr]>*/;
5859 var45 = 0;
5860 { /* Inline kernel#Int#== (var44,var45) */
5861 var48 = var44 == var45;
5862 var46 = var48;
5863 goto RET_LABEL47;
5864 RET_LABEL47:(void)0;
5865 }
5866 var40 = var46;
5867 } else {
5868 var40 = var_42;
5869 }
5870 if (var40){
5871 var49 = 1;
5872 var = var49;
5873 goto RET_LABEL;
5874 } else {
5875 }
5876 var50 = 0;
5877 var = var50;
5878 goto RET_LABEL;
5879 RET_LABEL:;
5880 return var;
5881 }
5882 /* method abstract_compiler#AConcreteMethPropdef#can_inline for (self: Object): Bool */
5883 short int VIRTUAL_abstract_compiler__AConcreteMethPropdef__can_inline(val* self) {
5884 short int var /* : Bool */;
5885 short int var1 /* : Bool */;
5886 var1 = abstract_compiler__AConcreteMethPropdef__can_inline(self);
5887 var = var1;
5888 RET_LABEL:;
5889 return var;
5890 }