c_src: update Makefile to compile on MacOSX
[nit.git] / c_src / typing.sep.1.c
1 #include "typing.sep.0.h"
2 /* method typing#ToolContext#typing_phase for (self: ToolContext): Phase */
3 val* typing__ToolContext__typing_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_typing__ToolContext___64dtyping_phase].val; /* @typing_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @typing_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 27);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method typing#ToolContext#typing_phase for (self: Object): Phase */
17 val* VIRTUAL_typing__ToolContext__typing_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = typing__ToolContext__typing_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method typing#ToolContext#typing_phase= for (self: ToolContext, Phase) */
26 void typing__ToolContext__typing_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_typing__ToolContext___64dtyping_phase].val = p0; /* @typing_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method typing#ToolContext#typing_phase= for (self: Object, Phase) */
31 void VIRTUAL_typing__ToolContext__typing_phase_61d(val* self, val* p0) {
32 typing__ToolContext__typing_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method typing#TypingPhase#process_npropdef for (self: TypingPhase, APropdef) */
36 void typing__TypingPhase__process_npropdef(val* self, val* p0) {
37 val* var_npropdef /* var npropdef: APropdef */;
38 val* var /* : ToolContext */;
39 val* var1 /* : ModelBuilder */;
40 var_npropdef = p0;
41 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:TypingPhase>*/;
42 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var) /* modelbuilder on <var:ToolContext>*/;
43 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_typing__APropdef__do_typing]))(var_npropdef, var1) /* do_typing on <var_npropdef:APropdef>*/;
44 RET_LABEL:;
45 }
46 /* method typing#TypingPhase#process_npropdef for (self: Object, APropdef) */
47 void VIRTUAL_typing__TypingPhase__process_npropdef(val* self, val* p0) {
48 typing__TypingPhase__process_npropdef(self, p0);
49 RET_LABEL:;
50 }
51 /* method typing#TypeVisitor#modelbuilder for (self: TypeVisitor): ModelBuilder */
52 val* typing__TypeVisitor__modelbuilder(val* self) {
53 val* var /* : ModelBuilder */;
54 val* var1 /* : ModelBuilder */;
55 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val; /* @modelbuilder on <self:TypeVisitor> */
56 if (var1 == NULL) {
57 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelbuilder");
58 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 36);
59 show_backtrace(1);
60 }
61 var = var1;
62 RET_LABEL:;
63 return var;
64 }
65 /* method typing#TypeVisitor#modelbuilder for (self: Object): ModelBuilder */
66 val* VIRTUAL_typing__TypeVisitor__modelbuilder(val* self) {
67 val* var /* : ModelBuilder */;
68 val* var1 /* : ModelBuilder */;
69 var1 = typing__TypeVisitor__modelbuilder(self);
70 var = var1;
71 RET_LABEL:;
72 return var;
73 }
74 /* method typing#TypeVisitor#modelbuilder= for (self: TypeVisitor, ModelBuilder) */
75 void typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
76 self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val = p0; /* @modelbuilder on <self:TypeVisitor> */
77 RET_LABEL:;
78 }
79 /* method typing#TypeVisitor#modelbuilder= for (self: Object, ModelBuilder) */
80 void VIRTUAL_typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
81 typing__TypeVisitor__modelbuilder_61d(self, p0);
82 RET_LABEL:;
83 }
84 /* method typing#TypeVisitor#nclassdef for (self: TypeVisitor): AClassdef */
85 val* typing__TypeVisitor__nclassdef(val* self) {
86 val* var /* : AClassdef */;
87 val* var1 /* : AClassdef */;
88 var1 = self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val; /* @nclassdef on <self:TypeVisitor> */
89 if (var1 == NULL) {
90 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nclassdef");
91 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 37);
92 show_backtrace(1);
93 }
94 var = var1;
95 RET_LABEL:;
96 return var;
97 }
98 /* method typing#TypeVisitor#nclassdef for (self: Object): AClassdef */
99 val* VIRTUAL_typing__TypeVisitor__nclassdef(val* self) {
100 val* var /* : AClassdef */;
101 val* var1 /* : AClassdef */;
102 var1 = typing__TypeVisitor__nclassdef(self);
103 var = var1;
104 RET_LABEL:;
105 return var;
106 }
107 /* method typing#TypeVisitor#nclassdef= for (self: TypeVisitor, AClassdef) */
108 void typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
109 self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val = p0; /* @nclassdef on <self:TypeVisitor> */
110 RET_LABEL:;
111 }
112 /* method typing#TypeVisitor#nclassdef= for (self: Object, AClassdef) */
113 void VIRTUAL_typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
114 typing__TypeVisitor__nclassdef_61d(self, p0);
115 RET_LABEL:;
116 }
117 /* method typing#TypeVisitor#mpropdef for (self: TypeVisitor): MPropDef */
118 val* typing__TypeVisitor__mpropdef(val* self) {
119 val* var /* : MPropDef */;
120 val* var1 /* : MPropDef */;
121 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val; /* @mpropdef on <self:TypeVisitor> */
122 if (var1 == NULL) {
123 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
124 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 38);
125 show_backtrace(1);
126 }
127 var = var1;
128 RET_LABEL:;
129 return var;
130 }
131 /* method typing#TypeVisitor#mpropdef for (self: Object): MPropDef */
132 val* VIRTUAL_typing__TypeVisitor__mpropdef(val* self) {
133 val* var /* : MPropDef */;
134 val* var1 /* : MPropDef */;
135 var1 = typing__TypeVisitor__mpropdef(self);
136 var = var1;
137 RET_LABEL:;
138 return var;
139 }
140 /* method typing#TypeVisitor#mpropdef= for (self: TypeVisitor, MPropDef) */
141 void typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
142 self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val = p0; /* @mpropdef on <self:TypeVisitor> */
143 RET_LABEL:;
144 }
145 /* method typing#TypeVisitor#mpropdef= for (self: Object, MPropDef) */
146 void VIRTUAL_typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
147 typing__TypeVisitor__mpropdef_61d(self, p0);
148 RET_LABEL:;
149 }
150 /* method typing#TypeVisitor#selfvariable for (self: TypeVisitor): Variable */
151 val* typing__TypeVisitor__selfvariable(val* self) {
152 val* var /* : Variable */;
153 val* var1 /* : Variable */;
154 var1 = self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val; /* @selfvariable on <self:TypeVisitor> */
155 if (var1 == NULL) {
156 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @selfvariable");
157 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 40);
158 show_backtrace(1);
159 }
160 var = var1;
161 RET_LABEL:;
162 return var;
163 }
164 /* method typing#TypeVisitor#selfvariable for (self: Object): Variable */
165 val* VIRTUAL_typing__TypeVisitor__selfvariable(val* self) {
166 val* var /* : Variable */;
167 val* var1 /* : Variable */;
168 var1 = typing__TypeVisitor__selfvariable(self);
169 var = var1;
170 RET_LABEL:;
171 return var;
172 }
173 /* method typing#TypeVisitor#selfvariable= for (self: TypeVisitor, Variable) */
174 void typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
175 self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val = p0; /* @selfvariable on <self:TypeVisitor> */
176 RET_LABEL:;
177 }
178 /* method typing#TypeVisitor#selfvariable= for (self: Object, Variable) */
179 void VIRTUAL_typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
180 typing__TypeVisitor__selfvariable_61d(self, p0);
181 RET_LABEL:;
182 }
183 /* method typing#TypeVisitor#init for (self: TypeVisitor, ModelBuilder, AClassdef, MPropDef) */
184 void typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
185 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
186 val* var_nclassdef /* var nclassdef: AClassdef */;
187 val* var_mpropdef /* var mpropdef: MPropDef */;
188 val* var /* : nullable MClassDef */;
189 val* var1 /* : MClass */;
190 val* var_mclass /* var mclass: MClass */;
191 val* var2 /* : Variable */;
192 static val* varonce;
193 val* var3 /* : String */;
194 char* var4 /* : NativeString */;
195 long var5 /* : Int */;
196 val* var6 /* : String */;
197 val* var_selfvariable /* var selfvariable: Variable */;
198 val* var7 /* : MClassType */;
199 var_modelbuilder = p0;
200 var_nclassdef = p1;
201 var_mpropdef = p2;
202 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:TypeVisitor>*/;
203 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef_61d]))(self, var_nclassdef) /* nclassdef= on <self:TypeVisitor>*/;
204 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:TypeVisitor>*/;
205 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
206 if (var == NULL) {
207 fprintf(stderr, "Runtime error: %s", "Receiver is null");
208 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 48);
209 show_backtrace(1);
210 } else {
211 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__mclass]))(var) /* mclass on <var:nullable MClassDef>*/;
212 }
213 var_mclass = var1;
214 var2 = NEW_scope__Variable(&type_scope__Variable);
215 if (varonce) {
216 var3 = varonce;
217 } else {
218 var4 = "self";
219 var5 = 4;
220 var6 = string__NativeString__to_s_with_length(var4, var5);
221 var3 = var6;
222 varonce = var3;
223 }
224 ((void (*)(val*, val*))(var2->class->vft[COLOR_scope__Variable__init]))(var2, var3) /* init on <var2:Variable>*/;
225 var_selfvariable = var2;
226 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__selfvariable_61d]))(self, var_selfvariable) /* selfvariable= on <self:TypeVisitor>*/;
227 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
228 ((void (*)(val*, val*))(var_selfvariable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_selfvariable, var7) /* declared_type= on <var_selfvariable:Variable>*/;
229 RET_LABEL:;
230 }
231 /* method typing#TypeVisitor#init for (self: Object, ModelBuilder, AClassdef, MPropDef) */
232 void VIRTUAL_typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
233 typing__TypeVisitor__init(self, p0, p1, p2);
234 RET_LABEL:;
235 }
236 /* method typing#TypeVisitor#mmodule for (self: TypeVisitor): MModule */
237 val* typing__TypeVisitor__mmodule(val* self) {
238 val* var /* : MModule */;
239 val* var1 /* : AClassdef */;
240 val* var2 /* : nullable MClassDef */;
241 val* var3 /* : MModule */;
242 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
243 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
244 if (var2 == NULL) {
245 fprintf(stderr, "Runtime error: %s", "Receiver is null");
246 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 55);
247 show_backtrace(1);
248 } else {
249 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
250 }
251 var = var3;
252 goto RET_LABEL;
253 RET_LABEL:;
254 return var;
255 }
256 /* method typing#TypeVisitor#mmodule for (self: Object): MModule */
257 val* VIRTUAL_typing__TypeVisitor__mmodule(val* self) {
258 val* var /* : MModule */;
259 val* var1 /* : MModule */;
260 var1 = typing__TypeVisitor__mmodule(self);
261 var = var1;
262 RET_LABEL:;
263 return var;
264 }
265 /* method typing#TypeVisitor#anchor for (self: TypeVisitor): MClassType */
266 val* typing__TypeVisitor__anchor(val* self) {
267 val* var /* : MClassType */;
268 val* var1 /* : AClassdef */;
269 val* var2 /* : nullable MClassDef */;
270 val* var3 /* : MClassType */;
271 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
272 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
273 if (var2 == NULL) {
274 fprintf(stderr, "Runtime error: %s", "Receiver is null");
275 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 57);
276 show_backtrace(1);
277 } else {
278 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var2) /* bound_mtype on <var2:nullable MClassDef>*/;
279 }
280 var = var3;
281 goto RET_LABEL;
282 RET_LABEL:;
283 return var;
284 }
285 /* method typing#TypeVisitor#anchor for (self: Object): MClassType */
286 val* VIRTUAL_typing__TypeVisitor__anchor(val* self) {
287 val* var /* : MClassType */;
288 val* var1 /* : MClassType */;
289 var1 = typing__TypeVisitor__anchor(self);
290 var = var1;
291 RET_LABEL:;
292 return var;
293 }
294 /* method typing#TypeVisitor#anchor_to for (self: TypeVisitor, MType): MType */
295 val* typing__TypeVisitor__anchor_to(val* self, val* p0) {
296 val* var /* : MType */;
297 val* var_mtype /* var mtype: MType */;
298 val* var1 /* : AClassdef */;
299 val* var2 /* : nullable MClassDef */;
300 val* var3 /* : MModule */;
301 val* var_mmodule /* var mmodule: MModule */;
302 val* var4 /* : AClassdef */;
303 val* var5 /* : nullable MClassDef */;
304 val* var6 /* : MClassType */;
305 val* var_anchor /* var anchor: MClassType */;
306 val* var7 /* : MType */;
307 var_mtype = p0;
308 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
309 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
310 if (var2 == NULL) {
311 fprintf(stderr, "Runtime error: %s", "Receiver is null");
312 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 61);
313 show_backtrace(1);
314 } else {
315 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
316 }
317 var_mmodule = var3;
318 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
319 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
320 if (var5 == NULL) {
321 fprintf(stderr, "Runtime error: %s", "Receiver is null");
322 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 62);
323 show_backtrace(1);
324 } else {
325 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
326 }
327 var_anchor = var6;
328 var7 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
329 var = var7;
330 goto RET_LABEL;
331 RET_LABEL:;
332 return var;
333 }
334 /* method typing#TypeVisitor#anchor_to for (self: Object, MType): MType */
335 val* VIRTUAL_typing__TypeVisitor__anchor_to(val* self, val* p0) {
336 val* var /* : MType */;
337 val* var1 /* : MType */;
338 var1 = typing__TypeVisitor__anchor_to(self, p0);
339 var = var1;
340 RET_LABEL:;
341 return var;
342 }
343 /* method typing#TypeVisitor#is_subtype for (self: TypeVisitor, MType, MType): Bool */
344 short int typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
345 short int var /* : Bool */;
346 val* var_sub /* var sub: MType */;
347 val* var_sup /* var sup: MType */;
348 val* var1 /* : AClassdef */;
349 val* var2 /* : nullable MClassDef */;
350 val* var3 /* : MModule */;
351 val* var_mmodule /* var mmodule: MModule */;
352 val* var4 /* : AClassdef */;
353 val* var5 /* : nullable MClassDef */;
354 val* var6 /* : MClassType */;
355 val* var_anchor /* var anchor: MClassType */;
356 short int var7 /* : Bool */;
357 var_sub = p0;
358 var_sup = p1;
359 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
360 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
361 if (var2 == NULL) {
362 fprintf(stderr, "Runtime error: %s", "Receiver is null");
363 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 68);
364 show_backtrace(1);
365 } else {
366 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
367 }
368 var_mmodule = var3;
369 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
370 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
371 if (var5 == NULL) {
372 fprintf(stderr, "Runtime error: %s", "Receiver is null");
373 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 69);
374 show_backtrace(1);
375 } else {
376 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
377 }
378 var_anchor = var6;
379 var7 = ((short int (*)(val*, val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__is_subtype]))(var_sub, var_mmodule, var_anchor, var_sup) /* is_subtype on <var_sub:MType>*/;
380 var = var7;
381 goto RET_LABEL;
382 RET_LABEL:;
383 return var;
384 }
385 /* method typing#TypeVisitor#is_subtype for (self: Object, MType, MType): Bool */
386 short int VIRTUAL_typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
387 short int var /* : Bool */;
388 short int var1 /* : Bool */;
389 var1 = typing__TypeVisitor__is_subtype(self, p0, p1);
390 var = var1;
391 RET_LABEL:;
392 return var;
393 }
394 /* method typing#TypeVisitor#resolve_for for (self: TypeVisitor, MType, MType, Bool): MType */
395 val* typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
396 val* var /* : MType */;
397 val* var_mtype /* var mtype: MType */;
398 val* var_subtype /* var subtype: MType */;
399 short int var_for_self /* var for_self: Bool */;
400 val* var1 /* : AClassdef */;
401 val* var2 /* : nullable MClassDef */;
402 val* var3 /* : MModule */;
403 val* var_mmodule /* var mmodule: MModule */;
404 val* var4 /* : AClassdef */;
405 val* var5 /* : nullable MClassDef */;
406 val* var6 /* : MClassType */;
407 val* var_anchor /* var anchor: MClassType */;
408 short int var7 /* : Bool */;
409 val* var8 /* : MType */;
410 val* var_res /* var res: MType */;
411 var_mtype = p0;
412 var_subtype = p1;
413 var_for_self = p2;
414 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
415 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
416 if (var2 == NULL) {
417 fprintf(stderr, "Runtime error: %s", "Receiver is null");
418 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 75);
419 show_backtrace(1);
420 } else {
421 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
422 }
423 var_mmodule = var3;
424 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
425 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
426 if (var5 == NULL) {
427 fprintf(stderr, "Runtime error: %s", "Receiver is null");
428 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 76);
429 show_backtrace(1);
430 } else {
431 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
432 }
433 var_anchor = var6;
434 var7 = !var_for_self;
435 var8 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var_subtype, var_anchor, var_mmodule, var7) /* resolve_for on <var_mtype:MType>*/;
436 var_res = var8;
437 var = var_res;
438 goto RET_LABEL;
439 RET_LABEL:;
440 return var;
441 }
442 /* method typing#TypeVisitor#resolve_for for (self: Object, MType, MType, Bool): MType */
443 val* VIRTUAL_typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
444 val* var /* : MType */;
445 val* var1 /* : MType */;
446 var1 = typing__TypeVisitor__resolve_for(self, p0, p1, p2);
447 var = var1;
448 RET_LABEL:;
449 return var;
450 }
451 /* method typing#TypeVisitor#resolve_signature_for for (self: TypeVisitor, MMethodDef, MType, Bool): MSignature */
452 val* typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
453 val* var /* : MSignature */;
454 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
455 val* var_recv /* var recv: MType */;
456 short int var_for_self /* var for_self: Bool */;
457 val* var1 /* : nullable MSignature */;
458 val* var2 /* : MType */;
459 short int var3 /* : Bool */;
460 int cltype;
461 int idtype;
462 const char* var_class_name;
463 var_mmethoddef = p0;
464 var_recv = p1;
465 var_for_self = p2;
466 var1 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
467 if (var1 == NULL) {
468 fprintf(stderr, "Runtime error: %s", "Cast failed");
469 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 89);
470 show_backtrace(1);
471 }
472 var2 = ((val* (*)(val*, val*, val*, short int))(self->class->vft[COLOR_typing__TypeVisitor__resolve_for]))(self, var1, var_recv, var_for_self) /* resolve_for on <self:TypeVisitor>*/;
473 /* <var2:MType> isa MSignature */
474 cltype = type_model__MSignature.color;
475 idtype = type_model__MSignature.id;
476 if(cltype >= var2->type->table_size) {
477 var3 = 0;
478 } else {
479 var3 = var2->type->type_table[cltype] == idtype;
480 }
481 if (!var3) {
482 var_class_name = var2 == NULL ? "null" : var2->type->name;
483 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
484 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 89);
485 show_backtrace(1);
486 }
487 var = var2;
488 goto RET_LABEL;
489 RET_LABEL:;
490 return var;
491 }
492 /* method typing#TypeVisitor#resolve_signature_for for (self: Object, MMethodDef, MType, Bool): MSignature */
493 val* VIRTUAL_typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
494 val* var /* : MSignature */;
495 val* var1 /* : MSignature */;
496 var1 = typing__TypeVisitor__resolve_signature_for(self, p0, p1, p2);
497 var = var1;
498 RET_LABEL:;
499 return var;
500 }
501 /* method typing#TypeVisitor#check_subtype for (self: TypeVisitor, ANode, MType, MType): nullable MType */
502 val* typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
503 val* var /* : nullable MType */;
504 val* var_node /* var node: ANode */;
505 val* var_sub /* var sub: MType */;
506 val* var_sup /* var sup: MType */;
507 short int var1 /* : Bool */;
508 val* var2 /* : MType */;
509 short int var3 /* : Bool */;
510 val* var4 /* : ModelBuilder */;
511 static val* varonce;
512 val* var5 /* : String */;
513 char* var6 /* : NativeString */;
514 long var7 /* : Int */;
515 val* var8 /* : String */;
516 static val* varonce9;
517 val* var10 /* : String */;
518 char* var11 /* : NativeString */;
519 long var12 /* : Int */;
520 val* var13 /* : String */;
521 val* var14 /* : Array[Object] */;
522 long var15 /* : Int */;
523 val* var16 /* : NativeArray[Object] */;
524 val* var17 /* : String */;
525 val* var18 /* : null */;
526 var_node = p0;
527 var_sub = p1;
528 var_sup = p2;
529 var1 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
530 if (var1){
531 var = var_sub;
532 goto RET_LABEL;
533 } else {
534 }
535 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_sup) /* anchor_to on <self:TypeVisitor>*/;
536 var3 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var2) /* is_subtype on <self:TypeVisitor>*/;
537 if (var3){
538 var = var_sup;
539 goto RET_LABEL;
540 } else {
541 }
542 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
543 if (varonce) {
544 var5 = varonce;
545 } else {
546 var6 = "Type error: expected ";
547 var7 = 21;
548 var8 = string__NativeString__to_s_with_length(var6, var7);
549 var5 = var8;
550 varonce = var5;
551 }
552 if (varonce9) {
553 var10 = varonce9;
554 } else {
555 var11 = ", got ";
556 var12 = 6;
557 var13 = string__NativeString__to_s_with_length(var11, var12);
558 var10 = var13;
559 varonce9 = var10;
560 }
561 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
562 { /* var14 = array_instance Array[Object] */
563 var15 = 4;
564 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
565 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
566 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_sup;
567 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
568 ((struct instance_array__NativeArray*)var16)->values[3] = (val*) var_sub;
569 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
570 }
571 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
572 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var4, var_node, var17) /* error on <var4:ModelBuilder>*/;
573 var18 = NULL;
574 var = var18;
575 goto RET_LABEL;
576 RET_LABEL:;
577 return var;
578 }
579 /* method typing#TypeVisitor#check_subtype for (self: Object, ANode, MType, MType): nullable MType */
580 val* VIRTUAL_typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
581 val* var /* : nullable MType */;
582 val* var1 /* : nullable MType */;
583 var1 = typing__TypeVisitor__check_subtype(self, p0, p1, p2);
584 var = var1;
585 RET_LABEL:;
586 return var;
587 }
588 /* method typing#TypeVisitor#visit_stmt for (self: TypeVisitor, nullable AExpr) */
589 void typing__TypeVisitor__visit_stmt(val* self, val* p0) {
590 val* var_nexpr /* var nexpr: nullable AExpr */;
591 val* var /* : null */;
592 short int var1 /* : Bool */;
593 var_nexpr = p0;
594 var = NULL;
595 if (var_nexpr == NULL) {
596 var1 = 1; /* is null */
597 } else {
598 var1 = 0; /* arg is null but recv is not */
599 }
600 if (var1){
601 goto RET_LABEL;
602 } else {
603 }
604 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:nullable AExpr(AExpr)>*/;
605 RET_LABEL:;
606 }
607 /* method typing#TypeVisitor#visit_stmt for (self: Object, nullable AExpr) */
608 void VIRTUAL_typing__TypeVisitor__visit_stmt(val* self, val* p0) {
609 typing__TypeVisitor__visit_stmt(self, p0);
610 RET_LABEL:;
611 }
612 /* method typing#TypeVisitor#visit_expr for (self: TypeVisitor, AExpr): nullable MType */
613 val* typing__TypeVisitor__visit_expr(val* self, val* p0) {
614 val* var /* : nullable MType */;
615 val* var_nexpr /* var nexpr: AExpr */;
616 val* var1 /* : nullable MType */;
617 val* var_mtype /* var mtype: nullable MType */;
618 val* var2 /* : null */;
619 short int var3 /* : Bool */;
620 short int var4 /* : Bool */;
621 short int var5 /* : Bool */;
622 val* var6 /* : ModelBuilder */;
623 val* var7 /* : ToolContext */;
624 long var8 /* : Int */;
625 long var9 /* : Int */;
626 short int var10 /* : Bool */;
627 short int var12 /* : Bool */;
628 int cltype;
629 int idtype;
630 const char* var_class_name;
631 short int var13 /* : Bool */;
632 short int var14 /* : Bool */;
633 val* var15 /* : ModelBuilder */;
634 val* var16 /* : ToolContext */;
635 long var17 /* : Int */;
636 long var18 /* : Int */;
637 short int var19 /* : Bool */;
638 short int var21 /* : Bool */;
639 int cltype22;
640 int idtype23;
641 const char* var_class_name24;
642 short int var25 /* : Bool */;
643 static val* varonce;
644 val* var26 /* : String */;
645 char* var27 /* : NativeString */;
646 long var28 /* : Int */;
647 val* var29 /* : String */;
648 val* var30 /* : null */;
649 static val* varonce31;
650 val* var32 /* : String */;
651 char* var33 /* : NativeString */;
652 long var34 /* : Int */;
653 val* var35 /* : String */;
654 val* var36 /* : null */;
655 var_nexpr = p0;
656 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:AExpr>*/;
657 var1 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
658 var_mtype = var1;
659 var2 = NULL;
660 if (var_mtype == NULL) {
661 var3 = 0; /* is null */
662 } else {
663 var3 = 1; /* arg is null and recv is not */
664 }
665 if (var3){
666 var = var_mtype;
667 goto RET_LABEL;
668 } else {
669 }
670 var4 = ((short int (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__is_typed]))(var_nexpr) /* is_typed on <var_nexpr:AExpr>*/;
671 var5 = !var4;
672 if (var5){
673 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
674 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var6) /* toolcontext on <var6:ModelBuilder>*/;
675 var8 = ((long (*)(val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var7) /* error_count on <var7:ToolContext>*/;
676 var9 = 0;
677 { /* Inline kernel#Int#> (var8,var9) */
678 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
679 /* <var9:Int> isa OTHER */
680 var12 = 1; /* easy <var9:Int> isa OTHER*/
681 if (!var12) {
682 var_class_name = type_kernel__Int.name;
683 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
684 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
685 show_backtrace(1);
686 }
687 var13 = var8 > var9;
688 var10 = var13;
689 goto RET_LABEL11;
690 RET_LABEL11:(void)0;
691 }
692 var14 = !var10;
693 if (var14){
694 var15 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
695 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
696 var17 = ((long (*)(val*))(var16->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var16) /* verbose_level on <var16:ToolContext>*/;
697 var18 = 1;
698 { /* Inline kernel#Int#> (var17,var18) */
699 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
700 /* <var18:Int> isa OTHER */
701 var21 = 1; /* easy <var18:Int> isa OTHER*/
702 if (!var21) {
703 var_class_name24 = type_kernel__Int.name;
704 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
705 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
706 show_backtrace(1);
707 }
708 var25 = var17 > var18;
709 var19 = var25;
710 goto RET_LABEL20;
711 RET_LABEL20:(void)0;
712 }
713 if (var19){
714 if (varonce) {
715 var26 = varonce;
716 } else {
717 var27 = "No return type but no error.";
718 var28 = 28;
719 var29 = string__NativeString__to_s_with_length(var27, var28);
720 var26 = var29;
721 varonce = var26;
722 }
723 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_parser_nodes__ANode__debug]))(var_nexpr, var26) /* debug on <var_nexpr:AExpr>*/;
724 } else {
725 }
726 } else {
727 }
728 var30 = NULL;
729 var = var30;
730 goto RET_LABEL;
731 } else {
732 }
733 if (varonce31) {
734 var32 = varonce31;
735 } else {
736 var33 = "Type error: expected expression.";
737 var34 = 32;
738 var35 = string__NativeString__to_s_with_length(var33, var34);
739 var32 = var35;
740 varonce31 = var32;
741 }
742 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_nexpr, var32) /* error on <self:TypeVisitor>*/;
743 var36 = NULL;
744 var = var36;
745 goto RET_LABEL;
746 RET_LABEL:;
747 return var;
748 }
749 /* method typing#TypeVisitor#visit_expr for (self: Object, AExpr): nullable MType */
750 val* VIRTUAL_typing__TypeVisitor__visit_expr(val* self, val* p0) {
751 val* var /* : nullable MType */;
752 val* var1 /* : nullable MType */;
753 var1 = typing__TypeVisitor__visit_expr(self, p0);
754 var = var1;
755 RET_LABEL:;
756 return var;
757 }
758 /* method typing#TypeVisitor#visit_expr_subtype for (self: TypeVisitor, AExpr, nullable MType): nullable MType */
759 val* typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
760 val* var /* : nullable MType */;
761 val* var_nexpr /* var nexpr: AExpr */;
762 val* var_sup /* var sup: nullable MType */;
763 val* var1 /* : nullable MType */;
764 val* var_sub /* var sub: nullable MType */;
765 val* var2 /* : null */;
766 short int var3 /* : Bool */;
767 val* var4 /* : null */;
768 val* var5 /* : null */;
769 short int var6 /* : Bool */;
770 val* var7 /* : null */;
771 val* var8 /* : nullable MType */;
772 val* var_res /* var res: nullable MType */;
773 short int var9 /* : Bool */;
774 var_nexpr = p0;
775 var_sup = p1;
776 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
777 var_sub = var1;
778 var2 = NULL;
779 if (var_sub == NULL) {
780 var3 = 1; /* is null */
781 } else {
782 var3 = 0; /* arg is null but recv is not */
783 }
784 if (var3){
785 var4 = NULL;
786 var = var4;
787 goto RET_LABEL;
788 } else {
789 }
790 var5 = NULL;
791 if (var_sup == NULL) {
792 var6 = 1; /* is null */
793 } else {
794 var6 = 0; /* arg is null but recv is not */
795 }
796 if (var6){
797 var7 = NULL;
798 var = var7;
799 goto RET_LABEL;
800 } else {
801 }
802 var8 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__check_subtype]))(self, var_nexpr, var_sub, var_sup) /* check_subtype on <self:TypeVisitor>*/;
803 var_res = var8;
804 if (var_res == NULL) {
805 var9 = 1; /* <var_sub:nullable MType(MType)> cannot be null */
806 } else {
807 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___33d_61d]))(var_res, var_sub) /* != on <var_res:nullable MType>*/;
808 }
809 if (var9){
810 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__implicit_cast_to_61d]))(var_nexpr, var_res) /* implicit_cast_to= on <var_nexpr:AExpr>*/;
811 } else {
812 }
813 var = var_res;
814 goto RET_LABEL;
815 RET_LABEL:;
816 return var;
817 }
818 /* method typing#TypeVisitor#visit_expr_subtype for (self: Object, AExpr, nullable MType): nullable MType */
819 val* VIRTUAL_typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
820 val* var /* : nullable MType */;
821 val* var1 /* : nullable MType */;
822 var1 = typing__TypeVisitor__visit_expr_subtype(self, p0, p1);
823 var = var1;
824 RET_LABEL:;
825 return var;
826 }
827 /* method typing#TypeVisitor#visit_expr_bool for (self: TypeVisitor, AExpr): nullable MType */
828 val* typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
829 val* var /* : nullable MType */;
830 val* var_nexpr /* var nexpr: AExpr */;
831 val* var1 /* : nullable MType */;
832 val* var2 /* : nullable MType */;
833 var_nexpr = p0;
834 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__type_bool]))(self, var_nexpr) /* type_bool on <self:TypeVisitor>*/;
835 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var_nexpr, var1) /* visit_expr_subtype on <self:TypeVisitor>*/;
836 var = var2;
837 goto RET_LABEL;
838 RET_LABEL:;
839 return var;
840 }
841 /* method typing#TypeVisitor#visit_expr_bool for (self: Object, AExpr): nullable MType */
842 val* VIRTUAL_typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
843 val* var /* : nullable MType */;
844 val* var1 /* : nullable MType */;
845 var1 = typing__TypeVisitor__visit_expr_bool(self, p0);
846 var = var1;
847 RET_LABEL:;
848 return var;
849 }
850 /* method typing#TypeVisitor#visit_expr_cast for (self: TypeVisitor, ANode, AExpr, AType): nullable MType */
851 val* typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
852 val* var /* : nullable MType */;
853 val* var_node /* var node: ANode */;
854 val* var_nexpr /* var nexpr: AExpr */;
855 val* var_ntype /* var ntype: AType */;
856 val* var1 /* : nullable MType */;
857 val* var_sub /* var sub: nullable MType */;
858 val* var2 /* : null */;
859 short int var3 /* : Bool */;
860 val* var4 /* : null */;
861 val* var5 /* : nullable MType */;
862 val* var_sup /* var sup: nullable MType */;
863 val* var6 /* : null */;
864 short int var7 /* : Bool */;
865 val* var8 /* : null */;
866 val* var9 /* : AClassdef */;
867 val* var10 /* : nullable MClassDef */;
868 val* var11 /* : MModule */;
869 val* var_mmodule /* var mmodule: MModule */;
870 val* var12 /* : AClassdef */;
871 val* var13 /* : nullable MClassDef */;
872 val* var14 /* : MClassType */;
873 val* var_anchor /* var anchor: MClassType */;
874 short int var15 /* : Bool */;
875 val* var16 /* : ModelBuilder */;
876 static val* varonce;
877 val* var17 /* : String */;
878 char* var18 /* : NativeString */;
879 long var19 /* : Int */;
880 val* var20 /* : String */;
881 static val* varonce21;
882 val* var22 /* : String */;
883 char* var23 /* : NativeString */;
884 long var24 /* : Int */;
885 val* var25 /* : String */;
886 val* var26 /* : Array[Object] */;
887 long var27 /* : Int */;
888 val* var28 /* : NativeArray[Object] */;
889 val* var29 /* : String */;
890 short int var30 /* : Bool */;
891 short int var31 /* : Bool */;
892 short int var_ /* var : Bool */;
893 short int var32 /* : Bool */;
894 short int var33 /* : Bool */;
895 val* var34 /* : ModelBuilder */;
896 static val* varonce35;
897 val* var36 /* : String */;
898 char* var37 /* : NativeString */;
899 long var38 /* : Int */;
900 val* var39 /* : String */;
901 static val* varonce40;
902 val* var41 /* : String */;
903 char* var42 /* : NativeString */;
904 long var43 /* : Int */;
905 val* var44 /* : String */;
906 static val* varonce45;
907 val* var46 /* : String */;
908 char* var47 /* : NativeString */;
909 long var48 /* : Int */;
910 val* var49 /* : String */;
911 val* var50 /* : Array[Object] */;
912 long var51 /* : Int */;
913 val* var52 /* : NativeArray[Object] */;
914 val* var53 /* : String */;
915 var_node = p0;
916 var_nexpr = p1;
917 var_ntype = p2;
918 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
919 var_sub = var1;
920 var2 = NULL;
921 if (var_sub == NULL) {
922 var3 = 1; /* is null */
923 } else {
924 var3 = 0; /* arg is null but recv is not */
925 }
926 if (var3){
927 var4 = NULL;
928 var = var4;
929 goto RET_LABEL;
930 } else {
931 }
932 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(self, var_ntype) /* resolve_mtype on <self:TypeVisitor>*/;
933 var_sup = var5;
934 var6 = NULL;
935 if (var_sup == NULL) {
936 var7 = 1; /* is null */
937 } else {
938 var7 = 0; /* arg is null but recv is not */
939 }
940 if (var7){
941 var8 = NULL;
942 var = var8;
943 goto RET_LABEL;
944 } else {
945 }
946 var9 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
947 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var9) /* mclassdef on <var9:AClassdef>*/;
948 if (var10 == NULL) {
949 fprintf(stderr, "Runtime error: %s", "Receiver is null");
950 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 179);
951 show_backtrace(1);
952 } else {
953 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassDef__mmodule]))(var10) /* mmodule on <var10:nullable MClassDef>*/;
954 }
955 var_mmodule = var11;
956 var12 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
957 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var12) /* mclassdef on <var12:AClassdef>*/;
958 if (var13 == NULL) {
959 fprintf(stderr, "Runtime error: %s", "Receiver is null");
960 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 180);
961 show_backtrace(1);
962 } else {
963 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on <var13:nullable MClassDef>*/;
964 }
965 var_anchor = var14;
966 var15 = ((short int (*)(val*, val*))(var_sup->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup, var_sub) /* == on <var_sup:nullable MType(MType)>*/;
967 if (var15){
968 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
969 if (varonce) {
970 var17 = varonce;
971 } else {
972 var18 = "Warning: Expression is already a ";
973 var19 = 33;
974 var20 = string__NativeString__to_s_with_length(var18, var19);
975 var17 = var20;
976 varonce = var17;
977 }
978 if (varonce21) {
979 var22 = varonce21;
980 } else {
981 var23 = ".";
982 var24 = 1;
983 var25 = string__NativeString__to_s_with_length(var23, var24);
984 var22 = var25;
985 varonce21 = var22;
986 }
987 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
988 { /* var26 = array_instance Array[Object] */
989 var27 = 3;
990 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
991 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
992 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_sup;
993 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
994 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
995 }
996 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
997 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var16, var_node, var29) /* warning on <var16:ModelBuilder>*/;
998 } else {
999 var31 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
1000 var_ = var31;
1001 if (var31){
1002 var32 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:nullable MType(MType)>*/;
1003 var33 = !var32;
1004 var30 = var33;
1005 } else {
1006 var30 = var_;
1007 }
1008 if (var30){
1009 var34 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1010 if (varonce35) {
1011 var36 = varonce35;
1012 } else {
1013 var37 = "Warning: Expression is already a ";
1014 var38 = 33;
1015 var39 = string__NativeString__to_s_with_length(var37, var38);
1016 var36 = var39;
1017 varonce35 = var36;
1018 }
1019 if (varonce40) {
1020 var41 = varonce40;
1021 } else {
1022 var42 = " since it is a ";
1023 var43 = 15;
1024 var44 = string__NativeString__to_s_with_length(var42, var43);
1025 var41 = var44;
1026 varonce40 = var41;
1027 }
1028 if (varonce45) {
1029 var46 = varonce45;
1030 } else {
1031 var47 = ".";
1032 var48 = 1;
1033 var49 = string__NativeString__to_s_with_length(var47, var48);
1034 var46 = var49;
1035 varonce45 = var46;
1036 }
1037 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
1038 { /* var50 = array_instance Array[Object] */
1039 var51 = 5;
1040 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
1041 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var36;
1042 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_sup;
1043 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var41;
1044 ((struct instance_array__NativeArray*)var52)->values[3] = (val*) var_sub;
1045 ((struct instance_array__NativeArray*)var52)->values[4] = (val*) var46;
1046 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
1047 }
1048 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
1049 ((void (*)(val*, val*, val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var34, var_node, var53) /* warning on <var34:ModelBuilder>*/;
1050 } else {
1051 }
1052 }
1053 var = var_sup;
1054 goto RET_LABEL;
1055 RET_LABEL:;
1056 return var;
1057 }
1058 /* method typing#TypeVisitor#visit_expr_cast for (self: Object, ANode, AExpr, AType): nullable MType */
1059 val* VIRTUAL_typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
1060 val* var /* : nullable MType */;
1061 val* var1 /* : nullable MType */;
1062 var1 = typing__TypeVisitor__visit_expr_cast(self, p0, p1, p2);
1063 var = var1;
1064 RET_LABEL:;
1065 return var;
1066 }
1067 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
1068 val* typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1069 val* var /* : nullable MProperty */;
1070 val* var_anode /* var anode: ANode */;
1071 val* var_mtype /* var mtype: MType */;
1072 val* var_name /* var name: String */;
1073 val* var1 /* : ModelBuilder */;
1074 val* var2 /* : AClassdef */;
1075 val* var3 /* : nullable MClassDef */;
1076 val* var4 /* : MModule */;
1077 val* var5 /* : nullable MProperty */;
1078 var_anode = p0;
1079 var_mtype = p1;
1080 var_name = p2;
1081 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1082 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1083 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var2) /* mclassdef on <var2:AClassdef>*/;
1084 if (var3 == NULL) {
1085 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1086 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 191);
1087 show_backtrace(1);
1088 } else {
1089 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:nullable MClassDef>*/;
1090 }
1091 var5 = ((val* (*)(val*, val*, val*, val*, val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2]))(var1, var_anode, var4, var_mtype, var_name) /* try_get_mproperty_by_name2 on <var1:ModelBuilder>*/;
1092 var = var5;
1093 goto RET_LABEL;
1094 RET_LABEL:;
1095 return var;
1096 }
1097 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: Object, ANode, MType, String): nullable MProperty */
1098 val* VIRTUAL_typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1099 val* var /* : nullable MProperty */;
1100 val* var1 /* : nullable MProperty */;
1101 var1 = typing__TypeVisitor__try_get_mproperty_by_name2(self, p0, p1, p2);
1102 var = var1;
1103 RET_LABEL:;
1104 return var;
1105 }
1106 /* method typing#TypeVisitor#resolve_mtype for (self: TypeVisitor, AType): nullable MType */
1107 val* typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1108 val* var /* : nullable MType */;
1109 val* var_node /* var node: AType */;
1110 val* var1 /* : ModelBuilder */;
1111 val* var2 /* : AClassdef */;
1112 val* var3 /* : nullable MType */;
1113 var_node = p0;
1114 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1115 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1116 var3 = ((val* (*)(val*, val*, val*))(var1->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var1, var2, var_node) /* resolve_mtype on <var1:ModelBuilder>*/;
1117 var = var3;
1118 goto RET_LABEL;
1119 RET_LABEL:;
1120 return var;
1121 }
1122 /* method typing#TypeVisitor#resolve_mtype for (self: Object, AType): nullable MType */
1123 val* VIRTUAL_typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1124 val* var /* : nullable MType */;
1125 val* var1 /* : nullable MType */;
1126 var1 = typing__TypeVisitor__resolve_mtype(self, p0);
1127 var = var1;
1128 RET_LABEL:;
1129 return var;
1130 }
1131 /* method typing#TypeVisitor#try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1132 val* typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1133 val* var /* : nullable MClass */;
1134 val* var_node /* var node: ANode */;
1135 val* var_name /* var name: String */;
1136 val* var1 /* : AClassdef */;
1137 val* var2 /* : nullable MClassDef */;
1138 val* var3 /* : MModule */;
1139 val* var_mmodule /* var mmodule: MModule */;
1140 val* var4 /* : ModelBuilder */;
1141 val* var5 /* : nullable MClass */;
1142 val* var_mclass /* var mclass: nullable MClass */;
1143 var_node = p0;
1144 var_name = p1;
1145 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1146 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1147 if (var2 == NULL) {
1148 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1149 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 201);
1150 show_backtrace(1);
1151 } else {
1152 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1153 }
1154 var_mmodule = var3;
1155 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1156 var5 = ((val* (*)(val*, val*, val*, val*))(var4->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var4, var_node, var_mmodule, var_name) /* try_get_mclass_by_name on <var4:ModelBuilder>*/;
1157 var_mclass = var5;
1158 var = var_mclass;
1159 goto RET_LABEL;
1160 RET_LABEL:;
1161 return var;
1162 }
1163 /* method typing#TypeVisitor#try_get_mclass for (self: Object, ANode, String): nullable MClass */
1164 val* VIRTUAL_typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1165 val* var /* : nullable MClass */;
1166 val* var1 /* : nullable MClass */;
1167 var1 = typing__TypeVisitor__try_get_mclass(self, p0, p1);
1168 var = var1;
1169 RET_LABEL:;
1170 return var;
1171 }
1172 /* method typing#TypeVisitor#get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1173 val* typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1174 val* var /* : nullable MClass */;
1175 val* var_node /* var node: ANode */;
1176 val* var_name /* var name: String */;
1177 val* var1 /* : AClassdef */;
1178 val* var2 /* : nullable MClassDef */;
1179 val* var3 /* : MModule */;
1180 val* var_mmodule /* var mmodule: MModule */;
1181 val* var4 /* : ModelBuilder */;
1182 val* var5 /* : nullable MClass */;
1183 val* var_mclass /* var mclass: nullable MClass */;
1184 val* var6 /* : null */;
1185 short int var7 /* : Bool */;
1186 val* var8 /* : ModelBuilder */;
1187 static val* varonce;
1188 val* var9 /* : String */;
1189 char* var10 /* : NativeString */;
1190 long var11 /* : Int */;
1191 val* var12 /* : String */;
1192 static val* varonce13;
1193 val* var14 /* : String */;
1194 char* var15 /* : NativeString */;
1195 long var16 /* : Int */;
1196 val* var17 /* : String */;
1197 val* var18 /* : Array[Object] */;
1198 long var19 /* : Int */;
1199 val* var20 /* : NativeArray[Object] */;
1200 val* var21 /* : String */;
1201 var_node = p0;
1202 var_name = p1;
1203 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1204 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1205 if (var2 == NULL) {
1206 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1207 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 208);
1208 show_backtrace(1);
1209 } else {
1210 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1211 }
1212 var_mmodule = var3;
1213 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1214 var5 = ((val* (*)(val*, val*, val*, val*))(var4->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var4, var_node, var_mmodule, var_name) /* try_get_mclass_by_name on <var4:ModelBuilder>*/;
1215 var_mclass = var5;
1216 var6 = NULL;
1217 if (var_mclass == NULL) {
1218 var7 = 1; /* is null */
1219 } else {
1220 var7 = 0; /* arg is null but recv is not */
1221 }
1222 if (var7){
1223 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1224 if (varonce) {
1225 var9 = varonce;
1226 } else {
1227 var10 = "Type Error: missing primitive class `";
1228 var11 = 37;
1229 var12 = string__NativeString__to_s_with_length(var10, var11);
1230 var9 = var12;
1231 varonce = var9;
1232 }
1233 if (varonce13) {
1234 var14 = varonce13;
1235 } else {
1236 var15 = "\'.";
1237 var16 = 2;
1238 var17 = string__NativeString__to_s_with_length(var15, var16);
1239 var14 = var17;
1240 varonce13 = var14;
1241 }
1242 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
1243 { /* var18 = array_instance Array[Object] */
1244 var19 = 3;
1245 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
1246 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
1247 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_name;
1248 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
1249 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
1250 }
1251 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
1252 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var8, var_node, var21) /* error on <var8:ModelBuilder>*/;
1253 } else {
1254 }
1255 var = var_mclass;
1256 goto RET_LABEL;
1257 RET_LABEL:;
1258 return var;
1259 }
1260 /* method typing#TypeVisitor#get_mclass for (self: Object, ANode, String): nullable MClass */
1261 val* VIRTUAL_typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1262 val* var /* : nullable MClass */;
1263 val* var1 /* : nullable MClass */;
1264 var1 = typing__TypeVisitor__get_mclass(self, p0, p1);
1265 var = var1;
1266 RET_LABEL:;
1267 return var;
1268 }
1269 /* method typing#TypeVisitor#type_bool for (self: TypeVisitor, ANode): nullable MType */
1270 val* typing__TypeVisitor__type_bool(val* self, val* p0) {
1271 val* var /* : nullable MType */;
1272 val* var_node /* var node: ANode */;
1273 static val* varonce;
1274 val* var1 /* : String */;
1275 char* var2 /* : NativeString */;
1276 long var3 /* : Int */;
1277 val* var4 /* : String */;
1278 val* var5 /* : nullable MClass */;
1279 val* var_mclass /* var mclass: nullable MClass */;
1280 val* var6 /* : null */;
1281 short int var7 /* : Bool */;
1282 val* var8 /* : null */;
1283 val* var9 /* : MClassType */;
1284 var_node = p0;
1285 if (varonce) {
1286 var1 = varonce;
1287 } else {
1288 var2 = "Bool";
1289 var3 = 4;
1290 var4 = string__NativeString__to_s_with_length(var2, var3);
1291 var1 = var4;
1292 varonce = var1;
1293 }
1294 var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(self, var_node, var1) /* get_mclass on <self:TypeVisitor>*/;
1295 var_mclass = var5;
1296 var6 = NULL;
1297 if (var_mclass == NULL) {
1298 var7 = 1; /* is null */
1299 } else {
1300 var7 = 0; /* arg is null but recv is not */
1301 }
1302 if (var7){
1303 var8 = NULL;
1304 var = var8;
1305 goto RET_LABEL;
1306 } else {
1307 }
1308 var9 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
1309 var = var9;
1310 goto RET_LABEL;
1311 RET_LABEL:;
1312 return var;
1313 }
1314 /* method typing#TypeVisitor#type_bool for (self: Object, ANode): nullable MType */
1315 val* VIRTUAL_typing__TypeVisitor__type_bool(val* self, val* p0) {
1316 val* var /* : nullable MType */;
1317 val* var1 /* : nullable MType */;
1318 var1 = typing__TypeVisitor__type_bool(self, p0);
1319 var = var1;
1320 RET_LABEL:;
1321 return var;
1322 }
1323 /* method typing#TypeVisitor#get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
1324 val* typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1325 val* var /* : nullable CallSite */;
1326 val* var_node /* var node: ANode */;
1327 val* var_recvtype /* var recvtype: MType */;
1328 val* var_name /* var name: String */;
1329 short int var_recv_is_self /* var recv_is_self: Bool */;
1330 val* var1 /* : MType */;
1331 val* var_unsafe_type /* var unsafe_type: MType */;
1332 short int var2 /* : Bool */;
1333 int cltype;
1334 int idtype;
1335 static val* varonce;
1336 val* var3 /* : String */;
1337 char* var4 /* : NativeString */;
1338 long var5 /* : Int */;
1339 val* var6 /* : String */;
1340 static val* varonce7;
1341 val* var8 /* : String */;
1342 char* var9 /* : NativeString */;
1343 long var10 /* : Int */;
1344 val* var11 /* : String */;
1345 val* var12 /* : Array[Object] */;
1346 long var13 /* : Int */;
1347 val* var14 /* : NativeArray[Object] */;
1348 val* var15 /* : String */;
1349 val* var16 /* : null */;
1350 val* var17 /* : nullable MProperty */;
1351 val* var_mproperty /* var mproperty: nullable MProperty */;
1352 val* var18 /* : null */;
1353 short int var19 /* : Bool */;
1354 val* var20 /* : ModelBuilder */;
1355 static val* varonce21;
1356 val* var22 /* : String */;
1357 char* var23 /* : NativeString */;
1358 long var24 /* : Int */;
1359 val* var25 /* : String */;
1360 static val* varonce26;
1361 val* var27 /* : String */;
1362 char* var28 /* : NativeString */;
1363 long var29 /* : Int */;
1364 val* var30 /* : String */;
1365 static val* varonce31;
1366 val* var32 /* : String */;
1367 char* var33 /* : NativeString */;
1368 long var34 /* : Int */;
1369 val* var35 /* : String */;
1370 val* var36 /* : Array[Object] */;
1371 long var37 /* : Int */;
1372 val* var38 /* : NativeArray[Object] */;
1373 val* var39 /* : String */;
1374 val* var40 /* : ModelBuilder */;
1375 static val* varonce41;
1376 val* var42 /* : String */;
1377 char* var43 /* : NativeString */;
1378 long var44 /* : Int */;
1379 val* var45 /* : String */;
1380 static val* varonce46;
1381 val* var47 /* : String */;
1382 char* var48 /* : NativeString */;
1383 long var49 /* : Int */;
1384 val* var50 /* : String */;
1385 static val* varonce51;
1386 val* var52 /* : String */;
1387 char* var53 /* : NativeString */;
1388 long var54 /* : Int */;
1389 val* var55 /* : String */;
1390 val* var56 /* : Array[Object] */;
1391 long var57 /* : Int */;
1392 val* var58 /* : NativeArray[Object] */;
1393 val* var59 /* : String */;
1394 val* var60 /* : null */;
1395 short int var61 /* : Bool */;
1396 int cltype62;
1397 int idtype63;
1398 short int var64 /* : Bool */;
1399 short int var65 /* : Bool */;
1400 val* var66 /* : MVisibility */;
1401 val* var67 /* : MVisibility */;
1402 short int var68 /* : Bool */;
1403 short int var_ /* var : Bool */;
1404 short int var69 /* : Bool */;
1405 short int var_70 /* var : Bool */;
1406 val* var71 /* : MModule */;
1407 val* var72 /* : MClassDef */;
1408 val* var73 /* : MModule */;
1409 val* var74 /* : MVisibility */;
1410 val* var75 /* : MVisibility */;
1411 short int var76 /* : Bool */;
1412 val* var77 /* : ModelBuilder */;
1413 static val* varonce78;
1414 val* var79 /* : String */;
1415 char* var80 /* : NativeString */;
1416 long var81 /* : Int */;
1417 val* var82 /* : String */;
1418 static val* varonce83;
1419 val* var84 /* : String */;
1420 char* var85 /* : NativeString */;
1421 long var86 /* : Int */;
1422 val* var87 /* : String */;
1423 val* var88 /* : MClassDef */;
1424 val* var89 /* : MModule */;
1425 val* var90 /* : MModule */;
1426 val* var91 /* : MVisibility */;
1427 val* var92 /* : Array[Object] */;
1428 long var93 /* : Int */;
1429 val* var94 /* : NativeArray[Object] */;
1430 val* var95 /* : String */;
1431 val* var96 /* : null */;
1432 val* var97 /* : MModule */;
1433 val* var98 /* : Array[MPropDef] */;
1434 val* var_propdefs /* var propdefs: Array[MMethodDef] */;
1435 long var99 /* : Int */;
1436 long var100 /* : Int */;
1437 short int var101 /* : Bool */;
1438 short int var103 /* : Bool */;
1439 val* var104 /* : ModelBuilder */;
1440 static val* varonce105;
1441 val* var106 /* : String */;
1442 char* var107 /* : NativeString */;
1443 long var108 /* : Int */;
1444 val* var109 /* : String */;
1445 static val* varonce110;
1446 val* var111 /* : String */;
1447 char* var112 /* : NativeString */;
1448 long var113 /* : Int */;
1449 val* var114 /* : String */;
1450 val* var115 /* : Array[Object] */;
1451 long var116 /* : Int */;
1452 val* var117 /* : NativeArray[Object] */;
1453 val* var118 /* : String */;
1454 val* var119 /* : null */;
1455 long var120 /* : Int */;
1456 long var121 /* : Int */;
1457 short int var122 /* : Bool */;
1458 short int var124 /* : Bool */;
1459 val* var125 /* : nullable Object */;
1460 val* var_mpropdef /* var mpropdef: nullable Object */;
1461 val* var126 /* : ModelBuilder */;
1462 static val* varonce127;
1463 val* var128 /* : String */;
1464 char* var129 /* : NativeString */;
1465 long var130 /* : Int */;
1466 val* var131 /* : String */;
1467 static val* varonce132;
1468 val* var133 /* : String */;
1469 char* var134 /* : NativeString */;
1470 long var135 /* : Int */;
1471 val* var136 /* : String */;
1472 static val* varonce137;
1473 val* var138 /* : String */;
1474 char* var139 /* : NativeString */;
1475 long var140 /* : Int */;
1476 val* var141 /* : String */;
1477 static val* varonce142;
1478 val* var143 /* : String */;
1479 char* var144 /* : NativeString */;
1480 long var145 /* : Int */;
1481 val* var146 /* : String */;
1482 val* var147 /* : String */;
1483 val* var148 /* : Array[Object] */;
1484 long var149 /* : Int */;
1485 val* var150 /* : NativeArray[Object] */;
1486 val* var151 /* : String */;
1487 val* var152 /* : MPropDef */;
1488 val* var153 /* : MSignature */;
1489 val* var_msignature /* var msignature: MSignature */;
1490 short int var154 /* : Bool */;
1491 short int var_erasure_cast /* var erasure_cast: Bool */;
1492 val* var155 /* : nullable MSignature */;
1493 val* var156 /* : nullable MType */;
1494 val* var_rettype /* var rettype: nullable MType */;
1495 short int var157 /* : Bool */;
1496 short int var158 /* : Bool */;
1497 short int var_159 /* var : Bool */;
1498 val* var160 /* : null */;
1499 short int var161 /* : Bool */;
1500 short int var162 /* : Bool */;
1501 int cltype163;
1502 int idtype164;
1503 val* var165 /* : MType */;
1504 short int var166 /* : Bool */;
1505 int cltype167;
1506 int idtype168;
1507 val* var169 /* : nullable MType */;
1508 val* var_erased_rettype /* var erased_rettype: nullable MType */;
1509 val* var170 /* : null */;
1510 short int var171 /* : Bool */;
1511 short int var172 /* : Bool */;
1512 val* var173 /* : CallSite */;
1513 val* var_callsite /* var callsite: CallSite */;
1514 var_node = p0;
1515 var_recvtype = p1;
1516 var_name = p2;
1517 var_recv_is_self = p3;
1518 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_recvtype) /* anchor_to on <self:TypeVisitor>*/;
1519 var_unsafe_type = var1;
1520 /* <var_recvtype:MType> isa MNullType */
1521 cltype = type_model__MNullType.color;
1522 idtype = type_model__MNullType.id;
1523 if(cltype >= var_recvtype->type->table_size) {
1524 var2 = 0;
1525 } else {
1526 var2 = var_recvtype->type->type_table[cltype] == idtype;
1527 }
1528 if (var2){
1529 if (varonce) {
1530 var3 = varonce;
1531 } else {
1532 var4 = "Error: Method \'";
1533 var5 = 15;
1534 var6 = string__NativeString__to_s_with_length(var4, var5);
1535 var3 = var6;
1536 varonce = var3;
1537 }
1538 if (varonce7) {
1539 var8 = varonce7;
1540 } else {
1541 var9 = "\' call on \'null\'.";
1542 var10 = 17;
1543 var11 = string__NativeString__to_s_with_length(var9, var10);
1544 var8 = var11;
1545 varonce7 = var8;
1546 }
1547 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
1548 { /* var12 = array_instance Array[Object] */
1549 var13 = 3;
1550 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
1551 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var3;
1552 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var_name;
1553 ((struct instance_array__NativeArray*)var14)->values[2] = (val*) var8;
1554 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
1555 }
1556 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
1557 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var15) /* error on <self:TypeVisitor>*/;
1558 var16 = NULL;
1559 var = var16;
1560 goto RET_LABEL;
1561 } else {
1562 }
1563 var17 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(self, var_node, var_unsafe_type, var_name) /* try_get_mproperty_by_name2 on <self:TypeVisitor>*/;
1564 var_mproperty = var17;
1565 var18 = NULL;
1566 if (var_mproperty == NULL) {
1567 var19 = 1; /* is null */
1568 } else {
1569 var19 = 0; /* arg is null but recv is not */
1570 }
1571 if (var19){
1572 if (var_recv_is_self){
1573 var20 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1574 if (varonce21) {
1575 var22 = varonce21;
1576 } else {
1577 var23 = "Error: Method or variable \'";
1578 var24 = 27;
1579 var25 = string__NativeString__to_s_with_length(var23, var24);
1580 var22 = var25;
1581 varonce21 = var22;
1582 }
1583 if (varonce26) {
1584 var27 = varonce26;
1585 } else {
1586 var28 = "\' unknown in ";
1587 var29 = 13;
1588 var30 = string__NativeString__to_s_with_length(var28, var29);
1589 var27 = var30;
1590 varonce26 = var27;
1591 }
1592 if (varonce31) {
1593 var32 = varonce31;
1594 } else {
1595 var33 = ".";
1596 var34 = 1;
1597 var35 = string__NativeString__to_s_with_length(var33, var34);
1598 var32 = var35;
1599 varonce31 = var32;
1600 }
1601 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
1602 { /* var36 = array_instance Array[Object] */
1603 var37 = 5;
1604 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
1605 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var22;
1606 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
1607 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var27;
1608 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var_recvtype;
1609 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var32;
1610 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
1611 }
1612 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
1613 ((void (*)(val*, val*, val*))(var20->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var20, var_node, var39) /* error on <var20:ModelBuilder>*/;
1614 } else {
1615 var40 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1616 if (varonce41) {
1617 var42 = varonce41;
1618 } else {
1619 var43 = "Error: Method \'";
1620 var44 = 15;
1621 var45 = string__NativeString__to_s_with_length(var43, var44);
1622 var42 = var45;
1623 varonce41 = var42;
1624 }
1625 if (varonce46) {
1626 var47 = varonce46;
1627 } else {
1628 var48 = "\' doesn\'t exists in ";
1629 var49 = 20;
1630 var50 = string__NativeString__to_s_with_length(var48, var49);
1631 var47 = var50;
1632 varonce46 = var47;
1633 }
1634 if (varonce51) {
1635 var52 = varonce51;
1636 } else {
1637 var53 = ".";
1638 var54 = 1;
1639 var55 = string__NativeString__to_s_with_length(var53, var54);
1640 var52 = var55;
1641 varonce51 = var52;
1642 }
1643 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
1644 { /* var56 = array_instance Array[Object] */
1645 var57 = 5;
1646 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
1647 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var42;
1648 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var_name;
1649 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var47;
1650 ((struct instance_array__NativeArray*)var58)->values[3] = (val*) var_recvtype;
1651 ((struct instance_array__NativeArray*)var58)->values[4] = (val*) var52;
1652 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
1653 }
1654 var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
1655 ((void (*)(val*, val*, val*))(var40->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var40, var_node, var59) /* error on <var40:ModelBuilder>*/;
1656 }
1657 var60 = NULL;
1658 var = var60;
1659 goto RET_LABEL;
1660 } else {
1661 }
1662 /* <var_mproperty:nullable MProperty(MProperty)> isa MMethod */
1663 cltype62 = type_model__MMethod.color;
1664 idtype63 = type_model__MMethod.id;
1665 if(cltype62 >= var_mproperty->type->table_size) {
1666 var61 = 0;
1667 } else {
1668 var61 = var_mproperty->type->type_table[cltype62] == idtype63;
1669 }
1670 if (!var61) {
1671 fprintf(stderr, "Runtime error: %s", "Assert failed");
1672 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 244);
1673 show_backtrace(1);
1674 }
1675 var66 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__visibility]))(var_mproperty) /* visibility on <var_mproperty:nullable MProperty(MMethod)>*/;
1676 var67 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:TypeVisitor>*/;
1677 var68 = ((short int (*)(val*, val*))(var66->class->vft[COLOR_kernel__Object___61d_61d]))(var66, var67) /* == on <var66:MVisibility>*/;
1678 var_ = var68;
1679 if (var68){
1680 var69 = !var_recv_is_self;
1681 var65 = var69;
1682 } else {
1683 var65 = var_;
1684 }
1685 var_70 = var65;
1686 if (var65){
1687 var71 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1688 var72 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1689 var73 = ((val* (*)(val*))(var72->class->vft[COLOR_model__MClassDef__mmodule]))(var72) /* mmodule on <var72:MClassDef>*/;
1690 var74 = ((val* (*)(val*, val*))(var71->class->vft[COLOR_mmodule__MModule__visibility_for]))(var71, var73) /* visibility_for on <var71:MModule>*/;
1691 var75 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:TypeVisitor>*/;
1692 var76 = ((short int (*)(val*, val*))(var74->class->vft[COLOR_kernel__Comparable___60d]))(var74, var75) /* < on <var74:MVisibility>*/;
1693 var64 = var76;
1694 } else {
1695 var64 = var_70;
1696 }
1697 if (var64){
1698 var77 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1699 if (varonce78) {
1700 var79 = varonce78;
1701 } else {
1702 var80 = "Error: Method \'";
1703 var81 = 15;
1704 var82 = string__NativeString__to_s_with_length(var80, var81);
1705 var79 = var82;
1706 varonce78 = var79;
1707 }
1708 if (varonce83) {
1709 var84 = varonce83;
1710 } else {
1711 var85 = "\' is protected and can only acceded by self. ";
1712 var86 = 45;
1713 var87 = string__NativeString__to_s_with_length(var85, var86);
1714 var84 = var87;
1715 varonce83 = var84;
1716 }
1717 var88 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1718 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MClassDef__mmodule]))(var88) /* mmodule on <var88:MClassDef>*/;
1719 var90 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1720 var91 = ((val* (*)(val*, val*))(var89->class->vft[COLOR_mmodule__MModule__visibility_for]))(var89, var90) /* visibility_for on <var89:MModule>*/;
1721 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
1722 { /* var92 = array_instance Array[Object] */
1723 var93 = 4;
1724 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
1725 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var79;
1726 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var_name;
1727 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var84;
1728 ((struct instance_array__NativeArray*)var94)->values[3] = (val*) var91;
1729 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
1730 }
1731 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
1732 ((void (*)(val*, val*, val*))(var77->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var77, var_node, var95) /* error on <var77:ModelBuilder>*/;
1733 var96 = NULL;
1734 var = var96;
1735 goto RET_LABEL;
1736 } else {
1737 }
1738 var97 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1739 var98 = ((val* (*)(val*, val*, val*))(var_mproperty->class->vft[COLOR_model__MProperty__lookup_definitions]))(var_mproperty, var97, var_unsafe_type) /* lookup_definitions on <var_mproperty:nullable MProperty(MMethod)>*/;
1740 var_propdefs = var98;
1741 var99 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1742 var100 = 0;
1743 { /* Inline kernel#Int#== (var99,var100) */
1744 var103 = var99 == var100;
1745 var101 = var103;
1746 goto RET_LABEL102;
1747 RET_LABEL102:(void)0;
1748 }
1749 if (var101){
1750 var104 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1751 if (varonce105) {
1752 var106 = varonce105;
1753 } else {
1754 var107 = "Type error: no definition found for property ";
1755 var108 = 45;
1756 var109 = string__NativeString__to_s_with_length(var107, var108);
1757 var106 = var109;
1758 varonce105 = var106;
1759 }
1760 if (varonce110) {
1761 var111 = varonce110;
1762 } else {
1763 var112 = " in ";
1764 var113 = 4;
1765 var114 = string__NativeString__to_s_with_length(var112, var113);
1766 var111 = var114;
1767 varonce110 = var111;
1768 }
1769 var115 = NEW_array__Array(&type_array__Arraykernel__Object);
1770 { /* var115 = array_instance Array[Object] */
1771 var116 = 4;
1772 var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
1773 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var106;
1774 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_name;
1775 ((struct instance_array__NativeArray*)var117)->values[2] = (val*) var111;
1776 ((struct instance_array__NativeArray*)var117)->values[3] = (val*) var_unsafe_type;
1777 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
1778 }
1779 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
1780 ((void (*)(val*, val*, val*))(var104->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var104, var_node, var118) /* error on <var104:ModelBuilder>*/;
1781 var119 = NULL;
1782 var = var119;
1783 goto RET_LABEL;
1784 } else {
1785 var120 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1786 var121 = 1;
1787 { /* Inline kernel#Int#== (var120,var121) */
1788 var124 = var120 == var121;
1789 var122 = var124;
1790 goto RET_LABEL123;
1791 RET_LABEL123:(void)0;
1792 }
1793 if (var122){
1794 var125 = ((val* (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_propdefs) /* first on <var_propdefs:Array[MMethodDef]>*/;
1795 var_mpropdef = var125;
1796 } else {
1797 var126 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1798 if (varonce127) {
1799 var128 = varonce127;
1800 } else {
1801 var129 = "Warning: confliting property definitions for property ";
1802 var130 = 54;
1803 var131 = string__NativeString__to_s_with_length(var129, var130);
1804 var128 = var131;
1805 varonce127 = var128;
1806 }
1807 if (varonce132) {
1808 var133 = varonce132;
1809 } else {
1810 var134 = " in ";
1811 var135 = 4;
1812 var136 = string__NativeString__to_s_with_length(var134, var135);
1813 var133 = var136;
1814 varonce132 = var133;
1815 }
1816 if (varonce137) {
1817 var138 = varonce137;
1818 } else {
1819 var139 = ": ";
1820 var140 = 2;
1821 var141 = string__NativeString__to_s_with_length(var139, var140);
1822 var138 = var141;
1823 varonce137 = var138;
1824 }
1825 if (varonce142) {
1826 var143 = varonce142;
1827 } else {
1828 var144 = " ";
1829 var145 = 1;
1830 var146 = string__NativeString__to_s_with_length(var144, var145);
1831 var143 = var146;
1832 varonce142 = var143;
1833 }
1834 var147 = ((val* (*)(val*, val*))(var_propdefs->class->vft[COLOR_string__Collection__join]))(var_propdefs, var143) /* join on <var_propdefs:Array[MMethodDef]>*/;
1835 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
1836 { /* var148 = array_instance Array[Object] */
1837 var149 = 6;
1838 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
1839 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var128;
1840 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_name;
1841 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
1842 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_unsafe_type;
1843 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
1844 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var147;
1845 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
1846 }
1847 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
1848 ((void (*)(val*, val*, val*))(var126->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var126, var_node, var151) /* warning on <var126:ModelBuilder>*/;
1849 var152 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro]))(var_mproperty) /* intro on <var_mproperty:nullable MProperty(MMethod)>*/;
1850 var_mpropdef = var152;
1851 }
1852 }
1853 var153 = ((val* (*)(val*, val*, val*, short int))(self->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(self, var_mpropdef, var_recvtype, var_recv_is_self) /* resolve_signature_for on <self:TypeVisitor>*/;
1854 var_msignature = var153;
1855 var154 = 0;
1856 var_erasure_cast = var154;
1857 var155 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:nullable Object(MMethodDef)>*/;
1858 if (var155 == NULL) {
1859 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1860 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 266);
1861 show_backtrace(1);
1862 } else {
1863 var156 = ((val* (*)(val*))(var155->class->vft[COLOR_model__MSignature__return_mtype]))(var155) /* return_mtype on <var155:nullable MSignature>*/;
1864 }
1865 var_rettype = var156;
1866 var158 = !var_recv_is_self;
1867 var_159 = var158;
1868 if (var158){
1869 var160 = NULL;
1870 if (var_rettype == NULL) {
1871 var161 = 0; /* is null */
1872 } else {
1873 var161 = 1; /* arg is null and recv is not */
1874 }
1875 var157 = var161;
1876 } else {
1877 var157 = var_159;
1878 }
1879 if (var157){
1880 /* <var_rettype:nullable MType(MType)> isa MNullableType */
1881 cltype163 = type_model__MNullableType.color;
1882 idtype164 = type_model__MNullableType.id;
1883 if(cltype163 >= var_rettype->type->table_size) {
1884 var162 = 0;
1885 } else {
1886 var162 = var_rettype->type->type_table[cltype163] == idtype164;
1887 }
1888 if (var162){
1889 var165 = ((val* (*)(val*))(var_rettype->class->vft[COLOR_model__MNullableType__mtype]))(var_rettype) /* mtype on <var_rettype:nullable MType(MNullableType)>*/;
1890 var_rettype = var165;
1891 } else {
1892 }
1893 /* <var_rettype:nullable MType(MType)> isa MParameterType */
1894 cltype167 = type_model__MParameterType.color;
1895 idtype168 = type_model__MParameterType.id;
1896 if(cltype167 >= var_rettype->type->table_size) {
1897 var166 = 0;
1898 } else {
1899 var166 = var_rettype->type->type_table[cltype167] == idtype168;
1900 }
1901 if (var166){
1902 var169 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1903 var_erased_rettype = var169;
1904 var170 = NULL;
1905 if (var_erased_rettype == NULL) {
1906 var171 = 0; /* is null */
1907 } else {
1908 var171 = 1; /* arg is null and recv is not */
1909 }
1910 if (!var171) {
1911 fprintf(stderr, "Runtime error: %s", "Assert failed");
1912 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 271);
1913 show_backtrace(1);
1914 }
1915 var172 = 1;
1916 var_erasure_cast = var172;
1917 } else {
1918 }
1919 } else {
1920 }
1921 var173 = NEW_typing__CallSite(&type_typing__CallSite);
1922 ((void (*)(val*, val*, val*, short int, val*, val*, val*, short int))(var173->class->vft[COLOR_typing__CallSite__init]))(var173, var_node, var_recvtype, var_recv_is_self, var_mproperty, var_mpropdef, var_msignature, var_erasure_cast) /* init on <var173:CallSite>*/;
1923 var_callsite = var173;
1924 var = var_callsite;
1925 goto RET_LABEL;
1926 RET_LABEL:;
1927 return var;
1928 }
1929 /* method typing#TypeVisitor#get_method for (self: Object, ANode, MType, String, Bool): nullable CallSite */
1930 val* VIRTUAL_typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1931 val* var /* : nullable CallSite */;
1932 val* var1 /* : nullable CallSite */;
1933 var1 = typing__TypeVisitor__get_method(self, p0, p1, p2, p3);
1934 var = var1;
1935 RET_LABEL:;
1936 return var;
1937 }
1938 /* method typing#TypeVisitor#check_signature for (self: TypeVisitor, ANode, Array[AExpr], String, MSignature): Bool */
1939 short int typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
1940 short int var /* : Bool */;
1941 val* var_node /* var node: ANode */;
1942 val* var_args /* var args: Array[AExpr] */;
1943 val* var_name /* var name: String */;
1944 val* var_msignature /* var msignature: MSignature */;
1945 long var1 /* : Int */;
1946 long var_vararg_rank /* var vararg_rank: Int */;
1947 long var2 /* : Int */;
1948 short int var3 /* : Bool */;
1949 short int var5 /* : Bool */;
1950 int cltype;
1951 int idtype;
1952 const char* var_class_name;
1953 short int var6 /* : Bool */;
1954 long var7 /* : Int */;
1955 long var8 /* : Int */;
1956 short int var9 /* : Bool */;
1957 short int var11 /* : Bool */;
1958 int cltype12;
1959 int idtype13;
1960 const char* var_class_name14;
1961 short int var15 /* : Bool */;
1962 val* var16 /* : ModelBuilder */;
1963 static val* varonce;
1964 val* var17 /* : String */;
1965 char* var18 /* : NativeString */;
1966 long var19 /* : Int */;
1967 val* var20 /* : String */;
1968 static val* varonce21;
1969 val* var22 /* : String */;
1970 char* var23 /* : NativeString */;
1971 long var24 /* : Int */;
1972 val* var25 /* : String */;
1973 val* var26 /* : Array[Object] */;
1974 long var27 /* : Int */;
1975 val* var28 /* : NativeArray[Object] */;
1976 val* var29 /* : String */;
1977 short int var30 /* : Bool */;
1978 long var31 /* : Int */;
1979 long var32 /* : Int */;
1980 short int var33 /* : Bool */;
1981 short int var35 /* : Bool */;
1982 short int var36 /* : Bool */;
1983 val* var37 /* : ModelBuilder */;
1984 static val* varonce38;
1985 val* var39 /* : String */;
1986 char* var40 /* : NativeString */;
1987 long var41 /* : Int */;
1988 val* var42 /* : String */;
1989 long var43 /* : Int */;
1990 static val* varonce44;
1991 val* var45 /* : String */;
1992 char* var46 /* : NativeString */;
1993 long var47 /* : Int */;
1994 val* var48 /* : String */;
1995 long var49 /* : Int */;
1996 static val* varonce50;
1997 val* var51 /* : String */;
1998 char* var52 /* : NativeString */;
1999 long var53 /* : Int */;
2000 val* var54 /* : String */;
2001 val* var55 /* : Array[Object] */;
2002 long var56 /* : Int */;
2003 val* var57 /* : NativeArray[Object] */;
2004 val* var58 /* : Object */;
2005 val* var59 /* : Object */;
2006 val* var60 /* : String */;
2007 short int var61 /* : Bool */;
2008 long var62 /* : Int */;
2009 long var63 /* : Int */;
2010 long var64 /* : Int */;
2011 long var66 /* : Int */;
2012 long var_vararg_decl /* var vararg_decl: Int */;
2013 val* var67 /* : Range[Int] */;
2014 long var68 /* : Int */;
2015 long var69 /* : Int */;
2016 val* var70 /* : Discrete */;
2017 val* var71 /* : Discrete */;
2018 val* var72 /* : Iterator[nullable Object] */;
2019 short int var73 /* : Bool */;
2020 val* var74 /* : nullable Object */;
2021 long var_i /* var i: Int */;
2022 long var75 /* : Int */;
2023 long var_j /* var j: Int */;
2024 short int var76 /* : Bool */;
2025 short int var78 /* : Bool */;
2026 short int var79 /* : Bool */;
2027 short int var81 /* : Bool */;
2028 int cltype82;
2029 int idtype83;
2030 const char* var_class_name84;
2031 short int var85 /* : Bool */;
2032 long var86 /* : Int */;
2033 long var88 /* : Int */;
2034 val* var89 /* : Array[MParameter] */;
2035 val* var90 /* : nullable Object */;
2036 val* var91 /* : MType */;
2037 val* var_paramtype /* var paramtype: MType */;
2038 val* var92 /* : nullable Object */;
2039 val* var93 /* : nullable MType */;
2040 long var94 /* : Int */;
2041 short int var95 /* : Bool */;
2042 short int var97 /* : Bool */;
2043 int cltype98;
2044 int idtype99;
2045 const char* var_class_name100;
2046 short int var101 /* : Bool */;
2047 val* var102 /* : Array[AExpr] */;
2048 val* var_varargs /* var varargs: Array[AExpr] */;
2049 val* var103 /* : Array[MParameter] */;
2050 val* var104 /* : nullable Object */;
2051 val* var105 /* : MType */;
2052 val* var_paramtype106 /* var paramtype: MType */;
2053 val* var107 /* : Range[Int] */;
2054 long var108 /* : Int */;
2055 long var110 /* : Int */;
2056 val* var111 /* : Discrete */;
2057 val* var112 /* : Discrete */;
2058 val* var113 /* : Iterator[nullable Object] */;
2059 short int var114 /* : Bool */;
2060 val* var115 /* : nullable Object */;
2061 long var_j116 /* var j: Int */;
2062 long var117 /* : Int */;
2063 val* var118 /* : nullable Object */;
2064 val* var119 /* : nullable Object */;
2065 val* var120 /* : nullable MType */;
2066 short int var122 /* : Bool */;
2067 var_node = p0;
2068 var_args = p1;
2069 var_name = p2;
2070 var_msignature = p3;
2071 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
2072 var_vararg_rank = var1;
2073 var2 = 0;
2074 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
2075 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2076 /* <var2:Int> isa OTHER */
2077 var5 = 1; /* easy <var2:Int> isa OTHER*/
2078 if (!var5) {
2079 var_class_name = type_kernel__Int.name;
2080 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2081 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2082 show_backtrace(1);
2083 }
2084 var6 = var_vararg_rank >= var2;
2085 var3 = var6;
2086 goto RET_LABEL4;
2087 RET_LABEL4:(void)0;
2088 }
2089 if (var3){
2090 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2091 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2092 { /* Inline kernel#Int#< (var7,var8) */
2093 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
2094 /* <var8:Int> isa OTHER */
2095 var11 = 1; /* easy <var8:Int> isa OTHER*/
2096 if (!var11) {
2097 var_class_name14 = type_kernel__Int.name;
2098 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
2099 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
2100 show_backtrace(1);
2101 }
2102 var15 = var7 < var8;
2103 var9 = var15;
2104 goto RET_LABEL10;
2105 RET_LABEL10:(void)0;
2106 }
2107 if (var9){
2108 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2109 if (varonce) {
2110 var17 = varonce;
2111 } else {
2112 var18 = "Error: arity mismatch; prototype is \'";
2113 var19 = 37;
2114 var20 = string__NativeString__to_s_with_length(var18, var19);
2115 var17 = var20;
2116 varonce = var17;
2117 }
2118 if (varonce21) {
2119 var22 = varonce21;
2120 } else {
2121 var23 = "\'";
2122 var24 = 1;
2123 var25 = string__NativeString__to_s_with_length(var23, var24);
2124 var22 = var25;
2125 varonce21 = var22;
2126 }
2127 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
2128 { /* var26 = array_instance Array[Object] */
2129 var27 = 4;
2130 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
2131 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
2132 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_name;
2133 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var_msignature;
2134 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var22;
2135 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
2136 }
2137 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
2138 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var16, var_node, var29) /* error on <var16:ModelBuilder>*/;
2139 var30 = 0;
2140 var = var30;
2141 goto RET_LABEL;
2142 } else {
2143 }
2144 } else {
2145 var31 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2146 var32 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2147 { /* Inline kernel#Int#!= (var31,var32) */
2148 var35 = var31 == var32;
2149 var36 = !var35;
2150 var33 = var36;
2151 goto RET_LABEL34;
2152 RET_LABEL34:(void)0;
2153 }
2154 if (var33){
2155 var37 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2156 if (varonce38) {
2157 var39 = varonce38;
2158 } else {
2159 var40 = "Error: Incorrect number of parameters. Got ";
2160 var41 = 43;
2161 var42 = string__NativeString__to_s_with_length(var40, var41);
2162 var39 = var42;
2163 varonce38 = var39;
2164 }
2165 var43 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2166 if (varonce44) {
2167 var45 = varonce44;
2168 } else {
2169 var46 = ", expected ";
2170 var47 = 11;
2171 var48 = string__NativeString__to_s_with_length(var46, var47);
2172 var45 = var48;
2173 varonce44 = var45;
2174 }
2175 var49 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2176 if (varonce50) {
2177 var51 = varonce50;
2178 } else {
2179 var52 = ". Signature is ";
2180 var53 = 15;
2181 var54 = string__NativeString__to_s_with_length(var52, var53);
2182 var51 = var54;
2183 varonce50 = var51;
2184 }
2185 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
2186 { /* var55 = array_instance Array[Object] */
2187 var56 = 6;
2188 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
2189 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var39;
2190 var58 = BOX_kernel__Int(var43); /* autobox from Int to Object */
2191 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var58;
2192 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var45;
2193 var59 = BOX_kernel__Int(var49); /* autobox from Int to Object */
2194 ((struct instance_array__NativeArray*)var57)->values[3] = (val*) var59;
2195 ((struct instance_array__NativeArray*)var57)->values[4] = (val*) var51;
2196 ((struct instance_array__NativeArray*)var57)->values[5] = (val*) var_msignature;
2197 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
2198 }
2199 var60 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
2200 ((void (*)(val*, val*, val*))(var37->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var37, var_node, var60) /* error on <var37:ModelBuilder>*/;
2201 var61 = 0;
2202 var = var61;
2203 goto RET_LABEL;
2204 } else {
2205 }
2206 }
2207 var62 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2208 var63 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2209 { /* Inline kernel#Int#- (var62,var63) */
2210 var66 = var62 - var63;
2211 var64 = var66;
2212 goto RET_LABEL65;
2213 RET_LABEL65:(void)0;
2214 }
2215 var_vararg_decl = var64;
2216 var67 = NEW_range__Range(&type_range__Rangekernel__Int);
2217 var68 = 0;
2218 var69 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2219 var70 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
2220 var71 = BOX_kernel__Int(var69); /* autobox from Int to Discrete */
2221 ((void (*)(val*, val*, val*))(var67->class->vft[COLOR_range__Range__without_last]))(var67, var70, var71) /* without_last on <var67:Range[Int]>*/;
2222 var72 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Collection__iterator]))(var67) /* iterator on <var67:Range[Int]>*/;
2223 for(;;) {
2224 var73 = ((short int (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var72) /* is_ok on <var72:Iterator[nullable Object]>*/;
2225 if(!var73) break;
2226 var74 = ((val* (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__item]))(var72) /* item on <var72:Iterator[nullable Object]>*/;
2227 var75 = ((struct instance_kernel__Int*)var74)->value; /* autounbox from nullable Object to Int */;
2228 var_i = var75;
2229 var_j = var_i;
2230 { /* Inline kernel#Int#== (var_i,var_vararg_rank) */
2231 var78 = var_i == var_vararg_rank;
2232 var76 = var78;
2233 goto RET_LABEL77;
2234 RET_LABEL77:(void)0;
2235 }
2236 if (var76){
2237 goto CONTINUE_label;
2238 } else {
2239 }
2240 { /* Inline kernel#Int#> (var_i,var_vararg_rank) */
2241 /* Covariant cast for argument 0 (i) <var_vararg_rank:Int> isa OTHER */
2242 /* <var_vararg_rank:Int> isa OTHER */
2243 var81 = 1; /* easy <var_vararg_rank:Int> isa OTHER*/
2244 if (!var81) {
2245 var_class_name84 = type_kernel__Int.name;
2246 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
2247 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
2248 show_backtrace(1);
2249 }
2250 var85 = var_i > var_vararg_rank;
2251 var79 = var85;
2252 goto RET_LABEL80;
2253 RET_LABEL80:(void)0;
2254 }
2255 if (var79){
2256 { /* Inline kernel#Int#+ (var_i,var_vararg_decl) */
2257 var88 = var_i + var_vararg_decl;
2258 var86 = var88;
2259 goto RET_LABEL87;
2260 RET_LABEL87:(void)0;
2261 }
2262 var_j = var86;
2263 } else {
2264 }
2265 var89 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2266 var90 = ((val* (*)(val*, long))(var89->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var89, var_i) /* [] on <var89:Array[MParameter]>*/;
2267 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_model__MParameter__mtype]))(var90) /* mtype on <var90:nullable Object(MParameter)>*/;
2268 var_paramtype = var91;
2269 var92 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j) /* [] on <var_args:Array[AExpr]>*/;
2270 var93 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var92, var_paramtype) /* visit_expr_subtype on <self:TypeVisitor>*/;
2271 var93;
2272 CONTINUE_label: (void)0;
2273 ((void (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__next]))(var72) /* next on <var72:Iterator[nullable Object]>*/;
2274 }
2275 BREAK_label: (void)0;
2276 var94 = 0;
2277 { /* Inline kernel#Int#>= (var_vararg_rank,var94) */
2278 /* Covariant cast for argument 0 (i) <var94:Int> isa OTHER */
2279 /* <var94:Int> isa OTHER */
2280 var97 = 1; /* easy <var94:Int> isa OTHER*/
2281 if (!var97) {
2282 var_class_name100 = type_kernel__Int.name;
2283 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name100);
2284 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2285 show_backtrace(1);
2286 }
2287 var101 = var_vararg_rank >= var94;
2288 var95 = var101;
2289 goto RET_LABEL96;
2290 RET_LABEL96:(void)0;
2291 }
2292 if (var95){
2293 var102 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
2294 ((void (*)(val*))(var102->class->vft[COLOR_array__Array__init]))(var102) /* init on <var102:Array[AExpr]>*/;
2295 var_varargs = var102;
2296 var103 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2297 var104 = ((val* (*)(val*, long))(var103->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var103, var_vararg_rank) /* [] on <var103:Array[MParameter]>*/;
2298 var105 = ((val* (*)(val*))(var104->class->vft[COLOR_model__MParameter__mtype]))(var104) /* mtype on <var104:nullable Object(MParameter)>*/;
2299 var_paramtype106 = var105;
2300 var107 = NEW_range__Range(&type_range__Rangekernel__Int);
2301 { /* Inline kernel#Int#+ (var_vararg_rank,var_vararg_decl) */
2302 var110 = var_vararg_rank + var_vararg_decl;
2303 var108 = var110;
2304 goto RET_LABEL109;
2305 RET_LABEL109:(void)0;
2306 }
2307 var111 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
2308 var112 = BOX_kernel__Int(var108); /* autobox from Int to Discrete */
2309 ((void (*)(val*, val*, val*))(var107->class->vft[COLOR_range__Range__init]))(var107, var111, var112) /* init on <var107:Range[Int]>*/;
2310 var113 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Collection__iterator]))(var107) /* iterator on <var107:Range[Int]>*/;
2311 for(;;) {
2312 var114 = ((short int (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var113) /* is_ok on <var113:Iterator[nullable Object]>*/;
2313 if(!var114) break;
2314 var115 = ((val* (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__item]))(var113) /* item on <var113:Iterator[nullable Object]>*/;
2315 var117 = ((struct instance_kernel__Int*)var115)->value; /* autounbox from nullable Object to Int */;
2316 var_j116 = var117;
2317 var118 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j116) /* [] on <var_args:Array[AExpr]>*/;
2318 ((void (*)(val*, val*))(var_varargs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_varargs, var118) /* add on <var_varargs:Array[AExpr]>*/;
2319 var119 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j116) /* [] on <var_args:Array[AExpr]>*/;
2320 var120 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var119, var_paramtype106) /* visit_expr_subtype on <self:TypeVisitor>*/;
2321 var120;
2322 CONTINUE_label121: (void)0;
2323 ((void (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__next]))(var113) /* next on <var113:Iterator[nullable Object]>*/;
2324 }
2325 BREAK_label121: (void)0;
2326 } else {
2327 }
2328 var122 = 1;
2329 var = var122;
2330 goto RET_LABEL;
2331 RET_LABEL:;
2332 return var;
2333 }
2334 /* method typing#TypeVisitor#check_signature for (self: Object, ANode, Array[AExpr], String, MSignature): Bool */
2335 short int VIRTUAL_typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
2336 short int var /* : Bool */;
2337 short int var1 /* : Bool */;
2338 var1 = typing__TypeVisitor__check_signature(self, p0, p1, p2, p3);
2339 var = var1;
2340 RET_LABEL:;
2341 return var;
2342 }
2343 /* method typing#TypeVisitor#error for (self: TypeVisitor, ANode, String) */
2344 void typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2345 val* var_node /* var node: ANode */;
2346 val* var_message /* var message: String */;
2347 val* var /* : ModelBuilder */;
2348 val* var1 /* : ToolContext */;
2349 val* var2 /* : Location */;
2350 var_node = p0;
2351 var_message = p1;
2352 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2353 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
2354 var2 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
2355 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_toolcontext__ToolContext__error]))(var1, var2, var_message) /* error on <var1:ToolContext>*/;
2356 RET_LABEL:;
2357 }
2358 /* method typing#TypeVisitor#error for (self: Object, ANode, String) */
2359 void VIRTUAL_typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2360 typing__TypeVisitor__error(self, p0, p1);
2361 RET_LABEL:;
2362 }
2363 /* method typing#TypeVisitor#get_variable for (self: TypeVisitor, AExpr, Variable): nullable MType */
2364 val* typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2365 val* var /* : nullable MType */;
2366 val* var_node /* var node: AExpr */;
2367 val* var_variable /* var variable: Variable */;
2368 val* var1 /* : nullable FlowContext */;
2369 val* var_flow /* var flow: nullable FlowContext */;
2370 val* var2 /* : null */;
2371 short int var3 /* : Bool */;
2372 static val* varonce;
2373 val* var4 /* : String */;
2374 char* var5 /* : NativeString */;
2375 long var6 /* : Int */;
2376 val* var7 /* : String */;
2377 val* var8 /* : null */;
2378 val* var9 /* : HashMap[Variable, nullable MType] */;
2379 short int var10 /* : Bool */;
2380 val* var11 /* : HashMap[Variable, nullable MType] */;
2381 val* var12 /* : nullable Object */;
2382 val* var13 /* : nullable Array[nullable MType] */;
2383 val* var_mtypes /* var mtypes: nullable Array[nullable MType] */;
2384 short int var14 /* : Bool */;
2385 val* var15 /* : null */;
2386 short int var16 /* : Bool */;
2387 short int var_ /* var : Bool */;
2388 long var17 /* : Int */;
2389 long var18 /* : Int */;
2390 short int var19 /* : Bool */;
2391 short int var21 /* : Bool */;
2392 val* var22 /* : nullable MType */;
2393 long var23 /* : Int */;
2394 long var24 /* : Int */;
2395 short int var25 /* : Bool */;
2396 short int var27 /* : Bool */;
2397 val* var28 /* : nullable Object */;
2398 val* var29 /* : nullable MType */;
2399 val* var_res /* var res: nullable MType */;
2400 val* var30 /* : null */;
2401 short int var31 /* : Bool */;
2402 val* var32 /* : nullable MType */;
2403 var_node = p0;
2404 var_variable = p1;
2405 var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2406 var_flow = var1;
2407 var2 = NULL;
2408 if (var_flow == NULL) {
2409 var3 = 1; /* is null */
2410 } else {
2411 var3 = 0; /* arg is null but recv is not */
2412 }
2413 if (var3){
2414 if (varonce) {
2415 var4 = varonce;
2416 } else {
2417 var5 = "No context!";
2418 var6 = 11;
2419 var7 = string__NativeString__to_s_with_length(var5, var6);
2420 var4 = var7;
2421 varonce = var4;
2422 }
2423 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var4) /* error on <self:TypeVisitor>*/;
2424 var8 = NULL;
2425 var = var8;
2426 goto RET_LABEL;
2427 } else {
2428 }
2429 var9 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2430 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var9, var_variable) /* has_key on <var9:HashMap[Variable, nullable MType]>*/;
2431 if (var10){
2432 var11 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2433 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_variable) /* [] on <var11:HashMap[Variable, nullable MType]>*/;
2434 var = var12;
2435 goto RET_LABEL;
2436 } else {
2437 var13 = ((val* (*)(val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__collect_types]))(var_flow, var_variable) /* collect_types on <var_flow:nullable FlowContext(FlowContext)>*/;
2438 var_mtypes = var13;
2439 var15 = NULL;
2440 if (var_mtypes == NULL) {
2441 var16 = 1; /* is null */
2442 } else {
2443 var16 = 0; /* arg is null but recv is not */
2444 }
2445 var_ = var16;
2446 if (var16){
2447 var14 = var_;
2448 } else {
2449 var17 = ((long (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__length]))(var_mtypes) /* length on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])>*/;
2450 var18 = 0;
2451 { /* Inline kernel#Int#== (var17,var18) */
2452 var21 = var17 == var18;
2453 var19 = var21;
2454 goto RET_LABEL20;
2455 RET_LABEL20:(void)0;
2456 }
2457 var14 = var19;
2458 }
2459 if (var14){
2460 var22 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2461 var = var22;
2462 goto RET_LABEL;
2463 } else {
2464 var23 = ((long (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__length]))(var_mtypes) /* length on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])>*/;
2465 var24 = 1;
2466 { /* Inline kernel#Int#== (var23,var24) */
2467 var27 = var23 == var24;
2468 var25 = var27;
2469 goto RET_LABEL26;
2470 RET_LABEL26:(void)0;
2471 }
2472 if (var25){
2473 var28 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__first]))(var_mtypes) /* first on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])>*/;
2474 var = var28;
2475 goto RET_LABEL;
2476 } else {
2477 var29 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__merge_types]))(self, var_node, var_mtypes) /* merge_types on <self:TypeVisitor>*/;
2478 var_res = var29;
2479 var30 = NULL;
2480 if (var_res == NULL) {
2481 var31 = 1; /* is null */
2482 } else {
2483 var31 = 0; /* arg is null but recv is not */
2484 }
2485 if (var31){
2486 var32 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2487 var_res = var32;
2488 } else {
2489 }
2490 var = var_res;
2491 goto RET_LABEL;
2492 }
2493 }
2494 }
2495 RET_LABEL:;
2496 return var;
2497 }
2498 /* method typing#TypeVisitor#get_variable for (self: Object, AExpr, Variable): nullable MType */
2499 val* VIRTUAL_typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2500 val* var /* : nullable MType */;
2501 val* var1 /* : nullable MType */;
2502 var1 = typing__TypeVisitor__get_variable(self, p0, p1);
2503 var = var1;
2504 RET_LABEL:;
2505 return var;
2506 }
2507 /* method typing#TypeVisitor#set_variable for (self: TypeVisitor, AExpr, Variable, nullable MType) */
2508 void typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2509 val* var_node /* var node: AExpr */;
2510 val* var_variable /* var variable: Variable */;
2511 val* var_mtype /* var mtype: nullable MType */;
2512 val* var /* : nullable FlowContext */;
2513 val* var_flow /* var flow: nullable FlowContext */;
2514 val* var1 /* : null */;
2515 short int var2 /* : Bool */;
2516 var_node = p0;
2517 var_variable = p1;
2518 var_mtype = p2;
2519 var = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2520 var_flow = var;
2521 var1 = NULL;
2522 if (var_flow == NULL) {
2523 var2 = 0; /* is null */
2524 } else {
2525 var2 = 1; /* arg is null and recv is not */
2526 }
2527 if (!var2) {
2528 fprintf(stderr, "Runtime error: %s", "Assert failed");
2529 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 355);
2530 show_backtrace(1);
2531 }
2532 ((void (*)(val*, val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__set_var]))(var_flow, var_variable, var_mtype) /* set_var on <var_flow:nullable FlowContext(FlowContext)>*/;
2533 RET_LABEL:;
2534 }
2535 /* method typing#TypeVisitor#set_variable for (self: Object, AExpr, Variable, nullable MType) */
2536 void VIRTUAL_typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2537 typing__TypeVisitor__set_variable(self, p0, p1, p2);
2538 RET_LABEL:;
2539 }
2540 /* method typing#TypeVisitor#merge_types for (self: TypeVisitor, ANode, Array[nullable MType]): nullable MType */
2541 val* typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2542 val* var /* : nullable MType */;
2543 val* var_node /* var node: ANode */;
2544 val* var_col /* var col: Array[nullable MType] */;
2545 long var1 /* : Int */;
2546 long var2 /* : Int */;
2547 short int var3 /* : Bool */;
2548 short int var5 /* : Bool */;
2549 val* var6 /* : nullable Object */;
2550 val* var7 /* : Array[nullable MType] */;
2551 val* var_res /* var res: Array[nullable MType] */;
2552 val* var8 /* : Iterator[nullable Object] */;
2553 short int var9 /* : Bool */;
2554 val* var10 /* : nullable Object */;
2555 val* var_t1 /* var t1: nullable MType */;
2556 val* var11 /* : null */;
2557 short int var12 /* : Bool */;
2558 short int var13 /* : Bool */;
2559 short int var_found /* var found: Bool */;
2560 val* var14 /* : Iterator[nullable Object] */;
2561 short int var15 /* : Bool */;
2562 val* var16 /* : nullable Object */;
2563 val* var_t2 /* var t2: nullable MType */;
2564 val* var17 /* : null */;
2565 short int var18 /* : Bool */;
2566 short int var20 /* : Bool */;
2567 short int var21 /* : Bool */;
2568 int cltype;
2569 int idtype;
2570 short int var_ /* var : Bool */;
2571 short int var22 /* : Bool */;
2572 int cltype23;
2573 int idtype24;
2574 val* var25 /* : MType */;
2575 short int var26 /* : Bool */;
2576 short int var27 /* : Bool */;
2577 short int var28 /* : Bool */;
2578 val* var29 /* : null */;
2579 var_node = p0;
2580 var_col = p1;
2581 var1 = ((long (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__length]))(var_col) /* length on <var_col:Array[nullable MType]>*/;
2582 var2 = 1;
2583 { /* Inline kernel#Int#== (var1,var2) */
2584 var5 = var1 == var2;
2585 var3 = var5;
2586 goto RET_LABEL4;
2587 RET_LABEL4:(void)0;
2588 }
2589 if (var3){
2590 var6 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__first]))(var_col) /* first on <var_col:Array[nullable MType]>*/;
2591 var = var6;
2592 goto RET_LABEL;
2593 } else {
2594 }
2595 var7 = NEW_array__Array(&type_array__Arraynullable_model__MType);
2596 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[nullable MType]>*/;
2597 var_res = var7;
2598 var8 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2599 for(;;) {
2600 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
2601 if(!var9) break;
2602 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
2603 var_t1 = var10;
2604 var11 = NULL;
2605 if (var_t1 == NULL) {
2606 var12 = 1; /* is null */
2607 } else {
2608 var12 = 0; /* arg is null but recv is not */
2609 }
2610 if (var12){
2611 goto CONTINUE_label;
2612 } else {
2613 }
2614 var13 = 1;
2615 var_found = var13;
2616 var14 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2617 for(;;) {
2618 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
2619 if(!var15) break;
2620 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
2621 var_t2 = var16;
2622 var17 = NULL;
2623 if (var_t2 == NULL) {
2624 var18 = 1; /* is null */
2625 } else {
2626 var18 = 0; /* arg is null but recv is not */
2627 }
2628 if (var18){
2629 goto CONTINUE_label19;
2630 } else {
2631 }
2632 /* <var_t2:nullable MType(MType)> isa MNullableType */
2633 cltype = type_model__MNullableType.color;
2634 idtype = type_model__MNullableType.id;
2635 if(cltype >= var_t2->type->table_size) {
2636 var21 = 0;
2637 } else {
2638 var21 = var_t2->type->type_table[cltype] == idtype;
2639 }
2640 var_ = var21;
2641 if (var21){
2642 var20 = var_;
2643 } else {
2644 /* <var_t2:nullable MType(MType)> isa MNullType */
2645 cltype23 = type_model__MNullType.color;
2646 idtype24 = type_model__MNullType.id;
2647 if(cltype23 >= var_t2->type->table_size) {
2648 var22 = 0;
2649 } else {
2650 var22 = var_t2->type->type_table[cltype23] == idtype24;
2651 }
2652 var20 = var22;
2653 }
2654 if (var20){
2655 var25 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MType__as_nullable]))(var_t1) /* as_nullable on <var_t1:nullable MType(MType)>*/;
2656 var_t1 = var25;
2657 } else {
2658 }
2659 var26 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_t2, var_t1) /* is_subtype on <self:TypeVisitor>*/;
2660 var27 = !var26;
2661 if (var27){
2662 var28 = 0;
2663 var_found = var28;
2664 } else {
2665 }
2666 CONTINUE_label19: (void)0;
2667 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
2668 }
2669 BREAK_label19: (void)0;
2670 if (var_found){
2671 var = var_t1;
2672 goto RET_LABEL;
2673 } else {
2674 }
2675 CONTINUE_label: (void)0;
2676 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
2677 }
2678 BREAK_label: (void)0;
2679 var29 = NULL;
2680 var = var29;
2681 goto RET_LABEL;
2682 RET_LABEL:;
2683 return var;
2684 }
2685 /* method typing#TypeVisitor#merge_types for (self: Object, ANode, Array[nullable MType]): nullable MType */
2686 val* VIRTUAL_typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2687 val* var /* : nullable MType */;
2688 val* var1 /* : nullable MType */;
2689 var1 = typing__TypeVisitor__merge_types(self, p0, p1);
2690 var = var1;
2691 RET_LABEL:;
2692 return var;
2693 }
2694 /* method typing#CallSite#node for (self: CallSite): ANode */
2695 val* typing__CallSite__node(val* self) {
2696 val* var /* : ANode */;
2697 val* var1 /* : ANode */;
2698 var1 = self->attrs[COLOR_typing__CallSite___64dnode].val; /* @node on <self:CallSite> */
2699 if (var1 == NULL) {
2700 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @node");
2701 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 386);
2702 show_backtrace(1);
2703 }
2704 var = var1;
2705 RET_LABEL:;
2706 return var;
2707 }
2708 /* method typing#CallSite#node for (self: Object): ANode */
2709 val* VIRTUAL_typing__CallSite__node(val* self) {
2710 val* var /* : ANode */;
2711 val* var1 /* : ANode */;
2712 var1 = typing__CallSite__node(self);
2713 var = var1;
2714 RET_LABEL:;
2715 return var;
2716 }
2717 /* method typing#CallSite#node= for (self: CallSite, ANode) */
2718 void typing__CallSite__node_61d(val* self, val* p0) {
2719 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2720 RET_LABEL:;
2721 }
2722 /* method typing#CallSite#node= for (self: Object, ANode) */
2723 void VIRTUAL_typing__CallSite__node_61d(val* self, val* p0) {
2724 typing__CallSite__node_61d(self, p0);
2725 RET_LABEL:;
2726 }
2727 /* method typing#CallSite#recv for (self: CallSite): MType */
2728 val* typing__CallSite__recv(val* self) {
2729 val* var /* : MType */;
2730 val* var1 /* : MType */;
2731 var1 = self->attrs[COLOR_typing__CallSite___64drecv].val; /* @recv on <self:CallSite> */
2732 if (var1 == NULL) {
2733 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @recv");
2734 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 389);
2735 show_backtrace(1);
2736 }
2737 var = var1;
2738 RET_LABEL:;
2739 return var;
2740 }
2741 /* method typing#CallSite#recv for (self: Object): MType */
2742 val* VIRTUAL_typing__CallSite__recv(val* self) {
2743 val* var /* : MType */;
2744 val* var1 /* : MType */;
2745 var1 = typing__CallSite__recv(self);
2746 var = var1;
2747 RET_LABEL:;
2748 return var;
2749 }
2750 /* method typing#CallSite#recv= for (self: CallSite, MType) */
2751 void typing__CallSite__recv_61d(val* self, val* p0) {
2752 self->attrs[COLOR_typing__CallSite___64drecv].val = p0; /* @recv on <self:CallSite> */
2753 RET_LABEL:;
2754 }
2755 /* method typing#CallSite#recv= for (self: Object, MType) */
2756 void VIRTUAL_typing__CallSite__recv_61d(val* self, val* p0) {
2757 typing__CallSite__recv_61d(self, p0);
2758 RET_LABEL:;
2759 }
2760 /* method typing#CallSite#recv_is_self for (self: CallSite): Bool */
2761 short int typing__CallSite__recv_is_self(val* self) {
2762 short int var /* : Bool */;
2763 short int var1 /* : Bool */;
2764 var1 = self->attrs[COLOR_typing__CallSite___64drecv_is_self].s; /* @recv_is_self on <self:CallSite> */
2765 var = var1;
2766 RET_LABEL:;
2767 return var;
2768 }
2769 /* method typing#CallSite#recv_is_self for (self: Object): Bool */
2770 short int VIRTUAL_typing__CallSite__recv_is_self(val* self) {
2771 short int var /* : Bool */;
2772 short int var1 /* : Bool */;
2773 var1 = typing__CallSite__recv_is_self(self);
2774 var = var1;
2775 RET_LABEL:;
2776 return var;
2777 }
2778 /* method typing#CallSite#recv_is_self= for (self: CallSite, Bool) */
2779 void typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2780 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p0; /* @recv_is_self on <self:CallSite> */
2781 RET_LABEL:;
2782 }
2783 /* method typing#CallSite#recv_is_self= for (self: Object, Bool) */
2784 void VIRTUAL_typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2785 typing__CallSite__recv_is_self_61d(self, p0);
2786 RET_LABEL:;
2787 }
2788 /* method typing#CallSite#mproperty for (self: CallSite): MMethod */
2789 val* typing__CallSite__mproperty(val* self) {
2790 val* var /* : MMethod */;
2791 val* var1 /* : MMethod */;
2792 var1 = self->attrs[COLOR_typing__CallSite___64dmproperty].val; /* @mproperty on <self:CallSite> */
2793 if (var1 == NULL) {
2794 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
2795 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 397);
2796 show_backtrace(1);
2797 }
2798 var = var1;
2799 RET_LABEL:;
2800 return var;
2801 }
2802 /* method typing#CallSite#mproperty for (self: Object): MMethod */
2803 val* VIRTUAL_typing__CallSite__mproperty(val* self) {
2804 val* var /* : MMethod */;
2805 val* var1 /* : MMethod */;
2806 var1 = typing__CallSite__mproperty(self);
2807 var = var1;
2808 RET_LABEL:;
2809 return var;
2810 }
2811 /* method typing#CallSite#mproperty= for (self: CallSite, MMethod) */
2812 void typing__CallSite__mproperty_61d(val* self, val* p0) {
2813 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p0; /* @mproperty on <self:CallSite> */
2814 RET_LABEL:;
2815 }
2816 /* method typing#CallSite#mproperty= for (self: Object, MMethod) */
2817 void VIRTUAL_typing__CallSite__mproperty_61d(val* self, val* p0) {
2818 typing__CallSite__mproperty_61d(self, p0);
2819 RET_LABEL:;
2820 }
2821 /* method typing#CallSite#mpropdef for (self: CallSite): MMethodDef */
2822 val* typing__CallSite__mpropdef(val* self) {
2823 val* var /* : MMethodDef */;
2824 val* var1 /* : MMethodDef */;
2825 var1 = self->attrs[COLOR_typing__CallSite___64dmpropdef].val; /* @mpropdef on <self:CallSite> */
2826 if (var1 == NULL) {
2827 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
2828 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 400);
2829 show_backtrace(1);
2830 }
2831 var = var1;
2832 RET_LABEL:;
2833 return var;
2834 }
2835 /* method typing#CallSite#mpropdef for (self: Object): MMethodDef */
2836 val* VIRTUAL_typing__CallSite__mpropdef(val* self) {
2837 val* var /* : MMethodDef */;
2838 val* var1 /* : MMethodDef */;
2839 var1 = typing__CallSite__mpropdef(self);
2840 var = var1;
2841 RET_LABEL:;
2842 return var;
2843 }
2844 /* method typing#CallSite#mpropdef= for (self: CallSite, MMethodDef) */
2845 void typing__CallSite__mpropdef_61d(val* self, val* p0) {
2846 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p0; /* @mpropdef on <self:CallSite> */
2847 RET_LABEL:;
2848 }
2849 /* method typing#CallSite#mpropdef= for (self: Object, MMethodDef) */
2850 void VIRTUAL_typing__CallSite__mpropdef_61d(val* self, val* p0) {
2851 typing__CallSite__mpropdef_61d(self, p0);
2852 RET_LABEL:;
2853 }
2854 /* method typing#CallSite#msignature for (self: CallSite): MSignature */
2855 val* typing__CallSite__msignature(val* self) {
2856 val* var /* : MSignature */;
2857 val* var1 /* : MSignature */;
2858 var1 = self->attrs[COLOR_typing__CallSite___64dmsignature].val; /* @msignature on <self:CallSite> */
2859 if (var1 == NULL) {
2860 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @msignature");
2861 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 404);
2862 show_backtrace(1);
2863 }
2864 var = var1;
2865 RET_LABEL:;
2866 return var;
2867 }
2868 /* method typing#CallSite#msignature for (self: Object): MSignature */
2869 val* VIRTUAL_typing__CallSite__msignature(val* self) {
2870 val* var /* : MSignature */;
2871 val* var1 /* : MSignature */;
2872 var1 = typing__CallSite__msignature(self);
2873 var = var1;
2874 RET_LABEL:;
2875 return var;
2876 }
2877 /* method typing#CallSite#msignature= for (self: CallSite, MSignature) */
2878 void typing__CallSite__msignature_61d(val* self, val* p0) {
2879 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p0; /* @msignature on <self:CallSite> */
2880 RET_LABEL:;
2881 }
2882 /* method typing#CallSite#msignature= for (self: Object, MSignature) */
2883 void VIRTUAL_typing__CallSite__msignature_61d(val* self, val* p0) {
2884 typing__CallSite__msignature_61d(self, p0);
2885 RET_LABEL:;
2886 }
2887 /* method typing#CallSite#erasure_cast for (self: CallSite): Bool */
2888 short int typing__CallSite__erasure_cast(val* self) {
2889 short int var /* : Bool */;
2890 short int var1 /* : Bool */;
2891 var1 = self->attrs[COLOR_typing__CallSite___64derasure_cast].s; /* @erasure_cast on <self:CallSite> */
2892 var = var1;
2893 RET_LABEL:;
2894 return var;
2895 }
2896 /* method typing#CallSite#erasure_cast for (self: Object): Bool */
2897 short int VIRTUAL_typing__CallSite__erasure_cast(val* self) {
2898 short int var /* : Bool */;
2899 short int var1 /* : Bool */;
2900 var1 = typing__CallSite__erasure_cast(self);
2901 var = var1;
2902 RET_LABEL:;
2903 return var;
2904 }
2905 /* method typing#CallSite#erasure_cast= for (self: CallSite, Bool) */
2906 void typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2907 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p0; /* @erasure_cast on <self:CallSite> */
2908 RET_LABEL:;
2909 }
2910 /* method typing#CallSite#erasure_cast= for (self: Object, Bool) */
2911 void VIRTUAL_typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2912 typing__CallSite__erasure_cast_61d(self, p0);
2913 RET_LABEL:;
2914 }
2915 /* method typing#CallSite#check_signature for (self: CallSite, TypeVisitor, Array[AExpr]): Bool */
2916 short int typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2917 short int var /* : Bool */;
2918 val* var_v /* var v: TypeVisitor */;
2919 val* var_args /* var args: Array[AExpr] */;
2920 val* var1 /* : ANode */;
2921 val* var2 /* : MMethod */;
2922 val* var3 /* : String */;
2923 val* var4 /* : MSignature */;
2924 short int var5 /* : Bool */;
2925 var_v = p0;
2926 var_args = p1;
2927 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__node]))(self) /* node on <self:CallSite>*/;
2928 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__mproperty]))(self) /* mproperty on <self:CallSite>*/;
2929 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MProperty__name]))(var2) /* name on <var2:MMethod>*/;
2930 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__msignature]))(self) /* msignature on <self:CallSite>*/;
2931 var5 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, var1, var_args, var3, var4) /* check_signature on <var_v:TypeVisitor>*/;
2932 var = var5;
2933 goto RET_LABEL;
2934 RET_LABEL:;
2935 return var;
2936 }
2937 /* method typing#CallSite#check_signature for (self: Object, TypeVisitor, Array[AExpr]): Bool */
2938 short int VIRTUAL_typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2939 short int var /* : Bool */;
2940 short int var1 /* : Bool */;
2941 var1 = typing__CallSite__check_signature(self, p0, p1);
2942 var = var1;
2943 RET_LABEL:;
2944 return var;
2945 }
2946 /* method typing#CallSite#init for (self: CallSite, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2947 void typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2948 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2949 self->attrs[COLOR_typing__CallSite___64drecv].val = p1; /* @recv on <self:CallSite> */
2950 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p2; /* @recv_is_self on <self:CallSite> */
2951 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p3; /* @mproperty on <self:CallSite> */
2952 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p4; /* @mpropdef on <self:CallSite> */
2953 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p5; /* @msignature on <self:CallSite> */
2954 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p6; /* @erasure_cast on <self:CallSite> */
2955 RET_LABEL:;
2956 }
2957 /* method typing#CallSite#init for (self: Object, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2958 void VIRTUAL_typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2959 typing__CallSite__init(self, p0, p1, p2, p3, p4, p5, p6);
2960 RET_LABEL:;
2961 }
2962 /* method typing#Variable#declared_type for (self: Variable): nullable MType */
2963 val* typing__Variable__declared_type(val* self) {
2964 val* var /* : nullable MType */;
2965 val* var1 /* : nullable MType */;
2966 var1 = self->attrs[COLOR_typing__Variable___64ddeclared_type].val; /* @declared_type on <self:Variable> */
2967 var = var1;
2968 RET_LABEL:;
2969 return var;
2970 }
2971 /* method typing#Variable#declared_type for (self: Object): nullable MType */
2972 val* VIRTUAL_typing__Variable__declared_type(val* self) {
2973 val* var /* : nullable MType */;
2974 val* var1 /* : nullable MType */;
2975 var1 = typing__Variable__declared_type(self);
2976 var = var1;
2977 RET_LABEL:;
2978 return var;
2979 }
2980 /* method typing#Variable#declared_type= for (self: Variable, nullable MType) */
2981 void typing__Variable__declared_type_61d(val* self, val* p0) {
2982 self->attrs[COLOR_typing__Variable___64ddeclared_type].val = p0; /* @declared_type on <self:Variable> */
2983 RET_LABEL:;
2984 }
2985 /* method typing#Variable#declared_type= for (self: Object, nullable MType) */
2986 void VIRTUAL_typing__Variable__declared_type_61d(val* self, val* p0) {
2987 typing__Variable__declared_type_61d(self, p0);
2988 RET_LABEL:;
2989 }
2990 /* method typing#FlowContext#vars for (self: FlowContext): HashMap[Variable, nullable MType] */
2991 val* typing__FlowContext__vars(val* self) {
2992 val* var /* : HashMap[Variable, nullable MType] */;
2993 val* var1 /* : HashMap[Variable, nullable MType] */;
2994 var1 = self->attrs[COLOR_typing__FlowContext___64dvars].val; /* @vars on <self:FlowContext> */
2995 if (var1 == NULL) {
2996 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @vars");
2997 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 422);
2998 show_backtrace(1);
2999 }
3000 var = var1;
3001 RET_LABEL:;
3002 return var;
3003 }
3004 /* method typing#FlowContext#vars for (self: Object): HashMap[Variable, nullable MType] */
3005 val* VIRTUAL_typing__FlowContext__vars(val* self) {
3006 val* var /* : HashMap[Variable, nullable MType] */;
3007 val* var1 /* : HashMap[Variable, nullable MType] */;
3008 var1 = typing__FlowContext__vars(self);
3009 var = var1;
3010 RET_LABEL:;
3011 return var;
3012 }
3013 /* method typing#FlowContext#vars= for (self: FlowContext, HashMap[Variable, nullable MType]) */
3014 void typing__FlowContext__vars_61d(val* self, val* p0) {
3015 self->attrs[COLOR_typing__FlowContext___64dvars].val = p0; /* @vars on <self:FlowContext> */
3016 RET_LABEL:;
3017 }
3018 /* method typing#FlowContext#vars= for (self: Object, HashMap[Variable, nullable MType]) */
3019 void VIRTUAL_typing__FlowContext__vars_61d(val* self, val* p0) {
3020 typing__FlowContext__vars_61d(self, p0);
3021 RET_LABEL:;
3022 }
3023 /* method typing#FlowContext#cache for (self: FlowContext): HashMap[Variable, nullable Array[nullable MType]] */
3024 val* typing__FlowContext__cache(val* self) {
3025 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3026 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3027 var1 = self->attrs[COLOR_typing__FlowContext___64dcache].val; /* @cache on <self:FlowContext> */
3028 if (var1 == NULL) {
3029 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @cache");
3030 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 424);
3031 show_backtrace(1);
3032 }
3033 var = var1;
3034 RET_LABEL:;
3035 return var;
3036 }
3037 /* method typing#FlowContext#cache for (self: Object): HashMap[Variable, nullable Array[nullable MType]] */
3038 val* VIRTUAL_typing__FlowContext__cache(val* self) {
3039 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3040 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3041 var1 = typing__FlowContext__cache(self);
3042 var = var1;
3043 RET_LABEL:;
3044 return var;
3045 }
3046 /* method typing#FlowContext#cache= for (self: FlowContext, HashMap[Variable, nullable Array[nullable MType]]) */
3047 void typing__FlowContext__cache_61d(val* self, val* p0) {
3048 self->attrs[COLOR_typing__FlowContext___64dcache].val = p0; /* @cache on <self:FlowContext> */
3049 RET_LABEL:;
3050 }
3051 /* method typing#FlowContext#cache= for (self: Object, HashMap[Variable, nullable Array[nullable MType]]) */
3052 void VIRTUAL_typing__FlowContext__cache_61d(val* self, val* p0) {
3053 typing__FlowContext__cache_61d(self, p0);
3054 RET_LABEL:;
3055 }
3056 /* method typing#FlowContext#set_var for (self: FlowContext, Variable, nullable MType) */
3057 void typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3058 val* var_variable /* var variable: Variable */;
3059 val* var_mtype /* var mtype: nullable MType */;
3060 val* var /* : HashMap[Variable, nullable MType] */;
3061 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3062 val* var2 /* : Collection[Object] */;
3063 var_variable = p0;
3064 var_mtype = p1;
3065 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3066 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var, var_variable, var_mtype) /* []= on <var:HashMap[Variable, nullable MType]>*/;
3067 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3068 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__keys]))(var1) /* keys on <var1:HashMap[Variable, nullable Array[nullable MType]]>*/;
3069 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var2, var_variable) /* remove on <var2:Collection[Object](HashMapKeys[Variable, nullable Array[nullable MType]])>*/;
3070 RET_LABEL:;
3071 }
3072 /* method typing#FlowContext#set_var for (self: Object, Variable, nullable MType) */
3073 void VIRTUAL_typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3074 typing__FlowContext__set_var(self, p0, p1);
3075 RET_LABEL:;
3076 }
3077 /* method typing#FlowContext#collect_types for (self: FlowContext, Variable): nullable Array[nullable MType] */
3078 val* typing__FlowContext__collect_types(val* self, val* p0) {
3079 val* var /* : nullable Array[nullable MType] */;
3080 val* var_variable /* var variable: Variable */;
3081 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3082 short int var2 /* : Bool */;
3083 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3084 val* var4 /* : nullable Object */;
3085 val* var5 /* : null */;
3086 val* var_res /* var res: nullable Array[nullable MType] */;
3087 val* var6 /* : HashMap[Variable, nullable MType] */;
3088 short int var7 /* : Bool */;
3089 val* var8 /* : HashMap[Variable, nullable MType] */;
3090 val* var9 /* : nullable Object */;
3091 val* var_mtype /* var mtype: nullable MType */;
3092 val* var10 /* : Array[nullable MType] */;
3093 long var11 /* : Int */;
3094 val* var_ /* var : Array[nullable MType] */;
3095 val* var12 /* : Array[FlowContext] */;
3096 short int var13 /* : Bool */;
3097 val* var14 /* : Array[nullable MType] */;
3098 long var15 /* : Int */;
3099 val* var_16 /* var : Array[nullable MType] */;
3100 val* var17 /* : nullable MType */;
3101 val* var18 /* : Array[FlowContext] */;
3102 val* var19 /* : Iterator[nullable Object] */;
3103 short int var20 /* : Bool */;
3104 val* var21 /* : nullable Object */;
3105 val* var_flow /* var flow: FlowContext */;
3106 short int var22 /* : Bool */;
3107 val* var23 /* : nullable Array[nullable MType] */;
3108 val* var_r2 /* var r2: nullable Array[nullable MType] */;
3109 val* var24 /* : null */;
3110 short int var25 /* : Bool */;
3111 val* var26 /* : null */;
3112 short int var27 /* : Bool */;
3113 val* var28 /* : Array[nullable Object] */;
3114 val* var29 /* : Iterator[nullable Object] */;
3115 short int var30 /* : Bool */;
3116 val* var31 /* : nullable Object */;
3117 val* var_t /* var t: nullable MType */;
3118 short int var32 /* : Bool */;
3119 short int var33 /* : Bool */;
3120 val* var35 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3121 var_variable = p0;
3122 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3123 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_variable) /* has_key on <var1:HashMap[Variable, nullable Array[nullable MType]]>*/;
3124 if (var2){
3125 var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3126 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, nullable Array[nullable MType]]>*/;
3127 var = var4;
3128 goto RET_LABEL;
3129 } else {
3130 }
3131 var5 = NULL;
3132 var_res = var5;
3133 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3134 var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var6, var_variable) /* has_key on <var6:HashMap[Variable, nullable MType]>*/;
3135 if (var7){
3136 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3137 var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_variable) /* [] on <var8:HashMap[Variable, nullable MType]>*/;
3138 var_mtype = var9;
3139 var10 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3140 var11 = 1;
3141 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[nullable MType]>*/;
3142 var_ = var10;
3143 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_mtype) /* push on <var_:Array[nullable MType]>*/;
3144 var_res = var_;
3145 } else {
3146 var12 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3147 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var12) /* is_empty on <var12:Array[FlowContext]>*/;
3148 if (var13){
3149 var14 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3150 var15 = 1;
3151 ((void (*)(val*, long))(var14->class->vft[COLOR_array__Array__with_capacity]))(var14, var15) /* with_capacity on <var14:Array[nullable MType]>*/;
3152 var_16 = var14;
3153 var17 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
3154 ((void (*)(val*, val*))(var_16->class->vft[COLOR_abstract_collection__Sequence__push]))(var_16, var17) /* push on <var_16:Array[nullable MType]>*/;
3155 var_res = var_16;
3156 } else {
3157 var18 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3158 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[FlowContext]>*/;
3159 for(;;) {
3160 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
3161 if(!var20) break;
3162 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
3163 var_flow = var21;
3164 var22 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on <var_flow:FlowContext>*/;
3165 if (var22){
3166 goto CONTINUE_label;
3167 } else {
3168 }
3169 var23 = ((val* (*)(val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__collect_types]))(var_flow, var_variable) /* collect_types on <var_flow:FlowContext>*/;
3170 var_r2 = var23;
3171 var24 = NULL;
3172 if (var_r2 == NULL) {
3173 var25 = 1; /* is null */
3174 } else {
3175 var25 = 0; /* arg is null but recv is not */
3176 }
3177 if (var25){
3178 goto CONTINUE_label;
3179 } else {
3180 }
3181 var26 = NULL;
3182 if (var_res == NULL) {
3183 var27 = 1; /* is null */
3184 } else {
3185 var27 = 0; /* arg is null but recv is not */
3186 }
3187 if (var27){
3188 var28 = ((val* (*)(val*))(var_r2->class->vft[COLOR_array__Collection__to_a]))(var_r2) /* to_a on <var_r2:nullable Array[nullable MType](Array[nullable MType])>*/;
3189 var_res = var28;
3190 } else {
3191 var29 = ((val* (*)(val*))(var_r2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_r2) /* iterator on <var_r2:nullable Array[nullable MType](Array[nullable MType])>*/;
3192 for(;;) {
3193 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
3194 if(!var30) break;
3195 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
3196 var_t = var31;
3197 var32 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__Collection__has]))(var_res, var_t) /* has on <var_res:nullable Array[nullable MType](Array[nullable MType])>*/;
3198 var33 = !var32;
3199 if (var33){
3200 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_t) /* add on <var_res:nullable Array[nullable MType](Array[nullable MType])>*/;
3201 } else {
3202 }
3203 CONTINUE_label34: (void)0;
3204 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
3205 }
3206 BREAK_label34: (void)0;
3207 }
3208 CONTINUE_label: (void)0;
3209 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
3210 }
3211 BREAK_label: (void)0;
3212 }
3213 }
3214 var35 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3215 ((void (*)(val*, val*, val*))(var35->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var35, var_variable, var_res) /* []= on <var35:HashMap[Variable, nullable Array[nullable MType]]>*/;
3216 var = var_res;
3217 goto RET_LABEL;
3218 RET_LABEL:;
3219 return var;
3220 }
3221 /* method typing#FlowContext#collect_types for (self: Object, Variable): nullable Array[nullable MType] */
3222 val* VIRTUAL_typing__FlowContext__collect_types(val* self, val* p0) {
3223 val* var /* : nullable Array[nullable MType] */;
3224 val* var1 /* : nullable Array[nullable MType] */;
3225 var1 = typing__FlowContext__collect_types(self, p0);
3226 var = var1;
3227 RET_LABEL:;
3228 return var;
3229 }
3230 /* method typing#APropdef#do_typing for (self: APropdef, ModelBuilder) */
3231 void typing__APropdef__do_typing(val* self, val* p0) {
3232 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3233 var_modelbuilder = p0;
3234 RET_LABEL:;
3235 }
3236 /* method typing#APropdef#do_typing for (self: Object, ModelBuilder) */
3237 void VIRTUAL_typing__APropdef__do_typing(val* self, val* p0) {
3238 typing__APropdef__do_typing(self, p0);
3239 RET_LABEL:;
3240 }
3241 /* method typing#APropdef#selfvariable for (self: APropdef): nullable Variable */
3242 val* typing__APropdef__selfvariable(val* self) {
3243 val* var /* : nullable Variable */;
3244 val* var1 /* : nullable Variable */;
3245 var1 = self->attrs[COLOR_typing__APropdef___64dselfvariable].val; /* @selfvariable on <self:APropdef> */
3246 var = var1;
3247 RET_LABEL:;
3248 return var;
3249 }
3250 /* method typing#APropdef#selfvariable for (self: Object): nullable Variable */
3251 val* VIRTUAL_typing__APropdef__selfvariable(val* self) {
3252 val* var /* : nullable Variable */;
3253 val* var1 /* : nullable Variable */;
3254 var1 = typing__APropdef__selfvariable(self);
3255 var = var1;
3256 RET_LABEL:;
3257 return var;
3258 }
3259 /* method typing#APropdef#selfvariable= for (self: APropdef, nullable Variable) */
3260 void typing__APropdef__selfvariable_61d(val* self, val* p0) {
3261 self->attrs[COLOR_typing__APropdef___64dselfvariable].val = p0; /* @selfvariable on <self:APropdef> */
3262 RET_LABEL:;
3263 }
3264 /* method typing#APropdef#selfvariable= for (self: Object, nullable Variable) */
3265 void VIRTUAL_typing__APropdef__selfvariable_61d(val* self, val* p0) {
3266 typing__APropdef__selfvariable_61d(self, p0);
3267 RET_LABEL:;
3268 }
3269 /* method typing#AConcreteMethPropdef#do_typing for (self: AConcreteMethPropdef, ModelBuilder) */
3270 void typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3271 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3272 val* var /* : nullable ANode */;
3273 short int var1 /* : Bool */;
3274 int cltype;
3275 int idtype;
3276 const char* var_class_name;
3277 val* var_nclassdef /* var nclassdef: AClassdef */;
3278 val* var2 /* : nullable MPropDef */;
3279 val* var_mpropdef /* var mpropdef: MMethodDef */;
3280 val* var3 /* : TypeVisitor */;
3281 val* var_v /* var v: TypeVisitor */;
3282 val* var4 /* : Variable */;
3283 val* var5 /* : nullable AExpr */;
3284 val* var_nblock /* var nblock: nullable AExpr */;
3285 val* var6 /* : null */;
3286 short int var7 /* : Bool */;
3287 val* var8 /* : nullable MPropDef */;
3288 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
3289 val* var9 /* : Range[Int] */;
3290 long var10 /* : Int */;
3291 val* var11 /* : nullable MSignature */;
3292 long var12 /* : Int */;
3293 val* var13 /* : Discrete */;
3294 val* var14 /* : Discrete */;
3295 val* var15 /* : Iterator[nullable Object] */;
3296 short int var16 /* : Bool */;
3297 val* var17 /* : nullable Object */;
3298 long var_i /* var i: Int */;
3299 long var18 /* : Int */;
3300 val* var19 /* : nullable MSignature */;
3301 val* var20 /* : Array[MParameter] */;
3302 val* var21 /* : nullable Object */;
3303 val* var22 /* : MType */;
3304 val* var_mtype /* var mtype: MType */;
3305 val* var23 /* : nullable MSignature */;
3306 long var24 /* : Int */;
3307 short int var25 /* : Bool */;
3308 short int var27 /* : Bool */;
3309 val* var28 /* : nullable ASignature */;
3310 val* var29 /* : ANodes[AParam] */;
3311 val* var30 /* : nullable Object */;
3312 static val* varonce;
3313 val* var31 /* : String */;
3314 char* var32 /* : NativeString */;
3315 long var33 /* : Int */;
3316 val* var34 /* : String */;
3317 val* var35 /* : nullable MClass */;
3318 val* var_arrayclass /* var arrayclass: nullable MClass */;
3319 val* var36 /* : null */;
3320 short int var37 /* : Bool */;
3321 val* var38 /* : Array[MType] */;
3322 long var39 /* : Int */;
3323 val* var40 /* : NativeArray[MType] */;
3324 val* var41 /* : MClassType */;
3325 val* var42 /* : nullable ASignature */;
3326 val* var43 /* : ANodes[AParam] */;
3327 val* var44 /* : nullable Object */;
3328 val* var45 /* : nullable Variable */;
3329 val* var_variable /* var variable: nullable Variable */;
3330 val* var46 /* : null */;
3331 short int var47 /* : Bool */;
3332 short int var48 /* : Bool */;
3333 val* var49 /* : nullable FlowContext */;
3334 short int var50 /* : Bool */;
3335 short int var51 /* : Bool */;
3336 short int var_ /* var : Bool */;
3337 val* var52 /* : nullable MSignature */;
3338 val* var53 /* : nullable MType */;
3339 val* var54 /* : null */;
3340 short int var55 /* : Bool */;
3341 static val* varonce56;
3342 val* var57 /* : String */;
3343 char* var58 /* : NativeString */;
3344 long var59 /* : Int */;
3345 val* var60 /* : String */;
3346 var_modelbuilder = p0;
3347 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AConcreteMethPropdef>*/;
3348 /* <var:nullable ANode> isa AClassdef */
3349 cltype = type_parser_nodes__AClassdef.color;
3350 idtype = type_parser_nodes__AClassdef.id;
3351 if(var == NULL) {
3352 var1 = 0;
3353 } else {
3354 if(cltype >= var->type->table_size) {
3355 var1 = 0;
3356 } else {
3357 var1 = var->type->type_table[cltype] == idtype;
3358 }
3359 }
3360 if (!var1) {
3361 var_class_name = var == NULL ? "null" : var->type->name;
3362 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
3363 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 479);
3364 show_backtrace(1);
3365 }
3366 var_nclassdef = var;
3367 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3368 if (var2 == NULL) {
3369 fprintf(stderr, "Runtime error: %s", "Cast failed");
3370 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 480);
3371 show_backtrace(1);
3372 }
3373 var_mpropdef = var2;
3374 var3 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3375 ((void (*)(val*, val*, val*, val*))(var3->class->vft[COLOR_typing__TypeVisitor__init]))(var3, var_modelbuilder, var_nclassdef, var_mpropdef) /* init on <var3:TypeVisitor>*/;
3376 var_v = var3;
3377 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3378 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AConcreteMethPropdef>*/;
3379 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteMethPropdef__n_block]))(self) /* n_block on <self:AConcreteMethPropdef>*/;
3380 var_nblock = var5;
3381 var6 = NULL;
3382 if (var_nblock == NULL) {
3383 var7 = 1; /* is null */
3384 } else {
3385 var7 = 0; /* arg is null but recv is not */
3386 }
3387 if (var7){
3388 goto RET_LABEL;
3389 } else {
3390 }
3391 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3392 if (var8 == NULL) {
3393 fprintf(stderr, "Runtime error: %s", "Cast failed");
3394 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 487);
3395 show_backtrace(1);
3396 }
3397 var_mmethoddef = var8;
3398 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
3399 var10 = 0;
3400 var11 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3401 if (var11 == NULL) {
3402 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3403 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 488);
3404 show_backtrace(1);
3405 } else {
3406 var12 = ((long (*)(val*))(var11->class->vft[COLOR_model__MSignature__arity]))(var11) /* arity on <var11:nullable MSignature>*/;
3407 }
3408 var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
3409 var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
3410 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
3411 var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
3412 for(;;) {
3413 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
3414 if(!var16) break;
3415 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
3416 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
3417 var_i = var18;
3418 var19 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3419 if (var19 == NULL) {
3420 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3421 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 489);
3422 show_backtrace(1);
3423 } else {
3424 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MSignature__mparameters]))(var19) /* mparameters on <var19:nullable MSignature>*/;
3425 }
3426 var21 = ((val* (*)(val*, long))(var20->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var20, var_i) /* [] on <var20:Array[MParameter]>*/;
3427 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MParameter__mtype]))(var21) /* mtype on <var21:nullable Object(MParameter)>*/;
3428 var_mtype = var22;
3429 var23 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3430 if (var23 == NULL) {
3431 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3432 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 490);
3433 show_backtrace(1);
3434 } else {
3435 var24 = ((long (*)(val*))(var23->class->vft[COLOR_model__MSignature__vararg_rank]))(var23) /* vararg_rank on <var23:nullable MSignature>*/;
3436 }
3437 { /* Inline kernel#Int#== (var24,var_i) */
3438 var27 = var24 == var_i;
3439 var25 = var27;
3440 goto RET_LABEL26;
3441 RET_LABEL26:(void)0;
3442 }
3443 if (var25){
3444 var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3445 if (var28 == NULL) {
3446 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3447 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 491);
3448 show_backtrace(1);
3449 } else {
3450 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var28) /* n_params on <var28:nullable ASignature>*/;
3451 }
3452 var30 = ((val* (*)(val*, long))(var29->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var29, var_i) /* [] on <var29:ANodes[AParam]>*/;
3453 if (varonce) {
3454 var31 = varonce;
3455 } else {
3456 var32 = "Array";
3457 var33 = 5;
3458 var34 = string__NativeString__to_s_with_length(var32, var33);
3459 var31 = var34;
3460 varonce = var31;
3461 }
3462 var35 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, var30, var31) /* get_mclass on <var_v:TypeVisitor>*/;
3463 var_arrayclass = var35;
3464 var36 = NULL;
3465 if (var_arrayclass == NULL) {
3466 var37 = 1; /* is null */
3467 } else {
3468 var37 = 0; /* arg is null but recv is not */
3469 }
3470 if (var37){
3471 goto RET_LABEL;
3472 } else {
3473 }
3474 var38 = NEW_array__Array(&type_array__Arraymodel__MType);
3475 { /* var38 = array_instance Array[MType] */
3476 var39 = 1;
3477 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraymodel__MType);
3478 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var_mtype;
3479 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[MType]>*/;
3480 }
3481 var41 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var38) /* get_mtype on <var_arrayclass:nullable MClass(MClass)>*/;
3482 var_mtype = var41;
3483 } else {
3484 }
3485 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3486 if (var42 == NULL) {
3487 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3488 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 495);
3489 show_backtrace(1);
3490 } else {
3491 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var42) /* n_params on <var42:nullable ASignature>*/;
3492 }
3493 var44 = ((val* (*)(val*, long))(var43->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var43, var_i) /* [] on <var43:ANodes[AParam]>*/;
3494 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_scope__AParam__variable]))(var44) /* variable on <var44:nullable Object(AParam)>*/;
3495 var_variable = var45;
3496 var46 = NULL;
3497 if (var_variable == NULL) {
3498 var47 = 0; /* is null */
3499 } else {
3500 var47 = 1; /* arg is null and recv is not */
3501 }
3502 if (!var47) {
3503 fprintf(stderr, "Runtime error: %s", "Assert failed");
3504 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 496);
3505 show_backtrace(1);
3506 }
3507 ((void (*)(val*, val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_variable, var_mtype) /* declared_type= on <var_variable:nullable Variable(Variable)>*/;
3508 CONTINUE_label: (void)0;
3509 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
3510 }
3511 BREAK_label: (void)0;
3512 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_nblock) /* visit_stmt on <var_v:TypeVisitor>*/;
3513 var49 = ((val* (*)(val*))(var_nblock->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_nblock) /* after_flow_context on <var_nblock:nullable AExpr(AExpr)>*/;
3514 if (var49 == NULL) {
3515 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3516 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 501);
3517 show_backtrace(1);
3518 } else {
3519 var50 = ((short int (*)(val*))(var49->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var49) /* is_unreachable on <var49:nullable FlowContext>*/;
3520 }
3521 var51 = !var50;
3522 var_ = var51;
3523 if (var51){
3524 var52 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3525 if (var52 == NULL) {
3526 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3527 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 501);
3528 show_backtrace(1);
3529 } else {
3530 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MSignature__return_mtype]))(var52) /* return_mtype on <var52:nullable MSignature>*/;
3531 }
3532 var54 = NULL;
3533 if (var53 == NULL) {
3534 var55 = 0; /* is null */
3535 } else {
3536 var55 = 1; /* arg is null and recv is not */
3537 }
3538 var48 = var55;
3539 } else {
3540 var48 = var_;
3541 }
3542 if (var48){
3543 if (varonce56) {
3544 var57 = varonce56;
3545 } else {
3546 var58 = "Control error: Reached end of function (a \'return\' with a value was expected).";
3547 var59 = 78;
3548 var60 = string__NativeString__to_s_with_length(var58, var59);
3549 var57 = var60;
3550 varonce56 = var57;
3551 }
3552 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var57) /* error on <var_v:TypeVisitor>*/;
3553 } else {
3554 }
3555 RET_LABEL:;
3556 }
3557 /* method typing#AConcreteMethPropdef#do_typing for (self: Object, ModelBuilder) */
3558 void VIRTUAL_typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3559 typing__AConcreteMethPropdef__do_typing(self, p0);
3560 RET_LABEL:;
3561 }
3562 /* method typing#AAttrPropdef#do_typing for (self: AAttrPropdef, ModelBuilder) */
3563 void typing__AAttrPropdef__do_typing(val* self, val* p0) {
3564 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3565 val* var /* : nullable ANode */;
3566 short int var1 /* : Bool */;
3567 int cltype;
3568 int idtype;
3569 const char* var_class_name;
3570 val* var_nclassdef /* var nclassdef: AClassdef */;
3571 val* var2 /* : TypeVisitor */;
3572 val* var3 /* : nullable MPropDef */;
3573 val* var_v /* var v: TypeVisitor */;
3574 val* var4 /* : Variable */;
3575 val* var5 /* : nullable AExpr */;
3576 val* var_nexpr /* var nexpr: nullable AExpr */;
3577 val* var6 /* : null */;
3578 short int var7 /* : Bool */;
3579 val* var8 /* : nullable MPropDef */;
3580 val* var9 /* : nullable MType */;
3581 val* var_mtype /* var mtype: nullable MType */;
3582 val* var10 /* : nullable MType */;
3583 var_modelbuilder = p0;
3584 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AAttrPropdef>*/;
3585 /* <var:nullable ANode> isa AClassdef */
3586 cltype = type_parser_nodes__AClassdef.color;
3587 idtype = type_parser_nodes__AClassdef.id;
3588 if(var == NULL) {
3589 var1 = 0;
3590 } else {
3591 if(cltype >= var->type->table_size) {
3592 var1 = 0;
3593 } else {
3594 var1 = var->type->type_table[cltype] == idtype;
3595 }
3596 }
3597 if (!var1) {
3598 var_class_name = var == NULL ? "null" : var->type->name;
3599 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
3600 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 511);
3601 show_backtrace(1);
3602 }
3603 var_nclassdef = var;
3604 var2 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3605 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3606 if (var3 == NULL) {
3607 fprintf(stderr, "Runtime error: %s", "Cast failed");
3608 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 512);
3609 show_backtrace(1);
3610 }
3611 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_typing__TypeVisitor__init]))(var2, var_modelbuilder, var_nclassdef, var3) /* init on <var2:TypeVisitor>*/;
3612 var_v = var2;
3613 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3614 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AAttrPropdef>*/;
3615 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(self) /* n_expr on <self:AAttrPropdef>*/;
3616 var_nexpr = var5;
3617 var6 = NULL;
3618 if (var_nexpr == NULL) {
3619 var7 = 0; /* is null */
3620 } else {
3621 var7 = 1; /* arg is null and recv is not */
3622 }
3623 if (var7){
3624 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3625 if (var8 == NULL) {
3626 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3627 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 517);
3628 show_backtrace(1);
3629 } else {
3630 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var8) /* static_mtype on <var8:nullable MPropDef(nullable MAttributeDef)>*/;
3631 }
3632 var_mtype = var9;
3633 var10 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var_nexpr, var_mtype) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
3634 var10;
3635 } else {
3636 }
3637 RET_LABEL:;
3638 }
3639 /* method typing#AAttrPropdef#do_typing for (self: Object, ModelBuilder) */
3640 void VIRTUAL_typing__AAttrPropdef__do_typing(val* self, val* p0) {
3641 typing__AAttrPropdef__do_typing(self, p0);
3642 RET_LABEL:;
3643 }
3644 /* method typing#AExpr#mtype for (self: AExpr): nullable MType */
3645 val* typing__AExpr__mtype(val* self) {
3646 val* var /* : nullable MType */;
3647 val* var1 /* : nullable MType */;
3648 var1 = self->attrs[COLOR_typing__AExpr___64dmtype].val; /* @mtype on <self:AExpr> */
3649 var = var1;
3650 RET_LABEL:;
3651 return var;
3652 }
3653 /* method typing#AExpr#mtype for (self: Object): nullable MType */
3654 val* VIRTUAL_typing__AExpr__mtype(val* self) {
3655 val* var /* : nullable MType */;
3656 val* var1 /* : nullable MType */;
3657 var1 = typing__AExpr__mtype(self);
3658 var = var1;
3659 RET_LABEL:;
3660 return var;
3661 }
3662 /* method typing#AExpr#mtype= for (self: AExpr, nullable MType) */
3663 void typing__AExpr__mtype_61d(val* self, val* p0) {
3664 self->attrs[COLOR_typing__AExpr___64dmtype].val = p0; /* @mtype on <self:AExpr> */
3665 RET_LABEL:;
3666 }
3667 /* method typing#AExpr#mtype= for (self: Object, nullable MType) */
3668 void VIRTUAL_typing__AExpr__mtype_61d(val* self, val* p0) {
3669 typing__AExpr__mtype_61d(self, p0);
3670 RET_LABEL:;
3671 }
3672 /* method typing#AExpr#is_typed for (self: AExpr): Bool */
3673 short int typing__AExpr__is_typed(val* self) {
3674 short int var /* : Bool */;
3675 short int var1 /* : Bool */;
3676 var1 = self->attrs[COLOR_typing__AExpr___64dis_typed].s; /* @is_typed on <self:AExpr> */
3677 var = var1;
3678 RET_LABEL:;
3679 return var;
3680 }
3681 /* method typing#AExpr#is_typed for (self: Object): Bool */
3682 short int VIRTUAL_typing__AExpr__is_typed(val* self) {
3683 short int var /* : Bool */;
3684 short int var1 /* : Bool */;
3685 var1 = typing__AExpr__is_typed(self);
3686 var = var1;
3687 RET_LABEL:;
3688 return var;
3689 }
3690 /* method typing#AExpr#is_typed= for (self: AExpr, Bool) */
3691 void typing__AExpr__is_typed_61d(val* self, short int p0) {
3692 self->attrs[COLOR_typing__AExpr___64dis_typed].s = p0; /* @is_typed on <self:AExpr> */
3693 RET_LABEL:;
3694 }
3695 /* method typing#AExpr#is_typed= for (self: Object, Bool) */
3696 void VIRTUAL_typing__AExpr__is_typed_61d(val* self, short int p0) {
3697 typing__AExpr__is_typed_61d(self, p0);
3698 RET_LABEL:;
3699 }
3700 /* method typing#AExpr#implicit_cast_to for (self: AExpr): nullable MType */
3701 val* typing__AExpr__implicit_cast_to(val* self) {
3702 val* var /* : nullable MType */;
3703 val* var1 /* : nullable MType */;
3704 var1 = self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val; /* @implicit_cast_to on <self:AExpr> */
3705 var = var1;
3706 RET_LABEL:;
3707 return var;
3708 }
3709 /* method typing#AExpr#implicit_cast_to for (self: Object): nullable MType */
3710 val* VIRTUAL_typing__AExpr__implicit_cast_to(val* self) {
3711 val* var /* : nullable MType */;
3712 val* var1 /* : nullable MType */;
3713 var1 = typing__AExpr__implicit_cast_to(self);
3714 var = var1;
3715 RET_LABEL:;
3716 return var;
3717 }
3718 /* method typing#AExpr#implicit_cast_to= for (self: AExpr, nullable MType) */
3719 void typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3720 self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val = p0; /* @implicit_cast_to on <self:AExpr> */
3721 RET_LABEL:;
3722 }
3723 /* method typing#AExpr#implicit_cast_to= for (self: Object, nullable MType) */
3724 void VIRTUAL_typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3725 typing__AExpr__implicit_cast_to_61d(self, p0);
3726 RET_LABEL:;
3727 }
3728 /* method typing#AExpr#its_variable for (self: AExpr): nullable Variable */
3729 val* typing__AExpr__its_variable(val* self) {
3730 val* var /* : nullable Variable */;
3731 val* var1 /* : null */;
3732 var1 = NULL;
3733 var = var1;
3734 goto RET_LABEL;
3735 RET_LABEL:;
3736 return var;
3737 }
3738 /* method typing#AExpr#its_variable for (self: Object): nullable Variable */
3739 val* VIRTUAL_typing__AExpr__its_variable(val* self) {
3740 val* var /* : nullable Variable */;
3741 val* var1 /* : nullable Variable */;
3742 var1 = typing__AExpr__its_variable(self);
3743 var = var1;
3744 RET_LABEL:;
3745 return var;
3746 }
3747 /* method typing#AExpr#accept_typing for (self: AExpr, TypeVisitor) */
3748 void typing__AExpr__accept_typing(val* self, val* p0) {
3749 val* var_v /* var v: TypeVisitor */;
3750 static val* varonce;
3751 val* var /* : String */;
3752 char* var1 /* : NativeString */;
3753 long var2 /* : Int */;
3754 val* var3 /* : String */;
3755 val* var4 /* : String */;
3756 val* var5 /* : Array[Object] */;
3757 long var6 /* : Int */;
3758 val* var7 /* : NativeArray[Object] */;
3759 val* var8 /* : String */;
3760 var_v = p0;
3761 if (varonce) {
3762 var = varonce;
3763 } else {
3764 var1 = "no implemented accept_typing for ";
3765 var2 = 33;
3766 var3 = string__NativeString__to_s_with_length(var1, var2);
3767 var = var3;
3768 varonce = var;
3769 }
3770 var4 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:AExpr>*/;
3771 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
3772 { /* var5 = array_instance Array[Object] */
3773 var6 = 2;
3774 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
3775 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
3776 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var4;
3777 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
3778 }
3779 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
3780 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
3781 RET_LABEL:;
3782 }
3783 /* method typing#AExpr#accept_typing for (self: Object, TypeVisitor) */
3784 void VIRTUAL_typing__AExpr__accept_typing(val* self, val* p0) {
3785 typing__AExpr__accept_typing(self, p0);
3786 RET_LABEL:;
3787 }
3788 /* method typing#ABlockExpr#accept_typing for (self: ABlockExpr, TypeVisitor) */
3789 void typing__ABlockExpr__accept_typing(val* self, val* p0) {
3790 val* var_v /* var v: TypeVisitor */;
3791 val* var /* : ANodes[AExpr] */;
3792 val* var1 /* : Iterator[nullable Object] */;
3793 short int var2 /* : Bool */;
3794 val* var3 /* : nullable Object */;
3795 val* var_e /* var e: AExpr */;
3796 short int var4 /* : Bool */;
3797 var_v = p0;
3798 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3799 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AExpr]>*/;
3800 for(;;) {
3801 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
3802 if(!var2) break;
3803 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
3804 var_e = var3;
3805 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_e) /* visit_stmt on <var_v:TypeVisitor>*/;
3806 CONTINUE_label: (void)0;
3807 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
3808 }
3809 BREAK_label: (void)0;
3810 var4 = 1;
3811 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABlockExpr>*/;
3812 RET_LABEL:;
3813 }
3814 /* method typing#ABlockExpr#accept_typing for (self: Object, TypeVisitor) */
3815 void VIRTUAL_typing__ABlockExpr__accept_typing(val* self, val* p0) {
3816 typing__ABlockExpr__accept_typing(self, p0);
3817 RET_LABEL:;
3818 }
3819 /* method typing#ABlockExpr#mtype for (self: ABlockExpr): nullable MType */
3820 val* typing__ABlockExpr__mtype(val* self) {
3821 val* var /* : nullable MType */;
3822 val* var1 /* : ANodes[AExpr] */;
3823 short int var2 /* : Bool */;
3824 val* var3 /* : null */;
3825 val* var4 /* : ANodes[AExpr] */;
3826 val* var5 /* : nullable Object */;
3827 val* var6 /* : nullable MType */;
3828 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3829 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:ANodes[AExpr]>*/;
3830 if (var2){
3831 var3 = NULL;
3832 var = var3;
3833 goto RET_LABEL;
3834 } else {
3835 }
3836 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3837 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var4) /* last on <var4:ANodes[AExpr]>*/;
3838 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_typing__AExpr__mtype]))(var5) /* mtype on <var5:nullable Object(AExpr)>*/;
3839 var = var6;
3840 goto RET_LABEL;
3841 RET_LABEL:;
3842 return var;
3843 }
3844 /* method typing#ABlockExpr#mtype for (self: Object): nullable MType */
3845 val* VIRTUAL_typing__ABlockExpr__mtype(val* self) {
3846 val* var /* : nullable MType */;
3847 val* var1 /* : nullable MType */;
3848 var1 = typing__ABlockExpr__mtype(self);
3849 var = var1;
3850 RET_LABEL:;
3851 return var;
3852 }
3853 /* method typing#AVardeclExpr#accept_typing for (self: AVardeclExpr, TypeVisitor) */
3854 void typing__AVardeclExpr__accept_typing(val* self, val* p0) {
3855 val* var_v /* var v: TypeVisitor */;
3856 val* var /* : nullable Variable */;
3857 val* var_variable /* var variable: nullable Variable */;
3858 val* var1 /* : null */;
3859 short int var2 /* : Bool */;
3860 val* var3 /* : nullable AType */;
3861 val* var_ntype /* var ntype: nullable AType */;
3862 val* var4 /* : null */;
3863 short int var5 /* : Bool */;
3864 val* var6 /* : null */;
3865 val* var_mtype /* var mtype: nullable MType */;
3866 val* var7 /* : nullable MType */;
3867 val* var8 /* : null */;
3868 short int var9 /* : Bool */;
3869 val* var10 /* : nullable AExpr */;
3870 val* var_nexpr /* var nexpr: nullable AExpr */;
3871 val* var11 /* : null */;
3872 short int var12 /* : Bool */;
3873 val* var13 /* : null */;
3874 short int var14 /* : Bool */;
3875 val* var15 /* : nullable MType */;
3876 val* var16 /* : nullable MType */;
3877 val* var17 /* : null */;
3878 short int var18 /* : Bool */;
3879 val* var_decltype /* var decltype: nullable MType */;
3880 short int var19 /* : Bool */;
3881 val* var20 /* : null */;
3882 short int var21 /* : Bool */;
3883 short int var_ /* var : Bool */;
3884 short int var22 /* : Bool */;
3885 int cltype;
3886 int idtype;
3887 static val* varonce;
3888 val* var23 /* : String */;
3889 char* var24 /* : NativeString */;
3890 long var25 /* : Int */;
3891 val* var26 /* : String */;
3892 val* var27 /* : nullable MClass */;
3893 val* var28 /* : MClassType */;
3894 val* var29 /* : MType */;
3895 val* var30 /* : null */;
3896 short int var31 /* : Bool */;
3897 short int var32 /* : Bool */;
3898 var_v = p0;
3899 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
3900 var_variable = var;
3901 var1 = NULL;
3902 if (var_variable == NULL) {
3903 var2 = 1; /* is null */
3904 } else {
3905 var2 = 0; /* arg is null but recv is not */
3906 }
3907 if (var2){
3908 goto RET_LABEL;
3909 } else {
3910 }
3911 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_type]))(self) /* n_type on <self:AVardeclExpr>*/;
3912 var_ntype = var3;
3913 var4 = NULL;
3914 if (var_ntype == NULL) {
3915 var5 = 1; /* is null */
3916 } else {
3917 var5 = 0; /* arg is null but recv is not */
3918 }
3919 if (var5){
3920 var6 = NULL;
3921 var_mtype = var6;
3922 } else {
3923 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
3924 var_mtype = var7;
3925 var8 = NULL;
3926 if (var_mtype == NULL) {
3927 var9 = 1; /* is null */
3928 } else {
3929 var9 = 0; /* arg is null but recv is not */
3930 }
3931 if (var9){
3932 goto RET_LABEL;
3933 } else {
3934 }
3935 }
3936 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
3937 var_nexpr = var10;
3938 var11 = NULL;
3939 if (var_nexpr == NULL) {
3940 var12 = 0; /* is null */
3941 } else {
3942 var12 = 1; /* arg is null and recv is not */
3943 }
3944 if (var12){
3945 var13 = NULL;
3946 if (var_mtype == NULL) {
3947 var14 = 0; /* is null */
3948 } else {
3949 var14 = 1; /* arg is null and recv is not */
3950 }
3951 if (var14){
3952 var15 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var_nexpr, var_mtype) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
3953 var15;
3954 } else {
3955 var16 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
3956 var_mtype = var16;
3957 var17 = NULL;
3958 if (var_mtype == NULL) {
3959 var18 = 1; /* is null */
3960 } else {
3961 var18 = 0; /* arg is null but recv is not */
3962 }
3963 if (var18){
3964 goto RET_LABEL;
3965 } else {
3966 }
3967 }
3968 } else {
3969 }
3970 var_decltype = var_mtype;
3971 var20 = NULL;
3972 if (var_mtype == NULL) {
3973 var21 = 1; /* is null */
3974 } else {
3975 var21 = 0; /* arg is null but recv is not */
3976 }
3977 var_ = var21;
3978 if (var21){
3979 var19 = var_;
3980 } else {
3981 /* <var_mtype:nullable MType(MType)> isa MNullType */
3982 cltype = type_model__MNullType.color;
3983 idtype = type_model__MNullType.id;
3984 if(cltype >= var_mtype->type->table_size) {
3985 var22 = 0;
3986 } else {
3987 var22 = var_mtype->type->type_table[cltype] == idtype;
3988 }
3989 var19 = var22;
3990 }
3991 if (var19){
3992 if (varonce) {
3993 var23 = varonce;
3994 } else {
3995 var24 = "Object";
3996 var25 = 6;
3997 var26 = string__NativeString__to_s_with_length(var24, var25);
3998 var23 = var26;
3999 varonce = var23;
4000 }
4001 var27 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var23) /* get_mclass on <var_v:TypeVisitor>*/;
4002 if (var27 == NULL) {
4003 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4004 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 592);
4005 show_backtrace(1);
4006 } else {
4007 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClass__mclass_type]))(var27) /* mclass_type on <var27:nullable MClass>*/;
4008 }
4009 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MType__as_nullable]))(var28) /* as_nullable on <var28:MClassType>*/;
4010 var_decltype = var29;
4011 var30 = NULL;
4012 if (var_mtype == NULL) {
4013 var31 = 1; /* is null */
4014 } else {
4015 var31 = 0; /* arg is null but recv is not */
4016 }
4017 if (var31){
4018 var_mtype = var_decltype;
4019 } else {
4020 }
4021 } else {
4022 }
4023 ((void (*)(val*, val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_variable, var_decltype) /* declared_type= on <var_variable:nullable Variable(Variable)>*/;
4024 ((void (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__set_variable]))(var_v, self, var_variable, var_mtype) /* set_variable on <var_v:TypeVisitor>*/;
4025 var32 = 1;
4026 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var32) /* is_typed= on <self:AVardeclExpr>*/;
4027 RET_LABEL:;
4028 }
4029 /* method typing#AVardeclExpr#accept_typing for (self: Object, TypeVisitor) */
4030 void VIRTUAL_typing__AVardeclExpr__accept_typing(val* self, val* p0) {
4031 typing__AVardeclExpr__accept_typing(self, p0);
4032 RET_LABEL:;
4033 }
4034 /* method typing#AVarExpr#its_variable for (self: AVarExpr): nullable Variable */
4035 val* typing__AVarExpr__its_variable(val* self) {
4036 val* var /* : nullable Variable */;
4037 val* var1 /* : nullable Variable */;
4038 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4039 var = var1;
4040 goto RET_LABEL;
4041 RET_LABEL:;
4042 return var;
4043 }
4044 /* method typing#AVarExpr#its_variable for (self: Object): nullable Variable */
4045 val* VIRTUAL_typing__AVarExpr__its_variable(val* self) {
4046 val* var /* : nullable Variable */;
4047 val* var1 /* : nullable Variable */;
4048 var1 = typing__AVarExpr__its_variable(self);
4049 var = var1;
4050 RET_LABEL:;
4051 return var;
4052 }
4053 /* method typing#AVarExpr#accept_typing for (self: AVarExpr, TypeVisitor) */
4054 void typing__AVarExpr__accept_typing(val* self, val* p0) {
4055 val* var_v /* var v: TypeVisitor */;
4056 val* var /* : nullable Variable */;
4057 val* var_variable /* var variable: nullable Variable */;
4058 val* var1 /* : null */;
4059 short int var2 /* : Bool */;
4060 val* var3 /* : nullable MType */;
4061 val* var_mtype /* var mtype: nullable MType */;
4062 val* var4 /* : null */;
4063 short int var5 /* : Bool */;
4064 var_v = p0;
4065 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4066 var_variable = var;
4067 var1 = NULL;
4068 if (var_variable == NULL) {
4069 var2 = 1; /* is null */
4070 } else {
4071 var2 = 0; /* arg is null but recv is not */
4072 }
4073 if (var2){
4074 goto RET_LABEL;
4075 } else {
4076 }
4077 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_variable]))(var_v, self, var_variable) /* get_variable on <var_v:TypeVisitor>*/;
4078 var_mtype = var3;
4079 var4 = NULL;
4080 if (var_mtype == NULL) {
4081 var5 = 0; /* is null */
4082 } else {
4083 var5 = 1; /* arg is null and recv is not */
4084 }
4085 if (var5){
4086 } else {
4087 }
4088 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AVarExpr>*/;
4089 RET_LABEL:;
4090 }
4091 /* method typing#AVarExpr#accept_typing for (self: Object, TypeVisitor) */
4092 void VIRTUAL_typing__AVarExpr__accept_typing(val* self, val* p0) {
4093 typing__AVarExpr__accept_typing(self, p0);
4094 RET_LABEL:;
4095 }
4096 /* method typing#AVarAssignExpr#accept_typing for (self: AVarAssignExpr, TypeVisitor) */
4097 void typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4098 val* var_v /* var v: TypeVisitor */;
4099 val* var /* : nullable Variable */;
4100 val* var_variable /* var variable: nullable Variable */;
4101 val* var1 /* : null */;
4102 short int var2 /* : Bool */;
4103 val* var3 /* : AExpr */;
4104 val* var4 /* : nullable MType */;
4105 val* var5 /* : nullable MType */;
4106 val* var_mtype /* var mtype: nullable MType */;
4107 short int var6 /* : Bool */;
4108 var_v = p0;
4109 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarAssignExpr>*/;
4110 var_variable = var;
4111 var1 = NULL;
4112 if (var_variable == NULL) {
4113 var2 = 0; /* is null */
4114 } else {
4115 var2 = 1; /* arg is null and recv is not */
4116 }
4117 if (!var2) {
4118 fprintf(stderr, "Runtime error: %s", "Assert failed");
4119 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 627);
4120 show_backtrace(1);
4121 }
4122 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AVarAssignExpr>*/;
4123 var4 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4124 var5 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var3, var4) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
4125 var_mtype = var5;
4126 ((void (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__set_variable]))(var_v, self, var_variable, var_mtype) /* set_variable on <var_v:TypeVisitor>*/;
4127 var6 = 1;
4128 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var6) /* is_typed= on <self:AVarAssignExpr>*/;
4129 RET_LABEL:;
4130 }
4131 /* method typing#AVarAssignExpr#accept_typing for (self: Object, TypeVisitor) */
4132 void VIRTUAL_typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4133 typing__AVarAssignExpr__accept_typing(self, p0);
4134 RET_LABEL:;
4135 }
4136 /* method typing#AReassignFormExpr#reassign_callsite for (self: AReassignFormExpr): nullable CallSite */
4137 val* typing__AReassignFormExpr__reassign_callsite(val* self) {
4138 val* var /* : nullable CallSite */;
4139 val* var1 /* : nullable CallSite */;
4140 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val; /* @reassign_callsite on <self:AReassignFormExpr> */
4141 var = var1;
4142 RET_LABEL:;
4143 return var;
4144 }
4145 /* method typing#AReassignFormExpr#reassign_callsite for (self: Object): nullable CallSite */
4146 val* VIRTUAL_typing__AReassignFormExpr__reassign_callsite(val* self) {
4147 val* var /* : nullable CallSite */;
4148 val* var1 /* : nullable CallSite */;
4149 var1 = typing__AReassignFormExpr__reassign_callsite(self);
4150 var = var1;
4151 RET_LABEL:;
4152 return var;
4153 }
4154 /* method typing#AReassignFormExpr#reassign_callsite= for (self: AReassignFormExpr, nullable CallSite) */
4155 void typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4156 self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val = p0; /* @reassign_callsite on <self:AReassignFormExpr> */
4157 RET_LABEL:;
4158 }
4159 /* method typing#AReassignFormExpr#reassign_callsite= for (self: Object, nullable CallSite) */
4160 void VIRTUAL_typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4161 typing__AReassignFormExpr__reassign_callsite_61d(self, p0);
4162 RET_LABEL:;
4163 }
4164 /* method typing#AReassignFormExpr#read_type for (self: AReassignFormExpr): nullable MType */
4165 val* typing__AReassignFormExpr__read_type(val* self) {
4166 val* var /* : nullable MType */;
4167 val* var1 /* : nullable MType */;
4168 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val; /* @read_type on <self:AReassignFormExpr> */
4169 var = var1;
4170 RET_LABEL:;
4171 return var;
4172 }
4173 /* method typing#AReassignFormExpr#read_type for (self: Object): nullable MType */
4174 val* VIRTUAL_typing__AReassignFormExpr__read_type(val* self) {
4175 val* var /* : nullable MType */;
4176 val* var1 /* : nullable MType */;
4177 var1 = typing__AReassignFormExpr__read_type(self);
4178 var = var1;
4179 RET_LABEL:;
4180 return var;
4181 }
4182 /* method typing#AReassignFormExpr#read_type= for (self: AReassignFormExpr, nullable MType) */
4183 void typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4184 self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val = p0; /* @read_type on <self:AReassignFormExpr> */
4185 RET_LABEL:;
4186 }
4187 /* method typing#AReassignFormExpr#read_type= for (self: Object, nullable MType) */
4188 void VIRTUAL_typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4189 typing__AReassignFormExpr__read_type_61d(self, p0);
4190 RET_LABEL:;
4191 }
4192 /* method typing#AReassignFormExpr#resolve_reassignment for (self: AReassignFormExpr, TypeVisitor, MType, MType): nullable MType */
4193 val* typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4194 val* var /* : nullable MType */;
4195 val* var_v /* var v: TypeVisitor */;
4196 val* var_readtype /* var readtype: MType */;
4197 val* var_writetype /* var writetype: MType */;
4198 val* var1 /* : AAssignOp */;
4199 short int var2 /* : Bool */;
4200 int cltype;
4201 int idtype;
4202 static val* varonce;
4203 val* var3 /* : String */;
4204 char* var4 /* : NativeString */;
4205 long var5 /* : Int */;
4206 val* var6 /* : String */;
4207 val* var_reassign_name /* var reassign_name: String */;
4208 val* var7 /* : AAssignOp */;
4209 short int var8 /* : Bool */;
4210 int cltype9;
4211 int idtype10;
4212 static val* varonce11;
4213 val* var12 /* : String */;
4214 char* var13 /* : NativeString */;
4215 long var14 /* : Int */;
4216 val* var15 /* : String */;
4217 short int var16 /* : Bool */;
4218 int cltype17;
4219 int idtype18;
4220 static val* varonce19;
4221 val* var20 /* : String */;
4222 char* var21 /* : NativeString */;
4223 long var22 /* : Int */;
4224 val* var23 /* : String */;
4225 static val* varonce24;
4226 val* var25 /* : String */;
4227 char* var26 /* : NativeString */;
4228 long var27 /* : Int */;
4229 val* var28 /* : String */;
4230 val* var29 /* : Array[Object] */;
4231 long var30 /* : Int */;
4232 val* var31 /* : NativeArray[Object] */;
4233 val* var32 /* : String */;
4234 val* var33 /* : null */;
4235 short int var34 /* : Bool */;
4236 val* var35 /* : nullable CallSite */;
4237 val* var_callsite /* var callsite: nullable CallSite */;
4238 val* var36 /* : null */;
4239 short int var37 /* : Bool */;
4240 val* var38 /* : null */;
4241 val* var39 /* : MSignature */;
4242 val* var_msignature /* var msignature: MSignature */;
4243 val* var40 /* : nullable MType */;
4244 val* var_rettype /* var rettype: nullable MType */;
4245 short int var41 /* : Bool */;
4246 long var42 /* : Int */;
4247 long var43 /* : Int */;
4248 short int var44 /* : Bool */;
4249 short int var46 /* : Bool */;
4250 short int var_ /* var : Bool */;
4251 val* var47 /* : null */;
4252 short int var48 /* : Bool */;
4253 val* var49 /* : AExpr */;
4254 val* var50 /* : Array[MParameter] */;
4255 val* var51 /* : nullable Object */;
4256 val* var52 /* : MType */;
4257 val* var53 /* : nullable MType */;
4258 val* var_value_type /* var value_type: nullable MType */;
4259 val* var54 /* : null */;
4260 short int var55 /* : Bool */;
4261 val* var56 /* : null */;
4262 val* var57 /* : nullable MType */;
4263 var_v = p0;
4264 var_readtype = p1;
4265 var_writetype = p2;
4266 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4267 /* <var1:AAssignOp> isa APlusAssignOp */
4268 cltype = type_parser_nodes__APlusAssignOp.color;
4269 idtype = type_parser_nodes__APlusAssignOp.id;
4270 if(cltype >= var1->type->table_size) {
4271 var2 = 0;
4272 } else {
4273 var2 = var1->type->type_table[cltype] == idtype;
4274 }
4275 if (var2){
4276 if (varonce) {
4277 var3 = varonce;
4278 } else {
4279 var4 = "+";
4280 var5 = 1;
4281 var6 = string__NativeString__to_s_with_length(var4, var5);
4282 var3 = var6;
4283 varonce = var3;
4284 }
4285 var_reassign_name = var3;
4286 } else {
4287 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4288 /* <var7:AAssignOp> isa AMinusAssignOp */
4289 cltype9 = type_parser_nodes__AMinusAssignOp.color;
4290 idtype10 = type_parser_nodes__AMinusAssignOp.id;
4291 if(cltype9 >= var7->type->table_size) {
4292 var8 = 0;
4293 } else {
4294 var8 = var7->type->type_table[cltype9] == idtype10;
4295 }
4296 if (var8){
4297 if (varonce11) {
4298 var12 = varonce11;
4299 } else {
4300 var13 = "-";
4301 var14 = 1;
4302 var15 = string__NativeString__to_s_with_length(var13, var14);
4303 var12 = var15;
4304 varonce11 = var12;
4305 }
4306 var_reassign_name = var12;
4307 } else {
4308 fprintf(stderr, "Runtime error: %s", "Aborted");
4309 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 656);
4310 show_backtrace(1);
4311 }
4312 }
4313 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type_61d]))(self, var_readtype) /* read_type= on <self:AReassignFormExpr>*/;
4314 /* <var_readtype:MType> isa MNullType */
4315 cltype17 = type_model__MNullType.color;
4316 idtype18 = type_model__MNullType.id;
4317 if(cltype17 >= var_readtype->type->table_size) {
4318 var16 = 0;
4319 } else {
4320 var16 = var_readtype->type->type_table[cltype17] == idtype18;
4321 }
4322 if (var16){
4323 if (varonce19) {
4324 var20 = varonce19;
4325 } else {
4326 var21 = "Error: Method \'";
4327 var22 = 15;
4328 var23 = string__NativeString__to_s_with_length(var21, var22);
4329 var20 = var23;
4330 varonce19 = var20;
4331 }
4332 if (varonce24) {
4333 var25 = varonce24;
4334 } else {
4335 var26 = "\' call on \'null\'.";
4336 var27 = 17;
4337 var28 = string__NativeString__to_s_with_length(var26, var27);
4338 var25 = var28;
4339 varonce24 = var25;
4340 }
4341 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
4342 { /* var29 = array_instance Array[Object] */
4343 var30 = 3;
4344 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
4345 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var20;
4346 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_reassign_name;
4347 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
4348 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
4349 }
4350 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
4351 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
4352 var33 = NULL;
4353 var = var33;
4354 goto RET_LABEL;
4355 } else {
4356 }
4357 var34 = 0;
4358 var35 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_readtype, var_reassign_name, var34) /* get_method on <var_v:TypeVisitor>*/;
4359 var_callsite = var35;
4360 var36 = NULL;
4361 if (var_callsite == NULL) {
4362 var37 = 1; /* is null */
4363 } else {
4364 var37 = 0; /* arg is null but recv is not */
4365 }
4366 if (var37){
4367 var38 = NULL;
4368 var = var38;
4369 goto RET_LABEL;
4370 } else {
4371 }
4372 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite_61d]))(self, var_callsite) /* reassign_callsite= on <self:AReassignFormExpr>*/;
4373 var39 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
4374 var_msignature = var39;
4375 var40 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
4376 var_rettype = var40;
4377 var42 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
4378 var43 = 1;
4379 { /* Inline kernel#Int#== (var42,var43) */
4380 var46 = var42 == var43;
4381 var44 = var46;
4382 goto RET_LABEL45;
4383 RET_LABEL45:(void)0;
4384 }
4385 var_ = var44;
4386 if (var44){
4387 var47 = NULL;
4388 if (var_rettype == NULL) {
4389 var48 = 0; /* is null */
4390 } else {
4391 var48 = 1; /* arg is null and recv is not */
4392 }
4393 var41 = var48;
4394 } else {
4395 var41 = var_;
4396 }
4397 if (!var41) {
4398 fprintf(stderr, "Runtime error: %s", "Assert failed");
4399 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 672);
4400 show_backtrace(1);
4401 }
4402 var49 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AReassignFormExpr>*/;
4403 var50 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
4404 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__first]))(var50) /* first on <var50:Array[MParameter]>*/;
4405 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_model__MParameter__mtype]))(var51) /* mtype on <var51:nullable Object(MParameter)>*/;
4406 var53 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var49, var52) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
4407 var_value_type = var53;
4408 var54 = NULL;
4409 if (var_value_type == NULL) {
4410 var55 = 1; /* is null */
4411 } else {
4412 var55 = 0; /* arg is null but recv is not */
4413 }
4414 if (var55){
4415 var56 = NULL;
4416 var = var56;
4417 goto RET_LABEL;
4418 } else {
4419 }
4420 var57 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_subtype]))(var_v, self, var_rettype, var_writetype) /* check_subtype on <var_v:TypeVisitor>*/;
4421 var57;
4422 var = var_rettype;
4423 goto RET_LABEL;
4424 RET_LABEL:;
4425 return var;
4426 }
4427 /* method typing#AReassignFormExpr#resolve_reassignment for (self: Object, TypeVisitor, MType, MType): nullable MType */
4428 val* VIRTUAL_typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4429 val* var /* : nullable MType */;
4430 val* var1 /* : nullable MType */;
4431 var1 = typing__AReassignFormExpr__resolve_reassignment(self, p0, p1, p2);
4432 var = var1;
4433 RET_LABEL:;
4434 return var;
4435 }
4436 /* method typing#AVarReassignExpr#accept_typing for (self: AVarReassignExpr, TypeVisitor) */
4437 void typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4438 val* var_v /* var v: TypeVisitor */;
4439 val* var /* : nullable Variable */;
4440 val* var_variable /* var variable: nullable Variable */;
4441 val* var1 /* : null */;
4442 short int var2 /* : Bool */;
4443 val* var3 /* : nullable MType */;
4444 val* var_readtype /* var readtype: nullable MType */;
4445 val* var4 /* : null */;
4446 short int var5 /* : Bool */;
4447 val* var6 /* : nullable MType */;
4448 val* var_writetype /* var writetype: nullable MType */;
4449 val* var7 /* : null */;
4450 short int var8 /* : Bool */;
4451 val* var9 /* : nullable MType */;
4452 val* var_rettype /* var rettype: nullable MType */;
4453 short int var10 /* : Bool */;
4454 var_v = p0;
4455 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
4456 var_variable = var;
4457 var1 = NULL;
4458 if (var_variable == NULL) {
4459 var2 = 0; /* is null */
4460 } else {
4461 var2 = 1; /* arg is null and recv is not */
4462 }
4463 if (!var2) {
4464 fprintf(stderr, "Runtime error: %s", "Assert failed");
4465 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 686);
4466 show_backtrace(1);
4467 }
4468 var3 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_variable]))(var_v, self, var_variable) /* get_variable on <var_v:TypeVisitor>*/;
4469 var_readtype = var3;
4470 var4 = NULL;
4471 if (var_readtype == NULL) {
4472 var5 = 1; /* is null */
4473 } else {
4474 var5 = 0; /* arg is null but recv is not */
4475 }
4476 if (var5){
4477 goto RET_LABEL;
4478 } else {
4479 }
4480 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type_61d]))(self, var_readtype) /* read_type= on <self:AVarReassignExpr>*/;
4481 var6 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4482 var_writetype = var6;
4483 var7 = NULL;
4484 if (var_writetype == NULL) {
4485 var8 = 1; /* is null */
4486 } else {
4487 var8 = 0; /* arg is null but recv is not */
4488 }
4489 if (var8){
4490 goto RET_LABEL;
4491 } else {
4492 }
4493 var9 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__resolve_reassignment]))(self, var_v, var_readtype, var_writetype) /* resolve_reassignment on <self:AVarReassignExpr>*/;
4494 var_rettype = var9;
4495 ((void (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__set_variable]))(var_v, self, var_variable, var_rettype) /* set_variable on <var_v:TypeVisitor>*/;
4496 var10 = 1;
4497 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var10) /* is_typed= on <self:AVarReassignExpr>*/;
4498 RET_LABEL:;
4499 }
4500 /* method typing#AVarReassignExpr#accept_typing for (self: Object, TypeVisitor) */
4501 void VIRTUAL_typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4502 typing__AVarReassignExpr__accept_typing(self, p0);
4503 RET_LABEL:;
4504 }
4505 /* method typing#AContinueExpr#accept_typing for (self: AContinueExpr, TypeVisitor) */
4506 void typing__AContinueExpr__accept_typing(val* self, val* p0) {
4507 val* var_v /* var v: TypeVisitor */;
4508 val* var /* : nullable AExpr */;
4509 val* var_nexpr /* var nexpr: nullable AExpr */;
4510 val* var1 /* : null */;
4511 short int var2 /* : Bool */;
4512 val* var3 /* : nullable MType */;
4513 val* var_mtype /* var mtype: nullable MType */;
4514 short int var4 /* : Bool */;
4515 var_v = p0;
4516 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AContinueExpr__n_expr]))(self) /* n_expr on <self:AContinueExpr>*/;
4517 var_nexpr = var;
4518 var1 = NULL;
4519 if (var_nexpr == NULL) {
4520 var2 = 0; /* is null */
4521 } else {
4522 var2 = 1; /* arg is null and recv is not */
4523 }
4524 if (var2){
4525 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4526 var_mtype = var3;
4527 } else {
4528 }
4529 var4 = 1;
4530 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AContinueExpr>*/;
4531 RET_LABEL:;
4532 }
4533 /* method typing#AContinueExpr#accept_typing for (self: Object, TypeVisitor) */
4534 void VIRTUAL_typing__AContinueExpr__accept_typing(val* self, val* p0) {
4535 typing__AContinueExpr__accept_typing(self, p0);
4536 RET_LABEL:;
4537 }
4538 /* method typing#ABreakExpr#accept_typing for (self: ABreakExpr, TypeVisitor) */
4539 void typing__ABreakExpr__accept_typing(val* self, val* p0) {
4540 val* var_v /* var v: TypeVisitor */;
4541 val* var /* : nullable AExpr */;
4542 val* var_nexpr /* var nexpr: nullable AExpr */;
4543 val* var1 /* : null */;
4544 short int var2 /* : Bool */;
4545 val* var3 /* : nullable MType */;
4546 val* var_mtype /* var mtype: nullable MType */;
4547 short int var4 /* : Bool */;
4548 var_v = p0;
4549 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABreakExpr__n_expr]))(self) /* n_expr on <self:ABreakExpr>*/;
4550 var_nexpr = var;
4551 var1 = NULL;
4552 if (var_nexpr == NULL) {
4553 var2 = 0; /* is null */
4554 } else {
4555 var2 = 1; /* arg is null and recv is not */
4556 }
4557 if (var2){
4558 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4559 var_mtype = var3;
4560 } else {
4561 }
4562 var4 = 1;
4563 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABreakExpr>*/;
4564 RET_LABEL:;
4565 }
4566 /* method typing#ABreakExpr#accept_typing for (self: Object, TypeVisitor) */
4567 void VIRTUAL_typing__ABreakExpr__accept_typing(val* self, val* p0) {
4568 typing__ABreakExpr__accept_typing(self, p0);
4569 RET_LABEL:;
4570 }
4571 /* method typing#AReturnExpr#accept_typing for (self: AReturnExpr, TypeVisitor) */
4572 void typing__AReturnExpr__accept_typing(val* self, val* p0) {
4573 val* var_v /* var v: TypeVisitor */;
4574 val* var /* : nullable AExpr */;
4575 val* var_nexpr /* var nexpr: nullable AExpr */;
4576 val* var1 /* : MPropDef */;
4577 short int var2 /* : Bool */;
4578 int cltype;
4579 int idtype;
4580 const char* var_class_name;
4581 val* var3 /* : nullable MSignature */;
4582 val* var4 /* : nullable MType */;
4583 val* var_ret_type /* var ret_type: nullable MType */;
4584 val* var5 /* : null */;
4585 short int var6 /* : Bool */;
4586 val* var7 /* : null */;
4587 short int var8 /* : Bool */;
4588 val* var9 /* : nullable MType */;
4589 val* var_mtype /* var mtype: nullable MType */;
4590 val* var10 /* : nullable MType */;
4591 val* var_mtype11 /* var mtype: nullable MType */;
4592 static val* varonce;
4593 val* var12 /* : String */;
4594 char* var13 /* : NativeString */;
4595 long var14 /* : Int */;
4596 val* var15 /* : String */;
4597 val* var16 /* : null */;
4598 short int var17 /* : Bool */;
4599 static val* varonce18;
4600 val* var19 /* : String */;
4601 char* var20 /* : NativeString */;
4602 long var21 /* : Int */;
4603 val* var22 /* : String */;
4604 short int var23 /* : Bool */;
4605 var_v = p0;
4606 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReturnExpr__n_expr]))(self) /* n_expr on <self:AReturnExpr>*/;
4607 var_nexpr = var;
4608 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
4609 /* <var1:MPropDef> isa MMethodDef */
4610 cltype = type_model__MMethodDef.color;
4611 idtype = type_model__MMethodDef.id;
4612 if(cltype >= var1->type->table_size) {
4613 var2 = 0;
4614 } else {
4615 var2 = var1->type->type_table[cltype] == idtype;
4616 }
4617 if (!var2) {
4618 var_class_name = var1 == NULL ? "null" : var1->type->name;
4619 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name);
4620 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 731);
4621 show_backtrace(1);
4622 }
4623 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MMethodDef__msignature]))(var1) /* msignature on <var1:MPropDef(MMethodDef)>*/;
4624 if (var3 == NULL) {
4625 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4626 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 731);
4627 show_backtrace(1);
4628 } else {
4629 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MSignature__return_mtype]))(var3) /* return_mtype on <var3:nullable MSignature>*/;
4630 }
4631 var_ret_type = var4;
4632 var5 = NULL;
4633 if (var_nexpr == NULL) {
4634 var6 = 0; /* is null */
4635 } else {
4636 var6 = 1; /* arg is null and recv is not */
4637 }
4638 if (var6){
4639 var7 = NULL;
4640 if (var_ret_type == NULL) {
4641 var8 = 0; /* is null */
4642 } else {
4643 var8 = 1; /* arg is null and recv is not */
4644 }
4645 if (var8){
4646 var9 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var_nexpr, var_ret_type) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
4647 var_mtype = var9;
4648 } else {
4649 var10 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4650 var_mtype11 = var10;
4651 if (varonce) {
4652 var12 = varonce;
4653 } else {
4654 var13 = "Error: Return with value in a procedure.";
4655 var14 = 40;
4656 var15 = string__NativeString__to_s_with_length(var13, var14);
4657 var12 = var15;
4658 varonce = var12;
4659 }
4660 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var12) /* error on <var_v:TypeVisitor>*/;
4661 }
4662 } else {
4663 var16 = NULL;
4664 if (var_ret_type == NULL) {
4665 var17 = 0; /* is null */
4666 } else {
4667 var17 = 1; /* arg is null and recv is not */
4668 }
4669 if (var17){
4670 if (varonce18) {
4671 var19 = varonce18;
4672 } else {
4673 var20 = "Error: Return without value in a function.";
4674 var21 = 42;
4675 var22 = string__NativeString__to_s_with_length(var20, var21);
4676 var19 = var22;
4677 varonce18 = var19;
4678 }
4679 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var19) /* error on <var_v:TypeVisitor>*/;
4680 } else {
4681 }
4682 }
4683 var23 = 1;
4684 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var23) /* is_typed= on <self:AReturnExpr>*/;
4685 RET_LABEL:;
4686 }
4687 /* method typing#AReturnExpr#accept_typing for (self: Object, TypeVisitor) */
4688 void VIRTUAL_typing__AReturnExpr__accept_typing(val* self, val* p0) {
4689 typing__AReturnExpr__accept_typing(self, p0);
4690 RET_LABEL:;
4691 }
4692 /* method typing#AAbortExpr#accept_typing for (self: AAbortExpr, TypeVisitor) */
4693 void typing__AAbortExpr__accept_typing(val* self, val* p0) {
4694 val* var_v /* var v: TypeVisitor */;
4695 short int var /* : Bool */;
4696 var_v = p0;
4697 var = 1;
4698 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var) /* is_typed= on <self:AAbortExpr>*/;
4699 RET_LABEL:;
4700 }
4701 /* method typing#AAbortExpr#accept_typing for (self: Object, TypeVisitor) */
4702 void VIRTUAL_typing__AAbortExpr__accept_typing(val* self, val* p0) {
4703 typing__AAbortExpr__accept_typing(self, p0);
4704 RET_LABEL:;
4705 }
4706 /* method typing#AIfExpr#accept_typing for (self: AIfExpr, TypeVisitor) */
4707 void typing__AIfExpr__accept_typing(val* self, val* p0) {
4708 val* var_v /* var v: TypeVisitor */;
4709 val* var /* : AExpr */;
4710 val* var1 /* : nullable MType */;
4711 val* var2 /* : nullable AExpr */;
4712 val* var3 /* : nullable AExpr */;
4713 short int var4 /* : Bool */;
4714 var_v = p0;
4715 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
4716 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4717 var1;
4718 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
4719 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
4720 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
4721 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var3) /* visit_stmt on <var_v:TypeVisitor>*/;
4722 var4 = 1;
4723 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AIfExpr>*/;
4724 RET_LABEL:;
4725 }
4726 /* method typing#AIfExpr#accept_typing for (self: Object, TypeVisitor) */
4727 void VIRTUAL_typing__AIfExpr__accept_typing(val* self, val* p0) {
4728 typing__AIfExpr__accept_typing(self, p0);
4729 RET_LABEL:;
4730 }
4731 /* method typing#AIfexprExpr#accept_typing for (self: AIfexprExpr, TypeVisitor) */
4732 void typing__AIfexprExpr__accept_typing(val* self, val* p0) {
4733 val* var_v /* var v: TypeVisitor */;
4734 val* var /* : AExpr */;
4735 val* var1 /* : nullable MType */;
4736 val* var2 /* : AExpr */;
4737 val* var3 /* : nullable MType */;
4738 val* var_t1 /* var t1: nullable MType */;
4739 val* var4 /* : AExpr */;
4740 val* var5 /* : nullable MType */;
4741 val* var_t2 /* var t2: nullable MType */;
4742 short int var6 /* : Bool */;
4743 val* var7 /* : null */;
4744 short int var8 /* : Bool */;
4745 short int var_ /* var : Bool */;
4746 val* var9 /* : null */;
4747 short int var10 /* : Bool */;
4748 val* var11 /* : Array[MType] */;
4749 long var12 /* : Int */;
4750 val* var13 /* : NativeArray[MType] */;
4751 val* var14 /* : nullable MType */;
4752 val* var_t /* var t: nullable MType */;
4753 val* var15 /* : null */;
4754 short int var16 /* : Bool */;
4755 static val* varonce;
4756 val* var17 /* : String */;
4757 char* var18 /* : NativeString */;
4758 long var19 /* : Int */;
4759 val* var20 /* : String */;
4760 static val* varonce21;
4761 val* var22 /* : String */;
4762 char* var23 /* : NativeString */;
4763 long var24 /* : Int */;
4764 val* var25 /* : String */;
4765 val* var26 /* : Array[Object] */;
4766 long var27 /* : Int */;
4767 val* var28 /* : NativeArray[Object] */;
4768 val* var29 /* : String */;
4769 var_v = p0;
4770 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
4771 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4772 var1;
4773 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
4774 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
4775 var_t1 = var3;
4776 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
4777 var5 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var4) /* visit_expr on <var_v:TypeVisitor>*/;
4778 var_t2 = var5;
4779 var7 = NULL;
4780 if (var_t1 == NULL) {
4781 var8 = 1; /* is null */
4782 } else {
4783 var8 = 0; /* arg is null but recv is not */
4784 }
4785 var_ = var8;
4786 if (var8){
4787 var6 = var_;
4788 } else {
4789 var9 = NULL;
4790 if (var_t2 == NULL) {
4791 var10 = 1; /* is null */
4792 } else {
4793 var10 = 0; /* arg is null but recv is not */
4794 }
4795 var6 = var10;
4796 }
4797 if (var6){
4798 goto RET_LABEL;
4799 } else {
4800 }
4801 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
4802 { /* var11 = array_instance Array[MType] */
4803 var12 = 2;
4804 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
4805 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
4806 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
4807 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
4808 }
4809 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
4810 var_t = var14;
4811 var15 = NULL;
4812 if (var_t == NULL) {
4813 var16 = 1; /* is null */
4814 } else {
4815 var16 = 0; /* arg is null but recv is not */
4816 }
4817 if (var16){
4818 if (varonce) {
4819 var17 = varonce;
4820 } else {
4821 var18 = "Type Error: ambiguous type ";
4822 var19 = 27;
4823 var20 = string__NativeString__to_s_with_length(var18, var19);
4824 var17 = var20;
4825 varonce = var17;
4826 }
4827 if (varonce21) {
4828 var22 = varonce21;
4829 } else {
4830 var23 = " vs ";
4831 var24 = 4;
4832 var25 = string__NativeString__to_s_with_length(var23, var24);
4833 var22 = var25;
4834 varonce21 = var22;
4835 }
4836 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
4837 { /* var26 = array_instance Array[Object] */
4838 var27 = 4;
4839 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
4840 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
4841 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_t1;
4842 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
4843 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var_t2;
4844 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
4845 }
4846 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
4847 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var29) /* error on <var_v:TypeVisitor>*/;
4848 } else {
4849 }
4850 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AIfexprExpr>*/;
4851 RET_LABEL:;
4852 }
4853 /* method typing#AIfexprExpr#accept_typing for (self: Object, TypeVisitor) */
4854 void VIRTUAL_typing__AIfexprExpr__accept_typing(val* self, val* p0) {
4855 typing__AIfexprExpr__accept_typing(self, p0);
4856 RET_LABEL:;
4857 }
4858 /* method typing#ADoExpr#accept_typing for (self: ADoExpr, TypeVisitor) */
4859 void typing__ADoExpr__accept_typing(val* self, val* p0) {
4860 val* var_v /* var v: TypeVisitor */;
4861 val* var /* : nullable AExpr */;
4862 short int var1 /* : Bool */;
4863 var_v = p0;
4864 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADoExpr__n_block]))(self) /* n_block on <self:ADoExpr>*/;
4865 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var) /* visit_stmt on <var_v:TypeVisitor>*/;
4866 var1 = 1;
4867 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var1) /* is_typed= on <self:ADoExpr>*/;
4868 RET_LABEL:;
4869 }
4870 /* method typing#ADoExpr#accept_typing for (self: Object, TypeVisitor) */
4871 void VIRTUAL_typing__ADoExpr__accept_typing(val* self, val* p0) {
4872 typing__ADoExpr__accept_typing(self, p0);
4873 RET_LABEL:;
4874 }
4875 /* method typing#AWhileExpr#accept_typing for (self: AWhileExpr, TypeVisitor) */
4876 void typing__AWhileExpr__accept_typing(val* self, val* p0) {
4877 val* var_v /* var v: TypeVisitor */;
4878 val* var /* : AExpr */;
4879 val* var1 /* : nullable MType */;
4880 val* var2 /* : nullable AExpr */;
4881 short int var3 /* : Bool */;
4882 var_v = p0;
4883 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on <self:AWhileExpr>*/;
4884 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4885 var1;
4886 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on <self:AWhileExpr>*/;
4887 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
4888 var3 = 1;
4889 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AWhileExpr>*/;
4890 RET_LABEL:;
4891 }
4892 /* method typing#AWhileExpr#accept_typing for (self: Object, TypeVisitor) */
4893 void VIRTUAL_typing__AWhileExpr__accept_typing(val* self, val* p0) {
4894 typing__AWhileExpr__accept_typing(self, p0);
4895 RET_LABEL:;
4896 }
4897 /* method typing#ALoopExpr#accept_typing for (self: ALoopExpr, TypeVisitor) */
4898 void typing__ALoopExpr__accept_typing(val* self, val* p0) {
4899 val* var_v /* var v: TypeVisitor */;
4900 val* var /* : nullable AExpr */;
4901 short int var1 /* : Bool */;
4902 var_v = p0;
4903 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on <self:ALoopExpr>*/;
4904 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var) /* visit_stmt on <var_v:TypeVisitor>*/;
4905 var1 = 1;
4906 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var1) /* is_typed= on <self:ALoopExpr>*/;
4907 RET_LABEL:;
4908 }
4909 /* method typing#ALoopExpr#accept_typing for (self: Object, TypeVisitor) */
4910 void VIRTUAL_typing__ALoopExpr__accept_typing(val* self, val* p0) {
4911 typing__ALoopExpr__accept_typing(self, p0);
4912 RET_LABEL:;
4913 }
4914 /* method typing#AForExpr#coltype for (self: AForExpr): nullable MClassType */
4915 val* typing__AForExpr__coltype(val* self) {
4916 val* var /* : nullable MClassType */;
4917 val* var1 /* : nullable MClassType */;
4918 var1 = self->attrs[COLOR_typing__AForExpr___64dcoltype].val; /* @coltype on <self:AForExpr> */
4919 var = var1;
4920 RET_LABEL:;
4921 return var;
4922 }
4923 /* method typing#AForExpr#coltype for (self: Object): nullable MClassType */
4924 val* VIRTUAL_typing__AForExpr__coltype(val* self) {
4925 val* var /* : nullable MClassType */;
4926 val* var1 /* : nullable MClassType */;
4927 var1 = typing__AForExpr__coltype(self);
4928 var = var1;
4929 RET_LABEL:;
4930 return var;
4931 }
4932 /* method typing#AForExpr#coltype= for (self: AForExpr, nullable MClassType) */
4933 void typing__AForExpr__coltype_61d(val* self, val* p0) {
4934 self->attrs[COLOR_typing__AForExpr___64dcoltype].val = p0; /* @coltype on <self:AForExpr> */
4935 RET_LABEL:;
4936 }
4937 /* method typing#AForExpr#coltype= for (self: Object, nullable MClassType) */
4938 void VIRTUAL_typing__AForExpr__coltype_61d(val* self, val* p0) {
4939 typing__AForExpr__coltype_61d(self, p0);
4940 RET_LABEL:;
4941 }
4942 /* method typing#AForExpr#method_iterator for (self: AForExpr): nullable MMethod */
4943 val* typing__AForExpr__method_iterator(val* self) {
4944 val* var /* : nullable MMethod */;
4945 val* var1 /* : nullable MMethod */;
4946 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_iterator].val; /* @method_iterator on <self:AForExpr> */
4947 var = var1;
4948 RET_LABEL:;
4949 return var;
4950 }
4951 /* method typing#AForExpr#method_iterator for (self: Object): nullable MMethod */
4952 val* VIRTUAL_typing__AForExpr__method_iterator(val* self) {
4953 val* var /* : nullable MMethod */;
4954 val* var1 /* : nullable MMethod */;
4955 var1 = typing__AForExpr__method_iterator(self);
4956 var = var1;
4957 RET_LABEL:;
4958 return var;
4959 }
4960 /* method typing#AForExpr#method_iterator= for (self: AForExpr, nullable MMethod) */
4961 void typing__AForExpr__method_iterator_61d(val* self, val* p0) {
4962 self->attrs[COLOR_typing__AForExpr___64dmethod_iterator].val = p0; /* @method_iterator on <self:AForExpr> */
4963 RET_LABEL:;
4964 }
4965 /* method typing#AForExpr#method_iterator= for (self: Object, nullable MMethod) */
4966 void VIRTUAL_typing__AForExpr__method_iterator_61d(val* self, val* p0) {
4967 typing__AForExpr__method_iterator_61d(self, p0);
4968 RET_LABEL:;
4969 }
4970 /* method typing#AForExpr#method_is_ok for (self: AForExpr): nullable MMethod */
4971 val* typing__AForExpr__method_is_ok(val* self) {
4972 val* var /* : nullable MMethod */;
4973 val* var1 /* : nullable MMethod */;
4974 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_is_ok].val; /* @method_is_ok on <self:AForExpr> */
4975 var = var1;
4976 RET_LABEL:;
4977 return var;
4978 }
4979 /* method typing#AForExpr#method_is_ok for (self: Object): nullable MMethod */
4980 val* VIRTUAL_typing__AForExpr__method_is_ok(val* self) {
4981 val* var /* : nullable MMethod */;
4982 val* var1 /* : nullable MMethod */;
4983 var1 = typing__AForExpr__method_is_ok(self);
4984 var = var1;
4985 RET_LABEL:;
4986 return var;
4987 }
4988 /* method typing#AForExpr#method_is_ok= for (self: AForExpr, nullable MMethod) */
4989 void typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
4990 self->attrs[COLOR_typing__AForExpr___64dmethod_is_ok].val = p0; /* @method_is_ok on <self:AForExpr> */
4991 RET_LABEL:;
4992 }
4993 /* method typing#AForExpr#method_is_ok= for (self: Object, nullable MMethod) */
4994 void VIRTUAL_typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
4995 typing__AForExpr__method_is_ok_61d(self, p0);
4996 RET_LABEL:;
4997 }
4998 /* method typing#AForExpr#method_item for (self: AForExpr): nullable MMethod */
4999 val* typing__AForExpr__method_item(val* self) {
5000 val* var /* : nullable MMethod */;
5001 val* var1 /* : nullable MMethod */;
5002 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_item].val; /* @method_item on <self:AForExpr> */
5003 var = var1;
5004 RET_LABEL:;
5005 return var;
5006 }
5007 /* method typing#AForExpr#method_item for (self: Object): nullable MMethod */
5008 val* VIRTUAL_typing__AForExpr__method_item(val* self) {
5009 val* var /* : nullable MMethod */;
5010 val* var1 /* : nullable MMethod */;
5011 var1 = typing__AForExpr__method_item(self);
5012 var = var1;
5013 RET_LABEL:;
5014 return var;
5015 }
5016 /* method typing#AForExpr#method_item= for (self: AForExpr, nullable MMethod) */
5017 void typing__AForExpr__method_item_61d(val* self, val* p0) {
5018 self->attrs[COLOR_typing__AForExpr___64dmethod_item].val = p0; /* @method_item on <self:AForExpr> */
5019 RET_LABEL:;
5020 }
5021 /* method typing#AForExpr#method_item= for (self: Object, nullable MMethod) */
5022 void VIRTUAL_typing__AForExpr__method_item_61d(val* self, val* p0) {
5023 typing__AForExpr__method_item_61d(self, p0);
5024 RET_LABEL:;
5025 }
5026 /* method typing#AForExpr#method_next for (self: AForExpr): nullable MMethod */
5027 val* typing__AForExpr__method_next(val* self) {
5028 val* var /* : nullable MMethod */;
5029 val* var1 /* : nullable MMethod */;
5030 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_next].val; /* @method_next on <self:AForExpr> */
5031 var = var1;
5032 RET_LABEL:;
5033 return var;
5034 }
5035 /* method typing#AForExpr#method_next for (self: Object): nullable MMethod */
5036 val* VIRTUAL_typing__AForExpr__method_next(val* self) {
5037 val* var /* : nullable MMethod */;
5038 val* var1 /* : nullable MMethod */;
5039 var1 = typing__AForExpr__method_next(self);
5040 var = var1;
5041 RET_LABEL:;
5042 return var;
5043 }
5044 /* method typing#AForExpr#method_next= for (self: AForExpr, nullable MMethod) */
5045 void typing__AForExpr__method_next_61d(val* self, val* p0) {
5046 self->attrs[COLOR_typing__AForExpr___64dmethod_next].val = p0; /* @method_next on <self:AForExpr> */
5047 RET_LABEL:;
5048 }
5049 /* method typing#AForExpr#method_next= for (self: Object, nullable MMethod) */
5050 void VIRTUAL_typing__AForExpr__method_next_61d(val* self, val* p0) {
5051 typing__AForExpr__method_next_61d(self, p0);
5052 RET_LABEL:;
5053 }
5054 /* method typing#AForExpr#method_key for (self: AForExpr): nullable MMethod */
5055 val* typing__AForExpr__method_key(val* self) {
5056 val* var /* : nullable MMethod */;
5057 val* var1 /* : nullable MMethod */;
5058 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_key].val; /* @method_key on <self:AForExpr> */
5059 var = var1;
5060 RET_LABEL:;
5061 return var;
5062 }
5063 /* method typing#AForExpr#method_key for (self: Object): nullable MMethod */
5064 val* VIRTUAL_typing__AForExpr__method_key(val* self) {
5065 val* var /* : nullable MMethod */;
5066 val* var1 /* : nullable MMethod */;
5067 var1 = typing__AForExpr__method_key(self);
5068 var = var1;
5069 RET_LABEL:;
5070 return var;
5071 }
5072 /* method typing#AForExpr#method_key= for (self: AForExpr, nullable MMethod) */
5073 void typing__AForExpr__method_key_61d(val* self, val* p0) {
5074 self->attrs[COLOR_typing__AForExpr___64dmethod_key].val = p0; /* @method_key on <self:AForExpr> */
5075 RET_LABEL:;
5076 }
5077 /* method typing#AForExpr#method_key= for (self: Object, nullable MMethod) */
5078 void VIRTUAL_typing__AForExpr__method_key_61d(val* self, val* p0) {
5079 typing__AForExpr__method_key_61d(self, p0);
5080 RET_LABEL:;
5081 }
5082 /* method typing#AForExpr#do_type_iterator for (self: AForExpr, TypeVisitor, MType) */
5083 void typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
5084 val* var_v /* var v: TypeVisitor */;
5085 val* var_mtype /* var mtype: MType */;
5086 short int var /* : Bool */;
5087 int cltype;
5088 int idtype;
5089 static val* varonce;
5090 val* var1 /* : String */;
5091 char* var2 /* : NativeString */;
5092 long var3 /* : Int */;
5093 val* var4 /* : String */;
5094 static val* varonce5;
5095 val* var6 /* : String */;
5096 char* var7 /* : NativeString */;
5097 long var8 /* : Int */;
5098 val* var9 /* : String */;
5099 val* var10 /* : nullable MClass */;
5100 val* var_objcla /* var objcla: nullable MClass */;
5101 val* var11 /* : null */;
5102 short int var12 /* : Bool */;
5103 val* var13 /* : MType */;
5104 val* var_unsafe_type /* var unsafe_type: MType */;
5105 static val* varonce14;
5106 val* var15 /* : String */;
5107 char* var16 /* : NativeString */;
5108 long var17 /* : Int */;
5109 val* var18 /* : String */;
5110 val* var19 /* : nullable MProperty */;
5111 val* var20 /* : null */;
5112 short int var21 /* : Bool */;
5113 static val* varonce22;
5114 val* var23 /* : String */;
5115 char* var24 /* : NativeString */;
5116 long var25 /* : Int */;
5117 val* var26 /* : String */;
5118 val* var27 /* : nullable MProperty */;
5119 val* var28 /* : null */;
5120 short int var29 /* : Bool */;
5121 static val* varonce30;
5122 val* var31 /* : String */;
5123 char* var32 /* : NativeString */;
5124 long var33 /* : Int */;
5125 val* var34 /* : String */;
5126 static val* varonce35;
5127 val* var36 /* : String */;
5128 char* var37 /* : NativeString */;
5129 long var38 /* : Int */;
5130 val* var39 /* : String */;
5131 val* var40 /* : Array[Object] */;
5132 long var41 /* : Int */;
5133 val* var42 /* : NativeArray[Object] */;
5134 val* var43 /* : String */;
5135 val* var44 /* : ModelBuilder */;
5136 static val* varonce45;
5137 val* var46 /* : String */;
5138 char* var47 /* : NativeString */;
5139 long var48 /* : Int */;
5140 val* var49 /* : String */;
5141 val* var50 /* : Array[Object] */;
5142 long var51 /* : Int */;
5143 val* var52 /* : NativeArray[Object] */;
5144 val* var53 /* : String */;
5145 static val* varonce54;
5146 val* var55 /* : String */;
5147 char* var56 /* : NativeString */;
5148 long var57 /* : Int */;
5149 val* var58 /* : String */;
5150 short int var59 /* : Bool */;
5151 val* var60 /* : nullable CallSite */;
5152 val* var_itdef /* var itdef: nullable CallSite */;
5153 val* var61 /* : null */;
5154 short int var62 /* : Bool */;
5155 static val* varonce63;
5156 val* var64 /* : String */;
5157 char* var65 /* : NativeString */;
5158 long var66 /* : Int */;
5159 val* var67 /* : String */;
5160 static val* varonce68;
5161 val* var69 /* : String */;
5162 char* var70 /* : NativeString */;
5163 long var71 /* : Int */;
5164 val* var72 /* : String */;
5165 val* var73 /* : Array[Object] */;
5166 long var74 /* : Int */;
5167 val* var75 /* : NativeArray[Object] */;
5168 val* var76 /* : String */;
5169 val* var77 /* : MMethod */;
5170 val* var78 /* : MSignature */;
5171 val* var79 /* : nullable MType */;
5172 val* var_ittype /* var ittype: nullable MType */;
5173 val* var80 /* : null */;
5174 short int var81 /* : Bool */;
5175 static val* varonce82;
5176 val* var83 /* : String */;
5177 char* var84 /* : NativeString */;
5178 long var85 /* : Int */;
5179 val* var86 /* : String */;
5180 static val* varonce87;
5181 val* var88 /* : String */;
5182 char* var89 /* : NativeString */;
5183 long var90 /* : Int */;
5184 val* var91 /* : String */;
5185 val* var92 /* : nullable MClass */;
5186 val* var_colit_cla /* var colit_cla: nullable MClass */;
5187 static val* varonce93;
5188 val* var94 /* : String */;
5189 char* var95 /* : NativeString */;
5190 long var96 /* : Int */;
5191 val* var97 /* : String */;
5192 val* var98 /* : nullable MClass */;
5193 val* var_mapit_cla /* var mapit_cla: nullable MClass */;
5194 short int var99 /* : Bool */;
5195 short int var_is_col /* var is_col: Bool */;
5196 short int var100 /* : Bool */;
5197 short int var_is_map /* var is_map: Bool */;
5198 short int var101 /* : Bool */;
5199 val* var102 /* : null */;
5200 short int var103 /* : Bool */;
5201 short int var_ /* var : Bool */;
5202 val* var104 /* : MClassType */;
5203 val* var105 /* : MType */;
5204 val* var106 /* : Array[MType] */;
5205 long var107 /* : Int */;
5206 val* var108 /* : NativeArray[MType] */;
5207 val* var109 /* : MClassType */;
5208 short int var110 /* : Bool */;
5209 val* var111 /* : MModule */;
5210 val* var112 /* : MClassType */;
5211 val* var113 /* : MClassType */;
5212 val* var_coltype /* var coltype: MClassType */;
5213 val* var114 /* : nullable Array[Variable] */;
5214 val* var_variables /* var variables: nullable Array[Variable] */;
5215 long var115 /* : Int */;
5216 long var116 /* : Int */;
5217 short int var117 /* : Bool */;
5218 short int var119 /* : Bool */;
5219 short int var120 /* : Bool */;
5220 static val* varonce121;
5221 val* var122 /* : String */;
5222 char* var123 /* : NativeString */;
5223 long var124 /* : Int */;
5224 val* var125 /* : String */;
5225 val* var126 /* : nullable Object */;
5226 val* var127 /* : Array[MType] */;
5227 val* var128 /* : nullable Object */;
5228 short int var129 /* : Bool */;
5229 short int var130 /* : Bool */;
5230 val* var131 /* : null */;
5231 short int var132 /* : Bool */;
5232 short int var_133 /* var : Bool */;
5233 val* var134 /* : MClassType */;
5234 val* var135 /* : MClassType */;
5235 val* var136 /* : MType */;
5236 val* var137 /* : Array[MType] */;
5237 long var138 /* : Int */;
5238 val* var139 /* : NativeArray[MType] */;
5239 val* var140 /* : MClassType */;
5240 short int var141 /* : Bool */;
5241 val* var142 /* : MModule */;
5242 val* var143 /* : MClassType */;
5243 val* var144 /* : MClassType */;
5244 val* var_coltype145 /* var coltype: MClassType */;
5245 val* var146 /* : nullable Array[Variable] */;
5246 val* var_variables147 /* var variables: nullable Array[Variable] */;
5247 long var148 /* : Int */;
5248 long var149 /* : Int */;
5249 short int var150 /* : Bool */;
5250 short int var152 /* : Bool */;
5251 short int var153 /* : Bool */;
5252 static val* varonce154;
5253 val* var155 /* : String */;
5254 char* var156 /* : NativeString */;
5255 long var157 /* : Int */;
5256 val* var158 /* : String */;
5257 long var159 /* : Int */;
5258 val* var160 /* : nullable Object */;
5259 val* var161 /* : Array[MType] */;
5260 long var162 /* : Int */;
5261 val* var163 /* : nullable Object */;
5262 long var164 /* : Int */;
5263 val* var165 /* : nullable Object */;
5264 val* var166 /* : Array[MType] */;
5265 long var167 /* : Int */;
5266 val* var168 /* : nullable Object */;
5267 short int var169 /* : Bool */;
5268 short int var170 /* : Bool */;
5269 short int var171 /* : Bool */;
5270 short int var_172 /* var : Bool */;
5271 short int var173 /* : Bool */;
5272 static val* varonce174;
5273 val* var175 /* : String */;
5274 char* var176 /* : NativeString */;
5275 long var177 /* : Int */;
5276 val* var178 /* : String */;
5277 short int var179 /* : Bool */;
5278 val* var180 /* : MType */;
5279 short int var181 /* : Bool */;
5280 int cltype182;
5281 int idtype183;
5282 val* var184 /* : MType */;
5283 short int var185 /* : Bool */;
5284 int cltype186;
5285 int idtype187;
5286 const char* var_class_name;
5287 static val* varonce188;
5288 val* var189 /* : String */;
5289 char* var190 /* : NativeString */;
5290 long var191 /* : Int */;
5291 val* var192 /* : String */;
5292 short int var193 /* : Bool */;
5293 val* var194 /* : nullable CallSite */;
5294 val* var_ikdef /* var ikdef: nullable CallSite */;
5295 val* var195 /* : null */;
5296 short int var196 /* : Bool */;
5297 static val* varonce197;
5298 val* var198 /* : String */;
5299 char* var199 /* : NativeString */;
5300 long var200 /* : Int */;
5301 val* var201 /* : String */;
5302 static val* varonce202;
5303 val* var203 /* : String */;
5304 char* var204 /* : NativeString */;
5305 long var205 /* : Int */;
5306 val* var206 /* : String */;
5307 val* var207 /* : Array[Object] */;
5308 long var208 /* : Int */;
5309 val* var209 /* : NativeArray[Object] */;
5310 val* var210 /* : String */;
5311 val* var211 /* : MMethod */;
5312 static val* varonce212;
5313 val* var213 /* : String */;
5314 char* var214 /* : NativeString */;
5315 long var215 /* : Int */;
5316 val* var216 /* : String */;
5317 short int var217 /* : Bool */;
5318 val* var218 /* : nullable CallSite */;
5319 val* var_itemdef /* var itemdef: nullable CallSite */;
5320 val* var219 /* : null */;
5321 short int var220 /* : Bool */;
5322 static val* varonce221;
5323 val* var222 /* : String */;
5324 char* var223 /* : NativeString */;
5325 long var224 /* : Int */;
5326 val* var225 /* : String */;
5327 static val* varonce226;
5328 val* var227 /* : String */;
5329 char* var228 /* : NativeString */;
5330 long var229 /* : Int */;
5331 val* var230 /* : String */;
5332 val* var231 /* : Array[Object] */;
5333 long var232 /* : Int */;
5334 val* var233 /* : NativeArray[Object] */;
5335 val* var234 /* : String */;
5336 val* var235 /* : MMethod */;
5337 static val* varonce236;
5338 val* var237 /* : String */;
5339 char* var238 /* : NativeString */;
5340 long var239 /* : Int */;
5341 val* var240 /* : String */;
5342 short int var241 /* : Bool */;
5343 val* var242 /* : nullable CallSite */;
5344 val* var_nextdef /* var nextdef: nullable CallSite */;
5345 val* var243 /* : null */;
5346 short int var244 /* : Bool */;
5347 static val* varonce245;
5348 val* var246 /* : String */;
5349 char* var247 /* : NativeString */;
5350 long var248 /* : Int */;
5351 val* var249 /* : String */;
5352 static val* varonce250;
5353 val* var251 /* : String */;
5354 char* var252 /* : NativeString */;
5355 long var253 /* : Int */;
5356 val* var254 /* : String */;
5357 val* var255 /* : Array[Object] */;
5358 long var256 /* : Int */;
5359 val* var257 /* : NativeArray[Object] */;
5360 val* var258 /* : String */;
5361 val* var259 /* : MMethod */;
5362 static val* varonce260;
5363 val* var261 /* : String */;
5364 char* var262 /* : NativeString */;
5365 long var263 /* : Int */;
5366 val* var264 /* : String */;
5367 short int var265 /* : Bool */;
5368 val* var266 /* : nullable CallSite */;
5369 val* var_keydef /* var keydef: nullable CallSite */;
5370 val* var267 /* : null */;
5371 short int var268 /* : Bool */;
5372 static val* varonce269;
5373 val* var270 /* : String */;
5374 char* var271 /* : NativeString */;
5375 long var272 /* : Int */;
5376 val* var273 /* : String */;
5377 static val* varonce274;
5378 val* var275 /* : String */;
5379 char* var276 /* : NativeString */;
5380 long var277 /* : Int */;
5381 val* var278 /* : String */;
5382 val* var279 /* : Array[Object] */;
5383 long var280 /* : Int */;
5384 val* var281 /* : NativeArray[Object] */;
5385 val* var282 /* : String */;
5386 val* var283 /* : MMethod */;
5387 var_v = p0;
5388 var_mtype = p1;
5389 /* <var_mtype:MType> isa MNullType */
5390 cltype = type_model__MNullType.color;
5391 idtype = type_model__MNullType.id;
5392 if(cltype >= var_mtype->type->table_size) {
5393 var = 0;
5394 } else {
5395 var = var_mtype->type->type_table[cltype] == idtype;
5396 }
5397 if (var){
5398 if (varonce) {
5399 var1 = varonce;
5400 } else {
5401 var2 = "Type error: \'for\' cannot iterate over \'null\'";
5402 var3 = 44;
5403 var4 = string__NativeString__to_s_with_length(var2, var3);
5404 var1 = var4;
5405 varonce = var1;
5406 }
5407 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var1) /* error on <var_v:TypeVisitor>*/;
5408 goto RET_LABEL;
5409 } else {
5410 }
5411 if (varonce5) {
5412 var6 = varonce5;
5413 } else {
5414 var7 = "Object";
5415 var8 = 6;
5416 var9 = string__NativeString__to_s_with_length(var7, var8);
5417 var6 = var9;
5418 varonce5 = var6;
5419 }
5420 var10 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var6) /* get_mclass on <var_v:TypeVisitor>*/;
5421 var_objcla = var10;
5422 var11 = NULL;
5423 if (var_objcla == NULL) {
5424 var12 = 1; /* is null */
5425 } else {
5426 var12 = 0; /* arg is null but recv is not */
5427 }
5428 if (var12){
5429 goto RET_LABEL;
5430 } else {
5431 }
5432 var13 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5433 var_unsafe_type = var13;
5434 if (varonce14) {
5435 var15 = varonce14;
5436 } else {
5437 var16 = "iterator";
5438 var17 = 8;
5439 var18 = string__NativeString__to_s_with_length(var16, var17);
5440 var15 = var18;
5441 varonce14 = var15;
5442 }
5443 var19 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_unsafe_type, var15) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
5444 var20 = NULL;
5445 if (var19 == NULL) {
5446 var21 = 1; /* is null */
5447 } else {
5448 var21 = 0; /* arg is null but recv is not */
5449 }
5450 if (var21){
5451 if (varonce22) {
5452 var23 = varonce22;
5453 } else {
5454 var24 = "iterate";
5455 var25 = 7;
5456 var26 = string__NativeString__to_s_with_length(var24, var25);
5457 var23 = var26;
5458 varonce22 = var23;
5459 }
5460 var27 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_unsafe_type, var23) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
5461 var28 = NULL;
5462 if (var27 == NULL) {
5463 var29 = 1; /* is null */
5464 } else {
5465 var29 = 0; /* arg is null but recv is not */
5466 }
5467 if (var29){
5468 if (varonce30) {
5469 var31 = varonce30;
5470 } else {
5471 var32 = "Type Error: \'for\' expects a type providing \'iterator\' method, got \'";
5472 var33 = 67;
5473 var34 = string__NativeString__to_s_with_length(var32, var33);
5474 var31 = var34;
5475 varonce30 = var31;
5476 }
5477 if (varonce35) {
5478 var36 = varonce35;
5479 } else {
5480 var37 = "\'.";
5481 var38 = 2;
5482 var39 = string__NativeString__to_s_with_length(var37, var38);
5483 var36 = var39;
5484 varonce35 = var36;
5485 }
5486 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
5487 { /* var40 = array_instance Array[Object] */
5488 var41 = 3;
5489 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
5490 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var31;
5491 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_mtype;
5492 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36;
5493 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
5494 }
5495 var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
5496 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var43) /* error on <var_v:TypeVisitor>*/;
5497 } else {
5498 var44 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
5499 if (varonce45) {
5500 var46 = varonce45;
5501 } else {
5502 var47 = "NOT YET IMPLEMENTED: Do \'for\' on ";
5503 var48 = 33;
5504 var49 = string__NativeString__to_s_with_length(var47, var48);
5505 var46 = var49;
5506 varonce45 = var46;
5507 }
5508 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
5509 { /* var50 = array_instance Array[Object] */
5510 var51 = 2;
5511 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
5512 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var46;
5513 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_mtype;
5514 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
5515 }
5516 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
5517 ((void (*)(val*, val*, val*))(var44->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var44, self, var53) /* error on <var44:ModelBuilder>*/;
5518 }
5519 goto RET_LABEL;
5520 } else {
5521 }
5522 if (varonce54) {
5523 var55 = varonce54;
5524 } else {
5525 var56 = "iterator";
5526 var57 = 8;
5527 var58 = string__NativeString__to_s_with_length(var56, var57);
5528 var55 = var58;
5529 varonce54 = var55;
5530 }
5531 var59 = 1;
5532 var60 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_mtype, var55, var59) /* get_method on <var_v:TypeVisitor>*/;
5533 var_itdef = var60;
5534 var61 = NULL;
5535 if (var_itdef == NULL) {
5536 var62 = 1; /* is null */
5537 } else {
5538 var62 = 0; /* arg is null but recv is not */
5539 }
5540 if (var62){
5541 if (varonce63) {
5542 var64 = varonce63;
5543 } else {
5544 var65 = "Type Error: \'for\' expects a type providing \'iterator\' method, got \'";
5545 var66 = 67;
5546 var67 = string__NativeString__to_s_with_length(var65, var66);
5547 var64 = var67;
5548 varonce63 = var64;
5549 }
5550 if (varonce68) {
5551 var69 = varonce68;
5552 } else {
5553 var70 = "\'.";
5554 var71 = 2;
5555 var72 = string__NativeString__to_s_with_length(var70, var71);
5556 var69 = var72;
5557 varonce68 = var69;
5558 }
5559 var73 = NEW_array__Array(&type_array__Arraykernel__Object);
5560 { /* var73 = array_instance Array[Object] */
5561 var74 = 3;
5562 var75 = NEW_array__NativeArray(var74, &type_array__NativeArraykernel__Object);
5563 ((struct instance_array__NativeArray*)var75)->values[0] = (val*) var64;
5564 ((struct instance_array__NativeArray*)var75)->values[1] = (val*) var_mtype;
5565 ((struct instance_array__NativeArray*)var75)->values[2] = (val*) var69;
5566 ((void (*)(val*, val*, long))(var73->class->vft[COLOR_array__Array__with_native]))(var73, var75, var74) /* with_native on <var73:Array[Object]>*/;
5567 }
5568 var76 = ((val* (*)(val*))(var73->class->vft[COLOR_string__Object__to_s]))(var73) /* to_s on <var73:Array[Object]>*/;
5569 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var76) /* error on <var_v:TypeVisitor>*/;
5570 goto RET_LABEL;
5571 } else {
5572 }
5573 var77 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itdef) /* mproperty on <var_itdef:nullable CallSite(CallSite)>*/;
5574 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_iterator_61d]))(self, var77) /* method_iterator= on <self:AForExpr>*/;
5575 var78 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__msignature]))(var_itdef) /* msignature on <var_itdef:nullable CallSite(CallSite)>*/;
5576 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_model__MSignature__return_mtype]))(var78) /* return_mtype on <var78:MSignature>*/;
5577 var_ittype = var79;
5578 var80 = NULL;
5579 if (var_ittype == NULL) {
5580 var81 = 1; /* is null */
5581 } else {
5582 var81 = 0; /* arg is null but recv is not */
5583 }
5584 if (var81){
5585 if (varonce82) {
5586 var83 = varonce82;
5587 } else {
5588 var84 = "Type Error: \'for\' expects method \'iterator\' to return an \'Iterator\' or \'MapIterator\' type\'.";
5589 var85 = 91;
5590 var86 = string__NativeString__to_s_with_length(var84, var85);
5591 var83 = var86;
5592 varonce82 = var83;
5593 }
5594 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var83) /* error on <var_v:TypeVisitor>*/;
5595 goto RET_LABEL;
5596 } else {
5597 }
5598 if (varonce87) {
5599 var88 = varonce87;
5600 } else {
5601 var89 = "Iterator";
5602 var90 = 8;
5603 var91 = string__NativeString__to_s_with_length(var89, var90);
5604 var88 = var91;
5605 varonce87 = var88;
5606 }
5607 var92 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mclass]))(var_v, self, var88) /* try_get_mclass on <var_v:TypeVisitor>*/;
5608 var_colit_cla = var92;
5609 if (varonce93) {
5610 var94 = varonce93;
5611 } else {
5612 var95 = "MapIterator";
5613 var96 = 11;
5614 var97 = string__NativeString__to_s_with_length(var95, var96);
5615 var94 = var97;
5616 varonce93 = var94;
5617 }
5618 var98 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mclass]))(var_v, self, var94) /* try_get_mclass on <var_v:TypeVisitor>*/;
5619 var_mapit_cla = var98;
5620 var99 = 0;
5621 var_is_col = var99;
5622 var100 = 0;
5623 var_is_map = var100;
5624 var102 = NULL;
5625 if (var_colit_cla == NULL) {
5626 var103 = 0; /* is null */
5627 } else {
5628 var103 = 1; /* arg is null and recv is not */
5629 }
5630 var_ = var103;
5631 if (var103){
5632 var104 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5633 var105 = ((val* (*)(val*))(var104->class->vft[COLOR_model__MType__as_nullable]))(var104) /* as_nullable on <var104:MClassType>*/;
5634 var106 = NEW_array__Array(&type_array__Arraymodel__MType);
5635 { /* var106 = array_instance Array[MType] */
5636 var107 = 1;
5637 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraymodel__MType);
5638 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var105;
5639 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[MType]>*/;
5640 }
5641 var109 = ((val* (*)(val*, val*))(var_colit_cla->class->vft[COLOR_model__MClass__get_mtype]))(var_colit_cla, var106) /* get_mtype on <var_colit_cla:nullable MClass(MClass)>*/;
5642 var110 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var_ittype, var109) /* is_subtype on <var_v:TypeVisitor>*/;
5643 var101 = var110;
5644 } else {
5645 var101 = var_;
5646 }
5647 if (var101){
5648 var111 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5649 var112 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5650 var113 = ((val* (*)(val*, val*, val*, val*))(var_ittype->class->vft[COLOR_model__MType__supertype_to]))(var_ittype, var111, var112, var_colit_cla) /* supertype_to on <var_ittype:nullable MType(MType)>*/;
5651 var_coltype = var113;
5652 var114 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5653 var_variables = var114;
5654 if (var_variables == NULL) {
5655 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5656 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 865);
5657 show_backtrace(1);
5658 } else {
5659 var115 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable]>*/;
5660 }
5661 var116 = 1;
5662 { /* Inline kernel#Int#!= (var115,var116) */
5663 var119 = var115 == var116;
5664 var120 = !var119;
5665 var117 = var120;
5666 goto RET_LABEL118;
5667 RET_LABEL118:(void)0;
5668 }
5669 if (var117){
5670 if (varonce121) {
5671 var122 = varonce121;
5672 } else {
5673 var123 = "Type Error: \'for\' expects only one variable when using \'Iterator\'.";
5674 var124 = 66;
5675 var125 = string__NativeString__to_s_with_length(var123, var124);
5676 var122 = var125;
5677 varonce121 = var122;
5678 }
5679 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var122) /* error on <var_v:TypeVisitor>*/;
5680 } else {
5681 if (var_variables == NULL) {
5682 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5683 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 868);
5684 show_backtrace(1);
5685 } else {
5686 var126 = ((val* (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__first]))(var_variables) /* first on <var_variables:nullable Array[Variable]>*/;
5687 }
5688 var127 = ((val* (*)(val*))(var_coltype->class->vft[COLOR_model__MClassType__arguments]))(var_coltype) /* arguments on <var_coltype:MClassType>*/;
5689 var128 = ((val* (*)(val*))(var127->class->vft[COLOR_abstract_collection__Collection__first]))(var127) /* first on <var127:Array[MType]>*/;
5690 ((void (*)(val*, val*))(var126->class->vft[COLOR_typing__Variable__declared_type_61d]))(var126, var128) /* declared_type= on <var126:nullable Object(Variable)>*/;
5691 }
5692 var129 = 1;
5693 var_is_col = var129;
5694 } else {
5695 }
5696 var131 = NULL;
5697 if (var_mapit_cla == NULL) {
5698 var132 = 0; /* is null */
5699 } else {
5700 var132 = 1; /* arg is null and recv is not */
5701 }
5702 var_133 = var132;
5703 if (var132){
5704 var134 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5705 var135 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5706 var136 = ((val* (*)(val*))(var135->class->vft[COLOR_model__MType__as_nullable]))(var135) /* as_nullable on <var135:MClassType>*/;
5707 var137 = NEW_array__Array(&type_array__Arraymodel__MType);
5708 { /* var137 = array_instance Array[MType] */
5709 var138 = 2;
5710 var139 = NEW_array__NativeArray(var138, &type_array__NativeArraymodel__MType);
5711 ((struct instance_array__NativeArray*)var139)->values[0] = (val*) var134;
5712 ((struct instance_array__NativeArray*)var139)->values[1] = (val*) var136;
5713 ((void (*)(val*, val*, long))(var137->class->vft[COLOR_array__Array__with_native]))(var137, var139, var138) /* with_native on <var137:Array[MType]>*/;
5714 }
5715 var140 = ((val* (*)(val*, val*))(var_mapit_cla->class->vft[COLOR_model__MClass__get_mtype]))(var_mapit_cla, var137) /* get_mtype on <var_mapit_cla:nullable MClass(MClass)>*/;
5716 var141 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var_ittype, var140) /* is_subtype on <var_v:TypeVisitor>*/;
5717 var130 = var141;
5718 } else {
5719 var130 = var_133;
5720 }
5721 if (var130){
5722 var142 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5723 var143 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5724 var144 = ((val* (*)(val*, val*, val*, val*))(var_ittype->class->vft[COLOR_model__MType__supertype_to]))(var_ittype, var142, var143, var_mapit_cla) /* supertype_to on <var_ittype:nullable MType(MType)>*/;
5725 var_coltype145 = var144;
5726 var146 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5727 var_variables147 = var146;
5728 if (var_variables147 == NULL) {
5729 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5730 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 877);
5731 show_backtrace(1);
5732 } else {
5733 var148 = ((long (*)(val*))(var_variables147->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables147) /* length on <var_variables147:nullable Array[Variable]>*/;
5734 }
5735 var149 = 2;
5736 { /* Inline kernel#Int#!= (var148,var149) */
5737 var152 = var148 == var149;
5738 var153 = !var152;
5739 var150 = var153;
5740 goto RET_LABEL151;
5741 RET_LABEL151:(void)0;
5742 }
5743 if (var150){
5744 if (varonce154) {
5745 var155 = varonce154;
5746 } else {
5747 var156 = "Type Error: \'for\' expects two variables when using \'MapIterator\'.";
5748 var157 = 65;
5749 var158 = string__NativeString__to_s_with_length(var156, var157);
5750 var155 = var158;
5751 varonce154 = var155;
5752 }
5753 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var155) /* error on <var_v:TypeVisitor>*/;
5754 } else {
5755 var159 = 0;
5756 if (var_variables147 == NULL) {
5757 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5758 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 880);
5759 show_backtrace(1);
5760 } else {
5761 var160 = ((val* (*)(val*, long))(var_variables147->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables147, var159) /* [] on <var_variables147:nullable Array[Variable]>*/;
5762 }
5763 var161 = ((val* (*)(val*))(var_coltype145->class->vft[COLOR_model__MClassType__arguments]))(var_coltype145) /* arguments on <var_coltype145:MClassType>*/;
5764 var162 = 0;
5765 var163 = ((val* (*)(val*, long))(var161->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var161, var162) /* [] on <var161:Array[MType]>*/;
5766 ((void (*)(val*, val*))(var160->class->vft[COLOR_typing__Variable__declared_type_61d]))(var160, var163) /* declared_type= on <var160:nullable Object(Variable)>*/;
5767 var164 = 1;
5768 if (var_variables147 == NULL) {
5769 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5770 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 881);
5771 show_backtrace(1);
5772 } else {
5773 var165 = ((val* (*)(val*, long))(var_variables147->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables147, var164) /* [] on <var_variables147:nullable Array[Variable]>*/;
5774 }
5775 var166 = ((val* (*)(val*))(var_coltype145->class->vft[COLOR_model__MClassType__arguments]))(var_coltype145) /* arguments on <var_coltype145:MClassType>*/;
5776 var167 = 1;
5777 var168 = ((val* (*)(val*, long))(var166->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var166, var167) /* [] on <var166:Array[MType]>*/;
5778 ((void (*)(val*, val*))(var165->class->vft[COLOR_typing__Variable__declared_type_61d]))(var165, var168) /* declared_type= on <var165:nullable Object(Variable)>*/;
5779 }
5780 var169 = 1;
5781 var_is_map = var169;
5782 } else {
5783 }
5784 var171 = !var_is_col;
5785 var_172 = var171;
5786 if (var171){
5787 var173 = !var_is_map;
5788 var170 = var173;
5789 } else {
5790 var170 = var_172;
5791 }
5792 if (var170){
5793 if (varonce174) {
5794 var175 = varonce174;
5795 } else {
5796 var176 = "Type Error: \'for\' expects method \'iterator\' to return an \'Iterator\' or \'MapIterator\' type\'.";
5797 var177 = 91;
5798 var178 = string__NativeString__to_s_with_length(var176, var177);
5799 var175 = var178;
5800 varonce174 = var175;
5801 }
5802 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var175) /* error on <var_v:TypeVisitor>*/;
5803 goto RET_LABEL;
5804 } else {
5805 }
5806 var179 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5807 if (var179){
5808 var180 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5809 var_mtype = var180;
5810 } else {
5811 }
5812 /* <var_mtype:MType> isa MNullableType */
5813 cltype182 = type_model__MNullableType.color;
5814 idtype183 = type_model__MNullableType.id;
5815 if(cltype182 >= var_mtype->type->table_size) {
5816 var181 = 0;
5817 } else {
5818 var181 = var_mtype->type->type_table[cltype182] == idtype183;
5819 }
5820 if (var181){
5821 var184 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
5822 var_mtype = var184;
5823 } else {
5824 }
5825 /* <var_mtype:MType> isa MClassType */
5826 cltype186 = type_model__MClassType.color;
5827 idtype187 = type_model__MClassType.id;
5828 if(cltype186 >= var_mtype->type->table_size) {
5829 var185 = 0;
5830 } else {
5831 var185 = var_mtype->type->type_table[cltype186] == idtype187;
5832 }
5833 if (!var185) {
5834 var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name;
5835 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5836 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 895);
5837 show_backtrace(1);
5838 }
5839 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__coltype_61d]))(self, var_mtype) /* coltype= on <self:AForExpr>*/;
5840 if (varonce188) {
5841 var189 = varonce188;
5842 } else {
5843 var190 = "is_ok";
5844 var191 = 5;
5845 var192 = string__NativeString__to_s_with_length(var190, var191);
5846 var189 = var192;
5847 varonce188 = var189;
5848 }
5849 var193 = 0;
5850 var194 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var189, var193) /* get_method on <var_v:TypeVisitor>*/;
5851 var_ikdef = var194;
5852 var195 = NULL;
5853 if (var_ikdef == NULL) {
5854 var196 = 1; /* is null */
5855 } else {
5856 var196 = 0; /* arg is null but recv is not */
5857 }
5858 if (var196){
5859 if (varonce197) {
5860 var198 = varonce197;
5861 } else {
5862 var199 = "Type Error: \'for\' expects a method \'is_ok\' in \'Iterator\' type ";
5863 var200 = 62;
5864 var201 = string__NativeString__to_s_with_length(var199, var200);
5865 var198 = var201;
5866 varonce197 = var198;
5867 }
5868 if (varonce202) {
5869 var203 = varonce202;
5870 } else {
5871 var204 = ".";
5872 var205 = 1;
5873 var206 = string__NativeString__to_s_with_length(var204, var205);
5874 var203 = var206;
5875 varonce202 = var203;
5876 }
5877 var207 = NEW_array__Array(&type_array__Arraykernel__Object);
5878 { /* var207 = array_instance Array[Object] */
5879 var208 = 3;
5880 var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object);
5881 ((struct instance_array__NativeArray*)var209)->values[0] = (val*) var198;
5882 ((struct instance_array__NativeArray*)var209)->values[1] = (val*) var_ittype;
5883 ((struct instance_array__NativeArray*)var209)->values[2] = (val*) var203;
5884 ((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on <var207:Array[Object]>*/;
5885 }
5886 var210 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on <var207:Array[Object]>*/;
5887 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var210) /* error on <var_v:TypeVisitor>*/;
5888 goto RET_LABEL;
5889 } else {
5890 }
5891 var211 = ((val* (*)(val*))(var_ikdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_ikdef) /* mproperty on <var_ikdef:nullable CallSite(CallSite)>*/;
5892 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_is_ok_61d]))(self, var211) /* method_is_ok= on <self:AForExpr>*/;
5893 if (varonce212) {
5894 var213 = varonce212;
5895 } else {
5896 var214 = "item";
5897 var215 = 4;
5898 var216 = string__NativeString__to_s_with_length(var214, var215);
5899 var213 = var216;
5900 varonce212 = var213;
5901 }
5902 var217 = 0;
5903 var218 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var213, var217) /* get_method on <var_v:TypeVisitor>*/;
5904 var_itemdef = var218;
5905 var219 = NULL;
5906 if (var_itemdef == NULL) {
5907 var220 = 1; /* is null */
5908 } else {
5909 var220 = 0; /* arg is null but recv is not */
5910 }
5911 if (var220){
5912 if (varonce221) {
5913 var222 = varonce221;
5914 } else {
5915 var223 = "Type Error: \'for\' expects a method \'item\' in \'Iterator\' type ";
5916 var224 = 61;
5917 var225 = string__NativeString__to_s_with_length(var223, var224);
5918 var222 = var225;
5919 varonce221 = var222;
5920 }
5921 if (varonce226) {
5922 var227 = varonce226;
5923 } else {
5924 var228 = ".";
5925 var229 = 1;
5926 var230 = string__NativeString__to_s_with_length(var228, var229);
5927 var227 = var230;
5928 varonce226 = var227;
5929 }
5930 var231 = NEW_array__Array(&type_array__Arraykernel__Object);
5931 { /* var231 = array_instance Array[Object] */
5932 var232 = 3;
5933 var233 = NEW_array__NativeArray(var232, &type_array__NativeArraykernel__Object);
5934 ((struct instance_array__NativeArray*)var233)->values[0] = (val*) var222;
5935 ((struct instance_array__NativeArray*)var233)->values[1] = (val*) var_ittype;
5936 ((struct instance_array__NativeArray*)var233)->values[2] = (val*) var227;
5937 ((void (*)(val*, val*, long))(var231->class->vft[COLOR_array__Array__with_native]))(var231, var233, var232) /* with_native on <var231:Array[Object]>*/;
5938 }
5939 var234 = ((val* (*)(val*))(var231->class->vft[COLOR_string__Object__to_s]))(var231) /* to_s on <var231:Array[Object]>*/;
5940 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var234) /* error on <var_v:TypeVisitor>*/;
5941 goto RET_LABEL;
5942 } else {
5943 }
5944 var235 = ((val* (*)(val*))(var_itemdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itemdef) /* mproperty on <var_itemdef:nullable CallSite(CallSite)>*/;
5945 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_item_61d]))(self, var235) /* method_item= on <self:AForExpr>*/;
5946 if (varonce236) {
5947 var237 = varonce236;
5948 } else {
5949 var238 = "next";
5950 var239 = 4;
5951 var240 = string__NativeString__to_s_with_length(var238, var239);
5952 var237 = var240;
5953 varonce236 = var237;
5954 }
5955 var241 = 0;
5956 var242 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var237, var241) /* get_method on <var_v:TypeVisitor>*/;
5957 var_nextdef = var242;
5958 var243 = NULL;
5959 if (var_nextdef == NULL) {
5960 var244 = 1; /* is null */
5961 } else {
5962 var244 = 0; /* arg is null but recv is not */
5963 }
5964 if (var244){
5965 if (varonce245) {
5966 var246 = varonce245;
5967 } else {
5968 var247 = "Type Error: \'for\' expects a method \'next\' in \'Iterator\' type ";
5969 var248 = 61;
5970 var249 = string__NativeString__to_s_with_length(var247, var248);
5971 var246 = var249;
5972 varonce245 = var246;
5973 }
5974 if (varonce250) {
5975 var251 = varonce250;
5976 } else {
5977 var252 = ".";
5978 var253 = 1;
5979 var254 = string__NativeString__to_s_with_length(var252, var253);
5980 var251 = var254;
5981 varonce250 = var251;
5982 }
5983 var255 = NEW_array__Array(&type_array__Arraykernel__Object);
5984 { /* var255 = array_instance Array[Object] */
5985 var256 = 3;
5986 var257 = NEW_array__NativeArray(var256, &type_array__NativeArraykernel__Object);
5987 ((struct instance_array__NativeArray*)var257)->values[0] = (val*) var246;
5988 ((struct instance_array__NativeArray*)var257)->values[1] = (val*) var_ittype;
5989 ((struct instance_array__NativeArray*)var257)->values[2] = (val*) var251;
5990 ((void (*)(val*, val*, long))(var255->class->vft[COLOR_array__Array__with_native]))(var255, var257, var256) /* with_native on <var255:Array[Object]>*/;
5991 }
5992 var258 = ((val* (*)(val*))(var255->class->vft[COLOR_string__Object__to_s]))(var255) /* to_s on <var255:Array[Object]>*/;
5993 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var258) /* error on <var_v:TypeVisitor>*/;
5994 goto RET_LABEL;
5995 } else {
5996 }
5997 var259 = ((val* (*)(val*))(var_nextdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_nextdef) /* mproperty on <var_nextdef:nullable CallSite(CallSite)>*/;
5998 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_next_61d]))(self, var259) /* method_next= on <self:AForExpr>*/;
5999 if (var_is_map){
6000 if (varonce260) {
6001 var261 = varonce260;
6002 } else {
6003 var262 = "key";
6004 var263 = 3;
6005 var264 = string__NativeString__to_s_with_length(var262, var263);
6006 var261 = var264;
6007 varonce260 = var261;
6008 }
6009 var265 = 0;
6010 var266 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var261, var265) /* get_method on <var_v:TypeVisitor>*/;
6011 var_keydef = var266;
6012 var267 = NULL;
6013 if (var_keydef == NULL) {
6014 var268 = 1; /* is null */
6015 } else {
6016 var268 = 0; /* arg is null but recv is not */
6017 }
6018 if (var268){
6019 if (varonce269) {
6020 var270 = varonce269;
6021 } else {
6022 var271 = "Type Error: \'for\' expects a method \'key\' in \'Iterator\' type ";
6023 var272 = 60;
6024 var273 = string__NativeString__to_s_with_length(var271, var272);
6025 var270 = var273;
6026 varonce269 = var270;
6027 }
6028 if (varonce274) {
6029 var275 = varonce274;
6030 } else {
6031 var276 = ".";
6032 var277 = 1;
6033 var278 = string__NativeString__to_s_with_length(var276, var277);
6034 var275 = var278;
6035 varonce274 = var275;
6036 }
6037 var279 = NEW_array__Array(&type_array__Arraykernel__Object);
6038 { /* var279 = array_instance Array[Object] */
6039 var280 = 3;
6040 var281 = NEW_array__NativeArray(var280, &type_array__NativeArraykernel__Object);
6041 ((struct instance_array__NativeArray*)var281)->values[0] = (val*) var270;
6042 ((struct instance_array__NativeArray*)var281)->values[1] = (val*) var_ittype;
6043 ((struct instance_array__NativeArray*)var281)->values[2] = (val*) var275;
6044 ((void (*)(val*, val*, long))(var279->class->vft[COLOR_array__Array__with_native]))(var279, var281, var280) /* with_native on <var279:Array[Object]>*/;
6045 }
6046 var282 = ((val* (*)(val*))(var279->class->vft[COLOR_string__Object__to_s]))(var279) /* to_s on <var279:Array[Object]>*/;
6047 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var282) /* error on <var_v:TypeVisitor>*/;
6048 goto RET_LABEL;
6049 } else {
6050 }
6051 var283 = ((val* (*)(val*))(var_keydef->class->vft[COLOR_typing__CallSite__mproperty]))(var_keydef) /* mproperty on <var_keydef:nullable CallSite(CallSite)>*/;
6052 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_key_61d]))(self, var283) /* method_key= on <self:AForExpr>*/;
6053 } else {
6054 }
6055 RET_LABEL:;
6056 }
6057 /* method typing#AForExpr#do_type_iterator for (self: Object, TypeVisitor, MType) */
6058 void VIRTUAL_typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
6059 typing__AForExpr__do_type_iterator(self, p0, p1);
6060 RET_LABEL:;
6061 }
6062 /* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */
6063 void typing__AForExpr__accept_typing(val* self, val* p0) {
6064 val* var_v /* var v: TypeVisitor */;
6065 val* var /* : AExpr */;
6066 val* var1 /* : nullable MType */;
6067 val* var_mtype /* var mtype: nullable MType */;
6068 val* var2 /* : null */;
6069 short int var3 /* : Bool */;
6070 val* var4 /* : nullable AExpr */;
6071 short int var5 /* : Bool */;
6072 var_v = p0;
6073 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
6074 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6075 var_mtype = var1;
6076 var2 = NULL;
6077 if (var_mtype == NULL) {
6078 var3 = 1; /* is null */
6079 } else {
6080 var3 = 0; /* arg is null but recv is not */
6081 }
6082 if (var3){
6083 goto RET_LABEL;
6084 } else {
6085 }
6086 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__AForExpr__do_type_iterator]))(self, var_v, var_mtype) /* do_type_iterator on <self:AForExpr>*/;
6087 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
6088 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var4) /* visit_stmt on <var_v:TypeVisitor>*/;
6089 var5 = 1;
6090 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var5) /* is_typed= on <self:AForExpr>*/;
6091 RET_LABEL:;
6092 }
6093 /* method typing#AForExpr#accept_typing for (self: Object, TypeVisitor) */
6094 void VIRTUAL_typing__AForExpr__accept_typing(val* self, val* p0) {
6095 typing__AForExpr__accept_typing(self, p0);
6096 RET_LABEL:;
6097 }
6098 /* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */
6099 void typing__AAssertExpr__accept_typing(val* self, val* p0) {
6100 val* var_v /* var v: TypeVisitor */;
6101 val* var /* : AExpr */;
6102 val* var1 /* : nullable MType */;
6103 val* var2 /* : nullable AExpr */;
6104 short int var3 /* : Bool */;
6105 var_v = p0;
6106 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on <self:AAssertExpr>*/;
6107 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6108 var1;
6109 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on <self:AAssertExpr>*/;
6110 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
6111 var3 = 1;
6112 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAssertExpr>*/;
6113 RET_LABEL:;
6114 }
6115 /* method typing#AAssertExpr#accept_typing for (self: Object, TypeVisitor) */
6116 void VIRTUAL_typing__AAssertExpr__accept_typing(val* self, val* p0) {
6117 typing__AAssertExpr__accept_typing(self, p0);
6118 RET_LABEL:;
6119 }
6120 /* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */
6121 void typing__AOrExpr__accept_typing(val* self, val* p0) {
6122 val* var_v /* var v: TypeVisitor */;
6123 val* var /* : AExpr */;
6124 val* var1 /* : nullable MType */;
6125 val* var2 /* : AExpr */;
6126 val* var3 /* : nullable MType */;
6127 val* var4 /* : nullable MType */;
6128 var_v = p0;
6129 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
6130 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6131 var1;
6132 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
6133 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6134 var3;
6135 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6136 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AOrExpr>*/;
6137 RET_LABEL:;
6138 }
6139 /* method typing#AOrExpr#accept_typing for (self: Object, TypeVisitor) */
6140 void VIRTUAL_typing__AOrExpr__accept_typing(val* self, val* p0) {
6141 typing__AOrExpr__accept_typing(self, p0);
6142 RET_LABEL:;
6143 }
6144 /* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */
6145 void typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6146 val* var_v /* var v: TypeVisitor */;
6147 val* var /* : AExpr */;
6148 val* var1 /* : nullable MType */;
6149 val* var2 /* : AExpr */;
6150 val* var3 /* : nullable MType */;
6151 val* var4 /* : nullable MType */;
6152 var_v = p0;
6153 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on <self:AImpliesExpr>*/;
6154 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6155 var1;
6156 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on <self:AImpliesExpr>*/;
6157 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6158 var3;
6159 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6160 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AImpliesExpr>*/;
6161 RET_LABEL:;
6162 }
6163 /* method typing#AImpliesExpr#accept_typing for (self: Object, TypeVisitor) */
6164 void VIRTUAL_typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6165 typing__AImpliesExpr__accept_typing(self, p0);
6166 RET_LABEL:;
6167 }
6168 /* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */
6169 void typing__AAndExpr__accept_typing(val* self, val* p0) {
6170 val* var_v /* var v: TypeVisitor */;
6171 val* var /* : AExpr */;
6172 val* var1 /* : nullable MType */;
6173 val* var2 /* : AExpr */;
6174 val* var3 /* : nullable MType */;
6175 val* var4 /* : nullable MType */;
6176 var_v = p0;
6177 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
6178 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6179 var1;
6180 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
6181 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6182 var3;
6183 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6184 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AAndExpr>*/;
6185 RET_LABEL:;
6186 }
6187 /* method typing#AAndExpr#accept_typing for (self: Object, TypeVisitor) */
6188 void VIRTUAL_typing__AAndExpr__accept_typing(val* self, val* p0) {
6189 typing__AAndExpr__accept_typing(self, p0);
6190 RET_LABEL:;
6191 }
6192 /* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */
6193 void typing__ANotExpr__accept_typing(val* self, val* p0) {
6194 val* var_v /* var v: TypeVisitor */;
6195 val* var /* : AExpr */;
6196 val* var1 /* : nullable MType */;
6197 val* var2 /* : nullable MType */;
6198 var_v = p0;
6199 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on <self:ANotExpr>*/;
6200 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6201 var1;
6202 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6203 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANotExpr>*/;
6204 RET_LABEL:;
6205 }
6206 /* method typing#ANotExpr#accept_typing for (self: Object, TypeVisitor) */
6207 void VIRTUAL_typing__ANotExpr__accept_typing(val* self, val* p0) {
6208 typing__ANotExpr__accept_typing(self, p0);
6209 RET_LABEL:;
6210 }
6211 /* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */
6212 void typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6213 val* var_v /* var v: TypeVisitor */;
6214 val* var /* : AExpr */;
6215 val* var1 /* : nullable MType */;
6216 val* var_t1 /* var t1: nullable MType */;
6217 val* var2 /* : AExpr */;
6218 val* var3 /* : nullable MType */;
6219 val* var_t2 /* var t2: nullable MType */;
6220 short int var4 /* : Bool */;
6221 val* var5 /* : null */;
6222 short int var6 /* : Bool */;
6223 short int var_ /* var : Bool */;
6224 val* var7 /* : null */;
6225 short int var8 /* : Bool */;
6226 short int var9 /* : Bool */;
6227 int cltype;
6228 int idtype;
6229 val* var10 /* : MType */;
6230 val* var11 /* : Array[MType] */;
6231 long var12 /* : Int */;
6232 val* var13 /* : NativeArray[MType] */;
6233 val* var14 /* : nullable MType */;
6234 val* var_t /* var t: nullable MType */;
6235 val* var15 /* : null */;
6236 short int var16 /* : Bool */;
6237 val* var17 /* : MModule */;
6238 val* var18 /* : MClassType */;
6239 short int var19 /* : Bool */;
6240 int cltype20;
6241 int idtype21;
6242 val* var22 /* : MType */;
6243 var_v = p0;
6244 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr]))(self) /* n_expr on <self:AOrElseExpr>*/;
6245 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6246 var_t1 = var1;
6247 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr2]))(self) /* n_expr2 on <self:AOrElseExpr>*/;
6248 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
6249 var_t2 = var3;
6250 var5 = NULL;
6251 if (var_t1 == NULL) {
6252 var6 = 1; /* is null */
6253 } else {
6254 var6 = 0; /* arg is null but recv is not */
6255 }
6256 var_ = var6;
6257 if (var6){
6258 var4 = var_;
6259 } else {
6260 var7 = NULL;
6261 if (var_t2 == NULL) {
6262 var8 = 1; /* is null */
6263 } else {
6264 var8 = 0; /* arg is null but recv is not */
6265 }
6266 var4 = var8;
6267 }
6268 if (var4){
6269 goto RET_LABEL;
6270 } else {
6271 }
6272 /* <var_t1:nullable MType(MType)> isa MNullableType */
6273 cltype = type_model__MNullableType.color;
6274 idtype = type_model__MNullableType.id;
6275 if(cltype >= var_t1->type->table_size) {
6276 var9 = 0;
6277 } else {
6278 var9 = var_t1->type->type_table[cltype] == idtype;
6279 }
6280 if (var9){
6281 var10 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:nullable MType(MNullableType)>*/;
6282 var_t1 = var10;
6283 } else {
6284 }
6285 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
6286 { /* var11 = array_instance Array[MType] */
6287 var12 = 2;
6288 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
6289 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
6290 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
6291 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
6292 }
6293 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
6294 var_t = var14;
6295 var15 = NULL;
6296 if (var_t == NULL) {
6297 var16 = 1; /* is null */
6298 } else {
6299 var16 = 0; /* arg is null but recv is not */
6300 }
6301 if (var16){
6302 var17 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6303 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MModule__object_type]))(var17) /* object_type on <var17:MModule>*/;
6304 var_t = var18;
6305 /* <var_t2:nullable MType(MType)> isa MNullableType */
6306 cltype20 = type_model__MNullableType.color;
6307 idtype21 = type_model__MNullableType.id;
6308 if(cltype20 >= var_t2->type->table_size) {
6309 var19 = 0;
6310 } else {
6311 var19 = var_t2->type->type_table[cltype20] == idtype21;
6312 }
6313 if (var19){
6314 var22 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MType__as_nullable]))(var_t) /* as_nullable on <var_t:nullable MType(MClassType)>*/;
6315 var_t = var22;
6316 } else {
6317 }
6318 } else {
6319 }
6320 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AOrElseExpr>*/;
6321 RET_LABEL:;
6322 }
6323 /* method typing#AOrElseExpr#accept_typing for (self: Object, TypeVisitor) */
6324 void VIRTUAL_typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6325 typing__AOrElseExpr__accept_typing(self, p0);
6326 RET_LABEL:;
6327 }
6328 /* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */
6329 void typing__ATrueExpr__accept_typing(val* self, val* p0) {
6330 val* var_v /* var v: TypeVisitor */;
6331 val* var /* : nullable MType */;
6332 var_v = p0;
6333 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6334 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:ATrueExpr>*/;
6335 RET_LABEL:;
6336 }
6337 /* method typing#ATrueExpr#accept_typing for (self: Object, TypeVisitor) */
6338 void VIRTUAL_typing__ATrueExpr__accept_typing(val* self, val* p0) {
6339 typing__ATrueExpr__accept_typing(self, p0);
6340 RET_LABEL:;
6341 }
6342 /* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */
6343 void typing__AFalseExpr__accept_typing(val* self, val* p0) {
6344 val* var_v /* var v: TypeVisitor */;
6345 val* var /* : nullable MType */;
6346 var_v = p0;
6347 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6348 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AFalseExpr>*/;
6349 RET_LABEL:;
6350 }
6351 /* method typing#AFalseExpr#accept_typing for (self: Object, TypeVisitor) */
6352 void VIRTUAL_typing__AFalseExpr__accept_typing(val* self, val* p0) {
6353 typing__AFalseExpr__accept_typing(self, p0);
6354 RET_LABEL:;
6355 }
6356 /* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */
6357 void typing__AIntExpr__accept_typing(val* self, val* p0) {
6358 val* var_v /* var v: TypeVisitor */;
6359 static val* varonce;
6360 val* var /* : String */;
6361 char* var1 /* : NativeString */;
6362 long var2 /* : Int */;
6363 val* var3 /* : String */;
6364 val* var4 /* : nullable MClass */;
6365 val* var_mclass /* var mclass: nullable MClass */;
6366 val* var5 /* : null */;
6367 short int var6 /* : Bool */;
6368 val* var7 /* : MClassType */;
6369 var_v = p0;
6370 if (varonce) {
6371 var = varonce;
6372 } else {
6373 var1 = "Int";
6374 var2 = 3;
6375 var3 = string__NativeString__to_s_with_length(var1, var2);
6376 var = var3;
6377 varonce = var;
6378 }
6379 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6380 var_mclass = var4;
6381 var5 = NULL;
6382 if (var_mclass == NULL) {
6383 var6 = 1; /* is null */
6384 } else {
6385 var6 = 0; /* arg is null but recv is not */
6386 }
6387 if (var6){
6388 goto RET_LABEL;
6389 } else {
6390 }
6391 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6392 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AIntExpr>*/;
6393 RET_LABEL:;
6394 }
6395 /* method typing#AIntExpr#accept_typing for (self: Object, TypeVisitor) */
6396 void VIRTUAL_typing__AIntExpr__accept_typing(val* self, val* p0) {
6397 typing__AIntExpr__accept_typing(self, p0);
6398 RET_LABEL:;
6399 }
6400 /* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */
6401 void typing__AFloatExpr__accept_typing(val* self, val* p0) {
6402 val* var_v /* var v: TypeVisitor */;
6403 static val* varonce;
6404 val* var /* : String */;
6405 char* var1 /* : NativeString */;
6406 long var2 /* : Int */;
6407 val* var3 /* : String */;
6408 val* var4 /* : nullable MClass */;
6409 val* var_mclass /* var mclass: nullable MClass */;
6410 val* var5 /* : null */;
6411 short int var6 /* : Bool */;
6412 val* var7 /* : MClassType */;
6413 var_v = p0;
6414 if (varonce) {
6415 var = varonce;
6416 } else {
6417 var1 = "Float";
6418 var2 = 5;
6419 var3 = string__NativeString__to_s_with_length(var1, var2);
6420 var = var3;
6421 varonce = var;
6422 }
6423 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6424 var_mclass = var4;
6425 var5 = NULL;
6426 if (var_mclass == NULL) {
6427 var6 = 1; /* is null */
6428 } else {
6429 var6 = 0; /* arg is null but recv is not */
6430 }
6431 if (var6){
6432 goto RET_LABEL;
6433 } else {
6434 }
6435 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6436 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AFloatExpr>*/;
6437 RET_LABEL:;
6438 }
6439 /* method typing#AFloatExpr#accept_typing for (self: Object, TypeVisitor) */
6440 void VIRTUAL_typing__AFloatExpr__accept_typing(val* self, val* p0) {
6441 typing__AFloatExpr__accept_typing(self, p0);
6442 RET_LABEL:;
6443 }
6444 /* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */
6445 void typing__ACharExpr__accept_typing(val* self, val* p0) {
6446 val* var_v /* var v: TypeVisitor */;
6447 static val* varonce;
6448 val* var /* : String */;
6449 char* var1 /* : NativeString */;
6450 long var2 /* : Int */;
6451 val* var3 /* : String */;
6452 val* var4 /* : nullable MClass */;
6453 val* var_mclass /* var mclass: nullable MClass */;
6454 val* var5 /* : null */;
6455 short int var6 /* : Bool */;
6456 val* var7 /* : MClassType */;
6457 var_v = p0;
6458 if (varonce) {
6459 var = varonce;
6460 } else {
6461 var1 = "Char";
6462 var2 = 4;
6463 var3 = string__NativeString__to_s_with_length(var1, var2);
6464 var = var3;
6465 varonce = var;
6466 }
6467 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6468 var_mclass = var4;
6469 var5 = NULL;
6470 if (var_mclass == NULL) {
6471 var6 = 1; /* is null */
6472 } else {
6473 var6 = 0; /* arg is null but recv is not */
6474 }
6475 if (var6){
6476 goto RET_LABEL;
6477 } else {
6478 }
6479 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6480 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ACharExpr>*/;
6481 RET_LABEL:;
6482 }
6483 /* method typing#ACharExpr#accept_typing for (self: Object, TypeVisitor) */
6484 void VIRTUAL_typing__ACharExpr__accept_typing(val* self, val* p0) {
6485 typing__ACharExpr__accept_typing(self, p0);
6486 RET_LABEL:;
6487 }
6488 /* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */
6489 void typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6490 val* var_v /* var v: TypeVisitor */;
6491 static val* varonce;
6492 val* var /* : String */;
6493 char* var1 /* : NativeString */;
6494 long var2 /* : Int */;
6495 val* var3 /* : String */;
6496 val* var4 /* : nullable MClass */;
6497 val* var_mclass /* var mclass: nullable MClass */;
6498 val* var5 /* : null */;
6499 short int var6 /* : Bool */;
6500 val* var7 /* : MClassType */;
6501 var_v = p0;
6502 if (varonce) {
6503 var = varonce;
6504 } else {
6505 var1 = "String";
6506 var2 = 6;
6507 var3 = string__NativeString__to_s_with_length(var1, var2);
6508 var = var3;
6509 varonce = var;
6510 }
6511 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6512 var_mclass = var4;
6513 var5 = NULL;
6514 if (var_mclass == NULL) {
6515 var6 = 1; /* is null */
6516 } else {
6517 var6 = 0; /* arg is null but recv is not */
6518 }
6519 if (var6){
6520 goto RET_LABEL;
6521 } else {
6522 }
6523 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6524 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AStringFormExpr>*/;
6525 RET_LABEL:;
6526 }
6527 /* method typing#AStringFormExpr#accept_typing for (self: Object, TypeVisitor) */
6528 void VIRTUAL_typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6529 typing__AStringFormExpr__accept_typing(self, p0);
6530 RET_LABEL:;
6531 }
6532 /* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */
6533 void typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6534 val* var_v /* var v: TypeVisitor */;
6535 static val* varonce;
6536 val* var /* : String */;
6537 char* var1 /* : NativeString */;
6538 long var2 /* : Int */;
6539 val* var3 /* : String */;
6540 val* var4 /* : nullable MClass */;
6541 val* var_mclass /* var mclass: nullable MClass */;
6542 val* var5 /* : null */;
6543 short int var6 /* : Bool */;
6544 val* var7 /* : MClassType */;
6545 val* var8 /* : ANodes[AExpr] */;
6546 val* var9 /* : Iterator[nullable Object] */;
6547 short int var10 /* : Bool */;
6548 val* var11 /* : nullable Object */;
6549 val* var_nexpr /* var nexpr: AExpr */;
6550 val* var12 /* : nullable MType */;
6551 val* var_t /* var t: nullable MType */;
6552 var_v = p0;
6553 if (varonce) {
6554 var = varonce;
6555 } else {
6556 var1 = "String";
6557 var2 = 6;
6558 var3 = string__NativeString__to_s_with_length(var1, var2);
6559 var = var3;
6560 varonce = var;
6561 }
6562 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6563 var_mclass = var4;
6564 var5 = NULL;
6565 if (var_mclass == NULL) {
6566 var6 = 1; /* is null */
6567 } else {
6568 var6 = 0; /* arg is null but recv is not */
6569 }
6570 if (var6){
6571 goto RET_LABEL;
6572 } else {
6573 }
6574 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6575 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ASuperstringExpr>*/;
6576 var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
6577 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:ANodes[AExpr]>*/;
6578 for(;;) {
6579 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
6580 if(!var10) break;
6581 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
6582 var_nexpr = var11;
6583 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
6584 var_t = var12;
6585 CONTINUE_label: (void)0;
6586 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
6587 }
6588 BREAK_label: (void)0;
6589 RET_LABEL:;
6590 }
6591 /* method typing#ASuperstringExpr#accept_typing for (self: Object, TypeVisitor) */
6592 void VIRTUAL_typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6593 typing__ASuperstringExpr__accept_typing(self, p0);
6594 RET_LABEL:;
6595 }
6596 /* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */
6597 void typing__AArrayExpr__accept_typing(val* self, val* p0) {
6598 val* var_v /* var v: TypeVisitor */;
6599 val* var /* : Array[nullable MType] */;
6600 val* var_mtypes /* var mtypes: Array[nullable MType] */;
6601 val* var1 /* : AExprs */;
6602 val* var2 /* : ANodes[AExpr] */;
6603 val* var3 /* : Iterator[nullable Object] */;
6604 short int var4 /* : Bool */;
6605 val* var5 /* : nullable Object */;
6606 val* var_e /* var e: AExpr */;
6607 val* var6 /* : nullable MType */;
6608 val* var_t /* var t: nullable MType */;
6609 val* var7 /* : null */;
6610 short int var8 /* : Bool */;
6611 val* var9 /* : nullable MType */;
6612 val* var_mtype /* var mtype: nullable MType */;
6613 val* var10 /* : null */;
6614 short int var11 /* : Bool */;
6615 static val* varonce;
6616 val* var12 /* : String */;
6617 char* var13 /* : NativeString */;
6618 long var14 /* : Int */;
6619 val* var15 /* : String */;
6620 static val* varonce16;
6621 val* var17 /* : String */;
6622 char* var18 /* : NativeString */;
6623 long var19 /* : Int */;
6624 val* var20 /* : String */;
6625 val* var21 /* : String */;
6626 val* var22 /* : Array[Object] */;
6627 long var23 /* : Int */;
6628 val* var24 /* : NativeArray[Object] */;
6629 val* var25 /* : String */;
6630 static val* varonce26;
6631 val* var27 /* : String */;
6632 char* var28 /* : NativeString */;
6633 long var29 /* : Int */;
6634 val* var30 /* : String */;
6635 val* var31 /* : nullable MClass */;
6636 val* var_mclass /* var mclass: nullable MClass */;
6637 val* var32 /* : null */;
6638 short int var33 /* : Bool */;
6639 val* var34 /* : Array[MType] */;
6640 long var35 /* : Int */;
6641 val* var36 /* : NativeArray[MType] */;
6642 val* var37 /* : MClassType */;
6643 var_v = p0;
6644 var = NEW_array__Array(&type_array__Arraynullable_model__MType);
6645 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[nullable MType]>*/;
6646 var_mtypes = var;
6647 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
6648 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var1) /* n_exprs on <var1:AExprs>*/;
6649 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:ANodes[AExpr]>*/;
6650 for(;;) {
6651 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6652 if(!var4) break;
6653 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
6654 var_e = var5;
6655 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_e) /* visit_expr on <var_v:TypeVisitor>*/;
6656 var_t = var6;
6657 var7 = NULL;
6658 if (var_t == NULL) {
6659 var8 = 1; /* is null */
6660 } else {
6661 var8 = 0; /* arg is null but recv is not */
6662 }
6663 if (var8){
6664 goto RET_LABEL;
6665 } else {
6666 }
6667 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var_t) /* add on <var_mtypes:Array[nullable MType]>*/;
6668 CONTINUE_label: (void)0;
6669 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
6670 }
6671 BREAK_label: (void)0;
6672 var9 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var_mtypes) /* merge_types on <var_v:TypeVisitor>*/;
6673 var_mtype = var9;
6674 var10 = NULL;
6675 if (var_mtype == NULL) {
6676 var11 = 1; /* is null */
6677 } else {
6678 var11 = 0; /* arg is null but recv is not */
6679 }
6680 if (var11){
6681 if (varonce) {
6682 var12 = varonce;
6683 } else {
6684 var13 = "Type Error: ambiguous array type ";
6685 var14 = 33;
6686 var15 = string__NativeString__to_s_with_length(var13, var14);
6687 var12 = var15;
6688 varonce = var12;
6689 }
6690 if (varonce16) {
6691 var17 = varonce16;
6692 } else {
6693 var18 = " ";
6694 var19 = 1;
6695 var20 = string__NativeString__to_s_with_length(var18, var19);
6696 var17 = var20;
6697 varonce16 = var17;
6698 }
6699 var21 = ((val* (*)(val*, val*))(var_mtypes->class->vft[COLOR_string__Collection__join]))(var_mtypes, var17) /* join on <var_mtypes:Array[nullable MType]>*/;
6700 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
6701 { /* var22 = array_instance Array[Object] */
6702 var23 = 2;
6703 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
6704 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var12;
6705 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var21;
6706 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
6707 }
6708 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
6709 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var25) /* error on <var_v:TypeVisitor>*/;
6710 goto RET_LABEL;
6711 } else {
6712 }
6713 if (varonce26) {
6714 var27 = varonce26;
6715 } else {
6716 var28 = "Array";
6717 var29 = 5;
6718 var30 = string__NativeString__to_s_with_length(var28, var29);
6719 var27 = var30;
6720 varonce26 = var27;
6721 }
6722 var31 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var27) /* get_mclass on <var_v:TypeVisitor>*/;
6723 var_mclass = var31;
6724 var32 = NULL;
6725 if (var_mclass == NULL) {
6726 var33 = 1; /* is null */
6727 } else {
6728 var33 = 0; /* arg is null but recv is not */
6729 }
6730 if (var33){
6731 goto RET_LABEL;
6732 } else {
6733 }
6734 var34 = NEW_array__Array(&type_array__Arraymodel__MType);
6735 { /* var34 = array_instance Array[MType] */
6736 var35 = 1;
6737 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraymodel__MType);
6738 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var_mtype;
6739 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[MType]>*/;
6740 }
6741 var37 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var34) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6742 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var37) /* mtype= on <self:AArrayExpr>*/;
6743 RET_LABEL:;
6744 }
6745 /* method typing#AArrayExpr#accept_typing for (self: Object, TypeVisitor) */
6746 void VIRTUAL_typing__AArrayExpr__accept_typing(val* self, val* p0) {
6747 typing__AArrayExpr__accept_typing(self, p0);
6748 RET_LABEL:;
6749 }
6750 /* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */
6751 void typing__ARangeExpr__accept_typing(val* self, val* p0) {
6752 val* var_v /* var v: TypeVisitor */;
6753 static val* varonce;
6754 val* var /* : String */;
6755 char* var1 /* : NativeString */;
6756 long var2 /* : Int */;
6757 val* var3 /* : String */;
6758 val* var4 /* : nullable MClass */;
6759 val* var_discrete_class /* var discrete_class: nullable MClass */;
6760 val* var5 /* : null */;
6761 short int var6 /* : Bool */;
6762 val* var7 /* : MClassDef */;
6763 val* var8 /* : MClassType */;
6764 val* var_discrete_type /* var discrete_type: MClassType */;
6765 val* var9 /* : AExpr */;
6766 val* var10 /* : nullable MType */;
6767 val* var_t1 /* var t1: nullable MType */;
6768 val* var11 /* : AExpr */;
6769 val* var12 /* : nullable MType */;
6770 val* var_t2 /* var t2: nullable MType */;
6771 short int var13 /* : Bool */;
6772 val* var14 /* : null */;
6773 short int var15 /* : Bool */;
6774 short int var_ /* var : Bool */;
6775 val* var16 /* : null */;
6776 short int var17 /* : Bool */;
6777 static val* varonce18;
6778 val* var19 /* : String */;
6779 char* var20 /* : NativeString */;
6780 long var21 /* : Int */;
6781 val* var22 /* : String */;
6782 val* var23 /* : nullable MClass */;
6783 val* var_mclass /* var mclass: nullable MClass */;
6784 val* var24 /* : null */;
6785 short int var25 /* : Bool */;
6786 short int var26 /* : Bool */;
6787 val* var27 /* : Array[MType] */;
6788 long var28 /* : Int */;
6789 val* var29 /* : NativeArray[MType] */;
6790 val* var30 /* : MClassType */;
6791 short int var31 /* : Bool */;
6792 val* var32 /* : Array[MType] */;
6793 long var33 /* : Int */;
6794 val* var34 /* : NativeArray[MType] */;
6795 val* var35 /* : MClassType */;
6796 static val* varonce36;
6797 val* var37 /* : String */;
6798 char* var38 /* : NativeString */;
6799 long var39 /* : Int */;
6800 val* var40 /* : String */;
6801 static val* varonce41;
6802 val* var42 /* : String */;
6803 char* var43 /* : NativeString */;
6804 long var44 /* : Int */;
6805 val* var45 /* : String */;
6806 val* var46 /* : Array[Object] */;
6807 long var47 /* : Int */;
6808 val* var48 /* : NativeArray[Object] */;
6809 val* var49 /* : String */;
6810 var_v = p0;
6811 if (varonce) {
6812 var = varonce;
6813 } else {
6814 var1 = "Discrete";
6815 var2 = 8;
6816 var3 = string__NativeString__to_s_with_length(var1, var2);
6817 var = var3;
6818 varonce = var;
6819 }
6820 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6821 var_discrete_class = var4;
6822 var5 = NULL;
6823 if (var_discrete_class == NULL) {
6824 var6 = 1; /* is null */
6825 } else {
6826 var6 = 0; /* arg is null but recv is not */
6827 }
6828 if (var6){
6829 goto RET_LABEL;
6830 } else {
6831 }
6832 var7 = ((val* (*)(val*))(var_discrete_class->class->vft[COLOR_model__MClass__intro]))(var_discrete_class) /* intro on <var_discrete_class:nullable MClass(MClass)>*/;
6833 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__bound_mtype]))(var7) /* bound_mtype on <var7:MClassDef>*/;
6834 var_discrete_type = var8;
6835 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ARangeExpr>*/;
6836 var10 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var9, var_discrete_type) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
6837 var_t1 = var10;
6838 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ARangeExpr>*/;
6839 var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(var_v, var11, var_discrete_type) /* visit_expr_subtype on <var_v:TypeVisitor>*/;
6840 var_t2 = var12;
6841 var14 = NULL;
6842 if (var_t1 == NULL) {
6843 var15 = 1; /* is null */
6844 } else {
6845 var15 = 0; /* arg is null but recv is not */
6846 }
6847 var_ = var15;
6848 if (var15){
6849 var13 = var_;
6850 } else {
6851 var16 = NULL;
6852 if (var_t2 == NULL) {
6853 var17 = 1; /* is null */
6854 } else {
6855 var17 = 0; /* arg is null but recv is not */
6856 }
6857 var13 = var17;
6858 }
6859 if (var13){
6860 goto RET_LABEL;
6861 } else {
6862 }
6863 if (varonce18) {
6864 var19 = varonce18;
6865 } else {
6866 var20 = "Range";
6867 var21 = 5;
6868 var22 = string__NativeString__to_s_with_length(var20, var21);
6869 var19 = var22;
6870 varonce18 = var19;
6871 }
6872 var23 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var19) /* get_mclass on <var_v:TypeVisitor>*/;
6873 var_mclass = var23;
6874 var24 = NULL;
6875 if (var_mclass == NULL) {
6876 var25 = 1; /* is null */
6877 } else {
6878 var25 = 0; /* arg is null but recv is not */
6879 }
6880 if (var25){
6881 goto RET_LABEL;
6882 } else {
6883 }
6884 var26 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var_t1, var_t2) /* is_subtype on <var_v:TypeVisitor>*/;
6885 if (var26){
6886 var27 = NEW_array__Array(&type_array__Arraymodel__MType);
6887 { /* var27 = array_instance Array[MType] */
6888 var28 = 1;
6889 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraymodel__MType);
6890 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var_t2;
6891 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[MType]>*/;
6892 }
6893 var30 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var27) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6894 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var30) /* mtype= on <self:ARangeExpr>*/;
6895 } else {
6896 var31 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var_t2, var_t1) /* is_subtype on <var_v:TypeVisitor>*/;
6897 if (var31){
6898 var32 = NEW_array__Array(&type_array__Arraymodel__MType);
6899 { /* var32 = array_instance Array[MType] */
6900 var33 = 1;
6901 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraymodel__MType);
6902 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var_t1;
6903 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[MType]>*/;
6904 }
6905 var35 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var32) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6906 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var35) /* mtype= on <self:ARangeExpr>*/;
6907 } else {
6908 if (varonce36) {
6909 var37 = varonce36;
6910 } else {
6911 var38 = "Type Error: Cannot create range: ";
6912 var39 = 33;
6913 var40 = string__NativeString__to_s_with_length(var38, var39);
6914 var37 = var40;
6915 varonce36 = var37;
6916 }
6917 if (varonce41) {
6918 var42 = varonce41;
6919 } else {
6920 var43 = " vs ";
6921 var44 = 4;
6922 var45 = string__NativeString__to_s_with_length(var43, var44);
6923 var42 = var45;
6924 varonce41 = var42;
6925 }
6926 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
6927 { /* var46 = array_instance Array[Object] */
6928 var47 = 4;
6929 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
6930 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var37;
6931 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var_t1;
6932 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
6933 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var_t2;
6934 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
6935 }
6936 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
6937 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var49) /* error on <var_v:TypeVisitor>*/;
6938 }
6939 }
6940 RET_LABEL:;
6941 }
6942 /* method typing#ARangeExpr#accept_typing for (self: Object, TypeVisitor) */
6943 void VIRTUAL_typing__ARangeExpr__accept_typing(val* self, val* p0) {
6944 typing__ARangeExpr__accept_typing(self, p0);
6945 RET_LABEL:;
6946 }
6947 /* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */
6948 void typing__ANullExpr__accept_typing(val* self, val* p0) {
6949 val* var_v /* var v: TypeVisitor */;
6950 val* var /* : MModule */;
6951 val* var1 /* : Model */;
6952 val* var2 /* : MNullType */;
6953 var_v = p0;
6954 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6955 var1 = ((val* (*)(val*))(var->class->vft[COLOR_mmodule__MModule__model]))(var) /* model on <var:MModule>*/;
6956 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__Model__null_type]))(var1) /* null_type on <var1:Model>*/;
6957 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANullExpr>*/;
6958 RET_LABEL:;
6959 }
6960 /* method typing#ANullExpr#accept_typing for (self: Object, TypeVisitor) */
6961 void VIRTUAL_typing__ANullExpr__accept_typing(val* self, val* p0) {
6962 typing__ANullExpr__accept_typing(self, p0);
6963 RET_LABEL:;
6964 }
6965 /* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */
6966 val* typing__AIsaExpr__cast_type(val* self) {
6967 val* var /* : nullable MType */;
6968 val* var1 /* : nullable MType */;
6969 var1 = self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val; /* @cast_type on <self:AIsaExpr> */
6970 var = var1;
6971 RET_LABEL:;
6972 return var;
6973 }
6974 /* method typing#AIsaExpr#cast_type for (self: Object): nullable MType */
6975 val* VIRTUAL_typing__AIsaExpr__cast_type(val* self) {
6976 val* var /* : nullable MType */;
6977 val* var1 /* : nullable MType */;
6978 var1 = typing__AIsaExpr__cast_type(self);
6979 var = var1;
6980 RET_LABEL:;
6981 return var;
6982 }
6983 /* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */
6984 void typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6985 self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val = p0; /* @cast_type on <self:AIsaExpr> */
6986 RET_LABEL:;
6987 }
6988 /* method typing#AIsaExpr#cast_type= for (self: Object, nullable MType) */
6989 void VIRTUAL_typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6990 typing__AIsaExpr__cast_type_61d(self, p0);
6991 RET_LABEL:;
6992 }
6993 /* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */
6994 void typing__AIsaExpr__accept_typing(val* self, val* p0) {
6995 val* var_v /* var v: TypeVisitor */;
6996 val* var /* : AExpr */;
6997 val* var1 /* : AType */;
6998 val* var2 /* : nullable MType */;
6999 val* var_mtype /* var mtype: nullable MType */;
7000 val* var3 /* : AExpr */;
7001 val* var4 /* : nullable Variable */;
7002 val* var_variable /* var variable: nullable Variable */;
7003 val* var5 /* : null */;
7004 short int var6 /* : Bool */;
7005 val* var7 /* : AExpr */;
7006 val* var8 /* : nullable MType */;
7007 val* var_orig /* var orig: nullable MType */;
7008 val* var9 /* : String */;
7009 val* var10 /* : null */;
7010 short int var11 /* : Bool */;
7011 val* var12 /* : String */;
7012 static val* varonce;
7013 val* var13 /* : String */;
7014 char* var14 /* : NativeString */;
7015 long var15 /* : Int */;
7016 val* var16 /* : String */;
7017 val* var_from /* var from: String */;
7018 val* var17 /* : String */;
7019 val* var18 /* : null */;
7020 short int var19 /* : Bool */;
7021 val* var20 /* : String */;
7022 static val* varonce21;
7023 val* var22 /* : String */;
7024 char* var23 /* : NativeString */;
7025 long var24 /* : Int */;
7026 val* var25 /* : String */;
7027 val* var_to /* var to: String */;
7028 val* var26 /* : nullable FlowContext */;
7029 val* var27 /* : FlowContext */;
7030 val* var28 /* : nullable MType */;
7031 var_v = p0;
7032 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7033 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_type]))(self) /* n_type on <self:AIsaExpr>*/;
7034 var2 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_cast]))(var_v, self, var, var1) /* visit_expr_cast on <var_v:TypeVisitor>*/;
7035 var_mtype = var2;
7036 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AIsaExpr__cast_type_61d]))(self, var_mtype) /* cast_type= on <self:AIsaExpr>*/;
7037 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7038 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__its_variable]))(var3) /* its_variable on <var3:AExpr>*/;
7039 var_variable = var4;
7040 var5 = NULL;
7041 if (var_variable == NULL) {
7042 var6 = 0; /* is null */
7043 } else {
7044 var6 = 1; /* arg is null and recv is not */
7045 }
7046 if (var6){
7047 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7048 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_typing__AExpr__mtype]))(var7) /* mtype on <var7:AExpr>*/;
7049 var_orig = var8;
7050 var10 = NULL;
7051 if (var_orig == NULL) {
7052 var11 = 0; /* is null */
7053 } else {
7054 var11 = 1; /* arg is null and recv is not */
7055 }
7056 if (var11){
7057 var12 = ((val* (*)(val*))(var_orig->class->vft[COLOR_string__Object__to_s]))(var_orig) /* to_s on <var_orig:nullable MType(MType)>*/;
7058 var9 = var12;
7059 } else {
7060 if (varonce) {
7061 var13 = varonce;
7062 } else {
7063 var14 = "invalid";
7064 var15 = 7;
7065 var16 = string__NativeString__to_s_with_length(var14, var15);
7066 var13 = var16;
7067 varonce = var13;
7068 }
7069 var9 = var13;
7070 }
7071 var_from = var9;
7072 var18 = NULL;
7073 if (var_mtype == NULL) {
7074 var19 = 0; /* is null */
7075 } else {
7076 var19 = 1; /* arg is null and recv is not */
7077 }
7078 if (var19){
7079 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:nullable MType(MType)>*/;
7080 var17 = var20;
7081 } else {
7082 if (varonce21) {
7083 var22 = varonce21;
7084 } else {
7085 var23 = "invalid";
7086 var24 = 7;
7087 var25 = string__NativeString__to_s_with_length(var23, var24);
7088 var22 = var25;
7089 varonce21 = var22;
7090 }
7091 var17 = var22;
7092 }
7093 var_to = var17;
7094 var26 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AIsaExpr>*/;
7095 if (var26 == NULL) {
7096 fprintf(stderr, "Runtime error: %s", "Receiver is null");
7097 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1140);
7098 show_backtrace(1);
7099 } else {
7100 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_flow__FlowContext__when_true]))(var26) /* when_true on <var26:nullable FlowContext>*/;
7101 }
7102 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_typing__FlowContext__set_var]))(var27, var_variable, var_mtype) /* set_var on <var27:FlowContext>*/;
7103 } else {
7104 }
7105 var28 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
7106 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var28) /* mtype= on <self:AIsaExpr>*/;
7107 RET_LABEL:;
7108 }
7109 /* method typing#AIsaExpr#accept_typing for (self: Object, TypeVisitor) */
7110 void VIRTUAL_typing__AIsaExpr__accept_typing(val* self, val* p0) {
7111 typing__AIsaExpr__accept_typing(self, p0);
7112 RET_LABEL:;
7113 }
7114 /* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */
7115 void typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7116 val* var_v /* var v: TypeVisitor */;
7117 val* var /* : AExpr */;
7118 val* var1 /* : AType */;
7119 val* var2 /* : nullable MType */;
7120 var_v = p0;
7121 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_expr]))(self) /* n_expr on <self:AAsCastExpr>*/;
7122 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_type]))(self) /* n_type on <self:AAsCastExpr>*/;
7123 var2 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_cast]))(var_v, self, var, var1) /* visit_expr_cast on <var_v:TypeVisitor>*/;
7124 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:AAsCastExpr>*/;
7125 RET_LABEL:;
7126 }
7127 /* method typing#AAsCastExpr#accept_typing for (self: Object, TypeVisitor) */
7128 void VIRTUAL_typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7129 typing__AAsCastExpr__accept_typing(self, p0);
7130 RET_LABEL:;
7131 }
7132 /* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */
7133 void typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7134 val* var_v /* var v: TypeVisitor */;
7135 val* var /* : AExpr */;
7136 val* var1 /* : nullable MType */;
7137 val* var_mtype /* var mtype: nullable MType */;
7138 short int var2 /* : Bool */;
7139 int cltype;
7140 int idtype;
7141 static val* varonce;
7142 val* var3 /* : String */;
7143 char* var4 /* : NativeString */;
7144 long var5 /* : Int */;
7145 val* var6 /* : String */;
7146 short int var7 /* : Bool */;
7147 int cltype8;
7148 int idtype9;
7149 val* var10 /* : MType */;
7150 var_v = p0;
7151 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsNotnullExpr__n_expr]))(self) /* n_expr on <self:AAsNotnullExpr>*/;
7152 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7153 var_mtype = var1;
7154 /* <var_mtype:nullable MType> isa MNullType */
7155 cltype = type_model__MNullType.color;
7156 idtype = type_model__MNullType.id;
7157 if(var_mtype == NULL) {
7158 var2 = 0;
7159 } else {
7160 if(cltype >= var_mtype->type->table_size) {
7161 var2 = 0;
7162 } else {
7163 var2 = var_mtype->type->type_table[cltype] == idtype;
7164 }
7165 }
7166 if (var2){
7167 if (varonce) {
7168 var3 = varonce;
7169 } else {
7170 var4 = "Type error: as(not null) on null";
7171 var5 = 32;
7172 var6 = string__NativeString__to_s_with_length(var4, var5);
7173 var3 = var6;
7174 varonce = var3;
7175 }
7176 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var3) /* error on <var_v:TypeVisitor>*/;
7177 goto RET_LABEL;
7178 } else {
7179 }
7180 /* <var_mtype:nullable MType> isa MNullableType */
7181 cltype8 = type_model__MNullableType.color;
7182 idtype9 = type_model__MNullableType.id;
7183 if(var_mtype == NULL) {
7184 var7 = 0;
7185 } else {
7186 if(cltype8 >= var_mtype->type->table_size) {
7187 var7 = 0;
7188 } else {
7189 var7 = var_mtype->type->type_table[cltype8] == idtype9;
7190 }
7191 }
7192 if (var7){
7193 var10 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:nullable MType(MNullableType)>*/;
7194 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var10) /* mtype= on <self:AAsNotnullExpr>*/;
7195 goto RET_LABEL;
7196 } else {
7197 }
7198 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AAsNotnullExpr>*/;
7199 RET_LABEL:;
7200 }
7201 /* method typing#AAsNotnullExpr#accept_typing for (self: Object, TypeVisitor) */
7202 void VIRTUAL_typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7203 typing__AAsNotnullExpr__accept_typing(self, p0);
7204 RET_LABEL:;
7205 }
7206 /* method typing#AProxyExpr#accept_typing for (self: AProxyExpr, TypeVisitor) */
7207 void typing__AProxyExpr__accept_typing(val* self, val* p0) {
7208 val* var_v /* var v: TypeVisitor */;
7209 val* var /* : AExpr */;
7210 val* var1 /* : nullable MType */;
7211 var_v = p0;
7212 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AProxyExpr>*/;
7213 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7214 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:AProxyExpr>*/;
7215 RET_LABEL:;
7216 }
7217 /* method typing#AProxyExpr#accept_typing for (self: Object, TypeVisitor) */
7218 void VIRTUAL_typing__AProxyExpr__accept_typing(val* self, val* p0) {
7219 typing__AProxyExpr__accept_typing(self, p0);
7220 RET_LABEL:;
7221 }
7222 /* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */
7223 val* typing__ASelfExpr__its_variable(val* self) {
7224 val* var /* : nullable Variable */;
7225 val* var1 /* : nullable Variable */;
7226 var1 = self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val; /* @its_variable on <self:ASelfExpr> */
7227 var = var1;
7228 RET_LABEL:;
7229 return var;
7230 }
7231 /* method typing#ASelfExpr#its_variable for (self: Object): nullable Variable */
7232 val* VIRTUAL_typing__ASelfExpr__its_variable(val* self) {
7233 val* var /* : nullable Variable */;
7234 val* var1 /* : nullable Variable */;
7235 var1 = typing__ASelfExpr__its_variable(self);
7236 var = var1;
7237 RET_LABEL:;
7238 return var;
7239 }
7240 /* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */
7241 void typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7242 self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val = p0; /* @its_variable on <self:ASelfExpr> */
7243 RET_LABEL:;
7244 }
7245 /* method typing#ASelfExpr#its_variable= for (self: Object, nullable Variable) */
7246 void VIRTUAL_typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7247 typing__ASelfExpr__its_variable_61d(self, p0);
7248 RET_LABEL:;
7249 }
7250 /* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */
7251 void typing__ASelfExpr__accept_typing(val* self, val* p0) {
7252 val* var_v /* var v: TypeVisitor */;
7253 val* var /* : Variable */;
7254 val* var_variable /* var variable: Variable */;
7255 val* var1 /* : nullable MType */;
7256 var_v = p0;
7257 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
7258 var_variable = var;
7259 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASelfExpr__its_variable_61d]))(self, var_variable) /* its_variable= on <self:ASelfExpr>*/;
7260 var1 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_variable]))(var_v, self, var_variable) /* get_variable on <var_v:TypeVisitor>*/;
7261 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:ASelfExpr>*/;
7262 RET_LABEL:;
7263 }
7264 /* method typing#ASelfExpr#accept_typing for (self: Object, TypeVisitor) */
7265 void VIRTUAL_typing__ASelfExpr__accept_typing(val* self, val* p0) {
7266 typing__ASelfExpr__accept_typing(self, p0);
7267 RET_LABEL:;
7268 }
7269 /* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */
7270 val* typing__ASendExpr__callsite(val* self) {
7271 val* var /* : nullable CallSite */;
7272 val* var1 /* : nullable CallSite */;
7273 var1 = self->attrs[COLOR_typing__ASendExpr___64dcallsite].val; /* @callsite on <self:ASendExpr> */
7274 var = var1;
7275 RET_LABEL:;
7276 return var;
7277 }
7278 /* method typing#ASendExpr#callsite for (self: Object): nullable CallSite */
7279 val* VIRTUAL_typing__ASendExpr__callsite(val* self) {
7280 val* var /* : nullable CallSite */;
7281 val* var1 /* : nullable CallSite */;
7282 var1 = typing__ASendExpr__callsite(self);
7283 var = var1;
7284 RET_LABEL:;
7285 return var;
7286 }
7287 /* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */
7288 void typing__ASendExpr__callsite_61d(val* self, val* p0) {
7289 self->attrs[COLOR_typing__ASendExpr___64dcallsite].val = p0; /* @callsite on <self:ASendExpr> */
7290 RET_LABEL:;
7291 }
7292 /* method typing#ASendExpr#callsite= for (self: Object, nullable CallSite) */
7293 void VIRTUAL_typing__ASendExpr__callsite_61d(val* self, val* p0) {
7294 typing__ASendExpr__callsite_61d(self, p0);
7295 RET_LABEL:;
7296 }
7297 /* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */
7298 void typing__ASendExpr__accept_typing(val* self, val* p0) {
7299 val* var_v /* var v: TypeVisitor */;
7300 val* var /* : AExpr */;
7301 val* var1 /* : nullable MType */;
7302 val* var_recvtype /* var recvtype: nullable MType */;
7303 val* var2 /* : String */;
7304 val* var_name /* var name: String */;
7305 val* var3 /* : null */;
7306 short int var4 /* : Bool */;
7307 short int var5 /* : Bool */;
7308 int cltype;
7309 int idtype;
7310 static val* varonce;
7311 val* var6 /* : String */;
7312 char* var7 /* : NativeString */;
7313 long var8 /* : Int */;
7314 val* var9 /* : String */;
7315 static val* varonce10;
7316 val* var11 /* : String */;
7317 char* var12 /* : NativeString */;
7318 long var13 /* : Int */;
7319 val* var14 /* : String */;
7320 val* var15 /* : Array[Object] */;
7321 long var16 /* : Int */;
7322 val* var17 /* : NativeArray[Object] */;
7323 val* var18 /* : String */;
7324 val* var19 /* : AExpr */;
7325 short int var20 /* : Bool */;
7326 int cltype21;
7327 int idtype22;
7328 val* var23 /* : nullable CallSite */;
7329 val* var_callsite /* var callsite: nullable CallSite */;
7330 val* var24 /* : null */;
7331 short int var25 /* : Bool */;
7332 val* var26 /* : MSignature */;
7333 val* var_msignature /* var msignature: MSignature */;
7334 val* var27 /* : Array[AExpr] */;
7335 val* var_args /* var args: Array[AExpr] */;
7336 short int var28 /* : Bool */;
7337 val* var29 /* : MMethod */;
7338 short int var30 /* : Bool */;
7339 val* var31 /* : MPropDef */;
7340 val* var_vmpropdef /* var vmpropdef: MPropDef */;
7341 short int var32 /* : Bool */;
7342 short int var33 /* : Bool */;
7343 int cltype34;
7344 int idtype35;
7345 short int var_ /* var : Bool */;
7346 val* var36 /* : MProperty */;
7347 short int var37 /* : Bool */;
7348 short int var38 /* : Bool */;
7349 static val* varonce39;
7350 val* var40 /* : String */;
7351 char* var41 /* : NativeString */;
7352 long var42 /* : Int */;
7353 val* var43 /* : String */;
7354 val* var44 /* : nullable MType */;
7355 val* var_ret /* var ret: nullable MType */;
7356 val* var45 /* : null */;
7357 short int var46 /* : Bool */;
7358 short int var47 /* : Bool */;
7359 var_v = p0;
7360 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7361 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7362 var_recvtype = var1;
7363 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendExpr>*/;
7364 var_name = var2;
7365 var3 = NULL;
7366 if (var_recvtype == NULL) {
7367 var4 = 1; /* is null */
7368 } else {
7369 var4 = 0; /* arg is null but recv is not */
7370 }
7371 if (var4){
7372 goto RET_LABEL;
7373 } else {
7374 }
7375 /* <var_recvtype:nullable MType(MType)> isa MNullType */
7376 cltype = type_model__MNullType.color;
7377 idtype = type_model__MNullType.id;
7378 if(cltype >= var_recvtype->type->table_size) {
7379 var5 = 0;
7380 } else {
7381 var5 = var_recvtype->type->type_table[cltype] == idtype;
7382 }
7383 if (var5){
7384 if (varonce) {
7385 var6 = varonce;
7386 } else {
7387 var7 = "Error: Method \'";
7388 var8 = 15;
7389 var9 = string__NativeString__to_s_with_length(var7, var8);
7390 var6 = var9;
7391 varonce = var6;
7392 }
7393 if (varonce10) {
7394 var11 = varonce10;
7395 } else {
7396 var12 = "\' call on \'null\'.";
7397 var13 = 17;
7398 var14 = string__NativeString__to_s_with_length(var12, var13);
7399 var11 = var14;
7400 varonce10 = var11;
7401 }
7402 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
7403 { /* var15 = array_instance Array[Object] */
7404 var16 = 3;
7405 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
7406 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
7407 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
7408 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
7409 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
7410 }
7411 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
7412 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
7413 goto RET_LABEL;
7414 } else {
7415 }
7416 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7417 /* <var19:AExpr> isa ASelfExpr */
7418 cltype21 = type_parser_nodes__ASelfExpr.color;
7419 idtype22 = type_parser_nodes__ASelfExpr.id;
7420 if(cltype21 >= var19->type->table_size) {
7421 var20 = 0;
7422 } else {
7423 var20 = var19->type->type_table[cltype21] == idtype22;
7424 }
7425 var23 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_recvtype, var_name, var20) /* get_method on <var_v:TypeVisitor>*/;
7426 var_callsite = var23;
7427 var24 = NULL;
7428 if (var_callsite == NULL) {
7429 var25 = 1; /* is null */
7430 } else {
7431 var25 = 0; /* arg is null but recv is not */
7432 }
7433 if (var25){
7434 goto RET_LABEL;
7435 } else {
7436 }
7437 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendExpr>*/;
7438 var26 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
7439 var_msignature = var26;
7440 var27 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
7441 var_args = var27;
7442 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendExpr>*/;
7443 var28 = ((short int (*)(val*, val*, val*))(var_callsite->class->vft[COLOR_typing__CallSite__check_signature]))(var_callsite, var_v, var_args) /* check_signature on <var_callsite:nullable CallSite(CallSite)>*/;
7444 var28;
7445 var29 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:nullable CallSite(CallSite)>*/;
7446 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_model__MMethod__is_init]))(var29) /* is_init on <var29:MMethod>*/;
7447 if (var30){
7448 var31 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
7449 var_vmpropdef = var31;
7450 /* <var_vmpropdef:MPropDef> isa MMethodDef */
7451 cltype34 = type_model__MMethodDef.color;
7452 idtype35 = type_model__MMethodDef.id;
7453 if(cltype34 >= var_vmpropdef->type->table_size) {
7454 var33 = 0;
7455 } else {
7456 var33 = var_vmpropdef->type->type_table[cltype34] == idtype35;
7457 }
7458 var_ = var33;
7459 if (var33){
7460 var36 = ((val* (*)(val*))(var_vmpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_vmpropdef) /* mproperty on <var_vmpropdef:MPropDef(MMethodDef)>*/;
7461 var37 = ((short int (*)(val*))(var36->class->vft[COLOR_model__MMethod__is_init]))(var36) /* is_init on <var36:MProperty(MMethod)>*/;
7462 var32 = var37;
7463 } else {
7464 var32 = var_;
7465 }
7466 var38 = !var32;
7467 if (var38){
7468 if (varonce39) {
7469 var40 = varonce39;
7470 } else {
7471 var41 = "Can call a init only in another init";
7472 var42 = 36;
7473 var43 = string__NativeString__to_s_with_length(var41, var42);
7474 var40 = var43;
7475 varonce39 = var40;
7476 }
7477 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var40) /* error on <var_v:TypeVisitor>*/;
7478 } else {
7479 }
7480 } else {
7481 }
7482 var44 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
7483 var_ret = var44;
7484 var45 = NULL;
7485 if (var_ret == NULL) {
7486 var46 = 0; /* is null */
7487 } else {
7488 var46 = 1; /* arg is null and recv is not */
7489 }
7490 if (var46){
7491 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_ret) /* mtype= on <self:ASendExpr>*/;
7492 } else {
7493 var47 = 1;
7494 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var47) /* is_typed= on <self:ASendExpr>*/;
7495 }
7496 RET_LABEL:;
7497 }
7498 /* method typing#ASendExpr#accept_typing for (self: Object, TypeVisitor) */
7499 void VIRTUAL_typing__ASendExpr__accept_typing(val* self, val* p0) {
7500 typing__ASendExpr__accept_typing(self, p0);
7501 RET_LABEL:;
7502 }
7503 /* method typing#ASendExpr#property_name for (self: ASendExpr): String */
7504 val* typing__ASendExpr__property_name(val* self) {
7505 val* var /* : String */;
7506 const char* var_class_name;
7507 var_class_name = self == NULL ? "null" : self->type->name;
7508 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "property_name", var_class_name);
7509 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1230);
7510 show_backtrace(1);
7511 RET_LABEL:;
7512 return var;
7513 }
7514 /* method typing#ASendExpr#property_name for (self: Object): String */
7515 val* VIRTUAL_typing__ASendExpr__property_name(val* self) {
7516 val* var /* : String */;
7517 val* var1 /* : String */;
7518 var1 = typing__ASendExpr__property_name(self);
7519 var = var1;
7520 RET_LABEL:;
7521 return var;
7522 }
7523 /* method typing#ASendExpr#raw_arguments for (self: ASendExpr): nullable Array[AExpr] */
7524 val* typing__ASendExpr__raw_arguments(val* self) {
7525 val* var /* : nullable Array[AExpr] */;
7526 val* var1 /* : nullable Array[AExpr] */;
7527 var1 = self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val; /* @raw_arguments on <self:ASendExpr> */
7528 var = var1;
7529 RET_LABEL:;
7530 return var;
7531 }
7532 /* method typing#ASendExpr#raw_arguments for (self: Object): nullable Array[AExpr] */
7533 val* VIRTUAL_typing__ASendExpr__raw_arguments(val* self) {
7534 val* var /* : nullable Array[AExpr] */;
7535 val* var1 /* : nullable Array[AExpr] */;
7536 var1 = typing__ASendExpr__raw_arguments(self);
7537 var = var1;
7538 RET_LABEL:;
7539 return var;
7540 }
7541 /* method typing#ASendExpr#raw_arguments= for (self: ASendExpr, nullable Array[AExpr]) */
7542 void typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7543 self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val = p0; /* @raw_arguments on <self:ASendExpr> */
7544 RET_LABEL:;
7545 }
7546 /* method typing#ASendExpr#raw_arguments= for (self: Object, nullable Array[AExpr]) */
7547 void VIRTUAL_typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7548 typing__ASendExpr__raw_arguments_61d(self, p0);
7549 RET_LABEL:;
7550 }
7551 /* method typing#ASendExpr#compute_raw_arguments for (self: ASendExpr): Array[AExpr] */
7552 val* typing__ASendExpr__compute_raw_arguments(val* self) {
7553 val* var /* : Array[AExpr] */;
7554 const char* var_class_name;
7555 var_class_name = self == NULL ? "null" : self->type->name;
7556 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compute_raw_arguments", var_class_name);
7557 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1237);
7558 show_backtrace(1);
7559 RET_LABEL:;
7560 return var;
7561 }
7562 /* method typing#ASendExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7563 val* VIRTUAL_typing__ASendExpr__compute_raw_arguments(val* self) {
7564 val* var /* : Array[AExpr] */;
7565 val* var1 /* : Array[AExpr] */;
7566 var1 = typing__ASendExpr__compute_raw_arguments(self);
7567 var = var1;
7568 RET_LABEL:;
7569 return var;
7570 }
7571 /* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */
7572 val* typing__ABinopExpr__compute_raw_arguments(val* self) {
7573 val* var /* : Array[AExpr] */;
7574 val* var1 /* : Array[AExpr] */;
7575 long var2 /* : Int */;
7576 val* var_ /* var : Array[AExpr] */;
7577 val* var3 /* : AExpr */;
7578 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
7579 var2 = 1;
7580 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[AExpr]>*/;
7581 var_ = var1;
7582 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ABinopExpr>*/;
7583 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var3) /* push on <var_:Array[AExpr]>*/;
7584 var = var_;
7585 goto RET_LABEL;
7586 RET_LABEL:;
7587 return var;
7588 }
7589 /* method typing#ABinopExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7590 val* VIRTUAL_typing__ABinopExpr__compute_raw_arguments(val* self) {
7591 val* var /* : Array[AExpr] */;
7592 val* var1 /* : Array[AExpr] */;
7593 var1 = typing__ABinopExpr__compute_raw_arguments(self);
7594 var = var1;
7595 RET_LABEL:;
7596 return var;
7597 }
7598 /* method typing#AEqExpr#property_name for (self: AEqExpr): String */
7599 val* typing__AEqExpr__property_name(val* self) {
7600 val* var /* : String */;
7601 static val* varonce;
7602 val* var1 /* : String */;
7603 char* var2 /* : NativeString */;
7604 long var3 /* : Int */;
7605 val* var4 /* : String */;
7606 if (varonce) {
7607 var1 = varonce;
7608 } else {
7609 var2 = "==";
7610 var3 = 2;
7611 var4 = string__NativeString__to_s_with_length(var2, var3);
7612 var1 = var4;
7613 varonce = var1;
7614 }
7615 var = var1;
7616 goto RET_LABEL;
7617 RET_LABEL:;
7618 return var;
7619 }
7620 /* method typing#AEqExpr#property_name for (self: Object): String */
7621 val* VIRTUAL_typing__AEqExpr__property_name(val* self) {
7622 val* var /* : String */;
7623 val* var1 /* : String */;
7624 var1 = typing__AEqExpr__property_name(self);
7625 var = var1;
7626 RET_LABEL:;
7627 return var;
7628 }
7629 /* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */
7630 void typing__AEqExpr__accept_typing(val* self, val* p0) {
7631 val* var_v /* var v: TypeVisitor */;
7632 val* var /* : AExpr */;
7633 val* var1 /* : nullable Variable */;
7634 val* var_variable /* var variable: nullable Variable */;
7635 val* var2 /* : null */;
7636 short int var3 /* : Bool */;
7637 val* var4 /* : AExpr */;
7638 val* var5 /* : nullable MType */;
7639 val* var_mtype /* var mtype: nullable MType */;
7640 short int var6 /* : Bool */;
7641 int cltype;
7642 int idtype;
7643 short int var7 /* : Bool */;
7644 val* var8 /* : nullable MType */;
7645 val* var_vartype /* var vartype: nullable MType */;
7646 short int var9 /* : Bool */;
7647 int cltype10;
7648 int idtype11;
7649 short int var12 /* : Bool */;
7650 val* var13 /* : nullable FlowContext */;
7651 val* var14 /* : FlowContext */;
7652 val* var15 /* : nullable FlowContext */;
7653 val* var16 /* : FlowContext */;
7654 val* var17 /* : MType */;
7655 var_v = p0;
7656 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AEqExpr__accept_typing]))(self, p0) /* accept_typing on <self:AEqExpr>*/;
7657 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:AEqExpr>*/;
7658 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7659 var_variable = var1;
7660 var2 = NULL;
7661 if (var_variable == NULL) {
7662 var3 = 1; /* is null */
7663 } else {
7664 var3 = 0; /* arg is null but recv is not */
7665 }
7666 if (var3){
7667 goto RET_LABEL;
7668 } else {
7669 }
7670 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:AEqExpr>*/;
7671 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7672 var_mtype = var5;
7673 /* <var_mtype:nullable MType> isa MNullType */
7674 cltype = type_model__MNullType.color;
7675 idtype = type_model__MNullType.id;
7676 if(var_mtype == NULL) {
7677 var6 = 0;
7678 } else {
7679 if(cltype >= var_mtype->type->table_size) {
7680 var6 = 0;
7681 } else {
7682 var6 = var_mtype->type->type_table[cltype] == idtype;
7683 }
7684 }
7685 var7 = !var6;
7686 if (var7){
7687 goto RET_LABEL;
7688 } else {
7689 }
7690 var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_variable]))(var_v, self, var_variable) /* get_variable on <var_v:TypeVisitor>*/;
7691 var_vartype = var8;
7692 /* <var_vartype:nullable MType> isa MNullableType */
7693 cltype10 = type_model__MNullableType.color;
7694 idtype11 = type_model__MNullableType.id;
7695 if(var_vartype == NULL) {
7696 var9 = 0;
7697 } else {
7698 if(cltype10 >= var_vartype->type->table_size) {
7699 var9 = 0;
7700 } else {
7701 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7702 }
7703 }
7704 var12 = !var9;
7705 if (var12){
7706 goto RET_LABEL;
7707 } else {
7708 }
7709 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7710 if (var13 == NULL) {
7711 fprintf(stderr, "Runtime error: %s", "Receiver is null");
7712 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1255);
7713 show_backtrace(1);
7714 } else {
7715 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_true]))(var13) /* when_true on <var13:nullable FlowContext>*/;
7716 }
7717 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7718 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7719 if (var15 == NULL) {
7720 fprintf(stderr, "Runtime error: %s", "Receiver is null");
7721 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1256);
7722 show_backtrace(1);
7723 } else {
7724 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_false]))(var15) /* when_false on <var15:nullable FlowContext>*/;
7725 }
7726 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7727 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7728 RET_LABEL:;
7729 }
7730 /* method typing#AEqExpr#accept_typing for (self: Object, TypeVisitor) */
7731 void VIRTUAL_typing__AEqExpr__accept_typing(val* self, val* p0) {
7732 typing__AEqExpr__accept_typing(self, p0);
7733 RET_LABEL:;
7734 }
7735 /* method typing#ANeExpr#property_name for (self: ANeExpr): String */
7736 val* typing__ANeExpr__property_name(val* self) {
7737 val* var /* : String */;
7738 static val* varonce;
7739 val* var1 /* : String */;
7740 char* var2 /* : NativeString */;
7741 long var3 /* : Int */;
7742 val* var4 /* : String */;
7743 if (varonce) {
7744 var1 = varonce;
7745 } else {
7746 var2 = "!=";
7747 var3 = 2;
7748 var4 = string__NativeString__to_s_with_length(var2, var3);
7749 var1 = var4;
7750 varonce = var1;
7751 }
7752 var = var1;
7753 goto RET_LABEL;
7754 RET_LABEL:;
7755 return var;
7756 }
7757 /* method typing#ANeExpr#property_name for (self: Object): String */
7758 val* VIRTUAL_typing__ANeExpr__property_name(val* self) {
7759 val* var /* : String */;
7760 val* var1 /* : String */;
7761 var1 = typing__ANeExpr__property_name(self);
7762 var = var1;
7763 RET_LABEL:;
7764 return var;
7765 }
7766 /* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */
7767 void typing__ANeExpr__accept_typing(val* self, val* p0) {
7768 val* var_v /* var v: TypeVisitor */;
7769 val* var /* : AExpr */;
7770 val* var1 /* : nullable Variable */;
7771 val* var_variable /* var variable: nullable Variable */;
7772 val* var2 /* : null */;
7773 short int var3 /* : Bool */;
7774 val* var4 /* : AExpr */;
7775 val* var5 /* : nullable MType */;
7776 val* var_mtype /* var mtype: nullable MType */;
7777 short int var6 /* : Bool */;
7778 int cltype;
7779 int idtype;
7780 short int var7 /* : Bool */;
7781 val* var8 /* : nullable MType */;
7782 val* var_vartype /* var vartype: nullable MType */;
7783 short int var9 /* : Bool */;
7784 int cltype10;
7785 int idtype11;
7786 short int var12 /* : Bool */;
7787 val* var13 /* : nullable FlowContext */;
7788 val* var14 /* : FlowContext */;
7789 val* var15 /* : nullable FlowContext */;
7790 val* var16 /* : FlowContext */;
7791 val* var17 /* : MType */;
7792 var_v = p0;
7793 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANeExpr__accept_typing]))(self, p0) /* accept_typing on <self:ANeExpr>*/;
7794 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ANeExpr>*/;
7795 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7796 var_variable = var1;
7797 var2 = NULL;
7798 if (var_variable == NULL) {
7799 var3 = 1; /* is null */
7800 } else {
7801 var3 = 0; /* arg is null but recv is not */
7802 }
7803 if (var3){
7804 goto RET_LABEL;
7805 } else {
7806 }
7807 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ANeExpr>*/;
7808 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7809 var_mtype = var5;
7810 /* <var_mtype:nullable MType> isa MNullType */
7811 cltype = type_model__MNullType.color;
7812 idtype = type_model__MNullType.id;
7813 if(var_mtype == NULL) {
7814 var6 = 0;
7815 } else {
7816 if(cltype >= var_mtype->type->table_size) {
7817 var6 = 0;
7818 } else {
7819 var6 = var_mtype->type->type_table[cltype] == idtype;
7820 }
7821 }
7822 var7 = !var6;
7823 if (var7){
7824 goto RET_LABEL;
7825 } else {
7826 }
7827 var8 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_variable]))(var_v, self, var_variable) /* get_variable on <var_v:TypeVisitor>*/;
7828 var_vartype = var8;
7829 /* <var_vartype:nullable MType> isa MNullableType */
7830 cltype10 = type_model__MNullableType.color;
7831 idtype11 = type_model__MNullableType.id;
7832 if(var_vartype == NULL) {
7833 var9 = 0;
7834 } else {
7835 if(cltype10 >= var_vartype->type->table_size) {
7836 var9 = 0;
7837 } else {
7838 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7839 }
7840 }
7841 var12 = !var9;
7842 if (var12){
7843 goto RET_LABEL;
7844 } else {
7845 }
7846 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7847 if (var13 == NULL) {
7848 fprintf(stderr, "Runtime error: %s", "Receiver is null");
7849 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1272);
7850 show_backtrace(1);
7851 } else {
7852 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_false]))(var13) /* when_false on <var13:nullable FlowContext>*/;
7853 }
7854 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7855 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7856 if (var15 == NULL) {
7857 fprintf(stderr, "Runtime error: %s", "Receiver is null");
7858 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1273);
7859 show_backtrace(1);
7860 } else {
7861 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_true]))(var15) /* when_true on <var15:nullable FlowContext>*/;
7862 }
7863 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7864 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7865 RET_LABEL:;
7866 }
7867 /* method typing#ANeExpr#accept_typing for (self: Object, TypeVisitor) */
7868 void VIRTUAL_typing__ANeExpr__accept_typing(val* self, val* p0) {
7869 typing__ANeExpr__accept_typing(self, p0);
7870 RET_LABEL:;
7871 }
7872 /* method typing#ALtExpr#property_name for (self: ALtExpr): String */
7873 val* typing__ALtExpr__property_name(val* self) {
7874 val* var /* : String */;
7875 static val* varonce;
7876 val* var1 /* : String */;
7877 char* var2 /* : NativeString */;
7878 long var3 /* : Int */;
7879 val* var4 /* : String */;
7880 if (varonce) {
7881 var1 = varonce;
7882 } else {
7883 var2 = "<";
7884 var3 = 1;
7885 var4 = string__NativeString__to_s_with_length(var2, var3);
7886 var1 = var4;
7887 varonce = var1;
7888 }
7889 var = var1;
7890 goto RET_LABEL;
7891 RET_LABEL:;
7892 return var;
7893 }
7894 /* method typing#ALtExpr#property_name for (self: Object): String */
7895 val* VIRTUAL_typing__ALtExpr__property_name(val* self) {
7896 val* var /* : String */;
7897 val* var1 /* : String */;
7898 var1 = typing__ALtExpr__property_name(self);
7899 var = var1;
7900 RET_LABEL:;
7901 return var;
7902 }
7903 /* method typing#ALeExpr#property_name for (self: ALeExpr): String */
7904 val* typing__ALeExpr__property_name(val* self) {
7905 val* var /* : String */;
7906 static val* varonce;
7907 val* var1 /* : String */;
7908 char* var2 /* : NativeString */;
7909 long var3 /* : Int */;
7910 val* var4 /* : String */;
7911 if (varonce) {
7912 var1 = varonce;
7913 } else {
7914 var2 = "<=";
7915 var3 = 2;
7916 var4 = string__NativeString__to_s_with_length(var2, var3);
7917 var1 = var4;
7918 varonce = var1;
7919 }
7920 var = var1;
7921 goto RET_LABEL;
7922 RET_LABEL:;
7923 return var;
7924 }
7925 /* method typing#ALeExpr#property_name for (self: Object): String */
7926 val* VIRTUAL_typing__ALeExpr__property_name(val* self) {
7927 val* var /* : String */;
7928 val* var1 /* : String */;
7929 var1 = typing__ALeExpr__property_name(self);
7930 var = var1;
7931 RET_LABEL:;
7932 return var;
7933 }
7934 /* method typing#ALlExpr#property_name for (self: ALlExpr): String */
7935 val* typing__ALlExpr__property_name(val* self) {
7936 val* var /* : String */;
7937 static val* varonce;
7938 val* var1 /* : String */;
7939 char* var2 /* : NativeString */;
7940 long var3 /* : Int */;
7941 val* var4 /* : String */;
7942 if (varonce) {
7943 var1 = varonce;
7944 } else {
7945 var2 = "<<";
7946 var3 = 2;
7947 var4 = string__NativeString__to_s_with_length(var2, var3);
7948 var1 = var4;
7949 varonce = var1;
7950 }
7951 var = var1;
7952 goto RET_LABEL;
7953 RET_LABEL:;
7954 return var;
7955 }
7956 /* method typing#ALlExpr#property_name for (self: Object): String */
7957 val* VIRTUAL_typing__ALlExpr__property_name(val* self) {
7958 val* var /* : String */;
7959 val* var1 /* : String */;
7960 var1 = typing__ALlExpr__property_name(self);
7961 var = var1;
7962 RET_LABEL:;
7963 return var;
7964 }
7965 /* method typing#AGtExpr#property_name for (self: AGtExpr): String */
7966 val* typing__AGtExpr__property_name(val* self) {
7967 val* var /* : String */;
7968 static val* varonce;
7969 val* var1 /* : String */;
7970 char* var2 /* : NativeString */;
7971 long var3 /* : Int */;
7972 val* var4 /* : String */;
7973 if (varonce) {
7974 var1 = varonce;
7975 } else {
7976 var2 = ">";
7977 var3 = 1;
7978 var4 = string__NativeString__to_s_with_length(var2, var3);
7979 var1 = var4;
7980 varonce = var1;
7981 }
7982 var = var1;
7983 goto RET_LABEL;
7984 RET_LABEL:;
7985 return var;
7986 }
7987 /* method typing#AGtExpr#property_name for (self: Object): String */
7988 val* VIRTUAL_typing__AGtExpr__property_name(val* self) {
7989 val* var /* : String */;
7990 val* var1 /* : String */;
7991 var1 = typing__AGtExpr__property_name(self);
7992 var = var1;
7993 RET_LABEL:;
7994 return var;
7995 }
7996 /* method typing#AGeExpr#property_name for (self: AGeExpr): String */
7997 val* typing__AGeExpr__property_name(val* self) {
7998 val* var /* : String */;
7999 static val* varonce;
8000 val* var1 /* : String */;
8001 char* var2 /* : NativeString */;
8002 long var3 /* : Int */;
8003 val* var4 /* : String */;
8004 if (varonce) {
8005 var1 = varonce;
8006 } else {
8007 var2 = ">=";
8008 var3 = 2;
8009 var4 = string__NativeString__to_s_with_length(var2, var3);
8010 var1 = var4;
8011 varonce = var1;
8012 }
8013 var = var1;
8014 goto RET_LABEL;
8015 RET_LABEL:;
8016 return var;
8017 }
8018 /* method typing#AGeExpr#property_name for (self: Object): String */
8019 val* VIRTUAL_typing__AGeExpr__property_name(val* self) {
8020 val* var /* : String */;
8021 val* var1 /* : String */;
8022 var1 = typing__AGeExpr__property_name(self);
8023 var = var1;
8024 RET_LABEL:;
8025 return var;
8026 }
8027 /* method typing#AGgExpr#property_name for (self: AGgExpr): String */
8028 val* typing__AGgExpr__property_name(val* self) {
8029 val* var /* : String */;
8030 static val* varonce;
8031 val* var1 /* : String */;
8032 char* var2 /* : NativeString */;
8033 long var3 /* : Int */;
8034 val* var4 /* : String */;
8035 if (varonce) {
8036 var1 = varonce;
8037 } else {
8038 var2 = ">>";
8039 var3 = 2;
8040 var4 = string__NativeString__to_s_with_length(var2, var3);
8041 var1 = var4;
8042 varonce = var1;
8043 }
8044 var = var1;
8045 goto RET_LABEL;
8046 RET_LABEL:;
8047 return var;
8048 }
8049 /* method typing#AGgExpr#property_name for (self: Object): String */
8050 val* VIRTUAL_typing__AGgExpr__property_name(val* self) {
8051 val* var /* : String */;
8052 val* var1 /* : String */;
8053 var1 = typing__AGgExpr__property_name(self);
8054 var = var1;
8055 RET_LABEL:;
8056 return var;
8057 }
8058 /* method typing#APlusExpr#property_name for (self: APlusExpr): String */
8059 val* typing__APlusExpr__property_name(val* self) {
8060 val* var /* : String */;
8061 static val* varonce;
8062 val* var1 /* : String */;
8063 char* var2 /* : NativeString */;
8064 long var3 /* : Int */;
8065 val* var4 /* : String */;
8066 if (varonce) {
8067 var1 = varonce;
8068 } else {
8069 var2 = "+";
8070 var3 = 1;
8071 var4 = string__NativeString__to_s_with_length(var2, var3);
8072 var1 = var4;
8073 varonce = var1;
8074 }
8075 var = var1;
8076 goto RET_LABEL;
8077 RET_LABEL:;
8078 return var;
8079 }
8080 /* method typing#APlusExpr#property_name for (self: Object): String */
8081 val* VIRTUAL_typing__APlusExpr__property_name(val* self) {
8082 val* var /* : String */;
8083 val* var1 /* : String */;
8084 var1 = typing__APlusExpr__property_name(self);
8085 var = var1;
8086 RET_LABEL:;
8087 return var;
8088 }
8089 /* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */
8090 val* typing__AMinusExpr__property_name(val* self) {
8091 val* var /* : String */;
8092 static val* varonce;
8093 val* var1 /* : String */;
8094 char* var2 /* : NativeString */;
8095 long var3 /* : Int */;
8096 val* var4 /* : String */;
8097 if (varonce) {
8098 var1 = varonce;
8099 } else {
8100 var2 = "-";
8101 var3 = 1;
8102 var4 = string__NativeString__to_s_with_length(var2, var3);
8103 var1 = var4;
8104 varonce = var1;
8105 }
8106 var = var1;
8107 goto RET_LABEL;
8108 RET_LABEL:;
8109 return var;
8110 }
8111 /* method typing#AMinusExpr#property_name for (self: Object): String */
8112 val* VIRTUAL_typing__AMinusExpr__property_name(val* self) {
8113 val* var /* : String */;
8114 val* var1 /* : String */;
8115 var1 = typing__AMinusExpr__property_name(self);
8116 var = var1;
8117 RET_LABEL:;
8118 return var;
8119 }
8120 /* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */
8121 val* typing__AStarshipExpr__property_name(val* self) {
8122 val* var /* : String */;
8123 static val* varonce;
8124 val* var1 /* : String */;
8125 char* var2 /* : NativeString */;
8126 long var3 /* : Int */;
8127 val* var4 /* : String */;
8128 if (varonce) {
8129 var1 = varonce;
8130 } else {
8131 var2 = "<=>";
8132 var3 = 3;
8133 var4 = string__NativeString__to_s_with_length(var2, var3);
8134 var1 = var4;
8135 varonce = var1;
8136 }
8137 var = var1;
8138 goto RET_LABEL;
8139 RET_LABEL:;
8140 return var;
8141 }
8142 /* method typing#AStarshipExpr#property_name for (self: Object): String */
8143 val* VIRTUAL_typing__AStarshipExpr__property_name(val* self) {
8144 val* var /* : String */;
8145 val* var1 /* : String */;
8146 var1 = typing__AStarshipExpr__property_name(self);
8147 var = var1;
8148 RET_LABEL:;
8149 return var;
8150 }
8151 /* method typing#AStarExpr#property_name for (self: AStarExpr): String */
8152 val* typing__AStarExpr__property_name(val* self) {
8153 val* var /* : String */;
8154 static val* varonce;
8155 val* var1 /* : String */;
8156 char* var2 /* : NativeString */;
8157 long var3 /* : Int */;
8158 val* var4 /* : String */;
8159 if (varonce) {
8160 var1 = varonce;
8161 } else {
8162 var2 = "*";
8163 var3 = 1;
8164 var4 = string__NativeString__to_s_with_length(var2, var3);
8165 var1 = var4;
8166 varonce = var1;
8167 }
8168 var = var1;
8169 goto RET_LABEL;
8170 RET_LABEL:;
8171 return var;
8172 }
8173 /* method typing#AStarExpr#property_name for (self: Object): String */
8174 val* VIRTUAL_typing__AStarExpr__property_name(val* self) {
8175 val* var /* : String */;
8176 val* var1 /* : String */;
8177 var1 = typing__AStarExpr__property_name(self);
8178 var = var1;
8179 RET_LABEL:;
8180 return var;
8181 }
8182 /* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */
8183 val* typing__ASlashExpr__property_name(val* self) {
8184 val* var /* : String */;
8185 static val* varonce;
8186 val* var1 /* : String */;
8187 char* var2 /* : NativeString */;
8188 long var3 /* : Int */;
8189 val* var4 /* : String */;
8190 if (varonce) {
8191 var1 = varonce;
8192 } else {
8193 var2 = "/";
8194 var3 = 1;
8195 var4 = string__NativeString__to_s_with_length(var2, var3);
8196 var1 = var4;
8197 varonce = var1;
8198 }
8199 var = var1;
8200 goto RET_LABEL;
8201 RET_LABEL:;
8202 return var;
8203 }
8204 /* method typing#ASlashExpr#property_name for (self: Object): String */
8205 val* VIRTUAL_typing__ASlashExpr__property_name(val* self) {
8206 val* var /* : String */;
8207 val* var1 /* : String */;
8208 var1 = typing__ASlashExpr__property_name(self);
8209 var = var1;
8210 RET_LABEL:;
8211 return var;
8212 }
8213 /* method typing#APercentExpr#property_name for (self: APercentExpr): String */
8214 val* typing__APercentExpr__property_name(val* self) {
8215 val* var /* : String */;
8216 static val* varonce;
8217 val* var1 /* : String */;
8218 char* var2 /* : NativeString */;
8219 long var3 /* : Int */;
8220 val* var4 /* : String */;
8221 if (varonce) {
8222 var1 = varonce;
8223 } else {
8224 var2 = "%";
8225 var3 = 1;
8226 var4 = string__NativeString__to_s_with_length(var2, var3);
8227 var1 = var4;
8228 varonce = var1;
8229 }
8230 var = var1;
8231 goto RET_LABEL;
8232 RET_LABEL:;
8233 return var;
8234 }
8235 /* method typing#APercentExpr#property_name for (self: Object): String */
8236 val* VIRTUAL_typing__APercentExpr__property_name(val* self) {
8237 val* var /* : String */;
8238 val* var1 /* : String */;
8239 var1 = typing__APercentExpr__property_name(self);
8240 var = var1;
8241 RET_LABEL:;
8242 return var;
8243 }
8244 /* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */
8245 val* typing__AUminusExpr__property_name(val* self) {
8246 val* var /* : String */;
8247 static val* varonce;
8248 val* var1 /* : String */;
8249 char* var2 /* : NativeString */;
8250 long var3 /* : Int */;
8251 val* var4 /* : String */;
8252 if (varonce) {
8253 var1 = varonce;
8254 } else {
8255 var2 = "unary -";
8256 var3 = 7;
8257 var4 = string__NativeString__to_s_with_length(var2, var3);
8258 var1 = var4;
8259 varonce = var1;
8260 }
8261 var = var1;
8262 goto RET_LABEL;
8263 RET_LABEL:;
8264 return var;
8265 }
8266 /* method typing#AUminusExpr#property_name for (self: Object): String */
8267 val* VIRTUAL_typing__AUminusExpr__property_name(val* self) {
8268 val* var /* : String */;
8269 val* var1 /* : String */;
8270 var1 = typing__AUminusExpr__property_name(self);
8271 var = var1;
8272 RET_LABEL:;
8273 return var;
8274 }
8275 /* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */
8276 val* typing__AUminusExpr__compute_raw_arguments(val* self) {
8277 val* var /* : Array[AExpr] */;
8278 val* var1 /* : Array[AExpr] */;
8279 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
8280 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[AExpr]>*/;
8281 var = var1;
8282 goto RET_LABEL;
8283 RET_LABEL:;
8284 return var;
8285 }
8286 /* method typing#AUminusExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8287 val* VIRTUAL_typing__AUminusExpr__compute_raw_arguments(val* self) {
8288 val* var /* : Array[AExpr] */;
8289 val* var1 /* : Array[AExpr] */;
8290 var1 = typing__AUminusExpr__compute_raw_arguments(self);
8291 var = var1;
8292 RET_LABEL:;
8293 return var;
8294 }
8295 /* method typing#ACallExpr#property_name for (self: ACallExpr): String */
8296 val* typing__ACallExpr__property_name(val* self) {
8297 val* var /* : String */;
8298 val* var1 /* : TId */;
8299 val* var2 /* : String */;
8300 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallExpr>*/;
8301 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8302 var = var2;
8303 goto RET_LABEL;
8304 RET_LABEL:;
8305 return var;
8306 }
8307 /* method typing#ACallExpr#property_name for (self: Object): String */
8308 val* VIRTUAL_typing__ACallExpr__property_name(val* self) {
8309 val* var /* : String */;
8310 val* var1 /* : String */;
8311 var1 = typing__ACallExpr__property_name(self);
8312 var = var1;
8313 RET_LABEL:;
8314 return var;
8315 }
8316 /* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */
8317 val* typing__ACallExpr__compute_raw_arguments(val* self) {
8318 val* var /* : Array[AExpr] */;
8319 val* var1 /* : AExprs */;
8320 val* var2 /* : Array[AExpr] */;
8321 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallExpr>*/;
8322 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8323 var = var2;
8324 goto RET_LABEL;
8325 RET_LABEL:;
8326 return var;
8327 }
8328 /* method typing#ACallExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8329 val* VIRTUAL_typing__ACallExpr__compute_raw_arguments(val* self) {
8330 val* var /* : Array[AExpr] */;
8331 val* var1 /* : Array[AExpr] */;
8332 var1 = typing__ACallExpr__compute_raw_arguments(self);
8333 var = var1;
8334 RET_LABEL:;
8335 return var;
8336 }
8337 /* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */
8338 val* typing__ACallAssignExpr__property_name(val* self) {
8339 val* var /* : String */;
8340 val* var1 /* : TId */;
8341 val* var2 /* : String */;
8342 static val* varonce;
8343 val* var3 /* : String */;
8344 char* var4 /* : NativeString */;
8345 long var5 /* : Int */;
8346 val* var6 /* : String */;
8347 val* var7 /* : String */;
8348 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallAssignExpr>*/;
8349 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8350 if (varonce) {
8351 var3 = varonce;
8352 } else {
8353 var4 = "=";
8354 var5 = 1;
8355 var6 = string__NativeString__to_s_with_length(var4, var5);
8356 var3 = var6;
8357 varonce = var3;
8358 }
8359 var7 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_string__String___43d]))(var2, var3) /* + on <var2:String>*/;
8360 var = var7;
8361 goto RET_LABEL;
8362 RET_LABEL:;
8363 return var;
8364 }
8365 /* method typing#ACallAssignExpr#property_name for (self: Object): String */
8366 val* VIRTUAL_typing__ACallAssignExpr__property_name(val* self) {
8367 val* var /* : String */;
8368 val* var1 /* : String */;
8369 var1 = typing__ACallAssignExpr__property_name(self);
8370 var = var1;
8371 RET_LABEL:;
8372 return var;
8373 }
8374 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */
8375 val* typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8376 val* var /* : Array[AExpr] */;
8377 val* var1 /* : AExprs */;
8378 val* var2 /* : Array[AExpr] */;
8379 val* var_res /* var res: Array[AExpr] */;
8380 val* var3 /* : AExpr */;
8381 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallAssignExpr>*/;
8382 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8383 var_res = var2;
8384 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ACallAssignExpr>*/;
8385 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8386 var = var_res;
8387 goto RET_LABEL;
8388 RET_LABEL:;
8389 return var;
8390 }
8391 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8392 val* VIRTUAL_typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8393 val* var /* : Array[AExpr] */;
8394 val* var1 /* : Array[AExpr] */;
8395 var1 = typing__ACallAssignExpr__compute_raw_arguments(self);
8396 var = var1;
8397 RET_LABEL:;
8398 return var;
8399 }
8400 /* method typing#ABraExpr#property_name for (self: ABraExpr): String */
8401 val* typing__ABraExpr__property_name(val* self) {
8402 val* var /* : String */;
8403 static val* varonce;
8404 val* var1 /* : String */;
8405 char* var2 /* : NativeString */;
8406 long var3 /* : Int */;
8407 val* var4 /* : String */;
8408 if (varonce) {
8409 var1 = varonce;
8410 } else {
8411 var2 = "[]";
8412 var3 = 2;
8413 var4 = string__NativeString__to_s_with_length(var2, var3);
8414 var1 = var4;
8415 varonce = var1;
8416 }
8417 var = var1;
8418 goto RET_LABEL;
8419 RET_LABEL:;
8420 return var;
8421 }
8422 /* method typing#ABraExpr#property_name for (self: Object): String */
8423 val* VIRTUAL_typing__ABraExpr__property_name(val* self) {
8424 val* var /* : String */;
8425 val* var1 /* : String */;
8426 var1 = typing__ABraExpr__property_name(self);
8427 var = var1;
8428 RET_LABEL:;
8429 return var;
8430 }
8431 /* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */
8432 val* typing__ABraExpr__compute_raw_arguments(val* self) {
8433 val* var /* : Array[AExpr] */;
8434 val* var1 /* : AExprs */;
8435 val* var2 /* : Array[AExpr] */;
8436 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraExpr>*/;
8437 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8438 var = var2;
8439 goto RET_LABEL;
8440 RET_LABEL:;
8441 return var;
8442 }
8443 /* method typing#ABraExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8444 val* VIRTUAL_typing__ABraExpr__compute_raw_arguments(val* self) {
8445 val* var /* : Array[AExpr] */;
8446 val* var1 /* : Array[AExpr] */;
8447 var1 = typing__ABraExpr__compute_raw_arguments(self);
8448 var = var1;
8449 RET_LABEL:;
8450 return var;
8451 }
8452 /* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */
8453 val* typing__ABraAssignExpr__property_name(val* self) {
8454 val* var /* : String */;
8455 static val* varonce;
8456 val* var1 /* : String */;
8457 char* var2 /* : NativeString */;
8458 long var3 /* : Int */;
8459 val* var4 /* : String */;
8460 if (varonce) {
8461 var1 = varonce;
8462 } else {
8463 var2 = "[]=";
8464 var3 = 3;
8465 var4 = string__NativeString__to_s_with_length(var2, var3);
8466 var1 = var4;
8467 varonce = var1;
8468 }
8469 var = var1;
8470 goto RET_LABEL;
8471 RET_LABEL:;
8472 return var;
8473 }
8474 /* method typing#ABraAssignExpr#property_name for (self: Object): String */
8475 val* VIRTUAL_typing__ABraAssignExpr__property_name(val* self) {
8476 val* var /* : String */;
8477 val* var1 /* : String */;
8478 var1 = typing__ABraAssignExpr__property_name(self);
8479 var = var1;
8480 RET_LABEL:;
8481 return var;
8482 }
8483 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */
8484 val* typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8485 val* var /* : Array[AExpr] */;
8486 val* var1 /* : AExprs */;
8487 val* var2 /* : Array[AExpr] */;
8488 val* var_res /* var res: Array[AExpr] */;
8489 val* var3 /* : AExpr */;
8490 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraAssignExpr>*/;
8491 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8492 var_res = var2;
8493 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ABraAssignExpr>*/;
8494 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8495 var = var_res;
8496 goto RET_LABEL;
8497 RET_LABEL:;
8498 return var;
8499 }
8500 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8501 val* VIRTUAL_typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8502 val* var /* : Array[AExpr] */;
8503 val* var1 /* : Array[AExpr] */;
8504 var1 = typing__ABraAssignExpr__compute_raw_arguments(self);
8505 var = var1;
8506 RET_LABEL:;
8507 return var;
8508 }
8509 /* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */
8510 val* typing__ASendReassignFormExpr__write_callsite(val* self) {
8511 val* var /* : nullable CallSite */;
8512 val* var1 /* : nullable CallSite */;
8513 var1 = self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val; /* @write_callsite on <self:ASendReassignFormExpr> */
8514 var = var1;
8515 RET_LABEL:;
8516 return var;
8517 }
8518 /* method typing#ASendReassignFormExpr#write_callsite for (self: Object): nullable CallSite */
8519 val* VIRTUAL_typing__ASendReassignFormExpr__write_callsite(val* self) {
8520 val* var /* : nullable CallSite */;
8521 val* var1 /* : nullable CallSite */;
8522 var1 = typing__ASendReassignFormExpr__write_callsite(self);
8523 var = var1;
8524 RET_LABEL:;
8525 return var;
8526 }
8527 /* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */
8528 void typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8529 self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val = p0; /* @write_callsite on <self:ASendReassignFormExpr> */
8530 RET_LABEL:;
8531 }
8532 /* method typing#ASendReassignFormExpr#write_callsite= for (self: Object, nullable CallSite) */
8533 void VIRTUAL_typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8534 typing__ASendReassignFormExpr__write_callsite_61d(self, p0);
8535 RET_LABEL:;
8536 }
8537 /* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */
8538 void typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8539 val* var_v /* var v: TypeVisitor */;
8540 val* var /* : AExpr */;
8541 val* var1 /* : nullable MType */;
8542 val* var_recvtype /* var recvtype: nullable MType */;
8543 val* var2 /* : String */;
8544 val* var_name /* var name: String */;
8545 val* var3 /* : null */;
8546 short int var4 /* : Bool */;
8547 short int var5 /* : Bool */;
8548 int cltype;
8549 int idtype;
8550 static val* varonce;
8551 val* var6 /* : String */;
8552 char* var7 /* : NativeString */;
8553 long var8 /* : Int */;
8554 val* var9 /* : String */;
8555 static val* varonce10;
8556 val* var11 /* : String */;
8557 char* var12 /* : NativeString */;
8558 long var13 /* : Int */;
8559 val* var14 /* : String */;
8560 val* var15 /* : Array[Object] */;
8561 long var16 /* : Int */;
8562 val* var17 /* : NativeArray[Object] */;
8563 val* var18 /* : String */;
8564 val* var19 /* : AExpr */;
8565 short int var20 /* : Bool */;
8566 int cltype21;
8567 int idtype22;
8568 short int var_for_self /* var for_self: Bool */;
8569 val* var23 /* : nullable CallSite */;
8570 val* var_callsite /* var callsite: nullable CallSite */;
8571 val* var24 /* : null */;
8572 short int var25 /* : Bool */;
8573 val* var26 /* : Array[AExpr] */;
8574 val* var_args /* var args: Array[AExpr] */;
8575 short int var27 /* : Bool */;
8576 val* var28 /* : MSignature */;
8577 val* var29 /* : nullable MType */;
8578 val* var_readtype /* var readtype: nullable MType */;
8579 val* var30 /* : null */;
8580 short int var31 /* : Bool */;
8581 static val* varonce32;
8582 val* var33 /* : String */;
8583 char* var34 /* : NativeString */;
8584 long var35 /* : Int */;
8585 val* var36 /* : String */;
8586 static val* varonce37;
8587 val* var38 /* : String */;
8588 char* var39 /* : NativeString */;
8589 long var40 /* : Int */;
8590 val* var41 /* : String */;
8591 val* var42 /* : Array[Object] */;
8592 long var43 /* : Int */;
8593 val* var44 /* : NativeArray[Object] */;
8594 val* var45 /* : String */;
8595 static val* varonce46;
8596 val* var47 /* : String */;
8597 char* var48 /* : NativeString */;
8598 long var49 /* : Int */;
8599 val* var50 /* : String */;
8600 val* var51 /* : String */;
8601 val* var52 /* : AExpr */;
8602 short int var53 /* : Bool */;
8603 int cltype54;
8604 int idtype55;
8605 val* var56 /* : nullable CallSite */;
8606 val* var_wcallsite /* var wcallsite: nullable CallSite */;
8607 val* var57 /* : null */;
8608 short int var58 /* : Bool */;
8609 val* var59 /* : MSignature */;
8610 val* var60 /* : Array[MParameter] */;
8611 val* var61 /* : nullable Object */;
8612 val* var62 /* : MType */;
8613 val* var63 /* : nullable MType */;
8614 val* var_wtype /* var wtype: nullable MType */;
8615 val* var64 /* : null */;
8616 short int var65 /* : Bool */;
8617 val* var66 /* : Array[nullable Object] */;
8618 val* var67 /* : AExpr */;
8619 short int var68 /* : Bool */;
8620 short int var69 /* : Bool */;
8621 var_v = p0;
8622 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8623 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
8624 var_recvtype = var1;
8625 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendReassignFormExpr>*/;
8626 var_name = var2;
8627 var3 = NULL;
8628 if (var_recvtype == NULL) {
8629 var4 = 1; /* is null */
8630 } else {
8631 var4 = 0; /* arg is null but recv is not */
8632 }
8633 if (var4){
8634 goto RET_LABEL;
8635 } else {
8636 }
8637 /* <var_recvtype:nullable MType(MType)> isa MNullType */
8638 cltype = type_model__MNullType.color;
8639 idtype = type_model__MNullType.id;
8640 if(cltype >= var_recvtype->type->table_size) {
8641 var5 = 0;
8642 } else {
8643 var5 = var_recvtype->type->type_table[cltype] == idtype;
8644 }
8645 if (var5){
8646 if (varonce) {
8647 var6 = varonce;
8648 } else {
8649 var7 = "Error: Method \'";
8650 var8 = 15;
8651 var9 = string__NativeString__to_s_with_length(var7, var8);
8652 var6 = var9;
8653 varonce = var6;
8654 }
8655 if (varonce10) {
8656 var11 = varonce10;
8657 } else {
8658 var12 = "\' call on \'null\'.";
8659 var13 = 17;
8660 var14 = string__NativeString__to_s_with_length(var12, var13);
8661 var11 = var14;
8662 varonce10 = var11;
8663 }
8664 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
8665 { /* var15 = array_instance Array[Object] */
8666 var16 = 3;
8667 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
8668 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
8669 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
8670 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
8671 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
8672 }
8673 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
8674 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
8675 goto RET_LABEL;
8676 } else {
8677 }
8678 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8679 /* <var19:AExpr> isa ASelfExpr */
8680 cltype21 = type_parser_nodes__ASelfExpr.color;
8681 idtype22 = type_parser_nodes__ASelfExpr.id;
8682 if(cltype21 >= var19->type->table_size) {
8683 var20 = 0;
8684 } else {
8685 var20 = var19->type->type_table[cltype21] == idtype22;
8686 }
8687 var_for_self = var20;
8688 var23 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_recvtype, var_name, var_for_self) /* get_method on <var_v:TypeVisitor>*/;
8689 var_callsite = var23;
8690 var24 = NULL;
8691 if (var_callsite == NULL) {
8692 var25 = 1; /* is null */
8693 } else {
8694 var25 = 0; /* arg is null but recv is not */
8695 }
8696 if (var25){
8697 goto RET_LABEL;
8698 } else {
8699 }
8700 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendReassignFormExpr>*/;
8701 var26 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendReassignFormExpr>*/;
8702 var_args = var26;
8703 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendReassignFormExpr>*/;
8704 var27 = ((short int (*)(val*, val*, val*))(var_callsite->class->vft[COLOR_typing__CallSite__check_signature]))(var_callsite, var_v, var_args) /* check_signature on <var_callsite:nullable CallSite(CallSite)>*/;
8705 var27;
8706 var28 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
8707 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MSignature__return_mtype]))(var28) /* return_mtype on <var28:MSignature>*/;
8708 var_readtype = var29;
8709 var30 = NULL;
8710 if (var_readtype == NULL) {
8711 var31 = 1; /* is null */
8712 } else {
8713 var31 = 0; /* arg is null but recv is not */
8714 }
8715 if (var31){
8716 if (varonce32) {
8717 var33 = varonce32;
8718 } else {
8719 var34 = "Error: ";
8720 var35 = 7;
8721 var36 = string__NativeString__to_s_with_length(var34, var35);
8722 var33 = var36;
8723 varonce32 = var33;
8724 }
8725 if (varonce37) {
8726 var38 = varonce37;
8727 } else {
8728 var39 = " is not a function";
8729 var40 = 18;
8730 var41 = string__NativeString__to_s_with_length(var39, var40);
8731 var38 = var41;
8732 varonce37 = var38;
8733 }
8734 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
8735 { /* var42 = array_instance Array[Object] */
8736 var43 = 3;
8737 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
8738 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var33;
8739 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_name;
8740 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
8741 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
8742 }
8743 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
8744 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var45) /* error on <var_v:TypeVisitor>*/;
8745 goto RET_LABEL;
8746 } else {
8747 }
8748 if (varonce46) {
8749 var47 = varonce46;
8750 } else {
8751 var48 = "=";
8752 var49 = 1;
8753 var50 = string__NativeString__to_s_with_length(var48, var49);
8754 var47 = var50;
8755 varonce46 = var47;
8756 }
8757 var51 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var47) /* + on <var_name:String>*/;
8758 var52 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8759 /* <var52:AExpr> isa ASelfExpr */
8760 cltype54 = type_parser_nodes__ASelfExpr.color;
8761 idtype55 = type_parser_nodes__ASelfExpr.id;
8762 if(cltype54 >= var52->type->table_size) {
8763 var53 = 0;
8764 } else {
8765 var53 = var52->type->type_table[cltype54] == idtype55;
8766 }
8767 var56 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_recvtype, var51, var53) /* get_method on <var_v:TypeVisitor>*/;
8768 var_wcallsite = var56;
8769 var57 = NULL;
8770 if (var_wcallsite == NULL) {
8771 var58 = 1; /* is null */
8772 } else {
8773 var58 = 0; /* arg is null but recv is not */
8774 }
8775 if (var58){
8776 goto RET_LABEL;
8777 } else {
8778 }
8779 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite_61d]))(self, var_wcallsite) /* write_callsite= on <self:ASendReassignFormExpr>*/;
8780 var59 = ((val* (*)(val*))(var_wcallsite->class->vft[COLOR_typing__CallSite__msignature]))(var_wcallsite) /* msignature on <var_wcallsite:nullable CallSite(CallSite)>*/;
8781 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_model__MSignature__mparameters]))(var59) /* mparameters on <var59:MSignature>*/;
8782 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var60) /* last on <var60:Array[MParameter]>*/;
8783 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MParameter__mtype]))(var61) /* mtype on <var61:nullable Object(MParameter)>*/;
8784 var63 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__resolve_reassignment]))(self, var_v, var_readtype, var62) /* resolve_reassignment on <self:ASendReassignFormExpr>*/;
8785 var_wtype = var63;
8786 var64 = NULL;
8787 if (var_wtype == NULL) {
8788 var65 = 1; /* is null */
8789 } else {
8790 var65 = 0; /* arg is null but recv is not */
8791 }
8792 if (var65){
8793 goto RET_LABEL;
8794 } else {
8795 }
8796 var66 = ((val* (*)(val*))(var_args->class->vft[COLOR_array__Collection__to_a]))(var_args) /* to_a on <var_args:Array[AExpr]>*/;
8797 var_args = var66;
8798 var67 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
8799 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var67) /* add on <var_args:Array[AExpr]>*/;
8800 var68 = ((short int (*)(val*, val*, val*))(var_wcallsite->class->vft[COLOR_typing__CallSite__check_signature]))(var_wcallsite, var_v, var_args) /* check_signature on <var_wcallsite:nullable CallSite(CallSite)>*/;
8801 var68;
8802 var69 = 1;
8803 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var69) /* is_typed= on <self:ASendReassignFormExpr>*/;
8804 RET_LABEL:;
8805 }
8806 /* method typing#ASendReassignFormExpr#accept_typing for (self: Object, TypeVisitor) */
8807 void VIRTUAL_typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8808 typing__ASendReassignFormExpr__accept_typing(self, p0);
8809 RET_LABEL:;
8810 }
8811 /* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */
8812 val* typing__ACallReassignExpr__property_name(val* self) {
8813 val* var /* : String */;
8814 val* var1 /* : TId */;
8815 val* var2 /* : String */;
8816 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallReassignExpr>*/;
8817 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8818 var = var2;
8819 goto RET_LABEL;
8820 RET_LABEL:;
8821 return var;
8822 }
8823 /* method typing#ACallReassignExpr#property_name for (self: Object): String */
8824 val* VIRTUAL_typing__ACallReassignExpr__property_name(val* self) {
8825 val* var /* : String */;
8826 val* var1 /* : String */;
8827 var1 = typing__ACallReassignExpr__property_name(self);
8828 var = var1;
8829 RET_LABEL:;
8830 return var;
8831 }
8832 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */
8833 val* typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8834 val* var /* : Array[AExpr] */;
8835 val* var1 /* : AExprs */;
8836 val* var2 /* : Array[AExpr] */;
8837 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallReassignExpr>*/;
8838 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8839 var = var2;
8840 goto RET_LABEL;
8841 RET_LABEL:;
8842 return var;
8843 }
8844 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8845 val* VIRTUAL_typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8846 val* var /* : Array[AExpr] */;
8847 val* var1 /* : Array[AExpr] */;
8848 var1 = typing__ACallReassignExpr__compute_raw_arguments(self);
8849 var = var1;
8850 RET_LABEL:;
8851 return var;
8852 }
8853 /* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */
8854 val* typing__ABraReassignExpr__property_name(val* self) {
8855 val* var /* : String */;
8856 static val* varonce;
8857 val* var1 /* : String */;
8858 char* var2 /* : NativeString */;
8859 long var3 /* : Int */;
8860 val* var4 /* : String */;
8861 if (varonce) {
8862 var1 = varonce;
8863 } else {
8864 var2 = "[]";
8865 var3 = 2;
8866 var4 = string__NativeString__to_s_with_length(var2, var3);
8867 var1 = var4;
8868 varonce = var1;
8869 }
8870 var = var1;
8871 goto RET_LABEL;
8872 RET_LABEL:;
8873 return var;
8874 }
8875 /* method typing#ABraReassignExpr#property_name for (self: Object): String */
8876 val* VIRTUAL_typing__ABraReassignExpr__property_name(val* self) {
8877 val* var /* : String */;
8878 val* var1 /* : String */;
8879 var1 = typing__ABraReassignExpr__property_name(self);
8880 var = var1;
8881 RET_LABEL:;
8882 return var;
8883 }
8884 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */
8885 val* typing__ABraReassignExpr__compute_raw_arguments(val* self) {
8886 val* var /* : Array[AExpr] */;
8887 val* var1 /* : AExprs */;
8888 val* var2 /* : Array[AExpr] */;
8889 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraReassignExpr>*/;
8890 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8891 var = var2;
8892 goto RET_LABEL;
8893 RET_LABEL:;
8894 return var;
8895 }
8896 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8897 val* VIRTUAL_typing__ABraReassignExpr__compute_raw_arguments(val* self) {
8898 val* var /* : Array[AExpr] */;
8899 val* var1 /* : Array[AExpr] */;
8900 var1 = typing__ABraReassignExpr__compute_raw_arguments(self);
8901 var = var1;
8902 RET_LABEL:;
8903 return var;
8904 }
8905 /* method typing#AInitExpr#property_name for (self: AInitExpr): String */
8906 val* typing__AInitExpr__property_name(val* self) {
8907 val* var /* : String */;
8908 static val* varonce;
8909 val* var1 /* : String */;
8910 char* var2 /* : NativeString */;
8911 long var3 /* : Int */;
8912 val* var4 /* : String */;
8913 if (varonce) {
8914 var1 = varonce;
8915 } else {
8916 var2 = "init";
8917 var3 = 4;
8918 var4 = string__NativeString__to_s_with_length(var2, var3);
8919 var1 = var4;
8920 varonce = var1;
8921 }
8922 var = var1;
8923 goto RET_LABEL;
8924 RET_LABEL:;
8925 return var;
8926 }
8927 /* method typing#AInitExpr#property_name for (self: Object): String */
8928 val* VIRTUAL_typing__AInitExpr__property_name(val* self) {
8929 val* var /* : String */;
8930 val* var1 /* : String */;
8931 var1 = typing__AInitExpr__property_name(self);
8932 var = var1;
8933 RET_LABEL:;
8934 return var;
8935 }
8936 /* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */
8937 val* typing__AInitExpr__compute_raw_arguments(val* self) {
8938 val* var /* : Array[AExpr] */;
8939 val* var1 /* : AExprs */;
8940 val* var2 /* : Array[AExpr] */;
8941 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AInitExpr__n_args]))(self) /* n_args on <self:AInitExpr>*/;
8942 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8943 var = var2;
8944 goto RET_LABEL;
8945 RET_LABEL:;
8946 return var;
8947 }
8948 /* method typing#AInitExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8949 val* VIRTUAL_typing__AInitExpr__compute_raw_arguments(val* self) {
8950 val* var /* : Array[AExpr] */;
8951 val* var1 /* : Array[AExpr] */;
8952 var1 = typing__AInitExpr__compute_raw_arguments(self);
8953 var = var1;
8954 RET_LABEL:;
8955 return var;
8956 }
8957 /* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */
8958 val* typing__AExprs__to_a(val* self) {
8959 val* var /* : Array[AExpr] */;
8960 val* var1 /* : ANodes[AExpr] */;
8961 val* var2 /* : Array[nullable Object] */;
8962 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(self) /* n_exprs on <self:AExprs>*/;
8963 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:ANodes[AExpr]>*/;
8964 var = var2;
8965 goto RET_LABEL;
8966 RET_LABEL:;
8967 return var;
8968 }
8969 /* method typing#AExprs#to_a for (self: Object): Array[AExpr] */
8970 val* VIRTUAL_typing__AExprs__to_a(val* self) {
8971 val* var /* : Array[AExpr] */;
8972 val* var1 /* : Array[AExpr] */;
8973 var1 = typing__AExprs__to_a(self);
8974 var = var1;
8975 RET_LABEL:;
8976 return var;
8977 }
8978 /* method typing#ASuperExpr#callsite for (self: ASuperExpr): nullable CallSite */
8979 val* typing__ASuperExpr__callsite(val* self) {
8980 val* var /* : nullable CallSite */;
8981 val* var1 /* : nullable CallSite */;
8982 var1 = self->attrs[COLOR_typing__ASuperExpr___64dcallsite].val; /* @callsite on <self:ASuperExpr> */
8983 var = var1;
8984 RET_LABEL:;
8985 return var;
8986 }
8987 /* method typing#ASuperExpr#callsite for (self: Object): nullable CallSite */
8988 val* VIRTUAL_typing__ASuperExpr__callsite(val* self) {
8989 val* var /* : nullable CallSite */;
8990 val* var1 /* : nullable CallSite */;
8991 var1 = typing__ASuperExpr__callsite(self);
8992 var = var1;
8993 RET_LABEL:;
8994 return var;
8995 }
8996 /* method typing#ASuperExpr#callsite= for (self: ASuperExpr, nullable CallSite) */
8997 void typing__ASuperExpr__callsite_61d(val* self, val* p0) {
8998 self->attrs[COLOR_typing__ASuperExpr___64dcallsite].val = p0; /* @callsite on <self:ASuperExpr> */
8999 RET_LABEL:;
9000 }
9001 /* method typing#ASuperExpr#callsite= for (self: Object, nullable CallSite) */
9002 void VIRTUAL_typing__ASuperExpr__callsite_61d(val* self, val* p0) {
9003 typing__ASuperExpr__callsite_61d(self, p0);
9004 RET_LABEL:;
9005 }
9006 /* method typing#ASuperExpr#mpropdef for (self: ASuperExpr): nullable MMethodDef */
9007 val* typing__ASuperExpr__mpropdef(val* self) {
9008 val* var /* : nullable MMethodDef */;
9009 val* var1 /* : nullable MMethodDef */;
9010 var1 = self->attrs[COLOR_typing__ASuperExpr___64dmpropdef].val; /* @mpropdef on <self:ASuperExpr> */
9011 var = var1;
9012 RET_LABEL:;
9013 return var;
9014 }
9015 /* method typing#ASuperExpr#mpropdef for (self: Object): nullable MMethodDef */
9016 val* VIRTUAL_typing__ASuperExpr__mpropdef(val* self) {
9017 val* var /* : nullable MMethodDef */;
9018 val* var1 /* : nullable MMethodDef */;
9019 var1 = typing__ASuperExpr__mpropdef(self);
9020 var = var1;
9021 RET_LABEL:;
9022 return var;
9023 }
9024 /* method typing#ASuperExpr#mpropdef= for (self: ASuperExpr, nullable MMethodDef) */
9025 void typing__ASuperExpr__mpropdef_61d(val* self, val* p0) {
9026 self->attrs[COLOR_typing__ASuperExpr___64dmpropdef].val = p0; /* @mpropdef on <self:ASuperExpr> */
9027 RET_LABEL:;
9028 }
9029 /* method typing#ASuperExpr#mpropdef= for (self: Object, nullable MMethodDef) */
9030 void VIRTUAL_typing__ASuperExpr__mpropdef_61d(val* self, val* p0) {
9031 typing__ASuperExpr__mpropdef_61d(self, p0);
9032 RET_LABEL:;
9033 }
9034 /* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */
9035 void typing__ASuperExpr__accept_typing(val* self, val* p0) {
9036 val* var_v /* var v: TypeVisitor */;
9037 val* var /* : AClassdef */;
9038 val* var1 /* : nullable MClassDef */;
9039 val* var2 /* : MClassType */;
9040 val* var_recvtype /* var recvtype: MClassType */;
9041 val* var3 /* : MPropDef */;
9042 val* var4 /* : MProperty */;
9043 val* var_mproperty /* var mproperty: MProperty */;
9044 short int var5 /* : Bool */;
9045 int cltype;
9046 int idtype;
9047 short int var6 /* : Bool */;
9048 static val* varonce;
9049 val* var7 /* : String */;
9050 char* var8 /* : NativeString */;
9051 long var9 /* : Int */;
9052 val* var10 /* : String */;
9053 val* var11 /* : MModule */;
9054 val* var12 /* : Array[MPropDef] */;
9055 val* var_superprops /* var superprops: Array[MMethodDef] */;
9056 long var13 /* : Int */;
9057 long var14 /* : Int */;
9058 short int var15 /* : Bool */;
9059 short int var17 /* : Bool */;
9060 short int var18 /* : Bool */;
9061 short int var19 /* : Bool */;
9062 short int var_ /* var : Bool */;
9063 val* var20 /* : MPropDef */;
9064 short int var21 /* : Bool */;
9065 static val* varonce22;
9066 val* var23 /* : String */;
9067 char* var24 /* : NativeString */;
9068 long var25 /* : Int */;
9069 val* var26 /* : String */;
9070 static val* varonce27;
9071 val* var28 /* : String */;
9072 char* var29 /* : NativeString */;
9073 long var30 /* : Int */;
9074 val* var31 /* : String */;
9075 val* var32 /* : Array[Object] */;
9076 long var33 /* : Int */;
9077 val* var34 /* : NativeArray[Object] */;
9078 val* var35 /* : String */;
9079 val* var36 /* : nullable Object */;
9080 val* var_superprop /* var superprop: MMethodDef */;
9081 short int var37 /* : Bool */;
9082 val* var38 /* : MSignature */;
9083 val* var_msignature /* var msignature: MSignature */;
9084 val* var39 /* : AExprs */;
9085 val* var40 /* : Array[AExpr] */;
9086 val* var_args /* var args: Array[AExpr] */;
9087 long var41 /* : Int */;
9088 long var42 /* : Int */;
9089 short int var43 /* : Bool */;
9090 short int var45 /* : Bool */;
9091 int cltype46;
9092 int idtype47;
9093 const char* var_class_name;
9094 short int var48 /* : Bool */;
9095 val* var49 /* : String */;
9096 short int var50 /* : Bool */;
9097 val* var51 /* : nullable MType */;
9098 short int var52 /* : Bool */;
9099 val* var53 /* : MPropDef */;
9100 short int var54 /* : Bool */;
9101 val* var55 /* : MPropDef */;
9102 short int var56 /* : Bool */;
9103 int cltype57;
9104 int idtype58;
9105 const char* var_class_name59;
9106 var_v = p0;
9107 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9108 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9109 if (var1 == NULL) {
9110 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9111 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1429);
9112 show_backtrace(1);
9113 } else {
9114 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9115 }
9116 var_recvtype = var2;
9117 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9118 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9119 var_mproperty = var4;
9120 /* <var_mproperty:MProperty> isa MMethod */
9121 cltype = type_model__MMethod.color;
9122 idtype = type_model__MMethod.id;
9123 if(cltype >= var_mproperty->type->table_size) {
9124 var5 = 0;
9125 } else {
9126 var5 = var_mproperty->type->type_table[cltype] == idtype;
9127 }
9128 var6 = !var5;
9129 if (var6){
9130 if (varonce) {
9131 var7 = varonce;
9132 } else {
9133 var8 = "Error: super only usable in a method";
9134 var9 = 36;
9135 var10 = string__NativeString__to_s_with_length(var8, var9);
9136 var7 = var10;
9137 varonce = var7;
9138 }
9139 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var7) /* error on <var_v:TypeVisitor>*/;
9140 goto RET_LABEL;
9141 } else {
9142 }
9143 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9144 var12 = ((val* (*)(val*, val*, val*))(var_mproperty->class->vft[COLOR_model__MProperty__lookup_super_definitions]))(var_mproperty, var11, var_recvtype) /* lookup_super_definitions on <var_mproperty:MProperty(MMethod)>*/;
9145 var_superprops = var12;
9146 var13 = ((long (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__length]))(var_superprops) /* length on <var_superprops:Array[MMethodDef]>*/;
9147 var14 = 0;
9148 { /* Inline kernel#Int#== (var13,var14) */
9149 var17 = var13 == var14;
9150 var15 = var17;
9151 goto RET_LABEL16;
9152 RET_LABEL16:(void)0;
9153 }
9154 if (var15){
9155 var19 = ((short int (*)(val*))(var_mproperty->class->vft[COLOR_model__MMethod__is_init]))(var_mproperty) /* is_init on <var_mproperty:MProperty(MMethod)>*/;
9156 var_ = var19;
9157 if (var19){
9158 var20 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9159 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_model__MPropDef__is_intro]))(var20) /* is_intro on <var20:MPropDef>*/;
9160 var18 = var21;
9161 } else {
9162 var18 = var_;
9163 }
9164 if (var18){
9165 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__process_superinit]))(self, var_v) /* process_superinit on <self:ASuperExpr>*/;
9166 goto RET_LABEL;
9167 } else {
9168 }
9169 if (varonce22) {
9170 var23 = varonce22;
9171 } else {
9172 var24 = "Error: No super method to call for ";
9173 var25 = 35;
9174 var26 = string__NativeString__to_s_with_length(var24, var25);
9175 var23 = var26;
9176 varonce22 = var23;
9177 }
9178 if (varonce27) {
9179 var28 = varonce27;
9180 } else {
9181 var29 = ".";
9182 var30 = 1;
9183 var31 = string__NativeString__to_s_with_length(var29, var30);
9184 var28 = var31;
9185 varonce27 = var28;
9186 }
9187 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9188 { /* var32 = array_instance Array[Object] */
9189 var33 = 3;
9190 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
9191 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
9192 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_mproperty;
9193 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
9194 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
9195 }
9196 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
9197 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var35) /* error on <var_v:TypeVisitor>*/;
9198 goto RET_LABEL;
9199 } else {
9200 }
9201 var36 = ((val* (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__first]))(var_superprops) /* first on <var_superprops:Array[MMethodDef]>*/;
9202 var_superprop = var36;
9203 var37 = 1;
9204 var38 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(var_v, var_superprop, var_recvtype, var37) /* resolve_signature_for on <var_v:TypeVisitor>*/;
9205 var_msignature = var38;
9206 var39 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9207 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_typing__AExprs__to_a]))(var39) /* to_a on <var39:AExprs>*/;
9208 var_args = var40;
9209 var41 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9210 var42 = 0;
9211 { /* Inline kernel#Int#> (var41,var42) */
9212 /* Covariant cast for argument 0 (i) <var42:Int> isa OTHER */
9213 /* <var42:Int> isa OTHER */
9214 var45 = 1; /* easy <var42:Int> isa OTHER*/
9215 if (!var45) {
9216 var_class_name = type_kernel__Int.name;
9217 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
9218 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
9219 show_backtrace(1);
9220 }
9221 var48 = var41 > var42;
9222 var43 = var48;
9223 goto RET_LABEL44;
9224 RET_LABEL44:(void)0;
9225 }
9226 if (var43){
9227 var49 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty(MMethod)>*/;
9228 var50 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, self, var_args, var49, var_msignature) /* check_signature on <var_v:TypeVisitor>*/;
9229 var50;
9230 } else {
9231 }
9232 var51 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
9233 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var51) /* mtype= on <self:ASuperExpr>*/;
9234 var52 = 1;
9235 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var52) /* is_typed= on <self:ASuperExpr>*/;
9236 var53 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9237 var54 = 1;
9238 ((void (*)(val*, short int))(var53->class->vft[COLOR_modelize_property__MPropDef__has_supercall_61d]))(var53, var54) /* has_supercall= on <var53:MPropDef>*/;
9239 var55 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9240 /* <var55:MPropDef> isa MMethodDef */
9241 cltype57 = type_model__MMethodDef.color;
9242 idtype58 = type_model__MMethodDef.id;
9243 if(cltype57 >= var55->type->table_size) {
9244 var56 = 0;
9245 } else {
9246 var56 = var55->type->type_table[cltype57] == idtype58;
9247 }
9248 if (!var56) {
9249 var_class_name59 = var55 == NULL ? "null" : var55->type->name;
9250 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name59);
9251 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1455);
9252 show_backtrace(1);
9253 }
9254 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__mpropdef_61d]))(self, var55) /* mpropdef= on <self:ASuperExpr>*/;
9255 RET_LABEL:;
9256 }
9257 /* method typing#ASuperExpr#accept_typing for (self: Object, TypeVisitor) */
9258 void VIRTUAL_typing__ASuperExpr__accept_typing(val* self, val* p0) {
9259 typing__ASuperExpr__accept_typing(self, p0);
9260 RET_LABEL:;
9261 }