07e5e9d85cf1e9dabe06325aac0f3153330aff61
[nit.git] / c_src / transform.sep.1.c
1 #include "transform.sep.0.h"
2 /* method transform#ToolContext#transform_phase for (self: ToolContext): Phase */
3 val* transform__ToolContext__transform_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_transform__ToolContext___64dtransform_phase].val; /* @transform_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @transform_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 24);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method transform#ToolContext#transform_phase for (self: Object): Phase */
17 val* VIRTUAL_transform__ToolContext__transform_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = transform__ToolContext__transform_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method transform#ToolContext#transform_phase= for (self: ToolContext, Phase) */
26 void transform__ToolContext__transform_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_transform__ToolContext___64dtransform_phase].val = p0; /* @transform_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method transform#ToolContext#transform_phase= for (self: Object, Phase) */
31 void VIRTUAL_transform__ToolContext__transform_phase_61d(val* self, val* p0) {
32 transform__ToolContext__transform_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method transform#TransformPhase#process_npropdef for (self: TransformPhase, APropdef) */
36 void transform__TransformPhase__process_npropdef(val* self, val* p0) {
37 val* var_npropdef /* var npropdef: APropdef */;
38 val* var /* : TransformVisitor */;
39 val* var_v /* var v: TransformVisitor */;
40 val* var1 /* : ASTValidationVisitor */;
41 val* var_val /* var val: nullable Object */;
42 var_npropdef = p0;
43 var = NEW_transform__TransformVisitor(&type_transform__TransformVisitor);
44 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_transform__TransformVisitor__init]))(var, self, var_npropdef) /* init on <var:TransformVisitor>*/;
45 var_v = var;
46 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, var_npropdef) /* enter_visit on <var_v:TransformVisitor>*/;
47 var1 = NEW_astvalidation__ASTValidationVisitor(&type_astvalidation__ASTValidationVisitor);
48 ((void (*)(val*))(var1->class->vft[COLOR_astvalidation__ASTValidationVisitor__init]))(var1) /* init on <var1:ASTValidationVisitor>*/;
49 var_val = var1;
50 ((void (*)(val*, val*))(var_val->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_val, var_npropdef) /* enter_visit on <var_val:nullable Object(ASTValidationVisitor)>*/;
51 RET_LABEL:;
52 }
53 /* method transform#TransformPhase#process_npropdef for (self: Object, APropdef) */
54 void VIRTUAL_transform__TransformPhase__process_npropdef(val* self, val* p0) {
55 transform__TransformPhase__process_npropdef(self, p0);
56 RET_LABEL:;
57 }
58 /* method transform#TransformVisitor#phase for (self: TransformVisitor): TransformPhase */
59 val* transform__TransformVisitor__phase(val* self) {
60 val* var /* : TransformPhase */;
61 val* var1 /* : TransformPhase */;
62 var1 = self->attrs[COLOR_transform__TransformVisitor___64dphase].val; /* @phase on <self:TransformVisitor> */
63 if (var1 == NULL) {
64 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @phase");
65 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 45);
66 show_backtrace(1);
67 }
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method transform#TransformVisitor#phase for (self: Object): TransformPhase */
73 val* VIRTUAL_transform__TransformVisitor__phase(val* self) {
74 val* var /* : TransformPhase */;
75 val* var1 /* : TransformPhase */;
76 var1 = transform__TransformVisitor__phase(self);
77 var = var1;
78 RET_LABEL:;
79 return var;
80 }
81 /* method transform#TransformVisitor#phase= for (self: TransformVisitor, TransformPhase) */
82 void transform__TransformVisitor__phase_61d(val* self, val* p0) {
83 self->attrs[COLOR_transform__TransformVisitor___64dphase].val = p0; /* @phase on <self:TransformVisitor> */
84 RET_LABEL:;
85 }
86 /* method transform#TransformVisitor#phase= for (self: Object, TransformPhase) */
87 void VIRTUAL_transform__TransformVisitor__phase_61d(val* self, val* p0) {
88 transform__TransformVisitor__phase_61d(self, p0);
89 RET_LABEL:;
90 }
91 /* method transform#TransformVisitor#mmodule for (self: TransformVisitor): MModule */
92 val* transform__TransformVisitor__mmodule(val* self) {
93 val* var /* : MModule */;
94 val* var1 /* : MModule */;
95 var1 = self->attrs[COLOR_transform__TransformVisitor___64dmmodule].val; /* @mmodule on <self:TransformVisitor> */
96 if (var1 == NULL) {
97 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
98 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 46);
99 show_backtrace(1);
100 }
101 var = var1;
102 RET_LABEL:;
103 return var;
104 }
105 /* method transform#TransformVisitor#mmodule for (self: Object): MModule */
106 val* VIRTUAL_transform__TransformVisitor__mmodule(val* self) {
107 val* var /* : MModule */;
108 val* var1 /* : MModule */;
109 var1 = transform__TransformVisitor__mmodule(self);
110 var = var1;
111 RET_LABEL:;
112 return var;
113 }
114 /* method transform#TransformVisitor#mmodule= for (self: TransformVisitor, MModule) */
115 void transform__TransformVisitor__mmodule_61d(val* self, val* p0) {
116 self->attrs[COLOR_transform__TransformVisitor___64dmmodule].val = p0; /* @mmodule on <self:TransformVisitor> */
117 RET_LABEL:;
118 }
119 /* method transform#TransformVisitor#mmodule= for (self: Object, MModule) */
120 void VIRTUAL_transform__TransformVisitor__mmodule_61d(val* self, val* p0) {
121 transform__TransformVisitor__mmodule_61d(self, p0);
122 RET_LABEL:;
123 }
124 /* method transform#TransformVisitor#mclassdef for (self: TransformVisitor): MClassDef */
125 val* transform__TransformVisitor__mclassdef(val* self) {
126 val* var /* : MClassDef */;
127 val* var1 /* : MClassDef */;
128 var1 = self->attrs[COLOR_transform__TransformVisitor___64dmclassdef].val; /* @mclassdef on <self:TransformVisitor> */
129 if (var1 == NULL) {
130 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef");
131 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 47);
132 show_backtrace(1);
133 }
134 var = var1;
135 RET_LABEL:;
136 return var;
137 }
138 /* method transform#TransformVisitor#mclassdef for (self: Object): MClassDef */
139 val* VIRTUAL_transform__TransformVisitor__mclassdef(val* self) {
140 val* var /* : MClassDef */;
141 val* var1 /* : MClassDef */;
142 var1 = transform__TransformVisitor__mclassdef(self);
143 var = var1;
144 RET_LABEL:;
145 return var;
146 }
147 /* method transform#TransformVisitor#mclassdef= for (self: TransformVisitor, MClassDef) */
148 void transform__TransformVisitor__mclassdef_61d(val* self, val* p0) {
149 self->attrs[COLOR_transform__TransformVisitor___64dmclassdef].val = p0; /* @mclassdef on <self:TransformVisitor> */
150 RET_LABEL:;
151 }
152 /* method transform#TransformVisitor#mclassdef= for (self: Object, MClassDef) */
153 void VIRTUAL_transform__TransformVisitor__mclassdef_61d(val* self, val* p0) {
154 transform__TransformVisitor__mclassdef_61d(self, p0);
155 RET_LABEL:;
156 }
157 /* method transform#TransformVisitor#mpropdef for (self: TransformVisitor): MPropDef */
158 val* transform__TransformVisitor__mpropdef(val* self) {
159 val* var /* : MPropDef */;
160 val* var1 /* : MPropDef */;
161 var1 = self->attrs[COLOR_transform__TransformVisitor___64dmpropdef].val; /* @mpropdef on <self:TransformVisitor> */
162 if (var1 == NULL) {
163 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
164 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 48);
165 show_backtrace(1);
166 }
167 var = var1;
168 RET_LABEL:;
169 return var;
170 }
171 /* method transform#TransformVisitor#mpropdef for (self: Object): MPropDef */
172 val* VIRTUAL_transform__TransformVisitor__mpropdef(val* self) {
173 val* var /* : MPropDef */;
174 val* var1 /* : MPropDef */;
175 var1 = transform__TransformVisitor__mpropdef(self);
176 var = var1;
177 RET_LABEL:;
178 return var;
179 }
180 /* method transform#TransformVisitor#mpropdef= for (self: TransformVisitor, MPropDef) */
181 void transform__TransformVisitor__mpropdef_61d(val* self, val* p0) {
182 self->attrs[COLOR_transform__TransformVisitor___64dmpropdef].val = p0; /* @mpropdef on <self:TransformVisitor> */
183 RET_LABEL:;
184 }
185 /* method transform#TransformVisitor#mpropdef= for (self: Object, MPropDef) */
186 void VIRTUAL_transform__TransformVisitor__mpropdef_61d(val* self, val* p0) {
187 transform__TransformVisitor__mpropdef_61d(self, p0);
188 RET_LABEL:;
189 }
190 /* method transform#TransformVisitor#builder for (self: TransformVisitor): ASTBuilder */
191 val* transform__TransformVisitor__builder(val* self) {
192 val* var /* : ASTBuilder */;
193 val* var1 /* : ASTBuilder */;
194 var1 = self->attrs[COLOR_transform__TransformVisitor___64dbuilder].val; /* @builder on <self:TransformVisitor> */
195 if (var1 == NULL) {
196 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @builder");
197 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 49);
198 show_backtrace(1);
199 }
200 var = var1;
201 RET_LABEL:;
202 return var;
203 }
204 /* method transform#TransformVisitor#builder for (self: Object): ASTBuilder */
205 val* VIRTUAL_transform__TransformVisitor__builder(val* self) {
206 val* var /* : ASTBuilder */;
207 val* var1 /* : ASTBuilder */;
208 var1 = transform__TransformVisitor__builder(self);
209 var = var1;
210 RET_LABEL:;
211 return var;
212 }
213 /* method transform#TransformVisitor#builder= for (self: TransformVisitor, ASTBuilder) */
214 void transform__TransformVisitor__builder_61d(val* self, val* p0) {
215 self->attrs[COLOR_transform__TransformVisitor___64dbuilder].val = p0; /* @builder on <self:TransformVisitor> */
216 RET_LABEL:;
217 }
218 /* method transform#TransformVisitor#builder= for (self: Object, ASTBuilder) */
219 void VIRTUAL_transform__TransformVisitor__builder_61d(val* self, val* p0) {
220 transform__TransformVisitor__builder_61d(self, p0);
221 RET_LABEL:;
222 }
223 /* method transform#TransformVisitor#init for (self: TransformVisitor, TransformPhase, APropdef) */
224 void transform__TransformVisitor__init(val* self, val* p0, val* p1) {
225 val* var_phase /* var phase: TransformPhase */;
226 val* var_npropdef /* var npropdef: APropdef */;
227 val* var /* : nullable MPropDef */;
228 val* var1 /* : MPropDef */;
229 val* var2 /* : MClassDef */;
230 val* var3 /* : MClassDef */;
231 val* var4 /* : MModule */;
232 val* var5 /* : ASTBuilder */;
233 val* var6 /* : MModule */;
234 val* var7 /* : MPropDef */;
235 val* var8 /* : MClassDef */;
236 val* var9 /* : MClassType */;
237 var_phase = p0;
238 var_npropdef = p1;
239 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:TransformVisitor>*/;
240 ((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__phase_61d]))(self, var_phase) /* phase= on <self:TransformVisitor>*/;
241 var = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef>*/;
242 if (var == NULL) {
243 fprintf(stderr, "Runtime error: %s", "Cast failed");
244 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 54);
245 show_backtrace(1);
246 }
247 ((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__mpropdef_61d]))(self, var) /* mpropdef= on <self:TransformVisitor>*/;
248 var1 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mpropdef]))(self) /* mpropdef on <self:TransformVisitor>*/;
249 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MPropDef__mclassdef]))(var1) /* mclassdef on <var1:MPropDef>*/;
250 ((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__mclassdef_61d]))(self, var2) /* mclassdef= on <self:TransformVisitor>*/;
251 var3 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mclassdef]))(self) /* mclassdef on <self:TransformVisitor>*/;
252 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
253 ((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule_61d]))(self, var4) /* mmodule= on <self:TransformVisitor>*/;
254 var5 = NEW_astbuilder__ASTBuilder(&type_astbuilder__ASTBuilder);
255 var6 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule]))(self) /* mmodule on <self:TransformVisitor>*/;
256 var7 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mpropdef]))(self) /* mpropdef on <self:TransformVisitor>*/;
257 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MPropDef__mclassdef]))(var7) /* mclassdef on <var7:MPropDef>*/;
258 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClassDef__bound_mtype]))(var8) /* bound_mtype on <var8:MClassDef>*/;
259 ((void (*)(val*, val*, val*))(var5->class->vft[COLOR_astbuilder__ASTBuilder__init]))(var5, var6, var9) /* init on <var5:ASTBuilder>*/;
260 ((void (*)(val*, val*))(self->class->vft[COLOR_transform__TransformVisitor__builder_61d]))(self, var5) /* builder= on <self:TransformVisitor>*/;
261 RET_LABEL:;
262 }
263 /* method transform#TransformVisitor#init for (self: Object, TransformPhase, APropdef) */
264 void VIRTUAL_transform__TransformVisitor__init(val* self, val* p0, val* p1) {
265 transform__TransformVisitor__init(self, p0, p1);
266 RET_LABEL:;
267 }
268 /* method transform#TransformVisitor#visit for (self: TransformVisitor, ANode) */
269 void transform__TransformVisitor__visit(val* self, val* p0) {
270 val* var_node /* var node: ANode */;
271 short int var /* : Bool */;
272 int cltype;
273 int idtype;
274 var_node = p0;
275 /* <var_node:ANode> isa AAnnotations */
276 cltype = type_parser_nodes__AAnnotations.color;
277 idtype = type_parser_nodes__AAnnotations.id;
278 if(cltype >= var_node->type->table_size) {
279 var = 0;
280 } else {
281 var = var_node->type->type_table[cltype] == idtype;
282 }
283 if (var){
284 goto RET_LABEL;
285 } else {
286 }
287 ((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_node, self) /* visit_all on <var_node:ANode>*/;
288 ((void (*)(val*, val*))(var_node->class->vft[COLOR_transform__ANode__accept_transform_visitor]))(var_node, self) /* accept_transform_visitor on <var_node:ANode>*/;
289 RET_LABEL:;
290 }
291 /* method transform#TransformVisitor#visit for (self: Object, ANode) */
292 void VIRTUAL_transform__TransformVisitor__visit(val* self, val* p0) {
293 transform__TransformVisitor__visit(self, p0);
294 RET_LABEL:;
295 }
296 /* method transform#TransformVisitor#get_class for (self: TransformVisitor, AExpr, String): MClass */
297 val* transform__TransformVisitor__get_class(val* self, val* p0, val* p1) {
298 val* var /* : MClass */;
299 val* var_location /* var location: AExpr */;
300 val* var_name /* var name: String */;
301 val* var1 /* : MModule */;
302 val* var2 /* : MClass */;
303 var_location = p0;
304 var_name = p1;
305 var1 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule]))(self) /* mmodule on <self:TransformVisitor>*/;
306 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__MModule__get_primitive_class]))(var1, var_name) /* get_primitive_class on <var1:MModule>*/;
307 var = var2;
308 goto RET_LABEL;
309 RET_LABEL:;
310 return var;
311 }
312 /* method transform#TransformVisitor#get_class for (self: Object, AExpr, String): MClass */
313 val* VIRTUAL_transform__TransformVisitor__get_class(val* self, val* p0, val* p1) {
314 val* var /* : MClass */;
315 val* var1 /* : MClass */;
316 var1 = transform__TransformVisitor__get_class(self, p0, p1);
317 var = var1;
318 RET_LABEL:;
319 return var;
320 }
321 /* method transform#TransformVisitor#get_method for (self: TransformVisitor, AExpr, String, MClass): MMethod */
322 val* transform__TransformVisitor__get_method(val* self, val* p0, val* p1, val* p2) {
323 val* var /* : MMethod */;
324 val* var_location /* var location: AExpr */;
325 val* var_name /* var name: String */;
326 val* var_recv /* var recv: MClass */;
327 val* var1 /* : TransformPhase */;
328 val* var2 /* : ToolContext */;
329 val* var3 /* : ModelBuilder */;
330 val* var4 /* : MModule */;
331 val* var5 /* : MMethod */;
332 var_location = p0;
333 var_name = p1;
334 var_recv = p2;
335 var1 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__phase]))(self) /* phase on <self:TransformVisitor>*/;
336 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_phase__Phase__toolcontext]))(var1) /* toolcontext on <var1:TransformPhase>*/;
337 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var2) /* modelbuilder on <var2:ToolContext>*/;
338 var4 = ((val* (*)(val*))(self->class->vft[COLOR_transform__TransformVisitor__mmodule]))(self) /* mmodule on <self:TransformVisitor>*/;
339 var5 = ((val* (*)(val*, val*, val*, val*, val*))(var3->class->vft[COLOR_modelbuilder__ModelBuilder__force_get_primitive_method]))(var3, var_location, var_name, var_recv, var4) /* force_get_primitive_method on <var3:ModelBuilder>*/;
340 var = var5;
341 goto RET_LABEL;
342 RET_LABEL:;
343 return var;
344 }
345 /* method transform#TransformVisitor#get_method for (self: Object, AExpr, String, MClass): MMethod */
346 val* VIRTUAL_transform__TransformVisitor__get_method(val* self, val* p0, val* p1, val* p2) {
347 val* var /* : MMethod */;
348 val* var1 /* : MMethod */;
349 var1 = transform__TransformVisitor__get_method(self, p0, p1, p2);
350 var = var1;
351 RET_LABEL:;
352 return var;
353 }
354 /* method transform#ANode#accept_transform_visitor for (self: ANode, TransformVisitor) */
355 void transform__ANode__accept_transform_visitor(val* self, val* p0) {
356 val* var_v /* var v: TransformVisitor */;
357 var_v = p0;
358 RET_LABEL:;
359 }
360 /* method transform#ANode#accept_transform_visitor for (self: Object, TransformVisitor) */
361 void VIRTUAL_transform__ANode__accept_transform_visitor(val* self, val* p0) {
362 transform__ANode__accept_transform_visitor(self, p0);
363 RET_LABEL:;
364 }
365 /* method transform#AVardeclExpr#accept_transform_visitor for (self: AVardeclExpr, TransformVisitor) */
366 void transform__AVardeclExpr__accept_transform_visitor(val* self, val* p0) {
367 val* var_v /* var v: TransformVisitor */;
368 val* var /* : nullable AExpr */;
369 val* var_nexpr /* var nexpr: nullable AExpr */;
370 val* var1 /* : null */;
371 short int var2 /* : Bool */;
372 val* var3 /* : ASTBuilder */;
373 val* var4 /* : nullable Variable */;
374 val* var5 /* : AVarAssignExpr */;
375 val* var_nvar /* var nvar: AVarAssignExpr */;
376 var_v = p0;
377 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
378 var_nexpr = var;
379 var1 = NULL;
380 if (var_nexpr == NULL) {
381 var2 = 1; /* is null */
382 } else {
383 var2 = 0; /* arg is null but recv is not */
384 }
385 if (var2){
386 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__detach]))(self) /* detach on <self:AVardeclExpr>*/;
387 } else {
388 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
389 var4 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
390 if (var4 == NULL) {
391 fprintf(stderr, "Runtime error: %s", "Cast failed");
392 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 99);
393 show_backtrace(1);
394 }
395 var5 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_astbuilder__ASTBuilder__make_var_assign]))(var3, var4, var_nexpr) /* make_var_assign on <var3:ASTBuilder>*/;
396 var_nvar = var5;
397 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nvar) /* replace_with on <self:AVardeclExpr>*/;
398 }
399 RET_LABEL:;
400 }
401 /* method transform#AVardeclExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
402 void VIRTUAL_transform__AVardeclExpr__accept_transform_visitor(val* self, val* p0) {
403 transform__AVardeclExpr__accept_transform_visitor(self, p0);
404 RET_LABEL:;
405 }
406 /* method transform#AIfexprExpr#accept_transform_visitor for (self: AIfexprExpr, TransformVisitor) */
407 void transform__AIfexprExpr__accept_transform_visitor(val* self, val* p0) {
408 val* var_v /* var v: TransformVisitor */;
409 val* var /* : ASTBuilder */;
410 val* var1 /* : AExpr */;
411 val* var2 /* : nullable MType */;
412 val* var3 /* : AIfExpr */;
413 val* var_nif /* var nif: AIfExpr */;
414 val* var4 /* : nullable AExpr */;
415 val* var5 /* : AExpr */;
416 val* var6 /* : nullable AExpr */;
417 val* var7 /* : AExpr */;
418 var_v = p0;
419 var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
420 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
421 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AIfexprExpr>*/;
422 var3 = ((val* (*)(val*, val*, val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_if]))(var, var1, var2) /* make_if on <var:ASTBuilder>*/;
423 var_nif = var3;
424 var4 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(var_nif) /* n_then on <var_nif:AIfExpr>*/;
425 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
426 if (var4 == NULL) {
427 fprintf(stderr, "Runtime error: %s", "Reciever is null");
428 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 112);
429 show_backtrace(1);
430 } else {
431 ((void (*)(val*, val*))(var4->class->vft[COLOR_astbuilder__AExpr__add]))(var4, var5) /* add on <var4:nullable AExpr>*/;
432 }
433 var6 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(var_nif) /* n_else on <var_nif:AIfExpr>*/;
434 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
435 if (var6 == NULL) {
436 fprintf(stderr, "Runtime error: %s", "Reciever is null");
437 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 113);
438 show_backtrace(1);
439 } else {
440 ((void (*)(val*, val*))(var6->class->vft[COLOR_astbuilder__AExpr__add]))(var6, var7) /* add on <var6:nullable AExpr>*/;
441 }
442 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nif) /* replace_with on <self:AIfexprExpr>*/;
443 RET_LABEL:;
444 }
445 /* method transform#AIfexprExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
446 void VIRTUAL_transform__AIfexprExpr__accept_transform_visitor(val* self, val* p0) {
447 transform__AIfexprExpr__accept_transform_visitor(self, p0);
448 RET_LABEL:;
449 }
450 /* method transform#AOrExpr#accept_transform_visitor for (self: AOrExpr, TransformVisitor) */
451 void transform__AOrExpr__accept_transform_visitor(val* self, val* p0) {
452 val* var_v /* var v: TransformVisitor */;
453 val* var /* : ASTBuilder */;
454 val* var1 /* : AExpr */;
455 val* var2 /* : nullable MType */;
456 val* var3 /* : AIfExpr */;
457 val* var_nif /* var nif: AIfExpr */;
458 val* var4 /* : nullable AExpr */;
459 val* var5 /* : AExpr */;
460 val* var6 /* : AVarExpr */;
461 val* var7 /* : nullable AExpr */;
462 val* var8 /* : AExpr */;
463 var_v = p0;
464 var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
465 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
466 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrExpr>*/;
467 var3 = ((val* (*)(val*, val*, val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_if]))(var, var1, var2) /* make_if on <var:ASTBuilder>*/;
468 var_nif = var3;
469 var4 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(var_nif) /* n_then on <var_nif:AIfExpr>*/;
470 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
471 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var5) /* make_var_read on <var5:AExpr>*/;
472 if (var4 == NULL) {
473 fprintf(stderr, "Runtime error: %s", "Reciever is null");
474 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 124);
475 show_backtrace(1);
476 } else {
477 ((void (*)(val*, val*))(var4->class->vft[COLOR_astbuilder__AExpr__add]))(var4, var6) /* add on <var4:nullable AExpr>*/;
478 }
479 var7 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(var_nif) /* n_else on <var_nif:AIfExpr>*/;
480 var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
481 if (var7 == NULL) {
482 fprintf(stderr, "Runtime error: %s", "Reciever is null");
483 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 125);
484 show_backtrace(1);
485 } else {
486 ((void (*)(val*, val*))(var7->class->vft[COLOR_astbuilder__AExpr__add]))(var7, var8) /* add on <var7:nullable AExpr>*/;
487 }
488 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nif) /* replace_with on <self:AOrExpr>*/;
489 RET_LABEL:;
490 }
491 /* method transform#AOrExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
492 void VIRTUAL_transform__AOrExpr__accept_transform_visitor(val* self, val* p0) {
493 transform__AOrExpr__accept_transform_visitor(self, p0);
494 RET_LABEL:;
495 }
496 /* method transform#AImpliesExpr#accept_transform_visitor for (self: AImpliesExpr, TransformVisitor) */
497 void transform__AImpliesExpr__accept_transform_visitor(val* self, val* p0) {
498 val* var_v /* var v: TransformVisitor */;
499 var_v = p0;
500 RET_LABEL:;
501 }
502 /* method transform#AImpliesExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
503 void VIRTUAL_transform__AImpliesExpr__accept_transform_visitor(val* self, val* p0) {
504 transform__AImpliesExpr__accept_transform_visitor(self, p0);
505 RET_LABEL:;
506 }
507 /* method transform#AAndExpr#accept_transform_visitor for (self: AAndExpr, TransformVisitor) */
508 void transform__AAndExpr__accept_transform_visitor(val* self, val* p0) {
509 val* var_v /* var v: TransformVisitor */;
510 val* var /* : ASTBuilder */;
511 val* var1 /* : AExpr */;
512 val* var2 /* : nullable MType */;
513 val* var3 /* : AIfExpr */;
514 val* var_nif /* var nif: AIfExpr */;
515 val* var4 /* : nullable AExpr */;
516 val* var5 /* : AExpr */;
517 val* var6 /* : nullable AExpr */;
518 val* var7 /* : AExpr */;
519 val* var8 /* : AVarExpr */;
520 var_v = p0;
521 var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
522 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
523 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AAndExpr>*/;
524 var3 = ((val* (*)(val*, val*, val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_if]))(var, var1, var2) /* make_if on <var:ASTBuilder>*/;
525 var_nif = var3;
526 var4 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(var_nif) /* n_then on <var_nif:AIfExpr>*/;
527 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
528 if (var4 == NULL) {
529 fprintf(stderr, "Runtime error: %s", "Reciever is null");
530 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 143);
531 show_backtrace(1);
532 } else {
533 ((void (*)(val*, val*))(var4->class->vft[COLOR_astbuilder__AExpr__add]))(var4, var5) /* add on <var4:nullable AExpr>*/;
534 }
535 var6 = ((val* (*)(val*))(var_nif->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(var_nif) /* n_else on <var_nif:AIfExpr>*/;
536 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
537 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var7) /* make_var_read on <var7:AExpr>*/;
538 if (var6 == NULL) {
539 fprintf(stderr, "Runtime error: %s", "Reciever is null");
540 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 144);
541 show_backtrace(1);
542 } else {
543 ((void (*)(val*, val*))(var6->class->vft[COLOR_astbuilder__AExpr__add]))(var6, var8) /* add on <var6:nullable AExpr>*/;
544 }
545 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nif) /* replace_with on <self:AAndExpr>*/;
546 RET_LABEL:;
547 }
548 /* method transform#AAndExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
549 void VIRTUAL_transform__AAndExpr__accept_transform_visitor(val* self, val* p0) {
550 transform__AAndExpr__accept_transform_visitor(self, p0);
551 RET_LABEL:;
552 }
553 /* method transform#AWhileExpr#accept_transform_visitor for (self: AWhileExpr, TransformVisitor) */
554 void transform__AWhileExpr__accept_transform_visitor(val* self, val* p0) {
555 val* var_v /* var v: TransformVisitor */;
556 var_v = p0;
557 RET_LABEL:;
558 }
559 /* method transform#AWhileExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
560 void VIRTUAL_transform__AWhileExpr__accept_transform_visitor(val* self, val* p0) {
561 transform__AWhileExpr__accept_transform_visitor(self, p0);
562 RET_LABEL:;
563 }
564 /* method transform#AForExpr#accept_transform_visitor for (self: AForExpr, TransformVisitor) */
565 void transform__AForExpr__accept_transform_visitor(val* self, val* p0) {
566 val* var_v /* var v: TransformVisitor */;
567 var_v = p0;
568 RET_LABEL:;
569 }
570 /* method transform#AForExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
571 void VIRTUAL_transform__AForExpr__accept_transform_visitor(val* self, val* p0) {
572 transform__AForExpr__accept_transform_visitor(self, p0);
573 RET_LABEL:;
574 }
575 /* method transform#AArrayExpr#accept_transform_visitor for (self: AArrayExpr, TransformVisitor) */
576 void transform__AArrayExpr__accept_transform_visitor(val* self, val* p0) {
577 val* var_v /* var v: TransformVisitor */;
578 val* var /* : nullable MType */;
579 short int var1 /* : Bool */;
580 int cltype;
581 int idtype;
582 const char* var_class_name;
583 val* var_mtype /* var mtype: MClassType */;
584 val* var2 /* : ASTBuilder */;
585 val* var3 /* : ABlockExpr */;
586 val* var_nblock /* var nblock: ABlockExpr */;
587 static val* varonce;
588 val* var4 /* : String */;
589 char* var5 /* : NativeString */;
590 long var6 /* : Int */;
591 val* var7 /* : String */;
592 val* var8 /* : MClass */;
593 val* var9 /* : MMethod */;
594 val* var_meth /* var meth: MMethod */;
595 val* var10 /* : ASTBuilder */;
596 val* var11 /* : ASTBuilder */;
597 val* var12 /* : AExprs */;
598 val* var13 /* : ANodes[AExpr] */;
599 long var14 /* : Int */;
600 val* var15 /* : AIntExpr */;
601 val* var16 /* : Array[AIntExpr] */;
602 long var17 /* : Int */;
603 val* var18 /* : NativeArray[AIntExpr] */;
604 val* var19 /* : ANewExpr */;
605 val* var_nnew /* var nnew: ANewExpr */;
606 static val* varonce20;
607 val* var21 /* : String */;
608 char* var22 /* : NativeString */;
609 long var23 /* : Int */;
610 val* var24 /* : String */;
611 val* var25 /* : MClass */;
612 val* var26 /* : MMethod */;
613 val* var_madd /* var madd: MMethod */;
614 val* var27 /* : AExprs */;
615 val* var28 /* : ANodes[AExpr] */;
616 val* var29 /* : Iterator[nullable Object] */;
617 short int var30 /* : Bool */;
618 val* var31 /* : nullable Object */;
619 val* var_nexpr /* var nexpr: AExpr */;
620 val* var32 /* : ASTBuilder */;
621 val* var33 /* : AVarExpr */;
622 val* var34 /* : Array[AExpr] */;
623 long var35 /* : Int */;
624 val* var36 /* : NativeArray[AExpr] */;
625 val* var37 /* : ACallExpr */;
626 val* var_nadd /* var nadd: ACallExpr */;
627 val* var38 /* : AVarExpr */;
628 val* var_nres /* var nres: AVarExpr */;
629 var_v = p0;
630 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AArrayExpr>*/;
631 /* <var:nullable MType> isa MClassType */
632 cltype = type_model__MClassType.color;
633 idtype = type_model__MClassType.id;
634 if(var == NULL) {
635 var1 = 0;
636 } else {
637 if(cltype >= var->type->table_size) {
638 var1 = 0;
639 } else {
640 var1 = var->type->type_table[cltype] == idtype;
641 }
642 }
643 if (!var1) {
644 var_class_name = var == NULL ? "null" : var->type->name;
645 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
646 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 173);
647 show_backtrace(1);
648 }
649 var_mtype = var;
650 var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
651 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var2) /* make_block on <var2:ASTBuilder>*/;
652 var_nblock = var3;
653 if (varonce) {
654 var4 = varonce;
655 } else {
656 var5 = "with_capacity";
657 var6 = 13;
658 var7 = string__NativeString__to_s_with_length(var5, var6);
659 var4 = var7;
660 varonce = var4;
661 }
662 var8 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
663 var9 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var4, var8) /* get_method on <var_v:TransformVisitor>*/;
664 var_meth = var9;
665 var10 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
666 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
667 var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
668 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var12) /* n_exprs on <var12:AExprs>*/;
669 var14 = ((long (*)(val*))(var13->class->vft[COLOR_abstract_collection__Collection__length]))(var13) /* length on <var13:ANodes[AExpr]>*/;
670 var15 = ((val* (*)(val*, long))(var11->class->vft[COLOR_astbuilder__ASTBuilder__make_int]))(var11, var14) /* make_int on <var11:ASTBuilder>*/;
671 var16 = NEW_array__Array(&type_array__Arrayparser_nodes__AIntExpr);
672 { /* var16 = array_instance Array[AIntExpr] */
673 var17 = 1;
674 var18 = NEW_array__NativeArray(var17, &type_array__NativeArrayparser_nodes__AIntExpr);
675 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var15;
676 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[AIntExpr]>*/;
677 }
678 var19 = ((val* (*)(val*, val*, val*, val*))(var10->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var10, var_mtype, var_meth, var16) /* make_new on <var10:ASTBuilder>*/;
679 var_nnew = var19;
680 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nnew) /* add on <var_nblock:ABlockExpr>*/;
681 if (varonce20) {
682 var21 = varonce20;
683 } else {
684 var22 = "push";
685 var23 = 4;
686 var24 = string__NativeString__to_s_with_length(var22, var23);
687 var21 = var24;
688 varonce20 = var21;
689 }
690 var25 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
691 var26 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var21, var25) /* get_method on <var_v:TransformVisitor>*/;
692 var_madd = var26;
693 var27 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
694 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var27) /* n_exprs on <var27:AExprs>*/;
695 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__iterator]))(var28) /* iterator on <var28:ANodes[AExpr]>*/;
696 for(;;) {
697 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
698 if(!var30) break;
699 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
700 var_nexpr = var31;
701 var32 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
702 var33 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
703 var34 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
704 { /* var34 = array_instance Array[AExpr] */
705 var35 = 1;
706 var36 = NEW_array__NativeArray(var35, &type_array__NativeArrayparser_nodes__AExpr);
707 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var_nexpr;
708 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[AExpr]>*/;
709 }
710 var37 = ((val* (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var32, var33, var_madd, var34) /* make_call on <var32:ASTBuilder>*/;
711 var_nadd = var37;
712 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nadd) /* add on <var_nblock:ABlockExpr>*/;
713 CONTINUE_label: (void)0;
714 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
715 }
716 BREAK_label: (void)0;
717 var38 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
718 var_nres = var38;
719 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nres) /* add on <var_nblock:ABlockExpr>*/;
720 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:AArrayExpr>*/;
721 RET_LABEL:;
722 }
723 /* method transform#AArrayExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
724 void VIRTUAL_transform__AArrayExpr__accept_transform_visitor(val* self, val* p0) {
725 transform__AArrayExpr__accept_transform_visitor(self, p0);
726 RET_LABEL:;
727 }
728 /* method transform#ASuperstringExpr#accept_transform_visitor for (self: ASuperstringExpr, TransformVisitor) */
729 void transform__ASuperstringExpr__accept_transform_visitor(val* self, val* p0) {
730 val* var_v /* var v: TransformVisitor */;
731 val* var /* : ASTBuilder */;
732 val* var1 /* : ABlockExpr */;
733 val* var_nblock /* var nblock: ABlockExpr */;
734 static val* varonce;
735 val* var2 /* : String */;
736 char* var3 /* : NativeString */;
737 long var4 /* : Int */;
738 val* var5 /* : String */;
739 val* var6 /* : MClass */;
740 static val* varonce7;
741 val* var8 /* : String */;
742 char* var9 /* : NativeString */;
743 long var10 /* : Int */;
744 val* var11 /* : String */;
745 val* var12 /* : MClass */;
746 val* var13 /* : MClassType */;
747 val* var14 /* : Array[MClassType] */;
748 long var15 /* : Int */;
749 val* var16 /* : NativeArray[MClassType] */;
750 val* var17 /* : MClassType */;
751 val* var_arraytype /* var arraytype: MClassType */;
752 static val* varonce18;
753 val* var19 /* : String */;
754 char* var20 /* : NativeString */;
755 long var21 /* : Int */;
756 val* var22 /* : String */;
757 val* var23 /* : MClass */;
758 val* var24 /* : MMethod */;
759 val* var_meth /* var meth: MMethod */;
760 val* var25 /* : ASTBuilder */;
761 val* var26 /* : ASTBuilder */;
762 val* var27 /* : ANodes[AExpr] */;
763 long var28 /* : Int */;
764 val* var29 /* : AIntExpr */;
765 val* var30 /* : Array[AIntExpr] */;
766 long var31 /* : Int */;
767 val* var32 /* : NativeArray[AIntExpr] */;
768 val* var33 /* : ANewExpr */;
769 val* var_nnew /* var nnew: ANewExpr */;
770 static val* varonce34;
771 val* var35 /* : String */;
772 char* var36 /* : NativeString */;
773 long var37 /* : Int */;
774 val* var38 /* : String */;
775 val* var39 /* : MClass */;
776 val* var40 /* : MMethod */;
777 val* var_madd /* var madd: MMethod */;
778 val* var41 /* : ANodes[AExpr] */;
779 val* var42 /* : Iterator[nullable Object] */;
780 short int var43 /* : Bool */;
781 val* var44 /* : nullable Object */;
782 val* var_nexpr /* var nexpr: AExpr */;
783 val* var45 /* : ASTBuilder */;
784 val* var46 /* : AVarExpr */;
785 val* var47 /* : Array[AExpr] */;
786 long var48 /* : Int */;
787 val* var49 /* : NativeArray[AExpr] */;
788 val* var50 /* : ACallExpr */;
789 val* var_nadd /* var nadd: ACallExpr */;
790 static val* varonce51;
791 val* var52 /* : String */;
792 char* var53 /* : NativeString */;
793 long var54 /* : Int */;
794 val* var55 /* : String */;
795 val* var56 /* : MClass */;
796 val* var57 /* : MMethod */;
797 val* var_mtos /* var mtos: MMethod */;
798 val* var58 /* : ASTBuilder */;
799 val* var59 /* : AVarExpr */;
800 val* var60 /* : null */;
801 val* var61 /* : ACallExpr */;
802 val* var_ntos /* var ntos: ACallExpr */;
803 var_v = p0;
804 var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
805 var1 = ((val* (*)(val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var) /* make_block on <var:ASTBuilder>*/;
806 var_nblock = var1;
807 if (varonce) {
808 var2 = varonce;
809 } else {
810 var3 = "Array";
811 var4 = 5;
812 var5 = string__NativeString__to_s_with_length(var3, var4);
813 var2 = var5;
814 varonce = var2;
815 }
816 var6 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_class]))(var_v, self, var2) /* get_class on <var_v:TransformVisitor>*/;
817 if (varonce7) {
818 var8 = varonce7;
819 } else {
820 var9 = "Object";
821 var10 = 6;
822 var11 = string__NativeString__to_s_with_length(var9, var10);
823 var8 = var11;
824 varonce7 = var8;
825 }
826 var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_class]))(var_v, self, var8) /* get_class on <var_v:TransformVisitor>*/;
827 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClass__mclass_type]))(var12) /* mclass_type on <var12:MClass>*/;
828 var14 = NEW_array__Array(&type_array__Arraymodel__MClassType);
829 { /* var14 = array_instance Array[MClassType] */
830 var15 = 1;
831 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraymodel__MClassType);
832 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var13;
833 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[MClassType]>*/;
834 }
835 var17 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_model__MClass__get_mtype]))(var6, var14) /* get_mtype on <var6:MClass>*/;
836 var_arraytype = var17;
837 if (varonce18) {
838 var19 = varonce18;
839 } else {
840 var20 = "with_capacity";
841 var21 = 13;
842 var22 = string__NativeString__to_s_with_length(var20, var21);
843 var19 = var22;
844 varonce18 = var19;
845 }
846 var23 = ((val* (*)(val*))(var_arraytype->class->vft[COLOR_model__MClassType__mclass]))(var_arraytype) /* mclass on <var_arraytype:MClassType>*/;
847 var24 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var19, var23) /* get_method on <var_v:TransformVisitor>*/;
848 var_meth = var24;
849 var25 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
850 var26 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
851 var27 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
852 var28 = ((long (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__length]))(var27) /* length on <var27:ANodes[AExpr]>*/;
853 var29 = ((val* (*)(val*, long))(var26->class->vft[COLOR_astbuilder__ASTBuilder__make_int]))(var26, var28) /* make_int on <var26:ASTBuilder>*/;
854 var30 = NEW_array__Array(&type_array__Arrayparser_nodes__AIntExpr);
855 { /* var30 = array_instance Array[AIntExpr] */
856 var31 = 1;
857 var32 = NEW_array__NativeArray(var31, &type_array__NativeArrayparser_nodes__AIntExpr);
858 ((struct instance_array__NativeArray*)var32)->values[0] = (val*) var29;
859 ((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[AIntExpr]>*/;
860 }
861 var33 = ((val* (*)(val*, val*, val*, val*))(var25->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var25, var_arraytype, var_meth, var30) /* make_new on <var25:ASTBuilder>*/;
862 var_nnew = var33;
863 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nnew) /* add on <var_nblock:ABlockExpr>*/;
864 if (varonce34) {
865 var35 = varonce34;
866 } else {
867 var36 = "add";
868 var37 = 3;
869 var38 = string__NativeString__to_s_with_length(var36, var37);
870 var35 = var38;
871 varonce34 = var35;
872 }
873 var39 = ((val* (*)(val*))(var_arraytype->class->vft[COLOR_model__MClassType__mclass]))(var_arraytype) /* mclass on <var_arraytype:MClassType>*/;
874 var40 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var35, var39) /* get_method on <var_v:TransformVisitor>*/;
875 var_madd = var40;
876 var41 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
877 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__Collection__iterator]))(var41) /* iterator on <var41:ANodes[AExpr]>*/;
878 for(;;) {
879 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
880 if(!var43) break;
881 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
882 var_nexpr = var44;
883 var45 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
884 var46 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
885 var47 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
886 { /* var47 = array_instance Array[AExpr] */
887 var48 = 1;
888 var49 = NEW_array__NativeArray(var48, &type_array__NativeArrayparser_nodes__AExpr);
889 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var_nexpr;
890 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[AExpr]>*/;
891 }
892 var50 = ((val* (*)(val*, val*, val*, val*))(var45->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var45, var46, var_madd, var47) /* make_call on <var45:ASTBuilder>*/;
893 var_nadd = var50;
894 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nadd) /* add on <var_nblock:ABlockExpr>*/;
895 CONTINUE_label: (void)0;
896 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
897 }
898 BREAK_label: (void)0;
899 if (varonce51) {
900 var52 = varonce51;
901 } else {
902 var53 = "to_s";
903 var54 = 4;
904 var55 = string__NativeString__to_s_with_length(var53, var54);
905 var52 = var55;
906 varonce51 = var52;
907 }
908 var56 = ((val* (*)(val*))(var_arraytype->class->vft[COLOR_model__MClassType__mclass]))(var_arraytype) /* mclass on <var_arraytype:MClassType>*/;
909 var57 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var52, var56) /* get_method on <var_v:TransformVisitor>*/;
910 var_mtos = var57;
911 var58 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
912 var59 = ((val* (*)(val*))(var_nnew->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_nnew) /* make_var_read on <var_nnew:ANewExpr>*/;
913 var60 = NULL;
914 var61 = ((val* (*)(val*, val*, val*, val*))(var58->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var58, var59, var_mtos, var60) /* make_call on <var58:ASTBuilder>*/;
915 var_ntos = var61;
916 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_ntos) /* add on <var_nblock:ABlockExpr>*/;
917 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:ASuperstringExpr>*/;
918 RET_LABEL:;
919 }
920 /* method transform#ASuperstringExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
921 void VIRTUAL_transform__ASuperstringExpr__accept_transform_visitor(val* self, val* p0) {
922 transform__ASuperstringExpr__accept_transform_visitor(self, p0);
923 RET_LABEL:;
924 }
925 /* method transform#ACrangeExpr#accept_transform_visitor for (self: ACrangeExpr, TransformVisitor) */
926 void transform__ACrangeExpr__accept_transform_visitor(val* self, val* p0) {
927 val* var_v /* var v: TransformVisitor */;
928 val* var /* : nullable MType */;
929 short int var1 /* : Bool */;
930 int cltype;
931 int idtype;
932 const char* var_class_name;
933 val* var_mtype /* var mtype: MClassType */;
934 static val* varonce;
935 val* var2 /* : String */;
936 char* var3 /* : NativeString */;
937 long var4 /* : Int */;
938 val* var5 /* : String */;
939 val* var6 /* : MClass */;
940 val* var7 /* : MMethod */;
941 val* var_meth /* var meth: MMethod */;
942 val* var8 /* : ASTBuilder */;
943 val* var9 /* : AExpr */;
944 val* var10 /* : AExpr */;
945 val* var11 /* : Array[AExpr] */;
946 long var12 /* : Int */;
947 val* var13 /* : NativeArray[AExpr] */;
948 val* var14 /* : ANewExpr */;
949 var_v = p0;
950 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:ACrangeExpr>*/;
951 /* <var:nullable MType> isa MClassType */
952 cltype = type_model__MClassType.color;
953 idtype = type_model__MClassType.id;
954 if(var == NULL) {
955 var1 = 0;
956 } else {
957 if(cltype >= var->type->table_size) {
958 var1 = 0;
959 } else {
960 var1 = var->type->type_table[cltype] == idtype;
961 }
962 }
963 if (!var1) {
964 var_class_name = var == NULL ? "null" : var->type->name;
965 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
966 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 227);
967 show_backtrace(1);
968 }
969 var_mtype = var;
970 if (varonce) {
971 var2 = varonce;
972 } else {
973 var3 = "init";
974 var4 = 4;
975 var5 = string__NativeString__to_s_with_length(var3, var4);
976 var2 = var5;
977 varonce = var2;
978 }
979 var6 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
980 var7 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var2, var6) /* get_method on <var_v:TransformVisitor>*/;
981 var_meth = var7;
982 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
983 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ACrangeExpr>*/;
984 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ACrangeExpr>*/;
985 var11 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
986 { /* var11 = array_instance Array[AExpr] */
987 var12 = 2;
988 var13 = NEW_array__NativeArray(var12, &type_array__NativeArrayparser_nodes__AExpr);
989 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var9;
990 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var10;
991 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[AExpr]>*/;
992 }
993 var14 = ((val* (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var8, var_mtype, var_meth, var11) /* make_new on <var8:ASTBuilder>*/;
994 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var14) /* replace_with on <self:ACrangeExpr>*/;
995 RET_LABEL:;
996 }
997 /* method transform#ACrangeExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
998 void VIRTUAL_transform__ACrangeExpr__accept_transform_visitor(val* self, val* p0) {
999 transform__ACrangeExpr__accept_transform_visitor(self, p0);
1000 RET_LABEL:;
1001 }
1002 /* method transform#AOrangeExpr#accept_transform_visitor for (self: AOrangeExpr, TransformVisitor) */
1003 void transform__AOrangeExpr__accept_transform_visitor(val* self, val* p0) {
1004 val* var_v /* var v: TransformVisitor */;
1005 val* var /* : nullable MType */;
1006 short int var1 /* : Bool */;
1007 int cltype;
1008 int idtype;
1009 const char* var_class_name;
1010 val* var_mtype /* var mtype: MClassType */;
1011 static val* varonce;
1012 val* var2 /* : String */;
1013 char* var3 /* : NativeString */;
1014 long var4 /* : Int */;
1015 val* var5 /* : String */;
1016 val* var6 /* : MClass */;
1017 val* var7 /* : MMethod */;
1018 val* var_meth /* var meth: MMethod */;
1019 val* var8 /* : ASTBuilder */;
1020 val* var9 /* : AExpr */;
1021 val* var10 /* : AExpr */;
1022 val* var11 /* : Array[AExpr] */;
1023 long var12 /* : Int */;
1024 val* var13 /* : NativeArray[AExpr] */;
1025 val* var14 /* : ANewExpr */;
1026 var_v = p0;
1027 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__AExpr__mtype]))(self) /* mtype on <self:AOrangeExpr>*/;
1028 /* <var:nullable MType> isa MClassType */
1029 cltype = type_model__MClassType.color;
1030 idtype = type_model__MClassType.id;
1031 if(var == NULL) {
1032 var1 = 0;
1033 } else {
1034 if(cltype >= var->type->table_size) {
1035 var1 = 0;
1036 } else {
1037 var1 = var->type->type_table[cltype] == idtype;
1038 }
1039 }
1040 if (!var1) {
1041 var_class_name = var == NULL ? "null" : var->type->name;
1042 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
1043 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 238);
1044 show_backtrace(1);
1045 }
1046 var_mtype = var;
1047 if (varonce) {
1048 var2 = varonce;
1049 } else {
1050 var3 = "without_last";
1051 var4 = 12;
1052 var5 = string__NativeString__to_s_with_length(var3, var4);
1053 var2 = var5;
1054 varonce = var2;
1055 }
1056 var6 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
1057 var7 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_transform__TransformVisitor__get_method]))(var_v, self, var2, var6) /* get_method on <var_v:TransformVisitor>*/;
1058 var_meth = var7;
1059 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1060 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:AOrangeExpr>*/;
1061 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:AOrangeExpr>*/;
1062 var11 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
1063 { /* var11 = array_instance Array[AExpr] */
1064 var12 = 2;
1065 var13 = NEW_array__NativeArray(var12, &type_array__NativeArrayparser_nodes__AExpr);
1066 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var9;
1067 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var10;
1068 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[AExpr]>*/;
1069 }
1070 var14 = ((val* (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__ASTBuilder__make_new]))(var8, var_mtype, var_meth, var11) /* make_new on <var8:ASTBuilder>*/;
1071 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var14) /* replace_with on <self:AOrangeExpr>*/;
1072 RET_LABEL:;
1073 }
1074 /* method transform#AOrangeExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
1075 void VIRTUAL_transform__AOrangeExpr__accept_transform_visitor(val* self, val* p0) {
1076 transform__AOrangeExpr__accept_transform_visitor(self, p0);
1077 RET_LABEL:;
1078 }
1079 /* method transform#AParExpr#accept_transform_visitor for (self: AParExpr, TransformVisitor) */
1080 void transform__AParExpr__accept_transform_visitor(val* self, val* p0) {
1081 val* var_v /* var v: TransformVisitor */;
1082 val* var /* : AExpr */;
1083 var_v = p0;
1084 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AParExpr>*/;
1085 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var) /* replace_with on <self:AParExpr>*/;
1086 RET_LABEL:;
1087 }
1088 /* method transform#AParExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
1089 void VIRTUAL_transform__AParExpr__accept_transform_visitor(val* self, val* p0) {
1090 transform__AParExpr__accept_transform_visitor(self, p0);
1091 RET_LABEL:;
1092 }
1093 /* method transform#ASendReassignFormExpr#accept_transform_visitor for (self: ASendReassignFormExpr, TransformVisitor) */
1094 void transform__ASendReassignFormExpr__accept_transform_visitor(val* self, val* p0) {
1095 val* var_v /* var v: TransformVisitor */;
1096 val* var /* : ASTBuilder */;
1097 val* var1 /* : ABlockExpr */;
1098 val* var_nblock /* var nblock: ABlockExpr */;
1099 val* var2 /* : AExpr */;
1100 val* var3 /* : Array[AExpr] */;
1101 val* var_read_args /* var read_args: Array[AExpr] */;
1102 val* var4 /* : Array[AExpr] */;
1103 val* var_write_args /* var write_args: Array[AExpr] */;
1104 val* var5 /* : nullable Array[AExpr] */;
1105 val* var6 /* : Iterator[nullable Object] */;
1106 short int var7 /* : Bool */;
1107 val* var8 /* : nullable Object */;
1108 val* var_a /* var a: AExpr */;
1109 val* var9 /* : AVarExpr */;
1110 val* var10 /* : AVarExpr */;
1111 val* var11 /* : ASTBuilder */;
1112 val* var12 /* : AExpr */;
1113 val* var13 /* : AVarExpr */;
1114 val* var14 /* : nullable CallSite */;
1115 val* var15 /* : MMethod */;
1116 val* var16 /* : ACallExpr */;
1117 val* var_nread /* var nread: ACallExpr */;
1118 val* var17 /* : ASTBuilder */;
1119 val* var18 /* : nullable CallSite */;
1120 val* var19 /* : MMethod */;
1121 val* var20 /* : AExpr */;
1122 val* var21 /* : Array[AExpr] */;
1123 long var22 /* : Int */;
1124 val* var23 /* : NativeArray[AExpr] */;
1125 val* var24 /* : ACallExpr */;
1126 val* var_nnewvalue /* var nnewvalue: ACallExpr */;
1127 val* var25 /* : ASTBuilder */;
1128 val* var26 /* : AExpr */;
1129 val* var27 /* : AVarExpr */;
1130 val* var28 /* : nullable CallSite */;
1131 val* var29 /* : MMethod */;
1132 val* var30 /* : ACallExpr */;
1133 val* var_nwrite /* var nwrite: ACallExpr */;
1134 var_v = p0;
1135 var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1136 var1 = ((val* (*)(val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var) /* make_block on <var:ASTBuilder>*/;
1137 var_nblock = var1;
1138 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
1139 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var2) /* add on <var_nblock:ABlockExpr>*/;
1140 var3 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
1141 ((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[AExpr]>*/;
1142 var_read_args = var3;
1143 var4 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
1144 ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[AExpr]>*/;
1145 var_write_args = var4;
1146 var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments]))(self) /* raw_arguments on <self:ASendReassignFormExpr>*/;
1147 if (var5 == NULL) {
1148 fprintf(stderr, "Runtime error: %s", "Cast failed");
1149 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 268);
1150 show_backtrace(1);
1151 }
1152 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:nullable Array[AExpr](Array[AExpr])>*/;
1153 for(;;) {
1154 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
1155 if(!var7) break;
1156 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
1157 var_a = var8;
1158 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_a) /* add on <var_nblock:ABlockExpr>*/;
1159 var9 = ((val* (*)(val*))(var_a->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_a) /* make_var_read on <var_a:AExpr>*/;
1160 ((void (*)(val*, val*))(var_read_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_read_args, var9) /* add on <var_read_args:Array[AExpr]>*/;
1161 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var_a) /* make_var_read on <var_a:AExpr>*/;
1162 ((void (*)(val*, val*))(var_write_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_write_args, var10) /* add on <var_write_args:Array[AExpr]>*/;
1163 CONTINUE_label: (void)0;
1164 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
1165 }
1166 BREAK_label: (void)0;
1167 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1168 var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
1169 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var12) /* make_var_read on <var12:AExpr>*/;
1170 var14 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendReassignFormExpr>*/;
1171 if (var14 == NULL) {
1172 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1173 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 274);
1174 show_backtrace(1);
1175 } else {
1176 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_typing__CallSite__mproperty]))(var14) /* mproperty on <var14:nullable CallSite>*/;
1177 }
1178 var16 = ((val* (*)(val*, val*, val*, val*))(var11->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var11, var13, var15, var_read_args) /* make_call on <var11:ASTBuilder>*/;
1179 var_nread = var16;
1180 var17 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1181 var18 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:ASendReassignFormExpr>*/;
1182 if (var18 == NULL) {
1183 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1184 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 276);
1185 show_backtrace(1);
1186 } else {
1187 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_typing__CallSite__mproperty]))(var18) /* mproperty on <var18:nullable CallSite>*/;
1188 }
1189 var20 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
1190 var21 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
1191 { /* var21 = array_instance Array[AExpr] */
1192 var22 = 1;
1193 var23 = NEW_array__NativeArray(var22, &type_array__NativeArrayparser_nodes__AExpr);
1194 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var20;
1195 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[AExpr]>*/;
1196 }
1197 var24 = ((val* (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var17, var_nread, var19, var21) /* make_call on <var17:ASTBuilder>*/;
1198 var_nnewvalue = var24;
1199 ((void (*)(val*, val*))(var_write_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_write_args, var_nnewvalue) /* add on <var_write_args:Array[AExpr]>*/;
1200 var25 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1201 var26 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
1202 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var26) /* make_var_read on <var26:AExpr>*/;
1203 var28 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite]))(self) /* write_callsite on <self:ASendReassignFormExpr>*/;
1204 if (var28 == NULL) {
1205 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1206 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 279);
1207 show_backtrace(1);
1208 } else {
1209 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_typing__CallSite__mproperty]))(var28) /* mproperty on <var28:nullable CallSite>*/;
1210 }
1211 var30 = ((val* (*)(val*, val*, val*, val*))(var25->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var25, var27, var29, var_write_args) /* make_call on <var25:ASTBuilder>*/;
1212 var_nwrite = var30;
1213 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nwrite) /* add on <var_nblock:ABlockExpr>*/;
1214 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:ASendReassignFormExpr>*/;
1215 RET_LABEL:;
1216 }
1217 /* method transform#ASendReassignFormExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
1218 void VIRTUAL_transform__ASendReassignFormExpr__accept_transform_visitor(val* self, val* p0) {
1219 transform__ASendReassignFormExpr__accept_transform_visitor(self, p0);
1220 RET_LABEL:;
1221 }
1222 /* method transform#AVarReassignExpr#accept_transform_visitor for (self: AVarReassignExpr, TransformVisitor) */
1223 void transform__AVarReassignExpr__accept_transform_visitor(val* self, val* p0) {
1224 val* var_v /* var v: TransformVisitor */;
1225 val* var /* : nullable Variable */;
1226 val* var_variable /* var variable: Variable */;
1227 val* var1 /* : ASTBuilder */;
1228 val* var2 /* : nullable MType */;
1229 val* var3 /* : AVarExpr */;
1230 val* var_nread /* var nread: AVarExpr */;
1231 val* var4 /* : ASTBuilder */;
1232 val* var5 /* : nullable CallSite */;
1233 val* var6 /* : MMethod */;
1234 val* var7 /* : AExpr */;
1235 val* var8 /* : Array[AExpr] */;
1236 long var9 /* : Int */;
1237 val* var10 /* : NativeArray[AExpr] */;
1238 val* var11 /* : ACallExpr */;
1239 val* var_nnewvalue /* var nnewvalue: ACallExpr */;
1240 val* var12 /* : ASTBuilder */;
1241 val* var13 /* : AVarAssignExpr */;
1242 val* var_nwrite /* var nwrite: AVarAssignExpr */;
1243 var_v = p0;
1244 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
1245 if (var == NULL) {
1246 fprintf(stderr, "Runtime error: %s", "Cast failed");
1247 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 290);
1248 show_backtrace(1);
1249 }
1250 var_variable = var;
1251 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1252 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type]))(self) /* read_type on <self:AVarReassignExpr>*/;
1253 if (var2 == NULL) {
1254 fprintf(stderr, "Runtime error: %s", "Cast failed");
1255 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 292);
1256 show_backtrace(1);
1257 }
1258 var3 = ((val* (*)(val*, val*, val*))(var1->class->vft[COLOR_astbuilder__ASTBuilder__make_var_read]))(var1, var_variable, var2) /* make_var_read on <var1:ASTBuilder>*/;
1259 var_nread = var3;
1260 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1261 var5 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AVarReassignExpr>*/;
1262 if (var5 == NULL) {
1263 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1264 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 294);
1265 show_backtrace(1);
1266 } else {
1267 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_typing__CallSite__mproperty]))(var5) /* mproperty on <var5:nullable CallSite>*/;
1268 }
1269 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AVarReassignExpr>*/;
1270 var8 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
1271 { /* var8 = array_instance Array[AExpr] */
1272 var9 = 1;
1273 var10 = NEW_array__NativeArray(var9, &type_array__NativeArrayparser_nodes__AExpr);
1274 ((struct instance_array__NativeArray*)var10)->values[0] = (val*) var7;
1275 ((void (*)(val*, val*, long))(var8->class->vft[COLOR_array__Array__with_native]))(var8, var10, var9) /* with_native on <var8:Array[AExpr]>*/;
1276 }
1277 var11 = ((val* (*)(val*, val*, val*, val*))(var4->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var4, var_nread, var6, var8) /* make_call on <var4:ASTBuilder>*/;
1278 var_nnewvalue = var11;
1279 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1280 var13 = ((val* (*)(val*, val*, val*))(var12->class->vft[COLOR_astbuilder__ASTBuilder__make_var_assign]))(var12, var_variable, var_nnewvalue) /* make_var_assign on <var12:ASTBuilder>*/;
1281 var_nwrite = var13;
1282 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nwrite) /* replace_with on <self:AVarReassignExpr>*/;
1283 RET_LABEL:;
1284 }
1285 /* method transform#AVarReassignExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
1286 void VIRTUAL_transform__AVarReassignExpr__accept_transform_visitor(val* self, val* p0) {
1287 transform__AVarReassignExpr__accept_transform_visitor(self, p0);
1288 RET_LABEL:;
1289 }
1290 /* method transform#AAttrReassignExpr#accept_transform_visitor for (self: AAttrReassignExpr, TransformVisitor) */
1291 void transform__AAttrReassignExpr__accept_transform_visitor(val* self, val* p0) {
1292 val* var_v /* var v: TransformVisitor */;
1293 val* var /* : ASTBuilder */;
1294 val* var1 /* : ABlockExpr */;
1295 val* var_nblock /* var nblock: ABlockExpr */;
1296 val* var2 /* : AExpr */;
1297 val* var3 /* : nullable MAttribute */;
1298 val* var_attribute /* var attribute: MAttribute */;
1299 val* var4 /* : ASTBuilder */;
1300 val* var5 /* : AExpr */;
1301 val* var6 /* : AVarExpr */;
1302 val* var7 /* : AAttrExpr */;
1303 val* var_nread /* var nread: AAttrExpr */;
1304 val* var8 /* : ASTBuilder */;
1305 val* var9 /* : nullable CallSite */;
1306 val* var10 /* : MMethod */;
1307 val* var11 /* : AExpr */;
1308 val* var12 /* : Array[AExpr] */;
1309 long var13 /* : Int */;
1310 val* var14 /* : NativeArray[AExpr] */;
1311 val* var15 /* : ACallExpr */;
1312 val* var_nnewvalue /* var nnewvalue: ACallExpr */;
1313 val* var16 /* : ASTBuilder */;
1314 val* var17 /* : AExpr */;
1315 val* var18 /* : AVarExpr */;
1316 val* var19 /* : AAttrAssignExpr */;
1317 val* var_nwrite /* var nwrite: AAttrAssignExpr */;
1318 var_v = p0;
1319 var = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1320 var1 = ((val* (*)(val*))(var->class->vft[COLOR_astbuilder__ASTBuilder__make_block]))(var) /* make_block on <var:ASTBuilder>*/;
1321 var_nblock = var1;
1322 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
1323 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var2) /* add on <var_nblock:ABlockExpr>*/;
1324 var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AAttrFormExpr__mproperty]))(self) /* mproperty on <self:AAttrReassignExpr>*/;
1325 if (var3 == NULL) {
1326 fprintf(stderr, "Runtime error: %s", "Cast failed");
1327 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 307);
1328 show_backtrace(1);
1329 }
1330 var_attribute = var3;
1331 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1332 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
1333 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var5) /* make_var_read on <var5:AExpr>*/;
1334 var7 = ((val* (*)(val*, val*, val*))(var4->class->vft[COLOR_astbuilder__ASTBuilder__make_attr_read]))(var4, var6, var_attribute) /* make_attr_read on <var4:ASTBuilder>*/;
1335 var_nread = var7;
1336 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1337 var9 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AAttrReassignExpr>*/;
1338 if (var9 == NULL) {
1339 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1340 fprintf(stderr, " (%s:%d)\n", "src/transform.nit", 310);
1341 show_backtrace(1);
1342 } else {
1343 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_typing__CallSite__mproperty]))(var9) /* mproperty on <var9:nullable CallSite>*/;
1344 }
1345 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AAttrReassignExpr>*/;
1346 var12 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
1347 { /* var12 = array_instance Array[AExpr] */
1348 var13 = 1;
1349 var14 = NEW_array__NativeArray(var13, &type_array__NativeArrayparser_nodes__AExpr);
1350 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var11;
1351 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[AExpr]>*/;
1352 }
1353 var15 = ((val* (*)(val*, val*, val*, val*))(var8->class->vft[COLOR_astbuilder__ASTBuilder__make_call]))(var8, var_nread, var10, var12) /* make_call on <var8:ASTBuilder>*/;
1354 var_nnewvalue = var15;
1355 var16 = ((val* (*)(val*))(var_v->class->vft[COLOR_transform__TransformVisitor__builder]))(var_v) /* builder on <var_v:TransformVisitor>*/;
1356 var17 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrFormExpr__n_expr]))(self) /* n_expr on <self:AAttrReassignExpr>*/;
1357 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_astbuilder__AExpr__make_var_read]))(var17) /* make_var_read on <var17:AExpr>*/;
1358 var19 = ((val* (*)(val*, val*, val*, val*))(var16->class->vft[COLOR_astbuilder__ASTBuilder__make_attr_assign]))(var16, var18, var_attribute, var_nnewvalue) /* make_attr_assign on <var16:ASTBuilder>*/;
1359 var_nwrite = var19;
1360 ((void (*)(val*, val*))(var_nblock->class->vft[COLOR_astbuilder__AExpr__add]))(var_nblock, var_nwrite) /* add on <var_nblock:ABlockExpr>*/;
1361 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__replace_with]))(self, var_nblock) /* replace_with on <self:AAttrReassignExpr>*/;
1362 RET_LABEL:;
1363 }
1364 /* method transform#AAttrReassignExpr#accept_transform_visitor for (self: Object, TransformVisitor) */
1365 void VIRTUAL_transform__AAttrReassignExpr__accept_transform_visitor(val* self, val* p0) {
1366 transform__AAttrReassignExpr__accept_transform_visitor(self, p0);
1367 RET_LABEL:;
1368 }