nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / astbuilder.sep.1.c
1 #include "astbuilder.sep.0.h"
2 /* method astbuilder#ASTBuilder#mmodule for (self: ASTBuilder): MModule */
3 val* astbuilder__ASTBuilder__mmodule(val* self) {
4 val* var /* : MModule */;
5 val* var1 /* : MModule */;
6 var1 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:ASTBuilder> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
9 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 25);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method astbuilder#ASTBuilder#mmodule for (self: Object): MModule */
17 val* VIRTUAL_astbuilder__ASTBuilder__mmodule(val* self) {
18 val* var /* : MModule */;
19 val* var1 /* : MModule */;
20 val* var3 /* : MModule */;
21 { /* Inline astbuilder#ASTBuilder#mmodule (self) on <self:Object(ASTBuilder)> */
22 var3 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:Object(ASTBuilder)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
25 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 25);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method astbuilder#ASTBuilder#mmodule= for (self: ASTBuilder, MModule) */
36 void astbuilder__ASTBuilder__mmodule_61d(val* self, val* p0) {
37 self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val = p0; /* _mmodule on <self:ASTBuilder> */
38 RET_LABEL:;
39 }
40 /* method astbuilder#ASTBuilder#mmodule= for (self: Object, MModule) */
41 void VIRTUAL_astbuilder__ASTBuilder__mmodule_61d(val* self, val* p0) {
42 { /* Inline astbuilder#ASTBuilder#mmodule= (self,p0) on <self:Object(ASTBuilder)> */
43 self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val = p0; /* _mmodule on <self:Object(ASTBuilder)> */
44 RET_LABEL1:(void)0;
45 }
46 RET_LABEL:;
47 }
48 /* method astbuilder#ASTBuilder#anchor for (self: ASTBuilder): nullable MClassType */
49 val* astbuilder__ASTBuilder__anchor(val* self) {
50 val* var /* : nullable MClassType */;
51 val* var1 /* : nullable MClassType */;
52 var1 = self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val; /* _anchor on <self:ASTBuilder> */
53 var = var1;
54 RET_LABEL:;
55 return var;
56 }
57 /* method astbuilder#ASTBuilder#anchor for (self: Object): nullable MClassType */
58 val* VIRTUAL_astbuilder__ASTBuilder__anchor(val* self) {
59 val* var /* : nullable MClassType */;
60 val* var1 /* : nullable MClassType */;
61 val* var3 /* : nullable MClassType */;
62 { /* Inline astbuilder#ASTBuilder#anchor (self) on <self:Object(ASTBuilder)> */
63 var3 = self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val; /* _anchor on <self:Object(ASTBuilder)> */
64 var1 = var3;
65 RET_LABEL2:(void)0;
66 }
67 var = var1;
68 RET_LABEL:;
69 return var;
70 }
71 /* method astbuilder#ASTBuilder#anchor= for (self: ASTBuilder, nullable MClassType) */
72 void astbuilder__ASTBuilder__anchor_61d(val* self, val* p0) {
73 self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val = p0; /* _anchor on <self:ASTBuilder> */
74 RET_LABEL:;
75 }
76 /* method astbuilder#ASTBuilder#anchor= for (self: Object, nullable MClassType) */
77 void VIRTUAL_astbuilder__ASTBuilder__anchor_61d(val* self, val* p0) {
78 { /* Inline astbuilder#ASTBuilder#anchor= (self,p0) on <self:Object(ASTBuilder)> */
79 self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val = p0; /* _anchor on <self:Object(ASTBuilder)> */
80 RET_LABEL1:(void)0;
81 }
82 RET_LABEL:;
83 }
84 /* method astbuilder#ASTBuilder#make_int for (self: ASTBuilder, Int): AIntExpr */
85 val* astbuilder__ASTBuilder__make_int(val* self, long p0) {
86 val* var /* : AIntExpr */;
87 long var_value /* var value: Int */;
88 val* var1 /* : ADecIntExpr */;
89 val* var2 /* : MModule */;
90 val* var4 /* : MModule */;
91 static val* varonce;
92 val* var5 /* : String */;
93 char* var6 /* : NativeString */;
94 long var7 /* : Int */;
95 val* var8 /* : FlatString */;
96 val* var9 /* : MClass */;
97 val* var10 /* : MClassType */;
98 val* var12 /* : MClassType */;
99 var_value = p0;
100 var1 = NEW_parser_nodes__ADecIntExpr(&type_parser_nodes__ADecIntExpr);
101 {
102 { /* Inline astbuilder#ASTBuilder#mmodule (self) on <self:ASTBuilder> */
103 var4 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:ASTBuilder> */
104 if (unlikely(var4 == NULL)) {
105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
106 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 25);
107 show_backtrace(1);
108 }
109 var2 = var4;
110 RET_LABEL3:(void)0;
111 }
112 }
113 if (varonce) {
114 var5 = varonce;
115 } else {
116 var6 = "Int";
117 var7 = 3;
118 var8 = string__NativeString__to_s_with_length(var6, var7);
119 var5 = var8;
120 varonce = var5;
121 }
122 {
123 var9 = model__MModule__get_primitive_class(var2, var5);
124 }
125 {
126 { /* Inline model#MClass#mclass_type (var9) on <var9:MClass> */
127 var12 = var9->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var9:MClass> */
128 if (unlikely(var12 == NULL)) {
129 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
130 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
131 show_backtrace(1);
132 }
133 var10 = var12;
134 RET_LABEL11:(void)0;
135 }
136 }
137 {
138 astbuilder__ADecIntExpr__make(var1, var_value, var10); /* Direct call astbuilder#ADecIntExpr#make on <var1:ADecIntExpr>*/
139 }
140 var = var1;
141 goto RET_LABEL;
142 RET_LABEL:;
143 return var;
144 }
145 /* method astbuilder#ASTBuilder#make_int for (self: Object, Int): AIntExpr */
146 val* VIRTUAL_astbuilder__ASTBuilder__make_int(val* self, long p0) {
147 val* var /* : AIntExpr */;
148 val* var1 /* : AIntExpr */;
149 var1 = astbuilder__ASTBuilder__make_int(self, p0);
150 var = var1;
151 RET_LABEL:;
152 return var;
153 }
154 /* method astbuilder#ASTBuilder#make_new for (self: ASTBuilder, CallSite, nullable Array[AExpr]): ANewExpr */
155 val* astbuilder__ASTBuilder__make_new(val* self, val* p0, val* p1) {
156 val* var /* : ANewExpr */;
157 val* var_callsite /* var callsite: CallSite */;
158 val* var_args /* var args: nullable Array[AExpr] */;
159 val* var1 /* : ANewExpr */;
160 var_callsite = p0;
161 var_args = p1;
162 var1 = NEW_parser_nodes__ANewExpr(&type_parser_nodes__ANewExpr);
163 {
164 astbuilder__ANewExpr__make(var1, var_callsite, var_args); /* Direct call astbuilder#ANewExpr#make on <var1:ANewExpr>*/
165 }
166 var = var1;
167 goto RET_LABEL;
168 RET_LABEL:;
169 return var;
170 }
171 /* method astbuilder#ASTBuilder#make_new for (self: Object, CallSite, nullable Array[AExpr]): ANewExpr */
172 val* VIRTUAL_astbuilder__ASTBuilder__make_new(val* self, val* p0, val* p1) {
173 val* var /* : ANewExpr */;
174 val* var1 /* : ANewExpr */;
175 var1 = astbuilder__ASTBuilder__make_new(self, p0, p1);
176 var = var1;
177 RET_LABEL:;
178 return var;
179 }
180 /* method astbuilder#ASTBuilder#make_call for (self: ASTBuilder, AExpr, CallSite, nullable Array[AExpr]): ACallExpr */
181 val* astbuilder__ASTBuilder__make_call(val* self, val* p0, val* p1, val* p2) {
182 val* var /* : ACallExpr */;
183 val* var_recv /* var recv: AExpr */;
184 val* var_callsite /* var callsite: CallSite */;
185 val* var_args /* var args: nullable Array[AExpr] */;
186 val* var1 /* : ACallExpr */;
187 var_recv = p0;
188 var_callsite = p1;
189 var_args = p2;
190 var1 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
191 {
192 astbuilder__ACallExpr__make(var1, var_recv, var_callsite, var_args); /* Direct call astbuilder#ACallExpr#make on <var1:ACallExpr>*/
193 }
194 var = var1;
195 goto RET_LABEL;
196 RET_LABEL:;
197 return var;
198 }
199 /* method astbuilder#ASTBuilder#make_call for (self: Object, AExpr, CallSite, nullable Array[AExpr]): ACallExpr */
200 val* VIRTUAL_astbuilder__ASTBuilder__make_call(val* self, val* p0, val* p1, val* p2) {
201 val* var /* : ACallExpr */;
202 val* var1 /* : ACallExpr */;
203 var1 = astbuilder__ASTBuilder__make_call(self, p0, p1, p2);
204 var = var1;
205 RET_LABEL:;
206 return var;
207 }
208 /* method astbuilder#ASTBuilder#make_block for (self: ASTBuilder): ABlockExpr */
209 val* astbuilder__ASTBuilder__make_block(val* self) {
210 val* var /* : ABlockExpr */;
211 val* var1 /* : ABlockExpr */;
212 var1 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
213 {
214 astbuilder__ABlockExpr__make(var1); /* Direct call astbuilder#ABlockExpr#make on <var1:ABlockExpr>*/
215 }
216 var = var1;
217 goto RET_LABEL;
218 RET_LABEL:;
219 return var;
220 }
221 /* method astbuilder#ASTBuilder#make_block for (self: Object): ABlockExpr */
222 val* VIRTUAL_astbuilder__ASTBuilder__make_block(val* self) {
223 val* var /* : ABlockExpr */;
224 val* var1 /* : ABlockExpr */;
225 var1 = astbuilder__ASTBuilder__make_block(self);
226 var = var1;
227 RET_LABEL:;
228 return var;
229 }
230 /* method astbuilder#ASTBuilder#make_loop for (self: ASTBuilder): ALoopExpr */
231 val* astbuilder__ASTBuilder__make_loop(val* self) {
232 val* var /* : ALoopExpr */;
233 val* var1 /* : ALoopExpr */;
234 var1 = NEW_parser_nodes__ALoopExpr(&type_parser_nodes__ALoopExpr);
235 {
236 astbuilder__ALoopExpr__make(var1); /* Direct call astbuilder#ALoopExpr#make on <var1:ALoopExpr>*/
237 }
238 var = var1;
239 goto RET_LABEL;
240 RET_LABEL:;
241 return var;
242 }
243 /* method astbuilder#ASTBuilder#make_loop for (self: Object): ALoopExpr */
244 val* VIRTUAL_astbuilder__ASTBuilder__make_loop(val* self) {
245 val* var /* : ALoopExpr */;
246 val* var1 /* : ALoopExpr */;
247 var1 = astbuilder__ASTBuilder__make_loop(self);
248 var = var1;
249 RET_LABEL:;
250 return var;
251 }
252 /* method astbuilder#ASTBuilder#make_var_read for (self: ASTBuilder, Variable, MType): AVarExpr */
253 val* astbuilder__ASTBuilder__make_var_read(val* self, val* p0, val* p1) {
254 val* var /* : AVarExpr */;
255 val* var_variable /* var variable: Variable */;
256 val* var_mtype /* var mtype: MType */;
257 val* var1 /* : AVarExpr */;
258 var_variable = p0;
259 var_mtype = p1;
260 var1 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
261 {
262 astbuilder__AVarExpr__make(var1, var_variable, var_mtype); /* Direct call astbuilder#AVarExpr#make on <var1:AVarExpr>*/
263 }
264 var = var1;
265 goto RET_LABEL;
266 RET_LABEL:;
267 return var;
268 }
269 /* method astbuilder#ASTBuilder#make_var_read for (self: Object, Variable, MType): AVarExpr */
270 val* VIRTUAL_astbuilder__ASTBuilder__make_var_read(val* self, val* p0, val* p1) {
271 val* var /* : AVarExpr */;
272 val* var1 /* : AVarExpr */;
273 var1 = astbuilder__ASTBuilder__make_var_read(self, p0, p1);
274 var = var1;
275 RET_LABEL:;
276 return var;
277 }
278 /* method astbuilder#ASTBuilder#make_var_assign for (self: ASTBuilder, Variable, AExpr): AVarAssignExpr */
279 val* astbuilder__ASTBuilder__make_var_assign(val* self, val* p0, val* p1) {
280 val* var /* : AVarAssignExpr */;
281 val* var_variable /* var variable: Variable */;
282 val* var_value /* var value: AExpr */;
283 val* var1 /* : AVarAssignExpr */;
284 var_variable = p0;
285 var_value = p1;
286 var1 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
287 {
288 astbuilder__AVarAssignExpr__make(var1, var_variable, var_value); /* Direct call astbuilder#AVarAssignExpr#make on <var1:AVarAssignExpr>*/
289 }
290 var = var1;
291 goto RET_LABEL;
292 RET_LABEL:;
293 return var;
294 }
295 /* method astbuilder#ASTBuilder#make_var_assign for (self: Object, Variable, AExpr): AVarAssignExpr */
296 val* VIRTUAL_astbuilder__ASTBuilder__make_var_assign(val* self, val* p0, val* p1) {
297 val* var /* : AVarAssignExpr */;
298 val* var1 /* : AVarAssignExpr */;
299 var1 = astbuilder__ASTBuilder__make_var_assign(self, p0, p1);
300 var = var1;
301 RET_LABEL:;
302 return var;
303 }
304 /* method astbuilder#ASTBuilder#make_attr_read for (self: ASTBuilder, AExpr, MAttribute): AAttrExpr */
305 val* astbuilder__ASTBuilder__make_attr_read(val* self, val* p0, val* p1) {
306 val* var /* : AAttrExpr */;
307 val* var_recv /* var recv: AExpr */;
308 val* var_attribute /* var attribute: MAttribute */;
309 val* var1 /* : MPropDef */;
310 val* var3 /* : MPropDef */;
311 val* var4 /* : nullable MType */;
312 val* var6 /* : nullable MType */;
313 val* var7 /* : nullable MType */;
314 val* var8 /* : nullable MClassType */;
315 val* var10 /* : nullable MClassType */;
316 val* var11 /* : MModule */;
317 val* var13 /* : MModule */;
318 short int var14 /* : Bool */;
319 val* var15 /* : MType */;
320 val* var_mtype /* var mtype: MType */;
321 val* var16 /* : AAttrExpr */;
322 var_recv = p0;
323 var_attribute = p1;
324 {
325 { /* Inline model#MProperty#intro (var_attribute) on <var_attribute:MAttribute> */
326 var3 = var_attribute->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_attribute:MAttribute> */
327 if (unlikely(var3 == NULL)) {
328 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
329 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
330 show_backtrace(1);
331 }
332 var1 = var3;
333 RET_LABEL2:(void)0;
334 }
335 }
336 {
337 { /* Inline model#MAttributeDef#static_mtype (var1) on <var1:MPropDef(MAttributeDef)> */
338 var6 = var1->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var1:MPropDef(MAttributeDef)> */
339 var4 = var6;
340 RET_LABEL5:(void)0;
341 }
342 }
343 {
344 var7 = ((val* (*)(val*))(var_recv->class->vft[COLOR_typing__AExpr__mtype]))(var_recv) /* mtype on <var_recv:AExpr>*/;
345 }
346 if (unlikely(var7 == NULL)) {
347 PRINT_ERROR("Runtime error: %s", "Cast failed");
348 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 77);
349 show_backtrace(1);
350 }
351 {
352 { /* Inline astbuilder#ASTBuilder#anchor (self) on <self:ASTBuilder> */
353 var10 = self->attrs[COLOR_astbuilder__ASTBuilder___anchor].val; /* _anchor on <self:ASTBuilder> */
354 var8 = var10;
355 RET_LABEL9:(void)0;
356 }
357 }
358 {
359 { /* Inline astbuilder#ASTBuilder#mmodule (self) on <self:ASTBuilder> */
360 var13 = self->attrs[COLOR_astbuilder__ASTBuilder___mmodule].val; /* _mmodule on <self:ASTBuilder> */
361 if (unlikely(var13 == NULL)) {
362 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
363 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 25);
364 show_backtrace(1);
365 }
366 var11 = var13;
367 RET_LABEL12:(void)0;
368 }
369 }
370 var14 = 1;
371 if (var4 == NULL) {
372 PRINT_ERROR("Runtime error: %s", "Receiver is null");
373 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 77);
374 show_backtrace(1);
375 } else {
376 var15 = ((val* (*)(val*, val*, val*, val*, short int))(var4->class->vft[COLOR_model__MType__resolve_for]))(var4, var7, var8, var11, var14) /* resolve_for on <var4:nullable MType>*/;
377 }
378 var_mtype = var15;
379 var16 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
380 {
381 astbuilder__AAttrExpr__make(var16, var_recv, var_attribute, var_mtype); /* Direct call astbuilder#AAttrExpr#make on <var16:AAttrExpr>*/
382 }
383 var = var16;
384 goto RET_LABEL;
385 RET_LABEL:;
386 return var;
387 }
388 /* method astbuilder#ASTBuilder#make_attr_read for (self: Object, AExpr, MAttribute): AAttrExpr */
389 val* VIRTUAL_astbuilder__ASTBuilder__make_attr_read(val* self, val* p0, val* p1) {
390 val* var /* : AAttrExpr */;
391 val* var1 /* : AAttrExpr */;
392 var1 = astbuilder__ASTBuilder__make_attr_read(self, p0, p1);
393 var = var1;
394 RET_LABEL:;
395 return var;
396 }
397 /* method astbuilder#ASTBuilder#make_attr_assign for (self: ASTBuilder, AExpr, MAttribute, AExpr): AAttrAssignExpr */
398 val* astbuilder__ASTBuilder__make_attr_assign(val* self, val* p0, val* p1, val* p2) {
399 val* var /* : AAttrAssignExpr */;
400 val* var_recv /* var recv: AExpr */;
401 val* var_attribute /* var attribute: MAttribute */;
402 val* var_value /* var value: AExpr */;
403 val* var1 /* : AAttrAssignExpr */;
404 var_recv = p0;
405 var_attribute = p1;
406 var_value = p2;
407 var1 = NEW_parser_nodes__AAttrAssignExpr(&type_parser_nodes__AAttrAssignExpr);
408 {
409 astbuilder__AAttrAssignExpr__make(var1, var_recv, var_attribute, var_value); /* Direct call astbuilder#AAttrAssignExpr#make on <var1:AAttrAssignExpr>*/
410 }
411 var = var1;
412 goto RET_LABEL;
413 RET_LABEL:;
414 return var;
415 }
416 /* method astbuilder#ASTBuilder#make_attr_assign for (self: Object, AExpr, MAttribute, AExpr): AAttrAssignExpr */
417 val* VIRTUAL_astbuilder__ASTBuilder__make_attr_assign(val* self, val* p0, val* p1, val* p2) {
418 val* var /* : AAttrAssignExpr */;
419 val* var1 /* : AAttrAssignExpr */;
420 var1 = astbuilder__ASTBuilder__make_attr_assign(self, p0, p1, p2);
421 var = var1;
422 RET_LABEL:;
423 return var;
424 }
425 /* method astbuilder#ASTBuilder#make_do for (self: ASTBuilder): ADoExpr */
426 val* astbuilder__ASTBuilder__make_do(val* self) {
427 val* var /* : ADoExpr */;
428 val* var1 /* : ADoExpr */;
429 var1 = NEW_parser_nodes__ADoExpr(&type_parser_nodes__ADoExpr);
430 {
431 astbuilder__ADoExpr__make(var1); /* Direct call astbuilder#ADoExpr#make on <var1:ADoExpr>*/
432 }
433 var = var1;
434 goto RET_LABEL;
435 RET_LABEL:;
436 return var;
437 }
438 /* method astbuilder#ASTBuilder#make_do for (self: Object): ADoExpr */
439 val* VIRTUAL_astbuilder__ASTBuilder__make_do(val* self) {
440 val* var /* : ADoExpr */;
441 val* var1 /* : ADoExpr */;
442 var1 = astbuilder__ASTBuilder__make_do(self);
443 var = var1;
444 RET_LABEL:;
445 return var;
446 }
447 /* method astbuilder#ASTBuilder#make_break for (self: ASTBuilder, EscapeMark): ABreakExpr */
448 val* astbuilder__ASTBuilder__make_break(val* self, val* p0) {
449 val* var /* : ABreakExpr */;
450 val* var_escapemark /* var escapemark: EscapeMark */;
451 val* var1 /* : ABreakExpr */;
452 var_escapemark = p0;
453 var1 = NEW_parser_nodes__ABreakExpr(&type_parser_nodes__ABreakExpr);
454 {
455 astbuilder__ABreakExpr__make(var1, var_escapemark); /* Direct call astbuilder#ABreakExpr#make on <var1:ABreakExpr>*/
456 }
457 var = var1;
458 goto RET_LABEL;
459 RET_LABEL:;
460 return var;
461 }
462 /* method astbuilder#ASTBuilder#make_break for (self: Object, EscapeMark): ABreakExpr */
463 val* VIRTUAL_astbuilder__ASTBuilder__make_break(val* self, val* p0) {
464 val* var /* : ABreakExpr */;
465 val* var1 /* : ABreakExpr */;
466 var1 = astbuilder__ASTBuilder__make_break(self, p0);
467 var = var1;
468 RET_LABEL:;
469 return var;
470 }
471 /* method astbuilder#ASTBuilder#make_if for (self: ASTBuilder, AExpr, nullable MType): AIfExpr */
472 val* astbuilder__ASTBuilder__make_if(val* self, val* p0, val* p1) {
473 val* var /* : AIfExpr */;
474 val* var_condition /* var condition: AExpr */;
475 val* var_mtype /* var mtype: nullable MType */;
476 val* var1 /* : AIfExpr */;
477 var_condition = p0;
478 var_mtype = p1;
479 var1 = NEW_parser_nodes__AIfExpr(&type_parser_nodes__AIfExpr);
480 {
481 astbuilder__AIfExpr__make(var1, var_condition, var_mtype); /* Direct call astbuilder#AIfExpr#make on <var1:AIfExpr>*/
482 }
483 var = var1;
484 goto RET_LABEL;
485 RET_LABEL:;
486 return var;
487 }
488 /* method astbuilder#ASTBuilder#make_if for (self: Object, AExpr, nullable MType): AIfExpr */
489 val* VIRTUAL_astbuilder__ASTBuilder__make_if(val* self, val* p0, val* p1) {
490 val* var /* : AIfExpr */;
491 val* var1 /* : AIfExpr */;
492 var1 = astbuilder__ASTBuilder__make_if(self, p0, p1);
493 var = var1;
494 RET_LABEL:;
495 return var;
496 }
497 /* method astbuilder#ASTBuilder#init for (self: ASTBuilder) */
498 void astbuilder__ASTBuilder__init(val* self) {
499 {
500 ((void (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__init]))(self) /* init on <self:ASTBuilder>*/;
501 }
502 RET_LABEL:;
503 }
504 /* method astbuilder#ASTBuilder#init for (self: Object) */
505 void VIRTUAL_astbuilder__ASTBuilder__init(val* self) {
506 { /* Inline astbuilder#ASTBuilder#init (self) on <self:Object(ASTBuilder)> */
507 {
508 ((void (*)(val*))(self->class->vft[COLOR_astbuilder__ASTBuilder__init]))(self) /* init on <self:Object(ASTBuilder)>*/;
509 }
510 RET_LABEL1:(void)0;
511 }
512 RET_LABEL:;
513 }
514 /* method astbuilder#AExpr#make_var_read for (self: AExpr): AVarExpr */
515 val* astbuilder__AExpr__make_var_read(val* self) {
516 val* var /* : AVarExpr */;
517 val* var1 /* : nullable Variable */;
518 val* var3 /* : nullable Variable */;
519 val* var_variable /* var variable: nullable Variable */;
520 val* var4 /* : null */;
521 short int var5 /* : Bool */;
522 short int var6 /* : Bool */;
523 val* var_other /* var other: nullable Object */;
524 short int var8 /* : Bool */;
525 short int var10 /* : Bool */;
526 val* var11 /* : nullable ANode */;
527 val* var13 /* : nullable ANode */;
528 val* var14 /* : null */;
529 short int var15 /* : Bool */;
530 short int var16 /* : Bool */;
531 val* var_other18 /* var other: nullable Object */;
532 short int var19 /* : Bool */;
533 short int var20 /* : Bool */;
534 short int var21 /* : Bool */;
535 val* var22 /* : AExpr */;
536 val* var_place /* var place: AExpr */;
537 val* var23 /* : Variable */;
538 static val* varonce;
539 val* var24 /* : String */;
540 char* var25 /* : NativeString */;
541 long var26 /* : Int */;
542 val* var27 /* : FlatString */;
543 val* var28 /* : nullable MType */;
544 val* var30 /* : AVarAssignExpr */;
545 val* var_nvar /* var nvar: AVarAssignExpr */;
546 val* var32 /* : AVarExpr */;
547 val* var33 /* : nullable MType */;
548 val* var35 /* : nullable MType */;
549 {
550 { /* Inline astbuilder#AExpr#variable_cache (self) on <self:AExpr> */
551 var3 = self->attrs[COLOR_astbuilder__AExpr___variable_cache].val; /* _variable_cache on <self:AExpr> */
552 var1 = var3;
553 RET_LABEL2:(void)0;
554 }
555 }
556 var_variable = var1;
557 var4 = NULL;
558 if (var_variable == NULL) {
559 var5 = 1; /* is null */
560 } else {
561 var5 = 0; /* arg is null but recv is not */
562 }
563 if (0) {
564 { /* Inline kernel#Object#== (var_variable,var4) on <var_variable:nullable Variable> */
565 var_other = var4;
566 {
567 { /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
568 var10 = var_variable == var_other;
569 var8 = var10;
570 goto RET_LABEL9;
571 RET_LABEL9:(void)0;
572 }
573 }
574 var6 = var8;
575 goto RET_LABEL7;
576 RET_LABEL7:(void)0;
577 }
578 var5 = var6;
579 }
580 if (var5){
581 {
582 { /* Inline parser_nodes#ANode#parent (self) on <self:AExpr> */
583 var13 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:AExpr> */
584 var11 = var13;
585 RET_LABEL12:(void)0;
586 }
587 }
588 var14 = NULL;
589 if (var11 == NULL) {
590 var15 = 0; /* is null */
591 } else {
592 var15 = 1; /* arg is null and recv is not */
593 }
594 if (0) {
595 { /* Inline kernel#Object#!= (var11,var14) on <var11:nullable ANode> */
596 var_other18 = var14;
597 {
598 var20 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var_other18) /* == on <var11:nullable ANode(ANode)>*/;
599 var19 = var20;
600 }
601 var21 = !var19;
602 var16 = var21;
603 goto RET_LABEL17;
604 RET_LABEL17:(void)0;
605 }
606 var15 = var16;
607 }
608 if (unlikely(!var15)) {
609 PRINT_ERROR("Runtime error: %s", "Assert failed");
610 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 117);
611 show_backtrace(1);
612 }
613 {
614 var22 = astbuilder__AExpr__detach_with_placeholder(self);
615 }
616 var_place = var22;
617 var23 = NEW_scope__Variable(&type_scope__Variable);
618 if (varonce) {
619 var24 = varonce;
620 } else {
621 var25 = "";
622 var26 = 0;
623 var27 = string__NativeString__to_s_with_length(var25, var26);
624 var24 = var27;
625 varonce = var24;
626 }
627 {
628 ((void (*)(val*, val*))(var23->class->vft[COLOR_scope__Variable__name_61d]))(var23, var24) /* name= on <var23:Variable>*/;
629 }
630 {
631 ((void (*)(val*))(var23->class->vft[COLOR_kernel__Object__init]))(var23) /* init on <var23:Variable>*/;
632 }
633 var_variable = var23;
634 {
635 var28 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AExpr>*/;
636 }
637 {
638 { /* Inline typing#Variable#declared_type= (var_variable,var28) on <var_variable:nullable Variable(Variable)> */
639 var_variable->attrs[COLOR_typing__Variable___declared_type].val = var28; /* _declared_type on <var_variable:nullable Variable(Variable)> */
640 RET_LABEL29:(void)0;
641 }
642 }
643 var30 = NEW_parser_nodes__AVarAssignExpr(&type_parser_nodes__AVarAssignExpr);
644 {
645 astbuilder__AVarAssignExpr__make(var30, var_variable, self); /* Direct call astbuilder#AVarAssignExpr#make on <var30:AVarAssignExpr>*/
646 }
647 var_nvar = var30;
648 {
649 parser_nodes__Prod__replace_with(var_place, var_nvar); /* Direct call parser_nodes#Prod#replace_with on <var_place:AExpr>*/
650 }
651 {
652 { /* Inline astbuilder#AExpr#variable_cache= (self,var_variable) on <self:AExpr> */
653 self->attrs[COLOR_astbuilder__AExpr___variable_cache].val = var_variable; /* _variable_cache on <self:AExpr> */
654 RET_LABEL31:(void)0;
655 }
656 }
657 } else {
658 }
659 var32 = NEW_parser_nodes__AVarExpr(&type_parser_nodes__AVarExpr);
660 {
661 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:nullable Variable(Variable)> */
662 var35 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:nullable Variable(Variable)> */
663 var33 = var35;
664 RET_LABEL34:(void)0;
665 }
666 }
667 if (unlikely(var33 == NULL)) {
668 PRINT_ERROR("Runtime error: %s", "Cast failed");
669 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 125);
670 show_backtrace(1);
671 }
672 {
673 astbuilder__AVarExpr__make(var32, var_variable, var33); /* Direct call astbuilder#AVarExpr#make on <var32:AVarExpr>*/
674 }
675 var = var32;
676 goto RET_LABEL;
677 RET_LABEL:;
678 return var;
679 }
680 /* method astbuilder#AExpr#make_var_read for (self: Object): AVarExpr */
681 val* VIRTUAL_astbuilder__AExpr__make_var_read(val* self) {
682 val* var /* : AVarExpr */;
683 val* var1 /* : AVarExpr */;
684 var1 = astbuilder__AExpr__make_var_read(self);
685 var = var1;
686 RET_LABEL:;
687 return var;
688 }
689 /* method astbuilder#AExpr#variable_cache for (self: AExpr): nullable Variable */
690 val* astbuilder__AExpr__variable_cache(val* self) {
691 val* var /* : nullable Variable */;
692 val* var1 /* : nullable Variable */;
693 var1 = self->attrs[COLOR_astbuilder__AExpr___variable_cache].val; /* _variable_cache on <self:AExpr> */
694 var = var1;
695 RET_LABEL:;
696 return var;
697 }
698 /* method astbuilder#AExpr#variable_cache for (self: Object): nullable Variable */
699 val* VIRTUAL_astbuilder__AExpr__variable_cache(val* self) {
700 val* var /* : nullable Variable */;
701 val* var1 /* : nullable Variable */;
702 val* var3 /* : nullable Variable */;
703 { /* Inline astbuilder#AExpr#variable_cache (self) on <self:Object(AExpr)> */
704 var3 = self->attrs[COLOR_astbuilder__AExpr___variable_cache].val; /* _variable_cache on <self:Object(AExpr)> */
705 var1 = var3;
706 RET_LABEL2:(void)0;
707 }
708 var = var1;
709 RET_LABEL:;
710 return var;
711 }
712 /* method astbuilder#AExpr#variable_cache= for (self: AExpr, nullable Variable) */
713 void astbuilder__AExpr__variable_cache_61d(val* self, val* p0) {
714 self->attrs[COLOR_astbuilder__AExpr___variable_cache].val = p0; /* _variable_cache on <self:AExpr> */
715 RET_LABEL:;
716 }
717 /* method astbuilder#AExpr#variable_cache= for (self: Object, nullable Variable) */
718 void VIRTUAL_astbuilder__AExpr__variable_cache_61d(val* self, val* p0) {
719 { /* Inline astbuilder#AExpr#variable_cache= (self,p0) on <self:Object(AExpr)> */
720 self->attrs[COLOR_astbuilder__AExpr___variable_cache].val = p0; /* _variable_cache on <self:Object(AExpr)> */
721 RET_LABEL1:(void)0;
722 }
723 RET_LABEL:;
724 }
725 /* method astbuilder#AExpr#detach_with_placeholder for (self: AExpr): AExpr */
726 val* astbuilder__AExpr__detach_with_placeholder(val* self) {
727 val* var /* : AExpr */;
728 val* var1 /* : APlaceholderExpr */;
729 val* var_h /* var h: APlaceholderExpr */;
730 var1 = NEW_astbuilder__APlaceholderExpr(&type_astbuilder__APlaceholderExpr);
731 {
732 astbuilder__APlaceholderExpr__make(var1); /* Direct call astbuilder#APlaceholderExpr#make on <var1:APlaceholderExpr>*/
733 }
734 var_h = var1;
735 {
736 parser_nodes__Prod__replace_with(self, var_h); /* Direct call parser_nodes#Prod#replace_with on <self:AExpr>*/
737 }
738 var = var_h;
739 goto RET_LABEL;
740 RET_LABEL:;
741 return var;
742 }
743 /* method astbuilder#AExpr#detach_with_placeholder for (self: Object): AExpr */
744 val* VIRTUAL_astbuilder__AExpr__detach_with_placeholder(val* self) {
745 val* var /* : AExpr */;
746 val* var1 /* : AExpr */;
747 var1 = astbuilder__AExpr__detach_with_placeholder(self);
748 var = var1;
749 RET_LABEL:;
750 return var;
751 }
752 /* method astbuilder#AExpr#add for (self: AExpr, AExpr) */
753 void astbuilder__AExpr__add(val* self, val* p0) {
754 val* var_expr /* var expr: AExpr */;
755 static val* varonce;
756 val* var /* : String */;
757 char* var1 /* : NativeString */;
758 long var2 /* : Int */;
759 val* var3 /* : FlatString */;
760 val* var4 /* : String */;
761 val* var5 /* : Array[Object] */;
762 long var6 /* : Int */;
763 val* var7 /* : NativeArray[Object] */;
764 val* var8 /* : String */;
765 var_expr = p0;
766 if (varonce) {
767 var = varonce;
768 } else {
769 var1 = "add not implemented in ";
770 var2 = 23;
771 var3 = string__NativeString__to_s_with_length(var1, var2);
772 var = var3;
773 varonce = var;
774 }
775 {
776 var4 = string__Object__inspect(self);
777 }
778 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
779 { /* var5 = array_instance Array[Object] */
780 var6 = 2;
781 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
782 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
783 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var4;
784 {
785 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
786 }
787 }
788 {
789 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
790 }
791 {
792 file__Object__print(self, var8); /* Direct call file#Object#print on <self:AExpr>*/
793 }
794 PRINT_ERROR("Runtime error: %s", "Aborted");
795 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 158);
796 show_backtrace(1);
797 RET_LABEL:;
798 }
799 /* method astbuilder#AExpr#add for (self: Object, AExpr) */
800 void VIRTUAL_astbuilder__AExpr__add(val* self, val* p0) {
801 astbuilder__AExpr__add(self, p0); /* Direct call astbuilder#AExpr#add on <self:Object(AExpr)>*/
802 RET_LABEL:;
803 }
804 /* method astbuilder#APlaceholderExpr#make for (self: APlaceholderExpr) */
805 void astbuilder__APlaceholderExpr__make(val* self) {
806 {
807 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:APlaceholderExpr>*/;
808 }
809 RET_LABEL:;
810 }
811 /* method astbuilder#APlaceholderExpr#make for (self: Object) */
812 void VIRTUAL_astbuilder__APlaceholderExpr__make(val* self) {
813 astbuilder__APlaceholderExpr__make(self); /* Direct call astbuilder#APlaceholderExpr#make on <self:Object(APlaceholderExpr)>*/
814 RET_LABEL:;
815 }
816 /* method astbuilder#ABlockExpr#make for (self: ABlockExpr) */
817 void astbuilder__ABlockExpr__make(val* self) {
818 short int var /* : Bool */;
819 var = 1;
820 {
821 { /* Inline typing#AExpr#is_typed= (self,var) on <self:ABlockExpr> */
822 self->attrs[COLOR_typing__AExpr___is_typed].s = var; /* _is_typed on <self:ABlockExpr> */
823 RET_LABEL1:(void)0;
824 }
825 }
826 RET_LABEL:;
827 }
828 /* method astbuilder#ABlockExpr#make for (self: Object) */
829 void VIRTUAL_astbuilder__ABlockExpr__make(val* self) {
830 astbuilder__ABlockExpr__make(self); /* Direct call astbuilder#ABlockExpr#make on <self:Object(ABlockExpr)>*/
831 RET_LABEL:;
832 }
833 /* method astbuilder#ABlockExpr#add for (self: ABlockExpr, AExpr) */
834 void astbuilder__ABlockExpr__add(val* self, val* p0) {
835 val* var_expr /* var expr: AExpr */;
836 val* var /* : ANodes[AExpr] */;
837 val* var2 /* : ANodes[AExpr] */;
838 var_expr = p0;
839 {
840 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
841 var2 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
842 if (unlikely(var2 == NULL)) {
843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
844 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321);
845 show_backtrace(1);
846 }
847 var = var2;
848 RET_LABEL1:(void)0;
849 }
850 }
851 {
852 abstract_collection__Sequence__add(var, var_expr); /* Direct call abstract_collection#Sequence#add on <var:ANodes[AExpr]>*/
853 }
854 RET_LABEL:;
855 }
856 /* method astbuilder#ABlockExpr#add for (self: Object, AExpr) */
857 void VIRTUAL_astbuilder__ABlockExpr__add(val* self, val* p0) {
858 astbuilder__ABlockExpr__add(self, p0); /* Direct call astbuilder#ABlockExpr#add on <self:Object(ABlockExpr)>*/
859 RET_LABEL:;
860 }
861 /* method astbuilder#ALoopExpr#make for (self: ALoopExpr) */
862 void astbuilder__ALoopExpr__make(val* self) {
863 val* var /* : TKwloop */;
864 short int var1 /* : Bool */;
865 val* var3 /* : ABlockExpr */;
866 val* var4 /* : nullable AExpr */;
867 val* var6 /* : nullable AExpr */;
868 short int var7 /* : Bool */;
869 var = NEW_parser_nodes__TKwloop(&type_parser_nodes__TKwloop);
870 {
871 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TKwloop>*/;
872 }
873 self->attrs[COLOR_parser_nodes__ALoopExpr___n_kwloop].val = var; /* _n_kwloop on <self:ALoopExpr> */
874 var1 = 1;
875 {
876 { /* Inline typing#AExpr#is_typed= (self,var1) on <self:ALoopExpr> */
877 self->attrs[COLOR_typing__AExpr___is_typed].s = var1; /* _is_typed on <self:ALoopExpr> */
878 RET_LABEL2:(void)0;
879 }
880 }
881 var3 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
882 {
883 ((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:ABlockExpr>*/;
884 }
885 {
886 parser_prod__ALoopExpr__n_block_61d(self, var3); /* Direct call parser_prod#ALoopExpr#n_block= on <self:ALoopExpr>*/
887 }
888 {
889 { /* Inline parser_nodes#ALoopExpr#n_block (self) on <self:ALoopExpr> */
890 var6 = self->attrs[COLOR_parser_nodes__ALoopExpr___n_block].val; /* _n_block on <self:ALoopExpr> */
891 var4 = var6;
892 RET_LABEL5:(void)0;
893 }
894 }
895 var7 = 1;
896 if (var4 == NULL) {
897 PRINT_ERROR("Runtime error: %s", "Receiver is null");
898 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 194);
899 show_backtrace(1);
900 } else {
901 { /* Inline typing#AExpr#is_typed= (var4,var7) on <var4:nullable AExpr> */
902 if (unlikely(var4 == NULL)) {
903 PRINT_ERROR("Runtime error: %s", "Receiver is null");
904 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 619);
905 show_backtrace(1);
906 }
907 var4->attrs[COLOR_typing__AExpr___is_typed].s = var7; /* _is_typed on <var4:nullable AExpr> */
908 RET_LABEL8:(void)0;
909 }
910 }
911 RET_LABEL:;
912 }
913 /* method astbuilder#ALoopExpr#make for (self: Object) */
914 void VIRTUAL_astbuilder__ALoopExpr__make(val* self) {
915 astbuilder__ALoopExpr__make(self); /* Direct call astbuilder#ALoopExpr#make on <self:Object(ALoopExpr)>*/
916 RET_LABEL:;
917 }
918 /* method astbuilder#ALoopExpr#add for (self: ALoopExpr, AExpr) */
919 void astbuilder__ALoopExpr__add(val* self, val* p0) {
920 val* var_expr /* var expr: AExpr */;
921 val* var /* : nullable AExpr */;
922 val* var2 /* : nullable AExpr */;
923 var_expr = p0;
924 {
925 { /* Inline parser_nodes#ALoopExpr#n_block (self) on <self:ALoopExpr> */
926 var2 = self->attrs[COLOR_parser_nodes__ALoopExpr___n_block].val; /* _n_block on <self:ALoopExpr> */
927 var = var2;
928 RET_LABEL1:(void)0;
929 }
930 }
931 if (var == NULL) {
932 PRINT_ERROR("Runtime error: %s", "Receiver is null");
933 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 199);
934 show_backtrace(1);
935 } else {
936 ((void (*)(val*, val*))(var->class->vft[COLOR_astbuilder__AExpr__add]))(var, var_expr) /* add on <var:nullable AExpr>*/;
937 }
938 RET_LABEL:;
939 }
940 /* method astbuilder#ALoopExpr#add for (self: Object, AExpr) */
941 void VIRTUAL_astbuilder__ALoopExpr__add(val* self, val* p0) {
942 astbuilder__ALoopExpr__add(self, p0); /* Direct call astbuilder#ALoopExpr#add on <self:Object(ALoopExpr)>*/
943 RET_LABEL:;
944 }
945 /* method astbuilder#ADoExpr#make for (self: ADoExpr) */
946 void astbuilder__ADoExpr__make(val* self) {
947 val* var /* : TKwdo */;
948 short int var1 /* : Bool */;
949 val* var3 /* : ABlockExpr */;
950 val* var4 /* : nullable AExpr */;
951 val* var6 /* : nullable AExpr */;
952 short int var7 /* : Bool */;
953 var = NEW_parser_nodes__TKwdo(&type_parser_nodes__TKwdo);
954 {
955 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TKwdo>*/;
956 }
957 self->attrs[COLOR_parser_nodes__ADoExpr___n_kwdo].val = var; /* _n_kwdo on <self:ADoExpr> */
958 var1 = 1;
959 {
960 { /* Inline typing#AExpr#is_typed= (self,var1) on <self:ADoExpr> */
961 self->attrs[COLOR_typing__AExpr___is_typed].s = var1; /* _is_typed on <self:ADoExpr> */
962 RET_LABEL2:(void)0;
963 }
964 }
965 var3 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
966 {
967 ((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:ABlockExpr>*/;
968 }
969 {
970 parser_prod__ADoExpr__n_block_61d(self, var3); /* Direct call parser_prod#ADoExpr#n_block= on <self:ADoExpr>*/
971 }
972 {
973 { /* Inline parser_nodes#ADoExpr#n_block (self) on <self:ADoExpr> */
974 var6 = self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val; /* _n_block on <self:ADoExpr> */
975 var4 = var6;
976 RET_LABEL5:(void)0;
977 }
978 }
979 var7 = 1;
980 if (var4 == NULL) {
981 PRINT_ERROR("Runtime error: %s", "Receiver is null");
982 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 209);
983 show_backtrace(1);
984 } else {
985 { /* Inline typing#AExpr#is_typed= (var4,var7) on <var4:nullable AExpr> */
986 if (unlikely(var4 == NULL)) {
987 PRINT_ERROR("Runtime error: %s", "Receiver is null");
988 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 619);
989 show_backtrace(1);
990 }
991 var4->attrs[COLOR_typing__AExpr___is_typed].s = var7; /* _is_typed on <var4:nullable AExpr> */
992 RET_LABEL8:(void)0;
993 }
994 }
995 RET_LABEL:;
996 }
997 /* method astbuilder#ADoExpr#make for (self: Object) */
998 void VIRTUAL_astbuilder__ADoExpr__make(val* self) {
999 astbuilder__ADoExpr__make(self); /* Direct call astbuilder#ADoExpr#make on <self:Object(ADoExpr)>*/
1000 RET_LABEL:;
1001 }
1002 /* method astbuilder#ADoExpr#add for (self: ADoExpr, AExpr) */
1003 void astbuilder__ADoExpr__add(val* self, val* p0) {
1004 val* var_expr /* var expr: AExpr */;
1005 val* var /* : nullable AExpr */;
1006 val* var2 /* : nullable AExpr */;
1007 var_expr = p0;
1008 {
1009 { /* Inline parser_nodes#ADoExpr#n_block (self) on <self:ADoExpr> */
1010 var2 = self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val; /* _n_block on <self:ADoExpr> */
1011 var = var2;
1012 RET_LABEL1:(void)0;
1013 }
1014 }
1015 if (var == NULL) {
1016 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1017 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 225);
1018 show_backtrace(1);
1019 } else {
1020 ((void (*)(val*, val*))(var->class->vft[COLOR_astbuilder__AExpr__add]))(var, var_expr) /* add on <var:nullable AExpr>*/;
1021 }
1022 RET_LABEL:;
1023 }
1024 /* method astbuilder#ADoExpr#add for (self: Object, AExpr) */
1025 void VIRTUAL_astbuilder__ADoExpr__add(val* self, val* p0) {
1026 astbuilder__ADoExpr__add(self, p0); /* Direct call astbuilder#ADoExpr#add on <self:Object(ADoExpr)>*/
1027 RET_LABEL:;
1028 }
1029 /* method astbuilder#ABreakExpr#make for (self: ABreakExpr, EscapeMark) */
1030 void astbuilder__ABreakExpr__make(val* self, val* p0) {
1031 val* var_escapemark /* var escapemark: EscapeMark */;
1032 val* var /* : TKwbreak */;
1033 val* var2 /* : Array[AEscapeExpr] */;
1034 val* var4 /* : Array[AEscapeExpr] */;
1035 short int var5 /* : Bool */;
1036 var_escapemark = p0;
1037 var = NEW_parser_nodes__TKwbreak(&type_parser_nodes__TKwbreak);
1038 {
1039 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TKwbreak>*/;
1040 }
1041 self->attrs[COLOR_parser_nodes__ABreakExpr___n_kwbreak].val = var; /* _n_kwbreak on <self:ABreakExpr> */
1042 {
1043 { /* Inline scope#AEscapeExpr#escapemark= (self,var_escapemark) on <self:ABreakExpr> */
1044 self->attrs[COLOR_scope__AEscapeExpr___escapemark].val = var_escapemark; /* _escapemark on <self:ABreakExpr> */
1045 RET_LABEL1:(void)0;
1046 }
1047 }
1048 {
1049 { /* Inline scope#EscapeMark#escapes (var_escapemark) on <var_escapemark:EscapeMark> */
1050 var4 = var_escapemark->attrs[COLOR_scope__EscapeMark___escapes].val; /* _escapes on <var_escapemark:EscapeMark> */
1051 if (unlikely(var4 == NULL)) {
1052 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _escapes");
1053 PRINT_ERROR(" (%s:%d)\n", "semantize/scope.nit", 57);
1054 show_backtrace(1);
1055 }
1056 var2 = var4;
1057 RET_LABEL3:(void)0;
1058 }
1059 }
1060 {
1061 array__Array__add(var2, self); /* Direct call array#Array#add on <var2:Array[AEscapeExpr]>*/
1062 }
1063 var5 = 1;
1064 {
1065 { /* Inline typing#AExpr#is_typed= (self,var5) on <self:ABreakExpr> */
1066 self->attrs[COLOR_typing__AExpr___is_typed].s = var5; /* _is_typed on <self:ABreakExpr> */
1067 RET_LABEL6:(void)0;
1068 }
1069 }
1070 RET_LABEL:;
1071 }
1072 /* method astbuilder#ABreakExpr#make for (self: Object, EscapeMark) */
1073 void VIRTUAL_astbuilder__ABreakExpr__make(val* self, val* p0) {
1074 astbuilder__ABreakExpr__make(self, p0); /* Direct call astbuilder#ABreakExpr#make on <self:Object(ABreakExpr)>*/
1075 RET_LABEL:;
1076 }
1077 /* method astbuilder#AIfExpr#make for (self: AIfExpr, AExpr, nullable MType) */
1078 void astbuilder__AIfExpr__make(val* self, val* p0, val* p1) {
1079 val* var_condition /* var condition: AExpr */;
1080 val* var_mtype /* var mtype: nullable MType */;
1081 val* var /* : TKwif */;
1082 val* var1 /* : AExpr */;
1083 val* var3 /* : ABlockExpr */;
1084 val* var4 /* : ABlockExpr */;
1085 short int var6 /* : Bool */;
1086 var_condition = p0;
1087 var_mtype = p1;
1088 var = NEW_parser_nodes__TKwif(&type_parser_nodes__TKwif);
1089 {
1090 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TKwif>*/;
1091 }
1092 self->attrs[COLOR_parser_nodes__AIfExpr___n_kwif].val = var; /* _n_kwif on <self:AIfExpr> */
1093 self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val = var_condition; /* _n_expr on <self:AIfExpr> */
1094 var1 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
1095 if (unlikely(var1 == NULL)) {
1096 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1097 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 244);
1098 show_backtrace(1);
1099 }
1100 {
1101 { /* Inline parser_nodes#ANode#parent= (var1,self) on <var1:AExpr> */
1102 var1->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var1:AExpr> */
1103 RET_LABEL2:(void)0;
1104 }
1105 }
1106 var3 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
1107 {
1108 astbuilder__ABlockExpr__make(var3); /* Direct call astbuilder#ABlockExpr#make on <var3:ABlockExpr>*/
1109 }
1110 self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val = var3; /* _n_then on <self:AIfExpr> */
1111 var4 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
1112 {
1113 astbuilder__ABlockExpr__make(var4); /* Direct call astbuilder#ABlockExpr#make on <var4:ABlockExpr>*/
1114 }
1115 self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val = var4; /* _n_else on <self:AIfExpr> */
1116 {
1117 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AIfExpr> */
1118 self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AIfExpr> */
1119 RET_LABEL5:(void)0;
1120 }
1121 }
1122 var6 = 1;
1123 {
1124 { /* Inline typing#AExpr#is_typed= (self,var6) on <self:AIfExpr> */
1125 self->attrs[COLOR_typing__AExpr___is_typed].s = var6; /* _is_typed on <self:AIfExpr> */
1126 RET_LABEL7:(void)0;
1127 }
1128 }
1129 RET_LABEL:;
1130 }
1131 /* method astbuilder#AIfExpr#make for (self: Object, AExpr, nullable MType) */
1132 void VIRTUAL_astbuilder__AIfExpr__make(val* self, val* p0, val* p1) {
1133 astbuilder__AIfExpr__make(self, p0, p1); /* Direct call astbuilder#AIfExpr#make on <self:Object(AIfExpr)>*/
1134 RET_LABEL:;
1135 }
1136 /* method astbuilder#AType#make for (self: AType) */
1137 void astbuilder__AType__make(val* self) {
1138 val* var /* : TClassid */;
1139 var = NEW_parser_nodes__TClassid(&type_parser_nodes__TClassid);
1140 {
1141 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TClassid>*/;
1142 }
1143 self->attrs[COLOR_parser_nodes__AType___n_id].val = var; /* _n_id on <self:AType> */
1144 RET_LABEL:;
1145 }
1146 /* method astbuilder#AType#make for (self: Object) */
1147 void VIRTUAL_astbuilder__AType__make(val* self) {
1148 astbuilder__AType__make(self); /* Direct call astbuilder#AType#make on <self:Object(AType)>*/
1149 RET_LABEL:;
1150 }
1151 /* method astbuilder#ADecIntExpr#make for (self: ADecIntExpr, Int, MType) */
1152 void astbuilder__ADecIntExpr__make(val* self, long p0, val* p1) {
1153 long var_value /* var value: Int */;
1154 val* var_t /* var t: MType */;
1155 val* var /* : nullable Int */;
1156 val* var2 /* : TNumber */;
1157 var_value = p0;
1158 var_t = p1;
1159 {
1160 { /* Inline literal#AIntExpr#value= (self,var_value) on <self:ADecIntExpr> */
1161 var = BOX_kernel__Int(var_value); /* autobox from Int to nullable Int */
1162 self->attrs[COLOR_literal__AIntExpr___value].val = var; /* _value on <self:ADecIntExpr> */
1163 RET_LABEL1:(void)0;
1164 }
1165 }
1166 var2 = NEW_parser_nodes__TNumber(&type_parser_nodes__TNumber);
1167 {
1168 ((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:TNumber>*/;
1169 }
1170 self->attrs[COLOR_parser_nodes__ADecIntExpr___n_number].val = var2; /* _n_number on <self:ADecIntExpr> */
1171 {
1172 { /* Inline typing#AExpr#mtype= (self,var_t) on <self:ADecIntExpr> */
1173 self->attrs[COLOR_typing__AExpr___mtype].val = var_t; /* _mtype on <self:ADecIntExpr> */
1174 RET_LABEL3:(void)0;
1175 }
1176 }
1177 RET_LABEL:;
1178 }
1179 /* method astbuilder#ADecIntExpr#make for (self: Object, Int, MType) */
1180 void VIRTUAL_astbuilder__ADecIntExpr__make(val* self, long p0, val* p1) {
1181 astbuilder__ADecIntExpr__make(self, p0, p1); /* Direct call astbuilder#ADecIntExpr#make on <self:Object(ADecIntExpr)>*/
1182 RET_LABEL:;
1183 }
1184 /* method astbuilder#ANewExpr#make for (self: ANewExpr, CallSite, nullable Array[AExpr]) */
1185 void astbuilder__ANewExpr__make(val* self, val* p0, val* p1) {
1186 val* var_callsite /* var callsite: CallSite */;
1187 val* var_args /* var args: nullable Array[AExpr] */;
1188 val* var /* : TKwnew */;
1189 val* var1 /* : AType */;
1190 val* var2 /* : AListExprs */;
1191 val* var3 /* : null */;
1192 short int var4 /* : Bool */;
1193 short int var5 /* : Bool */;
1194 val* var_other /* var other: nullable Object */;
1195 short int var7 /* : Bool */;
1196 short int var8 /* : Bool */;
1197 short int var9 /* : Bool */;
1198 val* var10 /* : AExprs */;
1199 val* var12 /* : AExprs */;
1200 val* var13 /* : ANodes[AExpr] */;
1201 val* var15 /* : ANodes[AExpr] */;
1202 val* var17 /* : MType */;
1203 val* var19 /* : MType */;
1204 short int var20 /* : Bool */;
1205 int cltype;
1206 int idtype;
1207 const char* var_class_name;
1208 val* var22 /* : MMethod */;
1209 val* var24 /* : MMethod */;
1210 short int var25 /* : Bool */;
1211 short int var27 /* : Bool */;
1212 val* var28 /* : MSignature */;
1213 val* var30 /* : MSignature */;
1214 val* var31 /* : nullable MType */;
1215 val* var33 /* : nullable MType */;
1216 val* var35 /* : MType */;
1217 val* var37 /* : MType */;
1218 short int var39 /* : Bool */;
1219 var_callsite = p0;
1220 var_args = p1;
1221 var = NEW_parser_nodes__TKwnew(&type_parser_nodes__TKwnew);
1222 {
1223 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TKwnew>*/;
1224 }
1225 self->attrs[COLOR_parser_nodes__ANewExpr___n_kwnew].val = var; /* _n_kwnew on <self:ANewExpr> */
1226 var1 = NEW_parser_nodes__AType(&type_parser_nodes__AType);
1227 {
1228 astbuilder__AType__make(var1); /* Direct call astbuilder#AType#make on <var1:AType>*/
1229 }
1230 self->attrs[COLOR_parser_nodes__ANewExpr___n_type].val = var1; /* _n_type on <self:ANewExpr> */
1231 var2 = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
1232 {
1233 ((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:AListExprs>*/;
1234 }
1235 self->attrs[COLOR_parser_nodes__ANewExpr___n_args].val = var2; /* _n_args on <self:ANewExpr> */
1236 var3 = NULL;
1237 if (var_args == NULL) {
1238 var4 = 0; /* is null */
1239 } else {
1240 var4 = 1; /* arg is null and recv is not */
1241 }
1242 if (0) {
1243 { /* Inline kernel#Object#!= (var_args,var3) on <var_args:nullable Array[AExpr]> */
1244 var_other = var3;
1245 {
1246 var8 = ((short int (*)(val*, val*))(var_args->class->vft[COLOR_kernel__Object___61d_61d]))(var_args, var_other) /* == on <var_args:nullable Array[AExpr](Array[AExpr])>*/;
1247 var7 = var8;
1248 }
1249 var9 = !var7;
1250 var5 = var9;
1251 goto RET_LABEL6;
1252 RET_LABEL6:(void)0;
1253 }
1254 var4 = var5;
1255 }
1256 if (var4){
1257 {
1258 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
1259 var12 = self->attrs[COLOR_parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
1260 if (unlikely(var12 == NULL)) {
1261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
1262 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1614);
1263 show_backtrace(1);
1264 }
1265 var10 = var12;
1266 RET_LABEL11:(void)0;
1267 }
1268 }
1269 {
1270 { /* Inline parser_nodes#AExprs#n_exprs (var10) on <var10:AExprs> */
1271 var15 = var10->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var10:AExprs> */
1272 if (unlikely(var15 == NULL)) {
1273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
1274 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1946);
1275 show_backtrace(1);
1276 }
1277 var13 = var15;
1278 RET_LABEL14:(void)0;
1279 }
1280 }
1281 {
1282 abstract_collection__SimpleCollection__add_all(var13, var_args); /* Direct call abstract_collection#SimpleCollection#add_all on <var13:ANodes[AExpr]>*/
1283 }
1284 } else {
1285 }
1286 {
1287 { /* Inline typing#ANewExpr#callsite= (self,var_callsite) on <self:ANewExpr> */
1288 self->attrs[COLOR_typing__ANewExpr___callsite].val = var_callsite; /* _callsite on <self:ANewExpr> */
1289 RET_LABEL16:(void)0;
1290 }
1291 }
1292 {
1293 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:CallSite> */
1294 var19 = var_callsite->attrs[COLOR_typing__CallSite___recv].val; /* _recv on <var_callsite:CallSite> */
1295 if (unlikely(var19 == NULL)) {
1296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
1297 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469);
1298 show_backtrace(1);
1299 }
1300 var17 = var19;
1301 RET_LABEL18:(void)0;
1302 }
1303 }
1304 /* <var17:MType> isa MClassType */
1305 cltype = type_model__MClassType.color;
1306 idtype = type_model__MClassType.id;
1307 if(cltype >= var17->type->table_size) {
1308 var20 = 0;
1309 } else {
1310 var20 = var17->type->type_table[cltype] == idtype;
1311 }
1312 if (unlikely(!var20)) {
1313 var_class_name = var17 == NULL ? "null" : var17->type->name;
1314 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
1315 PRINT_ERROR(" (%s:%d)\n", "astbuilder.nit", 278);
1316 show_backtrace(1);
1317 }
1318 {
1319 { /* Inline typing#ANewExpr#recvtype= (self,var17) on <self:ANewExpr> */
1320 self->attrs[COLOR_typing__ANewExpr___recvtype].val = var17; /* _recvtype on <self:ANewExpr> */
1321 RET_LABEL21:(void)0;
1322 }
1323 }
1324 {
1325 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
1326 var24 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
1327 if (unlikely(var24 == NULL)) {
1328 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1329 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
1330 show_backtrace(1);
1331 }
1332 var22 = var24;
1333 RET_LABEL23:(void)0;
1334 }
1335 }
1336 {
1337 { /* Inline model#MMethod#is_new (var22) on <var22:MMethod> */
1338 var27 = var22->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <var22:MMethod> */
1339 var25 = var27;
1340 RET_LABEL26:(void)0;
1341 }
1342 }
1343 if (var25){
1344 {
1345 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:CallSite> */
1346 var30 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:CallSite> */
1347 if (unlikely(var30 == NULL)) {
1348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
1349 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
1350 show_backtrace(1);
1351 }
1352 var28 = var30;
1353 RET_LABEL29:(void)0;
1354 }
1355 }
1356 {
1357 { /* Inline model#MSignature#return_mtype (var28) on <var28:MSignature> */
1358 var33 = var28->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var28:MSignature> */
1359 var31 = var33;
1360 RET_LABEL32:(void)0;
1361 }
1362 }
1363 {
1364 { /* Inline typing#AExpr#mtype= (self,var31) on <self:ANewExpr> */
1365 self->attrs[COLOR_typing__AExpr___mtype].val = var31; /* _mtype on <self:ANewExpr> */
1366 RET_LABEL34:(void)0;
1367 }
1368 }
1369 } else {
1370 {
1371 { /* Inline typing#CallSite#recv (var_callsite) on <var_callsite:CallSite> */
1372 var37 = var_callsite->attrs[COLOR_typing__CallSite___recv].val; /* _recv on <var_callsite:CallSite> */
1373 if (unlikely(var37 == NULL)) {
1374 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
1375 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469);
1376 show_backtrace(1);
1377 }
1378 var35 = var37;
1379 RET_LABEL36:(void)0;
1380 }
1381 }
1382 {
1383 { /* Inline typing#AExpr#mtype= (self,var35) on <self:ANewExpr> */
1384 self->attrs[COLOR_typing__AExpr___mtype].val = var35; /* _mtype on <self:ANewExpr> */
1385 RET_LABEL38:(void)0;
1386 }
1387 }
1388 }
1389 var39 = 1;
1390 {
1391 { /* Inline typing#AExpr#is_typed= (self,var39) on <self:ANewExpr> */
1392 self->attrs[COLOR_typing__AExpr___is_typed].s = var39; /* _is_typed on <self:ANewExpr> */
1393 RET_LABEL40:(void)0;
1394 }
1395 }
1396 RET_LABEL:;
1397 }
1398 /* method astbuilder#ANewExpr#make for (self: Object, CallSite, nullable Array[AExpr]) */
1399 void VIRTUAL_astbuilder__ANewExpr__make(val* self, val* p0, val* p1) {
1400 astbuilder__ANewExpr__make(self, p0, p1); /* Direct call astbuilder#ANewExpr#make on <self:Object(ANewExpr)>*/
1401 RET_LABEL:;
1402 }
1403 /* method astbuilder#ACallExpr#make for (self: ACallExpr, AExpr, CallSite, nullable Array[AExpr]) */
1404 void astbuilder__ACallExpr__make(val* self, val* p0, val* p1, val* p2) {
1405 val* var_recv /* var recv: AExpr */;
1406 val* var_callsite /* var callsite: CallSite */;
1407 val* var_args /* var args: nullable Array[AExpr] */;
1408 val* var /* : AListExprs */;
1409 val* var1 /* : TId */;
1410 val* var2 /* : null */;
1411 short int var3 /* : Bool */;
1412 short int var4 /* : Bool */;
1413 val* var_other /* var other: nullable Object */;
1414 short int var6 /* : Bool */;
1415 short int var7 /* : Bool */;
1416 short int var8 /* : Bool */;
1417 val* var9 /* : AExprs */;
1418 val* var11 /* : AExprs */;
1419 val* var12 /* : ANodes[AExpr] */;
1420 val* var14 /* : ANodes[AExpr] */;
1421 val* var16 /* : MSignature */;
1422 val* var18 /* : MSignature */;
1423 val* var19 /* : nullable MType */;
1424 val* var21 /* : nullable MType */;
1425 short int var23 /* : Bool */;
1426 var_recv = p0;
1427 var_callsite = p1;
1428 var_args = p2;
1429 self->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val = var_recv; /* _n_expr on <self:ACallExpr> */
1430 var = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
1431 {
1432 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:AListExprs>*/;
1433 }
1434 self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val = var; /* _n_args on <self:ACallExpr> */
1435 var1 = NEW_parser_nodes__TId(&type_parser_nodes__TId);
1436 {
1437 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:TId>*/;
1438 }
1439 self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val = var1; /* _n_id on <self:ACallExpr> */
1440 var2 = NULL;
1441 if (var_args == NULL) {
1442 var3 = 0; /* is null */
1443 } else {
1444 var3 = 1; /* arg is null and recv is not */
1445 }
1446 if (0) {
1447 { /* Inline kernel#Object#!= (var_args,var2) on <var_args:nullable Array[AExpr]> */
1448 var_other = var2;
1449 {
1450 var7 = ((short int (*)(val*, val*))(var_args->class->vft[COLOR_kernel__Object___61d_61d]))(var_args, var_other) /* == on <var_args:nullable Array[AExpr](Array[AExpr])>*/;
1451 var6 = var7;
1452 }
1453 var8 = !var6;
1454 var4 = var8;
1455 goto RET_LABEL5;
1456 RET_LABEL5:(void)0;
1457 }
1458 var3 = var4;
1459 }
1460 if (var3){
1461 {
1462 { /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:ACallExpr> */
1463 var11 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:ACallExpr> */
1464 if (unlikely(var11 == NULL)) {
1465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
1466 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1647);
1467 show_backtrace(1);
1468 }
1469 var9 = var11;
1470 RET_LABEL10:(void)0;
1471 }
1472 }
1473 {
1474 { /* Inline parser_nodes#AExprs#n_exprs (var9) on <var9:AExprs> */
1475 var14 = var9->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var9:AExprs> */
1476 if (unlikely(var14 == NULL)) {
1477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
1478 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1946);
1479 show_backtrace(1);
1480 }
1481 var12 = var14;
1482 RET_LABEL13:(void)0;
1483 }
1484 }
1485 {
1486 abstract_collection__SimpleCollection__add_all(var12, var_args); /* Direct call abstract_collection#SimpleCollection#add_all on <var12:ANodes[AExpr]>*/
1487 }
1488 } else {
1489 }
1490 {
1491 { /* Inline typing#ASendExpr#callsite= (self,var_callsite) on <self:ACallExpr> */
1492 self->attrs[COLOR_typing__ASendExpr___callsite].val = var_callsite; /* _callsite on <self:ACallExpr> */
1493 RET_LABEL15:(void)0;
1494 }
1495 }
1496 {
1497 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:CallSite> */
1498 var18 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:CallSite> */
1499 if (unlikely(var18 == NULL)) {
1500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
1501 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
1502 show_backtrace(1);
1503 }
1504 var16 = var18;
1505 RET_LABEL17:(void)0;
1506 }
1507 }
1508 {
1509 { /* Inline model#MSignature#return_mtype (var16) on <var16:MSignature> */
1510 var21 = var16->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var16:MSignature> */
1511 var19 = var21;
1512 RET_LABEL20:(void)0;
1513 }
1514 }
1515 {
1516 { /* Inline typing#AExpr#mtype= (self,var19) on <self:ACallExpr> */
1517 self->attrs[COLOR_typing__AExpr___mtype].val = var19; /* _mtype on <self:ACallExpr> */
1518 RET_LABEL22:(void)0;
1519 }
1520 }
1521 var23 = 1;
1522 {
1523 { /* Inline typing#AExpr#is_typed= (self,var23) on <self:ACallExpr> */
1524 self->attrs[COLOR_typing__AExpr___is_typed].s = var23; /* _is_typed on <self:ACallExpr> */
1525 RET_LABEL24:(void)0;
1526 }
1527 }
1528 RET_LABEL:;
1529 }
1530 /* method astbuilder#ACallExpr#make for (self: Object, AExpr, CallSite, nullable Array[AExpr]) */
1531 void VIRTUAL_astbuilder__ACallExpr__make(val* self, val* p0, val* p1, val* p2) {
1532 astbuilder__ACallExpr__make(self, p0, p1, p2); /* Direct call astbuilder#ACallExpr#make on <self:Object(ACallExpr)>*/
1533 RET_LABEL:;
1534 }
1535 /* method astbuilder#AAttrExpr#make for (self: AAttrExpr, AExpr, MAttribute, MType) */
1536 void astbuilder__AAttrExpr__make(val* self, val* p0, val* p1, val* p2) {
1537 val* var_recv /* var recv: AExpr */;
1538 val* var_attribute /* var attribute: MAttribute */;
1539 val* var_t /* var t: MType */;
1540 val* var /* : TAttrid */;
1541 var_recv = p0;
1542 var_attribute = p1;
1543 var_t = p2;
1544 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_expr].val = var_recv; /* _n_expr on <self:AAttrExpr> */
1545 {
1546 { /* Inline parser_nodes#ANode#parent= (var_recv,self) on <var_recv:AExpr> */
1547 var_recv->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_recv:AExpr> */
1548 RET_LABEL1:(void)0;
1549 }
1550 }
1551 var = NEW_parser_nodes__TAttrid(&type_parser_nodes__TAttrid);
1552 {
1553 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TAttrid>*/;
1554 }
1555 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_id].val = var; /* _n_id on <self:AAttrExpr> */
1556 {
1557 { /* Inline typing#AAttrFormExpr#mproperty= (self,var_attribute) on <self:AAttrExpr> */
1558 self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = var_attribute; /* _mproperty on <self:AAttrExpr> */
1559 RET_LABEL2:(void)0;
1560 }
1561 }
1562 {
1563 { /* Inline typing#AExpr#mtype= (self,var_t) on <self:AAttrExpr> */
1564 self->attrs[COLOR_typing__AExpr___mtype].val = var_t; /* _mtype on <self:AAttrExpr> */
1565 RET_LABEL3:(void)0;
1566 }
1567 }
1568 RET_LABEL:;
1569 }
1570 /* method astbuilder#AAttrExpr#make for (self: Object, AExpr, MAttribute, MType) */
1571 void VIRTUAL_astbuilder__AAttrExpr__make(val* self, val* p0, val* p1, val* p2) {
1572 astbuilder__AAttrExpr__make(self, p0, p1, p2); /* Direct call astbuilder#AAttrExpr#make on <self:Object(AAttrExpr)>*/
1573 RET_LABEL:;
1574 }
1575 /* method astbuilder#AAttrAssignExpr#make for (self: AAttrAssignExpr, AExpr, MAttribute, AExpr) */
1576 void astbuilder__AAttrAssignExpr__make(val* self, val* p0, val* p1, val* p2) {
1577 val* var_recv /* var recv: AExpr */;
1578 val* var_attribute /* var attribute: MAttribute */;
1579 val* var_value /* var value: AExpr */;
1580 val* var /* : TAttrid */;
1581 val* var3 /* : TAssign */;
1582 val* var5 /* : nullable MType */;
1583 var_recv = p0;
1584 var_attribute = p1;
1585 var_value = p2;
1586 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_expr].val = var_recv; /* _n_expr on <self:AAttrAssignExpr> */
1587 {
1588 { /* Inline parser_nodes#ANode#parent= (var_recv,self) on <var_recv:AExpr> */
1589 var_recv->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_recv:AExpr> */
1590 RET_LABEL1:(void)0;
1591 }
1592 }
1593 var = NEW_parser_nodes__TAttrid(&type_parser_nodes__TAttrid);
1594 {
1595 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TAttrid>*/;
1596 }
1597 self->attrs[COLOR_parser_nodes__AAttrFormExpr___n_id].val = var; /* _n_id on <self:AAttrAssignExpr> */
1598 self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val = var_value; /* _n_value on <self:AAttrAssignExpr> */
1599 {
1600 { /* Inline parser_nodes#ANode#parent= (var_value,self) on <var_value:AExpr> */
1601 var_value->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_value:AExpr> */
1602 RET_LABEL2:(void)0;
1603 }
1604 }
1605 var3 = NEW_parser_nodes__TAssign(&type_parser_nodes__TAssign);
1606 {
1607 ((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:TAssign>*/;
1608 }
1609 self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val = var3; /* _n_assign on <self:AAttrAssignExpr> */
1610 {
1611 { /* Inline typing#AAttrFormExpr#mproperty= (self,var_attribute) on <self:AAttrAssignExpr> */
1612 self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = var_attribute; /* _mproperty on <self:AAttrAssignExpr> */
1613 RET_LABEL4:(void)0;
1614 }
1615 }
1616 {
1617 var5 = ((val* (*)(val*))(var_value->class->vft[COLOR_typing__AExpr__mtype]))(var_value) /* mtype on <var_value:AExpr>*/;
1618 }
1619 {
1620 { /* Inline typing#AExpr#mtype= (self,var5) on <self:AAttrAssignExpr> */
1621 self->attrs[COLOR_typing__AExpr___mtype].val = var5; /* _mtype on <self:AAttrAssignExpr> */
1622 RET_LABEL6:(void)0;
1623 }
1624 }
1625 RET_LABEL:;
1626 }
1627 /* method astbuilder#AAttrAssignExpr#make for (self: Object, AExpr, MAttribute, AExpr) */
1628 void VIRTUAL_astbuilder__AAttrAssignExpr__make(val* self, val* p0, val* p1, val* p2) {
1629 astbuilder__AAttrAssignExpr__make(self, p0, p1, p2); /* Direct call astbuilder#AAttrAssignExpr#make on <self:Object(AAttrAssignExpr)>*/
1630 RET_LABEL:;
1631 }
1632 /* method astbuilder#AVarExpr#make for (self: AVarExpr, Variable, MType) */
1633 void astbuilder__AVarExpr__make(val* self, val* p0, val* p1) {
1634 val* var_v /* var v: Variable */;
1635 val* var_mtype /* var mtype: MType */;
1636 val* var /* : TId */;
1637 var_v = p0;
1638 var_mtype = p1;
1639 var = NEW_parser_nodes__TId(&type_parser_nodes__TId);
1640 {
1641 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TId>*/;
1642 }
1643 self->attrs[COLOR_parser_nodes__AVarFormExpr___n_id].val = var; /* _n_id on <self:AVarExpr> */
1644 {
1645 { /* Inline scope#AVarFormExpr#variable= (self,var_v) on <self:AVarExpr> */
1646 self->attrs[COLOR_scope__AVarFormExpr___variable].val = var_v; /* _variable on <self:AVarExpr> */
1647 RET_LABEL1:(void)0;
1648 }
1649 }
1650 {
1651 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AVarExpr> */
1652 self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AVarExpr> */
1653 RET_LABEL2:(void)0;
1654 }
1655 }
1656 RET_LABEL:;
1657 }
1658 /* method astbuilder#AVarExpr#make for (self: Object, Variable, MType) */
1659 void VIRTUAL_astbuilder__AVarExpr__make(val* self, val* p0, val* p1) {
1660 astbuilder__AVarExpr__make(self, p0, p1); /* Direct call astbuilder#AVarExpr#make on <self:Object(AVarExpr)>*/
1661 RET_LABEL:;
1662 }
1663 /* method astbuilder#AVarAssignExpr#make for (self: AVarAssignExpr, Variable, AExpr) */
1664 void astbuilder__AVarAssignExpr__make(val* self, val* p0, val* p1) {
1665 val* var_v /* var v: Variable */;
1666 val* var_value /* var value: AExpr */;
1667 val* var /* : TId */;
1668 val* var2 /* : TAssign */;
1669 val* var4 /* : nullable MType */;
1670 var_v = p0;
1671 var_value = p1;
1672 var = NEW_parser_nodes__TId(&type_parser_nodes__TId);
1673 {
1674 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* init on <var:TId>*/;
1675 }
1676 self->attrs[COLOR_parser_nodes__AVarFormExpr___n_id].val = var; /* _n_id on <self:AVarAssignExpr> */
1677 self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val = var_value; /* _n_value on <self:AVarAssignExpr> */
1678 {
1679 { /* Inline parser_nodes#ANode#parent= (var_value,self) on <var_value:AExpr> */
1680 var_value->attrs[COLOR_parser_nodes__ANode___parent].val = self; /* _parent on <var_value:AExpr> */
1681 RET_LABEL1:(void)0;
1682 }
1683 }
1684 var2 = NEW_parser_nodes__TAssign(&type_parser_nodes__TAssign);
1685 {
1686 ((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:TAssign>*/;
1687 }
1688 self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_assign].val = var2; /* _n_assign on <self:AVarAssignExpr> */
1689 {
1690 { /* Inline scope#AVarFormExpr#variable= (self,var_v) on <self:AVarAssignExpr> */
1691 self->attrs[COLOR_scope__AVarFormExpr___variable].val = var_v; /* _variable on <self:AVarAssignExpr> */
1692 RET_LABEL3:(void)0;
1693 }
1694 }
1695 {
1696 var4 = ((val* (*)(val*))(var_value->class->vft[COLOR_typing__AExpr__mtype]))(var_value) /* mtype on <var_value:AExpr>*/;
1697 }
1698 {
1699 { /* Inline typing#AExpr#mtype= (self,var4) on <self:AVarAssignExpr> */
1700 self->attrs[COLOR_typing__AExpr___mtype].val = var4; /* _mtype on <self:AVarAssignExpr> */
1701 RET_LABEL5:(void)0;
1702 }
1703 }
1704 RET_LABEL:;
1705 }
1706 /* method astbuilder#AVarAssignExpr#make for (self: Object, Variable, AExpr) */
1707 void VIRTUAL_astbuilder__AVarAssignExpr__make(val* self, val* p0, val* p1) {
1708 astbuilder__AVarAssignExpr__make(self, p0, p1); /* Direct call astbuilder#AVarAssignExpr#make on <self:Object(AVarAssignExpr)>*/
1709 RET_LABEL:;
1710 }