c_src: update for new ffi syntax
[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#MPropDef#has_supercall for (self: MPropDef): Bool */
36 short int typing__MPropDef__has_supercall(val* self) {
37 short int var /* : Bool */;
38 short int var1 /* : Bool */;
39 var1 = self->attrs[COLOR_typing__MPropDef___64dhas_supercall].s; /* @has_supercall on <self:MPropDef> */
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method typing#MPropDef#has_supercall for (self: Object): Bool */
45 short int VIRTUAL_typing__MPropDef__has_supercall(val* self) {
46 short int var /* : Bool */;
47 short int var1 /* : Bool */;
48 var1 = typing__MPropDef__has_supercall(self);
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method typing#MPropDef#has_supercall= for (self: MPropDef, Bool) */
54 void typing__MPropDef__has_supercall_61d(val* self, short int p0) {
55 self->attrs[COLOR_typing__MPropDef___64dhas_supercall].s = p0; /* @has_supercall on <self:MPropDef> */
56 RET_LABEL:;
57 }
58 /* method typing#MPropDef#has_supercall= for (self: Object, Bool) */
59 void VIRTUAL_typing__MPropDef__has_supercall_61d(val* self, short int p0) {
60 typing__MPropDef__has_supercall_61d(self, p0);
61 RET_LABEL:;
62 }
63 /* method typing#TypingPhase#process_npropdef for (self: TypingPhase, APropdef) */
64 void typing__TypingPhase__process_npropdef(val* self, val* p0) {
65 val* var_npropdef /* var npropdef: APropdef */;
66 val* var /* : ToolContext */;
67 val* var1 /* : ModelBuilder */;
68 var_npropdef = p0;
69 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:TypingPhase>*/;
70 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var) /* modelbuilder on <var:ToolContext>*/;
71 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_typing__APropdef__do_typing]))(var_npropdef, var1) /* do_typing on <var_npropdef:APropdef>*/;
72 RET_LABEL:;
73 }
74 /* method typing#TypingPhase#process_npropdef for (self: Object, APropdef) */
75 void VIRTUAL_typing__TypingPhase__process_npropdef(val* self, val* p0) {
76 typing__TypingPhase__process_npropdef(self, p0);
77 RET_LABEL:;
78 }
79 /* method typing#TypeVisitor#modelbuilder for (self: TypeVisitor): ModelBuilder */
80 val* typing__TypeVisitor__modelbuilder(val* self) {
81 val* var /* : ModelBuilder */;
82 val* var1 /* : ModelBuilder */;
83 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val; /* @modelbuilder on <self:TypeVisitor> */
84 if (var1 == NULL) {
85 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelbuilder");
86 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 41);
87 show_backtrace(1);
88 }
89 var = var1;
90 RET_LABEL:;
91 return var;
92 }
93 /* method typing#TypeVisitor#modelbuilder for (self: Object): ModelBuilder */
94 val* VIRTUAL_typing__TypeVisitor__modelbuilder(val* self) {
95 val* var /* : ModelBuilder */;
96 val* var1 /* : ModelBuilder */;
97 var1 = typing__TypeVisitor__modelbuilder(self);
98 var = var1;
99 RET_LABEL:;
100 return var;
101 }
102 /* method typing#TypeVisitor#modelbuilder= for (self: TypeVisitor, ModelBuilder) */
103 void typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
104 self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val = p0; /* @modelbuilder on <self:TypeVisitor> */
105 RET_LABEL:;
106 }
107 /* method typing#TypeVisitor#modelbuilder= for (self: Object, ModelBuilder) */
108 void VIRTUAL_typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
109 typing__TypeVisitor__modelbuilder_61d(self, p0);
110 RET_LABEL:;
111 }
112 /* method typing#TypeVisitor#nclassdef for (self: TypeVisitor): AClassdef */
113 val* typing__TypeVisitor__nclassdef(val* self) {
114 val* var /* : AClassdef */;
115 val* var1 /* : AClassdef */;
116 var1 = self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val; /* @nclassdef on <self:TypeVisitor> */
117 if (var1 == NULL) {
118 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nclassdef");
119 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 42);
120 show_backtrace(1);
121 }
122 var = var1;
123 RET_LABEL:;
124 return var;
125 }
126 /* method typing#TypeVisitor#nclassdef for (self: Object): AClassdef */
127 val* VIRTUAL_typing__TypeVisitor__nclassdef(val* self) {
128 val* var /* : AClassdef */;
129 val* var1 /* : AClassdef */;
130 var1 = typing__TypeVisitor__nclassdef(self);
131 var = var1;
132 RET_LABEL:;
133 return var;
134 }
135 /* method typing#TypeVisitor#nclassdef= for (self: TypeVisitor, AClassdef) */
136 void typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
137 self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val = p0; /* @nclassdef on <self:TypeVisitor> */
138 RET_LABEL:;
139 }
140 /* method typing#TypeVisitor#nclassdef= for (self: Object, AClassdef) */
141 void VIRTUAL_typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
142 typing__TypeVisitor__nclassdef_61d(self, p0);
143 RET_LABEL:;
144 }
145 /* method typing#TypeVisitor#mpropdef for (self: TypeVisitor): MPropDef */
146 val* typing__TypeVisitor__mpropdef(val* self) {
147 val* var /* : MPropDef */;
148 val* var1 /* : MPropDef */;
149 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val; /* @mpropdef on <self:TypeVisitor> */
150 if (var1 == NULL) {
151 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
152 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 43);
153 show_backtrace(1);
154 }
155 var = var1;
156 RET_LABEL:;
157 return var;
158 }
159 /* method typing#TypeVisitor#mpropdef for (self: Object): MPropDef */
160 val* VIRTUAL_typing__TypeVisitor__mpropdef(val* self) {
161 val* var /* : MPropDef */;
162 val* var1 /* : MPropDef */;
163 var1 = typing__TypeVisitor__mpropdef(self);
164 var = var1;
165 RET_LABEL:;
166 return var;
167 }
168 /* method typing#TypeVisitor#mpropdef= for (self: TypeVisitor, MPropDef) */
169 void typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
170 self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val = p0; /* @mpropdef on <self:TypeVisitor> */
171 RET_LABEL:;
172 }
173 /* method typing#TypeVisitor#mpropdef= for (self: Object, MPropDef) */
174 void VIRTUAL_typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
175 typing__TypeVisitor__mpropdef_61d(self, p0);
176 RET_LABEL:;
177 }
178 /* method typing#TypeVisitor#selfvariable for (self: TypeVisitor): Variable */
179 val* typing__TypeVisitor__selfvariable(val* self) {
180 val* var /* : Variable */;
181 val* var1 /* : Variable */;
182 var1 = self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val; /* @selfvariable on <self:TypeVisitor> */
183 if (var1 == NULL) {
184 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @selfvariable");
185 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 45);
186 show_backtrace(1);
187 }
188 var = var1;
189 RET_LABEL:;
190 return var;
191 }
192 /* method typing#TypeVisitor#selfvariable for (self: Object): Variable */
193 val* VIRTUAL_typing__TypeVisitor__selfvariable(val* self) {
194 val* var /* : Variable */;
195 val* var1 /* : Variable */;
196 var1 = typing__TypeVisitor__selfvariable(self);
197 var = var1;
198 RET_LABEL:;
199 return var;
200 }
201 /* method typing#TypeVisitor#selfvariable= for (self: TypeVisitor, Variable) */
202 void typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
203 self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val = p0; /* @selfvariable on <self:TypeVisitor> */
204 RET_LABEL:;
205 }
206 /* method typing#TypeVisitor#selfvariable= for (self: Object, Variable) */
207 void VIRTUAL_typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
208 typing__TypeVisitor__selfvariable_61d(self, p0);
209 RET_LABEL:;
210 }
211 /* method typing#TypeVisitor#init for (self: TypeVisitor, ModelBuilder, AClassdef, MPropDef) */
212 void typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
213 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
214 val* var_nclassdef /* var nclassdef: AClassdef */;
215 val* var_mpropdef /* var mpropdef: MPropDef */;
216 val* var /* : nullable MClassDef */;
217 val* var1 /* : MClass */;
218 val* var_mclass /* var mclass: MClass */;
219 val* var2 /* : Variable */;
220 static val* varonce;
221 val* var3 /* : String */;
222 char* var4 /* : NativeString */;
223 long var5 /* : Int */;
224 val* var6 /* : String */;
225 val* var_selfvariable /* var selfvariable: Variable */;
226 val* var7 /* : MClassType */;
227 var_modelbuilder = p0;
228 var_nclassdef = p1;
229 var_mpropdef = p2;
230 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:TypeVisitor>*/;
231 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef_61d]))(self, var_nclassdef) /* nclassdef= on <self:TypeVisitor>*/;
232 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:TypeVisitor>*/;
233 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
234 if (var == NULL) {
235 fprintf(stderr, "Runtime error: %s", "Reciever is null");
236 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 53);
237 show_backtrace(1);
238 } else {
239 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__mclass]))(var) /* mclass on <var:nullable MClassDef>*/;
240 }
241 var_mclass = var1;
242 var2 = NEW_scope__Variable(&type_scope__Variable);
243 if (varonce) {
244 var3 = varonce;
245 } else {
246 var4 = "self";
247 var5 = 4;
248 var6 = string__NativeString__to_s_with_length(var4, var5);
249 var3 = var6;
250 varonce = var3;
251 }
252 ((void (*)(val*, val*))(var2->class->vft[COLOR_scope__Variable__init]))(var2, var3) /* init on <var2:Variable>*/;
253 var_selfvariable = var2;
254 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__selfvariable_61d]))(self, var_selfvariable) /* selfvariable= on <self:TypeVisitor>*/;
255 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
256 ((void (*)(val*, val*))(var_selfvariable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_selfvariable, var7) /* declared_type= on <var_selfvariable:Variable>*/;
257 RET_LABEL:;
258 }
259 /* method typing#TypeVisitor#init for (self: Object, ModelBuilder, AClassdef, MPropDef) */
260 void VIRTUAL_typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
261 typing__TypeVisitor__init(self, p0, p1, p2);
262 RET_LABEL:;
263 }
264 /* method typing#TypeVisitor#mmodule for (self: TypeVisitor): MModule */
265 val* typing__TypeVisitor__mmodule(val* self) {
266 val* var /* : MModule */;
267 val* var1 /* : AClassdef */;
268 val* var2 /* : nullable MClassDef */;
269 val* var3 /* : MModule */;
270 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
271 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
272 if (var2 == NULL) {
273 fprintf(stderr, "Runtime error: %s", "Reciever is null");
274 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 60);
275 show_backtrace(1);
276 } else {
277 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
278 }
279 var = var3;
280 goto RET_LABEL;
281 RET_LABEL:;
282 return var;
283 }
284 /* method typing#TypeVisitor#mmodule for (self: Object): MModule */
285 val* VIRTUAL_typing__TypeVisitor__mmodule(val* self) {
286 val* var /* : MModule */;
287 val* var1 /* : MModule */;
288 var1 = typing__TypeVisitor__mmodule(self);
289 var = var1;
290 RET_LABEL:;
291 return var;
292 }
293 /* method typing#TypeVisitor#anchor for (self: TypeVisitor): MClassType */
294 val* typing__TypeVisitor__anchor(val* self) {
295 val* var /* : MClassType */;
296 val* var1 /* : AClassdef */;
297 val* var2 /* : nullable MClassDef */;
298 val* var3 /* : MClassType */;
299 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
300 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
301 if (var2 == NULL) {
302 fprintf(stderr, "Runtime error: %s", "Reciever is null");
303 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 62);
304 show_backtrace(1);
305 } else {
306 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var2) /* bound_mtype on <var2:nullable MClassDef>*/;
307 }
308 var = var3;
309 goto RET_LABEL;
310 RET_LABEL:;
311 return var;
312 }
313 /* method typing#TypeVisitor#anchor for (self: Object): MClassType */
314 val* VIRTUAL_typing__TypeVisitor__anchor(val* self) {
315 val* var /* : MClassType */;
316 val* var1 /* : MClassType */;
317 var1 = typing__TypeVisitor__anchor(self);
318 var = var1;
319 RET_LABEL:;
320 return var;
321 }
322 /* method typing#TypeVisitor#anchor_to for (self: TypeVisitor, MType): MType */
323 val* typing__TypeVisitor__anchor_to(val* self, val* p0) {
324 val* var /* : MType */;
325 val* var_mtype /* var mtype: MType */;
326 val* var1 /* : AClassdef */;
327 val* var2 /* : nullable MClassDef */;
328 val* var3 /* : MModule */;
329 val* var_mmodule /* var mmodule: MModule */;
330 val* var4 /* : AClassdef */;
331 val* var5 /* : nullable MClassDef */;
332 val* var6 /* : MClassType */;
333 val* var_anchor /* var anchor: MClassType */;
334 val* var7 /* : MType */;
335 var_mtype = p0;
336 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
337 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
338 if (var2 == NULL) {
339 fprintf(stderr, "Runtime error: %s", "Reciever is null");
340 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 66);
341 show_backtrace(1);
342 } else {
343 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
344 }
345 var_mmodule = var3;
346 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
347 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
348 if (var5 == NULL) {
349 fprintf(stderr, "Runtime error: %s", "Reciever is null");
350 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 67);
351 show_backtrace(1);
352 } else {
353 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
354 }
355 var_anchor = var6;
356 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>*/;
357 var = var7;
358 goto RET_LABEL;
359 RET_LABEL:;
360 return var;
361 }
362 /* method typing#TypeVisitor#anchor_to for (self: Object, MType): MType */
363 val* VIRTUAL_typing__TypeVisitor__anchor_to(val* self, val* p0) {
364 val* var /* : MType */;
365 val* var1 /* : MType */;
366 var1 = typing__TypeVisitor__anchor_to(self, p0);
367 var = var1;
368 RET_LABEL:;
369 return var;
370 }
371 /* method typing#TypeVisitor#is_subtype for (self: TypeVisitor, MType, MType): Bool */
372 short int typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
373 short int var /* : Bool */;
374 val* var_sub /* var sub: MType */;
375 val* var_sup /* var sup: MType */;
376 val* var1 /* : AClassdef */;
377 val* var2 /* : nullable MClassDef */;
378 val* var3 /* : MModule */;
379 val* var_mmodule /* var mmodule: MModule */;
380 val* var4 /* : AClassdef */;
381 val* var5 /* : nullable MClassDef */;
382 val* var6 /* : MClassType */;
383 val* var_anchor /* var anchor: MClassType */;
384 short int var7 /* : Bool */;
385 var_sub = p0;
386 var_sup = p1;
387 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
388 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
389 if (var2 == NULL) {
390 fprintf(stderr, "Runtime error: %s", "Reciever is null");
391 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 73);
392 show_backtrace(1);
393 } else {
394 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
395 }
396 var_mmodule = var3;
397 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
398 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
399 if (var5 == NULL) {
400 fprintf(stderr, "Runtime error: %s", "Reciever is null");
401 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 74);
402 show_backtrace(1);
403 } else {
404 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
405 }
406 var_anchor = var6;
407 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>*/;
408 var = var7;
409 goto RET_LABEL;
410 RET_LABEL:;
411 return var;
412 }
413 /* method typing#TypeVisitor#is_subtype for (self: Object, MType, MType): Bool */
414 short int VIRTUAL_typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
415 short int var /* : Bool */;
416 short int var1 /* : Bool */;
417 var1 = typing__TypeVisitor__is_subtype(self, p0, p1);
418 var = var1;
419 RET_LABEL:;
420 return var;
421 }
422 /* method typing#TypeVisitor#resolve_for for (self: TypeVisitor, MType, MType, Bool): MType */
423 val* typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
424 val* var /* : MType */;
425 val* var_mtype /* var mtype: MType */;
426 val* var_subtype /* var subtype: MType */;
427 short int var_for_self /* var for_self: Bool */;
428 val* var1 /* : AClassdef */;
429 val* var2 /* : nullable MClassDef */;
430 val* var3 /* : MModule */;
431 val* var_mmodule /* var mmodule: MModule */;
432 val* var4 /* : AClassdef */;
433 val* var5 /* : nullable MClassDef */;
434 val* var6 /* : MClassType */;
435 val* var_anchor /* var anchor: MClassType */;
436 short int var7 /* : Bool */;
437 val* var8 /* : MType */;
438 val* var_res /* var res: MType */;
439 var_mtype = p0;
440 var_subtype = p1;
441 var_for_self = p2;
442 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
443 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
444 if (var2 == NULL) {
445 fprintf(stderr, "Runtime error: %s", "Reciever is null");
446 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 80);
447 show_backtrace(1);
448 } else {
449 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
450 }
451 var_mmodule = var3;
452 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
453 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
454 if (var5 == NULL) {
455 fprintf(stderr, "Runtime error: %s", "Reciever is null");
456 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 81);
457 show_backtrace(1);
458 } else {
459 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
460 }
461 var_anchor = var6;
462 var7 = !var_for_self;
463 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>*/;
464 var_res = var8;
465 var = var_res;
466 goto RET_LABEL;
467 RET_LABEL:;
468 return var;
469 }
470 /* method typing#TypeVisitor#resolve_for for (self: Object, MType, MType, Bool): MType */
471 val* VIRTUAL_typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
472 val* var /* : MType */;
473 val* var1 /* : MType */;
474 var1 = typing__TypeVisitor__resolve_for(self, p0, p1, p2);
475 var = var1;
476 RET_LABEL:;
477 return var;
478 }
479 /* method typing#TypeVisitor#resolve_signature_for for (self: TypeVisitor, MMethodDef, MType, Bool): MSignature */
480 val* typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
481 val* var /* : MSignature */;
482 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
483 val* var_recv /* var recv: MType */;
484 short int var_for_self /* var for_self: Bool */;
485 val* var1 /* : nullable MSignature */;
486 val* var2 /* : MType */;
487 short int var3 /* : Bool */;
488 int cltype;
489 int idtype;
490 const char* var_class_name;
491 var_mmethoddef = p0;
492 var_recv = p1;
493 var_for_self = p2;
494 var1 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
495 if (var1 == NULL) {
496 fprintf(stderr, "Runtime error: %s", "Cast failed");
497 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 94);
498 show_backtrace(1);
499 }
500 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>*/;
501 /* <var2:MType> isa MSignature */
502 cltype = type_model__MSignature.color;
503 idtype = type_model__MSignature.id;
504 if(cltype >= var2->type->table_size) {
505 var3 = 0;
506 } else {
507 var3 = var2->type->type_table[cltype] == idtype;
508 }
509 if (!var3) {
510 var_class_name = var2 == NULL ? "null" : var2->type->name;
511 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
512 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 94);
513 show_backtrace(1);
514 }
515 var = var2;
516 goto RET_LABEL;
517 RET_LABEL:;
518 return var;
519 }
520 /* method typing#TypeVisitor#resolve_signature_for for (self: Object, MMethodDef, MType, Bool): MSignature */
521 val* VIRTUAL_typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
522 val* var /* : MSignature */;
523 val* var1 /* : MSignature */;
524 var1 = typing__TypeVisitor__resolve_signature_for(self, p0, p1, p2);
525 var = var1;
526 RET_LABEL:;
527 return var;
528 }
529 /* method typing#TypeVisitor#check_subtype for (self: TypeVisitor, ANode, MType, MType): nullable MType */
530 val* typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
531 val* var /* : nullable MType */;
532 val* var_node /* var node: ANode */;
533 val* var_sub /* var sub: MType */;
534 val* var_sup /* var sup: MType */;
535 short int var1 /* : Bool */;
536 val* var2 /* : MType */;
537 short int var3 /* : Bool */;
538 val* var4 /* : ModelBuilder */;
539 static val* varonce;
540 val* var5 /* : String */;
541 char* var6 /* : NativeString */;
542 long var7 /* : Int */;
543 val* var8 /* : String */;
544 static val* varonce9;
545 val* var10 /* : String */;
546 char* var11 /* : NativeString */;
547 long var12 /* : Int */;
548 val* var13 /* : String */;
549 val* var14 /* : Array[Object] */;
550 long var15 /* : Int */;
551 val* var16 /* : NativeArray[Object] */;
552 val* var17 /* : String */;
553 val* var18 /* : null */;
554 var_node = p0;
555 var_sub = p1;
556 var_sup = p2;
557 var1 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
558 if (var1){
559 var = var_sub;
560 goto RET_LABEL;
561 } else {
562 }
563 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_sup) /* anchor_to on <self:TypeVisitor>*/;
564 var3 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var2) /* is_subtype on <self:TypeVisitor>*/;
565 if (var3){
566 var = var_sup;
567 goto RET_LABEL;
568 } else {
569 }
570 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
571 if (varonce) {
572 var5 = varonce;
573 } else {
574 var6 = "Type error: expected ";
575 var7 = 21;
576 var8 = string__NativeString__to_s_with_length(var6, var7);
577 var5 = var8;
578 varonce = var5;
579 }
580 if (varonce9) {
581 var10 = varonce9;
582 } else {
583 var11 = ", got ";
584 var12 = 6;
585 var13 = string__NativeString__to_s_with_length(var11, var12);
586 var10 = var13;
587 varonce9 = var10;
588 }
589 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
590 { /* var14 = array_instance Array[Object] */
591 var15 = 4;
592 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
593 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
594 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_sup;
595 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
596 ((struct instance_array__NativeArray*)var16)->values[3] = (val*) var_sub;
597 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
598 }
599 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
600 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var4, var_node, var17) /* error on <var4:ModelBuilder>*/;
601 var18 = NULL;
602 var = var18;
603 goto RET_LABEL;
604 RET_LABEL:;
605 return var;
606 }
607 /* method typing#TypeVisitor#check_subtype for (self: Object, ANode, MType, MType): nullable MType */
608 val* VIRTUAL_typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
609 val* var /* : nullable MType */;
610 val* var1 /* : nullable MType */;
611 var1 = typing__TypeVisitor__check_subtype(self, p0, p1, p2);
612 var = var1;
613 RET_LABEL:;
614 return var;
615 }
616 /* method typing#TypeVisitor#visit_stmt for (self: TypeVisitor, nullable AExpr) */
617 void typing__TypeVisitor__visit_stmt(val* self, val* p0) {
618 val* var_nexpr /* var nexpr: nullable AExpr */;
619 val* var /* : null */;
620 short int var1 /* : Bool */;
621 var_nexpr = p0;
622 var = NULL;
623 if (var_nexpr == NULL) {
624 var1 = 1; /* is null */
625 } else {
626 var1 = 0; /* arg is null but recv is not */
627 }
628 if (var1){
629 goto RET_LABEL;
630 } else {
631 }
632 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:nullable AExpr(AExpr)>*/;
633 RET_LABEL:;
634 }
635 /* method typing#TypeVisitor#visit_stmt for (self: Object, nullable AExpr) */
636 void VIRTUAL_typing__TypeVisitor__visit_stmt(val* self, val* p0) {
637 typing__TypeVisitor__visit_stmt(self, p0);
638 RET_LABEL:;
639 }
640 /* method typing#TypeVisitor#visit_expr for (self: TypeVisitor, AExpr): nullable MType */
641 val* typing__TypeVisitor__visit_expr(val* self, val* p0) {
642 val* var /* : nullable MType */;
643 val* var_nexpr /* var nexpr: AExpr */;
644 val* var1 /* : nullable MType */;
645 val* var_mtype /* var mtype: nullable MType */;
646 val* var2 /* : null */;
647 short int var3 /* : Bool */;
648 short int var4 /* : Bool */;
649 short int var5 /* : Bool */;
650 val* var6 /* : ModelBuilder */;
651 val* var7 /* : ToolContext */;
652 long var8 /* : Int */;
653 long var9 /* : Int */;
654 short int var10 /* : Bool */;
655 short int var12 /* : Bool */;
656 int cltype;
657 int idtype;
658 const char* var_class_name;
659 short int var13 /* : Bool */;
660 short int var14 /* : Bool */;
661 val* var15 /* : ModelBuilder */;
662 val* var16 /* : ToolContext */;
663 long var17 /* : Int */;
664 long var18 /* : Int */;
665 short int var19 /* : Bool */;
666 short int var21 /* : Bool */;
667 int cltype22;
668 int idtype23;
669 const char* var_class_name24;
670 short int var25 /* : Bool */;
671 static val* varonce;
672 val* var26 /* : String */;
673 char* var27 /* : NativeString */;
674 long var28 /* : Int */;
675 val* var29 /* : String */;
676 val* var30 /* : null */;
677 static val* varonce31;
678 val* var32 /* : String */;
679 char* var33 /* : NativeString */;
680 long var34 /* : Int */;
681 val* var35 /* : String */;
682 val* var36 /* : null */;
683 var_nexpr = p0;
684 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:AExpr>*/;
685 var1 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
686 var_mtype = var1;
687 var2 = NULL;
688 if (var_mtype == NULL) {
689 var3 = 0; /* is null */
690 } else {
691 var3 = 1; /* arg is null and recv is not */
692 }
693 if (var3){
694 var = var_mtype;
695 goto RET_LABEL;
696 } else {
697 }
698 var4 = ((short int (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__is_typed]))(var_nexpr) /* is_typed on <var_nexpr:AExpr>*/;
699 var5 = !var4;
700 if (var5){
701 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
702 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var6) /* toolcontext on <var6:ModelBuilder>*/;
703 var8 = ((long (*)(val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var7) /* error_count on <var7:ToolContext>*/;
704 var9 = 0;
705 { /* Inline kernel#Int#> (var8,var9) */
706 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
707 /* <var9:Int> isa OTHER */
708 var12 = 1; /* easy <var9:Int> isa OTHER*/
709 if (!var12) {
710 var_class_name = type_kernel__Int.name;
711 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
712 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
713 show_backtrace(1);
714 }
715 var13 = var8 > var9;
716 var10 = var13;
717 goto RET_LABEL11;
718 RET_LABEL11:(void)0;
719 }
720 var14 = !var10;
721 if (var14){
722 var15 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
723 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
724 var17 = ((long (*)(val*))(var16->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var16) /* verbose_level on <var16:ToolContext>*/;
725 var18 = 1;
726 { /* Inline kernel#Int#> (var17,var18) */
727 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
728 /* <var18:Int> isa OTHER */
729 var21 = 1; /* easy <var18:Int> isa OTHER*/
730 if (!var21) {
731 var_class_name24 = type_kernel__Int.name;
732 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
733 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
734 show_backtrace(1);
735 }
736 var25 = var17 > var18;
737 var19 = var25;
738 goto RET_LABEL20;
739 RET_LABEL20:(void)0;
740 }
741 if (var19){
742 if (varonce) {
743 var26 = varonce;
744 } else {
745 var27 = "No return type but no error.";
746 var28 = 28;
747 var29 = string__NativeString__to_s_with_length(var27, var28);
748 var26 = var29;
749 varonce = var26;
750 }
751 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_parser_nodes__ANode__debug]))(var_nexpr, var26) /* debug on <var_nexpr:AExpr>*/;
752 } else {
753 }
754 } else {
755 }
756 var30 = NULL;
757 var = var30;
758 goto RET_LABEL;
759 } else {
760 }
761 if (varonce31) {
762 var32 = varonce31;
763 } else {
764 var33 = "Type error: expected expression.";
765 var34 = 32;
766 var35 = string__NativeString__to_s_with_length(var33, var34);
767 var32 = var35;
768 varonce31 = var32;
769 }
770 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_nexpr, var32) /* error on <self:TypeVisitor>*/;
771 var36 = NULL;
772 var = var36;
773 goto RET_LABEL;
774 RET_LABEL:;
775 return var;
776 }
777 /* method typing#TypeVisitor#visit_expr for (self: Object, AExpr): nullable MType */
778 val* VIRTUAL_typing__TypeVisitor__visit_expr(val* self, val* p0) {
779 val* var /* : nullable MType */;
780 val* var1 /* : nullable MType */;
781 var1 = typing__TypeVisitor__visit_expr(self, p0);
782 var = var1;
783 RET_LABEL:;
784 return var;
785 }
786 /* method typing#TypeVisitor#visit_expr_subtype for (self: TypeVisitor, AExpr, nullable MType): nullable MType */
787 val* typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
788 val* var /* : nullable MType */;
789 val* var_nexpr /* var nexpr: AExpr */;
790 val* var_sup /* var sup: nullable MType */;
791 val* var1 /* : nullable MType */;
792 val* var_sub /* var sub: nullable MType */;
793 val* var2 /* : null */;
794 short int var3 /* : Bool */;
795 val* var4 /* : null */;
796 val* var5 /* : null */;
797 short int var6 /* : Bool */;
798 val* var7 /* : null */;
799 val* var8 /* : nullable MType */;
800 val* var_res /* var res: nullable MType */;
801 short int var9 /* : Bool */;
802 var_nexpr = p0;
803 var_sup = p1;
804 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
805 var_sub = var1;
806 var2 = NULL;
807 if (var_sub == NULL) {
808 var3 = 1; /* is null */
809 } else {
810 var3 = 0; /* arg is null but recv is not */
811 }
812 if (var3){
813 var4 = NULL;
814 var = var4;
815 goto RET_LABEL;
816 } else {
817 }
818 var5 = NULL;
819 if (var_sup == NULL) {
820 var6 = 1; /* is null */
821 } else {
822 var6 = 0; /* arg is null but recv is not */
823 }
824 if (var6){
825 var7 = NULL;
826 var = var7;
827 goto RET_LABEL;
828 } else {
829 }
830 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>*/;
831 var_res = var8;
832 if (var_res == NULL) {
833 var9 = 1; /* <var_sub:nullable MType(MType)> cannot be null */
834 } else {
835 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___33d_61d]))(var_res, var_sub) /* != on <var_res:nullable MType>*/;
836 }
837 if (var9){
838 ((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>*/;
839 } else {
840 }
841 var = var_res;
842 goto RET_LABEL;
843 RET_LABEL:;
844 return var;
845 }
846 /* method typing#TypeVisitor#visit_expr_subtype for (self: Object, AExpr, nullable MType): nullable MType */
847 val* VIRTUAL_typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
848 val* var /* : nullable MType */;
849 val* var1 /* : nullable MType */;
850 var1 = typing__TypeVisitor__visit_expr_subtype(self, p0, p1);
851 var = var1;
852 RET_LABEL:;
853 return var;
854 }
855 /* method typing#TypeVisitor#visit_expr_bool for (self: TypeVisitor, AExpr): nullable MType */
856 val* typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
857 val* var /* : nullable MType */;
858 val* var_nexpr /* var nexpr: AExpr */;
859 val* var1 /* : nullable MType */;
860 val* var2 /* : nullable MType */;
861 var_nexpr = p0;
862 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__type_bool]))(self, var_nexpr) /* type_bool on <self:TypeVisitor>*/;
863 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var_nexpr, var1) /* visit_expr_subtype on <self:TypeVisitor>*/;
864 var = var2;
865 goto RET_LABEL;
866 RET_LABEL:;
867 return var;
868 }
869 /* method typing#TypeVisitor#visit_expr_bool for (self: Object, AExpr): nullable MType */
870 val* VIRTUAL_typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
871 val* var /* : nullable MType */;
872 val* var1 /* : nullable MType */;
873 var1 = typing__TypeVisitor__visit_expr_bool(self, p0);
874 var = var1;
875 RET_LABEL:;
876 return var;
877 }
878 /* method typing#TypeVisitor#visit_expr_cast for (self: TypeVisitor, ANode, AExpr, AType): nullable MType */
879 val* typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
880 val* var /* : nullable MType */;
881 val* var_node /* var node: ANode */;
882 val* var_nexpr /* var nexpr: AExpr */;
883 val* var_ntype /* var ntype: AType */;
884 val* var1 /* : nullable MType */;
885 val* var_sub /* var sub: nullable MType */;
886 val* var2 /* : null */;
887 short int var3 /* : Bool */;
888 val* var4 /* : null */;
889 val* var5 /* : nullable MType */;
890 val* var_sup /* var sup: nullable MType */;
891 val* var6 /* : null */;
892 short int var7 /* : Bool */;
893 val* var8 /* : null */;
894 val* var9 /* : AClassdef */;
895 val* var10 /* : nullable MClassDef */;
896 val* var11 /* : MModule */;
897 val* var_mmodule /* var mmodule: MModule */;
898 val* var12 /* : AClassdef */;
899 val* var13 /* : nullable MClassDef */;
900 val* var14 /* : MClassType */;
901 val* var_anchor /* var anchor: MClassType */;
902 short int var15 /* : Bool */;
903 val* var16 /* : ModelBuilder */;
904 static val* varonce;
905 val* var17 /* : String */;
906 char* var18 /* : NativeString */;
907 long var19 /* : Int */;
908 val* var20 /* : String */;
909 static val* varonce21;
910 val* var22 /* : String */;
911 char* var23 /* : NativeString */;
912 long var24 /* : Int */;
913 val* var25 /* : String */;
914 val* var26 /* : Array[Object] */;
915 long var27 /* : Int */;
916 val* var28 /* : NativeArray[Object] */;
917 val* var29 /* : String */;
918 short int var30 /* : Bool */;
919 short int var31 /* : Bool */;
920 short int var_ /* var : Bool */;
921 short int var32 /* : Bool */;
922 short int var33 /* : Bool */;
923 val* var34 /* : ModelBuilder */;
924 static val* varonce35;
925 val* var36 /* : String */;
926 char* var37 /* : NativeString */;
927 long var38 /* : Int */;
928 val* var39 /* : String */;
929 static val* varonce40;
930 val* var41 /* : String */;
931 char* var42 /* : NativeString */;
932 long var43 /* : Int */;
933 val* var44 /* : String */;
934 static val* varonce45;
935 val* var46 /* : String */;
936 char* var47 /* : NativeString */;
937 long var48 /* : Int */;
938 val* var49 /* : String */;
939 val* var50 /* : Array[Object] */;
940 long var51 /* : Int */;
941 val* var52 /* : NativeArray[Object] */;
942 val* var53 /* : String */;
943 var_node = p0;
944 var_nexpr = p1;
945 var_ntype = p2;
946 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
947 var_sub = var1;
948 var2 = NULL;
949 if (var_sub == NULL) {
950 var3 = 1; /* is null */
951 } else {
952 var3 = 0; /* arg is null but recv is not */
953 }
954 if (var3){
955 var4 = NULL;
956 var = var4;
957 goto RET_LABEL;
958 } else {
959 }
960 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(self, var_ntype) /* resolve_mtype on <self:TypeVisitor>*/;
961 var_sup = var5;
962 var6 = NULL;
963 if (var_sup == NULL) {
964 var7 = 1; /* is null */
965 } else {
966 var7 = 0; /* arg is null but recv is not */
967 }
968 if (var7){
969 var8 = NULL;
970 var = var8;
971 goto RET_LABEL;
972 } else {
973 }
974 var9 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
975 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var9) /* mclassdef on <var9:AClassdef>*/;
976 if (var10 == NULL) {
977 fprintf(stderr, "Runtime error: %s", "Reciever is null");
978 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 184);
979 show_backtrace(1);
980 } else {
981 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassDef__mmodule]))(var10) /* mmodule on <var10:nullable MClassDef>*/;
982 }
983 var_mmodule = var11;
984 var12 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
985 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var12) /* mclassdef on <var12:AClassdef>*/;
986 if (var13 == NULL) {
987 fprintf(stderr, "Runtime error: %s", "Reciever is null");
988 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 185);
989 show_backtrace(1);
990 } else {
991 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on <var13:nullable MClassDef>*/;
992 }
993 var_anchor = var14;
994 var15 = ((short int (*)(val*, val*))(var_sup->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup, var_sub) /* == on <var_sup:nullable MType(MType)>*/;
995 if (var15){
996 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
997 if (varonce) {
998 var17 = varonce;
999 } else {
1000 var18 = "Warning: Expression is already a ";
1001 var19 = 33;
1002 var20 = string__NativeString__to_s_with_length(var18, var19);
1003 var17 = var20;
1004 varonce = var17;
1005 }
1006 if (varonce21) {
1007 var22 = varonce21;
1008 } else {
1009 var23 = ".";
1010 var24 = 1;
1011 var25 = string__NativeString__to_s_with_length(var23, var24);
1012 var22 = var25;
1013 varonce21 = var22;
1014 }
1015 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
1016 { /* var26 = array_instance Array[Object] */
1017 var27 = 3;
1018 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
1019 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
1020 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_sup;
1021 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
1022 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
1023 }
1024 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
1025 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var16, var_node, var29) /* warning on <var16:ModelBuilder>*/;
1026 } else {
1027 var31 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
1028 var_ = var31;
1029 if (var31){
1030 var32 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:nullable MType(MType)>*/;
1031 var33 = !var32;
1032 var30 = var33;
1033 } else {
1034 var30 = var_;
1035 }
1036 if (var30){
1037 var34 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1038 if (varonce35) {
1039 var36 = varonce35;
1040 } else {
1041 var37 = "Warning: Expression is already a ";
1042 var38 = 33;
1043 var39 = string__NativeString__to_s_with_length(var37, var38);
1044 var36 = var39;
1045 varonce35 = var36;
1046 }
1047 if (varonce40) {
1048 var41 = varonce40;
1049 } else {
1050 var42 = " since it is a ";
1051 var43 = 15;
1052 var44 = string__NativeString__to_s_with_length(var42, var43);
1053 var41 = var44;
1054 varonce40 = var41;
1055 }
1056 if (varonce45) {
1057 var46 = varonce45;
1058 } else {
1059 var47 = ".";
1060 var48 = 1;
1061 var49 = string__NativeString__to_s_with_length(var47, var48);
1062 var46 = var49;
1063 varonce45 = var46;
1064 }
1065 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
1066 { /* var50 = array_instance Array[Object] */
1067 var51 = 5;
1068 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
1069 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var36;
1070 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_sup;
1071 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var41;
1072 ((struct instance_array__NativeArray*)var52)->values[3] = (val*) var_sub;
1073 ((struct instance_array__NativeArray*)var52)->values[4] = (val*) var46;
1074 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
1075 }
1076 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
1077 ((void (*)(val*, val*, val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var34, var_node, var53) /* warning on <var34:ModelBuilder>*/;
1078 } else {
1079 }
1080 }
1081 var = var_sup;
1082 goto RET_LABEL;
1083 RET_LABEL:;
1084 return var;
1085 }
1086 /* method typing#TypeVisitor#visit_expr_cast for (self: Object, ANode, AExpr, AType): nullable MType */
1087 val* VIRTUAL_typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
1088 val* var /* : nullable MType */;
1089 val* var1 /* : nullable MType */;
1090 var1 = typing__TypeVisitor__visit_expr_cast(self, p0, p1, p2);
1091 var = var1;
1092 RET_LABEL:;
1093 return var;
1094 }
1095 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
1096 val* typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1097 val* var /* : nullable MProperty */;
1098 val* var_anode /* var anode: ANode */;
1099 val* var_mtype /* var mtype: MType */;
1100 val* var_name /* var name: String */;
1101 val* var1 /* : ModelBuilder */;
1102 val* var2 /* : AClassdef */;
1103 val* var3 /* : nullable MClassDef */;
1104 val* var4 /* : MModule */;
1105 val* var5 /* : nullable MProperty */;
1106 var_anode = p0;
1107 var_mtype = p1;
1108 var_name = p2;
1109 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1110 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1111 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var2) /* mclassdef on <var2:AClassdef>*/;
1112 if (var3 == NULL) {
1113 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1114 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 196);
1115 show_backtrace(1);
1116 } else {
1117 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:nullable MClassDef>*/;
1118 }
1119 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>*/;
1120 var = var5;
1121 goto RET_LABEL;
1122 RET_LABEL:;
1123 return var;
1124 }
1125 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: Object, ANode, MType, String): nullable MProperty */
1126 val* VIRTUAL_typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1127 val* var /* : nullable MProperty */;
1128 val* var1 /* : nullable MProperty */;
1129 var1 = typing__TypeVisitor__try_get_mproperty_by_name2(self, p0, p1, p2);
1130 var = var1;
1131 RET_LABEL:;
1132 return var;
1133 }
1134 /* method typing#TypeVisitor#resolve_mtype for (self: TypeVisitor, AType): nullable MType */
1135 val* typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1136 val* var /* : nullable MType */;
1137 val* var_node /* var node: AType */;
1138 val* var1 /* : ModelBuilder */;
1139 val* var2 /* : AClassdef */;
1140 val* var3 /* : nullable MType */;
1141 var_node = p0;
1142 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1143 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1144 var3 = ((val* (*)(val*, val*, val*))(var1->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var1, var2, var_node) /* resolve_mtype on <var1:ModelBuilder>*/;
1145 var = var3;
1146 goto RET_LABEL;
1147 RET_LABEL:;
1148 return var;
1149 }
1150 /* method typing#TypeVisitor#resolve_mtype for (self: Object, AType): nullable MType */
1151 val* VIRTUAL_typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1152 val* var /* : nullable MType */;
1153 val* var1 /* : nullable MType */;
1154 var1 = typing__TypeVisitor__resolve_mtype(self, p0);
1155 var = var1;
1156 RET_LABEL:;
1157 return var;
1158 }
1159 /* method typing#TypeVisitor#try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1160 val* typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1161 val* var /* : nullable MClass */;
1162 val* var_node /* var node: ANode */;
1163 val* var_name /* var name: String */;
1164 val* var1 /* : AClassdef */;
1165 val* var2 /* : nullable MClassDef */;
1166 val* var3 /* : MModule */;
1167 val* var_mmodule /* var mmodule: MModule */;
1168 val* var4 /* : ModelBuilder */;
1169 val* var5 /* : nullable MClass */;
1170 val* var_mclass /* var mclass: nullable MClass */;
1171 var_node = p0;
1172 var_name = p1;
1173 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1174 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1175 if (var2 == NULL) {
1176 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1177 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 206);
1178 show_backtrace(1);
1179 } else {
1180 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1181 }
1182 var_mmodule = var3;
1183 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1184 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>*/;
1185 var_mclass = var5;
1186 var = var_mclass;
1187 goto RET_LABEL;
1188 RET_LABEL:;
1189 return var;
1190 }
1191 /* method typing#TypeVisitor#try_get_mclass for (self: Object, ANode, String): nullable MClass */
1192 val* VIRTUAL_typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1193 val* var /* : nullable MClass */;
1194 val* var1 /* : nullable MClass */;
1195 var1 = typing__TypeVisitor__try_get_mclass(self, p0, p1);
1196 var = var1;
1197 RET_LABEL:;
1198 return var;
1199 }
1200 /* method typing#TypeVisitor#get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1201 val* typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1202 val* var /* : nullable MClass */;
1203 val* var_node /* var node: ANode */;
1204 val* var_name /* var name: String */;
1205 val* var1 /* : AClassdef */;
1206 val* var2 /* : nullable MClassDef */;
1207 val* var3 /* : MModule */;
1208 val* var_mmodule /* var mmodule: MModule */;
1209 val* var4 /* : ModelBuilder */;
1210 val* var5 /* : nullable MClass */;
1211 val* var_mclass /* var mclass: nullable MClass */;
1212 val* var6 /* : null */;
1213 short int var7 /* : Bool */;
1214 val* var8 /* : ModelBuilder */;
1215 static val* varonce;
1216 val* var9 /* : String */;
1217 char* var10 /* : NativeString */;
1218 long var11 /* : Int */;
1219 val* var12 /* : String */;
1220 static val* varonce13;
1221 val* var14 /* : String */;
1222 char* var15 /* : NativeString */;
1223 long var16 /* : Int */;
1224 val* var17 /* : String */;
1225 val* var18 /* : Array[Object] */;
1226 long var19 /* : Int */;
1227 val* var20 /* : NativeArray[Object] */;
1228 val* var21 /* : String */;
1229 var_node = p0;
1230 var_name = p1;
1231 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1232 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1233 if (var2 == NULL) {
1234 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1235 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 213);
1236 show_backtrace(1);
1237 } else {
1238 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1239 }
1240 var_mmodule = var3;
1241 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1242 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>*/;
1243 var_mclass = var5;
1244 var6 = NULL;
1245 if (var_mclass == NULL) {
1246 var7 = 1; /* is null */
1247 } else {
1248 var7 = 0; /* arg is null but recv is not */
1249 }
1250 if (var7){
1251 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1252 if (varonce) {
1253 var9 = varonce;
1254 } else {
1255 var10 = "Type Error: missing primitive class `";
1256 var11 = 37;
1257 var12 = string__NativeString__to_s_with_length(var10, var11);
1258 var9 = var12;
1259 varonce = var9;
1260 }
1261 if (varonce13) {
1262 var14 = varonce13;
1263 } else {
1264 var15 = "\'.";
1265 var16 = 2;
1266 var17 = string__NativeString__to_s_with_length(var15, var16);
1267 var14 = var17;
1268 varonce13 = var14;
1269 }
1270 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
1271 { /* var18 = array_instance Array[Object] */
1272 var19 = 3;
1273 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
1274 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
1275 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_name;
1276 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
1277 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
1278 }
1279 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
1280 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var8, var_node, var21) /* error on <var8:ModelBuilder>*/;
1281 } else {
1282 }
1283 var = var_mclass;
1284 goto RET_LABEL;
1285 RET_LABEL:;
1286 return var;
1287 }
1288 /* method typing#TypeVisitor#get_mclass for (self: Object, ANode, String): nullable MClass */
1289 val* VIRTUAL_typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1290 val* var /* : nullable MClass */;
1291 val* var1 /* : nullable MClass */;
1292 var1 = typing__TypeVisitor__get_mclass(self, p0, p1);
1293 var = var1;
1294 RET_LABEL:;
1295 return var;
1296 }
1297 /* method typing#TypeVisitor#type_bool for (self: TypeVisitor, ANode): nullable MType */
1298 val* typing__TypeVisitor__type_bool(val* self, val* p0) {
1299 val* var /* : nullable MType */;
1300 val* var_node /* var node: ANode */;
1301 static val* varonce;
1302 val* var1 /* : String */;
1303 char* var2 /* : NativeString */;
1304 long var3 /* : Int */;
1305 val* var4 /* : String */;
1306 val* var5 /* : nullable MClass */;
1307 val* var_mclass /* var mclass: nullable MClass */;
1308 val* var6 /* : null */;
1309 short int var7 /* : Bool */;
1310 val* var8 /* : null */;
1311 val* var9 /* : MClassType */;
1312 var_node = p0;
1313 if (varonce) {
1314 var1 = varonce;
1315 } else {
1316 var2 = "Bool";
1317 var3 = 4;
1318 var4 = string__NativeString__to_s_with_length(var2, var3);
1319 var1 = var4;
1320 varonce = var1;
1321 }
1322 var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(self, var_node, var1) /* get_mclass on <self:TypeVisitor>*/;
1323 var_mclass = var5;
1324 var6 = NULL;
1325 if (var_mclass == NULL) {
1326 var7 = 1; /* is null */
1327 } else {
1328 var7 = 0; /* arg is null but recv is not */
1329 }
1330 if (var7){
1331 var8 = NULL;
1332 var = var8;
1333 goto RET_LABEL;
1334 } else {
1335 }
1336 var9 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
1337 var = var9;
1338 goto RET_LABEL;
1339 RET_LABEL:;
1340 return var;
1341 }
1342 /* method typing#TypeVisitor#type_bool for (self: Object, ANode): nullable MType */
1343 val* VIRTUAL_typing__TypeVisitor__type_bool(val* self, val* p0) {
1344 val* var /* : nullable MType */;
1345 val* var1 /* : nullable MType */;
1346 var1 = typing__TypeVisitor__type_bool(self, p0);
1347 var = var1;
1348 RET_LABEL:;
1349 return var;
1350 }
1351 /* method typing#TypeVisitor#get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
1352 val* typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1353 val* var /* : nullable CallSite */;
1354 val* var_node /* var node: ANode */;
1355 val* var_recvtype /* var recvtype: MType */;
1356 val* var_name /* var name: String */;
1357 short int var_recv_is_self /* var recv_is_self: Bool */;
1358 val* var1 /* : MType */;
1359 val* var_unsafe_type /* var unsafe_type: MType */;
1360 short int var2 /* : Bool */;
1361 int cltype;
1362 int idtype;
1363 static val* varonce;
1364 val* var3 /* : String */;
1365 char* var4 /* : NativeString */;
1366 long var5 /* : Int */;
1367 val* var6 /* : String */;
1368 static val* varonce7;
1369 val* var8 /* : String */;
1370 char* var9 /* : NativeString */;
1371 long var10 /* : Int */;
1372 val* var11 /* : String */;
1373 val* var12 /* : Array[Object] */;
1374 long var13 /* : Int */;
1375 val* var14 /* : NativeArray[Object] */;
1376 val* var15 /* : String */;
1377 val* var16 /* : null */;
1378 val* var17 /* : nullable MProperty */;
1379 val* var_mproperty /* var mproperty: nullable MProperty */;
1380 val* var18 /* : null */;
1381 short int var19 /* : Bool */;
1382 val* var20 /* : ModelBuilder */;
1383 static val* varonce21;
1384 val* var22 /* : String */;
1385 char* var23 /* : NativeString */;
1386 long var24 /* : Int */;
1387 val* var25 /* : String */;
1388 static val* varonce26;
1389 val* var27 /* : String */;
1390 char* var28 /* : NativeString */;
1391 long var29 /* : Int */;
1392 val* var30 /* : String */;
1393 static val* varonce31;
1394 val* var32 /* : String */;
1395 char* var33 /* : NativeString */;
1396 long var34 /* : Int */;
1397 val* var35 /* : String */;
1398 val* var36 /* : Array[Object] */;
1399 long var37 /* : Int */;
1400 val* var38 /* : NativeArray[Object] */;
1401 val* var39 /* : String */;
1402 val* var40 /* : ModelBuilder */;
1403 static val* varonce41;
1404 val* var42 /* : String */;
1405 char* var43 /* : NativeString */;
1406 long var44 /* : Int */;
1407 val* var45 /* : String */;
1408 static val* varonce46;
1409 val* var47 /* : String */;
1410 char* var48 /* : NativeString */;
1411 long var49 /* : Int */;
1412 val* var50 /* : String */;
1413 static val* varonce51;
1414 val* var52 /* : String */;
1415 char* var53 /* : NativeString */;
1416 long var54 /* : Int */;
1417 val* var55 /* : String */;
1418 val* var56 /* : Array[Object] */;
1419 long var57 /* : Int */;
1420 val* var58 /* : NativeArray[Object] */;
1421 val* var59 /* : String */;
1422 val* var60 /* : null */;
1423 short int var61 /* : Bool */;
1424 int cltype62;
1425 int idtype63;
1426 short int var64 /* : Bool */;
1427 short int var65 /* : Bool */;
1428 val* var66 /* : MVisibility */;
1429 val* var67 /* : MVisibility */;
1430 short int var68 /* : Bool */;
1431 short int var_ /* var : Bool */;
1432 short int var69 /* : Bool */;
1433 short int var_70 /* var : Bool */;
1434 val* var71 /* : MModule */;
1435 val* var72 /* : MClassDef */;
1436 val* var73 /* : MModule */;
1437 val* var74 /* : MVisibility */;
1438 val* var75 /* : MVisibility */;
1439 short int var76 /* : Bool */;
1440 val* var77 /* : ModelBuilder */;
1441 static val* varonce78;
1442 val* var79 /* : String */;
1443 char* var80 /* : NativeString */;
1444 long var81 /* : Int */;
1445 val* var82 /* : String */;
1446 static val* varonce83;
1447 val* var84 /* : String */;
1448 char* var85 /* : NativeString */;
1449 long var86 /* : Int */;
1450 val* var87 /* : String */;
1451 val* var88 /* : MClassDef */;
1452 val* var89 /* : MModule */;
1453 val* var90 /* : MModule */;
1454 val* var91 /* : MVisibility */;
1455 val* var92 /* : Array[Object] */;
1456 long var93 /* : Int */;
1457 val* var94 /* : NativeArray[Object] */;
1458 val* var95 /* : String */;
1459 val* var96 /* : null */;
1460 val* var97 /* : MModule */;
1461 val* var98 /* : Array[MPropDef] */;
1462 val* var_propdefs /* var propdefs: Array[MMethodDef] */;
1463 long var99 /* : Int */;
1464 long var100 /* : Int */;
1465 short int var101 /* : Bool */;
1466 short int var103 /* : Bool */;
1467 val* var104 /* : ModelBuilder */;
1468 static val* varonce105;
1469 val* var106 /* : String */;
1470 char* var107 /* : NativeString */;
1471 long var108 /* : Int */;
1472 val* var109 /* : String */;
1473 static val* varonce110;
1474 val* var111 /* : String */;
1475 char* var112 /* : NativeString */;
1476 long var113 /* : Int */;
1477 val* var114 /* : String */;
1478 val* var115 /* : Array[Object] */;
1479 long var116 /* : Int */;
1480 val* var117 /* : NativeArray[Object] */;
1481 val* var118 /* : String */;
1482 val* var119 /* : null */;
1483 long var120 /* : Int */;
1484 long var121 /* : Int */;
1485 short int var122 /* : Bool */;
1486 short int var124 /* : Bool */;
1487 val* var125 /* : nullable Object */;
1488 val* var_mpropdef /* var mpropdef: nullable Object */;
1489 val* var126 /* : ModelBuilder */;
1490 static val* varonce127;
1491 val* var128 /* : String */;
1492 char* var129 /* : NativeString */;
1493 long var130 /* : Int */;
1494 val* var131 /* : String */;
1495 static val* varonce132;
1496 val* var133 /* : String */;
1497 char* var134 /* : NativeString */;
1498 long var135 /* : Int */;
1499 val* var136 /* : String */;
1500 static val* varonce137;
1501 val* var138 /* : String */;
1502 char* var139 /* : NativeString */;
1503 long var140 /* : Int */;
1504 val* var141 /* : String */;
1505 static val* varonce142;
1506 val* var143 /* : String */;
1507 char* var144 /* : NativeString */;
1508 long var145 /* : Int */;
1509 val* var146 /* : String */;
1510 val* var147 /* : String */;
1511 val* var148 /* : Array[Object] */;
1512 long var149 /* : Int */;
1513 val* var150 /* : NativeArray[Object] */;
1514 val* var151 /* : String */;
1515 val* var152 /* : MPropDef */;
1516 val* var153 /* : MSignature */;
1517 val* var_msignature /* var msignature: MSignature */;
1518 short int var154 /* : Bool */;
1519 short int var_erasure_cast /* var erasure_cast: Bool */;
1520 val* var155 /* : nullable MSignature */;
1521 val* var156 /* : nullable MType */;
1522 val* var_rettype /* var rettype: nullable MType */;
1523 short int var157 /* : Bool */;
1524 short int var158 /* : Bool */;
1525 short int var_159 /* var : Bool */;
1526 val* var160 /* : null */;
1527 short int var161 /* : Bool */;
1528 short int var162 /* : Bool */;
1529 int cltype163;
1530 int idtype164;
1531 val* var165 /* : MType */;
1532 short int var166 /* : Bool */;
1533 int cltype167;
1534 int idtype168;
1535 val* var169 /* : nullable MType */;
1536 val* var_erased_rettype /* var erased_rettype: nullable MType */;
1537 val* var170 /* : null */;
1538 short int var171 /* : Bool */;
1539 short int var172 /* : Bool */;
1540 val* var173 /* : CallSite */;
1541 val* var_callsite /* var callsite: CallSite */;
1542 var_node = p0;
1543 var_recvtype = p1;
1544 var_name = p2;
1545 var_recv_is_self = p3;
1546 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_recvtype) /* anchor_to on <self:TypeVisitor>*/;
1547 var_unsafe_type = var1;
1548 /* <var_recvtype:MType> isa MNullType */
1549 cltype = type_model__MNullType.color;
1550 idtype = type_model__MNullType.id;
1551 if(cltype >= var_recvtype->type->table_size) {
1552 var2 = 0;
1553 } else {
1554 var2 = var_recvtype->type->type_table[cltype] == idtype;
1555 }
1556 if (var2){
1557 if (varonce) {
1558 var3 = varonce;
1559 } else {
1560 var4 = "Error: Method \'";
1561 var5 = 15;
1562 var6 = string__NativeString__to_s_with_length(var4, var5);
1563 var3 = var6;
1564 varonce = var3;
1565 }
1566 if (varonce7) {
1567 var8 = varonce7;
1568 } else {
1569 var9 = "\' call on \'null\'.";
1570 var10 = 17;
1571 var11 = string__NativeString__to_s_with_length(var9, var10);
1572 var8 = var11;
1573 varonce7 = var8;
1574 }
1575 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
1576 { /* var12 = array_instance Array[Object] */
1577 var13 = 3;
1578 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
1579 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var3;
1580 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var_name;
1581 ((struct instance_array__NativeArray*)var14)->values[2] = (val*) var8;
1582 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
1583 }
1584 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
1585 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var15) /* error on <self:TypeVisitor>*/;
1586 var16 = NULL;
1587 var = var16;
1588 goto RET_LABEL;
1589 } else {
1590 }
1591 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>*/;
1592 var_mproperty = var17;
1593 var18 = NULL;
1594 if (var_mproperty == NULL) {
1595 var19 = 1; /* is null */
1596 } else {
1597 var19 = 0; /* arg is null but recv is not */
1598 }
1599 if (var19){
1600 if (var_recv_is_self){
1601 var20 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1602 if (varonce21) {
1603 var22 = varonce21;
1604 } else {
1605 var23 = "Error: Method or variable \'";
1606 var24 = 27;
1607 var25 = string__NativeString__to_s_with_length(var23, var24);
1608 var22 = var25;
1609 varonce21 = var22;
1610 }
1611 if (varonce26) {
1612 var27 = varonce26;
1613 } else {
1614 var28 = "\' unknown in ";
1615 var29 = 13;
1616 var30 = string__NativeString__to_s_with_length(var28, var29);
1617 var27 = var30;
1618 varonce26 = var27;
1619 }
1620 if (varonce31) {
1621 var32 = varonce31;
1622 } else {
1623 var33 = ".";
1624 var34 = 1;
1625 var35 = string__NativeString__to_s_with_length(var33, var34);
1626 var32 = var35;
1627 varonce31 = var32;
1628 }
1629 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
1630 { /* var36 = array_instance Array[Object] */
1631 var37 = 5;
1632 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
1633 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var22;
1634 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
1635 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var27;
1636 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var_recvtype;
1637 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var32;
1638 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
1639 }
1640 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
1641 ((void (*)(val*, val*, val*))(var20->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var20, var_node, var39) /* error on <var20:ModelBuilder>*/;
1642 } else {
1643 var40 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1644 if (varonce41) {
1645 var42 = varonce41;
1646 } else {
1647 var43 = "Error: Method \'";
1648 var44 = 15;
1649 var45 = string__NativeString__to_s_with_length(var43, var44);
1650 var42 = var45;
1651 varonce41 = var42;
1652 }
1653 if (varonce46) {
1654 var47 = varonce46;
1655 } else {
1656 var48 = "\' doesn\'t exists in ";
1657 var49 = 20;
1658 var50 = string__NativeString__to_s_with_length(var48, var49);
1659 var47 = var50;
1660 varonce46 = var47;
1661 }
1662 if (varonce51) {
1663 var52 = varonce51;
1664 } else {
1665 var53 = ".";
1666 var54 = 1;
1667 var55 = string__NativeString__to_s_with_length(var53, var54);
1668 var52 = var55;
1669 varonce51 = var52;
1670 }
1671 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
1672 { /* var56 = array_instance Array[Object] */
1673 var57 = 5;
1674 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
1675 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var42;
1676 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var_name;
1677 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var47;
1678 ((struct instance_array__NativeArray*)var58)->values[3] = (val*) var_recvtype;
1679 ((struct instance_array__NativeArray*)var58)->values[4] = (val*) var52;
1680 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
1681 }
1682 var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
1683 ((void (*)(val*, val*, val*))(var40->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var40, var_node, var59) /* error on <var40:ModelBuilder>*/;
1684 }
1685 var60 = NULL;
1686 var = var60;
1687 goto RET_LABEL;
1688 } else {
1689 }
1690 /* <var_mproperty:nullable MProperty(MProperty)> isa MMethod */
1691 cltype62 = type_model__MMethod.color;
1692 idtype63 = type_model__MMethod.id;
1693 if(cltype62 >= var_mproperty->type->table_size) {
1694 var61 = 0;
1695 } else {
1696 var61 = var_mproperty->type->type_table[cltype62] == idtype63;
1697 }
1698 if (!var61) {
1699 fprintf(stderr, "Runtime error: %s", "Assert failed");
1700 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 249);
1701 show_backtrace(1);
1702 }
1703 var66 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__visibility]))(var_mproperty) /* visibility on <var_mproperty:nullable MProperty(MMethod)>*/;
1704 var67 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:TypeVisitor>*/;
1705 var68 = ((short int (*)(val*, val*))(var66->class->vft[COLOR_kernel__Object___61d_61d]))(var66, var67) /* == on <var66:MVisibility>*/;
1706 var_ = var68;
1707 if (var68){
1708 var69 = !var_recv_is_self;
1709 var65 = var69;
1710 } else {
1711 var65 = var_;
1712 }
1713 var_70 = var65;
1714 if (var65){
1715 var71 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1716 var72 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1717 var73 = ((val* (*)(val*))(var72->class->vft[COLOR_model__MClassDef__mmodule]))(var72) /* mmodule on <var72:MClassDef>*/;
1718 var74 = ((val* (*)(val*, val*))(var71->class->vft[COLOR_mmodule__MModule__visibility_for]))(var71, var73) /* visibility_for on <var71:MModule>*/;
1719 var75 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:TypeVisitor>*/;
1720 var76 = ((short int (*)(val*, val*))(var74->class->vft[COLOR_kernel__Comparable___60d]))(var74, var75) /* < on <var74:MVisibility>*/;
1721 var64 = var76;
1722 } else {
1723 var64 = var_70;
1724 }
1725 if (var64){
1726 var77 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1727 if (varonce78) {
1728 var79 = varonce78;
1729 } else {
1730 var80 = "Error: Method \'";
1731 var81 = 15;
1732 var82 = string__NativeString__to_s_with_length(var80, var81);
1733 var79 = var82;
1734 varonce78 = var79;
1735 }
1736 if (varonce83) {
1737 var84 = varonce83;
1738 } else {
1739 var85 = "\' is protected and can only acceded by self. ";
1740 var86 = 45;
1741 var87 = string__NativeString__to_s_with_length(var85, var86);
1742 var84 = var87;
1743 varonce83 = var84;
1744 }
1745 var88 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1746 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MClassDef__mmodule]))(var88) /* mmodule on <var88:MClassDef>*/;
1747 var90 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1748 var91 = ((val* (*)(val*, val*))(var89->class->vft[COLOR_mmodule__MModule__visibility_for]))(var89, var90) /* visibility_for on <var89:MModule>*/;
1749 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
1750 { /* var92 = array_instance Array[Object] */
1751 var93 = 4;
1752 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
1753 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var79;
1754 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var_name;
1755 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var84;
1756 ((struct instance_array__NativeArray*)var94)->values[3] = (val*) var91;
1757 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
1758 }
1759 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
1760 ((void (*)(val*, val*, val*))(var77->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var77, var_node, var95) /* error on <var77:ModelBuilder>*/;
1761 var96 = NULL;
1762 var = var96;
1763 goto RET_LABEL;
1764 } else {
1765 }
1766 var97 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1767 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)>*/;
1768 var_propdefs = var98;
1769 var99 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1770 var100 = 0;
1771 { /* Inline kernel#Int#== (var99,var100) */
1772 var103 = var99 == var100;
1773 var101 = var103;
1774 goto RET_LABEL102;
1775 RET_LABEL102:(void)0;
1776 }
1777 if (var101){
1778 var104 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1779 if (varonce105) {
1780 var106 = varonce105;
1781 } else {
1782 var107 = "Type error: no definition found for property ";
1783 var108 = 45;
1784 var109 = string__NativeString__to_s_with_length(var107, var108);
1785 var106 = var109;
1786 varonce105 = var106;
1787 }
1788 if (varonce110) {
1789 var111 = varonce110;
1790 } else {
1791 var112 = " in ";
1792 var113 = 4;
1793 var114 = string__NativeString__to_s_with_length(var112, var113);
1794 var111 = var114;
1795 varonce110 = var111;
1796 }
1797 var115 = NEW_array__Array(&type_array__Arraykernel__Object);
1798 { /* var115 = array_instance Array[Object] */
1799 var116 = 4;
1800 var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
1801 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var106;
1802 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_name;
1803 ((struct instance_array__NativeArray*)var117)->values[2] = (val*) var111;
1804 ((struct instance_array__NativeArray*)var117)->values[3] = (val*) var_unsafe_type;
1805 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
1806 }
1807 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
1808 ((void (*)(val*, val*, val*))(var104->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var104, var_node, var118) /* error on <var104:ModelBuilder>*/;
1809 var119 = NULL;
1810 var = var119;
1811 goto RET_LABEL;
1812 } else {
1813 var120 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1814 var121 = 1;
1815 { /* Inline kernel#Int#== (var120,var121) */
1816 var124 = var120 == var121;
1817 var122 = var124;
1818 goto RET_LABEL123;
1819 RET_LABEL123:(void)0;
1820 }
1821 if (var122){
1822 var125 = ((val* (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_propdefs) /* first on <var_propdefs:Array[MMethodDef]>*/;
1823 var_mpropdef = var125;
1824 } else {
1825 var126 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1826 if (varonce127) {
1827 var128 = varonce127;
1828 } else {
1829 var129 = "Warning: confliting property definitions for property ";
1830 var130 = 54;
1831 var131 = string__NativeString__to_s_with_length(var129, var130);
1832 var128 = var131;
1833 varonce127 = var128;
1834 }
1835 if (varonce132) {
1836 var133 = varonce132;
1837 } else {
1838 var134 = " in ";
1839 var135 = 4;
1840 var136 = string__NativeString__to_s_with_length(var134, var135);
1841 var133 = var136;
1842 varonce132 = var133;
1843 }
1844 if (varonce137) {
1845 var138 = varonce137;
1846 } else {
1847 var139 = ": ";
1848 var140 = 2;
1849 var141 = string__NativeString__to_s_with_length(var139, var140);
1850 var138 = var141;
1851 varonce137 = var138;
1852 }
1853 if (varonce142) {
1854 var143 = varonce142;
1855 } else {
1856 var144 = " ";
1857 var145 = 1;
1858 var146 = string__NativeString__to_s_with_length(var144, var145);
1859 var143 = var146;
1860 varonce142 = var143;
1861 }
1862 var147 = ((val* (*)(val*, val*))(var_propdefs->class->vft[COLOR_string__Collection__join]))(var_propdefs, var143) /* join on <var_propdefs:Array[MMethodDef]>*/;
1863 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
1864 { /* var148 = array_instance Array[Object] */
1865 var149 = 6;
1866 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
1867 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var128;
1868 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_name;
1869 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
1870 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_unsafe_type;
1871 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
1872 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var147;
1873 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
1874 }
1875 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
1876 ((void (*)(val*, val*, val*))(var126->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var126, var_node, var151) /* warning on <var126:ModelBuilder>*/;
1877 var152 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro]))(var_mproperty) /* intro on <var_mproperty:nullable MProperty(MMethod)>*/;
1878 var_mpropdef = var152;
1879 }
1880 }
1881 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>*/;
1882 var_msignature = var153;
1883 var154 = 0;
1884 var_erasure_cast = var154;
1885 var155 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:nullable Object(MMethodDef)>*/;
1886 if (var155 == NULL) {
1887 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1888 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 271);
1889 show_backtrace(1);
1890 } else {
1891 var156 = ((val* (*)(val*))(var155->class->vft[COLOR_model__MSignature__return_mtype]))(var155) /* return_mtype on <var155:nullable MSignature>*/;
1892 }
1893 var_rettype = var156;
1894 var158 = !var_recv_is_self;
1895 var_159 = var158;
1896 if (var158){
1897 var160 = NULL;
1898 if (var_rettype == NULL) {
1899 var161 = 0; /* is null */
1900 } else {
1901 var161 = 1; /* arg is null and recv is not */
1902 }
1903 var157 = var161;
1904 } else {
1905 var157 = var_159;
1906 }
1907 if (var157){
1908 /* <var_rettype:nullable MType(MType)> isa MNullableType */
1909 cltype163 = type_model__MNullableType.color;
1910 idtype164 = type_model__MNullableType.id;
1911 if(cltype163 >= var_rettype->type->table_size) {
1912 var162 = 0;
1913 } else {
1914 var162 = var_rettype->type->type_table[cltype163] == idtype164;
1915 }
1916 if (var162){
1917 var165 = ((val* (*)(val*))(var_rettype->class->vft[COLOR_model__MNullableType__mtype]))(var_rettype) /* mtype on <var_rettype:nullable MType(MNullableType)>*/;
1918 var_rettype = var165;
1919 } else {
1920 }
1921 /* <var_rettype:nullable MType(MType)> isa MParameterType */
1922 cltype167 = type_model__MParameterType.color;
1923 idtype168 = type_model__MParameterType.id;
1924 if(cltype167 >= var_rettype->type->table_size) {
1925 var166 = 0;
1926 } else {
1927 var166 = var_rettype->type->type_table[cltype167] == idtype168;
1928 }
1929 if (var166){
1930 var169 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1931 var_erased_rettype = var169;
1932 var170 = NULL;
1933 if (var_erased_rettype == NULL) {
1934 var171 = 0; /* is null */
1935 } else {
1936 var171 = 1; /* arg is null and recv is not */
1937 }
1938 if (!var171) {
1939 fprintf(stderr, "Runtime error: %s", "Assert failed");
1940 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 276);
1941 show_backtrace(1);
1942 }
1943 var172 = 1;
1944 var_erasure_cast = var172;
1945 } else {
1946 }
1947 } else {
1948 }
1949 var173 = NEW_typing__CallSite(&type_typing__CallSite);
1950 ((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>*/;
1951 var_callsite = var173;
1952 var = var_callsite;
1953 goto RET_LABEL;
1954 RET_LABEL:;
1955 return var;
1956 }
1957 /* method typing#TypeVisitor#get_method for (self: Object, ANode, MType, String, Bool): nullable CallSite */
1958 val* VIRTUAL_typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1959 val* var /* : nullable CallSite */;
1960 val* var1 /* : nullable CallSite */;
1961 var1 = typing__TypeVisitor__get_method(self, p0, p1, p2, p3);
1962 var = var1;
1963 RET_LABEL:;
1964 return var;
1965 }
1966 /* method typing#TypeVisitor#check_signature for (self: TypeVisitor, ANode, Array[AExpr], String, MSignature): Bool */
1967 short int typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
1968 short int var /* : Bool */;
1969 val* var_node /* var node: ANode */;
1970 val* var_args /* var args: Array[AExpr] */;
1971 val* var_name /* var name: String */;
1972 val* var_msignature /* var msignature: MSignature */;
1973 long var1 /* : Int */;
1974 long var_vararg_rank /* var vararg_rank: Int */;
1975 long var2 /* : Int */;
1976 short int var3 /* : Bool */;
1977 short int var5 /* : Bool */;
1978 int cltype;
1979 int idtype;
1980 const char* var_class_name;
1981 short int var6 /* : Bool */;
1982 long var7 /* : Int */;
1983 long var8 /* : Int */;
1984 short int var9 /* : Bool */;
1985 short int var11 /* : Bool */;
1986 int cltype12;
1987 int idtype13;
1988 const char* var_class_name14;
1989 short int var15 /* : Bool */;
1990 val* var16 /* : ModelBuilder */;
1991 static val* varonce;
1992 val* var17 /* : String */;
1993 char* var18 /* : NativeString */;
1994 long var19 /* : Int */;
1995 val* var20 /* : String */;
1996 static val* varonce21;
1997 val* var22 /* : String */;
1998 char* var23 /* : NativeString */;
1999 long var24 /* : Int */;
2000 val* var25 /* : String */;
2001 val* var26 /* : Array[Object] */;
2002 long var27 /* : Int */;
2003 val* var28 /* : NativeArray[Object] */;
2004 val* var29 /* : String */;
2005 short int var30 /* : Bool */;
2006 long var31 /* : Int */;
2007 long var32 /* : Int */;
2008 short int var33 /* : Bool */;
2009 short int var35 /* : Bool */;
2010 short int var36 /* : Bool */;
2011 val* var37 /* : ModelBuilder */;
2012 static val* varonce38;
2013 val* var39 /* : String */;
2014 char* var40 /* : NativeString */;
2015 long var41 /* : Int */;
2016 val* var42 /* : String */;
2017 long var43 /* : Int */;
2018 static val* varonce44;
2019 val* var45 /* : String */;
2020 char* var46 /* : NativeString */;
2021 long var47 /* : Int */;
2022 val* var48 /* : String */;
2023 long var49 /* : Int */;
2024 static val* varonce50;
2025 val* var51 /* : String */;
2026 char* var52 /* : NativeString */;
2027 long var53 /* : Int */;
2028 val* var54 /* : String */;
2029 val* var55 /* : Array[Object] */;
2030 long var56 /* : Int */;
2031 val* var57 /* : NativeArray[Object] */;
2032 val* var58 /* : Object */;
2033 val* var59 /* : Object */;
2034 val* var60 /* : String */;
2035 short int var61 /* : Bool */;
2036 long var62 /* : Int */;
2037 long var63 /* : Int */;
2038 long var64 /* : Int */;
2039 long var66 /* : Int */;
2040 long var_vararg_decl /* var vararg_decl: Int */;
2041 val* var67 /* : Range[Int] */;
2042 long var68 /* : Int */;
2043 long var69 /* : Int */;
2044 val* var70 /* : Discrete */;
2045 val* var71 /* : Discrete */;
2046 val* var72 /* : Iterator[nullable Object] */;
2047 short int var73 /* : Bool */;
2048 val* var74 /* : nullable Object */;
2049 long var_i /* var i: Int */;
2050 long var75 /* : Int */;
2051 long var_j /* var j: Int */;
2052 short int var76 /* : Bool */;
2053 short int var78 /* : Bool */;
2054 short int var79 /* : Bool */;
2055 short int var81 /* : Bool */;
2056 int cltype82;
2057 int idtype83;
2058 const char* var_class_name84;
2059 short int var85 /* : Bool */;
2060 long var86 /* : Int */;
2061 long var88 /* : Int */;
2062 val* var89 /* : Array[MParameter] */;
2063 val* var90 /* : nullable Object */;
2064 val* var91 /* : MType */;
2065 val* var_paramtype /* var paramtype: MType */;
2066 val* var92 /* : nullable Object */;
2067 val* var93 /* : nullable MType */;
2068 long var94 /* : Int */;
2069 short int var95 /* : Bool */;
2070 short int var97 /* : Bool */;
2071 int cltype98;
2072 int idtype99;
2073 const char* var_class_name100;
2074 short int var101 /* : Bool */;
2075 val* var102 /* : Array[AExpr] */;
2076 val* var_varargs /* var varargs: Array[AExpr] */;
2077 val* var103 /* : Array[MParameter] */;
2078 val* var104 /* : nullable Object */;
2079 val* var105 /* : MType */;
2080 val* var_paramtype106 /* var paramtype: MType */;
2081 val* var107 /* : Range[Int] */;
2082 long var108 /* : Int */;
2083 long var110 /* : Int */;
2084 val* var111 /* : Discrete */;
2085 val* var112 /* : Discrete */;
2086 val* var113 /* : Iterator[nullable Object] */;
2087 short int var114 /* : Bool */;
2088 val* var115 /* : nullable Object */;
2089 long var_j116 /* var j: Int */;
2090 long var117 /* : Int */;
2091 val* var118 /* : nullable Object */;
2092 val* var119 /* : nullable Object */;
2093 val* var120 /* : nullable MType */;
2094 short int var122 /* : Bool */;
2095 var_node = p0;
2096 var_args = p1;
2097 var_name = p2;
2098 var_msignature = p3;
2099 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
2100 var_vararg_rank = var1;
2101 var2 = 0;
2102 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
2103 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2104 /* <var2:Int> isa OTHER */
2105 var5 = 1; /* easy <var2:Int> isa OTHER*/
2106 if (!var5) {
2107 var_class_name = type_kernel__Int.name;
2108 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2109 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2110 show_backtrace(1);
2111 }
2112 var6 = var_vararg_rank >= var2;
2113 var3 = var6;
2114 goto RET_LABEL4;
2115 RET_LABEL4:(void)0;
2116 }
2117 if (var3){
2118 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2119 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2120 { /* Inline kernel#Int#< (var7,var8) */
2121 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
2122 /* <var8:Int> isa OTHER */
2123 var11 = 1; /* easy <var8:Int> isa OTHER*/
2124 if (!var11) {
2125 var_class_name14 = type_kernel__Int.name;
2126 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
2127 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2128 show_backtrace(1);
2129 }
2130 var15 = var7 < var8;
2131 var9 = var15;
2132 goto RET_LABEL10;
2133 RET_LABEL10:(void)0;
2134 }
2135 if (var9){
2136 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2137 if (varonce) {
2138 var17 = varonce;
2139 } else {
2140 var18 = "Error: arity mismatch; prototype is \'";
2141 var19 = 37;
2142 var20 = string__NativeString__to_s_with_length(var18, var19);
2143 var17 = var20;
2144 varonce = var17;
2145 }
2146 if (varonce21) {
2147 var22 = varonce21;
2148 } else {
2149 var23 = "\'";
2150 var24 = 1;
2151 var25 = string__NativeString__to_s_with_length(var23, var24);
2152 var22 = var25;
2153 varonce21 = var22;
2154 }
2155 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
2156 { /* var26 = array_instance Array[Object] */
2157 var27 = 4;
2158 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
2159 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
2160 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_name;
2161 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var_msignature;
2162 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var22;
2163 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
2164 }
2165 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
2166 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var16, var_node, var29) /* error on <var16:ModelBuilder>*/;
2167 var30 = 0;
2168 var = var30;
2169 goto RET_LABEL;
2170 } else {
2171 }
2172 } else {
2173 var31 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2174 var32 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2175 { /* Inline kernel#Int#!= (var31,var32) */
2176 var35 = var31 == var32;
2177 var36 = !var35;
2178 var33 = var36;
2179 goto RET_LABEL34;
2180 RET_LABEL34:(void)0;
2181 }
2182 if (var33){
2183 var37 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2184 if (varonce38) {
2185 var39 = varonce38;
2186 } else {
2187 var40 = "Error: Incorrect number of parameters. Got ";
2188 var41 = 43;
2189 var42 = string__NativeString__to_s_with_length(var40, var41);
2190 var39 = var42;
2191 varonce38 = var39;
2192 }
2193 var43 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2194 if (varonce44) {
2195 var45 = varonce44;
2196 } else {
2197 var46 = ", expected ";
2198 var47 = 11;
2199 var48 = string__NativeString__to_s_with_length(var46, var47);
2200 var45 = var48;
2201 varonce44 = var45;
2202 }
2203 var49 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2204 if (varonce50) {
2205 var51 = varonce50;
2206 } else {
2207 var52 = ". Signature is ";
2208 var53 = 15;
2209 var54 = string__NativeString__to_s_with_length(var52, var53);
2210 var51 = var54;
2211 varonce50 = var51;
2212 }
2213 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
2214 { /* var55 = array_instance Array[Object] */
2215 var56 = 6;
2216 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
2217 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var39;
2218 var58 = BOX_kernel__Int(var43); /* autobox from Int to Object */
2219 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var58;
2220 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var45;
2221 var59 = BOX_kernel__Int(var49); /* autobox from Int to Object */
2222 ((struct instance_array__NativeArray*)var57)->values[3] = (val*) var59;
2223 ((struct instance_array__NativeArray*)var57)->values[4] = (val*) var51;
2224 ((struct instance_array__NativeArray*)var57)->values[5] = (val*) var_msignature;
2225 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
2226 }
2227 var60 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
2228 ((void (*)(val*, val*, val*))(var37->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var37, var_node, var60) /* error on <var37:ModelBuilder>*/;
2229 var61 = 0;
2230 var = var61;
2231 goto RET_LABEL;
2232 } else {
2233 }
2234 }
2235 var62 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2236 var63 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2237 { /* Inline kernel#Int#- (var62,var63) */
2238 var66 = var62 - var63;
2239 var64 = var66;
2240 goto RET_LABEL65;
2241 RET_LABEL65:(void)0;
2242 }
2243 var_vararg_decl = var64;
2244 var67 = NEW_range__Range(&type_range__Rangekernel__Int);
2245 var68 = 0;
2246 var69 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2247 var70 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
2248 var71 = BOX_kernel__Int(var69); /* autobox from Int to Discrete */
2249 ((void (*)(val*, val*, val*))(var67->class->vft[COLOR_range__Range__without_last]))(var67, var70, var71) /* without_last on <var67:Range[Int]>*/;
2250 var72 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Collection__iterator]))(var67) /* iterator on <var67:Range[Int]>*/;
2251 for(;;) {
2252 var73 = ((short int (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var72) /* is_ok on <var72:Iterator[nullable Object]>*/;
2253 if(!var73) break;
2254 var74 = ((val* (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__item]))(var72) /* item on <var72:Iterator[nullable Object]>*/;
2255 var75 = ((struct instance_kernel__Int*)var74)->value; /* autounbox from nullable Object to Int */;
2256 var_i = var75;
2257 var_j = var_i;
2258 { /* Inline kernel#Int#== (var_i,var_vararg_rank) */
2259 var78 = var_i == var_vararg_rank;
2260 var76 = var78;
2261 goto RET_LABEL77;
2262 RET_LABEL77:(void)0;
2263 }
2264 if (var76){
2265 goto CONTINUE_label;
2266 } else {
2267 }
2268 { /* Inline kernel#Int#> (var_i,var_vararg_rank) */
2269 /* Covariant cast for argument 0 (i) <var_vararg_rank:Int> isa OTHER */
2270 /* <var_vararg_rank:Int> isa OTHER */
2271 var81 = 1; /* easy <var_vararg_rank:Int> isa OTHER*/
2272 if (!var81) {
2273 var_class_name84 = type_kernel__Int.name;
2274 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
2275 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2276 show_backtrace(1);
2277 }
2278 var85 = var_i > var_vararg_rank;
2279 var79 = var85;
2280 goto RET_LABEL80;
2281 RET_LABEL80:(void)0;
2282 }
2283 if (var79){
2284 { /* Inline kernel#Int#+ (var_i,var_vararg_decl) */
2285 var88 = var_i + var_vararg_decl;
2286 var86 = var88;
2287 goto RET_LABEL87;
2288 RET_LABEL87:(void)0;
2289 }
2290 var_j = var86;
2291 } else {
2292 }
2293 var89 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2294 var90 = ((val* (*)(val*, long))(var89->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var89, var_i) /* [] on <var89:Array[MParameter]>*/;
2295 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_model__MParameter__mtype]))(var90) /* mtype on <var90:nullable Object(MParameter)>*/;
2296 var_paramtype = var91;
2297 var92 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j) /* [] on <var_args:Array[AExpr]>*/;
2298 var93 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var92, var_paramtype) /* visit_expr_subtype on <self:TypeVisitor>*/;
2299 var93;
2300 CONTINUE_label: (void)0;
2301 ((void (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__next]))(var72) /* next on <var72:Iterator[nullable Object]>*/;
2302 }
2303 BREAK_label: (void)0;
2304 var94 = 0;
2305 { /* Inline kernel#Int#>= (var_vararg_rank,var94) */
2306 /* Covariant cast for argument 0 (i) <var94:Int> isa OTHER */
2307 /* <var94:Int> isa OTHER */
2308 var97 = 1; /* easy <var94:Int> isa OTHER*/
2309 if (!var97) {
2310 var_class_name100 = type_kernel__Int.name;
2311 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name100);
2312 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2313 show_backtrace(1);
2314 }
2315 var101 = var_vararg_rank >= var94;
2316 var95 = var101;
2317 goto RET_LABEL96;
2318 RET_LABEL96:(void)0;
2319 }
2320 if (var95){
2321 var102 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
2322 ((void (*)(val*))(var102->class->vft[COLOR_array__Array__init]))(var102) /* init on <var102:Array[AExpr]>*/;
2323 var_varargs = var102;
2324 var103 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2325 var104 = ((val* (*)(val*, long))(var103->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var103, var_vararg_rank) /* [] on <var103:Array[MParameter]>*/;
2326 var105 = ((val* (*)(val*))(var104->class->vft[COLOR_model__MParameter__mtype]))(var104) /* mtype on <var104:nullable Object(MParameter)>*/;
2327 var_paramtype106 = var105;
2328 var107 = NEW_range__Range(&type_range__Rangekernel__Int);
2329 { /* Inline kernel#Int#+ (var_vararg_rank,var_vararg_decl) */
2330 var110 = var_vararg_rank + var_vararg_decl;
2331 var108 = var110;
2332 goto RET_LABEL109;
2333 RET_LABEL109:(void)0;
2334 }
2335 var111 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
2336 var112 = BOX_kernel__Int(var108); /* autobox from Int to Discrete */
2337 ((void (*)(val*, val*, val*))(var107->class->vft[COLOR_range__Range__init]))(var107, var111, var112) /* init on <var107:Range[Int]>*/;
2338 var113 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Collection__iterator]))(var107) /* iterator on <var107:Range[Int]>*/;
2339 for(;;) {
2340 var114 = ((short int (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var113) /* is_ok on <var113:Iterator[nullable Object]>*/;
2341 if(!var114) break;
2342 var115 = ((val* (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__item]))(var113) /* item on <var113:Iterator[nullable Object]>*/;
2343 var117 = ((struct instance_kernel__Int*)var115)->value; /* autounbox from nullable Object to Int */;
2344 var_j116 = var117;
2345 var118 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j116) /* [] on <var_args:Array[AExpr]>*/;
2346 ((void (*)(val*, val*))(var_varargs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_varargs, var118) /* add on <var_varargs:Array[AExpr]>*/;
2347 var119 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j116) /* [] on <var_args:Array[AExpr]>*/;
2348 var120 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var119, var_paramtype106) /* visit_expr_subtype on <self:TypeVisitor>*/;
2349 var120;
2350 CONTINUE_label121: (void)0;
2351 ((void (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__next]))(var113) /* next on <var113:Iterator[nullable Object]>*/;
2352 }
2353 BREAK_label121: (void)0;
2354 } else {
2355 }
2356 var122 = 1;
2357 var = var122;
2358 goto RET_LABEL;
2359 RET_LABEL:;
2360 return var;
2361 }
2362 /* method typing#TypeVisitor#check_signature for (self: Object, ANode, Array[AExpr], String, MSignature): Bool */
2363 short int VIRTUAL_typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
2364 short int var /* : Bool */;
2365 short int var1 /* : Bool */;
2366 var1 = typing__TypeVisitor__check_signature(self, p0, p1, p2, p3);
2367 var = var1;
2368 RET_LABEL:;
2369 return var;
2370 }
2371 /* method typing#TypeVisitor#error for (self: TypeVisitor, ANode, String) */
2372 void typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2373 val* var_node /* var node: ANode */;
2374 val* var_message /* var message: String */;
2375 val* var /* : ModelBuilder */;
2376 val* var1 /* : ToolContext */;
2377 val* var2 /* : Location */;
2378 var_node = p0;
2379 var_message = p1;
2380 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2381 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
2382 var2 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
2383 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_toolcontext__ToolContext__error]))(var1, var2, var_message) /* error on <var1:ToolContext>*/;
2384 RET_LABEL:;
2385 }
2386 /* method typing#TypeVisitor#error for (self: Object, ANode, String) */
2387 void VIRTUAL_typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2388 typing__TypeVisitor__error(self, p0, p1);
2389 RET_LABEL:;
2390 }
2391 /* method typing#TypeVisitor#get_variable for (self: TypeVisitor, AExpr, Variable): nullable MType */
2392 val* typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2393 val* var /* : nullable MType */;
2394 val* var_node /* var node: AExpr */;
2395 val* var_variable /* var variable: Variable */;
2396 val* var1 /* : nullable FlowContext */;
2397 val* var_flow /* var flow: nullable FlowContext */;
2398 val* var2 /* : null */;
2399 short int var3 /* : Bool */;
2400 static val* varonce;
2401 val* var4 /* : String */;
2402 char* var5 /* : NativeString */;
2403 long var6 /* : Int */;
2404 val* var7 /* : String */;
2405 val* var8 /* : null */;
2406 val* var9 /* : HashMap[Variable, nullable MType] */;
2407 short int var10 /* : Bool */;
2408 val* var11 /* : HashMap[Variable, nullable MType] */;
2409 val* var12 /* : nullable Object */;
2410 val* var13 /* : nullable Array[nullable MType] */;
2411 val* var_mtypes /* var mtypes: nullable Array[nullable MType] */;
2412 short int var14 /* : Bool */;
2413 val* var15 /* : null */;
2414 short int var16 /* : Bool */;
2415 short int var_ /* var : Bool */;
2416 long var17 /* : Int */;
2417 long var18 /* : Int */;
2418 short int var19 /* : Bool */;
2419 short int var21 /* : Bool */;
2420 val* var22 /* : nullable MType */;
2421 long var23 /* : Int */;
2422 long var24 /* : Int */;
2423 short int var25 /* : Bool */;
2424 short int var27 /* : Bool */;
2425 val* var28 /* : nullable Object */;
2426 val* var29 /* : nullable MType */;
2427 val* var_res /* var res: nullable MType */;
2428 val* var30 /* : null */;
2429 short int var31 /* : Bool */;
2430 val* var32 /* : nullable MType */;
2431 var_node = p0;
2432 var_variable = p1;
2433 var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2434 var_flow = var1;
2435 var2 = NULL;
2436 if (var_flow == NULL) {
2437 var3 = 1; /* is null */
2438 } else {
2439 var3 = 0; /* arg is null but recv is not */
2440 }
2441 if (var3){
2442 if (varonce) {
2443 var4 = varonce;
2444 } else {
2445 var5 = "No context!";
2446 var6 = 11;
2447 var7 = string__NativeString__to_s_with_length(var5, var6);
2448 var4 = var7;
2449 varonce = var4;
2450 }
2451 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var4) /* error on <self:TypeVisitor>*/;
2452 var8 = NULL;
2453 var = var8;
2454 goto RET_LABEL;
2455 } else {
2456 }
2457 var9 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2458 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]>*/;
2459 if (var10){
2460 var11 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2461 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_variable) /* [] on <var11:HashMap[Variable, nullable MType]>*/;
2462 var = var12;
2463 goto RET_LABEL;
2464 } else {
2465 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)>*/;
2466 var_mtypes = var13;
2467 var15 = NULL;
2468 if (var_mtypes == NULL) {
2469 var16 = 1; /* is null */
2470 } else {
2471 var16 = 0; /* arg is null but recv is not */
2472 }
2473 var_ = var16;
2474 if (var16){
2475 var14 = var_;
2476 } else {
2477 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])>*/;
2478 var18 = 0;
2479 { /* Inline kernel#Int#== (var17,var18) */
2480 var21 = var17 == var18;
2481 var19 = var21;
2482 goto RET_LABEL20;
2483 RET_LABEL20:(void)0;
2484 }
2485 var14 = var19;
2486 }
2487 if (var14){
2488 var22 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2489 var = var22;
2490 goto RET_LABEL;
2491 } else {
2492 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])>*/;
2493 var24 = 1;
2494 { /* Inline kernel#Int#== (var23,var24) */
2495 var27 = var23 == var24;
2496 var25 = var27;
2497 goto RET_LABEL26;
2498 RET_LABEL26:(void)0;
2499 }
2500 if (var25){
2501 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])>*/;
2502 var = var28;
2503 goto RET_LABEL;
2504 } else {
2505 var29 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__merge_types]))(self, var_node, var_mtypes) /* merge_types on <self:TypeVisitor>*/;
2506 var_res = var29;
2507 var30 = NULL;
2508 if (var_res == NULL) {
2509 var31 = 1; /* is null */
2510 } else {
2511 var31 = 0; /* arg is null but recv is not */
2512 }
2513 if (var31){
2514 var32 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2515 var_res = var32;
2516 } else {
2517 }
2518 var = var_res;
2519 goto RET_LABEL;
2520 }
2521 }
2522 }
2523 RET_LABEL:;
2524 return var;
2525 }
2526 /* method typing#TypeVisitor#get_variable for (self: Object, AExpr, Variable): nullable MType */
2527 val* VIRTUAL_typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2528 val* var /* : nullable MType */;
2529 val* var1 /* : nullable MType */;
2530 var1 = typing__TypeVisitor__get_variable(self, p0, p1);
2531 var = var1;
2532 RET_LABEL:;
2533 return var;
2534 }
2535 /* method typing#TypeVisitor#set_variable for (self: TypeVisitor, AExpr, Variable, nullable MType) */
2536 void typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2537 val* var_node /* var node: AExpr */;
2538 val* var_variable /* var variable: Variable */;
2539 val* var_mtype /* var mtype: nullable MType */;
2540 val* var /* : nullable FlowContext */;
2541 val* var_flow /* var flow: nullable FlowContext */;
2542 val* var1 /* : null */;
2543 short int var2 /* : Bool */;
2544 var_node = p0;
2545 var_variable = p1;
2546 var_mtype = p2;
2547 var = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2548 var_flow = var;
2549 var1 = NULL;
2550 if (var_flow == NULL) {
2551 var2 = 0; /* is null */
2552 } else {
2553 var2 = 1; /* arg is null and recv is not */
2554 }
2555 if (!var2) {
2556 fprintf(stderr, "Runtime error: %s", "Assert failed");
2557 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 360);
2558 show_backtrace(1);
2559 }
2560 ((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)>*/;
2561 RET_LABEL:;
2562 }
2563 /* method typing#TypeVisitor#set_variable for (self: Object, AExpr, Variable, nullable MType) */
2564 void VIRTUAL_typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2565 typing__TypeVisitor__set_variable(self, p0, p1, p2);
2566 RET_LABEL:;
2567 }
2568 /* method typing#TypeVisitor#merge_types for (self: TypeVisitor, ANode, Array[nullable MType]): nullable MType */
2569 val* typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2570 val* var /* : nullable MType */;
2571 val* var_node /* var node: ANode */;
2572 val* var_col /* var col: Array[nullable MType] */;
2573 long var1 /* : Int */;
2574 long var2 /* : Int */;
2575 short int var3 /* : Bool */;
2576 short int var5 /* : Bool */;
2577 val* var6 /* : nullable Object */;
2578 val* var7 /* : Array[nullable MType] */;
2579 val* var_res /* var res: Array[nullable MType] */;
2580 val* var8 /* : Iterator[nullable Object] */;
2581 short int var9 /* : Bool */;
2582 val* var10 /* : nullable Object */;
2583 val* var_t1 /* var t1: nullable MType */;
2584 val* var11 /* : null */;
2585 short int var12 /* : Bool */;
2586 short int var13 /* : Bool */;
2587 short int var_found /* var found: Bool */;
2588 val* var14 /* : Iterator[nullable Object] */;
2589 short int var15 /* : Bool */;
2590 val* var16 /* : nullable Object */;
2591 val* var_t2 /* var t2: nullable MType */;
2592 val* var17 /* : null */;
2593 short int var18 /* : Bool */;
2594 short int var20 /* : Bool */;
2595 short int var21 /* : Bool */;
2596 int cltype;
2597 int idtype;
2598 short int var_ /* var : Bool */;
2599 short int var22 /* : Bool */;
2600 int cltype23;
2601 int idtype24;
2602 val* var25 /* : MType */;
2603 short int var26 /* : Bool */;
2604 short int var27 /* : Bool */;
2605 short int var28 /* : Bool */;
2606 val* var29 /* : null */;
2607 var_node = p0;
2608 var_col = p1;
2609 var1 = ((long (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__length]))(var_col) /* length on <var_col:Array[nullable MType]>*/;
2610 var2 = 1;
2611 { /* Inline kernel#Int#== (var1,var2) */
2612 var5 = var1 == var2;
2613 var3 = var5;
2614 goto RET_LABEL4;
2615 RET_LABEL4:(void)0;
2616 }
2617 if (var3){
2618 var6 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__first]))(var_col) /* first on <var_col:Array[nullable MType]>*/;
2619 var = var6;
2620 goto RET_LABEL;
2621 } else {
2622 }
2623 var7 = NEW_array__Array(&type_array__Arraynullable_model__MType);
2624 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[nullable MType]>*/;
2625 var_res = var7;
2626 var8 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2627 for(;;) {
2628 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
2629 if(!var9) break;
2630 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
2631 var_t1 = var10;
2632 var11 = NULL;
2633 if (var_t1 == NULL) {
2634 var12 = 1; /* is null */
2635 } else {
2636 var12 = 0; /* arg is null but recv is not */
2637 }
2638 if (var12){
2639 goto CONTINUE_label;
2640 } else {
2641 }
2642 var13 = 1;
2643 var_found = var13;
2644 var14 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2645 for(;;) {
2646 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
2647 if(!var15) break;
2648 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
2649 var_t2 = var16;
2650 var17 = NULL;
2651 if (var_t2 == NULL) {
2652 var18 = 1; /* is null */
2653 } else {
2654 var18 = 0; /* arg is null but recv is not */
2655 }
2656 if (var18){
2657 goto CONTINUE_label19;
2658 } else {
2659 }
2660 /* <var_t2:nullable MType(MType)> isa MNullableType */
2661 cltype = type_model__MNullableType.color;
2662 idtype = type_model__MNullableType.id;
2663 if(cltype >= var_t2->type->table_size) {
2664 var21 = 0;
2665 } else {
2666 var21 = var_t2->type->type_table[cltype] == idtype;
2667 }
2668 var_ = var21;
2669 if (var21){
2670 var20 = var_;
2671 } else {
2672 /* <var_t2:nullable MType(MType)> isa MNullType */
2673 cltype23 = type_model__MNullType.color;
2674 idtype24 = type_model__MNullType.id;
2675 if(cltype23 >= var_t2->type->table_size) {
2676 var22 = 0;
2677 } else {
2678 var22 = var_t2->type->type_table[cltype23] == idtype24;
2679 }
2680 var20 = var22;
2681 }
2682 if (var20){
2683 var25 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MType__as_nullable]))(var_t1) /* as_nullable on <var_t1:nullable MType(MType)>*/;
2684 var_t1 = var25;
2685 } else {
2686 }
2687 var26 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_t2, var_t1) /* is_subtype on <self:TypeVisitor>*/;
2688 var27 = !var26;
2689 if (var27){
2690 var28 = 0;
2691 var_found = var28;
2692 } else {
2693 }
2694 CONTINUE_label19: (void)0;
2695 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
2696 }
2697 BREAK_label19: (void)0;
2698 if (var_found){
2699 var = var_t1;
2700 goto RET_LABEL;
2701 } else {
2702 }
2703 CONTINUE_label: (void)0;
2704 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
2705 }
2706 BREAK_label: (void)0;
2707 var29 = NULL;
2708 var = var29;
2709 goto RET_LABEL;
2710 RET_LABEL:;
2711 return var;
2712 }
2713 /* method typing#TypeVisitor#merge_types for (self: Object, ANode, Array[nullable MType]): nullable MType */
2714 val* VIRTUAL_typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2715 val* var /* : nullable MType */;
2716 val* var1 /* : nullable MType */;
2717 var1 = typing__TypeVisitor__merge_types(self, p0, p1);
2718 var = var1;
2719 RET_LABEL:;
2720 return var;
2721 }
2722 /* method typing#CallSite#node for (self: CallSite): ANode */
2723 val* typing__CallSite__node(val* self) {
2724 val* var /* : ANode */;
2725 val* var1 /* : ANode */;
2726 var1 = self->attrs[COLOR_typing__CallSite___64dnode].val; /* @node on <self:CallSite> */
2727 if (var1 == NULL) {
2728 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @node");
2729 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 391);
2730 show_backtrace(1);
2731 }
2732 var = var1;
2733 RET_LABEL:;
2734 return var;
2735 }
2736 /* method typing#CallSite#node for (self: Object): ANode */
2737 val* VIRTUAL_typing__CallSite__node(val* self) {
2738 val* var /* : ANode */;
2739 val* var1 /* : ANode */;
2740 var1 = typing__CallSite__node(self);
2741 var = var1;
2742 RET_LABEL:;
2743 return var;
2744 }
2745 /* method typing#CallSite#node= for (self: CallSite, ANode) */
2746 void typing__CallSite__node_61d(val* self, val* p0) {
2747 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2748 RET_LABEL:;
2749 }
2750 /* method typing#CallSite#node= for (self: Object, ANode) */
2751 void VIRTUAL_typing__CallSite__node_61d(val* self, val* p0) {
2752 typing__CallSite__node_61d(self, p0);
2753 RET_LABEL:;
2754 }
2755 /* method typing#CallSite#recv for (self: CallSite): MType */
2756 val* typing__CallSite__recv(val* self) {
2757 val* var /* : MType */;
2758 val* var1 /* : MType */;
2759 var1 = self->attrs[COLOR_typing__CallSite___64drecv].val; /* @recv on <self:CallSite> */
2760 if (var1 == NULL) {
2761 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @recv");
2762 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 394);
2763 show_backtrace(1);
2764 }
2765 var = var1;
2766 RET_LABEL:;
2767 return var;
2768 }
2769 /* method typing#CallSite#recv for (self: Object): MType */
2770 val* VIRTUAL_typing__CallSite__recv(val* self) {
2771 val* var /* : MType */;
2772 val* var1 /* : MType */;
2773 var1 = typing__CallSite__recv(self);
2774 var = var1;
2775 RET_LABEL:;
2776 return var;
2777 }
2778 /* method typing#CallSite#recv= for (self: CallSite, MType) */
2779 void typing__CallSite__recv_61d(val* self, val* p0) {
2780 self->attrs[COLOR_typing__CallSite___64drecv].val = p0; /* @recv on <self:CallSite> */
2781 RET_LABEL:;
2782 }
2783 /* method typing#CallSite#recv= for (self: Object, MType) */
2784 void VIRTUAL_typing__CallSite__recv_61d(val* self, val* p0) {
2785 typing__CallSite__recv_61d(self, p0);
2786 RET_LABEL:;
2787 }
2788 /* method typing#CallSite#recv_is_self for (self: CallSite): Bool */
2789 short int typing__CallSite__recv_is_self(val* self) {
2790 short int var /* : Bool */;
2791 short int var1 /* : Bool */;
2792 var1 = self->attrs[COLOR_typing__CallSite___64drecv_is_self].s; /* @recv_is_self on <self:CallSite> */
2793 var = var1;
2794 RET_LABEL:;
2795 return var;
2796 }
2797 /* method typing#CallSite#recv_is_self for (self: Object): Bool */
2798 short int VIRTUAL_typing__CallSite__recv_is_self(val* self) {
2799 short int var /* : Bool */;
2800 short int var1 /* : Bool */;
2801 var1 = typing__CallSite__recv_is_self(self);
2802 var = var1;
2803 RET_LABEL:;
2804 return var;
2805 }
2806 /* method typing#CallSite#recv_is_self= for (self: CallSite, Bool) */
2807 void typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2808 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p0; /* @recv_is_self on <self:CallSite> */
2809 RET_LABEL:;
2810 }
2811 /* method typing#CallSite#recv_is_self= for (self: Object, Bool) */
2812 void VIRTUAL_typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2813 typing__CallSite__recv_is_self_61d(self, p0);
2814 RET_LABEL:;
2815 }
2816 /* method typing#CallSite#mproperty for (self: CallSite): MMethod */
2817 val* typing__CallSite__mproperty(val* self) {
2818 val* var /* : MMethod */;
2819 val* var1 /* : MMethod */;
2820 var1 = self->attrs[COLOR_typing__CallSite___64dmproperty].val; /* @mproperty on <self:CallSite> */
2821 if (var1 == NULL) {
2822 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
2823 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 402);
2824 show_backtrace(1);
2825 }
2826 var = var1;
2827 RET_LABEL:;
2828 return var;
2829 }
2830 /* method typing#CallSite#mproperty for (self: Object): MMethod */
2831 val* VIRTUAL_typing__CallSite__mproperty(val* self) {
2832 val* var /* : MMethod */;
2833 val* var1 /* : MMethod */;
2834 var1 = typing__CallSite__mproperty(self);
2835 var = var1;
2836 RET_LABEL:;
2837 return var;
2838 }
2839 /* method typing#CallSite#mproperty= for (self: CallSite, MMethod) */
2840 void typing__CallSite__mproperty_61d(val* self, val* p0) {
2841 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p0; /* @mproperty on <self:CallSite> */
2842 RET_LABEL:;
2843 }
2844 /* method typing#CallSite#mproperty= for (self: Object, MMethod) */
2845 void VIRTUAL_typing__CallSite__mproperty_61d(val* self, val* p0) {
2846 typing__CallSite__mproperty_61d(self, p0);
2847 RET_LABEL:;
2848 }
2849 /* method typing#CallSite#mpropdef for (self: CallSite): MMethodDef */
2850 val* typing__CallSite__mpropdef(val* self) {
2851 val* var /* : MMethodDef */;
2852 val* var1 /* : MMethodDef */;
2853 var1 = self->attrs[COLOR_typing__CallSite___64dmpropdef].val; /* @mpropdef on <self:CallSite> */
2854 if (var1 == NULL) {
2855 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
2856 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 405);
2857 show_backtrace(1);
2858 }
2859 var = var1;
2860 RET_LABEL:;
2861 return var;
2862 }
2863 /* method typing#CallSite#mpropdef for (self: Object): MMethodDef */
2864 val* VIRTUAL_typing__CallSite__mpropdef(val* self) {
2865 val* var /* : MMethodDef */;
2866 val* var1 /* : MMethodDef */;
2867 var1 = typing__CallSite__mpropdef(self);
2868 var = var1;
2869 RET_LABEL:;
2870 return var;
2871 }
2872 /* method typing#CallSite#mpropdef= for (self: CallSite, MMethodDef) */
2873 void typing__CallSite__mpropdef_61d(val* self, val* p0) {
2874 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p0; /* @mpropdef on <self:CallSite> */
2875 RET_LABEL:;
2876 }
2877 /* method typing#CallSite#mpropdef= for (self: Object, MMethodDef) */
2878 void VIRTUAL_typing__CallSite__mpropdef_61d(val* self, val* p0) {
2879 typing__CallSite__mpropdef_61d(self, p0);
2880 RET_LABEL:;
2881 }
2882 /* method typing#CallSite#msignature for (self: CallSite): MSignature */
2883 val* typing__CallSite__msignature(val* self) {
2884 val* var /* : MSignature */;
2885 val* var1 /* : MSignature */;
2886 var1 = self->attrs[COLOR_typing__CallSite___64dmsignature].val; /* @msignature on <self:CallSite> */
2887 if (var1 == NULL) {
2888 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @msignature");
2889 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 409);
2890 show_backtrace(1);
2891 }
2892 var = var1;
2893 RET_LABEL:;
2894 return var;
2895 }
2896 /* method typing#CallSite#msignature for (self: Object): MSignature */
2897 val* VIRTUAL_typing__CallSite__msignature(val* self) {
2898 val* var /* : MSignature */;
2899 val* var1 /* : MSignature */;
2900 var1 = typing__CallSite__msignature(self);
2901 var = var1;
2902 RET_LABEL:;
2903 return var;
2904 }
2905 /* method typing#CallSite#msignature= for (self: CallSite, MSignature) */
2906 void typing__CallSite__msignature_61d(val* self, val* p0) {
2907 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p0; /* @msignature on <self:CallSite> */
2908 RET_LABEL:;
2909 }
2910 /* method typing#CallSite#msignature= for (self: Object, MSignature) */
2911 void VIRTUAL_typing__CallSite__msignature_61d(val* self, val* p0) {
2912 typing__CallSite__msignature_61d(self, p0);
2913 RET_LABEL:;
2914 }
2915 /* method typing#CallSite#erasure_cast for (self: CallSite): Bool */
2916 short int typing__CallSite__erasure_cast(val* self) {
2917 short int var /* : Bool */;
2918 short int var1 /* : Bool */;
2919 var1 = self->attrs[COLOR_typing__CallSite___64derasure_cast].s; /* @erasure_cast on <self:CallSite> */
2920 var = var1;
2921 RET_LABEL:;
2922 return var;
2923 }
2924 /* method typing#CallSite#erasure_cast for (self: Object): Bool */
2925 short int VIRTUAL_typing__CallSite__erasure_cast(val* self) {
2926 short int var /* : Bool */;
2927 short int var1 /* : Bool */;
2928 var1 = typing__CallSite__erasure_cast(self);
2929 var = var1;
2930 RET_LABEL:;
2931 return var;
2932 }
2933 /* method typing#CallSite#erasure_cast= for (self: CallSite, Bool) */
2934 void typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2935 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p0; /* @erasure_cast on <self:CallSite> */
2936 RET_LABEL:;
2937 }
2938 /* method typing#CallSite#erasure_cast= for (self: Object, Bool) */
2939 void VIRTUAL_typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2940 typing__CallSite__erasure_cast_61d(self, p0);
2941 RET_LABEL:;
2942 }
2943 /* method typing#CallSite#check_signature for (self: CallSite, TypeVisitor, Array[AExpr]): Bool */
2944 short int typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2945 short int var /* : Bool */;
2946 val* var_v /* var v: TypeVisitor */;
2947 val* var_args /* var args: Array[AExpr] */;
2948 val* var1 /* : ANode */;
2949 val* var2 /* : MMethod */;
2950 val* var3 /* : String */;
2951 val* var4 /* : MSignature */;
2952 short int var5 /* : Bool */;
2953 var_v = p0;
2954 var_args = p1;
2955 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__node]))(self) /* node on <self:CallSite>*/;
2956 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__mproperty]))(self) /* mproperty on <self:CallSite>*/;
2957 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MProperty__name]))(var2) /* name on <var2:MMethod>*/;
2958 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__msignature]))(self) /* msignature on <self:CallSite>*/;
2959 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>*/;
2960 var = var5;
2961 goto RET_LABEL;
2962 RET_LABEL:;
2963 return var;
2964 }
2965 /* method typing#CallSite#check_signature for (self: Object, TypeVisitor, Array[AExpr]): Bool */
2966 short int VIRTUAL_typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2967 short int var /* : Bool */;
2968 short int var1 /* : Bool */;
2969 var1 = typing__CallSite__check_signature(self, p0, p1);
2970 var = var1;
2971 RET_LABEL:;
2972 return var;
2973 }
2974 /* method typing#CallSite#init for (self: CallSite, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2975 void typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2976 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2977 self->attrs[COLOR_typing__CallSite___64drecv].val = p1; /* @recv on <self:CallSite> */
2978 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p2; /* @recv_is_self on <self:CallSite> */
2979 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p3; /* @mproperty on <self:CallSite> */
2980 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p4; /* @mpropdef on <self:CallSite> */
2981 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p5; /* @msignature on <self:CallSite> */
2982 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p6; /* @erasure_cast on <self:CallSite> */
2983 RET_LABEL:;
2984 }
2985 /* method typing#CallSite#init for (self: Object, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2986 void VIRTUAL_typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2987 typing__CallSite__init(self, p0, p1, p2, p3, p4, p5, p6);
2988 RET_LABEL:;
2989 }
2990 /* method typing#Variable#declared_type for (self: Variable): nullable MType */
2991 val* typing__Variable__declared_type(val* self) {
2992 val* var /* : nullable MType */;
2993 val* var1 /* : nullable MType */;
2994 var1 = self->attrs[COLOR_typing__Variable___64ddeclared_type].val; /* @declared_type on <self:Variable> */
2995 var = var1;
2996 RET_LABEL:;
2997 return var;
2998 }
2999 /* method typing#Variable#declared_type for (self: Object): nullable MType */
3000 val* VIRTUAL_typing__Variable__declared_type(val* self) {
3001 val* var /* : nullable MType */;
3002 val* var1 /* : nullable MType */;
3003 var1 = typing__Variable__declared_type(self);
3004 var = var1;
3005 RET_LABEL:;
3006 return var;
3007 }
3008 /* method typing#Variable#declared_type= for (self: Variable, nullable MType) */
3009 void typing__Variable__declared_type_61d(val* self, val* p0) {
3010 self->attrs[COLOR_typing__Variable___64ddeclared_type].val = p0; /* @declared_type on <self:Variable> */
3011 RET_LABEL:;
3012 }
3013 /* method typing#Variable#declared_type= for (self: Object, nullable MType) */
3014 void VIRTUAL_typing__Variable__declared_type_61d(val* self, val* p0) {
3015 typing__Variable__declared_type_61d(self, p0);
3016 RET_LABEL:;
3017 }
3018 /* method typing#FlowContext#vars for (self: FlowContext): HashMap[Variable, nullable MType] */
3019 val* typing__FlowContext__vars(val* self) {
3020 val* var /* : HashMap[Variable, nullable MType] */;
3021 val* var1 /* : HashMap[Variable, nullable MType] */;
3022 var1 = self->attrs[COLOR_typing__FlowContext___64dvars].val; /* @vars on <self:FlowContext> */
3023 if (var1 == NULL) {
3024 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @vars");
3025 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 427);
3026 show_backtrace(1);
3027 }
3028 var = var1;
3029 RET_LABEL:;
3030 return var;
3031 }
3032 /* method typing#FlowContext#vars for (self: Object): HashMap[Variable, nullable MType] */
3033 val* VIRTUAL_typing__FlowContext__vars(val* self) {
3034 val* var /* : HashMap[Variable, nullable MType] */;
3035 val* var1 /* : HashMap[Variable, nullable MType] */;
3036 var1 = typing__FlowContext__vars(self);
3037 var = var1;
3038 RET_LABEL:;
3039 return var;
3040 }
3041 /* method typing#FlowContext#vars= for (self: FlowContext, HashMap[Variable, nullable MType]) */
3042 void typing__FlowContext__vars_61d(val* self, val* p0) {
3043 self->attrs[COLOR_typing__FlowContext___64dvars].val = p0; /* @vars on <self:FlowContext> */
3044 RET_LABEL:;
3045 }
3046 /* method typing#FlowContext#vars= for (self: Object, HashMap[Variable, nullable MType]) */
3047 void VIRTUAL_typing__FlowContext__vars_61d(val* self, val* p0) {
3048 typing__FlowContext__vars_61d(self, p0);
3049 RET_LABEL:;
3050 }
3051 /* method typing#FlowContext#cache for (self: FlowContext): HashMap[Variable, nullable Array[nullable MType]] */
3052 val* typing__FlowContext__cache(val* self) {
3053 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3054 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3055 var1 = self->attrs[COLOR_typing__FlowContext___64dcache].val; /* @cache on <self:FlowContext> */
3056 if (var1 == NULL) {
3057 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @cache");
3058 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 429);
3059 show_backtrace(1);
3060 }
3061 var = var1;
3062 RET_LABEL:;
3063 return var;
3064 }
3065 /* method typing#FlowContext#cache for (self: Object): HashMap[Variable, nullable Array[nullable MType]] */
3066 val* VIRTUAL_typing__FlowContext__cache(val* self) {
3067 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3068 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3069 var1 = typing__FlowContext__cache(self);
3070 var = var1;
3071 RET_LABEL:;
3072 return var;
3073 }
3074 /* method typing#FlowContext#cache= for (self: FlowContext, HashMap[Variable, nullable Array[nullable MType]]) */
3075 void typing__FlowContext__cache_61d(val* self, val* p0) {
3076 self->attrs[COLOR_typing__FlowContext___64dcache].val = p0; /* @cache on <self:FlowContext> */
3077 RET_LABEL:;
3078 }
3079 /* method typing#FlowContext#cache= for (self: Object, HashMap[Variable, nullable Array[nullable MType]]) */
3080 void VIRTUAL_typing__FlowContext__cache_61d(val* self, val* p0) {
3081 typing__FlowContext__cache_61d(self, p0);
3082 RET_LABEL:;
3083 }
3084 /* method typing#FlowContext#set_var for (self: FlowContext, Variable, nullable MType) */
3085 void typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3086 val* var_variable /* var variable: Variable */;
3087 val* var_mtype /* var mtype: nullable MType */;
3088 val* var /* : HashMap[Variable, nullable MType] */;
3089 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3090 val* var2 /* : Collection[Object] */;
3091 var_variable = p0;
3092 var_mtype = p1;
3093 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3094 ((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]>*/;
3095 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3096 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__keys]))(var1) /* keys on <var1:HashMap[Variable, nullable Array[nullable MType]]>*/;
3097 ((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]])>*/;
3098 RET_LABEL:;
3099 }
3100 /* method typing#FlowContext#set_var for (self: Object, Variable, nullable MType) */
3101 void VIRTUAL_typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3102 typing__FlowContext__set_var(self, p0, p1);
3103 RET_LABEL:;
3104 }
3105 /* method typing#FlowContext#collect_types for (self: FlowContext, Variable): nullable Array[nullable MType] */
3106 val* typing__FlowContext__collect_types(val* self, val* p0) {
3107 val* var /* : nullable Array[nullable MType] */;
3108 val* var_variable /* var variable: Variable */;
3109 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3110 short int var2 /* : Bool */;
3111 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3112 val* var4 /* : nullable Object */;
3113 val* var5 /* : null */;
3114 val* var_res /* var res: nullable Array[nullable MType] */;
3115 val* var6 /* : HashMap[Variable, nullable MType] */;
3116 short int var7 /* : Bool */;
3117 val* var8 /* : HashMap[Variable, nullable MType] */;
3118 val* var9 /* : nullable Object */;
3119 val* var_mtype /* var mtype: nullable MType */;
3120 val* var10 /* : Array[nullable MType] */;
3121 long var11 /* : Int */;
3122 val* var_ /* var : Array[nullable MType] */;
3123 val* var12 /* : Array[FlowContext] */;
3124 short int var13 /* : Bool */;
3125 val* var14 /* : Array[nullable MType] */;
3126 long var15 /* : Int */;
3127 val* var_16 /* var : Array[nullable MType] */;
3128 val* var17 /* : nullable MType */;
3129 val* var18 /* : Array[FlowContext] */;
3130 val* var19 /* : Iterator[nullable Object] */;
3131 short int var20 /* : Bool */;
3132 val* var21 /* : nullable Object */;
3133 val* var_flow /* var flow: FlowContext */;
3134 short int var22 /* : Bool */;
3135 val* var23 /* : nullable Array[nullable MType] */;
3136 val* var_r2 /* var r2: nullable Array[nullable MType] */;
3137 val* var24 /* : null */;
3138 short int var25 /* : Bool */;
3139 val* var26 /* : null */;
3140 short int var27 /* : Bool */;
3141 val* var28 /* : Array[nullable Object] */;
3142 val* var29 /* : Iterator[nullable Object] */;
3143 short int var30 /* : Bool */;
3144 val* var31 /* : nullable Object */;
3145 val* var_t /* var t: nullable MType */;
3146 short int var32 /* : Bool */;
3147 short int var33 /* : Bool */;
3148 val* var35 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3149 var_variable = p0;
3150 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3151 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]]>*/;
3152 if (var2){
3153 var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3154 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, nullable Array[nullable MType]]>*/;
3155 var = var4;
3156 goto RET_LABEL;
3157 } else {
3158 }
3159 var5 = NULL;
3160 var_res = var5;
3161 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3162 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]>*/;
3163 if (var7){
3164 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3165 var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_variable) /* [] on <var8:HashMap[Variable, nullable MType]>*/;
3166 var_mtype = var9;
3167 var10 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3168 var11 = 1;
3169 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[nullable MType]>*/;
3170 var_ = var10;
3171 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_mtype) /* push on <var_:Array[nullable MType]>*/;
3172 var_res = var_;
3173 } else {
3174 var12 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3175 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var12) /* is_empty on <var12:Array[FlowContext]>*/;
3176 if (var13){
3177 var14 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3178 var15 = 1;
3179 ((void (*)(val*, long))(var14->class->vft[COLOR_array__Array__with_capacity]))(var14, var15) /* with_capacity on <var14:Array[nullable MType]>*/;
3180 var_16 = var14;
3181 var17 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
3182 ((void (*)(val*, val*))(var_16->class->vft[COLOR_abstract_collection__Sequence__push]))(var_16, var17) /* push on <var_16:Array[nullable MType]>*/;
3183 var_res = var_16;
3184 } else {
3185 var18 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3186 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[FlowContext]>*/;
3187 for(;;) {
3188 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
3189 if(!var20) break;
3190 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
3191 var_flow = var21;
3192 var22 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on <var_flow:FlowContext>*/;
3193 if (var22){
3194 goto CONTINUE_label;
3195 } else {
3196 }
3197 var23 = ((val* (*)(val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__collect_types]))(var_flow, var_variable) /* collect_types on <var_flow:FlowContext>*/;
3198 var_r2 = var23;
3199 var24 = NULL;
3200 if (var_r2 == NULL) {
3201 var25 = 1; /* is null */
3202 } else {
3203 var25 = 0; /* arg is null but recv is not */
3204 }
3205 if (var25){
3206 goto CONTINUE_label;
3207 } else {
3208 }
3209 var26 = NULL;
3210 if (var_res == NULL) {
3211 var27 = 1; /* is null */
3212 } else {
3213 var27 = 0; /* arg is null but recv is not */
3214 }
3215 if (var27){
3216 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])>*/;
3217 var_res = var28;
3218 } else {
3219 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])>*/;
3220 for(;;) {
3221 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
3222 if(!var30) break;
3223 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
3224 var_t = var31;
3225 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])>*/;
3226 var33 = !var32;
3227 if (var33){
3228 ((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])>*/;
3229 } else {
3230 }
3231 CONTINUE_label34: (void)0;
3232 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
3233 }
3234 BREAK_label34: (void)0;
3235 }
3236 CONTINUE_label: (void)0;
3237 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
3238 }
3239 BREAK_label: (void)0;
3240 }
3241 }
3242 var35 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3243 ((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]]>*/;
3244 var = var_res;
3245 goto RET_LABEL;
3246 RET_LABEL:;
3247 return var;
3248 }
3249 /* method typing#FlowContext#collect_types for (self: Object, Variable): nullable Array[nullable MType] */
3250 val* VIRTUAL_typing__FlowContext__collect_types(val* self, val* p0) {
3251 val* var /* : nullable Array[nullable MType] */;
3252 val* var1 /* : nullable Array[nullable MType] */;
3253 var1 = typing__FlowContext__collect_types(self, p0);
3254 var = var1;
3255 RET_LABEL:;
3256 return var;
3257 }
3258 /* method typing#APropdef#do_typing for (self: APropdef, ModelBuilder) */
3259 void typing__APropdef__do_typing(val* self, val* p0) {
3260 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3261 var_modelbuilder = p0;
3262 RET_LABEL:;
3263 }
3264 /* method typing#APropdef#do_typing for (self: Object, ModelBuilder) */
3265 void VIRTUAL_typing__APropdef__do_typing(val* self, val* p0) {
3266 typing__APropdef__do_typing(self, p0);
3267 RET_LABEL:;
3268 }
3269 /* method typing#APropdef#selfvariable for (self: APropdef): nullable Variable */
3270 val* typing__APropdef__selfvariable(val* self) {
3271 val* var /* : nullable Variable */;
3272 val* var1 /* : nullable Variable */;
3273 var1 = self->attrs[COLOR_typing__APropdef___64dselfvariable].val; /* @selfvariable on <self:APropdef> */
3274 var = var1;
3275 RET_LABEL:;
3276 return var;
3277 }
3278 /* method typing#APropdef#selfvariable for (self: Object): nullable Variable */
3279 val* VIRTUAL_typing__APropdef__selfvariable(val* self) {
3280 val* var /* : nullable Variable */;
3281 val* var1 /* : nullable Variable */;
3282 var1 = typing__APropdef__selfvariable(self);
3283 var = var1;
3284 RET_LABEL:;
3285 return var;
3286 }
3287 /* method typing#APropdef#selfvariable= for (self: APropdef, nullable Variable) */
3288 void typing__APropdef__selfvariable_61d(val* self, val* p0) {
3289 self->attrs[COLOR_typing__APropdef___64dselfvariable].val = p0; /* @selfvariable on <self:APropdef> */
3290 RET_LABEL:;
3291 }
3292 /* method typing#APropdef#selfvariable= for (self: Object, nullable Variable) */
3293 void VIRTUAL_typing__APropdef__selfvariable_61d(val* self, val* p0) {
3294 typing__APropdef__selfvariable_61d(self, p0);
3295 RET_LABEL:;
3296 }
3297 /* method typing#AConcreteMethPropdef#do_typing for (self: AConcreteMethPropdef, ModelBuilder) */
3298 void typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3299 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3300 val* var /* : nullable ANode */;
3301 short int var1 /* : Bool */;
3302 int cltype;
3303 int idtype;
3304 const char* var_class_name;
3305 val* var_nclassdef /* var nclassdef: AClassdef */;
3306 val* var2 /* : nullable MPropDef */;
3307 val* var_mpropdef /* var mpropdef: MMethodDef */;
3308 val* var3 /* : TypeVisitor */;
3309 val* var_v /* var v: TypeVisitor */;
3310 val* var4 /* : Variable */;
3311 val* var5 /* : nullable AExpr */;
3312 val* var_nblock /* var nblock: nullable AExpr */;
3313 val* var6 /* : null */;
3314 short int var7 /* : Bool */;
3315 val* var8 /* : nullable MPropDef */;
3316 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
3317 val* var9 /* : Range[Int] */;
3318 long var10 /* : Int */;
3319 val* var11 /* : nullable MSignature */;
3320 long var12 /* : Int */;
3321 val* var13 /* : Discrete */;
3322 val* var14 /* : Discrete */;
3323 val* var15 /* : Iterator[nullable Object] */;
3324 short int var16 /* : Bool */;
3325 val* var17 /* : nullable Object */;
3326 long var_i /* var i: Int */;
3327 long var18 /* : Int */;
3328 val* var19 /* : nullable MSignature */;
3329 val* var20 /* : Array[MParameter] */;
3330 val* var21 /* : nullable Object */;
3331 val* var22 /* : MType */;
3332 val* var_mtype /* var mtype: MType */;
3333 val* var23 /* : nullable MSignature */;
3334 long var24 /* : Int */;
3335 short int var25 /* : Bool */;
3336 short int var27 /* : Bool */;
3337 val* var28 /* : nullable ASignature */;
3338 val* var29 /* : ANodes[AParam] */;
3339 val* var30 /* : nullable Object */;
3340 static val* varonce;
3341 val* var31 /* : String */;
3342 char* var32 /* : NativeString */;
3343 long var33 /* : Int */;
3344 val* var34 /* : String */;
3345 val* var35 /* : nullable MClass */;
3346 val* var_arrayclass /* var arrayclass: nullable MClass */;
3347 val* var36 /* : null */;
3348 short int var37 /* : Bool */;
3349 val* var38 /* : Array[MType] */;
3350 long var39 /* : Int */;
3351 val* var40 /* : NativeArray[MType] */;
3352 val* var41 /* : MClassType */;
3353 val* var42 /* : nullable ASignature */;
3354 val* var43 /* : ANodes[AParam] */;
3355 val* var44 /* : nullable Object */;
3356 val* var45 /* : nullable Variable */;
3357 val* var_variable /* var variable: nullable Variable */;
3358 val* var46 /* : null */;
3359 short int var47 /* : Bool */;
3360 short int var48 /* : Bool */;
3361 val* var49 /* : nullable FlowContext */;
3362 short int var50 /* : Bool */;
3363 short int var51 /* : Bool */;
3364 short int var_ /* var : Bool */;
3365 val* var52 /* : nullable MSignature */;
3366 val* var53 /* : nullable MType */;
3367 val* var54 /* : null */;
3368 short int var55 /* : Bool */;
3369 static val* varonce56;
3370 val* var57 /* : String */;
3371 char* var58 /* : NativeString */;
3372 long var59 /* : Int */;
3373 val* var60 /* : String */;
3374 var_modelbuilder = p0;
3375 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AConcreteMethPropdef>*/;
3376 /* <var:nullable ANode> isa AClassdef */
3377 cltype = type_parser_nodes__AClassdef.color;
3378 idtype = type_parser_nodes__AClassdef.id;
3379 if(var == NULL) {
3380 var1 = 0;
3381 } else {
3382 if(cltype >= var->type->table_size) {
3383 var1 = 0;
3384 } else {
3385 var1 = var->type->type_table[cltype] == idtype;
3386 }
3387 }
3388 if (!var1) {
3389 var_class_name = var == NULL ? "null" : var->type->name;
3390 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
3391 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 484);
3392 show_backtrace(1);
3393 }
3394 var_nclassdef = var;
3395 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3396 if (var2 == NULL) {
3397 fprintf(stderr, "Runtime error: %s", "Cast failed");
3398 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 485);
3399 show_backtrace(1);
3400 }
3401 var_mpropdef = var2;
3402 var3 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3403 ((void (*)(val*, val*, val*, val*))(var3->class->vft[COLOR_typing__TypeVisitor__init]))(var3, var_modelbuilder, var_nclassdef, var_mpropdef) /* init on <var3:TypeVisitor>*/;
3404 var_v = var3;
3405 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3406 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AConcreteMethPropdef>*/;
3407 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteMethPropdef__n_block]))(self) /* n_block on <self:AConcreteMethPropdef>*/;
3408 var_nblock = var5;
3409 var6 = NULL;
3410 if (var_nblock == NULL) {
3411 var7 = 1; /* is null */
3412 } else {
3413 var7 = 0; /* arg is null but recv is not */
3414 }
3415 if (var7){
3416 goto RET_LABEL;
3417 } else {
3418 }
3419 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3420 if (var8 == NULL) {
3421 fprintf(stderr, "Runtime error: %s", "Cast failed");
3422 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 492);
3423 show_backtrace(1);
3424 }
3425 var_mmethoddef = var8;
3426 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
3427 var10 = 0;
3428 var11 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3429 if (var11 == NULL) {
3430 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3431 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 493);
3432 show_backtrace(1);
3433 } else {
3434 var12 = ((long (*)(val*))(var11->class->vft[COLOR_model__MSignature__arity]))(var11) /* arity on <var11:nullable MSignature>*/;
3435 }
3436 var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
3437 var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
3438 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
3439 var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
3440 for(;;) {
3441 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
3442 if(!var16) break;
3443 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
3444 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
3445 var_i = var18;
3446 var19 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3447 if (var19 == NULL) {
3448 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3449 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 494);
3450 show_backtrace(1);
3451 } else {
3452 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MSignature__mparameters]))(var19) /* mparameters on <var19:nullable MSignature>*/;
3453 }
3454 var21 = ((val* (*)(val*, long))(var20->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var20, var_i) /* [] on <var20:Array[MParameter]>*/;
3455 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MParameter__mtype]))(var21) /* mtype on <var21:nullable Object(MParameter)>*/;
3456 var_mtype = var22;
3457 var23 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3458 if (var23 == NULL) {
3459 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3460 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 495);
3461 show_backtrace(1);
3462 } else {
3463 var24 = ((long (*)(val*))(var23->class->vft[COLOR_model__MSignature__vararg_rank]))(var23) /* vararg_rank on <var23:nullable MSignature>*/;
3464 }
3465 { /* Inline kernel#Int#== (var24,var_i) */
3466 var27 = var24 == var_i;
3467 var25 = var27;
3468 goto RET_LABEL26;
3469 RET_LABEL26:(void)0;
3470 }
3471 if (var25){
3472 var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3473 if (var28 == NULL) {
3474 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3475 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 496);
3476 show_backtrace(1);
3477 } else {
3478 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var28) /* n_params on <var28:nullable ASignature>*/;
3479 }
3480 var30 = ((val* (*)(val*, long))(var29->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var29, var_i) /* [] on <var29:ANodes[AParam]>*/;
3481 if (varonce) {
3482 var31 = varonce;
3483 } else {
3484 var32 = "Array";
3485 var33 = 5;
3486 var34 = string__NativeString__to_s_with_length(var32, var33);
3487 var31 = var34;
3488 varonce = var31;
3489 }
3490 var35 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, var30, var31) /* get_mclass on <var_v:TypeVisitor>*/;
3491 var_arrayclass = var35;
3492 var36 = NULL;
3493 if (var_arrayclass == NULL) {
3494 var37 = 1; /* is null */
3495 } else {
3496 var37 = 0; /* arg is null but recv is not */
3497 }
3498 if (var37){
3499 goto RET_LABEL;
3500 } else {
3501 }
3502 var38 = NEW_array__Array(&type_array__Arraymodel__MType);
3503 { /* var38 = array_instance Array[MType] */
3504 var39 = 1;
3505 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraymodel__MType);
3506 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var_mtype;
3507 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[MType]>*/;
3508 }
3509 var41 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var38) /* get_mtype on <var_arrayclass:nullable MClass(MClass)>*/;
3510 var_mtype = var41;
3511 } else {
3512 }
3513 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3514 if (var42 == NULL) {
3515 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3516 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 500);
3517 show_backtrace(1);
3518 } else {
3519 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var42) /* n_params on <var42:nullable ASignature>*/;
3520 }
3521 var44 = ((val* (*)(val*, long))(var43->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var43, var_i) /* [] on <var43:ANodes[AParam]>*/;
3522 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_scope__AParam__variable]))(var44) /* variable on <var44:nullable Object(AParam)>*/;
3523 var_variable = var45;
3524 var46 = NULL;
3525 if (var_variable == NULL) {
3526 var47 = 0; /* is null */
3527 } else {
3528 var47 = 1; /* arg is null and recv is not */
3529 }
3530 if (!var47) {
3531 fprintf(stderr, "Runtime error: %s", "Assert failed");
3532 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 501);
3533 show_backtrace(1);
3534 }
3535 ((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)>*/;
3536 CONTINUE_label: (void)0;
3537 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
3538 }
3539 BREAK_label: (void)0;
3540 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_nblock) /* visit_stmt on <var_v:TypeVisitor>*/;
3541 var49 = ((val* (*)(val*))(var_nblock->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_nblock) /* after_flow_context on <var_nblock:nullable AExpr(AExpr)>*/;
3542 if (var49 == NULL) {
3543 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3544 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 506);
3545 show_backtrace(1);
3546 } else {
3547 var50 = ((short int (*)(val*))(var49->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var49) /* is_unreachable on <var49:nullable FlowContext>*/;
3548 }
3549 var51 = !var50;
3550 var_ = var51;
3551 if (var51){
3552 var52 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3553 if (var52 == NULL) {
3554 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3555 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 506);
3556 show_backtrace(1);
3557 } else {
3558 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MSignature__return_mtype]))(var52) /* return_mtype on <var52:nullable MSignature>*/;
3559 }
3560 var54 = NULL;
3561 if (var53 == NULL) {
3562 var55 = 0; /* is null */
3563 } else {
3564 var55 = 1; /* arg is null and recv is not */
3565 }
3566 var48 = var55;
3567 } else {
3568 var48 = var_;
3569 }
3570 if (var48){
3571 if (varonce56) {
3572 var57 = varonce56;
3573 } else {
3574 var58 = "Control error: Reached end of function (a \'return\' with a value was expected).";
3575 var59 = 78;
3576 var60 = string__NativeString__to_s_with_length(var58, var59);
3577 var57 = var60;
3578 varonce56 = var57;
3579 }
3580 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var57) /* error on <var_v:TypeVisitor>*/;
3581 } else {
3582 }
3583 RET_LABEL:;
3584 }
3585 /* method typing#AConcreteMethPropdef#do_typing for (self: Object, ModelBuilder) */
3586 void VIRTUAL_typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3587 typing__AConcreteMethPropdef__do_typing(self, p0);
3588 RET_LABEL:;
3589 }
3590 /* method typing#AAttrPropdef#do_typing for (self: AAttrPropdef, ModelBuilder) */
3591 void typing__AAttrPropdef__do_typing(val* self, val* p0) {
3592 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3593 val* var /* : nullable ANode */;
3594 short int var1 /* : Bool */;
3595 int cltype;
3596 int idtype;
3597 const char* var_class_name;
3598 val* var_nclassdef /* var nclassdef: AClassdef */;
3599 val* var2 /* : TypeVisitor */;
3600 val* var3 /* : nullable MPropDef */;
3601 val* var_v /* var v: TypeVisitor */;
3602 val* var4 /* : Variable */;
3603 val* var5 /* : nullable AExpr */;
3604 val* var_nexpr /* var nexpr: nullable AExpr */;
3605 val* var6 /* : null */;
3606 short int var7 /* : Bool */;
3607 val* var8 /* : nullable MPropDef */;
3608 val* var9 /* : nullable MType */;
3609 val* var_mtype /* var mtype: nullable MType */;
3610 val* var10 /* : nullable MType */;
3611 var_modelbuilder = p0;
3612 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AAttrPropdef>*/;
3613 /* <var:nullable ANode> isa AClassdef */
3614 cltype = type_parser_nodes__AClassdef.color;
3615 idtype = type_parser_nodes__AClassdef.id;
3616 if(var == NULL) {
3617 var1 = 0;
3618 } else {
3619 if(cltype >= var->type->table_size) {
3620 var1 = 0;
3621 } else {
3622 var1 = var->type->type_table[cltype] == idtype;
3623 }
3624 }
3625 if (!var1) {
3626 var_class_name = var == NULL ? "null" : var->type->name;
3627 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
3628 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 516);
3629 show_backtrace(1);
3630 }
3631 var_nclassdef = var;
3632 var2 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3633 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3634 if (var3 == NULL) {
3635 fprintf(stderr, "Runtime error: %s", "Cast failed");
3636 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 517);
3637 show_backtrace(1);
3638 }
3639 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_typing__TypeVisitor__init]))(var2, var_modelbuilder, var_nclassdef, var3) /* init on <var2:TypeVisitor>*/;
3640 var_v = var2;
3641 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3642 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AAttrPropdef>*/;
3643 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(self) /* n_expr on <self:AAttrPropdef>*/;
3644 var_nexpr = var5;
3645 var6 = NULL;
3646 if (var_nexpr == NULL) {
3647 var7 = 0; /* is null */
3648 } else {
3649 var7 = 1; /* arg is null and recv is not */
3650 }
3651 if (var7){
3652 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3653 if (var8 == NULL) {
3654 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3655 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 522);
3656 show_backtrace(1);
3657 } else {
3658 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var8) /* static_mtype on <var8:nullable MPropDef(nullable MAttributeDef)>*/;
3659 }
3660 var_mtype = var9;
3661 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>*/;
3662 var10;
3663 } else {
3664 }
3665 RET_LABEL:;
3666 }
3667 /* method typing#AAttrPropdef#do_typing for (self: Object, ModelBuilder) */
3668 void VIRTUAL_typing__AAttrPropdef__do_typing(val* self, val* p0) {
3669 typing__AAttrPropdef__do_typing(self, p0);
3670 RET_LABEL:;
3671 }
3672 /* method typing#AExpr#mtype for (self: AExpr): nullable MType */
3673 val* typing__AExpr__mtype(val* self) {
3674 val* var /* : nullable MType */;
3675 val* var1 /* : nullable MType */;
3676 var1 = self->attrs[COLOR_typing__AExpr___64dmtype].val; /* @mtype on <self:AExpr> */
3677 var = var1;
3678 RET_LABEL:;
3679 return var;
3680 }
3681 /* method typing#AExpr#mtype for (self: Object): nullable MType */
3682 val* VIRTUAL_typing__AExpr__mtype(val* self) {
3683 val* var /* : nullable MType */;
3684 val* var1 /* : nullable MType */;
3685 var1 = typing__AExpr__mtype(self);
3686 var = var1;
3687 RET_LABEL:;
3688 return var;
3689 }
3690 /* method typing#AExpr#mtype= for (self: AExpr, nullable MType) */
3691 void typing__AExpr__mtype_61d(val* self, val* p0) {
3692 self->attrs[COLOR_typing__AExpr___64dmtype].val = p0; /* @mtype on <self:AExpr> */
3693 RET_LABEL:;
3694 }
3695 /* method typing#AExpr#mtype= for (self: Object, nullable MType) */
3696 void VIRTUAL_typing__AExpr__mtype_61d(val* self, val* p0) {
3697 typing__AExpr__mtype_61d(self, p0);
3698 RET_LABEL:;
3699 }
3700 /* method typing#AExpr#is_typed for (self: AExpr): Bool */
3701 short int typing__AExpr__is_typed(val* self) {
3702 short int var /* : Bool */;
3703 short int var1 /* : Bool */;
3704 var1 = self->attrs[COLOR_typing__AExpr___64dis_typed].s; /* @is_typed on <self:AExpr> */
3705 var = var1;
3706 RET_LABEL:;
3707 return var;
3708 }
3709 /* method typing#AExpr#is_typed for (self: Object): Bool */
3710 short int VIRTUAL_typing__AExpr__is_typed(val* self) {
3711 short int var /* : Bool */;
3712 short int var1 /* : Bool */;
3713 var1 = typing__AExpr__is_typed(self);
3714 var = var1;
3715 RET_LABEL:;
3716 return var;
3717 }
3718 /* method typing#AExpr#is_typed= for (self: AExpr, Bool) */
3719 void typing__AExpr__is_typed_61d(val* self, short int p0) {
3720 self->attrs[COLOR_typing__AExpr___64dis_typed].s = p0; /* @is_typed on <self:AExpr> */
3721 RET_LABEL:;
3722 }
3723 /* method typing#AExpr#is_typed= for (self: Object, Bool) */
3724 void VIRTUAL_typing__AExpr__is_typed_61d(val* self, short int p0) {
3725 typing__AExpr__is_typed_61d(self, p0);
3726 RET_LABEL:;
3727 }
3728 /* method typing#AExpr#implicit_cast_to for (self: AExpr): nullable MType */
3729 val* typing__AExpr__implicit_cast_to(val* self) {
3730 val* var /* : nullable MType */;
3731 val* var1 /* : nullable MType */;
3732 var1 = self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val; /* @implicit_cast_to on <self:AExpr> */
3733 var = var1;
3734 RET_LABEL:;
3735 return var;
3736 }
3737 /* method typing#AExpr#implicit_cast_to for (self: Object): nullable MType */
3738 val* VIRTUAL_typing__AExpr__implicit_cast_to(val* self) {
3739 val* var /* : nullable MType */;
3740 val* var1 /* : nullable MType */;
3741 var1 = typing__AExpr__implicit_cast_to(self);
3742 var = var1;
3743 RET_LABEL:;
3744 return var;
3745 }
3746 /* method typing#AExpr#implicit_cast_to= for (self: AExpr, nullable MType) */
3747 void typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3748 self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val = p0; /* @implicit_cast_to on <self:AExpr> */
3749 RET_LABEL:;
3750 }
3751 /* method typing#AExpr#implicit_cast_to= for (self: Object, nullable MType) */
3752 void VIRTUAL_typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3753 typing__AExpr__implicit_cast_to_61d(self, p0);
3754 RET_LABEL:;
3755 }
3756 /* method typing#AExpr#its_variable for (self: AExpr): nullable Variable */
3757 val* typing__AExpr__its_variable(val* self) {
3758 val* var /* : nullable Variable */;
3759 val* var1 /* : null */;
3760 var1 = NULL;
3761 var = var1;
3762 goto RET_LABEL;
3763 RET_LABEL:;
3764 return var;
3765 }
3766 /* method typing#AExpr#its_variable for (self: Object): nullable Variable */
3767 val* VIRTUAL_typing__AExpr__its_variable(val* self) {
3768 val* var /* : nullable Variable */;
3769 val* var1 /* : nullable Variable */;
3770 var1 = typing__AExpr__its_variable(self);
3771 var = var1;
3772 RET_LABEL:;
3773 return var;
3774 }
3775 /* method typing#AExpr#accept_typing for (self: AExpr, TypeVisitor) */
3776 void typing__AExpr__accept_typing(val* self, val* p0) {
3777 val* var_v /* var v: TypeVisitor */;
3778 static val* varonce;
3779 val* var /* : String */;
3780 char* var1 /* : NativeString */;
3781 long var2 /* : Int */;
3782 val* var3 /* : String */;
3783 val* var4 /* : String */;
3784 val* var5 /* : Array[Object] */;
3785 long var6 /* : Int */;
3786 val* var7 /* : NativeArray[Object] */;
3787 val* var8 /* : String */;
3788 var_v = p0;
3789 if (varonce) {
3790 var = varonce;
3791 } else {
3792 var1 = "no implemented accept_typing for ";
3793 var2 = 33;
3794 var3 = string__NativeString__to_s_with_length(var1, var2);
3795 var = var3;
3796 varonce = var;
3797 }
3798 var4 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:AExpr>*/;
3799 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
3800 { /* var5 = array_instance Array[Object] */
3801 var6 = 2;
3802 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
3803 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
3804 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var4;
3805 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
3806 }
3807 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
3808 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
3809 RET_LABEL:;
3810 }
3811 /* method typing#AExpr#accept_typing for (self: Object, TypeVisitor) */
3812 void VIRTUAL_typing__AExpr__accept_typing(val* self, val* p0) {
3813 typing__AExpr__accept_typing(self, p0);
3814 RET_LABEL:;
3815 }
3816 /* method typing#ABlockExpr#accept_typing for (self: ABlockExpr, TypeVisitor) */
3817 void typing__ABlockExpr__accept_typing(val* self, val* p0) {
3818 val* var_v /* var v: TypeVisitor */;
3819 val* var /* : ANodes[AExpr] */;
3820 val* var1 /* : Iterator[nullable Object] */;
3821 short int var2 /* : Bool */;
3822 val* var3 /* : nullable Object */;
3823 val* var_e /* var e: AExpr */;
3824 short int var4 /* : Bool */;
3825 var_v = p0;
3826 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3827 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AExpr]>*/;
3828 for(;;) {
3829 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
3830 if(!var2) break;
3831 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
3832 var_e = var3;
3833 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_e) /* visit_stmt on <var_v:TypeVisitor>*/;
3834 CONTINUE_label: (void)0;
3835 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
3836 }
3837 BREAK_label: (void)0;
3838 var4 = 1;
3839 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABlockExpr>*/;
3840 RET_LABEL:;
3841 }
3842 /* method typing#ABlockExpr#accept_typing for (self: Object, TypeVisitor) */
3843 void VIRTUAL_typing__ABlockExpr__accept_typing(val* self, val* p0) {
3844 typing__ABlockExpr__accept_typing(self, p0);
3845 RET_LABEL:;
3846 }
3847 /* method typing#ABlockExpr#mtype for (self: ABlockExpr): nullable MType */
3848 val* typing__ABlockExpr__mtype(val* self) {
3849 val* var /* : nullable MType */;
3850 val* var1 /* : ANodes[AExpr] */;
3851 short int var2 /* : Bool */;
3852 val* var3 /* : null */;
3853 val* var4 /* : ANodes[AExpr] */;
3854 val* var5 /* : nullable Object */;
3855 val* var6 /* : nullable MType */;
3856 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3857 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:ANodes[AExpr]>*/;
3858 if (var2){
3859 var3 = NULL;
3860 var = var3;
3861 goto RET_LABEL;
3862 } else {
3863 }
3864 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3865 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var4) /* last on <var4:ANodes[AExpr]>*/;
3866 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_typing__AExpr__mtype]))(var5) /* mtype on <var5:nullable Object(AExpr)>*/;
3867 var = var6;
3868 goto RET_LABEL;
3869 RET_LABEL:;
3870 return var;
3871 }
3872 /* method typing#ABlockExpr#mtype for (self: Object): nullable MType */
3873 val* VIRTUAL_typing__ABlockExpr__mtype(val* self) {
3874 val* var /* : nullable MType */;
3875 val* var1 /* : nullable MType */;
3876 var1 = typing__ABlockExpr__mtype(self);
3877 var = var1;
3878 RET_LABEL:;
3879 return var;
3880 }
3881 /* method typing#AVardeclExpr#accept_typing for (self: AVardeclExpr, TypeVisitor) */
3882 void typing__AVardeclExpr__accept_typing(val* self, val* p0) {
3883 val* var_v /* var v: TypeVisitor */;
3884 val* var /* : nullable Variable */;
3885 val* var_variable /* var variable: nullable Variable */;
3886 val* var1 /* : null */;
3887 short int var2 /* : Bool */;
3888 val* var3 /* : nullable AType */;
3889 val* var_ntype /* var ntype: nullable AType */;
3890 val* var4 /* : null */;
3891 short int var5 /* : Bool */;
3892 val* var6 /* : null */;
3893 val* var_mtype /* var mtype: nullable MType */;
3894 val* var7 /* : nullable MType */;
3895 val* var8 /* : null */;
3896 short int var9 /* : Bool */;
3897 val* var10 /* : nullable AExpr */;
3898 val* var_nexpr /* var nexpr: nullable AExpr */;
3899 val* var11 /* : null */;
3900 short int var12 /* : Bool */;
3901 val* var13 /* : null */;
3902 short int var14 /* : Bool */;
3903 val* var15 /* : nullable MType */;
3904 val* var16 /* : nullable MType */;
3905 val* var17 /* : null */;
3906 short int var18 /* : Bool */;
3907 val* var_decltype /* var decltype: nullable MType */;
3908 short int var19 /* : Bool */;
3909 val* var20 /* : null */;
3910 short int var21 /* : Bool */;
3911 short int var_ /* var : Bool */;
3912 short int var22 /* : Bool */;
3913 int cltype;
3914 int idtype;
3915 static val* varonce;
3916 val* var23 /* : String */;
3917 char* var24 /* : NativeString */;
3918 long var25 /* : Int */;
3919 val* var26 /* : String */;
3920 val* var27 /* : nullable MClass */;
3921 val* var28 /* : MClassType */;
3922 val* var29 /* : MType */;
3923 val* var30 /* : null */;
3924 short int var31 /* : Bool */;
3925 short int var32 /* : Bool */;
3926 var_v = p0;
3927 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
3928 var_variable = var;
3929 var1 = NULL;
3930 if (var_variable == NULL) {
3931 var2 = 1; /* is null */
3932 } else {
3933 var2 = 0; /* arg is null but recv is not */
3934 }
3935 if (var2){
3936 goto RET_LABEL;
3937 } else {
3938 }
3939 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_type]))(self) /* n_type on <self:AVardeclExpr>*/;
3940 var_ntype = var3;
3941 var4 = NULL;
3942 if (var_ntype == NULL) {
3943 var5 = 1; /* is null */
3944 } else {
3945 var5 = 0; /* arg is null but recv is not */
3946 }
3947 if (var5){
3948 var6 = NULL;
3949 var_mtype = var6;
3950 } else {
3951 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
3952 var_mtype = var7;
3953 var8 = NULL;
3954 if (var_mtype == NULL) {
3955 var9 = 1; /* is null */
3956 } else {
3957 var9 = 0; /* arg is null but recv is not */
3958 }
3959 if (var9){
3960 goto RET_LABEL;
3961 } else {
3962 }
3963 }
3964 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
3965 var_nexpr = var10;
3966 var11 = NULL;
3967 if (var_nexpr == NULL) {
3968 var12 = 0; /* is null */
3969 } else {
3970 var12 = 1; /* arg is null and recv is not */
3971 }
3972 if (var12){
3973 var13 = NULL;
3974 if (var_mtype == NULL) {
3975 var14 = 0; /* is null */
3976 } else {
3977 var14 = 1; /* arg is null and recv is not */
3978 }
3979 if (var14){
3980 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>*/;
3981 var15;
3982 } else {
3983 var16 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
3984 var_mtype = var16;
3985 var17 = NULL;
3986 if (var_mtype == NULL) {
3987 var18 = 1; /* is null */
3988 } else {
3989 var18 = 0; /* arg is null but recv is not */
3990 }
3991 if (var18){
3992 goto RET_LABEL;
3993 } else {
3994 }
3995 }
3996 } else {
3997 }
3998 var_decltype = var_mtype;
3999 var20 = NULL;
4000 if (var_mtype == NULL) {
4001 var21 = 1; /* is null */
4002 } else {
4003 var21 = 0; /* arg is null but recv is not */
4004 }
4005 var_ = var21;
4006 if (var21){
4007 var19 = var_;
4008 } else {
4009 /* <var_mtype:nullable MType(MType)> isa MNullType */
4010 cltype = type_model__MNullType.color;
4011 idtype = type_model__MNullType.id;
4012 if(cltype >= var_mtype->type->table_size) {
4013 var22 = 0;
4014 } else {
4015 var22 = var_mtype->type->type_table[cltype] == idtype;
4016 }
4017 var19 = var22;
4018 }
4019 if (var19){
4020 if (varonce) {
4021 var23 = varonce;
4022 } else {
4023 var24 = "Object";
4024 var25 = 6;
4025 var26 = string__NativeString__to_s_with_length(var24, var25);
4026 var23 = var26;
4027 varonce = var23;
4028 }
4029 var27 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var23) /* get_mclass on <var_v:TypeVisitor>*/;
4030 if (var27 == NULL) {
4031 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4032 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 597);
4033 show_backtrace(1);
4034 } else {
4035 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClass__mclass_type]))(var27) /* mclass_type on <var27:nullable MClass>*/;
4036 }
4037 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MType__as_nullable]))(var28) /* as_nullable on <var28:MClassType>*/;
4038 var_decltype = var29;
4039 var30 = NULL;
4040 if (var_mtype == NULL) {
4041 var31 = 1; /* is null */
4042 } else {
4043 var31 = 0; /* arg is null but recv is not */
4044 }
4045 if (var31){
4046 var_mtype = var_decltype;
4047 } else {
4048 }
4049 } else {
4050 }
4051 ((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)>*/;
4052 ((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>*/;
4053 var32 = 1;
4054 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var32) /* is_typed= on <self:AVardeclExpr>*/;
4055 RET_LABEL:;
4056 }
4057 /* method typing#AVardeclExpr#accept_typing for (self: Object, TypeVisitor) */
4058 void VIRTUAL_typing__AVardeclExpr__accept_typing(val* self, val* p0) {
4059 typing__AVardeclExpr__accept_typing(self, p0);
4060 RET_LABEL:;
4061 }
4062 /* method typing#AVarExpr#its_variable for (self: AVarExpr): nullable Variable */
4063 val* typing__AVarExpr__its_variable(val* self) {
4064 val* var /* : nullable Variable */;
4065 val* var1 /* : nullable Variable */;
4066 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4067 var = var1;
4068 goto RET_LABEL;
4069 RET_LABEL:;
4070 return var;
4071 }
4072 /* method typing#AVarExpr#its_variable for (self: Object): nullable Variable */
4073 val* VIRTUAL_typing__AVarExpr__its_variable(val* self) {
4074 val* var /* : nullable Variable */;
4075 val* var1 /* : nullable Variable */;
4076 var1 = typing__AVarExpr__its_variable(self);
4077 var = var1;
4078 RET_LABEL:;
4079 return var;
4080 }
4081 /* method typing#AVarExpr#accept_typing for (self: AVarExpr, TypeVisitor) */
4082 void typing__AVarExpr__accept_typing(val* self, val* p0) {
4083 val* var_v /* var v: TypeVisitor */;
4084 val* var /* : nullable Variable */;
4085 val* var_variable /* var variable: nullable Variable */;
4086 val* var1 /* : null */;
4087 short int var2 /* : Bool */;
4088 val* var3 /* : nullable MType */;
4089 val* var_mtype /* var mtype: nullable MType */;
4090 val* var4 /* : null */;
4091 short int var5 /* : Bool */;
4092 var_v = p0;
4093 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4094 var_variable = var;
4095 var1 = NULL;
4096 if (var_variable == NULL) {
4097 var2 = 1; /* is null */
4098 } else {
4099 var2 = 0; /* arg is null but recv is not */
4100 }
4101 if (var2){
4102 goto RET_LABEL;
4103 } else {
4104 }
4105 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>*/;
4106 var_mtype = var3;
4107 var4 = NULL;
4108 if (var_mtype == NULL) {
4109 var5 = 0; /* is null */
4110 } else {
4111 var5 = 1; /* arg is null and recv is not */
4112 }
4113 if (var5){
4114 } else {
4115 }
4116 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AVarExpr>*/;
4117 RET_LABEL:;
4118 }
4119 /* method typing#AVarExpr#accept_typing for (self: Object, TypeVisitor) */
4120 void VIRTUAL_typing__AVarExpr__accept_typing(val* self, val* p0) {
4121 typing__AVarExpr__accept_typing(self, p0);
4122 RET_LABEL:;
4123 }
4124 /* method typing#AVarAssignExpr#accept_typing for (self: AVarAssignExpr, TypeVisitor) */
4125 void typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4126 val* var_v /* var v: TypeVisitor */;
4127 val* var /* : nullable Variable */;
4128 val* var_variable /* var variable: nullable Variable */;
4129 val* var1 /* : null */;
4130 short int var2 /* : Bool */;
4131 val* var3 /* : AExpr */;
4132 val* var4 /* : nullable MType */;
4133 val* var5 /* : nullable MType */;
4134 val* var_mtype /* var mtype: nullable MType */;
4135 short int var6 /* : Bool */;
4136 var_v = p0;
4137 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarAssignExpr>*/;
4138 var_variable = var;
4139 var1 = NULL;
4140 if (var_variable == NULL) {
4141 var2 = 0; /* is null */
4142 } else {
4143 var2 = 1; /* arg is null and recv is not */
4144 }
4145 if (!var2) {
4146 fprintf(stderr, "Runtime error: %s", "Assert failed");
4147 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 632);
4148 show_backtrace(1);
4149 }
4150 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AVarAssignExpr>*/;
4151 var4 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4152 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>*/;
4153 var_mtype = var5;
4154 ((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>*/;
4155 var6 = 1;
4156 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var6) /* is_typed= on <self:AVarAssignExpr>*/;
4157 RET_LABEL:;
4158 }
4159 /* method typing#AVarAssignExpr#accept_typing for (self: Object, TypeVisitor) */
4160 void VIRTUAL_typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4161 typing__AVarAssignExpr__accept_typing(self, p0);
4162 RET_LABEL:;
4163 }
4164 /* method typing#AReassignFormExpr#reassign_property for (self: AReassignFormExpr): nullable MMethodDef */
4165 val* typing__AReassignFormExpr__reassign_property(val* self) {
4166 val* var /* : nullable MMethodDef */;
4167 val* var1 /* : nullable CallSite */;
4168 val* var2 /* : MMethodDef */;
4169 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AReassignFormExpr>*/;
4170 if (var1 == NULL) {
4171 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4172 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 644);
4173 show_backtrace(1);
4174 } else {
4175 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mpropdef]))(var1) /* mpropdef on <var1:nullable CallSite>*/;
4176 }
4177 var = var2;
4178 goto RET_LABEL;
4179 RET_LABEL:;
4180 return var;
4181 }
4182 /* method typing#AReassignFormExpr#reassign_property for (self: Object): nullable MMethodDef */
4183 val* VIRTUAL_typing__AReassignFormExpr__reassign_property(val* self) {
4184 val* var /* : nullable MMethodDef */;
4185 val* var1 /* : nullable MMethodDef */;
4186 var1 = typing__AReassignFormExpr__reassign_property(self);
4187 var = var1;
4188 RET_LABEL:;
4189 return var;
4190 }
4191 /* method typing#AReassignFormExpr#reassign_callsite for (self: AReassignFormExpr): nullable CallSite */
4192 val* typing__AReassignFormExpr__reassign_callsite(val* self) {
4193 val* var /* : nullable CallSite */;
4194 val* var1 /* : nullable CallSite */;
4195 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val; /* @reassign_callsite on <self:AReassignFormExpr> */
4196 var = var1;
4197 RET_LABEL:;
4198 return var;
4199 }
4200 /* method typing#AReassignFormExpr#reassign_callsite for (self: Object): nullable CallSite */
4201 val* VIRTUAL_typing__AReassignFormExpr__reassign_callsite(val* self) {
4202 val* var /* : nullable CallSite */;
4203 val* var1 /* : nullable CallSite */;
4204 var1 = typing__AReassignFormExpr__reassign_callsite(self);
4205 var = var1;
4206 RET_LABEL:;
4207 return var;
4208 }
4209 /* method typing#AReassignFormExpr#reassign_callsite= for (self: AReassignFormExpr, nullable CallSite) */
4210 void typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4211 self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val = p0; /* @reassign_callsite on <self:AReassignFormExpr> */
4212 RET_LABEL:;
4213 }
4214 /* method typing#AReassignFormExpr#reassign_callsite= for (self: Object, nullable CallSite) */
4215 void VIRTUAL_typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4216 typing__AReassignFormExpr__reassign_callsite_61d(self, p0);
4217 RET_LABEL:;
4218 }
4219 /* method typing#AReassignFormExpr#read_type for (self: AReassignFormExpr): nullable MType */
4220 val* typing__AReassignFormExpr__read_type(val* self) {
4221 val* var /* : nullable MType */;
4222 val* var1 /* : nullable MType */;
4223 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val; /* @read_type on <self:AReassignFormExpr> */
4224 var = var1;
4225 RET_LABEL:;
4226 return var;
4227 }
4228 /* method typing#AReassignFormExpr#read_type for (self: Object): nullable MType */
4229 val* VIRTUAL_typing__AReassignFormExpr__read_type(val* self) {
4230 val* var /* : nullable MType */;
4231 val* var1 /* : nullable MType */;
4232 var1 = typing__AReassignFormExpr__read_type(self);
4233 var = var1;
4234 RET_LABEL:;
4235 return var;
4236 }
4237 /* method typing#AReassignFormExpr#read_type= for (self: AReassignFormExpr, nullable MType) */
4238 void typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4239 self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val = p0; /* @read_type on <self:AReassignFormExpr> */
4240 RET_LABEL:;
4241 }
4242 /* method typing#AReassignFormExpr#read_type= for (self: Object, nullable MType) */
4243 void VIRTUAL_typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4244 typing__AReassignFormExpr__read_type_61d(self, p0);
4245 RET_LABEL:;
4246 }
4247 /* method typing#AReassignFormExpr#resolve_reassignment for (self: AReassignFormExpr, TypeVisitor, MType, MType): nullable MType */
4248 val* typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4249 val* var /* : nullable MType */;
4250 val* var_v /* var v: TypeVisitor */;
4251 val* var_readtype /* var readtype: MType */;
4252 val* var_writetype /* var writetype: MType */;
4253 val* var1 /* : AAssignOp */;
4254 short int var2 /* : Bool */;
4255 int cltype;
4256 int idtype;
4257 static val* varonce;
4258 val* var3 /* : String */;
4259 char* var4 /* : NativeString */;
4260 long var5 /* : Int */;
4261 val* var6 /* : String */;
4262 val* var_reassign_name /* var reassign_name: String */;
4263 val* var7 /* : AAssignOp */;
4264 short int var8 /* : Bool */;
4265 int cltype9;
4266 int idtype10;
4267 static val* varonce11;
4268 val* var12 /* : String */;
4269 char* var13 /* : NativeString */;
4270 long var14 /* : Int */;
4271 val* var15 /* : String */;
4272 short int var16 /* : Bool */;
4273 int cltype17;
4274 int idtype18;
4275 static val* varonce19;
4276 val* var20 /* : String */;
4277 char* var21 /* : NativeString */;
4278 long var22 /* : Int */;
4279 val* var23 /* : String */;
4280 static val* varonce24;
4281 val* var25 /* : String */;
4282 char* var26 /* : NativeString */;
4283 long var27 /* : Int */;
4284 val* var28 /* : String */;
4285 val* var29 /* : Array[Object] */;
4286 long var30 /* : Int */;
4287 val* var31 /* : NativeArray[Object] */;
4288 val* var32 /* : String */;
4289 val* var33 /* : null */;
4290 short int var34 /* : Bool */;
4291 val* var35 /* : nullable CallSite */;
4292 val* var_callsite /* var callsite: nullable CallSite */;
4293 val* var36 /* : null */;
4294 short int var37 /* : Bool */;
4295 val* var38 /* : null */;
4296 val* var39 /* : MSignature */;
4297 val* var_msignature /* var msignature: MSignature */;
4298 val* var40 /* : nullable MType */;
4299 val* var_rettype /* var rettype: nullable MType */;
4300 short int var41 /* : Bool */;
4301 long var42 /* : Int */;
4302 long var43 /* : Int */;
4303 short int var44 /* : Bool */;
4304 short int var46 /* : Bool */;
4305 short int var_ /* var : Bool */;
4306 val* var47 /* : null */;
4307 short int var48 /* : Bool */;
4308 val* var49 /* : AExpr */;
4309 val* var50 /* : Array[MParameter] */;
4310 val* var51 /* : nullable Object */;
4311 val* var52 /* : MType */;
4312 val* var53 /* : nullable MType */;
4313 val* var_value_type /* var value_type: nullable MType */;
4314 val* var54 /* : null */;
4315 short int var55 /* : Bool */;
4316 val* var56 /* : null */;
4317 val* var57 /* : nullable MType */;
4318 var_v = p0;
4319 var_readtype = p1;
4320 var_writetype = p2;
4321 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4322 /* <var1:AAssignOp> isa APlusAssignOp */
4323 cltype = type_parser_nodes__APlusAssignOp.color;
4324 idtype = type_parser_nodes__APlusAssignOp.id;
4325 if(cltype >= var1->type->table_size) {
4326 var2 = 0;
4327 } else {
4328 var2 = var1->type->type_table[cltype] == idtype;
4329 }
4330 if (var2){
4331 if (varonce) {
4332 var3 = varonce;
4333 } else {
4334 var4 = "+";
4335 var5 = 1;
4336 var6 = string__NativeString__to_s_with_length(var4, var5);
4337 var3 = var6;
4338 varonce = var3;
4339 }
4340 var_reassign_name = var3;
4341 } else {
4342 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4343 /* <var7:AAssignOp> isa AMinusAssignOp */
4344 cltype9 = type_parser_nodes__AMinusAssignOp.color;
4345 idtype10 = type_parser_nodes__AMinusAssignOp.id;
4346 if(cltype9 >= var7->type->table_size) {
4347 var8 = 0;
4348 } else {
4349 var8 = var7->type->type_table[cltype9] == idtype10;
4350 }
4351 if (var8){
4352 if (varonce11) {
4353 var12 = varonce11;
4354 } else {
4355 var13 = "-";
4356 var14 = 1;
4357 var15 = string__NativeString__to_s_with_length(var13, var14);
4358 var12 = var15;
4359 varonce11 = var12;
4360 }
4361 var_reassign_name = var12;
4362 } else {
4363 fprintf(stderr, "Runtime error: %s", "Aborted");
4364 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 664);
4365 show_backtrace(1);
4366 }
4367 }
4368 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type_61d]))(self, var_readtype) /* read_type= on <self:AReassignFormExpr>*/;
4369 /* <var_readtype:MType> isa MNullType */
4370 cltype17 = type_model__MNullType.color;
4371 idtype18 = type_model__MNullType.id;
4372 if(cltype17 >= var_readtype->type->table_size) {
4373 var16 = 0;
4374 } else {
4375 var16 = var_readtype->type->type_table[cltype17] == idtype18;
4376 }
4377 if (var16){
4378 if (varonce19) {
4379 var20 = varonce19;
4380 } else {
4381 var21 = "Error: Method \'";
4382 var22 = 15;
4383 var23 = string__NativeString__to_s_with_length(var21, var22);
4384 var20 = var23;
4385 varonce19 = var20;
4386 }
4387 if (varonce24) {
4388 var25 = varonce24;
4389 } else {
4390 var26 = "\' call on \'null\'.";
4391 var27 = 17;
4392 var28 = string__NativeString__to_s_with_length(var26, var27);
4393 var25 = var28;
4394 varonce24 = var25;
4395 }
4396 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
4397 { /* var29 = array_instance Array[Object] */
4398 var30 = 3;
4399 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
4400 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var20;
4401 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_reassign_name;
4402 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
4403 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
4404 }
4405 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
4406 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
4407 var33 = NULL;
4408 var = var33;
4409 goto RET_LABEL;
4410 } else {
4411 }
4412 var34 = 0;
4413 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>*/;
4414 var_callsite = var35;
4415 var36 = NULL;
4416 if (var_callsite == NULL) {
4417 var37 = 1; /* is null */
4418 } else {
4419 var37 = 0; /* arg is null but recv is not */
4420 }
4421 if (var37){
4422 var38 = NULL;
4423 var = var38;
4424 goto RET_LABEL;
4425 } else {
4426 }
4427 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite_61d]))(self, var_callsite) /* reassign_callsite= on <self:AReassignFormExpr>*/;
4428 var39 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
4429 var_msignature = var39;
4430 var40 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
4431 var_rettype = var40;
4432 var42 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
4433 var43 = 1;
4434 { /* Inline kernel#Int#== (var42,var43) */
4435 var46 = var42 == var43;
4436 var44 = var46;
4437 goto RET_LABEL45;
4438 RET_LABEL45:(void)0;
4439 }
4440 var_ = var44;
4441 if (var44){
4442 var47 = NULL;
4443 if (var_rettype == NULL) {
4444 var48 = 0; /* is null */
4445 } else {
4446 var48 = 1; /* arg is null and recv is not */
4447 }
4448 var41 = var48;
4449 } else {
4450 var41 = var_;
4451 }
4452 if (!var41) {
4453 fprintf(stderr, "Runtime error: %s", "Assert failed");
4454 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 680);
4455 show_backtrace(1);
4456 }
4457 var49 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AReassignFormExpr>*/;
4458 var50 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
4459 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__first]))(var50) /* first on <var50:Array[MParameter]>*/;
4460 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_model__MParameter__mtype]))(var51) /* mtype on <var51:nullable Object(MParameter)>*/;
4461 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>*/;
4462 var_value_type = var53;
4463 var54 = NULL;
4464 if (var_value_type == NULL) {
4465 var55 = 1; /* is null */
4466 } else {
4467 var55 = 0; /* arg is null but recv is not */
4468 }
4469 if (var55){
4470 var56 = NULL;
4471 var = var56;
4472 goto RET_LABEL;
4473 } else {
4474 }
4475 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>*/;
4476 var57;
4477 var = var_rettype;
4478 goto RET_LABEL;
4479 RET_LABEL:;
4480 return var;
4481 }
4482 /* method typing#AReassignFormExpr#resolve_reassignment for (self: Object, TypeVisitor, MType, MType): nullable MType */
4483 val* VIRTUAL_typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4484 val* var /* : nullable MType */;
4485 val* var1 /* : nullable MType */;
4486 var1 = typing__AReassignFormExpr__resolve_reassignment(self, p0, p1, p2);
4487 var = var1;
4488 RET_LABEL:;
4489 return var;
4490 }
4491 /* method typing#AVarReassignExpr#accept_typing for (self: AVarReassignExpr, TypeVisitor) */
4492 void typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4493 val* var_v /* var v: TypeVisitor */;
4494 val* var /* : nullable Variable */;
4495 val* var_variable /* var variable: nullable Variable */;
4496 val* var1 /* : null */;
4497 short int var2 /* : Bool */;
4498 val* var3 /* : nullable MType */;
4499 val* var_readtype /* var readtype: nullable MType */;
4500 val* var4 /* : null */;
4501 short int var5 /* : Bool */;
4502 val* var6 /* : nullable MType */;
4503 val* var_writetype /* var writetype: nullable MType */;
4504 val* var7 /* : null */;
4505 short int var8 /* : Bool */;
4506 val* var9 /* : nullable MType */;
4507 val* var_rettype /* var rettype: nullable MType */;
4508 short int var10 /* : Bool */;
4509 var_v = p0;
4510 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
4511 var_variable = var;
4512 var1 = NULL;
4513 if (var_variable == NULL) {
4514 var2 = 0; /* is null */
4515 } else {
4516 var2 = 1; /* arg is null and recv is not */
4517 }
4518 if (!var2) {
4519 fprintf(stderr, "Runtime error: %s", "Assert failed");
4520 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 694);
4521 show_backtrace(1);
4522 }
4523 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>*/;
4524 var_readtype = var3;
4525 var4 = NULL;
4526 if (var_readtype == NULL) {
4527 var5 = 1; /* is null */
4528 } else {
4529 var5 = 0; /* arg is null but recv is not */
4530 }
4531 if (var5){
4532 goto RET_LABEL;
4533 } else {
4534 }
4535 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type_61d]))(self, var_readtype) /* read_type= on <self:AVarReassignExpr>*/;
4536 var6 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4537 var_writetype = var6;
4538 var7 = NULL;
4539 if (var_writetype == NULL) {
4540 var8 = 1; /* is null */
4541 } else {
4542 var8 = 0; /* arg is null but recv is not */
4543 }
4544 if (var8){
4545 goto RET_LABEL;
4546 } else {
4547 }
4548 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>*/;
4549 var_rettype = var9;
4550 ((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>*/;
4551 var10 = 1;
4552 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var10) /* is_typed= on <self:AVarReassignExpr>*/;
4553 RET_LABEL:;
4554 }
4555 /* method typing#AVarReassignExpr#accept_typing for (self: Object, TypeVisitor) */
4556 void VIRTUAL_typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4557 typing__AVarReassignExpr__accept_typing(self, p0);
4558 RET_LABEL:;
4559 }
4560 /* method typing#AContinueExpr#accept_typing for (self: AContinueExpr, TypeVisitor) */
4561 void typing__AContinueExpr__accept_typing(val* self, val* p0) {
4562 val* var_v /* var v: TypeVisitor */;
4563 val* var /* : nullable AExpr */;
4564 val* var_nexpr /* var nexpr: nullable AExpr */;
4565 val* var1 /* : null */;
4566 short int var2 /* : Bool */;
4567 val* var3 /* : nullable MType */;
4568 val* var_mtype /* var mtype: nullable MType */;
4569 short int var4 /* : Bool */;
4570 var_v = p0;
4571 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AContinueExpr__n_expr]))(self) /* n_expr on <self:AContinueExpr>*/;
4572 var_nexpr = var;
4573 var1 = NULL;
4574 if (var_nexpr == NULL) {
4575 var2 = 0; /* is null */
4576 } else {
4577 var2 = 1; /* arg is null and recv is not */
4578 }
4579 if (var2){
4580 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4581 var_mtype = var3;
4582 } else {
4583 }
4584 var4 = 1;
4585 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AContinueExpr>*/;
4586 RET_LABEL:;
4587 }
4588 /* method typing#AContinueExpr#accept_typing for (self: Object, TypeVisitor) */
4589 void VIRTUAL_typing__AContinueExpr__accept_typing(val* self, val* p0) {
4590 typing__AContinueExpr__accept_typing(self, p0);
4591 RET_LABEL:;
4592 }
4593 /* method typing#ABreakExpr#accept_typing for (self: ABreakExpr, TypeVisitor) */
4594 void typing__ABreakExpr__accept_typing(val* self, val* p0) {
4595 val* var_v /* var v: TypeVisitor */;
4596 val* var /* : nullable AExpr */;
4597 val* var_nexpr /* var nexpr: nullable AExpr */;
4598 val* var1 /* : null */;
4599 short int var2 /* : Bool */;
4600 val* var3 /* : nullable MType */;
4601 val* var_mtype /* var mtype: nullable MType */;
4602 short int var4 /* : Bool */;
4603 var_v = p0;
4604 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABreakExpr__n_expr]))(self) /* n_expr on <self:ABreakExpr>*/;
4605 var_nexpr = var;
4606 var1 = NULL;
4607 if (var_nexpr == NULL) {
4608 var2 = 0; /* is null */
4609 } else {
4610 var2 = 1; /* arg is null and recv is not */
4611 }
4612 if (var2){
4613 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4614 var_mtype = var3;
4615 } else {
4616 }
4617 var4 = 1;
4618 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABreakExpr>*/;
4619 RET_LABEL:;
4620 }
4621 /* method typing#ABreakExpr#accept_typing for (self: Object, TypeVisitor) */
4622 void VIRTUAL_typing__ABreakExpr__accept_typing(val* self, val* p0) {
4623 typing__ABreakExpr__accept_typing(self, p0);
4624 RET_LABEL:;
4625 }
4626 /* method typing#AReturnExpr#accept_typing for (self: AReturnExpr, TypeVisitor) */
4627 void typing__AReturnExpr__accept_typing(val* self, val* p0) {
4628 val* var_v /* var v: TypeVisitor */;
4629 val* var /* : nullable AExpr */;
4630 val* var_nexpr /* var nexpr: nullable AExpr */;
4631 val* var1 /* : MPropDef */;
4632 short int var2 /* : Bool */;
4633 int cltype;
4634 int idtype;
4635 const char* var_class_name;
4636 val* var3 /* : nullable MSignature */;
4637 val* var4 /* : nullable MType */;
4638 val* var_ret_type /* var ret_type: nullable MType */;
4639 val* var5 /* : null */;
4640 short int var6 /* : Bool */;
4641 val* var7 /* : null */;
4642 short int var8 /* : Bool */;
4643 val* var9 /* : nullable MType */;
4644 val* var_mtype /* var mtype: nullable MType */;
4645 val* var10 /* : nullable MType */;
4646 val* var_mtype11 /* var mtype: nullable MType */;
4647 static val* varonce;
4648 val* var12 /* : String */;
4649 char* var13 /* : NativeString */;
4650 long var14 /* : Int */;
4651 val* var15 /* : String */;
4652 val* var16 /* : null */;
4653 short int var17 /* : Bool */;
4654 static val* varonce18;
4655 val* var19 /* : String */;
4656 char* var20 /* : NativeString */;
4657 long var21 /* : Int */;
4658 val* var22 /* : String */;
4659 short int var23 /* : Bool */;
4660 var_v = p0;
4661 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReturnExpr__n_expr]))(self) /* n_expr on <self:AReturnExpr>*/;
4662 var_nexpr = var;
4663 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
4664 /* <var1:MPropDef> isa MMethodDef */
4665 cltype = type_model__MMethodDef.color;
4666 idtype = type_model__MMethodDef.id;
4667 if(cltype >= var1->type->table_size) {
4668 var2 = 0;
4669 } else {
4670 var2 = var1->type->type_table[cltype] == idtype;
4671 }
4672 if (!var2) {
4673 var_class_name = var1 == NULL ? "null" : var1->type->name;
4674 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name);
4675 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 739);
4676 show_backtrace(1);
4677 }
4678 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MMethodDef__msignature]))(var1) /* msignature on <var1:MPropDef(MMethodDef)>*/;
4679 if (var3 == NULL) {
4680 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4681 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 739);
4682 show_backtrace(1);
4683 } else {
4684 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MSignature__return_mtype]))(var3) /* return_mtype on <var3:nullable MSignature>*/;
4685 }
4686 var_ret_type = var4;
4687 var5 = NULL;
4688 if (var_nexpr == NULL) {
4689 var6 = 0; /* is null */
4690 } else {
4691 var6 = 1; /* arg is null and recv is not */
4692 }
4693 if (var6){
4694 var7 = NULL;
4695 if (var_ret_type == NULL) {
4696 var8 = 0; /* is null */
4697 } else {
4698 var8 = 1; /* arg is null and recv is not */
4699 }
4700 if (var8){
4701 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>*/;
4702 var_mtype = var9;
4703 } else {
4704 var10 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4705 var_mtype11 = var10;
4706 if (varonce) {
4707 var12 = varonce;
4708 } else {
4709 var13 = "Error: Return with value in a procedure.";
4710 var14 = 40;
4711 var15 = string__NativeString__to_s_with_length(var13, var14);
4712 var12 = var15;
4713 varonce = var12;
4714 }
4715 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var12) /* error on <var_v:TypeVisitor>*/;
4716 }
4717 } else {
4718 var16 = NULL;
4719 if (var_ret_type == NULL) {
4720 var17 = 0; /* is null */
4721 } else {
4722 var17 = 1; /* arg is null and recv is not */
4723 }
4724 if (var17){
4725 if (varonce18) {
4726 var19 = varonce18;
4727 } else {
4728 var20 = "Error: Return without value in a function.";
4729 var21 = 42;
4730 var22 = string__NativeString__to_s_with_length(var20, var21);
4731 var19 = var22;
4732 varonce18 = var19;
4733 }
4734 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var19) /* error on <var_v:TypeVisitor>*/;
4735 } else {
4736 }
4737 }
4738 var23 = 1;
4739 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var23) /* is_typed= on <self:AReturnExpr>*/;
4740 RET_LABEL:;
4741 }
4742 /* method typing#AReturnExpr#accept_typing for (self: Object, TypeVisitor) */
4743 void VIRTUAL_typing__AReturnExpr__accept_typing(val* self, val* p0) {
4744 typing__AReturnExpr__accept_typing(self, p0);
4745 RET_LABEL:;
4746 }
4747 /* method typing#AAbortExpr#accept_typing for (self: AAbortExpr, TypeVisitor) */
4748 void typing__AAbortExpr__accept_typing(val* self, val* p0) {
4749 val* var_v /* var v: TypeVisitor */;
4750 short int var /* : Bool */;
4751 var_v = p0;
4752 var = 1;
4753 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var) /* is_typed= on <self:AAbortExpr>*/;
4754 RET_LABEL:;
4755 }
4756 /* method typing#AAbortExpr#accept_typing for (self: Object, TypeVisitor) */
4757 void VIRTUAL_typing__AAbortExpr__accept_typing(val* self, val* p0) {
4758 typing__AAbortExpr__accept_typing(self, p0);
4759 RET_LABEL:;
4760 }
4761 /* method typing#AIfExpr#accept_typing for (self: AIfExpr, TypeVisitor) */
4762 void typing__AIfExpr__accept_typing(val* self, val* p0) {
4763 val* var_v /* var v: TypeVisitor */;
4764 val* var /* : AExpr */;
4765 val* var1 /* : nullable MType */;
4766 val* var2 /* : nullable AExpr */;
4767 val* var3 /* : nullable AExpr */;
4768 short int var4 /* : Bool */;
4769 var_v = p0;
4770 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
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__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
4774 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
4775 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
4776 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var3) /* visit_stmt on <var_v:TypeVisitor>*/;
4777 var4 = 1;
4778 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AIfExpr>*/;
4779 RET_LABEL:;
4780 }
4781 /* method typing#AIfExpr#accept_typing for (self: Object, TypeVisitor) */
4782 void VIRTUAL_typing__AIfExpr__accept_typing(val* self, val* p0) {
4783 typing__AIfExpr__accept_typing(self, p0);
4784 RET_LABEL:;
4785 }
4786 /* method typing#AIfexprExpr#accept_typing for (self: AIfexprExpr, TypeVisitor) */
4787 void typing__AIfexprExpr__accept_typing(val* self, val* p0) {
4788 val* var_v /* var v: TypeVisitor */;
4789 val* var /* : AExpr */;
4790 val* var1 /* : nullable MType */;
4791 val* var2 /* : AExpr */;
4792 val* var3 /* : nullable MType */;
4793 val* var_t1 /* var t1: nullable MType */;
4794 val* var4 /* : AExpr */;
4795 val* var5 /* : nullable MType */;
4796 val* var_t2 /* var t2: nullable MType */;
4797 short int var6 /* : Bool */;
4798 val* var7 /* : null */;
4799 short int var8 /* : Bool */;
4800 short int var_ /* var : Bool */;
4801 val* var9 /* : null */;
4802 short int var10 /* : Bool */;
4803 val* var11 /* : Array[MType] */;
4804 long var12 /* : Int */;
4805 val* var13 /* : NativeArray[MType] */;
4806 val* var14 /* : nullable MType */;
4807 val* var_t /* var t: nullable MType */;
4808 val* var15 /* : null */;
4809 short int var16 /* : Bool */;
4810 static val* varonce;
4811 val* var17 /* : String */;
4812 char* var18 /* : NativeString */;
4813 long var19 /* : Int */;
4814 val* var20 /* : String */;
4815 static val* varonce21;
4816 val* var22 /* : String */;
4817 char* var23 /* : NativeString */;
4818 long var24 /* : Int */;
4819 val* var25 /* : String */;
4820 val* var26 /* : Array[Object] */;
4821 long var27 /* : Int */;
4822 val* var28 /* : NativeArray[Object] */;
4823 val* var29 /* : String */;
4824 var_v = p0;
4825 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
4826 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4827 var1;
4828 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
4829 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
4830 var_t1 = var3;
4831 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
4832 var5 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var4) /* visit_expr on <var_v:TypeVisitor>*/;
4833 var_t2 = var5;
4834 var7 = NULL;
4835 if (var_t1 == NULL) {
4836 var8 = 1; /* is null */
4837 } else {
4838 var8 = 0; /* arg is null but recv is not */
4839 }
4840 var_ = var8;
4841 if (var8){
4842 var6 = var_;
4843 } else {
4844 var9 = NULL;
4845 if (var_t2 == NULL) {
4846 var10 = 1; /* is null */
4847 } else {
4848 var10 = 0; /* arg is null but recv is not */
4849 }
4850 var6 = var10;
4851 }
4852 if (var6){
4853 goto RET_LABEL;
4854 } else {
4855 }
4856 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
4857 { /* var11 = array_instance Array[MType] */
4858 var12 = 2;
4859 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
4860 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
4861 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
4862 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
4863 }
4864 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
4865 var_t = var14;
4866 var15 = NULL;
4867 if (var_t == NULL) {
4868 var16 = 1; /* is null */
4869 } else {
4870 var16 = 0; /* arg is null but recv is not */
4871 }
4872 if (var16){
4873 if (varonce) {
4874 var17 = varonce;
4875 } else {
4876 var18 = "Type Error: ambiguous type ";
4877 var19 = 27;
4878 var20 = string__NativeString__to_s_with_length(var18, var19);
4879 var17 = var20;
4880 varonce = var17;
4881 }
4882 if (varonce21) {
4883 var22 = varonce21;
4884 } else {
4885 var23 = " vs ";
4886 var24 = 4;
4887 var25 = string__NativeString__to_s_with_length(var23, var24);
4888 var22 = var25;
4889 varonce21 = var22;
4890 }
4891 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
4892 { /* var26 = array_instance Array[Object] */
4893 var27 = 4;
4894 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
4895 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
4896 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_t1;
4897 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
4898 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var_t2;
4899 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
4900 }
4901 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
4902 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var29) /* error on <var_v:TypeVisitor>*/;
4903 } else {
4904 }
4905 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AIfexprExpr>*/;
4906 RET_LABEL:;
4907 }
4908 /* method typing#AIfexprExpr#accept_typing for (self: Object, TypeVisitor) */
4909 void VIRTUAL_typing__AIfexprExpr__accept_typing(val* self, val* p0) {
4910 typing__AIfexprExpr__accept_typing(self, p0);
4911 RET_LABEL:;
4912 }
4913 /* method typing#ADoExpr#accept_typing for (self: ADoExpr, TypeVisitor) */
4914 void typing__ADoExpr__accept_typing(val* self, val* p0) {
4915 val* var_v /* var v: TypeVisitor */;
4916 val* var /* : nullable AExpr */;
4917 short int var1 /* : Bool */;
4918 var_v = p0;
4919 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADoExpr__n_block]))(self) /* n_block on <self:ADoExpr>*/;
4920 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var) /* visit_stmt on <var_v:TypeVisitor>*/;
4921 var1 = 1;
4922 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var1) /* is_typed= on <self:ADoExpr>*/;
4923 RET_LABEL:;
4924 }
4925 /* method typing#ADoExpr#accept_typing for (self: Object, TypeVisitor) */
4926 void VIRTUAL_typing__ADoExpr__accept_typing(val* self, val* p0) {
4927 typing__ADoExpr__accept_typing(self, p0);
4928 RET_LABEL:;
4929 }
4930 /* method typing#AWhileExpr#accept_typing for (self: AWhileExpr, TypeVisitor) */
4931 void typing__AWhileExpr__accept_typing(val* self, val* p0) {
4932 val* var_v /* var v: TypeVisitor */;
4933 val* var /* : AExpr */;
4934 val* var1 /* : nullable MType */;
4935 val* var2 /* : nullable AExpr */;
4936 short int var3 /* : Bool */;
4937 var_v = p0;
4938 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on <self:AWhileExpr>*/;
4939 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4940 var1;
4941 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on <self:AWhileExpr>*/;
4942 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
4943 var3 = 1;
4944 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AWhileExpr>*/;
4945 RET_LABEL:;
4946 }
4947 /* method typing#AWhileExpr#accept_typing for (self: Object, TypeVisitor) */
4948 void VIRTUAL_typing__AWhileExpr__accept_typing(val* self, val* p0) {
4949 typing__AWhileExpr__accept_typing(self, p0);
4950 RET_LABEL:;
4951 }
4952 /* method typing#ALoopExpr#accept_typing for (self: ALoopExpr, TypeVisitor) */
4953 void typing__ALoopExpr__accept_typing(val* self, val* p0) {
4954 val* var_v /* var v: TypeVisitor */;
4955 val* var /* : nullable AExpr */;
4956 short int var1 /* : Bool */;
4957 var_v = p0;
4958 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on <self:ALoopExpr>*/;
4959 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var) /* visit_stmt on <var_v:TypeVisitor>*/;
4960 var1 = 1;
4961 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var1) /* is_typed= on <self:ALoopExpr>*/;
4962 RET_LABEL:;
4963 }
4964 /* method typing#ALoopExpr#accept_typing for (self: Object, TypeVisitor) */
4965 void VIRTUAL_typing__ALoopExpr__accept_typing(val* self, val* p0) {
4966 typing__ALoopExpr__accept_typing(self, p0);
4967 RET_LABEL:;
4968 }
4969 /* method typing#AForExpr#coltype for (self: AForExpr): nullable MClassType */
4970 val* typing__AForExpr__coltype(val* self) {
4971 val* var /* : nullable MClassType */;
4972 val* var1 /* : nullable MClassType */;
4973 var1 = self->attrs[COLOR_typing__AForExpr___64dcoltype].val; /* @coltype on <self:AForExpr> */
4974 var = var1;
4975 RET_LABEL:;
4976 return var;
4977 }
4978 /* method typing#AForExpr#coltype for (self: Object): nullable MClassType */
4979 val* VIRTUAL_typing__AForExpr__coltype(val* self) {
4980 val* var /* : nullable MClassType */;
4981 val* var1 /* : nullable MClassType */;
4982 var1 = typing__AForExpr__coltype(self);
4983 var = var1;
4984 RET_LABEL:;
4985 return var;
4986 }
4987 /* method typing#AForExpr#coltype= for (self: AForExpr, nullable MClassType) */
4988 void typing__AForExpr__coltype_61d(val* self, val* p0) {
4989 self->attrs[COLOR_typing__AForExpr___64dcoltype].val = p0; /* @coltype on <self:AForExpr> */
4990 RET_LABEL:;
4991 }
4992 /* method typing#AForExpr#coltype= for (self: Object, nullable MClassType) */
4993 void VIRTUAL_typing__AForExpr__coltype_61d(val* self, val* p0) {
4994 typing__AForExpr__coltype_61d(self, p0);
4995 RET_LABEL:;
4996 }
4997 /* method typing#AForExpr#method_iterator for (self: AForExpr): nullable MMethod */
4998 val* typing__AForExpr__method_iterator(val* self) {
4999 val* var /* : nullable MMethod */;
5000 val* var1 /* : nullable MMethod */;
5001 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_iterator].val; /* @method_iterator on <self:AForExpr> */
5002 var = var1;
5003 RET_LABEL:;
5004 return var;
5005 }
5006 /* method typing#AForExpr#method_iterator for (self: Object): nullable MMethod */
5007 val* VIRTUAL_typing__AForExpr__method_iterator(val* self) {
5008 val* var /* : nullable MMethod */;
5009 val* var1 /* : nullable MMethod */;
5010 var1 = typing__AForExpr__method_iterator(self);
5011 var = var1;
5012 RET_LABEL:;
5013 return var;
5014 }
5015 /* method typing#AForExpr#method_iterator= for (self: AForExpr, nullable MMethod) */
5016 void typing__AForExpr__method_iterator_61d(val* self, val* p0) {
5017 self->attrs[COLOR_typing__AForExpr___64dmethod_iterator].val = p0; /* @method_iterator on <self:AForExpr> */
5018 RET_LABEL:;
5019 }
5020 /* method typing#AForExpr#method_iterator= for (self: Object, nullable MMethod) */
5021 void VIRTUAL_typing__AForExpr__method_iterator_61d(val* self, val* p0) {
5022 typing__AForExpr__method_iterator_61d(self, p0);
5023 RET_LABEL:;
5024 }
5025 /* method typing#AForExpr#method_is_ok for (self: AForExpr): nullable MMethod */
5026 val* typing__AForExpr__method_is_ok(val* self) {
5027 val* var /* : nullable MMethod */;
5028 val* var1 /* : nullable MMethod */;
5029 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_is_ok].val; /* @method_is_ok on <self:AForExpr> */
5030 var = var1;
5031 RET_LABEL:;
5032 return var;
5033 }
5034 /* method typing#AForExpr#method_is_ok for (self: Object): nullable MMethod */
5035 val* VIRTUAL_typing__AForExpr__method_is_ok(val* self) {
5036 val* var /* : nullable MMethod */;
5037 val* var1 /* : nullable MMethod */;
5038 var1 = typing__AForExpr__method_is_ok(self);
5039 var = var1;
5040 RET_LABEL:;
5041 return var;
5042 }
5043 /* method typing#AForExpr#method_is_ok= for (self: AForExpr, nullable MMethod) */
5044 void typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
5045 self->attrs[COLOR_typing__AForExpr___64dmethod_is_ok].val = p0; /* @method_is_ok on <self:AForExpr> */
5046 RET_LABEL:;
5047 }
5048 /* method typing#AForExpr#method_is_ok= for (self: Object, nullable MMethod) */
5049 void VIRTUAL_typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
5050 typing__AForExpr__method_is_ok_61d(self, p0);
5051 RET_LABEL:;
5052 }
5053 /* method typing#AForExpr#method_item for (self: AForExpr): nullable MMethod */
5054 val* typing__AForExpr__method_item(val* self) {
5055 val* var /* : nullable MMethod */;
5056 val* var1 /* : nullable MMethod */;
5057 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_item].val; /* @method_item on <self:AForExpr> */
5058 var = var1;
5059 RET_LABEL:;
5060 return var;
5061 }
5062 /* method typing#AForExpr#method_item for (self: Object): nullable MMethod */
5063 val* VIRTUAL_typing__AForExpr__method_item(val* self) {
5064 val* var /* : nullable MMethod */;
5065 val* var1 /* : nullable MMethod */;
5066 var1 = typing__AForExpr__method_item(self);
5067 var = var1;
5068 RET_LABEL:;
5069 return var;
5070 }
5071 /* method typing#AForExpr#method_item= for (self: AForExpr, nullable MMethod) */
5072 void typing__AForExpr__method_item_61d(val* self, val* p0) {
5073 self->attrs[COLOR_typing__AForExpr___64dmethod_item].val = p0; /* @method_item on <self:AForExpr> */
5074 RET_LABEL:;
5075 }
5076 /* method typing#AForExpr#method_item= for (self: Object, nullable MMethod) */
5077 void VIRTUAL_typing__AForExpr__method_item_61d(val* self, val* p0) {
5078 typing__AForExpr__method_item_61d(self, p0);
5079 RET_LABEL:;
5080 }
5081 /* method typing#AForExpr#method_next for (self: AForExpr): nullable MMethod */
5082 val* typing__AForExpr__method_next(val* self) {
5083 val* var /* : nullable MMethod */;
5084 val* var1 /* : nullable MMethod */;
5085 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_next].val; /* @method_next on <self:AForExpr> */
5086 var = var1;
5087 RET_LABEL:;
5088 return var;
5089 }
5090 /* method typing#AForExpr#method_next for (self: Object): nullable MMethod */
5091 val* VIRTUAL_typing__AForExpr__method_next(val* self) {
5092 val* var /* : nullable MMethod */;
5093 val* var1 /* : nullable MMethod */;
5094 var1 = typing__AForExpr__method_next(self);
5095 var = var1;
5096 RET_LABEL:;
5097 return var;
5098 }
5099 /* method typing#AForExpr#method_next= for (self: AForExpr, nullable MMethod) */
5100 void typing__AForExpr__method_next_61d(val* self, val* p0) {
5101 self->attrs[COLOR_typing__AForExpr___64dmethod_next].val = p0; /* @method_next on <self:AForExpr> */
5102 RET_LABEL:;
5103 }
5104 /* method typing#AForExpr#method_next= for (self: Object, nullable MMethod) */
5105 void VIRTUAL_typing__AForExpr__method_next_61d(val* self, val* p0) {
5106 typing__AForExpr__method_next_61d(self, p0);
5107 RET_LABEL:;
5108 }
5109 /* method typing#AForExpr#method_key for (self: AForExpr): nullable MMethod */
5110 val* typing__AForExpr__method_key(val* self) {
5111 val* var /* : nullable MMethod */;
5112 val* var1 /* : nullable MMethod */;
5113 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_key].val; /* @method_key on <self:AForExpr> */
5114 var = var1;
5115 RET_LABEL:;
5116 return var;
5117 }
5118 /* method typing#AForExpr#method_key for (self: Object): nullable MMethod */
5119 val* VIRTUAL_typing__AForExpr__method_key(val* self) {
5120 val* var /* : nullable MMethod */;
5121 val* var1 /* : nullable MMethod */;
5122 var1 = typing__AForExpr__method_key(self);
5123 var = var1;
5124 RET_LABEL:;
5125 return var;
5126 }
5127 /* method typing#AForExpr#method_key= for (self: AForExpr, nullable MMethod) */
5128 void typing__AForExpr__method_key_61d(val* self, val* p0) {
5129 self->attrs[COLOR_typing__AForExpr___64dmethod_key].val = p0; /* @method_key on <self:AForExpr> */
5130 RET_LABEL:;
5131 }
5132 /* method typing#AForExpr#method_key= for (self: Object, nullable MMethod) */
5133 void VIRTUAL_typing__AForExpr__method_key_61d(val* self, val* p0) {
5134 typing__AForExpr__method_key_61d(self, p0);
5135 RET_LABEL:;
5136 }
5137 /* method typing#AForExpr#do_type_iterator for (self: AForExpr, TypeVisitor, MType) */
5138 void typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
5139 val* var_v /* var v: TypeVisitor */;
5140 val* var_mtype /* var mtype: MType */;
5141 static val* varonce;
5142 val* var /* : String */;
5143 char* var1 /* : NativeString */;
5144 long var2 /* : Int */;
5145 val* var3 /* : String */;
5146 val* var4 /* : nullable MClass */;
5147 val* var_objcla /* var objcla: nullable MClass */;
5148 val* var5 /* : null */;
5149 short int var6 /* : Bool */;
5150 val* var7 /* : MType */;
5151 val* var_unsafe_type /* var unsafe_type: MType */;
5152 static val* varonce8;
5153 val* var9 /* : String */;
5154 char* var10 /* : NativeString */;
5155 long var11 /* : Int */;
5156 val* var12 /* : String */;
5157 val* var13 /* : nullable MProperty */;
5158 val* var14 /* : null */;
5159 short int var15 /* : Bool */;
5160 static val* varonce16;
5161 val* var17 /* : String */;
5162 char* var18 /* : NativeString */;
5163 long var19 /* : Int */;
5164 val* var20 /* : String */;
5165 val* var21 /* : nullable MProperty */;
5166 val* var22 /* : null */;
5167 short int var23 /* : Bool */;
5168 static val* varonce24;
5169 val* var25 /* : String */;
5170 char* var26 /* : NativeString */;
5171 long var27 /* : Int */;
5172 val* var28 /* : String */;
5173 val* var29 /* : Array[Object] */;
5174 long var30 /* : Int */;
5175 val* var31 /* : NativeArray[Object] */;
5176 val* var32 /* : String */;
5177 val* var33 /* : ModelBuilder */;
5178 static val* varonce34;
5179 val* var35 /* : String */;
5180 char* var36 /* : NativeString */;
5181 long var37 /* : Int */;
5182 val* var38 /* : String */;
5183 val* var39 /* : Array[Object] */;
5184 long var40 /* : Int */;
5185 val* var41 /* : NativeArray[Object] */;
5186 val* var42 /* : String */;
5187 static val* varonce43;
5188 val* var44 /* : String */;
5189 char* var45 /* : NativeString */;
5190 long var46 /* : Int */;
5191 val* var47 /* : String */;
5192 short int var48 /* : Bool */;
5193 val* var49 /* : nullable CallSite */;
5194 val* var_itdef /* var itdef: nullable CallSite */;
5195 val* var50 /* : null */;
5196 short int var51 /* : Bool */;
5197 static val* varonce52;
5198 val* var53 /* : String */;
5199 char* var54 /* : NativeString */;
5200 long var55 /* : Int */;
5201 val* var56 /* : String */;
5202 val* var57 /* : Array[Object] */;
5203 long var58 /* : Int */;
5204 val* var59 /* : NativeArray[Object] */;
5205 val* var60 /* : String */;
5206 val* var61 /* : MMethod */;
5207 val* var62 /* : MSignature */;
5208 val* var63 /* : nullable MType */;
5209 val* var_ittype /* var ittype: nullable MType */;
5210 val* var64 /* : null */;
5211 short int var65 /* : Bool */;
5212 static val* varonce66;
5213 val* var67 /* : String */;
5214 char* var68 /* : NativeString */;
5215 long var69 /* : Int */;
5216 val* var70 /* : String */;
5217 static val* varonce71;
5218 val* var72 /* : String */;
5219 char* var73 /* : NativeString */;
5220 long var74 /* : Int */;
5221 val* var75 /* : String */;
5222 val* var76 /* : nullable MClass */;
5223 val* var_colit_cla /* var colit_cla: nullable MClass */;
5224 static val* varonce77;
5225 val* var78 /* : String */;
5226 char* var79 /* : NativeString */;
5227 long var80 /* : Int */;
5228 val* var81 /* : String */;
5229 val* var82 /* : nullable MClass */;
5230 val* var_mapit_cla /* var mapit_cla: nullable MClass */;
5231 short int var83 /* : Bool */;
5232 short int var_is_col /* var is_col: Bool */;
5233 short int var84 /* : Bool */;
5234 short int var_is_map /* var is_map: Bool */;
5235 short int var85 /* : Bool */;
5236 val* var86 /* : null */;
5237 short int var87 /* : Bool */;
5238 short int var_ /* var : Bool */;
5239 val* var88 /* : MClassType */;
5240 val* var89 /* : MType */;
5241 val* var90 /* : Array[MType] */;
5242 long var91 /* : Int */;
5243 val* var92 /* : NativeArray[MType] */;
5244 val* var93 /* : MClassType */;
5245 short int var94 /* : Bool */;
5246 val* var95 /* : MModule */;
5247 val* var96 /* : MClassType */;
5248 val* var97 /* : MClassType */;
5249 val* var_coltype /* var coltype: MClassType */;
5250 val* var98 /* : nullable Array[Variable] */;
5251 val* var_variables /* var variables: nullable Array[Variable] */;
5252 long var99 /* : Int */;
5253 long var100 /* : Int */;
5254 short int var101 /* : Bool */;
5255 short int var103 /* : Bool */;
5256 short int var104 /* : Bool */;
5257 static val* varonce105;
5258 val* var106 /* : String */;
5259 char* var107 /* : NativeString */;
5260 long var108 /* : Int */;
5261 val* var109 /* : String */;
5262 val* var110 /* : nullable Object */;
5263 val* var111 /* : Array[MType] */;
5264 val* var112 /* : nullable Object */;
5265 short int var113 /* : Bool */;
5266 short int var114 /* : Bool */;
5267 val* var115 /* : null */;
5268 short int var116 /* : Bool */;
5269 short int var_117 /* var : Bool */;
5270 val* var118 /* : MClassType */;
5271 val* var119 /* : MClassType */;
5272 val* var120 /* : MType */;
5273 val* var121 /* : Array[MType] */;
5274 long var122 /* : Int */;
5275 val* var123 /* : NativeArray[MType] */;
5276 val* var124 /* : MClassType */;
5277 short int var125 /* : Bool */;
5278 val* var126 /* : MModule */;
5279 val* var127 /* : MClassType */;
5280 val* var128 /* : MClassType */;
5281 val* var_coltype129 /* var coltype: MClassType */;
5282 val* var130 /* : nullable Array[Variable] */;
5283 val* var_variables131 /* var variables: nullable Array[Variable] */;
5284 long var132 /* : Int */;
5285 long var133 /* : Int */;
5286 short int var134 /* : Bool */;
5287 short int var136 /* : Bool */;
5288 short int var137 /* : Bool */;
5289 static val* varonce138;
5290 val* var139 /* : String */;
5291 char* var140 /* : NativeString */;
5292 long var141 /* : Int */;
5293 val* var142 /* : String */;
5294 long var143 /* : Int */;
5295 val* var144 /* : nullable Object */;
5296 val* var145 /* : Array[MType] */;
5297 long var146 /* : Int */;
5298 val* var147 /* : nullable Object */;
5299 long var148 /* : Int */;
5300 val* var149 /* : nullable Object */;
5301 val* var150 /* : Array[MType] */;
5302 long var151 /* : Int */;
5303 val* var152 /* : nullable Object */;
5304 short int var153 /* : Bool */;
5305 short int var154 /* : Bool */;
5306 short int var155 /* : Bool */;
5307 short int var_156 /* var : Bool */;
5308 short int var157 /* : Bool */;
5309 static val* varonce158;
5310 val* var159 /* : String */;
5311 char* var160 /* : NativeString */;
5312 long var161 /* : Int */;
5313 val* var162 /* : String */;
5314 short int var163 /* : Bool */;
5315 val* var164 /* : MType */;
5316 short int var165 /* : Bool */;
5317 int cltype;
5318 int idtype;
5319 const char* var_class_name;
5320 static val* varonce166;
5321 val* var167 /* : String */;
5322 char* var168 /* : NativeString */;
5323 long var169 /* : Int */;
5324 val* var170 /* : String */;
5325 short int var171 /* : Bool */;
5326 val* var172 /* : nullable CallSite */;
5327 val* var_ikdef /* var ikdef: nullable CallSite */;
5328 val* var173 /* : null */;
5329 short int var174 /* : Bool */;
5330 static val* varonce175;
5331 val* var176 /* : String */;
5332 char* var177 /* : NativeString */;
5333 long var178 /* : Int */;
5334 val* var179 /* : String */;
5335 val* var180 /* : Array[Object] */;
5336 long var181 /* : Int */;
5337 val* var182 /* : NativeArray[Object] */;
5338 val* var183 /* : String */;
5339 val* var184 /* : MMethod */;
5340 static val* varonce185;
5341 val* var186 /* : String */;
5342 char* var187 /* : NativeString */;
5343 long var188 /* : Int */;
5344 val* var189 /* : String */;
5345 short int var190 /* : Bool */;
5346 val* var191 /* : nullable CallSite */;
5347 val* var_itemdef /* var itemdef: nullable CallSite */;
5348 val* var192 /* : null */;
5349 short int var193 /* : Bool */;
5350 static val* varonce194;
5351 val* var195 /* : String */;
5352 char* var196 /* : NativeString */;
5353 long var197 /* : Int */;
5354 val* var198 /* : String */;
5355 val* var199 /* : Array[Object] */;
5356 long var200 /* : Int */;
5357 val* var201 /* : NativeArray[Object] */;
5358 val* var202 /* : String */;
5359 val* var203 /* : MMethod */;
5360 static val* varonce204;
5361 val* var205 /* : String */;
5362 char* var206 /* : NativeString */;
5363 long var207 /* : Int */;
5364 val* var208 /* : String */;
5365 short int var209 /* : Bool */;
5366 val* var210 /* : nullable CallSite */;
5367 val* var_nextdef /* var nextdef: nullable CallSite */;
5368 val* var211 /* : null */;
5369 short int var212 /* : Bool */;
5370 static val* varonce213;
5371 val* var214 /* : String */;
5372 char* var215 /* : NativeString */;
5373 long var216 /* : Int */;
5374 val* var217 /* : String */;
5375 val* var218 /* : Array[Object] */;
5376 long var219 /* : Int */;
5377 val* var220 /* : NativeArray[Object] */;
5378 val* var221 /* : String */;
5379 val* var222 /* : MMethod */;
5380 static val* varonce223;
5381 val* var224 /* : String */;
5382 char* var225 /* : NativeString */;
5383 long var226 /* : Int */;
5384 val* var227 /* : String */;
5385 short int var228 /* : Bool */;
5386 val* var229 /* : nullable CallSite */;
5387 val* var_keydef /* var keydef: nullable CallSite */;
5388 val* var230 /* : null */;
5389 short int var231 /* : Bool */;
5390 static val* varonce232;
5391 val* var233 /* : String */;
5392 char* var234 /* : NativeString */;
5393 long var235 /* : Int */;
5394 val* var236 /* : String */;
5395 val* var237 /* : Array[Object] */;
5396 long var238 /* : Int */;
5397 val* var239 /* : NativeArray[Object] */;
5398 val* var240 /* : String */;
5399 val* var241 /* : MMethod */;
5400 var_v = p0;
5401 var_mtype = p1;
5402 if (varonce) {
5403 var = varonce;
5404 } else {
5405 var1 = "Object";
5406 var2 = 6;
5407 var3 = string__NativeString__to_s_with_length(var1, var2);
5408 var = var3;
5409 varonce = var;
5410 }
5411 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
5412 var_objcla = var4;
5413 var5 = NULL;
5414 if (var_objcla == NULL) {
5415 var6 = 1; /* is null */
5416 } else {
5417 var6 = 0; /* arg is null but recv is not */
5418 }
5419 if (var6){
5420 goto RET_LABEL;
5421 } else {
5422 }
5423 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5424 var_unsafe_type = var7;
5425 if (varonce8) {
5426 var9 = varonce8;
5427 } else {
5428 var10 = "iterator";
5429 var11 = 8;
5430 var12 = string__NativeString__to_s_with_length(var10, var11);
5431 var9 = var12;
5432 varonce8 = var9;
5433 }
5434 var13 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_unsafe_type, var9) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
5435 var14 = NULL;
5436 if (var13 == NULL) {
5437 var15 = 1; /* is null */
5438 } else {
5439 var15 = 0; /* arg is null but recv is not */
5440 }
5441 if (var15){
5442 if (varonce16) {
5443 var17 = varonce16;
5444 } else {
5445 var18 = "iterate";
5446 var19 = 7;
5447 var20 = string__NativeString__to_s_with_length(var18, var19);
5448 var17 = var20;
5449 varonce16 = var17;
5450 }
5451 var21 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_unsafe_type, var17) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
5452 var22 = NULL;
5453 if (var21 == NULL) {
5454 var23 = 1; /* is null */
5455 } else {
5456 var23 = 0; /* arg is null but recv is not */
5457 }
5458 if (var23){
5459 if (varonce24) {
5460 var25 = varonce24;
5461 } else {
5462 var26 = "Type Error: Expected method \'iterator\' in type ";
5463 var27 = 47;
5464 var28 = string__NativeString__to_s_with_length(var26, var27);
5465 var25 = var28;
5466 varonce24 = var25;
5467 }
5468 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
5469 { /* var29 = array_instance Array[Object] */
5470 var30 = 2;
5471 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
5472 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var25;
5473 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_mtype;
5474 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
5475 }
5476 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
5477 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
5478 } else {
5479 var33 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
5480 if (varonce34) {
5481 var35 = varonce34;
5482 } else {
5483 var36 = "NOT YET IMPLEMENTED: Do \'for\' on ";
5484 var37 = 33;
5485 var38 = string__NativeString__to_s_with_length(var36, var37);
5486 var35 = var38;
5487 varonce34 = var35;
5488 }
5489 var39 = NEW_array__Array(&type_array__Arraykernel__Object);
5490 { /* var39 = array_instance Array[Object] */
5491 var40 = 2;
5492 var41 = NEW_array__NativeArray(var40, &type_array__NativeArraykernel__Object);
5493 ((struct instance_array__NativeArray*)var41)->values[0] = (val*) var35;
5494 ((struct instance_array__NativeArray*)var41)->values[1] = (val*) var_mtype;
5495 ((void (*)(val*, val*, long))(var39->class->vft[COLOR_array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
5496 }
5497 var42 = ((val* (*)(val*))(var39->class->vft[COLOR_string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
5498 ((void (*)(val*, val*, val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var33, self, var42) /* error on <var33:ModelBuilder>*/;
5499 }
5500 goto RET_LABEL;
5501 } else {
5502 }
5503 if (varonce43) {
5504 var44 = varonce43;
5505 } else {
5506 var45 = "iterator";
5507 var46 = 8;
5508 var47 = string__NativeString__to_s_with_length(var45, var46);
5509 var44 = var47;
5510 varonce43 = var44;
5511 }
5512 var48 = 1;
5513 var49 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_mtype, var44, var48) /* get_method on <var_v:TypeVisitor>*/;
5514 var_itdef = var49;
5515 var50 = NULL;
5516 if (var_itdef == NULL) {
5517 var51 = 1; /* is null */
5518 } else {
5519 var51 = 0; /* arg is null but recv is not */
5520 }
5521 if (var51){
5522 if (varonce52) {
5523 var53 = varonce52;
5524 } else {
5525 var54 = "Type Error: Expected method \'iterator\' in type ";
5526 var55 = 47;
5527 var56 = string__NativeString__to_s_with_length(var54, var55);
5528 var53 = var56;
5529 varonce52 = var53;
5530 }
5531 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
5532 { /* var57 = array_instance Array[Object] */
5533 var58 = 2;
5534 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
5535 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var53;
5536 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var_mtype;
5537 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
5538 }
5539 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
5540 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var60) /* error on <var_v:TypeVisitor>*/;
5541 goto RET_LABEL;
5542 } else {
5543 }
5544 var61 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itdef) /* mproperty on <var_itdef:nullable CallSite(CallSite)>*/;
5545 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_iterator_61d]))(self, var61) /* method_iterator= on <self:AForExpr>*/;
5546 var62 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__msignature]))(var_itdef) /* msignature on <var_itdef:nullable CallSite(CallSite)>*/;
5547 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_model__MSignature__return_mtype]))(var62) /* return_mtype on <var62:MSignature>*/;
5548 var_ittype = var63;
5549 var64 = NULL;
5550 if (var_ittype == NULL) {
5551 var65 = 1; /* is null */
5552 } else {
5553 var65 = 0; /* arg is null but recv is not */
5554 }
5555 if (var65){
5556 if (varonce66) {
5557 var67 = varonce66;
5558 } else {
5559 var68 = "Type Error: Expected method \'iterator\' to return an Iterator or MapIterator type";
5560 var69 = 80;
5561 var70 = string__NativeString__to_s_with_length(var68, var69);
5562 var67 = var70;
5563 varonce66 = var67;
5564 }
5565 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var67) /* error on <var_v:TypeVisitor>*/;
5566 goto RET_LABEL;
5567 } else {
5568 }
5569 if (varonce71) {
5570 var72 = varonce71;
5571 } else {
5572 var73 = "Iterator";
5573 var74 = 8;
5574 var75 = string__NativeString__to_s_with_length(var73, var74);
5575 var72 = var75;
5576 varonce71 = var72;
5577 }
5578 var76 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mclass]))(var_v, self, var72) /* try_get_mclass on <var_v:TypeVisitor>*/;
5579 var_colit_cla = var76;
5580 if (varonce77) {
5581 var78 = varonce77;
5582 } else {
5583 var79 = "MapIterator";
5584 var80 = 11;
5585 var81 = string__NativeString__to_s_with_length(var79, var80);
5586 var78 = var81;
5587 varonce77 = var78;
5588 }
5589 var82 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mclass]))(var_v, self, var78) /* try_get_mclass on <var_v:TypeVisitor>*/;
5590 var_mapit_cla = var82;
5591 var83 = 0;
5592 var_is_col = var83;
5593 var84 = 0;
5594 var_is_map = var84;
5595 var86 = NULL;
5596 if (var_colit_cla == NULL) {
5597 var87 = 0; /* is null */
5598 } else {
5599 var87 = 1; /* arg is null and recv is not */
5600 }
5601 var_ = var87;
5602 if (var87){
5603 var88 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5604 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MType__as_nullable]))(var88) /* as_nullable on <var88:MClassType>*/;
5605 var90 = NEW_array__Array(&type_array__Arraymodel__MType);
5606 { /* var90 = array_instance Array[MType] */
5607 var91 = 1;
5608 var92 = NEW_array__NativeArray(var91, &type_array__NativeArraymodel__MType);
5609 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var89;
5610 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[MType]>*/;
5611 }
5612 var93 = ((val* (*)(val*, val*))(var_colit_cla->class->vft[COLOR_model__MClass__get_mtype]))(var_colit_cla, var90) /* get_mtype on <var_colit_cla:nullable MClass(MClass)>*/;
5613 var94 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var_ittype, var93) /* is_subtype on <var_v:TypeVisitor>*/;
5614 var85 = var94;
5615 } else {
5616 var85 = var_;
5617 }
5618 if (var85){
5619 var95 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5620 var96 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5621 var97 = ((val* (*)(val*, val*, val*, val*))(var_ittype->class->vft[COLOR_model__MType__supertype_to]))(var_ittype, var95, var96, var_colit_cla) /* supertype_to on <var_ittype:nullable MType(MType)>*/;
5622 var_coltype = var97;
5623 var98 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5624 var_variables = var98;
5625 if (var_variables == NULL) {
5626 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5627 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 868);
5628 show_backtrace(1);
5629 } else {
5630 var99 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable]>*/;
5631 }
5632 var100 = 1;
5633 { /* Inline kernel#Int#!= (var99,var100) */
5634 var103 = var99 == var100;
5635 var104 = !var103;
5636 var101 = var104;
5637 goto RET_LABEL102;
5638 RET_LABEL102:(void)0;
5639 }
5640 if (var101){
5641 if (varonce105) {
5642 var106 = varonce105;
5643 } else {
5644 var107 = "Type Error: Expected one variable";
5645 var108 = 33;
5646 var109 = string__NativeString__to_s_with_length(var107, var108);
5647 var106 = var109;
5648 varonce105 = var106;
5649 }
5650 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var106) /* error on <var_v:TypeVisitor>*/;
5651 } else {
5652 if (var_variables == NULL) {
5653 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5654 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 871);
5655 show_backtrace(1);
5656 } else {
5657 var110 = ((val* (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__first]))(var_variables) /* first on <var_variables:nullable Array[Variable]>*/;
5658 }
5659 var111 = ((val* (*)(val*))(var_coltype->class->vft[COLOR_model__MClassType__arguments]))(var_coltype) /* arguments on <var_coltype:MClassType>*/;
5660 var112 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_collection__Collection__first]))(var111) /* first on <var111:Array[MType]>*/;
5661 ((void (*)(val*, val*))(var110->class->vft[COLOR_typing__Variable__declared_type_61d]))(var110, var112) /* declared_type= on <var110:nullable Object(Variable)>*/;
5662 }
5663 var113 = 1;
5664 var_is_col = var113;
5665 } else {
5666 }
5667 var115 = NULL;
5668 if (var_mapit_cla == NULL) {
5669 var116 = 0; /* is null */
5670 } else {
5671 var116 = 1; /* arg is null and recv is not */
5672 }
5673 var_117 = var116;
5674 if (var116){
5675 var118 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5676 var119 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5677 var120 = ((val* (*)(val*))(var119->class->vft[COLOR_model__MType__as_nullable]))(var119) /* as_nullable on <var119:MClassType>*/;
5678 var121 = NEW_array__Array(&type_array__Arraymodel__MType);
5679 { /* var121 = array_instance Array[MType] */
5680 var122 = 2;
5681 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraymodel__MType);
5682 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var118;
5683 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var120;
5684 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[MType]>*/;
5685 }
5686 var124 = ((val* (*)(val*, val*))(var_mapit_cla->class->vft[COLOR_model__MClass__get_mtype]))(var_mapit_cla, var121) /* get_mtype on <var_mapit_cla:nullable MClass(MClass)>*/;
5687 var125 = ((short int (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(var_v, var_ittype, var124) /* is_subtype on <var_v:TypeVisitor>*/;
5688 var114 = var125;
5689 } else {
5690 var114 = var_117;
5691 }
5692 if (var114){
5693 var126 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5694 var127 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5695 var128 = ((val* (*)(val*, val*, val*, val*))(var_ittype->class->vft[COLOR_model__MType__supertype_to]))(var_ittype, var126, var127, var_mapit_cla) /* supertype_to on <var_ittype:nullable MType(MType)>*/;
5696 var_coltype129 = var128;
5697 var130 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5698 var_variables131 = var130;
5699 if (var_variables131 == NULL) {
5700 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5701 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 880);
5702 show_backtrace(1);
5703 } else {
5704 var132 = ((long (*)(val*))(var_variables131->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables131) /* length on <var_variables131:nullable Array[Variable]>*/;
5705 }
5706 var133 = 2;
5707 { /* Inline kernel#Int#!= (var132,var133) */
5708 var136 = var132 == var133;
5709 var137 = !var136;
5710 var134 = var137;
5711 goto RET_LABEL135;
5712 RET_LABEL135:(void)0;
5713 }
5714 if (var134){
5715 if (varonce138) {
5716 var139 = varonce138;
5717 } else {
5718 var140 = "Type Error: Expected two variables";
5719 var141 = 34;
5720 var142 = string__NativeString__to_s_with_length(var140, var141);
5721 var139 = var142;
5722 varonce138 = var139;
5723 }
5724 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var139) /* error on <var_v:TypeVisitor>*/;
5725 } else {
5726 var143 = 0;
5727 if (var_variables131 == NULL) {
5728 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5729 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 883);
5730 show_backtrace(1);
5731 } else {
5732 var144 = ((val* (*)(val*, long))(var_variables131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables131, var143) /* [] on <var_variables131:nullable Array[Variable]>*/;
5733 }
5734 var145 = ((val* (*)(val*))(var_coltype129->class->vft[COLOR_model__MClassType__arguments]))(var_coltype129) /* arguments on <var_coltype129:MClassType>*/;
5735 var146 = 0;
5736 var147 = ((val* (*)(val*, long))(var145->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var145, var146) /* [] on <var145:Array[MType]>*/;
5737 ((void (*)(val*, val*))(var144->class->vft[COLOR_typing__Variable__declared_type_61d]))(var144, var147) /* declared_type= on <var144:nullable Object(Variable)>*/;
5738 var148 = 1;
5739 if (var_variables131 == NULL) {
5740 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5741 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 884);
5742 show_backtrace(1);
5743 } else {
5744 var149 = ((val* (*)(val*, long))(var_variables131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables131, var148) /* [] on <var_variables131:nullable Array[Variable]>*/;
5745 }
5746 var150 = ((val* (*)(val*))(var_coltype129->class->vft[COLOR_model__MClassType__arguments]))(var_coltype129) /* arguments on <var_coltype129:MClassType>*/;
5747 var151 = 1;
5748 var152 = ((val* (*)(val*, long))(var150->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var150, var151) /* [] on <var150:Array[MType]>*/;
5749 ((void (*)(val*, val*))(var149->class->vft[COLOR_typing__Variable__declared_type_61d]))(var149, var152) /* declared_type= on <var149:nullable Object(Variable)>*/;
5750 }
5751 var153 = 1;
5752 var_is_map = var153;
5753 } else {
5754 }
5755 var155 = !var_is_col;
5756 var_156 = var155;
5757 if (var155){
5758 var157 = !var_is_map;
5759 var154 = var157;
5760 } else {
5761 var154 = var_156;
5762 }
5763 if (var154){
5764 if (varonce158) {
5765 var159 = varonce158;
5766 } else {
5767 var160 = "Type Error: Expected method \'iterator\' to return an Iterator of MapIterator type";
5768 var161 = 80;
5769 var162 = string__NativeString__to_s_with_length(var160, var161);
5770 var159 = var162;
5771 varonce158 = var159;
5772 }
5773 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var159) /* error on <var_v:TypeVisitor>*/;
5774 goto RET_LABEL;
5775 } else {
5776 }
5777 var163 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5778 if (var163){
5779 var164 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5780 var_mtype = var164;
5781 } else {
5782 }
5783 /* <var_mtype:MType> isa MClassType */
5784 cltype = type_model__MClassType.color;
5785 idtype = type_model__MClassType.id;
5786 if(cltype >= var_mtype->type->table_size) {
5787 var165 = 0;
5788 } else {
5789 var165 = var_mtype->type->type_table[cltype] == idtype;
5790 }
5791 if (!var165) {
5792 var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name;
5793 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5794 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 897);
5795 show_backtrace(1);
5796 }
5797 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__coltype_61d]))(self, var_mtype) /* coltype= on <self:AForExpr>*/;
5798 if (varonce166) {
5799 var167 = varonce166;
5800 } else {
5801 var168 = "is_ok";
5802 var169 = 5;
5803 var170 = string__NativeString__to_s_with_length(var168, var169);
5804 var167 = var170;
5805 varonce166 = var167;
5806 }
5807 var171 = 0;
5808 var172 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var167, var171) /* get_method on <var_v:TypeVisitor>*/;
5809 var_ikdef = var172;
5810 var173 = NULL;
5811 if (var_ikdef == NULL) {
5812 var174 = 1; /* is null */
5813 } else {
5814 var174 = 0; /* arg is null but recv is not */
5815 }
5816 if (var174){
5817 if (varonce175) {
5818 var176 = varonce175;
5819 } else {
5820 var177 = "Type Error: Expected method \'is_ok\' in Iterator type ";
5821 var178 = 53;
5822 var179 = string__NativeString__to_s_with_length(var177, var178);
5823 var176 = var179;
5824 varonce175 = var176;
5825 }
5826 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
5827 { /* var180 = array_instance Array[Object] */
5828 var181 = 2;
5829 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
5830 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var176;
5831 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var_ittype;
5832 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
5833 }
5834 var183 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
5835 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var183) /* error on <var_v:TypeVisitor>*/;
5836 goto RET_LABEL;
5837 } else {
5838 }
5839 var184 = ((val* (*)(val*))(var_ikdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_ikdef) /* mproperty on <var_ikdef:nullable CallSite(CallSite)>*/;
5840 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_is_ok_61d]))(self, var184) /* method_is_ok= on <self:AForExpr>*/;
5841 if (varonce185) {
5842 var186 = varonce185;
5843 } else {
5844 var187 = "item";
5845 var188 = 4;
5846 var189 = string__NativeString__to_s_with_length(var187, var188);
5847 var186 = var189;
5848 varonce185 = var186;
5849 }
5850 var190 = 0;
5851 var191 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var186, var190) /* get_method on <var_v:TypeVisitor>*/;
5852 var_itemdef = var191;
5853 var192 = NULL;
5854 if (var_itemdef == NULL) {
5855 var193 = 1; /* is null */
5856 } else {
5857 var193 = 0; /* arg is null but recv is not */
5858 }
5859 if (var193){
5860 if (varonce194) {
5861 var195 = varonce194;
5862 } else {
5863 var196 = "Type Error: Expected method \'item\' in Iterator type ";
5864 var197 = 52;
5865 var198 = string__NativeString__to_s_with_length(var196, var197);
5866 var195 = var198;
5867 varonce194 = var195;
5868 }
5869 var199 = NEW_array__Array(&type_array__Arraykernel__Object);
5870 { /* var199 = array_instance Array[Object] */
5871 var200 = 2;
5872 var201 = NEW_array__NativeArray(var200, &type_array__NativeArraykernel__Object);
5873 ((struct instance_array__NativeArray*)var201)->values[0] = (val*) var195;
5874 ((struct instance_array__NativeArray*)var201)->values[1] = (val*) var_ittype;
5875 ((void (*)(val*, val*, long))(var199->class->vft[COLOR_array__Array__with_native]))(var199, var201, var200) /* with_native on <var199:Array[Object]>*/;
5876 }
5877 var202 = ((val* (*)(val*))(var199->class->vft[COLOR_string__Object__to_s]))(var199) /* to_s on <var199:Array[Object]>*/;
5878 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var202) /* error on <var_v:TypeVisitor>*/;
5879 goto RET_LABEL;
5880 } else {
5881 }
5882 var203 = ((val* (*)(val*))(var_itemdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itemdef) /* mproperty on <var_itemdef:nullable CallSite(CallSite)>*/;
5883 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_item_61d]))(self, var203) /* method_item= on <self:AForExpr>*/;
5884 if (varonce204) {
5885 var205 = varonce204;
5886 } else {
5887 var206 = "next";
5888 var207 = 4;
5889 var208 = string__NativeString__to_s_with_length(var206, var207);
5890 var205 = var208;
5891 varonce204 = var205;
5892 }
5893 var209 = 0;
5894 var210 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var205, var209) /* get_method on <var_v:TypeVisitor>*/;
5895 var_nextdef = var210;
5896 var211 = NULL;
5897 if (var_nextdef == NULL) {
5898 var212 = 1; /* is null */
5899 } else {
5900 var212 = 0; /* arg is null but recv is not */
5901 }
5902 if (var212){
5903 if (varonce213) {
5904 var214 = varonce213;
5905 } else {
5906 var215 = "Type Error: Expected method \'next\' in Iterator type ";
5907 var216 = 52;
5908 var217 = string__NativeString__to_s_with_length(var215, var216);
5909 var214 = var217;
5910 varonce213 = var214;
5911 }
5912 var218 = NEW_array__Array(&type_array__Arraykernel__Object);
5913 { /* var218 = array_instance Array[Object] */
5914 var219 = 2;
5915 var220 = NEW_array__NativeArray(var219, &type_array__NativeArraykernel__Object);
5916 ((struct instance_array__NativeArray*)var220)->values[0] = (val*) var214;
5917 ((struct instance_array__NativeArray*)var220)->values[1] = (val*) var_ittype;
5918 ((void (*)(val*, val*, long))(var218->class->vft[COLOR_array__Array__with_native]))(var218, var220, var219) /* with_native on <var218:Array[Object]>*/;
5919 }
5920 var221 = ((val* (*)(val*))(var218->class->vft[COLOR_string__Object__to_s]))(var218) /* to_s on <var218:Array[Object]>*/;
5921 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var221) /* error on <var_v:TypeVisitor>*/;
5922 goto RET_LABEL;
5923 } else {
5924 }
5925 var222 = ((val* (*)(val*))(var_nextdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_nextdef) /* mproperty on <var_nextdef:nullable CallSite(CallSite)>*/;
5926 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_next_61d]))(self, var222) /* method_next= on <self:AForExpr>*/;
5927 if (var_is_map){
5928 if (varonce223) {
5929 var224 = varonce223;
5930 } else {
5931 var225 = "key";
5932 var226 = 3;
5933 var227 = string__NativeString__to_s_with_length(var225, var226);
5934 var224 = var227;
5935 varonce223 = var224;
5936 }
5937 var228 = 0;
5938 var229 = ((val* (*)(val*, val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__get_method]))(var_v, self, var_ittype, var224, var228) /* get_method on <var_v:TypeVisitor>*/;
5939 var_keydef = var229;
5940 var230 = NULL;
5941 if (var_keydef == NULL) {
5942 var231 = 1; /* is null */
5943 } else {
5944 var231 = 0; /* arg is null but recv is not */
5945 }
5946 if (var231){
5947 if (varonce232) {
5948 var233 = varonce232;
5949 } else {
5950 var234 = "Type Error: Expected method \'key\' in Iterator type ";
5951 var235 = 51;
5952 var236 = string__NativeString__to_s_with_length(var234, var235);
5953 var233 = var236;
5954 varonce232 = var233;
5955 }
5956 var237 = NEW_array__Array(&type_array__Arraykernel__Object);
5957 { /* var237 = array_instance Array[Object] */
5958 var238 = 2;
5959 var239 = NEW_array__NativeArray(var238, &type_array__NativeArraykernel__Object);
5960 ((struct instance_array__NativeArray*)var239)->values[0] = (val*) var233;
5961 ((struct instance_array__NativeArray*)var239)->values[1] = (val*) var_ittype;
5962 ((void (*)(val*, val*, long))(var237->class->vft[COLOR_array__Array__with_native]))(var237, var239, var238) /* with_native on <var237:Array[Object]>*/;
5963 }
5964 var240 = ((val* (*)(val*))(var237->class->vft[COLOR_string__Object__to_s]))(var237) /* to_s on <var237:Array[Object]>*/;
5965 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var240) /* error on <var_v:TypeVisitor>*/;
5966 goto RET_LABEL;
5967 } else {
5968 }
5969 var241 = ((val* (*)(val*))(var_keydef->class->vft[COLOR_typing__CallSite__mproperty]))(var_keydef) /* mproperty on <var_keydef:nullable CallSite(CallSite)>*/;
5970 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_key_61d]))(self, var241) /* method_key= on <self:AForExpr>*/;
5971 } else {
5972 }
5973 RET_LABEL:;
5974 }
5975 /* method typing#AForExpr#do_type_iterator for (self: Object, TypeVisitor, MType) */
5976 void VIRTUAL_typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
5977 typing__AForExpr__do_type_iterator(self, p0, p1);
5978 RET_LABEL:;
5979 }
5980 /* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */
5981 void typing__AForExpr__accept_typing(val* self, val* p0) {
5982 val* var_v /* var v: TypeVisitor */;
5983 val* var /* : AExpr */;
5984 val* var1 /* : nullable MType */;
5985 val* var_mtype /* var mtype: nullable MType */;
5986 val* var2 /* : null */;
5987 short int var3 /* : Bool */;
5988 val* var4 /* : nullable AExpr */;
5989 short int var5 /* : Bool */;
5990 var_v = p0;
5991 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
5992 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
5993 var_mtype = var1;
5994 var2 = NULL;
5995 if (var_mtype == NULL) {
5996 var3 = 1; /* is null */
5997 } else {
5998 var3 = 0; /* arg is null but recv is not */
5999 }
6000 if (var3){
6001 goto RET_LABEL;
6002 } else {
6003 }
6004 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__AForExpr__do_type_iterator]))(self, var_v, var_mtype) /* do_type_iterator on <self:AForExpr>*/;
6005 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
6006 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var4) /* visit_stmt on <var_v:TypeVisitor>*/;
6007 var5 = 1;
6008 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var5) /* is_typed= on <self:AForExpr>*/;
6009 RET_LABEL:;
6010 }
6011 /* method typing#AForExpr#accept_typing for (self: Object, TypeVisitor) */
6012 void VIRTUAL_typing__AForExpr__accept_typing(val* self, val* p0) {
6013 typing__AForExpr__accept_typing(self, p0);
6014 RET_LABEL:;
6015 }
6016 /* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */
6017 void typing__AAssertExpr__accept_typing(val* self, val* p0) {
6018 val* var_v /* var v: TypeVisitor */;
6019 val* var /* : AExpr */;
6020 val* var1 /* : nullable MType */;
6021 val* var2 /* : nullable AExpr */;
6022 short int var3 /* : Bool */;
6023 var_v = p0;
6024 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on <self:AAssertExpr>*/;
6025 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6026 var1;
6027 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on <self:AAssertExpr>*/;
6028 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
6029 var3 = 1;
6030 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAssertExpr>*/;
6031 RET_LABEL:;
6032 }
6033 /* method typing#AAssertExpr#accept_typing for (self: Object, TypeVisitor) */
6034 void VIRTUAL_typing__AAssertExpr__accept_typing(val* self, val* p0) {
6035 typing__AAssertExpr__accept_typing(self, p0);
6036 RET_LABEL:;
6037 }
6038 /* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */
6039 void typing__AOrExpr__accept_typing(val* self, val* p0) {
6040 val* var_v /* var v: TypeVisitor */;
6041 val* var /* : AExpr */;
6042 val* var1 /* : nullable MType */;
6043 val* var2 /* : AExpr */;
6044 val* var3 /* : nullable MType */;
6045 val* var4 /* : nullable MType */;
6046 var_v = p0;
6047 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
6048 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6049 var1;
6050 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
6051 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6052 var3;
6053 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6054 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AOrExpr>*/;
6055 RET_LABEL:;
6056 }
6057 /* method typing#AOrExpr#accept_typing for (self: Object, TypeVisitor) */
6058 void VIRTUAL_typing__AOrExpr__accept_typing(val* self, val* p0) {
6059 typing__AOrExpr__accept_typing(self, p0);
6060 RET_LABEL:;
6061 }
6062 /* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */
6063 void typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6064 val* var_v /* var v: TypeVisitor */;
6065 val* var /* : AExpr */;
6066 val* var1 /* : nullable MType */;
6067 val* var2 /* : AExpr */;
6068 val* var3 /* : nullable MType */;
6069 val* var4 /* : nullable MType */;
6070 var_v = p0;
6071 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on <self:AImpliesExpr>*/;
6072 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6073 var1;
6074 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on <self:AImpliesExpr>*/;
6075 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6076 var3;
6077 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6078 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AImpliesExpr>*/;
6079 RET_LABEL:;
6080 }
6081 /* method typing#AImpliesExpr#accept_typing for (self: Object, TypeVisitor) */
6082 void VIRTUAL_typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6083 typing__AImpliesExpr__accept_typing(self, p0);
6084 RET_LABEL:;
6085 }
6086 /* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */
6087 void typing__AAndExpr__accept_typing(val* self, val* p0) {
6088 val* var_v /* var v: TypeVisitor */;
6089 val* var /* : AExpr */;
6090 val* var1 /* : nullable MType */;
6091 val* var2 /* : AExpr */;
6092 val* var3 /* : nullable MType */;
6093 val* var4 /* : nullable MType */;
6094 var_v = p0;
6095 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
6096 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6097 var1;
6098 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
6099 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6100 var3;
6101 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6102 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AAndExpr>*/;
6103 RET_LABEL:;
6104 }
6105 /* method typing#AAndExpr#accept_typing for (self: Object, TypeVisitor) */
6106 void VIRTUAL_typing__AAndExpr__accept_typing(val* self, val* p0) {
6107 typing__AAndExpr__accept_typing(self, p0);
6108 RET_LABEL:;
6109 }
6110 /* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */
6111 void typing__ANotExpr__accept_typing(val* self, val* p0) {
6112 val* var_v /* var v: TypeVisitor */;
6113 val* var /* : AExpr */;
6114 val* var1 /* : nullable MType */;
6115 val* var2 /* : nullable MType */;
6116 var_v = p0;
6117 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on <self:ANotExpr>*/;
6118 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6119 var1;
6120 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6121 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANotExpr>*/;
6122 RET_LABEL:;
6123 }
6124 /* method typing#ANotExpr#accept_typing for (self: Object, TypeVisitor) */
6125 void VIRTUAL_typing__ANotExpr__accept_typing(val* self, val* p0) {
6126 typing__ANotExpr__accept_typing(self, p0);
6127 RET_LABEL:;
6128 }
6129 /* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */
6130 void typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6131 val* var_v /* var v: TypeVisitor */;
6132 val* var /* : AExpr */;
6133 val* var1 /* : nullable MType */;
6134 val* var_t1 /* var t1: nullable MType */;
6135 val* var2 /* : AExpr */;
6136 val* var3 /* : nullable MType */;
6137 val* var_t2 /* var t2: nullable MType */;
6138 short int var4 /* : Bool */;
6139 val* var5 /* : null */;
6140 short int var6 /* : Bool */;
6141 short int var_ /* var : Bool */;
6142 val* var7 /* : null */;
6143 short int var8 /* : Bool */;
6144 short int var9 /* : Bool */;
6145 int cltype;
6146 int idtype;
6147 val* var10 /* : MType */;
6148 val* var11 /* : Array[MType] */;
6149 long var12 /* : Int */;
6150 val* var13 /* : NativeArray[MType] */;
6151 val* var14 /* : nullable MType */;
6152 val* var_t /* var t: nullable MType */;
6153 val* var15 /* : null */;
6154 short int var16 /* : Bool */;
6155 val* var17 /* : MModule */;
6156 val* var18 /* : MClassType */;
6157 short int var19 /* : Bool */;
6158 int cltype20;
6159 int idtype21;
6160 val* var22 /* : MType */;
6161 var_v = p0;
6162 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr]))(self) /* n_expr on <self:AOrElseExpr>*/;
6163 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6164 var_t1 = var1;
6165 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr2]))(self) /* n_expr2 on <self:AOrElseExpr>*/;
6166 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
6167 var_t2 = var3;
6168 var5 = NULL;
6169 if (var_t1 == NULL) {
6170 var6 = 1; /* is null */
6171 } else {
6172 var6 = 0; /* arg is null but recv is not */
6173 }
6174 var_ = var6;
6175 if (var6){
6176 var4 = var_;
6177 } else {
6178 var7 = NULL;
6179 if (var_t2 == NULL) {
6180 var8 = 1; /* is null */
6181 } else {
6182 var8 = 0; /* arg is null but recv is not */
6183 }
6184 var4 = var8;
6185 }
6186 if (var4){
6187 goto RET_LABEL;
6188 } else {
6189 }
6190 /* <var_t1:nullable MType(MType)> isa MNullableType */
6191 cltype = type_model__MNullableType.color;
6192 idtype = type_model__MNullableType.id;
6193 if(cltype >= var_t1->type->table_size) {
6194 var9 = 0;
6195 } else {
6196 var9 = var_t1->type->type_table[cltype] == idtype;
6197 }
6198 if (var9){
6199 var10 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:nullable MType(MNullableType)>*/;
6200 var_t1 = var10;
6201 } else {
6202 }
6203 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
6204 { /* var11 = array_instance Array[MType] */
6205 var12 = 2;
6206 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
6207 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
6208 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
6209 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
6210 }
6211 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
6212 var_t = var14;
6213 var15 = NULL;
6214 if (var_t == NULL) {
6215 var16 = 1; /* is null */
6216 } else {
6217 var16 = 0; /* arg is null but recv is not */
6218 }
6219 if (var16){
6220 var17 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6221 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MModule__object_type]))(var17) /* object_type on <var17:MModule>*/;
6222 var_t = var18;
6223 /* <var_t2:nullable MType(MType)> isa MNullableType */
6224 cltype20 = type_model__MNullableType.color;
6225 idtype21 = type_model__MNullableType.id;
6226 if(cltype20 >= var_t2->type->table_size) {
6227 var19 = 0;
6228 } else {
6229 var19 = var_t2->type->type_table[cltype20] == idtype21;
6230 }
6231 if (var19){
6232 var22 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MType__as_nullable]))(var_t) /* as_nullable on <var_t:nullable MType(MClassType)>*/;
6233 var_t = var22;
6234 } else {
6235 }
6236 } else {
6237 }
6238 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AOrElseExpr>*/;
6239 RET_LABEL:;
6240 }
6241 /* method typing#AOrElseExpr#accept_typing for (self: Object, TypeVisitor) */
6242 void VIRTUAL_typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6243 typing__AOrElseExpr__accept_typing(self, p0);
6244 RET_LABEL:;
6245 }
6246 /* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */
6247 void typing__ATrueExpr__accept_typing(val* self, val* p0) {
6248 val* var_v /* var v: TypeVisitor */;
6249 val* var /* : nullable MType */;
6250 var_v = p0;
6251 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6252 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:ATrueExpr>*/;
6253 RET_LABEL:;
6254 }
6255 /* method typing#ATrueExpr#accept_typing for (self: Object, TypeVisitor) */
6256 void VIRTUAL_typing__ATrueExpr__accept_typing(val* self, val* p0) {
6257 typing__ATrueExpr__accept_typing(self, p0);
6258 RET_LABEL:;
6259 }
6260 /* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */
6261 void typing__AFalseExpr__accept_typing(val* self, val* p0) {
6262 val* var_v /* var v: TypeVisitor */;
6263 val* var /* : nullable MType */;
6264 var_v = p0;
6265 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6266 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AFalseExpr>*/;
6267 RET_LABEL:;
6268 }
6269 /* method typing#AFalseExpr#accept_typing for (self: Object, TypeVisitor) */
6270 void VIRTUAL_typing__AFalseExpr__accept_typing(val* self, val* p0) {
6271 typing__AFalseExpr__accept_typing(self, p0);
6272 RET_LABEL:;
6273 }
6274 /* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */
6275 void typing__AIntExpr__accept_typing(val* self, val* p0) {
6276 val* var_v /* var v: TypeVisitor */;
6277 static val* varonce;
6278 val* var /* : String */;
6279 char* var1 /* : NativeString */;
6280 long var2 /* : Int */;
6281 val* var3 /* : String */;
6282 val* var4 /* : nullable MClass */;
6283 val* var_mclass /* var mclass: nullable MClass */;
6284 val* var5 /* : null */;
6285 short int var6 /* : Bool */;
6286 val* var7 /* : MClassType */;
6287 var_v = p0;
6288 if (varonce) {
6289 var = varonce;
6290 } else {
6291 var1 = "Int";
6292 var2 = 3;
6293 var3 = string__NativeString__to_s_with_length(var1, var2);
6294 var = var3;
6295 varonce = var;
6296 }
6297 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6298 var_mclass = var4;
6299 var5 = NULL;
6300 if (var_mclass == NULL) {
6301 var6 = 1; /* is null */
6302 } else {
6303 var6 = 0; /* arg is null but recv is not */
6304 }
6305 if (var6){
6306 goto RET_LABEL;
6307 } else {
6308 }
6309 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6310 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AIntExpr>*/;
6311 RET_LABEL:;
6312 }
6313 /* method typing#AIntExpr#accept_typing for (self: Object, TypeVisitor) */
6314 void VIRTUAL_typing__AIntExpr__accept_typing(val* self, val* p0) {
6315 typing__AIntExpr__accept_typing(self, p0);
6316 RET_LABEL:;
6317 }
6318 /* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */
6319 void typing__AFloatExpr__accept_typing(val* self, val* p0) {
6320 val* var_v /* var v: TypeVisitor */;
6321 static val* varonce;
6322 val* var /* : String */;
6323 char* var1 /* : NativeString */;
6324 long var2 /* : Int */;
6325 val* var3 /* : String */;
6326 val* var4 /* : nullable MClass */;
6327 val* var_mclass /* var mclass: nullable MClass */;
6328 val* var5 /* : null */;
6329 short int var6 /* : Bool */;
6330 val* var7 /* : MClassType */;
6331 var_v = p0;
6332 if (varonce) {
6333 var = varonce;
6334 } else {
6335 var1 = "Float";
6336 var2 = 5;
6337 var3 = string__NativeString__to_s_with_length(var1, var2);
6338 var = var3;
6339 varonce = var;
6340 }
6341 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6342 var_mclass = var4;
6343 var5 = NULL;
6344 if (var_mclass == NULL) {
6345 var6 = 1; /* is null */
6346 } else {
6347 var6 = 0; /* arg is null but recv is not */
6348 }
6349 if (var6){
6350 goto RET_LABEL;
6351 } else {
6352 }
6353 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6354 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AFloatExpr>*/;
6355 RET_LABEL:;
6356 }
6357 /* method typing#AFloatExpr#accept_typing for (self: Object, TypeVisitor) */
6358 void VIRTUAL_typing__AFloatExpr__accept_typing(val* self, val* p0) {
6359 typing__AFloatExpr__accept_typing(self, p0);
6360 RET_LABEL:;
6361 }
6362 /* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */
6363 void typing__ACharExpr__accept_typing(val* self, val* p0) {
6364 val* var_v /* var v: TypeVisitor */;
6365 static val* varonce;
6366 val* var /* : String */;
6367 char* var1 /* : NativeString */;
6368 long var2 /* : Int */;
6369 val* var3 /* : String */;
6370 val* var4 /* : nullable MClass */;
6371 val* var_mclass /* var mclass: nullable MClass */;
6372 val* var5 /* : null */;
6373 short int var6 /* : Bool */;
6374 val* var7 /* : MClassType */;
6375 var_v = p0;
6376 if (varonce) {
6377 var = varonce;
6378 } else {
6379 var1 = "Char";
6380 var2 = 4;
6381 var3 = string__NativeString__to_s_with_length(var1, var2);
6382 var = var3;
6383 varonce = var;
6384 }
6385 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6386 var_mclass = var4;
6387 var5 = NULL;
6388 if (var_mclass == NULL) {
6389 var6 = 1; /* is null */
6390 } else {
6391 var6 = 0; /* arg is null but recv is not */
6392 }
6393 if (var6){
6394 goto RET_LABEL;
6395 } else {
6396 }
6397 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6398 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ACharExpr>*/;
6399 RET_LABEL:;
6400 }
6401 /* method typing#ACharExpr#accept_typing for (self: Object, TypeVisitor) */
6402 void VIRTUAL_typing__ACharExpr__accept_typing(val* self, val* p0) {
6403 typing__ACharExpr__accept_typing(self, p0);
6404 RET_LABEL:;
6405 }
6406 /* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */
6407 void typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6408 val* var_v /* var v: TypeVisitor */;
6409 static val* varonce;
6410 val* var /* : String */;
6411 char* var1 /* : NativeString */;
6412 long var2 /* : Int */;
6413 val* var3 /* : String */;
6414 val* var4 /* : nullable MClass */;
6415 val* var_mclass /* var mclass: nullable MClass */;
6416 val* var5 /* : null */;
6417 short int var6 /* : Bool */;
6418 val* var7 /* : MClassType */;
6419 var_v = p0;
6420 if (varonce) {
6421 var = varonce;
6422 } else {
6423 var1 = "String";
6424 var2 = 6;
6425 var3 = string__NativeString__to_s_with_length(var1, var2);
6426 var = var3;
6427 varonce = var;
6428 }
6429 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6430 var_mclass = var4;
6431 var5 = NULL;
6432 if (var_mclass == NULL) {
6433 var6 = 1; /* is null */
6434 } else {
6435 var6 = 0; /* arg is null but recv is not */
6436 }
6437 if (var6){
6438 goto RET_LABEL;
6439 } else {
6440 }
6441 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6442 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AStringFormExpr>*/;
6443 RET_LABEL:;
6444 }
6445 /* method typing#AStringFormExpr#accept_typing for (self: Object, TypeVisitor) */
6446 void VIRTUAL_typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6447 typing__AStringFormExpr__accept_typing(self, p0);
6448 RET_LABEL:;
6449 }
6450 /* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */
6451 void typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6452 val* var_v /* var v: TypeVisitor */;
6453 static val* varonce;
6454 val* var /* : String */;
6455 char* var1 /* : NativeString */;
6456 long var2 /* : Int */;
6457 val* var3 /* : String */;
6458 val* var4 /* : nullable MClass */;
6459 val* var_mclass /* var mclass: nullable MClass */;
6460 val* var5 /* : null */;
6461 short int var6 /* : Bool */;
6462 val* var7 /* : MClassType */;
6463 val* var8 /* : ANodes[AExpr] */;
6464 val* var9 /* : Iterator[nullable Object] */;
6465 short int var10 /* : Bool */;
6466 val* var11 /* : nullable Object */;
6467 val* var_nexpr /* var nexpr: AExpr */;
6468 val* var12 /* : nullable MType */;
6469 val* var_t /* var t: nullable MType */;
6470 var_v = p0;
6471 if (varonce) {
6472 var = varonce;
6473 } else {
6474 var1 = "String";
6475 var2 = 6;
6476 var3 = string__NativeString__to_s_with_length(var1, var2);
6477 var = var3;
6478 varonce = var;
6479 }
6480 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6481 var_mclass = var4;
6482 var5 = NULL;
6483 if (var_mclass == NULL) {
6484 var6 = 1; /* is null */
6485 } else {
6486 var6 = 0; /* arg is null but recv is not */
6487 }
6488 if (var6){
6489 goto RET_LABEL;
6490 } else {
6491 }
6492 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6493 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ASuperstringExpr>*/;
6494 var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
6495 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:ANodes[AExpr]>*/;
6496 for(;;) {
6497 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
6498 if(!var10) break;
6499 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
6500 var_nexpr = var11;
6501 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
6502 var_t = var12;
6503 CONTINUE_label: (void)0;
6504 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
6505 }
6506 BREAK_label: (void)0;
6507 RET_LABEL:;
6508 }
6509 /* method typing#ASuperstringExpr#accept_typing for (self: Object, TypeVisitor) */
6510 void VIRTUAL_typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6511 typing__ASuperstringExpr__accept_typing(self, p0);
6512 RET_LABEL:;
6513 }
6514 /* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */
6515 void typing__AArrayExpr__accept_typing(val* self, val* p0) {
6516 val* var_v /* var v: TypeVisitor */;
6517 val* var /* : Array[nullable MType] */;
6518 val* var_mtypes /* var mtypes: Array[nullable MType] */;
6519 val* var1 /* : AExprs */;
6520 val* var2 /* : ANodes[AExpr] */;
6521 val* var3 /* : Iterator[nullable Object] */;
6522 short int var4 /* : Bool */;
6523 val* var5 /* : nullable Object */;
6524 val* var_e /* var e: AExpr */;
6525 val* var6 /* : nullable MType */;
6526 val* var_t /* var t: nullable MType */;
6527 val* var7 /* : null */;
6528 short int var8 /* : Bool */;
6529 val* var9 /* : nullable MType */;
6530 val* var_mtype /* var mtype: nullable MType */;
6531 val* var10 /* : null */;
6532 short int var11 /* : Bool */;
6533 static val* varonce;
6534 val* var12 /* : String */;
6535 char* var13 /* : NativeString */;
6536 long var14 /* : Int */;
6537 val* var15 /* : String */;
6538 static val* varonce16;
6539 val* var17 /* : String */;
6540 char* var18 /* : NativeString */;
6541 long var19 /* : Int */;
6542 val* var20 /* : String */;
6543 val* var21 /* : String */;
6544 val* var22 /* : Array[Object] */;
6545 long var23 /* : Int */;
6546 val* var24 /* : NativeArray[Object] */;
6547 val* var25 /* : String */;
6548 static val* varonce26;
6549 val* var27 /* : String */;
6550 char* var28 /* : NativeString */;
6551 long var29 /* : Int */;
6552 val* var30 /* : String */;
6553 val* var31 /* : nullable MClass */;
6554 val* var_mclass /* var mclass: nullable MClass */;
6555 val* var32 /* : null */;
6556 short int var33 /* : Bool */;
6557 val* var34 /* : Array[MType] */;
6558 long var35 /* : Int */;
6559 val* var36 /* : NativeArray[MType] */;
6560 val* var37 /* : MClassType */;
6561 var_v = p0;
6562 var = NEW_array__Array(&type_array__Arraynullable_model__MType);
6563 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[nullable MType]>*/;
6564 var_mtypes = var;
6565 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
6566 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var1) /* n_exprs on <var1:AExprs>*/;
6567 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:ANodes[AExpr]>*/;
6568 for(;;) {
6569 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6570 if(!var4) break;
6571 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
6572 var_e = var5;
6573 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_e) /* visit_expr on <var_v:TypeVisitor>*/;
6574 var_t = var6;
6575 var7 = NULL;
6576 if (var_t == NULL) {
6577 var8 = 1; /* is null */
6578 } else {
6579 var8 = 0; /* arg is null but recv is not */
6580 }
6581 if (var8){
6582 goto RET_LABEL;
6583 } else {
6584 }
6585 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var_t) /* add on <var_mtypes:Array[nullable MType]>*/;
6586 CONTINUE_label: (void)0;
6587 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
6588 }
6589 BREAK_label: (void)0;
6590 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>*/;
6591 var_mtype = var9;
6592 var10 = NULL;
6593 if (var_mtype == NULL) {
6594 var11 = 1; /* is null */
6595 } else {
6596 var11 = 0; /* arg is null but recv is not */
6597 }
6598 if (var11){
6599 if (varonce) {
6600 var12 = varonce;
6601 } else {
6602 var13 = "Type Error: ambiguous array type ";
6603 var14 = 33;
6604 var15 = string__NativeString__to_s_with_length(var13, var14);
6605 var12 = var15;
6606 varonce = var12;
6607 }
6608 if (varonce16) {
6609 var17 = varonce16;
6610 } else {
6611 var18 = " ";
6612 var19 = 1;
6613 var20 = string__NativeString__to_s_with_length(var18, var19);
6614 var17 = var20;
6615 varonce16 = var17;
6616 }
6617 var21 = ((val* (*)(val*, val*))(var_mtypes->class->vft[COLOR_string__Collection__join]))(var_mtypes, var17) /* join on <var_mtypes:Array[nullable MType]>*/;
6618 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
6619 { /* var22 = array_instance Array[Object] */
6620 var23 = 2;
6621 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
6622 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var12;
6623 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var21;
6624 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
6625 }
6626 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
6627 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var25) /* error on <var_v:TypeVisitor>*/;
6628 goto RET_LABEL;
6629 } else {
6630 }
6631 if (varonce26) {
6632 var27 = varonce26;
6633 } else {
6634 var28 = "Array";
6635 var29 = 5;
6636 var30 = string__NativeString__to_s_with_length(var28, var29);
6637 var27 = var30;
6638 varonce26 = var27;
6639 }
6640 var31 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var27) /* get_mclass on <var_v:TypeVisitor>*/;
6641 var_mclass = var31;
6642 var32 = NULL;
6643 if (var_mclass == NULL) {
6644 var33 = 1; /* is null */
6645 } else {
6646 var33 = 0; /* arg is null but recv is not */
6647 }
6648 if (var33){
6649 goto RET_LABEL;
6650 } else {
6651 }
6652 var34 = NEW_array__Array(&type_array__Arraymodel__MType);
6653 { /* var34 = array_instance Array[MType] */
6654 var35 = 1;
6655 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraymodel__MType);
6656 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var_mtype;
6657 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[MType]>*/;
6658 }
6659 var37 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var34) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6660 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var37) /* mtype= on <self:AArrayExpr>*/;
6661 RET_LABEL:;
6662 }
6663 /* method typing#AArrayExpr#accept_typing for (self: Object, TypeVisitor) */
6664 void VIRTUAL_typing__AArrayExpr__accept_typing(val* self, val* p0) {
6665 typing__AArrayExpr__accept_typing(self, p0);
6666 RET_LABEL:;
6667 }
6668 /* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */
6669 void typing__ARangeExpr__accept_typing(val* self, val* p0) {
6670 val* var_v /* var v: TypeVisitor */;
6671 static val* varonce;
6672 val* var /* : String */;
6673 char* var1 /* : NativeString */;
6674 long var2 /* : Int */;
6675 val* var3 /* : String */;
6676 val* var4 /* : nullable MClass */;
6677 val* var_discrete_class /* var discrete_class: nullable MClass */;
6678 val* var5 /* : null */;
6679 short int var6 /* : Bool */;
6680 val* var7 /* : MClassDef */;
6681 val* var8 /* : MClassType */;
6682 val* var_discrete_type /* var discrete_type: MClassType */;
6683 val* var9 /* : AExpr */;
6684 val* var10 /* : nullable MType */;
6685 val* var_t1 /* var t1: nullable MType */;
6686 val* var11 /* : AExpr */;
6687 val* var12 /* : nullable MType */;
6688 val* var_t2 /* var t2: nullable MType */;
6689 short int var13 /* : Bool */;
6690 val* var14 /* : null */;
6691 short int var15 /* : Bool */;
6692 short int var_ /* var : Bool */;
6693 val* var16 /* : null */;
6694 short int var17 /* : Bool */;
6695 static val* varonce18;
6696 val* var19 /* : String */;
6697 char* var20 /* : NativeString */;
6698 long var21 /* : Int */;
6699 val* var22 /* : String */;
6700 val* var23 /* : nullable MClass */;
6701 val* var_mclass /* var mclass: nullable MClass */;
6702 val* var24 /* : null */;
6703 short int var25 /* : Bool */;
6704 short int var26 /* : Bool */;
6705 val* var27 /* : Array[MType] */;
6706 long var28 /* : Int */;
6707 val* var29 /* : NativeArray[MType] */;
6708 val* var30 /* : MClassType */;
6709 short int var31 /* : Bool */;
6710 val* var32 /* : Array[MType] */;
6711 long var33 /* : Int */;
6712 val* var34 /* : NativeArray[MType] */;
6713 val* var35 /* : MClassType */;
6714 static val* varonce36;
6715 val* var37 /* : String */;
6716 char* var38 /* : NativeString */;
6717 long var39 /* : Int */;
6718 val* var40 /* : String */;
6719 static val* varonce41;
6720 val* var42 /* : String */;
6721 char* var43 /* : NativeString */;
6722 long var44 /* : Int */;
6723 val* var45 /* : String */;
6724 val* var46 /* : Array[Object] */;
6725 long var47 /* : Int */;
6726 val* var48 /* : NativeArray[Object] */;
6727 val* var49 /* : String */;
6728 var_v = p0;
6729 if (varonce) {
6730 var = varonce;
6731 } else {
6732 var1 = "Discrete";
6733 var2 = 8;
6734 var3 = string__NativeString__to_s_with_length(var1, var2);
6735 var = var3;
6736 varonce = var;
6737 }
6738 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6739 var_discrete_class = var4;
6740 var5 = NULL;
6741 if (var_discrete_class == NULL) {
6742 var6 = 1; /* is null */
6743 } else {
6744 var6 = 0; /* arg is null but recv is not */
6745 }
6746 if (var6){
6747 goto RET_LABEL;
6748 } else {
6749 }
6750 var7 = ((val* (*)(val*))(var_discrete_class->class->vft[COLOR_model__MClass__intro]))(var_discrete_class) /* intro on <var_discrete_class:nullable MClass(MClass)>*/;
6751 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__bound_mtype]))(var7) /* bound_mtype on <var7:MClassDef>*/;
6752 var_discrete_type = var8;
6753 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ARangeExpr>*/;
6754 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>*/;
6755 var_t1 = var10;
6756 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ARangeExpr>*/;
6757 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>*/;
6758 var_t2 = var12;
6759 var14 = NULL;
6760 if (var_t1 == NULL) {
6761 var15 = 1; /* is null */
6762 } else {
6763 var15 = 0; /* arg is null but recv is not */
6764 }
6765 var_ = var15;
6766 if (var15){
6767 var13 = var_;
6768 } else {
6769 var16 = NULL;
6770 if (var_t2 == NULL) {
6771 var17 = 1; /* is null */
6772 } else {
6773 var17 = 0; /* arg is null but recv is not */
6774 }
6775 var13 = var17;
6776 }
6777 if (var13){
6778 goto RET_LABEL;
6779 } else {
6780 }
6781 if (varonce18) {
6782 var19 = varonce18;
6783 } else {
6784 var20 = "Range";
6785 var21 = 5;
6786 var22 = string__NativeString__to_s_with_length(var20, var21);
6787 var19 = var22;
6788 varonce18 = var19;
6789 }
6790 var23 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var19) /* get_mclass on <var_v:TypeVisitor>*/;
6791 var_mclass = var23;
6792 var24 = NULL;
6793 if (var_mclass == NULL) {
6794 var25 = 1; /* is null */
6795 } else {
6796 var25 = 0; /* arg is null but recv is not */
6797 }
6798 if (var25){
6799 goto RET_LABEL;
6800 } else {
6801 }
6802 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>*/;
6803 if (var26){
6804 var27 = NEW_array__Array(&type_array__Arraymodel__MType);
6805 { /* var27 = array_instance Array[MType] */
6806 var28 = 1;
6807 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraymodel__MType);
6808 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var_t2;
6809 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[MType]>*/;
6810 }
6811 var30 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var27) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6812 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var30) /* mtype= on <self:ARangeExpr>*/;
6813 } else {
6814 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>*/;
6815 if (var31){
6816 var32 = NEW_array__Array(&type_array__Arraymodel__MType);
6817 { /* var32 = array_instance Array[MType] */
6818 var33 = 1;
6819 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraymodel__MType);
6820 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var_t1;
6821 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[MType]>*/;
6822 }
6823 var35 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var32) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6824 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var35) /* mtype= on <self:ARangeExpr>*/;
6825 } else {
6826 if (varonce36) {
6827 var37 = varonce36;
6828 } else {
6829 var38 = "Type Error: Cannot create range: ";
6830 var39 = 33;
6831 var40 = string__NativeString__to_s_with_length(var38, var39);
6832 var37 = var40;
6833 varonce36 = var37;
6834 }
6835 if (varonce41) {
6836 var42 = varonce41;
6837 } else {
6838 var43 = " vs ";
6839 var44 = 4;
6840 var45 = string__NativeString__to_s_with_length(var43, var44);
6841 var42 = var45;
6842 varonce41 = var42;
6843 }
6844 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
6845 { /* var46 = array_instance Array[Object] */
6846 var47 = 4;
6847 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
6848 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var37;
6849 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var_t1;
6850 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
6851 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var_t2;
6852 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
6853 }
6854 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
6855 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var49) /* error on <var_v:TypeVisitor>*/;
6856 }
6857 }
6858 RET_LABEL:;
6859 }
6860 /* method typing#ARangeExpr#accept_typing for (self: Object, TypeVisitor) */
6861 void VIRTUAL_typing__ARangeExpr__accept_typing(val* self, val* p0) {
6862 typing__ARangeExpr__accept_typing(self, p0);
6863 RET_LABEL:;
6864 }
6865 /* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */
6866 void typing__ANullExpr__accept_typing(val* self, val* p0) {
6867 val* var_v /* var v: TypeVisitor */;
6868 val* var /* : MModule */;
6869 val* var1 /* : Model */;
6870 val* var2 /* : MNullType */;
6871 var_v = p0;
6872 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6873 var1 = ((val* (*)(val*))(var->class->vft[COLOR_mmodule__MModule__model]))(var) /* model on <var:MModule>*/;
6874 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__Model__null_type]))(var1) /* null_type on <var1:Model>*/;
6875 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANullExpr>*/;
6876 RET_LABEL:;
6877 }
6878 /* method typing#ANullExpr#accept_typing for (self: Object, TypeVisitor) */
6879 void VIRTUAL_typing__ANullExpr__accept_typing(val* self, val* p0) {
6880 typing__ANullExpr__accept_typing(self, p0);
6881 RET_LABEL:;
6882 }
6883 /* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */
6884 val* typing__AIsaExpr__cast_type(val* self) {
6885 val* var /* : nullable MType */;
6886 val* var1 /* : nullable MType */;
6887 var1 = self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val; /* @cast_type on <self:AIsaExpr> */
6888 var = var1;
6889 RET_LABEL:;
6890 return var;
6891 }
6892 /* method typing#AIsaExpr#cast_type for (self: Object): nullable MType */
6893 val* VIRTUAL_typing__AIsaExpr__cast_type(val* self) {
6894 val* var /* : nullable MType */;
6895 val* var1 /* : nullable MType */;
6896 var1 = typing__AIsaExpr__cast_type(self);
6897 var = var1;
6898 RET_LABEL:;
6899 return var;
6900 }
6901 /* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */
6902 void typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6903 self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val = p0; /* @cast_type on <self:AIsaExpr> */
6904 RET_LABEL:;
6905 }
6906 /* method typing#AIsaExpr#cast_type= for (self: Object, nullable MType) */
6907 void VIRTUAL_typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6908 typing__AIsaExpr__cast_type_61d(self, p0);
6909 RET_LABEL:;
6910 }
6911 /* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */
6912 void typing__AIsaExpr__accept_typing(val* self, val* p0) {
6913 val* var_v /* var v: TypeVisitor */;
6914 val* var /* : AExpr */;
6915 val* var1 /* : AType */;
6916 val* var2 /* : nullable MType */;
6917 val* var_mtype /* var mtype: nullable MType */;
6918 val* var3 /* : AExpr */;
6919 val* var4 /* : nullable Variable */;
6920 val* var_variable /* var variable: nullable Variable */;
6921 val* var5 /* : null */;
6922 short int var6 /* : Bool */;
6923 val* var7 /* : AExpr */;
6924 val* var8 /* : nullable MType */;
6925 val* var_orig /* var orig: nullable MType */;
6926 val* var9 /* : String */;
6927 val* var10 /* : null */;
6928 short int var11 /* : Bool */;
6929 val* var12 /* : String */;
6930 static val* varonce;
6931 val* var13 /* : String */;
6932 char* var14 /* : NativeString */;
6933 long var15 /* : Int */;
6934 val* var16 /* : String */;
6935 val* var_from /* var from: String */;
6936 val* var17 /* : String */;
6937 val* var18 /* : null */;
6938 short int var19 /* : Bool */;
6939 val* var20 /* : String */;
6940 static val* varonce21;
6941 val* var22 /* : String */;
6942 char* var23 /* : NativeString */;
6943 long var24 /* : Int */;
6944 val* var25 /* : String */;
6945 val* var_to /* var to: String */;
6946 val* var26 /* : nullable FlowContext */;
6947 val* var27 /* : FlowContext */;
6948 val* var28 /* : nullable MType */;
6949 var_v = p0;
6950 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
6951 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_type]))(self) /* n_type on <self:AIsaExpr>*/;
6952 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>*/;
6953 var_mtype = var2;
6954 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AIsaExpr__cast_type_61d]))(self, var_mtype) /* cast_type= on <self:AIsaExpr>*/;
6955 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
6956 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__its_variable]))(var3) /* its_variable on <var3:AExpr>*/;
6957 var_variable = var4;
6958 var5 = NULL;
6959 if (var_variable == NULL) {
6960 var6 = 0; /* is null */
6961 } else {
6962 var6 = 1; /* arg is null and recv is not */
6963 }
6964 if (var6){
6965 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
6966 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_typing__AExpr__mtype]))(var7) /* mtype on <var7:AExpr>*/;
6967 var_orig = var8;
6968 var10 = NULL;
6969 if (var_orig == NULL) {
6970 var11 = 0; /* is null */
6971 } else {
6972 var11 = 1; /* arg is null and recv is not */
6973 }
6974 if (var11){
6975 var12 = ((val* (*)(val*))(var_orig->class->vft[COLOR_string__Object__to_s]))(var_orig) /* to_s on <var_orig:nullable MType(MType)>*/;
6976 var9 = var12;
6977 } else {
6978 if (varonce) {
6979 var13 = varonce;
6980 } else {
6981 var14 = "invalid";
6982 var15 = 7;
6983 var16 = string__NativeString__to_s_with_length(var14, var15);
6984 var13 = var16;
6985 varonce = var13;
6986 }
6987 var9 = var13;
6988 }
6989 var_from = var9;
6990 var18 = NULL;
6991 if (var_mtype == NULL) {
6992 var19 = 0; /* is null */
6993 } else {
6994 var19 = 1; /* arg is null and recv is not */
6995 }
6996 if (var19){
6997 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:nullable MType(MType)>*/;
6998 var17 = var20;
6999 } else {
7000 if (varonce21) {
7001 var22 = varonce21;
7002 } else {
7003 var23 = "invalid";
7004 var24 = 7;
7005 var25 = string__NativeString__to_s_with_length(var23, var24);
7006 var22 = var25;
7007 varonce21 = var22;
7008 }
7009 var17 = var22;
7010 }
7011 var_to = var17;
7012 var26 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AIsaExpr>*/;
7013 if (var26 == NULL) {
7014 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7015 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1142);
7016 show_backtrace(1);
7017 } else {
7018 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_flow__FlowContext__when_true]))(var26) /* when_true on <var26:nullable FlowContext>*/;
7019 }
7020 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_typing__FlowContext__set_var]))(var27, var_variable, var_mtype) /* set_var on <var27:FlowContext>*/;
7021 } else {
7022 }
7023 var28 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
7024 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var28) /* mtype= on <self:AIsaExpr>*/;
7025 RET_LABEL:;
7026 }
7027 /* method typing#AIsaExpr#accept_typing for (self: Object, TypeVisitor) */
7028 void VIRTUAL_typing__AIsaExpr__accept_typing(val* self, val* p0) {
7029 typing__AIsaExpr__accept_typing(self, p0);
7030 RET_LABEL:;
7031 }
7032 /* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */
7033 void typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7034 val* var_v /* var v: TypeVisitor */;
7035 val* var /* : AExpr */;
7036 val* var1 /* : AType */;
7037 val* var2 /* : nullable MType */;
7038 var_v = p0;
7039 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_expr]))(self) /* n_expr on <self:AAsCastExpr>*/;
7040 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_type]))(self) /* n_type on <self:AAsCastExpr>*/;
7041 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>*/;
7042 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:AAsCastExpr>*/;
7043 RET_LABEL:;
7044 }
7045 /* method typing#AAsCastExpr#accept_typing for (self: Object, TypeVisitor) */
7046 void VIRTUAL_typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7047 typing__AAsCastExpr__accept_typing(self, p0);
7048 RET_LABEL:;
7049 }
7050 /* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */
7051 void typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7052 val* var_v /* var v: TypeVisitor */;
7053 val* var /* : AExpr */;
7054 val* var1 /* : nullable MType */;
7055 val* var_mtype /* var mtype: nullable MType */;
7056 short int var2 /* : Bool */;
7057 int cltype;
7058 int idtype;
7059 static val* varonce;
7060 val* var3 /* : String */;
7061 char* var4 /* : NativeString */;
7062 long var5 /* : Int */;
7063 val* var6 /* : String */;
7064 short int var7 /* : Bool */;
7065 int cltype8;
7066 int idtype9;
7067 val* var10 /* : MType */;
7068 var_v = p0;
7069 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsNotnullExpr__n_expr]))(self) /* n_expr on <self:AAsNotnullExpr>*/;
7070 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7071 var_mtype = var1;
7072 /* <var_mtype:nullable MType> isa MNullType */
7073 cltype = type_model__MNullType.color;
7074 idtype = type_model__MNullType.id;
7075 if(var_mtype == NULL) {
7076 var2 = 0;
7077 } else {
7078 if(cltype >= var_mtype->type->table_size) {
7079 var2 = 0;
7080 } else {
7081 var2 = var_mtype->type->type_table[cltype] == idtype;
7082 }
7083 }
7084 if (var2){
7085 if (varonce) {
7086 var3 = varonce;
7087 } else {
7088 var4 = "Type error: as(not null) on null";
7089 var5 = 32;
7090 var6 = string__NativeString__to_s_with_length(var4, var5);
7091 var3 = var6;
7092 varonce = var3;
7093 }
7094 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var3) /* error on <var_v:TypeVisitor>*/;
7095 goto RET_LABEL;
7096 } else {
7097 }
7098 /* <var_mtype:nullable MType> isa MNullableType */
7099 cltype8 = type_model__MNullableType.color;
7100 idtype9 = type_model__MNullableType.id;
7101 if(var_mtype == NULL) {
7102 var7 = 0;
7103 } else {
7104 if(cltype8 >= var_mtype->type->table_size) {
7105 var7 = 0;
7106 } else {
7107 var7 = var_mtype->type->type_table[cltype8] == idtype9;
7108 }
7109 }
7110 if (var7){
7111 var10 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:nullable MType(MNullableType)>*/;
7112 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var10) /* mtype= on <self:AAsNotnullExpr>*/;
7113 goto RET_LABEL;
7114 } else {
7115 }
7116 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AAsNotnullExpr>*/;
7117 RET_LABEL:;
7118 }
7119 /* method typing#AAsNotnullExpr#accept_typing for (self: Object, TypeVisitor) */
7120 void VIRTUAL_typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7121 typing__AAsNotnullExpr__accept_typing(self, p0);
7122 RET_LABEL:;
7123 }
7124 /* method typing#AProxyExpr#accept_typing for (self: AProxyExpr, TypeVisitor) */
7125 void typing__AProxyExpr__accept_typing(val* self, val* p0) {
7126 val* var_v /* var v: TypeVisitor */;
7127 val* var /* : AExpr */;
7128 val* var1 /* : nullable MType */;
7129 var_v = p0;
7130 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AProxyExpr>*/;
7131 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7132 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:AProxyExpr>*/;
7133 RET_LABEL:;
7134 }
7135 /* method typing#AProxyExpr#accept_typing for (self: Object, TypeVisitor) */
7136 void VIRTUAL_typing__AProxyExpr__accept_typing(val* self, val* p0) {
7137 typing__AProxyExpr__accept_typing(self, p0);
7138 RET_LABEL:;
7139 }
7140 /* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */
7141 val* typing__ASelfExpr__its_variable(val* self) {
7142 val* var /* : nullable Variable */;
7143 val* var1 /* : nullable Variable */;
7144 var1 = self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val; /* @its_variable on <self:ASelfExpr> */
7145 var = var1;
7146 RET_LABEL:;
7147 return var;
7148 }
7149 /* method typing#ASelfExpr#its_variable for (self: Object): nullable Variable */
7150 val* VIRTUAL_typing__ASelfExpr__its_variable(val* self) {
7151 val* var /* : nullable Variable */;
7152 val* var1 /* : nullable Variable */;
7153 var1 = typing__ASelfExpr__its_variable(self);
7154 var = var1;
7155 RET_LABEL:;
7156 return var;
7157 }
7158 /* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */
7159 void typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7160 self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val = p0; /* @its_variable on <self:ASelfExpr> */
7161 RET_LABEL:;
7162 }
7163 /* method typing#ASelfExpr#its_variable= for (self: Object, nullable Variable) */
7164 void VIRTUAL_typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7165 typing__ASelfExpr__its_variable_61d(self, p0);
7166 RET_LABEL:;
7167 }
7168 /* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */
7169 void typing__ASelfExpr__accept_typing(val* self, val* p0) {
7170 val* var_v /* var v: TypeVisitor */;
7171 val* var /* : Variable */;
7172 val* var_variable /* var variable: Variable */;
7173 val* var1 /* : nullable MType */;
7174 var_v = p0;
7175 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
7176 var_variable = var;
7177 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASelfExpr__its_variable_61d]))(self, var_variable) /* its_variable= on <self:ASelfExpr>*/;
7178 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>*/;
7179 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:ASelfExpr>*/;
7180 RET_LABEL:;
7181 }
7182 /* method typing#ASelfExpr#accept_typing for (self: Object, TypeVisitor) */
7183 void VIRTUAL_typing__ASelfExpr__accept_typing(val* self, val* p0) {
7184 typing__ASelfExpr__accept_typing(self, p0);
7185 RET_LABEL:;
7186 }
7187 /* method typing#ASendExpr#mproperty for (self: ASendExpr): nullable MMethod */
7188 val* typing__ASendExpr__mproperty(val* self) {
7189 val* var /* : nullable MMethod */;
7190 val* var1 /* : nullable CallSite */;
7191 val* var2 /* : MMethod */;
7192 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendExpr>*/;
7193 if (var1 == NULL) {
7194 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7195 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1194);
7196 show_backtrace(1);
7197 } else {
7198 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
7199 }
7200 var = var2;
7201 goto RET_LABEL;
7202 RET_LABEL:;
7203 return var;
7204 }
7205 /* method typing#ASendExpr#mproperty for (self: Object): nullable MMethod */
7206 val* VIRTUAL_typing__ASendExpr__mproperty(val* self) {
7207 val* var /* : nullable MMethod */;
7208 val* var1 /* : nullable MMethod */;
7209 var1 = typing__ASendExpr__mproperty(self);
7210 var = var1;
7211 RET_LABEL:;
7212 return var;
7213 }
7214 /* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */
7215 val* typing__ASendExpr__callsite(val* self) {
7216 val* var /* : nullable CallSite */;
7217 val* var1 /* : nullable CallSite */;
7218 var1 = self->attrs[COLOR_typing__ASendExpr___64dcallsite].val; /* @callsite on <self:ASendExpr> */
7219 var = var1;
7220 RET_LABEL:;
7221 return var;
7222 }
7223 /* method typing#ASendExpr#callsite for (self: Object): nullable CallSite */
7224 val* VIRTUAL_typing__ASendExpr__callsite(val* self) {
7225 val* var /* : nullable CallSite */;
7226 val* var1 /* : nullable CallSite */;
7227 var1 = typing__ASendExpr__callsite(self);
7228 var = var1;
7229 RET_LABEL:;
7230 return var;
7231 }
7232 /* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */
7233 void typing__ASendExpr__callsite_61d(val* self, val* p0) {
7234 self->attrs[COLOR_typing__ASendExpr___64dcallsite].val = p0; /* @callsite on <self:ASendExpr> */
7235 RET_LABEL:;
7236 }
7237 /* method typing#ASendExpr#callsite= for (self: Object, nullable CallSite) */
7238 void VIRTUAL_typing__ASendExpr__callsite_61d(val* self, val* p0) {
7239 typing__ASendExpr__callsite_61d(self, p0);
7240 RET_LABEL:;
7241 }
7242 /* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */
7243 void typing__ASendExpr__accept_typing(val* self, val* p0) {
7244 val* var_v /* var v: TypeVisitor */;
7245 val* var /* : AExpr */;
7246 val* var1 /* : nullable MType */;
7247 val* var_recvtype /* var recvtype: nullable MType */;
7248 val* var2 /* : String */;
7249 val* var_name /* var name: String */;
7250 val* var3 /* : null */;
7251 short int var4 /* : Bool */;
7252 short int var5 /* : Bool */;
7253 int cltype;
7254 int idtype;
7255 static val* varonce;
7256 val* var6 /* : String */;
7257 char* var7 /* : NativeString */;
7258 long var8 /* : Int */;
7259 val* var9 /* : String */;
7260 static val* varonce10;
7261 val* var11 /* : String */;
7262 char* var12 /* : NativeString */;
7263 long var13 /* : Int */;
7264 val* var14 /* : String */;
7265 val* var15 /* : Array[Object] */;
7266 long var16 /* : Int */;
7267 val* var17 /* : NativeArray[Object] */;
7268 val* var18 /* : String */;
7269 val* var19 /* : AExpr */;
7270 short int var20 /* : Bool */;
7271 int cltype21;
7272 int idtype22;
7273 val* var23 /* : nullable CallSite */;
7274 val* var_callsite /* var callsite: nullable CallSite */;
7275 val* var24 /* : null */;
7276 short int var25 /* : Bool */;
7277 val* var26 /* : MSignature */;
7278 val* var_msignature /* var msignature: MSignature */;
7279 val* var27 /* : Array[AExpr] */;
7280 val* var_args /* var args: Array[AExpr] */;
7281 short int var28 /* : Bool */;
7282 val* var29 /* : MMethod */;
7283 short int var30 /* : Bool */;
7284 val* var31 /* : MPropDef */;
7285 val* var_vmpropdef /* var vmpropdef: MPropDef */;
7286 short int var32 /* : Bool */;
7287 short int var33 /* : Bool */;
7288 int cltype34;
7289 int idtype35;
7290 short int var_ /* var : Bool */;
7291 val* var36 /* : MProperty */;
7292 short int var37 /* : Bool */;
7293 short int var38 /* : Bool */;
7294 static val* varonce39;
7295 val* var40 /* : String */;
7296 char* var41 /* : NativeString */;
7297 long var42 /* : Int */;
7298 val* var43 /* : String */;
7299 val* var44 /* : nullable MType */;
7300 val* var_ret /* var ret: nullable MType */;
7301 val* var45 /* : null */;
7302 short int var46 /* : Bool */;
7303 short int var47 /* : Bool */;
7304 var_v = p0;
7305 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7306 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7307 var_recvtype = var1;
7308 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendExpr>*/;
7309 var_name = var2;
7310 var3 = NULL;
7311 if (var_recvtype == NULL) {
7312 var4 = 1; /* is null */
7313 } else {
7314 var4 = 0; /* arg is null but recv is not */
7315 }
7316 if (var4){
7317 goto RET_LABEL;
7318 } else {
7319 }
7320 /* <var_recvtype:nullable MType(MType)> isa MNullType */
7321 cltype = type_model__MNullType.color;
7322 idtype = type_model__MNullType.id;
7323 if(cltype >= var_recvtype->type->table_size) {
7324 var5 = 0;
7325 } else {
7326 var5 = var_recvtype->type->type_table[cltype] == idtype;
7327 }
7328 if (var5){
7329 if (varonce) {
7330 var6 = varonce;
7331 } else {
7332 var7 = "Error: Method \'";
7333 var8 = 15;
7334 var9 = string__NativeString__to_s_with_length(var7, var8);
7335 var6 = var9;
7336 varonce = var6;
7337 }
7338 if (varonce10) {
7339 var11 = varonce10;
7340 } else {
7341 var12 = "\' call on \'null\'.";
7342 var13 = 17;
7343 var14 = string__NativeString__to_s_with_length(var12, var13);
7344 var11 = var14;
7345 varonce10 = var11;
7346 }
7347 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
7348 { /* var15 = array_instance Array[Object] */
7349 var16 = 3;
7350 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
7351 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
7352 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
7353 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
7354 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
7355 }
7356 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
7357 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
7358 goto RET_LABEL;
7359 } else {
7360 }
7361 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7362 /* <var19:AExpr> isa ASelfExpr */
7363 cltype21 = type_parser_nodes__ASelfExpr.color;
7364 idtype22 = type_parser_nodes__ASelfExpr.id;
7365 if(cltype21 >= var19->type->table_size) {
7366 var20 = 0;
7367 } else {
7368 var20 = var19->type->type_table[cltype21] == idtype22;
7369 }
7370 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>*/;
7371 var_callsite = var23;
7372 var24 = NULL;
7373 if (var_callsite == NULL) {
7374 var25 = 1; /* is null */
7375 } else {
7376 var25 = 0; /* arg is null but recv is not */
7377 }
7378 if (var25){
7379 goto RET_LABEL;
7380 } else {
7381 }
7382 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendExpr>*/;
7383 var26 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
7384 var_msignature = var26;
7385 var27 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
7386 var_args = var27;
7387 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendExpr>*/;
7388 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)>*/;
7389 var28;
7390 var29 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:nullable CallSite(CallSite)>*/;
7391 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_model__MMethod__is_init]))(var29) /* is_init on <var29:MMethod>*/;
7392 if (var30){
7393 var31 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
7394 var_vmpropdef = var31;
7395 /* <var_vmpropdef:MPropDef> isa MMethodDef */
7396 cltype34 = type_model__MMethodDef.color;
7397 idtype35 = type_model__MMethodDef.id;
7398 if(cltype34 >= var_vmpropdef->type->table_size) {
7399 var33 = 0;
7400 } else {
7401 var33 = var_vmpropdef->type->type_table[cltype34] == idtype35;
7402 }
7403 var_ = var33;
7404 if (var33){
7405 var36 = ((val* (*)(val*))(var_vmpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_vmpropdef) /* mproperty on <var_vmpropdef:MPropDef(MMethodDef)>*/;
7406 var37 = ((short int (*)(val*))(var36->class->vft[COLOR_model__MMethod__is_init]))(var36) /* is_init on <var36:MProperty(MMethod)>*/;
7407 var32 = var37;
7408 } else {
7409 var32 = var_;
7410 }
7411 var38 = !var32;
7412 if (var38){
7413 if (varonce39) {
7414 var40 = varonce39;
7415 } else {
7416 var41 = "Can call a init only in another init";
7417 var42 = 36;
7418 var43 = string__NativeString__to_s_with_length(var41, var42);
7419 var40 = var43;
7420 varonce39 = var40;
7421 }
7422 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var40) /* error on <var_v:TypeVisitor>*/;
7423 } else {
7424 }
7425 } else {
7426 }
7427 var44 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
7428 var_ret = var44;
7429 var45 = NULL;
7430 if (var_ret == NULL) {
7431 var46 = 0; /* is null */
7432 } else {
7433 var46 = 1; /* arg is null and recv is not */
7434 }
7435 if (var46){
7436 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_ret) /* mtype= on <self:ASendExpr>*/;
7437 } else {
7438 var47 = 1;
7439 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var47) /* is_typed= on <self:ASendExpr>*/;
7440 }
7441 RET_LABEL:;
7442 }
7443 /* method typing#ASendExpr#accept_typing for (self: Object, TypeVisitor) */
7444 void VIRTUAL_typing__ASendExpr__accept_typing(val* self, val* p0) {
7445 typing__ASendExpr__accept_typing(self, p0);
7446 RET_LABEL:;
7447 }
7448 /* method typing#ASendExpr#property_name for (self: ASendExpr): String */
7449 val* typing__ASendExpr__property_name(val* self) {
7450 val* var /* : String */;
7451 const char* var_class_name;
7452 var_class_name = self == NULL ? "null" : self->type->name;
7453 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "property_name", var_class_name);
7454 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1235);
7455 show_backtrace(1);
7456 RET_LABEL:;
7457 return var;
7458 }
7459 /* method typing#ASendExpr#property_name for (self: Object): String */
7460 val* VIRTUAL_typing__ASendExpr__property_name(val* self) {
7461 val* var /* : String */;
7462 val* var1 /* : String */;
7463 var1 = typing__ASendExpr__property_name(self);
7464 var = var1;
7465 RET_LABEL:;
7466 return var;
7467 }
7468 /* method typing#ASendExpr#raw_arguments for (self: ASendExpr): nullable Array[AExpr] */
7469 val* typing__ASendExpr__raw_arguments(val* self) {
7470 val* var /* : nullable Array[AExpr] */;
7471 val* var1 /* : nullable Array[AExpr] */;
7472 var1 = self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val; /* @raw_arguments on <self:ASendExpr> */
7473 var = var1;
7474 RET_LABEL:;
7475 return var;
7476 }
7477 /* method typing#ASendExpr#raw_arguments for (self: Object): nullable Array[AExpr] */
7478 val* VIRTUAL_typing__ASendExpr__raw_arguments(val* self) {
7479 val* var /* : nullable Array[AExpr] */;
7480 val* var1 /* : nullable Array[AExpr] */;
7481 var1 = typing__ASendExpr__raw_arguments(self);
7482 var = var1;
7483 RET_LABEL:;
7484 return var;
7485 }
7486 /* method typing#ASendExpr#raw_arguments= for (self: ASendExpr, nullable Array[AExpr]) */
7487 void typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7488 self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val = p0; /* @raw_arguments on <self:ASendExpr> */
7489 RET_LABEL:;
7490 }
7491 /* method typing#ASendExpr#raw_arguments= for (self: Object, nullable Array[AExpr]) */
7492 void VIRTUAL_typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7493 typing__ASendExpr__raw_arguments_61d(self, p0);
7494 RET_LABEL:;
7495 }
7496 /* method typing#ASendExpr#compute_raw_arguments for (self: ASendExpr): Array[AExpr] */
7497 val* typing__ASendExpr__compute_raw_arguments(val* self) {
7498 val* var /* : Array[AExpr] */;
7499 const char* var_class_name;
7500 var_class_name = self == NULL ? "null" : self->type->name;
7501 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compute_raw_arguments", var_class_name);
7502 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1242);
7503 show_backtrace(1);
7504 RET_LABEL:;
7505 return var;
7506 }
7507 /* method typing#ASendExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7508 val* VIRTUAL_typing__ASendExpr__compute_raw_arguments(val* self) {
7509 val* var /* : Array[AExpr] */;
7510 val* var1 /* : Array[AExpr] */;
7511 var1 = typing__ASendExpr__compute_raw_arguments(self);
7512 var = var1;
7513 RET_LABEL:;
7514 return var;
7515 }
7516 /* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */
7517 val* typing__ABinopExpr__compute_raw_arguments(val* self) {
7518 val* var /* : Array[AExpr] */;
7519 val* var1 /* : Array[AExpr] */;
7520 long var2 /* : Int */;
7521 val* var_ /* var : Array[AExpr] */;
7522 val* var3 /* : AExpr */;
7523 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
7524 var2 = 1;
7525 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[AExpr]>*/;
7526 var_ = var1;
7527 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ABinopExpr>*/;
7528 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var3) /* push on <var_:Array[AExpr]>*/;
7529 var = var_;
7530 goto RET_LABEL;
7531 RET_LABEL:;
7532 return var;
7533 }
7534 /* method typing#ABinopExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7535 val* VIRTUAL_typing__ABinopExpr__compute_raw_arguments(val* self) {
7536 val* var /* : Array[AExpr] */;
7537 val* var1 /* : Array[AExpr] */;
7538 var1 = typing__ABinopExpr__compute_raw_arguments(self);
7539 var = var1;
7540 RET_LABEL:;
7541 return var;
7542 }
7543 /* method typing#AEqExpr#property_name for (self: AEqExpr): String */
7544 val* typing__AEqExpr__property_name(val* self) {
7545 val* var /* : String */;
7546 static val* varonce;
7547 val* var1 /* : String */;
7548 char* var2 /* : NativeString */;
7549 long var3 /* : Int */;
7550 val* var4 /* : String */;
7551 if (varonce) {
7552 var1 = varonce;
7553 } else {
7554 var2 = "==";
7555 var3 = 2;
7556 var4 = string__NativeString__to_s_with_length(var2, var3);
7557 var1 = var4;
7558 varonce = var1;
7559 }
7560 var = var1;
7561 goto RET_LABEL;
7562 RET_LABEL:;
7563 return var;
7564 }
7565 /* method typing#AEqExpr#property_name for (self: Object): String */
7566 val* VIRTUAL_typing__AEqExpr__property_name(val* self) {
7567 val* var /* : String */;
7568 val* var1 /* : String */;
7569 var1 = typing__AEqExpr__property_name(self);
7570 var = var1;
7571 RET_LABEL:;
7572 return var;
7573 }
7574 /* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */
7575 void typing__AEqExpr__accept_typing(val* self, val* p0) {
7576 val* var_v /* var v: TypeVisitor */;
7577 val* var /* : AExpr */;
7578 val* var1 /* : nullable Variable */;
7579 val* var_variable /* var variable: nullable Variable */;
7580 val* var2 /* : null */;
7581 short int var3 /* : Bool */;
7582 val* var4 /* : AExpr */;
7583 val* var5 /* : nullable MType */;
7584 val* var_mtype /* var mtype: nullable MType */;
7585 short int var6 /* : Bool */;
7586 int cltype;
7587 int idtype;
7588 short int var7 /* : Bool */;
7589 val* var8 /* : nullable MType */;
7590 val* var_vartype /* var vartype: nullable MType */;
7591 short int var9 /* : Bool */;
7592 int cltype10;
7593 int idtype11;
7594 short int var12 /* : Bool */;
7595 val* var13 /* : nullable FlowContext */;
7596 val* var14 /* : FlowContext */;
7597 val* var15 /* : nullable FlowContext */;
7598 val* var16 /* : FlowContext */;
7599 val* var17 /* : MType */;
7600 var_v = p0;
7601 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AEqExpr__accept_typing]))(self, p0) /* accept_typing on <self:AEqExpr>*/;
7602 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:AEqExpr>*/;
7603 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7604 var_variable = var1;
7605 var2 = NULL;
7606 if (var_variable == NULL) {
7607 var3 = 1; /* is null */
7608 } else {
7609 var3 = 0; /* arg is null but recv is not */
7610 }
7611 if (var3){
7612 goto RET_LABEL;
7613 } else {
7614 }
7615 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:AEqExpr>*/;
7616 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7617 var_mtype = var5;
7618 /* <var_mtype:nullable MType> isa MNullType */
7619 cltype = type_model__MNullType.color;
7620 idtype = type_model__MNullType.id;
7621 if(var_mtype == NULL) {
7622 var6 = 0;
7623 } else {
7624 if(cltype >= var_mtype->type->table_size) {
7625 var6 = 0;
7626 } else {
7627 var6 = var_mtype->type->type_table[cltype] == idtype;
7628 }
7629 }
7630 var7 = !var6;
7631 if (var7){
7632 goto RET_LABEL;
7633 } else {
7634 }
7635 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>*/;
7636 var_vartype = var8;
7637 /* <var_vartype:nullable MType> isa MNullableType */
7638 cltype10 = type_model__MNullableType.color;
7639 idtype11 = type_model__MNullableType.id;
7640 if(var_vartype == NULL) {
7641 var9 = 0;
7642 } else {
7643 if(cltype10 >= var_vartype->type->table_size) {
7644 var9 = 0;
7645 } else {
7646 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7647 }
7648 }
7649 var12 = !var9;
7650 if (var12){
7651 goto RET_LABEL;
7652 } else {
7653 }
7654 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7655 if (var13 == NULL) {
7656 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7657 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1260);
7658 show_backtrace(1);
7659 } else {
7660 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_true]))(var13) /* when_true on <var13:nullable FlowContext>*/;
7661 }
7662 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7663 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7664 if (var15 == NULL) {
7665 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7666 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1261);
7667 show_backtrace(1);
7668 } else {
7669 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_false]))(var15) /* when_false on <var15:nullable FlowContext>*/;
7670 }
7671 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7672 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7673 RET_LABEL:;
7674 }
7675 /* method typing#AEqExpr#accept_typing for (self: Object, TypeVisitor) */
7676 void VIRTUAL_typing__AEqExpr__accept_typing(val* self, val* p0) {
7677 typing__AEqExpr__accept_typing(self, p0);
7678 RET_LABEL:;
7679 }
7680 /* method typing#ANeExpr#property_name for (self: ANeExpr): String */
7681 val* typing__ANeExpr__property_name(val* self) {
7682 val* var /* : String */;
7683 static val* varonce;
7684 val* var1 /* : String */;
7685 char* var2 /* : NativeString */;
7686 long var3 /* : Int */;
7687 val* var4 /* : String */;
7688 if (varonce) {
7689 var1 = varonce;
7690 } else {
7691 var2 = "!=";
7692 var3 = 2;
7693 var4 = string__NativeString__to_s_with_length(var2, var3);
7694 var1 = var4;
7695 varonce = var1;
7696 }
7697 var = var1;
7698 goto RET_LABEL;
7699 RET_LABEL:;
7700 return var;
7701 }
7702 /* method typing#ANeExpr#property_name for (self: Object): String */
7703 val* VIRTUAL_typing__ANeExpr__property_name(val* self) {
7704 val* var /* : String */;
7705 val* var1 /* : String */;
7706 var1 = typing__ANeExpr__property_name(self);
7707 var = var1;
7708 RET_LABEL:;
7709 return var;
7710 }
7711 /* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */
7712 void typing__ANeExpr__accept_typing(val* self, val* p0) {
7713 val* var_v /* var v: TypeVisitor */;
7714 val* var /* : AExpr */;
7715 val* var1 /* : nullable Variable */;
7716 val* var_variable /* var variable: nullable Variable */;
7717 val* var2 /* : null */;
7718 short int var3 /* : Bool */;
7719 val* var4 /* : AExpr */;
7720 val* var5 /* : nullable MType */;
7721 val* var_mtype /* var mtype: nullable MType */;
7722 short int var6 /* : Bool */;
7723 int cltype;
7724 int idtype;
7725 short int var7 /* : Bool */;
7726 val* var8 /* : nullable MType */;
7727 val* var_vartype /* var vartype: nullable MType */;
7728 short int var9 /* : Bool */;
7729 int cltype10;
7730 int idtype11;
7731 short int var12 /* : Bool */;
7732 val* var13 /* : nullable FlowContext */;
7733 val* var14 /* : FlowContext */;
7734 val* var15 /* : nullable FlowContext */;
7735 val* var16 /* : FlowContext */;
7736 val* var17 /* : MType */;
7737 var_v = p0;
7738 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANeExpr__accept_typing]))(self, p0) /* accept_typing on <self:ANeExpr>*/;
7739 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ANeExpr>*/;
7740 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7741 var_variable = var1;
7742 var2 = NULL;
7743 if (var_variable == NULL) {
7744 var3 = 1; /* is null */
7745 } else {
7746 var3 = 0; /* arg is null but recv is not */
7747 }
7748 if (var3){
7749 goto RET_LABEL;
7750 } else {
7751 }
7752 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ANeExpr>*/;
7753 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7754 var_mtype = var5;
7755 /* <var_mtype:nullable MType> isa MNullType */
7756 cltype = type_model__MNullType.color;
7757 idtype = type_model__MNullType.id;
7758 if(var_mtype == NULL) {
7759 var6 = 0;
7760 } else {
7761 if(cltype >= var_mtype->type->table_size) {
7762 var6 = 0;
7763 } else {
7764 var6 = var_mtype->type->type_table[cltype] == idtype;
7765 }
7766 }
7767 var7 = !var6;
7768 if (var7){
7769 goto RET_LABEL;
7770 } else {
7771 }
7772 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>*/;
7773 var_vartype = var8;
7774 /* <var_vartype:nullable MType> isa MNullableType */
7775 cltype10 = type_model__MNullableType.color;
7776 idtype11 = type_model__MNullableType.id;
7777 if(var_vartype == NULL) {
7778 var9 = 0;
7779 } else {
7780 if(cltype10 >= var_vartype->type->table_size) {
7781 var9 = 0;
7782 } else {
7783 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7784 }
7785 }
7786 var12 = !var9;
7787 if (var12){
7788 goto RET_LABEL;
7789 } else {
7790 }
7791 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7792 if (var13 == NULL) {
7793 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7794 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1277);
7795 show_backtrace(1);
7796 } else {
7797 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_false]))(var13) /* when_false on <var13:nullable FlowContext>*/;
7798 }
7799 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7800 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7801 if (var15 == NULL) {
7802 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7803 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1278);
7804 show_backtrace(1);
7805 } else {
7806 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_true]))(var15) /* when_true on <var15:nullable FlowContext>*/;
7807 }
7808 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7809 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7810 RET_LABEL:;
7811 }
7812 /* method typing#ANeExpr#accept_typing for (self: Object, TypeVisitor) */
7813 void VIRTUAL_typing__ANeExpr__accept_typing(val* self, val* p0) {
7814 typing__ANeExpr__accept_typing(self, p0);
7815 RET_LABEL:;
7816 }
7817 /* method typing#ALtExpr#property_name for (self: ALtExpr): String */
7818 val* typing__ALtExpr__property_name(val* self) {
7819 val* var /* : String */;
7820 static val* varonce;
7821 val* var1 /* : String */;
7822 char* var2 /* : NativeString */;
7823 long var3 /* : Int */;
7824 val* var4 /* : String */;
7825 if (varonce) {
7826 var1 = varonce;
7827 } else {
7828 var2 = "<";
7829 var3 = 1;
7830 var4 = string__NativeString__to_s_with_length(var2, var3);
7831 var1 = var4;
7832 varonce = var1;
7833 }
7834 var = var1;
7835 goto RET_LABEL;
7836 RET_LABEL:;
7837 return var;
7838 }
7839 /* method typing#ALtExpr#property_name for (self: Object): String */
7840 val* VIRTUAL_typing__ALtExpr__property_name(val* self) {
7841 val* var /* : String */;
7842 val* var1 /* : String */;
7843 var1 = typing__ALtExpr__property_name(self);
7844 var = var1;
7845 RET_LABEL:;
7846 return var;
7847 }
7848 /* method typing#ALeExpr#property_name for (self: ALeExpr): String */
7849 val* typing__ALeExpr__property_name(val* self) {
7850 val* var /* : String */;
7851 static val* varonce;
7852 val* var1 /* : String */;
7853 char* var2 /* : NativeString */;
7854 long var3 /* : Int */;
7855 val* var4 /* : String */;
7856 if (varonce) {
7857 var1 = varonce;
7858 } else {
7859 var2 = "<=";
7860 var3 = 2;
7861 var4 = string__NativeString__to_s_with_length(var2, var3);
7862 var1 = var4;
7863 varonce = var1;
7864 }
7865 var = var1;
7866 goto RET_LABEL;
7867 RET_LABEL:;
7868 return var;
7869 }
7870 /* method typing#ALeExpr#property_name for (self: Object): String */
7871 val* VIRTUAL_typing__ALeExpr__property_name(val* self) {
7872 val* var /* : String */;
7873 val* var1 /* : String */;
7874 var1 = typing__ALeExpr__property_name(self);
7875 var = var1;
7876 RET_LABEL:;
7877 return var;
7878 }
7879 /* method typing#ALlExpr#property_name for (self: ALlExpr): String */
7880 val* typing__ALlExpr__property_name(val* self) {
7881 val* var /* : String */;
7882 static val* varonce;
7883 val* var1 /* : String */;
7884 char* var2 /* : NativeString */;
7885 long var3 /* : Int */;
7886 val* var4 /* : String */;
7887 if (varonce) {
7888 var1 = varonce;
7889 } else {
7890 var2 = "<<";
7891 var3 = 2;
7892 var4 = string__NativeString__to_s_with_length(var2, var3);
7893 var1 = var4;
7894 varonce = var1;
7895 }
7896 var = var1;
7897 goto RET_LABEL;
7898 RET_LABEL:;
7899 return var;
7900 }
7901 /* method typing#ALlExpr#property_name for (self: Object): String */
7902 val* VIRTUAL_typing__ALlExpr__property_name(val* self) {
7903 val* var /* : String */;
7904 val* var1 /* : String */;
7905 var1 = typing__ALlExpr__property_name(self);
7906 var = var1;
7907 RET_LABEL:;
7908 return var;
7909 }
7910 /* method typing#AGtExpr#property_name for (self: AGtExpr): String */
7911 val* typing__AGtExpr__property_name(val* self) {
7912 val* var /* : String */;
7913 static val* varonce;
7914 val* var1 /* : String */;
7915 char* var2 /* : NativeString */;
7916 long var3 /* : Int */;
7917 val* var4 /* : String */;
7918 if (varonce) {
7919 var1 = varonce;
7920 } else {
7921 var2 = ">";
7922 var3 = 1;
7923 var4 = string__NativeString__to_s_with_length(var2, var3);
7924 var1 = var4;
7925 varonce = var1;
7926 }
7927 var = var1;
7928 goto RET_LABEL;
7929 RET_LABEL:;
7930 return var;
7931 }
7932 /* method typing#AGtExpr#property_name for (self: Object): String */
7933 val* VIRTUAL_typing__AGtExpr__property_name(val* self) {
7934 val* var /* : String */;
7935 val* var1 /* : String */;
7936 var1 = typing__AGtExpr__property_name(self);
7937 var = var1;
7938 RET_LABEL:;
7939 return var;
7940 }
7941 /* method typing#AGeExpr#property_name for (self: AGeExpr): String */
7942 val* typing__AGeExpr__property_name(val* self) {
7943 val* var /* : String */;
7944 static val* varonce;
7945 val* var1 /* : String */;
7946 char* var2 /* : NativeString */;
7947 long var3 /* : Int */;
7948 val* var4 /* : String */;
7949 if (varonce) {
7950 var1 = varonce;
7951 } else {
7952 var2 = ">=";
7953 var3 = 2;
7954 var4 = string__NativeString__to_s_with_length(var2, var3);
7955 var1 = var4;
7956 varonce = var1;
7957 }
7958 var = var1;
7959 goto RET_LABEL;
7960 RET_LABEL:;
7961 return var;
7962 }
7963 /* method typing#AGeExpr#property_name for (self: Object): String */
7964 val* VIRTUAL_typing__AGeExpr__property_name(val* self) {
7965 val* var /* : String */;
7966 val* var1 /* : String */;
7967 var1 = typing__AGeExpr__property_name(self);
7968 var = var1;
7969 RET_LABEL:;
7970 return var;
7971 }
7972 /* method typing#AGgExpr#property_name for (self: AGgExpr): String */
7973 val* typing__AGgExpr__property_name(val* self) {
7974 val* var /* : String */;
7975 static val* varonce;
7976 val* var1 /* : String */;
7977 char* var2 /* : NativeString */;
7978 long var3 /* : Int */;
7979 val* var4 /* : String */;
7980 if (varonce) {
7981 var1 = varonce;
7982 } else {
7983 var2 = ">>";
7984 var3 = 2;
7985 var4 = string__NativeString__to_s_with_length(var2, var3);
7986 var1 = var4;
7987 varonce = var1;
7988 }
7989 var = var1;
7990 goto RET_LABEL;
7991 RET_LABEL:;
7992 return var;
7993 }
7994 /* method typing#AGgExpr#property_name for (self: Object): String */
7995 val* VIRTUAL_typing__AGgExpr__property_name(val* self) {
7996 val* var /* : String */;
7997 val* var1 /* : String */;
7998 var1 = typing__AGgExpr__property_name(self);
7999 var = var1;
8000 RET_LABEL:;
8001 return var;
8002 }
8003 /* method typing#APlusExpr#property_name for (self: APlusExpr): String */
8004 val* typing__APlusExpr__property_name(val* self) {
8005 val* var /* : String */;
8006 static val* varonce;
8007 val* var1 /* : String */;
8008 char* var2 /* : NativeString */;
8009 long var3 /* : Int */;
8010 val* var4 /* : String */;
8011 if (varonce) {
8012 var1 = varonce;
8013 } else {
8014 var2 = "+";
8015 var3 = 1;
8016 var4 = string__NativeString__to_s_with_length(var2, var3);
8017 var1 = var4;
8018 varonce = var1;
8019 }
8020 var = var1;
8021 goto RET_LABEL;
8022 RET_LABEL:;
8023 return var;
8024 }
8025 /* method typing#APlusExpr#property_name for (self: Object): String */
8026 val* VIRTUAL_typing__APlusExpr__property_name(val* self) {
8027 val* var /* : String */;
8028 val* var1 /* : String */;
8029 var1 = typing__APlusExpr__property_name(self);
8030 var = var1;
8031 RET_LABEL:;
8032 return var;
8033 }
8034 /* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */
8035 val* typing__AMinusExpr__property_name(val* self) {
8036 val* var /* : String */;
8037 static val* varonce;
8038 val* var1 /* : String */;
8039 char* var2 /* : NativeString */;
8040 long var3 /* : Int */;
8041 val* var4 /* : String */;
8042 if (varonce) {
8043 var1 = varonce;
8044 } else {
8045 var2 = "-";
8046 var3 = 1;
8047 var4 = string__NativeString__to_s_with_length(var2, var3);
8048 var1 = var4;
8049 varonce = var1;
8050 }
8051 var = var1;
8052 goto RET_LABEL;
8053 RET_LABEL:;
8054 return var;
8055 }
8056 /* method typing#AMinusExpr#property_name for (self: Object): String */
8057 val* VIRTUAL_typing__AMinusExpr__property_name(val* self) {
8058 val* var /* : String */;
8059 val* var1 /* : String */;
8060 var1 = typing__AMinusExpr__property_name(self);
8061 var = var1;
8062 RET_LABEL:;
8063 return var;
8064 }
8065 /* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */
8066 val* typing__AStarshipExpr__property_name(val* self) {
8067 val* var /* : String */;
8068 static val* varonce;
8069 val* var1 /* : String */;
8070 char* var2 /* : NativeString */;
8071 long var3 /* : Int */;
8072 val* var4 /* : String */;
8073 if (varonce) {
8074 var1 = varonce;
8075 } else {
8076 var2 = "<=>";
8077 var3 = 3;
8078 var4 = string__NativeString__to_s_with_length(var2, var3);
8079 var1 = var4;
8080 varonce = var1;
8081 }
8082 var = var1;
8083 goto RET_LABEL;
8084 RET_LABEL:;
8085 return var;
8086 }
8087 /* method typing#AStarshipExpr#property_name for (self: Object): String */
8088 val* VIRTUAL_typing__AStarshipExpr__property_name(val* self) {
8089 val* var /* : String */;
8090 val* var1 /* : String */;
8091 var1 = typing__AStarshipExpr__property_name(self);
8092 var = var1;
8093 RET_LABEL:;
8094 return var;
8095 }
8096 /* method typing#AStarExpr#property_name for (self: AStarExpr): String */
8097 val* typing__AStarExpr__property_name(val* self) {
8098 val* var /* : String */;
8099 static val* varonce;
8100 val* var1 /* : String */;
8101 char* var2 /* : NativeString */;
8102 long var3 /* : Int */;
8103 val* var4 /* : String */;
8104 if (varonce) {
8105 var1 = varonce;
8106 } else {
8107 var2 = "*";
8108 var3 = 1;
8109 var4 = string__NativeString__to_s_with_length(var2, var3);
8110 var1 = var4;
8111 varonce = var1;
8112 }
8113 var = var1;
8114 goto RET_LABEL;
8115 RET_LABEL:;
8116 return var;
8117 }
8118 /* method typing#AStarExpr#property_name for (self: Object): String */
8119 val* VIRTUAL_typing__AStarExpr__property_name(val* self) {
8120 val* var /* : String */;
8121 val* var1 /* : String */;
8122 var1 = typing__AStarExpr__property_name(self);
8123 var = var1;
8124 RET_LABEL:;
8125 return var;
8126 }
8127 /* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */
8128 val* typing__ASlashExpr__property_name(val* self) {
8129 val* var /* : String */;
8130 static val* varonce;
8131 val* var1 /* : String */;
8132 char* var2 /* : NativeString */;
8133 long var3 /* : Int */;
8134 val* var4 /* : String */;
8135 if (varonce) {
8136 var1 = varonce;
8137 } else {
8138 var2 = "/";
8139 var3 = 1;
8140 var4 = string__NativeString__to_s_with_length(var2, var3);
8141 var1 = var4;
8142 varonce = var1;
8143 }
8144 var = var1;
8145 goto RET_LABEL;
8146 RET_LABEL:;
8147 return var;
8148 }
8149 /* method typing#ASlashExpr#property_name for (self: Object): String */
8150 val* VIRTUAL_typing__ASlashExpr__property_name(val* self) {
8151 val* var /* : String */;
8152 val* var1 /* : String */;
8153 var1 = typing__ASlashExpr__property_name(self);
8154 var = var1;
8155 RET_LABEL:;
8156 return var;
8157 }
8158 /* method typing#APercentExpr#property_name for (self: APercentExpr): String */
8159 val* typing__APercentExpr__property_name(val* self) {
8160 val* var /* : String */;
8161 static val* varonce;
8162 val* var1 /* : String */;
8163 char* var2 /* : NativeString */;
8164 long var3 /* : Int */;
8165 val* var4 /* : String */;
8166 if (varonce) {
8167 var1 = varonce;
8168 } else {
8169 var2 = "%";
8170 var3 = 1;
8171 var4 = string__NativeString__to_s_with_length(var2, var3);
8172 var1 = var4;
8173 varonce = var1;
8174 }
8175 var = var1;
8176 goto RET_LABEL;
8177 RET_LABEL:;
8178 return var;
8179 }
8180 /* method typing#APercentExpr#property_name for (self: Object): String */
8181 val* VIRTUAL_typing__APercentExpr__property_name(val* self) {
8182 val* var /* : String */;
8183 val* var1 /* : String */;
8184 var1 = typing__APercentExpr__property_name(self);
8185 var = var1;
8186 RET_LABEL:;
8187 return var;
8188 }
8189 /* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */
8190 val* typing__AUminusExpr__property_name(val* self) {
8191 val* var /* : String */;
8192 static val* varonce;
8193 val* var1 /* : String */;
8194 char* var2 /* : NativeString */;
8195 long var3 /* : Int */;
8196 val* var4 /* : String */;
8197 if (varonce) {
8198 var1 = varonce;
8199 } else {
8200 var2 = "unary -";
8201 var3 = 7;
8202 var4 = string__NativeString__to_s_with_length(var2, var3);
8203 var1 = var4;
8204 varonce = var1;
8205 }
8206 var = var1;
8207 goto RET_LABEL;
8208 RET_LABEL:;
8209 return var;
8210 }
8211 /* method typing#AUminusExpr#property_name for (self: Object): String */
8212 val* VIRTUAL_typing__AUminusExpr__property_name(val* self) {
8213 val* var /* : String */;
8214 val* var1 /* : String */;
8215 var1 = typing__AUminusExpr__property_name(self);
8216 var = var1;
8217 RET_LABEL:;
8218 return var;
8219 }
8220 /* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */
8221 val* typing__AUminusExpr__compute_raw_arguments(val* self) {
8222 val* var /* : Array[AExpr] */;
8223 val* var1 /* : Array[AExpr] */;
8224 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
8225 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[AExpr]>*/;
8226 var = var1;
8227 goto RET_LABEL;
8228 RET_LABEL:;
8229 return var;
8230 }
8231 /* method typing#AUminusExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8232 val* VIRTUAL_typing__AUminusExpr__compute_raw_arguments(val* self) {
8233 val* var /* : Array[AExpr] */;
8234 val* var1 /* : Array[AExpr] */;
8235 var1 = typing__AUminusExpr__compute_raw_arguments(self);
8236 var = var1;
8237 RET_LABEL:;
8238 return var;
8239 }
8240 /* method typing#ACallExpr#property_name for (self: ACallExpr): String */
8241 val* typing__ACallExpr__property_name(val* self) {
8242 val* var /* : String */;
8243 val* var1 /* : TId */;
8244 val* var2 /* : String */;
8245 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallExpr>*/;
8246 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8247 var = var2;
8248 goto RET_LABEL;
8249 RET_LABEL:;
8250 return var;
8251 }
8252 /* method typing#ACallExpr#property_name for (self: Object): String */
8253 val* VIRTUAL_typing__ACallExpr__property_name(val* self) {
8254 val* var /* : String */;
8255 val* var1 /* : String */;
8256 var1 = typing__ACallExpr__property_name(self);
8257 var = var1;
8258 RET_LABEL:;
8259 return var;
8260 }
8261 /* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */
8262 val* typing__ACallExpr__compute_raw_arguments(val* self) {
8263 val* var /* : Array[AExpr] */;
8264 val* var1 /* : AExprs */;
8265 val* var2 /* : Array[AExpr] */;
8266 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallExpr>*/;
8267 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8268 var = var2;
8269 goto RET_LABEL;
8270 RET_LABEL:;
8271 return var;
8272 }
8273 /* method typing#ACallExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8274 val* VIRTUAL_typing__ACallExpr__compute_raw_arguments(val* self) {
8275 val* var /* : Array[AExpr] */;
8276 val* var1 /* : Array[AExpr] */;
8277 var1 = typing__ACallExpr__compute_raw_arguments(self);
8278 var = var1;
8279 RET_LABEL:;
8280 return var;
8281 }
8282 /* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */
8283 val* typing__ACallAssignExpr__property_name(val* self) {
8284 val* var /* : String */;
8285 val* var1 /* : TId */;
8286 val* var2 /* : String */;
8287 static val* varonce;
8288 val* var3 /* : String */;
8289 char* var4 /* : NativeString */;
8290 long var5 /* : Int */;
8291 val* var6 /* : String */;
8292 val* var7 /* : String */;
8293 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallAssignExpr>*/;
8294 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8295 if (varonce) {
8296 var3 = varonce;
8297 } else {
8298 var4 = "=";
8299 var5 = 1;
8300 var6 = string__NativeString__to_s_with_length(var4, var5);
8301 var3 = var6;
8302 varonce = var3;
8303 }
8304 var7 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_string__String___43d]))(var2, var3) /* + on <var2:String>*/;
8305 var = var7;
8306 goto RET_LABEL;
8307 RET_LABEL:;
8308 return var;
8309 }
8310 /* method typing#ACallAssignExpr#property_name for (self: Object): String */
8311 val* VIRTUAL_typing__ACallAssignExpr__property_name(val* self) {
8312 val* var /* : String */;
8313 val* var1 /* : String */;
8314 var1 = typing__ACallAssignExpr__property_name(self);
8315 var = var1;
8316 RET_LABEL:;
8317 return var;
8318 }
8319 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */
8320 val* typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8321 val* var /* : Array[AExpr] */;
8322 val* var1 /* : AExprs */;
8323 val* var2 /* : Array[AExpr] */;
8324 val* var_res /* var res: Array[AExpr] */;
8325 val* var3 /* : AExpr */;
8326 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallAssignExpr>*/;
8327 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8328 var_res = var2;
8329 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ACallAssignExpr>*/;
8330 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8331 var = var_res;
8332 goto RET_LABEL;
8333 RET_LABEL:;
8334 return var;
8335 }
8336 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8337 val* VIRTUAL_typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8338 val* var /* : Array[AExpr] */;
8339 val* var1 /* : Array[AExpr] */;
8340 var1 = typing__ACallAssignExpr__compute_raw_arguments(self);
8341 var = var1;
8342 RET_LABEL:;
8343 return var;
8344 }
8345 /* method typing#ABraExpr#property_name for (self: ABraExpr): String */
8346 val* typing__ABraExpr__property_name(val* self) {
8347 val* var /* : String */;
8348 static val* varonce;
8349 val* var1 /* : String */;
8350 char* var2 /* : NativeString */;
8351 long var3 /* : Int */;
8352 val* var4 /* : String */;
8353 if (varonce) {
8354 var1 = varonce;
8355 } else {
8356 var2 = "[]";
8357 var3 = 2;
8358 var4 = string__NativeString__to_s_with_length(var2, var3);
8359 var1 = var4;
8360 varonce = var1;
8361 }
8362 var = var1;
8363 goto RET_LABEL;
8364 RET_LABEL:;
8365 return var;
8366 }
8367 /* method typing#ABraExpr#property_name for (self: Object): String */
8368 val* VIRTUAL_typing__ABraExpr__property_name(val* self) {
8369 val* var /* : String */;
8370 val* var1 /* : String */;
8371 var1 = typing__ABraExpr__property_name(self);
8372 var = var1;
8373 RET_LABEL:;
8374 return var;
8375 }
8376 /* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */
8377 val* typing__ABraExpr__compute_raw_arguments(val* self) {
8378 val* var /* : Array[AExpr] */;
8379 val* var1 /* : AExprs */;
8380 val* var2 /* : Array[AExpr] */;
8381 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraExpr>*/;
8382 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8383 var = var2;
8384 goto RET_LABEL;
8385 RET_LABEL:;
8386 return var;
8387 }
8388 /* method typing#ABraExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8389 val* VIRTUAL_typing__ABraExpr__compute_raw_arguments(val* self) {
8390 val* var /* : Array[AExpr] */;
8391 val* var1 /* : Array[AExpr] */;
8392 var1 = typing__ABraExpr__compute_raw_arguments(self);
8393 var = var1;
8394 RET_LABEL:;
8395 return var;
8396 }
8397 /* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */
8398 val* typing__ABraAssignExpr__property_name(val* self) {
8399 val* var /* : String */;
8400 static val* varonce;
8401 val* var1 /* : String */;
8402 char* var2 /* : NativeString */;
8403 long var3 /* : Int */;
8404 val* var4 /* : String */;
8405 if (varonce) {
8406 var1 = varonce;
8407 } else {
8408 var2 = "[]=";
8409 var3 = 3;
8410 var4 = string__NativeString__to_s_with_length(var2, var3);
8411 var1 = var4;
8412 varonce = var1;
8413 }
8414 var = var1;
8415 goto RET_LABEL;
8416 RET_LABEL:;
8417 return var;
8418 }
8419 /* method typing#ABraAssignExpr#property_name for (self: Object): String */
8420 val* VIRTUAL_typing__ABraAssignExpr__property_name(val* self) {
8421 val* var /* : String */;
8422 val* var1 /* : String */;
8423 var1 = typing__ABraAssignExpr__property_name(self);
8424 var = var1;
8425 RET_LABEL:;
8426 return var;
8427 }
8428 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */
8429 val* typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8430 val* var /* : Array[AExpr] */;
8431 val* var1 /* : AExprs */;
8432 val* var2 /* : Array[AExpr] */;
8433 val* var_res /* var res: Array[AExpr] */;
8434 val* var3 /* : AExpr */;
8435 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraAssignExpr>*/;
8436 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8437 var_res = var2;
8438 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ABraAssignExpr>*/;
8439 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8440 var = var_res;
8441 goto RET_LABEL;
8442 RET_LABEL:;
8443 return var;
8444 }
8445 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8446 val* VIRTUAL_typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8447 val* var /* : Array[AExpr] */;
8448 val* var1 /* : Array[AExpr] */;
8449 var1 = typing__ABraAssignExpr__compute_raw_arguments(self);
8450 var = var1;
8451 RET_LABEL:;
8452 return var;
8453 }
8454 /* method typing#ASendReassignFormExpr#write_mproperty for (self: ASendReassignFormExpr): nullable MMethod */
8455 val* typing__ASendReassignFormExpr__write_mproperty(val* self) {
8456 val* var /* : nullable MMethod */;
8457 val* var1 /* : nullable CallSite */;
8458 val* var2 /* : MMethod */;
8459 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite]))(self) /* write_callsite on <self:ASendReassignFormExpr>*/;
8460 if (var1 == NULL) {
8461 fprintf(stderr, "Runtime error: %s", "Reciever is null");
8462 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1357);
8463 show_backtrace(1);
8464 } else {
8465 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
8466 }
8467 var = var2;
8468 goto RET_LABEL;
8469 RET_LABEL:;
8470 return var;
8471 }
8472 /* method typing#ASendReassignFormExpr#write_mproperty for (self: Object): nullable MMethod */
8473 val* VIRTUAL_typing__ASendReassignFormExpr__write_mproperty(val* self) {
8474 val* var /* : nullable MMethod */;
8475 val* var1 /* : nullable MMethod */;
8476 var1 = typing__ASendReassignFormExpr__write_mproperty(self);
8477 var = var1;
8478 RET_LABEL:;
8479 return var;
8480 }
8481 /* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */
8482 val* typing__ASendReassignFormExpr__write_callsite(val* self) {
8483 val* var /* : nullable CallSite */;
8484 val* var1 /* : nullable CallSite */;
8485 var1 = self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val; /* @write_callsite on <self:ASendReassignFormExpr> */
8486 var = var1;
8487 RET_LABEL:;
8488 return var;
8489 }
8490 /* method typing#ASendReassignFormExpr#write_callsite for (self: Object): nullable CallSite */
8491 val* VIRTUAL_typing__ASendReassignFormExpr__write_callsite(val* self) {
8492 val* var /* : nullable CallSite */;
8493 val* var1 /* : nullable CallSite */;
8494 var1 = typing__ASendReassignFormExpr__write_callsite(self);
8495 var = var1;
8496 RET_LABEL:;
8497 return var;
8498 }
8499 /* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */
8500 void typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8501 self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val = p0; /* @write_callsite on <self:ASendReassignFormExpr> */
8502 RET_LABEL:;
8503 }
8504 /* method typing#ASendReassignFormExpr#write_callsite= for (self: Object, nullable CallSite) */
8505 void VIRTUAL_typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8506 typing__ASendReassignFormExpr__write_callsite_61d(self, p0);
8507 RET_LABEL:;
8508 }
8509 /* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */
8510 void typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8511 val* var_v /* var v: TypeVisitor */;
8512 val* var /* : AExpr */;
8513 val* var1 /* : nullable MType */;
8514 val* var_recvtype /* var recvtype: nullable MType */;
8515 val* var2 /* : String */;
8516 val* var_name /* var name: String */;
8517 val* var3 /* : null */;
8518 short int var4 /* : Bool */;
8519 short int var5 /* : Bool */;
8520 int cltype;
8521 int idtype;
8522 static val* varonce;
8523 val* var6 /* : String */;
8524 char* var7 /* : NativeString */;
8525 long var8 /* : Int */;
8526 val* var9 /* : String */;
8527 static val* varonce10;
8528 val* var11 /* : String */;
8529 char* var12 /* : NativeString */;
8530 long var13 /* : Int */;
8531 val* var14 /* : String */;
8532 val* var15 /* : Array[Object] */;
8533 long var16 /* : Int */;
8534 val* var17 /* : NativeArray[Object] */;
8535 val* var18 /* : String */;
8536 val* var19 /* : AExpr */;
8537 short int var20 /* : Bool */;
8538 int cltype21;
8539 int idtype22;
8540 short int var_for_self /* var for_self: Bool */;
8541 val* var23 /* : nullable CallSite */;
8542 val* var_callsite /* var callsite: nullable CallSite */;
8543 val* var24 /* : null */;
8544 short int var25 /* : Bool */;
8545 val* var26 /* : Array[AExpr] */;
8546 val* var_args /* var args: Array[AExpr] */;
8547 short int var27 /* : Bool */;
8548 val* var28 /* : MSignature */;
8549 val* var29 /* : nullable MType */;
8550 val* var_readtype /* var readtype: nullable MType */;
8551 val* var30 /* : null */;
8552 short int var31 /* : Bool */;
8553 static val* varonce32;
8554 val* var33 /* : String */;
8555 char* var34 /* : NativeString */;
8556 long var35 /* : Int */;
8557 val* var36 /* : String */;
8558 static val* varonce37;
8559 val* var38 /* : String */;
8560 char* var39 /* : NativeString */;
8561 long var40 /* : Int */;
8562 val* var41 /* : String */;
8563 val* var42 /* : Array[Object] */;
8564 long var43 /* : Int */;
8565 val* var44 /* : NativeArray[Object] */;
8566 val* var45 /* : String */;
8567 static val* varonce46;
8568 val* var47 /* : String */;
8569 char* var48 /* : NativeString */;
8570 long var49 /* : Int */;
8571 val* var50 /* : String */;
8572 val* var51 /* : String */;
8573 val* var52 /* : AExpr */;
8574 short int var53 /* : Bool */;
8575 int cltype54;
8576 int idtype55;
8577 val* var56 /* : nullable CallSite */;
8578 val* var_wcallsite /* var wcallsite: nullable CallSite */;
8579 val* var57 /* : null */;
8580 short int var58 /* : Bool */;
8581 val* var59 /* : MSignature */;
8582 val* var60 /* : Array[MParameter] */;
8583 val* var61 /* : nullable Object */;
8584 val* var62 /* : MType */;
8585 val* var63 /* : nullable MType */;
8586 val* var_wtype /* var wtype: nullable MType */;
8587 val* var64 /* : null */;
8588 short int var65 /* : Bool */;
8589 val* var66 /* : Array[nullable Object] */;
8590 val* var67 /* : AExpr */;
8591 short int var68 /* : Bool */;
8592 short int var69 /* : Bool */;
8593 var_v = p0;
8594 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8595 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
8596 var_recvtype = var1;
8597 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendReassignFormExpr>*/;
8598 var_name = var2;
8599 var3 = NULL;
8600 if (var_recvtype == NULL) {
8601 var4 = 1; /* is null */
8602 } else {
8603 var4 = 0; /* arg is null but recv is not */
8604 }
8605 if (var4){
8606 goto RET_LABEL;
8607 } else {
8608 }
8609 /* <var_recvtype:nullable MType(MType)> isa MNullType */
8610 cltype = type_model__MNullType.color;
8611 idtype = type_model__MNullType.id;
8612 if(cltype >= var_recvtype->type->table_size) {
8613 var5 = 0;
8614 } else {
8615 var5 = var_recvtype->type->type_table[cltype] == idtype;
8616 }
8617 if (var5){
8618 if (varonce) {
8619 var6 = varonce;
8620 } else {
8621 var7 = "Error: Method \'";
8622 var8 = 15;
8623 var9 = string__NativeString__to_s_with_length(var7, var8);
8624 var6 = var9;
8625 varonce = var6;
8626 }
8627 if (varonce10) {
8628 var11 = varonce10;
8629 } else {
8630 var12 = "\' call on \'null\'.";
8631 var13 = 17;
8632 var14 = string__NativeString__to_s_with_length(var12, var13);
8633 var11 = var14;
8634 varonce10 = var11;
8635 }
8636 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
8637 { /* var15 = array_instance Array[Object] */
8638 var16 = 3;
8639 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
8640 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
8641 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
8642 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
8643 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
8644 }
8645 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
8646 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
8647 goto RET_LABEL;
8648 } else {
8649 }
8650 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8651 /* <var19:AExpr> isa ASelfExpr */
8652 cltype21 = type_parser_nodes__ASelfExpr.color;
8653 idtype22 = type_parser_nodes__ASelfExpr.id;
8654 if(cltype21 >= var19->type->table_size) {
8655 var20 = 0;
8656 } else {
8657 var20 = var19->type->type_table[cltype21] == idtype22;
8658 }
8659 var_for_self = var20;
8660 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>*/;
8661 var_callsite = var23;
8662 var24 = NULL;
8663 if (var_callsite == NULL) {
8664 var25 = 1; /* is null */
8665 } else {
8666 var25 = 0; /* arg is null but recv is not */
8667 }
8668 if (var25){
8669 goto RET_LABEL;
8670 } else {
8671 }
8672 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendReassignFormExpr>*/;
8673 var26 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendReassignFormExpr>*/;
8674 var_args = var26;
8675 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendReassignFormExpr>*/;
8676 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)>*/;
8677 var27;
8678 var28 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
8679 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MSignature__return_mtype]))(var28) /* return_mtype on <var28:MSignature>*/;
8680 var_readtype = var29;
8681 var30 = NULL;
8682 if (var_readtype == NULL) {
8683 var31 = 1; /* is null */
8684 } else {
8685 var31 = 0; /* arg is null but recv is not */
8686 }
8687 if (var31){
8688 if (varonce32) {
8689 var33 = varonce32;
8690 } else {
8691 var34 = "Error: ";
8692 var35 = 7;
8693 var36 = string__NativeString__to_s_with_length(var34, var35);
8694 var33 = var36;
8695 varonce32 = var33;
8696 }
8697 if (varonce37) {
8698 var38 = varonce37;
8699 } else {
8700 var39 = " is not a function";
8701 var40 = 18;
8702 var41 = string__NativeString__to_s_with_length(var39, var40);
8703 var38 = var41;
8704 varonce37 = var38;
8705 }
8706 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
8707 { /* var42 = array_instance Array[Object] */
8708 var43 = 3;
8709 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
8710 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var33;
8711 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_name;
8712 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
8713 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
8714 }
8715 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
8716 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var45) /* error on <var_v:TypeVisitor>*/;
8717 goto RET_LABEL;
8718 } else {
8719 }
8720 if (varonce46) {
8721 var47 = varonce46;
8722 } else {
8723 var48 = "=";
8724 var49 = 1;
8725 var50 = string__NativeString__to_s_with_length(var48, var49);
8726 var47 = var50;
8727 varonce46 = var47;
8728 }
8729 var51 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var47) /* + on <var_name:String>*/;
8730 var52 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8731 /* <var52:AExpr> isa ASelfExpr */
8732 cltype54 = type_parser_nodes__ASelfExpr.color;
8733 idtype55 = type_parser_nodes__ASelfExpr.id;
8734 if(cltype54 >= var52->type->table_size) {
8735 var53 = 0;
8736 } else {
8737 var53 = var52->type->type_table[cltype54] == idtype55;
8738 }
8739 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>*/;
8740 var_wcallsite = var56;
8741 var57 = NULL;
8742 if (var_wcallsite == NULL) {
8743 var58 = 1; /* is null */
8744 } else {
8745 var58 = 0; /* arg is null but recv is not */
8746 }
8747 if (var58){
8748 goto RET_LABEL;
8749 } else {
8750 }
8751 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite_61d]))(self, var_wcallsite) /* write_callsite= on <self:ASendReassignFormExpr>*/;
8752 var59 = ((val* (*)(val*))(var_wcallsite->class->vft[COLOR_typing__CallSite__msignature]))(var_wcallsite) /* msignature on <var_wcallsite:nullable CallSite(CallSite)>*/;
8753 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_model__MSignature__mparameters]))(var59) /* mparameters on <var59:MSignature>*/;
8754 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var60) /* last on <var60:Array[MParameter]>*/;
8755 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MParameter__mtype]))(var61) /* mtype on <var61:nullable Object(MParameter)>*/;
8756 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>*/;
8757 var_wtype = var63;
8758 var64 = NULL;
8759 if (var_wtype == NULL) {
8760 var65 = 1; /* is null */
8761 } else {
8762 var65 = 0; /* arg is null but recv is not */
8763 }
8764 if (var65){
8765 goto RET_LABEL;
8766 } else {
8767 }
8768 var66 = ((val* (*)(val*))(var_args->class->vft[COLOR_array__Collection__to_a]))(var_args) /* to_a on <var_args:Array[AExpr]>*/;
8769 var_args = var66;
8770 var67 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
8771 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var67) /* add on <var_args:Array[AExpr]>*/;
8772 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)>*/;
8773 var68;
8774 var69 = 1;
8775 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var69) /* is_typed= on <self:ASendReassignFormExpr>*/;
8776 RET_LABEL:;
8777 }
8778 /* method typing#ASendReassignFormExpr#accept_typing for (self: Object, TypeVisitor) */
8779 void VIRTUAL_typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8780 typing__ASendReassignFormExpr__accept_typing(self, p0);
8781 RET_LABEL:;
8782 }
8783 /* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */
8784 val* typing__ACallReassignExpr__property_name(val* self) {
8785 val* var /* : String */;
8786 val* var1 /* : TId */;
8787 val* var2 /* : String */;
8788 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallReassignExpr>*/;
8789 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8790 var = var2;
8791 goto RET_LABEL;
8792 RET_LABEL:;
8793 return var;
8794 }
8795 /* method typing#ACallReassignExpr#property_name for (self: Object): String */
8796 val* VIRTUAL_typing__ACallReassignExpr__property_name(val* self) {
8797 val* var /* : String */;
8798 val* var1 /* : String */;
8799 var1 = typing__ACallReassignExpr__property_name(self);
8800 var = var1;
8801 RET_LABEL:;
8802 return var;
8803 }
8804 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */
8805 val* typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8806 val* var /* : Array[AExpr] */;
8807 val* var1 /* : AExprs */;
8808 val* var2 /* : Array[AExpr] */;
8809 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallReassignExpr>*/;
8810 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8811 var = var2;
8812 goto RET_LABEL;
8813 RET_LABEL:;
8814 return var;
8815 }
8816 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8817 val* VIRTUAL_typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8818 val* var /* : Array[AExpr] */;
8819 val* var1 /* : Array[AExpr] */;
8820 var1 = typing__ACallReassignExpr__compute_raw_arguments(self);
8821 var = var1;
8822 RET_LABEL:;
8823 return var;
8824 }
8825 /* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */
8826 val* typing__ABraReassignExpr__property_name(val* self) {
8827 val* var /* : String */;
8828 static val* varonce;
8829 val* var1 /* : String */;
8830 char* var2 /* : NativeString */;
8831 long var3 /* : Int */;
8832 val* var4 /* : String */;
8833 if (varonce) {
8834 var1 = varonce;
8835 } else {
8836 var2 = "[]";
8837 var3 = 2;
8838 var4 = string__NativeString__to_s_with_length(var2, var3);
8839 var1 = var4;
8840 varonce = var1;
8841 }
8842 var = var1;
8843 goto RET_LABEL;
8844 RET_LABEL:;
8845 return var;
8846 }
8847 /* method typing#ABraReassignExpr#property_name for (self: Object): String */
8848 val* VIRTUAL_typing__ABraReassignExpr__property_name(val* self) {
8849 val* var /* : String */;
8850 val* var1 /* : String */;
8851 var1 = typing__ABraReassignExpr__property_name(self);
8852 var = var1;
8853 RET_LABEL:;
8854 return var;
8855 }
8856 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */
8857 val* typing__ABraReassignExpr__compute_raw_arguments(val* self) {
8858 val* var /* : Array[AExpr] */;
8859 val* var1 /* : AExprs */;
8860 val* var2 /* : Array[AExpr] */;
8861 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraReassignExpr>*/;
8862 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8863 var = var2;
8864 goto RET_LABEL;
8865 RET_LABEL:;
8866 return var;
8867 }
8868 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8869 val* VIRTUAL_typing__ABraReassignExpr__compute_raw_arguments(val* self) {
8870 val* var /* : Array[AExpr] */;
8871 val* var1 /* : Array[AExpr] */;
8872 var1 = typing__ABraReassignExpr__compute_raw_arguments(self);
8873 var = var1;
8874 RET_LABEL:;
8875 return var;
8876 }
8877 /* method typing#AInitExpr#property_name for (self: AInitExpr): String */
8878 val* typing__AInitExpr__property_name(val* self) {
8879 val* var /* : String */;
8880 static val* varonce;
8881 val* var1 /* : String */;
8882 char* var2 /* : NativeString */;
8883 long var3 /* : Int */;
8884 val* var4 /* : String */;
8885 if (varonce) {
8886 var1 = varonce;
8887 } else {
8888 var2 = "init";
8889 var3 = 4;
8890 var4 = string__NativeString__to_s_with_length(var2, var3);
8891 var1 = var4;
8892 varonce = var1;
8893 }
8894 var = var1;
8895 goto RET_LABEL;
8896 RET_LABEL:;
8897 return var;
8898 }
8899 /* method typing#AInitExpr#property_name for (self: Object): String */
8900 val* VIRTUAL_typing__AInitExpr__property_name(val* self) {
8901 val* var /* : String */;
8902 val* var1 /* : String */;
8903 var1 = typing__AInitExpr__property_name(self);
8904 var = var1;
8905 RET_LABEL:;
8906 return var;
8907 }
8908 /* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */
8909 val* typing__AInitExpr__compute_raw_arguments(val* self) {
8910 val* var /* : Array[AExpr] */;
8911 val* var1 /* : AExprs */;
8912 val* var2 /* : Array[AExpr] */;
8913 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AInitExpr__n_args]))(self) /* n_args on <self:AInitExpr>*/;
8914 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8915 var = var2;
8916 goto RET_LABEL;
8917 RET_LABEL:;
8918 return var;
8919 }
8920 /* method typing#AInitExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8921 val* VIRTUAL_typing__AInitExpr__compute_raw_arguments(val* self) {
8922 val* var /* : Array[AExpr] */;
8923 val* var1 /* : Array[AExpr] */;
8924 var1 = typing__AInitExpr__compute_raw_arguments(self);
8925 var = var1;
8926 RET_LABEL:;
8927 return var;
8928 }
8929 /* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */
8930 val* typing__AExprs__to_a(val* self) {
8931 val* var /* : Array[AExpr] */;
8932 val* var1 /* : ANodes[AExpr] */;
8933 val* var2 /* : Array[nullable Object] */;
8934 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(self) /* n_exprs on <self:AExprs>*/;
8935 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:ANodes[AExpr]>*/;
8936 var = var2;
8937 goto RET_LABEL;
8938 RET_LABEL:;
8939 return var;
8940 }
8941 /* method typing#AExprs#to_a for (self: Object): Array[AExpr] */
8942 val* VIRTUAL_typing__AExprs__to_a(val* self) {
8943 val* var /* : Array[AExpr] */;
8944 val* var1 /* : Array[AExpr] */;
8945 var1 = typing__AExprs__to_a(self);
8946 var = var1;
8947 RET_LABEL:;
8948 return var;
8949 }
8950 /* method typing#ASuperExpr#mproperty for (self: ASuperExpr): nullable MMethod */
8951 val* typing__ASuperExpr__mproperty(val* self) {
8952 val* var /* : nullable MMethod */;
8953 val* var1 /* : nullable MMethod */;
8954 var1 = self->attrs[COLOR_typing__ASuperExpr___64dmproperty].val; /* @mproperty on <self:ASuperExpr> */
8955 var = var1;
8956 RET_LABEL:;
8957 return var;
8958 }
8959 /* method typing#ASuperExpr#mproperty for (self: Object): nullable MMethod */
8960 val* VIRTUAL_typing__ASuperExpr__mproperty(val* self) {
8961 val* var /* : nullable MMethod */;
8962 val* var1 /* : nullable MMethod */;
8963 var1 = typing__ASuperExpr__mproperty(self);
8964 var = var1;
8965 RET_LABEL:;
8966 return var;
8967 }
8968 /* method typing#ASuperExpr#mproperty= for (self: ASuperExpr, nullable MMethod) */
8969 void typing__ASuperExpr__mproperty_61d(val* self, val* p0) {
8970 self->attrs[COLOR_typing__ASuperExpr___64dmproperty].val = p0; /* @mproperty on <self:ASuperExpr> */
8971 RET_LABEL:;
8972 }
8973 /* method typing#ASuperExpr#mproperty= for (self: Object, nullable MMethod) */
8974 void VIRTUAL_typing__ASuperExpr__mproperty_61d(val* self, val* p0) {
8975 typing__ASuperExpr__mproperty_61d(self, p0);
8976 RET_LABEL:;
8977 }
8978 /* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */
8979 void typing__ASuperExpr__accept_typing(val* self, val* p0) {
8980 val* var_v /* var v: TypeVisitor */;
8981 val* var /* : AClassdef */;
8982 val* var1 /* : nullable MClassDef */;
8983 val* var2 /* : MClassType */;
8984 val* var_recvtype /* var recvtype: MClassType */;
8985 val* var3 /* : MPropDef */;
8986 val* var4 /* : MProperty */;
8987 val* var_mproperty /* var mproperty: MProperty */;
8988 short int var5 /* : Bool */;
8989 int cltype;
8990 int idtype;
8991 short int var6 /* : Bool */;
8992 static val* varonce;
8993 val* var7 /* : String */;
8994 char* var8 /* : NativeString */;
8995 long var9 /* : Int */;
8996 val* var10 /* : String */;
8997 val* var11 /* : MModule */;
8998 val* var12 /* : Array[MPropDef] */;
8999 val* var_superprops /* var superprops: Array[MPropDef] */;
9000 long var13 /* : Int */;
9001 long var14 /* : Int */;
9002 short int var15 /* : Bool */;
9003 short int var17 /* : Bool */;
9004 short int var18 /* : Bool */;
9005 short int var19 /* : Bool */;
9006 short int var_ /* var : Bool */;
9007 val* var20 /* : MPropDef */;
9008 short int var21 /* : Bool */;
9009 static val* varonce22;
9010 val* var23 /* : String */;
9011 char* var24 /* : NativeString */;
9012 long var25 /* : Int */;
9013 val* var26 /* : String */;
9014 static val* varonce27;
9015 val* var28 /* : String */;
9016 char* var29 /* : NativeString */;
9017 long var30 /* : Int */;
9018 val* var31 /* : String */;
9019 val* var32 /* : Array[Object] */;
9020 long var33 /* : Int */;
9021 val* var34 /* : NativeArray[Object] */;
9022 val* var35 /* : String */;
9023 val* var36 /* : nullable Object */;
9024 val* var_superprop /* var superprop: MPropDef */;
9025 short int var37 /* : Bool */;
9026 int cltype38;
9027 int idtype39;
9028 short int var40 /* : Bool */;
9029 val* var41 /* : MSignature */;
9030 val* var_msignature /* var msignature: MSignature */;
9031 val* var42 /* : AExprs */;
9032 val* var43 /* : Array[AExpr] */;
9033 val* var_args /* var args: Array[AExpr] */;
9034 long var44 /* : Int */;
9035 long var45 /* : Int */;
9036 short int var46 /* : Bool */;
9037 short int var48 /* : Bool */;
9038 int cltype49;
9039 int idtype50;
9040 const char* var_class_name;
9041 short int var51 /* : Bool */;
9042 val* var52 /* : String */;
9043 short int var53 /* : Bool */;
9044 val* var54 /* : nullable MType */;
9045 short int var55 /* : Bool */;
9046 val* var56 /* : MPropDef */;
9047 short int var57 /* : Bool */;
9048 var_v = p0;
9049 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9050 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9051 if (var1 == NULL) {
9052 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9053 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1433);
9054 show_backtrace(1);
9055 } else {
9056 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9057 }
9058 var_recvtype = var2;
9059 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9060 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9061 var_mproperty = var4;
9062 /* <var_mproperty:MProperty> isa MMethod */
9063 cltype = type_model__MMethod.color;
9064 idtype = type_model__MMethod.id;
9065 if(cltype >= var_mproperty->type->table_size) {
9066 var5 = 0;
9067 } else {
9068 var5 = var_mproperty->type->type_table[cltype] == idtype;
9069 }
9070 var6 = !var5;
9071 if (var6){
9072 if (varonce) {
9073 var7 = varonce;
9074 } else {
9075 var8 = "Error: super only usable in a method";
9076 var9 = 36;
9077 var10 = string__NativeString__to_s_with_length(var8, var9);
9078 var7 = var10;
9079 varonce = var7;
9080 }
9081 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var7) /* error on <var_v:TypeVisitor>*/;
9082 goto RET_LABEL;
9083 } else {
9084 }
9085 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9086 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)>*/;
9087 var_superprops = var12;
9088 var13 = ((long (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__length]))(var_superprops) /* length on <var_superprops:Array[MPropDef]>*/;
9089 var14 = 0;
9090 { /* Inline kernel#Int#== (var13,var14) */
9091 var17 = var13 == var14;
9092 var15 = var17;
9093 goto RET_LABEL16;
9094 RET_LABEL16:(void)0;
9095 }
9096 if (var15){
9097 var19 = ((short int (*)(val*))(var_mproperty->class->vft[COLOR_model__MMethod__is_init]))(var_mproperty) /* is_init on <var_mproperty:MProperty(MMethod)>*/;
9098 var_ = var19;
9099 if (var19){
9100 var20 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9101 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_model__MPropDef__is_intro]))(var20) /* is_intro on <var20:MPropDef>*/;
9102 var18 = var21;
9103 } else {
9104 var18 = var_;
9105 }
9106 if (var18){
9107 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__process_superinit]))(self, var_v) /* process_superinit on <self:ASuperExpr>*/;
9108 goto RET_LABEL;
9109 } else {
9110 }
9111 if (varonce22) {
9112 var23 = varonce22;
9113 } else {
9114 var24 = "Error: No super method to call for ";
9115 var25 = 35;
9116 var26 = string__NativeString__to_s_with_length(var24, var25);
9117 var23 = var26;
9118 varonce22 = var23;
9119 }
9120 if (varonce27) {
9121 var28 = varonce27;
9122 } else {
9123 var29 = ".";
9124 var30 = 1;
9125 var31 = string__NativeString__to_s_with_length(var29, var30);
9126 var28 = var31;
9127 varonce27 = var28;
9128 }
9129 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9130 { /* var32 = array_instance Array[Object] */
9131 var33 = 3;
9132 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
9133 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
9134 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_mproperty;
9135 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
9136 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
9137 }
9138 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
9139 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var35) /* error on <var_v:TypeVisitor>*/;
9140 goto RET_LABEL;
9141 } else {
9142 }
9143 var36 = ((val* (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__first]))(var_superprops) /* first on <var_superprops:Array[MPropDef]>*/;
9144 var_superprop = var36;
9145 /* <var_superprop:MPropDef> isa MMethodDef */
9146 cltype38 = type_model__MMethodDef.color;
9147 idtype39 = type_model__MMethodDef.id;
9148 if(cltype38 >= var_superprop->type->table_size) {
9149 var37 = 0;
9150 } else {
9151 var37 = var_superprop->type->type_table[cltype38] == idtype39;
9152 }
9153 if (!var37) {
9154 fprintf(stderr, "Runtime error: %s", "Assert failed");
9155 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1450);
9156 show_backtrace(1);
9157 }
9158 var40 = 1;
9159 var41 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(var_v, var_superprop, var_recvtype, var40) /* resolve_signature_for on <var_v:TypeVisitor>*/;
9160 var_msignature = var41;
9161 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9162 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_typing__AExprs__to_a]))(var42) /* to_a on <var42:AExprs>*/;
9163 var_args = var43;
9164 var44 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9165 var45 = 0;
9166 { /* Inline kernel#Int#> (var44,var45) */
9167 /* Covariant cast for argument 0 (i) <var45:Int> isa OTHER */
9168 /* <var45:Int> isa OTHER */
9169 var48 = 1; /* easy <var45:Int> isa OTHER*/
9170 if (!var48) {
9171 var_class_name = type_kernel__Int.name;
9172 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
9173 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9174 show_backtrace(1);
9175 }
9176 var51 = var44 > var45;
9177 var46 = var51;
9178 goto RET_LABEL47;
9179 RET_LABEL47:(void)0;
9180 }
9181 if (var46){
9182 var52 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty(MMethod)>*/;
9183 var53 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, self, var_args, var52, var_msignature) /* check_signature on <var_v:TypeVisitor>*/;
9184 var53;
9185 } else {
9186 }
9187 var54 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
9188 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var54) /* mtype= on <self:ASuperExpr>*/;
9189 var55 = 1;
9190 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var55) /* is_typed= on <self:ASuperExpr>*/;
9191 var56 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9192 var57 = 1;
9193 ((void (*)(val*, short int))(var56->class->vft[COLOR_typing__MPropDef__has_supercall_61d]))(var56, var57) /* has_supercall= on <var56:MPropDef>*/;
9194 RET_LABEL:;
9195 }
9196 /* method typing#ASuperExpr#accept_typing for (self: Object, TypeVisitor) */
9197 void VIRTUAL_typing__ASuperExpr__accept_typing(val* self, val* p0) {
9198 typing__ASuperExpr__accept_typing(self, p0);
9199 RET_LABEL:;
9200 }
9201 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
9202 void typing__ASuperExpr__process_superinit(val* self, val* p0) {
9203 val* var_v /* var v: TypeVisitor */;
9204 val* var /* : AClassdef */;
9205 val* var1 /* : nullable MClassDef */;
9206 val* var2 /* : MClassType */;
9207 val* var_recvtype /* var recvtype: MClassType */;
9208 val* var3 /* : MPropDef */;
9209 val* var4 /* : MProperty */;
9210 val* var_mproperty /* var mproperty: MProperty */;
9211 val* var5 /* : null */;
9212 val* var_superprop /* var superprop: nullable MMethodDef */;
9213 val* var6 /* : AClassdef */;
9214 val* var7 /* : nullable MClassDef */;
9215 val* var8 /* : Array[MClassType] */;
9216 val* var9 /* : Iterator[nullable Object] */;
9217 short int var10 /* : Bool */;
9218 val* var11 /* : nullable Object */;
9219 val* var_msupertype /* var msupertype: MClassType */;
9220 val* var12 /* : MModule */;
9221 val* var13 /* : MType */;
9222 val* var14 /* : ModelBuilder */;
9223 val* var15 /* : ToolContext */;
9224 long var16 /* : Int */;
9225 long var_errcount /* var errcount: Int */;
9226 val* var17 /* : String */;
9227 val* var18 /* : nullable MProperty */;
9228 short int var19 /* : Bool */;
9229 int cltype;
9230 int idtype;
9231 const char* var_class_name;
9232 val* var_candidate /* var candidate: nullable MMethod */;
9233 val* var20 /* : null */;
9234 short int var21 /* : Bool */;
9235 val* var22 /* : ModelBuilder */;
9236 val* var23 /* : ToolContext */;
9237 long var24 /* : Int */;
9238 short int var25 /* : Bool */;
9239 short int var27 /* : Bool */;
9240 int cltype28;
9241 int idtype29;
9242 const char* var_class_name30;
9243 short int var31 /* : Bool */;
9244 short int var32 /* : Bool */;
9245 val* var33 /* : null */;
9246 short int var34 /* : Bool */;
9247 short int var_ /* var : Bool */;
9248 val* var35 /* : MProperty */;
9249 short int var36 /* : Bool */;
9250 static val* varonce;
9251 val* var37 /* : String */;
9252 char* var38 /* : NativeString */;
9253 long var39 /* : Int */;
9254 val* var40 /* : String */;
9255 static val* varonce41;
9256 val* var42 /* : String */;
9257 char* var43 /* : NativeString */;
9258 long var44 /* : Int */;
9259 val* var45 /* : String */;
9260 val* var46 /* : String */;
9261 static val* varonce47;
9262 val* var48 /* : String */;
9263 char* var49 /* : NativeString */;
9264 long var50 /* : Int */;
9265 val* var51 /* : String */;
9266 val* var52 /* : MProperty */;
9267 val* var53 /* : String */;
9268 val* var54 /* : Array[Object] */;
9269 long var55 /* : Int */;
9270 val* var56 /* : NativeArray[Object] */;
9271 val* var57 /* : String */;
9272 val* var58 /* : MModule */;
9273 val* var59 /* : Array[MPropDef] */;
9274 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
9275 val* var60 /* : null */;
9276 short int var61 /* : Bool */;
9277 val* var62 /* : nullable Object */;
9278 short int var63 /* : Bool */;
9279 long var64 /* : Int */;
9280 long var65 /* : Int */;
9281 short int var66 /* : Bool */;
9282 short int var68 /* : Bool */;
9283 int cltype69;
9284 int idtype70;
9285 const char* var_class_name71;
9286 short int var72 /* : Bool */;
9287 static val* varonce73;
9288 val* var74 /* : String */;
9289 char* var75 /* : NativeString */;
9290 long var76 /* : Int */;
9291 val* var77 /* : String */;
9292 static val* varonce78;
9293 val* var79 /* : String */;
9294 char* var80 /* : NativeString */;
9295 long var81 /* : Int */;
9296 val* var82 /* : String */;
9297 static val* varonce83;
9298 val* var84 /* : String */;
9299 char* var85 /* : NativeString */;
9300 long var86 /* : Int */;
9301 val* var87 /* : String */;
9302 static val* varonce88;
9303 val* var89 /* : String */;
9304 char* var90 /* : NativeString */;
9305 long var91 /* : Int */;
9306 val* var92 /* : String */;
9307 val* var93 /* : String */;
9308 val* var94 /* : Array[Object] */;
9309 long var95 /* : Int */;
9310 val* var96 /* : NativeArray[Object] */;
9311 val* var97 /* : String */;
9312 val* var98 /* : nullable Object */;
9313 val* var99 /* : null */;
9314 short int var100 /* : Bool */;
9315 static val* varonce101;
9316 val* var102 /* : String */;
9317 char* var103 /* : NativeString */;
9318 long var104 /* : Int */;
9319 val* var105 /* : String */;
9320 static val* varonce106;
9321 val* var107 /* : String */;
9322 char* var108 /* : NativeString */;
9323 long var109 /* : Int */;
9324 val* var110 /* : String */;
9325 val* var111 /* : Array[Object] */;
9326 long var112 /* : Int */;
9327 val* var113 /* : NativeArray[Object] */;
9328 val* var114 /* : String */;
9329 val* var115 /* : MProperty */;
9330 val* var116 /* : AExprs */;
9331 val* var117 /* : Array[AExpr] */;
9332 val* var_args /* var args: Array[AExpr] */;
9333 short int var118 /* : Bool */;
9334 val* var119 /* : MSignature */;
9335 val* var_msignature /* var msignature: MSignature */;
9336 long var120 /* : Int */;
9337 long var121 /* : Int */;
9338 short int var122 /* : Bool */;
9339 short int var124 /* : Bool */;
9340 int cltype125;
9341 int idtype126;
9342 const char* var_class_name127;
9343 short int var128 /* : Bool */;
9344 val* var129 /* : String */;
9345 short int var130 /* : Bool */;
9346 short int var131 /* : Bool */;
9347 var_v = p0;
9348 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9349 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9350 if (var1 == NULL) {
9351 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9352 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1464);
9353 show_backtrace(1);
9354 } else {
9355 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9356 }
9357 var_recvtype = var2;
9358 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9359 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9360 var_mproperty = var4;
9361 var5 = NULL;
9362 var_superprop = var5;
9363 var6 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9364 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var6) /* mclassdef on <var6:AClassdef>*/;
9365 if (var7 == NULL) {
9366 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9367 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1467);
9368 show_backtrace(1);
9369 } else {
9370 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__supertypes]))(var7) /* supertypes on <var7:nullable MClassDef>*/;
9371 }
9372 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Array[MClassType]>*/;
9373 for(;;) {
9374 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
9375 if(!var10) break;
9376 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
9377 var_msupertype = var11;
9378 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9379 var13 = ((val* (*)(val*, val*, val*))(var_msupertype->class->vft[COLOR_model__MType__anchor_to]))(var_msupertype, var12, var_recvtype) /* anchor_to on <var_msupertype:MClassType>*/;
9380 var_msupertype = var13;
9381 var14 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
9382 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var14) /* toolcontext on <var14:ModelBuilder>*/;
9383 var16 = ((long (*)(val*))(var15->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var15) /* error_count on <var15:ToolContext>*/;
9384 var_errcount = var16;
9385 var17 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty>*/;
9386 var18 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__try_get_mproperty_by_name2]))(var_v, self, var_msupertype, var17) /* try_get_mproperty_by_name2 on <var_v:TypeVisitor>*/;
9387 /* <var18:nullable MProperty> isa nullable MMethod */
9388 cltype = type_nullable_model__MMethod.color;
9389 idtype = type_nullable_model__MMethod.id;
9390 if(var18 == NULL) {
9391 var19 = 1;
9392 } else {
9393 if(cltype >= var18->type->table_size) {
9394 var19 = 0;
9395 } else {
9396 var19 = var18->type->type_table[cltype] == idtype;
9397 }
9398 }
9399 if (!var19) {
9400 var_class_name = var18 == NULL ? "null" : var18->type->name;
9401 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
9402 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1470);
9403 show_backtrace(1);
9404 }
9405 var_candidate = var18;
9406 var20 = NULL;
9407 if (var_candidate == NULL) {
9408 var21 = 1; /* is null */
9409 } else {
9410 var21 = 0; /* arg is null but recv is not */
9411 }
9412 if (var21){
9413 var22 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
9414 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var22) /* toolcontext on <var22:ModelBuilder>*/;
9415 var24 = ((long (*)(val*))(var23->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var23) /* error_count on <var23:ToolContext>*/;
9416 { /* Inline kernel#Int#> (var24,var_errcount) */
9417 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
9418 /* <var_errcount:Int> isa OTHER */
9419 var27 = 1; /* easy <var_errcount:Int> isa OTHER*/
9420 if (!var27) {
9421 var_class_name30 = type_kernel__Int.name;
9422 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
9423 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9424 show_backtrace(1);
9425 }
9426 var31 = var24 > var_errcount;
9427 var25 = var31;
9428 goto RET_LABEL26;
9429 RET_LABEL26:(void)0;
9430 }
9431 if (var25){
9432 goto RET_LABEL;
9433 } else {
9434 }
9435 goto CONTINUE_label;
9436 } else {
9437 }
9438 var33 = NULL;
9439 if (var_superprop == NULL) {
9440 var34 = 0; /* is null */
9441 } else {
9442 var34 = 1; /* arg is null and recv is not */
9443 }
9444 var_ = var34;
9445 if (var34){
9446 var35 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9447 var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___33d_61d]))(var35, var_candidate) /* != on <var35:MProperty(MMethod)>*/;
9448 var32 = var36;
9449 } else {
9450 var32 = var_;
9451 }
9452 if (var32){
9453 if (varonce) {
9454 var37 = varonce;
9455 } else {
9456 var38 = "Error: conflicting super constructor to call for ";
9457 var39 = 49;
9458 var40 = string__NativeString__to_s_with_length(var38, var39);
9459 var37 = var40;
9460 varonce = var37;
9461 }
9462 if (varonce41) {
9463 var42 = varonce41;
9464 } else {
9465 var43 = ": ";
9466 var44 = 2;
9467 var45 = string__NativeString__to_s_with_length(var43, var44);
9468 var42 = var45;
9469 varonce41 = var42;
9470 }
9471 var46 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__full_name]))(var_candidate) /* full_name on <var_candidate:nullable MMethod(MMethod)>*/;
9472 if (varonce47) {
9473 var48 = varonce47;
9474 } else {
9475 var49 = ", ";
9476 var50 = 2;
9477 var51 = string__NativeString__to_s_with_length(var49, var50);
9478 var48 = var51;
9479 varonce47 = var48;
9480 }
9481 var52 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9482 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MProperty__full_name]))(var52) /* full_name on <var52:MProperty(MMethod)>*/;
9483 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
9484 { /* var54 = array_instance Array[Object] */
9485 var55 = 6;
9486 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
9487 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var37;
9488 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var_mproperty;
9489 ((struct instance_array__NativeArray*)var56)->values[2] = (val*) var42;
9490 ((struct instance_array__NativeArray*)var56)->values[3] = (val*) var46;
9491 ((struct instance_array__NativeArray*)var56)->values[4] = (val*) var48;
9492 ((struct instance_array__NativeArray*)var56)->values[5] = (val*) var53;
9493 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
9494 }
9495 var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
9496 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var57) /* error on <var_v:TypeVisitor>*/;
9497 goto RET_LABEL;
9498 } else {
9499 }
9500 var58 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9501 var59 = ((val* (*)(val*, val*, val*))(var_candidate->class->vft[COLOR_model__MProperty__lookup_definitions]))(var_candidate, var58, var_recvtype) /* lookup_definitions on <var_candidate:nullable MMethod(MMethod)>*/;
9502 var_candidatedefs = var59;
9503 var60 = NULL;
9504 if (var_superprop == NULL) {
9505 var61 = 0; /* is null */
9506 } else {
9507 var61 = 1; /* arg is null and recv is not */
9508 }
9509 if (var61){
9510 var62 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
9511 var63 = ((short int (*)(val*, val*))(var_superprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_superprop, var62) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9512 if (var63){
9513 goto CONTINUE_label;
9514 } else {
9515 }
9516 ((void (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidatedefs, var_superprop) /* add on <var_candidatedefs:Array[MMethodDef]>*/;
9517 } else {
9518 }
9519 var64 = ((long (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidatedefs) /* length on <var_candidatedefs:Array[MMethodDef]>*/;
9520 var65 = 1;
9521 { /* Inline kernel#Int#> (var64,var65) */
9522 /* Covariant cast for argument 0 (i) <var65:Int> isa OTHER */
9523 /* <var65:Int> isa OTHER */
9524 var68 = 1; /* easy <var65:Int> isa OTHER*/
9525 if (!var68) {
9526 var_class_name71 = type_kernel__Int.name;
9527 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name71);
9528 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9529 show_backtrace(1);
9530 }
9531 var72 = var64 > var65;
9532 var66 = var72;
9533 goto RET_LABEL67;
9534 RET_LABEL67:(void)0;
9535 }
9536 if (var66){
9537 if (varonce73) {
9538 var74 = varonce73;
9539 } else {
9540 var75 = "Error: confliting property definitions for property ";
9541 var76 = 52;
9542 var77 = string__NativeString__to_s_with_length(var75, var76);
9543 var74 = var77;
9544 varonce73 = var74;
9545 }
9546 if (varonce78) {
9547 var79 = varonce78;
9548 } else {
9549 var80 = " in ";
9550 var81 = 4;
9551 var82 = string__NativeString__to_s_with_length(var80, var81);
9552 var79 = var82;
9553 varonce78 = var79;
9554 }
9555 if (varonce83) {
9556 var84 = varonce83;
9557 } else {
9558 var85 = ": ";
9559 var86 = 2;
9560 var87 = string__NativeString__to_s_with_length(var85, var86);
9561 var84 = var87;
9562 varonce83 = var84;
9563 }
9564 if (varonce88) {
9565 var89 = varonce88;
9566 } else {
9567 var90 = ", ";
9568 var91 = 2;
9569 var92 = string__NativeString__to_s_with_length(var90, var91);
9570 var89 = var92;
9571 varonce88 = var89;
9572 }
9573 var93 = ((val* (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_string__Collection__join]))(var_candidatedefs, var89) /* join on <var_candidatedefs:Array[MMethodDef]>*/;
9574 var94 = NEW_array__Array(&type_array__Arraykernel__Object);
9575 { /* var94 = array_instance Array[Object] */
9576 var95 = 6;
9577 var96 = NEW_array__NativeArray(var95, &type_array__NativeArraykernel__Object);
9578 ((struct instance_array__NativeArray*)var96)->values[0] = (val*) var74;
9579 ((struct instance_array__NativeArray*)var96)->values[1] = (val*) var_mproperty;
9580 ((struct instance_array__NativeArray*)var96)->values[2] = (val*) var79;
9581 ((struct instance_array__NativeArray*)var96)->values[3] = (val*) var_recvtype;
9582 ((struct instance_array__NativeArray*)var96)->values[4] = (val*) var84;
9583 ((struct instance_array__NativeArray*)var96)->values[5] = (val*) var93;
9584 ((void (*)(val*, val*, long))(var94->class->vft[COLOR_array__Array__with_native]))(var94, var96, var95) /* with_native on <var94:Array[Object]>*/;
9585 }
9586 var97 = ((val* (*)(val*))(var94->class->vft[COLOR_string__Object__to_s]))(var94) /* to_s on <var94:Array[Object]>*/;
9587 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var97) /* error on <var_v:TypeVisitor>*/;
9588 goto RET_LABEL;
9589 } else {
9590 }
9591 var98 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
9592 var_superprop = var98;
9593 CONTINUE_label: (void)0;
9594 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
9595 }
9596 BREAK_label: (void)0;
9597 var99 = NULL;
9598 if (var_superprop == NULL) {
9599 var100 = 1; /* is null */
9600 } else {
9601 var100 = 0; /* arg is null but recv is not */
9602 }
9603 if (var100){
9604 if (varonce101) {
9605 var102 = varonce101;
9606 } else {
9607 var103 = "Error: No super method to call for ";
9608 var104 = 35;
9609 var105 = string__NativeString__to_s_with_length(var103, var104);
9610 var102 = var105;
9611 varonce101 = var102;
9612 }
9613 if (varonce106) {
9614 var107 = varonce106;
9615 } else {
9616 var108 = ".";
9617 var109 = 1;
9618 var110 = string__NativeString__to_s_with_length(var108, var109);
9619 var107 = var110;
9620 varonce106 = var107;
9621 }
9622 var111 = NEW_array__Array(&type_array__Arraykernel__Object);
9623 { /* var111 = array_instance Array[Object] */
9624 var112 = 3;
9625 var113 = NEW_array__NativeArray(var112, &type_array__NativeArraykernel__Object);
9626 ((struct instance_array__NativeArray*)var113)->values[0] = (val*) var102;
9627 ((struct instance_array__NativeArray*)var113)->values[1] = (val*) var_mproperty;
9628 ((struct instance_array__NativeArray*)var113)->values[2] = (val*) var107;
9629 ((void (*)(val*, val*, long))(var111->class->vft[COLOR_array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
9630 }
9631 var114 = ((val* (*)(val*))(var111->class->vft[COLOR_string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
9632 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var114) /* error on <var_v:TypeVisitor>*/;
9633 goto RET_LABEL;
9634 } else {
9635 }
9636 var115 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9637 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__mproperty_61d]))(self, var115) /* mproperty= on <self:ASuperExpr>*/;
9638 var116 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9639 var117 = ((val* (*)(val*))(var116->class->vft[COLOR_typing__AExprs__to_a]))(var116) /* to_a on <var116:AExprs>*/;
9640 var_args = var117;
9641 var118 = 1;
9642 var119 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(var_v, var_superprop, var_recvtype, var118) /* resolve_signature_for on <var_v:TypeVisitor>*/;
9643 var_msignature = var119;
9644 var120 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9645 var121 = 0;
9646 { /* Inline kernel#Int#> (var120,var121) */
9647 /* Covariant cast for argument 0 (i) <var121:Int> isa OTHER */
9648 /* <var121:Int> isa OTHER */
9649 var124 = 1; /* easy <var121:Int> isa OTHER*/
9650 if (!var124) {
9651 var_class_name127 = type_kernel__Int.name;
9652 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name127);
9653 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9654 show_backtrace(1);
9655 }
9656 var128 = var120 > var121;
9657 var122 = var128;
9658 goto RET_LABEL123;
9659 RET_LABEL123:(void)0;
9660 }
9661 if (var122){
9662 var129 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty>*/;
9663 var130 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, self, var_args, var129, var_msignature) /* check_signature on <var_v:TypeVisitor>*/;
9664 var130;
9665 } else {
9666 }
9667 var131 = 1;
9668 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var131) /* is_typed= on <self:ASuperExpr>*/;
9669 RET_LABEL:;
9670 }
9671 /* method typing#ASuperExpr#process_superinit for (self: Object, TypeVisitor) */
9672 void VIRTUAL_typing__ASuperExpr__process_superinit(val* self, val* p0) {
9673 typing__ASuperExpr__process_superinit(self, p0);
9674 RET_LABEL:;
9675 }
9676 /* method typing#ANewExpr#mproperty for (self: ANewExpr): nullable MMethod */
9677 val* typing__ANewExpr__mproperty(val* self) {
9678 val* var /* : nullable MMethod */;
9679 val* var1 /* : nullable CallSite */;
9680 val* var2 /* : MMethod */;
9681 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ANewExpr__callsite]))(self) /* callsite on <self:ANewExpr>*/;
9682 if (var1 == NULL) {
9683 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9684 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1512);
9685 show_backtrace(1);
9686 } else {
9687 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
9688 }
9689 var = var2;
9690 goto RET_LABEL;
9691 RET_LABEL:;
9692 return var;
9693 }
9694 /* method typing#ANewExpr#mproperty for (self: Object): nullable MMethod */
9695 val* VIRTUAL_typing__ANewExpr__mproperty(val* self) {
9696 val* var /* : nullable MMethod */;
9697 val* var1 /* : nullable MMethod */;
9698 var1 = typing__ANewExpr__mproperty(self);
9699 var = var1;
9700 RET_LABEL:;
9701 return var;
9702 }
9703 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
9704 val* typing__ANewExpr__callsite(val* self) {
9705 val* var /* : nullable CallSite */;
9706 val* var1 /* : nullable CallSite */;
9707 var1 = self->attrs[COLOR_typing__ANewExpr___64dcallsite].val; /* @callsite on <self:ANewExpr> */
9708 var = var1;
9709 RET_LABEL:;
9710 return var;
9711 }
9712 /* method typing#ANewExpr#callsite for (self: Object): nullable CallSite */
9713 val* VIRTUAL_typing__ANewExpr__callsite(val* self) {
9714 val* var /* : nullable CallSite */;
9715 val* var1 /* : nullable CallSite */;
9716 var1 = typing__ANewExpr__callsite(self);
9717 var = var1;
9718 RET_LABEL:;
9719 return var;
9720 }
9721 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
9722 void typing__ANewExpr__callsite_61d(val* self, val* p0) {
9723 self->attrs[COLOR_typing__ANewExpr___64dcallsite].val = p0; /* @callsite on <self:ANewExpr> */
9724 RET_LABEL:;
9725 }
9726 /* method typing#ANewExpr#callsite= for (self: Object, nullable CallSite) */
9727 void VIRTUAL_typing__ANewExpr__callsite_61d(val* self, val* p0) {
9728 typing__ANewExpr__callsite_61d(self, p0);
9729 RET_LABEL:;
9730 }