use nitg to bootstrap; drop bootstrap of nitc
[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 (%s:%d)\n", "Uninitialized attribute @typing_phase", "src/typing.nit", 27);
9 exit(1);
10 }
11 var = var1;
12 RET_LABEL:;
13 return var;
14 }
15 /* method typing#ToolContext#typing_phase for (self: Object): Phase */
16 val* VIRTUAL_typing__ToolContext__typing_phase(val* self) {
17 val* var /* : Phase */;
18 val* var1 /* : Phase */;
19 var1 = typing__ToolContext__typing_phase(self);
20 var = var1;
21 RET_LABEL:;
22 return var;
23 }
24 /* method typing#ToolContext#typing_phase= for (self: ToolContext, Phase) */
25 void typing__ToolContext__typing_phase_61d(val* self, val* p0) {
26 self->attrs[COLOR_typing__ToolContext___64dtyping_phase].val = p0; /* @typing_phase on <self:ToolContext> */
27 RET_LABEL:;
28 }
29 /* method typing#ToolContext#typing_phase= for (self: Object, Phase) */
30 void VIRTUAL_typing__ToolContext__typing_phase_61d(val* self, val* p0) {
31 typing__ToolContext__typing_phase_61d(self, p0);
32 RET_LABEL:;
33 }
34 /* method typing#MPropDef#has_supercall for (self: MPropDef): Bool */
35 short int typing__MPropDef__has_supercall(val* self) {
36 short int var /* : Bool */;
37 short int var1 /* : Bool */;
38 var1 = self->attrs[COLOR_typing__MPropDef___64dhas_supercall].s; /* @has_supercall on <self:MPropDef> */
39 var = var1;
40 RET_LABEL:;
41 return var;
42 }
43 /* method typing#MPropDef#has_supercall for (self: Object): Bool */
44 short int VIRTUAL_typing__MPropDef__has_supercall(val* self) {
45 short int var /* : Bool */;
46 short int var1 /* : Bool */;
47 var1 = typing__MPropDef__has_supercall(self);
48 var = var1;
49 RET_LABEL:;
50 return var;
51 }
52 /* method typing#MPropDef#has_supercall= for (self: MPropDef, Bool) */
53 void typing__MPropDef__has_supercall_61d(val* self, short int p0) {
54 self->attrs[COLOR_typing__MPropDef___64dhas_supercall].s = p0; /* @has_supercall on <self:MPropDef> */
55 RET_LABEL:;
56 }
57 /* method typing#MPropDef#has_supercall= for (self: Object, Bool) */
58 void VIRTUAL_typing__MPropDef__has_supercall_61d(val* self, short int p0) {
59 typing__MPropDef__has_supercall_61d(self, p0);
60 RET_LABEL:;
61 }
62 /* method typing#TypingPhase#process_npropdef for (self: TypingPhase, APropdef) */
63 void typing__TypingPhase__process_npropdef(val* self, val* p0) {
64 val* var_npropdef /* var npropdef: APropdef */;
65 val* var /* : ToolContext */;
66 val* var1 /* : ModelBuilder */;
67 var_npropdef = p0;
68 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:TypingPhase>*/;
69 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var) /* modelbuilder on <var:ToolContext>*/;
70 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_typing__APropdef__do_typing]))(var_npropdef, var1) /* do_typing on <var_npropdef:APropdef>*/;
71 RET_LABEL:;
72 }
73 /* method typing#TypingPhase#process_npropdef for (self: Object, APropdef) */
74 void VIRTUAL_typing__TypingPhase__process_npropdef(val* self, val* p0) {
75 typing__TypingPhase__process_npropdef(self, p0);
76 RET_LABEL:;
77 }
78 /* method typing#TypeVisitor#modelbuilder for (self: TypeVisitor): ModelBuilder */
79 val* typing__TypeVisitor__modelbuilder(val* self) {
80 val* var /* : ModelBuilder */;
81 val* var1 /* : ModelBuilder */;
82 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val; /* @modelbuilder on <self:TypeVisitor> */
83 if (var1 == NULL) {
84 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @modelbuilder", "src/typing.nit", 41);
85 exit(1);
86 }
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method typing#TypeVisitor#modelbuilder for (self: Object): ModelBuilder */
92 val* VIRTUAL_typing__TypeVisitor__modelbuilder(val* self) {
93 val* var /* : ModelBuilder */;
94 val* var1 /* : ModelBuilder */;
95 var1 = typing__TypeVisitor__modelbuilder(self);
96 var = var1;
97 RET_LABEL:;
98 return var;
99 }
100 /* method typing#TypeVisitor#modelbuilder= for (self: TypeVisitor, ModelBuilder) */
101 void typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
102 self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val = p0; /* @modelbuilder on <self:TypeVisitor> */
103 RET_LABEL:;
104 }
105 /* method typing#TypeVisitor#modelbuilder= for (self: Object, ModelBuilder) */
106 void VIRTUAL_typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
107 typing__TypeVisitor__modelbuilder_61d(self, p0);
108 RET_LABEL:;
109 }
110 /* method typing#TypeVisitor#nclassdef for (self: TypeVisitor): AClassdef */
111 val* typing__TypeVisitor__nclassdef(val* self) {
112 val* var /* : AClassdef */;
113 val* var1 /* : AClassdef */;
114 var1 = self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val; /* @nclassdef on <self:TypeVisitor> */
115 if (var1 == NULL) {
116 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @nclassdef", "src/typing.nit", 42);
117 exit(1);
118 }
119 var = var1;
120 RET_LABEL:;
121 return var;
122 }
123 /* method typing#TypeVisitor#nclassdef for (self: Object): AClassdef */
124 val* VIRTUAL_typing__TypeVisitor__nclassdef(val* self) {
125 val* var /* : AClassdef */;
126 val* var1 /* : AClassdef */;
127 var1 = typing__TypeVisitor__nclassdef(self);
128 var = var1;
129 RET_LABEL:;
130 return var;
131 }
132 /* method typing#TypeVisitor#nclassdef= for (self: TypeVisitor, AClassdef) */
133 void typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
134 self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val = p0; /* @nclassdef on <self:TypeVisitor> */
135 RET_LABEL:;
136 }
137 /* method typing#TypeVisitor#nclassdef= for (self: Object, AClassdef) */
138 void VIRTUAL_typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
139 typing__TypeVisitor__nclassdef_61d(self, p0);
140 RET_LABEL:;
141 }
142 /* method typing#TypeVisitor#mpropdef for (self: TypeVisitor): MPropDef */
143 val* typing__TypeVisitor__mpropdef(val* self) {
144 val* var /* : MPropDef */;
145 val* var1 /* : MPropDef */;
146 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val; /* @mpropdef on <self:TypeVisitor> */
147 if (var1 == NULL) {
148 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mpropdef", "src/typing.nit", 43);
149 exit(1);
150 }
151 var = var1;
152 RET_LABEL:;
153 return var;
154 }
155 /* method typing#TypeVisitor#mpropdef for (self: Object): MPropDef */
156 val* VIRTUAL_typing__TypeVisitor__mpropdef(val* self) {
157 val* var /* : MPropDef */;
158 val* var1 /* : MPropDef */;
159 var1 = typing__TypeVisitor__mpropdef(self);
160 var = var1;
161 RET_LABEL:;
162 return var;
163 }
164 /* method typing#TypeVisitor#mpropdef= for (self: TypeVisitor, MPropDef) */
165 void typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
166 self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val = p0; /* @mpropdef on <self:TypeVisitor> */
167 RET_LABEL:;
168 }
169 /* method typing#TypeVisitor#mpropdef= for (self: Object, MPropDef) */
170 void VIRTUAL_typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
171 typing__TypeVisitor__mpropdef_61d(self, p0);
172 RET_LABEL:;
173 }
174 /* method typing#TypeVisitor#selfvariable for (self: TypeVisitor): Variable */
175 val* typing__TypeVisitor__selfvariable(val* self) {
176 val* var /* : Variable */;
177 val* var1 /* : Variable */;
178 var1 = self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val; /* @selfvariable on <self:TypeVisitor> */
179 if (var1 == NULL) {
180 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @selfvariable", "src/typing.nit", 45);
181 exit(1);
182 }
183 var = var1;
184 RET_LABEL:;
185 return var;
186 }
187 /* method typing#TypeVisitor#selfvariable for (self: Object): Variable */
188 val* VIRTUAL_typing__TypeVisitor__selfvariable(val* self) {
189 val* var /* : Variable */;
190 val* var1 /* : Variable */;
191 var1 = typing__TypeVisitor__selfvariable(self);
192 var = var1;
193 RET_LABEL:;
194 return var;
195 }
196 /* method typing#TypeVisitor#selfvariable= for (self: TypeVisitor, Variable) */
197 void typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
198 self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val = p0; /* @selfvariable on <self:TypeVisitor> */
199 RET_LABEL:;
200 }
201 /* method typing#TypeVisitor#selfvariable= for (self: Object, Variable) */
202 void VIRTUAL_typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
203 typing__TypeVisitor__selfvariable_61d(self, p0);
204 RET_LABEL:;
205 }
206 /* method typing#TypeVisitor#init for (self: TypeVisitor, ModelBuilder, AClassdef, MPropDef) */
207 void typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
208 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
209 val* var_nclassdef /* var nclassdef: AClassdef */;
210 val* var_mpropdef /* var mpropdef: MPropDef */;
211 val* var /* : nullable MClassDef */;
212 val* var1 /* : MClass */;
213 val* var_mclass /* var mclass: MClass */;
214 val* var2 /* : Variable */;
215 static val* varonce;
216 val* var3 /* : String */;
217 char* var4 /* : NativeString */;
218 long var5 /* : Int */;
219 val* var6 /* : String */;
220 val* var_selfvariable /* var selfvariable: Variable */;
221 val* var7 /* : MClassType */;
222 var_modelbuilder = p0;
223 var_nclassdef = p1;
224 var_mpropdef = p2;
225 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:TypeVisitor>*/;
226 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef_61d]))(self, var_nclassdef) /* nclassdef= on <self:TypeVisitor>*/;
227 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:TypeVisitor>*/;
228 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
229 if (var == NULL) {
230 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 53);
231 exit(1);
232 } else {
233 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__mclass]))(var) /* mclass on <var:nullable MClassDef>*/;
234 }
235 var_mclass = var1;
236 var2 = NEW_scope__Variable(&type_scope__Variable);
237 if (varonce) {
238 var3 = varonce;
239 } else {
240 var4 = "self";
241 var5 = 4;
242 var6 = string__NativeString__to_s_with_length(var4, var5);
243 var3 = var6;
244 varonce = var3;
245 }
246 ((void (*)(val*, val*))(var2->class->vft[COLOR_scope__Variable__init]))(var2, var3) /* init on <var2:Variable>*/;
247 CHECK_NEW_scope__Variable(var2);
248 var_selfvariable = var2;
249 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__selfvariable_61d]))(self, var_selfvariable) /* selfvariable= on <self:TypeVisitor>*/;
250 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
251 ((void (*)(val*, val*))(var_selfvariable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_selfvariable, var7) /* declared_type= on <var_selfvariable:Variable>*/;
252 RET_LABEL:;
253 }
254 /* method typing#TypeVisitor#init for (self: Object, ModelBuilder, AClassdef, MPropDef) */
255 void VIRTUAL_typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
256 typing__TypeVisitor__init(self, p0, p1, p2);
257 RET_LABEL:;
258 }
259 /* method typing#TypeVisitor#mmodule for (self: TypeVisitor): MModule */
260 val* typing__TypeVisitor__mmodule(val* self) {
261 val* var /* : MModule */;
262 val* var1 /* : AClassdef */;
263 val* var2 /* : nullable MClassDef */;
264 val* var3 /* : MModule */;
265 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
266 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
267 if (var2 == NULL) {
268 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 60);
269 exit(1);
270 } else {
271 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
272 }
273 var = var3;
274 goto RET_LABEL;
275 RET_LABEL:;
276 return var;
277 }
278 /* method typing#TypeVisitor#mmodule for (self: Object): MModule */
279 val* VIRTUAL_typing__TypeVisitor__mmodule(val* self) {
280 val* var /* : MModule */;
281 val* var1 /* : MModule */;
282 var1 = typing__TypeVisitor__mmodule(self);
283 var = var1;
284 RET_LABEL:;
285 return var;
286 }
287 /* method typing#TypeVisitor#anchor for (self: TypeVisitor): MClassType */
288 val* typing__TypeVisitor__anchor(val* self) {
289 val* var /* : MClassType */;
290 val* var1 /* : AClassdef */;
291 val* var2 /* : nullable MClassDef */;
292 val* var3 /* : MClassType */;
293 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
294 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
295 if (var2 == NULL) {
296 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 62);
297 exit(1);
298 } else {
299 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var2) /* bound_mtype on <var2:nullable MClassDef>*/;
300 }
301 var = var3;
302 goto RET_LABEL;
303 RET_LABEL:;
304 return var;
305 }
306 /* method typing#TypeVisitor#anchor for (self: Object): MClassType */
307 val* VIRTUAL_typing__TypeVisitor__anchor(val* self) {
308 val* var /* : MClassType */;
309 val* var1 /* : MClassType */;
310 var1 = typing__TypeVisitor__anchor(self);
311 var = var1;
312 RET_LABEL:;
313 return var;
314 }
315 /* method typing#TypeVisitor#anchor_to for (self: TypeVisitor, MType): MType */
316 val* typing__TypeVisitor__anchor_to(val* self, val* p0) {
317 val* var /* : MType */;
318 val* var_mtype /* var mtype: MType */;
319 val* var1 /* : AClassdef */;
320 val* var2 /* : nullable MClassDef */;
321 val* var3 /* : MModule */;
322 val* var_mmodule /* var mmodule: MModule */;
323 val* var4 /* : AClassdef */;
324 val* var5 /* : nullable MClassDef */;
325 val* var6 /* : MClassType */;
326 val* var_anchor /* var anchor: MClassType */;
327 val* var7 /* : MType */;
328 var_mtype = p0;
329 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
330 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
331 if (var2 == NULL) {
332 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 66);
333 exit(1);
334 } else {
335 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
336 }
337 var_mmodule = var3;
338 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
339 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
340 if (var5 == NULL) {
341 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 67);
342 exit(1);
343 } else {
344 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
345 }
346 var_anchor = var6;
347 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>*/;
348 var = var7;
349 goto RET_LABEL;
350 RET_LABEL:;
351 return var;
352 }
353 /* method typing#TypeVisitor#anchor_to for (self: Object, MType): MType */
354 val* VIRTUAL_typing__TypeVisitor__anchor_to(val* self, val* p0) {
355 val* var /* : MType */;
356 val* var1 /* : MType */;
357 var1 = typing__TypeVisitor__anchor_to(self, p0);
358 var = var1;
359 RET_LABEL:;
360 return var;
361 }
362 /* method typing#TypeVisitor#is_subtype for (self: TypeVisitor, MType, MType): Bool */
363 short int typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
364 short int var /* : Bool */;
365 val* var_sub /* var sub: MType */;
366 val* var_sup /* var sup: MType */;
367 val* var1 /* : AClassdef */;
368 val* var2 /* : nullable MClassDef */;
369 val* var3 /* : MModule */;
370 val* var_mmodule /* var mmodule: MModule */;
371 val* var4 /* : AClassdef */;
372 val* var5 /* : nullable MClassDef */;
373 val* var6 /* : MClassType */;
374 val* var_anchor /* var anchor: MClassType */;
375 short int var7 /* : Bool */;
376 var_sub = p0;
377 var_sup = p1;
378 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
379 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
380 if (var2 == NULL) {
381 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 73);
382 exit(1);
383 } else {
384 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
385 }
386 var_mmodule = var3;
387 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
388 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
389 if (var5 == NULL) {
390 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 74);
391 exit(1);
392 } else {
393 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
394 }
395 var_anchor = var6;
396 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>*/;
397 var = var7;
398 goto RET_LABEL;
399 RET_LABEL:;
400 return var;
401 }
402 /* method typing#TypeVisitor#is_subtype for (self: Object, MType, MType): Bool */
403 short int VIRTUAL_typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
404 short int var /* : Bool */;
405 short int var1 /* : Bool */;
406 var1 = typing__TypeVisitor__is_subtype(self, p0, p1);
407 var = var1;
408 RET_LABEL:;
409 return var;
410 }
411 /* method typing#TypeVisitor#resolve_for for (self: TypeVisitor, MType, MType, Bool): MType */
412 val* typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
413 val* var /* : MType */;
414 val* var_mtype /* var mtype: MType */;
415 val* var_subtype /* var subtype: MType */;
416 short int var_for_self /* var for_self: Bool */;
417 val* var1 /* : AClassdef */;
418 val* var2 /* : nullable MClassDef */;
419 val* var3 /* : MModule */;
420 val* var_mmodule /* var mmodule: MModule */;
421 val* var4 /* : AClassdef */;
422 val* var5 /* : nullable MClassDef */;
423 val* var6 /* : MClassType */;
424 val* var_anchor /* var anchor: MClassType */;
425 short int var7 /* : Bool */;
426 val* var8 /* : MType */;
427 val* var_res /* var res: MType */;
428 var_mtype = p0;
429 var_subtype = p1;
430 var_for_self = p2;
431 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
432 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
433 if (var2 == NULL) {
434 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 80);
435 exit(1);
436 } else {
437 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
438 }
439 var_mmodule = var3;
440 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
441 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
442 if (var5 == NULL) {
443 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 81);
444 exit(1);
445 } else {
446 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
447 }
448 var_anchor = var6;
449 var7 = !var_for_self;
450 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>*/;
451 var_res = var8;
452 var = var_res;
453 goto RET_LABEL;
454 RET_LABEL:;
455 return var;
456 }
457 /* method typing#TypeVisitor#resolve_for for (self: Object, MType, MType, Bool): MType */
458 val* VIRTUAL_typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
459 val* var /* : MType */;
460 val* var1 /* : MType */;
461 var1 = typing__TypeVisitor__resolve_for(self, p0, p1, p2);
462 var = var1;
463 RET_LABEL:;
464 return var;
465 }
466 /* method typing#TypeVisitor#resolve_signature_for for (self: TypeVisitor, MMethodDef, MType, Bool): MSignature */
467 val* typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
468 val* var /* : MSignature */;
469 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
470 val* var_recv /* var recv: MType */;
471 short int var_for_self /* var for_self: Bool */;
472 val* var1 /* : nullable MSignature */;
473 val* var2 /* : MType */;
474 short int var3 /* : Bool */;
475 int cltype;
476 int idtype;
477 var_mmethoddef = p0;
478 var_recv = p1;
479 var_for_self = p2;
480 var1 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
481 if (var1 == NULL) {
482 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 94);
483 exit(1);
484 }
485 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>*/;
486 /* <var2:MType> isa MSignature */
487 cltype = type_model__MSignature.color;
488 idtype = type_model__MSignature.id;
489 if(cltype >= var2->type->table_size) {
490 var3 = 0;
491 } else {
492 var3 = var2->type->type_table[cltype] == idtype;
493 }
494 if (!var3) {
495 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 94);
496 exit(1);
497 }
498 var = var2;
499 goto RET_LABEL;
500 RET_LABEL:;
501 return var;
502 }
503 /* method typing#TypeVisitor#resolve_signature_for for (self: Object, MMethodDef, MType, Bool): MSignature */
504 val* VIRTUAL_typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
505 val* var /* : MSignature */;
506 val* var1 /* : MSignature */;
507 var1 = typing__TypeVisitor__resolve_signature_for(self, p0, p1, p2);
508 var = var1;
509 RET_LABEL:;
510 return var;
511 }
512 /* method typing#TypeVisitor#check_subtype for (self: TypeVisitor, ANode, MType, MType): nullable MType */
513 val* typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
514 val* var /* : nullable MType */;
515 val* var_node /* var node: ANode */;
516 val* var_sub /* var sub: MType */;
517 val* var_sup /* var sup: MType */;
518 short int var1 /* : Bool */;
519 val* var2 /* : MType */;
520 short int var3 /* : Bool */;
521 val* var4 /* : ModelBuilder */;
522 static val* varonce;
523 val* var5 /* : String */;
524 char* var6 /* : NativeString */;
525 long var7 /* : Int */;
526 val* var8 /* : String */;
527 static val* varonce9;
528 val* var10 /* : String */;
529 char* var11 /* : NativeString */;
530 long var12 /* : Int */;
531 val* var13 /* : String */;
532 val* var14 /* : Array[Object] */;
533 long var15 /* : Int */;
534 val* var16 /* : NativeArray[Object] */;
535 val* var17 /* : String */;
536 val* var18 /* : null */;
537 var_node = p0;
538 var_sub = p1;
539 var_sup = p2;
540 var1 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
541 if (var1){
542 var = var_sub;
543 goto RET_LABEL;
544 } else {
545 }
546 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_sup) /* anchor_to on <self:TypeVisitor>*/;
547 var3 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var2) /* is_subtype on <self:TypeVisitor>*/;
548 if (var3){
549 var = var_sup;
550 goto RET_LABEL;
551 } else {
552 }
553 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
554 if (varonce) {
555 var5 = varonce;
556 } else {
557 var6 = "Type error: expected ";
558 var7 = 21;
559 var8 = string__NativeString__to_s_with_length(var6, var7);
560 var5 = var8;
561 varonce = var5;
562 }
563 if (varonce9) {
564 var10 = varonce9;
565 } else {
566 var11 = ", got ";
567 var12 = 6;
568 var13 = string__NativeString__to_s_with_length(var11, var12);
569 var10 = var13;
570 varonce9 = var10;
571 }
572 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
573 { /* var14 = array_instance Array[Object] */
574 var15 = 4;
575 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
576 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
577 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_sup;
578 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
579 ((struct instance_array__NativeArray*)var16)->values[3] = (val*) var_sub;
580 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
581 CHECK_NEW_array__Array(var14);
582 }
583 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
584 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var4, var_node, var17) /* error on <var4:ModelBuilder>*/;
585 var18 = NULL;
586 var = var18;
587 goto RET_LABEL;
588 RET_LABEL:;
589 return var;
590 }
591 /* method typing#TypeVisitor#check_subtype for (self: Object, ANode, MType, MType): nullable MType */
592 val* VIRTUAL_typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
593 val* var /* : nullable MType */;
594 val* var1 /* : nullable MType */;
595 var1 = typing__TypeVisitor__check_subtype(self, p0, p1, p2);
596 var = var1;
597 RET_LABEL:;
598 return var;
599 }
600 /* method typing#TypeVisitor#visit_stmt for (self: TypeVisitor, nullable AExpr) */
601 void typing__TypeVisitor__visit_stmt(val* self, val* p0) {
602 val* var_nexpr /* var nexpr: nullable AExpr */;
603 val* var /* : null */;
604 short int var1 /* : Bool */;
605 var_nexpr = p0;
606 var = NULL;
607 if (var_nexpr == NULL) {
608 var1 = 1; /* is null */
609 } else {
610 var1 = 0; /* arg is null but recv is not */
611 }
612 if (var1){
613 goto RET_LABEL;
614 } else {
615 }
616 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:nullable AExpr(AExpr)>*/;
617 RET_LABEL:;
618 }
619 /* method typing#TypeVisitor#visit_stmt for (self: Object, nullable AExpr) */
620 void VIRTUAL_typing__TypeVisitor__visit_stmt(val* self, val* p0) {
621 typing__TypeVisitor__visit_stmt(self, p0);
622 RET_LABEL:;
623 }
624 /* method typing#TypeVisitor#visit_expr for (self: TypeVisitor, AExpr): nullable MType */
625 val* typing__TypeVisitor__visit_expr(val* self, val* p0) {
626 val* var /* : nullable MType */;
627 val* var_nexpr /* var nexpr: AExpr */;
628 val* var1 /* : nullable MType */;
629 val* var_mtype /* var mtype: nullable MType */;
630 val* var2 /* : null */;
631 short int var3 /* : Bool */;
632 short int var4 /* : Bool */;
633 short int var5 /* : Bool */;
634 val* var6 /* : ModelBuilder */;
635 val* var7 /* : ToolContext */;
636 long var8 /* : Int */;
637 long var9 /* : Int */;
638 short int var10 /* : Bool */;
639 short int var12 /* : Bool */;
640 int cltype;
641 int idtype;
642 short int var13 /* : Bool */;
643 short int var14 /* : Bool */;
644 val* var15 /* : ModelBuilder */;
645 val* var16 /* : ToolContext */;
646 long var17 /* : Int */;
647 long var18 /* : Int */;
648 short int var19 /* : Bool */;
649 short int var21 /* : Bool */;
650 int cltype22;
651 int idtype23;
652 short int var24 /* : Bool */;
653 static val* varonce;
654 val* var25 /* : String */;
655 char* var26 /* : NativeString */;
656 long var27 /* : Int */;
657 val* var28 /* : String */;
658 val* var29 /* : null */;
659 static val* varonce30;
660 val* var31 /* : String */;
661 char* var32 /* : NativeString */;
662 long var33 /* : Int */;
663 val* var34 /* : String */;
664 val* var35 /* : null */;
665 var_nexpr = p0;
666 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:AExpr>*/;
667 var1 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
668 var_mtype = var1;
669 var2 = NULL;
670 if (var_mtype == NULL) {
671 var3 = 0; /* is null */
672 } else {
673 var3 = 1; /* arg is null and recv is not */
674 }
675 if (var3){
676 var = var_mtype;
677 goto RET_LABEL;
678 } else {
679 }
680 var4 = ((short int (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__is_typed]))(var_nexpr) /* is_typed on <var_nexpr:AExpr>*/;
681 var5 = !var4;
682 if (var5){
683 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
684 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var6) /* toolcontext on <var6:ModelBuilder>*/;
685 var8 = ((long (*)(val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var7) /* error_count on <var7:ToolContext>*/;
686 var9 = 0;
687 { /* Inline kernel#Int#> (var8,var9) */
688 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
689 /* <var9:Int> isa OTHER */
690 var12 = 1; /* easy <var9:Int> isa OTHER*/
691 if (!var12) {
692 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
693 exit(1);
694 }
695 var13 = var8 > var9;
696 var10 = var13;
697 goto RET_LABEL11;
698 RET_LABEL11:(void)0;
699 }
700 var14 = !var10;
701 if (var14){
702 var15 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
703 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
704 var17 = ((long (*)(val*))(var16->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var16) /* verbose_level on <var16:ToolContext>*/;
705 var18 = 1;
706 { /* Inline kernel#Int#> (var17,var18) */
707 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
708 /* <var18:Int> isa OTHER */
709 var21 = 1; /* easy <var18:Int> isa OTHER*/
710 if (!var21) {
711 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
712 exit(1);
713 }
714 var24 = var17 > var18;
715 var19 = var24;
716 goto RET_LABEL20;
717 RET_LABEL20:(void)0;
718 }
719 if (var19){
720 if (varonce) {
721 var25 = varonce;
722 } else {
723 var26 = "No return type but no error.";
724 var27 = 28;
725 var28 = string__NativeString__to_s_with_length(var26, var27);
726 var25 = var28;
727 varonce = var25;
728 }
729 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_parser_nodes__ANode__debug]))(var_nexpr, var25) /* debug on <var_nexpr:AExpr>*/;
730 } else {
731 }
732 } else {
733 }
734 var29 = NULL;
735 var = var29;
736 goto RET_LABEL;
737 } else {
738 }
739 if (varonce30) {
740 var31 = varonce30;
741 } else {
742 var32 = "Type error: expected expression.";
743 var33 = 32;
744 var34 = string__NativeString__to_s_with_length(var32, var33);
745 var31 = var34;
746 varonce30 = var31;
747 }
748 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_nexpr, var31) /* error on <self:TypeVisitor>*/;
749 var35 = NULL;
750 var = var35;
751 goto RET_LABEL;
752 RET_LABEL:;
753 return var;
754 }
755 /* method typing#TypeVisitor#visit_expr for (self: Object, AExpr): nullable MType */
756 val* VIRTUAL_typing__TypeVisitor__visit_expr(val* self, val* p0) {
757 val* var /* : nullable MType */;
758 val* var1 /* : nullable MType */;
759 var1 = typing__TypeVisitor__visit_expr(self, p0);
760 var = var1;
761 RET_LABEL:;
762 return var;
763 }
764 /* method typing#TypeVisitor#visit_expr_subtype for (self: TypeVisitor, AExpr, nullable MType): nullable MType */
765 val* typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
766 val* var /* : nullable MType */;
767 val* var_nexpr /* var nexpr: AExpr */;
768 val* var_sup /* var sup: nullable MType */;
769 val* var1 /* : nullable MType */;
770 val* var_sub /* var sub: nullable MType */;
771 val* var2 /* : null */;
772 short int var3 /* : Bool */;
773 val* var4 /* : null */;
774 val* var5 /* : null */;
775 short int var6 /* : Bool */;
776 val* var7 /* : null */;
777 val* var8 /* : nullable MType */;
778 val* var_res /* var res: nullable MType */;
779 short int var9 /* : Bool */;
780 var_nexpr = p0;
781 var_sup = p1;
782 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
783 var_sub = var1;
784 var2 = NULL;
785 if (var_sub == NULL) {
786 var3 = 1; /* is null */
787 } else {
788 var3 = 0; /* arg is null but recv is not */
789 }
790 if (var3){
791 var4 = NULL;
792 var = var4;
793 goto RET_LABEL;
794 } else {
795 }
796 var5 = NULL;
797 if (var_sup == NULL) {
798 var6 = 1; /* is null */
799 } else {
800 var6 = 0; /* arg is null but recv is not */
801 }
802 if (var6){
803 var7 = NULL;
804 var = var7;
805 goto RET_LABEL;
806 } else {
807 }
808 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>*/;
809 var_res = var8;
810 if (var_res == NULL) {
811 var9 = 1; /* <var_sub:nullable MType(MType)> cannot be null */
812 } else {
813 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___33d_61d]))(var_res, var_sub) /* != on <var_res:nullable MType>*/;
814 }
815 if (var9){
816 ((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>*/;
817 } else {
818 }
819 var = var_res;
820 goto RET_LABEL;
821 RET_LABEL:;
822 return var;
823 }
824 /* method typing#TypeVisitor#visit_expr_subtype for (self: Object, AExpr, nullable MType): nullable MType */
825 val* VIRTUAL_typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
826 val* var /* : nullable MType */;
827 val* var1 /* : nullable MType */;
828 var1 = typing__TypeVisitor__visit_expr_subtype(self, p0, p1);
829 var = var1;
830 RET_LABEL:;
831 return var;
832 }
833 /* method typing#TypeVisitor#visit_expr_bool for (self: TypeVisitor, AExpr): nullable MType */
834 val* typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
835 val* var /* : nullable MType */;
836 val* var_nexpr /* var nexpr: AExpr */;
837 val* var1 /* : nullable MType */;
838 val* var2 /* : nullable MType */;
839 var_nexpr = p0;
840 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__type_bool]))(self, var_nexpr) /* type_bool on <self:TypeVisitor>*/;
841 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var_nexpr, var1) /* visit_expr_subtype on <self:TypeVisitor>*/;
842 var = var2;
843 goto RET_LABEL;
844 RET_LABEL:;
845 return var;
846 }
847 /* method typing#TypeVisitor#visit_expr_bool for (self: Object, AExpr): nullable MType */
848 val* VIRTUAL_typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
849 val* var /* : nullable MType */;
850 val* var1 /* : nullable MType */;
851 var1 = typing__TypeVisitor__visit_expr_bool(self, p0);
852 var = var1;
853 RET_LABEL:;
854 return var;
855 }
856 /* method typing#TypeVisitor#visit_expr_cast for (self: TypeVisitor, ANode, AExpr, AType): nullable MType */
857 val* typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
858 val* var /* : nullable MType */;
859 val* var_node /* var node: ANode */;
860 val* var_nexpr /* var nexpr: AExpr */;
861 val* var_ntype /* var ntype: AType */;
862 val* var1 /* : nullable MType */;
863 val* var_sub /* var sub: nullable MType */;
864 val* var2 /* : null */;
865 short int var3 /* : Bool */;
866 val* var4 /* : null */;
867 val* var5 /* : nullable MType */;
868 val* var_sup /* var sup: nullable MType */;
869 val* var6 /* : null */;
870 short int var7 /* : Bool */;
871 val* var8 /* : null */;
872 val* var9 /* : AClassdef */;
873 val* var10 /* : nullable MClassDef */;
874 val* var11 /* : MModule */;
875 val* var_mmodule /* var mmodule: MModule */;
876 val* var12 /* : AClassdef */;
877 val* var13 /* : nullable MClassDef */;
878 val* var14 /* : MClassType */;
879 val* var_anchor /* var anchor: MClassType */;
880 short int var15 /* : Bool */;
881 val* var16 /* : ModelBuilder */;
882 static val* varonce;
883 val* var17 /* : String */;
884 char* var18 /* : NativeString */;
885 long var19 /* : Int */;
886 val* var20 /* : String */;
887 static val* varonce21;
888 val* var22 /* : String */;
889 char* var23 /* : NativeString */;
890 long var24 /* : Int */;
891 val* var25 /* : String */;
892 val* var26 /* : Array[Object] */;
893 long var27 /* : Int */;
894 val* var28 /* : NativeArray[Object] */;
895 val* var29 /* : String */;
896 short int var30 /* : Bool */;
897 short int var31 /* : Bool */;
898 short int var_ /* var : Bool */;
899 short int var32 /* : Bool */;
900 short int var33 /* : Bool */;
901 val* var34 /* : ModelBuilder */;
902 static val* varonce35;
903 val* var36 /* : String */;
904 char* var37 /* : NativeString */;
905 long var38 /* : Int */;
906 val* var39 /* : String */;
907 static val* varonce40;
908 val* var41 /* : String */;
909 char* var42 /* : NativeString */;
910 long var43 /* : Int */;
911 val* var44 /* : String */;
912 static val* varonce45;
913 val* var46 /* : String */;
914 char* var47 /* : NativeString */;
915 long var48 /* : Int */;
916 val* var49 /* : String */;
917 val* var50 /* : Array[Object] */;
918 long var51 /* : Int */;
919 val* var52 /* : NativeArray[Object] */;
920 val* var53 /* : String */;
921 var_node = p0;
922 var_nexpr = p1;
923 var_ntype = p2;
924 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
925 var_sub = var1;
926 var2 = NULL;
927 if (var_sub == NULL) {
928 var3 = 1; /* is null */
929 } else {
930 var3 = 0; /* arg is null but recv is not */
931 }
932 if (var3){
933 var4 = NULL;
934 var = var4;
935 goto RET_LABEL;
936 } else {
937 }
938 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(self, var_ntype) /* resolve_mtype on <self:TypeVisitor>*/;
939 var_sup = var5;
940 var6 = NULL;
941 if (var_sup == NULL) {
942 var7 = 1; /* is null */
943 } else {
944 var7 = 0; /* arg is null but recv is not */
945 }
946 if (var7){
947 var8 = NULL;
948 var = var8;
949 goto RET_LABEL;
950 } else {
951 }
952 var9 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
953 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var9) /* mclassdef on <var9:AClassdef>*/;
954 if (var10 == NULL) {
955 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 184);
956 exit(1);
957 } else {
958 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassDef__mmodule]))(var10) /* mmodule on <var10:nullable MClassDef>*/;
959 }
960 var_mmodule = var11;
961 var12 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
962 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var12) /* mclassdef on <var12:AClassdef>*/;
963 if (var13 == NULL) {
964 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 185);
965 exit(1);
966 } else {
967 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on <var13:nullable MClassDef>*/;
968 }
969 var_anchor = var14;
970 var15 = ((short int (*)(val*, val*))(var_sup->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup, var_sub) /* == on <var_sup:nullable MType(MType)>*/;
971 if (var15){
972 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
973 if (varonce) {
974 var17 = varonce;
975 } else {
976 var18 = "Warning: Expression is already a ";
977 var19 = 33;
978 var20 = string__NativeString__to_s_with_length(var18, var19);
979 var17 = var20;
980 varonce = var17;
981 }
982 if (varonce21) {
983 var22 = varonce21;
984 } else {
985 var23 = ".";
986 var24 = 1;
987 var25 = string__NativeString__to_s_with_length(var23, var24);
988 var22 = var25;
989 varonce21 = var22;
990 }
991 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
992 { /* var26 = array_instance Array[Object] */
993 var27 = 3;
994 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
995 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
996 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_sup;
997 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
998 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
999 CHECK_NEW_array__Array(var26);
1000 }
1001 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
1002 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var16, var_node, var29) /* warning on <var16:ModelBuilder>*/;
1003 } else {
1004 var31 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
1005 var_ = var31;
1006 if (var31){
1007 var32 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:nullable MType(MType)>*/;
1008 var33 = !var32;
1009 var30 = var33;
1010 } else {
1011 var30 = var_;
1012 }
1013 if (var30){
1014 var34 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1015 if (varonce35) {
1016 var36 = varonce35;
1017 } else {
1018 var37 = "Warning: Expression is already a ";
1019 var38 = 33;
1020 var39 = string__NativeString__to_s_with_length(var37, var38);
1021 var36 = var39;
1022 varonce35 = var36;
1023 }
1024 if (varonce40) {
1025 var41 = varonce40;
1026 } else {
1027 var42 = " since it is a ";
1028 var43 = 15;
1029 var44 = string__NativeString__to_s_with_length(var42, var43);
1030 var41 = var44;
1031 varonce40 = var41;
1032 }
1033 if (varonce45) {
1034 var46 = varonce45;
1035 } else {
1036 var47 = ".";
1037 var48 = 1;
1038 var49 = string__NativeString__to_s_with_length(var47, var48);
1039 var46 = var49;
1040 varonce45 = var46;
1041 }
1042 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
1043 { /* var50 = array_instance Array[Object] */
1044 var51 = 5;
1045 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
1046 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var36;
1047 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_sup;
1048 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var41;
1049 ((struct instance_array__NativeArray*)var52)->values[3] = (val*) var_sub;
1050 ((struct instance_array__NativeArray*)var52)->values[4] = (val*) var46;
1051 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
1052 CHECK_NEW_array__Array(var50);
1053 }
1054 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
1055 ((void (*)(val*, val*, val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var34, var_node, var53) /* warning on <var34:ModelBuilder>*/;
1056 } else {
1057 }
1058 }
1059 var = var_sup;
1060 goto RET_LABEL;
1061 RET_LABEL:;
1062 return var;
1063 }
1064 /* method typing#TypeVisitor#visit_expr_cast for (self: Object, ANode, AExpr, AType): nullable MType */
1065 val* VIRTUAL_typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
1066 val* var /* : nullable MType */;
1067 val* var1 /* : nullable MType */;
1068 var1 = typing__TypeVisitor__visit_expr_cast(self, p0, p1, p2);
1069 var = var1;
1070 RET_LABEL:;
1071 return var;
1072 }
1073 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
1074 val* typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1075 val* var /* : nullable MProperty */;
1076 val* var_anode /* var anode: ANode */;
1077 val* var_mtype /* var mtype: MType */;
1078 val* var_name /* var name: String */;
1079 val* var1 /* : ModelBuilder */;
1080 val* var2 /* : AClassdef */;
1081 val* var3 /* : nullable MClassDef */;
1082 val* var4 /* : MModule */;
1083 val* var5 /* : nullable MProperty */;
1084 var_anode = p0;
1085 var_mtype = p1;
1086 var_name = p2;
1087 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1088 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1089 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var2) /* mclassdef on <var2:AClassdef>*/;
1090 if (var3 == NULL) {
1091 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 196);
1092 exit(1);
1093 } else {
1094 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:nullable MClassDef>*/;
1095 }
1096 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>*/;
1097 var = var5;
1098 goto RET_LABEL;
1099 RET_LABEL:;
1100 return var;
1101 }
1102 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: Object, ANode, MType, String): nullable MProperty */
1103 val* VIRTUAL_typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1104 val* var /* : nullable MProperty */;
1105 val* var1 /* : nullable MProperty */;
1106 var1 = typing__TypeVisitor__try_get_mproperty_by_name2(self, p0, p1, p2);
1107 var = var1;
1108 RET_LABEL:;
1109 return var;
1110 }
1111 /* method typing#TypeVisitor#resolve_mtype for (self: TypeVisitor, AType): nullable MType */
1112 val* typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1113 val* var /* : nullable MType */;
1114 val* var_node /* var node: AType */;
1115 val* var1 /* : ModelBuilder */;
1116 val* var2 /* : AClassdef */;
1117 val* var3 /* : nullable MType */;
1118 var_node = p0;
1119 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1120 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1121 var3 = ((val* (*)(val*, val*, val*))(var1->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var1, var2, var_node) /* resolve_mtype on <var1:ModelBuilder>*/;
1122 var = var3;
1123 goto RET_LABEL;
1124 RET_LABEL:;
1125 return var;
1126 }
1127 /* method typing#TypeVisitor#resolve_mtype for (self: Object, AType): nullable MType */
1128 val* VIRTUAL_typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1129 val* var /* : nullable MType */;
1130 val* var1 /* : nullable MType */;
1131 var1 = typing__TypeVisitor__resolve_mtype(self, p0);
1132 var = var1;
1133 RET_LABEL:;
1134 return var;
1135 }
1136 /* method typing#TypeVisitor#try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1137 val* typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1138 val* var /* : nullable MClass */;
1139 val* var_node /* var node: ANode */;
1140 val* var_name /* var name: String */;
1141 val* var1 /* : AClassdef */;
1142 val* var2 /* : nullable MClassDef */;
1143 val* var3 /* : MModule */;
1144 val* var_mmodule /* var mmodule: MModule */;
1145 val* var4 /* : ModelBuilder */;
1146 val* var5 /* : nullable MClass */;
1147 val* var_mclass /* var mclass: nullable MClass */;
1148 var_node = p0;
1149 var_name = p1;
1150 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1151 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1152 if (var2 == NULL) {
1153 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 206);
1154 exit(1);
1155 } else {
1156 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1157 }
1158 var_mmodule = var3;
1159 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1160 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>*/;
1161 var_mclass = var5;
1162 var = var_mclass;
1163 goto RET_LABEL;
1164 RET_LABEL:;
1165 return var;
1166 }
1167 /* method typing#TypeVisitor#try_get_mclass for (self: Object, ANode, String): nullable MClass */
1168 val* VIRTUAL_typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1169 val* var /* : nullable MClass */;
1170 val* var1 /* : nullable MClass */;
1171 var1 = typing__TypeVisitor__try_get_mclass(self, p0, p1);
1172 var = var1;
1173 RET_LABEL:;
1174 return var;
1175 }
1176 /* method typing#TypeVisitor#get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1177 val* typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1178 val* var /* : nullable MClass */;
1179 val* var_node /* var node: ANode */;
1180 val* var_name /* var name: String */;
1181 val* var1 /* : AClassdef */;
1182 val* var2 /* : nullable MClassDef */;
1183 val* var3 /* : MModule */;
1184 val* var_mmodule /* var mmodule: MModule */;
1185 val* var4 /* : ModelBuilder */;
1186 val* var5 /* : nullable MClass */;
1187 val* var_mclass /* var mclass: nullable MClass */;
1188 val* var6 /* : null */;
1189 short int var7 /* : Bool */;
1190 val* var8 /* : ModelBuilder */;
1191 static val* varonce;
1192 val* var9 /* : String */;
1193 char* var10 /* : NativeString */;
1194 long var11 /* : Int */;
1195 val* var12 /* : String */;
1196 static val* varonce13;
1197 val* var14 /* : String */;
1198 char* var15 /* : NativeString */;
1199 long var16 /* : Int */;
1200 val* var17 /* : String */;
1201 val* var18 /* : Array[Object] */;
1202 long var19 /* : Int */;
1203 val* var20 /* : NativeArray[Object] */;
1204 val* var21 /* : String */;
1205 var_node = p0;
1206 var_name = p1;
1207 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1208 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1209 if (var2 == NULL) {
1210 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 213);
1211 exit(1);
1212 } else {
1213 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1214 }
1215 var_mmodule = var3;
1216 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1217 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>*/;
1218 var_mclass = var5;
1219 var6 = NULL;
1220 if (var_mclass == NULL) {
1221 var7 = 1; /* is null */
1222 } else {
1223 var7 = 0; /* arg is null but recv is not */
1224 }
1225 if (var7){
1226 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1227 if (varonce) {
1228 var9 = varonce;
1229 } else {
1230 var10 = "Type Error: missing primitive class `";
1231 var11 = 37;
1232 var12 = string__NativeString__to_s_with_length(var10, var11);
1233 var9 = var12;
1234 varonce = var9;
1235 }
1236 if (varonce13) {
1237 var14 = varonce13;
1238 } else {
1239 var15 = "\'.";
1240 var16 = 2;
1241 var17 = string__NativeString__to_s_with_length(var15, var16);
1242 var14 = var17;
1243 varonce13 = var14;
1244 }
1245 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
1246 { /* var18 = array_instance Array[Object] */
1247 var19 = 3;
1248 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
1249 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
1250 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_name;
1251 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
1252 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
1253 CHECK_NEW_array__Array(var18);
1254 }
1255 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
1256 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var8, var_node, var21) /* error on <var8:ModelBuilder>*/;
1257 } else {
1258 }
1259 var = var_mclass;
1260 goto RET_LABEL;
1261 RET_LABEL:;
1262 return var;
1263 }
1264 /* method typing#TypeVisitor#get_mclass for (self: Object, ANode, String): nullable MClass */
1265 val* VIRTUAL_typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1266 val* var /* : nullable MClass */;
1267 val* var1 /* : nullable MClass */;
1268 var1 = typing__TypeVisitor__get_mclass(self, p0, p1);
1269 var = var1;
1270 RET_LABEL:;
1271 return var;
1272 }
1273 /* method typing#TypeVisitor#type_bool for (self: TypeVisitor, ANode): nullable MType */
1274 val* typing__TypeVisitor__type_bool(val* self, val* p0) {
1275 val* var /* : nullable MType */;
1276 val* var_node /* var node: ANode */;
1277 static val* varonce;
1278 val* var1 /* : String */;
1279 char* var2 /* : NativeString */;
1280 long var3 /* : Int */;
1281 val* var4 /* : String */;
1282 val* var5 /* : nullable MClass */;
1283 val* var_mclass /* var mclass: nullable MClass */;
1284 val* var6 /* : null */;
1285 short int var7 /* : Bool */;
1286 val* var8 /* : null */;
1287 val* var9 /* : MClassType */;
1288 var_node = p0;
1289 if (varonce) {
1290 var1 = varonce;
1291 } else {
1292 var2 = "Bool";
1293 var3 = 4;
1294 var4 = string__NativeString__to_s_with_length(var2, var3);
1295 var1 = var4;
1296 varonce = var1;
1297 }
1298 var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(self, var_node, var1) /* get_mclass on <self:TypeVisitor>*/;
1299 var_mclass = var5;
1300 var6 = NULL;
1301 if (var_mclass == NULL) {
1302 var7 = 1; /* is null */
1303 } else {
1304 var7 = 0; /* arg is null but recv is not */
1305 }
1306 if (var7){
1307 var8 = NULL;
1308 var = var8;
1309 goto RET_LABEL;
1310 } else {
1311 }
1312 var9 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
1313 var = var9;
1314 goto RET_LABEL;
1315 RET_LABEL:;
1316 return var;
1317 }
1318 /* method typing#TypeVisitor#type_bool for (self: Object, ANode): nullable MType */
1319 val* VIRTUAL_typing__TypeVisitor__type_bool(val* self, val* p0) {
1320 val* var /* : nullable MType */;
1321 val* var1 /* : nullable MType */;
1322 var1 = typing__TypeVisitor__type_bool(self, p0);
1323 var = var1;
1324 RET_LABEL:;
1325 return var;
1326 }
1327 /* method typing#TypeVisitor#get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
1328 val* typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1329 val* var /* : nullable CallSite */;
1330 val* var_node /* var node: ANode */;
1331 val* var_recvtype /* var recvtype: MType */;
1332 val* var_name /* var name: String */;
1333 short int var_recv_is_self /* var recv_is_self: Bool */;
1334 val* var1 /* : MType */;
1335 val* var_unsafe_type /* var unsafe_type: MType */;
1336 short int var2 /* : Bool */;
1337 int cltype;
1338 int idtype;
1339 static val* varonce;
1340 val* var3 /* : String */;
1341 char* var4 /* : NativeString */;
1342 long var5 /* : Int */;
1343 val* var6 /* : String */;
1344 static val* varonce7;
1345 val* var8 /* : String */;
1346 char* var9 /* : NativeString */;
1347 long var10 /* : Int */;
1348 val* var11 /* : String */;
1349 val* var12 /* : Array[Object] */;
1350 long var13 /* : Int */;
1351 val* var14 /* : NativeArray[Object] */;
1352 val* var15 /* : String */;
1353 val* var16 /* : null */;
1354 val* var17 /* : nullable MProperty */;
1355 val* var_mproperty /* var mproperty: nullable MProperty */;
1356 val* var18 /* : null */;
1357 short int var19 /* : Bool */;
1358 val* var20 /* : ModelBuilder */;
1359 static val* varonce21;
1360 val* var22 /* : String */;
1361 char* var23 /* : NativeString */;
1362 long var24 /* : Int */;
1363 val* var25 /* : String */;
1364 static val* varonce26;
1365 val* var27 /* : String */;
1366 char* var28 /* : NativeString */;
1367 long var29 /* : Int */;
1368 val* var30 /* : String */;
1369 static val* varonce31;
1370 val* var32 /* : String */;
1371 char* var33 /* : NativeString */;
1372 long var34 /* : Int */;
1373 val* var35 /* : String */;
1374 val* var36 /* : Array[Object] */;
1375 long var37 /* : Int */;
1376 val* var38 /* : NativeArray[Object] */;
1377 val* var39 /* : String */;
1378 val* var40 /* : ModelBuilder */;
1379 static val* varonce41;
1380 val* var42 /* : String */;
1381 char* var43 /* : NativeString */;
1382 long var44 /* : Int */;
1383 val* var45 /* : String */;
1384 static val* varonce46;
1385 val* var47 /* : String */;
1386 char* var48 /* : NativeString */;
1387 long var49 /* : Int */;
1388 val* var50 /* : String */;
1389 static val* varonce51;
1390 val* var52 /* : String */;
1391 char* var53 /* : NativeString */;
1392 long var54 /* : Int */;
1393 val* var55 /* : String */;
1394 val* var56 /* : Array[Object] */;
1395 long var57 /* : Int */;
1396 val* var58 /* : NativeArray[Object] */;
1397 val* var59 /* : String */;
1398 val* var60 /* : null */;
1399 short int var61 /* : Bool */;
1400 int cltype62;
1401 int idtype63;
1402 short int var64 /* : Bool */;
1403 short int var65 /* : Bool */;
1404 val* var66 /* : MVisibility */;
1405 val* var67 /* : MVisibility */;
1406 short int var68 /* : Bool */;
1407 short int var_ /* var : Bool */;
1408 short int var69 /* : Bool */;
1409 short int var_70 /* var : Bool */;
1410 val* var71 /* : MModule */;
1411 val* var72 /* : MClassDef */;
1412 val* var73 /* : MModule */;
1413 val* var74 /* : MVisibility */;
1414 val* var75 /* : MVisibility */;
1415 short int var76 /* : Bool */;
1416 val* var77 /* : ModelBuilder */;
1417 static val* varonce78;
1418 val* var79 /* : String */;
1419 char* var80 /* : NativeString */;
1420 long var81 /* : Int */;
1421 val* var82 /* : String */;
1422 static val* varonce83;
1423 val* var84 /* : String */;
1424 char* var85 /* : NativeString */;
1425 long var86 /* : Int */;
1426 val* var87 /* : String */;
1427 val* var88 /* : MClassDef */;
1428 val* var89 /* : MModule */;
1429 val* var90 /* : MModule */;
1430 val* var91 /* : MVisibility */;
1431 val* var92 /* : Array[Object] */;
1432 long var93 /* : Int */;
1433 val* var94 /* : NativeArray[Object] */;
1434 val* var95 /* : String */;
1435 val* var96 /* : null */;
1436 val* var97 /* : MModule */;
1437 val* var98 /* : Array[MPropDef] */;
1438 val* var_propdefs /* var propdefs: Array[MMethodDef] */;
1439 long var99 /* : Int */;
1440 long var100 /* : Int */;
1441 short int var101 /* : Bool */;
1442 short int var103 /* : Bool */;
1443 val* var104 /* : ModelBuilder */;
1444 static val* varonce105;
1445 val* var106 /* : String */;
1446 char* var107 /* : NativeString */;
1447 long var108 /* : Int */;
1448 val* var109 /* : String */;
1449 static val* varonce110;
1450 val* var111 /* : String */;
1451 char* var112 /* : NativeString */;
1452 long var113 /* : Int */;
1453 val* var114 /* : String */;
1454 val* var115 /* : Array[Object] */;
1455 long var116 /* : Int */;
1456 val* var117 /* : NativeArray[Object] */;
1457 val* var118 /* : String */;
1458 val* var119 /* : null */;
1459 long var120 /* : Int */;
1460 long var121 /* : Int */;
1461 short int var122 /* : Bool */;
1462 short int var124 /* : Bool */;
1463 val* var125 /* : nullable Object */;
1464 val* var_mpropdef /* var mpropdef: nullable Object */;
1465 val* var126 /* : ModelBuilder */;
1466 static val* varonce127;
1467 val* var128 /* : String */;
1468 char* var129 /* : NativeString */;
1469 long var130 /* : Int */;
1470 val* var131 /* : String */;
1471 static val* varonce132;
1472 val* var133 /* : String */;
1473 char* var134 /* : NativeString */;
1474 long var135 /* : Int */;
1475 val* var136 /* : String */;
1476 static val* varonce137;
1477 val* var138 /* : String */;
1478 char* var139 /* : NativeString */;
1479 long var140 /* : Int */;
1480 val* var141 /* : String */;
1481 static val* varonce142;
1482 val* var143 /* : String */;
1483 char* var144 /* : NativeString */;
1484 long var145 /* : Int */;
1485 val* var146 /* : String */;
1486 val* var147 /* : String */;
1487 val* var148 /* : Array[Object] */;
1488 long var149 /* : Int */;
1489 val* var150 /* : NativeArray[Object] */;
1490 val* var151 /* : String */;
1491 val* var152 /* : MPropDef */;
1492 val* var153 /* : MSignature */;
1493 val* var_msignature /* var msignature: MSignature */;
1494 short int var154 /* : Bool */;
1495 short int var_erasure_cast /* var erasure_cast: Bool */;
1496 val* var155 /* : nullable MSignature */;
1497 val* var156 /* : nullable MType */;
1498 val* var_rettype /* var rettype: nullable MType */;
1499 short int var157 /* : Bool */;
1500 short int var158 /* : Bool */;
1501 short int var_159 /* var : Bool */;
1502 val* var160 /* : null */;
1503 short int var161 /* : Bool */;
1504 short int var162 /* : Bool */;
1505 int cltype163;
1506 int idtype164;
1507 val* var165 /* : MType */;
1508 short int var166 /* : Bool */;
1509 int cltype167;
1510 int idtype168;
1511 val* var169 /* : nullable MType */;
1512 val* var_erased_rettype /* var erased_rettype: nullable MType */;
1513 val* var170 /* : null */;
1514 short int var171 /* : Bool */;
1515 short int var172 /* : Bool */;
1516 val* var173 /* : CallSite */;
1517 val* var_callsite /* var callsite: CallSite */;
1518 var_node = p0;
1519 var_recvtype = p1;
1520 var_name = p2;
1521 var_recv_is_self = p3;
1522 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_recvtype) /* anchor_to on <self:TypeVisitor>*/;
1523 var_unsafe_type = var1;
1524 /* <var_recvtype:MType> isa MNullType */
1525 cltype = type_model__MNullType.color;
1526 idtype = type_model__MNullType.id;
1527 if(cltype >= var_recvtype->type->table_size) {
1528 var2 = 0;
1529 } else {
1530 var2 = var_recvtype->type->type_table[cltype] == idtype;
1531 }
1532 if (var2){
1533 if (varonce) {
1534 var3 = varonce;
1535 } else {
1536 var4 = "Error: Method \'";
1537 var5 = 15;
1538 var6 = string__NativeString__to_s_with_length(var4, var5);
1539 var3 = var6;
1540 varonce = var3;
1541 }
1542 if (varonce7) {
1543 var8 = varonce7;
1544 } else {
1545 var9 = "\' call on \'null\'.";
1546 var10 = 17;
1547 var11 = string__NativeString__to_s_with_length(var9, var10);
1548 var8 = var11;
1549 varonce7 = var8;
1550 }
1551 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
1552 { /* var12 = array_instance Array[Object] */
1553 var13 = 3;
1554 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
1555 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var3;
1556 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var_name;
1557 ((struct instance_array__NativeArray*)var14)->values[2] = (val*) var8;
1558 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
1559 CHECK_NEW_array__Array(var12);
1560 }
1561 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
1562 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var15) /* error on <self:TypeVisitor>*/;
1563 var16 = NULL;
1564 var = var16;
1565 goto RET_LABEL;
1566 } else {
1567 }
1568 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>*/;
1569 var_mproperty = var17;
1570 var18 = NULL;
1571 if (var_mproperty == NULL) {
1572 var19 = 1; /* is null */
1573 } else {
1574 var19 = 0; /* arg is null but recv is not */
1575 }
1576 if (var19){
1577 if (var_recv_is_self){
1578 var20 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1579 if (varonce21) {
1580 var22 = varonce21;
1581 } else {
1582 var23 = "Error: Method or variable \'";
1583 var24 = 27;
1584 var25 = string__NativeString__to_s_with_length(var23, var24);
1585 var22 = var25;
1586 varonce21 = var22;
1587 }
1588 if (varonce26) {
1589 var27 = varonce26;
1590 } else {
1591 var28 = "\' unknown in ";
1592 var29 = 13;
1593 var30 = string__NativeString__to_s_with_length(var28, var29);
1594 var27 = var30;
1595 varonce26 = var27;
1596 }
1597 if (varonce31) {
1598 var32 = varonce31;
1599 } else {
1600 var33 = ".";
1601 var34 = 1;
1602 var35 = string__NativeString__to_s_with_length(var33, var34);
1603 var32 = var35;
1604 varonce31 = var32;
1605 }
1606 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
1607 { /* var36 = array_instance Array[Object] */
1608 var37 = 5;
1609 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
1610 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var22;
1611 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
1612 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var27;
1613 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var_recvtype;
1614 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var32;
1615 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
1616 CHECK_NEW_array__Array(var36);
1617 }
1618 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
1619 ((void (*)(val*, val*, val*))(var20->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var20, var_node, var39) /* error on <var20:ModelBuilder>*/;
1620 } else {
1621 var40 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1622 if (varonce41) {
1623 var42 = varonce41;
1624 } else {
1625 var43 = "Error: Method \'";
1626 var44 = 15;
1627 var45 = string__NativeString__to_s_with_length(var43, var44);
1628 var42 = var45;
1629 varonce41 = var42;
1630 }
1631 if (varonce46) {
1632 var47 = varonce46;
1633 } else {
1634 var48 = "\' doesn\'t exists in ";
1635 var49 = 20;
1636 var50 = string__NativeString__to_s_with_length(var48, var49);
1637 var47 = var50;
1638 varonce46 = var47;
1639 }
1640 if (varonce51) {
1641 var52 = varonce51;
1642 } else {
1643 var53 = ".";
1644 var54 = 1;
1645 var55 = string__NativeString__to_s_with_length(var53, var54);
1646 var52 = var55;
1647 varonce51 = var52;
1648 }
1649 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
1650 { /* var56 = array_instance Array[Object] */
1651 var57 = 5;
1652 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
1653 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var42;
1654 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var_name;
1655 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var47;
1656 ((struct instance_array__NativeArray*)var58)->values[3] = (val*) var_recvtype;
1657 ((struct instance_array__NativeArray*)var58)->values[4] = (val*) var52;
1658 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
1659 CHECK_NEW_array__Array(var56);
1660 }
1661 var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
1662 ((void (*)(val*, val*, val*))(var40->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var40, var_node, var59) /* error on <var40:ModelBuilder>*/;
1663 }
1664 var60 = NULL;
1665 var = var60;
1666 goto RET_LABEL;
1667 } else {
1668 }
1669 /* <var_mproperty:nullable MProperty(MProperty)> isa MMethod */
1670 cltype62 = type_model__MMethod.color;
1671 idtype63 = type_model__MMethod.id;
1672 if(cltype62 >= var_mproperty->type->table_size) {
1673 var61 = 0;
1674 } else {
1675 var61 = var_mproperty->type->type_table[cltype62] == idtype63;
1676 }
1677 if (!var61) {
1678 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 249);
1679 exit(1);
1680 }
1681 var66 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__visibility]))(var_mproperty) /* visibility on <var_mproperty:nullable MProperty(MMethod)>*/;
1682 var67 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:TypeVisitor>*/;
1683 var68 = ((short int (*)(val*, val*))(var66->class->vft[COLOR_kernel__Object___61d_61d]))(var66, var67) /* == on <var66:MVisibility>*/;
1684 var_ = var68;
1685 if (var68){
1686 var69 = !var_recv_is_self;
1687 var65 = var69;
1688 } else {
1689 var65 = var_;
1690 }
1691 var_70 = var65;
1692 if (var65){
1693 var71 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1694 var72 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1695 var73 = ((val* (*)(val*))(var72->class->vft[COLOR_model__MClassDef__mmodule]))(var72) /* mmodule on <var72:MClassDef>*/;
1696 var74 = ((val* (*)(val*, val*))(var71->class->vft[COLOR_model_base__MModule__visibility_for]))(var71, var73) /* visibility_for on <var71:MModule>*/;
1697 var75 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:TypeVisitor>*/;
1698 var76 = ((short int (*)(val*, val*))(var74->class->vft[COLOR_kernel__Comparable___60d]))(var74, var75) /* < on <var74:MVisibility>*/;
1699 var64 = var76;
1700 } else {
1701 var64 = var_70;
1702 }
1703 if (var64){
1704 var77 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1705 if (varonce78) {
1706 var79 = varonce78;
1707 } else {
1708 var80 = "Error: Method \'";
1709 var81 = 15;
1710 var82 = string__NativeString__to_s_with_length(var80, var81);
1711 var79 = var82;
1712 varonce78 = var79;
1713 }
1714 if (varonce83) {
1715 var84 = varonce83;
1716 } else {
1717 var85 = "\' is protected and can only acceded by self. ";
1718 var86 = 45;
1719 var87 = string__NativeString__to_s_with_length(var85, var86);
1720 var84 = var87;
1721 varonce83 = var84;
1722 }
1723 var88 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1724 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MClassDef__mmodule]))(var88) /* mmodule on <var88:MClassDef>*/;
1725 var90 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1726 var91 = ((val* (*)(val*, val*))(var89->class->vft[COLOR_model_base__MModule__visibility_for]))(var89, var90) /* visibility_for on <var89:MModule>*/;
1727 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
1728 { /* var92 = array_instance Array[Object] */
1729 var93 = 4;
1730 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
1731 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var79;
1732 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var_name;
1733 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var84;
1734 ((struct instance_array__NativeArray*)var94)->values[3] = (val*) var91;
1735 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
1736 CHECK_NEW_array__Array(var92);
1737 }
1738 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
1739 ((void (*)(val*, val*, val*))(var77->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var77, var_node, var95) /* error on <var77:ModelBuilder>*/;
1740 var96 = NULL;
1741 var = var96;
1742 goto RET_LABEL;
1743 } else {
1744 }
1745 var97 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1746 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)>*/;
1747 var_propdefs = var98;
1748 var99 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1749 var100 = 0;
1750 { /* Inline kernel#Int#== (var99,var100) */
1751 var103 = var99 == var100;
1752 var101 = var103;
1753 goto RET_LABEL102;
1754 RET_LABEL102:(void)0;
1755 }
1756 if (var101){
1757 var104 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1758 if (varonce105) {
1759 var106 = varonce105;
1760 } else {
1761 var107 = "Type error: no definition found for property ";
1762 var108 = 45;
1763 var109 = string__NativeString__to_s_with_length(var107, var108);
1764 var106 = var109;
1765 varonce105 = var106;
1766 }
1767 if (varonce110) {
1768 var111 = varonce110;
1769 } else {
1770 var112 = " in ";
1771 var113 = 4;
1772 var114 = string__NativeString__to_s_with_length(var112, var113);
1773 var111 = var114;
1774 varonce110 = var111;
1775 }
1776 var115 = NEW_array__Array(&type_array__Arraykernel__Object);
1777 { /* var115 = array_instance Array[Object] */
1778 var116 = 4;
1779 var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
1780 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var106;
1781 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_name;
1782 ((struct instance_array__NativeArray*)var117)->values[2] = (val*) var111;
1783 ((struct instance_array__NativeArray*)var117)->values[3] = (val*) var_unsafe_type;
1784 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
1785 CHECK_NEW_array__Array(var115);
1786 }
1787 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
1788 ((void (*)(val*, val*, val*))(var104->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var104, var_node, var118) /* error on <var104:ModelBuilder>*/;
1789 var119 = NULL;
1790 var = var119;
1791 goto RET_LABEL;
1792 } else {
1793 var120 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1794 var121 = 1;
1795 { /* Inline kernel#Int#== (var120,var121) */
1796 var124 = var120 == var121;
1797 var122 = var124;
1798 goto RET_LABEL123;
1799 RET_LABEL123:(void)0;
1800 }
1801 if (var122){
1802 var125 = ((val* (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_propdefs) /* first on <var_propdefs:Array[MMethodDef]>*/;
1803 var_mpropdef = var125;
1804 } else {
1805 var126 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1806 if (varonce127) {
1807 var128 = varonce127;
1808 } else {
1809 var129 = "Warning: confliting property definitions for property ";
1810 var130 = 54;
1811 var131 = string__NativeString__to_s_with_length(var129, var130);
1812 var128 = var131;
1813 varonce127 = var128;
1814 }
1815 if (varonce132) {
1816 var133 = varonce132;
1817 } else {
1818 var134 = " in ";
1819 var135 = 4;
1820 var136 = string__NativeString__to_s_with_length(var134, var135);
1821 var133 = var136;
1822 varonce132 = var133;
1823 }
1824 if (varonce137) {
1825 var138 = varonce137;
1826 } else {
1827 var139 = ": ";
1828 var140 = 2;
1829 var141 = string__NativeString__to_s_with_length(var139, var140);
1830 var138 = var141;
1831 varonce137 = var138;
1832 }
1833 if (varonce142) {
1834 var143 = varonce142;
1835 } else {
1836 var144 = " ";
1837 var145 = 1;
1838 var146 = string__NativeString__to_s_with_length(var144, var145);
1839 var143 = var146;
1840 varonce142 = var143;
1841 }
1842 var147 = ((val* (*)(val*, val*))(var_propdefs->class->vft[COLOR_string__Collection__join]))(var_propdefs, var143) /* join on <var_propdefs:Array[MMethodDef]>*/;
1843 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
1844 { /* var148 = array_instance Array[Object] */
1845 var149 = 6;
1846 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
1847 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var128;
1848 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_name;
1849 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
1850 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_unsafe_type;
1851 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
1852 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var147;
1853 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
1854 CHECK_NEW_array__Array(var148);
1855 }
1856 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
1857 ((void (*)(val*, val*, val*))(var126->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var126, var_node, var151) /* warning on <var126:ModelBuilder>*/;
1858 var152 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro]))(var_mproperty) /* intro on <var_mproperty:nullable MProperty(MMethod)>*/;
1859 var_mpropdef = var152;
1860 }
1861 }
1862 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>*/;
1863 var_msignature = var153;
1864 var154 = 0;
1865 var_erasure_cast = var154;
1866 var155 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:nullable Object(MMethodDef)>*/;
1867 if (var155 == NULL) {
1868 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 271);
1869 exit(1);
1870 } else {
1871 var156 = ((val* (*)(val*))(var155->class->vft[COLOR_model__MSignature__return_mtype]))(var155) /* return_mtype on <var155:nullable MSignature>*/;
1872 }
1873 var_rettype = var156;
1874 var158 = !var_recv_is_self;
1875 var_159 = var158;
1876 if (var158){
1877 var160 = NULL;
1878 if (var_rettype == NULL) {
1879 var161 = 0; /* is null */
1880 } else {
1881 var161 = 1; /* arg is null and recv is not */
1882 }
1883 var157 = var161;
1884 } else {
1885 var157 = var_159;
1886 }
1887 if (var157){
1888 /* <var_rettype:nullable MType(MType)> isa MNullableType */
1889 cltype163 = type_model__MNullableType.color;
1890 idtype164 = type_model__MNullableType.id;
1891 if(cltype163 >= var_rettype->type->table_size) {
1892 var162 = 0;
1893 } else {
1894 var162 = var_rettype->type->type_table[cltype163] == idtype164;
1895 }
1896 if (var162){
1897 var165 = ((val* (*)(val*))(var_rettype->class->vft[COLOR_model__MNullableType__mtype]))(var_rettype) /* mtype on <var_rettype:nullable MType(MNullableType)>*/;
1898 var_rettype = var165;
1899 } else {
1900 }
1901 /* <var_rettype:nullable MType(MType)> isa MParameterType */
1902 cltype167 = type_model__MParameterType.color;
1903 idtype168 = type_model__MParameterType.id;
1904 if(cltype167 >= var_rettype->type->table_size) {
1905 var166 = 0;
1906 } else {
1907 var166 = var_rettype->type->type_table[cltype167] == idtype168;
1908 }
1909 if (var166){
1910 var169 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1911 var_erased_rettype = var169;
1912 var170 = NULL;
1913 if (var_erased_rettype == NULL) {
1914 var171 = 0; /* is null */
1915 } else {
1916 var171 = 1; /* arg is null and recv is not */
1917 }
1918 if (!var171) {
1919 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 276);
1920 exit(1);
1921 }
1922 var172 = 1;
1923 var_erasure_cast = var172;
1924 } else {
1925 }
1926 } else {
1927 }
1928 var173 = NEW_typing__CallSite(&type_typing__CallSite);
1929 ((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>*/;
1930 CHECK_NEW_typing__CallSite(var173);
1931 var_callsite = var173;
1932 var = var_callsite;
1933 goto RET_LABEL;
1934 RET_LABEL:;
1935 return var;
1936 }
1937 /* method typing#TypeVisitor#get_method for (self: Object, ANode, MType, String, Bool): nullable CallSite */
1938 val* VIRTUAL_typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1939 val* var /* : nullable CallSite */;
1940 val* var1 /* : nullable CallSite */;
1941 var1 = typing__TypeVisitor__get_method(self, p0, p1, p2, p3);
1942 var = var1;
1943 RET_LABEL:;
1944 return var;
1945 }
1946 /* method typing#TypeVisitor#check_signature for (self: TypeVisitor, ANode, Array[AExpr], String, MSignature): Bool */
1947 short int typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
1948 short int var /* : Bool */;
1949 val* var_node /* var node: ANode */;
1950 val* var_args /* var args: Array[AExpr] */;
1951 val* var_name /* var name: String */;
1952 val* var_msignature /* var msignature: MSignature */;
1953 long var1 /* : Int */;
1954 long var_vararg_rank /* var vararg_rank: Int */;
1955 long var2 /* : Int */;
1956 short int var3 /* : Bool */;
1957 short int var5 /* : Bool */;
1958 int cltype;
1959 int idtype;
1960 short int var6 /* : Bool */;
1961 long var7 /* : Int */;
1962 long var8 /* : Int */;
1963 short int var9 /* : Bool */;
1964 short int var11 /* : Bool */;
1965 int cltype12;
1966 int idtype13;
1967 short int var14 /* : Bool */;
1968 val* var15 /* : ModelBuilder */;
1969 static val* varonce;
1970 val* var16 /* : String */;
1971 char* var17 /* : NativeString */;
1972 long var18 /* : Int */;
1973 val* var19 /* : String */;
1974 static val* varonce20;
1975 val* var21 /* : String */;
1976 char* var22 /* : NativeString */;
1977 long var23 /* : Int */;
1978 val* var24 /* : String */;
1979 val* var25 /* : Array[Object] */;
1980 long var26 /* : Int */;
1981 val* var27 /* : NativeArray[Object] */;
1982 val* var28 /* : String */;
1983 short int var29 /* : Bool */;
1984 long var30 /* : Int */;
1985 long var31 /* : Int */;
1986 short int var32 /* : Bool */;
1987 short int var34 /* : Bool */;
1988 short int var35 /* : Bool */;
1989 val* var36 /* : ModelBuilder */;
1990 static val* varonce37;
1991 val* var38 /* : String */;
1992 char* var39 /* : NativeString */;
1993 long var40 /* : Int */;
1994 val* var41 /* : String */;
1995 long var42 /* : Int */;
1996 static val* varonce43;
1997 val* var44 /* : String */;
1998 char* var45 /* : NativeString */;
1999 long var46 /* : Int */;
2000 val* var47 /* : String */;
2001 long var48 /* : Int */;
2002 static val* varonce49;
2003 val* var50 /* : String */;
2004 char* var51 /* : NativeString */;
2005 long var52 /* : Int */;
2006 val* var53 /* : String */;
2007 val* var54 /* : Array[Object] */;
2008 long var55 /* : Int */;
2009 val* var56 /* : NativeArray[Object] */;
2010 val* var57 /* : Object */;
2011 val* var58 /* : Object */;
2012 val* var59 /* : String */;
2013 short int var60 /* : Bool */;
2014 long var61 /* : Int */;
2015 long var62 /* : Int */;
2016 long var63 /* : Int */;
2017 long var65 /* : Int */;
2018 long var_vararg_decl /* var vararg_decl: Int */;
2019 val* var66 /* : Range[Int] */;
2020 long var67 /* : Int */;
2021 long var68 /* : Int */;
2022 val* var69 /* : Discrete */;
2023 val* var70 /* : Discrete */;
2024 val* var71 /* : Iterator[nullable Object] */;
2025 short int var72 /* : Bool */;
2026 val* var73 /* : nullable Object */;
2027 long var_i /* var i: Int */;
2028 long var74 /* : Int */;
2029 long var_j /* var j: Int */;
2030 short int var75 /* : Bool */;
2031 short int var77 /* : Bool */;
2032 short int var78 /* : Bool */;
2033 short int var80 /* : Bool */;
2034 int cltype81;
2035 int idtype82;
2036 short int var83 /* : Bool */;
2037 long var84 /* : Int */;
2038 long var86 /* : Int */;
2039 val* var87 /* : Array[MParameter] */;
2040 val* var88 /* : nullable Object */;
2041 val* var89 /* : MType */;
2042 val* var_paramtype /* var paramtype: MType */;
2043 val* var90 /* : nullable Object */;
2044 val* var91 /* : nullable MType */;
2045 long var92 /* : Int */;
2046 short int var93 /* : Bool */;
2047 short int var95 /* : Bool */;
2048 int cltype96;
2049 int idtype97;
2050 short int var98 /* : Bool */;
2051 val* var99 /* : Array[AExpr] */;
2052 val* var_varargs /* var varargs: Array[AExpr] */;
2053 val* var100 /* : Array[MParameter] */;
2054 val* var101 /* : nullable Object */;
2055 val* var102 /* : MType */;
2056 val* var_paramtype103 /* var paramtype: MType */;
2057 val* var104 /* : Range[Int] */;
2058 long var105 /* : Int */;
2059 long var107 /* : Int */;
2060 val* var108 /* : Discrete */;
2061 val* var109 /* : Discrete */;
2062 val* var110 /* : Iterator[nullable Object] */;
2063 short int var111 /* : Bool */;
2064 val* var112 /* : nullable Object */;
2065 long var_j113 /* var j: Int */;
2066 long var114 /* : Int */;
2067 val* var115 /* : nullable Object */;
2068 val* var116 /* : nullable Object */;
2069 val* var117 /* : nullable MType */;
2070 short int var119 /* : Bool */;
2071 var_node = p0;
2072 var_args = p1;
2073 var_name = p2;
2074 var_msignature = p3;
2075 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
2076 var_vararg_rank = var1;
2077 var2 = 0;
2078 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
2079 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2080 /* <var2:Int> isa OTHER */
2081 var5 = 1; /* easy <var2:Int> isa OTHER*/
2082 if (!var5) {
2083 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
2084 exit(1);
2085 }
2086 var6 = var_vararg_rank >= var2;
2087 var3 = var6;
2088 goto RET_LABEL4;
2089 RET_LABEL4:(void)0;
2090 }
2091 if (var3){
2092 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2093 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2094 { /* Inline kernel#Int#< (var7,var8) */
2095 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
2096 /* <var8:Int> isa OTHER */
2097 var11 = 1; /* easy <var8:Int> isa OTHER*/
2098 if (!var11) {
2099 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
2100 exit(1);
2101 }
2102 var14 = var7 < var8;
2103 var9 = var14;
2104 goto RET_LABEL10;
2105 RET_LABEL10:(void)0;
2106 }
2107 if (var9){
2108 var15 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2109 if (varonce) {
2110 var16 = varonce;
2111 } else {
2112 var17 = "Error: arity mismatch; prototype is \'";
2113 var18 = 37;
2114 var19 = string__NativeString__to_s_with_length(var17, var18);
2115 var16 = var19;
2116 varonce = var16;
2117 }
2118 if (varonce20) {
2119 var21 = varonce20;
2120 } else {
2121 var22 = "\'";
2122 var23 = 1;
2123 var24 = string__NativeString__to_s_with_length(var22, var23);
2124 var21 = var24;
2125 varonce20 = var21;
2126 }
2127 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
2128 { /* var25 = array_instance Array[Object] */
2129 var26 = 4;
2130 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
2131 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var16;
2132 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var_name;
2133 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var_msignature;
2134 ((struct instance_array__NativeArray*)var27)->values[3] = (val*) var21;
2135 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
2136 CHECK_NEW_array__Array(var25);
2137 }
2138 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
2139 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var15, var_node, var28) /* error on <var15:ModelBuilder>*/;
2140 var29 = 0;
2141 var = var29;
2142 goto RET_LABEL;
2143 } else {
2144 }
2145 } else {
2146 var30 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2147 var31 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2148 { /* Inline kernel#Int#!= (var30,var31) */
2149 var34 = var30 == var31;
2150 var35 = !var34;
2151 var32 = var35;
2152 goto RET_LABEL33;
2153 RET_LABEL33:(void)0;
2154 }
2155 if (var32){
2156 var36 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2157 if (varonce37) {
2158 var38 = varonce37;
2159 } else {
2160 var39 = "Error: Incorrect number of parameters. Got ";
2161 var40 = 43;
2162 var41 = string__NativeString__to_s_with_length(var39, var40);
2163 var38 = var41;
2164 varonce37 = var38;
2165 }
2166 var42 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2167 if (varonce43) {
2168 var44 = varonce43;
2169 } else {
2170 var45 = ", expected ";
2171 var46 = 11;
2172 var47 = string__NativeString__to_s_with_length(var45, var46);
2173 var44 = var47;
2174 varonce43 = var44;
2175 }
2176 var48 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2177 if (varonce49) {
2178 var50 = varonce49;
2179 } else {
2180 var51 = ". Signature is ";
2181 var52 = 15;
2182 var53 = string__NativeString__to_s_with_length(var51, var52);
2183 var50 = var53;
2184 varonce49 = var50;
2185 }
2186 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
2187 { /* var54 = array_instance Array[Object] */
2188 var55 = 6;
2189 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
2190 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var38;
2191 var57 = BOX_kernel__Int(var42); /* autobox from Int to Object */
2192 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var57;
2193 ((struct instance_array__NativeArray*)var56)->values[2] = (val*) var44;
2194 var58 = BOX_kernel__Int(var48); /* autobox from Int to Object */
2195 ((struct instance_array__NativeArray*)var56)->values[3] = (val*) var58;
2196 ((struct instance_array__NativeArray*)var56)->values[4] = (val*) var50;
2197 ((struct instance_array__NativeArray*)var56)->values[5] = (val*) var_msignature;
2198 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
2199 CHECK_NEW_array__Array(var54);
2200 }
2201 var59 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
2202 ((void (*)(val*, val*, val*))(var36->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var36, var_node, var59) /* error on <var36:ModelBuilder>*/;
2203 var60 = 0;
2204 var = var60;
2205 goto RET_LABEL;
2206 } else {
2207 }
2208 }
2209 var61 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2210 var62 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2211 { /* Inline kernel#Int#- (var61,var62) */
2212 var65 = var61 - var62;
2213 var63 = var65;
2214 goto RET_LABEL64;
2215 RET_LABEL64:(void)0;
2216 }
2217 var_vararg_decl = var63;
2218 var66 = NEW_range__Range(&type_range__Rangekernel__Int);
2219 var67 = 0;
2220 var68 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2221 var69 = BOX_kernel__Int(var67); /* autobox from Int to Discrete */
2222 var70 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
2223 ((void (*)(val*, val*, val*))(var66->class->vft[COLOR_range__Range__without_last]))(var66, var69, var70) /* without_last on <var66:Range[Int]>*/;
2224 CHECK_NEW_range__Range(var66);
2225 var71 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:Range[Int]>*/;
2226 for(;;) {
2227 var72 = ((short int (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var71) /* is_ok on <var71:Iterator[nullable Object]>*/;
2228 if(!var72) break;
2229 var73 = ((val* (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__item]))(var71) /* item on <var71:Iterator[nullable Object]>*/;
2230 var74 = ((struct instance_kernel__Int*)var73)->value; /* autounbox from nullable Object to Int */;
2231 var_i = var74;
2232 var_j = var_i;
2233 { /* Inline kernel#Int#== (var_i,var_vararg_rank) */
2234 var77 = var_i == var_vararg_rank;
2235 var75 = var77;
2236 goto RET_LABEL76;
2237 RET_LABEL76:(void)0;
2238 }
2239 if (var75){
2240 goto CONTINUE_label;
2241 } else {
2242 }
2243 { /* Inline kernel#Int#> (var_i,var_vararg_rank) */
2244 /* Covariant cast for argument 0 (i) <var_vararg_rank:Int> isa OTHER */
2245 /* <var_vararg_rank:Int> isa OTHER */
2246 var80 = 1; /* easy <var_vararg_rank:Int> isa OTHER*/
2247 if (!var80) {
2248 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
2249 exit(1);
2250 }
2251 var83 = var_i > var_vararg_rank;
2252 var78 = var83;
2253 goto RET_LABEL79;
2254 RET_LABEL79:(void)0;
2255 }
2256 if (var78){
2257 { /* Inline kernel#Int#+ (var_i,var_vararg_decl) */
2258 var86 = var_i + var_vararg_decl;
2259 var84 = var86;
2260 goto RET_LABEL85;
2261 RET_LABEL85:(void)0;
2262 }
2263 var_j = var84;
2264 } else {
2265 }
2266 var87 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2267 var88 = ((val* (*)(val*, long))(var87->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var87, var_i) /* [] on <var87:Array[MParameter]>*/;
2268 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MParameter__mtype]))(var88) /* mtype on <var88:nullable Object(MParameter)>*/;
2269 var_paramtype = var89;
2270 var90 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j) /* [] on <var_args:Array[AExpr]>*/;
2271 var91 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var90, var_paramtype) /* visit_expr_subtype on <self:TypeVisitor>*/;
2272 var91;
2273 CONTINUE_label: (void)0;
2274 ((void (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__next]))(var71) /* next on <var71:Iterator[nullable Object]>*/;
2275 }
2276 BREAK_label: (void)0;
2277 var92 = 0;
2278 { /* Inline kernel#Int#>= (var_vararg_rank,var92) */
2279 /* Covariant cast for argument 0 (i) <var92:Int> isa OTHER */
2280 /* <var92:Int> isa OTHER */
2281 var95 = 1; /* easy <var92:Int> isa OTHER*/
2282 if (!var95) {
2283 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
2284 exit(1);
2285 }
2286 var98 = var_vararg_rank >= var92;
2287 var93 = var98;
2288 goto RET_LABEL94;
2289 RET_LABEL94:(void)0;
2290 }
2291 if (var93){
2292 var99 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
2293 ((void (*)(val*))(var99->class->vft[COLOR_array__Array__init]))(var99) /* init on <var99:Array[AExpr]>*/;
2294 CHECK_NEW_array__Array(var99);
2295 var_varargs = var99;
2296 var100 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2297 var101 = ((val* (*)(val*, long))(var100->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var100, var_vararg_rank) /* [] on <var100:Array[MParameter]>*/;
2298 var102 = ((val* (*)(val*))(var101->class->vft[COLOR_model__MParameter__mtype]))(var101) /* mtype on <var101:nullable Object(MParameter)>*/;
2299 var_paramtype103 = var102;
2300 var104 = NEW_range__Range(&type_range__Rangekernel__Int);
2301 { /* Inline kernel#Int#+ (var_vararg_rank,var_vararg_decl) */
2302 var107 = var_vararg_rank + var_vararg_decl;
2303 var105 = var107;
2304 goto RET_LABEL106;
2305 RET_LABEL106:(void)0;
2306 }
2307 var108 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
2308 var109 = BOX_kernel__Int(var105); /* autobox from Int to Discrete */
2309 ((void (*)(val*, val*, val*))(var104->class->vft[COLOR_range__Range__init]))(var104, var108, var109) /* init on <var104:Range[Int]>*/;
2310 CHECK_NEW_range__Range(var104);
2311 var110 = ((val* (*)(val*))(var104->class->vft[COLOR_abstract_collection__Collection__iterator]))(var104) /* iterator on <var104:Range[Int]>*/;
2312 for(;;) {
2313 var111 = ((short int (*)(val*))(var110->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var110) /* is_ok on <var110:Iterator[nullable Object]>*/;
2314 if(!var111) break;
2315 var112 = ((val* (*)(val*))(var110->class->vft[COLOR_abstract_collection__Iterator__item]))(var110) /* item on <var110:Iterator[nullable Object]>*/;
2316 var114 = ((struct instance_kernel__Int*)var112)->value; /* autounbox from nullable Object to Int */;
2317 var_j113 = var114;
2318 var115 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j113) /* [] on <var_args:Array[AExpr]>*/;
2319 ((void (*)(val*, val*))(var_varargs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_varargs, var115) /* add on <var_varargs:Array[AExpr]>*/;
2320 var116 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j113) /* [] on <var_args:Array[AExpr]>*/;
2321 var117 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var116, var_paramtype103) /* visit_expr_subtype on <self:TypeVisitor>*/;
2322 var117;
2323 CONTINUE_label118: (void)0;
2324 ((void (*)(val*))(var110->class->vft[COLOR_abstract_collection__Iterator__next]))(var110) /* next on <var110:Iterator[nullable Object]>*/;
2325 }
2326 BREAK_label118: (void)0;
2327 } else {
2328 }
2329 var119 = 1;
2330 var = var119;
2331 goto RET_LABEL;
2332 RET_LABEL:;
2333 return var;
2334 }
2335 /* method typing#TypeVisitor#check_signature for (self: Object, ANode, Array[AExpr], String, MSignature): Bool */
2336 short int VIRTUAL_typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
2337 short int var /* : Bool */;
2338 short int var1 /* : Bool */;
2339 var1 = typing__TypeVisitor__check_signature(self, p0, p1, p2, p3);
2340 var = var1;
2341 RET_LABEL:;
2342 return var;
2343 }
2344 /* method typing#TypeVisitor#error for (self: TypeVisitor, ANode, String) */
2345 void typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2346 val* var_node /* var node: ANode */;
2347 val* var_message /* var message: String */;
2348 val* var /* : ModelBuilder */;
2349 val* var1 /* : ToolContext */;
2350 val* var2 /* : Location */;
2351 var_node = p0;
2352 var_message = p1;
2353 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2354 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
2355 var2 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
2356 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_toolcontext__ToolContext__error]))(var1, var2, var_message) /* error on <var1:ToolContext>*/;
2357 RET_LABEL:;
2358 }
2359 /* method typing#TypeVisitor#error for (self: Object, ANode, String) */
2360 void VIRTUAL_typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2361 typing__TypeVisitor__error(self, p0, p1);
2362 RET_LABEL:;
2363 }
2364 /* method typing#TypeVisitor#get_variable for (self: TypeVisitor, AExpr, Variable): nullable MType */
2365 val* typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2366 val* var /* : nullable MType */;
2367 val* var_node /* var node: AExpr */;
2368 val* var_variable /* var variable: Variable */;
2369 val* var1 /* : nullable FlowContext */;
2370 val* var_flow /* var flow: nullable FlowContext */;
2371 val* var2 /* : null */;
2372 short int var3 /* : Bool */;
2373 static val* varonce;
2374 val* var4 /* : String */;
2375 char* var5 /* : NativeString */;
2376 long var6 /* : Int */;
2377 val* var7 /* : String */;
2378 val* var8 /* : null */;
2379 val* var9 /* : HashMap[Variable, nullable MType] */;
2380 short int var10 /* : Bool */;
2381 val* var11 /* : HashMap[Variable, nullable MType] */;
2382 val* var12 /* : nullable Object */;
2383 val* var13 /* : nullable Array[nullable MType] */;
2384 val* var_mtypes /* var mtypes: nullable Array[nullable MType] */;
2385 short int var14 /* : Bool */;
2386 val* var15 /* : null */;
2387 short int var16 /* : Bool */;
2388 short int var_ /* var : Bool */;
2389 long var17 /* : Int */;
2390 long var18 /* : Int */;
2391 short int var19 /* : Bool */;
2392 short int var21 /* : Bool */;
2393 val* var22 /* : nullable MType */;
2394 long var23 /* : Int */;
2395 long var24 /* : Int */;
2396 short int var25 /* : Bool */;
2397 short int var27 /* : Bool */;
2398 val* var28 /* : nullable Object */;
2399 val* var29 /* : nullable MType */;
2400 val* var_res /* var res: nullable MType */;
2401 val* var30 /* : null */;
2402 short int var31 /* : Bool */;
2403 val* var32 /* : nullable MType */;
2404 var_node = p0;
2405 var_variable = p1;
2406 var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2407 var_flow = var1;
2408 var2 = NULL;
2409 if (var_flow == NULL) {
2410 var3 = 1; /* is null */
2411 } else {
2412 var3 = 0; /* arg is null but recv is not */
2413 }
2414 if (var3){
2415 if (varonce) {
2416 var4 = varonce;
2417 } else {
2418 var5 = "No context!";
2419 var6 = 11;
2420 var7 = string__NativeString__to_s_with_length(var5, var6);
2421 var4 = var7;
2422 varonce = var4;
2423 }
2424 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var4) /* error on <self:TypeVisitor>*/;
2425 var8 = NULL;
2426 var = var8;
2427 goto RET_LABEL;
2428 } else {
2429 }
2430 var9 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2431 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]>*/;
2432 if (var10){
2433 var11 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2434 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_variable) /* [] on <var11:HashMap[Variable, nullable MType]>*/;
2435 var = var12;
2436 goto RET_LABEL;
2437 } else {
2438 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)>*/;
2439 var_mtypes = var13;
2440 var15 = NULL;
2441 if (var_mtypes == NULL) {
2442 var16 = 1; /* is null */
2443 } else {
2444 var16 = 0; /* arg is null but recv is not */
2445 }
2446 var_ = var16;
2447 if (var16){
2448 var14 = var_;
2449 } else {
2450 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])>*/;
2451 var18 = 0;
2452 { /* Inline kernel#Int#== (var17,var18) */
2453 var21 = var17 == var18;
2454 var19 = var21;
2455 goto RET_LABEL20;
2456 RET_LABEL20:(void)0;
2457 }
2458 var14 = var19;
2459 }
2460 if (var14){
2461 var22 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2462 var = var22;
2463 goto RET_LABEL;
2464 } else {
2465 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])>*/;
2466 var24 = 1;
2467 { /* Inline kernel#Int#== (var23,var24) */
2468 var27 = var23 == var24;
2469 var25 = var27;
2470 goto RET_LABEL26;
2471 RET_LABEL26:(void)0;
2472 }
2473 if (var25){
2474 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])>*/;
2475 var = var28;
2476 goto RET_LABEL;
2477 } else {
2478 var29 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__merge_types]))(self, var_node, var_mtypes) /* merge_types on <self:TypeVisitor>*/;
2479 var_res = var29;
2480 var30 = NULL;
2481 if (var_res == NULL) {
2482 var31 = 1; /* is null */
2483 } else {
2484 var31 = 0; /* arg is null but recv is not */
2485 }
2486 if (var31){
2487 var32 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2488 var_res = var32;
2489 } else {
2490 }
2491 var = var_res;
2492 goto RET_LABEL;
2493 }
2494 }
2495 }
2496 RET_LABEL:;
2497 return var;
2498 }
2499 /* method typing#TypeVisitor#get_variable for (self: Object, AExpr, Variable): nullable MType */
2500 val* VIRTUAL_typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2501 val* var /* : nullable MType */;
2502 val* var1 /* : nullable MType */;
2503 var1 = typing__TypeVisitor__get_variable(self, p0, p1);
2504 var = var1;
2505 RET_LABEL:;
2506 return var;
2507 }
2508 /* method typing#TypeVisitor#set_variable for (self: TypeVisitor, AExpr, Variable, nullable MType) */
2509 void typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2510 val* var_node /* var node: AExpr */;
2511 val* var_variable /* var variable: Variable */;
2512 val* var_mtype /* var mtype: nullable MType */;
2513 val* var /* : nullable FlowContext */;
2514 val* var_flow /* var flow: nullable FlowContext */;
2515 val* var1 /* : null */;
2516 short int var2 /* : Bool */;
2517 var_node = p0;
2518 var_variable = p1;
2519 var_mtype = p2;
2520 var = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2521 var_flow = var;
2522 var1 = NULL;
2523 if (var_flow == NULL) {
2524 var2 = 0; /* is null */
2525 } else {
2526 var2 = 1; /* arg is null and recv is not */
2527 }
2528 if (!var2) {
2529 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 360);
2530 exit(1);
2531 }
2532 ((void (*)(val*, val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__set_var]))(var_flow, var_variable, var_mtype) /* set_var on <var_flow:nullable FlowContext(FlowContext)>*/;
2533 RET_LABEL:;
2534 }
2535 /* method typing#TypeVisitor#set_variable for (self: Object, AExpr, Variable, nullable MType) */
2536 void VIRTUAL_typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2537 typing__TypeVisitor__set_variable(self, p0, p1, p2);
2538 RET_LABEL:;
2539 }
2540 /* method typing#TypeVisitor#merge_types for (self: TypeVisitor, ANode, Array[nullable MType]): nullable MType */
2541 val* typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2542 val* var /* : nullable MType */;
2543 val* var_node /* var node: ANode */;
2544 val* var_col /* var col: Array[nullable MType] */;
2545 long var1 /* : Int */;
2546 long var2 /* : Int */;
2547 short int var3 /* : Bool */;
2548 short int var5 /* : Bool */;
2549 val* var6 /* : nullable Object */;
2550 val* var7 /* : Array[nullable MType] */;
2551 val* var_res /* var res: Array[nullable MType] */;
2552 val* var8 /* : Iterator[nullable Object] */;
2553 short int var9 /* : Bool */;
2554 val* var10 /* : nullable Object */;
2555 val* var_t1 /* var t1: nullable MType */;
2556 val* var11 /* : null */;
2557 short int var12 /* : Bool */;
2558 short int var13 /* : Bool */;
2559 short int var_found /* var found: Bool */;
2560 val* var14 /* : Iterator[nullable Object] */;
2561 short int var15 /* : Bool */;
2562 val* var16 /* : nullable Object */;
2563 val* var_t2 /* var t2: nullable MType */;
2564 val* var17 /* : null */;
2565 short int var18 /* : Bool */;
2566 short int var20 /* : Bool */;
2567 short int var21 /* : Bool */;
2568 int cltype;
2569 int idtype;
2570 short int var_ /* var : Bool */;
2571 short int var22 /* : Bool */;
2572 int cltype23;
2573 int idtype24;
2574 val* var25 /* : MType */;
2575 short int var26 /* : Bool */;
2576 short int var27 /* : Bool */;
2577 short int var28 /* : Bool */;
2578 val* var29 /* : null */;
2579 var_node = p0;
2580 var_col = p1;
2581 var1 = ((long (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__length]))(var_col) /* length on <var_col:Array[nullable MType]>*/;
2582 var2 = 1;
2583 { /* Inline kernel#Int#== (var1,var2) */
2584 var5 = var1 == var2;
2585 var3 = var5;
2586 goto RET_LABEL4;
2587 RET_LABEL4:(void)0;
2588 }
2589 if (var3){
2590 var6 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__first]))(var_col) /* first on <var_col:Array[nullable MType]>*/;
2591 var = var6;
2592 goto RET_LABEL;
2593 } else {
2594 }
2595 var7 = NEW_array__Array(&type_array__Arraynullable_model__MType);
2596 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[nullable MType]>*/;
2597 CHECK_NEW_array__Array(var7);
2598 var_res = var7;
2599 var8 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2600 for(;;) {
2601 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
2602 if(!var9) break;
2603 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
2604 var_t1 = var10;
2605 var11 = NULL;
2606 if (var_t1 == NULL) {
2607 var12 = 1; /* is null */
2608 } else {
2609 var12 = 0; /* arg is null but recv is not */
2610 }
2611 if (var12){
2612 goto CONTINUE_label;
2613 } else {
2614 }
2615 var13 = 1;
2616 var_found = var13;
2617 var14 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2618 for(;;) {
2619 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
2620 if(!var15) break;
2621 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
2622 var_t2 = var16;
2623 var17 = NULL;
2624 if (var_t2 == NULL) {
2625 var18 = 1; /* is null */
2626 } else {
2627 var18 = 0; /* arg is null but recv is not */
2628 }
2629 if (var18){
2630 goto CONTINUE_label19;
2631 } else {
2632 }
2633 /* <var_t2:nullable MType(MType)> isa MNullableType */
2634 cltype = type_model__MNullableType.color;
2635 idtype = type_model__MNullableType.id;
2636 if(cltype >= var_t2->type->table_size) {
2637 var21 = 0;
2638 } else {
2639 var21 = var_t2->type->type_table[cltype] == idtype;
2640 }
2641 var_ = var21;
2642 if (var21){
2643 var20 = var_;
2644 } else {
2645 /* <var_t2:nullable MType(MType)> isa MNullType */
2646 cltype23 = type_model__MNullType.color;
2647 idtype24 = type_model__MNullType.id;
2648 if(cltype23 >= var_t2->type->table_size) {
2649 var22 = 0;
2650 } else {
2651 var22 = var_t2->type->type_table[cltype23] == idtype24;
2652 }
2653 var20 = var22;
2654 }
2655 if (var20){
2656 var25 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MType__as_nullable]))(var_t1) /* as_nullable on <var_t1:nullable MType(MType)>*/;
2657 var_t1 = var25;
2658 } else {
2659 }
2660 var26 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_t2, var_t1) /* is_subtype on <self:TypeVisitor>*/;
2661 var27 = !var26;
2662 if (var27){
2663 var28 = 0;
2664 var_found = var28;
2665 } else {
2666 }
2667 CONTINUE_label19: (void)0;
2668 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
2669 }
2670 BREAK_label19: (void)0;
2671 if (var_found){
2672 var = var_t1;
2673 goto RET_LABEL;
2674 } else {
2675 }
2676 CONTINUE_label: (void)0;
2677 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
2678 }
2679 BREAK_label: (void)0;
2680 var29 = NULL;
2681 var = var29;
2682 goto RET_LABEL;
2683 RET_LABEL:;
2684 return var;
2685 }
2686 /* method typing#TypeVisitor#merge_types for (self: Object, ANode, Array[nullable MType]): nullable MType */
2687 val* VIRTUAL_typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2688 val* var /* : nullable MType */;
2689 val* var1 /* : nullable MType */;
2690 var1 = typing__TypeVisitor__merge_types(self, p0, p1);
2691 var = var1;
2692 RET_LABEL:;
2693 return var;
2694 }
2695 /* method typing#CallSite#node for (self: CallSite): ANode */
2696 val* typing__CallSite__node(val* self) {
2697 val* var /* : ANode */;
2698 val* var1 /* : ANode */;
2699 var1 = self->attrs[COLOR_typing__CallSite___64dnode].val; /* @node on <self:CallSite> */
2700 if (var1 == NULL) {
2701 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @node", "src/typing.nit", 391);
2702 exit(1);
2703 }
2704 var = var1;
2705 RET_LABEL:;
2706 return var;
2707 }
2708 /* method typing#CallSite#node for (self: Object): ANode */
2709 val* VIRTUAL_typing__CallSite__node(val* self) {
2710 val* var /* : ANode */;
2711 val* var1 /* : ANode */;
2712 var1 = typing__CallSite__node(self);
2713 var = var1;
2714 RET_LABEL:;
2715 return var;
2716 }
2717 /* method typing#CallSite#node= for (self: CallSite, ANode) */
2718 void typing__CallSite__node_61d(val* self, val* p0) {
2719 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2720 RET_LABEL:;
2721 }
2722 /* method typing#CallSite#node= for (self: Object, ANode) */
2723 void VIRTUAL_typing__CallSite__node_61d(val* self, val* p0) {
2724 typing__CallSite__node_61d(self, p0);
2725 RET_LABEL:;
2726 }
2727 /* method typing#CallSite#recv for (self: CallSite): MType */
2728 val* typing__CallSite__recv(val* self) {
2729 val* var /* : MType */;
2730 val* var1 /* : MType */;
2731 var1 = self->attrs[COLOR_typing__CallSite___64drecv].val; /* @recv on <self:CallSite> */
2732 if (var1 == NULL) {
2733 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @recv", "src/typing.nit", 394);
2734 exit(1);
2735 }
2736 var = var1;
2737 RET_LABEL:;
2738 return var;
2739 }
2740 /* method typing#CallSite#recv for (self: Object): MType */
2741 val* VIRTUAL_typing__CallSite__recv(val* self) {
2742 val* var /* : MType */;
2743 val* var1 /* : MType */;
2744 var1 = typing__CallSite__recv(self);
2745 var = var1;
2746 RET_LABEL:;
2747 return var;
2748 }
2749 /* method typing#CallSite#recv= for (self: CallSite, MType) */
2750 void typing__CallSite__recv_61d(val* self, val* p0) {
2751 self->attrs[COLOR_typing__CallSite___64drecv].val = p0; /* @recv on <self:CallSite> */
2752 RET_LABEL:;
2753 }
2754 /* method typing#CallSite#recv= for (self: Object, MType) */
2755 void VIRTUAL_typing__CallSite__recv_61d(val* self, val* p0) {
2756 typing__CallSite__recv_61d(self, p0);
2757 RET_LABEL:;
2758 }
2759 /* method typing#CallSite#recv_is_self for (self: CallSite): Bool */
2760 short int typing__CallSite__recv_is_self(val* self) {
2761 short int var /* : Bool */;
2762 short int var1 /* : Bool */;
2763 var1 = self->attrs[COLOR_typing__CallSite___64drecv_is_self].s; /* @recv_is_self on <self:CallSite> */
2764 var = var1;
2765 RET_LABEL:;
2766 return var;
2767 }
2768 /* method typing#CallSite#recv_is_self for (self: Object): Bool */
2769 short int VIRTUAL_typing__CallSite__recv_is_self(val* self) {
2770 short int var /* : Bool */;
2771 short int var1 /* : Bool */;
2772 var1 = typing__CallSite__recv_is_self(self);
2773 var = var1;
2774 RET_LABEL:;
2775 return var;
2776 }
2777 /* method typing#CallSite#recv_is_self= for (self: CallSite, Bool) */
2778 void typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2779 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p0; /* @recv_is_self on <self:CallSite> */
2780 RET_LABEL:;
2781 }
2782 /* method typing#CallSite#recv_is_self= for (self: Object, Bool) */
2783 void VIRTUAL_typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2784 typing__CallSite__recv_is_self_61d(self, p0);
2785 RET_LABEL:;
2786 }
2787 /* method typing#CallSite#mproperty for (self: CallSite): MMethod */
2788 val* typing__CallSite__mproperty(val* self) {
2789 val* var /* : MMethod */;
2790 val* var1 /* : MMethod */;
2791 var1 = self->attrs[COLOR_typing__CallSite___64dmproperty].val; /* @mproperty on <self:CallSite> */
2792 if (var1 == NULL) {
2793 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mproperty", "src/typing.nit", 402);
2794 exit(1);
2795 }
2796 var = var1;
2797 RET_LABEL:;
2798 return var;
2799 }
2800 /* method typing#CallSite#mproperty for (self: Object): MMethod */
2801 val* VIRTUAL_typing__CallSite__mproperty(val* self) {
2802 val* var /* : MMethod */;
2803 val* var1 /* : MMethod */;
2804 var1 = typing__CallSite__mproperty(self);
2805 var = var1;
2806 RET_LABEL:;
2807 return var;
2808 }
2809 /* method typing#CallSite#mproperty= for (self: CallSite, MMethod) */
2810 void typing__CallSite__mproperty_61d(val* self, val* p0) {
2811 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p0; /* @mproperty on <self:CallSite> */
2812 RET_LABEL:;
2813 }
2814 /* method typing#CallSite#mproperty= for (self: Object, MMethod) */
2815 void VIRTUAL_typing__CallSite__mproperty_61d(val* self, val* p0) {
2816 typing__CallSite__mproperty_61d(self, p0);
2817 RET_LABEL:;
2818 }
2819 /* method typing#CallSite#mpropdef for (self: CallSite): MMethodDef */
2820 val* typing__CallSite__mpropdef(val* self) {
2821 val* var /* : MMethodDef */;
2822 val* var1 /* : MMethodDef */;
2823 var1 = self->attrs[COLOR_typing__CallSite___64dmpropdef].val; /* @mpropdef on <self:CallSite> */
2824 if (var1 == NULL) {
2825 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mpropdef", "src/typing.nit", 405);
2826 exit(1);
2827 }
2828 var = var1;
2829 RET_LABEL:;
2830 return var;
2831 }
2832 /* method typing#CallSite#mpropdef for (self: Object): MMethodDef */
2833 val* VIRTUAL_typing__CallSite__mpropdef(val* self) {
2834 val* var /* : MMethodDef */;
2835 val* var1 /* : MMethodDef */;
2836 var1 = typing__CallSite__mpropdef(self);
2837 var = var1;
2838 RET_LABEL:;
2839 return var;
2840 }
2841 /* method typing#CallSite#mpropdef= for (self: CallSite, MMethodDef) */
2842 void typing__CallSite__mpropdef_61d(val* self, val* p0) {
2843 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p0; /* @mpropdef on <self:CallSite> */
2844 RET_LABEL:;
2845 }
2846 /* method typing#CallSite#mpropdef= for (self: Object, MMethodDef) */
2847 void VIRTUAL_typing__CallSite__mpropdef_61d(val* self, val* p0) {
2848 typing__CallSite__mpropdef_61d(self, p0);
2849 RET_LABEL:;
2850 }
2851 /* method typing#CallSite#msignature for (self: CallSite): MSignature */
2852 val* typing__CallSite__msignature(val* self) {
2853 val* var /* : MSignature */;
2854 val* var1 /* : MSignature */;
2855 var1 = self->attrs[COLOR_typing__CallSite___64dmsignature].val; /* @msignature on <self:CallSite> */
2856 if (var1 == NULL) {
2857 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @msignature", "src/typing.nit", 409);
2858 exit(1);
2859 }
2860 var = var1;
2861 RET_LABEL:;
2862 return var;
2863 }
2864 /* method typing#CallSite#msignature for (self: Object): MSignature */
2865 val* VIRTUAL_typing__CallSite__msignature(val* self) {
2866 val* var /* : MSignature */;
2867 val* var1 /* : MSignature */;
2868 var1 = typing__CallSite__msignature(self);
2869 var = var1;
2870 RET_LABEL:;
2871 return var;
2872 }
2873 /* method typing#CallSite#msignature= for (self: CallSite, MSignature) */
2874 void typing__CallSite__msignature_61d(val* self, val* p0) {
2875 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p0; /* @msignature on <self:CallSite> */
2876 RET_LABEL:;
2877 }
2878 /* method typing#CallSite#msignature= for (self: Object, MSignature) */
2879 void VIRTUAL_typing__CallSite__msignature_61d(val* self, val* p0) {
2880 typing__CallSite__msignature_61d(self, p0);
2881 RET_LABEL:;
2882 }
2883 /* method typing#CallSite#erasure_cast for (self: CallSite): Bool */
2884 short int typing__CallSite__erasure_cast(val* self) {
2885 short int var /* : Bool */;
2886 short int var1 /* : Bool */;
2887 var1 = self->attrs[COLOR_typing__CallSite___64derasure_cast].s; /* @erasure_cast on <self:CallSite> */
2888 var = var1;
2889 RET_LABEL:;
2890 return var;
2891 }
2892 /* method typing#CallSite#erasure_cast for (self: Object): Bool */
2893 short int VIRTUAL_typing__CallSite__erasure_cast(val* self) {
2894 short int var /* : Bool */;
2895 short int var1 /* : Bool */;
2896 var1 = typing__CallSite__erasure_cast(self);
2897 var = var1;
2898 RET_LABEL:;
2899 return var;
2900 }
2901 /* method typing#CallSite#erasure_cast= for (self: CallSite, Bool) */
2902 void typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2903 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p0; /* @erasure_cast on <self:CallSite> */
2904 RET_LABEL:;
2905 }
2906 /* method typing#CallSite#erasure_cast= for (self: Object, Bool) */
2907 void VIRTUAL_typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2908 typing__CallSite__erasure_cast_61d(self, p0);
2909 RET_LABEL:;
2910 }
2911 /* method typing#CallSite#check_signature for (self: CallSite, TypeVisitor, Array[AExpr]): Bool */
2912 short int typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2913 short int var /* : Bool */;
2914 val* var_v /* var v: TypeVisitor */;
2915 val* var_args /* var args: Array[AExpr] */;
2916 val* var1 /* : ANode */;
2917 val* var2 /* : MMethod */;
2918 val* var3 /* : String */;
2919 val* var4 /* : MSignature */;
2920 short int var5 /* : Bool */;
2921 var_v = p0;
2922 var_args = p1;
2923 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__node]))(self) /* node on <self:CallSite>*/;
2924 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__mproperty]))(self) /* mproperty on <self:CallSite>*/;
2925 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MProperty__name]))(var2) /* name on <var2:MMethod>*/;
2926 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__msignature]))(self) /* msignature on <self:CallSite>*/;
2927 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>*/;
2928 var = var5;
2929 goto RET_LABEL;
2930 RET_LABEL:;
2931 return var;
2932 }
2933 /* method typing#CallSite#check_signature for (self: Object, TypeVisitor, Array[AExpr]): Bool */
2934 short int VIRTUAL_typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2935 short int var /* : Bool */;
2936 short int var1 /* : Bool */;
2937 var1 = typing__CallSite__check_signature(self, p0, p1);
2938 var = var1;
2939 RET_LABEL:;
2940 return var;
2941 }
2942 /* method typing#CallSite#init for (self: CallSite, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2943 void typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2944 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2945 self->attrs[COLOR_typing__CallSite___64drecv].val = p1; /* @recv on <self:CallSite> */
2946 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p2; /* @recv_is_self on <self:CallSite> */
2947 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p3; /* @mproperty on <self:CallSite> */
2948 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p4; /* @mpropdef on <self:CallSite> */
2949 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p5; /* @msignature on <self:CallSite> */
2950 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p6; /* @erasure_cast on <self:CallSite> */
2951 RET_LABEL:;
2952 }
2953 /* method typing#CallSite#init for (self: Object, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2954 void VIRTUAL_typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2955 typing__CallSite__init(self, p0, p1, p2, p3, p4, p5, p6);
2956 RET_LABEL:;
2957 }
2958 /* method typing#Variable#declared_type for (self: Variable): nullable MType */
2959 val* typing__Variable__declared_type(val* self) {
2960 val* var /* : nullable MType */;
2961 val* var1 /* : nullable MType */;
2962 var1 = self->attrs[COLOR_typing__Variable___64ddeclared_type].val; /* @declared_type on <self:Variable> */
2963 var = var1;
2964 RET_LABEL:;
2965 return var;
2966 }
2967 /* method typing#Variable#declared_type for (self: Object): nullable MType */
2968 val* VIRTUAL_typing__Variable__declared_type(val* self) {
2969 val* var /* : nullable MType */;
2970 val* var1 /* : nullable MType */;
2971 var1 = typing__Variable__declared_type(self);
2972 var = var1;
2973 RET_LABEL:;
2974 return var;
2975 }
2976 /* method typing#Variable#declared_type= for (self: Variable, nullable MType) */
2977 void typing__Variable__declared_type_61d(val* self, val* p0) {
2978 self->attrs[COLOR_typing__Variable___64ddeclared_type].val = p0; /* @declared_type on <self:Variable> */
2979 RET_LABEL:;
2980 }
2981 /* method typing#Variable#declared_type= for (self: Object, nullable MType) */
2982 void VIRTUAL_typing__Variable__declared_type_61d(val* self, val* p0) {
2983 typing__Variable__declared_type_61d(self, p0);
2984 RET_LABEL:;
2985 }
2986 /* method typing#FlowContext#vars for (self: FlowContext): HashMap[Variable, nullable MType] */
2987 val* typing__FlowContext__vars(val* self) {
2988 val* var /* : HashMap[Variable, nullable MType] */;
2989 val* var1 /* : HashMap[Variable, nullable MType] */;
2990 var1 = self->attrs[COLOR_typing__FlowContext___64dvars].val; /* @vars on <self:FlowContext> */
2991 if (var1 == NULL) {
2992 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @vars", "src/typing.nit", 427);
2993 exit(1);
2994 }
2995 var = var1;
2996 RET_LABEL:;
2997 return var;
2998 }
2999 /* method typing#FlowContext#vars for (self: Object): HashMap[Variable, nullable MType] */
3000 val* VIRTUAL_typing__FlowContext__vars(val* self) {
3001 val* var /* : HashMap[Variable, nullable MType] */;
3002 val* var1 /* : HashMap[Variable, nullable MType] */;
3003 var1 = typing__FlowContext__vars(self);
3004 var = var1;
3005 RET_LABEL:;
3006 return var;
3007 }
3008 /* method typing#FlowContext#vars= for (self: FlowContext, HashMap[Variable, nullable MType]) */
3009 void typing__FlowContext__vars_61d(val* self, val* p0) {
3010 self->attrs[COLOR_typing__FlowContext___64dvars].val = p0; /* @vars on <self:FlowContext> */
3011 RET_LABEL:;
3012 }
3013 /* method typing#FlowContext#vars= for (self: Object, HashMap[Variable, nullable MType]) */
3014 void VIRTUAL_typing__FlowContext__vars_61d(val* self, val* p0) {
3015 typing__FlowContext__vars_61d(self, p0);
3016 RET_LABEL:;
3017 }
3018 /* method typing#FlowContext#cache for (self: FlowContext): HashMap[Variable, nullable Array[nullable MType]] */
3019 val* typing__FlowContext__cache(val* self) {
3020 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3021 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3022 var1 = self->attrs[COLOR_typing__FlowContext___64dcache].val; /* @cache on <self:FlowContext> */
3023 if (var1 == NULL) {
3024 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @cache", "src/typing.nit", 429);
3025 exit(1);
3026 }
3027 var = var1;
3028 RET_LABEL:;
3029 return var;
3030 }
3031 /* method typing#FlowContext#cache for (self: Object): HashMap[Variable, nullable Array[nullable MType]] */
3032 val* VIRTUAL_typing__FlowContext__cache(val* self) {
3033 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3034 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3035 var1 = typing__FlowContext__cache(self);
3036 var = var1;
3037 RET_LABEL:;
3038 return var;
3039 }
3040 /* method typing#FlowContext#cache= for (self: FlowContext, HashMap[Variable, nullable Array[nullable MType]]) */
3041 void typing__FlowContext__cache_61d(val* self, val* p0) {
3042 self->attrs[COLOR_typing__FlowContext___64dcache].val = p0; /* @cache on <self:FlowContext> */
3043 RET_LABEL:;
3044 }
3045 /* method typing#FlowContext#cache= for (self: Object, HashMap[Variable, nullable Array[nullable MType]]) */
3046 void VIRTUAL_typing__FlowContext__cache_61d(val* self, val* p0) {
3047 typing__FlowContext__cache_61d(self, p0);
3048 RET_LABEL:;
3049 }
3050 /* method typing#FlowContext#set_var for (self: FlowContext, Variable, nullable MType) */
3051 void typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3052 val* var_variable /* var variable: Variable */;
3053 val* var_mtype /* var mtype: nullable MType */;
3054 val* var /* : HashMap[Variable, nullable MType] */;
3055 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3056 val* var2 /* : Collection[Object] */;
3057 var_variable = p0;
3058 var_mtype = p1;
3059 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3060 ((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]>*/;
3061 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3062 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__keys]))(var1) /* keys on <var1:HashMap[Variable, nullable Array[nullable MType]]>*/;
3063 ((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]])>*/;
3064 RET_LABEL:;
3065 }
3066 /* method typing#FlowContext#set_var for (self: Object, Variable, nullable MType) */
3067 void VIRTUAL_typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3068 typing__FlowContext__set_var(self, p0, p1);
3069 RET_LABEL:;
3070 }
3071 /* method typing#FlowContext#collect_types for (self: FlowContext, Variable): nullable Array[nullable MType] */
3072 val* typing__FlowContext__collect_types(val* self, val* p0) {
3073 val* var /* : nullable Array[nullable MType] */;
3074 val* var_variable /* var variable: Variable */;
3075 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3076 short int var2 /* : Bool */;
3077 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3078 val* var4 /* : nullable Object */;
3079 val* var5 /* : null */;
3080 val* var_res /* var res: nullable Array[nullable MType] */;
3081 val* var6 /* : HashMap[Variable, nullable MType] */;
3082 short int var7 /* : Bool */;
3083 val* var8 /* : HashMap[Variable, nullable MType] */;
3084 val* var9 /* : nullable Object */;
3085 val* var_mtype /* var mtype: nullable MType */;
3086 val* var10 /* : Array[nullable MType] */;
3087 long var11 /* : Int */;
3088 val* var_ /* var : Array[nullable MType] */;
3089 val* var12 /* : Array[FlowContext] */;
3090 short int var13 /* : Bool */;
3091 val* var14 /* : Array[nullable MType] */;
3092 long var15 /* : Int */;
3093 val* var_16 /* var : Array[nullable MType] */;
3094 val* var17 /* : nullable MType */;
3095 val* var18 /* : Array[FlowContext] */;
3096 val* var19 /* : Iterator[nullable Object] */;
3097 short int var20 /* : Bool */;
3098 val* var21 /* : nullable Object */;
3099 val* var_flow /* var flow: FlowContext */;
3100 short int var22 /* : Bool */;
3101 val* var23 /* : nullable Array[nullable MType] */;
3102 val* var_r2 /* var r2: nullable Array[nullable MType] */;
3103 val* var24 /* : null */;
3104 short int var25 /* : Bool */;
3105 val* var26 /* : null */;
3106 short int var27 /* : Bool */;
3107 val* var28 /* : Array[nullable Object] */;
3108 val* var29 /* : Iterator[nullable Object] */;
3109 short int var30 /* : Bool */;
3110 val* var31 /* : nullable Object */;
3111 val* var_t /* var t: nullable MType */;
3112 short int var32 /* : Bool */;
3113 short int var33 /* : Bool */;
3114 val* var35 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3115 var_variable = p0;
3116 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3117 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]]>*/;
3118 if (var2){
3119 var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3120 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, nullable Array[nullable MType]]>*/;
3121 var = var4;
3122 goto RET_LABEL;
3123 } else {
3124 }
3125 var5 = NULL;
3126 var_res = var5;
3127 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3128 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]>*/;
3129 if (var7){
3130 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3131 var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_variable) /* [] on <var8:HashMap[Variable, nullable MType]>*/;
3132 var_mtype = var9;
3133 var10 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3134 var11 = 1;
3135 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[nullable MType]>*/;
3136 CHECK_NEW_array__Array(var10);
3137 var_ = var10;
3138 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_mtype) /* push on <var_:Array[nullable MType]>*/;
3139 var_res = var_;
3140 } else {
3141 var12 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3142 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var12) /* is_empty on <var12:Array[FlowContext]>*/;
3143 if (var13){
3144 var14 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3145 var15 = 1;
3146 ((void (*)(val*, long))(var14->class->vft[COLOR_array__Array__with_capacity]))(var14, var15) /* with_capacity on <var14:Array[nullable MType]>*/;
3147 CHECK_NEW_array__Array(var14);
3148 var_16 = var14;
3149 var17 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
3150 ((void (*)(val*, val*))(var_16->class->vft[COLOR_abstract_collection__Sequence__push]))(var_16, var17) /* push on <var_16:Array[nullable MType]>*/;
3151 var_res = var_16;
3152 } else {
3153 var18 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3154 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[FlowContext]>*/;
3155 for(;;) {
3156 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
3157 if(!var20) break;
3158 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
3159 var_flow = var21;
3160 var22 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on <var_flow:FlowContext>*/;
3161 if (var22){
3162 goto CONTINUE_label;
3163 } else {
3164 }
3165 var23 = ((val* (*)(val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__collect_types]))(var_flow, var_variable) /* collect_types on <var_flow:FlowContext>*/;
3166 var_r2 = var23;
3167 var24 = NULL;
3168 if (var_r2 == NULL) {
3169 var25 = 1; /* is null */
3170 } else {
3171 var25 = 0; /* arg is null but recv is not */
3172 }
3173 if (var25){
3174 goto CONTINUE_label;
3175 } else {
3176 }
3177 var26 = NULL;
3178 if (var_res == NULL) {
3179 var27 = 1; /* is null */
3180 } else {
3181 var27 = 0; /* arg is null but recv is not */
3182 }
3183 if (var27){
3184 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])>*/;
3185 var_res = var28;
3186 } else {
3187 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])>*/;
3188 for(;;) {
3189 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
3190 if(!var30) break;
3191 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
3192 var_t = var31;
3193 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])>*/;
3194 var33 = !var32;
3195 if (var33){
3196 ((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])>*/;
3197 } else {
3198 }
3199 CONTINUE_label34: (void)0;
3200 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
3201 }
3202 BREAK_label34: (void)0;
3203 }
3204 CONTINUE_label: (void)0;
3205 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
3206 }
3207 BREAK_label: (void)0;
3208 }
3209 }
3210 var35 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3211 ((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]]>*/;
3212 var = var_res;
3213 goto RET_LABEL;
3214 RET_LABEL:;
3215 return var;
3216 }
3217 /* method typing#FlowContext#collect_types for (self: Object, Variable): nullable Array[nullable MType] */
3218 val* VIRTUAL_typing__FlowContext__collect_types(val* self, val* p0) {
3219 val* var /* : nullable Array[nullable MType] */;
3220 val* var1 /* : nullable Array[nullable MType] */;
3221 var1 = typing__FlowContext__collect_types(self, p0);
3222 var = var1;
3223 RET_LABEL:;
3224 return var;
3225 }
3226 /* method typing#APropdef#do_typing for (self: APropdef, ModelBuilder) */
3227 void typing__APropdef__do_typing(val* self, val* p0) {
3228 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3229 var_modelbuilder = p0;
3230 RET_LABEL:;
3231 }
3232 /* method typing#APropdef#do_typing for (self: Object, ModelBuilder) */
3233 void VIRTUAL_typing__APropdef__do_typing(val* self, val* p0) {
3234 typing__APropdef__do_typing(self, p0);
3235 RET_LABEL:;
3236 }
3237 /* method typing#APropdef#selfvariable for (self: APropdef): nullable Variable */
3238 val* typing__APropdef__selfvariable(val* self) {
3239 val* var /* : nullable Variable */;
3240 val* var1 /* : nullable Variable */;
3241 var1 = self->attrs[COLOR_typing__APropdef___64dselfvariable].val; /* @selfvariable on <self:APropdef> */
3242 var = var1;
3243 RET_LABEL:;
3244 return var;
3245 }
3246 /* method typing#APropdef#selfvariable for (self: Object): nullable Variable */
3247 val* VIRTUAL_typing__APropdef__selfvariable(val* self) {
3248 val* var /* : nullable Variable */;
3249 val* var1 /* : nullable Variable */;
3250 var1 = typing__APropdef__selfvariable(self);
3251 var = var1;
3252 RET_LABEL:;
3253 return var;
3254 }
3255 /* method typing#APropdef#selfvariable= for (self: APropdef, nullable Variable) */
3256 void typing__APropdef__selfvariable_61d(val* self, val* p0) {
3257 self->attrs[COLOR_typing__APropdef___64dselfvariable].val = p0; /* @selfvariable on <self:APropdef> */
3258 RET_LABEL:;
3259 }
3260 /* method typing#APropdef#selfvariable= for (self: Object, nullable Variable) */
3261 void VIRTUAL_typing__APropdef__selfvariable_61d(val* self, val* p0) {
3262 typing__APropdef__selfvariable_61d(self, p0);
3263 RET_LABEL:;
3264 }
3265 /* method typing#AConcreteMethPropdef#do_typing for (self: AConcreteMethPropdef, ModelBuilder) */
3266 void typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3267 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3268 val* var /* : nullable ANode */;
3269 short int var1 /* : Bool */;
3270 int cltype;
3271 int idtype;
3272 val* var_nclassdef /* var nclassdef: AClassdef */;
3273 val* var2 /* : nullable MPropDef */;
3274 val* var_mpropdef /* var mpropdef: MMethodDef */;
3275 val* var3 /* : TypeVisitor */;
3276 val* var_v /* var v: TypeVisitor */;
3277 val* var4 /* : Variable */;
3278 val* var5 /* : nullable AExpr */;
3279 val* var_nblock /* var nblock: nullable AExpr */;
3280 val* var6 /* : null */;
3281 short int var7 /* : Bool */;
3282 val* var8 /* : nullable MPropDef */;
3283 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
3284 val* var9 /* : Range[Int] */;
3285 long var10 /* : Int */;
3286 val* var11 /* : nullable MSignature */;
3287 long var12 /* : Int */;
3288 val* var13 /* : Discrete */;
3289 val* var14 /* : Discrete */;
3290 val* var15 /* : Iterator[nullable Object] */;
3291 short int var16 /* : Bool */;
3292 val* var17 /* : nullable Object */;
3293 long var_i /* var i: Int */;
3294 long var18 /* : Int */;
3295 val* var19 /* : nullable MSignature */;
3296 val* var20 /* : Array[MParameter] */;
3297 val* var21 /* : nullable Object */;
3298 val* var22 /* : MType */;
3299 val* var_mtype /* var mtype: MType */;
3300 val* var23 /* : nullable MSignature */;
3301 long var24 /* : Int */;
3302 short int var25 /* : Bool */;
3303 short int var27 /* : Bool */;
3304 val* var28 /* : nullable ASignature */;
3305 val* var29 /* : ANodes[AParam] */;
3306 val* var30 /* : nullable Object */;
3307 static val* varonce;
3308 val* var31 /* : String */;
3309 char* var32 /* : NativeString */;
3310 long var33 /* : Int */;
3311 val* var34 /* : String */;
3312 val* var35 /* : nullable MClass */;
3313 val* var_arrayclass /* var arrayclass: nullable MClass */;
3314 val* var36 /* : null */;
3315 short int var37 /* : Bool */;
3316 val* var38 /* : Array[MType] */;
3317 long var39 /* : Int */;
3318 val* var40 /* : NativeArray[MType] */;
3319 val* var41 /* : MClassType */;
3320 val* var42 /* : nullable ASignature */;
3321 val* var43 /* : ANodes[AParam] */;
3322 val* var44 /* : nullable Object */;
3323 val* var45 /* : nullable Variable */;
3324 val* var_variable /* var variable: nullable Variable */;
3325 val* var46 /* : null */;
3326 short int var47 /* : Bool */;
3327 val* var48 /* : Range[Int] */;
3328 long var49 /* : Int */;
3329 val* var50 /* : nullable MSignature */;
3330 val* var51 /* : Array[MParameter] */;
3331 long var52 /* : Int */;
3332 val* var53 /* : Discrete */;
3333 val* var54 /* : Discrete */;
3334 val* var55 /* : Iterator[nullable Object] */;
3335 short int var56 /* : Bool */;
3336 val* var57 /* : nullable Object */;
3337 long var_i58 /* var i: Int */;
3338 long var59 /* : Int */;
3339 val* var60 /* : nullable MSignature */;
3340 val* var61 /* : Array[MParameter] */;
3341 val* var62 /* : nullable Object */;
3342 val* var_mclosure /* var mclosure: MParameter */;
3343 val* var63 /* : nullable ASignature */;
3344 val* var64 /* : ANodes[AClosureDecl] */;
3345 val* var65 /* : nullable Object */;
3346 val* var66 /* : nullable ClosureVariable */;
3347 val* var_variable67 /* var variable: nullable ClosureVariable */;
3348 val* var68 /* : null */;
3349 short int var69 /* : Bool */;
3350 val* var70 /* : MType */;
3351 short int var72 /* : Bool */;
3352 val* var73 /* : nullable FlowContext */;
3353 short int var74 /* : Bool */;
3354 short int var75 /* : Bool */;
3355 short int var_ /* var : Bool */;
3356 val* var76 /* : nullable MSignature */;
3357 val* var77 /* : nullable MType */;
3358 val* var78 /* : null */;
3359 short int var79 /* : Bool */;
3360 static val* varonce80;
3361 val* var81 /* : String */;
3362 char* var82 /* : NativeString */;
3363 long var83 /* : Int */;
3364 val* var84 /* : String */;
3365 var_modelbuilder = p0;
3366 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AConcreteMethPropdef>*/;
3367 /* <var:nullable ANode> isa AClassdef */
3368 cltype = type_parser_nodes__AClassdef.color;
3369 idtype = type_parser_nodes__AClassdef.id;
3370 if(var == NULL) {
3371 var1 = 0;
3372 } else {
3373 if(cltype >= var->type->table_size) {
3374 var1 = 0;
3375 } else {
3376 var1 = var->type->type_table[cltype] == idtype;
3377 }
3378 }
3379 if (!var1) {
3380 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 484);
3381 exit(1);
3382 }
3383 var_nclassdef = var;
3384 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3385 if (var2 == NULL) {
3386 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 485);
3387 exit(1);
3388 }
3389 var_mpropdef = var2;
3390 var3 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3391 ((void (*)(val*, val*, val*, val*))(var3->class->vft[COLOR_typing__TypeVisitor__init]))(var3, var_modelbuilder, var_nclassdef, var_mpropdef) /* init on <var3:TypeVisitor>*/;
3392 CHECK_NEW_typing__TypeVisitor(var3);
3393 var_v = var3;
3394 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3395 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AConcreteMethPropdef>*/;
3396 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteMethPropdef__n_block]))(self) /* n_block on <self:AConcreteMethPropdef>*/;
3397 var_nblock = var5;
3398 var6 = NULL;
3399 if (var_nblock == NULL) {
3400 var7 = 1; /* is null */
3401 } else {
3402 var7 = 0; /* arg is null but recv is not */
3403 }
3404 if (var7){
3405 goto RET_LABEL;
3406 } else {
3407 }
3408 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3409 if (var8 == NULL) {
3410 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 492);
3411 exit(1);
3412 }
3413 var_mmethoddef = var8;
3414 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
3415 var10 = 0;
3416 var11 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3417 if (var11 == NULL) {
3418 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 493);
3419 exit(1);
3420 } else {
3421 var12 = ((long (*)(val*))(var11->class->vft[COLOR_model__MSignature__arity]))(var11) /* arity on <var11:nullable MSignature>*/;
3422 }
3423 var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
3424 var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
3425 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
3426 CHECK_NEW_range__Range(var9);
3427 var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
3428 for(;;) {
3429 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
3430 if(!var16) break;
3431 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
3432 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
3433 var_i = var18;
3434 var19 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3435 if (var19 == NULL) {
3436 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 494);
3437 exit(1);
3438 } else {
3439 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MSignature__mparameters]))(var19) /* mparameters on <var19:nullable MSignature>*/;
3440 }
3441 var21 = ((val* (*)(val*, long))(var20->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var20, var_i) /* [] on <var20:Array[MParameter]>*/;
3442 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MParameter__mtype]))(var21) /* mtype on <var21:nullable Object(MParameter)>*/;
3443 var_mtype = var22;
3444 var23 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3445 if (var23 == NULL) {
3446 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 495);
3447 exit(1);
3448 } else {
3449 var24 = ((long (*)(val*))(var23->class->vft[COLOR_model__MSignature__vararg_rank]))(var23) /* vararg_rank on <var23:nullable MSignature>*/;
3450 }
3451 { /* Inline kernel#Int#== (var24,var_i) */
3452 var27 = var24 == var_i;
3453 var25 = var27;
3454 goto RET_LABEL26;
3455 RET_LABEL26:(void)0;
3456 }
3457 if (var25){
3458 var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3459 if (var28 == NULL) {
3460 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 496);
3461 exit(1);
3462 } else {
3463 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var28) /* n_params on <var28:nullable ASignature>*/;
3464 }
3465 var30 = ((val* (*)(val*, long))(var29->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var29, var_i) /* [] on <var29:ANodes[AParam]>*/;
3466 if (varonce) {
3467 var31 = varonce;
3468 } else {
3469 var32 = "Array";
3470 var33 = 5;
3471 var34 = string__NativeString__to_s_with_length(var32, var33);
3472 var31 = var34;
3473 varonce = var31;
3474 }
3475 var35 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, var30, var31) /* get_mclass on <var_v:TypeVisitor>*/;
3476 var_arrayclass = var35;
3477 var36 = NULL;
3478 if (var_arrayclass == NULL) {
3479 var37 = 1; /* is null */
3480 } else {
3481 var37 = 0; /* arg is null but recv is not */
3482 }
3483 if (var37){
3484 goto RET_LABEL;
3485 } else {
3486 }
3487 var38 = NEW_array__Array(&type_array__Arraymodel__MType);
3488 { /* var38 = array_instance Array[MType] */
3489 var39 = 1;
3490 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraymodel__MType);
3491 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var_mtype;
3492 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[MType]>*/;
3493 CHECK_NEW_array__Array(var38);
3494 }
3495 var41 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var38) /* get_mtype on <var_arrayclass:nullable MClass(MClass)>*/;
3496 var_mtype = var41;
3497 } else {
3498 }
3499 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3500 if (var42 == NULL) {
3501 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 500);
3502 exit(1);
3503 } else {
3504 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var42) /* n_params on <var42:nullable ASignature>*/;
3505 }
3506 var44 = ((val* (*)(val*, long))(var43->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var43, var_i) /* [] on <var43:ANodes[AParam]>*/;
3507 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_scope__AParam__variable]))(var44) /* variable on <var44:nullable Object(AParam)>*/;
3508 var_variable = var45;
3509 var46 = NULL;
3510 if (var_variable == NULL) {
3511 var47 = 0; /* is null */
3512 } else {
3513 var47 = 1; /* arg is null and recv is not */
3514 }
3515 if (!var47) {
3516 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 501);
3517 exit(1);
3518 }
3519 ((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)>*/;
3520 CONTINUE_label: (void)0;
3521 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
3522 }
3523 BREAK_label: (void)0;
3524 var48 = NEW_range__Range(&type_range__Rangekernel__Int);
3525 var49 = 0;
3526 var50 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3527 if (var50 == NULL) {
3528 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 504);
3529 exit(1);
3530 } else {
3531 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_model__MSignature__mclosures]))(var50) /* mclosures on <var50:nullable MSignature>*/;
3532 }
3533 var52 = ((long (*)(val*))(var51->class->vft[COLOR_abstract_collection__Collection__length]))(var51) /* length on <var51:Array[MParameter]>*/;
3534 var53 = BOX_kernel__Int(var49); /* autobox from Int to Discrete */
3535 var54 = BOX_kernel__Int(var52); /* autobox from Int to Discrete */
3536 ((void (*)(val*, val*, val*))(var48->class->vft[COLOR_range__Range__without_last]))(var48, var53, var54) /* without_last on <var48:Range[Int]>*/;
3537 CHECK_NEW_range__Range(var48);
3538 var55 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__iterator]))(var48) /* iterator on <var48:Range[Int]>*/;
3539 for(;;) {
3540 var56 = ((short int (*)(val*))(var55->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var55) /* is_ok on <var55:Iterator[nullable Object]>*/;
3541 if(!var56) break;
3542 var57 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_collection__Iterator__item]))(var55) /* item on <var55:Iterator[nullable Object]>*/;
3543 var59 = ((struct instance_kernel__Int*)var57)->value; /* autounbox from nullable Object to Int */;
3544 var_i58 = var59;
3545 var60 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3546 if (var60 == NULL) {
3547 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 505);
3548 exit(1);
3549 } else {
3550 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_model__MSignature__mclosures]))(var60) /* mclosures on <var60:nullable MSignature>*/;
3551 }
3552 var62 = ((val* (*)(val*, long))(var61->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var61, var_i58) /* [] on <var61:Array[MParameter]>*/;
3553 var_mclosure = var62;
3554 var63 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3555 if (var63 == NULL) {
3556 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 506);
3557 exit(1);
3558 } else {
3559 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_parser_nodes__ASignature__n_closure_decls]))(var63) /* n_closure_decls on <var63:nullable ASignature>*/;
3560 }
3561 var65 = ((val* (*)(val*, long))(var64->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var64, var_i58) /* [] on <var64:ANodes[AClosureDecl]>*/;
3562 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_scope__AClosureDecl__variable]))(var65) /* variable on <var65:nullable Object(AClosureDecl)>*/;
3563 var_variable67 = var66;
3564 var68 = NULL;
3565 if (var_variable67 == NULL) {
3566 var69 = 0; /* is null */
3567 } else {
3568 var69 = 1; /* arg is null and recv is not */
3569 }
3570 if (!var69) {
3571 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 507);
3572 exit(1);
3573 }
3574 var70 = ((val* (*)(val*))(var_mclosure->class->vft[COLOR_model__MParameter__mtype]))(var_mclosure) /* mtype on <var_mclosure:MParameter>*/;
3575 ((void (*)(val*, val*))(var_variable67->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_variable67, var70) /* declared_type= on <var_variable67:nullable ClosureVariable(ClosureVariable)>*/;
3576 CONTINUE_label71: (void)0;
3577 ((void (*)(val*))(var55->class->vft[COLOR_abstract_collection__Iterator__next]))(var55) /* next on <var55:Iterator[nullable Object]>*/;
3578 }
3579 BREAK_label71: (void)0;
3580 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_nblock) /* visit_stmt on <var_v:TypeVisitor>*/;
3581 var73 = ((val* (*)(val*))(var_nblock->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_nblock) /* after_flow_context on <var_nblock:nullable AExpr(AExpr)>*/;
3582 if (var73 == NULL) {
3583 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 512);
3584 exit(1);
3585 } else {
3586 var74 = ((short int (*)(val*))(var73->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var73) /* is_unreachable on <var73:nullable FlowContext>*/;
3587 }
3588 var75 = !var74;
3589 var_ = var75;
3590 if (var75){
3591 var76 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3592 if (var76 == NULL) {
3593 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 512);
3594 exit(1);
3595 } else {
3596 var77 = ((val* (*)(val*))(var76->class->vft[COLOR_model__MSignature__return_mtype]))(var76) /* return_mtype on <var76:nullable MSignature>*/;
3597 }
3598 var78 = NULL;
3599 if (var77 == NULL) {
3600 var79 = 0; /* is null */
3601 } else {
3602 var79 = 1; /* arg is null and recv is not */
3603 }
3604 var72 = var79;
3605 } else {
3606 var72 = var_;
3607 }
3608 if (var72){
3609 if (varonce80) {
3610 var81 = varonce80;
3611 } else {
3612 var82 = "Control error: Reached end of function (a \'return\' with a value was expected).";
3613 var83 = 78;
3614 var84 = string__NativeString__to_s_with_length(var82, var83);
3615 var81 = var84;
3616 varonce80 = var81;
3617 }
3618 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var81) /* error on <var_v:TypeVisitor>*/;
3619 } else {
3620 }
3621 RET_LABEL:;
3622 }
3623 /* method typing#AConcreteMethPropdef#do_typing for (self: Object, ModelBuilder) */
3624 void VIRTUAL_typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3625 typing__AConcreteMethPropdef__do_typing(self, p0);
3626 RET_LABEL:;
3627 }
3628 /* method typing#AAttrPropdef#do_typing for (self: AAttrPropdef, ModelBuilder) */
3629 void typing__AAttrPropdef__do_typing(val* self, val* p0) {
3630 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3631 val* var /* : nullable ANode */;
3632 short int var1 /* : Bool */;
3633 int cltype;
3634 int idtype;
3635 val* var_nclassdef /* var nclassdef: AClassdef */;
3636 val* var2 /* : TypeVisitor */;
3637 val* var3 /* : nullable MPropDef */;
3638 val* var_v /* var v: TypeVisitor */;
3639 val* var4 /* : Variable */;
3640 val* var5 /* : nullable AExpr */;
3641 val* var_nexpr /* var nexpr: nullable AExpr */;
3642 val* var6 /* : null */;
3643 short int var7 /* : Bool */;
3644 val* var8 /* : nullable MPropDef */;
3645 val* var9 /* : nullable MType */;
3646 val* var_mtype /* var mtype: nullable MType */;
3647 val* var10 /* : nullable MType */;
3648 var_modelbuilder = p0;
3649 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AAttrPropdef>*/;
3650 /* <var:nullable ANode> isa AClassdef */
3651 cltype = type_parser_nodes__AClassdef.color;
3652 idtype = type_parser_nodes__AClassdef.id;
3653 if(var == NULL) {
3654 var1 = 0;
3655 } else {
3656 if(cltype >= var->type->table_size) {
3657 var1 = 0;
3658 } else {
3659 var1 = var->type->type_table[cltype] == idtype;
3660 }
3661 }
3662 if (!var1) {
3663 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 522);
3664 exit(1);
3665 }
3666 var_nclassdef = var;
3667 var2 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3668 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3669 if (var3 == NULL) {
3670 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 523);
3671 exit(1);
3672 }
3673 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_typing__TypeVisitor__init]))(var2, var_modelbuilder, var_nclassdef, var3) /* init on <var2:TypeVisitor>*/;
3674 CHECK_NEW_typing__TypeVisitor(var2);
3675 var_v = var2;
3676 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3677 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AAttrPropdef>*/;
3678 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(self) /* n_expr on <self:AAttrPropdef>*/;
3679 var_nexpr = var5;
3680 var6 = NULL;
3681 if (var_nexpr == NULL) {
3682 var7 = 0; /* is null */
3683 } else {
3684 var7 = 1; /* arg is null and recv is not */
3685 }
3686 if (var7){
3687 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3688 if (var8 == NULL) {
3689 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 528);
3690 exit(1);
3691 } else {
3692 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var8) /* static_mtype on <var8:nullable MPropDef(nullable MAttributeDef)>*/;
3693 }
3694 var_mtype = var9;
3695 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>*/;
3696 var10;
3697 } else {
3698 }
3699 RET_LABEL:;
3700 }
3701 /* method typing#AAttrPropdef#do_typing for (self: Object, ModelBuilder) */
3702 void VIRTUAL_typing__AAttrPropdef__do_typing(val* self, val* p0) {
3703 typing__AAttrPropdef__do_typing(self, p0);
3704 RET_LABEL:;
3705 }
3706 /* method typing#AExpr#mtype for (self: AExpr): nullable MType */
3707 val* typing__AExpr__mtype(val* self) {
3708 val* var /* : nullable MType */;
3709 val* var1 /* : nullable MType */;
3710 var1 = self->attrs[COLOR_typing__AExpr___64dmtype].val; /* @mtype on <self:AExpr> */
3711 var = var1;
3712 RET_LABEL:;
3713 return var;
3714 }
3715 /* method typing#AExpr#mtype for (self: Object): nullable MType */
3716 val* VIRTUAL_typing__AExpr__mtype(val* self) {
3717 val* var /* : nullable MType */;
3718 val* var1 /* : nullable MType */;
3719 var1 = typing__AExpr__mtype(self);
3720 var = var1;
3721 RET_LABEL:;
3722 return var;
3723 }
3724 /* method typing#AExpr#mtype= for (self: AExpr, nullable MType) */
3725 void typing__AExpr__mtype_61d(val* self, val* p0) {
3726 self->attrs[COLOR_typing__AExpr___64dmtype].val = p0; /* @mtype on <self:AExpr> */
3727 RET_LABEL:;
3728 }
3729 /* method typing#AExpr#mtype= for (self: Object, nullable MType) */
3730 void VIRTUAL_typing__AExpr__mtype_61d(val* self, val* p0) {
3731 typing__AExpr__mtype_61d(self, p0);
3732 RET_LABEL:;
3733 }
3734 /* method typing#AExpr#is_typed for (self: AExpr): Bool */
3735 short int typing__AExpr__is_typed(val* self) {
3736 short int var /* : Bool */;
3737 short int var1 /* : Bool */;
3738 var1 = self->attrs[COLOR_typing__AExpr___64dis_typed].s; /* @is_typed on <self:AExpr> */
3739 var = var1;
3740 RET_LABEL:;
3741 return var;
3742 }
3743 /* method typing#AExpr#is_typed for (self: Object): Bool */
3744 short int VIRTUAL_typing__AExpr__is_typed(val* self) {
3745 short int var /* : Bool */;
3746 short int var1 /* : Bool */;
3747 var1 = typing__AExpr__is_typed(self);
3748 var = var1;
3749 RET_LABEL:;
3750 return var;
3751 }
3752 /* method typing#AExpr#is_typed= for (self: AExpr, Bool) */
3753 void typing__AExpr__is_typed_61d(val* self, short int p0) {
3754 self->attrs[COLOR_typing__AExpr___64dis_typed].s = p0; /* @is_typed on <self:AExpr> */
3755 RET_LABEL:;
3756 }
3757 /* method typing#AExpr#is_typed= for (self: Object, Bool) */
3758 void VIRTUAL_typing__AExpr__is_typed_61d(val* self, short int p0) {
3759 typing__AExpr__is_typed_61d(self, p0);
3760 RET_LABEL:;
3761 }
3762 /* method typing#AExpr#implicit_cast_to for (self: AExpr): nullable MType */
3763 val* typing__AExpr__implicit_cast_to(val* self) {
3764 val* var /* : nullable MType */;
3765 val* var1 /* : nullable MType */;
3766 var1 = self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val; /* @implicit_cast_to on <self:AExpr> */
3767 var = var1;
3768 RET_LABEL:;
3769 return var;
3770 }
3771 /* method typing#AExpr#implicit_cast_to for (self: Object): nullable MType */
3772 val* VIRTUAL_typing__AExpr__implicit_cast_to(val* self) {
3773 val* var /* : nullable MType */;
3774 val* var1 /* : nullable MType */;
3775 var1 = typing__AExpr__implicit_cast_to(self);
3776 var = var1;
3777 RET_LABEL:;
3778 return var;
3779 }
3780 /* method typing#AExpr#implicit_cast_to= for (self: AExpr, nullable MType) */
3781 void typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3782 self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val = p0; /* @implicit_cast_to on <self:AExpr> */
3783 RET_LABEL:;
3784 }
3785 /* method typing#AExpr#implicit_cast_to= for (self: Object, nullable MType) */
3786 void VIRTUAL_typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3787 typing__AExpr__implicit_cast_to_61d(self, p0);
3788 RET_LABEL:;
3789 }
3790 /* method typing#AExpr#its_variable for (self: AExpr): nullable Variable */
3791 val* typing__AExpr__its_variable(val* self) {
3792 val* var /* : nullable Variable */;
3793 val* var1 /* : null */;
3794 var1 = NULL;
3795 var = var1;
3796 goto RET_LABEL;
3797 RET_LABEL:;
3798 return var;
3799 }
3800 /* method typing#AExpr#its_variable for (self: Object): nullable Variable */
3801 val* VIRTUAL_typing__AExpr__its_variable(val* self) {
3802 val* var /* : nullable Variable */;
3803 val* var1 /* : nullable Variable */;
3804 var1 = typing__AExpr__its_variable(self);
3805 var = var1;
3806 RET_LABEL:;
3807 return var;
3808 }
3809 /* method typing#AExpr#accept_typing for (self: AExpr, TypeVisitor) */
3810 void typing__AExpr__accept_typing(val* self, val* p0) {
3811 val* var_v /* var v: TypeVisitor */;
3812 static val* varonce;
3813 val* var /* : String */;
3814 char* var1 /* : NativeString */;
3815 long var2 /* : Int */;
3816 val* var3 /* : String */;
3817 val* var4 /* : String */;
3818 val* var5 /* : Array[Object] */;
3819 long var6 /* : Int */;
3820 val* var7 /* : NativeArray[Object] */;
3821 val* var8 /* : String */;
3822 var_v = p0;
3823 if (varonce) {
3824 var = varonce;
3825 } else {
3826 var1 = "no implemented accept_typing for ";
3827 var2 = 33;
3828 var3 = string__NativeString__to_s_with_length(var1, var2);
3829 var = var3;
3830 varonce = var;
3831 }
3832 var4 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:AExpr>*/;
3833 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
3834 { /* var5 = array_instance Array[Object] */
3835 var6 = 2;
3836 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
3837 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
3838 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var4;
3839 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
3840 CHECK_NEW_array__Array(var5);
3841 }
3842 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
3843 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
3844 RET_LABEL:;
3845 }
3846 /* method typing#AExpr#accept_typing for (self: Object, TypeVisitor) */
3847 void VIRTUAL_typing__AExpr__accept_typing(val* self, val* p0) {
3848 typing__AExpr__accept_typing(self, p0);
3849 RET_LABEL:;
3850 }
3851 /* method typing#ABlockExpr#accept_typing for (self: ABlockExpr, TypeVisitor) */
3852 void typing__ABlockExpr__accept_typing(val* self, val* p0) {
3853 val* var_v /* var v: TypeVisitor */;
3854 val* var /* : ANodes[AExpr] */;
3855 val* var1 /* : Iterator[nullable Object] */;
3856 short int var2 /* : Bool */;
3857 val* var3 /* : nullable Object */;
3858 val* var_e /* var e: AExpr */;
3859 short int var4 /* : Bool */;
3860 var_v = p0;
3861 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3862 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AExpr]>*/;
3863 for(;;) {
3864 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
3865 if(!var2) break;
3866 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
3867 var_e = var3;
3868 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_e) /* visit_stmt on <var_v:TypeVisitor>*/;
3869 CONTINUE_label: (void)0;
3870 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
3871 }
3872 BREAK_label: (void)0;
3873 var4 = 1;
3874 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABlockExpr>*/;
3875 RET_LABEL:;
3876 }
3877 /* method typing#ABlockExpr#accept_typing for (self: Object, TypeVisitor) */
3878 void VIRTUAL_typing__ABlockExpr__accept_typing(val* self, val* p0) {
3879 typing__ABlockExpr__accept_typing(self, p0);
3880 RET_LABEL:;
3881 }
3882 /* method typing#ABlockExpr#mtype for (self: ABlockExpr): nullable MType */
3883 val* typing__ABlockExpr__mtype(val* self) {
3884 val* var /* : nullable MType */;
3885 val* var1 /* : ANodes[AExpr] */;
3886 short int var2 /* : Bool */;
3887 val* var3 /* : null */;
3888 val* var4 /* : ANodes[AExpr] */;
3889 val* var5 /* : nullable Object */;
3890 val* var6 /* : nullable MType */;
3891 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3892 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:ANodes[AExpr]>*/;
3893 if (var2){
3894 var3 = NULL;
3895 var = var3;
3896 goto RET_LABEL;
3897 } else {
3898 }
3899 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3900 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var4) /* last on <var4:ANodes[AExpr]>*/;
3901 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_typing__AExpr__mtype]))(var5) /* mtype on <var5:nullable Object(AExpr)>*/;
3902 var = var6;
3903 goto RET_LABEL;
3904 RET_LABEL:;
3905 return var;
3906 }
3907 /* method typing#ABlockExpr#mtype for (self: Object): nullable MType */
3908 val* VIRTUAL_typing__ABlockExpr__mtype(val* self) {
3909 val* var /* : nullable MType */;
3910 val* var1 /* : nullable MType */;
3911 var1 = typing__ABlockExpr__mtype(self);
3912 var = var1;
3913 RET_LABEL:;
3914 return var;
3915 }
3916 /* method typing#AVardeclExpr#accept_typing for (self: AVardeclExpr, TypeVisitor) */
3917 void typing__AVardeclExpr__accept_typing(val* self, val* p0) {
3918 val* var_v /* var v: TypeVisitor */;
3919 val* var /* : nullable Variable */;
3920 val* var_variable /* var variable: nullable Variable */;
3921 val* var1 /* : null */;
3922 short int var2 /* : Bool */;
3923 val* var3 /* : nullable AType */;
3924 val* var_ntype /* var ntype: nullable AType */;
3925 val* var4 /* : null */;
3926 short int var5 /* : Bool */;
3927 val* var6 /* : null */;
3928 val* var_mtype /* var mtype: nullable MType */;
3929 val* var7 /* : nullable MType */;
3930 val* var8 /* : null */;
3931 short int var9 /* : Bool */;
3932 val* var10 /* : nullable AExpr */;
3933 val* var_nexpr /* var nexpr: nullable AExpr */;
3934 val* var11 /* : null */;
3935 short int var12 /* : Bool */;
3936 val* var13 /* : null */;
3937 short int var14 /* : Bool */;
3938 val* var15 /* : nullable MType */;
3939 val* var16 /* : nullable MType */;
3940 val* var17 /* : null */;
3941 short int var18 /* : Bool */;
3942 val* var_decltype /* var decltype: nullable MType */;
3943 short int var19 /* : Bool */;
3944 val* var20 /* : null */;
3945 short int var21 /* : Bool */;
3946 short int var_ /* var : Bool */;
3947 short int var22 /* : Bool */;
3948 int cltype;
3949 int idtype;
3950 static val* varonce;
3951 val* var23 /* : String */;
3952 char* var24 /* : NativeString */;
3953 long var25 /* : Int */;
3954 val* var26 /* : String */;
3955 val* var27 /* : nullable MClass */;
3956 val* var28 /* : MClassType */;
3957 val* var29 /* : MType */;
3958 val* var30 /* : null */;
3959 short int var31 /* : Bool */;
3960 short int var32 /* : Bool */;
3961 var_v = p0;
3962 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
3963 var_variable = var;
3964 var1 = NULL;
3965 if (var_variable == NULL) {
3966 var2 = 1; /* is null */
3967 } else {
3968 var2 = 0; /* arg is null but recv is not */
3969 }
3970 if (var2){
3971 goto RET_LABEL;
3972 } else {
3973 }
3974 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_type]))(self) /* n_type on <self:AVardeclExpr>*/;
3975 var_ntype = var3;
3976 var4 = NULL;
3977 if (var_ntype == NULL) {
3978 var5 = 1; /* is null */
3979 } else {
3980 var5 = 0; /* arg is null but recv is not */
3981 }
3982 if (var5){
3983 var6 = NULL;
3984 var_mtype = var6;
3985 } else {
3986 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
3987 var_mtype = var7;
3988 var8 = NULL;
3989 if (var_mtype == NULL) {
3990 var9 = 1; /* is null */
3991 } else {
3992 var9 = 0; /* arg is null but recv is not */
3993 }
3994 if (var9){
3995 goto RET_LABEL;
3996 } else {
3997 }
3998 }
3999 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
4000 var_nexpr = var10;
4001 var11 = NULL;
4002 if (var_nexpr == NULL) {
4003 var12 = 0; /* is null */
4004 } else {
4005 var12 = 1; /* arg is null and recv is not */
4006 }
4007 if (var12){
4008 var13 = NULL;
4009 if (var_mtype == NULL) {
4010 var14 = 0; /* is null */
4011 } else {
4012 var14 = 1; /* arg is null and recv is not */
4013 }
4014 if (var14){
4015 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>*/;
4016 var15;
4017 } else {
4018 var16 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4019 var_mtype = var16;
4020 var17 = NULL;
4021 if (var_mtype == NULL) {
4022 var18 = 1; /* is null */
4023 } else {
4024 var18 = 0; /* arg is null but recv is not */
4025 }
4026 if (var18){
4027 goto RET_LABEL;
4028 } else {
4029 }
4030 }
4031 } else {
4032 }
4033 var_decltype = var_mtype;
4034 var20 = NULL;
4035 if (var_mtype == NULL) {
4036 var21 = 1; /* is null */
4037 } else {
4038 var21 = 0; /* arg is null but recv is not */
4039 }
4040 var_ = var21;
4041 if (var21){
4042 var19 = var_;
4043 } else {
4044 /* <var_mtype:nullable MType(MType)> isa MNullType */
4045 cltype = type_model__MNullType.color;
4046 idtype = type_model__MNullType.id;
4047 if(cltype >= var_mtype->type->table_size) {
4048 var22 = 0;
4049 } else {
4050 var22 = var_mtype->type->type_table[cltype] == idtype;
4051 }
4052 var19 = var22;
4053 }
4054 if (var19){
4055 if (varonce) {
4056 var23 = varonce;
4057 } else {
4058 var24 = "Object";
4059 var25 = 6;
4060 var26 = string__NativeString__to_s_with_length(var24, var25);
4061 var23 = var26;
4062 varonce = var23;
4063 }
4064 var27 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var23) /* get_mclass on <var_v:TypeVisitor>*/;
4065 if (var27 == NULL) {
4066 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 603);
4067 exit(1);
4068 } else {
4069 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClass__mclass_type]))(var27) /* mclass_type on <var27:nullable MClass>*/;
4070 }
4071 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MType__as_nullable]))(var28) /* as_nullable on <var28:MClassType>*/;
4072 var_decltype = var29;
4073 var30 = NULL;
4074 if (var_mtype == NULL) {
4075 var31 = 1; /* is null */
4076 } else {
4077 var31 = 0; /* arg is null but recv is not */
4078 }
4079 if (var31){
4080 var_mtype = var_decltype;
4081 } else {
4082 }
4083 } else {
4084 }
4085 ((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)>*/;
4086 ((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>*/;
4087 var32 = 1;
4088 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var32) /* is_typed= on <self:AVardeclExpr>*/;
4089 RET_LABEL:;
4090 }
4091 /* method typing#AVardeclExpr#accept_typing for (self: Object, TypeVisitor) */
4092 void VIRTUAL_typing__AVardeclExpr__accept_typing(val* self, val* p0) {
4093 typing__AVardeclExpr__accept_typing(self, p0);
4094 RET_LABEL:;
4095 }
4096 /* method typing#AVarExpr#its_variable for (self: AVarExpr): nullable Variable */
4097 val* typing__AVarExpr__its_variable(val* self) {
4098 val* var /* : nullable Variable */;
4099 val* var1 /* : nullable Variable */;
4100 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4101 var = var1;
4102 goto RET_LABEL;
4103 RET_LABEL:;
4104 return var;
4105 }
4106 /* method typing#AVarExpr#its_variable for (self: Object): nullable Variable */
4107 val* VIRTUAL_typing__AVarExpr__its_variable(val* self) {
4108 val* var /* : nullable Variable */;
4109 val* var1 /* : nullable Variable */;
4110 var1 = typing__AVarExpr__its_variable(self);
4111 var = var1;
4112 RET_LABEL:;
4113 return var;
4114 }
4115 /* method typing#AVarExpr#accept_typing for (self: AVarExpr, TypeVisitor) */
4116 void typing__AVarExpr__accept_typing(val* self, val* p0) {
4117 val* var_v /* var v: TypeVisitor */;
4118 val* var /* : nullable Variable */;
4119 val* var_variable /* var variable: nullable Variable */;
4120 val* var1 /* : null */;
4121 short int var2 /* : Bool */;
4122 val* var3 /* : nullable MType */;
4123 val* var_mtype /* var mtype: nullable MType */;
4124 val* var4 /* : null */;
4125 short int var5 /* : Bool */;
4126 var_v = p0;
4127 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4128 var_variable = var;
4129 var1 = NULL;
4130 if (var_variable == NULL) {
4131 var2 = 1; /* is null */
4132 } else {
4133 var2 = 0; /* arg is null but recv is not */
4134 }
4135 if (var2){
4136 goto RET_LABEL;
4137 } else {
4138 }
4139 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>*/;
4140 var_mtype = var3;
4141 var4 = NULL;
4142 if (var_mtype == NULL) {
4143 var5 = 0; /* is null */
4144 } else {
4145 var5 = 1; /* arg is null and recv is not */
4146 }
4147 if (var5){
4148 } else {
4149 }
4150 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AVarExpr>*/;
4151 RET_LABEL:;
4152 }
4153 /* method typing#AVarExpr#accept_typing for (self: Object, TypeVisitor) */
4154 void VIRTUAL_typing__AVarExpr__accept_typing(val* self, val* p0) {
4155 typing__AVarExpr__accept_typing(self, p0);
4156 RET_LABEL:;
4157 }
4158 /* method typing#AVarAssignExpr#accept_typing for (self: AVarAssignExpr, TypeVisitor) */
4159 void typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4160 val* var_v /* var v: TypeVisitor */;
4161 val* var /* : nullable Variable */;
4162 val* var_variable /* var variable: nullable Variable */;
4163 val* var1 /* : null */;
4164 short int var2 /* : Bool */;
4165 val* var3 /* : AExpr */;
4166 val* var4 /* : nullable MType */;
4167 val* var5 /* : nullable MType */;
4168 val* var_mtype /* var mtype: nullable MType */;
4169 short int var6 /* : Bool */;
4170 var_v = p0;
4171 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarAssignExpr>*/;
4172 var_variable = var;
4173 var1 = NULL;
4174 if (var_variable == NULL) {
4175 var2 = 0; /* is null */
4176 } else {
4177 var2 = 1; /* arg is null and recv is not */
4178 }
4179 if (!var2) {
4180 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 638);
4181 exit(1);
4182 }
4183 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AVarAssignExpr>*/;
4184 var4 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4185 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>*/;
4186 var_mtype = var5;
4187 ((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>*/;
4188 var6 = 1;
4189 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var6) /* is_typed= on <self:AVarAssignExpr>*/;
4190 RET_LABEL:;
4191 }
4192 /* method typing#AVarAssignExpr#accept_typing for (self: Object, TypeVisitor) */
4193 void VIRTUAL_typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4194 typing__AVarAssignExpr__accept_typing(self, p0);
4195 RET_LABEL:;
4196 }
4197 /* method typing#AReassignFormExpr#reassign_property for (self: AReassignFormExpr): nullable MMethodDef */
4198 val* typing__AReassignFormExpr__reassign_property(val* self) {
4199 val* var /* : nullable MMethodDef */;
4200 val* var1 /* : nullable CallSite */;
4201 val* var2 /* : MMethodDef */;
4202 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AReassignFormExpr>*/;
4203 if (var1 == NULL) {
4204 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 650);
4205 exit(1);
4206 } else {
4207 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mpropdef]))(var1) /* mpropdef on <var1:nullable CallSite>*/;
4208 }
4209 var = var2;
4210 goto RET_LABEL;
4211 RET_LABEL:;
4212 return var;
4213 }
4214 /* method typing#AReassignFormExpr#reassign_property for (self: Object): nullable MMethodDef */
4215 val* VIRTUAL_typing__AReassignFormExpr__reassign_property(val* self) {
4216 val* var /* : nullable MMethodDef */;
4217 val* var1 /* : nullable MMethodDef */;
4218 var1 = typing__AReassignFormExpr__reassign_property(self);
4219 var = var1;
4220 RET_LABEL:;
4221 return var;
4222 }
4223 /* method typing#AReassignFormExpr#reassign_callsite for (self: AReassignFormExpr): nullable CallSite */
4224 val* typing__AReassignFormExpr__reassign_callsite(val* self) {
4225 val* var /* : nullable CallSite */;
4226 val* var1 /* : nullable CallSite */;
4227 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val; /* @reassign_callsite on <self:AReassignFormExpr> */
4228 var = var1;
4229 RET_LABEL:;
4230 return var;
4231 }
4232 /* method typing#AReassignFormExpr#reassign_callsite for (self: Object): nullable CallSite */
4233 val* VIRTUAL_typing__AReassignFormExpr__reassign_callsite(val* self) {
4234 val* var /* : nullable CallSite */;
4235 val* var1 /* : nullable CallSite */;
4236 var1 = typing__AReassignFormExpr__reassign_callsite(self);
4237 var = var1;
4238 RET_LABEL:;
4239 return var;
4240 }
4241 /* method typing#AReassignFormExpr#reassign_callsite= for (self: AReassignFormExpr, nullable CallSite) */
4242 void typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4243 self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val = p0; /* @reassign_callsite on <self:AReassignFormExpr> */
4244 RET_LABEL:;
4245 }
4246 /* method typing#AReassignFormExpr#reassign_callsite= for (self: Object, nullable CallSite) */
4247 void VIRTUAL_typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4248 typing__AReassignFormExpr__reassign_callsite_61d(self, p0);
4249 RET_LABEL:;
4250 }
4251 /* method typing#AReassignFormExpr#read_type for (self: AReassignFormExpr): nullable MType */
4252 val* typing__AReassignFormExpr__read_type(val* self) {
4253 val* var /* : nullable MType */;
4254 val* var1 /* : nullable MType */;
4255 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val; /* @read_type on <self:AReassignFormExpr> */
4256 var = var1;
4257 RET_LABEL:;
4258 return var;
4259 }
4260 /* method typing#AReassignFormExpr#read_type for (self: Object): nullable MType */
4261 val* VIRTUAL_typing__AReassignFormExpr__read_type(val* self) {
4262 val* var /* : nullable MType */;
4263 val* var1 /* : nullable MType */;
4264 var1 = typing__AReassignFormExpr__read_type(self);
4265 var = var1;
4266 RET_LABEL:;
4267 return var;
4268 }
4269 /* method typing#AReassignFormExpr#read_type= for (self: AReassignFormExpr, nullable MType) */
4270 void typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4271 self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val = p0; /* @read_type on <self:AReassignFormExpr> */
4272 RET_LABEL:;
4273 }
4274 /* method typing#AReassignFormExpr#read_type= for (self: Object, nullable MType) */
4275 void VIRTUAL_typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4276 typing__AReassignFormExpr__read_type_61d(self, p0);
4277 RET_LABEL:;
4278 }
4279 /* method typing#AReassignFormExpr#resolve_reassignment for (self: AReassignFormExpr, TypeVisitor, MType, MType): nullable MType */
4280 val* typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4281 val* var /* : nullable MType */;
4282 val* var_v /* var v: TypeVisitor */;
4283 val* var_readtype /* var readtype: MType */;
4284 val* var_writetype /* var writetype: MType */;
4285 val* var1 /* : AAssignOp */;
4286 short int var2 /* : Bool */;
4287 int cltype;
4288 int idtype;
4289 static val* varonce;
4290 val* var3 /* : String */;
4291 char* var4 /* : NativeString */;
4292 long var5 /* : Int */;
4293 val* var6 /* : String */;
4294 val* var_reassign_name /* var reassign_name: String */;
4295 val* var7 /* : AAssignOp */;
4296 short int var8 /* : Bool */;
4297 int cltype9;
4298 int idtype10;
4299 static val* varonce11;
4300 val* var12 /* : String */;
4301 char* var13 /* : NativeString */;
4302 long var14 /* : Int */;
4303 val* var15 /* : String */;
4304 short int var16 /* : Bool */;
4305 int cltype17;
4306 int idtype18;
4307 static val* varonce19;
4308 val* var20 /* : String */;
4309 char* var21 /* : NativeString */;
4310 long var22 /* : Int */;
4311 val* var23 /* : String */;
4312 static val* varonce24;
4313 val* var25 /* : String */;
4314 char* var26 /* : NativeString */;
4315 long var27 /* : Int */;
4316 val* var28 /* : String */;
4317 val* var29 /* : Array[Object] */;
4318 long var30 /* : Int */;
4319 val* var31 /* : NativeArray[Object] */;
4320 val* var32 /* : String */;
4321 val* var33 /* : null */;
4322 short int var34 /* : Bool */;
4323 val* var35 /* : nullable CallSite */;
4324 val* var_callsite /* var callsite: nullable CallSite */;
4325 val* var36 /* : null */;
4326 short int var37 /* : Bool */;
4327 val* var38 /* : null */;
4328 val* var39 /* : MSignature */;
4329 val* var_msignature /* var msignature: MSignature */;
4330 val* var40 /* : nullable MType */;
4331 val* var_rettype /* var rettype: nullable MType */;
4332 short int var41 /* : Bool */;
4333 long var42 /* : Int */;
4334 long var43 /* : Int */;
4335 short int var44 /* : Bool */;
4336 short int var46 /* : Bool */;
4337 short int var_ /* var : Bool */;
4338 val* var47 /* : null */;
4339 short int var48 /* : Bool */;
4340 val* var49 /* : AExpr */;
4341 val* var50 /* : Array[MParameter] */;
4342 val* var51 /* : nullable Object */;
4343 val* var52 /* : MType */;
4344 val* var53 /* : nullable MType */;
4345 val* var_value_type /* var value_type: nullable MType */;
4346 val* var54 /* : null */;
4347 short int var55 /* : Bool */;
4348 val* var56 /* : null */;
4349 val* var57 /* : nullable MType */;
4350 var_v = p0;
4351 var_readtype = p1;
4352 var_writetype = p2;
4353 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4354 /* <var1:AAssignOp> isa APlusAssignOp */
4355 cltype = type_parser_nodes__APlusAssignOp.color;
4356 idtype = type_parser_nodes__APlusAssignOp.id;
4357 if(cltype >= var1->type->table_size) {
4358 var2 = 0;
4359 } else {
4360 var2 = var1->type->type_table[cltype] == idtype;
4361 }
4362 if (var2){
4363 if (varonce) {
4364 var3 = varonce;
4365 } else {
4366 var4 = "+";
4367 var5 = 1;
4368 var6 = string__NativeString__to_s_with_length(var4, var5);
4369 var3 = var6;
4370 varonce = var3;
4371 }
4372 var_reassign_name = var3;
4373 } else {
4374 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4375 /* <var7:AAssignOp> isa AMinusAssignOp */
4376 cltype9 = type_parser_nodes__AMinusAssignOp.color;
4377 idtype10 = type_parser_nodes__AMinusAssignOp.id;
4378 if(cltype9 >= var7->type->table_size) {
4379 var8 = 0;
4380 } else {
4381 var8 = var7->type->type_table[cltype9] == idtype10;
4382 }
4383 if (var8){
4384 if (varonce11) {
4385 var12 = varonce11;
4386 } else {
4387 var13 = "-";
4388 var14 = 1;
4389 var15 = string__NativeString__to_s_with_length(var13, var14);
4390 var12 = var15;
4391 varonce11 = var12;
4392 }
4393 var_reassign_name = var12;
4394 } else {
4395 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/typing.nit", 670);
4396 exit(1);
4397 }
4398 }
4399 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type_61d]))(self, var_readtype) /* read_type= on <self:AReassignFormExpr>*/;
4400 /* <var_readtype:MType> isa MNullType */
4401 cltype17 = type_model__MNullType.color;
4402 idtype18 = type_model__MNullType.id;
4403 if(cltype17 >= var_readtype->type->table_size) {
4404 var16 = 0;
4405 } else {
4406 var16 = var_readtype->type->type_table[cltype17] == idtype18;
4407 }
4408 if (var16){
4409 if (varonce19) {
4410 var20 = varonce19;
4411 } else {
4412 var21 = "Error: Method \'";
4413 var22 = 15;
4414 var23 = string__NativeString__to_s_with_length(var21, var22);
4415 var20 = var23;
4416 varonce19 = var20;
4417 }
4418 if (varonce24) {
4419 var25 = varonce24;
4420 } else {
4421 var26 = "\' call on \'null\'.";
4422 var27 = 17;
4423 var28 = string__NativeString__to_s_with_length(var26, var27);
4424 var25 = var28;
4425 varonce24 = var25;
4426 }
4427 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
4428 { /* var29 = array_instance Array[Object] */
4429 var30 = 3;
4430 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
4431 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var20;
4432 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_reassign_name;
4433 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
4434 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
4435 CHECK_NEW_array__Array(var29);
4436 }
4437 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
4438 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
4439 var33 = NULL;
4440 var = var33;
4441 goto RET_LABEL;
4442 } else {
4443 }
4444 var34 = 0;
4445 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>*/;
4446 var_callsite = var35;
4447 var36 = NULL;
4448 if (var_callsite == NULL) {
4449 var37 = 1; /* is null */
4450 } else {
4451 var37 = 0; /* arg is null but recv is not */
4452 }
4453 if (var37){
4454 var38 = NULL;
4455 var = var38;
4456 goto RET_LABEL;
4457 } else {
4458 }
4459 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite_61d]))(self, var_callsite) /* reassign_callsite= on <self:AReassignFormExpr>*/;
4460 var39 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
4461 var_msignature = var39;
4462 var40 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
4463 var_rettype = var40;
4464 var42 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
4465 var43 = 1;
4466 { /* Inline kernel#Int#== (var42,var43) */
4467 var46 = var42 == var43;
4468 var44 = var46;
4469 goto RET_LABEL45;
4470 RET_LABEL45:(void)0;
4471 }
4472 var_ = var44;
4473 if (var44){
4474 var47 = NULL;
4475 if (var_rettype == NULL) {
4476 var48 = 0; /* is null */
4477 } else {
4478 var48 = 1; /* arg is null and recv is not */
4479 }
4480 var41 = var48;
4481 } else {
4482 var41 = var_;
4483 }
4484 if (!var41) {
4485 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 686);
4486 exit(1);
4487 }
4488 var49 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AReassignFormExpr>*/;
4489 var50 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
4490 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__first]))(var50) /* first on <var50:Array[MParameter]>*/;
4491 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_model__MParameter__mtype]))(var51) /* mtype on <var51:nullable Object(MParameter)>*/;
4492 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>*/;
4493 var_value_type = var53;
4494 var54 = NULL;
4495 if (var_value_type == NULL) {
4496 var55 = 1; /* is null */
4497 } else {
4498 var55 = 0; /* arg is null but recv is not */
4499 }
4500 if (var55){
4501 var56 = NULL;
4502 var = var56;
4503 goto RET_LABEL;
4504 } else {
4505 }
4506 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>*/;
4507 var57;
4508 var = var_rettype;
4509 goto RET_LABEL;
4510 RET_LABEL:;
4511 return var;
4512 }
4513 /* method typing#AReassignFormExpr#resolve_reassignment for (self: Object, TypeVisitor, MType, MType): nullable MType */
4514 val* VIRTUAL_typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4515 val* var /* : nullable MType */;
4516 val* var1 /* : nullable MType */;
4517 var1 = typing__AReassignFormExpr__resolve_reassignment(self, p0, p1, p2);
4518 var = var1;
4519 RET_LABEL:;
4520 return var;
4521 }
4522 /* method typing#AVarReassignExpr#accept_typing for (self: AVarReassignExpr, TypeVisitor) */
4523 void typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4524 val* var_v /* var v: TypeVisitor */;
4525 val* var /* : nullable Variable */;
4526 val* var_variable /* var variable: nullable Variable */;
4527 val* var1 /* : null */;
4528 short int var2 /* : Bool */;
4529 val* var3 /* : nullable MType */;
4530 val* var_readtype /* var readtype: nullable MType */;
4531 val* var4 /* : null */;
4532 short int var5 /* : Bool */;
4533 val* var6 /* : nullable MType */;
4534 val* var_writetype /* var writetype: nullable MType */;
4535 val* var7 /* : null */;
4536 short int var8 /* : Bool */;
4537 val* var9 /* : nullable MType */;
4538 val* var_rettype /* var rettype: nullable MType */;
4539 short int var10 /* : Bool */;
4540 var_v = p0;
4541 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
4542 var_variable = var;
4543 var1 = NULL;
4544 if (var_variable == NULL) {
4545 var2 = 0; /* is null */
4546 } else {
4547 var2 = 1; /* arg is null and recv is not */
4548 }
4549 if (!var2) {
4550 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 700);
4551 exit(1);
4552 }
4553 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>*/;
4554 var_readtype = var3;
4555 var4 = NULL;
4556 if (var_readtype == NULL) {
4557 var5 = 1; /* is null */
4558 } else {
4559 var5 = 0; /* arg is null but recv is not */
4560 }
4561 if (var5){
4562 goto RET_LABEL;
4563 } else {
4564 }
4565 var6 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4566 var_writetype = var6;
4567 var7 = NULL;
4568 if (var_writetype == NULL) {
4569 var8 = 1; /* is null */
4570 } else {
4571 var8 = 0; /* arg is null but recv is not */
4572 }
4573 if (var8){
4574 goto RET_LABEL;
4575 } else {
4576 }
4577 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>*/;
4578 var_rettype = var9;
4579 ((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>*/;
4580 var10 = 1;
4581 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var10) /* is_typed= on <self:AVarReassignExpr>*/;
4582 RET_LABEL:;
4583 }
4584 /* method typing#AVarReassignExpr#accept_typing for (self: Object, TypeVisitor) */
4585 void VIRTUAL_typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4586 typing__AVarReassignExpr__accept_typing(self, p0);
4587 RET_LABEL:;
4588 }
4589 /* method typing#AContinueExpr#accept_typing for (self: AContinueExpr, TypeVisitor) */
4590 void typing__AContinueExpr__accept_typing(val* self, val* p0) {
4591 val* var_v /* var v: TypeVisitor */;
4592 val* var /* : nullable AExpr */;
4593 val* var_nexpr /* var nexpr: nullable AExpr */;
4594 val* var1 /* : null */;
4595 short int var2 /* : Bool */;
4596 val* var3 /* : nullable MType */;
4597 val* var_mtype /* var mtype: nullable MType */;
4598 short int var4 /* : Bool */;
4599 var_v = p0;
4600 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AContinueExpr__n_expr]))(self) /* n_expr on <self:AContinueExpr>*/;
4601 var_nexpr = var;
4602 var1 = NULL;
4603 if (var_nexpr == NULL) {
4604 var2 = 0; /* is null */
4605 } else {
4606 var2 = 1; /* arg is null and recv is not */
4607 }
4608 if (var2){
4609 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4610 var_mtype = var3;
4611 } else {
4612 }
4613 var4 = 1;
4614 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AContinueExpr>*/;
4615 RET_LABEL:;
4616 }
4617 /* method typing#AContinueExpr#accept_typing for (self: Object, TypeVisitor) */
4618 void VIRTUAL_typing__AContinueExpr__accept_typing(val* self, val* p0) {
4619 typing__AContinueExpr__accept_typing(self, p0);
4620 RET_LABEL:;
4621 }
4622 /* method typing#ABreakExpr#accept_typing for (self: ABreakExpr, TypeVisitor) */
4623 void typing__ABreakExpr__accept_typing(val* self, val* p0) {
4624 val* var_v /* var v: TypeVisitor */;
4625 val* var /* : nullable AExpr */;
4626 val* var_nexpr /* var nexpr: nullable AExpr */;
4627 val* var1 /* : null */;
4628 short int var2 /* : Bool */;
4629 val* var3 /* : nullable MType */;
4630 val* var_mtype /* var mtype: nullable MType */;
4631 short int var4 /* : Bool */;
4632 var_v = p0;
4633 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABreakExpr__n_expr]))(self) /* n_expr on <self:ABreakExpr>*/;
4634 var_nexpr = var;
4635 var1 = NULL;
4636 if (var_nexpr == NULL) {
4637 var2 = 0; /* is null */
4638 } else {
4639 var2 = 1; /* arg is null and recv is not */
4640 }
4641 if (var2){
4642 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4643 var_mtype = var3;
4644 } else {
4645 }
4646 var4 = 1;
4647 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABreakExpr>*/;
4648 RET_LABEL:;
4649 }
4650 /* method typing#ABreakExpr#accept_typing for (self: Object, TypeVisitor) */
4651 void VIRTUAL_typing__ABreakExpr__accept_typing(val* self, val* p0) {
4652 typing__ABreakExpr__accept_typing(self, p0);
4653 RET_LABEL:;
4654 }
4655 /* method typing#AReturnExpr#accept_typing for (self: AReturnExpr, TypeVisitor) */
4656 void typing__AReturnExpr__accept_typing(val* self, val* p0) {
4657 val* var_v /* var v: TypeVisitor */;
4658 val* var /* : nullable AExpr */;
4659 val* var_nexpr /* var nexpr: nullable AExpr */;
4660 val* var1 /* : MPropDef */;
4661 short int var2 /* : Bool */;
4662 int cltype;
4663 int idtype;
4664 val* var3 /* : nullable MSignature */;
4665 val* var4 /* : nullable MType */;
4666 val* var_ret_type /* var ret_type: nullable MType */;
4667 val* var5 /* : null */;
4668 short int var6 /* : Bool */;
4669 val* var7 /* : null */;
4670 short int var8 /* : Bool */;
4671 val* var9 /* : nullable MType */;
4672 val* var_mtype /* var mtype: nullable MType */;
4673 val* var10 /* : nullable MType */;
4674 val* var_mtype11 /* var mtype: nullable MType */;
4675 static val* varonce;
4676 val* var12 /* : String */;
4677 char* var13 /* : NativeString */;
4678 long var14 /* : Int */;
4679 val* var15 /* : String */;
4680 val* var16 /* : null */;
4681 short int var17 /* : Bool */;
4682 static val* varonce18;
4683 val* var19 /* : String */;
4684 char* var20 /* : NativeString */;
4685 long var21 /* : Int */;
4686 val* var22 /* : String */;
4687 short int var23 /* : Bool */;
4688 var_v = p0;
4689 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReturnExpr__n_expr]))(self) /* n_expr on <self:AReturnExpr>*/;
4690 var_nexpr = var;
4691 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
4692 /* <var1:MPropDef> isa MMethodDef */
4693 cltype = type_model__MMethodDef.color;
4694 idtype = type_model__MMethodDef.id;
4695 if(cltype >= var1->type->table_size) {
4696 var2 = 0;
4697 } else {
4698 var2 = var1->type->type_table[cltype] == idtype;
4699 }
4700 if (!var2) {
4701 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 743);
4702 exit(1);
4703 }
4704 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MMethodDef__msignature]))(var1) /* msignature on <var1:MPropDef(MMethodDef)>*/;
4705 if (var3 == NULL) {
4706 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 743);
4707 exit(1);
4708 } else {
4709 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MSignature__return_mtype]))(var3) /* return_mtype on <var3:nullable MSignature>*/;
4710 }
4711 var_ret_type = var4;
4712 var5 = NULL;
4713 if (var_nexpr == NULL) {
4714 var6 = 0; /* is null */
4715 } else {
4716 var6 = 1; /* arg is null and recv is not */
4717 }
4718 if (var6){
4719 var7 = NULL;
4720 if (var_ret_type == NULL) {
4721 var8 = 0; /* is null */
4722 } else {
4723 var8 = 1; /* arg is null and recv is not */
4724 }
4725 if (var8){
4726 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>*/;
4727 var_mtype = var9;
4728 } else {
4729 var10 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4730 var_mtype11 = var10;
4731 if (varonce) {
4732 var12 = varonce;
4733 } else {
4734 var13 = "Error: Return with value in a procedure.";
4735 var14 = 40;
4736 var15 = string__NativeString__to_s_with_length(var13, var14);
4737 var12 = var15;
4738 varonce = var12;
4739 }
4740 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var12) /* error on <var_v:TypeVisitor>*/;
4741 }
4742 } else {
4743 var16 = NULL;
4744 if (var_ret_type == NULL) {
4745 var17 = 0; /* is null */
4746 } else {
4747 var17 = 1; /* arg is null and recv is not */
4748 }
4749 if (var17){
4750 if (varonce18) {
4751 var19 = varonce18;
4752 } else {
4753 var20 = "Error: Return without value in a function.";
4754 var21 = 42;
4755 var22 = string__NativeString__to_s_with_length(var20, var21);
4756 var19 = var22;
4757 varonce18 = var19;
4758 }
4759 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var19) /* error on <var_v:TypeVisitor>*/;
4760 } else {
4761 }
4762 }
4763 var23 = 1;
4764 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var23) /* is_typed= on <self:AReturnExpr>*/;
4765 RET_LABEL:;
4766 }
4767 /* method typing#AReturnExpr#accept_typing for (self: Object, TypeVisitor) */
4768 void VIRTUAL_typing__AReturnExpr__accept_typing(val* self, val* p0) {
4769 typing__AReturnExpr__accept_typing(self, p0);
4770 RET_LABEL:;
4771 }
4772 /* method typing#AAbortExpr#accept_typing for (self: AAbortExpr, TypeVisitor) */
4773 void typing__AAbortExpr__accept_typing(val* self, val* p0) {
4774 val* var_v /* var v: TypeVisitor */;
4775 short int var /* : Bool */;
4776 var_v = p0;
4777 var = 1;
4778 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var) /* is_typed= on <self:AAbortExpr>*/;
4779 RET_LABEL:;
4780 }
4781 /* method typing#AAbortExpr#accept_typing for (self: Object, TypeVisitor) */
4782 void VIRTUAL_typing__AAbortExpr__accept_typing(val* self, val* p0) {
4783 typing__AAbortExpr__accept_typing(self, p0);
4784 RET_LABEL:;
4785 }
4786 /* method typing#AIfExpr#accept_typing for (self: AIfExpr, TypeVisitor) */
4787 void typing__AIfExpr__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 /* : nullable AExpr */;
4792 val* var3 /* : nullable AExpr */;
4793 short int var4 /* : Bool */;
4794 var_v = p0;
4795 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_expr]))(self) /* n_expr on <self:AIfExpr>*/;
4796 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4797 var1;
4798 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_then]))(self) /* n_then on <self:AIfExpr>*/;
4799 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
4800 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfExpr__n_else]))(self) /* n_else on <self:AIfExpr>*/;
4801 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var3) /* visit_stmt on <var_v:TypeVisitor>*/;
4802 var4 = 1;
4803 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AIfExpr>*/;
4804 RET_LABEL:;
4805 }
4806 /* method typing#AIfExpr#accept_typing for (self: Object, TypeVisitor) */
4807 void VIRTUAL_typing__AIfExpr__accept_typing(val* self, val* p0) {
4808 typing__AIfExpr__accept_typing(self, p0);
4809 RET_LABEL:;
4810 }
4811 /* method typing#AIfexprExpr#accept_typing for (self: AIfexprExpr, TypeVisitor) */
4812 void typing__AIfexprExpr__accept_typing(val* self, val* p0) {
4813 val* var_v /* var v: TypeVisitor */;
4814 val* var /* : AExpr */;
4815 val* var1 /* : nullable MType */;
4816 val* var2 /* : AExpr */;
4817 val* var3 /* : nullable MType */;
4818 val* var_t1 /* var t1: nullable MType */;
4819 val* var4 /* : AExpr */;
4820 val* var5 /* : nullable MType */;
4821 val* var_t2 /* var t2: nullable MType */;
4822 short int var6 /* : Bool */;
4823 val* var7 /* : null */;
4824 short int var8 /* : Bool */;
4825 short int var_ /* var : Bool */;
4826 val* var9 /* : null */;
4827 short int var10 /* : Bool */;
4828 val* var11 /* : Array[MType] */;
4829 long var12 /* : Int */;
4830 val* var13 /* : NativeArray[MType] */;
4831 val* var14 /* : nullable MType */;
4832 val* var_t /* var t: nullable MType */;
4833 val* var15 /* : null */;
4834 short int var16 /* : Bool */;
4835 static val* varonce;
4836 val* var17 /* : String */;
4837 char* var18 /* : NativeString */;
4838 long var19 /* : Int */;
4839 val* var20 /* : String */;
4840 static val* varonce21;
4841 val* var22 /* : String */;
4842 char* var23 /* : NativeString */;
4843 long var24 /* : Int */;
4844 val* var25 /* : String */;
4845 val* var26 /* : Array[Object] */;
4846 long var27 /* : Int */;
4847 val* var28 /* : NativeArray[Object] */;
4848 val* var29 /* : String */;
4849 var_v = p0;
4850 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_expr]))(self) /* n_expr on <self:AIfexprExpr>*/;
4851 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4852 var1;
4853 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_then]))(self) /* n_then on <self:AIfexprExpr>*/;
4854 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
4855 var_t1 = var3;
4856 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIfexprExpr__n_else]))(self) /* n_else on <self:AIfexprExpr>*/;
4857 var5 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var4) /* visit_expr on <var_v:TypeVisitor>*/;
4858 var_t2 = var5;
4859 var7 = NULL;
4860 if (var_t1 == NULL) {
4861 var8 = 1; /* is null */
4862 } else {
4863 var8 = 0; /* arg is null but recv is not */
4864 }
4865 var_ = var8;
4866 if (var8){
4867 var6 = var_;
4868 } else {
4869 var9 = NULL;
4870 if (var_t2 == NULL) {
4871 var10 = 1; /* is null */
4872 } else {
4873 var10 = 0; /* arg is null but recv is not */
4874 }
4875 var6 = var10;
4876 }
4877 if (var6){
4878 goto RET_LABEL;
4879 } else {
4880 }
4881 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
4882 { /* var11 = array_instance Array[MType] */
4883 var12 = 2;
4884 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
4885 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
4886 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
4887 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
4888 CHECK_NEW_array__Array(var11);
4889 }
4890 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
4891 var_t = var14;
4892 var15 = NULL;
4893 if (var_t == NULL) {
4894 var16 = 1; /* is null */
4895 } else {
4896 var16 = 0; /* arg is null but recv is not */
4897 }
4898 if (var16){
4899 if (varonce) {
4900 var17 = varonce;
4901 } else {
4902 var18 = "Type Error: ambiguous type ";
4903 var19 = 27;
4904 var20 = string__NativeString__to_s_with_length(var18, var19);
4905 var17 = var20;
4906 varonce = var17;
4907 }
4908 if (varonce21) {
4909 var22 = varonce21;
4910 } else {
4911 var23 = " vs ";
4912 var24 = 4;
4913 var25 = string__NativeString__to_s_with_length(var23, var24);
4914 var22 = var25;
4915 varonce21 = var22;
4916 }
4917 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
4918 { /* var26 = array_instance Array[Object] */
4919 var27 = 4;
4920 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
4921 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
4922 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_t1;
4923 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
4924 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var_t2;
4925 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
4926 CHECK_NEW_array__Array(var26);
4927 }
4928 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
4929 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var29) /* error on <var_v:TypeVisitor>*/;
4930 } else {
4931 }
4932 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AIfexprExpr>*/;
4933 RET_LABEL:;
4934 }
4935 /* method typing#AIfexprExpr#accept_typing for (self: Object, TypeVisitor) */
4936 void VIRTUAL_typing__AIfexprExpr__accept_typing(val* self, val* p0) {
4937 typing__AIfexprExpr__accept_typing(self, p0);
4938 RET_LABEL:;
4939 }
4940 /* method typing#ADoExpr#accept_typing for (self: ADoExpr, TypeVisitor) */
4941 void typing__ADoExpr__accept_typing(val* self, val* p0) {
4942 val* var_v /* var v: TypeVisitor */;
4943 val* var /* : nullable AExpr */;
4944 short int var1 /* : Bool */;
4945 var_v = p0;
4946 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ADoExpr__n_block]))(self) /* n_block on <self:ADoExpr>*/;
4947 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var) /* visit_stmt on <var_v:TypeVisitor>*/;
4948 var1 = 1;
4949 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var1) /* is_typed= on <self:ADoExpr>*/;
4950 RET_LABEL:;
4951 }
4952 /* method typing#ADoExpr#accept_typing for (self: Object, TypeVisitor) */
4953 void VIRTUAL_typing__ADoExpr__accept_typing(val* self, val* p0) {
4954 typing__ADoExpr__accept_typing(self, p0);
4955 RET_LABEL:;
4956 }
4957 /* method typing#AWhileExpr#accept_typing for (self: AWhileExpr, TypeVisitor) */
4958 void typing__AWhileExpr__accept_typing(val* self, val* p0) {
4959 val* var_v /* var v: TypeVisitor */;
4960 val* var /* : AExpr */;
4961 val* var1 /* : nullable MType */;
4962 val* var2 /* : nullable AExpr */;
4963 short int var3 /* : Bool */;
4964 var_v = p0;
4965 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_expr]))(self) /* n_expr on <self:AWhileExpr>*/;
4966 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
4967 var1;
4968 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AWhileExpr__n_block]))(self) /* n_block on <self:AWhileExpr>*/;
4969 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
4970 var3 = 1;
4971 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AWhileExpr>*/;
4972 RET_LABEL:;
4973 }
4974 /* method typing#AWhileExpr#accept_typing for (self: Object, TypeVisitor) */
4975 void VIRTUAL_typing__AWhileExpr__accept_typing(val* self, val* p0) {
4976 typing__AWhileExpr__accept_typing(self, p0);
4977 RET_LABEL:;
4978 }
4979 /* method typing#ALoopExpr#accept_typing for (self: ALoopExpr, TypeVisitor) */
4980 void typing__ALoopExpr__accept_typing(val* self, val* p0) {
4981 val* var_v /* var v: TypeVisitor */;
4982 val* var /* : nullable AExpr */;
4983 short int var1 /* : Bool */;
4984 var_v = p0;
4985 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ALoopExpr__n_block]))(self) /* n_block on <self:ALoopExpr>*/;
4986 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var) /* visit_stmt on <var_v:TypeVisitor>*/;
4987 var1 = 1;
4988 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var1) /* is_typed= on <self:ALoopExpr>*/;
4989 RET_LABEL:;
4990 }
4991 /* method typing#ALoopExpr#accept_typing for (self: Object, TypeVisitor) */
4992 void VIRTUAL_typing__ALoopExpr__accept_typing(val* self, val* p0) {
4993 typing__ALoopExpr__accept_typing(self, p0);
4994 RET_LABEL:;
4995 }
4996 /* method typing#AForExpr#coltype for (self: AForExpr): nullable MClassType */
4997 val* typing__AForExpr__coltype(val* self) {
4998 val* var /* : nullable MClassType */;
4999 val* var1 /* : nullable MClassType */;
5000 var1 = self->attrs[COLOR_typing__AForExpr___64dcoltype].val; /* @coltype on <self:AForExpr> */
5001 var = var1;
5002 RET_LABEL:;
5003 return var;
5004 }
5005 /* method typing#AForExpr#coltype for (self: Object): nullable MClassType */
5006 val* VIRTUAL_typing__AForExpr__coltype(val* self) {
5007 val* var /* : nullable MClassType */;
5008 val* var1 /* : nullable MClassType */;
5009 var1 = typing__AForExpr__coltype(self);
5010 var = var1;
5011 RET_LABEL:;
5012 return var;
5013 }
5014 /* method typing#AForExpr#coltype= for (self: AForExpr, nullable MClassType) */
5015 void typing__AForExpr__coltype_61d(val* self, val* p0) {
5016 self->attrs[COLOR_typing__AForExpr___64dcoltype].val = p0; /* @coltype on <self:AForExpr> */
5017 RET_LABEL:;
5018 }
5019 /* method typing#AForExpr#coltype= for (self: Object, nullable MClassType) */
5020 void VIRTUAL_typing__AForExpr__coltype_61d(val* self, val* p0) {
5021 typing__AForExpr__coltype_61d(self, p0);
5022 RET_LABEL:;
5023 }
5024 /* method typing#AForExpr#method_iterator for (self: AForExpr): nullable MMethod */
5025 val* typing__AForExpr__method_iterator(val* self) {
5026 val* var /* : nullable MMethod */;
5027 val* var1 /* : nullable MMethod */;
5028 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_iterator].val; /* @method_iterator on <self:AForExpr> */
5029 var = var1;
5030 RET_LABEL:;
5031 return var;
5032 }
5033 /* method typing#AForExpr#method_iterator for (self: Object): nullable MMethod */
5034 val* VIRTUAL_typing__AForExpr__method_iterator(val* self) {
5035 val* var /* : nullable MMethod */;
5036 val* var1 /* : nullable MMethod */;
5037 var1 = typing__AForExpr__method_iterator(self);
5038 var = var1;
5039 RET_LABEL:;
5040 return var;
5041 }
5042 /* method typing#AForExpr#method_iterator= for (self: AForExpr, nullable MMethod) */
5043 void typing__AForExpr__method_iterator_61d(val* self, val* p0) {
5044 self->attrs[COLOR_typing__AForExpr___64dmethod_iterator].val = p0; /* @method_iterator on <self:AForExpr> */
5045 RET_LABEL:;
5046 }
5047 /* method typing#AForExpr#method_iterator= for (self: Object, nullable MMethod) */
5048 void VIRTUAL_typing__AForExpr__method_iterator_61d(val* self, val* p0) {
5049 typing__AForExpr__method_iterator_61d(self, p0);
5050 RET_LABEL:;
5051 }
5052 /* method typing#AForExpr#method_is_ok for (self: AForExpr): nullable MMethod */
5053 val* typing__AForExpr__method_is_ok(val* self) {
5054 val* var /* : nullable MMethod */;
5055 val* var1 /* : nullable MMethod */;
5056 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_is_ok].val; /* @method_is_ok on <self:AForExpr> */
5057 var = var1;
5058 RET_LABEL:;
5059 return var;
5060 }
5061 /* method typing#AForExpr#method_is_ok for (self: Object): nullable MMethod */
5062 val* VIRTUAL_typing__AForExpr__method_is_ok(val* self) {
5063 val* var /* : nullable MMethod */;
5064 val* var1 /* : nullable MMethod */;
5065 var1 = typing__AForExpr__method_is_ok(self);
5066 var = var1;
5067 RET_LABEL:;
5068 return var;
5069 }
5070 /* method typing#AForExpr#method_is_ok= for (self: AForExpr, nullable MMethod) */
5071 void typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
5072 self->attrs[COLOR_typing__AForExpr___64dmethod_is_ok].val = p0; /* @method_is_ok on <self:AForExpr> */
5073 RET_LABEL:;
5074 }
5075 /* method typing#AForExpr#method_is_ok= for (self: Object, nullable MMethod) */
5076 void VIRTUAL_typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
5077 typing__AForExpr__method_is_ok_61d(self, p0);
5078 RET_LABEL:;
5079 }
5080 /* method typing#AForExpr#method_item for (self: AForExpr): nullable MMethod */
5081 val* typing__AForExpr__method_item(val* self) {
5082 val* var /* : nullable MMethod */;
5083 val* var1 /* : nullable MMethod */;
5084 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_item].val; /* @method_item on <self:AForExpr> */
5085 var = var1;
5086 RET_LABEL:;
5087 return var;
5088 }
5089 /* method typing#AForExpr#method_item for (self: Object): nullable MMethod */
5090 val* VIRTUAL_typing__AForExpr__method_item(val* self) {
5091 val* var /* : nullable MMethod */;
5092 val* var1 /* : nullable MMethod */;
5093 var1 = typing__AForExpr__method_item(self);
5094 var = var1;
5095 RET_LABEL:;
5096 return var;
5097 }
5098 /* method typing#AForExpr#method_item= for (self: AForExpr, nullable MMethod) */
5099 void typing__AForExpr__method_item_61d(val* self, val* p0) {
5100 self->attrs[COLOR_typing__AForExpr___64dmethod_item].val = p0; /* @method_item on <self:AForExpr> */
5101 RET_LABEL:;
5102 }
5103 /* method typing#AForExpr#method_item= for (self: Object, nullable MMethod) */
5104 void VIRTUAL_typing__AForExpr__method_item_61d(val* self, val* p0) {
5105 typing__AForExpr__method_item_61d(self, p0);
5106 RET_LABEL:;
5107 }
5108 /* method typing#AForExpr#method_next for (self: AForExpr): nullable MMethod */
5109 val* typing__AForExpr__method_next(val* self) {
5110 val* var /* : nullable MMethod */;
5111 val* var1 /* : nullable MMethod */;
5112 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_next].val; /* @method_next on <self:AForExpr> */
5113 var = var1;
5114 RET_LABEL:;
5115 return var;
5116 }
5117 /* method typing#AForExpr#method_next for (self: Object): nullable MMethod */
5118 val* VIRTUAL_typing__AForExpr__method_next(val* self) {
5119 val* var /* : nullable MMethod */;
5120 val* var1 /* : nullable MMethod */;
5121 var1 = typing__AForExpr__method_next(self);
5122 var = var1;
5123 RET_LABEL:;
5124 return var;
5125 }
5126 /* method typing#AForExpr#method_next= for (self: AForExpr, nullable MMethod) */
5127 void typing__AForExpr__method_next_61d(val* self, val* p0) {
5128 self->attrs[COLOR_typing__AForExpr___64dmethod_next].val = p0; /* @method_next on <self:AForExpr> */
5129 RET_LABEL:;
5130 }
5131 /* method typing#AForExpr#method_next= for (self: Object, nullable MMethod) */
5132 void VIRTUAL_typing__AForExpr__method_next_61d(val* self, val* p0) {
5133 typing__AForExpr__method_next_61d(self, p0);
5134 RET_LABEL:;
5135 }
5136 /* method typing#AForExpr#method_key for (self: AForExpr): nullable MMethod */
5137 val* typing__AForExpr__method_key(val* self) {
5138 val* var /* : nullable MMethod */;
5139 val* var1 /* : nullable MMethod */;
5140 var1 = self->attrs[COLOR_typing__AForExpr___64dmethod_key].val; /* @method_key on <self:AForExpr> */
5141 var = var1;
5142 RET_LABEL:;
5143 return var;
5144 }
5145 /* method typing#AForExpr#method_key for (self: Object): nullable MMethod */
5146 val* VIRTUAL_typing__AForExpr__method_key(val* self) {
5147 val* var /* : nullable MMethod */;
5148 val* var1 /* : nullable MMethod */;
5149 var1 = typing__AForExpr__method_key(self);
5150 var = var1;
5151 RET_LABEL:;
5152 return var;
5153 }
5154 /* method typing#AForExpr#method_key= for (self: AForExpr, nullable MMethod) */
5155 void typing__AForExpr__method_key_61d(val* self, val* p0) {
5156 self->attrs[COLOR_typing__AForExpr___64dmethod_key].val = p0; /* @method_key on <self:AForExpr> */
5157 RET_LABEL:;
5158 }
5159 /* method typing#AForExpr#method_key= for (self: Object, nullable MMethod) */
5160 void VIRTUAL_typing__AForExpr__method_key_61d(val* self, val* p0) {
5161 typing__AForExpr__method_key_61d(self, p0);
5162 RET_LABEL:;
5163 }
5164 /* method typing#AForExpr#do_type_iterator for (self: AForExpr, TypeVisitor, MType) */
5165 void typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
5166 val* var_v /* var v: TypeVisitor */;
5167 val* var_mtype /* var mtype: MType */;
5168 static val* varonce;
5169 val* var /* : String */;
5170 char* var1 /* : NativeString */;
5171 long var2 /* : Int */;
5172 val* var3 /* : String */;
5173 val* var4 /* : nullable MClass */;
5174 val* var_objcla /* var objcla: nullable MClass */;
5175 val* var5 /* : null */;
5176 short int var6 /* : Bool */;
5177 val* var7 /* : MType */;
5178 val* var_unsafe_type /* var unsafe_type: MType */;
5179 static val* varonce8;
5180 val* var9 /* : String */;
5181 char* var10 /* : NativeString */;
5182 long var11 /* : Int */;
5183 val* var12 /* : String */;
5184 val* var13 /* : nullable MProperty */;
5185 val* var14 /* : null */;
5186 short int var15 /* : Bool */;
5187 static val* varonce16;
5188 val* var17 /* : String */;
5189 char* var18 /* : NativeString */;
5190 long var19 /* : Int */;
5191 val* var20 /* : String */;
5192 val* var21 /* : nullable MProperty */;
5193 val* var22 /* : null */;
5194 short int var23 /* : Bool */;
5195 static val* varonce24;
5196 val* var25 /* : String */;
5197 char* var26 /* : NativeString */;
5198 long var27 /* : Int */;
5199 val* var28 /* : String */;
5200 val* var29 /* : Array[Object] */;
5201 long var30 /* : Int */;
5202 val* var31 /* : NativeArray[Object] */;
5203 val* var32 /* : String */;
5204 val* var33 /* : ModelBuilder */;
5205 static val* varonce34;
5206 val* var35 /* : String */;
5207 char* var36 /* : NativeString */;
5208 long var37 /* : Int */;
5209 val* var38 /* : String */;
5210 val* var39 /* : Array[Object] */;
5211 long var40 /* : Int */;
5212 val* var41 /* : NativeArray[Object] */;
5213 val* var42 /* : String */;
5214 static val* varonce43;
5215 val* var44 /* : String */;
5216 char* var45 /* : NativeString */;
5217 long var46 /* : Int */;
5218 val* var47 /* : String */;
5219 short int var48 /* : Bool */;
5220 val* var49 /* : nullable CallSite */;
5221 val* var_itdef /* var itdef: nullable CallSite */;
5222 val* var50 /* : null */;
5223 short int var51 /* : Bool */;
5224 static val* varonce52;
5225 val* var53 /* : String */;
5226 char* var54 /* : NativeString */;
5227 long var55 /* : Int */;
5228 val* var56 /* : String */;
5229 val* var57 /* : Array[Object] */;
5230 long var58 /* : Int */;
5231 val* var59 /* : NativeArray[Object] */;
5232 val* var60 /* : String */;
5233 val* var61 /* : MMethod */;
5234 val* var62 /* : MSignature */;
5235 val* var63 /* : nullable MType */;
5236 val* var_ittype /* var ittype: nullable MType */;
5237 val* var64 /* : null */;
5238 short int var65 /* : Bool */;
5239 static val* varonce66;
5240 val* var67 /* : String */;
5241 char* var68 /* : NativeString */;
5242 long var69 /* : Int */;
5243 val* var70 /* : String */;
5244 static val* varonce71;
5245 val* var72 /* : String */;
5246 char* var73 /* : NativeString */;
5247 long var74 /* : Int */;
5248 val* var75 /* : String */;
5249 val* var76 /* : nullable MClass */;
5250 val* var_colit_cla /* var colit_cla: nullable MClass */;
5251 static val* varonce77;
5252 val* var78 /* : String */;
5253 char* var79 /* : NativeString */;
5254 long var80 /* : Int */;
5255 val* var81 /* : String */;
5256 val* var82 /* : nullable MClass */;
5257 val* var_mapit_cla /* var mapit_cla: nullable MClass */;
5258 short int var83 /* : Bool */;
5259 short int var_is_col /* var is_col: Bool */;
5260 short int var84 /* : Bool */;
5261 short int var_is_map /* var is_map: Bool */;
5262 short int var85 /* : Bool */;
5263 val* var86 /* : null */;
5264 short int var87 /* : Bool */;
5265 short int var_ /* var : Bool */;
5266 val* var88 /* : MClassType */;
5267 val* var89 /* : MType */;
5268 val* var90 /* : Array[MType] */;
5269 long var91 /* : Int */;
5270 val* var92 /* : NativeArray[MType] */;
5271 val* var93 /* : MClassType */;
5272 short int var94 /* : Bool */;
5273 val* var95 /* : MModule */;
5274 val* var96 /* : MClassType */;
5275 val* var97 /* : MClassType */;
5276 val* var_coltype /* var coltype: MClassType */;
5277 val* var98 /* : nullable Array[Variable] */;
5278 val* var_variables /* var variables: nullable Array[Variable] */;
5279 long var99 /* : Int */;
5280 long var100 /* : Int */;
5281 short int var101 /* : Bool */;
5282 short int var103 /* : Bool */;
5283 short int var104 /* : Bool */;
5284 static val* varonce105;
5285 val* var106 /* : String */;
5286 char* var107 /* : NativeString */;
5287 long var108 /* : Int */;
5288 val* var109 /* : String */;
5289 val* var110 /* : nullable Object */;
5290 val* var111 /* : Array[MType] */;
5291 val* var112 /* : nullable Object */;
5292 short int var113 /* : Bool */;
5293 short int var114 /* : Bool */;
5294 val* var115 /* : null */;
5295 short int var116 /* : Bool */;
5296 short int var_117 /* var : Bool */;
5297 val* var118 /* : MClassType */;
5298 val* var119 /* : MClassType */;
5299 val* var120 /* : MType */;
5300 val* var121 /* : Array[MType] */;
5301 long var122 /* : Int */;
5302 val* var123 /* : NativeArray[MType] */;
5303 val* var124 /* : MClassType */;
5304 short int var125 /* : Bool */;
5305 val* var126 /* : MModule */;
5306 val* var127 /* : MClassType */;
5307 val* var128 /* : MClassType */;
5308 val* var_coltype129 /* var coltype: MClassType */;
5309 val* var130 /* : nullable Array[Variable] */;
5310 val* var_variables131 /* var variables: nullable Array[Variable] */;
5311 long var132 /* : Int */;
5312 long var133 /* : Int */;
5313 short int var134 /* : Bool */;
5314 short int var136 /* : Bool */;
5315 short int var137 /* : Bool */;
5316 static val* varonce138;
5317 val* var139 /* : String */;
5318 char* var140 /* : NativeString */;
5319 long var141 /* : Int */;
5320 val* var142 /* : String */;
5321 long var143 /* : Int */;
5322 val* var144 /* : nullable Object */;
5323 val* var145 /* : Array[MType] */;
5324 long var146 /* : Int */;
5325 val* var147 /* : nullable Object */;
5326 long var148 /* : Int */;
5327 val* var149 /* : nullable Object */;
5328 val* var150 /* : Array[MType] */;
5329 long var151 /* : Int */;
5330 val* var152 /* : nullable Object */;
5331 short int var153 /* : Bool */;
5332 short int var154 /* : Bool */;
5333 short int var155 /* : Bool */;
5334 short int var_156 /* var : Bool */;
5335 short int var157 /* : Bool */;
5336 static val* varonce158;
5337 val* var159 /* : String */;
5338 char* var160 /* : NativeString */;
5339 long var161 /* : Int */;
5340 val* var162 /* : String */;
5341 short int var163 /* : Bool */;
5342 val* var164 /* : MType */;
5343 short int var165 /* : Bool */;
5344 int cltype;
5345 int idtype;
5346 static val* varonce166;
5347 val* var167 /* : String */;
5348 char* var168 /* : NativeString */;
5349 long var169 /* : Int */;
5350 val* var170 /* : String */;
5351 short int var171 /* : Bool */;
5352 val* var172 /* : nullable CallSite */;
5353 val* var_ikdef /* var ikdef: nullable CallSite */;
5354 val* var173 /* : null */;
5355 short int var174 /* : Bool */;
5356 static val* varonce175;
5357 val* var176 /* : String */;
5358 char* var177 /* : NativeString */;
5359 long var178 /* : Int */;
5360 val* var179 /* : String */;
5361 val* var180 /* : Array[Object] */;
5362 long var181 /* : Int */;
5363 val* var182 /* : NativeArray[Object] */;
5364 val* var183 /* : String */;
5365 val* var184 /* : MMethod */;
5366 static val* varonce185;
5367 val* var186 /* : String */;
5368 char* var187 /* : NativeString */;
5369 long var188 /* : Int */;
5370 val* var189 /* : String */;
5371 short int var190 /* : Bool */;
5372 val* var191 /* : nullable CallSite */;
5373 val* var_itemdef /* var itemdef: nullable CallSite */;
5374 val* var192 /* : null */;
5375 short int var193 /* : Bool */;
5376 static val* varonce194;
5377 val* var195 /* : String */;
5378 char* var196 /* : NativeString */;
5379 long var197 /* : Int */;
5380 val* var198 /* : String */;
5381 val* var199 /* : Array[Object] */;
5382 long var200 /* : Int */;
5383 val* var201 /* : NativeArray[Object] */;
5384 val* var202 /* : String */;
5385 val* var203 /* : MMethod */;
5386 static val* varonce204;
5387 val* var205 /* : String */;
5388 char* var206 /* : NativeString */;
5389 long var207 /* : Int */;
5390 val* var208 /* : String */;
5391 short int var209 /* : Bool */;
5392 val* var210 /* : nullable CallSite */;
5393 val* var_nextdef /* var nextdef: nullable CallSite */;
5394 val* var211 /* : null */;
5395 short int var212 /* : Bool */;
5396 static val* varonce213;
5397 val* var214 /* : String */;
5398 char* var215 /* : NativeString */;
5399 long var216 /* : Int */;
5400 val* var217 /* : String */;
5401 val* var218 /* : Array[Object] */;
5402 long var219 /* : Int */;
5403 val* var220 /* : NativeArray[Object] */;
5404 val* var221 /* : String */;
5405 val* var222 /* : MMethod */;
5406 static val* varonce223;
5407 val* var224 /* : String */;
5408 char* var225 /* : NativeString */;
5409 long var226 /* : Int */;
5410 val* var227 /* : String */;
5411 short int var228 /* : Bool */;
5412 val* var229 /* : nullable CallSite */;
5413 val* var_keydef /* var keydef: nullable CallSite */;
5414 val* var230 /* : null */;
5415 short int var231 /* : Bool */;
5416 static val* varonce232;
5417 val* var233 /* : String */;
5418 char* var234 /* : NativeString */;
5419 long var235 /* : Int */;
5420 val* var236 /* : String */;
5421 val* var237 /* : Array[Object] */;
5422 long var238 /* : Int */;
5423 val* var239 /* : NativeArray[Object] */;
5424 val* var240 /* : String */;
5425 val* var241 /* : MMethod */;
5426 var_v = p0;
5427 var_mtype = p1;
5428 if (varonce) {
5429 var = varonce;
5430 } else {
5431 var1 = "Object";
5432 var2 = 6;
5433 var3 = string__NativeString__to_s_with_length(var1, var2);
5434 var = var3;
5435 varonce = var;
5436 }
5437 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
5438 var_objcla = var4;
5439 var5 = NULL;
5440 if (var_objcla == NULL) {
5441 var6 = 1; /* is null */
5442 } else {
5443 var6 = 0; /* arg is null but recv is not */
5444 }
5445 if (var6){
5446 goto RET_LABEL;
5447 } else {
5448 }
5449 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5450 var_unsafe_type = var7;
5451 if (varonce8) {
5452 var9 = varonce8;
5453 } else {
5454 var10 = "iterator";
5455 var11 = 8;
5456 var12 = string__NativeString__to_s_with_length(var10, var11);
5457 var9 = var12;
5458 varonce8 = var9;
5459 }
5460 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>*/;
5461 var14 = NULL;
5462 if (var13 == NULL) {
5463 var15 = 1; /* is null */
5464 } else {
5465 var15 = 0; /* arg is null but recv is not */
5466 }
5467 if (var15){
5468 if (varonce16) {
5469 var17 = varonce16;
5470 } else {
5471 var18 = "iterate";
5472 var19 = 7;
5473 var20 = string__NativeString__to_s_with_length(var18, var19);
5474 var17 = var20;
5475 varonce16 = var17;
5476 }
5477 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>*/;
5478 var22 = NULL;
5479 if (var21 == NULL) {
5480 var23 = 1; /* is null */
5481 } else {
5482 var23 = 0; /* arg is null but recv is not */
5483 }
5484 if (var23){
5485 if (varonce24) {
5486 var25 = varonce24;
5487 } else {
5488 var26 = "Type Error: Expected method \'iterator\' in type ";
5489 var27 = 47;
5490 var28 = string__NativeString__to_s_with_length(var26, var27);
5491 var25 = var28;
5492 varonce24 = var25;
5493 }
5494 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
5495 { /* var29 = array_instance Array[Object] */
5496 var30 = 2;
5497 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
5498 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var25;
5499 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_mtype;
5500 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
5501 CHECK_NEW_array__Array(var29);
5502 }
5503 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
5504 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
5505 } else {
5506 var33 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
5507 if (varonce34) {
5508 var35 = varonce34;
5509 } else {
5510 var36 = "NOT YET IMPLEMENTED: Do \'for\' on ";
5511 var37 = 33;
5512 var38 = string__NativeString__to_s_with_length(var36, var37);
5513 var35 = var38;
5514 varonce34 = var35;
5515 }
5516 var39 = NEW_array__Array(&type_array__Arraykernel__Object);
5517 { /* var39 = array_instance Array[Object] */
5518 var40 = 2;
5519 var41 = NEW_array__NativeArray(var40, &type_array__NativeArraykernel__Object);
5520 ((struct instance_array__NativeArray*)var41)->values[0] = (val*) var35;
5521 ((struct instance_array__NativeArray*)var41)->values[1] = (val*) var_mtype;
5522 ((void (*)(val*, val*, long))(var39->class->vft[COLOR_array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
5523 CHECK_NEW_array__Array(var39);
5524 }
5525 var42 = ((val* (*)(val*))(var39->class->vft[COLOR_string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
5526 ((void (*)(val*, val*, val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var33, self, var42) /* error on <var33:ModelBuilder>*/;
5527 }
5528 goto RET_LABEL;
5529 } else {
5530 }
5531 if (varonce43) {
5532 var44 = varonce43;
5533 } else {
5534 var45 = "iterator";
5535 var46 = 8;
5536 var47 = string__NativeString__to_s_with_length(var45, var46);
5537 var44 = var47;
5538 varonce43 = var44;
5539 }
5540 var48 = 1;
5541 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>*/;
5542 var_itdef = var49;
5543 var50 = NULL;
5544 if (var_itdef == NULL) {
5545 var51 = 1; /* is null */
5546 } else {
5547 var51 = 0; /* arg is null but recv is not */
5548 }
5549 if (var51){
5550 if (varonce52) {
5551 var53 = varonce52;
5552 } else {
5553 var54 = "Type Error: Expected method \'iterator\' in type ";
5554 var55 = 47;
5555 var56 = string__NativeString__to_s_with_length(var54, var55);
5556 var53 = var56;
5557 varonce52 = var53;
5558 }
5559 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
5560 { /* var57 = array_instance Array[Object] */
5561 var58 = 2;
5562 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
5563 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var53;
5564 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var_mtype;
5565 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
5566 CHECK_NEW_array__Array(var57);
5567 }
5568 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
5569 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var60) /* error on <var_v:TypeVisitor>*/;
5570 goto RET_LABEL;
5571 } else {
5572 }
5573 var61 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itdef) /* mproperty on <var_itdef:nullable CallSite(CallSite)>*/;
5574 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_iterator_61d]))(self, var61) /* method_iterator= on <self:AForExpr>*/;
5575 var62 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__msignature]))(var_itdef) /* msignature on <var_itdef:nullable CallSite(CallSite)>*/;
5576 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_model__MSignature__return_mtype]))(var62) /* return_mtype on <var62:MSignature>*/;
5577 var_ittype = var63;
5578 var64 = NULL;
5579 if (var_ittype == NULL) {
5580 var65 = 1; /* is null */
5581 } else {
5582 var65 = 0; /* arg is null but recv is not */
5583 }
5584 if (var65){
5585 if (varonce66) {
5586 var67 = varonce66;
5587 } else {
5588 var68 = "Type Error: Expected method \'iterator\' to return an Iterator or MapIterator type";
5589 var69 = 80;
5590 var70 = string__NativeString__to_s_with_length(var68, var69);
5591 var67 = var70;
5592 varonce66 = var67;
5593 }
5594 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var67) /* error on <var_v:TypeVisitor>*/;
5595 goto RET_LABEL;
5596 } else {
5597 }
5598 if (varonce71) {
5599 var72 = varonce71;
5600 } else {
5601 var73 = "Iterator";
5602 var74 = 8;
5603 var75 = string__NativeString__to_s_with_length(var73, var74);
5604 var72 = var75;
5605 varonce71 = var72;
5606 }
5607 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>*/;
5608 var_colit_cla = var76;
5609 if (varonce77) {
5610 var78 = varonce77;
5611 } else {
5612 var79 = "MapIterator";
5613 var80 = 11;
5614 var81 = string__NativeString__to_s_with_length(var79, var80);
5615 var78 = var81;
5616 varonce77 = var78;
5617 }
5618 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>*/;
5619 var_mapit_cla = var82;
5620 var83 = 0;
5621 var_is_col = var83;
5622 var84 = 0;
5623 var_is_map = var84;
5624 var86 = NULL;
5625 if (var_colit_cla == NULL) {
5626 var87 = 0; /* is null */
5627 } else {
5628 var87 = 1; /* arg is null and recv is not */
5629 }
5630 var_ = var87;
5631 if (var87){
5632 var88 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5633 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MType__as_nullable]))(var88) /* as_nullable on <var88:MClassType>*/;
5634 var90 = NEW_array__Array(&type_array__Arraymodel__MType);
5635 { /* var90 = array_instance Array[MType] */
5636 var91 = 1;
5637 var92 = NEW_array__NativeArray(var91, &type_array__NativeArraymodel__MType);
5638 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var89;
5639 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[MType]>*/;
5640 CHECK_NEW_array__Array(var90);
5641 }
5642 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)>*/;
5643 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>*/;
5644 var85 = var94;
5645 } else {
5646 var85 = var_;
5647 }
5648 if (var85){
5649 var95 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5650 var96 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5651 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)>*/;
5652 var_coltype = var97;
5653 var98 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5654 var_variables = var98;
5655 if (var_variables == NULL) {
5656 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 872);
5657 exit(1);
5658 } else {
5659 var99 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable]>*/;
5660 }
5661 var100 = 1;
5662 { /* Inline kernel#Int#!= (var99,var100) */
5663 var103 = var99 == var100;
5664 var104 = !var103;
5665 var101 = var104;
5666 goto RET_LABEL102;
5667 RET_LABEL102:(void)0;
5668 }
5669 if (var101){
5670 if (varonce105) {
5671 var106 = varonce105;
5672 } else {
5673 var107 = "Type Error: Expected one variable";
5674 var108 = 33;
5675 var109 = string__NativeString__to_s_with_length(var107, var108);
5676 var106 = var109;
5677 varonce105 = var106;
5678 }
5679 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var106) /* error on <var_v:TypeVisitor>*/;
5680 } else {
5681 if (var_variables == NULL) {
5682 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 875);
5683 exit(1);
5684 } else {
5685 var110 = ((val* (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__first]))(var_variables) /* first on <var_variables:nullable Array[Variable]>*/;
5686 }
5687 var111 = ((val* (*)(val*))(var_coltype->class->vft[COLOR_model__MClassType__arguments]))(var_coltype) /* arguments on <var_coltype:MClassType>*/;
5688 var112 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_collection__Collection__first]))(var111) /* first on <var111:Array[MType]>*/;
5689 ((void (*)(val*, val*))(var110->class->vft[COLOR_typing__Variable__declared_type_61d]))(var110, var112) /* declared_type= on <var110:nullable Object(Variable)>*/;
5690 }
5691 var113 = 1;
5692 var_is_col = var113;
5693 } else {
5694 }
5695 var115 = NULL;
5696 if (var_mapit_cla == NULL) {
5697 var116 = 0; /* is null */
5698 } else {
5699 var116 = 1; /* arg is null and recv is not */
5700 }
5701 var_117 = var116;
5702 if (var116){
5703 var118 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5704 var119 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5705 var120 = ((val* (*)(val*))(var119->class->vft[COLOR_model__MType__as_nullable]))(var119) /* as_nullable on <var119:MClassType>*/;
5706 var121 = NEW_array__Array(&type_array__Arraymodel__MType);
5707 { /* var121 = array_instance Array[MType] */
5708 var122 = 2;
5709 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraymodel__MType);
5710 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var118;
5711 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var120;
5712 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[MType]>*/;
5713 CHECK_NEW_array__Array(var121);
5714 }
5715 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)>*/;
5716 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>*/;
5717 var114 = var125;
5718 } else {
5719 var114 = var_117;
5720 }
5721 if (var114){
5722 var126 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5723 var127 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5724 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)>*/;
5725 var_coltype129 = var128;
5726 var130 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5727 var_variables131 = var130;
5728 if (var_variables131 == NULL) {
5729 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 884);
5730 exit(1);
5731 } else {
5732 var132 = ((long (*)(val*))(var_variables131->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables131) /* length on <var_variables131:nullable Array[Variable]>*/;
5733 }
5734 var133 = 2;
5735 { /* Inline kernel#Int#!= (var132,var133) */
5736 var136 = var132 == var133;
5737 var137 = !var136;
5738 var134 = var137;
5739 goto RET_LABEL135;
5740 RET_LABEL135:(void)0;
5741 }
5742 if (var134){
5743 if (varonce138) {
5744 var139 = varonce138;
5745 } else {
5746 var140 = "Type Error: Expected two variables";
5747 var141 = 34;
5748 var142 = string__NativeString__to_s_with_length(var140, var141);
5749 var139 = var142;
5750 varonce138 = var139;
5751 }
5752 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var139) /* error on <var_v:TypeVisitor>*/;
5753 } else {
5754 var143 = 0;
5755 if (var_variables131 == NULL) {
5756 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 887);
5757 exit(1);
5758 } else {
5759 var144 = ((val* (*)(val*, long))(var_variables131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables131, var143) /* [] on <var_variables131:nullable Array[Variable]>*/;
5760 }
5761 var145 = ((val* (*)(val*))(var_coltype129->class->vft[COLOR_model__MClassType__arguments]))(var_coltype129) /* arguments on <var_coltype129:MClassType>*/;
5762 var146 = 0;
5763 var147 = ((val* (*)(val*, long))(var145->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var145, var146) /* [] on <var145:Array[MType]>*/;
5764 ((void (*)(val*, val*))(var144->class->vft[COLOR_typing__Variable__declared_type_61d]))(var144, var147) /* declared_type= on <var144:nullable Object(Variable)>*/;
5765 var148 = 1;
5766 if (var_variables131 == NULL) {
5767 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 888);
5768 exit(1);
5769 } else {
5770 var149 = ((val* (*)(val*, long))(var_variables131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables131, var148) /* [] on <var_variables131:nullable Array[Variable]>*/;
5771 }
5772 var150 = ((val* (*)(val*))(var_coltype129->class->vft[COLOR_model__MClassType__arguments]))(var_coltype129) /* arguments on <var_coltype129:MClassType>*/;
5773 var151 = 1;
5774 var152 = ((val* (*)(val*, long))(var150->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var150, var151) /* [] on <var150:Array[MType]>*/;
5775 ((void (*)(val*, val*))(var149->class->vft[COLOR_typing__Variable__declared_type_61d]))(var149, var152) /* declared_type= on <var149:nullable Object(Variable)>*/;
5776 }
5777 var153 = 1;
5778 var_is_map = var153;
5779 } else {
5780 }
5781 var155 = !var_is_col;
5782 var_156 = var155;
5783 if (var155){
5784 var157 = !var_is_map;
5785 var154 = var157;
5786 } else {
5787 var154 = var_156;
5788 }
5789 if (var154){
5790 if (varonce158) {
5791 var159 = varonce158;
5792 } else {
5793 var160 = "Type Error: Expected method \'iterator\' to return an Iterator of MapIterator type";
5794 var161 = 80;
5795 var162 = string__NativeString__to_s_with_length(var160, var161);
5796 var159 = var162;
5797 varonce158 = var159;
5798 }
5799 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var159) /* error on <var_v:TypeVisitor>*/;
5800 goto RET_LABEL;
5801 } else {
5802 }
5803 var163 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5804 if (var163){
5805 var164 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5806 var_mtype = var164;
5807 } else {
5808 }
5809 /* <var_mtype:MType> isa MClassType */
5810 cltype = type_model__MClassType.color;
5811 idtype = type_model__MClassType.id;
5812 if(cltype >= var_mtype->type->table_size) {
5813 var165 = 0;
5814 } else {
5815 var165 = var_mtype->type->type_table[cltype] == idtype;
5816 }
5817 if (!var165) {
5818 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 901);
5819 exit(1);
5820 }
5821 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__coltype_61d]))(self, var_mtype) /* coltype= on <self:AForExpr>*/;
5822 if (varonce166) {
5823 var167 = varonce166;
5824 } else {
5825 var168 = "is_ok";
5826 var169 = 5;
5827 var170 = string__NativeString__to_s_with_length(var168, var169);
5828 var167 = var170;
5829 varonce166 = var167;
5830 }
5831 var171 = 0;
5832 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>*/;
5833 var_ikdef = var172;
5834 var173 = NULL;
5835 if (var_ikdef == NULL) {
5836 var174 = 1; /* is null */
5837 } else {
5838 var174 = 0; /* arg is null but recv is not */
5839 }
5840 if (var174){
5841 if (varonce175) {
5842 var176 = varonce175;
5843 } else {
5844 var177 = "Type Error: Expected method \'is_ok\' in Iterator type ";
5845 var178 = 53;
5846 var179 = string__NativeString__to_s_with_length(var177, var178);
5847 var176 = var179;
5848 varonce175 = var176;
5849 }
5850 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
5851 { /* var180 = array_instance Array[Object] */
5852 var181 = 2;
5853 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
5854 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var176;
5855 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var_ittype;
5856 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
5857 CHECK_NEW_array__Array(var180);
5858 }
5859 var183 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
5860 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var183) /* error on <var_v:TypeVisitor>*/;
5861 goto RET_LABEL;
5862 } else {
5863 }
5864 var184 = ((val* (*)(val*))(var_ikdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_ikdef) /* mproperty on <var_ikdef:nullable CallSite(CallSite)>*/;
5865 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_is_ok_61d]))(self, var184) /* method_is_ok= on <self:AForExpr>*/;
5866 if (varonce185) {
5867 var186 = varonce185;
5868 } else {
5869 var187 = "item";
5870 var188 = 4;
5871 var189 = string__NativeString__to_s_with_length(var187, var188);
5872 var186 = var189;
5873 varonce185 = var186;
5874 }
5875 var190 = 0;
5876 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>*/;
5877 var_itemdef = var191;
5878 var192 = NULL;
5879 if (var_itemdef == NULL) {
5880 var193 = 1; /* is null */
5881 } else {
5882 var193 = 0; /* arg is null but recv is not */
5883 }
5884 if (var193){
5885 if (varonce194) {
5886 var195 = varonce194;
5887 } else {
5888 var196 = "Type Error: Expected method \'item\' in Iterator type ";
5889 var197 = 52;
5890 var198 = string__NativeString__to_s_with_length(var196, var197);
5891 var195 = var198;
5892 varonce194 = var195;
5893 }
5894 var199 = NEW_array__Array(&type_array__Arraykernel__Object);
5895 { /* var199 = array_instance Array[Object] */
5896 var200 = 2;
5897 var201 = NEW_array__NativeArray(var200, &type_array__NativeArraykernel__Object);
5898 ((struct instance_array__NativeArray*)var201)->values[0] = (val*) var195;
5899 ((struct instance_array__NativeArray*)var201)->values[1] = (val*) var_ittype;
5900 ((void (*)(val*, val*, long))(var199->class->vft[COLOR_array__Array__with_native]))(var199, var201, var200) /* with_native on <var199:Array[Object]>*/;
5901 CHECK_NEW_array__Array(var199);
5902 }
5903 var202 = ((val* (*)(val*))(var199->class->vft[COLOR_string__Object__to_s]))(var199) /* to_s on <var199:Array[Object]>*/;
5904 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var202) /* error on <var_v:TypeVisitor>*/;
5905 goto RET_LABEL;
5906 } else {
5907 }
5908 var203 = ((val* (*)(val*))(var_itemdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itemdef) /* mproperty on <var_itemdef:nullable CallSite(CallSite)>*/;
5909 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_item_61d]))(self, var203) /* method_item= on <self:AForExpr>*/;
5910 if (varonce204) {
5911 var205 = varonce204;
5912 } else {
5913 var206 = "next";
5914 var207 = 4;
5915 var208 = string__NativeString__to_s_with_length(var206, var207);
5916 var205 = var208;
5917 varonce204 = var205;
5918 }
5919 var209 = 0;
5920 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>*/;
5921 var_nextdef = var210;
5922 var211 = NULL;
5923 if (var_nextdef == NULL) {
5924 var212 = 1; /* is null */
5925 } else {
5926 var212 = 0; /* arg is null but recv is not */
5927 }
5928 if (var212){
5929 if (varonce213) {
5930 var214 = varonce213;
5931 } else {
5932 var215 = "Type Error: Expected method \'next\' in Iterator type ";
5933 var216 = 52;
5934 var217 = string__NativeString__to_s_with_length(var215, var216);
5935 var214 = var217;
5936 varonce213 = var214;
5937 }
5938 var218 = NEW_array__Array(&type_array__Arraykernel__Object);
5939 { /* var218 = array_instance Array[Object] */
5940 var219 = 2;
5941 var220 = NEW_array__NativeArray(var219, &type_array__NativeArraykernel__Object);
5942 ((struct instance_array__NativeArray*)var220)->values[0] = (val*) var214;
5943 ((struct instance_array__NativeArray*)var220)->values[1] = (val*) var_ittype;
5944 ((void (*)(val*, val*, long))(var218->class->vft[COLOR_array__Array__with_native]))(var218, var220, var219) /* with_native on <var218:Array[Object]>*/;
5945 CHECK_NEW_array__Array(var218);
5946 }
5947 var221 = ((val* (*)(val*))(var218->class->vft[COLOR_string__Object__to_s]))(var218) /* to_s on <var218:Array[Object]>*/;
5948 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var221) /* error on <var_v:TypeVisitor>*/;
5949 goto RET_LABEL;
5950 } else {
5951 }
5952 var222 = ((val* (*)(val*))(var_nextdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_nextdef) /* mproperty on <var_nextdef:nullable CallSite(CallSite)>*/;
5953 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_next_61d]))(self, var222) /* method_next= on <self:AForExpr>*/;
5954 if (var_is_map){
5955 if (varonce223) {
5956 var224 = varonce223;
5957 } else {
5958 var225 = "key";
5959 var226 = 3;
5960 var227 = string__NativeString__to_s_with_length(var225, var226);
5961 var224 = var227;
5962 varonce223 = var224;
5963 }
5964 var228 = 0;
5965 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>*/;
5966 var_keydef = var229;
5967 var230 = NULL;
5968 if (var_keydef == NULL) {
5969 var231 = 1; /* is null */
5970 } else {
5971 var231 = 0; /* arg is null but recv is not */
5972 }
5973 if (var231){
5974 if (varonce232) {
5975 var233 = varonce232;
5976 } else {
5977 var234 = "Type Error: Expected method \'key\' in Iterator type ";
5978 var235 = 51;
5979 var236 = string__NativeString__to_s_with_length(var234, var235);
5980 var233 = var236;
5981 varonce232 = var233;
5982 }
5983 var237 = NEW_array__Array(&type_array__Arraykernel__Object);
5984 { /* var237 = array_instance Array[Object] */
5985 var238 = 2;
5986 var239 = NEW_array__NativeArray(var238, &type_array__NativeArraykernel__Object);
5987 ((struct instance_array__NativeArray*)var239)->values[0] = (val*) var233;
5988 ((struct instance_array__NativeArray*)var239)->values[1] = (val*) var_ittype;
5989 ((void (*)(val*, val*, long))(var237->class->vft[COLOR_array__Array__with_native]))(var237, var239, var238) /* with_native on <var237:Array[Object]>*/;
5990 CHECK_NEW_array__Array(var237);
5991 }
5992 var240 = ((val* (*)(val*))(var237->class->vft[COLOR_string__Object__to_s]))(var237) /* to_s on <var237:Array[Object]>*/;
5993 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var240) /* error on <var_v:TypeVisitor>*/;
5994 goto RET_LABEL;
5995 } else {
5996 }
5997 var241 = ((val* (*)(val*))(var_keydef->class->vft[COLOR_typing__CallSite__mproperty]))(var_keydef) /* mproperty on <var_keydef:nullable CallSite(CallSite)>*/;
5998 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_key_61d]))(self, var241) /* method_key= on <self:AForExpr>*/;
5999 } else {
6000 }
6001 RET_LABEL:;
6002 }
6003 /* method typing#AForExpr#do_type_iterator for (self: Object, TypeVisitor, MType) */
6004 void VIRTUAL_typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
6005 typing__AForExpr__do_type_iterator(self, p0, p1);
6006 RET_LABEL:;
6007 }
6008 /* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */
6009 void typing__AForExpr__accept_typing(val* self, val* p0) {
6010 val* var_v /* var v: TypeVisitor */;
6011 val* var /* : AExpr */;
6012 val* var1 /* : nullable MType */;
6013 val* var_mtype /* var mtype: nullable MType */;
6014 val* var2 /* : null */;
6015 short int var3 /* : Bool */;
6016 val* var4 /* : nullable AExpr */;
6017 short int var5 /* : Bool */;
6018 var_v = p0;
6019 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
6020 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6021 var_mtype = var1;
6022 var2 = NULL;
6023 if (var_mtype == NULL) {
6024 var3 = 1; /* is null */
6025 } else {
6026 var3 = 0; /* arg is null but recv is not */
6027 }
6028 if (var3){
6029 goto RET_LABEL;
6030 } else {
6031 }
6032 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__AForExpr__do_type_iterator]))(self, var_v, var_mtype) /* do_type_iterator on <self:AForExpr>*/;
6033 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
6034 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var4) /* visit_stmt on <var_v:TypeVisitor>*/;
6035 var5 = 1;
6036 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var5) /* is_typed= on <self:AForExpr>*/;
6037 RET_LABEL:;
6038 }
6039 /* method typing#AForExpr#accept_typing for (self: Object, TypeVisitor) */
6040 void VIRTUAL_typing__AForExpr__accept_typing(val* self, val* p0) {
6041 typing__AForExpr__accept_typing(self, p0);
6042 RET_LABEL:;
6043 }
6044 /* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */
6045 void typing__AAssertExpr__accept_typing(val* self, val* p0) {
6046 val* var_v /* var v: TypeVisitor */;
6047 val* var /* : AExpr */;
6048 val* var1 /* : nullable MType */;
6049 val* var2 /* : nullable AExpr */;
6050 short int var3 /* : Bool */;
6051 var_v = p0;
6052 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on <self:AAssertExpr>*/;
6053 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6054 var1;
6055 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on <self:AAssertExpr>*/;
6056 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
6057 var3 = 1;
6058 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAssertExpr>*/;
6059 RET_LABEL:;
6060 }
6061 /* method typing#AAssertExpr#accept_typing for (self: Object, TypeVisitor) */
6062 void VIRTUAL_typing__AAssertExpr__accept_typing(val* self, val* p0) {
6063 typing__AAssertExpr__accept_typing(self, p0);
6064 RET_LABEL:;
6065 }
6066 /* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */
6067 void typing__AOrExpr__accept_typing(val* self, val* p0) {
6068 val* var_v /* var v: TypeVisitor */;
6069 val* var /* : AExpr */;
6070 val* var1 /* : nullable MType */;
6071 val* var2 /* : AExpr */;
6072 val* var3 /* : nullable MType */;
6073 val* var4 /* : nullable MType */;
6074 var_v = p0;
6075 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
6076 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6077 var1;
6078 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
6079 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6080 var3;
6081 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6082 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AOrExpr>*/;
6083 RET_LABEL:;
6084 }
6085 /* method typing#AOrExpr#accept_typing for (self: Object, TypeVisitor) */
6086 void VIRTUAL_typing__AOrExpr__accept_typing(val* self, val* p0) {
6087 typing__AOrExpr__accept_typing(self, p0);
6088 RET_LABEL:;
6089 }
6090 /* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */
6091 void typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6092 val* var_v /* var v: TypeVisitor */;
6093 val* var /* : AExpr */;
6094 val* var1 /* : nullable MType */;
6095 val* var2 /* : AExpr */;
6096 val* var3 /* : nullable MType */;
6097 val* var4 /* : nullable MType */;
6098 var_v = p0;
6099 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on <self:AImpliesExpr>*/;
6100 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6101 var1;
6102 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on <self:AImpliesExpr>*/;
6103 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6104 var3;
6105 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6106 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AImpliesExpr>*/;
6107 RET_LABEL:;
6108 }
6109 /* method typing#AImpliesExpr#accept_typing for (self: Object, TypeVisitor) */
6110 void VIRTUAL_typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6111 typing__AImpliesExpr__accept_typing(self, p0);
6112 RET_LABEL:;
6113 }
6114 /* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */
6115 void typing__AAndExpr__accept_typing(val* self, val* p0) {
6116 val* var_v /* var v: TypeVisitor */;
6117 val* var /* : AExpr */;
6118 val* var1 /* : nullable MType */;
6119 val* var2 /* : AExpr */;
6120 val* var3 /* : nullable MType */;
6121 val* var4 /* : nullable MType */;
6122 var_v = p0;
6123 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
6124 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6125 var1;
6126 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
6127 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6128 var3;
6129 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6130 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AAndExpr>*/;
6131 RET_LABEL:;
6132 }
6133 /* method typing#AAndExpr#accept_typing for (self: Object, TypeVisitor) */
6134 void VIRTUAL_typing__AAndExpr__accept_typing(val* self, val* p0) {
6135 typing__AAndExpr__accept_typing(self, p0);
6136 RET_LABEL:;
6137 }
6138 /* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */
6139 void typing__ANotExpr__accept_typing(val* self, val* p0) {
6140 val* var_v /* var v: TypeVisitor */;
6141 val* var /* : AExpr */;
6142 val* var1 /* : nullable MType */;
6143 val* var2 /* : nullable MType */;
6144 var_v = p0;
6145 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on <self:ANotExpr>*/;
6146 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6147 var1;
6148 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6149 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANotExpr>*/;
6150 RET_LABEL:;
6151 }
6152 /* method typing#ANotExpr#accept_typing for (self: Object, TypeVisitor) */
6153 void VIRTUAL_typing__ANotExpr__accept_typing(val* self, val* p0) {
6154 typing__ANotExpr__accept_typing(self, p0);
6155 RET_LABEL:;
6156 }
6157 /* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */
6158 void typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6159 val* var_v /* var v: TypeVisitor */;
6160 val* var /* : AExpr */;
6161 val* var1 /* : nullable MType */;
6162 val* var_t1 /* var t1: nullable MType */;
6163 val* var2 /* : AExpr */;
6164 val* var3 /* : nullable MType */;
6165 val* var_t2 /* var t2: nullable MType */;
6166 short int var4 /* : Bool */;
6167 val* var5 /* : null */;
6168 short int var6 /* : Bool */;
6169 short int var_ /* var : Bool */;
6170 val* var7 /* : null */;
6171 short int var8 /* : Bool */;
6172 short int var9 /* : Bool */;
6173 int cltype;
6174 int idtype;
6175 val* var10 /* : MType */;
6176 val* var11 /* : Array[MType] */;
6177 long var12 /* : Int */;
6178 val* var13 /* : NativeArray[MType] */;
6179 val* var14 /* : nullable MType */;
6180 val* var_t /* var t: nullable MType */;
6181 val* var15 /* : null */;
6182 short int var16 /* : Bool */;
6183 val* var17 /* : MModule */;
6184 val* var18 /* : MClassType */;
6185 short int var19 /* : Bool */;
6186 int cltype20;
6187 int idtype21;
6188 val* var22 /* : MType */;
6189 var_v = p0;
6190 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr]))(self) /* n_expr on <self:AOrElseExpr>*/;
6191 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6192 var_t1 = var1;
6193 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr2]))(self) /* n_expr2 on <self:AOrElseExpr>*/;
6194 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
6195 var_t2 = var3;
6196 var5 = NULL;
6197 if (var_t1 == NULL) {
6198 var6 = 1; /* is null */
6199 } else {
6200 var6 = 0; /* arg is null but recv is not */
6201 }
6202 var_ = var6;
6203 if (var6){
6204 var4 = var_;
6205 } else {
6206 var7 = NULL;
6207 if (var_t2 == NULL) {
6208 var8 = 1; /* is null */
6209 } else {
6210 var8 = 0; /* arg is null but recv is not */
6211 }
6212 var4 = var8;
6213 }
6214 if (var4){
6215 goto RET_LABEL;
6216 } else {
6217 }
6218 /* <var_t1:nullable MType(MType)> isa MNullableType */
6219 cltype = type_model__MNullableType.color;
6220 idtype = type_model__MNullableType.id;
6221 if(cltype >= var_t1->type->table_size) {
6222 var9 = 0;
6223 } else {
6224 var9 = var_t1->type->type_table[cltype] == idtype;
6225 }
6226 if (var9){
6227 var10 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:nullable MType(MNullableType)>*/;
6228 var_t1 = var10;
6229 } else {
6230 }
6231 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
6232 { /* var11 = array_instance Array[MType] */
6233 var12 = 2;
6234 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
6235 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
6236 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
6237 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
6238 CHECK_NEW_array__Array(var11);
6239 }
6240 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
6241 var_t = var14;
6242 var15 = NULL;
6243 if (var_t == NULL) {
6244 var16 = 1; /* is null */
6245 } else {
6246 var16 = 0; /* arg is null but recv is not */
6247 }
6248 if (var16){
6249 var17 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6250 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MModule__object_type]))(var17) /* object_type on <var17:MModule>*/;
6251 var_t = var18;
6252 /* <var_t2:nullable MType(MType)> isa MNullableType */
6253 cltype20 = type_model__MNullableType.color;
6254 idtype21 = type_model__MNullableType.id;
6255 if(cltype20 >= var_t2->type->table_size) {
6256 var19 = 0;
6257 } else {
6258 var19 = var_t2->type->type_table[cltype20] == idtype21;
6259 }
6260 if (var19){
6261 var22 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MType__as_nullable]))(var_t) /* as_nullable on <var_t:nullable MType(MClassType)>*/;
6262 var_t = var22;
6263 } else {
6264 }
6265 } else {
6266 }
6267 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AOrElseExpr>*/;
6268 RET_LABEL:;
6269 }
6270 /* method typing#AOrElseExpr#accept_typing for (self: Object, TypeVisitor) */
6271 void VIRTUAL_typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6272 typing__AOrElseExpr__accept_typing(self, p0);
6273 RET_LABEL:;
6274 }
6275 /* method typing#AEeExpr#accept_typing for (self: AEeExpr, TypeVisitor) */
6276 void typing__AEeExpr__accept_typing(val* self, val* p0) {
6277 val* var_v /* var v: TypeVisitor */;
6278 val* var /* : AExpr */;
6279 val* var1 /* : nullable MType */;
6280 val* var2 /* : AExpr */;
6281 val* var3 /* : nullable MType */;
6282 val* var4 /* : nullable MType */;
6283 var_v = p0;
6284 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AEeExpr__n_expr]))(self) /* n_expr on <self:AEeExpr>*/;
6285 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6286 var1;
6287 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AEeExpr__n_expr2]))(self) /* n_expr2 on <self:AEeExpr>*/;
6288 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
6289 var3;
6290 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6291 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AEeExpr>*/;
6292 RET_LABEL:;
6293 }
6294 /* method typing#AEeExpr#accept_typing for (self: Object, TypeVisitor) */
6295 void VIRTUAL_typing__AEeExpr__accept_typing(val* self, val* p0) {
6296 typing__AEeExpr__accept_typing(self, p0);
6297 RET_LABEL:;
6298 }
6299 /* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */
6300 void typing__ATrueExpr__accept_typing(val* self, val* p0) {
6301 val* var_v /* var v: TypeVisitor */;
6302 val* var /* : nullable MType */;
6303 var_v = p0;
6304 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6305 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:ATrueExpr>*/;
6306 RET_LABEL:;
6307 }
6308 /* method typing#ATrueExpr#accept_typing for (self: Object, TypeVisitor) */
6309 void VIRTUAL_typing__ATrueExpr__accept_typing(val* self, val* p0) {
6310 typing__ATrueExpr__accept_typing(self, p0);
6311 RET_LABEL:;
6312 }
6313 /* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */
6314 void typing__AFalseExpr__accept_typing(val* self, val* p0) {
6315 val* var_v /* var v: TypeVisitor */;
6316 val* var /* : nullable MType */;
6317 var_v = p0;
6318 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6319 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AFalseExpr>*/;
6320 RET_LABEL:;
6321 }
6322 /* method typing#AFalseExpr#accept_typing for (self: Object, TypeVisitor) */
6323 void VIRTUAL_typing__AFalseExpr__accept_typing(val* self, val* p0) {
6324 typing__AFalseExpr__accept_typing(self, p0);
6325 RET_LABEL:;
6326 }
6327 /* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */
6328 void typing__AIntExpr__accept_typing(val* self, val* p0) {
6329 val* var_v /* var v: TypeVisitor */;
6330 static val* varonce;
6331 val* var /* : String */;
6332 char* var1 /* : NativeString */;
6333 long var2 /* : Int */;
6334 val* var3 /* : String */;
6335 val* var4 /* : nullable MClass */;
6336 val* var_mclass /* var mclass: nullable MClass */;
6337 val* var5 /* : null */;
6338 short int var6 /* : Bool */;
6339 val* var7 /* : MClassType */;
6340 var_v = p0;
6341 if (varonce) {
6342 var = varonce;
6343 } else {
6344 var1 = "Int";
6345 var2 = 3;
6346 var3 = string__NativeString__to_s_with_length(var1, var2);
6347 var = var3;
6348 varonce = var;
6349 }
6350 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6351 var_mclass = var4;
6352 var5 = NULL;
6353 if (var_mclass == NULL) {
6354 var6 = 1; /* is null */
6355 } else {
6356 var6 = 0; /* arg is null but recv is not */
6357 }
6358 if (var6){
6359 goto RET_LABEL;
6360 } else {
6361 }
6362 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6363 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AIntExpr>*/;
6364 RET_LABEL:;
6365 }
6366 /* method typing#AIntExpr#accept_typing for (self: Object, TypeVisitor) */
6367 void VIRTUAL_typing__AIntExpr__accept_typing(val* self, val* p0) {
6368 typing__AIntExpr__accept_typing(self, p0);
6369 RET_LABEL:;
6370 }
6371 /* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */
6372 void typing__AFloatExpr__accept_typing(val* self, val* p0) {
6373 val* var_v /* var v: TypeVisitor */;
6374 static val* varonce;
6375 val* var /* : String */;
6376 char* var1 /* : NativeString */;
6377 long var2 /* : Int */;
6378 val* var3 /* : String */;
6379 val* var4 /* : nullable MClass */;
6380 val* var_mclass /* var mclass: nullable MClass */;
6381 val* var5 /* : null */;
6382 short int var6 /* : Bool */;
6383 val* var7 /* : MClassType */;
6384 var_v = p0;
6385 if (varonce) {
6386 var = varonce;
6387 } else {
6388 var1 = "Float";
6389 var2 = 5;
6390 var3 = string__NativeString__to_s_with_length(var1, var2);
6391 var = var3;
6392 varonce = var;
6393 }
6394 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6395 var_mclass = var4;
6396 var5 = NULL;
6397 if (var_mclass == NULL) {
6398 var6 = 1; /* is null */
6399 } else {
6400 var6 = 0; /* arg is null but recv is not */
6401 }
6402 if (var6){
6403 goto RET_LABEL;
6404 } else {
6405 }
6406 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6407 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AFloatExpr>*/;
6408 RET_LABEL:;
6409 }
6410 /* method typing#AFloatExpr#accept_typing for (self: Object, TypeVisitor) */
6411 void VIRTUAL_typing__AFloatExpr__accept_typing(val* self, val* p0) {
6412 typing__AFloatExpr__accept_typing(self, p0);
6413 RET_LABEL:;
6414 }
6415 /* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */
6416 void typing__ACharExpr__accept_typing(val* self, val* p0) {
6417 val* var_v /* var v: TypeVisitor */;
6418 static val* varonce;
6419 val* var /* : String */;
6420 char* var1 /* : NativeString */;
6421 long var2 /* : Int */;
6422 val* var3 /* : String */;
6423 val* var4 /* : nullable MClass */;
6424 val* var_mclass /* var mclass: nullable MClass */;
6425 val* var5 /* : null */;
6426 short int var6 /* : Bool */;
6427 val* var7 /* : MClassType */;
6428 var_v = p0;
6429 if (varonce) {
6430 var = varonce;
6431 } else {
6432 var1 = "Char";
6433 var2 = 4;
6434 var3 = string__NativeString__to_s_with_length(var1, var2);
6435 var = var3;
6436 varonce = var;
6437 }
6438 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6439 var_mclass = var4;
6440 var5 = NULL;
6441 if (var_mclass == NULL) {
6442 var6 = 1; /* is null */
6443 } else {
6444 var6 = 0; /* arg is null but recv is not */
6445 }
6446 if (var6){
6447 goto RET_LABEL;
6448 } else {
6449 }
6450 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6451 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ACharExpr>*/;
6452 RET_LABEL:;
6453 }
6454 /* method typing#ACharExpr#accept_typing for (self: Object, TypeVisitor) */
6455 void VIRTUAL_typing__ACharExpr__accept_typing(val* self, val* p0) {
6456 typing__ACharExpr__accept_typing(self, p0);
6457 RET_LABEL:;
6458 }
6459 /* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */
6460 void typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6461 val* var_v /* var v: TypeVisitor */;
6462 static val* varonce;
6463 val* var /* : String */;
6464 char* var1 /* : NativeString */;
6465 long var2 /* : Int */;
6466 val* var3 /* : String */;
6467 val* var4 /* : nullable MClass */;
6468 val* var_mclass /* var mclass: nullable MClass */;
6469 val* var5 /* : null */;
6470 short int var6 /* : Bool */;
6471 val* var7 /* : MClassType */;
6472 var_v = p0;
6473 if (varonce) {
6474 var = varonce;
6475 } else {
6476 var1 = "String";
6477 var2 = 6;
6478 var3 = string__NativeString__to_s_with_length(var1, var2);
6479 var = var3;
6480 varonce = var;
6481 }
6482 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6483 var_mclass = var4;
6484 var5 = NULL;
6485 if (var_mclass == NULL) {
6486 var6 = 1; /* is null */
6487 } else {
6488 var6 = 0; /* arg is null but recv is not */
6489 }
6490 if (var6){
6491 goto RET_LABEL;
6492 } else {
6493 }
6494 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6495 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AStringFormExpr>*/;
6496 RET_LABEL:;
6497 }
6498 /* method typing#AStringFormExpr#accept_typing for (self: Object, TypeVisitor) */
6499 void VIRTUAL_typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6500 typing__AStringFormExpr__accept_typing(self, p0);
6501 RET_LABEL:;
6502 }
6503 /* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */
6504 void typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6505 val* var_v /* var v: TypeVisitor */;
6506 static val* varonce;
6507 val* var /* : String */;
6508 char* var1 /* : NativeString */;
6509 long var2 /* : Int */;
6510 val* var3 /* : String */;
6511 val* var4 /* : nullable MClass */;
6512 val* var_mclass /* var mclass: nullable MClass */;
6513 val* var5 /* : null */;
6514 short int var6 /* : Bool */;
6515 val* var7 /* : MClassType */;
6516 val* var8 /* : ANodes[AExpr] */;
6517 val* var9 /* : Iterator[nullable Object] */;
6518 short int var10 /* : Bool */;
6519 val* var11 /* : nullable Object */;
6520 val* var_nexpr /* var nexpr: AExpr */;
6521 val* var12 /* : nullable MType */;
6522 val* var_t /* var t: nullable MType */;
6523 var_v = p0;
6524 if (varonce) {
6525 var = varonce;
6526 } else {
6527 var1 = "String";
6528 var2 = 6;
6529 var3 = string__NativeString__to_s_with_length(var1, var2);
6530 var = var3;
6531 varonce = var;
6532 }
6533 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6534 var_mclass = var4;
6535 var5 = NULL;
6536 if (var_mclass == NULL) {
6537 var6 = 1; /* is null */
6538 } else {
6539 var6 = 0; /* arg is null but recv is not */
6540 }
6541 if (var6){
6542 goto RET_LABEL;
6543 } else {
6544 }
6545 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6546 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ASuperstringExpr>*/;
6547 var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
6548 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:ANodes[AExpr]>*/;
6549 for(;;) {
6550 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
6551 if(!var10) break;
6552 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
6553 var_nexpr = var11;
6554 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
6555 var_t = var12;
6556 CONTINUE_label: (void)0;
6557 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
6558 }
6559 BREAK_label: (void)0;
6560 RET_LABEL:;
6561 }
6562 /* method typing#ASuperstringExpr#accept_typing for (self: Object, TypeVisitor) */
6563 void VIRTUAL_typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6564 typing__ASuperstringExpr__accept_typing(self, p0);
6565 RET_LABEL:;
6566 }
6567 /* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */
6568 void typing__AArrayExpr__accept_typing(val* self, val* p0) {
6569 val* var_v /* var v: TypeVisitor */;
6570 val* var /* : Array[nullable MType] */;
6571 val* var_mtypes /* var mtypes: Array[nullable MType] */;
6572 val* var1 /* : AExprs */;
6573 val* var2 /* : ANodes[AExpr] */;
6574 val* var3 /* : Iterator[nullable Object] */;
6575 short int var4 /* : Bool */;
6576 val* var5 /* : nullable Object */;
6577 val* var_e /* var e: AExpr */;
6578 val* var6 /* : nullable MType */;
6579 val* var_t /* var t: nullable MType */;
6580 val* var7 /* : null */;
6581 short int var8 /* : Bool */;
6582 val* var9 /* : nullable MType */;
6583 val* var_mtype /* var mtype: nullable MType */;
6584 val* var10 /* : null */;
6585 short int var11 /* : Bool */;
6586 static val* varonce;
6587 val* var12 /* : String */;
6588 char* var13 /* : NativeString */;
6589 long var14 /* : Int */;
6590 val* var15 /* : String */;
6591 static val* varonce16;
6592 val* var17 /* : String */;
6593 char* var18 /* : NativeString */;
6594 long var19 /* : Int */;
6595 val* var20 /* : String */;
6596 val* var21 /* : String */;
6597 val* var22 /* : Array[Object] */;
6598 long var23 /* : Int */;
6599 val* var24 /* : NativeArray[Object] */;
6600 val* var25 /* : String */;
6601 static val* varonce26;
6602 val* var27 /* : String */;
6603 char* var28 /* : NativeString */;
6604 long var29 /* : Int */;
6605 val* var30 /* : String */;
6606 val* var31 /* : nullable MClass */;
6607 val* var_mclass /* var mclass: nullable MClass */;
6608 val* var32 /* : null */;
6609 short int var33 /* : Bool */;
6610 val* var34 /* : Array[MType] */;
6611 long var35 /* : Int */;
6612 val* var36 /* : NativeArray[MType] */;
6613 val* var37 /* : MClassType */;
6614 var_v = p0;
6615 var = NEW_array__Array(&type_array__Arraynullable_model__MType);
6616 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[nullable MType]>*/;
6617 CHECK_NEW_array__Array(var);
6618 var_mtypes = var;
6619 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
6620 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var1) /* n_exprs on <var1:AExprs>*/;
6621 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:ANodes[AExpr]>*/;
6622 for(;;) {
6623 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6624 if(!var4) break;
6625 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
6626 var_e = var5;
6627 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_e) /* visit_expr on <var_v:TypeVisitor>*/;
6628 var_t = var6;
6629 var7 = NULL;
6630 if (var_t == NULL) {
6631 var8 = 1; /* is null */
6632 } else {
6633 var8 = 0; /* arg is null but recv is not */
6634 }
6635 if (var8){
6636 goto RET_LABEL;
6637 } else {
6638 }
6639 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var_t) /* add on <var_mtypes:Array[nullable MType]>*/;
6640 CONTINUE_label: (void)0;
6641 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
6642 }
6643 BREAK_label: (void)0;
6644 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>*/;
6645 var_mtype = var9;
6646 var10 = NULL;
6647 if (var_mtype == NULL) {
6648 var11 = 1; /* is null */
6649 } else {
6650 var11 = 0; /* arg is null but recv is not */
6651 }
6652 if (var11){
6653 if (varonce) {
6654 var12 = varonce;
6655 } else {
6656 var13 = "Type Error: ambiguous array type ";
6657 var14 = 33;
6658 var15 = string__NativeString__to_s_with_length(var13, var14);
6659 var12 = var15;
6660 varonce = var12;
6661 }
6662 if (varonce16) {
6663 var17 = varonce16;
6664 } else {
6665 var18 = " ";
6666 var19 = 1;
6667 var20 = string__NativeString__to_s_with_length(var18, var19);
6668 var17 = var20;
6669 varonce16 = var17;
6670 }
6671 var21 = ((val* (*)(val*, val*))(var_mtypes->class->vft[COLOR_string__Collection__join]))(var_mtypes, var17) /* join on <var_mtypes:Array[nullable MType]>*/;
6672 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
6673 { /* var22 = array_instance Array[Object] */
6674 var23 = 2;
6675 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
6676 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var12;
6677 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var21;
6678 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
6679 CHECK_NEW_array__Array(var22);
6680 }
6681 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
6682 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var25) /* error on <var_v:TypeVisitor>*/;
6683 goto RET_LABEL;
6684 } else {
6685 }
6686 if (varonce26) {
6687 var27 = varonce26;
6688 } else {
6689 var28 = "Array";
6690 var29 = 5;
6691 var30 = string__NativeString__to_s_with_length(var28, var29);
6692 var27 = var30;
6693 varonce26 = var27;
6694 }
6695 var31 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var27) /* get_mclass on <var_v:TypeVisitor>*/;
6696 var_mclass = var31;
6697 var32 = NULL;
6698 if (var_mclass == NULL) {
6699 var33 = 1; /* is null */
6700 } else {
6701 var33 = 0; /* arg is null but recv is not */
6702 }
6703 if (var33){
6704 goto RET_LABEL;
6705 } else {
6706 }
6707 var34 = NEW_array__Array(&type_array__Arraymodel__MType);
6708 { /* var34 = array_instance Array[MType] */
6709 var35 = 1;
6710 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraymodel__MType);
6711 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var_mtype;
6712 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[MType]>*/;
6713 CHECK_NEW_array__Array(var34);
6714 }
6715 var37 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var34) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6716 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var37) /* mtype= on <self:AArrayExpr>*/;
6717 RET_LABEL:;
6718 }
6719 /* method typing#AArrayExpr#accept_typing for (self: Object, TypeVisitor) */
6720 void VIRTUAL_typing__AArrayExpr__accept_typing(val* self, val* p0) {
6721 typing__AArrayExpr__accept_typing(self, p0);
6722 RET_LABEL:;
6723 }
6724 /* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */
6725 void typing__ARangeExpr__accept_typing(val* self, val* p0) {
6726 val* var_v /* var v: TypeVisitor */;
6727 static val* varonce;
6728 val* var /* : String */;
6729 char* var1 /* : NativeString */;
6730 long var2 /* : Int */;
6731 val* var3 /* : String */;
6732 val* var4 /* : nullable MClass */;
6733 val* var_discrete_class /* var discrete_class: nullable MClass */;
6734 val* var5 /* : null */;
6735 short int var6 /* : Bool */;
6736 val* var7 /* : MClassDef */;
6737 val* var8 /* : MClassType */;
6738 val* var_discrete_type /* var discrete_type: MClassType */;
6739 val* var9 /* : AExpr */;
6740 val* var10 /* : nullable MType */;
6741 val* var_t1 /* var t1: nullable MType */;
6742 val* var11 /* : AExpr */;
6743 val* var12 /* : nullable MType */;
6744 val* var_t2 /* var t2: nullable MType */;
6745 short int var13 /* : Bool */;
6746 val* var14 /* : null */;
6747 short int var15 /* : Bool */;
6748 short int var_ /* var : Bool */;
6749 val* var16 /* : null */;
6750 short int var17 /* : Bool */;
6751 static val* varonce18;
6752 val* var19 /* : String */;
6753 char* var20 /* : NativeString */;
6754 long var21 /* : Int */;
6755 val* var22 /* : String */;
6756 val* var23 /* : nullable MClass */;
6757 val* var_mclass /* var mclass: nullable MClass */;
6758 val* var24 /* : null */;
6759 short int var25 /* : Bool */;
6760 short int var26 /* : Bool */;
6761 val* var27 /* : Array[MType] */;
6762 long var28 /* : Int */;
6763 val* var29 /* : NativeArray[MType] */;
6764 val* var30 /* : MClassType */;
6765 short int var31 /* : Bool */;
6766 val* var32 /* : Array[MType] */;
6767 long var33 /* : Int */;
6768 val* var34 /* : NativeArray[MType] */;
6769 val* var35 /* : MClassType */;
6770 static val* varonce36;
6771 val* var37 /* : String */;
6772 char* var38 /* : NativeString */;
6773 long var39 /* : Int */;
6774 val* var40 /* : String */;
6775 static val* varonce41;
6776 val* var42 /* : String */;
6777 char* var43 /* : NativeString */;
6778 long var44 /* : Int */;
6779 val* var45 /* : String */;
6780 val* var46 /* : Array[Object] */;
6781 long var47 /* : Int */;
6782 val* var48 /* : NativeArray[Object] */;
6783 val* var49 /* : String */;
6784 var_v = p0;
6785 if (varonce) {
6786 var = varonce;
6787 } else {
6788 var1 = "Discrete";
6789 var2 = 8;
6790 var3 = string__NativeString__to_s_with_length(var1, var2);
6791 var = var3;
6792 varonce = var;
6793 }
6794 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6795 var_discrete_class = var4;
6796 var5 = NULL;
6797 if (var_discrete_class == NULL) {
6798 var6 = 1; /* is null */
6799 } else {
6800 var6 = 0; /* arg is null but recv is not */
6801 }
6802 if (var6){
6803 goto RET_LABEL;
6804 } else {
6805 }
6806 var7 = ((val* (*)(val*))(var_discrete_class->class->vft[COLOR_model__MClass__intro]))(var_discrete_class) /* intro on <var_discrete_class:nullable MClass(MClass)>*/;
6807 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__bound_mtype]))(var7) /* bound_mtype on <var7:MClassDef>*/;
6808 var_discrete_type = var8;
6809 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ARangeExpr>*/;
6810 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>*/;
6811 var_t1 = var10;
6812 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ARangeExpr>*/;
6813 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>*/;
6814 var_t2 = var12;
6815 var14 = NULL;
6816 if (var_t1 == NULL) {
6817 var15 = 1; /* is null */
6818 } else {
6819 var15 = 0; /* arg is null but recv is not */
6820 }
6821 var_ = var15;
6822 if (var15){
6823 var13 = var_;
6824 } else {
6825 var16 = NULL;
6826 if (var_t2 == NULL) {
6827 var17 = 1; /* is null */
6828 } else {
6829 var17 = 0; /* arg is null but recv is not */
6830 }
6831 var13 = var17;
6832 }
6833 if (var13){
6834 goto RET_LABEL;
6835 } else {
6836 }
6837 if (varonce18) {
6838 var19 = varonce18;
6839 } else {
6840 var20 = "Range";
6841 var21 = 5;
6842 var22 = string__NativeString__to_s_with_length(var20, var21);
6843 var19 = var22;
6844 varonce18 = var19;
6845 }
6846 var23 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var19) /* get_mclass on <var_v:TypeVisitor>*/;
6847 var_mclass = var23;
6848 var24 = NULL;
6849 if (var_mclass == NULL) {
6850 var25 = 1; /* is null */
6851 } else {
6852 var25 = 0; /* arg is null but recv is not */
6853 }
6854 if (var25){
6855 goto RET_LABEL;
6856 } else {
6857 }
6858 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>*/;
6859 if (var26){
6860 var27 = NEW_array__Array(&type_array__Arraymodel__MType);
6861 { /* var27 = array_instance Array[MType] */
6862 var28 = 1;
6863 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraymodel__MType);
6864 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var_t2;
6865 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[MType]>*/;
6866 CHECK_NEW_array__Array(var27);
6867 }
6868 var30 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var27) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6869 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var30) /* mtype= on <self:ARangeExpr>*/;
6870 } else {
6871 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>*/;
6872 if (var31){
6873 var32 = NEW_array__Array(&type_array__Arraymodel__MType);
6874 { /* var32 = array_instance Array[MType] */
6875 var33 = 1;
6876 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraymodel__MType);
6877 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var_t1;
6878 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[MType]>*/;
6879 CHECK_NEW_array__Array(var32);
6880 }
6881 var35 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var32) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6882 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var35) /* mtype= on <self:ARangeExpr>*/;
6883 } else {
6884 if (varonce36) {
6885 var37 = varonce36;
6886 } else {
6887 var38 = "Type Error: Cannot create range: ";
6888 var39 = 33;
6889 var40 = string__NativeString__to_s_with_length(var38, var39);
6890 var37 = var40;
6891 varonce36 = var37;
6892 }
6893 if (varonce41) {
6894 var42 = varonce41;
6895 } else {
6896 var43 = " vs ";
6897 var44 = 4;
6898 var45 = string__NativeString__to_s_with_length(var43, var44);
6899 var42 = var45;
6900 varonce41 = var42;
6901 }
6902 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
6903 { /* var46 = array_instance Array[Object] */
6904 var47 = 4;
6905 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
6906 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var37;
6907 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var_t1;
6908 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
6909 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var_t2;
6910 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
6911 CHECK_NEW_array__Array(var46);
6912 }
6913 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
6914 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var49) /* error on <var_v:TypeVisitor>*/;
6915 }
6916 }
6917 RET_LABEL:;
6918 }
6919 /* method typing#ARangeExpr#accept_typing for (self: Object, TypeVisitor) */
6920 void VIRTUAL_typing__ARangeExpr__accept_typing(val* self, val* p0) {
6921 typing__ARangeExpr__accept_typing(self, p0);
6922 RET_LABEL:;
6923 }
6924 /* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */
6925 void typing__ANullExpr__accept_typing(val* self, val* p0) {
6926 val* var_v /* var v: TypeVisitor */;
6927 val* var /* : MModule */;
6928 val* var1 /* : Model */;
6929 val* var2 /* : MNullType */;
6930 var_v = p0;
6931 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6932 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model_base__MModule__model]))(var) /* model on <var:MModule>*/;
6933 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__Model__null_type]))(var1) /* null_type on <var1:Model>*/;
6934 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANullExpr>*/;
6935 RET_LABEL:;
6936 }
6937 /* method typing#ANullExpr#accept_typing for (self: Object, TypeVisitor) */
6938 void VIRTUAL_typing__ANullExpr__accept_typing(val* self, val* p0) {
6939 typing__ANullExpr__accept_typing(self, p0);
6940 RET_LABEL:;
6941 }
6942 /* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */
6943 val* typing__AIsaExpr__cast_type(val* self) {
6944 val* var /* : nullable MType */;
6945 val* var1 /* : nullable MType */;
6946 var1 = self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val; /* @cast_type on <self:AIsaExpr> */
6947 var = var1;
6948 RET_LABEL:;
6949 return var;
6950 }
6951 /* method typing#AIsaExpr#cast_type for (self: Object): nullable MType */
6952 val* VIRTUAL_typing__AIsaExpr__cast_type(val* self) {
6953 val* var /* : nullable MType */;
6954 val* var1 /* : nullable MType */;
6955 var1 = typing__AIsaExpr__cast_type(self);
6956 var = var1;
6957 RET_LABEL:;
6958 return var;
6959 }
6960 /* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */
6961 void typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6962 self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val = p0; /* @cast_type on <self:AIsaExpr> */
6963 RET_LABEL:;
6964 }
6965 /* method typing#AIsaExpr#cast_type= for (self: Object, nullable MType) */
6966 void VIRTUAL_typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6967 typing__AIsaExpr__cast_type_61d(self, p0);
6968 RET_LABEL:;
6969 }
6970 /* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */
6971 void typing__AIsaExpr__accept_typing(val* self, val* p0) {
6972 val* var_v /* var v: TypeVisitor */;
6973 val* var /* : AExpr */;
6974 val* var1 /* : AType */;
6975 val* var2 /* : nullable MType */;
6976 val* var_mtype /* var mtype: nullable MType */;
6977 val* var3 /* : AExpr */;
6978 val* var4 /* : nullable Variable */;
6979 val* var_variable /* var variable: nullable Variable */;
6980 val* var5 /* : null */;
6981 short int var6 /* : Bool */;
6982 val* var7 /* : AExpr */;
6983 val* var8 /* : nullable MType */;
6984 val* var_orig /* var orig: nullable MType */;
6985 val* var9 /* : String */;
6986 val* var10 /* : null */;
6987 short int var11 /* : Bool */;
6988 val* var12 /* : String */;
6989 static val* varonce;
6990 val* var13 /* : String */;
6991 char* var14 /* : NativeString */;
6992 long var15 /* : Int */;
6993 val* var16 /* : String */;
6994 val* var_from /* var from: String */;
6995 val* var17 /* : String */;
6996 val* var18 /* : null */;
6997 short int var19 /* : Bool */;
6998 val* var20 /* : String */;
6999 static val* varonce21;
7000 val* var22 /* : String */;
7001 char* var23 /* : NativeString */;
7002 long var24 /* : Int */;
7003 val* var25 /* : String */;
7004 val* var_to /* var to: String */;
7005 val* var26 /* : nullable FlowContext */;
7006 val* var27 /* : FlowContext */;
7007 val* var28 /* : nullable MType */;
7008 var_v = p0;
7009 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7010 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_type]))(self) /* n_type on <self:AIsaExpr>*/;
7011 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>*/;
7012 var_mtype = var2;
7013 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AIsaExpr__cast_type_61d]))(self, var_mtype) /* cast_type= on <self:AIsaExpr>*/;
7014 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7015 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__its_variable]))(var3) /* its_variable on <var3:AExpr>*/;
7016 var_variable = var4;
7017 var5 = NULL;
7018 if (var_variable == NULL) {
7019 var6 = 0; /* is null */
7020 } else {
7021 var6 = 1; /* arg is null and recv is not */
7022 }
7023 if (var6){
7024 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7025 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_typing__AExpr__mtype]))(var7) /* mtype on <var7:AExpr>*/;
7026 var_orig = var8;
7027 var10 = NULL;
7028 if (var_orig == NULL) {
7029 var11 = 0; /* is null */
7030 } else {
7031 var11 = 1; /* arg is null and recv is not */
7032 }
7033 if (var11){
7034 var12 = ((val* (*)(val*))(var_orig->class->vft[COLOR_string__Object__to_s]))(var_orig) /* to_s on <var_orig:nullable MType(MType)>*/;
7035 var9 = var12;
7036 } else {
7037 if (varonce) {
7038 var13 = varonce;
7039 } else {
7040 var14 = "invalid";
7041 var15 = 7;
7042 var16 = string__NativeString__to_s_with_length(var14, var15);
7043 var13 = var16;
7044 varonce = var13;
7045 }
7046 var9 = var13;
7047 }
7048 var_from = var9;
7049 var18 = NULL;
7050 if (var_mtype == NULL) {
7051 var19 = 0; /* is null */
7052 } else {
7053 var19 = 1; /* arg is null and recv is not */
7054 }
7055 if (var19){
7056 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:nullable MType(MType)>*/;
7057 var17 = var20;
7058 } else {
7059 if (varonce21) {
7060 var22 = varonce21;
7061 } else {
7062 var23 = "invalid";
7063 var24 = 7;
7064 var25 = string__NativeString__to_s_with_length(var23, var24);
7065 var22 = var25;
7066 varonce21 = var22;
7067 }
7068 var17 = var22;
7069 }
7070 var_to = var17;
7071 var26 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AIsaExpr>*/;
7072 if (var26 == NULL) {
7073 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1155);
7074 exit(1);
7075 } else {
7076 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_flow__FlowContext__when_true]))(var26) /* when_true on <var26:nullable FlowContext>*/;
7077 }
7078 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_typing__FlowContext__set_var]))(var27, var_variable, var_mtype) /* set_var on <var27:FlowContext>*/;
7079 } else {
7080 }
7081 var28 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
7082 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var28) /* mtype= on <self:AIsaExpr>*/;
7083 RET_LABEL:;
7084 }
7085 /* method typing#AIsaExpr#accept_typing for (self: Object, TypeVisitor) */
7086 void VIRTUAL_typing__AIsaExpr__accept_typing(val* self, val* p0) {
7087 typing__AIsaExpr__accept_typing(self, p0);
7088 RET_LABEL:;
7089 }
7090 /* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */
7091 void typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7092 val* var_v /* var v: TypeVisitor */;
7093 val* var /* : AExpr */;
7094 val* var1 /* : AType */;
7095 val* var2 /* : nullable MType */;
7096 var_v = p0;
7097 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_expr]))(self) /* n_expr on <self:AAsCastExpr>*/;
7098 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_type]))(self) /* n_type on <self:AAsCastExpr>*/;
7099 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>*/;
7100 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:AAsCastExpr>*/;
7101 RET_LABEL:;
7102 }
7103 /* method typing#AAsCastExpr#accept_typing for (self: Object, TypeVisitor) */
7104 void VIRTUAL_typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7105 typing__AAsCastExpr__accept_typing(self, p0);
7106 RET_LABEL:;
7107 }
7108 /* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */
7109 void typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7110 val* var_v /* var v: TypeVisitor */;
7111 val* var /* : AExpr */;
7112 val* var1 /* : nullable MType */;
7113 val* var_mtype /* var mtype: nullable MType */;
7114 short int var2 /* : Bool */;
7115 int cltype;
7116 int idtype;
7117 static val* varonce;
7118 val* var3 /* : String */;
7119 char* var4 /* : NativeString */;
7120 long var5 /* : Int */;
7121 val* var6 /* : String */;
7122 short int var7 /* : Bool */;
7123 int cltype8;
7124 int idtype9;
7125 val* var10 /* : MType */;
7126 var_v = p0;
7127 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsNotnullExpr__n_expr]))(self) /* n_expr on <self:AAsNotnullExpr>*/;
7128 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7129 var_mtype = var1;
7130 /* <var_mtype:nullable MType> isa MNullType */
7131 cltype = type_model__MNullType.color;
7132 idtype = type_model__MNullType.id;
7133 if(var_mtype == NULL) {
7134 var2 = 0;
7135 } else {
7136 if(cltype >= var_mtype->type->table_size) {
7137 var2 = 0;
7138 } else {
7139 var2 = var_mtype->type->type_table[cltype] == idtype;
7140 }
7141 }
7142 if (var2){
7143 if (varonce) {
7144 var3 = varonce;
7145 } else {
7146 var4 = "Type error: as(not null) on null";
7147 var5 = 32;
7148 var6 = string__NativeString__to_s_with_length(var4, var5);
7149 var3 = var6;
7150 varonce = var3;
7151 }
7152 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var3) /* error on <var_v:TypeVisitor>*/;
7153 goto RET_LABEL;
7154 } else {
7155 }
7156 /* <var_mtype:nullable MType> isa MNullableType */
7157 cltype8 = type_model__MNullableType.color;
7158 idtype9 = type_model__MNullableType.id;
7159 if(var_mtype == NULL) {
7160 var7 = 0;
7161 } else {
7162 if(cltype8 >= var_mtype->type->table_size) {
7163 var7 = 0;
7164 } else {
7165 var7 = var_mtype->type->type_table[cltype8] == idtype9;
7166 }
7167 }
7168 if (var7){
7169 var10 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:nullable MType(MNullableType)>*/;
7170 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var10) /* mtype= on <self:AAsNotnullExpr>*/;
7171 goto RET_LABEL;
7172 } else {
7173 }
7174 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AAsNotnullExpr>*/;
7175 RET_LABEL:;
7176 }
7177 /* method typing#AAsNotnullExpr#accept_typing for (self: Object, TypeVisitor) */
7178 void VIRTUAL_typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7179 typing__AAsNotnullExpr__accept_typing(self, p0);
7180 RET_LABEL:;
7181 }
7182 /* method typing#AProxyExpr#accept_typing for (self: AProxyExpr, TypeVisitor) */
7183 void typing__AProxyExpr__accept_typing(val* self, val* p0) {
7184 val* var_v /* var v: TypeVisitor */;
7185 val* var /* : AExpr */;
7186 val* var1 /* : nullable MType */;
7187 var_v = p0;
7188 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AProxyExpr>*/;
7189 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7190 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:AProxyExpr>*/;
7191 RET_LABEL:;
7192 }
7193 /* method typing#AProxyExpr#accept_typing for (self: Object, TypeVisitor) */
7194 void VIRTUAL_typing__AProxyExpr__accept_typing(val* self, val* p0) {
7195 typing__AProxyExpr__accept_typing(self, p0);
7196 RET_LABEL:;
7197 }
7198 /* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */
7199 val* typing__ASelfExpr__its_variable(val* self) {
7200 val* var /* : nullable Variable */;
7201 val* var1 /* : nullable Variable */;
7202 var1 = self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val; /* @its_variable on <self:ASelfExpr> */
7203 var = var1;
7204 RET_LABEL:;
7205 return var;
7206 }
7207 /* method typing#ASelfExpr#its_variable for (self: Object): nullable Variable */
7208 val* VIRTUAL_typing__ASelfExpr__its_variable(val* self) {
7209 val* var /* : nullable Variable */;
7210 val* var1 /* : nullable Variable */;
7211 var1 = typing__ASelfExpr__its_variable(self);
7212 var = var1;
7213 RET_LABEL:;
7214 return var;
7215 }
7216 /* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */
7217 void typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7218 self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val = p0; /* @its_variable on <self:ASelfExpr> */
7219 RET_LABEL:;
7220 }
7221 /* method typing#ASelfExpr#its_variable= for (self: Object, nullable Variable) */
7222 void VIRTUAL_typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7223 typing__ASelfExpr__its_variable_61d(self, p0);
7224 RET_LABEL:;
7225 }
7226 /* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */
7227 void typing__ASelfExpr__accept_typing(val* self, val* p0) {
7228 val* var_v /* var v: TypeVisitor */;
7229 val* var /* : Variable */;
7230 val* var_variable /* var variable: Variable */;
7231 val* var1 /* : nullable MType */;
7232 var_v = p0;
7233 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
7234 var_variable = var;
7235 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASelfExpr__its_variable_61d]))(self, var_variable) /* its_variable= on <self:ASelfExpr>*/;
7236 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>*/;
7237 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:ASelfExpr>*/;
7238 RET_LABEL:;
7239 }
7240 /* method typing#ASelfExpr#accept_typing for (self: Object, TypeVisitor) */
7241 void VIRTUAL_typing__ASelfExpr__accept_typing(val* self, val* p0) {
7242 typing__ASelfExpr__accept_typing(self, p0);
7243 RET_LABEL:;
7244 }
7245 /* method typing#ASendExpr#mproperty for (self: ASendExpr): nullable MMethod */
7246 val* typing__ASendExpr__mproperty(val* self) {
7247 val* var /* : nullable MMethod */;
7248 val* var1 /* : nullable CallSite */;
7249 val* var2 /* : MMethod */;
7250 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendExpr>*/;
7251 if (var1 == NULL) {
7252 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1207);
7253 exit(1);
7254 } else {
7255 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
7256 }
7257 var = var2;
7258 goto RET_LABEL;
7259 RET_LABEL:;
7260 return var;
7261 }
7262 /* method typing#ASendExpr#mproperty for (self: Object): nullable MMethod */
7263 val* VIRTUAL_typing__ASendExpr__mproperty(val* self) {
7264 val* var /* : nullable MMethod */;
7265 val* var1 /* : nullable MMethod */;
7266 var1 = typing__ASendExpr__mproperty(self);
7267 var = var1;
7268 RET_LABEL:;
7269 return var;
7270 }
7271 /* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */
7272 val* typing__ASendExpr__callsite(val* self) {
7273 val* var /* : nullable CallSite */;
7274 val* var1 /* : nullable CallSite */;
7275 var1 = self->attrs[COLOR_typing__ASendExpr___64dcallsite].val; /* @callsite on <self:ASendExpr> */
7276 var = var1;
7277 RET_LABEL:;
7278 return var;
7279 }
7280 /* method typing#ASendExpr#callsite for (self: Object): nullable CallSite */
7281 val* VIRTUAL_typing__ASendExpr__callsite(val* self) {
7282 val* var /* : nullable CallSite */;
7283 val* var1 /* : nullable CallSite */;
7284 var1 = typing__ASendExpr__callsite(self);
7285 var = var1;
7286 RET_LABEL:;
7287 return var;
7288 }
7289 /* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */
7290 void typing__ASendExpr__callsite_61d(val* self, val* p0) {
7291 self->attrs[COLOR_typing__ASendExpr___64dcallsite].val = p0; /* @callsite on <self:ASendExpr> */
7292 RET_LABEL:;
7293 }
7294 /* method typing#ASendExpr#callsite= for (self: Object, nullable CallSite) */
7295 void VIRTUAL_typing__ASendExpr__callsite_61d(val* self, val* p0) {
7296 typing__ASendExpr__callsite_61d(self, p0);
7297 RET_LABEL:;
7298 }
7299 /* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */
7300 void typing__ASendExpr__accept_typing(val* self, val* p0) {
7301 val* var_v /* var v: TypeVisitor */;
7302 val* var /* : AExpr */;
7303 val* var1 /* : nullable MType */;
7304 val* var_recvtype /* var recvtype: nullable MType */;
7305 val* var2 /* : String */;
7306 val* var_name /* var name: String */;
7307 val* var3 /* : null */;
7308 short int var4 /* : Bool */;
7309 short int var5 /* : Bool */;
7310 int cltype;
7311 int idtype;
7312 static val* varonce;
7313 val* var6 /* : String */;
7314 char* var7 /* : NativeString */;
7315 long var8 /* : Int */;
7316 val* var9 /* : String */;
7317 static val* varonce10;
7318 val* var11 /* : String */;
7319 char* var12 /* : NativeString */;
7320 long var13 /* : Int */;
7321 val* var14 /* : String */;
7322 val* var15 /* : Array[Object] */;
7323 long var16 /* : Int */;
7324 val* var17 /* : NativeArray[Object] */;
7325 val* var18 /* : String */;
7326 val* var19 /* : AExpr */;
7327 short int var20 /* : Bool */;
7328 int cltype21;
7329 int idtype22;
7330 val* var23 /* : nullable CallSite */;
7331 val* var_callsite /* var callsite: nullable CallSite */;
7332 val* var24 /* : null */;
7333 short int var25 /* : Bool */;
7334 val* var26 /* : MSignature */;
7335 val* var_msignature /* var msignature: MSignature */;
7336 val* var27 /* : Array[AExpr] */;
7337 val* var_args /* var args: Array[AExpr] */;
7338 short int var28 /* : Bool */;
7339 val* var29 /* : MMethod */;
7340 short int var30 /* : Bool */;
7341 val* var31 /* : MPropDef */;
7342 val* var_vmpropdef /* var vmpropdef: MPropDef */;
7343 short int var32 /* : Bool */;
7344 short int var33 /* : Bool */;
7345 int cltype34;
7346 int idtype35;
7347 short int var_ /* var : Bool */;
7348 val* var36 /* : MProperty */;
7349 short int var37 /* : Bool */;
7350 short int var38 /* : Bool */;
7351 static val* varonce39;
7352 val* var40 /* : String */;
7353 char* var41 /* : NativeString */;
7354 long var42 /* : Int */;
7355 val* var43 /* : String */;
7356 val* var44 /* : nullable MType */;
7357 val* var_ret /* var ret: nullable MType */;
7358 val* var45 /* : null */;
7359 short int var46 /* : Bool */;
7360 short int var47 /* : Bool */;
7361 val* var48 /* : ANodes[AClosureDef] */;
7362 long var49 /* : Int */;
7363 val* var50 /* : Array[MParameter] */;
7364 long var51 /* : Int */;
7365 short int var52 /* : Bool */;
7366 short int var54 /* : Bool */;
7367 val* var55 /* : Range[Int] */;
7368 long var56 /* : Int */;
7369 val* var57 /* : ANodes[AClosureDef] */;
7370 long var58 /* : Int */;
7371 val* var59 /* : Discrete */;
7372 val* var60 /* : Discrete */;
7373 val* var61 /* : Iterator[nullable Object] */;
7374 short int var62 /* : Bool */;
7375 val* var63 /* : nullable Object */;
7376 long var_i /* var i: Int */;
7377 long var64 /* : Int */;
7378 val* var65 /* : ANodes[AClosureDef] */;
7379 val* var66 /* : nullable Object */;
7380 val* var67 /* : Array[MParameter] */;
7381 val* var68 /* : nullable Object */;
7382 static val* varonce69;
7383 val* var70 /* : String */;
7384 char* var71 /* : NativeString */;
7385 long var72 /* : Int */;
7386 val* var73 /* : String */;
7387 val* var74 /* : ANodes[AClosureDef] */;
7388 long var75 /* : Int */;
7389 static val* varonce76;
7390 val* var77 /* : String */;
7391 char* var78 /* : NativeString */;
7392 long var79 /* : Int */;
7393 val* var80 /* : String */;
7394 val* var81 /* : Array[MParameter] */;
7395 long var82 /* : Int */;
7396 val* var83 /* : Array[Object] */;
7397 long var84 /* : Int */;
7398 val* var85 /* : NativeArray[Object] */;
7399 val* var86 /* : Object */;
7400 val* var87 /* : Object */;
7401 val* var88 /* : String */;
7402 var_v = p0;
7403 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7404 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7405 var_recvtype = var1;
7406 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendExpr>*/;
7407 var_name = var2;
7408 var3 = NULL;
7409 if (var_recvtype == NULL) {
7410 var4 = 1; /* is null */
7411 } else {
7412 var4 = 0; /* arg is null but recv is not */
7413 }
7414 if (var4){
7415 goto RET_LABEL;
7416 } else {
7417 }
7418 /* <var_recvtype:nullable MType(MType)> isa MNullType */
7419 cltype = type_model__MNullType.color;
7420 idtype = type_model__MNullType.id;
7421 if(cltype >= var_recvtype->type->table_size) {
7422 var5 = 0;
7423 } else {
7424 var5 = var_recvtype->type->type_table[cltype] == idtype;
7425 }
7426 if (var5){
7427 if (varonce) {
7428 var6 = varonce;
7429 } else {
7430 var7 = "Error: Method \'";
7431 var8 = 15;
7432 var9 = string__NativeString__to_s_with_length(var7, var8);
7433 var6 = var9;
7434 varonce = var6;
7435 }
7436 if (varonce10) {
7437 var11 = varonce10;
7438 } else {
7439 var12 = "\' call on \'null\'.";
7440 var13 = 17;
7441 var14 = string__NativeString__to_s_with_length(var12, var13);
7442 var11 = var14;
7443 varonce10 = var11;
7444 }
7445 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
7446 { /* var15 = array_instance Array[Object] */
7447 var16 = 3;
7448 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
7449 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
7450 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
7451 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
7452 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
7453 CHECK_NEW_array__Array(var15);
7454 }
7455 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
7456 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
7457 goto RET_LABEL;
7458 } else {
7459 }
7460 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7461 /* <var19:AExpr> isa ASelfExpr */
7462 cltype21 = type_parser_nodes__ASelfExpr.color;
7463 idtype22 = type_parser_nodes__ASelfExpr.id;
7464 if(cltype21 >= var19->type->table_size) {
7465 var20 = 0;
7466 } else {
7467 var20 = var19->type->type_table[cltype21] == idtype22;
7468 }
7469 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>*/;
7470 var_callsite = var23;
7471 var24 = NULL;
7472 if (var_callsite == NULL) {
7473 var25 = 1; /* is null */
7474 } else {
7475 var25 = 0; /* arg is null but recv is not */
7476 }
7477 if (var25){
7478 goto RET_LABEL;
7479 } else {
7480 }
7481 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendExpr>*/;
7482 var26 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
7483 var_msignature = var26;
7484 var27 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
7485 var_args = var27;
7486 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendExpr>*/;
7487 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)>*/;
7488 var28;
7489 var29 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:nullable CallSite(CallSite)>*/;
7490 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_model__MMethod__is_init]))(var29) /* is_init on <var29:MMethod>*/;
7491 if (var30){
7492 var31 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
7493 var_vmpropdef = var31;
7494 /* <var_vmpropdef:MPropDef> isa MMethodDef */
7495 cltype34 = type_model__MMethodDef.color;
7496 idtype35 = type_model__MMethodDef.id;
7497 if(cltype34 >= var_vmpropdef->type->table_size) {
7498 var33 = 0;
7499 } else {
7500 var33 = var_vmpropdef->type->type_table[cltype34] == idtype35;
7501 }
7502 var_ = var33;
7503 if (var33){
7504 var36 = ((val* (*)(val*))(var_vmpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_vmpropdef) /* mproperty on <var_vmpropdef:MPropDef(MMethodDef)>*/;
7505 var37 = ((short int (*)(val*))(var36->class->vft[COLOR_model__MMethod__is_init]))(var36) /* is_init on <var36:MProperty(MMethod)>*/;
7506 var32 = var37;
7507 } else {
7508 var32 = var_;
7509 }
7510 var38 = !var32;
7511 if (var38){
7512 if (varonce39) {
7513 var40 = varonce39;
7514 } else {
7515 var41 = "Can call a init only in another init";
7516 var42 = 36;
7517 var43 = string__NativeString__to_s_with_length(var41, var42);
7518 var40 = var43;
7519 varonce39 = var40;
7520 }
7521 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var40) /* error on <var_v:TypeVisitor>*/;
7522 } else {
7523 }
7524 } else {
7525 }
7526 var44 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
7527 var_ret = var44;
7528 var45 = NULL;
7529 if (var_ret == NULL) {
7530 var46 = 0; /* is null */
7531 } else {
7532 var46 = 1; /* arg is null and recv is not */
7533 }
7534 if (var46){
7535 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_ret) /* mtype= on <self:ASendExpr>*/;
7536 } else {
7537 var47 = 1;
7538 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var47) /* is_typed= on <self:ASendExpr>*/;
7539 }
7540 var48 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on <self:ASendExpr>*/;
7541 var49 = ((long (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__length]))(var48) /* length on <var48:ANodes[AClosureDef]>*/;
7542 var50 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mclosures]))(var_msignature) /* mclosures on <var_msignature:MSignature>*/;
7543 var51 = ((long (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__length]))(var50) /* length on <var50:Array[MParameter]>*/;
7544 { /* Inline kernel#Int#== (var49,var51) */
7545 var54 = var49 == var51;
7546 var52 = var54;
7547 goto RET_LABEL53;
7548 RET_LABEL53:(void)0;
7549 }
7550 if (var52){
7551 var55 = NEW_range__Range(&type_range__Rangekernel__Int);
7552 var56 = 0;
7553 var57 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on <self:ASendExpr>*/;
7554 var58 = ((long (*)(val*))(var57->class->vft[COLOR_abstract_collection__Collection__length]))(var57) /* length on <var57:ANodes[AClosureDef]>*/;
7555 var59 = BOX_kernel__Int(var56); /* autobox from Int to Discrete */
7556 var60 = BOX_kernel__Int(var58); /* autobox from Int to Discrete */
7557 ((void (*)(val*, val*, val*))(var55->class->vft[COLOR_range__Range__without_last]))(var55, var59, var60) /* without_last on <var55:Range[Int]>*/;
7558 CHECK_NEW_range__Range(var55);
7559 var61 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_collection__Collection__iterator]))(var55) /* iterator on <var55:Range[Int]>*/;
7560 for(;;) {
7561 var62 = ((short int (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var61) /* is_ok on <var61:Iterator[nullable Object]>*/;
7562 if(!var62) break;
7563 var63 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__item]))(var61) /* item on <var61:Iterator[nullable Object]>*/;
7564 var64 = ((struct instance_kernel__Int*)var63)->value; /* autounbox from nullable Object to Int */;
7565 var_i = var64;
7566 var65 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on <self:ASendExpr>*/;
7567 var66 = ((val* (*)(val*, long))(var65->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var65, var_i) /* [] on <var65:ANodes[AClosureDef]>*/;
7568 var67 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mclosures]))(var_msignature) /* mclosures on <var_msignature:MSignature>*/;
7569 var68 = ((val* (*)(val*, long))(var67->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var67, var_i) /* [] on <var67:Array[MParameter]>*/;
7570 ((void (*)(val*, val*, val*))(var66->class->vft[COLOR_typing__AClosureDef__accept_typing]))(var66, var_v, var68) /* accept_typing on <var66:nullable Object(AClosureDef)>*/;
7571 CONTINUE_label: (void)0;
7572 ((void (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__next]))(var61) /* next on <var61:Iterator[nullable Object]>*/;
7573 }
7574 BREAK_label: (void)0;
7575 } else {
7576 if (varonce69) {
7577 var70 = varonce69;
7578 } else {
7579 var71 = "closure: got ";
7580 var72 = 13;
7581 var73 = string__NativeString__to_s_with_length(var71, var72);
7582 var70 = var73;
7583 varonce69 = var70;
7584 }
7585 var74 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_closure_defs]))(self) /* n_closure_defs on <self:ASendExpr>*/;
7586 var75 = ((long (*)(val*))(var74->class->vft[COLOR_abstract_collection__Collection__length]))(var74) /* length on <var74:ANodes[AClosureDef]>*/;
7587 if (varonce76) {
7588 var77 = varonce76;
7589 } else {
7590 var78 = ", want ";
7591 var79 = 7;
7592 var80 = string__NativeString__to_s_with_length(var78, var79);
7593 var77 = var80;
7594 varonce76 = var77;
7595 }
7596 var81 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mclosures]))(var_msignature) /* mclosures on <var_msignature:MSignature>*/;
7597 var82 = ((long (*)(val*))(var81->class->vft[COLOR_abstract_collection__Collection__length]))(var81) /* length on <var81:Array[MParameter]>*/;
7598 var83 = NEW_array__Array(&type_array__Arraykernel__Object);
7599 { /* var83 = array_instance Array[Object] */
7600 var84 = 4;
7601 var85 = NEW_array__NativeArray(var84, &type_array__NativeArraykernel__Object);
7602 ((struct instance_array__NativeArray*)var85)->values[0] = (val*) var70;
7603 var86 = BOX_kernel__Int(var75); /* autobox from Int to Object */
7604 ((struct instance_array__NativeArray*)var85)->values[1] = (val*) var86;
7605 ((struct instance_array__NativeArray*)var85)->values[2] = (val*) var77;
7606 var87 = BOX_kernel__Int(var82); /* autobox from Int to Object */
7607 ((struct instance_array__NativeArray*)var85)->values[3] = (val*) var87;
7608 ((void (*)(val*, val*, long))(var83->class->vft[COLOR_array__Array__with_native]))(var83, var85, var84) /* with_native on <var83:Array[Object]>*/;
7609 CHECK_NEW_array__Array(var83);
7610 }
7611 var88 = ((val* (*)(val*))(var83->class->vft[COLOR_string__Object__to_s]))(var83) /* to_s on <var83:Array[Object]>*/;
7612 ((void (*)(val*, val*))(self->class->vft[COLOR_parser_nodes__ANode__debug]))(self, var88) /* debug on <self:ASendExpr>*/;
7613 }
7614 RET_LABEL:;
7615 }
7616 /* method typing#ASendExpr#accept_typing for (self: Object, TypeVisitor) */
7617 void VIRTUAL_typing__ASendExpr__accept_typing(val* self, val* p0) {
7618 typing__ASendExpr__accept_typing(self, p0);
7619 RET_LABEL:;
7620 }
7621 /* method typing#ASendExpr#property_name for (self: ASendExpr): String */
7622 val* typing__ASendExpr__property_name(val* self) {
7623 val* var /* : String */;
7624 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/typing.nit", 1256);
7625 exit(1);
7626 RET_LABEL:;
7627 return var;
7628 }
7629 /* method typing#ASendExpr#property_name for (self: Object): String */
7630 val* VIRTUAL_typing__ASendExpr__property_name(val* self) {
7631 val* var /* : String */;
7632 val* var1 /* : String */;
7633 var1 = typing__ASendExpr__property_name(self);
7634 var = var1;
7635 RET_LABEL:;
7636 return var;
7637 }
7638 /* method typing#ASendExpr#raw_arguments for (self: ASendExpr): nullable Array[AExpr] */
7639 val* typing__ASendExpr__raw_arguments(val* self) {
7640 val* var /* : nullable Array[AExpr] */;
7641 val* var1 /* : nullable Array[AExpr] */;
7642 var1 = self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val; /* @raw_arguments on <self:ASendExpr> */
7643 var = var1;
7644 RET_LABEL:;
7645 return var;
7646 }
7647 /* method typing#ASendExpr#raw_arguments for (self: Object): nullable Array[AExpr] */
7648 val* VIRTUAL_typing__ASendExpr__raw_arguments(val* self) {
7649 val* var /* : nullable Array[AExpr] */;
7650 val* var1 /* : nullable Array[AExpr] */;
7651 var1 = typing__ASendExpr__raw_arguments(self);
7652 var = var1;
7653 RET_LABEL:;
7654 return var;
7655 }
7656 /* method typing#ASendExpr#raw_arguments= for (self: ASendExpr, nullable Array[AExpr]) */
7657 void typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7658 self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val = p0; /* @raw_arguments on <self:ASendExpr> */
7659 RET_LABEL:;
7660 }
7661 /* method typing#ASendExpr#raw_arguments= for (self: Object, nullable Array[AExpr]) */
7662 void VIRTUAL_typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7663 typing__ASendExpr__raw_arguments_61d(self, p0);
7664 RET_LABEL:;
7665 }
7666 /* method typing#ASendExpr#compute_raw_arguments for (self: ASendExpr): Array[AExpr] */
7667 val* typing__ASendExpr__compute_raw_arguments(val* self) {
7668 val* var /* : Array[AExpr] */;
7669 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/typing.nit", 1263);
7670 exit(1);
7671 RET_LABEL:;
7672 return var;
7673 }
7674 /* method typing#ASendExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7675 val* VIRTUAL_typing__ASendExpr__compute_raw_arguments(val* self) {
7676 val* var /* : Array[AExpr] */;
7677 val* var1 /* : Array[AExpr] */;
7678 var1 = typing__ASendExpr__compute_raw_arguments(self);
7679 var = var1;
7680 RET_LABEL:;
7681 return var;
7682 }
7683 /* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */
7684 val* typing__ABinopExpr__compute_raw_arguments(val* self) {
7685 val* var /* : Array[AExpr] */;
7686 val* var1 /* : Array[AExpr] */;
7687 long var2 /* : Int */;
7688 val* var_ /* var : Array[AExpr] */;
7689 val* var3 /* : AExpr */;
7690 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
7691 var2 = 1;
7692 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[AExpr]>*/;
7693 CHECK_NEW_array__Array(var1);
7694 var_ = var1;
7695 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ABinopExpr>*/;
7696 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var3) /* push on <var_:Array[AExpr]>*/;
7697 var = var_;
7698 goto RET_LABEL;
7699 RET_LABEL:;
7700 return var;
7701 }
7702 /* method typing#ABinopExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7703 val* VIRTUAL_typing__ABinopExpr__compute_raw_arguments(val* self) {
7704 val* var /* : Array[AExpr] */;
7705 val* var1 /* : Array[AExpr] */;
7706 var1 = typing__ABinopExpr__compute_raw_arguments(self);
7707 var = var1;
7708 RET_LABEL:;
7709 return var;
7710 }
7711 /* method typing#AEqExpr#property_name for (self: AEqExpr): String */
7712 val* typing__AEqExpr__property_name(val* self) {
7713 val* var /* : String */;
7714 static val* varonce;
7715 val* var1 /* : String */;
7716 char* var2 /* : NativeString */;
7717 long var3 /* : Int */;
7718 val* var4 /* : String */;
7719 if (varonce) {
7720 var1 = varonce;
7721 } else {
7722 var2 = "==";
7723 var3 = 2;
7724 var4 = string__NativeString__to_s_with_length(var2, var3);
7725 var1 = var4;
7726 varonce = var1;
7727 }
7728 var = var1;
7729 goto RET_LABEL;
7730 RET_LABEL:;
7731 return var;
7732 }
7733 /* method typing#AEqExpr#property_name for (self: Object): String */
7734 val* VIRTUAL_typing__AEqExpr__property_name(val* self) {
7735 val* var /* : String */;
7736 val* var1 /* : String */;
7737 var1 = typing__AEqExpr__property_name(self);
7738 var = var1;
7739 RET_LABEL:;
7740 return var;
7741 }
7742 /* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */
7743 void typing__AEqExpr__accept_typing(val* self, val* p0) {
7744 val* var_v /* var v: TypeVisitor */;
7745 val* var /* : AExpr */;
7746 val* var1 /* : nullable Variable */;
7747 val* var_variable /* var variable: nullable Variable */;
7748 val* var2 /* : null */;
7749 short int var3 /* : Bool */;
7750 val* var4 /* : AExpr */;
7751 val* var5 /* : nullable MType */;
7752 val* var_mtype /* var mtype: nullable MType */;
7753 short int var6 /* : Bool */;
7754 int cltype;
7755 int idtype;
7756 short int var7 /* : Bool */;
7757 val* var8 /* : nullable MType */;
7758 val* var_vartype /* var vartype: nullable MType */;
7759 short int var9 /* : Bool */;
7760 int cltype10;
7761 int idtype11;
7762 short int var12 /* : Bool */;
7763 val* var13 /* : nullable FlowContext */;
7764 val* var14 /* : FlowContext */;
7765 val* var15 /* : nullable FlowContext */;
7766 val* var16 /* : FlowContext */;
7767 val* var17 /* : MType */;
7768 var_v = p0;
7769 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AEqExpr__accept_typing]))(self, p0) /* accept_typing on <self:AEqExpr>*/;
7770 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:AEqExpr>*/;
7771 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7772 var_variable = var1;
7773 var2 = NULL;
7774 if (var_variable == NULL) {
7775 var3 = 1; /* is null */
7776 } else {
7777 var3 = 0; /* arg is null but recv is not */
7778 }
7779 if (var3){
7780 goto RET_LABEL;
7781 } else {
7782 }
7783 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:AEqExpr>*/;
7784 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7785 var_mtype = var5;
7786 /* <var_mtype:nullable MType> isa MNullType */
7787 cltype = type_model__MNullType.color;
7788 idtype = type_model__MNullType.id;
7789 if(var_mtype == NULL) {
7790 var6 = 0;
7791 } else {
7792 if(cltype >= var_mtype->type->table_size) {
7793 var6 = 0;
7794 } else {
7795 var6 = var_mtype->type->type_table[cltype] == idtype;
7796 }
7797 }
7798 var7 = !var6;
7799 if (var7){
7800 goto RET_LABEL;
7801 } else {
7802 }
7803 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>*/;
7804 var_vartype = var8;
7805 /* <var_vartype:nullable MType> isa MNullableType */
7806 cltype10 = type_model__MNullableType.color;
7807 idtype11 = type_model__MNullableType.id;
7808 if(var_vartype == NULL) {
7809 var9 = 0;
7810 } else {
7811 if(cltype10 >= var_vartype->type->table_size) {
7812 var9 = 0;
7813 } else {
7814 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7815 }
7816 }
7817 var12 = !var9;
7818 if (var12){
7819 goto RET_LABEL;
7820 } else {
7821 }
7822 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7823 if (var13 == NULL) {
7824 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1281);
7825 exit(1);
7826 } else {
7827 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_true]))(var13) /* when_true on <var13:nullable FlowContext>*/;
7828 }
7829 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7830 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7831 if (var15 == NULL) {
7832 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1282);
7833 exit(1);
7834 } else {
7835 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_false]))(var15) /* when_false on <var15:nullable FlowContext>*/;
7836 }
7837 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7838 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7839 RET_LABEL:;
7840 }
7841 /* method typing#AEqExpr#accept_typing for (self: Object, TypeVisitor) */
7842 void VIRTUAL_typing__AEqExpr__accept_typing(val* self, val* p0) {
7843 typing__AEqExpr__accept_typing(self, p0);
7844 RET_LABEL:;
7845 }
7846 /* method typing#ANeExpr#property_name for (self: ANeExpr): String */
7847 val* typing__ANeExpr__property_name(val* self) {
7848 val* var /* : String */;
7849 static val* varonce;
7850 val* var1 /* : String */;
7851 char* var2 /* : NativeString */;
7852 long var3 /* : Int */;
7853 val* var4 /* : String */;
7854 if (varonce) {
7855 var1 = varonce;
7856 } else {
7857 var2 = "!=";
7858 var3 = 2;
7859 var4 = string__NativeString__to_s_with_length(var2, var3);
7860 var1 = var4;
7861 varonce = var1;
7862 }
7863 var = var1;
7864 goto RET_LABEL;
7865 RET_LABEL:;
7866 return var;
7867 }
7868 /* method typing#ANeExpr#property_name for (self: Object): String */
7869 val* VIRTUAL_typing__ANeExpr__property_name(val* self) {
7870 val* var /* : String */;
7871 val* var1 /* : String */;
7872 var1 = typing__ANeExpr__property_name(self);
7873 var = var1;
7874 RET_LABEL:;
7875 return var;
7876 }
7877 /* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */
7878 void typing__ANeExpr__accept_typing(val* self, val* p0) {
7879 val* var_v /* var v: TypeVisitor */;
7880 val* var /* : AExpr */;
7881 val* var1 /* : nullable Variable */;
7882 val* var_variable /* var variable: nullable Variable */;
7883 val* var2 /* : null */;
7884 short int var3 /* : Bool */;
7885 val* var4 /* : AExpr */;
7886 val* var5 /* : nullable MType */;
7887 val* var_mtype /* var mtype: nullable MType */;
7888 short int var6 /* : Bool */;
7889 int cltype;
7890 int idtype;
7891 short int var7 /* : Bool */;
7892 val* var8 /* : nullable MType */;
7893 val* var_vartype /* var vartype: nullable MType */;
7894 short int var9 /* : Bool */;
7895 int cltype10;
7896 int idtype11;
7897 short int var12 /* : Bool */;
7898 val* var13 /* : nullable FlowContext */;
7899 val* var14 /* : FlowContext */;
7900 val* var15 /* : nullable FlowContext */;
7901 val* var16 /* : FlowContext */;
7902 val* var17 /* : MType */;
7903 var_v = p0;
7904 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANeExpr__accept_typing]))(self, p0) /* accept_typing on <self:ANeExpr>*/;
7905 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ANeExpr>*/;
7906 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7907 var_variable = var1;
7908 var2 = NULL;
7909 if (var_variable == NULL) {
7910 var3 = 1; /* is null */
7911 } else {
7912 var3 = 0; /* arg is null but recv is not */
7913 }
7914 if (var3){
7915 goto RET_LABEL;
7916 } else {
7917 }
7918 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ANeExpr>*/;
7919 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7920 var_mtype = var5;
7921 /* <var_mtype:nullable MType> isa MNullType */
7922 cltype = type_model__MNullType.color;
7923 idtype = type_model__MNullType.id;
7924 if(var_mtype == NULL) {
7925 var6 = 0;
7926 } else {
7927 if(cltype >= var_mtype->type->table_size) {
7928 var6 = 0;
7929 } else {
7930 var6 = var_mtype->type->type_table[cltype] == idtype;
7931 }
7932 }
7933 var7 = !var6;
7934 if (var7){
7935 goto RET_LABEL;
7936 } else {
7937 }
7938 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>*/;
7939 var_vartype = var8;
7940 /* <var_vartype:nullable MType> isa MNullableType */
7941 cltype10 = type_model__MNullableType.color;
7942 idtype11 = type_model__MNullableType.id;
7943 if(var_vartype == NULL) {
7944 var9 = 0;
7945 } else {
7946 if(cltype10 >= var_vartype->type->table_size) {
7947 var9 = 0;
7948 } else {
7949 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7950 }
7951 }
7952 var12 = !var9;
7953 if (var12){
7954 goto RET_LABEL;
7955 } else {
7956 }
7957 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7958 if (var13 == NULL) {
7959 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1298);
7960 exit(1);
7961 } else {
7962 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_false]))(var13) /* when_false on <var13:nullable FlowContext>*/;
7963 }
7964 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7965 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7966 if (var15 == NULL) {
7967 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1299);
7968 exit(1);
7969 } else {
7970 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_true]))(var15) /* when_true on <var15:nullable FlowContext>*/;
7971 }
7972 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7973 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7974 RET_LABEL:;
7975 }
7976 /* method typing#ANeExpr#accept_typing for (self: Object, TypeVisitor) */
7977 void VIRTUAL_typing__ANeExpr__accept_typing(val* self, val* p0) {
7978 typing__ANeExpr__accept_typing(self, p0);
7979 RET_LABEL:;
7980 }
7981 /* method typing#ALtExpr#property_name for (self: ALtExpr): String */
7982 val* typing__ALtExpr__property_name(val* self) {
7983 val* var /* : String */;
7984 static val* varonce;
7985 val* var1 /* : String */;
7986 char* var2 /* : NativeString */;
7987 long var3 /* : Int */;
7988 val* var4 /* : String */;
7989 if (varonce) {
7990 var1 = varonce;
7991 } else {
7992 var2 = "<";
7993 var3 = 1;
7994 var4 = string__NativeString__to_s_with_length(var2, var3);
7995 var1 = var4;
7996 varonce = var1;
7997 }
7998 var = var1;
7999 goto RET_LABEL;
8000 RET_LABEL:;
8001 return var;
8002 }
8003 /* method typing#ALtExpr#property_name for (self: Object): String */
8004 val* VIRTUAL_typing__ALtExpr__property_name(val* self) {
8005 val* var /* : String */;
8006 val* var1 /* : String */;
8007 var1 = typing__ALtExpr__property_name(self);
8008 var = var1;
8009 RET_LABEL:;
8010 return var;
8011 }
8012 /* method typing#ALeExpr#property_name for (self: ALeExpr): String */
8013 val* typing__ALeExpr__property_name(val* self) {
8014 val* var /* : String */;
8015 static val* varonce;
8016 val* var1 /* : String */;
8017 char* var2 /* : NativeString */;
8018 long var3 /* : Int */;
8019 val* var4 /* : String */;
8020 if (varonce) {
8021 var1 = varonce;
8022 } else {
8023 var2 = "<=";
8024 var3 = 2;
8025 var4 = string__NativeString__to_s_with_length(var2, var3);
8026 var1 = var4;
8027 varonce = var1;
8028 }
8029 var = var1;
8030 goto RET_LABEL;
8031 RET_LABEL:;
8032 return var;
8033 }
8034 /* method typing#ALeExpr#property_name for (self: Object): String */
8035 val* VIRTUAL_typing__ALeExpr__property_name(val* self) {
8036 val* var /* : String */;
8037 val* var1 /* : String */;
8038 var1 = typing__ALeExpr__property_name(self);
8039 var = var1;
8040 RET_LABEL:;
8041 return var;
8042 }
8043 /* method typing#ALlExpr#property_name for (self: ALlExpr): String */
8044 val* typing__ALlExpr__property_name(val* self) {
8045 val* var /* : String */;
8046 static val* varonce;
8047 val* var1 /* : String */;
8048 char* var2 /* : NativeString */;
8049 long var3 /* : Int */;
8050 val* var4 /* : String */;
8051 if (varonce) {
8052 var1 = varonce;
8053 } else {
8054 var2 = "<<";
8055 var3 = 2;
8056 var4 = string__NativeString__to_s_with_length(var2, var3);
8057 var1 = var4;
8058 varonce = var1;
8059 }
8060 var = var1;
8061 goto RET_LABEL;
8062 RET_LABEL:;
8063 return var;
8064 }
8065 /* method typing#ALlExpr#property_name for (self: Object): String */
8066 val* VIRTUAL_typing__ALlExpr__property_name(val* self) {
8067 val* var /* : String */;
8068 val* var1 /* : String */;
8069 var1 = typing__ALlExpr__property_name(self);
8070 var = var1;
8071 RET_LABEL:;
8072 return var;
8073 }
8074 /* method typing#AGtExpr#property_name for (self: AGtExpr): String */
8075 val* typing__AGtExpr__property_name(val* self) {
8076 val* var /* : String */;
8077 static val* varonce;
8078 val* var1 /* : String */;
8079 char* var2 /* : NativeString */;
8080 long var3 /* : Int */;
8081 val* var4 /* : String */;
8082 if (varonce) {
8083 var1 = varonce;
8084 } else {
8085 var2 = ">";
8086 var3 = 1;
8087 var4 = string__NativeString__to_s_with_length(var2, var3);
8088 var1 = var4;
8089 varonce = var1;
8090 }
8091 var = var1;
8092 goto RET_LABEL;
8093 RET_LABEL:;
8094 return var;
8095 }
8096 /* method typing#AGtExpr#property_name for (self: Object): String */
8097 val* VIRTUAL_typing__AGtExpr__property_name(val* self) {
8098 val* var /* : String */;
8099 val* var1 /* : String */;
8100 var1 = typing__AGtExpr__property_name(self);
8101 var = var1;
8102 RET_LABEL:;
8103 return var;
8104 }
8105 /* method typing#AGeExpr#property_name for (self: AGeExpr): String */
8106 val* typing__AGeExpr__property_name(val* self) {
8107 val* var /* : String */;
8108 static val* varonce;
8109 val* var1 /* : String */;
8110 char* var2 /* : NativeString */;
8111 long var3 /* : Int */;
8112 val* var4 /* : String */;
8113 if (varonce) {
8114 var1 = varonce;
8115 } else {
8116 var2 = ">=";
8117 var3 = 2;
8118 var4 = string__NativeString__to_s_with_length(var2, var3);
8119 var1 = var4;
8120 varonce = var1;
8121 }
8122 var = var1;
8123 goto RET_LABEL;
8124 RET_LABEL:;
8125 return var;
8126 }
8127 /* method typing#AGeExpr#property_name for (self: Object): String */
8128 val* VIRTUAL_typing__AGeExpr__property_name(val* self) {
8129 val* var /* : String */;
8130 val* var1 /* : String */;
8131 var1 = typing__AGeExpr__property_name(self);
8132 var = var1;
8133 RET_LABEL:;
8134 return var;
8135 }
8136 /* method typing#AGgExpr#property_name for (self: AGgExpr): String */
8137 val* typing__AGgExpr__property_name(val* self) {
8138 val* var /* : String */;
8139 static val* varonce;
8140 val* var1 /* : String */;
8141 char* var2 /* : NativeString */;
8142 long var3 /* : Int */;
8143 val* var4 /* : String */;
8144 if (varonce) {
8145 var1 = varonce;
8146 } else {
8147 var2 = ">>";
8148 var3 = 2;
8149 var4 = string__NativeString__to_s_with_length(var2, var3);
8150 var1 = var4;
8151 varonce = var1;
8152 }
8153 var = var1;
8154 goto RET_LABEL;
8155 RET_LABEL:;
8156 return var;
8157 }
8158 /* method typing#AGgExpr#property_name for (self: Object): String */
8159 val* VIRTUAL_typing__AGgExpr__property_name(val* self) {
8160 val* var /* : String */;
8161 val* var1 /* : String */;
8162 var1 = typing__AGgExpr__property_name(self);
8163 var = var1;
8164 RET_LABEL:;
8165 return var;
8166 }
8167 /* method typing#APlusExpr#property_name for (self: APlusExpr): String */
8168 val* typing__APlusExpr__property_name(val* self) {
8169 val* var /* : String */;
8170 static val* varonce;
8171 val* var1 /* : String */;
8172 char* var2 /* : NativeString */;
8173 long var3 /* : Int */;
8174 val* var4 /* : String */;
8175 if (varonce) {
8176 var1 = varonce;
8177 } else {
8178 var2 = "+";
8179 var3 = 1;
8180 var4 = string__NativeString__to_s_with_length(var2, var3);
8181 var1 = var4;
8182 varonce = var1;
8183 }
8184 var = var1;
8185 goto RET_LABEL;
8186 RET_LABEL:;
8187 return var;
8188 }
8189 /* method typing#APlusExpr#property_name for (self: Object): String */
8190 val* VIRTUAL_typing__APlusExpr__property_name(val* self) {
8191 val* var /* : String */;
8192 val* var1 /* : String */;
8193 var1 = typing__APlusExpr__property_name(self);
8194 var = var1;
8195 RET_LABEL:;
8196 return var;
8197 }
8198 /* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */
8199 val* typing__AMinusExpr__property_name(val* self) {
8200 val* var /* : String */;
8201 static val* varonce;
8202 val* var1 /* : String */;
8203 char* var2 /* : NativeString */;
8204 long var3 /* : Int */;
8205 val* var4 /* : String */;
8206 if (varonce) {
8207 var1 = varonce;
8208 } else {
8209 var2 = "-";
8210 var3 = 1;
8211 var4 = string__NativeString__to_s_with_length(var2, var3);
8212 var1 = var4;
8213 varonce = var1;
8214 }
8215 var = var1;
8216 goto RET_LABEL;
8217 RET_LABEL:;
8218 return var;
8219 }
8220 /* method typing#AMinusExpr#property_name for (self: Object): String */
8221 val* VIRTUAL_typing__AMinusExpr__property_name(val* self) {
8222 val* var /* : String */;
8223 val* var1 /* : String */;
8224 var1 = typing__AMinusExpr__property_name(self);
8225 var = var1;
8226 RET_LABEL:;
8227 return var;
8228 }
8229 /* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */
8230 val* typing__AStarshipExpr__property_name(val* self) {
8231 val* var /* : String */;
8232 static val* varonce;
8233 val* var1 /* : String */;
8234 char* var2 /* : NativeString */;
8235 long var3 /* : Int */;
8236 val* var4 /* : String */;
8237 if (varonce) {
8238 var1 = varonce;
8239 } else {
8240 var2 = "<=>";
8241 var3 = 3;
8242 var4 = string__NativeString__to_s_with_length(var2, var3);
8243 var1 = var4;
8244 varonce = var1;
8245 }
8246 var = var1;
8247 goto RET_LABEL;
8248 RET_LABEL:;
8249 return var;
8250 }
8251 /* method typing#AStarshipExpr#property_name for (self: Object): String */
8252 val* VIRTUAL_typing__AStarshipExpr__property_name(val* self) {
8253 val* var /* : String */;
8254 val* var1 /* : String */;
8255 var1 = typing__AStarshipExpr__property_name(self);
8256 var = var1;
8257 RET_LABEL:;
8258 return var;
8259 }
8260 /* method typing#AStarExpr#property_name for (self: AStarExpr): String */
8261 val* typing__AStarExpr__property_name(val* self) {
8262 val* var /* : String */;
8263 static val* varonce;
8264 val* var1 /* : String */;
8265 char* var2 /* : NativeString */;
8266 long var3 /* : Int */;
8267 val* var4 /* : String */;
8268 if (varonce) {
8269 var1 = varonce;
8270 } else {
8271 var2 = "*";
8272 var3 = 1;
8273 var4 = string__NativeString__to_s_with_length(var2, var3);
8274 var1 = var4;
8275 varonce = var1;
8276 }
8277 var = var1;
8278 goto RET_LABEL;
8279 RET_LABEL:;
8280 return var;
8281 }
8282 /* method typing#AStarExpr#property_name for (self: Object): String */
8283 val* VIRTUAL_typing__AStarExpr__property_name(val* self) {
8284 val* var /* : String */;
8285 val* var1 /* : String */;
8286 var1 = typing__AStarExpr__property_name(self);
8287 var = var1;
8288 RET_LABEL:;
8289 return var;
8290 }
8291 /* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */
8292 val* typing__ASlashExpr__property_name(val* self) {
8293 val* var /* : String */;
8294 static val* varonce;
8295 val* var1 /* : String */;
8296 char* var2 /* : NativeString */;
8297 long var3 /* : Int */;
8298 val* var4 /* : String */;
8299 if (varonce) {
8300 var1 = varonce;
8301 } else {
8302 var2 = "/";
8303 var3 = 1;
8304 var4 = string__NativeString__to_s_with_length(var2, var3);
8305 var1 = var4;
8306 varonce = var1;
8307 }
8308 var = var1;
8309 goto RET_LABEL;
8310 RET_LABEL:;
8311 return var;
8312 }
8313 /* method typing#ASlashExpr#property_name for (self: Object): String */
8314 val* VIRTUAL_typing__ASlashExpr__property_name(val* self) {
8315 val* var /* : String */;
8316 val* var1 /* : String */;
8317 var1 = typing__ASlashExpr__property_name(self);
8318 var = var1;
8319 RET_LABEL:;
8320 return var;
8321 }
8322 /* method typing#APercentExpr#property_name for (self: APercentExpr): String */
8323 val* typing__APercentExpr__property_name(val* self) {
8324 val* var /* : String */;
8325 static val* varonce;
8326 val* var1 /* : String */;
8327 char* var2 /* : NativeString */;
8328 long var3 /* : Int */;
8329 val* var4 /* : String */;
8330 if (varonce) {
8331 var1 = varonce;
8332 } else {
8333 var2 = "%";
8334 var3 = 1;
8335 var4 = string__NativeString__to_s_with_length(var2, var3);
8336 var1 = var4;
8337 varonce = var1;
8338 }
8339 var = var1;
8340 goto RET_LABEL;
8341 RET_LABEL:;
8342 return var;
8343 }
8344 /* method typing#APercentExpr#property_name for (self: Object): String */
8345 val* VIRTUAL_typing__APercentExpr__property_name(val* self) {
8346 val* var /* : String */;
8347 val* var1 /* : String */;
8348 var1 = typing__APercentExpr__property_name(self);
8349 var = var1;
8350 RET_LABEL:;
8351 return var;
8352 }
8353 /* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */
8354 val* typing__AUminusExpr__property_name(val* self) {
8355 val* var /* : String */;
8356 static val* varonce;
8357 val* var1 /* : String */;
8358 char* var2 /* : NativeString */;
8359 long var3 /* : Int */;
8360 val* var4 /* : String */;
8361 if (varonce) {
8362 var1 = varonce;
8363 } else {
8364 var2 = "unary -";
8365 var3 = 7;
8366 var4 = string__NativeString__to_s_with_length(var2, var3);
8367 var1 = var4;
8368 varonce = var1;
8369 }
8370 var = var1;
8371 goto RET_LABEL;
8372 RET_LABEL:;
8373 return var;
8374 }
8375 /* method typing#AUminusExpr#property_name for (self: Object): String */
8376 val* VIRTUAL_typing__AUminusExpr__property_name(val* self) {
8377 val* var /* : String */;
8378 val* var1 /* : String */;
8379 var1 = typing__AUminusExpr__property_name(self);
8380 var = var1;
8381 RET_LABEL:;
8382 return var;
8383 }
8384 /* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */
8385 val* typing__AUminusExpr__compute_raw_arguments(val* self) {
8386 val* var /* : Array[AExpr] */;
8387 val* var1 /* : Array[AExpr] */;
8388 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
8389 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[AExpr]>*/;
8390 CHECK_NEW_array__Array(var1);
8391 var = var1;
8392 goto RET_LABEL;
8393 RET_LABEL:;
8394 return var;
8395 }
8396 /* method typing#AUminusExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8397 val* VIRTUAL_typing__AUminusExpr__compute_raw_arguments(val* self) {
8398 val* var /* : Array[AExpr] */;
8399 val* var1 /* : Array[AExpr] */;
8400 var1 = typing__AUminusExpr__compute_raw_arguments(self);
8401 var = var1;
8402 RET_LABEL:;
8403 return var;
8404 }
8405 /* method typing#ACallExpr#property_name for (self: ACallExpr): String */
8406 val* typing__ACallExpr__property_name(val* self) {
8407 val* var /* : String */;
8408 val* var1 /* : TId */;
8409 val* var2 /* : String */;
8410 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallExpr>*/;
8411 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8412 var = var2;
8413 goto RET_LABEL;
8414 RET_LABEL:;
8415 return var;
8416 }
8417 /* method typing#ACallExpr#property_name for (self: Object): String */
8418 val* VIRTUAL_typing__ACallExpr__property_name(val* self) {
8419 val* var /* : String */;
8420 val* var1 /* : String */;
8421 var1 = typing__ACallExpr__property_name(self);
8422 var = var1;
8423 RET_LABEL:;
8424 return var;
8425 }
8426 /* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */
8427 val* typing__ACallExpr__compute_raw_arguments(val* self) {
8428 val* var /* : Array[AExpr] */;
8429 val* var1 /* : AExprs */;
8430 val* var2 /* : Array[AExpr] */;
8431 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallExpr>*/;
8432 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8433 var = var2;
8434 goto RET_LABEL;
8435 RET_LABEL:;
8436 return var;
8437 }
8438 /* method typing#ACallExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8439 val* VIRTUAL_typing__ACallExpr__compute_raw_arguments(val* self) {
8440 val* var /* : Array[AExpr] */;
8441 val* var1 /* : Array[AExpr] */;
8442 var1 = typing__ACallExpr__compute_raw_arguments(self);
8443 var = var1;
8444 RET_LABEL:;
8445 return var;
8446 }
8447 /* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */
8448 val* typing__ACallAssignExpr__property_name(val* self) {
8449 val* var /* : String */;
8450 val* var1 /* : TId */;
8451 val* var2 /* : String */;
8452 static val* varonce;
8453 val* var3 /* : String */;
8454 char* var4 /* : NativeString */;
8455 long var5 /* : Int */;
8456 val* var6 /* : String */;
8457 val* var7 /* : String */;
8458 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallAssignExpr>*/;
8459 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8460 if (varonce) {
8461 var3 = varonce;
8462 } else {
8463 var4 = "=";
8464 var5 = 1;
8465 var6 = string__NativeString__to_s_with_length(var4, var5);
8466 var3 = var6;
8467 varonce = var3;
8468 }
8469 var7 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_string__String___43d]))(var2, var3) /* + on <var2:String>*/;
8470 var = var7;
8471 goto RET_LABEL;
8472 RET_LABEL:;
8473 return var;
8474 }
8475 /* method typing#ACallAssignExpr#property_name for (self: Object): String */
8476 val* VIRTUAL_typing__ACallAssignExpr__property_name(val* self) {
8477 val* var /* : String */;
8478 val* var1 /* : String */;
8479 var1 = typing__ACallAssignExpr__property_name(self);
8480 var = var1;
8481 RET_LABEL:;
8482 return var;
8483 }
8484 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */
8485 val* typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8486 val* var /* : Array[AExpr] */;
8487 val* var1 /* : AExprs */;
8488 val* var2 /* : Array[AExpr] */;
8489 val* var_res /* var res: Array[AExpr] */;
8490 val* var3 /* : AExpr */;
8491 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallAssignExpr>*/;
8492 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8493 var_res = var2;
8494 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ACallAssignExpr>*/;
8495 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8496 var = var_res;
8497 goto RET_LABEL;
8498 RET_LABEL:;
8499 return var;
8500 }
8501 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8502 val* VIRTUAL_typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8503 val* var /* : Array[AExpr] */;
8504 val* var1 /* : Array[AExpr] */;
8505 var1 = typing__ACallAssignExpr__compute_raw_arguments(self);
8506 var = var1;
8507 RET_LABEL:;
8508 return var;
8509 }
8510 /* method typing#ABraExpr#property_name for (self: ABraExpr): String */
8511 val* typing__ABraExpr__property_name(val* self) {
8512 val* var /* : String */;
8513 static val* varonce;
8514 val* var1 /* : String */;
8515 char* var2 /* : NativeString */;
8516 long var3 /* : Int */;
8517 val* var4 /* : String */;
8518 if (varonce) {
8519 var1 = varonce;
8520 } else {
8521 var2 = "[]";
8522 var3 = 2;
8523 var4 = string__NativeString__to_s_with_length(var2, var3);
8524 var1 = var4;
8525 varonce = var1;
8526 }
8527 var = var1;
8528 goto RET_LABEL;
8529 RET_LABEL:;
8530 return var;
8531 }
8532 /* method typing#ABraExpr#property_name for (self: Object): String */
8533 val* VIRTUAL_typing__ABraExpr__property_name(val* self) {
8534 val* var /* : String */;
8535 val* var1 /* : String */;
8536 var1 = typing__ABraExpr__property_name(self);
8537 var = var1;
8538 RET_LABEL:;
8539 return var;
8540 }
8541 /* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */
8542 val* typing__ABraExpr__compute_raw_arguments(val* self) {
8543 val* var /* : Array[AExpr] */;
8544 val* var1 /* : AExprs */;
8545 val* var2 /* : Array[AExpr] */;
8546 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraExpr>*/;
8547 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8548 var = var2;
8549 goto RET_LABEL;
8550 RET_LABEL:;
8551 return var;
8552 }
8553 /* method typing#ABraExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8554 val* VIRTUAL_typing__ABraExpr__compute_raw_arguments(val* self) {
8555 val* var /* : Array[AExpr] */;
8556 val* var1 /* : Array[AExpr] */;
8557 var1 = typing__ABraExpr__compute_raw_arguments(self);
8558 var = var1;
8559 RET_LABEL:;
8560 return var;
8561 }
8562 /* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */
8563 val* typing__ABraAssignExpr__property_name(val* self) {
8564 val* var /* : String */;
8565 static val* varonce;
8566 val* var1 /* : String */;
8567 char* var2 /* : NativeString */;
8568 long var3 /* : Int */;
8569 val* var4 /* : String */;
8570 if (varonce) {
8571 var1 = varonce;
8572 } else {
8573 var2 = "[]=";
8574 var3 = 3;
8575 var4 = string__NativeString__to_s_with_length(var2, var3);
8576 var1 = var4;
8577 varonce = var1;
8578 }
8579 var = var1;
8580 goto RET_LABEL;
8581 RET_LABEL:;
8582 return var;
8583 }
8584 /* method typing#ABraAssignExpr#property_name for (self: Object): String */
8585 val* VIRTUAL_typing__ABraAssignExpr__property_name(val* self) {
8586 val* var /* : String */;
8587 val* var1 /* : String */;
8588 var1 = typing__ABraAssignExpr__property_name(self);
8589 var = var1;
8590 RET_LABEL:;
8591 return var;
8592 }
8593 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */
8594 val* typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8595 val* var /* : Array[AExpr] */;
8596 val* var1 /* : AExprs */;
8597 val* var2 /* : Array[AExpr] */;
8598 val* var_res /* var res: Array[AExpr] */;
8599 val* var3 /* : AExpr */;
8600 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraAssignExpr>*/;
8601 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8602 var_res = var2;
8603 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ABraAssignExpr>*/;
8604 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8605 var = var_res;
8606 goto RET_LABEL;
8607 RET_LABEL:;
8608 return var;
8609 }
8610 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8611 val* VIRTUAL_typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8612 val* var /* : Array[AExpr] */;
8613 val* var1 /* : Array[AExpr] */;
8614 var1 = typing__ABraAssignExpr__compute_raw_arguments(self);
8615 var = var1;
8616 RET_LABEL:;
8617 return var;
8618 }
8619 /* method typing#ASendReassignFormExpr#write_mproperty for (self: ASendReassignFormExpr): nullable MMethod */
8620 val* typing__ASendReassignFormExpr__write_mproperty(val* self) {
8621 val* var /* : nullable MMethod */;
8622 val* var1 /* : nullable CallSite */;
8623 val* var2 /* : MMethod */;
8624 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite]))(self) /* write_callsite on <self:ASendReassignFormExpr>*/;
8625 if (var1 == NULL) {
8626 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1378);
8627 exit(1);
8628 } else {
8629 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
8630 }
8631 var = var2;
8632 goto RET_LABEL;
8633 RET_LABEL:;
8634 return var;
8635 }
8636 /* method typing#ASendReassignFormExpr#write_mproperty for (self: Object): nullable MMethod */
8637 val* VIRTUAL_typing__ASendReassignFormExpr__write_mproperty(val* self) {
8638 val* var /* : nullable MMethod */;
8639 val* var1 /* : nullable MMethod */;
8640 var1 = typing__ASendReassignFormExpr__write_mproperty(self);
8641 var = var1;
8642 RET_LABEL:;
8643 return var;
8644 }
8645 /* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */
8646 val* typing__ASendReassignFormExpr__write_callsite(val* self) {
8647 val* var /* : nullable CallSite */;
8648 val* var1 /* : nullable CallSite */;
8649 var1 = self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val; /* @write_callsite on <self:ASendReassignFormExpr> */
8650 var = var1;
8651 RET_LABEL:;
8652 return var;
8653 }
8654 /* method typing#ASendReassignFormExpr#write_callsite for (self: Object): nullable CallSite */
8655 val* VIRTUAL_typing__ASendReassignFormExpr__write_callsite(val* self) {
8656 val* var /* : nullable CallSite */;
8657 val* var1 /* : nullable CallSite */;
8658 var1 = typing__ASendReassignFormExpr__write_callsite(self);
8659 var = var1;
8660 RET_LABEL:;
8661 return var;
8662 }
8663 /* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */
8664 void typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8665 self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val = p0; /* @write_callsite on <self:ASendReassignFormExpr> */
8666 RET_LABEL:;
8667 }
8668 /* method typing#ASendReassignFormExpr#write_callsite= for (self: Object, nullable CallSite) */
8669 void VIRTUAL_typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8670 typing__ASendReassignFormExpr__write_callsite_61d(self, p0);
8671 RET_LABEL:;
8672 }
8673 /* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */
8674 void typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8675 val* var_v /* var v: TypeVisitor */;
8676 val* var /* : AExpr */;
8677 val* var1 /* : nullable MType */;
8678 val* var_recvtype /* var recvtype: nullable MType */;
8679 val* var2 /* : String */;
8680 val* var_name /* var name: String */;
8681 val* var3 /* : null */;
8682 short int var4 /* : Bool */;
8683 short int var5 /* : Bool */;
8684 int cltype;
8685 int idtype;
8686 static val* varonce;
8687 val* var6 /* : String */;
8688 char* var7 /* : NativeString */;
8689 long var8 /* : Int */;
8690 val* var9 /* : String */;
8691 static val* varonce10;
8692 val* var11 /* : String */;
8693 char* var12 /* : NativeString */;
8694 long var13 /* : Int */;
8695 val* var14 /* : String */;
8696 val* var15 /* : Array[Object] */;
8697 long var16 /* : Int */;
8698 val* var17 /* : NativeArray[Object] */;
8699 val* var18 /* : String */;
8700 val* var19 /* : AExpr */;
8701 short int var20 /* : Bool */;
8702 int cltype21;
8703 int idtype22;
8704 short int var_for_self /* var for_self: Bool */;
8705 val* var23 /* : nullable CallSite */;
8706 val* var_callsite /* var callsite: nullable CallSite */;
8707 val* var24 /* : null */;
8708 short int var25 /* : Bool */;
8709 val* var26 /* : Array[AExpr] */;
8710 val* var_args /* var args: Array[AExpr] */;
8711 short int var27 /* : Bool */;
8712 val* var28 /* : MSignature */;
8713 val* var29 /* : nullable MType */;
8714 val* var_readtype /* var readtype: nullable MType */;
8715 val* var30 /* : null */;
8716 short int var31 /* : Bool */;
8717 static val* varonce32;
8718 val* var33 /* : String */;
8719 char* var34 /* : NativeString */;
8720 long var35 /* : Int */;
8721 val* var36 /* : String */;
8722 static val* varonce37;
8723 val* var38 /* : String */;
8724 char* var39 /* : NativeString */;
8725 long var40 /* : Int */;
8726 val* var41 /* : String */;
8727 val* var42 /* : Array[Object] */;
8728 long var43 /* : Int */;
8729 val* var44 /* : NativeArray[Object] */;
8730 val* var45 /* : String */;
8731 static val* varonce46;
8732 val* var47 /* : String */;
8733 char* var48 /* : NativeString */;
8734 long var49 /* : Int */;
8735 val* var50 /* : String */;
8736 val* var51 /* : String */;
8737 val* var52 /* : AExpr */;
8738 short int var53 /* : Bool */;
8739 int cltype54;
8740 int idtype55;
8741 val* var56 /* : nullable CallSite */;
8742 val* var_wcallsite /* var wcallsite: nullable CallSite */;
8743 val* var57 /* : null */;
8744 short int var58 /* : Bool */;
8745 val* var59 /* : MSignature */;
8746 val* var60 /* : Array[MParameter] */;
8747 val* var61 /* : nullable Object */;
8748 val* var62 /* : MType */;
8749 val* var63 /* : nullable MType */;
8750 val* var_wtype /* var wtype: nullable MType */;
8751 val* var64 /* : null */;
8752 short int var65 /* : Bool */;
8753 val* var66 /* : Array[nullable Object] */;
8754 val* var67 /* : AExpr */;
8755 short int var68 /* : Bool */;
8756 short int var69 /* : Bool */;
8757 var_v = p0;
8758 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8759 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
8760 var_recvtype = var1;
8761 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendReassignFormExpr>*/;
8762 var_name = var2;
8763 var3 = NULL;
8764 if (var_recvtype == NULL) {
8765 var4 = 1; /* is null */
8766 } else {
8767 var4 = 0; /* arg is null but recv is not */
8768 }
8769 if (var4){
8770 goto RET_LABEL;
8771 } else {
8772 }
8773 /* <var_recvtype:nullable MType(MType)> isa MNullType */
8774 cltype = type_model__MNullType.color;
8775 idtype = type_model__MNullType.id;
8776 if(cltype >= var_recvtype->type->table_size) {
8777 var5 = 0;
8778 } else {
8779 var5 = var_recvtype->type->type_table[cltype] == idtype;
8780 }
8781 if (var5){
8782 if (varonce) {
8783 var6 = varonce;
8784 } else {
8785 var7 = "Error: Method \'";
8786 var8 = 15;
8787 var9 = string__NativeString__to_s_with_length(var7, var8);
8788 var6 = var9;
8789 varonce = var6;
8790 }
8791 if (varonce10) {
8792 var11 = varonce10;
8793 } else {
8794 var12 = "\' call on \'null\'.";
8795 var13 = 17;
8796 var14 = string__NativeString__to_s_with_length(var12, var13);
8797 var11 = var14;
8798 varonce10 = var11;
8799 }
8800 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
8801 { /* var15 = array_instance Array[Object] */
8802 var16 = 3;
8803 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
8804 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
8805 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
8806 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
8807 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
8808 CHECK_NEW_array__Array(var15);
8809 }
8810 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
8811 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
8812 goto RET_LABEL;
8813 } else {
8814 }
8815 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8816 /* <var19:AExpr> isa ASelfExpr */
8817 cltype21 = type_parser_nodes__ASelfExpr.color;
8818 idtype22 = type_parser_nodes__ASelfExpr.id;
8819 if(cltype21 >= var19->type->table_size) {
8820 var20 = 0;
8821 } else {
8822 var20 = var19->type->type_table[cltype21] == idtype22;
8823 }
8824 var_for_self = var20;
8825 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>*/;
8826 var_callsite = var23;
8827 var24 = NULL;
8828 if (var_callsite == NULL) {
8829 var25 = 1; /* is null */
8830 } else {
8831 var25 = 0; /* arg is null but recv is not */
8832 }
8833 if (var25){
8834 goto RET_LABEL;
8835 } else {
8836 }
8837 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendReassignFormExpr>*/;
8838 var26 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendReassignFormExpr>*/;
8839 var_args = var26;
8840 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendReassignFormExpr>*/;
8841 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)>*/;
8842 var27;
8843 var28 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
8844 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MSignature__return_mtype]))(var28) /* return_mtype on <var28:MSignature>*/;
8845 var_readtype = var29;
8846 var30 = NULL;
8847 if (var_readtype == NULL) {
8848 var31 = 1; /* is null */
8849 } else {
8850 var31 = 0; /* arg is null but recv is not */
8851 }
8852 if (var31){
8853 if (varonce32) {
8854 var33 = varonce32;
8855 } else {
8856 var34 = "Error: ";
8857 var35 = 7;
8858 var36 = string__NativeString__to_s_with_length(var34, var35);
8859 var33 = var36;
8860 varonce32 = var33;
8861 }
8862 if (varonce37) {
8863 var38 = varonce37;
8864 } else {
8865 var39 = " is not a function";
8866 var40 = 18;
8867 var41 = string__NativeString__to_s_with_length(var39, var40);
8868 var38 = var41;
8869 varonce37 = var38;
8870 }
8871 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
8872 { /* var42 = array_instance Array[Object] */
8873 var43 = 3;
8874 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
8875 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var33;
8876 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_name;
8877 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
8878 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
8879 CHECK_NEW_array__Array(var42);
8880 }
8881 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
8882 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var45) /* error on <var_v:TypeVisitor>*/;
8883 goto RET_LABEL;
8884 } else {
8885 }
8886 if (varonce46) {
8887 var47 = varonce46;
8888 } else {
8889 var48 = "=";
8890 var49 = 1;
8891 var50 = string__NativeString__to_s_with_length(var48, var49);
8892 var47 = var50;
8893 varonce46 = var47;
8894 }
8895 var51 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var47) /* + on <var_name:String>*/;
8896 var52 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8897 /* <var52:AExpr> isa ASelfExpr */
8898 cltype54 = type_parser_nodes__ASelfExpr.color;
8899 idtype55 = type_parser_nodes__ASelfExpr.id;
8900 if(cltype54 >= var52->type->table_size) {
8901 var53 = 0;
8902 } else {
8903 var53 = var52->type->type_table[cltype54] == idtype55;
8904 }
8905 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>*/;
8906 var_wcallsite = var56;
8907 var57 = NULL;
8908 if (var_wcallsite == NULL) {
8909 var58 = 1; /* is null */
8910 } else {
8911 var58 = 0; /* arg is null but recv is not */
8912 }
8913 if (var58){
8914 goto RET_LABEL;
8915 } else {
8916 }
8917 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite_61d]))(self, var_wcallsite) /* write_callsite= on <self:ASendReassignFormExpr>*/;
8918 var59 = ((val* (*)(val*))(var_wcallsite->class->vft[COLOR_typing__CallSite__msignature]))(var_wcallsite) /* msignature on <var_wcallsite:nullable CallSite(CallSite)>*/;
8919 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_model__MSignature__mparameters]))(var59) /* mparameters on <var59:MSignature>*/;
8920 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var60) /* last on <var60:Array[MParameter]>*/;
8921 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MParameter__mtype]))(var61) /* mtype on <var61:nullable Object(MParameter)>*/;
8922 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>*/;
8923 var_wtype = var63;
8924 var64 = NULL;
8925 if (var_wtype == NULL) {
8926 var65 = 1; /* is null */
8927 } else {
8928 var65 = 0; /* arg is null but recv is not */
8929 }
8930 if (var65){
8931 goto RET_LABEL;
8932 } else {
8933 }
8934 var66 = ((val* (*)(val*))(var_args->class->vft[COLOR_array__Collection__to_a]))(var_args) /* to_a on <var_args:Array[AExpr]>*/;
8935 var_args = var66;
8936 var67 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
8937 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var67) /* add on <var_args:Array[AExpr]>*/;
8938 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)>*/;
8939 var68;
8940 var69 = 1;
8941 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var69) /* is_typed= on <self:ASendReassignFormExpr>*/;
8942 RET_LABEL:;
8943 }
8944 /* method typing#ASendReassignFormExpr#accept_typing for (self: Object, TypeVisitor) */
8945 void VIRTUAL_typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8946 typing__ASendReassignFormExpr__accept_typing(self, p0);
8947 RET_LABEL:;
8948 }
8949 /* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */
8950 val* typing__ACallReassignExpr__property_name(val* self) {
8951 val* var /* : String */;
8952 val* var1 /* : TId */;
8953 val* var2 /* : String */;
8954 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallReassignExpr>*/;
8955 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8956 var = var2;
8957 goto RET_LABEL;
8958 RET_LABEL:;
8959 return var;
8960 }
8961 /* method typing#ACallReassignExpr#property_name for (self: Object): String */
8962 val* VIRTUAL_typing__ACallReassignExpr__property_name(val* self) {
8963 val* var /* : String */;
8964 val* var1 /* : String */;
8965 var1 = typing__ACallReassignExpr__property_name(self);
8966 var = var1;
8967 RET_LABEL:;
8968 return var;
8969 }
8970 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */
8971 val* typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8972 val* var /* : Array[AExpr] */;
8973 val* var1 /* : AExprs */;
8974 val* var2 /* : Array[AExpr] */;
8975 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallReassignExpr>*/;
8976 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8977 var = var2;
8978 goto RET_LABEL;
8979 RET_LABEL:;
8980 return var;
8981 }
8982 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8983 val* VIRTUAL_typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8984 val* var /* : Array[AExpr] */;
8985 val* var1 /* : Array[AExpr] */;
8986 var1 = typing__ACallReassignExpr__compute_raw_arguments(self);
8987 var = var1;
8988 RET_LABEL:;
8989 return var;
8990 }
8991 /* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */
8992 val* typing__ABraReassignExpr__property_name(val* self) {
8993 val* var /* : String */;
8994 static val* varonce;
8995 val* var1 /* : String */;
8996 char* var2 /* : NativeString */;
8997 long var3 /* : Int */;
8998 val* var4 /* : String */;
8999 if (varonce) {
9000 var1 = varonce;
9001 } else {
9002 var2 = "[]";
9003 var3 = 2;
9004 var4 = string__NativeString__to_s_with_length(var2, var3);
9005 var1 = var4;
9006 varonce = var1;
9007 }
9008 var = var1;
9009 goto RET_LABEL;
9010 RET_LABEL:;
9011 return var;
9012 }
9013 /* method typing#ABraReassignExpr#property_name for (self: Object): String */
9014 val* VIRTUAL_typing__ABraReassignExpr__property_name(val* self) {
9015 val* var /* : String */;
9016 val* var1 /* : String */;
9017 var1 = typing__ABraReassignExpr__property_name(self);
9018 var = var1;
9019 RET_LABEL:;
9020 return var;
9021 }
9022 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */
9023 val* typing__ABraReassignExpr__compute_raw_arguments(val* self) {
9024 val* var /* : Array[AExpr] */;
9025 val* var1 /* : AExprs */;
9026 val* var2 /* : Array[AExpr] */;
9027 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraReassignExpr>*/;
9028 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
9029 var = var2;
9030 goto RET_LABEL;
9031 RET_LABEL:;
9032 return var;
9033 }
9034 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
9035 val* VIRTUAL_typing__ABraReassignExpr__compute_raw_arguments(val* self) {
9036 val* var /* : Array[AExpr] */;
9037 val* var1 /* : Array[AExpr] */;
9038 var1 = typing__ABraReassignExpr__compute_raw_arguments(self);
9039 var = var1;
9040 RET_LABEL:;
9041 return var;
9042 }
9043 /* method typing#AInitExpr#property_name for (self: AInitExpr): String */
9044 val* typing__AInitExpr__property_name(val* self) {
9045 val* var /* : String */;
9046 static val* varonce;
9047 val* var1 /* : String */;
9048 char* var2 /* : NativeString */;
9049 long var3 /* : Int */;
9050 val* var4 /* : String */;
9051 if (varonce) {
9052 var1 = varonce;
9053 } else {
9054 var2 = "init";
9055 var3 = 4;
9056 var4 = string__NativeString__to_s_with_length(var2, var3);
9057 var1 = var4;
9058 varonce = var1;
9059 }
9060 var = var1;
9061 goto RET_LABEL;
9062 RET_LABEL:;
9063 return var;
9064 }
9065 /* method typing#AInitExpr#property_name for (self: Object): String */
9066 val* VIRTUAL_typing__AInitExpr__property_name(val* self) {
9067 val* var /* : String */;
9068 val* var1 /* : String */;
9069 var1 = typing__AInitExpr__property_name(self);
9070 var = var1;
9071 RET_LABEL:;
9072 return var;
9073 }
9074 /* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */
9075 val* typing__AInitExpr__compute_raw_arguments(val* self) {
9076 val* var /* : Array[AExpr] */;
9077 val* var1 /* : AExprs */;
9078 val* var2 /* : Array[AExpr] */;
9079 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AInitExpr__n_args]))(self) /* n_args on <self:AInitExpr>*/;
9080 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
9081 var = var2;
9082 goto RET_LABEL;
9083 RET_LABEL:;
9084 return var;
9085 }
9086 /* method typing#AInitExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
9087 val* VIRTUAL_typing__AInitExpr__compute_raw_arguments(val* self) {
9088 val* var /* : Array[AExpr] */;
9089 val* var1 /* : Array[AExpr] */;
9090 var1 = typing__AInitExpr__compute_raw_arguments(self);
9091 var = var1;
9092 RET_LABEL:;
9093 return var;
9094 }
9095 /* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */
9096 val* typing__AExprs__to_a(val* self) {
9097 val* var /* : Array[AExpr] */;
9098 val* var1 /* : ANodes[AExpr] */;
9099 val* var2 /* : Array[nullable Object] */;
9100 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(self) /* n_exprs on <self:AExprs>*/;
9101 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:ANodes[AExpr]>*/;
9102 var = var2;
9103 goto RET_LABEL;
9104 RET_LABEL:;
9105 return var;
9106 }
9107 /* method typing#AExprs#to_a for (self: Object): Array[AExpr] */
9108 val* VIRTUAL_typing__AExprs__to_a(val* self) {
9109 val* var /* : Array[AExpr] */;
9110 val* var1 /* : Array[AExpr] */;
9111 var1 = typing__AExprs__to_a(self);
9112 var = var1;
9113 RET_LABEL:;
9114 return var;
9115 }
9116 /* method typing#ASuperExpr#mproperty for (self: ASuperExpr): nullable MMethod */
9117 val* typing__ASuperExpr__mproperty(val* self) {
9118 val* var /* : nullable MMethod */;
9119 val* var1 /* : nullable MMethod */;
9120 var1 = self->attrs[COLOR_typing__ASuperExpr___64dmproperty].val; /* @mproperty on <self:ASuperExpr> */
9121 var = var1;
9122 RET_LABEL:;
9123 return var;
9124 }
9125 /* method typing#ASuperExpr#mproperty for (self: Object): nullable MMethod */
9126 val* VIRTUAL_typing__ASuperExpr__mproperty(val* self) {
9127 val* var /* : nullable MMethod */;
9128 val* var1 /* : nullable MMethod */;
9129 var1 = typing__ASuperExpr__mproperty(self);
9130 var = var1;
9131 RET_LABEL:;
9132 return var;
9133 }
9134 /* method typing#ASuperExpr#mproperty= for (self: ASuperExpr, nullable MMethod) */
9135 void typing__ASuperExpr__mproperty_61d(val* self, val* p0) {
9136 self->attrs[COLOR_typing__ASuperExpr___64dmproperty].val = p0; /* @mproperty on <self:ASuperExpr> */
9137 RET_LABEL:;
9138 }
9139 /* method typing#ASuperExpr#mproperty= for (self: Object, nullable MMethod) */
9140 void VIRTUAL_typing__ASuperExpr__mproperty_61d(val* self, val* p0) {
9141 typing__ASuperExpr__mproperty_61d(self, p0);
9142 RET_LABEL:;
9143 }
9144 /* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */
9145 void typing__ASuperExpr__accept_typing(val* self, val* p0) {
9146 val* var_v /* var v: TypeVisitor */;
9147 val* var /* : AClassdef */;
9148 val* var1 /* : nullable MClassDef */;
9149 val* var2 /* : MClassType */;
9150 val* var_recvtype /* var recvtype: MClassType */;
9151 val* var3 /* : MPropDef */;
9152 val* var4 /* : MProperty */;
9153 val* var_mproperty /* var mproperty: MProperty */;
9154 short int var5 /* : Bool */;
9155 int cltype;
9156 int idtype;
9157 short int var6 /* : Bool */;
9158 static val* varonce;
9159 val* var7 /* : String */;
9160 char* var8 /* : NativeString */;
9161 long var9 /* : Int */;
9162 val* var10 /* : String */;
9163 val* var11 /* : MModule */;
9164 val* var12 /* : Array[MPropDef] */;
9165 val* var_superprops /* var superprops: Array[MPropDef] */;
9166 long var13 /* : Int */;
9167 long var14 /* : Int */;
9168 short int var15 /* : Bool */;
9169 short int var17 /* : Bool */;
9170 short int var18 /* : Bool */;
9171 short int var19 /* : Bool */;
9172 short int var_ /* var : Bool */;
9173 val* var20 /* : MPropDef */;
9174 short int var21 /* : Bool */;
9175 static val* varonce22;
9176 val* var23 /* : String */;
9177 char* var24 /* : NativeString */;
9178 long var25 /* : Int */;
9179 val* var26 /* : String */;
9180 static val* varonce27;
9181 val* var28 /* : String */;
9182 char* var29 /* : NativeString */;
9183 long var30 /* : Int */;
9184 val* var31 /* : String */;
9185 val* var32 /* : Array[Object] */;
9186 long var33 /* : Int */;
9187 val* var34 /* : NativeArray[Object] */;
9188 val* var35 /* : String */;
9189 val* var36 /* : nullable Object */;
9190 val* var_superprop /* var superprop: MPropDef */;
9191 short int var37 /* : Bool */;
9192 int cltype38;
9193 int idtype39;
9194 short int var40 /* : Bool */;
9195 val* var41 /* : MSignature */;
9196 val* var_msignature /* var msignature: MSignature */;
9197 val* var42 /* : AExprs */;
9198 val* var43 /* : Array[AExpr] */;
9199 val* var_args /* var args: Array[AExpr] */;
9200 long var44 /* : Int */;
9201 long var45 /* : Int */;
9202 short int var46 /* : Bool */;
9203 short int var48 /* : Bool */;
9204 int cltype49;
9205 int idtype50;
9206 short int var51 /* : Bool */;
9207 val* var52 /* : String */;
9208 short int var53 /* : Bool */;
9209 val* var54 /* : nullable MType */;
9210 short int var55 /* : Bool */;
9211 val* var56 /* : MPropDef */;
9212 short int var57 /* : Bool */;
9213 var_v = p0;
9214 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9215 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9216 if (var1 == NULL) {
9217 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1454);
9218 exit(1);
9219 } else {
9220 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9221 }
9222 var_recvtype = var2;
9223 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9224 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9225 var_mproperty = var4;
9226 /* <var_mproperty:MProperty> isa MMethod */
9227 cltype = type_model__MMethod.color;
9228 idtype = type_model__MMethod.id;
9229 if(cltype >= var_mproperty->type->table_size) {
9230 var5 = 0;
9231 } else {
9232 var5 = var_mproperty->type->type_table[cltype] == idtype;
9233 }
9234 var6 = !var5;
9235 if (var6){
9236 if (varonce) {
9237 var7 = varonce;
9238 } else {
9239 var8 = "Error: super only usable in a method";
9240 var9 = 36;
9241 var10 = string__NativeString__to_s_with_length(var8, var9);
9242 var7 = var10;
9243 varonce = var7;
9244 }
9245 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var7) /* error on <var_v:TypeVisitor>*/;
9246 goto RET_LABEL;
9247 } else {
9248 }
9249 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9250 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)>*/;
9251 var_superprops = var12;
9252 var13 = ((long (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__length]))(var_superprops) /* length on <var_superprops:Array[MPropDef]>*/;
9253 var14 = 0;
9254 { /* Inline kernel#Int#== (var13,var14) */
9255 var17 = var13 == var14;
9256 var15 = var17;
9257 goto RET_LABEL16;
9258 RET_LABEL16:(void)0;
9259 }
9260 if (var15){
9261 var19 = ((short int (*)(val*))(var_mproperty->class->vft[COLOR_model__MMethod__is_init]))(var_mproperty) /* is_init on <var_mproperty:MProperty(MMethod)>*/;
9262 var_ = var19;
9263 if (var19){
9264 var20 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9265 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_model__MPropDef__is_intro]))(var20) /* is_intro on <var20:MPropDef>*/;
9266 var18 = var21;
9267 } else {
9268 var18 = var_;
9269 }
9270 if (var18){
9271 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__process_superinit]))(self, var_v) /* process_superinit on <self:ASuperExpr>*/;
9272 goto RET_LABEL;
9273 } else {
9274 }
9275 if (varonce22) {
9276 var23 = varonce22;
9277 } else {
9278 var24 = "Error: No super method to call for ";
9279 var25 = 35;
9280 var26 = string__NativeString__to_s_with_length(var24, var25);
9281 var23 = var26;
9282 varonce22 = var23;
9283 }
9284 if (varonce27) {
9285 var28 = varonce27;
9286 } else {
9287 var29 = ".";
9288 var30 = 1;
9289 var31 = string__NativeString__to_s_with_length(var29, var30);
9290 var28 = var31;
9291 varonce27 = var28;
9292 }
9293 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9294 { /* var32 = array_instance Array[Object] */
9295 var33 = 3;
9296 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
9297 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
9298 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_mproperty;
9299 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
9300 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
9301 CHECK_NEW_array__Array(var32);
9302 }
9303 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
9304 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var35) /* error on <var_v:TypeVisitor>*/;
9305 goto RET_LABEL;
9306 } else {
9307 }
9308 var36 = ((val* (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__first]))(var_superprops) /* first on <var_superprops:Array[MPropDef]>*/;
9309 var_superprop = var36;
9310 /* <var_superprop:MPropDef> isa MMethodDef */
9311 cltype38 = type_model__MMethodDef.color;
9312 idtype39 = type_model__MMethodDef.id;
9313 if(cltype38 >= var_superprop->type->table_size) {
9314 var37 = 0;
9315 } else {
9316 var37 = var_superprop->type->type_table[cltype38] == idtype39;
9317 }
9318 if (!var37) {
9319 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/typing.nit", 1471);
9320 exit(1);
9321 }
9322 var40 = 1;
9323 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>*/;
9324 var_msignature = var41;
9325 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9326 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_typing__AExprs__to_a]))(var42) /* to_a on <var42:AExprs>*/;
9327 var_args = var43;
9328 var44 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9329 var45 = 0;
9330 { /* Inline kernel#Int#> (var44,var45) */
9331 /* Covariant cast for argument 0 (i) <var45:Int> isa OTHER */
9332 /* <var45:Int> isa OTHER */
9333 var48 = 1; /* easy <var45:Int> isa OTHER*/
9334 if (!var48) {
9335 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
9336 exit(1);
9337 }
9338 var51 = var44 > var45;
9339 var46 = var51;
9340 goto RET_LABEL47;
9341 RET_LABEL47:(void)0;
9342 }
9343 if (var46){
9344 var52 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty(MMethod)>*/;
9345 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>*/;
9346 var53;
9347 } else {
9348 }
9349 var54 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
9350 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var54) /* mtype= on <self:ASuperExpr>*/;
9351 var55 = 1;
9352 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var55) /* is_typed= on <self:ASuperExpr>*/;
9353 var56 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9354 var57 = 1;
9355 ((void (*)(val*, short int))(var56->class->vft[COLOR_typing__MPropDef__has_supercall_61d]))(var56, var57) /* has_supercall= on <var56:MPropDef>*/;
9356 RET_LABEL:;
9357 }
9358 /* method typing#ASuperExpr#accept_typing for (self: Object, TypeVisitor) */
9359 void VIRTUAL_typing__ASuperExpr__accept_typing(val* self, val* p0) {
9360 typing__ASuperExpr__accept_typing(self, p0);
9361 RET_LABEL:;
9362 }
9363 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
9364 void typing__ASuperExpr__process_superinit(val* self, val* p0) {
9365 val* var_v /* var v: TypeVisitor */;
9366 val* var /* : AClassdef */;
9367 val* var1 /* : nullable MClassDef */;
9368 val* var2 /* : MClassType */;
9369 val* var_recvtype /* var recvtype: MClassType */;
9370 val* var3 /* : MPropDef */;
9371 val* var4 /* : MProperty */;
9372 val* var_mproperty /* var mproperty: MProperty */;
9373 val* var5 /* : null */;
9374 val* var_superprop /* var superprop: nullable MMethodDef */;
9375 val* var6 /* : AClassdef */;
9376 val* var7 /* : nullable MClassDef */;
9377 val* var8 /* : Array[MClassType] */;
9378 val* var9 /* : Iterator[nullable Object] */;
9379 short int var10 /* : Bool */;
9380 val* var11 /* : nullable Object */;
9381 val* var_msupertype /* var msupertype: MClassType */;
9382 val* var12 /* : MModule */;
9383 val* var13 /* : MType */;
9384 val* var14 /* : ModelBuilder */;
9385 val* var15 /* : ToolContext */;
9386 long var16 /* : Int */;
9387 long var_errcount /* var errcount: Int */;
9388 val* var17 /* : String */;
9389 val* var18 /* : nullable MProperty */;
9390 short int var19 /* : Bool */;
9391 int cltype;
9392 int idtype;
9393 val* var_candidate /* var candidate: nullable MMethod */;
9394 val* var20 /* : null */;
9395 short int var21 /* : Bool */;
9396 val* var22 /* : ModelBuilder */;
9397 val* var23 /* : ToolContext */;
9398 long var24 /* : Int */;
9399 short int var25 /* : Bool */;
9400 short int var27 /* : Bool */;
9401 int cltype28;
9402 int idtype29;
9403 short int var30 /* : Bool */;
9404 short int var31 /* : Bool */;
9405 val* var32 /* : null */;
9406 short int var33 /* : Bool */;
9407 short int var_ /* var : Bool */;
9408 val* var34 /* : MProperty */;
9409 short int var35 /* : Bool */;
9410 static val* varonce;
9411 val* var36 /* : String */;
9412 char* var37 /* : NativeString */;
9413 long var38 /* : Int */;
9414 val* var39 /* : String */;
9415 static val* varonce40;
9416 val* var41 /* : String */;
9417 char* var42 /* : NativeString */;
9418 long var43 /* : Int */;
9419 val* var44 /* : String */;
9420 val* var45 /* : String */;
9421 static val* varonce46;
9422 val* var47 /* : String */;
9423 char* var48 /* : NativeString */;
9424 long var49 /* : Int */;
9425 val* var50 /* : String */;
9426 val* var51 /* : MProperty */;
9427 val* var52 /* : String */;
9428 val* var53 /* : Array[Object] */;
9429 long var54 /* : Int */;
9430 val* var55 /* : NativeArray[Object] */;
9431 val* var56 /* : String */;
9432 val* var57 /* : MModule */;
9433 val* var58 /* : Array[MPropDef] */;
9434 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
9435 val* var59 /* : null */;
9436 short int var60 /* : Bool */;
9437 val* var61 /* : nullable Object */;
9438 short int var62 /* : Bool */;
9439 long var63 /* : Int */;
9440 long var64 /* : Int */;
9441 short int var65 /* : Bool */;
9442 short int var67 /* : Bool */;
9443 int cltype68;
9444 int idtype69;
9445 short int var70 /* : Bool */;
9446 static val* varonce71;
9447 val* var72 /* : String */;
9448 char* var73 /* : NativeString */;
9449 long var74 /* : Int */;
9450 val* var75 /* : String */;
9451 static val* varonce76;
9452 val* var77 /* : String */;
9453 char* var78 /* : NativeString */;
9454 long var79 /* : Int */;
9455 val* var80 /* : String */;
9456 static val* varonce81;
9457 val* var82 /* : String */;
9458 char* var83 /* : NativeString */;
9459 long var84 /* : Int */;
9460 val* var85 /* : String */;
9461 static val* varonce86;
9462 val* var87 /* : String */;
9463 char* var88 /* : NativeString */;
9464 long var89 /* : Int */;
9465 val* var90 /* : String */;
9466 val* var91 /* : String */;
9467 val* var92 /* : Array[Object] */;
9468 long var93 /* : Int */;
9469 val* var94 /* : NativeArray[Object] */;
9470 val* var95 /* : String */;
9471 val* var96 /* : nullable Object */;
9472 val* var97 /* : null */;
9473 short int var98 /* : Bool */;
9474 static val* varonce99;
9475 val* var100 /* : String */;
9476 char* var101 /* : NativeString */;
9477 long var102 /* : Int */;
9478 val* var103 /* : String */;
9479 static val* varonce104;
9480 val* var105 /* : String */;
9481 char* var106 /* : NativeString */;
9482 long var107 /* : Int */;
9483 val* var108 /* : String */;
9484 val* var109 /* : Array[Object] */;
9485 long var110 /* : Int */;
9486 val* var111 /* : NativeArray[Object] */;
9487 val* var112 /* : String */;
9488 val* var113 /* : MProperty */;
9489 val* var114 /* : AExprs */;
9490 val* var115 /* : Array[AExpr] */;
9491 val* var_args /* var args: Array[AExpr] */;
9492 short int var116 /* : Bool */;
9493 val* var117 /* : MSignature */;
9494 val* var_msignature /* var msignature: MSignature */;
9495 long var118 /* : Int */;
9496 long var119 /* : Int */;
9497 short int var120 /* : Bool */;
9498 short int var122 /* : Bool */;
9499 int cltype123;
9500 int idtype124;
9501 short int var125 /* : Bool */;
9502 val* var126 /* : String */;
9503 short int var127 /* : Bool */;
9504 short int var128 /* : Bool */;
9505 var_v = p0;
9506 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9507 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9508 if (var1 == NULL) {
9509 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1485);
9510 exit(1);
9511 } else {
9512 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9513 }
9514 var_recvtype = var2;
9515 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9516 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9517 var_mproperty = var4;
9518 var5 = NULL;
9519 var_superprop = var5;
9520 var6 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9521 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var6) /* mclassdef on <var6:AClassdef>*/;
9522 if (var7 == NULL) {
9523 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1488);
9524 exit(1);
9525 } else {
9526 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__supertypes]))(var7) /* supertypes on <var7:nullable MClassDef>*/;
9527 }
9528 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Array[MClassType]>*/;
9529 for(;;) {
9530 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
9531 if(!var10) break;
9532 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
9533 var_msupertype = var11;
9534 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9535 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>*/;
9536 var_msupertype = var13;
9537 var14 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
9538 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var14) /* toolcontext on <var14:ModelBuilder>*/;
9539 var16 = ((long (*)(val*))(var15->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var15) /* error_count on <var15:ToolContext>*/;
9540 var_errcount = var16;
9541 var17 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty>*/;
9542 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>*/;
9543 /* <var18:nullable MProperty> isa nullable MMethod */
9544 cltype = type_nullable_model__MMethod.color;
9545 idtype = type_nullable_model__MMethod.id;
9546 if(var18 == NULL) {
9547 var19 = 1;
9548 } else {
9549 if(cltype >= var18->type->table_size) {
9550 var19 = 0;
9551 } else {
9552 var19 = var18->type->type_table[cltype] == idtype;
9553 }
9554 }
9555 if (!var19) {
9556 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/typing.nit", 1491);
9557 exit(1);
9558 }
9559 var_candidate = var18;
9560 var20 = NULL;
9561 if (var_candidate == NULL) {
9562 var21 = 1; /* is null */
9563 } else {
9564 var21 = 0; /* arg is null but recv is not */
9565 }
9566 if (var21){
9567 var22 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
9568 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var22) /* toolcontext on <var22:ModelBuilder>*/;
9569 var24 = ((long (*)(val*))(var23->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var23) /* error_count on <var23:ToolContext>*/;
9570 { /* Inline kernel#Int#> (var24,var_errcount) */
9571 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
9572 /* <var_errcount:Int> isa OTHER */
9573 var27 = 1; /* easy <var_errcount:Int> isa OTHER*/
9574 if (!var27) {
9575 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
9576 exit(1);
9577 }
9578 var30 = var24 > var_errcount;
9579 var25 = var30;
9580 goto RET_LABEL26;
9581 RET_LABEL26:(void)0;
9582 }
9583 if (var25){
9584 goto RET_LABEL;
9585 } else {
9586 }
9587 goto CONTINUE_label;
9588 } else {
9589 }
9590 var32 = NULL;
9591 if (var_superprop == NULL) {
9592 var33 = 0; /* is null */
9593 } else {
9594 var33 = 1; /* arg is null and recv is not */
9595 }
9596 var_ = var33;
9597 if (var33){
9598 var34 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9599 var35 = ((short int (*)(val*, val*))(var34->class->vft[COLOR_kernel__Object___33d_61d]))(var34, var_candidate) /* != on <var34:MProperty(MMethod)>*/;
9600 var31 = var35;
9601 } else {
9602 var31 = var_;
9603 }
9604 if (var31){
9605 if (varonce) {
9606 var36 = varonce;
9607 } else {
9608 var37 = "Error: conflicting super constructor to call for ";
9609 var38 = 49;
9610 var39 = string__NativeString__to_s_with_length(var37, var38);
9611 var36 = var39;
9612 varonce = var36;
9613 }
9614 if (varonce40) {
9615 var41 = varonce40;
9616 } else {
9617 var42 = ": ";
9618 var43 = 2;
9619 var44 = string__NativeString__to_s_with_length(var42, var43);
9620 var41 = var44;
9621 varonce40 = var41;
9622 }
9623 var45 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__full_name]))(var_candidate) /* full_name on <var_candidate:nullable MMethod(MMethod)>*/;
9624 if (varonce46) {
9625 var47 = varonce46;
9626 } else {
9627 var48 = ", ";
9628 var49 = 2;
9629 var50 = string__NativeString__to_s_with_length(var48, var49);
9630 var47 = var50;
9631 varonce46 = var47;
9632 }
9633 var51 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9634 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_model__MProperty__full_name]))(var51) /* full_name on <var51:MProperty(MMethod)>*/;
9635 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
9636 { /* var53 = array_instance Array[Object] */
9637 var54 = 6;
9638 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
9639 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var36;
9640 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_mproperty;
9641 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var41;
9642 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var45;
9643 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var47;
9644 ((struct instance_array__NativeArray*)var55)->values[5] = (val*) var52;
9645 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
9646 CHECK_NEW_array__Array(var53);
9647 }
9648 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
9649 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var56) /* error on <var_v:TypeVisitor>*/;
9650 goto RET_LABEL;
9651 } else {
9652 }
9653 var57 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9654 var58 = ((val* (*)(val*, val*, val*))(var_candidate->class->vft[COLOR_model__MProperty__lookup_definitions]))(var_candidate, var57, var_recvtype) /* lookup_definitions on <var_candidate:nullable MMethod(MMethod)>*/;
9655 var_candidatedefs = var58;
9656 var59 = NULL;
9657 if (var_superprop == NULL) {
9658 var60 = 0; /* is null */
9659 } else {
9660 var60 = 1; /* arg is null and recv is not */
9661 }
9662 if (var60){
9663 var61 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
9664 var62 = ((short int (*)(val*, val*))(var_superprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_superprop, var61) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9665 if (var62){
9666 goto CONTINUE_label;
9667 } else {
9668 }
9669 ((void (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidatedefs, var_superprop) /* add on <var_candidatedefs:Array[MMethodDef]>*/;
9670 } else {
9671 }
9672 var63 = ((long (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidatedefs) /* length on <var_candidatedefs:Array[MMethodDef]>*/;
9673 var64 = 1;
9674 { /* Inline kernel#Int#> (var63,var64) */
9675 /* Covariant cast for argument 0 (i) <var64:Int> isa OTHER */
9676 /* <var64:Int> isa OTHER */
9677 var67 = 1; /* easy <var64:Int> isa OTHER*/
9678 if (!var67) {
9679 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
9680 exit(1);
9681 }
9682 var70 = var63 > var64;
9683 var65 = var70;
9684 goto RET_LABEL66;
9685 RET_LABEL66:(void)0;
9686 }
9687 if (var65){
9688 if (varonce71) {
9689 var72 = varonce71;
9690 } else {
9691 var73 = "Error: confliting property definitions for property ";
9692 var74 = 52;
9693 var75 = string__NativeString__to_s_with_length(var73, var74);
9694 var72 = var75;
9695 varonce71 = var72;
9696 }
9697 if (varonce76) {
9698 var77 = varonce76;
9699 } else {
9700 var78 = " in ";
9701 var79 = 4;
9702 var80 = string__NativeString__to_s_with_length(var78, var79);
9703 var77 = var80;
9704 varonce76 = var77;
9705 }
9706 if (varonce81) {
9707 var82 = varonce81;
9708 } else {
9709 var83 = ": ";
9710 var84 = 2;
9711 var85 = string__NativeString__to_s_with_length(var83, var84);
9712 var82 = var85;
9713 varonce81 = var82;
9714 }
9715 if (varonce86) {
9716 var87 = varonce86;
9717 } else {
9718 var88 = ", ";
9719 var89 = 2;
9720 var90 = string__NativeString__to_s_with_length(var88, var89);
9721 var87 = var90;
9722 varonce86 = var87;
9723 }
9724 var91 = ((val* (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_string__Collection__join]))(var_candidatedefs, var87) /* join on <var_candidatedefs:Array[MMethodDef]>*/;
9725 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
9726 { /* var92 = array_instance Array[Object] */
9727 var93 = 6;
9728 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
9729 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var72;
9730 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var_mproperty;
9731 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var77;
9732 ((struct instance_array__NativeArray*)var94)->values[3] = (val*) var_recvtype;
9733 ((struct instance_array__NativeArray*)var94)->values[4] = (val*) var82;
9734 ((struct instance_array__NativeArray*)var94)->values[5] = (val*) var91;
9735 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
9736 CHECK_NEW_array__Array(var92);
9737 }
9738 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
9739 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var95) /* error on <var_v:TypeVisitor>*/;
9740 goto RET_LABEL;
9741 } else {
9742 }
9743 var96 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
9744 var_superprop = var96;
9745 CONTINUE_label: (void)0;
9746 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
9747 }
9748 BREAK_label: (void)0;
9749 var97 = NULL;
9750 if (var_superprop == NULL) {
9751 var98 = 1; /* is null */
9752 } else {
9753 var98 = 0; /* arg is null but recv is not */
9754 }
9755 if (var98){
9756 if (varonce99) {
9757 var100 = varonce99;
9758 } else {
9759 var101 = "Error: No super method to call for ";
9760 var102 = 35;
9761 var103 = string__NativeString__to_s_with_length(var101, var102);
9762 var100 = var103;
9763 varonce99 = var100;
9764 }
9765 if (varonce104) {
9766 var105 = varonce104;
9767 } else {
9768 var106 = ".";
9769 var107 = 1;
9770 var108 = string__NativeString__to_s_with_length(var106, var107);
9771 var105 = var108;
9772 varonce104 = var105;
9773 }
9774 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
9775 { /* var109 = array_instance Array[Object] */
9776 var110 = 3;
9777 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
9778 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var100;
9779 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var_mproperty;
9780 ((struct instance_array__NativeArray*)var111)->values[2] = (val*) var105;
9781 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
9782 CHECK_NEW_array__Array(var109);
9783 }
9784 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
9785 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var112) /* error on <var_v:TypeVisitor>*/;
9786 goto RET_LABEL;
9787 } else {
9788 }
9789 var113 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9790 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__mproperty_61d]))(self, var113) /* mproperty= on <self:ASuperExpr>*/;
9791 var114 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9792 var115 = ((val* (*)(val*))(var114->class->vft[COLOR_typing__AExprs__to_a]))(var114) /* to_a on <var114:AExprs>*/;
9793 var_args = var115;
9794 var116 = 1;
9795 var117 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(var_v, var_superprop, var_recvtype, var116) /* resolve_signature_for on <var_v:TypeVisitor>*/;
9796 var_msignature = var117;
9797 var118 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9798 var119 = 0;
9799 { /* Inline kernel#Int#> (var118,var119) */
9800 /* Covariant cast for argument 0 (i) <var119:Int> isa OTHER */
9801 /* <var119:Int> isa OTHER */
9802 var122 = 1; /* easy <var119:Int> isa OTHER*/
9803 if (!var122) {
9804 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
9805 exit(1);
9806 }
9807 var125 = var118 > var119;
9808 var120 = var125;
9809 goto RET_LABEL121;
9810 RET_LABEL121:(void)0;
9811 }
9812 if (var120){
9813 var126 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty>*/;
9814 var127 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, self, var_args, var126, var_msignature) /* check_signature on <var_v:TypeVisitor>*/;
9815 var127;
9816 } else {
9817 }
9818 var128 = 1;
9819 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var128) /* is_typed= on <self:ASuperExpr>*/;
9820 RET_LABEL:;
9821 }
9822 /* method typing#ASuperExpr#process_superinit for (self: Object, TypeVisitor) */
9823 void VIRTUAL_typing__ASuperExpr__process_superinit(val* self, val* p0) {
9824 typing__ASuperExpr__process_superinit(self, p0);
9825 RET_LABEL:;
9826 }
9827 /* method typing#ANewExpr#mproperty for (self: ANewExpr): nullable MMethod */
9828 val* typing__ANewExpr__mproperty(val* self) {
9829 val* var /* : nullable MMethod */;
9830 val* var1 /* : nullable CallSite */;
9831 val* var2 /* : MMethod */;
9832 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ANewExpr__callsite]))(self) /* callsite on <self:ANewExpr>*/;
9833 if (var1 == NULL) {
9834 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/typing.nit", 1533);
9835 exit(1);
9836 } else {
9837 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
9838 }
9839 var = var2;
9840 goto RET_LABEL;
9841 RET_LABEL:;
9842 return var;
9843 }
9844 /* method typing#ANewExpr#mproperty for (self: Object): nullable MMethod */
9845 val* VIRTUAL_typing__ANewExpr__mproperty(val* self) {
9846 val* var /* : nullable MMethod */;
9847 val* var1 /* : nullable MMethod */;
9848 var1 = typing__ANewExpr__mproperty(self);
9849 var = var1;
9850 RET_LABEL:;
9851 return var;
9852 }
9853 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
9854 val* typing__ANewExpr__callsite(val* self) {
9855 val* var /* : nullable CallSite */;
9856 val* var1 /* : nullable CallSite */;
9857 var1 = self->attrs[COLOR_typing__ANewExpr___64dcallsite].val; /* @callsite on <self:ANewExpr> */
9858 var = var1;
9859 RET_LABEL:;
9860 return var;
9861 }
9862 /* method typing#ANewExpr#callsite for (self: Object): nullable CallSite */
9863 val* VIRTUAL_typing__ANewExpr__callsite(val* self) {
9864 val* var /* : nullable CallSite */;
9865 val* var1 /* : nullable CallSite */;
9866 var1 = typing__ANewExpr__callsite(self);
9867 var = var1;
9868 RET_LABEL:;
9869 return var;
9870 }
9871 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
9872 void typing__ANewExpr__callsite_61d(val* self, val* p0) {
9873 self->attrs[COLOR_typing__ANewExpr___64dcallsite].val = p0; /* @callsite on <self:ANewExpr> */
9874 RET_LABEL:;
9875 }
9876 /* method typing#ANewExpr#callsite= for (self: Object, nullable CallSite) */
9877 void VIRTUAL_typing__ANewExpr__callsite_61d(val* self, val* p0) {
9878 typing__ANewExpr__callsite_61d(self, p0);
9879 RET_LABEL:;
9880 }