debugger: Permits the use of locally defined variables in injected code at runtime.
[nit.git] / c_src / typing.sep.1.c
1 #include "typing.sep.0.h"
2 /* method typing#ToolContext#typing_phase for (self: ToolContext): Phase */
3 val* typing__ToolContext__typing_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_typing__ToolContext___64dtyping_phase].val; /* @typing_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @typing_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 27);
10 exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method typing#ToolContext#typing_phase for (self: Object): Phase */
17 val* VIRTUAL_typing__ToolContext__typing_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = typing__ToolContext__typing_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method typing#ToolContext#typing_phase= for (self: ToolContext, Phase) */
26 void typing__ToolContext__typing_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_typing__ToolContext___64dtyping_phase].val = p0; /* @typing_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method typing#ToolContext#typing_phase= for (self: Object, Phase) */
31 void VIRTUAL_typing__ToolContext__typing_phase_61d(val* self, val* p0) {
32 typing__ToolContext__typing_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method typing#MPropDef#has_supercall for (self: MPropDef): Bool */
36 short int typing__MPropDef__has_supercall(val* self) {
37 short int var /* : Bool */;
38 short int var1 /* : Bool */;
39 var1 = self->attrs[COLOR_typing__MPropDef___64dhas_supercall].s; /* @has_supercall on <self:MPropDef> */
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method typing#MPropDef#has_supercall for (self: Object): Bool */
45 short int VIRTUAL_typing__MPropDef__has_supercall(val* self) {
46 short int var /* : Bool */;
47 short int var1 /* : Bool */;
48 var1 = typing__MPropDef__has_supercall(self);
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method typing#MPropDef#has_supercall= for (self: MPropDef, Bool) */
54 void typing__MPropDef__has_supercall_61d(val* self, short int p0) {
55 self->attrs[COLOR_typing__MPropDef___64dhas_supercall].s = p0; /* @has_supercall on <self:MPropDef> */
56 RET_LABEL:;
57 }
58 /* method typing#MPropDef#has_supercall= for (self: Object, Bool) */
59 void VIRTUAL_typing__MPropDef__has_supercall_61d(val* self, short int p0) {
60 typing__MPropDef__has_supercall_61d(self, p0);
61 RET_LABEL:;
62 }
63 /* method typing#TypingPhase#process_npropdef for (self: TypingPhase, APropdef) */
64 void typing__TypingPhase__process_npropdef(val* self, val* p0) {
65 val* var_npropdef /* var npropdef: APropdef */;
66 val* var /* : ToolContext */;
67 val* var1 /* : ModelBuilder */;
68 var_npropdef = p0;
69 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:TypingPhase>*/;
70 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var) /* modelbuilder on <var:ToolContext>*/;
71 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_typing__APropdef__do_typing]))(var_npropdef, var1) /* do_typing on <var_npropdef:APropdef>*/;
72 RET_LABEL:;
73 }
74 /* method typing#TypingPhase#process_npropdef for (self: Object, APropdef) */
75 void VIRTUAL_typing__TypingPhase__process_npropdef(val* self, val* p0) {
76 typing__TypingPhase__process_npropdef(self, p0);
77 RET_LABEL:;
78 }
79 /* method typing#TypeVisitor#modelbuilder for (self: TypeVisitor): ModelBuilder */
80 val* typing__TypeVisitor__modelbuilder(val* self) {
81 val* var /* : ModelBuilder */;
82 val* var1 /* : ModelBuilder */;
83 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val; /* @modelbuilder on <self:TypeVisitor> */
84 if (var1 == NULL) {
85 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelbuilder");
86 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 41);
87 exit(1);
88 }
89 var = var1;
90 RET_LABEL:;
91 return var;
92 }
93 /* method typing#TypeVisitor#modelbuilder for (self: Object): ModelBuilder */
94 val* VIRTUAL_typing__TypeVisitor__modelbuilder(val* self) {
95 val* var /* : ModelBuilder */;
96 val* var1 /* : ModelBuilder */;
97 var1 = typing__TypeVisitor__modelbuilder(self);
98 var = var1;
99 RET_LABEL:;
100 return var;
101 }
102 /* method typing#TypeVisitor#modelbuilder= for (self: TypeVisitor, ModelBuilder) */
103 void typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
104 self->attrs[COLOR_typing__TypeVisitor___64dmodelbuilder].val = p0; /* @modelbuilder on <self:TypeVisitor> */
105 RET_LABEL:;
106 }
107 /* method typing#TypeVisitor#modelbuilder= for (self: Object, ModelBuilder) */
108 void VIRTUAL_typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
109 typing__TypeVisitor__modelbuilder_61d(self, p0);
110 RET_LABEL:;
111 }
112 /* method typing#TypeVisitor#nclassdef for (self: TypeVisitor): AClassdef */
113 val* typing__TypeVisitor__nclassdef(val* self) {
114 val* var /* : AClassdef */;
115 val* var1 /* : AClassdef */;
116 var1 = self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val; /* @nclassdef on <self:TypeVisitor> */
117 if (var1 == NULL) {
118 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nclassdef");
119 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 42);
120 exit(1);
121 }
122 var = var1;
123 RET_LABEL:;
124 return var;
125 }
126 /* method typing#TypeVisitor#nclassdef for (self: Object): AClassdef */
127 val* VIRTUAL_typing__TypeVisitor__nclassdef(val* self) {
128 val* var /* : AClassdef */;
129 val* var1 /* : AClassdef */;
130 var1 = typing__TypeVisitor__nclassdef(self);
131 var = var1;
132 RET_LABEL:;
133 return var;
134 }
135 /* method typing#TypeVisitor#nclassdef= for (self: TypeVisitor, AClassdef) */
136 void typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
137 self->attrs[COLOR_typing__TypeVisitor___64dnclassdef].val = p0; /* @nclassdef on <self:TypeVisitor> */
138 RET_LABEL:;
139 }
140 /* method typing#TypeVisitor#nclassdef= for (self: Object, AClassdef) */
141 void VIRTUAL_typing__TypeVisitor__nclassdef_61d(val* self, val* p0) {
142 typing__TypeVisitor__nclassdef_61d(self, p0);
143 RET_LABEL:;
144 }
145 /* method typing#TypeVisitor#mpropdef for (self: TypeVisitor): MPropDef */
146 val* typing__TypeVisitor__mpropdef(val* self) {
147 val* var /* : MPropDef */;
148 val* var1 /* : MPropDef */;
149 var1 = self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val; /* @mpropdef on <self:TypeVisitor> */
150 if (var1 == NULL) {
151 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
152 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 43);
153 exit(1);
154 }
155 var = var1;
156 RET_LABEL:;
157 return var;
158 }
159 /* method typing#TypeVisitor#mpropdef for (self: Object): MPropDef */
160 val* VIRTUAL_typing__TypeVisitor__mpropdef(val* self) {
161 val* var /* : MPropDef */;
162 val* var1 /* : MPropDef */;
163 var1 = typing__TypeVisitor__mpropdef(self);
164 var = var1;
165 RET_LABEL:;
166 return var;
167 }
168 /* method typing#TypeVisitor#mpropdef= for (self: TypeVisitor, MPropDef) */
169 void typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
170 self->attrs[COLOR_typing__TypeVisitor___64dmpropdef].val = p0; /* @mpropdef on <self:TypeVisitor> */
171 RET_LABEL:;
172 }
173 /* method typing#TypeVisitor#mpropdef= for (self: Object, MPropDef) */
174 void VIRTUAL_typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
175 typing__TypeVisitor__mpropdef_61d(self, p0);
176 RET_LABEL:;
177 }
178 /* method typing#TypeVisitor#selfvariable for (self: TypeVisitor): Variable */
179 val* typing__TypeVisitor__selfvariable(val* self) {
180 val* var /* : Variable */;
181 val* var1 /* : Variable */;
182 var1 = self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val; /* @selfvariable on <self:TypeVisitor> */
183 if (var1 == NULL) {
184 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @selfvariable");
185 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 45);
186 exit(1);
187 }
188 var = var1;
189 RET_LABEL:;
190 return var;
191 }
192 /* method typing#TypeVisitor#selfvariable for (self: Object): Variable */
193 val* VIRTUAL_typing__TypeVisitor__selfvariable(val* self) {
194 val* var /* : Variable */;
195 val* var1 /* : Variable */;
196 var1 = typing__TypeVisitor__selfvariable(self);
197 var = var1;
198 RET_LABEL:;
199 return var;
200 }
201 /* method typing#TypeVisitor#selfvariable= for (self: TypeVisitor, Variable) */
202 void typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
203 self->attrs[COLOR_typing__TypeVisitor___64dselfvariable].val = p0; /* @selfvariable on <self:TypeVisitor> */
204 RET_LABEL:;
205 }
206 /* method typing#TypeVisitor#selfvariable= for (self: Object, Variable) */
207 void VIRTUAL_typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
208 typing__TypeVisitor__selfvariable_61d(self, p0);
209 RET_LABEL:;
210 }
211 /* method typing#TypeVisitor#init for (self: TypeVisitor, ModelBuilder, AClassdef, MPropDef) */
212 void typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
213 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
214 val* var_nclassdef /* var nclassdef: AClassdef */;
215 val* var_mpropdef /* var mpropdef: MPropDef */;
216 val* var /* : nullable MClassDef */;
217 val* var1 /* : MClass */;
218 val* var_mclass /* var mclass: MClass */;
219 val* var2 /* : Variable */;
220 static val* varonce;
221 val* var3 /* : String */;
222 char* var4 /* : NativeString */;
223 long var5 /* : Int */;
224 val* var6 /* : String */;
225 val* var_selfvariable /* var selfvariable: Variable */;
226 val* var7 /* : MClassType */;
227 var_modelbuilder = p0;
228 var_nclassdef = p1;
229 var_mpropdef = p2;
230 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:TypeVisitor>*/;
231 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef_61d]))(self, var_nclassdef) /* nclassdef= on <self:TypeVisitor>*/;
232 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:TypeVisitor>*/;
233 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
234 if (var == NULL) {
235 fprintf(stderr, "Runtime error: %s", "Reciever is null");
236 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 53);
237 exit(1);
238 } else {
239 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__mclass]))(var) /* mclass on <var:nullable MClassDef>*/;
240 }
241 var_mclass = var1;
242 var2 = NEW_scope__Variable(&type_scope__Variable);
243 if (varonce) {
244 var3 = varonce;
245 } else {
246 var4 = "self";
247 var5 = 4;
248 var6 = string__NativeString__to_s_with_length(var4, var5);
249 var3 = var6;
250 varonce = var3;
251 }
252 ((void (*)(val*, val*))(var2->class->vft[COLOR_scope__Variable__init]))(var2, var3) /* init on <var2:Variable>*/;
253 CHECK_NEW_scope__Variable(var2);
254 var_selfvariable = var2;
255 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__selfvariable_61d]))(self, var_selfvariable) /* selfvariable= on <self:TypeVisitor>*/;
256 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
257 ((void (*)(val*, val*))(var_selfvariable->class->vft[COLOR_typing__Variable__declared_type_61d]))(var_selfvariable, var7) /* declared_type= on <var_selfvariable:Variable>*/;
258 RET_LABEL:;
259 }
260 /* method typing#TypeVisitor#init for (self: Object, ModelBuilder, AClassdef, MPropDef) */
261 void VIRTUAL_typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
262 typing__TypeVisitor__init(self, p0, p1, p2);
263 RET_LABEL:;
264 }
265 /* method typing#TypeVisitor#mmodule for (self: TypeVisitor): MModule */
266 val* typing__TypeVisitor__mmodule(val* self) {
267 val* var /* : MModule */;
268 val* var1 /* : AClassdef */;
269 val* var2 /* : nullable MClassDef */;
270 val* var3 /* : MModule */;
271 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
272 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
273 if (var2 == NULL) {
274 fprintf(stderr, "Runtime error: %s", "Reciever is null");
275 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 60);
276 exit(1);
277 } else {
278 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
279 }
280 var = var3;
281 goto RET_LABEL;
282 RET_LABEL:;
283 return var;
284 }
285 /* method typing#TypeVisitor#mmodule for (self: Object): MModule */
286 val* VIRTUAL_typing__TypeVisitor__mmodule(val* self) {
287 val* var /* : MModule */;
288 val* var1 /* : MModule */;
289 var1 = typing__TypeVisitor__mmodule(self);
290 var = var1;
291 RET_LABEL:;
292 return var;
293 }
294 /* method typing#TypeVisitor#anchor for (self: TypeVisitor): MClassType */
295 val* typing__TypeVisitor__anchor(val* self) {
296 val* var /* : MClassType */;
297 val* var1 /* : AClassdef */;
298 val* var2 /* : nullable MClassDef */;
299 val* var3 /* : MClassType */;
300 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
301 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
302 if (var2 == NULL) {
303 fprintf(stderr, "Runtime error: %s", "Reciever is null");
304 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 62);
305 exit(1);
306 } else {
307 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var2) /* bound_mtype on <var2:nullable MClassDef>*/;
308 }
309 var = var3;
310 goto RET_LABEL;
311 RET_LABEL:;
312 return var;
313 }
314 /* method typing#TypeVisitor#anchor for (self: Object): MClassType */
315 val* VIRTUAL_typing__TypeVisitor__anchor(val* self) {
316 val* var /* : MClassType */;
317 val* var1 /* : MClassType */;
318 var1 = typing__TypeVisitor__anchor(self);
319 var = var1;
320 RET_LABEL:;
321 return var;
322 }
323 /* method typing#TypeVisitor#anchor_to for (self: TypeVisitor, MType): MType */
324 val* typing__TypeVisitor__anchor_to(val* self, val* p0) {
325 val* var /* : MType */;
326 val* var_mtype /* var mtype: MType */;
327 val* var1 /* : AClassdef */;
328 val* var2 /* : nullable MClassDef */;
329 val* var3 /* : MModule */;
330 val* var_mmodule /* var mmodule: MModule */;
331 val* var4 /* : AClassdef */;
332 val* var5 /* : nullable MClassDef */;
333 val* var6 /* : MClassType */;
334 val* var_anchor /* var anchor: MClassType */;
335 val* var7 /* : MType */;
336 var_mtype = p0;
337 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
338 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
339 if (var2 == NULL) {
340 fprintf(stderr, "Runtime error: %s", "Reciever is null");
341 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 66);
342 exit(1);
343 } else {
344 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
345 }
346 var_mmodule = var3;
347 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
348 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
349 if (var5 == NULL) {
350 fprintf(stderr, "Runtime error: %s", "Reciever is null");
351 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 67);
352 exit(1);
353 } else {
354 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
355 }
356 var_anchor = var6;
357 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>*/;
358 var = var7;
359 goto RET_LABEL;
360 RET_LABEL:;
361 return var;
362 }
363 /* method typing#TypeVisitor#anchor_to for (self: Object, MType): MType */
364 val* VIRTUAL_typing__TypeVisitor__anchor_to(val* self, val* p0) {
365 val* var /* : MType */;
366 val* var1 /* : MType */;
367 var1 = typing__TypeVisitor__anchor_to(self, p0);
368 var = var1;
369 RET_LABEL:;
370 return var;
371 }
372 /* method typing#TypeVisitor#is_subtype for (self: TypeVisitor, MType, MType): Bool */
373 short int typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
374 short int var /* : Bool */;
375 val* var_sub /* var sub: MType */;
376 val* var_sup /* var sup: MType */;
377 val* var1 /* : AClassdef */;
378 val* var2 /* : nullable MClassDef */;
379 val* var3 /* : MModule */;
380 val* var_mmodule /* var mmodule: MModule */;
381 val* var4 /* : AClassdef */;
382 val* var5 /* : nullable MClassDef */;
383 val* var6 /* : MClassType */;
384 val* var_anchor /* var anchor: MClassType */;
385 short int var7 /* : Bool */;
386 var_sub = p0;
387 var_sup = p1;
388 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
389 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
390 if (var2 == NULL) {
391 fprintf(stderr, "Runtime error: %s", "Reciever is null");
392 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 73);
393 exit(1);
394 } else {
395 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
396 }
397 var_mmodule = var3;
398 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
399 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
400 if (var5 == NULL) {
401 fprintf(stderr, "Runtime error: %s", "Reciever is null");
402 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 74);
403 exit(1);
404 } else {
405 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
406 }
407 var_anchor = var6;
408 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>*/;
409 var = var7;
410 goto RET_LABEL;
411 RET_LABEL:;
412 return var;
413 }
414 /* method typing#TypeVisitor#is_subtype for (self: Object, MType, MType): Bool */
415 short int VIRTUAL_typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
416 short int var /* : Bool */;
417 short int var1 /* : Bool */;
418 var1 = typing__TypeVisitor__is_subtype(self, p0, p1);
419 var = var1;
420 RET_LABEL:;
421 return var;
422 }
423 /* method typing#TypeVisitor#resolve_for for (self: TypeVisitor, MType, MType, Bool): MType */
424 val* typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
425 val* var /* : MType */;
426 val* var_mtype /* var mtype: MType */;
427 val* var_subtype /* var subtype: MType */;
428 short int var_for_self /* var for_self: Bool */;
429 val* var1 /* : AClassdef */;
430 val* var2 /* : nullable MClassDef */;
431 val* var3 /* : MModule */;
432 val* var_mmodule /* var mmodule: MModule */;
433 val* var4 /* : AClassdef */;
434 val* var5 /* : nullable MClassDef */;
435 val* var6 /* : MClassType */;
436 val* var_anchor /* var anchor: MClassType */;
437 short int var7 /* : Bool */;
438 val* var8 /* : MType */;
439 val* var_res /* var res: MType */;
440 var_mtype = p0;
441 var_subtype = p1;
442 var_for_self = p2;
443 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
444 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
445 if (var2 == NULL) {
446 fprintf(stderr, "Runtime error: %s", "Reciever is null");
447 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 80);
448 exit(1);
449 } else {
450 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
451 }
452 var_mmodule = var3;
453 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
454 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var4) /* mclassdef on <var4:AClassdef>*/;
455 if (var5 == NULL) {
456 fprintf(stderr, "Runtime error: %s", "Reciever is null");
457 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 81);
458 exit(1);
459 } else {
460 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:nullable MClassDef>*/;
461 }
462 var_anchor = var6;
463 var7 = !var_for_self;
464 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>*/;
465 var_res = var8;
466 var = var_res;
467 goto RET_LABEL;
468 RET_LABEL:;
469 return var;
470 }
471 /* method typing#TypeVisitor#resolve_for for (self: Object, MType, MType, Bool): MType */
472 val* VIRTUAL_typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
473 val* var /* : MType */;
474 val* var1 /* : MType */;
475 var1 = typing__TypeVisitor__resolve_for(self, p0, p1, p2);
476 var = var1;
477 RET_LABEL:;
478 return var;
479 }
480 /* method typing#TypeVisitor#resolve_signature_for for (self: TypeVisitor, MMethodDef, MType, Bool): MSignature */
481 val* typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
482 val* var /* : MSignature */;
483 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
484 val* var_recv /* var recv: MType */;
485 short int var_for_self /* var for_self: Bool */;
486 val* var1 /* : nullable MSignature */;
487 val* var2 /* : MType */;
488 short int var3 /* : Bool */;
489 int cltype;
490 int idtype;
491 const char* var_class_name;
492 var_mmethoddef = p0;
493 var_recv = p1;
494 var_for_self = p2;
495 var1 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
496 if (var1 == NULL) {
497 fprintf(stderr, "Runtime error: %s", "Cast failed");
498 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 94);
499 exit(1);
500 }
501 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>*/;
502 /* <var2:MType> isa MSignature */
503 cltype = type_model__MSignature.color;
504 idtype = type_model__MSignature.id;
505 if(cltype >= var2->type->table_size) {
506 var3 = 0;
507 } else {
508 var3 = var2->type->type_table[cltype] == idtype;
509 }
510 if (!var3) {
511 var_class_name = var2 == NULL ? "null" : var2->type->name;
512 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
513 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 94);
514 exit(1);
515 }
516 var = var2;
517 goto RET_LABEL;
518 RET_LABEL:;
519 return var;
520 }
521 /* method typing#TypeVisitor#resolve_signature_for for (self: Object, MMethodDef, MType, Bool): MSignature */
522 val* VIRTUAL_typing__TypeVisitor__resolve_signature_for(val* self, val* p0, val* p1, short int p2) {
523 val* var /* : MSignature */;
524 val* var1 /* : MSignature */;
525 var1 = typing__TypeVisitor__resolve_signature_for(self, p0, p1, p2);
526 var = var1;
527 RET_LABEL:;
528 return var;
529 }
530 /* method typing#TypeVisitor#check_subtype for (self: TypeVisitor, ANode, MType, MType): nullable MType */
531 val* typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
532 val* var /* : nullable MType */;
533 val* var_node /* var node: ANode */;
534 val* var_sub /* var sub: MType */;
535 val* var_sup /* var sup: MType */;
536 short int var1 /* : Bool */;
537 val* var2 /* : MType */;
538 short int var3 /* : Bool */;
539 val* var4 /* : ModelBuilder */;
540 static val* varonce;
541 val* var5 /* : String */;
542 char* var6 /* : NativeString */;
543 long var7 /* : Int */;
544 val* var8 /* : String */;
545 static val* varonce9;
546 val* var10 /* : String */;
547 char* var11 /* : NativeString */;
548 long var12 /* : Int */;
549 val* var13 /* : String */;
550 val* var14 /* : Array[Object] */;
551 long var15 /* : Int */;
552 val* var16 /* : NativeArray[Object] */;
553 val* var17 /* : String */;
554 val* var18 /* : null */;
555 var_node = p0;
556 var_sub = p1;
557 var_sup = p2;
558 var1 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
559 if (var1){
560 var = var_sub;
561 goto RET_LABEL;
562 } else {
563 }
564 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_sup) /* anchor_to on <self:TypeVisitor>*/;
565 var3 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var2) /* is_subtype on <self:TypeVisitor>*/;
566 if (var3){
567 var = var_sup;
568 goto RET_LABEL;
569 } else {
570 }
571 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
572 if (varonce) {
573 var5 = varonce;
574 } else {
575 var6 = "Type error: expected ";
576 var7 = 21;
577 var8 = string__NativeString__to_s_with_length(var6, var7);
578 var5 = var8;
579 varonce = var5;
580 }
581 if (varonce9) {
582 var10 = varonce9;
583 } else {
584 var11 = ", got ";
585 var12 = 6;
586 var13 = string__NativeString__to_s_with_length(var11, var12);
587 var10 = var13;
588 varonce9 = var10;
589 }
590 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
591 { /* var14 = array_instance Array[Object] */
592 var15 = 4;
593 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
594 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
595 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_sup;
596 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
597 ((struct instance_array__NativeArray*)var16)->values[3] = (val*) var_sub;
598 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
599 CHECK_NEW_array__Array(var14);
600 }
601 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
602 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var4, var_node, var17) /* error on <var4:ModelBuilder>*/;
603 var18 = NULL;
604 var = var18;
605 goto RET_LABEL;
606 RET_LABEL:;
607 return var;
608 }
609 /* method typing#TypeVisitor#check_subtype for (self: Object, ANode, MType, MType): nullable MType */
610 val* VIRTUAL_typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
611 val* var /* : nullable MType */;
612 val* var1 /* : nullable MType */;
613 var1 = typing__TypeVisitor__check_subtype(self, p0, p1, p2);
614 var = var1;
615 RET_LABEL:;
616 return var;
617 }
618 /* method typing#TypeVisitor#visit_stmt for (self: TypeVisitor, nullable AExpr) */
619 void typing__TypeVisitor__visit_stmt(val* self, val* p0) {
620 val* var_nexpr /* var nexpr: nullable AExpr */;
621 val* var /* : null */;
622 short int var1 /* : Bool */;
623 var_nexpr = p0;
624 var = NULL;
625 if (var_nexpr == NULL) {
626 var1 = 1; /* is null */
627 } else {
628 var1 = 0; /* arg is null but recv is not */
629 }
630 if (var1){
631 goto RET_LABEL;
632 } else {
633 }
634 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:nullable AExpr(AExpr)>*/;
635 RET_LABEL:;
636 }
637 /* method typing#TypeVisitor#visit_stmt for (self: Object, nullable AExpr) */
638 void VIRTUAL_typing__TypeVisitor__visit_stmt(val* self, val* p0) {
639 typing__TypeVisitor__visit_stmt(self, p0);
640 RET_LABEL:;
641 }
642 /* method typing#TypeVisitor#visit_expr for (self: TypeVisitor, AExpr): nullable MType */
643 val* typing__TypeVisitor__visit_expr(val* self, val* p0) {
644 val* var /* : nullable MType */;
645 val* var_nexpr /* var nexpr: AExpr */;
646 val* var1 /* : nullable MType */;
647 val* var_mtype /* var mtype: nullable MType */;
648 val* var2 /* : null */;
649 short int var3 /* : Bool */;
650 short int var4 /* : Bool */;
651 short int var5 /* : Bool */;
652 val* var6 /* : ModelBuilder */;
653 val* var7 /* : ToolContext */;
654 long var8 /* : Int */;
655 long var9 /* : Int */;
656 short int var10 /* : Bool */;
657 short int var12 /* : Bool */;
658 int cltype;
659 int idtype;
660 const char* var_class_name;
661 short int var13 /* : Bool */;
662 short int var14 /* : Bool */;
663 val* var15 /* : ModelBuilder */;
664 val* var16 /* : ToolContext */;
665 long var17 /* : Int */;
666 long var18 /* : Int */;
667 short int var19 /* : Bool */;
668 short int var21 /* : Bool */;
669 int cltype22;
670 int idtype23;
671 const char* var_class_name24;
672 short int var25 /* : Bool */;
673 static val* varonce;
674 val* var26 /* : String */;
675 char* var27 /* : NativeString */;
676 long var28 /* : Int */;
677 val* var29 /* : String */;
678 val* var30 /* : null */;
679 static val* varonce31;
680 val* var32 /* : String */;
681 char* var33 /* : NativeString */;
682 long var34 /* : Int */;
683 val* var35 /* : String */;
684 val* var36 /* : null */;
685 var_nexpr = p0;
686 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:AExpr>*/;
687 var1 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
688 var_mtype = var1;
689 var2 = NULL;
690 if (var_mtype == NULL) {
691 var3 = 0; /* is null */
692 } else {
693 var3 = 1; /* arg is null and recv is not */
694 }
695 if (var3){
696 var = var_mtype;
697 goto RET_LABEL;
698 } else {
699 }
700 var4 = ((short int (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__is_typed]))(var_nexpr) /* is_typed on <var_nexpr:AExpr>*/;
701 var5 = !var4;
702 if (var5){
703 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
704 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var6) /* toolcontext on <var6:ModelBuilder>*/;
705 var8 = ((long (*)(val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var7) /* error_count on <var7:ToolContext>*/;
706 var9 = 0;
707 { /* Inline kernel#Int#> (var8,var9) */
708 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
709 /* <var9:Int> isa OTHER */
710 var12 = 1; /* easy <var9:Int> isa OTHER*/
711 if (!var12) {
712 var_class_name = type_kernel__Int.name;
713 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
714 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
715 exit(1);
716 }
717 var13 = var8 > var9;
718 var10 = var13;
719 goto RET_LABEL11;
720 RET_LABEL11:(void)0;
721 }
722 var14 = !var10;
723 if (var14){
724 var15 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
725 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
726 var17 = ((long (*)(val*))(var16->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var16) /* verbose_level on <var16:ToolContext>*/;
727 var18 = 1;
728 { /* Inline kernel#Int#> (var17,var18) */
729 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
730 /* <var18:Int> isa OTHER */
731 var21 = 1; /* easy <var18:Int> isa OTHER*/
732 if (!var21) {
733 var_class_name24 = type_kernel__Int.name;
734 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
735 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
736 exit(1);
737 }
738 var25 = var17 > var18;
739 var19 = var25;
740 goto RET_LABEL20;
741 RET_LABEL20:(void)0;
742 }
743 if (var19){
744 if (varonce) {
745 var26 = varonce;
746 } else {
747 var27 = "No return type but no error.";
748 var28 = 28;
749 var29 = string__NativeString__to_s_with_length(var27, var28);
750 var26 = var29;
751 varonce = var26;
752 }
753 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_parser_nodes__ANode__debug]))(var_nexpr, var26) /* debug on <var_nexpr:AExpr>*/;
754 } else {
755 }
756 } else {
757 }
758 var30 = NULL;
759 var = var30;
760 goto RET_LABEL;
761 } else {
762 }
763 if (varonce31) {
764 var32 = varonce31;
765 } else {
766 var33 = "Type error: expected expression.";
767 var34 = 32;
768 var35 = string__NativeString__to_s_with_length(var33, var34);
769 var32 = var35;
770 varonce31 = var32;
771 }
772 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_nexpr, var32) /* error on <self:TypeVisitor>*/;
773 var36 = NULL;
774 var = var36;
775 goto RET_LABEL;
776 RET_LABEL:;
777 return var;
778 }
779 /* method typing#TypeVisitor#visit_expr for (self: Object, AExpr): nullable MType */
780 val* VIRTUAL_typing__TypeVisitor__visit_expr(val* self, val* p0) {
781 val* var /* : nullable MType */;
782 val* var1 /* : nullable MType */;
783 var1 = typing__TypeVisitor__visit_expr(self, p0);
784 var = var1;
785 RET_LABEL:;
786 return var;
787 }
788 /* method typing#TypeVisitor#visit_expr_subtype for (self: TypeVisitor, AExpr, nullable MType): nullable MType */
789 val* typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
790 val* var /* : nullable MType */;
791 val* var_nexpr /* var nexpr: AExpr */;
792 val* var_sup /* var sup: nullable MType */;
793 val* var1 /* : nullable MType */;
794 val* var_sub /* var sub: nullable MType */;
795 val* var2 /* : null */;
796 short int var3 /* : Bool */;
797 val* var4 /* : null */;
798 val* var5 /* : null */;
799 short int var6 /* : Bool */;
800 val* var7 /* : null */;
801 val* var8 /* : nullable MType */;
802 val* var_res /* var res: nullable MType */;
803 short int var9 /* : Bool */;
804 var_nexpr = p0;
805 var_sup = p1;
806 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
807 var_sub = var1;
808 var2 = NULL;
809 if (var_sub == NULL) {
810 var3 = 1; /* is null */
811 } else {
812 var3 = 0; /* arg is null but recv is not */
813 }
814 if (var3){
815 var4 = NULL;
816 var = var4;
817 goto RET_LABEL;
818 } else {
819 }
820 var5 = NULL;
821 if (var_sup == NULL) {
822 var6 = 1; /* is null */
823 } else {
824 var6 = 0; /* arg is null but recv is not */
825 }
826 if (var6){
827 var7 = NULL;
828 var = var7;
829 goto RET_LABEL;
830 } else {
831 }
832 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>*/;
833 var_res = var8;
834 if (var_res == NULL) {
835 var9 = 1; /* <var_sub:nullable MType(MType)> cannot be null */
836 } else {
837 var9 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___33d_61d]))(var_res, var_sub) /* != on <var_res:nullable MType>*/;
838 }
839 if (var9){
840 ((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>*/;
841 } else {
842 }
843 var = var_res;
844 goto RET_LABEL;
845 RET_LABEL:;
846 return var;
847 }
848 /* method typing#TypeVisitor#visit_expr_subtype for (self: Object, AExpr, nullable MType): nullable MType */
849 val* VIRTUAL_typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
850 val* var /* : nullable MType */;
851 val* var1 /* : nullable MType */;
852 var1 = typing__TypeVisitor__visit_expr_subtype(self, p0, p1);
853 var = var1;
854 RET_LABEL:;
855 return var;
856 }
857 /* method typing#TypeVisitor#visit_expr_bool for (self: TypeVisitor, AExpr): nullable MType */
858 val* typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
859 val* var /* : nullable MType */;
860 val* var_nexpr /* var nexpr: AExpr */;
861 val* var1 /* : nullable MType */;
862 val* var2 /* : nullable MType */;
863 var_nexpr = p0;
864 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__type_bool]))(self, var_nexpr) /* type_bool on <self:TypeVisitor>*/;
865 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var_nexpr, var1) /* visit_expr_subtype on <self:TypeVisitor>*/;
866 var = var2;
867 goto RET_LABEL;
868 RET_LABEL:;
869 return var;
870 }
871 /* method typing#TypeVisitor#visit_expr_bool for (self: Object, AExpr): nullable MType */
872 val* VIRTUAL_typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
873 val* var /* : nullable MType */;
874 val* var1 /* : nullable MType */;
875 var1 = typing__TypeVisitor__visit_expr_bool(self, p0);
876 var = var1;
877 RET_LABEL:;
878 return var;
879 }
880 /* method typing#TypeVisitor#visit_expr_cast for (self: TypeVisitor, ANode, AExpr, AType): nullable MType */
881 val* typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
882 val* var /* : nullable MType */;
883 val* var_node /* var node: ANode */;
884 val* var_nexpr /* var nexpr: AExpr */;
885 val* var_ntype /* var ntype: AType */;
886 val* var1 /* : nullable MType */;
887 val* var_sub /* var sub: nullable MType */;
888 val* var2 /* : null */;
889 short int var3 /* : Bool */;
890 val* var4 /* : null */;
891 val* var5 /* : nullable MType */;
892 val* var_sup /* var sup: nullable MType */;
893 val* var6 /* : null */;
894 short int var7 /* : Bool */;
895 val* var8 /* : null */;
896 val* var9 /* : AClassdef */;
897 val* var10 /* : nullable MClassDef */;
898 val* var11 /* : MModule */;
899 val* var_mmodule /* var mmodule: MModule */;
900 val* var12 /* : AClassdef */;
901 val* var13 /* : nullable MClassDef */;
902 val* var14 /* : MClassType */;
903 val* var_anchor /* var anchor: MClassType */;
904 short int var15 /* : Bool */;
905 val* var16 /* : ModelBuilder */;
906 static val* varonce;
907 val* var17 /* : String */;
908 char* var18 /* : NativeString */;
909 long var19 /* : Int */;
910 val* var20 /* : String */;
911 static val* varonce21;
912 val* var22 /* : String */;
913 char* var23 /* : NativeString */;
914 long var24 /* : Int */;
915 val* var25 /* : String */;
916 val* var26 /* : Array[Object] */;
917 long var27 /* : Int */;
918 val* var28 /* : NativeArray[Object] */;
919 val* var29 /* : String */;
920 short int var30 /* : Bool */;
921 short int var31 /* : Bool */;
922 short int var_ /* var : Bool */;
923 short int var32 /* : Bool */;
924 short int var33 /* : Bool */;
925 val* var34 /* : ModelBuilder */;
926 static val* varonce35;
927 val* var36 /* : String */;
928 char* var37 /* : NativeString */;
929 long var38 /* : Int */;
930 val* var39 /* : String */;
931 static val* varonce40;
932 val* var41 /* : String */;
933 char* var42 /* : NativeString */;
934 long var43 /* : Int */;
935 val* var44 /* : String */;
936 static val* varonce45;
937 val* var46 /* : String */;
938 char* var47 /* : NativeString */;
939 long var48 /* : Int */;
940 val* var49 /* : String */;
941 val* var50 /* : Array[Object] */;
942 long var51 /* : Int */;
943 val* var52 /* : NativeArray[Object] */;
944 val* var53 /* : String */;
945 var_node = p0;
946 var_nexpr = p1;
947 var_ntype = p2;
948 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(self, var_nexpr) /* visit_expr on <self:TypeVisitor>*/;
949 var_sub = var1;
950 var2 = NULL;
951 if (var_sub == NULL) {
952 var3 = 1; /* is null */
953 } else {
954 var3 = 0; /* arg is null but recv is not */
955 }
956 if (var3){
957 var4 = NULL;
958 var = var4;
959 goto RET_LABEL;
960 } else {
961 }
962 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(self, var_ntype) /* resolve_mtype on <self:TypeVisitor>*/;
963 var_sup = var5;
964 var6 = NULL;
965 if (var_sup == NULL) {
966 var7 = 1; /* is null */
967 } else {
968 var7 = 0; /* arg is null but recv is not */
969 }
970 if (var7){
971 var8 = NULL;
972 var = var8;
973 goto RET_LABEL;
974 } else {
975 }
976 var9 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
977 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var9) /* mclassdef on <var9:AClassdef>*/;
978 if (var10 == NULL) {
979 fprintf(stderr, "Runtime error: %s", "Reciever is null");
980 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 184);
981 exit(1);
982 } else {
983 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MClassDef__mmodule]))(var10) /* mmodule on <var10:nullable MClassDef>*/;
984 }
985 var_mmodule = var11;
986 var12 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
987 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var12) /* mclassdef on <var12:AClassdef>*/;
988 if (var13 == NULL) {
989 fprintf(stderr, "Runtime error: %s", "Reciever is null");
990 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 185);
991 exit(1);
992 } else {
993 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on <var13:nullable MClassDef>*/;
994 }
995 var_anchor = var14;
996 var15 = ((short int (*)(val*, val*))(var_sup->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup, var_sub) /* == on <var_sup:nullable MType(MType)>*/;
997 if (var15){
998 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
999 if (varonce) {
1000 var17 = varonce;
1001 } else {
1002 var18 = "Warning: Expression is already a ";
1003 var19 = 33;
1004 var20 = string__NativeString__to_s_with_length(var18, var19);
1005 var17 = var20;
1006 varonce = var17;
1007 }
1008 if (varonce21) {
1009 var22 = varonce21;
1010 } else {
1011 var23 = ".";
1012 var24 = 1;
1013 var25 = string__NativeString__to_s_with_length(var23, var24);
1014 var22 = var25;
1015 varonce21 = var22;
1016 }
1017 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
1018 { /* var26 = array_instance Array[Object] */
1019 var27 = 3;
1020 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
1021 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
1022 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_sup;
1023 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
1024 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
1025 CHECK_NEW_array__Array(var26);
1026 }
1027 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
1028 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var16, var_node, var29) /* warning on <var16:ModelBuilder>*/;
1029 } else {
1030 var31 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_sub, var_sup) /* is_subtype on <self:TypeVisitor>*/;
1031 var_ = var31;
1032 if (var31){
1033 var32 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:nullable MType(MType)>*/;
1034 var33 = !var32;
1035 var30 = var33;
1036 } else {
1037 var30 = var_;
1038 }
1039 if (var30){
1040 var34 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1041 if (varonce35) {
1042 var36 = varonce35;
1043 } else {
1044 var37 = "Warning: Expression is already a ";
1045 var38 = 33;
1046 var39 = string__NativeString__to_s_with_length(var37, var38);
1047 var36 = var39;
1048 varonce35 = var36;
1049 }
1050 if (varonce40) {
1051 var41 = varonce40;
1052 } else {
1053 var42 = " since it is a ";
1054 var43 = 15;
1055 var44 = string__NativeString__to_s_with_length(var42, var43);
1056 var41 = var44;
1057 varonce40 = var41;
1058 }
1059 if (varonce45) {
1060 var46 = varonce45;
1061 } else {
1062 var47 = ".";
1063 var48 = 1;
1064 var49 = string__NativeString__to_s_with_length(var47, var48);
1065 var46 = var49;
1066 varonce45 = var46;
1067 }
1068 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
1069 { /* var50 = array_instance Array[Object] */
1070 var51 = 5;
1071 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
1072 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var36;
1073 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_sup;
1074 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var41;
1075 ((struct instance_array__NativeArray*)var52)->values[3] = (val*) var_sub;
1076 ((struct instance_array__NativeArray*)var52)->values[4] = (val*) var46;
1077 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
1078 CHECK_NEW_array__Array(var50);
1079 }
1080 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
1081 ((void (*)(val*, val*, val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var34, var_node, var53) /* warning on <var34:ModelBuilder>*/;
1082 } else {
1083 }
1084 }
1085 var = var_sup;
1086 goto RET_LABEL;
1087 RET_LABEL:;
1088 return var;
1089 }
1090 /* method typing#TypeVisitor#visit_expr_cast for (self: Object, ANode, AExpr, AType): nullable MType */
1091 val* VIRTUAL_typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
1092 val* var /* : nullable MType */;
1093 val* var1 /* : nullable MType */;
1094 var1 = typing__TypeVisitor__visit_expr_cast(self, p0, p1, p2);
1095 var = var1;
1096 RET_LABEL:;
1097 return var;
1098 }
1099 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
1100 val* typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1101 val* var /* : nullable MProperty */;
1102 val* var_anode /* var anode: ANode */;
1103 val* var_mtype /* var mtype: MType */;
1104 val* var_name /* var name: String */;
1105 val* var1 /* : ModelBuilder */;
1106 val* var2 /* : AClassdef */;
1107 val* var3 /* : nullable MClassDef */;
1108 val* var4 /* : MModule */;
1109 val* var5 /* : nullable MProperty */;
1110 var_anode = p0;
1111 var_mtype = p1;
1112 var_name = p2;
1113 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1114 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1115 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var2) /* mclassdef on <var2:AClassdef>*/;
1116 if (var3 == NULL) {
1117 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1118 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 196);
1119 exit(1);
1120 } else {
1121 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:nullable MClassDef>*/;
1122 }
1123 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>*/;
1124 var = var5;
1125 goto RET_LABEL;
1126 RET_LABEL:;
1127 return var;
1128 }
1129 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: Object, ANode, MType, String): nullable MProperty */
1130 val* VIRTUAL_typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
1131 val* var /* : nullable MProperty */;
1132 val* var1 /* : nullable MProperty */;
1133 var1 = typing__TypeVisitor__try_get_mproperty_by_name2(self, p0, p1, p2);
1134 var = var1;
1135 RET_LABEL:;
1136 return var;
1137 }
1138 /* method typing#TypeVisitor#resolve_mtype for (self: TypeVisitor, AType): nullable MType */
1139 val* typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1140 val* var /* : nullable MType */;
1141 val* var_node /* var node: AType */;
1142 val* var1 /* : ModelBuilder */;
1143 val* var2 /* : AClassdef */;
1144 val* var3 /* : nullable MType */;
1145 var_node = p0;
1146 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1147 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1148 var3 = ((val* (*)(val*, val*, val*))(var1->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var1, var2, var_node) /* resolve_mtype on <var1:ModelBuilder>*/;
1149 var = var3;
1150 goto RET_LABEL;
1151 RET_LABEL:;
1152 return var;
1153 }
1154 /* method typing#TypeVisitor#resolve_mtype for (self: Object, AType): nullable MType */
1155 val* VIRTUAL_typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
1156 val* var /* : nullable MType */;
1157 val* var1 /* : nullable MType */;
1158 var1 = typing__TypeVisitor__resolve_mtype(self, p0);
1159 var = var1;
1160 RET_LABEL:;
1161 return var;
1162 }
1163 /* method typing#TypeVisitor#try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1164 val* typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1165 val* var /* : nullable MClass */;
1166 val* var_node /* var node: ANode */;
1167 val* var_name /* var name: String */;
1168 val* var1 /* : AClassdef */;
1169 val* var2 /* : nullable MClassDef */;
1170 val* var3 /* : MModule */;
1171 val* var_mmodule /* var mmodule: MModule */;
1172 val* var4 /* : ModelBuilder */;
1173 val* var5 /* : nullable MClass */;
1174 val* var_mclass /* var mclass: nullable MClass */;
1175 var_node = p0;
1176 var_name = p1;
1177 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1178 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1179 if (var2 == NULL) {
1180 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1181 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 206);
1182 exit(1);
1183 } else {
1184 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1185 }
1186 var_mmodule = var3;
1187 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1188 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>*/;
1189 var_mclass = var5;
1190 var = var_mclass;
1191 goto RET_LABEL;
1192 RET_LABEL:;
1193 return var;
1194 }
1195 /* method typing#TypeVisitor#try_get_mclass for (self: Object, ANode, String): nullable MClass */
1196 val* VIRTUAL_typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
1197 val* var /* : nullable MClass */;
1198 val* var1 /* : nullable MClass */;
1199 var1 = typing__TypeVisitor__try_get_mclass(self, p0, p1);
1200 var = var1;
1201 RET_LABEL:;
1202 return var;
1203 }
1204 /* method typing#TypeVisitor#get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
1205 val* typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1206 val* var /* : nullable MClass */;
1207 val* var_node /* var node: ANode */;
1208 val* var_name /* var name: String */;
1209 val* var1 /* : AClassdef */;
1210 val* var2 /* : nullable MClassDef */;
1211 val* var3 /* : MModule */;
1212 val* var_mmodule /* var mmodule: MModule */;
1213 val* var4 /* : ModelBuilder */;
1214 val* var5 /* : nullable MClass */;
1215 val* var_mclass /* var mclass: nullable MClass */;
1216 val* var6 /* : null */;
1217 short int var7 /* : Bool */;
1218 val* var8 /* : ModelBuilder */;
1219 static val* varonce;
1220 val* var9 /* : String */;
1221 char* var10 /* : NativeString */;
1222 long var11 /* : Int */;
1223 val* var12 /* : String */;
1224 static val* varonce13;
1225 val* var14 /* : String */;
1226 char* var15 /* : NativeString */;
1227 long var16 /* : Int */;
1228 val* var17 /* : String */;
1229 val* var18 /* : Array[Object] */;
1230 long var19 /* : Int */;
1231 val* var20 /* : NativeArray[Object] */;
1232 val* var21 /* : String */;
1233 var_node = p0;
1234 var_name = p1;
1235 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(self) /* nclassdef on <self:TypeVisitor>*/;
1236 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var1) /* mclassdef on <var1:AClassdef>*/;
1237 if (var2 == NULL) {
1238 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1239 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 213);
1240 exit(1);
1241 } else {
1242 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:nullable MClassDef>*/;
1243 }
1244 var_mmodule = var3;
1245 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1246 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>*/;
1247 var_mclass = var5;
1248 var6 = NULL;
1249 if (var_mclass == NULL) {
1250 var7 = 1; /* is null */
1251 } else {
1252 var7 = 0; /* arg is null but recv is not */
1253 }
1254 if (var7){
1255 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1256 if (varonce) {
1257 var9 = varonce;
1258 } else {
1259 var10 = "Type Error: missing primitive class `";
1260 var11 = 37;
1261 var12 = string__NativeString__to_s_with_length(var10, var11);
1262 var9 = var12;
1263 varonce = var9;
1264 }
1265 if (varonce13) {
1266 var14 = varonce13;
1267 } else {
1268 var15 = "\'.";
1269 var16 = 2;
1270 var17 = string__NativeString__to_s_with_length(var15, var16);
1271 var14 = var17;
1272 varonce13 = var14;
1273 }
1274 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
1275 { /* var18 = array_instance Array[Object] */
1276 var19 = 3;
1277 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
1278 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
1279 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_name;
1280 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
1281 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
1282 CHECK_NEW_array__Array(var18);
1283 }
1284 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
1285 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var8, var_node, var21) /* error on <var8:ModelBuilder>*/;
1286 } else {
1287 }
1288 var = var_mclass;
1289 goto RET_LABEL;
1290 RET_LABEL:;
1291 return var;
1292 }
1293 /* method typing#TypeVisitor#get_mclass for (self: Object, ANode, String): nullable MClass */
1294 val* VIRTUAL_typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
1295 val* var /* : nullable MClass */;
1296 val* var1 /* : nullable MClass */;
1297 var1 = typing__TypeVisitor__get_mclass(self, p0, p1);
1298 var = var1;
1299 RET_LABEL:;
1300 return var;
1301 }
1302 /* method typing#TypeVisitor#type_bool for (self: TypeVisitor, ANode): nullable MType */
1303 val* typing__TypeVisitor__type_bool(val* self, val* p0) {
1304 val* var /* : nullable MType */;
1305 val* var_node /* var node: ANode */;
1306 static val* varonce;
1307 val* var1 /* : String */;
1308 char* var2 /* : NativeString */;
1309 long var3 /* : Int */;
1310 val* var4 /* : String */;
1311 val* var5 /* : nullable MClass */;
1312 val* var_mclass /* var mclass: nullable MClass */;
1313 val* var6 /* : null */;
1314 short int var7 /* : Bool */;
1315 val* var8 /* : null */;
1316 val* var9 /* : MClassType */;
1317 var_node = p0;
1318 if (varonce) {
1319 var1 = varonce;
1320 } else {
1321 var2 = "Bool";
1322 var3 = 4;
1323 var4 = string__NativeString__to_s_with_length(var2, var3);
1324 var1 = var4;
1325 varonce = var1;
1326 }
1327 var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(self, var_node, var1) /* get_mclass on <self:TypeVisitor>*/;
1328 var_mclass = var5;
1329 var6 = NULL;
1330 if (var_mclass == NULL) {
1331 var7 = 1; /* is null */
1332 } else {
1333 var7 = 0; /* arg is null but recv is not */
1334 }
1335 if (var7){
1336 var8 = NULL;
1337 var = var8;
1338 goto RET_LABEL;
1339 } else {
1340 }
1341 var9 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
1342 var = var9;
1343 goto RET_LABEL;
1344 RET_LABEL:;
1345 return var;
1346 }
1347 /* method typing#TypeVisitor#type_bool for (self: Object, ANode): nullable MType */
1348 val* VIRTUAL_typing__TypeVisitor__type_bool(val* self, val* p0) {
1349 val* var /* : nullable MType */;
1350 val* var1 /* : nullable MType */;
1351 var1 = typing__TypeVisitor__type_bool(self, p0);
1352 var = var1;
1353 RET_LABEL:;
1354 return var;
1355 }
1356 /* method typing#TypeVisitor#get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
1357 val* typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1358 val* var /* : nullable CallSite */;
1359 val* var_node /* var node: ANode */;
1360 val* var_recvtype /* var recvtype: MType */;
1361 val* var_name /* var name: String */;
1362 short int var_recv_is_self /* var recv_is_self: Bool */;
1363 val* var1 /* : MType */;
1364 val* var_unsafe_type /* var unsafe_type: MType */;
1365 short int var2 /* : Bool */;
1366 int cltype;
1367 int idtype;
1368 static val* varonce;
1369 val* var3 /* : String */;
1370 char* var4 /* : NativeString */;
1371 long var5 /* : Int */;
1372 val* var6 /* : String */;
1373 static val* varonce7;
1374 val* var8 /* : String */;
1375 char* var9 /* : NativeString */;
1376 long var10 /* : Int */;
1377 val* var11 /* : String */;
1378 val* var12 /* : Array[Object] */;
1379 long var13 /* : Int */;
1380 val* var14 /* : NativeArray[Object] */;
1381 val* var15 /* : String */;
1382 val* var16 /* : null */;
1383 val* var17 /* : nullable MProperty */;
1384 val* var_mproperty /* var mproperty: nullable MProperty */;
1385 val* var18 /* : null */;
1386 short int var19 /* : Bool */;
1387 val* var20 /* : ModelBuilder */;
1388 static val* varonce21;
1389 val* var22 /* : String */;
1390 char* var23 /* : NativeString */;
1391 long var24 /* : Int */;
1392 val* var25 /* : String */;
1393 static val* varonce26;
1394 val* var27 /* : String */;
1395 char* var28 /* : NativeString */;
1396 long var29 /* : Int */;
1397 val* var30 /* : String */;
1398 static val* varonce31;
1399 val* var32 /* : String */;
1400 char* var33 /* : NativeString */;
1401 long var34 /* : Int */;
1402 val* var35 /* : String */;
1403 val* var36 /* : Array[Object] */;
1404 long var37 /* : Int */;
1405 val* var38 /* : NativeArray[Object] */;
1406 val* var39 /* : String */;
1407 val* var40 /* : ModelBuilder */;
1408 static val* varonce41;
1409 val* var42 /* : String */;
1410 char* var43 /* : NativeString */;
1411 long var44 /* : Int */;
1412 val* var45 /* : String */;
1413 static val* varonce46;
1414 val* var47 /* : String */;
1415 char* var48 /* : NativeString */;
1416 long var49 /* : Int */;
1417 val* var50 /* : String */;
1418 static val* varonce51;
1419 val* var52 /* : String */;
1420 char* var53 /* : NativeString */;
1421 long var54 /* : Int */;
1422 val* var55 /* : String */;
1423 val* var56 /* : Array[Object] */;
1424 long var57 /* : Int */;
1425 val* var58 /* : NativeArray[Object] */;
1426 val* var59 /* : String */;
1427 val* var60 /* : null */;
1428 short int var61 /* : Bool */;
1429 int cltype62;
1430 int idtype63;
1431 short int var64 /* : Bool */;
1432 short int var65 /* : Bool */;
1433 val* var66 /* : MVisibility */;
1434 val* var67 /* : MVisibility */;
1435 short int var68 /* : Bool */;
1436 short int var_ /* var : Bool */;
1437 short int var69 /* : Bool */;
1438 short int var_70 /* var : Bool */;
1439 val* var71 /* : MModule */;
1440 val* var72 /* : MClassDef */;
1441 val* var73 /* : MModule */;
1442 val* var74 /* : MVisibility */;
1443 val* var75 /* : MVisibility */;
1444 short int var76 /* : Bool */;
1445 val* var77 /* : ModelBuilder */;
1446 static val* varonce78;
1447 val* var79 /* : String */;
1448 char* var80 /* : NativeString */;
1449 long var81 /* : Int */;
1450 val* var82 /* : String */;
1451 static val* varonce83;
1452 val* var84 /* : String */;
1453 char* var85 /* : NativeString */;
1454 long var86 /* : Int */;
1455 val* var87 /* : String */;
1456 val* var88 /* : MClassDef */;
1457 val* var89 /* : MModule */;
1458 val* var90 /* : MModule */;
1459 val* var91 /* : MVisibility */;
1460 val* var92 /* : Array[Object] */;
1461 long var93 /* : Int */;
1462 val* var94 /* : NativeArray[Object] */;
1463 val* var95 /* : String */;
1464 val* var96 /* : null */;
1465 val* var97 /* : MModule */;
1466 val* var98 /* : Array[MPropDef] */;
1467 val* var_propdefs /* var propdefs: Array[MMethodDef] */;
1468 long var99 /* : Int */;
1469 long var100 /* : Int */;
1470 short int var101 /* : Bool */;
1471 short int var103 /* : Bool */;
1472 val* var104 /* : ModelBuilder */;
1473 static val* varonce105;
1474 val* var106 /* : String */;
1475 char* var107 /* : NativeString */;
1476 long var108 /* : Int */;
1477 val* var109 /* : String */;
1478 static val* varonce110;
1479 val* var111 /* : String */;
1480 char* var112 /* : NativeString */;
1481 long var113 /* : Int */;
1482 val* var114 /* : String */;
1483 val* var115 /* : Array[Object] */;
1484 long var116 /* : Int */;
1485 val* var117 /* : NativeArray[Object] */;
1486 val* var118 /* : String */;
1487 val* var119 /* : null */;
1488 long var120 /* : Int */;
1489 long var121 /* : Int */;
1490 short int var122 /* : Bool */;
1491 short int var124 /* : Bool */;
1492 val* var125 /* : nullable Object */;
1493 val* var_mpropdef /* var mpropdef: nullable Object */;
1494 val* var126 /* : ModelBuilder */;
1495 static val* varonce127;
1496 val* var128 /* : String */;
1497 char* var129 /* : NativeString */;
1498 long var130 /* : Int */;
1499 val* var131 /* : String */;
1500 static val* varonce132;
1501 val* var133 /* : String */;
1502 char* var134 /* : NativeString */;
1503 long var135 /* : Int */;
1504 val* var136 /* : String */;
1505 static val* varonce137;
1506 val* var138 /* : String */;
1507 char* var139 /* : NativeString */;
1508 long var140 /* : Int */;
1509 val* var141 /* : String */;
1510 static val* varonce142;
1511 val* var143 /* : String */;
1512 char* var144 /* : NativeString */;
1513 long var145 /* : Int */;
1514 val* var146 /* : String */;
1515 val* var147 /* : String */;
1516 val* var148 /* : Array[Object] */;
1517 long var149 /* : Int */;
1518 val* var150 /* : NativeArray[Object] */;
1519 val* var151 /* : String */;
1520 val* var152 /* : MPropDef */;
1521 val* var153 /* : MSignature */;
1522 val* var_msignature /* var msignature: MSignature */;
1523 short int var154 /* : Bool */;
1524 short int var_erasure_cast /* var erasure_cast: Bool */;
1525 val* var155 /* : nullable MSignature */;
1526 val* var156 /* : nullable MType */;
1527 val* var_rettype /* var rettype: nullable MType */;
1528 short int var157 /* : Bool */;
1529 short int var158 /* : Bool */;
1530 short int var_159 /* var : Bool */;
1531 val* var160 /* : null */;
1532 short int var161 /* : Bool */;
1533 short int var162 /* : Bool */;
1534 int cltype163;
1535 int idtype164;
1536 val* var165 /* : MType */;
1537 short int var166 /* : Bool */;
1538 int cltype167;
1539 int idtype168;
1540 val* var169 /* : nullable MType */;
1541 val* var_erased_rettype /* var erased_rettype: nullable MType */;
1542 val* var170 /* : null */;
1543 short int var171 /* : Bool */;
1544 short int var172 /* : Bool */;
1545 val* var173 /* : CallSite */;
1546 val* var_callsite /* var callsite: CallSite */;
1547 var_node = p0;
1548 var_recvtype = p1;
1549 var_name = p2;
1550 var_recv_is_self = p3;
1551 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(self, var_recvtype) /* anchor_to on <self:TypeVisitor>*/;
1552 var_unsafe_type = var1;
1553 /* <var_recvtype:MType> isa MNullType */
1554 cltype = type_model__MNullType.color;
1555 idtype = type_model__MNullType.id;
1556 if(cltype >= var_recvtype->type->table_size) {
1557 var2 = 0;
1558 } else {
1559 var2 = var_recvtype->type->type_table[cltype] == idtype;
1560 }
1561 if (var2){
1562 if (varonce) {
1563 var3 = varonce;
1564 } else {
1565 var4 = "Error: Method \'";
1566 var5 = 15;
1567 var6 = string__NativeString__to_s_with_length(var4, var5);
1568 var3 = var6;
1569 varonce = var3;
1570 }
1571 if (varonce7) {
1572 var8 = varonce7;
1573 } else {
1574 var9 = "\' call on \'null\'.";
1575 var10 = 17;
1576 var11 = string__NativeString__to_s_with_length(var9, var10);
1577 var8 = var11;
1578 varonce7 = var8;
1579 }
1580 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
1581 { /* var12 = array_instance Array[Object] */
1582 var13 = 3;
1583 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
1584 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var3;
1585 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var_name;
1586 ((struct instance_array__NativeArray*)var14)->values[2] = (val*) var8;
1587 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
1588 CHECK_NEW_array__Array(var12);
1589 }
1590 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
1591 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var15) /* error on <self:TypeVisitor>*/;
1592 var16 = NULL;
1593 var = var16;
1594 goto RET_LABEL;
1595 } else {
1596 }
1597 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>*/;
1598 var_mproperty = var17;
1599 var18 = NULL;
1600 if (var_mproperty == NULL) {
1601 var19 = 1; /* is null */
1602 } else {
1603 var19 = 0; /* arg is null but recv is not */
1604 }
1605 if (var19){
1606 if (var_recv_is_self){
1607 var20 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1608 if (varonce21) {
1609 var22 = varonce21;
1610 } else {
1611 var23 = "Error: Method or variable \'";
1612 var24 = 27;
1613 var25 = string__NativeString__to_s_with_length(var23, var24);
1614 var22 = var25;
1615 varonce21 = var22;
1616 }
1617 if (varonce26) {
1618 var27 = varonce26;
1619 } else {
1620 var28 = "\' unknown in ";
1621 var29 = 13;
1622 var30 = string__NativeString__to_s_with_length(var28, var29);
1623 var27 = var30;
1624 varonce26 = var27;
1625 }
1626 if (varonce31) {
1627 var32 = varonce31;
1628 } else {
1629 var33 = ".";
1630 var34 = 1;
1631 var35 = string__NativeString__to_s_with_length(var33, var34);
1632 var32 = var35;
1633 varonce31 = var32;
1634 }
1635 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
1636 { /* var36 = array_instance Array[Object] */
1637 var37 = 5;
1638 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
1639 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var22;
1640 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
1641 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var27;
1642 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var_recvtype;
1643 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var32;
1644 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
1645 CHECK_NEW_array__Array(var36);
1646 }
1647 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
1648 ((void (*)(val*, val*, val*))(var20->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var20, var_node, var39) /* error on <var20:ModelBuilder>*/;
1649 } else {
1650 var40 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1651 if (varonce41) {
1652 var42 = varonce41;
1653 } else {
1654 var43 = "Error: Method \'";
1655 var44 = 15;
1656 var45 = string__NativeString__to_s_with_length(var43, var44);
1657 var42 = var45;
1658 varonce41 = var42;
1659 }
1660 if (varonce46) {
1661 var47 = varonce46;
1662 } else {
1663 var48 = "\' doesn\'t exists in ";
1664 var49 = 20;
1665 var50 = string__NativeString__to_s_with_length(var48, var49);
1666 var47 = var50;
1667 varonce46 = var47;
1668 }
1669 if (varonce51) {
1670 var52 = varonce51;
1671 } else {
1672 var53 = ".";
1673 var54 = 1;
1674 var55 = string__NativeString__to_s_with_length(var53, var54);
1675 var52 = var55;
1676 varonce51 = var52;
1677 }
1678 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
1679 { /* var56 = array_instance Array[Object] */
1680 var57 = 5;
1681 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
1682 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var42;
1683 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var_name;
1684 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var47;
1685 ((struct instance_array__NativeArray*)var58)->values[3] = (val*) var_recvtype;
1686 ((struct instance_array__NativeArray*)var58)->values[4] = (val*) var52;
1687 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
1688 CHECK_NEW_array__Array(var56);
1689 }
1690 var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
1691 ((void (*)(val*, val*, val*))(var40->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var40, var_node, var59) /* error on <var40:ModelBuilder>*/;
1692 }
1693 var60 = NULL;
1694 var = var60;
1695 goto RET_LABEL;
1696 } else {
1697 }
1698 /* <var_mproperty:nullable MProperty(MProperty)> isa MMethod */
1699 cltype62 = type_model__MMethod.color;
1700 idtype63 = type_model__MMethod.id;
1701 if(cltype62 >= var_mproperty->type->table_size) {
1702 var61 = 0;
1703 } else {
1704 var61 = var_mproperty->type->type_table[cltype62] == idtype63;
1705 }
1706 if (!var61) {
1707 fprintf(stderr, "Runtime error: %s", "Assert failed");
1708 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 249);
1709 exit(1);
1710 }
1711 var66 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__visibility]))(var_mproperty) /* visibility on <var_mproperty:nullable MProperty(MMethod)>*/;
1712 var67 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:TypeVisitor>*/;
1713 var68 = ((short int (*)(val*, val*))(var66->class->vft[COLOR_kernel__Object___61d_61d]))(var66, var67) /* == on <var66:MVisibility>*/;
1714 var_ = var68;
1715 if (var68){
1716 var69 = !var_recv_is_self;
1717 var65 = var69;
1718 } else {
1719 var65 = var_;
1720 }
1721 var_70 = var65;
1722 if (var65){
1723 var71 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1724 var72 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1725 var73 = ((val* (*)(val*))(var72->class->vft[COLOR_model__MClassDef__mmodule]))(var72) /* mmodule on <var72:MClassDef>*/;
1726 var74 = ((val* (*)(val*, val*))(var71->class->vft[COLOR_model_base__MModule__visibility_for]))(var71, var73) /* visibility_for on <var71:MModule>*/;
1727 var75 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:TypeVisitor>*/;
1728 var76 = ((short int (*)(val*, val*))(var74->class->vft[COLOR_kernel__Comparable___60d]))(var74, var75) /* < on <var74:MVisibility>*/;
1729 var64 = var76;
1730 } else {
1731 var64 = var_70;
1732 }
1733 if (var64){
1734 var77 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1735 if (varonce78) {
1736 var79 = varonce78;
1737 } else {
1738 var80 = "Error: Method \'";
1739 var81 = 15;
1740 var82 = string__NativeString__to_s_with_length(var80, var81);
1741 var79 = var82;
1742 varonce78 = var79;
1743 }
1744 if (varonce83) {
1745 var84 = varonce83;
1746 } else {
1747 var85 = "\' is protected and can only acceded by self. ";
1748 var86 = 45;
1749 var87 = string__NativeString__to_s_with_length(var85, var86);
1750 var84 = var87;
1751 varonce83 = var84;
1752 }
1753 var88 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)>*/;
1754 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MClassDef__mmodule]))(var88) /* mmodule on <var88:MClassDef>*/;
1755 var90 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1756 var91 = ((val* (*)(val*, val*))(var89->class->vft[COLOR_model_base__MModule__visibility_for]))(var89, var90) /* visibility_for on <var89:MModule>*/;
1757 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
1758 { /* var92 = array_instance Array[Object] */
1759 var93 = 4;
1760 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
1761 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var79;
1762 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var_name;
1763 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var84;
1764 ((struct instance_array__NativeArray*)var94)->values[3] = (val*) var91;
1765 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
1766 CHECK_NEW_array__Array(var92);
1767 }
1768 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
1769 ((void (*)(val*, val*, val*))(var77->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var77, var_node, var95) /* error on <var77:ModelBuilder>*/;
1770 var96 = NULL;
1771 var = var96;
1772 goto RET_LABEL;
1773 } else {
1774 }
1775 var97 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__mmodule]))(self) /* mmodule on <self:TypeVisitor>*/;
1776 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)>*/;
1777 var_propdefs = var98;
1778 var99 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1779 var100 = 0;
1780 { /* Inline kernel#Int#== (var99,var100) */
1781 var103 = var99 == var100;
1782 var101 = var103;
1783 goto RET_LABEL102;
1784 RET_LABEL102:(void)0;
1785 }
1786 if (var101){
1787 var104 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1788 if (varonce105) {
1789 var106 = varonce105;
1790 } else {
1791 var107 = "Type error: no definition found for property ";
1792 var108 = 45;
1793 var109 = string__NativeString__to_s_with_length(var107, var108);
1794 var106 = var109;
1795 varonce105 = var106;
1796 }
1797 if (varonce110) {
1798 var111 = varonce110;
1799 } else {
1800 var112 = " in ";
1801 var113 = 4;
1802 var114 = string__NativeString__to_s_with_length(var112, var113);
1803 var111 = var114;
1804 varonce110 = var111;
1805 }
1806 var115 = NEW_array__Array(&type_array__Arraykernel__Object);
1807 { /* var115 = array_instance Array[Object] */
1808 var116 = 4;
1809 var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
1810 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var106;
1811 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_name;
1812 ((struct instance_array__NativeArray*)var117)->values[2] = (val*) var111;
1813 ((struct instance_array__NativeArray*)var117)->values[3] = (val*) var_unsafe_type;
1814 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
1815 CHECK_NEW_array__Array(var115);
1816 }
1817 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
1818 ((void (*)(val*, val*, val*))(var104->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var104, var_node, var118) /* error on <var104:ModelBuilder>*/;
1819 var119 = NULL;
1820 var = var119;
1821 goto RET_LABEL;
1822 } else {
1823 var120 = ((long (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_propdefs) /* length on <var_propdefs:Array[MMethodDef]>*/;
1824 var121 = 1;
1825 { /* Inline kernel#Int#== (var120,var121) */
1826 var124 = var120 == var121;
1827 var122 = var124;
1828 goto RET_LABEL123;
1829 RET_LABEL123:(void)0;
1830 }
1831 if (var122){
1832 var125 = ((val* (*)(val*))(var_propdefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_propdefs) /* first on <var_propdefs:Array[MMethodDef]>*/;
1833 var_mpropdef = var125;
1834 } else {
1835 var126 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
1836 if (varonce127) {
1837 var128 = varonce127;
1838 } else {
1839 var129 = "Warning: confliting property definitions for property ";
1840 var130 = 54;
1841 var131 = string__NativeString__to_s_with_length(var129, var130);
1842 var128 = var131;
1843 varonce127 = var128;
1844 }
1845 if (varonce132) {
1846 var133 = varonce132;
1847 } else {
1848 var134 = " in ";
1849 var135 = 4;
1850 var136 = string__NativeString__to_s_with_length(var134, var135);
1851 var133 = var136;
1852 varonce132 = var133;
1853 }
1854 if (varonce137) {
1855 var138 = varonce137;
1856 } else {
1857 var139 = ": ";
1858 var140 = 2;
1859 var141 = string__NativeString__to_s_with_length(var139, var140);
1860 var138 = var141;
1861 varonce137 = var138;
1862 }
1863 if (varonce142) {
1864 var143 = varonce142;
1865 } else {
1866 var144 = " ";
1867 var145 = 1;
1868 var146 = string__NativeString__to_s_with_length(var144, var145);
1869 var143 = var146;
1870 varonce142 = var143;
1871 }
1872 var147 = ((val* (*)(val*, val*))(var_propdefs->class->vft[COLOR_string__Collection__join]))(var_propdefs, var143) /* join on <var_propdefs:Array[MMethodDef]>*/;
1873 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
1874 { /* var148 = array_instance Array[Object] */
1875 var149 = 6;
1876 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
1877 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var128;
1878 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_name;
1879 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
1880 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_unsafe_type;
1881 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
1882 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var147;
1883 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
1884 CHECK_NEW_array__Array(var148);
1885 }
1886 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
1887 ((void (*)(val*, val*, val*))(var126->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var126, var_node, var151) /* warning on <var126:ModelBuilder>*/;
1888 var152 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro]))(var_mproperty) /* intro on <var_mproperty:nullable MProperty(MMethod)>*/;
1889 var_mpropdef = var152;
1890 }
1891 }
1892 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>*/;
1893 var_msignature = var153;
1894 var154 = 0;
1895 var_erasure_cast = var154;
1896 var155 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:nullable Object(MMethodDef)>*/;
1897 if (var155 == NULL) {
1898 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1899 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 271);
1900 exit(1);
1901 } else {
1902 var156 = ((val* (*)(val*))(var155->class->vft[COLOR_model__MSignature__return_mtype]))(var155) /* return_mtype on <var155:nullable MSignature>*/;
1903 }
1904 var_rettype = var156;
1905 var158 = !var_recv_is_self;
1906 var_159 = var158;
1907 if (var158){
1908 var160 = NULL;
1909 if (var_rettype == NULL) {
1910 var161 = 0; /* is null */
1911 } else {
1912 var161 = 1; /* arg is null and recv is not */
1913 }
1914 var157 = var161;
1915 } else {
1916 var157 = var_159;
1917 }
1918 if (var157){
1919 /* <var_rettype:nullable MType(MType)> isa MNullableType */
1920 cltype163 = type_model__MNullableType.color;
1921 idtype164 = type_model__MNullableType.id;
1922 if(cltype163 >= var_rettype->type->table_size) {
1923 var162 = 0;
1924 } else {
1925 var162 = var_rettype->type->type_table[cltype163] == idtype164;
1926 }
1927 if (var162){
1928 var165 = ((val* (*)(val*))(var_rettype->class->vft[COLOR_model__MNullableType__mtype]))(var_rettype) /* mtype on <var_rettype:nullable MType(MNullableType)>*/;
1929 var_rettype = var165;
1930 } else {
1931 }
1932 /* <var_rettype:nullable MType(MType)> isa MParameterType */
1933 cltype167 = type_model__MParameterType.color;
1934 idtype168 = type_model__MParameterType.id;
1935 if(cltype167 >= var_rettype->type->table_size) {
1936 var166 = 0;
1937 } else {
1938 var166 = var_rettype->type->type_table[cltype167] == idtype168;
1939 }
1940 if (var166){
1941 var169 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1942 var_erased_rettype = var169;
1943 var170 = NULL;
1944 if (var_erased_rettype == NULL) {
1945 var171 = 0; /* is null */
1946 } else {
1947 var171 = 1; /* arg is null and recv is not */
1948 }
1949 if (!var171) {
1950 fprintf(stderr, "Runtime error: %s", "Assert failed");
1951 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 276);
1952 exit(1);
1953 }
1954 var172 = 1;
1955 var_erasure_cast = var172;
1956 } else {
1957 }
1958 } else {
1959 }
1960 var173 = NEW_typing__CallSite(&type_typing__CallSite);
1961 ((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>*/;
1962 CHECK_NEW_typing__CallSite(var173);
1963 var_callsite = var173;
1964 var = var_callsite;
1965 goto RET_LABEL;
1966 RET_LABEL:;
1967 return var;
1968 }
1969 /* method typing#TypeVisitor#get_method for (self: Object, ANode, MType, String, Bool): nullable CallSite */
1970 val* VIRTUAL_typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
1971 val* var /* : nullable CallSite */;
1972 val* var1 /* : nullable CallSite */;
1973 var1 = typing__TypeVisitor__get_method(self, p0, p1, p2, p3);
1974 var = var1;
1975 RET_LABEL:;
1976 return var;
1977 }
1978 /* method typing#TypeVisitor#check_signature for (self: TypeVisitor, ANode, Array[AExpr], String, MSignature): Bool */
1979 short int typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
1980 short int var /* : Bool */;
1981 val* var_node /* var node: ANode */;
1982 val* var_args /* var args: Array[AExpr] */;
1983 val* var_name /* var name: String */;
1984 val* var_msignature /* var msignature: MSignature */;
1985 long var1 /* : Int */;
1986 long var_vararg_rank /* var vararg_rank: Int */;
1987 long var2 /* : Int */;
1988 short int var3 /* : Bool */;
1989 short int var5 /* : Bool */;
1990 int cltype;
1991 int idtype;
1992 const char* var_class_name;
1993 short int var6 /* : Bool */;
1994 long var7 /* : Int */;
1995 long var8 /* : Int */;
1996 short int var9 /* : Bool */;
1997 short int var11 /* : Bool */;
1998 int cltype12;
1999 int idtype13;
2000 const char* var_class_name14;
2001 short int var15 /* : Bool */;
2002 val* var16 /* : ModelBuilder */;
2003 static val* varonce;
2004 val* var17 /* : String */;
2005 char* var18 /* : NativeString */;
2006 long var19 /* : Int */;
2007 val* var20 /* : String */;
2008 static val* varonce21;
2009 val* var22 /* : String */;
2010 char* var23 /* : NativeString */;
2011 long var24 /* : Int */;
2012 val* var25 /* : String */;
2013 val* var26 /* : Array[Object] */;
2014 long var27 /* : Int */;
2015 val* var28 /* : NativeArray[Object] */;
2016 val* var29 /* : String */;
2017 short int var30 /* : Bool */;
2018 long var31 /* : Int */;
2019 long var32 /* : Int */;
2020 short int var33 /* : Bool */;
2021 short int var35 /* : Bool */;
2022 short int var36 /* : Bool */;
2023 val* var37 /* : ModelBuilder */;
2024 static val* varonce38;
2025 val* var39 /* : String */;
2026 char* var40 /* : NativeString */;
2027 long var41 /* : Int */;
2028 val* var42 /* : String */;
2029 long var43 /* : Int */;
2030 static val* varonce44;
2031 val* var45 /* : String */;
2032 char* var46 /* : NativeString */;
2033 long var47 /* : Int */;
2034 val* var48 /* : String */;
2035 long var49 /* : Int */;
2036 static val* varonce50;
2037 val* var51 /* : String */;
2038 char* var52 /* : NativeString */;
2039 long var53 /* : Int */;
2040 val* var54 /* : String */;
2041 val* var55 /* : Array[Object] */;
2042 long var56 /* : Int */;
2043 val* var57 /* : NativeArray[Object] */;
2044 val* var58 /* : Object */;
2045 val* var59 /* : Object */;
2046 val* var60 /* : String */;
2047 short int var61 /* : Bool */;
2048 long var62 /* : Int */;
2049 long var63 /* : Int */;
2050 long var64 /* : Int */;
2051 long var66 /* : Int */;
2052 long var_vararg_decl /* var vararg_decl: Int */;
2053 val* var67 /* : Range[Int] */;
2054 long var68 /* : Int */;
2055 long var69 /* : Int */;
2056 val* var70 /* : Discrete */;
2057 val* var71 /* : Discrete */;
2058 val* var72 /* : Iterator[nullable Object] */;
2059 short int var73 /* : Bool */;
2060 val* var74 /* : nullable Object */;
2061 long var_i /* var i: Int */;
2062 long var75 /* : Int */;
2063 long var_j /* var j: Int */;
2064 short int var76 /* : Bool */;
2065 short int var78 /* : Bool */;
2066 short int var79 /* : Bool */;
2067 short int var81 /* : Bool */;
2068 int cltype82;
2069 int idtype83;
2070 const char* var_class_name84;
2071 short int var85 /* : Bool */;
2072 long var86 /* : Int */;
2073 long var88 /* : Int */;
2074 val* var89 /* : Array[MParameter] */;
2075 val* var90 /* : nullable Object */;
2076 val* var91 /* : MType */;
2077 val* var_paramtype /* var paramtype: MType */;
2078 val* var92 /* : nullable Object */;
2079 val* var93 /* : nullable MType */;
2080 long var94 /* : Int */;
2081 short int var95 /* : Bool */;
2082 short int var97 /* : Bool */;
2083 int cltype98;
2084 int idtype99;
2085 const char* var_class_name100;
2086 short int var101 /* : Bool */;
2087 val* var102 /* : Array[AExpr] */;
2088 val* var_varargs /* var varargs: Array[AExpr] */;
2089 val* var103 /* : Array[MParameter] */;
2090 val* var104 /* : nullable Object */;
2091 val* var105 /* : MType */;
2092 val* var_paramtype106 /* var paramtype: MType */;
2093 val* var107 /* : Range[Int] */;
2094 long var108 /* : Int */;
2095 long var110 /* : Int */;
2096 val* var111 /* : Discrete */;
2097 val* var112 /* : Discrete */;
2098 val* var113 /* : Iterator[nullable Object] */;
2099 short int var114 /* : Bool */;
2100 val* var115 /* : nullable Object */;
2101 long var_j116 /* var j: Int */;
2102 long var117 /* : Int */;
2103 val* var118 /* : nullable Object */;
2104 val* var119 /* : nullable Object */;
2105 val* var120 /* : nullable MType */;
2106 short int var122 /* : Bool */;
2107 var_node = p0;
2108 var_args = p1;
2109 var_name = p2;
2110 var_msignature = p3;
2111 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
2112 var_vararg_rank = var1;
2113 var2 = 0;
2114 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
2115 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2116 /* <var2:Int> isa OTHER */
2117 var5 = 1; /* easy <var2:Int> isa OTHER*/
2118 if (!var5) {
2119 var_class_name = type_kernel__Int.name;
2120 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2121 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2122 exit(1);
2123 }
2124 var6 = var_vararg_rank >= var2;
2125 var3 = var6;
2126 goto RET_LABEL4;
2127 RET_LABEL4:(void)0;
2128 }
2129 if (var3){
2130 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2131 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2132 { /* Inline kernel#Int#< (var7,var8) */
2133 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
2134 /* <var8:Int> isa OTHER */
2135 var11 = 1; /* easy <var8:Int> isa OTHER*/
2136 if (!var11) {
2137 var_class_name14 = type_kernel__Int.name;
2138 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
2139 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 261);
2140 exit(1);
2141 }
2142 var15 = var7 < var8;
2143 var9 = var15;
2144 goto RET_LABEL10;
2145 RET_LABEL10:(void)0;
2146 }
2147 if (var9){
2148 var16 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2149 if (varonce) {
2150 var17 = varonce;
2151 } else {
2152 var18 = "Error: arity mismatch; prototype is \'";
2153 var19 = 37;
2154 var20 = string__NativeString__to_s_with_length(var18, var19);
2155 var17 = var20;
2156 varonce = var17;
2157 }
2158 if (varonce21) {
2159 var22 = varonce21;
2160 } else {
2161 var23 = "\'";
2162 var24 = 1;
2163 var25 = string__NativeString__to_s_with_length(var23, var24);
2164 var22 = var25;
2165 varonce21 = var22;
2166 }
2167 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
2168 { /* var26 = array_instance Array[Object] */
2169 var27 = 4;
2170 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
2171 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
2172 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_name;
2173 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var_msignature;
2174 ((struct instance_array__NativeArray*)var28)->values[3] = (val*) var22;
2175 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
2176 CHECK_NEW_array__Array(var26);
2177 }
2178 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
2179 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var16, var_node, var29) /* error on <var16:ModelBuilder>*/;
2180 var30 = 0;
2181 var = var30;
2182 goto RET_LABEL;
2183 } else {
2184 }
2185 } else {
2186 var31 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2187 var32 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2188 { /* Inline kernel#Int#!= (var31,var32) */
2189 var35 = var31 == var32;
2190 var36 = !var35;
2191 var33 = var36;
2192 goto RET_LABEL34;
2193 RET_LABEL34:(void)0;
2194 }
2195 if (var33){
2196 var37 = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2197 if (varonce38) {
2198 var39 = varonce38;
2199 } else {
2200 var40 = "Error: Incorrect number of parameters. Got ";
2201 var41 = 43;
2202 var42 = string__NativeString__to_s_with_length(var40, var41);
2203 var39 = var42;
2204 varonce38 = var39;
2205 }
2206 var43 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2207 if (varonce44) {
2208 var45 = varonce44;
2209 } else {
2210 var46 = ", expected ";
2211 var47 = 11;
2212 var48 = string__NativeString__to_s_with_length(var46, var47);
2213 var45 = var48;
2214 varonce44 = var45;
2215 }
2216 var49 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2217 if (varonce50) {
2218 var51 = varonce50;
2219 } else {
2220 var52 = ". Signature is ";
2221 var53 = 15;
2222 var54 = string__NativeString__to_s_with_length(var52, var53);
2223 var51 = var54;
2224 varonce50 = var51;
2225 }
2226 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
2227 { /* var55 = array_instance Array[Object] */
2228 var56 = 6;
2229 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
2230 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var39;
2231 var58 = BOX_kernel__Int(var43); /* autobox from Int to Object */
2232 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var58;
2233 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var45;
2234 var59 = BOX_kernel__Int(var49); /* autobox from Int to Object */
2235 ((struct instance_array__NativeArray*)var57)->values[3] = (val*) var59;
2236 ((struct instance_array__NativeArray*)var57)->values[4] = (val*) var51;
2237 ((struct instance_array__NativeArray*)var57)->values[5] = (val*) var_msignature;
2238 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
2239 CHECK_NEW_array__Array(var55);
2240 }
2241 var60 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
2242 ((void (*)(val*, val*, val*))(var37->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var37, var_node, var60) /* error on <var37:ModelBuilder>*/;
2243 var61 = 0;
2244 var = var61;
2245 goto RET_LABEL;
2246 } else {
2247 }
2248 }
2249 var62 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
2250 var63 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2251 { /* Inline kernel#Int#- (var62,var63) */
2252 var66 = var62 - var63;
2253 var64 = var66;
2254 goto RET_LABEL65;
2255 RET_LABEL65:(void)0;
2256 }
2257 var_vararg_decl = var64;
2258 var67 = NEW_range__Range(&type_range__Rangekernel__Int);
2259 var68 = 0;
2260 var69 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2261 var70 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
2262 var71 = BOX_kernel__Int(var69); /* autobox from Int to Discrete */
2263 ((void (*)(val*, val*, val*))(var67->class->vft[COLOR_range__Range__without_last]))(var67, var70, var71) /* without_last on <var67:Range[Int]>*/;
2264 CHECK_NEW_range__Range(var67);
2265 var72 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Collection__iterator]))(var67) /* iterator on <var67:Range[Int]>*/;
2266 for(;;) {
2267 var73 = ((short int (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var72) /* is_ok on <var72:Iterator[nullable Object]>*/;
2268 if(!var73) break;
2269 var74 = ((val* (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__item]))(var72) /* item on <var72:Iterator[nullable Object]>*/;
2270 var75 = ((struct instance_kernel__Int*)var74)->value; /* autounbox from nullable Object to Int */;
2271 var_i = var75;
2272 var_j = var_i;
2273 { /* Inline kernel#Int#== (var_i,var_vararg_rank) */
2274 var78 = var_i == var_vararg_rank;
2275 var76 = var78;
2276 goto RET_LABEL77;
2277 RET_LABEL77:(void)0;
2278 }
2279 if (var76){
2280 goto CONTINUE_label;
2281 } else {
2282 }
2283 { /* Inline kernel#Int#> (var_i,var_vararg_rank) */
2284 /* Covariant cast for argument 0 (i) <var_vararg_rank:Int> isa OTHER */
2285 /* <var_vararg_rank:Int> isa OTHER */
2286 var81 = 1; /* easy <var_vararg_rank:Int> isa OTHER*/
2287 if (!var81) {
2288 var_class_name84 = type_kernel__Int.name;
2289 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
2290 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2291 exit(1);
2292 }
2293 var85 = var_i > var_vararg_rank;
2294 var79 = var85;
2295 goto RET_LABEL80;
2296 RET_LABEL80:(void)0;
2297 }
2298 if (var79){
2299 { /* Inline kernel#Int#+ (var_i,var_vararg_decl) */
2300 var88 = var_i + var_vararg_decl;
2301 var86 = var88;
2302 goto RET_LABEL87;
2303 RET_LABEL87:(void)0;
2304 }
2305 var_j = var86;
2306 } else {
2307 }
2308 var89 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2309 var90 = ((val* (*)(val*, long))(var89->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var89, var_i) /* [] on <var89:Array[MParameter]>*/;
2310 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_model__MParameter__mtype]))(var90) /* mtype on <var90:nullable Object(MParameter)>*/;
2311 var_paramtype = var91;
2312 var92 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j) /* [] on <var_args:Array[AExpr]>*/;
2313 var93 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var92, var_paramtype) /* visit_expr_subtype on <self:TypeVisitor>*/;
2314 var93;
2315 CONTINUE_label: (void)0;
2316 ((void (*)(val*))(var72->class->vft[COLOR_abstract_collection__Iterator__next]))(var72) /* next on <var72:Iterator[nullable Object]>*/;
2317 }
2318 BREAK_label: (void)0;
2319 var94 = 0;
2320 { /* Inline kernel#Int#>= (var_vararg_rank,var94) */
2321 /* Covariant cast for argument 0 (i) <var94:Int> isa OTHER */
2322 /* <var94:Int> isa OTHER */
2323 var97 = 1; /* easy <var94:Int> isa OTHER*/
2324 if (!var97) {
2325 var_class_name100 = type_kernel__Int.name;
2326 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name100);
2327 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
2328 exit(1);
2329 }
2330 var101 = var_vararg_rank >= var94;
2331 var95 = var101;
2332 goto RET_LABEL96;
2333 RET_LABEL96:(void)0;
2334 }
2335 if (var95){
2336 var102 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
2337 ((void (*)(val*))(var102->class->vft[COLOR_array__Array__init]))(var102) /* init on <var102:Array[AExpr]>*/;
2338 CHECK_NEW_array__Array(var102);
2339 var_varargs = var102;
2340 var103 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2341 var104 = ((val* (*)(val*, long))(var103->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var103, var_vararg_rank) /* [] on <var103:Array[MParameter]>*/;
2342 var105 = ((val* (*)(val*))(var104->class->vft[COLOR_model__MParameter__mtype]))(var104) /* mtype on <var104:nullable Object(MParameter)>*/;
2343 var_paramtype106 = var105;
2344 var107 = NEW_range__Range(&type_range__Rangekernel__Int);
2345 { /* Inline kernel#Int#+ (var_vararg_rank,var_vararg_decl) */
2346 var110 = var_vararg_rank + var_vararg_decl;
2347 var108 = var110;
2348 goto RET_LABEL109;
2349 RET_LABEL109:(void)0;
2350 }
2351 var111 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
2352 var112 = BOX_kernel__Int(var108); /* autobox from Int to Discrete */
2353 ((void (*)(val*, val*, val*))(var107->class->vft[COLOR_range__Range__init]))(var107, var111, var112) /* init on <var107:Range[Int]>*/;
2354 CHECK_NEW_range__Range(var107);
2355 var113 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Collection__iterator]))(var107) /* iterator on <var107:Range[Int]>*/;
2356 for(;;) {
2357 var114 = ((short int (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var113) /* is_ok on <var113:Iterator[nullable Object]>*/;
2358 if(!var114) break;
2359 var115 = ((val* (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__item]))(var113) /* item on <var113:Iterator[nullable Object]>*/;
2360 var117 = ((struct instance_kernel__Int*)var115)->value; /* autounbox from nullable Object to Int */;
2361 var_j116 = var117;
2362 var118 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j116) /* [] on <var_args:Array[AExpr]>*/;
2363 ((void (*)(val*, val*))(var_varargs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_varargs, var118) /* add on <var_varargs:Array[AExpr]>*/;
2364 var119 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var_j116) /* [] on <var_args:Array[AExpr]>*/;
2365 var120 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__visit_expr_subtype]))(self, var119, var_paramtype106) /* visit_expr_subtype on <self:TypeVisitor>*/;
2366 var120;
2367 CONTINUE_label121: (void)0;
2368 ((void (*)(val*))(var113->class->vft[COLOR_abstract_collection__Iterator__next]))(var113) /* next on <var113:Iterator[nullable Object]>*/;
2369 }
2370 BREAK_label121: (void)0;
2371 } else {
2372 }
2373 var122 = 1;
2374 var = var122;
2375 goto RET_LABEL;
2376 RET_LABEL:;
2377 return var;
2378 }
2379 /* method typing#TypeVisitor#check_signature for (self: Object, ANode, Array[AExpr], String, MSignature): Bool */
2380 short int VIRTUAL_typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
2381 short int var /* : Bool */;
2382 short int var1 /* : Bool */;
2383 var1 = typing__TypeVisitor__check_signature(self, p0, p1, p2, p3);
2384 var = var1;
2385 RET_LABEL:;
2386 return var;
2387 }
2388 /* method typing#TypeVisitor#error for (self: TypeVisitor, ANode, String) */
2389 void typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2390 val* var_node /* var node: ANode */;
2391 val* var_message /* var message: String */;
2392 val* var /* : ModelBuilder */;
2393 val* var1 /* : ToolContext */;
2394 val* var2 /* : Location */;
2395 var_node = p0;
2396 var_message = p1;
2397 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(self) /* modelbuilder on <self:TypeVisitor>*/;
2398 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
2399 var2 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
2400 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_toolcontext__ToolContext__error]))(var1, var2, var_message) /* error on <var1:ToolContext>*/;
2401 RET_LABEL:;
2402 }
2403 /* method typing#TypeVisitor#error for (self: Object, ANode, String) */
2404 void VIRTUAL_typing__TypeVisitor__error(val* self, val* p0, val* p1) {
2405 typing__TypeVisitor__error(self, p0, p1);
2406 RET_LABEL:;
2407 }
2408 /* method typing#TypeVisitor#get_variable for (self: TypeVisitor, AExpr, Variable): nullable MType */
2409 val* typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2410 val* var /* : nullable MType */;
2411 val* var_node /* var node: AExpr */;
2412 val* var_variable /* var variable: Variable */;
2413 val* var1 /* : nullable FlowContext */;
2414 val* var_flow /* var flow: nullable FlowContext */;
2415 val* var2 /* : null */;
2416 short int var3 /* : Bool */;
2417 static val* varonce;
2418 val* var4 /* : String */;
2419 char* var5 /* : NativeString */;
2420 long var6 /* : Int */;
2421 val* var7 /* : String */;
2422 val* var8 /* : null */;
2423 val* var9 /* : HashMap[Variable, nullable MType] */;
2424 short int var10 /* : Bool */;
2425 val* var11 /* : HashMap[Variable, nullable MType] */;
2426 val* var12 /* : nullable Object */;
2427 val* var13 /* : nullable Array[nullable MType] */;
2428 val* var_mtypes /* var mtypes: nullable Array[nullable MType] */;
2429 short int var14 /* : Bool */;
2430 val* var15 /* : null */;
2431 short int var16 /* : Bool */;
2432 short int var_ /* var : Bool */;
2433 long var17 /* : Int */;
2434 long var18 /* : Int */;
2435 short int var19 /* : Bool */;
2436 short int var21 /* : Bool */;
2437 val* var22 /* : nullable MType */;
2438 long var23 /* : Int */;
2439 long var24 /* : Int */;
2440 short int var25 /* : Bool */;
2441 short int var27 /* : Bool */;
2442 val* var28 /* : nullable Object */;
2443 val* var29 /* : nullable MType */;
2444 val* var_res /* var res: nullable MType */;
2445 val* var30 /* : null */;
2446 short int var31 /* : Bool */;
2447 val* var32 /* : nullable MType */;
2448 var_node = p0;
2449 var_variable = p1;
2450 var1 = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2451 var_flow = var1;
2452 var2 = NULL;
2453 if (var_flow == NULL) {
2454 var3 = 1; /* is null */
2455 } else {
2456 var3 = 0; /* arg is null but recv is not */
2457 }
2458 if (var3){
2459 if (varonce) {
2460 var4 = varonce;
2461 } else {
2462 var5 = "No context!";
2463 var6 = 11;
2464 var7 = string__NativeString__to_s_with_length(var5, var6);
2465 var4 = var7;
2466 varonce = var4;
2467 }
2468 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__error]))(self, var_node, var4) /* error on <self:TypeVisitor>*/;
2469 var8 = NULL;
2470 var = var8;
2471 goto RET_LABEL;
2472 } else {
2473 }
2474 var9 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2475 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]>*/;
2476 if (var10){
2477 var11 = ((val* (*)(val*))(var_flow->class->vft[COLOR_typing__FlowContext__vars]))(var_flow) /* vars on <var_flow:nullable FlowContext(FlowContext)>*/;
2478 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_variable) /* [] on <var11:HashMap[Variable, nullable MType]>*/;
2479 var = var12;
2480 goto RET_LABEL;
2481 } else {
2482 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)>*/;
2483 var_mtypes = var13;
2484 var15 = NULL;
2485 if (var_mtypes == NULL) {
2486 var16 = 1; /* is null */
2487 } else {
2488 var16 = 0; /* arg is null but recv is not */
2489 }
2490 var_ = var16;
2491 if (var16){
2492 var14 = var_;
2493 } else {
2494 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])>*/;
2495 var18 = 0;
2496 { /* Inline kernel#Int#== (var17,var18) */
2497 var21 = var17 == var18;
2498 var19 = var21;
2499 goto RET_LABEL20;
2500 RET_LABEL20:(void)0;
2501 }
2502 var14 = var19;
2503 }
2504 if (var14){
2505 var22 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2506 var = var22;
2507 goto RET_LABEL;
2508 } else {
2509 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])>*/;
2510 var24 = 1;
2511 { /* Inline kernel#Int#== (var23,var24) */
2512 var27 = var23 == var24;
2513 var25 = var27;
2514 goto RET_LABEL26;
2515 RET_LABEL26:(void)0;
2516 }
2517 if (var25){
2518 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])>*/;
2519 var = var28;
2520 goto RET_LABEL;
2521 } else {
2522 var29 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__merge_types]))(self, var_node, var_mtypes) /* merge_types on <self:TypeVisitor>*/;
2523 var_res = var29;
2524 var30 = NULL;
2525 if (var_res == NULL) {
2526 var31 = 1; /* is null */
2527 } else {
2528 var31 = 0; /* arg is null but recv is not */
2529 }
2530 if (var31){
2531 var32 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
2532 var_res = var32;
2533 } else {
2534 }
2535 var = var_res;
2536 goto RET_LABEL;
2537 }
2538 }
2539 }
2540 RET_LABEL:;
2541 return var;
2542 }
2543 /* method typing#TypeVisitor#get_variable for (self: Object, AExpr, Variable): nullable MType */
2544 val* VIRTUAL_typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
2545 val* var /* : nullable MType */;
2546 val* var1 /* : nullable MType */;
2547 var1 = typing__TypeVisitor__get_variable(self, p0, p1);
2548 var = var1;
2549 RET_LABEL:;
2550 return var;
2551 }
2552 /* method typing#TypeVisitor#set_variable for (self: TypeVisitor, AExpr, Variable, nullable MType) */
2553 void typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2554 val* var_node /* var node: AExpr */;
2555 val* var_variable /* var variable: Variable */;
2556 val* var_mtype /* var mtype: nullable MType */;
2557 val* var /* : nullable FlowContext */;
2558 val* var_flow /* var flow: nullable FlowContext */;
2559 val* var1 /* : null */;
2560 short int var2 /* : Bool */;
2561 var_node = p0;
2562 var_variable = p1;
2563 var_mtype = p2;
2564 var = ((val* (*)(val*))(var_node->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_node) /* after_flow_context on <var_node:AExpr>*/;
2565 var_flow = var;
2566 var1 = NULL;
2567 if (var_flow == NULL) {
2568 var2 = 0; /* is null */
2569 } else {
2570 var2 = 1; /* arg is null and recv is not */
2571 }
2572 if (!var2) {
2573 fprintf(stderr, "Runtime error: %s", "Assert failed");
2574 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 360);
2575 exit(1);
2576 }
2577 ((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)>*/;
2578 RET_LABEL:;
2579 }
2580 /* method typing#TypeVisitor#set_variable for (self: Object, AExpr, Variable, nullable MType) */
2581 void VIRTUAL_typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
2582 typing__TypeVisitor__set_variable(self, p0, p1, p2);
2583 RET_LABEL:;
2584 }
2585 /* method typing#TypeVisitor#merge_types for (self: TypeVisitor, ANode, Array[nullable MType]): nullable MType */
2586 val* typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2587 val* var /* : nullable MType */;
2588 val* var_node /* var node: ANode */;
2589 val* var_col /* var col: Array[nullable MType] */;
2590 long var1 /* : Int */;
2591 long var2 /* : Int */;
2592 short int var3 /* : Bool */;
2593 short int var5 /* : Bool */;
2594 val* var6 /* : nullable Object */;
2595 val* var7 /* : Array[nullable MType] */;
2596 val* var_res /* var res: Array[nullable MType] */;
2597 val* var8 /* : Iterator[nullable Object] */;
2598 short int var9 /* : Bool */;
2599 val* var10 /* : nullable Object */;
2600 val* var_t1 /* var t1: nullable MType */;
2601 val* var11 /* : null */;
2602 short int var12 /* : Bool */;
2603 short int var13 /* : Bool */;
2604 short int var_found /* var found: Bool */;
2605 val* var14 /* : Iterator[nullable Object] */;
2606 short int var15 /* : Bool */;
2607 val* var16 /* : nullable Object */;
2608 val* var_t2 /* var t2: nullable MType */;
2609 val* var17 /* : null */;
2610 short int var18 /* : Bool */;
2611 short int var20 /* : Bool */;
2612 short int var21 /* : Bool */;
2613 int cltype;
2614 int idtype;
2615 short int var_ /* var : Bool */;
2616 short int var22 /* : Bool */;
2617 int cltype23;
2618 int idtype24;
2619 val* var25 /* : MType */;
2620 short int var26 /* : Bool */;
2621 short int var27 /* : Bool */;
2622 short int var28 /* : Bool */;
2623 val* var29 /* : null */;
2624 var_node = p0;
2625 var_col = p1;
2626 var1 = ((long (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__length]))(var_col) /* length on <var_col:Array[nullable MType]>*/;
2627 var2 = 1;
2628 { /* Inline kernel#Int#== (var1,var2) */
2629 var5 = var1 == var2;
2630 var3 = var5;
2631 goto RET_LABEL4;
2632 RET_LABEL4:(void)0;
2633 }
2634 if (var3){
2635 var6 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__first]))(var_col) /* first on <var_col:Array[nullable MType]>*/;
2636 var = var6;
2637 goto RET_LABEL;
2638 } else {
2639 }
2640 var7 = NEW_array__Array(&type_array__Arraynullable_model__MType);
2641 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[nullable MType]>*/;
2642 CHECK_NEW_array__Array(var7);
2643 var_res = var7;
2644 var8 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2645 for(;;) {
2646 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
2647 if(!var9) break;
2648 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
2649 var_t1 = var10;
2650 var11 = NULL;
2651 if (var_t1 == NULL) {
2652 var12 = 1; /* is null */
2653 } else {
2654 var12 = 0; /* arg is null but recv is not */
2655 }
2656 if (var12){
2657 goto CONTINUE_label;
2658 } else {
2659 }
2660 var13 = 1;
2661 var_found = var13;
2662 var14 = ((val* (*)(val*))(var_col->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_col) /* iterator on <var_col:Array[nullable MType]>*/;
2663 for(;;) {
2664 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
2665 if(!var15) break;
2666 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
2667 var_t2 = var16;
2668 var17 = NULL;
2669 if (var_t2 == NULL) {
2670 var18 = 1; /* is null */
2671 } else {
2672 var18 = 0; /* arg is null but recv is not */
2673 }
2674 if (var18){
2675 goto CONTINUE_label19;
2676 } else {
2677 }
2678 /* <var_t2:nullable MType(MType)> isa MNullableType */
2679 cltype = type_model__MNullableType.color;
2680 idtype = type_model__MNullableType.id;
2681 if(cltype >= var_t2->type->table_size) {
2682 var21 = 0;
2683 } else {
2684 var21 = var_t2->type->type_table[cltype] == idtype;
2685 }
2686 var_ = var21;
2687 if (var21){
2688 var20 = var_;
2689 } else {
2690 /* <var_t2:nullable MType(MType)> isa MNullType */
2691 cltype23 = type_model__MNullType.color;
2692 idtype24 = type_model__MNullType.id;
2693 if(cltype23 >= var_t2->type->table_size) {
2694 var22 = 0;
2695 } else {
2696 var22 = var_t2->type->type_table[cltype23] == idtype24;
2697 }
2698 var20 = var22;
2699 }
2700 if (var20){
2701 var25 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MType__as_nullable]))(var_t1) /* as_nullable on <var_t1:nullable MType(MType)>*/;
2702 var_t1 = var25;
2703 } else {
2704 }
2705 var26 = ((short int (*)(val*, val*, val*))(self->class->vft[COLOR_typing__TypeVisitor__is_subtype]))(self, var_t2, var_t1) /* is_subtype on <self:TypeVisitor>*/;
2706 var27 = !var26;
2707 if (var27){
2708 var28 = 0;
2709 var_found = var28;
2710 } else {
2711 }
2712 CONTINUE_label19: (void)0;
2713 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
2714 }
2715 BREAK_label19: (void)0;
2716 if (var_found){
2717 var = var_t1;
2718 goto RET_LABEL;
2719 } else {
2720 }
2721 CONTINUE_label: (void)0;
2722 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
2723 }
2724 BREAK_label: (void)0;
2725 var29 = NULL;
2726 var = var29;
2727 goto RET_LABEL;
2728 RET_LABEL:;
2729 return var;
2730 }
2731 /* method typing#TypeVisitor#merge_types for (self: Object, ANode, Array[nullable MType]): nullable MType */
2732 val* VIRTUAL_typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
2733 val* var /* : nullable MType */;
2734 val* var1 /* : nullable MType */;
2735 var1 = typing__TypeVisitor__merge_types(self, p0, p1);
2736 var = var1;
2737 RET_LABEL:;
2738 return var;
2739 }
2740 /* method typing#CallSite#node for (self: CallSite): ANode */
2741 val* typing__CallSite__node(val* self) {
2742 val* var /* : ANode */;
2743 val* var1 /* : ANode */;
2744 var1 = self->attrs[COLOR_typing__CallSite___64dnode].val; /* @node on <self:CallSite> */
2745 if (var1 == NULL) {
2746 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @node");
2747 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 391);
2748 exit(1);
2749 }
2750 var = var1;
2751 RET_LABEL:;
2752 return var;
2753 }
2754 /* method typing#CallSite#node for (self: Object): ANode */
2755 val* VIRTUAL_typing__CallSite__node(val* self) {
2756 val* var /* : ANode */;
2757 val* var1 /* : ANode */;
2758 var1 = typing__CallSite__node(self);
2759 var = var1;
2760 RET_LABEL:;
2761 return var;
2762 }
2763 /* method typing#CallSite#node= for (self: CallSite, ANode) */
2764 void typing__CallSite__node_61d(val* self, val* p0) {
2765 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2766 RET_LABEL:;
2767 }
2768 /* method typing#CallSite#node= for (self: Object, ANode) */
2769 void VIRTUAL_typing__CallSite__node_61d(val* self, val* p0) {
2770 typing__CallSite__node_61d(self, p0);
2771 RET_LABEL:;
2772 }
2773 /* method typing#CallSite#recv for (self: CallSite): MType */
2774 val* typing__CallSite__recv(val* self) {
2775 val* var /* : MType */;
2776 val* var1 /* : MType */;
2777 var1 = self->attrs[COLOR_typing__CallSite___64drecv].val; /* @recv on <self:CallSite> */
2778 if (var1 == NULL) {
2779 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @recv");
2780 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 394);
2781 exit(1);
2782 }
2783 var = var1;
2784 RET_LABEL:;
2785 return var;
2786 }
2787 /* method typing#CallSite#recv for (self: Object): MType */
2788 val* VIRTUAL_typing__CallSite__recv(val* self) {
2789 val* var /* : MType */;
2790 val* var1 /* : MType */;
2791 var1 = typing__CallSite__recv(self);
2792 var = var1;
2793 RET_LABEL:;
2794 return var;
2795 }
2796 /* method typing#CallSite#recv= for (self: CallSite, MType) */
2797 void typing__CallSite__recv_61d(val* self, val* p0) {
2798 self->attrs[COLOR_typing__CallSite___64drecv].val = p0; /* @recv on <self:CallSite> */
2799 RET_LABEL:;
2800 }
2801 /* method typing#CallSite#recv= for (self: Object, MType) */
2802 void VIRTUAL_typing__CallSite__recv_61d(val* self, val* p0) {
2803 typing__CallSite__recv_61d(self, p0);
2804 RET_LABEL:;
2805 }
2806 /* method typing#CallSite#recv_is_self for (self: CallSite): Bool */
2807 short int typing__CallSite__recv_is_self(val* self) {
2808 short int var /* : Bool */;
2809 short int var1 /* : Bool */;
2810 var1 = self->attrs[COLOR_typing__CallSite___64drecv_is_self].s; /* @recv_is_self on <self:CallSite> */
2811 var = var1;
2812 RET_LABEL:;
2813 return var;
2814 }
2815 /* method typing#CallSite#recv_is_self for (self: Object): Bool */
2816 short int VIRTUAL_typing__CallSite__recv_is_self(val* self) {
2817 short int var /* : Bool */;
2818 short int var1 /* : Bool */;
2819 var1 = typing__CallSite__recv_is_self(self);
2820 var = var1;
2821 RET_LABEL:;
2822 return var;
2823 }
2824 /* method typing#CallSite#recv_is_self= for (self: CallSite, Bool) */
2825 void typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2826 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p0; /* @recv_is_self on <self:CallSite> */
2827 RET_LABEL:;
2828 }
2829 /* method typing#CallSite#recv_is_self= for (self: Object, Bool) */
2830 void VIRTUAL_typing__CallSite__recv_is_self_61d(val* self, short int p0) {
2831 typing__CallSite__recv_is_self_61d(self, p0);
2832 RET_LABEL:;
2833 }
2834 /* method typing#CallSite#mproperty for (self: CallSite): MMethod */
2835 val* typing__CallSite__mproperty(val* self) {
2836 val* var /* : MMethod */;
2837 val* var1 /* : MMethod */;
2838 var1 = self->attrs[COLOR_typing__CallSite___64dmproperty].val; /* @mproperty on <self:CallSite> */
2839 if (var1 == NULL) {
2840 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
2841 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 402);
2842 exit(1);
2843 }
2844 var = var1;
2845 RET_LABEL:;
2846 return var;
2847 }
2848 /* method typing#CallSite#mproperty for (self: Object): MMethod */
2849 val* VIRTUAL_typing__CallSite__mproperty(val* self) {
2850 val* var /* : MMethod */;
2851 val* var1 /* : MMethod */;
2852 var1 = typing__CallSite__mproperty(self);
2853 var = var1;
2854 RET_LABEL:;
2855 return var;
2856 }
2857 /* method typing#CallSite#mproperty= for (self: CallSite, MMethod) */
2858 void typing__CallSite__mproperty_61d(val* self, val* p0) {
2859 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p0; /* @mproperty on <self:CallSite> */
2860 RET_LABEL:;
2861 }
2862 /* method typing#CallSite#mproperty= for (self: Object, MMethod) */
2863 void VIRTUAL_typing__CallSite__mproperty_61d(val* self, val* p0) {
2864 typing__CallSite__mproperty_61d(self, p0);
2865 RET_LABEL:;
2866 }
2867 /* method typing#CallSite#mpropdef for (self: CallSite): MMethodDef */
2868 val* typing__CallSite__mpropdef(val* self) {
2869 val* var /* : MMethodDef */;
2870 val* var1 /* : MMethodDef */;
2871 var1 = self->attrs[COLOR_typing__CallSite___64dmpropdef].val; /* @mpropdef on <self:CallSite> */
2872 if (var1 == NULL) {
2873 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef");
2874 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 405);
2875 exit(1);
2876 }
2877 var = var1;
2878 RET_LABEL:;
2879 return var;
2880 }
2881 /* method typing#CallSite#mpropdef for (self: Object): MMethodDef */
2882 val* VIRTUAL_typing__CallSite__mpropdef(val* self) {
2883 val* var /* : MMethodDef */;
2884 val* var1 /* : MMethodDef */;
2885 var1 = typing__CallSite__mpropdef(self);
2886 var = var1;
2887 RET_LABEL:;
2888 return var;
2889 }
2890 /* method typing#CallSite#mpropdef= for (self: CallSite, MMethodDef) */
2891 void typing__CallSite__mpropdef_61d(val* self, val* p0) {
2892 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p0; /* @mpropdef on <self:CallSite> */
2893 RET_LABEL:;
2894 }
2895 /* method typing#CallSite#mpropdef= for (self: Object, MMethodDef) */
2896 void VIRTUAL_typing__CallSite__mpropdef_61d(val* self, val* p0) {
2897 typing__CallSite__mpropdef_61d(self, p0);
2898 RET_LABEL:;
2899 }
2900 /* method typing#CallSite#msignature for (self: CallSite): MSignature */
2901 val* typing__CallSite__msignature(val* self) {
2902 val* var /* : MSignature */;
2903 val* var1 /* : MSignature */;
2904 var1 = self->attrs[COLOR_typing__CallSite___64dmsignature].val; /* @msignature on <self:CallSite> */
2905 if (var1 == NULL) {
2906 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @msignature");
2907 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 409);
2908 exit(1);
2909 }
2910 var = var1;
2911 RET_LABEL:;
2912 return var;
2913 }
2914 /* method typing#CallSite#msignature for (self: Object): MSignature */
2915 val* VIRTUAL_typing__CallSite__msignature(val* self) {
2916 val* var /* : MSignature */;
2917 val* var1 /* : MSignature */;
2918 var1 = typing__CallSite__msignature(self);
2919 var = var1;
2920 RET_LABEL:;
2921 return var;
2922 }
2923 /* method typing#CallSite#msignature= for (self: CallSite, MSignature) */
2924 void typing__CallSite__msignature_61d(val* self, val* p0) {
2925 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p0; /* @msignature on <self:CallSite> */
2926 RET_LABEL:;
2927 }
2928 /* method typing#CallSite#msignature= for (self: Object, MSignature) */
2929 void VIRTUAL_typing__CallSite__msignature_61d(val* self, val* p0) {
2930 typing__CallSite__msignature_61d(self, p0);
2931 RET_LABEL:;
2932 }
2933 /* method typing#CallSite#erasure_cast for (self: CallSite): Bool */
2934 short int typing__CallSite__erasure_cast(val* self) {
2935 short int var /* : Bool */;
2936 short int var1 /* : Bool */;
2937 var1 = self->attrs[COLOR_typing__CallSite___64derasure_cast].s; /* @erasure_cast on <self:CallSite> */
2938 var = var1;
2939 RET_LABEL:;
2940 return var;
2941 }
2942 /* method typing#CallSite#erasure_cast for (self: Object): Bool */
2943 short int VIRTUAL_typing__CallSite__erasure_cast(val* self) {
2944 short int var /* : Bool */;
2945 short int var1 /* : Bool */;
2946 var1 = typing__CallSite__erasure_cast(self);
2947 var = var1;
2948 RET_LABEL:;
2949 return var;
2950 }
2951 /* method typing#CallSite#erasure_cast= for (self: CallSite, Bool) */
2952 void typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2953 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p0; /* @erasure_cast on <self:CallSite> */
2954 RET_LABEL:;
2955 }
2956 /* method typing#CallSite#erasure_cast= for (self: Object, Bool) */
2957 void VIRTUAL_typing__CallSite__erasure_cast_61d(val* self, short int p0) {
2958 typing__CallSite__erasure_cast_61d(self, p0);
2959 RET_LABEL:;
2960 }
2961 /* method typing#CallSite#check_signature for (self: CallSite, TypeVisitor, Array[AExpr]): Bool */
2962 short int typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2963 short int var /* : Bool */;
2964 val* var_v /* var v: TypeVisitor */;
2965 val* var_args /* var args: Array[AExpr] */;
2966 val* var1 /* : ANode */;
2967 val* var2 /* : MMethod */;
2968 val* var3 /* : String */;
2969 val* var4 /* : MSignature */;
2970 short int var5 /* : Bool */;
2971 var_v = p0;
2972 var_args = p1;
2973 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__node]))(self) /* node on <self:CallSite>*/;
2974 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__mproperty]))(self) /* mproperty on <self:CallSite>*/;
2975 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MProperty__name]))(var2) /* name on <var2:MMethod>*/;
2976 var4 = ((val* (*)(val*))(self->class->vft[COLOR_typing__CallSite__msignature]))(self) /* msignature on <self:CallSite>*/;
2977 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>*/;
2978 var = var5;
2979 goto RET_LABEL;
2980 RET_LABEL:;
2981 return var;
2982 }
2983 /* method typing#CallSite#check_signature for (self: Object, TypeVisitor, Array[AExpr]): Bool */
2984 short int VIRTUAL_typing__CallSite__check_signature(val* self, val* p0, val* p1) {
2985 short int var /* : Bool */;
2986 short int var1 /* : Bool */;
2987 var1 = typing__CallSite__check_signature(self, p0, p1);
2988 var = var1;
2989 RET_LABEL:;
2990 return var;
2991 }
2992 /* method typing#CallSite#init for (self: CallSite, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
2993 void typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
2994 self->attrs[COLOR_typing__CallSite___64dnode].val = p0; /* @node on <self:CallSite> */
2995 self->attrs[COLOR_typing__CallSite___64drecv].val = p1; /* @recv on <self:CallSite> */
2996 self->attrs[COLOR_typing__CallSite___64drecv_is_self].s = p2; /* @recv_is_self on <self:CallSite> */
2997 self->attrs[COLOR_typing__CallSite___64dmproperty].val = p3; /* @mproperty on <self:CallSite> */
2998 self->attrs[COLOR_typing__CallSite___64dmpropdef].val = p4; /* @mpropdef on <self:CallSite> */
2999 self->attrs[COLOR_typing__CallSite___64dmsignature].val = p5; /* @msignature on <self:CallSite> */
3000 self->attrs[COLOR_typing__CallSite___64derasure_cast].s = p6; /* @erasure_cast on <self:CallSite> */
3001 RET_LABEL:;
3002 }
3003 /* method typing#CallSite#init for (self: Object, ANode, MType, Bool, MMethod, MMethodDef, MSignature, Bool) */
3004 void VIRTUAL_typing__CallSite__init(val* self, val* p0, val* p1, short int p2, val* p3, val* p4, val* p5, short int p6) {
3005 typing__CallSite__init(self, p0, p1, p2, p3, p4, p5, p6);
3006 RET_LABEL:;
3007 }
3008 /* method typing#Variable#declared_type for (self: Variable): nullable MType */
3009 val* typing__Variable__declared_type(val* self) {
3010 val* var /* : nullable MType */;
3011 val* var1 /* : nullable MType */;
3012 var1 = self->attrs[COLOR_typing__Variable___64ddeclared_type].val; /* @declared_type on <self:Variable> */
3013 var = var1;
3014 RET_LABEL:;
3015 return var;
3016 }
3017 /* method typing#Variable#declared_type for (self: Object): nullable MType */
3018 val* VIRTUAL_typing__Variable__declared_type(val* self) {
3019 val* var /* : nullable MType */;
3020 val* var1 /* : nullable MType */;
3021 var1 = typing__Variable__declared_type(self);
3022 var = var1;
3023 RET_LABEL:;
3024 return var;
3025 }
3026 /* method typing#Variable#declared_type= for (self: Variable, nullable MType) */
3027 void typing__Variable__declared_type_61d(val* self, val* p0) {
3028 self->attrs[COLOR_typing__Variable___64ddeclared_type].val = p0; /* @declared_type on <self:Variable> */
3029 RET_LABEL:;
3030 }
3031 /* method typing#Variable#declared_type= for (self: Object, nullable MType) */
3032 void VIRTUAL_typing__Variable__declared_type_61d(val* self, val* p0) {
3033 typing__Variable__declared_type_61d(self, p0);
3034 RET_LABEL:;
3035 }
3036 /* method typing#FlowContext#vars for (self: FlowContext): HashMap[Variable, nullable MType] */
3037 val* typing__FlowContext__vars(val* self) {
3038 val* var /* : HashMap[Variable, nullable MType] */;
3039 val* var1 /* : HashMap[Variable, nullable MType] */;
3040 var1 = self->attrs[COLOR_typing__FlowContext___64dvars].val; /* @vars on <self:FlowContext> */
3041 if (var1 == NULL) {
3042 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @vars");
3043 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 427);
3044 exit(1);
3045 }
3046 var = var1;
3047 RET_LABEL:;
3048 return var;
3049 }
3050 /* method typing#FlowContext#vars for (self: Object): HashMap[Variable, nullable MType] */
3051 val* VIRTUAL_typing__FlowContext__vars(val* self) {
3052 val* var /* : HashMap[Variable, nullable MType] */;
3053 val* var1 /* : HashMap[Variable, nullable MType] */;
3054 var1 = typing__FlowContext__vars(self);
3055 var = var1;
3056 RET_LABEL:;
3057 return var;
3058 }
3059 /* method typing#FlowContext#vars= for (self: FlowContext, HashMap[Variable, nullable MType]) */
3060 void typing__FlowContext__vars_61d(val* self, val* p0) {
3061 self->attrs[COLOR_typing__FlowContext___64dvars].val = p0; /* @vars on <self:FlowContext> */
3062 RET_LABEL:;
3063 }
3064 /* method typing#FlowContext#vars= for (self: Object, HashMap[Variable, nullable MType]) */
3065 void VIRTUAL_typing__FlowContext__vars_61d(val* self, val* p0) {
3066 typing__FlowContext__vars_61d(self, p0);
3067 RET_LABEL:;
3068 }
3069 /* method typing#FlowContext#cache for (self: FlowContext): HashMap[Variable, nullable Array[nullable MType]] */
3070 val* typing__FlowContext__cache(val* self) {
3071 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3072 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3073 var1 = self->attrs[COLOR_typing__FlowContext___64dcache].val; /* @cache on <self:FlowContext> */
3074 if (var1 == NULL) {
3075 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @cache");
3076 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 429);
3077 exit(1);
3078 }
3079 var = var1;
3080 RET_LABEL:;
3081 return var;
3082 }
3083 /* method typing#FlowContext#cache for (self: Object): HashMap[Variable, nullable Array[nullable MType]] */
3084 val* VIRTUAL_typing__FlowContext__cache(val* self) {
3085 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
3086 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3087 var1 = typing__FlowContext__cache(self);
3088 var = var1;
3089 RET_LABEL:;
3090 return var;
3091 }
3092 /* method typing#FlowContext#cache= for (self: FlowContext, HashMap[Variable, nullable Array[nullable MType]]) */
3093 void typing__FlowContext__cache_61d(val* self, val* p0) {
3094 self->attrs[COLOR_typing__FlowContext___64dcache].val = p0; /* @cache on <self:FlowContext> */
3095 RET_LABEL:;
3096 }
3097 /* method typing#FlowContext#cache= for (self: Object, HashMap[Variable, nullable Array[nullable MType]]) */
3098 void VIRTUAL_typing__FlowContext__cache_61d(val* self, val* p0) {
3099 typing__FlowContext__cache_61d(self, p0);
3100 RET_LABEL:;
3101 }
3102 /* method typing#FlowContext#set_var for (self: FlowContext, Variable, nullable MType) */
3103 void typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3104 val* var_variable /* var variable: Variable */;
3105 val* var_mtype /* var mtype: nullable MType */;
3106 val* var /* : HashMap[Variable, nullable MType] */;
3107 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3108 val* var2 /* : Collection[Object] */;
3109 var_variable = p0;
3110 var_mtype = p1;
3111 var = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3112 ((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]>*/;
3113 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3114 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__keys]))(var1) /* keys on <var1:HashMap[Variable, nullable Array[nullable MType]]>*/;
3115 ((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]])>*/;
3116 RET_LABEL:;
3117 }
3118 /* method typing#FlowContext#set_var for (self: Object, Variable, nullable MType) */
3119 void VIRTUAL_typing__FlowContext__set_var(val* self, val* p0, val* p1) {
3120 typing__FlowContext__set_var(self, p0, p1);
3121 RET_LABEL:;
3122 }
3123 /* method typing#FlowContext#collect_types for (self: FlowContext, Variable): nullable Array[nullable MType] */
3124 val* typing__FlowContext__collect_types(val* self, val* p0) {
3125 val* var /* : nullable Array[nullable MType] */;
3126 val* var_variable /* var variable: Variable */;
3127 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3128 short int var2 /* : Bool */;
3129 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3130 val* var4 /* : nullable Object */;
3131 val* var5 /* : null */;
3132 val* var_res /* var res: nullable Array[nullable MType] */;
3133 val* var6 /* : HashMap[Variable, nullable MType] */;
3134 short int var7 /* : Bool */;
3135 val* var8 /* : HashMap[Variable, nullable MType] */;
3136 val* var9 /* : nullable Object */;
3137 val* var_mtype /* var mtype: nullable MType */;
3138 val* var10 /* : Array[nullable MType] */;
3139 long var11 /* : Int */;
3140 val* var_ /* var : Array[nullable MType] */;
3141 val* var12 /* : Array[FlowContext] */;
3142 short int var13 /* : Bool */;
3143 val* var14 /* : Array[nullable MType] */;
3144 long var15 /* : Int */;
3145 val* var_16 /* var : Array[nullable MType] */;
3146 val* var17 /* : nullable MType */;
3147 val* var18 /* : Array[FlowContext] */;
3148 val* var19 /* : Iterator[nullable Object] */;
3149 short int var20 /* : Bool */;
3150 val* var21 /* : nullable Object */;
3151 val* var_flow /* var flow: FlowContext */;
3152 short int var22 /* : Bool */;
3153 val* var23 /* : nullable Array[nullable MType] */;
3154 val* var_r2 /* var r2: nullable Array[nullable MType] */;
3155 val* var24 /* : null */;
3156 short int var25 /* : Bool */;
3157 val* var26 /* : null */;
3158 short int var27 /* : Bool */;
3159 val* var28 /* : Array[nullable Object] */;
3160 val* var29 /* : Iterator[nullable Object] */;
3161 short int var30 /* : Bool */;
3162 val* var31 /* : nullable Object */;
3163 val* var_t /* var t: nullable MType */;
3164 short int var32 /* : Bool */;
3165 short int var33 /* : Bool */;
3166 val* var35 /* : HashMap[Variable, nullable Array[nullable MType]] */;
3167 var_variable = p0;
3168 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3169 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]]>*/;
3170 if (var2){
3171 var3 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3172 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, nullable Array[nullable MType]]>*/;
3173 var = var4;
3174 goto RET_LABEL;
3175 } else {
3176 }
3177 var5 = NULL;
3178 var_res = var5;
3179 var6 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3180 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]>*/;
3181 if (var7){
3182 var8 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__vars]))(self) /* vars on <self:FlowContext>*/;
3183 var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_variable) /* [] on <var8:HashMap[Variable, nullable MType]>*/;
3184 var_mtype = var9;
3185 var10 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3186 var11 = 1;
3187 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[nullable MType]>*/;
3188 CHECK_NEW_array__Array(var10);
3189 var_ = var10;
3190 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_mtype) /* push on <var_:Array[nullable MType]>*/;
3191 var_res = var_;
3192 } else {
3193 var12 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3194 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var12) /* is_empty on <var12:Array[FlowContext]>*/;
3195 if (var13){
3196 var14 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3197 var15 = 1;
3198 ((void (*)(val*, long))(var14->class->vft[COLOR_array__Array__with_capacity]))(var14, var15) /* with_capacity on <var14:Array[nullable MType]>*/;
3199 CHECK_NEW_array__Array(var14);
3200 var_16 = var14;
3201 var17 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
3202 ((void (*)(val*, val*))(var_16->class->vft[COLOR_abstract_collection__Sequence__push]))(var_16, var17) /* push on <var_16:Array[nullable MType]>*/;
3203 var_res = var_16;
3204 } else {
3205 var18 = ((val* (*)(val*))(self->class->vft[COLOR_flow__FlowContext__previous]))(self) /* previous on <self:FlowContext>*/;
3206 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[FlowContext]>*/;
3207 for(;;) {
3208 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
3209 if(!var20) break;
3210 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
3211 var_flow = var21;
3212 var22 = ((short int (*)(val*))(var_flow->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var_flow) /* is_unreachable on <var_flow:FlowContext>*/;
3213 if (var22){
3214 goto CONTINUE_label;
3215 } else {
3216 }
3217 var23 = ((val* (*)(val*, val*))(var_flow->class->vft[COLOR_typing__FlowContext__collect_types]))(var_flow, var_variable) /* collect_types on <var_flow:FlowContext>*/;
3218 var_r2 = var23;
3219 var24 = NULL;
3220 if (var_r2 == NULL) {
3221 var25 = 1; /* is null */
3222 } else {
3223 var25 = 0; /* arg is null but recv is not */
3224 }
3225 if (var25){
3226 goto CONTINUE_label;
3227 } else {
3228 }
3229 var26 = NULL;
3230 if (var_res == NULL) {
3231 var27 = 1; /* is null */
3232 } else {
3233 var27 = 0; /* arg is null but recv is not */
3234 }
3235 if (var27){
3236 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])>*/;
3237 var_res = var28;
3238 } else {
3239 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])>*/;
3240 for(;;) {
3241 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var29) /* is_ok on <var29:Iterator[nullable Object]>*/;
3242 if(!var30) break;
3243 var31 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__item]))(var29) /* item on <var29:Iterator[nullable Object]>*/;
3244 var_t = var31;
3245 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])>*/;
3246 var33 = !var32;
3247 if (var33){
3248 ((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])>*/;
3249 } else {
3250 }
3251 CONTINUE_label34: (void)0;
3252 ((void (*)(val*))(var29->class->vft[COLOR_abstract_collection__Iterator__next]))(var29) /* next on <var29:Iterator[nullable Object]>*/;
3253 }
3254 BREAK_label34: (void)0;
3255 }
3256 CONTINUE_label: (void)0;
3257 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
3258 }
3259 BREAK_label: (void)0;
3260 }
3261 }
3262 var35 = ((val* (*)(val*))(self->class->vft[COLOR_typing__FlowContext__cache]))(self) /* cache on <self:FlowContext>*/;
3263 ((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]]>*/;
3264 var = var_res;
3265 goto RET_LABEL;
3266 RET_LABEL:;
3267 return var;
3268 }
3269 /* method typing#FlowContext#collect_types for (self: Object, Variable): nullable Array[nullable MType] */
3270 val* VIRTUAL_typing__FlowContext__collect_types(val* self, val* p0) {
3271 val* var /* : nullable Array[nullable MType] */;
3272 val* var1 /* : nullable Array[nullable MType] */;
3273 var1 = typing__FlowContext__collect_types(self, p0);
3274 var = var1;
3275 RET_LABEL:;
3276 return var;
3277 }
3278 /* method typing#APropdef#do_typing for (self: APropdef, ModelBuilder) */
3279 void typing__APropdef__do_typing(val* self, val* p0) {
3280 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3281 var_modelbuilder = p0;
3282 RET_LABEL:;
3283 }
3284 /* method typing#APropdef#do_typing for (self: Object, ModelBuilder) */
3285 void VIRTUAL_typing__APropdef__do_typing(val* self, val* p0) {
3286 typing__APropdef__do_typing(self, p0);
3287 RET_LABEL:;
3288 }
3289 /* method typing#APropdef#selfvariable for (self: APropdef): nullable Variable */
3290 val* typing__APropdef__selfvariable(val* self) {
3291 val* var /* : nullable Variable */;
3292 val* var1 /* : nullable Variable */;
3293 var1 = self->attrs[COLOR_typing__APropdef___64dselfvariable].val; /* @selfvariable on <self:APropdef> */
3294 var = var1;
3295 RET_LABEL:;
3296 return var;
3297 }
3298 /* method typing#APropdef#selfvariable for (self: Object): nullable Variable */
3299 val* VIRTUAL_typing__APropdef__selfvariable(val* self) {
3300 val* var /* : nullable Variable */;
3301 val* var1 /* : nullable Variable */;
3302 var1 = typing__APropdef__selfvariable(self);
3303 var = var1;
3304 RET_LABEL:;
3305 return var;
3306 }
3307 /* method typing#APropdef#selfvariable= for (self: APropdef, nullable Variable) */
3308 void typing__APropdef__selfvariable_61d(val* self, val* p0) {
3309 self->attrs[COLOR_typing__APropdef___64dselfvariable].val = p0; /* @selfvariable on <self:APropdef> */
3310 RET_LABEL:;
3311 }
3312 /* method typing#APropdef#selfvariable= for (self: Object, nullable Variable) */
3313 void VIRTUAL_typing__APropdef__selfvariable_61d(val* self, val* p0) {
3314 typing__APropdef__selfvariable_61d(self, p0);
3315 RET_LABEL:;
3316 }
3317 /* method typing#AConcreteMethPropdef#do_typing for (self: AConcreteMethPropdef, ModelBuilder) */
3318 void typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3319 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3320 val* var /* : nullable ANode */;
3321 short int var1 /* : Bool */;
3322 int cltype;
3323 int idtype;
3324 const char* var_class_name;
3325 val* var_nclassdef /* var nclassdef: AClassdef */;
3326 val* var2 /* : nullable MPropDef */;
3327 val* var_mpropdef /* var mpropdef: MMethodDef */;
3328 val* var3 /* : TypeVisitor */;
3329 val* var_v /* var v: TypeVisitor */;
3330 val* var4 /* : Variable */;
3331 val* var5 /* : nullable AExpr */;
3332 val* var_nblock /* var nblock: nullable AExpr */;
3333 val* var6 /* : null */;
3334 short int var7 /* : Bool */;
3335 val* var8 /* : nullable MPropDef */;
3336 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
3337 val* var9 /* : Range[Int] */;
3338 long var10 /* : Int */;
3339 val* var11 /* : nullable MSignature */;
3340 long var12 /* : Int */;
3341 val* var13 /* : Discrete */;
3342 val* var14 /* : Discrete */;
3343 val* var15 /* : Iterator[nullable Object] */;
3344 short int var16 /* : Bool */;
3345 val* var17 /* : nullable Object */;
3346 long var_i /* var i: Int */;
3347 long var18 /* : Int */;
3348 val* var19 /* : nullable MSignature */;
3349 val* var20 /* : Array[MParameter] */;
3350 val* var21 /* : nullable Object */;
3351 val* var22 /* : MType */;
3352 val* var_mtype /* var mtype: MType */;
3353 val* var23 /* : nullable MSignature */;
3354 long var24 /* : Int */;
3355 short int var25 /* : Bool */;
3356 short int var27 /* : Bool */;
3357 val* var28 /* : nullable ASignature */;
3358 val* var29 /* : ANodes[AParam] */;
3359 val* var30 /* : nullable Object */;
3360 static val* varonce;
3361 val* var31 /* : String */;
3362 char* var32 /* : NativeString */;
3363 long var33 /* : Int */;
3364 val* var34 /* : String */;
3365 val* var35 /* : nullable MClass */;
3366 val* var_arrayclass /* var arrayclass: nullable MClass */;
3367 val* var36 /* : null */;
3368 short int var37 /* : Bool */;
3369 val* var38 /* : Array[MType] */;
3370 long var39 /* : Int */;
3371 val* var40 /* : NativeArray[MType] */;
3372 val* var41 /* : MClassType */;
3373 val* var42 /* : nullable ASignature */;
3374 val* var43 /* : ANodes[AParam] */;
3375 val* var44 /* : nullable Object */;
3376 val* var45 /* : nullable Variable */;
3377 val* var_variable /* var variable: nullable Variable */;
3378 val* var46 /* : null */;
3379 short int var47 /* : Bool */;
3380 short int var48 /* : Bool */;
3381 val* var49 /* : nullable FlowContext */;
3382 short int var50 /* : Bool */;
3383 short int var51 /* : Bool */;
3384 short int var_ /* var : Bool */;
3385 val* var52 /* : nullable MSignature */;
3386 val* var53 /* : nullable MType */;
3387 val* var54 /* : null */;
3388 short int var55 /* : Bool */;
3389 static val* varonce56;
3390 val* var57 /* : String */;
3391 char* var58 /* : NativeString */;
3392 long var59 /* : Int */;
3393 val* var60 /* : String */;
3394 var_modelbuilder = p0;
3395 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AConcreteMethPropdef>*/;
3396 /* <var:nullable ANode> isa AClassdef */
3397 cltype = type_parser_nodes__AClassdef.color;
3398 idtype = type_parser_nodes__AClassdef.id;
3399 if(var == NULL) {
3400 var1 = 0;
3401 } else {
3402 if(cltype >= var->type->table_size) {
3403 var1 = 0;
3404 } else {
3405 var1 = var->type->type_table[cltype] == idtype;
3406 }
3407 }
3408 if (!var1) {
3409 var_class_name = var == NULL ? "null" : var->type->name;
3410 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
3411 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 484);
3412 exit(1);
3413 }
3414 var_nclassdef = var;
3415 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3416 if (var2 == NULL) {
3417 fprintf(stderr, "Runtime error: %s", "Cast failed");
3418 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 485);
3419 exit(1);
3420 }
3421 var_mpropdef = var2;
3422 var3 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3423 ((void (*)(val*, val*, val*, val*))(var3->class->vft[COLOR_typing__TypeVisitor__init]))(var3, var_modelbuilder, var_nclassdef, var_mpropdef) /* init on <var3:TypeVisitor>*/;
3424 CHECK_NEW_typing__TypeVisitor(var3);
3425 var_v = var3;
3426 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3427 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AConcreteMethPropdef>*/;
3428 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteMethPropdef__n_block]))(self) /* n_block on <self:AConcreteMethPropdef>*/;
3429 var_nblock = var5;
3430 var6 = NULL;
3431 if (var_nblock == NULL) {
3432 var7 = 1; /* is null */
3433 } else {
3434 var7 = 0; /* arg is null but recv is not */
3435 }
3436 if (var7){
3437 goto RET_LABEL;
3438 } else {
3439 }
3440 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AConcreteMethPropdef>*/;
3441 if (var8 == NULL) {
3442 fprintf(stderr, "Runtime error: %s", "Cast failed");
3443 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 492);
3444 exit(1);
3445 }
3446 var_mmethoddef = var8;
3447 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
3448 var10 = 0;
3449 var11 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3450 if (var11 == NULL) {
3451 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3452 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 493);
3453 exit(1);
3454 } else {
3455 var12 = ((long (*)(val*))(var11->class->vft[COLOR_model__MSignature__arity]))(var11) /* arity on <var11:nullable MSignature>*/;
3456 }
3457 var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
3458 var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
3459 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
3460 CHECK_NEW_range__Range(var9);
3461 var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
3462 for(;;) {
3463 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
3464 if(!var16) break;
3465 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
3466 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
3467 var_i = var18;
3468 var19 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3469 if (var19 == NULL) {
3470 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3471 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 494);
3472 exit(1);
3473 } else {
3474 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MSignature__mparameters]))(var19) /* mparameters on <var19:nullable MSignature>*/;
3475 }
3476 var21 = ((val* (*)(val*, long))(var20->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var20, var_i) /* [] on <var20:Array[MParameter]>*/;
3477 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MParameter__mtype]))(var21) /* mtype on <var21:nullable Object(MParameter)>*/;
3478 var_mtype = var22;
3479 var23 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3480 if (var23 == NULL) {
3481 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3482 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 495);
3483 exit(1);
3484 } else {
3485 var24 = ((long (*)(val*))(var23->class->vft[COLOR_model__MSignature__vararg_rank]))(var23) /* vararg_rank on <var23:nullable MSignature>*/;
3486 }
3487 { /* Inline kernel#Int#== (var24,var_i) */
3488 var27 = var24 == var_i;
3489 var25 = var27;
3490 goto RET_LABEL26;
3491 RET_LABEL26:(void)0;
3492 }
3493 if (var25){
3494 var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3495 if (var28 == NULL) {
3496 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3497 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 496);
3498 exit(1);
3499 } else {
3500 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var28) /* n_params on <var28:nullable ASignature>*/;
3501 }
3502 var30 = ((val* (*)(val*, long))(var29->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var29, var_i) /* [] on <var29:ANodes[AParam]>*/;
3503 if (varonce) {
3504 var31 = varonce;
3505 } else {
3506 var32 = "Array";
3507 var33 = 5;
3508 var34 = string__NativeString__to_s_with_length(var32, var33);
3509 var31 = var34;
3510 varonce = var31;
3511 }
3512 var35 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, var30, var31) /* get_mclass on <var_v:TypeVisitor>*/;
3513 var_arrayclass = var35;
3514 var36 = NULL;
3515 if (var_arrayclass == NULL) {
3516 var37 = 1; /* is null */
3517 } else {
3518 var37 = 0; /* arg is null but recv is not */
3519 }
3520 if (var37){
3521 goto RET_LABEL;
3522 } else {
3523 }
3524 var38 = NEW_array__Array(&type_array__Arraymodel__MType);
3525 { /* var38 = array_instance Array[MType] */
3526 var39 = 1;
3527 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraymodel__MType);
3528 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var_mtype;
3529 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[MType]>*/;
3530 CHECK_NEW_array__Array(var38);
3531 }
3532 var41 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var38) /* get_mtype on <var_arrayclass:nullable MClass(MClass)>*/;
3533 var_mtype = var41;
3534 } else {
3535 }
3536 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AConcreteMethPropdef>*/;
3537 if (var42 == NULL) {
3538 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3539 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 500);
3540 exit(1);
3541 } else {
3542 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var42) /* n_params on <var42:nullable ASignature>*/;
3543 }
3544 var44 = ((val* (*)(val*, long))(var43->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var43, var_i) /* [] on <var43:ANodes[AParam]>*/;
3545 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_scope__AParam__variable]))(var44) /* variable on <var44:nullable Object(AParam)>*/;
3546 var_variable = var45;
3547 var46 = NULL;
3548 if (var_variable == NULL) {
3549 var47 = 0; /* is null */
3550 } else {
3551 var47 = 1; /* arg is null and recv is not */
3552 }
3553 if (!var47) {
3554 fprintf(stderr, "Runtime error: %s", "Assert failed");
3555 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 501);
3556 exit(1);
3557 }
3558 ((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)>*/;
3559 CONTINUE_label: (void)0;
3560 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
3561 }
3562 BREAK_label: (void)0;
3563 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_nblock) /* visit_stmt on <var_v:TypeVisitor>*/;
3564 var49 = ((val* (*)(val*))(var_nblock->class->vft[COLOR_flow__AExpr__after_flow_context]))(var_nblock) /* after_flow_context on <var_nblock:nullable AExpr(AExpr)>*/;
3565 if (var49 == NULL) {
3566 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3567 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 506);
3568 exit(1);
3569 } else {
3570 var50 = ((short int (*)(val*))(var49->class->vft[COLOR_flow__FlowContext__is_unreachable]))(var49) /* is_unreachable on <var49:nullable FlowContext>*/;
3571 }
3572 var51 = !var50;
3573 var_ = var51;
3574 if (var51){
3575 var52 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
3576 if (var52 == NULL) {
3577 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3578 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 506);
3579 exit(1);
3580 } else {
3581 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MSignature__return_mtype]))(var52) /* return_mtype on <var52:nullable MSignature>*/;
3582 }
3583 var54 = NULL;
3584 if (var53 == NULL) {
3585 var55 = 0; /* is null */
3586 } else {
3587 var55 = 1; /* arg is null and recv is not */
3588 }
3589 var48 = var55;
3590 } else {
3591 var48 = var_;
3592 }
3593 if (var48){
3594 if (varonce56) {
3595 var57 = varonce56;
3596 } else {
3597 var58 = "Control error: Reached end of function (a \'return\' with a value was expected).";
3598 var59 = 78;
3599 var60 = string__NativeString__to_s_with_length(var58, var59);
3600 var57 = var60;
3601 varonce56 = var57;
3602 }
3603 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var57) /* error on <var_v:TypeVisitor>*/;
3604 } else {
3605 }
3606 RET_LABEL:;
3607 }
3608 /* method typing#AConcreteMethPropdef#do_typing for (self: Object, ModelBuilder) */
3609 void VIRTUAL_typing__AConcreteMethPropdef__do_typing(val* self, val* p0) {
3610 typing__AConcreteMethPropdef__do_typing(self, p0);
3611 RET_LABEL:;
3612 }
3613 /* method typing#AAttrPropdef#do_typing for (self: AAttrPropdef, ModelBuilder) */
3614 void typing__AAttrPropdef__do_typing(val* self, val* p0) {
3615 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3616 val* var /* : nullable ANode */;
3617 short int var1 /* : Bool */;
3618 int cltype;
3619 int idtype;
3620 const char* var_class_name;
3621 val* var_nclassdef /* var nclassdef: AClassdef */;
3622 val* var2 /* : TypeVisitor */;
3623 val* var3 /* : nullable MPropDef */;
3624 val* var_v /* var v: TypeVisitor */;
3625 val* var4 /* : Variable */;
3626 val* var5 /* : nullable AExpr */;
3627 val* var_nexpr /* var nexpr: nullable AExpr */;
3628 val* var6 /* : null */;
3629 short int var7 /* : Bool */;
3630 val* var8 /* : nullable MPropDef */;
3631 val* var9 /* : nullable MType */;
3632 val* var_mtype /* var mtype: nullable MType */;
3633 val* var10 /* : nullable MType */;
3634 var_modelbuilder = p0;
3635 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__parent]))(self) /* parent on <self:AAttrPropdef>*/;
3636 /* <var:nullable ANode> isa AClassdef */
3637 cltype = type_parser_nodes__AClassdef.color;
3638 idtype = type_parser_nodes__AClassdef.id;
3639 if(var == NULL) {
3640 var1 = 0;
3641 } else {
3642 if(cltype >= var->type->table_size) {
3643 var1 = 0;
3644 } else {
3645 var1 = var->type->type_table[cltype] == idtype;
3646 }
3647 }
3648 if (!var1) {
3649 var_class_name = var == NULL ? "null" : var->type->name;
3650 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
3651 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 516);
3652 exit(1);
3653 }
3654 var_nclassdef = var;
3655 var2 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
3656 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3657 if (var3 == NULL) {
3658 fprintf(stderr, "Runtime error: %s", "Cast failed");
3659 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 517);
3660 exit(1);
3661 }
3662 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_typing__TypeVisitor__init]))(var2, var_modelbuilder, var_nclassdef, var3) /* init on <var2:TypeVisitor>*/;
3663 CHECK_NEW_typing__TypeVisitor(var2);
3664 var_v = var2;
3665 var4 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
3666 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__APropdef__selfvariable_61d]))(self, var4) /* selfvariable= on <self:AAttrPropdef>*/;
3667 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(self) /* n_expr on <self:AAttrPropdef>*/;
3668 var_nexpr = var5;
3669 var6 = NULL;
3670 if (var_nexpr == NULL) {
3671 var7 = 0; /* is null */
3672 } else {
3673 var7 = 1; /* arg is null and recv is not */
3674 }
3675 if (var7){
3676 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
3677 if (var8 == NULL) {
3678 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3679 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 522);
3680 exit(1);
3681 } else {
3682 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var8) /* static_mtype on <var8:nullable MPropDef(nullable MAttributeDef)>*/;
3683 }
3684 var_mtype = var9;
3685 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>*/;
3686 var10;
3687 } else {
3688 }
3689 RET_LABEL:;
3690 }
3691 /* method typing#AAttrPropdef#do_typing for (self: Object, ModelBuilder) */
3692 void VIRTUAL_typing__AAttrPropdef__do_typing(val* self, val* p0) {
3693 typing__AAttrPropdef__do_typing(self, p0);
3694 RET_LABEL:;
3695 }
3696 /* method typing#AExpr#mtype for (self: AExpr): nullable MType */
3697 val* typing__AExpr__mtype(val* self) {
3698 val* var /* : nullable MType */;
3699 val* var1 /* : nullable MType */;
3700 var1 = self->attrs[COLOR_typing__AExpr___64dmtype].val; /* @mtype on <self:AExpr> */
3701 var = var1;
3702 RET_LABEL:;
3703 return var;
3704 }
3705 /* method typing#AExpr#mtype for (self: Object): nullable MType */
3706 val* VIRTUAL_typing__AExpr__mtype(val* self) {
3707 val* var /* : nullable MType */;
3708 val* var1 /* : nullable MType */;
3709 var1 = typing__AExpr__mtype(self);
3710 var = var1;
3711 RET_LABEL:;
3712 return var;
3713 }
3714 /* method typing#AExpr#mtype= for (self: AExpr, nullable MType) */
3715 void typing__AExpr__mtype_61d(val* self, val* p0) {
3716 self->attrs[COLOR_typing__AExpr___64dmtype].val = p0; /* @mtype on <self:AExpr> */
3717 RET_LABEL:;
3718 }
3719 /* method typing#AExpr#mtype= for (self: Object, nullable MType) */
3720 void VIRTUAL_typing__AExpr__mtype_61d(val* self, val* p0) {
3721 typing__AExpr__mtype_61d(self, p0);
3722 RET_LABEL:;
3723 }
3724 /* method typing#AExpr#is_typed for (self: AExpr): Bool */
3725 short int typing__AExpr__is_typed(val* self) {
3726 short int var /* : Bool */;
3727 short int var1 /* : Bool */;
3728 var1 = self->attrs[COLOR_typing__AExpr___64dis_typed].s; /* @is_typed on <self:AExpr> */
3729 var = var1;
3730 RET_LABEL:;
3731 return var;
3732 }
3733 /* method typing#AExpr#is_typed for (self: Object): Bool */
3734 short int VIRTUAL_typing__AExpr__is_typed(val* self) {
3735 short int var /* : Bool */;
3736 short int var1 /* : Bool */;
3737 var1 = typing__AExpr__is_typed(self);
3738 var = var1;
3739 RET_LABEL:;
3740 return var;
3741 }
3742 /* method typing#AExpr#is_typed= for (self: AExpr, Bool) */
3743 void typing__AExpr__is_typed_61d(val* self, short int p0) {
3744 self->attrs[COLOR_typing__AExpr___64dis_typed].s = p0; /* @is_typed on <self:AExpr> */
3745 RET_LABEL:;
3746 }
3747 /* method typing#AExpr#is_typed= for (self: Object, Bool) */
3748 void VIRTUAL_typing__AExpr__is_typed_61d(val* self, short int p0) {
3749 typing__AExpr__is_typed_61d(self, p0);
3750 RET_LABEL:;
3751 }
3752 /* method typing#AExpr#implicit_cast_to for (self: AExpr): nullable MType */
3753 val* typing__AExpr__implicit_cast_to(val* self) {
3754 val* var /* : nullable MType */;
3755 val* var1 /* : nullable MType */;
3756 var1 = self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val; /* @implicit_cast_to on <self:AExpr> */
3757 var = var1;
3758 RET_LABEL:;
3759 return var;
3760 }
3761 /* method typing#AExpr#implicit_cast_to for (self: Object): nullable MType */
3762 val* VIRTUAL_typing__AExpr__implicit_cast_to(val* self) {
3763 val* var /* : nullable MType */;
3764 val* var1 /* : nullable MType */;
3765 var1 = typing__AExpr__implicit_cast_to(self);
3766 var = var1;
3767 RET_LABEL:;
3768 return var;
3769 }
3770 /* method typing#AExpr#implicit_cast_to= for (self: AExpr, nullable MType) */
3771 void typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3772 self->attrs[COLOR_typing__AExpr___64dimplicit_cast_to].val = p0; /* @implicit_cast_to on <self:AExpr> */
3773 RET_LABEL:;
3774 }
3775 /* method typing#AExpr#implicit_cast_to= for (self: Object, nullable MType) */
3776 void VIRTUAL_typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
3777 typing__AExpr__implicit_cast_to_61d(self, p0);
3778 RET_LABEL:;
3779 }
3780 /* method typing#AExpr#its_variable for (self: AExpr): nullable Variable */
3781 val* typing__AExpr__its_variable(val* self) {
3782 val* var /* : nullable Variable */;
3783 val* var1 /* : null */;
3784 var1 = NULL;
3785 var = var1;
3786 goto RET_LABEL;
3787 RET_LABEL:;
3788 return var;
3789 }
3790 /* method typing#AExpr#its_variable for (self: Object): nullable Variable */
3791 val* VIRTUAL_typing__AExpr__its_variable(val* self) {
3792 val* var /* : nullable Variable */;
3793 val* var1 /* : nullable Variable */;
3794 var1 = typing__AExpr__its_variable(self);
3795 var = var1;
3796 RET_LABEL:;
3797 return var;
3798 }
3799 /* method typing#AExpr#accept_typing for (self: AExpr, TypeVisitor) */
3800 void typing__AExpr__accept_typing(val* self, val* p0) {
3801 val* var_v /* var v: TypeVisitor */;
3802 static val* varonce;
3803 val* var /* : String */;
3804 char* var1 /* : NativeString */;
3805 long var2 /* : Int */;
3806 val* var3 /* : String */;
3807 val* var4 /* : String */;
3808 val* var5 /* : Array[Object] */;
3809 long var6 /* : Int */;
3810 val* var7 /* : NativeArray[Object] */;
3811 val* var8 /* : String */;
3812 var_v = p0;
3813 if (varonce) {
3814 var = varonce;
3815 } else {
3816 var1 = "no implemented accept_typing for ";
3817 var2 = 33;
3818 var3 = string__NativeString__to_s_with_length(var1, var2);
3819 var = var3;
3820 varonce = var;
3821 }
3822 var4 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__class_name]))(self) /* class_name on <self:AExpr>*/;
3823 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
3824 { /* var5 = array_instance Array[Object] */
3825 var6 = 2;
3826 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
3827 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
3828 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var4;
3829 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
3830 CHECK_NEW_array__Array(var5);
3831 }
3832 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
3833 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var8) /* error on <var_v:TypeVisitor>*/;
3834 RET_LABEL:;
3835 }
3836 /* method typing#AExpr#accept_typing for (self: Object, TypeVisitor) */
3837 void VIRTUAL_typing__AExpr__accept_typing(val* self, val* p0) {
3838 typing__AExpr__accept_typing(self, p0);
3839 RET_LABEL:;
3840 }
3841 /* method typing#ABlockExpr#accept_typing for (self: ABlockExpr, TypeVisitor) */
3842 void typing__ABlockExpr__accept_typing(val* self, val* p0) {
3843 val* var_v /* var v: TypeVisitor */;
3844 val* var /* : ANodes[AExpr] */;
3845 val* var1 /* : Iterator[nullable Object] */;
3846 short int var2 /* : Bool */;
3847 val* var3 /* : nullable Object */;
3848 val* var_e /* var e: AExpr */;
3849 short int var4 /* : Bool */;
3850 var_v = p0;
3851 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3852 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AExpr]>*/;
3853 for(;;) {
3854 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
3855 if(!var2) break;
3856 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
3857 var_e = var3;
3858 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var_e) /* visit_stmt on <var_v:TypeVisitor>*/;
3859 CONTINUE_label: (void)0;
3860 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
3861 }
3862 BREAK_label: (void)0;
3863 var4 = 1;
3864 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABlockExpr>*/;
3865 RET_LABEL:;
3866 }
3867 /* method typing#ABlockExpr#accept_typing for (self: Object, TypeVisitor) */
3868 void VIRTUAL_typing__ABlockExpr__accept_typing(val* self, val* p0) {
3869 typing__ABlockExpr__accept_typing(self, p0);
3870 RET_LABEL:;
3871 }
3872 /* method typing#ABlockExpr#mtype for (self: ABlockExpr): nullable MType */
3873 val* typing__ABlockExpr__mtype(val* self) {
3874 val* var /* : nullable MType */;
3875 val* var1 /* : ANodes[AExpr] */;
3876 short int var2 /* : Bool */;
3877 val* var3 /* : null */;
3878 val* var4 /* : ANodes[AExpr] */;
3879 val* var5 /* : nullable Object */;
3880 val* var6 /* : nullable MType */;
3881 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3882 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:ANodes[AExpr]>*/;
3883 if (var2){
3884 var3 = NULL;
3885 var = var3;
3886 goto RET_LABEL;
3887 } else {
3888 }
3889 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABlockExpr__n_expr]))(self) /* n_expr on <self:ABlockExpr>*/;
3890 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var4) /* last on <var4:ANodes[AExpr]>*/;
3891 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_typing__AExpr__mtype]))(var5) /* mtype on <var5:nullable Object(AExpr)>*/;
3892 var = var6;
3893 goto RET_LABEL;
3894 RET_LABEL:;
3895 return var;
3896 }
3897 /* method typing#ABlockExpr#mtype for (self: Object): nullable MType */
3898 val* VIRTUAL_typing__ABlockExpr__mtype(val* self) {
3899 val* var /* : nullable MType */;
3900 val* var1 /* : nullable MType */;
3901 var1 = typing__ABlockExpr__mtype(self);
3902 var = var1;
3903 RET_LABEL:;
3904 return var;
3905 }
3906 /* method typing#AVardeclExpr#accept_typing for (self: AVardeclExpr, TypeVisitor) */
3907 void typing__AVardeclExpr__accept_typing(val* self, val* p0) {
3908 val* var_v /* var v: TypeVisitor */;
3909 val* var /* : nullable Variable */;
3910 val* var_variable /* var variable: nullable Variable */;
3911 val* var1 /* : null */;
3912 short int var2 /* : Bool */;
3913 val* var3 /* : nullable AType */;
3914 val* var_ntype /* var ntype: nullable AType */;
3915 val* var4 /* : null */;
3916 short int var5 /* : Bool */;
3917 val* var6 /* : null */;
3918 val* var_mtype /* var mtype: nullable MType */;
3919 val* var7 /* : nullable MType */;
3920 val* var8 /* : null */;
3921 short int var9 /* : Bool */;
3922 val* var10 /* : nullable AExpr */;
3923 val* var_nexpr /* var nexpr: nullable AExpr */;
3924 val* var11 /* : null */;
3925 short int var12 /* : Bool */;
3926 val* var13 /* : null */;
3927 short int var14 /* : Bool */;
3928 val* var15 /* : nullable MType */;
3929 val* var16 /* : nullable MType */;
3930 val* var17 /* : null */;
3931 short int var18 /* : Bool */;
3932 val* var_decltype /* var decltype: nullable MType */;
3933 short int var19 /* : Bool */;
3934 val* var20 /* : null */;
3935 short int var21 /* : Bool */;
3936 short int var_ /* var : Bool */;
3937 short int var22 /* : Bool */;
3938 int cltype;
3939 int idtype;
3940 static val* varonce;
3941 val* var23 /* : String */;
3942 char* var24 /* : NativeString */;
3943 long var25 /* : Int */;
3944 val* var26 /* : String */;
3945 val* var27 /* : nullable MClass */;
3946 val* var28 /* : MClassType */;
3947 val* var29 /* : MType */;
3948 val* var30 /* : null */;
3949 short int var31 /* : Bool */;
3950 short int var32 /* : Bool */;
3951 var_v = p0;
3952 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVardeclExpr__variable]))(self) /* variable on <self:AVardeclExpr>*/;
3953 var_variable = var;
3954 var1 = NULL;
3955 if (var_variable == NULL) {
3956 var2 = 1; /* is null */
3957 } else {
3958 var2 = 0; /* arg is null but recv is not */
3959 }
3960 if (var2){
3961 goto RET_LABEL;
3962 } else {
3963 }
3964 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_type]))(self) /* n_type on <self:AVardeclExpr>*/;
3965 var_ntype = var3;
3966 var4 = NULL;
3967 if (var_ntype == NULL) {
3968 var5 = 1; /* is null */
3969 } else {
3970 var5 = 0; /* arg is null but recv is not */
3971 }
3972 if (var5){
3973 var6 = NULL;
3974 var_mtype = var6;
3975 } else {
3976 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_mtype]))(var_v, var_ntype) /* resolve_mtype on <var_v:TypeVisitor>*/;
3977 var_mtype = var7;
3978 var8 = NULL;
3979 if (var_mtype == NULL) {
3980 var9 = 1; /* is null */
3981 } else {
3982 var9 = 0; /* arg is null but recv is not */
3983 }
3984 if (var9){
3985 goto RET_LABEL;
3986 } else {
3987 }
3988 }
3989 var10 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AVardeclExpr__n_expr]))(self) /* n_expr on <self:AVardeclExpr>*/;
3990 var_nexpr = var10;
3991 var11 = NULL;
3992 if (var_nexpr == NULL) {
3993 var12 = 0; /* is null */
3994 } else {
3995 var12 = 1; /* arg is null and recv is not */
3996 }
3997 if (var12){
3998 var13 = NULL;
3999 if (var_mtype == NULL) {
4000 var14 = 0; /* is null */
4001 } else {
4002 var14 = 1; /* arg is null and recv is not */
4003 }
4004 if (var14){
4005 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>*/;
4006 var15;
4007 } else {
4008 var16 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4009 var_mtype = var16;
4010 var17 = NULL;
4011 if (var_mtype == NULL) {
4012 var18 = 1; /* is null */
4013 } else {
4014 var18 = 0; /* arg is null but recv is not */
4015 }
4016 if (var18){
4017 goto RET_LABEL;
4018 } else {
4019 }
4020 }
4021 } else {
4022 }
4023 var_decltype = var_mtype;
4024 var20 = NULL;
4025 if (var_mtype == NULL) {
4026 var21 = 1; /* is null */
4027 } else {
4028 var21 = 0; /* arg is null but recv is not */
4029 }
4030 var_ = var21;
4031 if (var21){
4032 var19 = var_;
4033 } else {
4034 /* <var_mtype:nullable MType(MType)> isa MNullType */
4035 cltype = type_model__MNullType.color;
4036 idtype = type_model__MNullType.id;
4037 if(cltype >= var_mtype->type->table_size) {
4038 var22 = 0;
4039 } else {
4040 var22 = var_mtype->type->type_table[cltype] == idtype;
4041 }
4042 var19 = var22;
4043 }
4044 if (var19){
4045 if (varonce) {
4046 var23 = varonce;
4047 } else {
4048 var24 = "Object";
4049 var25 = 6;
4050 var26 = string__NativeString__to_s_with_length(var24, var25);
4051 var23 = var26;
4052 varonce = var23;
4053 }
4054 var27 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var23) /* get_mclass on <var_v:TypeVisitor>*/;
4055 if (var27 == NULL) {
4056 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4057 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 597);
4058 exit(1);
4059 } else {
4060 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClass__mclass_type]))(var27) /* mclass_type on <var27:nullable MClass>*/;
4061 }
4062 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MType__as_nullable]))(var28) /* as_nullable on <var28:MClassType>*/;
4063 var_decltype = var29;
4064 var30 = NULL;
4065 if (var_mtype == NULL) {
4066 var31 = 1; /* is null */
4067 } else {
4068 var31 = 0; /* arg is null but recv is not */
4069 }
4070 if (var31){
4071 var_mtype = var_decltype;
4072 } else {
4073 }
4074 } else {
4075 }
4076 ((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)>*/;
4077 ((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>*/;
4078 var32 = 1;
4079 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var32) /* is_typed= on <self:AVardeclExpr>*/;
4080 RET_LABEL:;
4081 }
4082 /* method typing#AVardeclExpr#accept_typing for (self: Object, TypeVisitor) */
4083 void VIRTUAL_typing__AVardeclExpr__accept_typing(val* self, val* p0) {
4084 typing__AVardeclExpr__accept_typing(self, p0);
4085 RET_LABEL:;
4086 }
4087 /* method typing#AVarExpr#its_variable for (self: AVarExpr): nullable Variable */
4088 val* typing__AVarExpr__its_variable(val* self) {
4089 val* var /* : nullable Variable */;
4090 val* var1 /* : nullable Variable */;
4091 var1 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4092 var = var1;
4093 goto RET_LABEL;
4094 RET_LABEL:;
4095 return var;
4096 }
4097 /* method typing#AVarExpr#its_variable for (self: Object): nullable Variable */
4098 val* VIRTUAL_typing__AVarExpr__its_variable(val* self) {
4099 val* var /* : nullable Variable */;
4100 val* var1 /* : nullable Variable */;
4101 var1 = typing__AVarExpr__its_variable(self);
4102 var = var1;
4103 RET_LABEL:;
4104 return var;
4105 }
4106 /* method typing#AVarExpr#accept_typing for (self: AVarExpr, TypeVisitor) */
4107 void typing__AVarExpr__accept_typing(val* self, val* p0) {
4108 val* var_v /* var v: TypeVisitor */;
4109 val* var /* : nullable Variable */;
4110 val* var_variable /* var variable: nullable Variable */;
4111 val* var1 /* : null */;
4112 short int var2 /* : Bool */;
4113 val* var3 /* : nullable MType */;
4114 val* var_mtype /* var mtype: nullable MType */;
4115 val* var4 /* : null */;
4116 short int var5 /* : Bool */;
4117 var_v = p0;
4118 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarExpr>*/;
4119 var_variable = var;
4120 var1 = NULL;
4121 if (var_variable == NULL) {
4122 var2 = 1; /* is null */
4123 } else {
4124 var2 = 0; /* arg is null but recv is not */
4125 }
4126 if (var2){
4127 goto RET_LABEL;
4128 } else {
4129 }
4130 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>*/;
4131 var_mtype = var3;
4132 var4 = NULL;
4133 if (var_mtype == NULL) {
4134 var5 = 0; /* is null */
4135 } else {
4136 var5 = 1; /* arg is null and recv is not */
4137 }
4138 if (var5){
4139 } else {
4140 }
4141 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AVarExpr>*/;
4142 RET_LABEL:;
4143 }
4144 /* method typing#AVarExpr#accept_typing for (self: Object, TypeVisitor) */
4145 void VIRTUAL_typing__AVarExpr__accept_typing(val* self, val* p0) {
4146 typing__AVarExpr__accept_typing(self, p0);
4147 RET_LABEL:;
4148 }
4149 /* method typing#AVarAssignExpr#accept_typing for (self: AVarAssignExpr, TypeVisitor) */
4150 void typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4151 val* var_v /* var v: TypeVisitor */;
4152 val* var /* : nullable Variable */;
4153 val* var_variable /* var variable: nullable Variable */;
4154 val* var1 /* : null */;
4155 short int var2 /* : Bool */;
4156 val* var3 /* : AExpr */;
4157 val* var4 /* : nullable MType */;
4158 val* var5 /* : nullable MType */;
4159 val* var_mtype /* var mtype: nullable MType */;
4160 short int var6 /* : Bool */;
4161 var_v = p0;
4162 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarAssignExpr>*/;
4163 var_variable = var;
4164 var1 = NULL;
4165 if (var_variable == NULL) {
4166 var2 = 0; /* is null */
4167 } else {
4168 var2 = 1; /* arg is null and recv is not */
4169 }
4170 if (!var2) {
4171 fprintf(stderr, "Runtime error: %s", "Assert failed");
4172 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 632);
4173 exit(1);
4174 }
4175 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:AVarAssignExpr>*/;
4176 var4 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4177 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>*/;
4178 var_mtype = var5;
4179 ((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>*/;
4180 var6 = 1;
4181 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var6) /* is_typed= on <self:AVarAssignExpr>*/;
4182 RET_LABEL:;
4183 }
4184 /* method typing#AVarAssignExpr#accept_typing for (self: Object, TypeVisitor) */
4185 void VIRTUAL_typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
4186 typing__AVarAssignExpr__accept_typing(self, p0);
4187 RET_LABEL:;
4188 }
4189 /* method typing#AReassignFormExpr#reassign_property for (self: AReassignFormExpr): nullable MMethodDef */
4190 val* typing__AReassignFormExpr__reassign_property(val* self) {
4191 val* var /* : nullable MMethodDef */;
4192 val* var1 /* : nullable CallSite */;
4193 val* var2 /* : MMethodDef */;
4194 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite]))(self) /* reassign_callsite on <self:AReassignFormExpr>*/;
4195 if (var1 == NULL) {
4196 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4197 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 644);
4198 exit(1);
4199 } else {
4200 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mpropdef]))(var1) /* mpropdef on <var1:nullable CallSite>*/;
4201 }
4202 var = var2;
4203 goto RET_LABEL;
4204 RET_LABEL:;
4205 return var;
4206 }
4207 /* method typing#AReassignFormExpr#reassign_property for (self: Object): nullable MMethodDef */
4208 val* VIRTUAL_typing__AReassignFormExpr__reassign_property(val* self) {
4209 val* var /* : nullable MMethodDef */;
4210 val* var1 /* : nullable MMethodDef */;
4211 var1 = typing__AReassignFormExpr__reassign_property(self);
4212 var = var1;
4213 RET_LABEL:;
4214 return var;
4215 }
4216 /* method typing#AReassignFormExpr#reassign_callsite for (self: AReassignFormExpr): nullable CallSite */
4217 val* typing__AReassignFormExpr__reassign_callsite(val* self) {
4218 val* var /* : nullable CallSite */;
4219 val* var1 /* : nullable CallSite */;
4220 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val; /* @reassign_callsite on <self:AReassignFormExpr> */
4221 var = var1;
4222 RET_LABEL:;
4223 return var;
4224 }
4225 /* method typing#AReassignFormExpr#reassign_callsite for (self: Object): nullable CallSite */
4226 val* VIRTUAL_typing__AReassignFormExpr__reassign_callsite(val* self) {
4227 val* var /* : nullable CallSite */;
4228 val* var1 /* : nullable CallSite */;
4229 var1 = typing__AReassignFormExpr__reassign_callsite(self);
4230 var = var1;
4231 RET_LABEL:;
4232 return var;
4233 }
4234 /* method typing#AReassignFormExpr#reassign_callsite= for (self: AReassignFormExpr, nullable CallSite) */
4235 void typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4236 self->attrs[COLOR_typing__AReassignFormExpr___64dreassign_callsite].val = p0; /* @reassign_callsite on <self:AReassignFormExpr> */
4237 RET_LABEL:;
4238 }
4239 /* method typing#AReassignFormExpr#reassign_callsite= for (self: Object, nullable CallSite) */
4240 void VIRTUAL_typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
4241 typing__AReassignFormExpr__reassign_callsite_61d(self, p0);
4242 RET_LABEL:;
4243 }
4244 /* method typing#AReassignFormExpr#read_type for (self: AReassignFormExpr): nullable MType */
4245 val* typing__AReassignFormExpr__read_type(val* self) {
4246 val* var /* : nullable MType */;
4247 val* var1 /* : nullable MType */;
4248 var1 = self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val; /* @read_type on <self:AReassignFormExpr> */
4249 var = var1;
4250 RET_LABEL:;
4251 return var;
4252 }
4253 /* method typing#AReassignFormExpr#read_type for (self: Object): nullable MType */
4254 val* VIRTUAL_typing__AReassignFormExpr__read_type(val* self) {
4255 val* var /* : nullable MType */;
4256 val* var1 /* : nullable MType */;
4257 var1 = typing__AReassignFormExpr__read_type(self);
4258 var = var1;
4259 RET_LABEL:;
4260 return var;
4261 }
4262 /* method typing#AReassignFormExpr#read_type= for (self: AReassignFormExpr, nullable MType) */
4263 void typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4264 self->attrs[COLOR_typing__AReassignFormExpr___64dread_type].val = p0; /* @read_type on <self:AReassignFormExpr> */
4265 RET_LABEL:;
4266 }
4267 /* method typing#AReassignFormExpr#read_type= for (self: Object, nullable MType) */
4268 void VIRTUAL_typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
4269 typing__AReassignFormExpr__read_type_61d(self, p0);
4270 RET_LABEL:;
4271 }
4272 /* method typing#AReassignFormExpr#resolve_reassignment for (self: AReassignFormExpr, TypeVisitor, MType, MType): nullable MType */
4273 val* typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4274 val* var /* : nullable MType */;
4275 val* var_v /* var v: TypeVisitor */;
4276 val* var_readtype /* var readtype: MType */;
4277 val* var_writetype /* var writetype: MType */;
4278 val* var1 /* : AAssignOp */;
4279 short int var2 /* : Bool */;
4280 int cltype;
4281 int idtype;
4282 static val* varonce;
4283 val* var3 /* : String */;
4284 char* var4 /* : NativeString */;
4285 long var5 /* : Int */;
4286 val* var6 /* : String */;
4287 val* var_reassign_name /* var reassign_name: String */;
4288 val* var7 /* : AAssignOp */;
4289 short int var8 /* : Bool */;
4290 int cltype9;
4291 int idtype10;
4292 static val* varonce11;
4293 val* var12 /* : String */;
4294 char* var13 /* : NativeString */;
4295 long var14 /* : Int */;
4296 val* var15 /* : String */;
4297 short int var16 /* : Bool */;
4298 int cltype17;
4299 int idtype18;
4300 static val* varonce19;
4301 val* var20 /* : String */;
4302 char* var21 /* : NativeString */;
4303 long var22 /* : Int */;
4304 val* var23 /* : String */;
4305 static val* varonce24;
4306 val* var25 /* : String */;
4307 char* var26 /* : NativeString */;
4308 long var27 /* : Int */;
4309 val* var28 /* : String */;
4310 val* var29 /* : Array[Object] */;
4311 long var30 /* : Int */;
4312 val* var31 /* : NativeArray[Object] */;
4313 val* var32 /* : String */;
4314 val* var33 /* : null */;
4315 short int var34 /* : Bool */;
4316 val* var35 /* : nullable CallSite */;
4317 val* var_callsite /* var callsite: nullable CallSite */;
4318 val* var36 /* : null */;
4319 short int var37 /* : Bool */;
4320 val* var38 /* : null */;
4321 val* var39 /* : MSignature */;
4322 val* var_msignature /* var msignature: MSignature */;
4323 val* var40 /* : nullable MType */;
4324 val* var_rettype /* var rettype: nullable MType */;
4325 short int var41 /* : Bool */;
4326 long var42 /* : Int */;
4327 long var43 /* : Int */;
4328 short int var44 /* : Bool */;
4329 short int var46 /* : Bool */;
4330 short int var_ /* var : Bool */;
4331 val* var47 /* : null */;
4332 short int var48 /* : Bool */;
4333 val* var49 /* : AExpr */;
4334 val* var50 /* : Array[MParameter] */;
4335 val* var51 /* : nullable Object */;
4336 val* var52 /* : MType */;
4337 val* var53 /* : nullable MType */;
4338 val* var_value_type /* var value_type: nullable MType */;
4339 val* var54 /* : null */;
4340 short int var55 /* : Bool */;
4341 val* var56 /* : null */;
4342 val* var57 /* : nullable MType */;
4343 var_v = p0;
4344 var_readtype = p1;
4345 var_writetype = p2;
4346 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4347 /* <var1:AAssignOp> isa APlusAssignOp */
4348 cltype = type_parser_nodes__APlusAssignOp.color;
4349 idtype = type_parser_nodes__APlusAssignOp.id;
4350 if(cltype >= var1->type->table_size) {
4351 var2 = 0;
4352 } else {
4353 var2 = var1->type->type_table[cltype] == idtype;
4354 }
4355 if (var2){
4356 if (varonce) {
4357 var3 = varonce;
4358 } else {
4359 var4 = "+";
4360 var5 = 1;
4361 var6 = string__NativeString__to_s_with_length(var4, var5);
4362 var3 = var6;
4363 varonce = var3;
4364 }
4365 var_reassign_name = var3;
4366 } else {
4367 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_assign_op]))(self) /* n_assign_op on <self:AReassignFormExpr>*/;
4368 /* <var7:AAssignOp> isa AMinusAssignOp */
4369 cltype9 = type_parser_nodes__AMinusAssignOp.color;
4370 idtype10 = type_parser_nodes__AMinusAssignOp.id;
4371 if(cltype9 >= var7->type->table_size) {
4372 var8 = 0;
4373 } else {
4374 var8 = var7->type->type_table[cltype9] == idtype10;
4375 }
4376 if (var8){
4377 if (varonce11) {
4378 var12 = varonce11;
4379 } else {
4380 var13 = "-";
4381 var14 = 1;
4382 var15 = string__NativeString__to_s_with_length(var13, var14);
4383 var12 = var15;
4384 varonce11 = var12;
4385 }
4386 var_reassign_name = var12;
4387 } else {
4388 fprintf(stderr, "Runtime error: %s", "Aborted");
4389 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 664);
4390 exit(1);
4391 }
4392 }
4393 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__read_type_61d]))(self, var_readtype) /* read_type= on <self:AReassignFormExpr>*/;
4394 /* <var_readtype:MType> isa MNullType */
4395 cltype17 = type_model__MNullType.color;
4396 idtype18 = type_model__MNullType.id;
4397 if(cltype17 >= var_readtype->type->table_size) {
4398 var16 = 0;
4399 } else {
4400 var16 = var_readtype->type->type_table[cltype17] == idtype18;
4401 }
4402 if (var16){
4403 if (varonce19) {
4404 var20 = varonce19;
4405 } else {
4406 var21 = "Error: Method \'";
4407 var22 = 15;
4408 var23 = string__NativeString__to_s_with_length(var21, var22);
4409 var20 = var23;
4410 varonce19 = var20;
4411 }
4412 if (varonce24) {
4413 var25 = varonce24;
4414 } else {
4415 var26 = "\' call on \'null\'.";
4416 var27 = 17;
4417 var28 = string__NativeString__to_s_with_length(var26, var27);
4418 var25 = var28;
4419 varonce24 = var25;
4420 }
4421 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
4422 { /* var29 = array_instance Array[Object] */
4423 var30 = 3;
4424 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
4425 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var20;
4426 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_reassign_name;
4427 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
4428 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
4429 CHECK_NEW_array__Array(var29);
4430 }
4431 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
4432 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
4433 var33 = NULL;
4434 var = var33;
4435 goto RET_LABEL;
4436 } else {
4437 }
4438 var34 = 0;
4439 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>*/;
4440 var_callsite = var35;
4441 var36 = NULL;
4442 if (var_callsite == NULL) {
4443 var37 = 1; /* is null */
4444 } else {
4445 var37 = 0; /* arg is null but recv is not */
4446 }
4447 if (var37){
4448 var38 = NULL;
4449 var = var38;
4450 goto RET_LABEL;
4451 } else {
4452 }
4453 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AReassignFormExpr__reassign_callsite_61d]))(self, var_callsite) /* reassign_callsite= on <self:AReassignFormExpr>*/;
4454 var39 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
4455 var_msignature = var39;
4456 var40 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
4457 var_rettype = var40;
4458 var42 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
4459 var43 = 1;
4460 { /* Inline kernel#Int#== (var42,var43) */
4461 var46 = var42 == var43;
4462 var44 = var46;
4463 goto RET_LABEL45;
4464 RET_LABEL45:(void)0;
4465 }
4466 var_ = var44;
4467 if (var44){
4468 var47 = NULL;
4469 if (var_rettype == NULL) {
4470 var48 = 0; /* is null */
4471 } else {
4472 var48 = 1; /* arg is null and recv is not */
4473 }
4474 var41 = var48;
4475 } else {
4476 var41 = var_;
4477 }
4478 if (!var41) {
4479 fprintf(stderr, "Runtime error: %s", "Assert failed");
4480 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 680);
4481 exit(1);
4482 }
4483 var49 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:AReassignFormExpr>*/;
4484 var50 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
4485 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__first]))(var50) /* first on <var50:Array[MParameter]>*/;
4486 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_model__MParameter__mtype]))(var51) /* mtype on <var51:nullable Object(MParameter)>*/;
4487 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>*/;
4488 var_value_type = var53;
4489 var54 = NULL;
4490 if (var_value_type == NULL) {
4491 var55 = 1; /* is null */
4492 } else {
4493 var55 = 0; /* arg is null but recv is not */
4494 }
4495 if (var55){
4496 var56 = NULL;
4497 var = var56;
4498 goto RET_LABEL;
4499 } else {
4500 }
4501 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>*/;
4502 var57;
4503 var = var_rettype;
4504 goto RET_LABEL;
4505 RET_LABEL:;
4506 return var;
4507 }
4508 /* method typing#AReassignFormExpr#resolve_reassignment for (self: Object, TypeVisitor, MType, MType): nullable MType */
4509 val* VIRTUAL_typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
4510 val* var /* : nullable MType */;
4511 val* var1 /* : nullable MType */;
4512 var1 = typing__AReassignFormExpr__resolve_reassignment(self, p0, p1, p2);
4513 var = var1;
4514 RET_LABEL:;
4515 return var;
4516 }
4517 /* method typing#AVarReassignExpr#accept_typing for (self: AVarReassignExpr, TypeVisitor) */
4518 void typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4519 val* var_v /* var v: TypeVisitor */;
4520 val* var /* : nullable Variable */;
4521 val* var_variable /* var variable: nullable Variable */;
4522 val* var1 /* : null */;
4523 short int var2 /* : Bool */;
4524 val* var3 /* : nullable MType */;
4525 val* var_readtype /* var readtype: nullable MType */;
4526 val* var4 /* : null */;
4527 short int var5 /* : Bool */;
4528 val* var6 /* : nullable MType */;
4529 val* var_writetype /* var writetype: nullable MType */;
4530 val* var7 /* : null */;
4531 short int var8 /* : Bool */;
4532 val* var9 /* : nullable MType */;
4533 val* var_rettype /* var rettype: nullable MType */;
4534 short int var10 /* : Bool */;
4535 var_v = p0;
4536 var = ((val* (*)(val*))(self->class->vft[COLOR_scope__AVarFormExpr__variable]))(self) /* variable on <self:AVarReassignExpr>*/;
4537 var_variable = var;
4538 var1 = NULL;
4539 if (var_variable == NULL) {
4540 var2 = 0; /* is null */
4541 } else {
4542 var2 = 1; /* arg is null and recv is not */
4543 }
4544 if (!var2) {
4545 fprintf(stderr, "Runtime error: %s", "Assert failed");
4546 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 694);
4547 exit(1);
4548 }
4549 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>*/;
4550 var_readtype = var3;
4551 var4 = NULL;
4552 if (var_readtype == NULL) {
4553 var5 = 1; /* is null */
4554 } else {
4555 var5 = 0; /* arg is null but recv is not */
4556 }
4557 if (var5){
4558 goto RET_LABEL;
4559 } else {
4560 }
4561 var6 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:nullable Variable(Variable)>*/;
4562 var_writetype = var6;
4563 var7 = NULL;
4564 if (var_writetype == NULL) {
4565 var8 = 1; /* is null */
4566 } else {
4567 var8 = 0; /* arg is null but recv is not */
4568 }
4569 if (var8){
4570 goto RET_LABEL;
4571 } else {
4572 }
4573 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>*/;
4574 var_rettype = var9;
4575 ((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>*/;
4576 var10 = 1;
4577 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var10) /* is_typed= on <self:AVarReassignExpr>*/;
4578 RET_LABEL:;
4579 }
4580 /* method typing#AVarReassignExpr#accept_typing for (self: Object, TypeVisitor) */
4581 void VIRTUAL_typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
4582 typing__AVarReassignExpr__accept_typing(self, p0);
4583 RET_LABEL:;
4584 }
4585 /* method typing#AContinueExpr#accept_typing for (self: AContinueExpr, TypeVisitor) */
4586 void typing__AContinueExpr__accept_typing(val* self, val* p0) {
4587 val* var_v /* var v: TypeVisitor */;
4588 val* var /* : nullable AExpr */;
4589 val* var_nexpr /* var nexpr: nullable AExpr */;
4590 val* var1 /* : null */;
4591 short int var2 /* : Bool */;
4592 val* var3 /* : nullable MType */;
4593 val* var_mtype /* var mtype: nullable MType */;
4594 short int var4 /* : Bool */;
4595 var_v = p0;
4596 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AContinueExpr__n_expr]))(self) /* n_expr on <self:AContinueExpr>*/;
4597 var_nexpr = var;
4598 var1 = NULL;
4599 if (var_nexpr == NULL) {
4600 var2 = 0; /* is null */
4601 } else {
4602 var2 = 1; /* arg is null and recv is not */
4603 }
4604 if (var2){
4605 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4606 var_mtype = var3;
4607 } else {
4608 }
4609 var4 = 1;
4610 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:AContinueExpr>*/;
4611 RET_LABEL:;
4612 }
4613 /* method typing#AContinueExpr#accept_typing for (self: Object, TypeVisitor) */
4614 void VIRTUAL_typing__AContinueExpr__accept_typing(val* self, val* p0) {
4615 typing__AContinueExpr__accept_typing(self, p0);
4616 RET_LABEL:;
4617 }
4618 /* method typing#ABreakExpr#accept_typing for (self: ABreakExpr, TypeVisitor) */
4619 void typing__ABreakExpr__accept_typing(val* self, val* p0) {
4620 val* var_v /* var v: TypeVisitor */;
4621 val* var /* : nullable AExpr */;
4622 val* var_nexpr /* var nexpr: nullable AExpr */;
4623 val* var1 /* : null */;
4624 short int var2 /* : Bool */;
4625 val* var3 /* : nullable MType */;
4626 val* var_mtype /* var mtype: nullable MType */;
4627 short int var4 /* : Bool */;
4628 var_v = p0;
4629 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABreakExpr__n_expr]))(self) /* n_expr on <self:ABreakExpr>*/;
4630 var_nexpr = var;
4631 var1 = NULL;
4632 if (var_nexpr == NULL) {
4633 var2 = 0; /* is null */
4634 } else {
4635 var2 = 1; /* arg is null and recv is not */
4636 }
4637 if (var2){
4638 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
4639 var_mtype = var3;
4640 } else {
4641 }
4642 var4 = 1;
4643 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var4) /* is_typed= on <self:ABreakExpr>*/;
4644 RET_LABEL:;
4645 }
4646 /* method typing#ABreakExpr#accept_typing for (self: Object, TypeVisitor) */
4647 void VIRTUAL_typing__ABreakExpr__accept_typing(val* self, val* p0) {
4648 typing__ABreakExpr__accept_typing(self, p0);
4649 RET_LABEL:;
4650 }
4651 /* method typing#AReturnExpr#accept_typing for (self: AReturnExpr, TypeVisitor) */
4652 void typing__AReturnExpr__accept_typing(val* self, val* p0) {
4653 val* var_v /* var v: TypeVisitor */;
4654 val* var /* : nullable AExpr */;
4655 val* var_nexpr /* var nexpr: nullable AExpr */;
4656 val* var1 /* : MPropDef */;
4657 short int var2 /* : Bool */;
4658 int cltype;
4659 int idtype;
4660 const char* var_class_name;
4661 val* var3 /* : nullable MSignature */;
4662 val* var4 /* : nullable MType */;
4663 val* var_ret_type /* var ret_type: nullable MType */;
4664 val* var5 /* : null */;
4665 short int var6 /* : Bool */;
4666 val* var7 /* : null */;
4667 short int var8 /* : Bool */;
4668 val* var9 /* : nullable MType */;
4669 val* var_mtype /* var mtype: nullable MType */;
4670 val* var10 /* : nullable MType */;
4671 val* var_mtype11 /* var mtype: nullable MType */;
4672 static val* varonce;
4673 val* var12 /* : String */;
4674 char* var13 /* : NativeString */;
4675 long var14 /* : Int */;
4676 val* var15 /* : String */;
4677 val* var16 /* : null */;
4678 short int var17 /* : Bool */;
4679 static val* varonce18;
4680 val* var19 /* : String */;
4681 char* var20 /* : NativeString */;
4682 long var21 /* : Int */;
4683 val* var22 /* : String */;
4684 short int var23 /* : Bool */;
4685 var_v = p0;
4686 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReturnExpr__n_expr]))(self) /* n_expr on <self:AReturnExpr>*/;
4687 var_nexpr = var;
4688 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
4689 /* <var1:MPropDef> isa MMethodDef */
4690 cltype = type_model__MMethodDef.color;
4691 idtype = type_model__MMethodDef.id;
4692 if(cltype >= var1->type->table_size) {
4693 var2 = 0;
4694 } else {
4695 var2 = var1->type->type_table[cltype] == idtype;
4696 }
4697 if (!var2) {
4698 var_class_name = var1 == NULL ? "null" : var1->type->name;
4699 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name);
4700 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 737);
4701 exit(1);
4702 }
4703 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MMethodDef__msignature]))(var1) /* msignature on <var1:MPropDef(MMethodDef)>*/;
4704 if (var3 == NULL) {
4705 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4706 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 737);
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 const char* var_class_name;
5347 static val* varonce166;
5348 val* var167 /* : String */;
5349 char* var168 /* : NativeString */;
5350 long var169 /* : Int */;
5351 val* var170 /* : String */;
5352 short int var171 /* : Bool */;
5353 val* var172 /* : nullable CallSite */;
5354 val* var_ikdef /* var ikdef: nullable CallSite */;
5355 val* var173 /* : null */;
5356 short int var174 /* : Bool */;
5357 static val* varonce175;
5358 val* var176 /* : String */;
5359 char* var177 /* : NativeString */;
5360 long var178 /* : Int */;
5361 val* var179 /* : String */;
5362 val* var180 /* : Array[Object] */;
5363 long var181 /* : Int */;
5364 val* var182 /* : NativeArray[Object] */;
5365 val* var183 /* : String */;
5366 val* var184 /* : MMethod */;
5367 static val* varonce185;
5368 val* var186 /* : String */;
5369 char* var187 /* : NativeString */;
5370 long var188 /* : Int */;
5371 val* var189 /* : String */;
5372 short int var190 /* : Bool */;
5373 val* var191 /* : nullable CallSite */;
5374 val* var_itemdef /* var itemdef: nullable CallSite */;
5375 val* var192 /* : null */;
5376 short int var193 /* : Bool */;
5377 static val* varonce194;
5378 val* var195 /* : String */;
5379 char* var196 /* : NativeString */;
5380 long var197 /* : Int */;
5381 val* var198 /* : String */;
5382 val* var199 /* : Array[Object] */;
5383 long var200 /* : Int */;
5384 val* var201 /* : NativeArray[Object] */;
5385 val* var202 /* : String */;
5386 val* var203 /* : MMethod */;
5387 static val* varonce204;
5388 val* var205 /* : String */;
5389 char* var206 /* : NativeString */;
5390 long var207 /* : Int */;
5391 val* var208 /* : String */;
5392 short int var209 /* : Bool */;
5393 val* var210 /* : nullable CallSite */;
5394 val* var_nextdef /* var nextdef: nullable CallSite */;
5395 val* var211 /* : null */;
5396 short int var212 /* : Bool */;
5397 static val* varonce213;
5398 val* var214 /* : String */;
5399 char* var215 /* : NativeString */;
5400 long var216 /* : Int */;
5401 val* var217 /* : String */;
5402 val* var218 /* : Array[Object] */;
5403 long var219 /* : Int */;
5404 val* var220 /* : NativeArray[Object] */;
5405 val* var221 /* : String */;
5406 val* var222 /* : MMethod */;
5407 static val* varonce223;
5408 val* var224 /* : String */;
5409 char* var225 /* : NativeString */;
5410 long var226 /* : Int */;
5411 val* var227 /* : String */;
5412 short int var228 /* : Bool */;
5413 val* var229 /* : nullable CallSite */;
5414 val* var_keydef /* var keydef: nullable CallSite */;
5415 val* var230 /* : null */;
5416 short int var231 /* : Bool */;
5417 static val* varonce232;
5418 val* var233 /* : String */;
5419 char* var234 /* : NativeString */;
5420 long var235 /* : Int */;
5421 val* var236 /* : String */;
5422 val* var237 /* : Array[Object] */;
5423 long var238 /* : Int */;
5424 val* var239 /* : NativeArray[Object] */;
5425 val* var240 /* : String */;
5426 val* var241 /* : MMethod */;
5427 var_v = p0;
5428 var_mtype = p1;
5429 if (varonce) {
5430 var = varonce;
5431 } else {
5432 var1 = "Object";
5433 var2 = 6;
5434 var3 = string__NativeString__to_s_with_length(var1, var2);
5435 var = var3;
5436 varonce = var;
5437 }
5438 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
5439 var_objcla = var4;
5440 var5 = NULL;
5441 if (var_objcla == NULL) {
5442 var6 = 1; /* is null */
5443 } else {
5444 var6 = 0; /* arg is null but recv is not */
5445 }
5446 if (var6){
5447 goto RET_LABEL;
5448 } else {
5449 }
5450 var7 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5451 var_unsafe_type = var7;
5452 if (varonce8) {
5453 var9 = varonce8;
5454 } else {
5455 var10 = "iterator";
5456 var11 = 8;
5457 var12 = string__NativeString__to_s_with_length(var10, var11);
5458 var9 = var12;
5459 varonce8 = var9;
5460 }
5461 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>*/;
5462 var14 = NULL;
5463 if (var13 == NULL) {
5464 var15 = 1; /* is null */
5465 } else {
5466 var15 = 0; /* arg is null but recv is not */
5467 }
5468 if (var15){
5469 if (varonce16) {
5470 var17 = varonce16;
5471 } else {
5472 var18 = "iterate";
5473 var19 = 7;
5474 var20 = string__NativeString__to_s_with_length(var18, var19);
5475 var17 = var20;
5476 varonce16 = var17;
5477 }
5478 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>*/;
5479 var22 = NULL;
5480 if (var21 == NULL) {
5481 var23 = 1; /* is null */
5482 } else {
5483 var23 = 0; /* arg is null but recv is not */
5484 }
5485 if (var23){
5486 if (varonce24) {
5487 var25 = varonce24;
5488 } else {
5489 var26 = "Type Error: Expected method \'iterator\' in type ";
5490 var27 = 47;
5491 var28 = string__NativeString__to_s_with_length(var26, var27);
5492 var25 = var28;
5493 varonce24 = var25;
5494 }
5495 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
5496 { /* var29 = array_instance Array[Object] */
5497 var30 = 2;
5498 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
5499 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var25;
5500 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_mtype;
5501 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
5502 CHECK_NEW_array__Array(var29);
5503 }
5504 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
5505 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var32) /* error on <var_v:TypeVisitor>*/;
5506 } else {
5507 var33 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
5508 if (varonce34) {
5509 var35 = varonce34;
5510 } else {
5511 var36 = "NOT YET IMPLEMENTED: Do \'for\' on ";
5512 var37 = 33;
5513 var38 = string__NativeString__to_s_with_length(var36, var37);
5514 var35 = var38;
5515 varonce34 = var35;
5516 }
5517 var39 = NEW_array__Array(&type_array__Arraykernel__Object);
5518 { /* var39 = array_instance Array[Object] */
5519 var40 = 2;
5520 var41 = NEW_array__NativeArray(var40, &type_array__NativeArraykernel__Object);
5521 ((struct instance_array__NativeArray*)var41)->values[0] = (val*) var35;
5522 ((struct instance_array__NativeArray*)var41)->values[1] = (val*) var_mtype;
5523 ((void (*)(val*, val*, long))(var39->class->vft[COLOR_array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
5524 CHECK_NEW_array__Array(var39);
5525 }
5526 var42 = ((val* (*)(val*))(var39->class->vft[COLOR_string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
5527 ((void (*)(val*, val*, val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var33, self, var42) /* error on <var33:ModelBuilder>*/;
5528 }
5529 goto RET_LABEL;
5530 } else {
5531 }
5532 if (varonce43) {
5533 var44 = varonce43;
5534 } else {
5535 var45 = "iterator";
5536 var46 = 8;
5537 var47 = string__NativeString__to_s_with_length(var45, var46);
5538 var44 = var47;
5539 varonce43 = var44;
5540 }
5541 var48 = 1;
5542 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>*/;
5543 var_itdef = var49;
5544 var50 = NULL;
5545 if (var_itdef == NULL) {
5546 var51 = 1; /* is null */
5547 } else {
5548 var51 = 0; /* arg is null but recv is not */
5549 }
5550 if (var51){
5551 if (varonce52) {
5552 var53 = varonce52;
5553 } else {
5554 var54 = "Type Error: Expected method \'iterator\' in type ";
5555 var55 = 47;
5556 var56 = string__NativeString__to_s_with_length(var54, var55);
5557 var53 = var56;
5558 varonce52 = var53;
5559 }
5560 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
5561 { /* var57 = array_instance Array[Object] */
5562 var58 = 2;
5563 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
5564 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var53;
5565 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var_mtype;
5566 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
5567 CHECK_NEW_array__Array(var57);
5568 }
5569 var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
5570 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var60) /* error on <var_v:TypeVisitor>*/;
5571 goto RET_LABEL;
5572 } else {
5573 }
5574 var61 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itdef) /* mproperty on <var_itdef:nullable CallSite(CallSite)>*/;
5575 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_iterator_61d]))(self, var61) /* method_iterator= on <self:AForExpr>*/;
5576 var62 = ((val* (*)(val*))(var_itdef->class->vft[COLOR_typing__CallSite__msignature]))(var_itdef) /* msignature on <var_itdef:nullable CallSite(CallSite)>*/;
5577 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_model__MSignature__return_mtype]))(var62) /* return_mtype on <var62:MSignature>*/;
5578 var_ittype = var63;
5579 var64 = NULL;
5580 if (var_ittype == NULL) {
5581 var65 = 1; /* is null */
5582 } else {
5583 var65 = 0; /* arg is null but recv is not */
5584 }
5585 if (var65){
5586 if (varonce66) {
5587 var67 = varonce66;
5588 } else {
5589 var68 = "Type Error: Expected method \'iterator\' to return an Iterator or MapIterator type";
5590 var69 = 80;
5591 var70 = string__NativeString__to_s_with_length(var68, var69);
5592 var67 = var70;
5593 varonce66 = var67;
5594 }
5595 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var67) /* error on <var_v:TypeVisitor>*/;
5596 goto RET_LABEL;
5597 } else {
5598 }
5599 if (varonce71) {
5600 var72 = varonce71;
5601 } else {
5602 var73 = "Iterator";
5603 var74 = 8;
5604 var75 = string__NativeString__to_s_with_length(var73, var74);
5605 var72 = var75;
5606 varonce71 = var72;
5607 }
5608 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>*/;
5609 var_colit_cla = var76;
5610 if (varonce77) {
5611 var78 = varonce77;
5612 } else {
5613 var79 = "MapIterator";
5614 var80 = 11;
5615 var81 = string__NativeString__to_s_with_length(var79, var80);
5616 var78 = var81;
5617 varonce77 = var78;
5618 }
5619 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>*/;
5620 var_mapit_cla = var82;
5621 var83 = 0;
5622 var_is_col = var83;
5623 var84 = 0;
5624 var_is_map = var84;
5625 var86 = NULL;
5626 if (var_colit_cla == NULL) {
5627 var87 = 0; /* is null */
5628 } else {
5629 var87 = 1; /* arg is null and recv is not */
5630 }
5631 var_ = var87;
5632 if (var87){
5633 var88 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5634 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MType__as_nullable]))(var88) /* as_nullable on <var88:MClassType>*/;
5635 var90 = NEW_array__Array(&type_array__Arraymodel__MType);
5636 { /* var90 = array_instance Array[MType] */
5637 var91 = 1;
5638 var92 = NEW_array__NativeArray(var91, &type_array__NativeArraymodel__MType);
5639 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var89;
5640 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[MType]>*/;
5641 CHECK_NEW_array__Array(var90);
5642 }
5643 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)>*/;
5644 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>*/;
5645 var85 = var94;
5646 } else {
5647 var85 = var_;
5648 }
5649 if (var85){
5650 var95 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5651 var96 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5652 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)>*/;
5653 var_coltype = var97;
5654 var98 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5655 var_variables = var98;
5656 if (var_variables == NULL) {
5657 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5658 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 866);
5659 exit(1);
5660 } else {
5661 var99 = ((long (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables) /* length on <var_variables:nullable Array[Variable]>*/;
5662 }
5663 var100 = 1;
5664 { /* Inline kernel#Int#!= (var99,var100) */
5665 var103 = var99 == var100;
5666 var104 = !var103;
5667 var101 = var104;
5668 goto RET_LABEL102;
5669 RET_LABEL102:(void)0;
5670 }
5671 if (var101){
5672 if (varonce105) {
5673 var106 = varonce105;
5674 } else {
5675 var107 = "Type Error: Expected one variable";
5676 var108 = 33;
5677 var109 = string__NativeString__to_s_with_length(var107, var108);
5678 var106 = var109;
5679 varonce105 = var106;
5680 }
5681 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var106) /* error on <var_v:TypeVisitor>*/;
5682 } else {
5683 if (var_variables == NULL) {
5684 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5685 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 869);
5686 exit(1);
5687 } else {
5688 var110 = ((val* (*)(val*))(var_variables->class->vft[COLOR_abstract_collection__Collection__first]))(var_variables) /* first on <var_variables:nullable Array[Variable]>*/;
5689 }
5690 var111 = ((val* (*)(val*))(var_coltype->class->vft[COLOR_model__MClassType__arguments]))(var_coltype) /* arguments on <var_coltype:MClassType>*/;
5691 var112 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_collection__Collection__first]))(var111) /* first on <var111:Array[MType]>*/;
5692 ((void (*)(val*, val*))(var110->class->vft[COLOR_typing__Variable__declared_type_61d]))(var110, var112) /* declared_type= on <var110:nullable Object(Variable)>*/;
5693 }
5694 var113 = 1;
5695 var_is_col = var113;
5696 } else {
5697 }
5698 var115 = NULL;
5699 if (var_mapit_cla == NULL) {
5700 var116 = 0; /* is null */
5701 } else {
5702 var116 = 1; /* arg is null and recv is not */
5703 }
5704 var_117 = var116;
5705 if (var116){
5706 var118 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5707 var119 = ((val* (*)(val*))(var_objcla->class->vft[COLOR_model__MClass__mclass_type]))(var_objcla) /* mclass_type on <var_objcla:nullable MClass(MClass)>*/;
5708 var120 = ((val* (*)(val*))(var119->class->vft[COLOR_model__MType__as_nullable]))(var119) /* as_nullable on <var119:MClassType>*/;
5709 var121 = NEW_array__Array(&type_array__Arraymodel__MType);
5710 { /* var121 = array_instance Array[MType] */
5711 var122 = 2;
5712 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraymodel__MType);
5713 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var118;
5714 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var120;
5715 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[MType]>*/;
5716 CHECK_NEW_array__Array(var121);
5717 }
5718 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)>*/;
5719 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>*/;
5720 var114 = var125;
5721 } else {
5722 var114 = var_117;
5723 }
5724 if (var114){
5725 var126 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
5726 var127 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor]))(var_v) /* anchor on <var_v:TypeVisitor>*/;
5727 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)>*/;
5728 var_coltype129 = var128;
5729 var130 = ((val* (*)(val*))(self->class->vft[COLOR_scope__AForExpr__variables]))(self) /* variables on <self:AForExpr>*/;
5730 var_variables131 = var130;
5731 if (var_variables131 == NULL) {
5732 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5733 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 878);
5734 exit(1);
5735 } else {
5736 var132 = ((long (*)(val*))(var_variables131->class->vft[COLOR_abstract_collection__Collection__length]))(var_variables131) /* length on <var_variables131:nullable Array[Variable]>*/;
5737 }
5738 var133 = 2;
5739 { /* Inline kernel#Int#!= (var132,var133) */
5740 var136 = var132 == var133;
5741 var137 = !var136;
5742 var134 = var137;
5743 goto RET_LABEL135;
5744 RET_LABEL135:(void)0;
5745 }
5746 if (var134){
5747 if (varonce138) {
5748 var139 = varonce138;
5749 } else {
5750 var140 = "Type Error: Expected two variables";
5751 var141 = 34;
5752 var142 = string__NativeString__to_s_with_length(var140, var141);
5753 var139 = var142;
5754 varonce138 = var139;
5755 }
5756 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var139) /* error on <var_v:TypeVisitor>*/;
5757 } else {
5758 var143 = 0;
5759 if (var_variables131 == NULL) {
5760 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5761 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 881);
5762 exit(1);
5763 } else {
5764 var144 = ((val* (*)(val*, long))(var_variables131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables131, var143) /* [] on <var_variables131:nullable Array[Variable]>*/;
5765 }
5766 var145 = ((val* (*)(val*))(var_coltype129->class->vft[COLOR_model__MClassType__arguments]))(var_coltype129) /* arguments on <var_coltype129:MClassType>*/;
5767 var146 = 0;
5768 var147 = ((val* (*)(val*, long))(var145->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var145, var146) /* [] on <var145:Array[MType]>*/;
5769 ((void (*)(val*, val*))(var144->class->vft[COLOR_typing__Variable__declared_type_61d]))(var144, var147) /* declared_type= on <var144:nullable Object(Variable)>*/;
5770 var148 = 1;
5771 if (var_variables131 == NULL) {
5772 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5773 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 882);
5774 exit(1);
5775 } else {
5776 var149 = ((val* (*)(val*, long))(var_variables131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_variables131, var148) /* [] on <var_variables131:nullable Array[Variable]>*/;
5777 }
5778 var150 = ((val* (*)(val*))(var_coltype129->class->vft[COLOR_model__MClassType__arguments]))(var_coltype129) /* arguments on <var_coltype129:MClassType>*/;
5779 var151 = 1;
5780 var152 = ((val* (*)(val*, long))(var150->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var150, var151) /* [] on <var150:Array[MType]>*/;
5781 ((void (*)(val*, val*))(var149->class->vft[COLOR_typing__Variable__declared_type_61d]))(var149, var152) /* declared_type= on <var149:nullable Object(Variable)>*/;
5782 }
5783 var153 = 1;
5784 var_is_map = var153;
5785 } else {
5786 }
5787 var155 = !var_is_col;
5788 var_156 = var155;
5789 if (var155){
5790 var157 = !var_is_map;
5791 var154 = var157;
5792 } else {
5793 var154 = var_156;
5794 }
5795 if (var154){
5796 if (varonce158) {
5797 var159 = varonce158;
5798 } else {
5799 var160 = "Type Error: Expected method \'iterator\' to return an Iterator of MapIterator type";
5800 var161 = 80;
5801 var162 = string__NativeString__to_s_with_length(var160, var161);
5802 var159 = var162;
5803 varonce158 = var159;
5804 }
5805 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var159) /* error on <var_v:TypeVisitor>*/;
5806 goto RET_LABEL;
5807 } else {
5808 }
5809 var163 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5810 if (var163){
5811 var164 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__anchor_to]))(var_v, var_mtype) /* anchor_to on <var_v:TypeVisitor>*/;
5812 var_mtype = var164;
5813 } else {
5814 }
5815 /* <var_mtype:MType> isa MClassType */
5816 cltype = type_model__MClassType.color;
5817 idtype = type_model__MClassType.id;
5818 if(cltype >= var_mtype->type->table_size) {
5819 var165 = 0;
5820 } else {
5821 var165 = var_mtype->type->type_table[cltype] == idtype;
5822 }
5823 if (!var165) {
5824 var_class_name = var_mtype == NULL ? "null" : var_mtype->type->name;
5825 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5826 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 895);
5827 exit(1);
5828 }
5829 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__coltype_61d]))(self, var_mtype) /* coltype= on <self:AForExpr>*/;
5830 if (varonce166) {
5831 var167 = varonce166;
5832 } else {
5833 var168 = "is_ok";
5834 var169 = 5;
5835 var170 = string__NativeString__to_s_with_length(var168, var169);
5836 var167 = var170;
5837 varonce166 = var167;
5838 }
5839 var171 = 0;
5840 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>*/;
5841 var_ikdef = var172;
5842 var173 = NULL;
5843 if (var_ikdef == NULL) {
5844 var174 = 1; /* is null */
5845 } else {
5846 var174 = 0; /* arg is null but recv is not */
5847 }
5848 if (var174){
5849 if (varonce175) {
5850 var176 = varonce175;
5851 } else {
5852 var177 = "Type Error: Expected method \'is_ok\' in Iterator type ";
5853 var178 = 53;
5854 var179 = string__NativeString__to_s_with_length(var177, var178);
5855 var176 = var179;
5856 varonce175 = var176;
5857 }
5858 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
5859 { /* var180 = array_instance Array[Object] */
5860 var181 = 2;
5861 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
5862 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var176;
5863 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var_ittype;
5864 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
5865 CHECK_NEW_array__Array(var180);
5866 }
5867 var183 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
5868 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var183) /* error on <var_v:TypeVisitor>*/;
5869 goto RET_LABEL;
5870 } else {
5871 }
5872 var184 = ((val* (*)(val*))(var_ikdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_ikdef) /* mproperty on <var_ikdef:nullable CallSite(CallSite)>*/;
5873 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_is_ok_61d]))(self, var184) /* method_is_ok= on <self:AForExpr>*/;
5874 if (varonce185) {
5875 var186 = varonce185;
5876 } else {
5877 var187 = "item";
5878 var188 = 4;
5879 var189 = string__NativeString__to_s_with_length(var187, var188);
5880 var186 = var189;
5881 varonce185 = var186;
5882 }
5883 var190 = 0;
5884 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>*/;
5885 var_itemdef = var191;
5886 var192 = NULL;
5887 if (var_itemdef == NULL) {
5888 var193 = 1; /* is null */
5889 } else {
5890 var193 = 0; /* arg is null but recv is not */
5891 }
5892 if (var193){
5893 if (varonce194) {
5894 var195 = varonce194;
5895 } else {
5896 var196 = "Type Error: Expected method \'item\' in Iterator type ";
5897 var197 = 52;
5898 var198 = string__NativeString__to_s_with_length(var196, var197);
5899 var195 = var198;
5900 varonce194 = var195;
5901 }
5902 var199 = NEW_array__Array(&type_array__Arraykernel__Object);
5903 { /* var199 = array_instance Array[Object] */
5904 var200 = 2;
5905 var201 = NEW_array__NativeArray(var200, &type_array__NativeArraykernel__Object);
5906 ((struct instance_array__NativeArray*)var201)->values[0] = (val*) var195;
5907 ((struct instance_array__NativeArray*)var201)->values[1] = (val*) var_ittype;
5908 ((void (*)(val*, val*, long))(var199->class->vft[COLOR_array__Array__with_native]))(var199, var201, var200) /* with_native on <var199:Array[Object]>*/;
5909 CHECK_NEW_array__Array(var199);
5910 }
5911 var202 = ((val* (*)(val*))(var199->class->vft[COLOR_string__Object__to_s]))(var199) /* to_s on <var199:Array[Object]>*/;
5912 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var202) /* error on <var_v:TypeVisitor>*/;
5913 goto RET_LABEL;
5914 } else {
5915 }
5916 var203 = ((val* (*)(val*))(var_itemdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_itemdef) /* mproperty on <var_itemdef:nullable CallSite(CallSite)>*/;
5917 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_item_61d]))(self, var203) /* method_item= on <self:AForExpr>*/;
5918 if (varonce204) {
5919 var205 = varonce204;
5920 } else {
5921 var206 = "next";
5922 var207 = 4;
5923 var208 = string__NativeString__to_s_with_length(var206, var207);
5924 var205 = var208;
5925 varonce204 = var205;
5926 }
5927 var209 = 0;
5928 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>*/;
5929 var_nextdef = var210;
5930 var211 = NULL;
5931 if (var_nextdef == NULL) {
5932 var212 = 1; /* is null */
5933 } else {
5934 var212 = 0; /* arg is null but recv is not */
5935 }
5936 if (var212){
5937 if (varonce213) {
5938 var214 = varonce213;
5939 } else {
5940 var215 = "Type Error: Expected method \'next\' in Iterator type ";
5941 var216 = 52;
5942 var217 = string__NativeString__to_s_with_length(var215, var216);
5943 var214 = var217;
5944 varonce213 = var214;
5945 }
5946 var218 = NEW_array__Array(&type_array__Arraykernel__Object);
5947 { /* var218 = array_instance Array[Object] */
5948 var219 = 2;
5949 var220 = NEW_array__NativeArray(var219, &type_array__NativeArraykernel__Object);
5950 ((struct instance_array__NativeArray*)var220)->values[0] = (val*) var214;
5951 ((struct instance_array__NativeArray*)var220)->values[1] = (val*) var_ittype;
5952 ((void (*)(val*, val*, long))(var218->class->vft[COLOR_array__Array__with_native]))(var218, var220, var219) /* with_native on <var218:Array[Object]>*/;
5953 CHECK_NEW_array__Array(var218);
5954 }
5955 var221 = ((val* (*)(val*))(var218->class->vft[COLOR_string__Object__to_s]))(var218) /* to_s on <var218:Array[Object]>*/;
5956 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var221) /* error on <var_v:TypeVisitor>*/;
5957 goto RET_LABEL;
5958 } else {
5959 }
5960 var222 = ((val* (*)(val*))(var_nextdef->class->vft[COLOR_typing__CallSite__mproperty]))(var_nextdef) /* mproperty on <var_nextdef:nullable CallSite(CallSite)>*/;
5961 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_next_61d]))(self, var222) /* method_next= on <self:AForExpr>*/;
5962 if (var_is_map){
5963 if (varonce223) {
5964 var224 = varonce223;
5965 } else {
5966 var225 = "key";
5967 var226 = 3;
5968 var227 = string__NativeString__to_s_with_length(var225, var226);
5969 var224 = var227;
5970 varonce223 = var224;
5971 }
5972 var228 = 0;
5973 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>*/;
5974 var_keydef = var229;
5975 var230 = NULL;
5976 if (var_keydef == NULL) {
5977 var231 = 1; /* is null */
5978 } else {
5979 var231 = 0; /* arg is null but recv is not */
5980 }
5981 if (var231){
5982 if (varonce232) {
5983 var233 = varonce232;
5984 } else {
5985 var234 = "Type Error: Expected method \'key\' in Iterator type ";
5986 var235 = 51;
5987 var236 = string__NativeString__to_s_with_length(var234, var235);
5988 var233 = var236;
5989 varonce232 = var233;
5990 }
5991 var237 = NEW_array__Array(&type_array__Arraykernel__Object);
5992 { /* var237 = array_instance Array[Object] */
5993 var238 = 2;
5994 var239 = NEW_array__NativeArray(var238, &type_array__NativeArraykernel__Object);
5995 ((struct instance_array__NativeArray*)var239)->values[0] = (val*) var233;
5996 ((struct instance_array__NativeArray*)var239)->values[1] = (val*) var_ittype;
5997 ((void (*)(val*, val*, long))(var237->class->vft[COLOR_array__Array__with_native]))(var237, var239, var238) /* with_native on <var237:Array[Object]>*/;
5998 CHECK_NEW_array__Array(var237);
5999 }
6000 var240 = ((val* (*)(val*))(var237->class->vft[COLOR_string__Object__to_s]))(var237) /* to_s on <var237:Array[Object]>*/;
6001 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var240) /* error on <var_v:TypeVisitor>*/;
6002 goto RET_LABEL;
6003 } else {
6004 }
6005 var241 = ((val* (*)(val*))(var_keydef->class->vft[COLOR_typing__CallSite__mproperty]))(var_keydef) /* mproperty on <var_keydef:nullable CallSite(CallSite)>*/;
6006 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AForExpr__method_key_61d]))(self, var241) /* method_key= on <self:AForExpr>*/;
6007 } else {
6008 }
6009 RET_LABEL:;
6010 }
6011 /* method typing#AForExpr#do_type_iterator for (self: Object, TypeVisitor, MType) */
6012 void VIRTUAL_typing__AForExpr__do_type_iterator(val* self, val* p0, val* p1) {
6013 typing__AForExpr__do_type_iterator(self, p0, p1);
6014 RET_LABEL:;
6015 }
6016 /* method typing#AForExpr#accept_typing for (self: AForExpr, TypeVisitor) */
6017 void typing__AForExpr__accept_typing(val* self, val* p0) {
6018 val* var_v /* var v: TypeVisitor */;
6019 val* var /* : AExpr */;
6020 val* var1 /* : nullable MType */;
6021 val* var_mtype /* var mtype: nullable MType */;
6022 val* var2 /* : null */;
6023 short int var3 /* : Bool */;
6024 val* var4 /* : nullable AExpr */;
6025 short int var5 /* : Bool */;
6026 var_v = p0;
6027 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_expr]))(self) /* n_expr on <self:AForExpr>*/;
6028 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6029 var_mtype = var1;
6030 var2 = NULL;
6031 if (var_mtype == NULL) {
6032 var3 = 1; /* is null */
6033 } else {
6034 var3 = 0; /* arg is null but recv is not */
6035 }
6036 if (var3){
6037 goto RET_LABEL;
6038 } else {
6039 }
6040 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_typing__AForExpr__do_type_iterator]))(self, var_v, var_mtype) /* do_type_iterator on <self:AForExpr>*/;
6041 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AForExpr__n_block]))(self) /* n_block on <self:AForExpr>*/;
6042 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var4) /* visit_stmt on <var_v:TypeVisitor>*/;
6043 var5 = 1;
6044 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var5) /* is_typed= on <self:AForExpr>*/;
6045 RET_LABEL:;
6046 }
6047 /* method typing#AForExpr#accept_typing for (self: Object, TypeVisitor) */
6048 void VIRTUAL_typing__AForExpr__accept_typing(val* self, val* p0) {
6049 typing__AForExpr__accept_typing(self, p0);
6050 RET_LABEL:;
6051 }
6052 /* method typing#AAssertExpr#accept_typing for (self: AAssertExpr, TypeVisitor) */
6053 void typing__AAssertExpr__accept_typing(val* self, val* p0) {
6054 val* var_v /* var v: TypeVisitor */;
6055 val* var /* : AExpr */;
6056 val* var1 /* : nullable MType */;
6057 val* var2 /* : nullable AExpr */;
6058 short int var3 /* : Bool */;
6059 var_v = p0;
6060 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_expr]))(self) /* n_expr on <self:AAssertExpr>*/;
6061 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6062 var1;
6063 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssertExpr__n_else]))(self) /* n_else on <self:AAssertExpr>*/;
6064 ((void (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_stmt]))(var_v, var2) /* visit_stmt on <var_v:TypeVisitor>*/;
6065 var3 = 1;
6066 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var3) /* is_typed= on <self:AAssertExpr>*/;
6067 RET_LABEL:;
6068 }
6069 /* method typing#AAssertExpr#accept_typing for (self: Object, TypeVisitor) */
6070 void VIRTUAL_typing__AAssertExpr__accept_typing(val* self, val* p0) {
6071 typing__AAssertExpr__accept_typing(self, p0);
6072 RET_LABEL:;
6073 }
6074 /* method typing#AOrExpr#accept_typing for (self: AOrExpr, TypeVisitor) */
6075 void typing__AOrExpr__accept_typing(val* self, val* p0) {
6076 val* var_v /* var v: TypeVisitor */;
6077 val* var /* : AExpr */;
6078 val* var1 /* : nullable MType */;
6079 val* var2 /* : AExpr */;
6080 val* var3 /* : nullable MType */;
6081 val* var4 /* : nullable MType */;
6082 var_v = p0;
6083 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr]))(self) /* n_expr on <self:AOrExpr>*/;
6084 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6085 var1;
6086 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrExpr__n_expr2]))(self) /* n_expr2 on <self:AOrExpr>*/;
6087 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6088 var3;
6089 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6090 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AOrExpr>*/;
6091 RET_LABEL:;
6092 }
6093 /* method typing#AOrExpr#accept_typing for (self: Object, TypeVisitor) */
6094 void VIRTUAL_typing__AOrExpr__accept_typing(val* self, val* p0) {
6095 typing__AOrExpr__accept_typing(self, p0);
6096 RET_LABEL:;
6097 }
6098 /* method typing#AImpliesExpr#accept_typing for (self: AImpliesExpr, TypeVisitor) */
6099 void typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6100 val* var_v /* var v: TypeVisitor */;
6101 val* var /* : AExpr */;
6102 val* var1 /* : nullable MType */;
6103 val* var2 /* : AExpr */;
6104 val* var3 /* : nullable MType */;
6105 val* var4 /* : nullable MType */;
6106 var_v = p0;
6107 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr]))(self) /* n_expr on <self:AImpliesExpr>*/;
6108 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6109 var1;
6110 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AImpliesExpr__n_expr2]))(self) /* n_expr2 on <self:AImpliesExpr>*/;
6111 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6112 var3;
6113 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6114 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AImpliesExpr>*/;
6115 RET_LABEL:;
6116 }
6117 /* method typing#AImpliesExpr#accept_typing for (self: Object, TypeVisitor) */
6118 void VIRTUAL_typing__AImpliesExpr__accept_typing(val* self, val* p0) {
6119 typing__AImpliesExpr__accept_typing(self, p0);
6120 RET_LABEL:;
6121 }
6122 /* method typing#AAndExpr#accept_typing for (self: AAndExpr, TypeVisitor) */
6123 void typing__AAndExpr__accept_typing(val* self, val* p0) {
6124 val* var_v /* var v: TypeVisitor */;
6125 val* var /* : AExpr */;
6126 val* var1 /* : nullable MType */;
6127 val* var2 /* : AExpr */;
6128 val* var3 /* : nullable MType */;
6129 val* var4 /* : nullable MType */;
6130 var_v = p0;
6131 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr]))(self) /* n_expr on <self:AAndExpr>*/;
6132 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6133 var1;
6134 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAndExpr__n_expr2]))(self) /* n_expr2 on <self:AAndExpr>*/;
6135 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var2) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6136 var3;
6137 var4 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6138 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var4) /* mtype= on <self:AAndExpr>*/;
6139 RET_LABEL:;
6140 }
6141 /* method typing#AAndExpr#accept_typing for (self: Object, TypeVisitor) */
6142 void VIRTUAL_typing__AAndExpr__accept_typing(val* self, val* p0) {
6143 typing__AAndExpr__accept_typing(self, p0);
6144 RET_LABEL:;
6145 }
6146 /* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */
6147 void typing__ANotExpr__accept_typing(val* self, val* p0) {
6148 val* var_v /* var v: TypeVisitor */;
6149 val* var /* : AExpr */;
6150 val* var1 /* : nullable MType */;
6151 val* var2 /* : nullable MType */;
6152 var_v = p0;
6153 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANotExpr__n_expr]))(self) /* n_expr on <self:ANotExpr>*/;
6154 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr_bool]))(var_v, var) /* visit_expr_bool on <var_v:TypeVisitor>*/;
6155 var1;
6156 var2 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6157 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANotExpr>*/;
6158 RET_LABEL:;
6159 }
6160 /* method typing#ANotExpr#accept_typing for (self: Object, TypeVisitor) */
6161 void VIRTUAL_typing__ANotExpr__accept_typing(val* self, val* p0) {
6162 typing__ANotExpr__accept_typing(self, p0);
6163 RET_LABEL:;
6164 }
6165 /* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */
6166 void typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6167 val* var_v /* var v: TypeVisitor */;
6168 val* var /* : AExpr */;
6169 val* var1 /* : nullable MType */;
6170 val* var_t1 /* var t1: nullable MType */;
6171 val* var2 /* : AExpr */;
6172 val* var3 /* : nullable MType */;
6173 val* var_t2 /* var t2: nullable MType */;
6174 short int var4 /* : Bool */;
6175 val* var5 /* : null */;
6176 short int var6 /* : Bool */;
6177 short int var_ /* var : Bool */;
6178 val* var7 /* : null */;
6179 short int var8 /* : Bool */;
6180 short int var9 /* : Bool */;
6181 int cltype;
6182 int idtype;
6183 val* var10 /* : MType */;
6184 val* var11 /* : Array[MType] */;
6185 long var12 /* : Int */;
6186 val* var13 /* : NativeArray[MType] */;
6187 val* var14 /* : nullable MType */;
6188 val* var_t /* var t: nullable MType */;
6189 val* var15 /* : null */;
6190 short int var16 /* : Bool */;
6191 val* var17 /* : MModule */;
6192 val* var18 /* : MClassType */;
6193 short int var19 /* : Bool */;
6194 int cltype20;
6195 int idtype21;
6196 val* var22 /* : MType */;
6197 var_v = p0;
6198 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr]))(self) /* n_expr on <self:AOrElseExpr>*/;
6199 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
6200 var_t1 = var1;
6201 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AOrElseExpr__n_expr2]))(self) /* n_expr2 on <self:AOrElseExpr>*/;
6202 var3 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var2) /* visit_expr on <var_v:TypeVisitor>*/;
6203 var_t2 = var3;
6204 var5 = NULL;
6205 if (var_t1 == NULL) {
6206 var6 = 1; /* is null */
6207 } else {
6208 var6 = 0; /* arg is null but recv is not */
6209 }
6210 var_ = var6;
6211 if (var6){
6212 var4 = var_;
6213 } else {
6214 var7 = NULL;
6215 if (var_t2 == NULL) {
6216 var8 = 1; /* is null */
6217 } else {
6218 var8 = 0; /* arg is null but recv is not */
6219 }
6220 var4 = var8;
6221 }
6222 if (var4){
6223 goto RET_LABEL;
6224 } else {
6225 }
6226 /* <var_t1:nullable MType(MType)> isa MNullableType */
6227 cltype = type_model__MNullableType.color;
6228 idtype = type_model__MNullableType.id;
6229 if(cltype >= var_t1->type->table_size) {
6230 var9 = 0;
6231 } else {
6232 var9 = var_t1->type->type_table[cltype] == idtype;
6233 }
6234 if (var9){
6235 var10 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:nullable MType(MNullableType)>*/;
6236 var_t1 = var10;
6237 } else {
6238 }
6239 var11 = NEW_array__Array(&type_array__Arraymodel__MType);
6240 { /* var11 = array_instance Array[MType] */
6241 var12 = 2;
6242 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraymodel__MType);
6243 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_t1;
6244 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_t2;
6245 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[MType]>*/;
6246 CHECK_NEW_array__Array(var11);
6247 }
6248 var14 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__merge_types]))(var_v, self, var11) /* merge_types on <var_v:TypeVisitor>*/;
6249 var_t = var14;
6250 var15 = NULL;
6251 if (var_t == NULL) {
6252 var16 = 1; /* is null */
6253 } else {
6254 var16 = 0; /* arg is null but recv is not */
6255 }
6256 if (var16){
6257 var17 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6258 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MModule__object_type]))(var17) /* object_type on <var17:MModule>*/;
6259 var_t = var18;
6260 /* <var_t2:nullable MType(MType)> isa MNullableType */
6261 cltype20 = type_model__MNullableType.color;
6262 idtype21 = type_model__MNullableType.id;
6263 if(cltype20 >= var_t2->type->table_size) {
6264 var19 = 0;
6265 } else {
6266 var19 = var_t2->type->type_table[cltype20] == idtype21;
6267 }
6268 if (var19){
6269 var22 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MType__as_nullable]))(var_t) /* as_nullable on <var_t:nullable MType(MClassType)>*/;
6270 var_t = var22;
6271 } else {
6272 }
6273 } else {
6274 }
6275 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_t) /* mtype= on <self:AOrElseExpr>*/;
6276 RET_LABEL:;
6277 }
6278 /* method typing#AOrElseExpr#accept_typing for (self: Object, TypeVisitor) */
6279 void VIRTUAL_typing__AOrElseExpr__accept_typing(val* self, val* p0) {
6280 typing__AOrElseExpr__accept_typing(self, p0);
6281 RET_LABEL:;
6282 }
6283 /* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */
6284 void typing__ATrueExpr__accept_typing(val* self, val* p0) {
6285 val* var_v /* var v: TypeVisitor */;
6286 val* var /* : nullable MType */;
6287 var_v = p0;
6288 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6289 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:ATrueExpr>*/;
6290 RET_LABEL:;
6291 }
6292 /* method typing#ATrueExpr#accept_typing for (self: Object, TypeVisitor) */
6293 void VIRTUAL_typing__ATrueExpr__accept_typing(val* self, val* p0) {
6294 typing__ATrueExpr__accept_typing(self, p0);
6295 RET_LABEL:;
6296 }
6297 /* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */
6298 void typing__AFalseExpr__accept_typing(val* self, val* p0) {
6299 val* var_v /* var v: TypeVisitor */;
6300 val* var /* : nullable MType */;
6301 var_v = p0;
6302 var = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
6303 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var) /* mtype= on <self:AFalseExpr>*/;
6304 RET_LABEL:;
6305 }
6306 /* method typing#AFalseExpr#accept_typing for (self: Object, TypeVisitor) */
6307 void VIRTUAL_typing__AFalseExpr__accept_typing(val* self, val* p0) {
6308 typing__AFalseExpr__accept_typing(self, p0);
6309 RET_LABEL:;
6310 }
6311 /* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */
6312 void typing__AIntExpr__accept_typing(val* self, val* p0) {
6313 val* var_v /* var v: TypeVisitor */;
6314 static val* varonce;
6315 val* var /* : String */;
6316 char* var1 /* : NativeString */;
6317 long var2 /* : Int */;
6318 val* var3 /* : String */;
6319 val* var4 /* : nullable MClass */;
6320 val* var_mclass /* var mclass: nullable MClass */;
6321 val* var5 /* : null */;
6322 short int var6 /* : Bool */;
6323 val* var7 /* : MClassType */;
6324 var_v = p0;
6325 if (varonce) {
6326 var = varonce;
6327 } else {
6328 var1 = "Int";
6329 var2 = 3;
6330 var3 = string__NativeString__to_s_with_length(var1, var2);
6331 var = var3;
6332 varonce = var;
6333 }
6334 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6335 var_mclass = var4;
6336 var5 = NULL;
6337 if (var_mclass == NULL) {
6338 var6 = 1; /* is null */
6339 } else {
6340 var6 = 0; /* arg is null but recv is not */
6341 }
6342 if (var6){
6343 goto RET_LABEL;
6344 } else {
6345 }
6346 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6347 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AIntExpr>*/;
6348 RET_LABEL:;
6349 }
6350 /* method typing#AIntExpr#accept_typing for (self: Object, TypeVisitor) */
6351 void VIRTUAL_typing__AIntExpr__accept_typing(val* self, val* p0) {
6352 typing__AIntExpr__accept_typing(self, p0);
6353 RET_LABEL:;
6354 }
6355 /* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */
6356 void typing__AFloatExpr__accept_typing(val* self, val* p0) {
6357 val* var_v /* var v: TypeVisitor */;
6358 static val* varonce;
6359 val* var /* : String */;
6360 char* var1 /* : NativeString */;
6361 long var2 /* : Int */;
6362 val* var3 /* : String */;
6363 val* var4 /* : nullable MClass */;
6364 val* var_mclass /* var mclass: nullable MClass */;
6365 val* var5 /* : null */;
6366 short int var6 /* : Bool */;
6367 val* var7 /* : MClassType */;
6368 var_v = p0;
6369 if (varonce) {
6370 var = varonce;
6371 } else {
6372 var1 = "Float";
6373 var2 = 5;
6374 var3 = string__NativeString__to_s_with_length(var1, var2);
6375 var = var3;
6376 varonce = var;
6377 }
6378 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6379 var_mclass = var4;
6380 var5 = NULL;
6381 if (var_mclass == NULL) {
6382 var6 = 1; /* is null */
6383 } else {
6384 var6 = 0; /* arg is null but recv is not */
6385 }
6386 if (var6){
6387 goto RET_LABEL;
6388 } else {
6389 }
6390 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6391 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AFloatExpr>*/;
6392 RET_LABEL:;
6393 }
6394 /* method typing#AFloatExpr#accept_typing for (self: Object, TypeVisitor) */
6395 void VIRTUAL_typing__AFloatExpr__accept_typing(val* self, val* p0) {
6396 typing__AFloatExpr__accept_typing(self, p0);
6397 RET_LABEL:;
6398 }
6399 /* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */
6400 void typing__ACharExpr__accept_typing(val* self, val* p0) {
6401 val* var_v /* var v: TypeVisitor */;
6402 static val* varonce;
6403 val* var /* : String */;
6404 char* var1 /* : NativeString */;
6405 long var2 /* : Int */;
6406 val* var3 /* : String */;
6407 val* var4 /* : nullable MClass */;
6408 val* var_mclass /* var mclass: nullable MClass */;
6409 val* var5 /* : null */;
6410 short int var6 /* : Bool */;
6411 val* var7 /* : MClassType */;
6412 var_v = p0;
6413 if (varonce) {
6414 var = varonce;
6415 } else {
6416 var1 = "Char";
6417 var2 = 4;
6418 var3 = string__NativeString__to_s_with_length(var1, var2);
6419 var = var3;
6420 varonce = var;
6421 }
6422 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6423 var_mclass = var4;
6424 var5 = NULL;
6425 if (var_mclass == NULL) {
6426 var6 = 1; /* is null */
6427 } else {
6428 var6 = 0; /* arg is null but recv is not */
6429 }
6430 if (var6){
6431 goto RET_LABEL;
6432 } else {
6433 }
6434 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6435 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ACharExpr>*/;
6436 RET_LABEL:;
6437 }
6438 /* method typing#ACharExpr#accept_typing for (self: Object, TypeVisitor) */
6439 void VIRTUAL_typing__ACharExpr__accept_typing(val* self, val* p0) {
6440 typing__ACharExpr__accept_typing(self, p0);
6441 RET_LABEL:;
6442 }
6443 /* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */
6444 void typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6445 val* var_v /* var v: TypeVisitor */;
6446 static val* varonce;
6447 val* var /* : String */;
6448 char* var1 /* : NativeString */;
6449 long var2 /* : Int */;
6450 val* var3 /* : String */;
6451 val* var4 /* : nullable MClass */;
6452 val* var_mclass /* var mclass: nullable MClass */;
6453 val* var5 /* : null */;
6454 short int var6 /* : Bool */;
6455 val* var7 /* : MClassType */;
6456 var_v = p0;
6457 if (varonce) {
6458 var = varonce;
6459 } else {
6460 var1 = "String";
6461 var2 = 6;
6462 var3 = string__NativeString__to_s_with_length(var1, var2);
6463 var = var3;
6464 varonce = var;
6465 }
6466 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6467 var_mclass = var4;
6468 var5 = NULL;
6469 if (var_mclass == NULL) {
6470 var6 = 1; /* is null */
6471 } else {
6472 var6 = 0; /* arg is null but recv is not */
6473 }
6474 if (var6){
6475 goto RET_LABEL;
6476 } else {
6477 }
6478 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6479 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:AStringFormExpr>*/;
6480 RET_LABEL:;
6481 }
6482 /* method typing#AStringFormExpr#accept_typing for (self: Object, TypeVisitor) */
6483 void VIRTUAL_typing__AStringFormExpr__accept_typing(val* self, val* p0) {
6484 typing__AStringFormExpr__accept_typing(self, p0);
6485 RET_LABEL:;
6486 }
6487 /* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */
6488 void typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6489 val* var_v /* var v: TypeVisitor */;
6490 static val* varonce;
6491 val* var /* : String */;
6492 char* var1 /* : NativeString */;
6493 long var2 /* : Int */;
6494 val* var3 /* : String */;
6495 val* var4 /* : nullable MClass */;
6496 val* var_mclass /* var mclass: nullable MClass */;
6497 val* var5 /* : null */;
6498 short int var6 /* : Bool */;
6499 val* var7 /* : MClassType */;
6500 val* var8 /* : ANodes[AExpr] */;
6501 val* var9 /* : Iterator[nullable Object] */;
6502 short int var10 /* : Bool */;
6503 val* var11 /* : nullable Object */;
6504 val* var_nexpr /* var nexpr: AExpr */;
6505 val* var12 /* : nullable MType */;
6506 val* var_t /* var t: nullable MType */;
6507 var_v = p0;
6508 if (varonce) {
6509 var = varonce;
6510 } else {
6511 var1 = "String";
6512 var2 = 6;
6513 var3 = string__NativeString__to_s_with_length(var1, var2);
6514 var = var3;
6515 varonce = var;
6516 }
6517 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6518 var_mclass = var4;
6519 var5 = NULL;
6520 if (var_mclass == NULL) {
6521 var6 = 1; /* is null */
6522 } else {
6523 var6 = 0; /* arg is null but recv is not */
6524 }
6525 if (var6){
6526 goto RET_LABEL;
6527 } else {
6528 }
6529 var7 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
6530 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var7) /* mtype= on <self:ASuperstringExpr>*/;
6531 var8 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperstringExpr__n_exprs]))(self) /* n_exprs on <self:ASuperstringExpr>*/;
6532 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:ANodes[AExpr]>*/;
6533 for(;;) {
6534 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
6535 if(!var10) break;
6536 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
6537 var_nexpr = var11;
6538 var12 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_nexpr) /* visit_expr on <var_v:TypeVisitor>*/;
6539 var_t = var12;
6540 CONTINUE_label: (void)0;
6541 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
6542 }
6543 BREAK_label: (void)0;
6544 RET_LABEL:;
6545 }
6546 /* method typing#ASuperstringExpr#accept_typing for (self: Object, TypeVisitor) */
6547 void VIRTUAL_typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
6548 typing__ASuperstringExpr__accept_typing(self, p0);
6549 RET_LABEL:;
6550 }
6551 /* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */
6552 void typing__AArrayExpr__accept_typing(val* self, val* p0) {
6553 val* var_v /* var v: TypeVisitor */;
6554 val* var /* : Array[nullable MType] */;
6555 val* var_mtypes /* var mtypes: Array[nullable MType] */;
6556 val* var1 /* : AExprs */;
6557 val* var2 /* : ANodes[AExpr] */;
6558 val* var3 /* : Iterator[nullable Object] */;
6559 short int var4 /* : Bool */;
6560 val* var5 /* : nullable Object */;
6561 val* var_e /* var e: AExpr */;
6562 val* var6 /* : nullable MType */;
6563 val* var_t /* var t: nullable MType */;
6564 val* var7 /* : null */;
6565 short int var8 /* : Bool */;
6566 val* var9 /* : nullable MType */;
6567 val* var_mtype /* var mtype: nullable MType */;
6568 val* var10 /* : null */;
6569 short int var11 /* : Bool */;
6570 static val* varonce;
6571 val* var12 /* : String */;
6572 char* var13 /* : NativeString */;
6573 long var14 /* : Int */;
6574 val* var15 /* : String */;
6575 static val* varonce16;
6576 val* var17 /* : String */;
6577 char* var18 /* : NativeString */;
6578 long var19 /* : Int */;
6579 val* var20 /* : String */;
6580 val* var21 /* : String */;
6581 val* var22 /* : Array[Object] */;
6582 long var23 /* : Int */;
6583 val* var24 /* : NativeArray[Object] */;
6584 val* var25 /* : String */;
6585 static val* varonce26;
6586 val* var27 /* : String */;
6587 char* var28 /* : NativeString */;
6588 long var29 /* : Int */;
6589 val* var30 /* : String */;
6590 val* var31 /* : nullable MClass */;
6591 val* var_mclass /* var mclass: nullable MClass */;
6592 val* var32 /* : null */;
6593 short int var33 /* : Bool */;
6594 val* var34 /* : Array[MType] */;
6595 long var35 /* : Int */;
6596 val* var36 /* : NativeArray[MType] */;
6597 val* var37 /* : MClassType */;
6598 var_v = p0;
6599 var = NEW_array__Array(&type_array__Arraynullable_model__MType);
6600 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[nullable MType]>*/;
6601 CHECK_NEW_array__Array(var);
6602 var_mtypes = var;
6603 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AArrayExpr__n_exprs]))(self) /* n_exprs on <self:AArrayExpr>*/;
6604 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(var1) /* n_exprs on <var1:AExprs>*/;
6605 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:ANodes[AExpr]>*/;
6606 for(;;) {
6607 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6608 if(!var4) break;
6609 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
6610 var_e = var5;
6611 var6 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var_e) /* visit_expr on <var_v:TypeVisitor>*/;
6612 var_t = var6;
6613 var7 = NULL;
6614 if (var_t == NULL) {
6615 var8 = 1; /* is null */
6616 } else {
6617 var8 = 0; /* arg is null but recv is not */
6618 }
6619 if (var8){
6620 goto RET_LABEL;
6621 } else {
6622 }
6623 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var_t) /* add on <var_mtypes:Array[nullable MType]>*/;
6624 CONTINUE_label: (void)0;
6625 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
6626 }
6627 BREAK_label: (void)0;
6628 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>*/;
6629 var_mtype = var9;
6630 var10 = NULL;
6631 if (var_mtype == NULL) {
6632 var11 = 1; /* is null */
6633 } else {
6634 var11 = 0; /* arg is null but recv is not */
6635 }
6636 if (var11){
6637 if (varonce) {
6638 var12 = varonce;
6639 } else {
6640 var13 = "Type Error: ambiguous array type ";
6641 var14 = 33;
6642 var15 = string__NativeString__to_s_with_length(var13, var14);
6643 var12 = var15;
6644 varonce = var12;
6645 }
6646 if (varonce16) {
6647 var17 = varonce16;
6648 } else {
6649 var18 = " ";
6650 var19 = 1;
6651 var20 = string__NativeString__to_s_with_length(var18, var19);
6652 var17 = var20;
6653 varonce16 = var17;
6654 }
6655 var21 = ((val* (*)(val*, val*))(var_mtypes->class->vft[COLOR_string__Collection__join]))(var_mtypes, var17) /* join on <var_mtypes:Array[nullable MType]>*/;
6656 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
6657 { /* var22 = array_instance Array[Object] */
6658 var23 = 2;
6659 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
6660 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var12;
6661 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var21;
6662 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
6663 CHECK_NEW_array__Array(var22);
6664 }
6665 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
6666 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var25) /* error on <var_v:TypeVisitor>*/;
6667 goto RET_LABEL;
6668 } else {
6669 }
6670 if (varonce26) {
6671 var27 = varonce26;
6672 } else {
6673 var28 = "Array";
6674 var29 = 5;
6675 var30 = string__NativeString__to_s_with_length(var28, var29);
6676 var27 = var30;
6677 varonce26 = var27;
6678 }
6679 var31 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var27) /* get_mclass on <var_v:TypeVisitor>*/;
6680 var_mclass = var31;
6681 var32 = NULL;
6682 if (var_mclass == NULL) {
6683 var33 = 1; /* is null */
6684 } else {
6685 var33 = 0; /* arg is null but recv is not */
6686 }
6687 if (var33){
6688 goto RET_LABEL;
6689 } else {
6690 }
6691 var34 = NEW_array__Array(&type_array__Arraymodel__MType);
6692 { /* var34 = array_instance Array[MType] */
6693 var35 = 1;
6694 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraymodel__MType);
6695 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var_mtype;
6696 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[MType]>*/;
6697 CHECK_NEW_array__Array(var34);
6698 }
6699 var37 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var34) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6700 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var37) /* mtype= on <self:AArrayExpr>*/;
6701 RET_LABEL:;
6702 }
6703 /* method typing#AArrayExpr#accept_typing for (self: Object, TypeVisitor) */
6704 void VIRTUAL_typing__AArrayExpr__accept_typing(val* self, val* p0) {
6705 typing__AArrayExpr__accept_typing(self, p0);
6706 RET_LABEL:;
6707 }
6708 /* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */
6709 void typing__ARangeExpr__accept_typing(val* self, val* p0) {
6710 val* var_v /* var v: TypeVisitor */;
6711 static val* varonce;
6712 val* var /* : String */;
6713 char* var1 /* : NativeString */;
6714 long var2 /* : Int */;
6715 val* var3 /* : String */;
6716 val* var4 /* : nullable MClass */;
6717 val* var_discrete_class /* var discrete_class: nullable MClass */;
6718 val* var5 /* : null */;
6719 short int var6 /* : Bool */;
6720 val* var7 /* : MClassDef */;
6721 val* var8 /* : MClassType */;
6722 val* var_discrete_type /* var discrete_type: MClassType */;
6723 val* var9 /* : AExpr */;
6724 val* var10 /* : nullable MType */;
6725 val* var_t1 /* var t1: nullable MType */;
6726 val* var11 /* : AExpr */;
6727 val* var12 /* : nullable MType */;
6728 val* var_t2 /* var t2: nullable MType */;
6729 short int var13 /* : Bool */;
6730 val* var14 /* : null */;
6731 short int var15 /* : Bool */;
6732 short int var_ /* var : Bool */;
6733 val* var16 /* : null */;
6734 short int var17 /* : Bool */;
6735 static val* varonce18;
6736 val* var19 /* : String */;
6737 char* var20 /* : NativeString */;
6738 long var21 /* : Int */;
6739 val* var22 /* : String */;
6740 val* var23 /* : nullable MClass */;
6741 val* var_mclass /* var mclass: nullable MClass */;
6742 val* var24 /* : null */;
6743 short int var25 /* : Bool */;
6744 short int var26 /* : Bool */;
6745 val* var27 /* : Array[MType] */;
6746 long var28 /* : Int */;
6747 val* var29 /* : NativeArray[MType] */;
6748 val* var30 /* : MClassType */;
6749 short int var31 /* : Bool */;
6750 val* var32 /* : Array[MType] */;
6751 long var33 /* : Int */;
6752 val* var34 /* : NativeArray[MType] */;
6753 val* var35 /* : MClassType */;
6754 static val* varonce36;
6755 val* var37 /* : String */;
6756 char* var38 /* : NativeString */;
6757 long var39 /* : Int */;
6758 val* var40 /* : String */;
6759 static val* varonce41;
6760 val* var42 /* : String */;
6761 char* var43 /* : NativeString */;
6762 long var44 /* : Int */;
6763 val* var45 /* : String */;
6764 val* var46 /* : Array[Object] */;
6765 long var47 /* : Int */;
6766 val* var48 /* : NativeArray[Object] */;
6767 val* var49 /* : String */;
6768 var_v = p0;
6769 if (varonce) {
6770 var = varonce;
6771 } else {
6772 var1 = "Discrete";
6773 var2 = 8;
6774 var3 = string__NativeString__to_s_with_length(var1, var2);
6775 var = var3;
6776 varonce = var;
6777 }
6778 var4 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var) /* get_mclass on <var_v:TypeVisitor>*/;
6779 var_discrete_class = var4;
6780 var5 = NULL;
6781 if (var_discrete_class == NULL) {
6782 var6 = 1; /* is null */
6783 } else {
6784 var6 = 0; /* arg is null but recv is not */
6785 }
6786 if (var6){
6787 goto RET_LABEL;
6788 } else {
6789 }
6790 var7 = ((val* (*)(val*))(var_discrete_class->class->vft[COLOR_model__MClass__intro]))(var_discrete_class) /* intro on <var_discrete_class:nullable MClass(MClass)>*/;
6791 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__bound_mtype]))(var7) /* bound_mtype on <var7:MClassDef>*/;
6792 var_discrete_type = var8;
6793 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr]))(self) /* n_expr on <self:ARangeExpr>*/;
6794 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>*/;
6795 var_t1 = var10;
6796 var11 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ARangeExpr__n_expr2]))(self) /* n_expr2 on <self:ARangeExpr>*/;
6797 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>*/;
6798 var_t2 = var12;
6799 var14 = NULL;
6800 if (var_t1 == NULL) {
6801 var15 = 1; /* is null */
6802 } else {
6803 var15 = 0; /* arg is null but recv is not */
6804 }
6805 var_ = var15;
6806 if (var15){
6807 var13 = var_;
6808 } else {
6809 var16 = NULL;
6810 if (var_t2 == NULL) {
6811 var17 = 1; /* is null */
6812 } else {
6813 var17 = 0; /* arg is null but recv is not */
6814 }
6815 var13 = var17;
6816 }
6817 if (var13){
6818 goto RET_LABEL;
6819 } else {
6820 }
6821 if (varonce18) {
6822 var19 = varonce18;
6823 } else {
6824 var20 = "Range";
6825 var21 = 5;
6826 var22 = string__NativeString__to_s_with_length(var20, var21);
6827 var19 = var22;
6828 varonce18 = var19;
6829 }
6830 var23 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__get_mclass]))(var_v, self, var19) /* get_mclass on <var_v:TypeVisitor>*/;
6831 var_mclass = var23;
6832 var24 = NULL;
6833 if (var_mclass == NULL) {
6834 var25 = 1; /* is null */
6835 } else {
6836 var25 = 0; /* arg is null but recv is not */
6837 }
6838 if (var25){
6839 goto RET_LABEL;
6840 } else {
6841 }
6842 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>*/;
6843 if (var26){
6844 var27 = NEW_array__Array(&type_array__Arraymodel__MType);
6845 { /* var27 = array_instance Array[MType] */
6846 var28 = 1;
6847 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraymodel__MType);
6848 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var_t2;
6849 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[MType]>*/;
6850 CHECK_NEW_array__Array(var27);
6851 }
6852 var30 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var27) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6853 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var30) /* mtype= on <self:ARangeExpr>*/;
6854 } else {
6855 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>*/;
6856 if (var31){
6857 var32 = NEW_array__Array(&type_array__Arraymodel__MType);
6858 { /* var32 = array_instance Array[MType] */
6859 var33 = 1;
6860 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraymodel__MType);
6861 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var_t1;
6862 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[MType]>*/;
6863 CHECK_NEW_array__Array(var32);
6864 }
6865 var35 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var32) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
6866 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var35) /* mtype= on <self:ARangeExpr>*/;
6867 } else {
6868 if (varonce36) {
6869 var37 = varonce36;
6870 } else {
6871 var38 = "Type Error: Cannot create range: ";
6872 var39 = 33;
6873 var40 = string__NativeString__to_s_with_length(var38, var39);
6874 var37 = var40;
6875 varonce36 = var37;
6876 }
6877 if (varonce41) {
6878 var42 = varonce41;
6879 } else {
6880 var43 = " vs ";
6881 var44 = 4;
6882 var45 = string__NativeString__to_s_with_length(var43, var44);
6883 var42 = var45;
6884 varonce41 = var42;
6885 }
6886 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
6887 { /* var46 = array_instance Array[Object] */
6888 var47 = 4;
6889 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
6890 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var37;
6891 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var_t1;
6892 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
6893 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var_t2;
6894 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
6895 CHECK_NEW_array__Array(var46);
6896 }
6897 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
6898 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var49) /* error on <var_v:TypeVisitor>*/;
6899 }
6900 }
6901 RET_LABEL:;
6902 }
6903 /* method typing#ARangeExpr#accept_typing for (self: Object, TypeVisitor) */
6904 void VIRTUAL_typing__ARangeExpr__accept_typing(val* self, val* p0) {
6905 typing__ARangeExpr__accept_typing(self, p0);
6906 RET_LABEL:;
6907 }
6908 /* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */
6909 void typing__ANullExpr__accept_typing(val* self, val* p0) {
6910 val* var_v /* var v: TypeVisitor */;
6911 val* var /* : MModule */;
6912 val* var1 /* : Model */;
6913 val* var2 /* : MNullType */;
6914 var_v = p0;
6915 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
6916 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model_base__MModule__model]))(var) /* model on <var:MModule>*/;
6917 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__Model__null_type]))(var1) /* null_type on <var1:Model>*/;
6918 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:ANullExpr>*/;
6919 RET_LABEL:;
6920 }
6921 /* method typing#ANullExpr#accept_typing for (self: Object, TypeVisitor) */
6922 void VIRTUAL_typing__ANullExpr__accept_typing(val* self, val* p0) {
6923 typing__ANullExpr__accept_typing(self, p0);
6924 RET_LABEL:;
6925 }
6926 /* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */
6927 val* typing__AIsaExpr__cast_type(val* self) {
6928 val* var /* : nullable MType */;
6929 val* var1 /* : nullable MType */;
6930 var1 = self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val; /* @cast_type on <self:AIsaExpr> */
6931 var = var1;
6932 RET_LABEL:;
6933 return var;
6934 }
6935 /* method typing#AIsaExpr#cast_type for (self: Object): nullable MType */
6936 val* VIRTUAL_typing__AIsaExpr__cast_type(val* self) {
6937 val* var /* : nullable MType */;
6938 val* var1 /* : nullable MType */;
6939 var1 = typing__AIsaExpr__cast_type(self);
6940 var = var1;
6941 RET_LABEL:;
6942 return var;
6943 }
6944 /* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */
6945 void typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6946 self->attrs[COLOR_typing__AIsaExpr___64dcast_type].val = p0; /* @cast_type on <self:AIsaExpr> */
6947 RET_LABEL:;
6948 }
6949 /* method typing#AIsaExpr#cast_type= for (self: Object, nullable MType) */
6950 void VIRTUAL_typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
6951 typing__AIsaExpr__cast_type_61d(self, p0);
6952 RET_LABEL:;
6953 }
6954 /* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */
6955 void typing__AIsaExpr__accept_typing(val* self, val* p0) {
6956 val* var_v /* var v: TypeVisitor */;
6957 val* var /* : AExpr */;
6958 val* var1 /* : AType */;
6959 val* var2 /* : nullable MType */;
6960 val* var_mtype /* var mtype: nullable MType */;
6961 val* var3 /* : AExpr */;
6962 val* var4 /* : nullable Variable */;
6963 val* var_variable /* var variable: nullable Variable */;
6964 val* var5 /* : null */;
6965 short int var6 /* : Bool */;
6966 val* var7 /* : AExpr */;
6967 val* var8 /* : nullable MType */;
6968 val* var_orig /* var orig: nullable MType */;
6969 val* var9 /* : String */;
6970 val* var10 /* : null */;
6971 short int var11 /* : Bool */;
6972 val* var12 /* : String */;
6973 static val* varonce;
6974 val* var13 /* : String */;
6975 char* var14 /* : NativeString */;
6976 long var15 /* : Int */;
6977 val* var16 /* : String */;
6978 val* var_from /* var from: String */;
6979 val* var17 /* : String */;
6980 val* var18 /* : null */;
6981 short int var19 /* : Bool */;
6982 val* var20 /* : String */;
6983 static val* varonce21;
6984 val* var22 /* : String */;
6985 char* var23 /* : NativeString */;
6986 long var24 /* : Int */;
6987 val* var25 /* : String */;
6988 val* var_to /* var to: String */;
6989 val* var26 /* : nullable FlowContext */;
6990 val* var27 /* : FlowContext */;
6991 val* var28 /* : nullable MType */;
6992 var_v = p0;
6993 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
6994 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_type]))(self) /* n_type on <self:AIsaExpr>*/;
6995 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>*/;
6996 var_mtype = var2;
6997 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AIsaExpr__cast_type_61d]))(self, var_mtype) /* cast_type= on <self:AIsaExpr>*/;
6998 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
6999 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_typing__AExpr__its_variable]))(var3) /* its_variable on <var3:AExpr>*/;
7000 var_variable = var4;
7001 var5 = NULL;
7002 if (var_variable == NULL) {
7003 var6 = 0; /* is null */
7004 } else {
7005 var6 = 1; /* arg is null and recv is not */
7006 }
7007 if (var6){
7008 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AIsaExpr__n_expr]))(self) /* n_expr on <self:AIsaExpr>*/;
7009 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_typing__AExpr__mtype]))(var7) /* mtype on <var7:AExpr>*/;
7010 var_orig = var8;
7011 var10 = NULL;
7012 if (var_orig == NULL) {
7013 var11 = 0; /* is null */
7014 } else {
7015 var11 = 1; /* arg is null and recv is not */
7016 }
7017 if (var11){
7018 var12 = ((val* (*)(val*))(var_orig->class->vft[COLOR_string__Object__to_s]))(var_orig) /* to_s on <var_orig:nullable MType(MType)>*/;
7019 var9 = var12;
7020 } else {
7021 if (varonce) {
7022 var13 = varonce;
7023 } else {
7024 var14 = "invalid";
7025 var15 = 7;
7026 var16 = string__NativeString__to_s_with_length(var14, var15);
7027 var13 = var16;
7028 varonce = var13;
7029 }
7030 var9 = var13;
7031 }
7032 var_from = var9;
7033 var18 = NULL;
7034 if (var_mtype == NULL) {
7035 var19 = 0; /* is null */
7036 } else {
7037 var19 = 1; /* arg is null and recv is not */
7038 }
7039 if (var19){
7040 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:nullable MType(MType)>*/;
7041 var17 = var20;
7042 } else {
7043 if (varonce21) {
7044 var22 = varonce21;
7045 } else {
7046 var23 = "invalid";
7047 var24 = 7;
7048 var25 = string__NativeString__to_s_with_length(var23, var24);
7049 var22 = var25;
7050 varonce21 = var22;
7051 }
7052 var17 = var22;
7053 }
7054 var_to = var17;
7055 var26 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AIsaExpr>*/;
7056 if (var26 == NULL) {
7057 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7058 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1140);
7059 exit(1);
7060 } else {
7061 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_flow__FlowContext__when_true]))(var26) /* when_true on <var26:nullable FlowContext>*/;
7062 }
7063 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_typing__FlowContext__set_var]))(var27, var_variable, var_mtype) /* set_var on <var27:FlowContext>*/;
7064 } else {
7065 }
7066 var28 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__type_bool]))(var_v, self) /* type_bool on <var_v:TypeVisitor>*/;
7067 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var28) /* mtype= on <self:AIsaExpr>*/;
7068 RET_LABEL:;
7069 }
7070 /* method typing#AIsaExpr#accept_typing for (self: Object, TypeVisitor) */
7071 void VIRTUAL_typing__AIsaExpr__accept_typing(val* self, val* p0) {
7072 typing__AIsaExpr__accept_typing(self, p0);
7073 RET_LABEL:;
7074 }
7075 /* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */
7076 void typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7077 val* var_v /* var v: TypeVisitor */;
7078 val* var /* : AExpr */;
7079 val* var1 /* : AType */;
7080 val* var2 /* : nullable MType */;
7081 var_v = p0;
7082 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_expr]))(self) /* n_expr on <self:AAsCastExpr>*/;
7083 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsCastExpr__n_type]))(self) /* n_type on <self:AAsCastExpr>*/;
7084 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>*/;
7085 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var2) /* mtype= on <self:AAsCastExpr>*/;
7086 RET_LABEL:;
7087 }
7088 /* method typing#AAsCastExpr#accept_typing for (self: Object, TypeVisitor) */
7089 void VIRTUAL_typing__AAsCastExpr__accept_typing(val* self, val* p0) {
7090 typing__AAsCastExpr__accept_typing(self, p0);
7091 RET_LABEL:;
7092 }
7093 /* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */
7094 void typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7095 val* var_v /* var v: TypeVisitor */;
7096 val* var /* : AExpr */;
7097 val* var1 /* : nullable MType */;
7098 val* var_mtype /* var mtype: nullable MType */;
7099 short int var2 /* : Bool */;
7100 int cltype;
7101 int idtype;
7102 static val* varonce;
7103 val* var3 /* : String */;
7104 char* var4 /* : NativeString */;
7105 long var5 /* : Int */;
7106 val* var6 /* : String */;
7107 short int var7 /* : Bool */;
7108 int cltype8;
7109 int idtype9;
7110 val* var10 /* : MType */;
7111 var_v = p0;
7112 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAsNotnullExpr__n_expr]))(self) /* n_expr on <self:AAsNotnullExpr>*/;
7113 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7114 var_mtype = var1;
7115 /* <var_mtype:nullable MType> isa MNullType */
7116 cltype = type_model__MNullType.color;
7117 idtype = type_model__MNullType.id;
7118 if(var_mtype == NULL) {
7119 var2 = 0;
7120 } else {
7121 if(cltype >= var_mtype->type->table_size) {
7122 var2 = 0;
7123 } else {
7124 var2 = var_mtype->type->type_table[cltype] == idtype;
7125 }
7126 }
7127 if (var2){
7128 if (varonce) {
7129 var3 = varonce;
7130 } else {
7131 var4 = "Type error: as(not null) on null";
7132 var5 = 32;
7133 var6 = string__NativeString__to_s_with_length(var4, var5);
7134 var3 = var6;
7135 varonce = var3;
7136 }
7137 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var3) /* error on <var_v:TypeVisitor>*/;
7138 goto RET_LABEL;
7139 } else {
7140 }
7141 /* <var_mtype:nullable MType> isa MNullableType */
7142 cltype8 = type_model__MNullableType.color;
7143 idtype9 = type_model__MNullableType.id;
7144 if(var_mtype == NULL) {
7145 var7 = 0;
7146 } else {
7147 if(cltype8 >= var_mtype->type->table_size) {
7148 var7 = 0;
7149 } else {
7150 var7 = var_mtype->type->type_table[cltype8] == idtype9;
7151 }
7152 }
7153 if (var7){
7154 var10 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:nullable MType(MNullableType)>*/;
7155 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var10) /* mtype= on <self:AAsNotnullExpr>*/;
7156 goto RET_LABEL;
7157 } else {
7158 }
7159 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_mtype) /* mtype= on <self:AAsNotnullExpr>*/;
7160 RET_LABEL:;
7161 }
7162 /* method typing#AAsNotnullExpr#accept_typing for (self: Object, TypeVisitor) */
7163 void VIRTUAL_typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
7164 typing__AAsNotnullExpr__accept_typing(self, p0);
7165 RET_LABEL:;
7166 }
7167 /* method typing#AProxyExpr#accept_typing for (self: AProxyExpr, TypeVisitor) */
7168 void typing__AProxyExpr__accept_typing(val* self, val* p0) {
7169 val* var_v /* var v: TypeVisitor */;
7170 val* var /* : AExpr */;
7171 val* var1 /* : nullable MType */;
7172 var_v = p0;
7173 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AProxyExpr__n_expr]))(self) /* n_expr on <self:AProxyExpr>*/;
7174 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7175 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:AProxyExpr>*/;
7176 RET_LABEL:;
7177 }
7178 /* method typing#AProxyExpr#accept_typing for (self: Object, TypeVisitor) */
7179 void VIRTUAL_typing__AProxyExpr__accept_typing(val* self, val* p0) {
7180 typing__AProxyExpr__accept_typing(self, p0);
7181 RET_LABEL:;
7182 }
7183 /* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */
7184 val* typing__ASelfExpr__its_variable(val* self) {
7185 val* var /* : nullable Variable */;
7186 val* var1 /* : nullable Variable */;
7187 var1 = self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val; /* @its_variable on <self:ASelfExpr> */
7188 var = var1;
7189 RET_LABEL:;
7190 return var;
7191 }
7192 /* method typing#ASelfExpr#its_variable for (self: Object): nullable Variable */
7193 val* VIRTUAL_typing__ASelfExpr__its_variable(val* self) {
7194 val* var /* : nullable Variable */;
7195 val* var1 /* : nullable Variable */;
7196 var1 = typing__ASelfExpr__its_variable(self);
7197 var = var1;
7198 RET_LABEL:;
7199 return var;
7200 }
7201 /* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */
7202 void typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7203 self->attrs[COLOR_typing__ASelfExpr___64dits_variable].val = p0; /* @its_variable on <self:ASelfExpr> */
7204 RET_LABEL:;
7205 }
7206 /* method typing#ASelfExpr#its_variable= for (self: Object, nullable Variable) */
7207 void VIRTUAL_typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
7208 typing__ASelfExpr__its_variable_61d(self, p0);
7209 RET_LABEL:;
7210 }
7211 /* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */
7212 void typing__ASelfExpr__accept_typing(val* self, val* p0) {
7213 val* var_v /* var v: TypeVisitor */;
7214 val* var /* : Variable */;
7215 val* var_variable /* var variable: Variable */;
7216 val* var1 /* : nullable MType */;
7217 var_v = p0;
7218 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__selfvariable]))(var_v) /* selfvariable on <var_v:TypeVisitor>*/;
7219 var_variable = var;
7220 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASelfExpr__its_variable_61d]))(self, var_variable) /* its_variable= on <self:ASelfExpr>*/;
7221 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>*/;
7222 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var1) /* mtype= on <self:ASelfExpr>*/;
7223 RET_LABEL:;
7224 }
7225 /* method typing#ASelfExpr#accept_typing for (self: Object, TypeVisitor) */
7226 void VIRTUAL_typing__ASelfExpr__accept_typing(val* self, val* p0) {
7227 typing__ASelfExpr__accept_typing(self, p0);
7228 RET_LABEL:;
7229 }
7230 /* method typing#ASendExpr#mproperty for (self: ASendExpr): nullable MMethod */
7231 val* typing__ASendExpr__mproperty(val* self) {
7232 val* var /* : nullable MMethod */;
7233 val* var1 /* : nullable CallSite */;
7234 val* var2 /* : MMethod */;
7235 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__callsite]))(self) /* callsite on <self:ASendExpr>*/;
7236 if (var1 == NULL) {
7237 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7238 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1192);
7239 exit(1);
7240 } else {
7241 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
7242 }
7243 var = var2;
7244 goto RET_LABEL;
7245 RET_LABEL:;
7246 return var;
7247 }
7248 /* method typing#ASendExpr#mproperty for (self: Object): nullable MMethod */
7249 val* VIRTUAL_typing__ASendExpr__mproperty(val* self) {
7250 val* var /* : nullable MMethod */;
7251 val* var1 /* : nullable MMethod */;
7252 var1 = typing__ASendExpr__mproperty(self);
7253 var = var1;
7254 RET_LABEL:;
7255 return var;
7256 }
7257 /* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */
7258 val* typing__ASendExpr__callsite(val* self) {
7259 val* var /* : nullable CallSite */;
7260 val* var1 /* : nullable CallSite */;
7261 var1 = self->attrs[COLOR_typing__ASendExpr___64dcallsite].val; /* @callsite on <self:ASendExpr> */
7262 var = var1;
7263 RET_LABEL:;
7264 return var;
7265 }
7266 /* method typing#ASendExpr#callsite for (self: Object): nullable CallSite */
7267 val* VIRTUAL_typing__ASendExpr__callsite(val* self) {
7268 val* var /* : nullable CallSite */;
7269 val* var1 /* : nullable CallSite */;
7270 var1 = typing__ASendExpr__callsite(self);
7271 var = var1;
7272 RET_LABEL:;
7273 return var;
7274 }
7275 /* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */
7276 void typing__ASendExpr__callsite_61d(val* self, val* p0) {
7277 self->attrs[COLOR_typing__ASendExpr___64dcallsite].val = p0; /* @callsite on <self:ASendExpr> */
7278 RET_LABEL:;
7279 }
7280 /* method typing#ASendExpr#callsite= for (self: Object, nullable CallSite) */
7281 void VIRTUAL_typing__ASendExpr__callsite_61d(val* self, val* p0) {
7282 typing__ASendExpr__callsite_61d(self, p0);
7283 RET_LABEL:;
7284 }
7285 /* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */
7286 void typing__ASendExpr__accept_typing(val* self, val* p0) {
7287 val* var_v /* var v: TypeVisitor */;
7288 val* var /* : AExpr */;
7289 val* var1 /* : nullable MType */;
7290 val* var_recvtype /* var recvtype: nullable MType */;
7291 val* var2 /* : String */;
7292 val* var_name /* var name: String */;
7293 val* var3 /* : null */;
7294 short int var4 /* : Bool */;
7295 short int var5 /* : Bool */;
7296 int cltype;
7297 int idtype;
7298 static val* varonce;
7299 val* var6 /* : String */;
7300 char* var7 /* : NativeString */;
7301 long var8 /* : Int */;
7302 val* var9 /* : String */;
7303 static val* varonce10;
7304 val* var11 /* : String */;
7305 char* var12 /* : NativeString */;
7306 long var13 /* : Int */;
7307 val* var14 /* : String */;
7308 val* var15 /* : Array[Object] */;
7309 long var16 /* : Int */;
7310 val* var17 /* : NativeArray[Object] */;
7311 val* var18 /* : String */;
7312 val* var19 /* : AExpr */;
7313 short int var20 /* : Bool */;
7314 int cltype21;
7315 int idtype22;
7316 val* var23 /* : nullable CallSite */;
7317 val* var_callsite /* var callsite: nullable CallSite */;
7318 val* var24 /* : null */;
7319 short int var25 /* : Bool */;
7320 val* var26 /* : MSignature */;
7321 val* var_msignature /* var msignature: MSignature */;
7322 val* var27 /* : Array[AExpr] */;
7323 val* var_args /* var args: Array[AExpr] */;
7324 short int var28 /* : Bool */;
7325 val* var29 /* : MMethod */;
7326 short int var30 /* : Bool */;
7327 val* var31 /* : MPropDef */;
7328 val* var_vmpropdef /* var vmpropdef: MPropDef */;
7329 short int var32 /* : Bool */;
7330 short int var33 /* : Bool */;
7331 int cltype34;
7332 int idtype35;
7333 short int var_ /* var : Bool */;
7334 val* var36 /* : MProperty */;
7335 short int var37 /* : Bool */;
7336 short int var38 /* : Bool */;
7337 static val* varonce39;
7338 val* var40 /* : String */;
7339 char* var41 /* : NativeString */;
7340 long var42 /* : Int */;
7341 val* var43 /* : String */;
7342 val* var44 /* : nullable MType */;
7343 val* var_ret /* var ret: nullable MType */;
7344 val* var45 /* : null */;
7345 short int var46 /* : Bool */;
7346 short int var47 /* : Bool */;
7347 var_v = p0;
7348 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7349 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
7350 var_recvtype = var1;
7351 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendExpr>*/;
7352 var_name = var2;
7353 var3 = NULL;
7354 if (var_recvtype == NULL) {
7355 var4 = 1; /* is null */
7356 } else {
7357 var4 = 0; /* arg is null but recv is not */
7358 }
7359 if (var4){
7360 goto RET_LABEL;
7361 } else {
7362 }
7363 /* <var_recvtype:nullable MType(MType)> isa MNullType */
7364 cltype = type_model__MNullType.color;
7365 idtype = type_model__MNullType.id;
7366 if(cltype >= var_recvtype->type->table_size) {
7367 var5 = 0;
7368 } else {
7369 var5 = var_recvtype->type->type_table[cltype] == idtype;
7370 }
7371 if (var5){
7372 if (varonce) {
7373 var6 = varonce;
7374 } else {
7375 var7 = "Error: Method \'";
7376 var8 = 15;
7377 var9 = string__NativeString__to_s_with_length(var7, var8);
7378 var6 = var9;
7379 varonce = var6;
7380 }
7381 if (varonce10) {
7382 var11 = varonce10;
7383 } else {
7384 var12 = "\' call on \'null\'.";
7385 var13 = 17;
7386 var14 = string__NativeString__to_s_with_length(var12, var13);
7387 var11 = var14;
7388 varonce10 = var11;
7389 }
7390 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
7391 { /* var15 = array_instance Array[Object] */
7392 var16 = 3;
7393 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
7394 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
7395 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
7396 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
7397 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
7398 CHECK_NEW_array__Array(var15);
7399 }
7400 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
7401 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
7402 goto RET_LABEL;
7403 } else {
7404 }
7405 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendExpr>*/;
7406 /* <var19:AExpr> isa ASelfExpr */
7407 cltype21 = type_parser_nodes__ASelfExpr.color;
7408 idtype22 = type_parser_nodes__ASelfExpr.id;
7409 if(cltype21 >= var19->type->table_size) {
7410 var20 = 0;
7411 } else {
7412 var20 = var19->type->type_table[cltype21] == idtype22;
7413 }
7414 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>*/;
7415 var_callsite = var23;
7416 var24 = NULL;
7417 if (var_callsite == NULL) {
7418 var25 = 1; /* is null */
7419 } else {
7420 var25 = 0; /* arg is null but recv is not */
7421 }
7422 if (var25){
7423 goto RET_LABEL;
7424 } else {
7425 }
7426 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendExpr>*/;
7427 var26 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
7428 var_msignature = var26;
7429 var27 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
7430 var_args = var27;
7431 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendExpr>*/;
7432 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)>*/;
7433 var28;
7434 var29 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:nullable CallSite(CallSite)>*/;
7435 var30 = ((short int (*)(val*))(var29->class->vft[COLOR_model__MMethod__is_init]))(var29) /* is_init on <var29:MMethod>*/;
7436 if (var30){
7437 var31 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
7438 var_vmpropdef = var31;
7439 /* <var_vmpropdef:MPropDef> isa MMethodDef */
7440 cltype34 = type_model__MMethodDef.color;
7441 idtype35 = type_model__MMethodDef.id;
7442 if(cltype34 >= var_vmpropdef->type->table_size) {
7443 var33 = 0;
7444 } else {
7445 var33 = var_vmpropdef->type->type_table[cltype34] == idtype35;
7446 }
7447 var_ = var33;
7448 if (var33){
7449 var36 = ((val* (*)(val*))(var_vmpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_vmpropdef) /* mproperty on <var_vmpropdef:MPropDef(MMethodDef)>*/;
7450 var37 = ((short int (*)(val*))(var36->class->vft[COLOR_model__MMethod__is_init]))(var36) /* is_init on <var36:MProperty(MMethod)>*/;
7451 var32 = var37;
7452 } else {
7453 var32 = var_;
7454 }
7455 var38 = !var32;
7456 if (var38){
7457 if (varonce39) {
7458 var40 = varonce39;
7459 } else {
7460 var41 = "Can call a init only in another init";
7461 var42 = 36;
7462 var43 = string__NativeString__to_s_with_length(var41, var42);
7463 var40 = var43;
7464 varonce39 = var40;
7465 }
7466 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var40) /* error on <var_v:TypeVisitor>*/;
7467 } else {
7468 }
7469 } else {
7470 }
7471 var44 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
7472 var_ret = var44;
7473 var45 = NULL;
7474 if (var_ret == NULL) {
7475 var46 = 0; /* is null */
7476 } else {
7477 var46 = 1; /* arg is null and recv is not */
7478 }
7479 if (var46){
7480 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var_ret) /* mtype= on <self:ASendExpr>*/;
7481 } else {
7482 var47 = 1;
7483 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var47) /* is_typed= on <self:ASendExpr>*/;
7484 }
7485 RET_LABEL:;
7486 }
7487 /* method typing#ASendExpr#accept_typing for (self: Object, TypeVisitor) */
7488 void VIRTUAL_typing__ASendExpr__accept_typing(val* self, val* p0) {
7489 typing__ASendExpr__accept_typing(self, p0);
7490 RET_LABEL:;
7491 }
7492 /* method typing#ASendExpr#property_name for (self: ASendExpr): String */
7493 val* typing__ASendExpr__property_name(val* self) {
7494 val* var /* : String */;
7495 const char* var_class_name;
7496 var_class_name = self == NULL ? "null" : self->type->name;
7497 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "property_name", var_class_name);
7498 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1233);
7499 exit(1);
7500 RET_LABEL:;
7501 return var;
7502 }
7503 /* method typing#ASendExpr#property_name for (self: Object): String */
7504 val* VIRTUAL_typing__ASendExpr__property_name(val* self) {
7505 val* var /* : String */;
7506 val* var1 /* : String */;
7507 var1 = typing__ASendExpr__property_name(self);
7508 var = var1;
7509 RET_LABEL:;
7510 return var;
7511 }
7512 /* method typing#ASendExpr#raw_arguments for (self: ASendExpr): nullable Array[AExpr] */
7513 val* typing__ASendExpr__raw_arguments(val* self) {
7514 val* var /* : nullable Array[AExpr] */;
7515 val* var1 /* : nullable Array[AExpr] */;
7516 var1 = self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val; /* @raw_arguments on <self:ASendExpr> */
7517 var = var1;
7518 RET_LABEL:;
7519 return var;
7520 }
7521 /* method typing#ASendExpr#raw_arguments for (self: Object): nullable Array[AExpr] */
7522 val* VIRTUAL_typing__ASendExpr__raw_arguments(val* self) {
7523 val* var /* : nullable Array[AExpr] */;
7524 val* var1 /* : nullable Array[AExpr] */;
7525 var1 = typing__ASendExpr__raw_arguments(self);
7526 var = var1;
7527 RET_LABEL:;
7528 return var;
7529 }
7530 /* method typing#ASendExpr#raw_arguments= for (self: ASendExpr, nullable Array[AExpr]) */
7531 void typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7532 self->attrs[COLOR_typing__ASendExpr___64draw_arguments].val = p0; /* @raw_arguments on <self:ASendExpr> */
7533 RET_LABEL:;
7534 }
7535 /* method typing#ASendExpr#raw_arguments= for (self: Object, nullable Array[AExpr]) */
7536 void VIRTUAL_typing__ASendExpr__raw_arguments_61d(val* self, val* p0) {
7537 typing__ASendExpr__raw_arguments_61d(self, p0);
7538 RET_LABEL:;
7539 }
7540 /* method typing#ASendExpr#compute_raw_arguments for (self: ASendExpr): Array[AExpr] */
7541 val* typing__ASendExpr__compute_raw_arguments(val* self) {
7542 val* var /* : Array[AExpr] */;
7543 const char* var_class_name;
7544 var_class_name = self == NULL ? "null" : self->type->name;
7545 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compute_raw_arguments", var_class_name);
7546 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1240);
7547 exit(1);
7548 RET_LABEL:;
7549 return var;
7550 }
7551 /* method typing#ASendExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7552 val* VIRTUAL_typing__ASendExpr__compute_raw_arguments(val* self) {
7553 val* var /* : Array[AExpr] */;
7554 val* var1 /* : Array[AExpr] */;
7555 var1 = typing__ASendExpr__compute_raw_arguments(self);
7556 var = var1;
7557 RET_LABEL:;
7558 return var;
7559 }
7560 /* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */
7561 val* typing__ABinopExpr__compute_raw_arguments(val* self) {
7562 val* var /* : Array[AExpr] */;
7563 val* var1 /* : Array[AExpr] */;
7564 long var2 /* : Int */;
7565 val* var_ /* var : Array[AExpr] */;
7566 val* var3 /* : AExpr */;
7567 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
7568 var2 = 1;
7569 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[AExpr]>*/;
7570 CHECK_NEW_array__Array(var1);
7571 var_ = var1;
7572 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ABinopExpr>*/;
7573 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var3) /* push on <var_:Array[AExpr]>*/;
7574 var = var_;
7575 goto RET_LABEL;
7576 RET_LABEL:;
7577 return var;
7578 }
7579 /* method typing#ABinopExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
7580 val* VIRTUAL_typing__ABinopExpr__compute_raw_arguments(val* self) {
7581 val* var /* : Array[AExpr] */;
7582 val* var1 /* : Array[AExpr] */;
7583 var1 = typing__ABinopExpr__compute_raw_arguments(self);
7584 var = var1;
7585 RET_LABEL:;
7586 return var;
7587 }
7588 /* method typing#AEqExpr#property_name for (self: AEqExpr): String */
7589 val* typing__AEqExpr__property_name(val* self) {
7590 val* var /* : String */;
7591 static val* varonce;
7592 val* var1 /* : String */;
7593 char* var2 /* : NativeString */;
7594 long var3 /* : Int */;
7595 val* var4 /* : String */;
7596 if (varonce) {
7597 var1 = varonce;
7598 } else {
7599 var2 = "==";
7600 var3 = 2;
7601 var4 = string__NativeString__to_s_with_length(var2, var3);
7602 var1 = var4;
7603 varonce = var1;
7604 }
7605 var = var1;
7606 goto RET_LABEL;
7607 RET_LABEL:;
7608 return var;
7609 }
7610 /* method typing#AEqExpr#property_name for (self: Object): String */
7611 val* VIRTUAL_typing__AEqExpr__property_name(val* self) {
7612 val* var /* : String */;
7613 val* var1 /* : String */;
7614 var1 = typing__AEqExpr__property_name(self);
7615 var = var1;
7616 RET_LABEL:;
7617 return var;
7618 }
7619 /* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */
7620 void typing__AEqExpr__accept_typing(val* self, val* p0) {
7621 val* var_v /* var v: TypeVisitor */;
7622 val* var /* : AExpr */;
7623 val* var1 /* : nullable Variable */;
7624 val* var_variable /* var variable: nullable Variable */;
7625 val* var2 /* : null */;
7626 short int var3 /* : Bool */;
7627 val* var4 /* : AExpr */;
7628 val* var5 /* : nullable MType */;
7629 val* var_mtype /* var mtype: nullable MType */;
7630 short int var6 /* : Bool */;
7631 int cltype;
7632 int idtype;
7633 short int var7 /* : Bool */;
7634 val* var8 /* : nullable MType */;
7635 val* var_vartype /* var vartype: nullable MType */;
7636 short int var9 /* : Bool */;
7637 int cltype10;
7638 int idtype11;
7639 short int var12 /* : Bool */;
7640 val* var13 /* : nullable FlowContext */;
7641 val* var14 /* : FlowContext */;
7642 val* var15 /* : nullable FlowContext */;
7643 val* var16 /* : FlowContext */;
7644 val* var17 /* : MType */;
7645 var_v = p0;
7646 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AEqExpr__accept_typing]))(self, p0) /* accept_typing on <self:AEqExpr>*/;
7647 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:AEqExpr>*/;
7648 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7649 var_variable = var1;
7650 var2 = NULL;
7651 if (var_variable == NULL) {
7652 var3 = 1; /* is null */
7653 } else {
7654 var3 = 0; /* arg is null but recv is not */
7655 }
7656 if (var3){
7657 goto RET_LABEL;
7658 } else {
7659 }
7660 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:AEqExpr>*/;
7661 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7662 var_mtype = var5;
7663 /* <var_mtype:nullable MType> isa MNullType */
7664 cltype = type_model__MNullType.color;
7665 idtype = type_model__MNullType.id;
7666 if(var_mtype == NULL) {
7667 var6 = 0;
7668 } else {
7669 if(cltype >= var_mtype->type->table_size) {
7670 var6 = 0;
7671 } else {
7672 var6 = var_mtype->type->type_table[cltype] == idtype;
7673 }
7674 }
7675 var7 = !var6;
7676 if (var7){
7677 goto RET_LABEL;
7678 } else {
7679 }
7680 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>*/;
7681 var_vartype = var8;
7682 /* <var_vartype:nullable MType> isa MNullableType */
7683 cltype10 = type_model__MNullableType.color;
7684 idtype11 = type_model__MNullableType.id;
7685 if(var_vartype == NULL) {
7686 var9 = 0;
7687 } else {
7688 if(cltype10 >= var_vartype->type->table_size) {
7689 var9 = 0;
7690 } else {
7691 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7692 }
7693 }
7694 var12 = !var9;
7695 if (var12){
7696 goto RET_LABEL;
7697 } else {
7698 }
7699 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7700 if (var13 == NULL) {
7701 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7702 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1258);
7703 exit(1);
7704 } else {
7705 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_true]))(var13) /* when_true on <var13:nullable FlowContext>*/;
7706 }
7707 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7708 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:AEqExpr>*/;
7709 if (var15 == NULL) {
7710 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7711 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1259);
7712 exit(1);
7713 } else {
7714 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_false]))(var15) /* when_false on <var15:nullable FlowContext>*/;
7715 }
7716 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7717 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7718 RET_LABEL:;
7719 }
7720 /* method typing#AEqExpr#accept_typing for (self: Object, TypeVisitor) */
7721 void VIRTUAL_typing__AEqExpr__accept_typing(val* self, val* p0) {
7722 typing__AEqExpr__accept_typing(self, p0);
7723 RET_LABEL:;
7724 }
7725 /* method typing#ANeExpr#property_name for (self: ANeExpr): String */
7726 val* typing__ANeExpr__property_name(val* self) {
7727 val* var /* : String */;
7728 static val* varonce;
7729 val* var1 /* : String */;
7730 char* var2 /* : NativeString */;
7731 long var3 /* : Int */;
7732 val* var4 /* : String */;
7733 if (varonce) {
7734 var1 = varonce;
7735 } else {
7736 var2 = "!=";
7737 var3 = 2;
7738 var4 = string__NativeString__to_s_with_length(var2, var3);
7739 var1 = var4;
7740 varonce = var1;
7741 }
7742 var = var1;
7743 goto RET_LABEL;
7744 RET_LABEL:;
7745 return var;
7746 }
7747 /* method typing#ANeExpr#property_name for (self: Object): String */
7748 val* VIRTUAL_typing__ANeExpr__property_name(val* self) {
7749 val* var /* : String */;
7750 val* var1 /* : String */;
7751 var1 = typing__ANeExpr__property_name(self);
7752 var = var1;
7753 RET_LABEL:;
7754 return var;
7755 }
7756 /* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */
7757 void typing__ANeExpr__accept_typing(val* self, val* p0) {
7758 val* var_v /* var v: TypeVisitor */;
7759 val* var /* : AExpr */;
7760 val* var1 /* : nullable Variable */;
7761 val* var_variable /* var variable: nullable Variable */;
7762 val* var2 /* : null */;
7763 short int var3 /* : Bool */;
7764 val* var4 /* : AExpr */;
7765 val* var5 /* : nullable MType */;
7766 val* var_mtype /* var mtype: nullable MType */;
7767 short int var6 /* : Bool */;
7768 int cltype;
7769 int idtype;
7770 short int var7 /* : Bool */;
7771 val* var8 /* : nullable MType */;
7772 val* var_vartype /* var vartype: nullable MType */;
7773 short int var9 /* : Bool */;
7774 int cltype10;
7775 int idtype11;
7776 short int var12 /* : Bool */;
7777 val* var13 /* : nullable FlowContext */;
7778 val* var14 /* : FlowContext */;
7779 val* var15 /* : nullable FlowContext */;
7780 val* var16 /* : FlowContext */;
7781 val* var17 /* : MType */;
7782 var_v = p0;
7783 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANeExpr__accept_typing]))(self, p0) /* accept_typing on <self:ANeExpr>*/;
7784 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ANeExpr>*/;
7785 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
7786 var_variable = var1;
7787 var2 = NULL;
7788 if (var_variable == NULL) {
7789 var3 = 1; /* is null */
7790 } else {
7791 var3 = 0; /* arg is null but recv is not */
7792 }
7793 if (var3){
7794 goto RET_LABEL;
7795 } else {
7796 }
7797 var4 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABinopExpr__n_expr2]))(self) /* n_expr2 on <self:ANeExpr>*/;
7798 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
7799 var_mtype = var5;
7800 /* <var_mtype:nullable MType> isa MNullType */
7801 cltype = type_model__MNullType.color;
7802 idtype = type_model__MNullType.id;
7803 if(var_mtype == NULL) {
7804 var6 = 0;
7805 } else {
7806 if(cltype >= var_mtype->type->table_size) {
7807 var6 = 0;
7808 } else {
7809 var6 = var_mtype->type->type_table[cltype] == idtype;
7810 }
7811 }
7812 var7 = !var6;
7813 if (var7){
7814 goto RET_LABEL;
7815 } else {
7816 }
7817 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>*/;
7818 var_vartype = var8;
7819 /* <var_vartype:nullable MType> isa MNullableType */
7820 cltype10 = type_model__MNullableType.color;
7821 idtype11 = type_model__MNullableType.id;
7822 if(var_vartype == NULL) {
7823 var9 = 0;
7824 } else {
7825 if(cltype10 >= var_vartype->type->table_size) {
7826 var9 = 0;
7827 } else {
7828 var9 = var_vartype->type->type_table[cltype10] == idtype11;
7829 }
7830 }
7831 var12 = !var9;
7832 if (var12){
7833 goto RET_LABEL;
7834 } else {
7835 }
7836 var13 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7837 if (var13 == NULL) {
7838 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7839 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1275);
7840 exit(1);
7841 } else {
7842 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_flow__FlowContext__when_false]))(var13) /* when_false on <var13:nullable FlowContext>*/;
7843 }
7844 ((void (*)(val*, val*, val*))(var14->class->vft[COLOR_typing__FlowContext__set_var]))(var14, var_variable, var_mtype) /* set_var on <var14:FlowContext>*/;
7845 var15 = ((val* (*)(val*))(self->class->vft[COLOR_flow__AExpr__after_flow_context]))(self) /* after_flow_context on <self:ANeExpr>*/;
7846 if (var15 == NULL) {
7847 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7848 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1276);
7849 exit(1);
7850 } else {
7851 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_flow__FlowContext__when_true]))(var15) /* when_true on <var15:nullable FlowContext>*/;
7852 }
7853 var17 = ((val* (*)(val*))(var_vartype->class->vft[COLOR_model__MNullableType__mtype]))(var_vartype) /* mtype on <var_vartype:nullable MType(MNullableType)>*/;
7854 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_typing__FlowContext__set_var]))(var16, var_variable, var17) /* set_var on <var16:FlowContext>*/;
7855 RET_LABEL:;
7856 }
7857 /* method typing#ANeExpr#accept_typing for (self: Object, TypeVisitor) */
7858 void VIRTUAL_typing__ANeExpr__accept_typing(val* self, val* p0) {
7859 typing__ANeExpr__accept_typing(self, p0);
7860 RET_LABEL:;
7861 }
7862 /* method typing#ALtExpr#property_name for (self: ALtExpr): String */
7863 val* typing__ALtExpr__property_name(val* self) {
7864 val* var /* : String */;
7865 static val* varonce;
7866 val* var1 /* : String */;
7867 char* var2 /* : NativeString */;
7868 long var3 /* : Int */;
7869 val* var4 /* : String */;
7870 if (varonce) {
7871 var1 = varonce;
7872 } else {
7873 var2 = "<";
7874 var3 = 1;
7875 var4 = string__NativeString__to_s_with_length(var2, var3);
7876 var1 = var4;
7877 varonce = var1;
7878 }
7879 var = var1;
7880 goto RET_LABEL;
7881 RET_LABEL:;
7882 return var;
7883 }
7884 /* method typing#ALtExpr#property_name for (self: Object): String */
7885 val* VIRTUAL_typing__ALtExpr__property_name(val* self) {
7886 val* var /* : String */;
7887 val* var1 /* : String */;
7888 var1 = typing__ALtExpr__property_name(self);
7889 var = var1;
7890 RET_LABEL:;
7891 return var;
7892 }
7893 /* method typing#ALeExpr#property_name for (self: ALeExpr): String */
7894 val* typing__ALeExpr__property_name(val* self) {
7895 val* var /* : String */;
7896 static val* varonce;
7897 val* var1 /* : String */;
7898 char* var2 /* : NativeString */;
7899 long var3 /* : Int */;
7900 val* var4 /* : String */;
7901 if (varonce) {
7902 var1 = varonce;
7903 } else {
7904 var2 = "<=";
7905 var3 = 2;
7906 var4 = string__NativeString__to_s_with_length(var2, var3);
7907 var1 = var4;
7908 varonce = var1;
7909 }
7910 var = var1;
7911 goto RET_LABEL;
7912 RET_LABEL:;
7913 return var;
7914 }
7915 /* method typing#ALeExpr#property_name for (self: Object): String */
7916 val* VIRTUAL_typing__ALeExpr__property_name(val* self) {
7917 val* var /* : String */;
7918 val* var1 /* : String */;
7919 var1 = typing__ALeExpr__property_name(self);
7920 var = var1;
7921 RET_LABEL:;
7922 return var;
7923 }
7924 /* method typing#ALlExpr#property_name for (self: ALlExpr): String */
7925 val* typing__ALlExpr__property_name(val* self) {
7926 val* var /* : String */;
7927 static val* varonce;
7928 val* var1 /* : String */;
7929 char* var2 /* : NativeString */;
7930 long var3 /* : Int */;
7931 val* var4 /* : String */;
7932 if (varonce) {
7933 var1 = varonce;
7934 } else {
7935 var2 = "<<";
7936 var3 = 2;
7937 var4 = string__NativeString__to_s_with_length(var2, var3);
7938 var1 = var4;
7939 varonce = var1;
7940 }
7941 var = var1;
7942 goto RET_LABEL;
7943 RET_LABEL:;
7944 return var;
7945 }
7946 /* method typing#ALlExpr#property_name for (self: Object): String */
7947 val* VIRTUAL_typing__ALlExpr__property_name(val* self) {
7948 val* var /* : String */;
7949 val* var1 /* : String */;
7950 var1 = typing__ALlExpr__property_name(self);
7951 var = var1;
7952 RET_LABEL:;
7953 return var;
7954 }
7955 /* method typing#AGtExpr#property_name for (self: AGtExpr): String */
7956 val* typing__AGtExpr__property_name(val* self) {
7957 val* var /* : String */;
7958 static val* varonce;
7959 val* var1 /* : String */;
7960 char* var2 /* : NativeString */;
7961 long var3 /* : Int */;
7962 val* var4 /* : String */;
7963 if (varonce) {
7964 var1 = varonce;
7965 } else {
7966 var2 = ">";
7967 var3 = 1;
7968 var4 = string__NativeString__to_s_with_length(var2, var3);
7969 var1 = var4;
7970 varonce = var1;
7971 }
7972 var = var1;
7973 goto RET_LABEL;
7974 RET_LABEL:;
7975 return var;
7976 }
7977 /* method typing#AGtExpr#property_name for (self: Object): String */
7978 val* VIRTUAL_typing__AGtExpr__property_name(val* self) {
7979 val* var /* : String */;
7980 val* var1 /* : String */;
7981 var1 = typing__AGtExpr__property_name(self);
7982 var = var1;
7983 RET_LABEL:;
7984 return var;
7985 }
7986 /* method typing#AGeExpr#property_name for (self: AGeExpr): String */
7987 val* typing__AGeExpr__property_name(val* self) {
7988 val* var /* : String */;
7989 static val* varonce;
7990 val* var1 /* : String */;
7991 char* var2 /* : NativeString */;
7992 long var3 /* : Int */;
7993 val* var4 /* : String */;
7994 if (varonce) {
7995 var1 = varonce;
7996 } else {
7997 var2 = ">=";
7998 var3 = 2;
7999 var4 = string__NativeString__to_s_with_length(var2, var3);
8000 var1 = var4;
8001 varonce = var1;
8002 }
8003 var = var1;
8004 goto RET_LABEL;
8005 RET_LABEL:;
8006 return var;
8007 }
8008 /* method typing#AGeExpr#property_name for (self: Object): String */
8009 val* VIRTUAL_typing__AGeExpr__property_name(val* self) {
8010 val* var /* : String */;
8011 val* var1 /* : String */;
8012 var1 = typing__AGeExpr__property_name(self);
8013 var = var1;
8014 RET_LABEL:;
8015 return var;
8016 }
8017 /* method typing#AGgExpr#property_name for (self: AGgExpr): String */
8018 val* typing__AGgExpr__property_name(val* self) {
8019 val* var /* : String */;
8020 static val* varonce;
8021 val* var1 /* : String */;
8022 char* var2 /* : NativeString */;
8023 long var3 /* : Int */;
8024 val* var4 /* : String */;
8025 if (varonce) {
8026 var1 = varonce;
8027 } else {
8028 var2 = ">>";
8029 var3 = 2;
8030 var4 = string__NativeString__to_s_with_length(var2, var3);
8031 var1 = var4;
8032 varonce = var1;
8033 }
8034 var = var1;
8035 goto RET_LABEL;
8036 RET_LABEL:;
8037 return var;
8038 }
8039 /* method typing#AGgExpr#property_name for (self: Object): String */
8040 val* VIRTUAL_typing__AGgExpr__property_name(val* self) {
8041 val* var /* : String */;
8042 val* var1 /* : String */;
8043 var1 = typing__AGgExpr__property_name(self);
8044 var = var1;
8045 RET_LABEL:;
8046 return var;
8047 }
8048 /* method typing#APlusExpr#property_name for (self: APlusExpr): String */
8049 val* typing__APlusExpr__property_name(val* self) {
8050 val* var /* : String */;
8051 static val* varonce;
8052 val* var1 /* : String */;
8053 char* var2 /* : NativeString */;
8054 long var3 /* : Int */;
8055 val* var4 /* : String */;
8056 if (varonce) {
8057 var1 = varonce;
8058 } else {
8059 var2 = "+";
8060 var3 = 1;
8061 var4 = string__NativeString__to_s_with_length(var2, var3);
8062 var1 = var4;
8063 varonce = var1;
8064 }
8065 var = var1;
8066 goto RET_LABEL;
8067 RET_LABEL:;
8068 return var;
8069 }
8070 /* method typing#APlusExpr#property_name for (self: Object): String */
8071 val* VIRTUAL_typing__APlusExpr__property_name(val* self) {
8072 val* var /* : String */;
8073 val* var1 /* : String */;
8074 var1 = typing__APlusExpr__property_name(self);
8075 var = var1;
8076 RET_LABEL:;
8077 return var;
8078 }
8079 /* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */
8080 val* typing__AMinusExpr__property_name(val* self) {
8081 val* var /* : String */;
8082 static val* varonce;
8083 val* var1 /* : String */;
8084 char* var2 /* : NativeString */;
8085 long var3 /* : Int */;
8086 val* var4 /* : String */;
8087 if (varonce) {
8088 var1 = varonce;
8089 } else {
8090 var2 = "-";
8091 var3 = 1;
8092 var4 = string__NativeString__to_s_with_length(var2, var3);
8093 var1 = var4;
8094 varonce = var1;
8095 }
8096 var = var1;
8097 goto RET_LABEL;
8098 RET_LABEL:;
8099 return var;
8100 }
8101 /* method typing#AMinusExpr#property_name for (self: Object): String */
8102 val* VIRTUAL_typing__AMinusExpr__property_name(val* self) {
8103 val* var /* : String */;
8104 val* var1 /* : String */;
8105 var1 = typing__AMinusExpr__property_name(self);
8106 var = var1;
8107 RET_LABEL:;
8108 return var;
8109 }
8110 /* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */
8111 val* typing__AStarshipExpr__property_name(val* self) {
8112 val* var /* : String */;
8113 static val* varonce;
8114 val* var1 /* : String */;
8115 char* var2 /* : NativeString */;
8116 long var3 /* : Int */;
8117 val* var4 /* : String */;
8118 if (varonce) {
8119 var1 = varonce;
8120 } else {
8121 var2 = "<=>";
8122 var3 = 3;
8123 var4 = string__NativeString__to_s_with_length(var2, var3);
8124 var1 = var4;
8125 varonce = var1;
8126 }
8127 var = var1;
8128 goto RET_LABEL;
8129 RET_LABEL:;
8130 return var;
8131 }
8132 /* method typing#AStarshipExpr#property_name for (self: Object): String */
8133 val* VIRTUAL_typing__AStarshipExpr__property_name(val* self) {
8134 val* var /* : String */;
8135 val* var1 /* : String */;
8136 var1 = typing__AStarshipExpr__property_name(self);
8137 var = var1;
8138 RET_LABEL:;
8139 return var;
8140 }
8141 /* method typing#AStarExpr#property_name for (self: AStarExpr): String */
8142 val* typing__AStarExpr__property_name(val* self) {
8143 val* var /* : String */;
8144 static val* varonce;
8145 val* var1 /* : String */;
8146 char* var2 /* : NativeString */;
8147 long var3 /* : Int */;
8148 val* var4 /* : String */;
8149 if (varonce) {
8150 var1 = varonce;
8151 } else {
8152 var2 = "*";
8153 var3 = 1;
8154 var4 = string__NativeString__to_s_with_length(var2, var3);
8155 var1 = var4;
8156 varonce = var1;
8157 }
8158 var = var1;
8159 goto RET_LABEL;
8160 RET_LABEL:;
8161 return var;
8162 }
8163 /* method typing#AStarExpr#property_name for (self: Object): String */
8164 val* VIRTUAL_typing__AStarExpr__property_name(val* self) {
8165 val* var /* : String */;
8166 val* var1 /* : String */;
8167 var1 = typing__AStarExpr__property_name(self);
8168 var = var1;
8169 RET_LABEL:;
8170 return var;
8171 }
8172 /* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */
8173 val* typing__ASlashExpr__property_name(val* self) {
8174 val* var /* : String */;
8175 static val* varonce;
8176 val* var1 /* : String */;
8177 char* var2 /* : NativeString */;
8178 long var3 /* : Int */;
8179 val* var4 /* : String */;
8180 if (varonce) {
8181 var1 = varonce;
8182 } else {
8183 var2 = "/";
8184 var3 = 1;
8185 var4 = string__NativeString__to_s_with_length(var2, var3);
8186 var1 = var4;
8187 varonce = var1;
8188 }
8189 var = var1;
8190 goto RET_LABEL;
8191 RET_LABEL:;
8192 return var;
8193 }
8194 /* method typing#ASlashExpr#property_name for (self: Object): String */
8195 val* VIRTUAL_typing__ASlashExpr__property_name(val* self) {
8196 val* var /* : String */;
8197 val* var1 /* : String */;
8198 var1 = typing__ASlashExpr__property_name(self);
8199 var = var1;
8200 RET_LABEL:;
8201 return var;
8202 }
8203 /* method typing#APercentExpr#property_name for (self: APercentExpr): String */
8204 val* typing__APercentExpr__property_name(val* self) {
8205 val* var /* : String */;
8206 static val* varonce;
8207 val* var1 /* : String */;
8208 char* var2 /* : NativeString */;
8209 long var3 /* : Int */;
8210 val* var4 /* : String */;
8211 if (varonce) {
8212 var1 = varonce;
8213 } else {
8214 var2 = "%";
8215 var3 = 1;
8216 var4 = string__NativeString__to_s_with_length(var2, var3);
8217 var1 = var4;
8218 varonce = var1;
8219 }
8220 var = var1;
8221 goto RET_LABEL;
8222 RET_LABEL:;
8223 return var;
8224 }
8225 /* method typing#APercentExpr#property_name for (self: Object): String */
8226 val* VIRTUAL_typing__APercentExpr__property_name(val* self) {
8227 val* var /* : String */;
8228 val* var1 /* : String */;
8229 var1 = typing__APercentExpr__property_name(self);
8230 var = var1;
8231 RET_LABEL:;
8232 return var;
8233 }
8234 /* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */
8235 val* typing__AUminusExpr__property_name(val* self) {
8236 val* var /* : String */;
8237 static val* varonce;
8238 val* var1 /* : String */;
8239 char* var2 /* : NativeString */;
8240 long var3 /* : Int */;
8241 val* var4 /* : String */;
8242 if (varonce) {
8243 var1 = varonce;
8244 } else {
8245 var2 = "unary -";
8246 var3 = 7;
8247 var4 = string__NativeString__to_s_with_length(var2, var3);
8248 var1 = var4;
8249 varonce = var1;
8250 }
8251 var = var1;
8252 goto RET_LABEL;
8253 RET_LABEL:;
8254 return var;
8255 }
8256 /* method typing#AUminusExpr#property_name for (self: Object): String */
8257 val* VIRTUAL_typing__AUminusExpr__property_name(val* self) {
8258 val* var /* : String */;
8259 val* var1 /* : String */;
8260 var1 = typing__AUminusExpr__property_name(self);
8261 var = var1;
8262 RET_LABEL:;
8263 return var;
8264 }
8265 /* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */
8266 val* typing__AUminusExpr__compute_raw_arguments(val* self) {
8267 val* var /* : Array[AExpr] */;
8268 val* var1 /* : Array[AExpr] */;
8269 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
8270 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[AExpr]>*/;
8271 CHECK_NEW_array__Array(var1);
8272 var = var1;
8273 goto RET_LABEL;
8274 RET_LABEL:;
8275 return var;
8276 }
8277 /* method typing#AUminusExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8278 val* VIRTUAL_typing__AUminusExpr__compute_raw_arguments(val* self) {
8279 val* var /* : Array[AExpr] */;
8280 val* var1 /* : Array[AExpr] */;
8281 var1 = typing__AUminusExpr__compute_raw_arguments(self);
8282 var = var1;
8283 RET_LABEL:;
8284 return var;
8285 }
8286 /* method typing#ACallExpr#property_name for (self: ACallExpr): String */
8287 val* typing__ACallExpr__property_name(val* self) {
8288 val* var /* : String */;
8289 val* var1 /* : TId */;
8290 val* var2 /* : String */;
8291 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallExpr>*/;
8292 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8293 var = var2;
8294 goto RET_LABEL;
8295 RET_LABEL:;
8296 return var;
8297 }
8298 /* method typing#ACallExpr#property_name for (self: Object): String */
8299 val* VIRTUAL_typing__ACallExpr__property_name(val* self) {
8300 val* var /* : String */;
8301 val* var1 /* : String */;
8302 var1 = typing__ACallExpr__property_name(self);
8303 var = var1;
8304 RET_LABEL:;
8305 return var;
8306 }
8307 /* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */
8308 val* typing__ACallExpr__compute_raw_arguments(val* self) {
8309 val* var /* : Array[AExpr] */;
8310 val* var1 /* : AExprs */;
8311 val* var2 /* : Array[AExpr] */;
8312 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallExpr>*/;
8313 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8314 var = var2;
8315 goto RET_LABEL;
8316 RET_LABEL:;
8317 return var;
8318 }
8319 /* method typing#ACallExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8320 val* VIRTUAL_typing__ACallExpr__compute_raw_arguments(val* self) {
8321 val* var /* : Array[AExpr] */;
8322 val* var1 /* : Array[AExpr] */;
8323 var1 = typing__ACallExpr__compute_raw_arguments(self);
8324 var = var1;
8325 RET_LABEL:;
8326 return var;
8327 }
8328 /* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */
8329 val* typing__ACallAssignExpr__property_name(val* self) {
8330 val* var /* : String */;
8331 val* var1 /* : TId */;
8332 val* var2 /* : String */;
8333 static val* varonce;
8334 val* var3 /* : String */;
8335 char* var4 /* : NativeString */;
8336 long var5 /* : Int */;
8337 val* var6 /* : String */;
8338 val* var7 /* : String */;
8339 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallAssignExpr>*/;
8340 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8341 if (varonce) {
8342 var3 = varonce;
8343 } else {
8344 var4 = "=";
8345 var5 = 1;
8346 var6 = string__NativeString__to_s_with_length(var4, var5);
8347 var3 = var6;
8348 varonce = var3;
8349 }
8350 var7 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_string__String___43d]))(var2, var3) /* + on <var2:String>*/;
8351 var = var7;
8352 goto RET_LABEL;
8353 RET_LABEL:;
8354 return var;
8355 }
8356 /* method typing#ACallAssignExpr#property_name for (self: Object): String */
8357 val* VIRTUAL_typing__ACallAssignExpr__property_name(val* self) {
8358 val* var /* : String */;
8359 val* var1 /* : String */;
8360 var1 = typing__ACallAssignExpr__property_name(self);
8361 var = var1;
8362 RET_LABEL:;
8363 return var;
8364 }
8365 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */
8366 val* typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8367 val* var /* : Array[AExpr] */;
8368 val* var1 /* : AExprs */;
8369 val* var2 /* : Array[AExpr] */;
8370 val* var_res /* var res: Array[AExpr] */;
8371 val* var3 /* : AExpr */;
8372 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallAssignExpr>*/;
8373 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8374 var_res = var2;
8375 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ACallAssignExpr>*/;
8376 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8377 var = var_res;
8378 goto RET_LABEL;
8379 RET_LABEL:;
8380 return var;
8381 }
8382 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8383 val* VIRTUAL_typing__ACallAssignExpr__compute_raw_arguments(val* self) {
8384 val* var /* : Array[AExpr] */;
8385 val* var1 /* : Array[AExpr] */;
8386 var1 = typing__ACallAssignExpr__compute_raw_arguments(self);
8387 var = var1;
8388 RET_LABEL:;
8389 return var;
8390 }
8391 /* method typing#ABraExpr#property_name for (self: ABraExpr): String */
8392 val* typing__ABraExpr__property_name(val* self) {
8393 val* var /* : String */;
8394 static val* varonce;
8395 val* var1 /* : String */;
8396 char* var2 /* : NativeString */;
8397 long var3 /* : Int */;
8398 val* var4 /* : String */;
8399 if (varonce) {
8400 var1 = varonce;
8401 } else {
8402 var2 = "[]";
8403 var3 = 2;
8404 var4 = string__NativeString__to_s_with_length(var2, var3);
8405 var1 = var4;
8406 varonce = var1;
8407 }
8408 var = var1;
8409 goto RET_LABEL;
8410 RET_LABEL:;
8411 return var;
8412 }
8413 /* method typing#ABraExpr#property_name for (self: Object): String */
8414 val* VIRTUAL_typing__ABraExpr__property_name(val* self) {
8415 val* var /* : String */;
8416 val* var1 /* : String */;
8417 var1 = typing__ABraExpr__property_name(self);
8418 var = var1;
8419 RET_LABEL:;
8420 return var;
8421 }
8422 /* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */
8423 val* typing__ABraExpr__compute_raw_arguments(val* self) {
8424 val* var /* : Array[AExpr] */;
8425 val* var1 /* : AExprs */;
8426 val* var2 /* : Array[AExpr] */;
8427 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraExpr>*/;
8428 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8429 var = var2;
8430 goto RET_LABEL;
8431 RET_LABEL:;
8432 return var;
8433 }
8434 /* method typing#ABraExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8435 val* VIRTUAL_typing__ABraExpr__compute_raw_arguments(val* self) {
8436 val* var /* : Array[AExpr] */;
8437 val* var1 /* : Array[AExpr] */;
8438 var1 = typing__ABraExpr__compute_raw_arguments(self);
8439 var = var1;
8440 RET_LABEL:;
8441 return var;
8442 }
8443 /* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */
8444 val* typing__ABraAssignExpr__property_name(val* self) {
8445 val* var /* : String */;
8446 static val* varonce;
8447 val* var1 /* : String */;
8448 char* var2 /* : NativeString */;
8449 long var3 /* : Int */;
8450 val* var4 /* : String */;
8451 if (varonce) {
8452 var1 = varonce;
8453 } else {
8454 var2 = "[]=";
8455 var3 = 3;
8456 var4 = string__NativeString__to_s_with_length(var2, var3);
8457 var1 = var4;
8458 varonce = var1;
8459 }
8460 var = var1;
8461 goto RET_LABEL;
8462 RET_LABEL:;
8463 return var;
8464 }
8465 /* method typing#ABraAssignExpr#property_name for (self: Object): String */
8466 val* VIRTUAL_typing__ABraAssignExpr__property_name(val* self) {
8467 val* var /* : String */;
8468 val* var1 /* : String */;
8469 var1 = typing__ABraAssignExpr__property_name(self);
8470 var = var1;
8471 RET_LABEL:;
8472 return var;
8473 }
8474 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */
8475 val* typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8476 val* var /* : Array[AExpr] */;
8477 val* var1 /* : AExprs */;
8478 val* var2 /* : Array[AExpr] */;
8479 val* var_res /* var res: Array[AExpr] */;
8480 val* var3 /* : AExpr */;
8481 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraAssignExpr>*/;
8482 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8483 var_res = var2;
8484 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAssignFormExpr__n_value]))(self) /* n_value on <self:ABraAssignExpr>*/;
8485 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[AExpr]>*/;
8486 var = var_res;
8487 goto RET_LABEL;
8488 RET_LABEL:;
8489 return var;
8490 }
8491 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8492 val* VIRTUAL_typing__ABraAssignExpr__compute_raw_arguments(val* self) {
8493 val* var /* : Array[AExpr] */;
8494 val* var1 /* : Array[AExpr] */;
8495 var1 = typing__ABraAssignExpr__compute_raw_arguments(self);
8496 var = var1;
8497 RET_LABEL:;
8498 return var;
8499 }
8500 /* method typing#ASendReassignFormExpr#write_mproperty for (self: ASendReassignFormExpr): nullable MMethod */
8501 val* typing__ASendReassignFormExpr__write_mproperty(val* self) {
8502 val* var /* : nullable MMethod */;
8503 val* var1 /* : nullable CallSite */;
8504 val* var2 /* : MMethod */;
8505 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite]))(self) /* write_callsite on <self:ASendReassignFormExpr>*/;
8506 if (var1 == NULL) {
8507 fprintf(stderr, "Runtime error: %s", "Reciever is null");
8508 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1355);
8509 exit(1);
8510 } else {
8511 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
8512 }
8513 var = var2;
8514 goto RET_LABEL;
8515 RET_LABEL:;
8516 return var;
8517 }
8518 /* method typing#ASendReassignFormExpr#write_mproperty for (self: Object): nullable MMethod */
8519 val* VIRTUAL_typing__ASendReassignFormExpr__write_mproperty(val* self) {
8520 val* var /* : nullable MMethod */;
8521 val* var1 /* : nullable MMethod */;
8522 var1 = typing__ASendReassignFormExpr__write_mproperty(self);
8523 var = var1;
8524 RET_LABEL:;
8525 return var;
8526 }
8527 /* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */
8528 val* typing__ASendReassignFormExpr__write_callsite(val* self) {
8529 val* var /* : nullable CallSite */;
8530 val* var1 /* : nullable CallSite */;
8531 var1 = self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val; /* @write_callsite on <self:ASendReassignFormExpr> */
8532 var = var1;
8533 RET_LABEL:;
8534 return var;
8535 }
8536 /* method typing#ASendReassignFormExpr#write_callsite for (self: Object): nullable CallSite */
8537 val* VIRTUAL_typing__ASendReassignFormExpr__write_callsite(val* self) {
8538 val* var /* : nullable CallSite */;
8539 val* var1 /* : nullable CallSite */;
8540 var1 = typing__ASendReassignFormExpr__write_callsite(self);
8541 var = var1;
8542 RET_LABEL:;
8543 return var;
8544 }
8545 /* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */
8546 void typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8547 self->attrs[COLOR_typing__ASendReassignFormExpr___64dwrite_callsite].val = p0; /* @write_callsite on <self:ASendReassignFormExpr> */
8548 RET_LABEL:;
8549 }
8550 /* method typing#ASendReassignFormExpr#write_callsite= for (self: Object, nullable CallSite) */
8551 void VIRTUAL_typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
8552 typing__ASendReassignFormExpr__write_callsite_61d(self, p0);
8553 RET_LABEL:;
8554 }
8555 /* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */
8556 void typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8557 val* var_v /* var v: TypeVisitor */;
8558 val* var /* : AExpr */;
8559 val* var1 /* : nullable MType */;
8560 val* var_recvtype /* var recvtype: nullable MType */;
8561 val* var2 /* : String */;
8562 val* var_name /* var name: String */;
8563 val* var3 /* : null */;
8564 short int var4 /* : Bool */;
8565 short int var5 /* : Bool */;
8566 int cltype;
8567 int idtype;
8568 static val* varonce;
8569 val* var6 /* : String */;
8570 char* var7 /* : NativeString */;
8571 long var8 /* : Int */;
8572 val* var9 /* : String */;
8573 static val* varonce10;
8574 val* var11 /* : String */;
8575 char* var12 /* : NativeString */;
8576 long var13 /* : Int */;
8577 val* var14 /* : String */;
8578 val* var15 /* : Array[Object] */;
8579 long var16 /* : Int */;
8580 val* var17 /* : NativeArray[Object] */;
8581 val* var18 /* : String */;
8582 val* var19 /* : AExpr */;
8583 short int var20 /* : Bool */;
8584 int cltype21;
8585 int idtype22;
8586 short int var_for_self /* var for_self: Bool */;
8587 val* var23 /* : nullable CallSite */;
8588 val* var_callsite /* var callsite: nullable CallSite */;
8589 val* var24 /* : null */;
8590 short int var25 /* : Bool */;
8591 val* var26 /* : Array[AExpr] */;
8592 val* var_args /* var args: Array[AExpr] */;
8593 short int var27 /* : Bool */;
8594 val* var28 /* : MSignature */;
8595 val* var29 /* : nullable MType */;
8596 val* var_readtype /* var readtype: nullable MType */;
8597 val* var30 /* : null */;
8598 short int var31 /* : Bool */;
8599 static val* varonce32;
8600 val* var33 /* : String */;
8601 char* var34 /* : NativeString */;
8602 long var35 /* : Int */;
8603 val* var36 /* : String */;
8604 static val* varonce37;
8605 val* var38 /* : String */;
8606 char* var39 /* : NativeString */;
8607 long var40 /* : Int */;
8608 val* var41 /* : String */;
8609 val* var42 /* : Array[Object] */;
8610 long var43 /* : Int */;
8611 val* var44 /* : NativeArray[Object] */;
8612 val* var45 /* : String */;
8613 static val* varonce46;
8614 val* var47 /* : String */;
8615 char* var48 /* : NativeString */;
8616 long var49 /* : Int */;
8617 val* var50 /* : String */;
8618 val* var51 /* : String */;
8619 val* var52 /* : AExpr */;
8620 short int var53 /* : Bool */;
8621 int cltype54;
8622 int idtype55;
8623 val* var56 /* : nullable CallSite */;
8624 val* var_wcallsite /* var wcallsite: nullable CallSite */;
8625 val* var57 /* : null */;
8626 short int var58 /* : Bool */;
8627 val* var59 /* : MSignature */;
8628 val* var60 /* : Array[MParameter] */;
8629 val* var61 /* : nullable Object */;
8630 val* var62 /* : MType */;
8631 val* var63 /* : nullable MType */;
8632 val* var_wtype /* var wtype: nullable MType */;
8633 val* var64 /* : null */;
8634 short int var65 /* : Bool */;
8635 val* var66 /* : Array[nullable Object] */;
8636 val* var67 /* : AExpr */;
8637 short int var68 /* : Bool */;
8638 short int var69 /* : Bool */;
8639 var_v = p0;
8640 var = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8641 var1 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__visit_expr]))(var_v, var) /* visit_expr on <var_v:TypeVisitor>*/;
8642 var_recvtype = var1;
8643 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendReassignFormExpr>*/;
8644 var_name = var2;
8645 var3 = NULL;
8646 if (var_recvtype == NULL) {
8647 var4 = 1; /* is null */
8648 } else {
8649 var4 = 0; /* arg is null but recv is not */
8650 }
8651 if (var4){
8652 goto RET_LABEL;
8653 } else {
8654 }
8655 /* <var_recvtype:nullable MType(MType)> isa MNullType */
8656 cltype = type_model__MNullType.color;
8657 idtype = type_model__MNullType.id;
8658 if(cltype >= var_recvtype->type->table_size) {
8659 var5 = 0;
8660 } else {
8661 var5 = var_recvtype->type->type_table[cltype] == idtype;
8662 }
8663 if (var5){
8664 if (varonce) {
8665 var6 = varonce;
8666 } else {
8667 var7 = "Error: Method \'";
8668 var8 = 15;
8669 var9 = string__NativeString__to_s_with_length(var7, var8);
8670 var6 = var9;
8671 varonce = var6;
8672 }
8673 if (varonce10) {
8674 var11 = varonce10;
8675 } else {
8676 var12 = "\' call on \'null\'.";
8677 var13 = 17;
8678 var14 = string__NativeString__to_s_with_length(var12, var13);
8679 var11 = var14;
8680 varonce10 = var11;
8681 }
8682 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
8683 { /* var15 = array_instance Array[Object] */
8684 var16 = 3;
8685 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
8686 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var6;
8687 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var_name;
8688 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var11;
8689 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
8690 CHECK_NEW_array__Array(var15);
8691 }
8692 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
8693 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var18) /* error on <var_v:TypeVisitor>*/;
8694 goto RET_LABEL;
8695 } else {
8696 }
8697 var19 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8698 /* <var19:AExpr> isa ASelfExpr */
8699 cltype21 = type_parser_nodes__ASelfExpr.color;
8700 idtype22 = type_parser_nodes__ASelfExpr.id;
8701 if(cltype21 >= var19->type->table_size) {
8702 var20 = 0;
8703 } else {
8704 var20 = var19->type->type_table[cltype21] == idtype22;
8705 }
8706 var_for_self = var20;
8707 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>*/;
8708 var_callsite = var23;
8709 var24 = NULL;
8710 if (var_callsite == NULL) {
8711 var25 = 1; /* is null */
8712 } else {
8713 var25 = 0; /* arg is null but recv is not */
8714 }
8715 if (var25){
8716 goto RET_LABEL;
8717 } else {
8718 }
8719 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__callsite_61d]))(self, var_callsite) /* callsite= on <self:ASendReassignFormExpr>*/;
8720 var26 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendReassignFormExpr>*/;
8721 var_args = var26;
8722 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendExpr__raw_arguments_61d]))(self, var_args) /* raw_arguments= on <self:ASendReassignFormExpr>*/;
8723 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)>*/;
8724 var27;
8725 var28 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__msignature]))(var_callsite) /* msignature on <var_callsite:nullable CallSite(CallSite)>*/;
8726 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MSignature__return_mtype]))(var28) /* return_mtype on <var28:MSignature>*/;
8727 var_readtype = var29;
8728 var30 = NULL;
8729 if (var_readtype == NULL) {
8730 var31 = 1; /* is null */
8731 } else {
8732 var31 = 0; /* arg is null but recv is not */
8733 }
8734 if (var31){
8735 if (varonce32) {
8736 var33 = varonce32;
8737 } else {
8738 var34 = "Error: ";
8739 var35 = 7;
8740 var36 = string__NativeString__to_s_with_length(var34, var35);
8741 var33 = var36;
8742 varonce32 = var33;
8743 }
8744 if (varonce37) {
8745 var38 = varonce37;
8746 } else {
8747 var39 = " is not a function";
8748 var40 = 18;
8749 var41 = string__NativeString__to_s_with_length(var39, var40);
8750 var38 = var41;
8751 varonce37 = var38;
8752 }
8753 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
8754 { /* var42 = array_instance Array[Object] */
8755 var43 = 3;
8756 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
8757 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var33;
8758 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_name;
8759 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
8760 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
8761 CHECK_NEW_array__Array(var42);
8762 }
8763 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
8764 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var45) /* error on <var_v:TypeVisitor>*/;
8765 goto RET_LABEL;
8766 } else {
8767 }
8768 if (varonce46) {
8769 var47 = varonce46;
8770 } else {
8771 var48 = "=";
8772 var49 = 1;
8773 var50 = string__NativeString__to_s_with_length(var48, var49);
8774 var47 = var50;
8775 varonce46 = var47;
8776 }
8777 var51 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var47) /* + on <var_name:String>*/;
8778 var52 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASendExpr__n_expr]))(self) /* n_expr on <self:ASendReassignFormExpr>*/;
8779 /* <var52:AExpr> isa ASelfExpr */
8780 cltype54 = type_parser_nodes__ASelfExpr.color;
8781 idtype55 = type_parser_nodes__ASelfExpr.id;
8782 if(cltype54 >= var52->type->table_size) {
8783 var53 = 0;
8784 } else {
8785 var53 = var52->type->type_table[cltype54] == idtype55;
8786 }
8787 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>*/;
8788 var_wcallsite = var56;
8789 var57 = NULL;
8790 if (var_wcallsite == NULL) {
8791 var58 = 1; /* is null */
8792 } else {
8793 var58 = 0; /* arg is null but recv is not */
8794 }
8795 if (var58){
8796 goto RET_LABEL;
8797 } else {
8798 }
8799 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASendReassignFormExpr__write_callsite_61d]))(self, var_wcallsite) /* write_callsite= on <self:ASendReassignFormExpr>*/;
8800 var59 = ((val* (*)(val*))(var_wcallsite->class->vft[COLOR_typing__CallSite__msignature]))(var_wcallsite) /* msignature on <var_wcallsite:nullable CallSite(CallSite)>*/;
8801 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_model__MSignature__mparameters]))(var59) /* mparameters on <var59:MSignature>*/;
8802 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var60) /* last on <var60:Array[MParameter]>*/;
8803 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MParameter__mtype]))(var61) /* mtype on <var61:nullable Object(MParameter)>*/;
8804 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>*/;
8805 var_wtype = var63;
8806 var64 = NULL;
8807 if (var_wtype == NULL) {
8808 var65 = 1; /* is null */
8809 } else {
8810 var65 = 0; /* arg is null but recv is not */
8811 }
8812 if (var65){
8813 goto RET_LABEL;
8814 } else {
8815 }
8816 var66 = ((val* (*)(val*))(var_args->class->vft[COLOR_array__Collection__to_a]))(var_args) /* to_a on <var_args:Array[AExpr]>*/;
8817 var_args = var66;
8818 var67 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AReassignFormExpr__n_value]))(self) /* n_value on <self:ASendReassignFormExpr>*/;
8819 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var67) /* add on <var_args:Array[AExpr]>*/;
8820 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)>*/;
8821 var68;
8822 var69 = 1;
8823 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var69) /* is_typed= on <self:ASendReassignFormExpr>*/;
8824 RET_LABEL:;
8825 }
8826 /* method typing#ASendReassignFormExpr#accept_typing for (self: Object, TypeVisitor) */
8827 void VIRTUAL_typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
8828 typing__ASendReassignFormExpr__accept_typing(self, p0);
8829 RET_LABEL:;
8830 }
8831 /* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */
8832 val* typing__ACallReassignExpr__property_name(val* self) {
8833 val* var /* : String */;
8834 val* var1 /* : TId */;
8835 val* var2 /* : String */;
8836 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(self) /* n_id on <self:ACallReassignExpr>*/;
8837 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TId>*/;
8838 var = var2;
8839 goto RET_LABEL;
8840 RET_LABEL:;
8841 return var;
8842 }
8843 /* method typing#ACallReassignExpr#property_name for (self: Object): String */
8844 val* VIRTUAL_typing__ACallReassignExpr__property_name(val* self) {
8845 val* var /* : String */;
8846 val* var1 /* : String */;
8847 var1 = typing__ACallReassignExpr__property_name(self);
8848 var = var1;
8849 RET_LABEL:;
8850 return var;
8851 }
8852 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */
8853 val* typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8854 val* var /* : Array[AExpr] */;
8855 val* var1 /* : AExprs */;
8856 val* var2 /* : Array[AExpr] */;
8857 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(self) /* n_args on <self:ACallReassignExpr>*/;
8858 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8859 var = var2;
8860 goto RET_LABEL;
8861 RET_LABEL:;
8862 return var;
8863 }
8864 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8865 val* VIRTUAL_typing__ACallReassignExpr__compute_raw_arguments(val* self) {
8866 val* var /* : Array[AExpr] */;
8867 val* var1 /* : Array[AExpr] */;
8868 var1 = typing__ACallReassignExpr__compute_raw_arguments(self);
8869 var = var1;
8870 RET_LABEL:;
8871 return var;
8872 }
8873 /* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */
8874 val* typing__ABraReassignExpr__property_name(val* self) {
8875 val* var /* : String */;
8876 static val* varonce;
8877 val* var1 /* : String */;
8878 char* var2 /* : NativeString */;
8879 long var3 /* : Int */;
8880 val* var4 /* : String */;
8881 if (varonce) {
8882 var1 = varonce;
8883 } else {
8884 var2 = "[]";
8885 var3 = 2;
8886 var4 = string__NativeString__to_s_with_length(var2, var3);
8887 var1 = var4;
8888 varonce = var1;
8889 }
8890 var = var1;
8891 goto RET_LABEL;
8892 RET_LABEL:;
8893 return var;
8894 }
8895 /* method typing#ABraReassignExpr#property_name for (self: Object): String */
8896 val* VIRTUAL_typing__ABraReassignExpr__property_name(val* self) {
8897 val* var /* : String */;
8898 val* var1 /* : String */;
8899 var1 = typing__ABraReassignExpr__property_name(self);
8900 var = var1;
8901 RET_LABEL:;
8902 return var;
8903 }
8904 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */
8905 val* typing__ABraReassignExpr__compute_raw_arguments(val* self) {
8906 val* var /* : Array[AExpr] */;
8907 val* var1 /* : AExprs */;
8908 val* var2 /* : Array[AExpr] */;
8909 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ABraFormExpr__n_args]))(self) /* n_args on <self:ABraReassignExpr>*/;
8910 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8911 var = var2;
8912 goto RET_LABEL;
8913 RET_LABEL:;
8914 return var;
8915 }
8916 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8917 val* VIRTUAL_typing__ABraReassignExpr__compute_raw_arguments(val* self) {
8918 val* var /* : Array[AExpr] */;
8919 val* var1 /* : Array[AExpr] */;
8920 var1 = typing__ABraReassignExpr__compute_raw_arguments(self);
8921 var = var1;
8922 RET_LABEL:;
8923 return var;
8924 }
8925 /* method typing#AInitExpr#property_name for (self: AInitExpr): String */
8926 val* typing__AInitExpr__property_name(val* self) {
8927 val* var /* : String */;
8928 static val* varonce;
8929 val* var1 /* : String */;
8930 char* var2 /* : NativeString */;
8931 long var3 /* : Int */;
8932 val* var4 /* : String */;
8933 if (varonce) {
8934 var1 = varonce;
8935 } else {
8936 var2 = "init";
8937 var3 = 4;
8938 var4 = string__NativeString__to_s_with_length(var2, var3);
8939 var1 = var4;
8940 varonce = var1;
8941 }
8942 var = var1;
8943 goto RET_LABEL;
8944 RET_LABEL:;
8945 return var;
8946 }
8947 /* method typing#AInitExpr#property_name for (self: Object): String */
8948 val* VIRTUAL_typing__AInitExpr__property_name(val* self) {
8949 val* var /* : String */;
8950 val* var1 /* : String */;
8951 var1 = typing__AInitExpr__property_name(self);
8952 var = var1;
8953 RET_LABEL:;
8954 return var;
8955 }
8956 /* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */
8957 val* typing__AInitExpr__compute_raw_arguments(val* self) {
8958 val* var /* : Array[AExpr] */;
8959 val* var1 /* : AExprs */;
8960 val* var2 /* : Array[AExpr] */;
8961 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AInitExpr__n_args]))(self) /* n_args on <self:AInitExpr>*/;
8962 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__AExprs__to_a]))(var1) /* to_a on <var1:AExprs>*/;
8963 var = var2;
8964 goto RET_LABEL;
8965 RET_LABEL:;
8966 return var;
8967 }
8968 /* method typing#AInitExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
8969 val* VIRTUAL_typing__AInitExpr__compute_raw_arguments(val* self) {
8970 val* var /* : Array[AExpr] */;
8971 val* var1 /* : Array[AExpr] */;
8972 var1 = typing__AInitExpr__compute_raw_arguments(self);
8973 var = var1;
8974 RET_LABEL:;
8975 return var;
8976 }
8977 /* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */
8978 val* typing__AExprs__to_a(val* self) {
8979 val* var /* : Array[AExpr] */;
8980 val* var1 /* : ANodes[AExpr] */;
8981 val* var2 /* : Array[nullable Object] */;
8982 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExprs__n_exprs]))(self) /* n_exprs on <self:AExprs>*/;
8983 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:ANodes[AExpr]>*/;
8984 var = var2;
8985 goto RET_LABEL;
8986 RET_LABEL:;
8987 return var;
8988 }
8989 /* method typing#AExprs#to_a for (self: Object): Array[AExpr] */
8990 val* VIRTUAL_typing__AExprs__to_a(val* self) {
8991 val* var /* : Array[AExpr] */;
8992 val* var1 /* : Array[AExpr] */;
8993 var1 = typing__AExprs__to_a(self);
8994 var = var1;
8995 RET_LABEL:;
8996 return var;
8997 }
8998 /* method typing#ASuperExpr#mproperty for (self: ASuperExpr): nullable MMethod */
8999 val* typing__ASuperExpr__mproperty(val* self) {
9000 val* var /* : nullable MMethod */;
9001 val* var1 /* : nullable MMethod */;
9002 var1 = self->attrs[COLOR_typing__ASuperExpr___64dmproperty].val; /* @mproperty on <self:ASuperExpr> */
9003 var = var1;
9004 RET_LABEL:;
9005 return var;
9006 }
9007 /* method typing#ASuperExpr#mproperty for (self: Object): nullable MMethod */
9008 val* VIRTUAL_typing__ASuperExpr__mproperty(val* self) {
9009 val* var /* : nullable MMethod */;
9010 val* var1 /* : nullable MMethod */;
9011 var1 = typing__ASuperExpr__mproperty(self);
9012 var = var1;
9013 RET_LABEL:;
9014 return var;
9015 }
9016 /* method typing#ASuperExpr#mproperty= for (self: ASuperExpr, nullable MMethod) */
9017 void typing__ASuperExpr__mproperty_61d(val* self, val* p0) {
9018 self->attrs[COLOR_typing__ASuperExpr___64dmproperty].val = p0; /* @mproperty on <self:ASuperExpr> */
9019 RET_LABEL:;
9020 }
9021 /* method typing#ASuperExpr#mproperty= for (self: Object, nullable MMethod) */
9022 void VIRTUAL_typing__ASuperExpr__mproperty_61d(val* self, val* p0) {
9023 typing__ASuperExpr__mproperty_61d(self, p0);
9024 RET_LABEL:;
9025 }
9026 /* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */
9027 void typing__ASuperExpr__accept_typing(val* self, val* p0) {
9028 val* var_v /* var v: TypeVisitor */;
9029 val* var /* : AClassdef */;
9030 val* var1 /* : nullable MClassDef */;
9031 val* var2 /* : MClassType */;
9032 val* var_recvtype /* var recvtype: MClassType */;
9033 val* var3 /* : MPropDef */;
9034 val* var4 /* : MProperty */;
9035 val* var_mproperty /* var mproperty: MProperty */;
9036 short int var5 /* : Bool */;
9037 int cltype;
9038 int idtype;
9039 short int var6 /* : Bool */;
9040 static val* varonce;
9041 val* var7 /* : String */;
9042 char* var8 /* : NativeString */;
9043 long var9 /* : Int */;
9044 val* var10 /* : String */;
9045 val* var11 /* : MModule */;
9046 val* var12 /* : Array[MPropDef] */;
9047 val* var_superprops /* var superprops: Array[MPropDef] */;
9048 long var13 /* : Int */;
9049 long var14 /* : Int */;
9050 short int var15 /* : Bool */;
9051 short int var17 /* : Bool */;
9052 short int var18 /* : Bool */;
9053 short int var19 /* : Bool */;
9054 short int var_ /* var : Bool */;
9055 val* var20 /* : MPropDef */;
9056 short int var21 /* : Bool */;
9057 static val* varonce22;
9058 val* var23 /* : String */;
9059 char* var24 /* : NativeString */;
9060 long var25 /* : Int */;
9061 val* var26 /* : String */;
9062 static val* varonce27;
9063 val* var28 /* : String */;
9064 char* var29 /* : NativeString */;
9065 long var30 /* : Int */;
9066 val* var31 /* : String */;
9067 val* var32 /* : Array[Object] */;
9068 long var33 /* : Int */;
9069 val* var34 /* : NativeArray[Object] */;
9070 val* var35 /* : String */;
9071 val* var36 /* : nullable Object */;
9072 val* var_superprop /* var superprop: MPropDef */;
9073 short int var37 /* : Bool */;
9074 int cltype38;
9075 int idtype39;
9076 short int var40 /* : Bool */;
9077 val* var41 /* : MSignature */;
9078 val* var_msignature /* var msignature: MSignature */;
9079 val* var42 /* : AExprs */;
9080 val* var43 /* : Array[AExpr] */;
9081 val* var_args /* var args: Array[AExpr] */;
9082 long var44 /* : Int */;
9083 long var45 /* : Int */;
9084 short int var46 /* : Bool */;
9085 short int var48 /* : Bool */;
9086 int cltype49;
9087 int idtype50;
9088 const char* var_class_name;
9089 short int var51 /* : Bool */;
9090 val* var52 /* : String */;
9091 short int var53 /* : Bool */;
9092 val* var54 /* : nullable MType */;
9093 short int var55 /* : Bool */;
9094 val* var56 /* : MPropDef */;
9095 short int var57 /* : Bool */;
9096 var_v = p0;
9097 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9098 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9099 if (var1 == NULL) {
9100 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9101 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1431);
9102 exit(1);
9103 } else {
9104 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9105 }
9106 var_recvtype = var2;
9107 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9108 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9109 var_mproperty = var4;
9110 /* <var_mproperty:MProperty> isa MMethod */
9111 cltype = type_model__MMethod.color;
9112 idtype = type_model__MMethod.id;
9113 if(cltype >= var_mproperty->type->table_size) {
9114 var5 = 0;
9115 } else {
9116 var5 = var_mproperty->type->type_table[cltype] == idtype;
9117 }
9118 var6 = !var5;
9119 if (var6){
9120 if (varonce) {
9121 var7 = varonce;
9122 } else {
9123 var8 = "Error: super only usable in a method";
9124 var9 = 36;
9125 var10 = string__NativeString__to_s_with_length(var8, var9);
9126 var7 = var10;
9127 varonce = var7;
9128 }
9129 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var7) /* error on <var_v:TypeVisitor>*/;
9130 goto RET_LABEL;
9131 } else {
9132 }
9133 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9134 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)>*/;
9135 var_superprops = var12;
9136 var13 = ((long (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__length]))(var_superprops) /* length on <var_superprops:Array[MPropDef]>*/;
9137 var14 = 0;
9138 { /* Inline kernel#Int#== (var13,var14) */
9139 var17 = var13 == var14;
9140 var15 = var17;
9141 goto RET_LABEL16;
9142 RET_LABEL16:(void)0;
9143 }
9144 if (var15){
9145 var19 = ((short int (*)(val*))(var_mproperty->class->vft[COLOR_model__MMethod__is_init]))(var_mproperty) /* is_init on <var_mproperty:MProperty(MMethod)>*/;
9146 var_ = var19;
9147 if (var19){
9148 var20 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9149 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_model__MPropDef__is_intro]))(var20) /* is_intro on <var20:MPropDef>*/;
9150 var18 = var21;
9151 } else {
9152 var18 = var_;
9153 }
9154 if (var18){
9155 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__process_superinit]))(self, var_v) /* process_superinit on <self:ASuperExpr>*/;
9156 goto RET_LABEL;
9157 } else {
9158 }
9159 if (varonce22) {
9160 var23 = varonce22;
9161 } else {
9162 var24 = "Error: No super method to call for ";
9163 var25 = 35;
9164 var26 = string__NativeString__to_s_with_length(var24, var25);
9165 var23 = var26;
9166 varonce22 = var23;
9167 }
9168 if (varonce27) {
9169 var28 = varonce27;
9170 } else {
9171 var29 = ".";
9172 var30 = 1;
9173 var31 = string__NativeString__to_s_with_length(var29, var30);
9174 var28 = var31;
9175 varonce27 = var28;
9176 }
9177 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9178 { /* var32 = array_instance Array[Object] */
9179 var33 = 3;
9180 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
9181 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
9182 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_mproperty;
9183 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
9184 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
9185 CHECK_NEW_array__Array(var32);
9186 }
9187 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
9188 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var35) /* error on <var_v:TypeVisitor>*/;
9189 goto RET_LABEL;
9190 } else {
9191 }
9192 var36 = ((val* (*)(val*))(var_superprops->class->vft[COLOR_abstract_collection__Collection__first]))(var_superprops) /* first on <var_superprops:Array[MPropDef]>*/;
9193 var_superprop = var36;
9194 /* <var_superprop:MPropDef> isa MMethodDef */
9195 cltype38 = type_model__MMethodDef.color;
9196 idtype39 = type_model__MMethodDef.id;
9197 if(cltype38 >= var_superprop->type->table_size) {
9198 var37 = 0;
9199 } else {
9200 var37 = var_superprop->type->type_table[cltype38] == idtype39;
9201 }
9202 if (!var37) {
9203 fprintf(stderr, "Runtime error: %s", "Assert failed");
9204 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1448);
9205 exit(1);
9206 }
9207 var40 = 1;
9208 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>*/;
9209 var_msignature = var41;
9210 var42 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9211 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_typing__AExprs__to_a]))(var42) /* to_a on <var42:AExprs>*/;
9212 var_args = var43;
9213 var44 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9214 var45 = 0;
9215 { /* Inline kernel#Int#> (var44,var45) */
9216 /* Covariant cast for argument 0 (i) <var45:Int> isa OTHER */
9217 /* <var45:Int> isa OTHER */
9218 var48 = 1; /* easy <var45:Int> isa OTHER*/
9219 if (!var48) {
9220 var_class_name = type_kernel__Int.name;
9221 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
9222 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9223 exit(1);
9224 }
9225 var51 = var44 > var45;
9226 var46 = var51;
9227 goto RET_LABEL47;
9228 RET_LABEL47:(void)0;
9229 }
9230 if (var46){
9231 var52 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty(MMethod)>*/;
9232 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>*/;
9233 var53;
9234 } else {
9235 }
9236 var54 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
9237 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AExpr__mtype_61d]))(self, var54) /* mtype= on <self:ASuperExpr>*/;
9238 var55 = 1;
9239 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var55) /* is_typed= on <self:ASuperExpr>*/;
9240 var56 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9241 var57 = 1;
9242 ((void (*)(val*, short int))(var56->class->vft[COLOR_typing__MPropDef__has_supercall_61d]))(var56, var57) /* has_supercall= on <var56:MPropDef>*/;
9243 RET_LABEL:;
9244 }
9245 /* method typing#ASuperExpr#accept_typing for (self: Object, TypeVisitor) */
9246 void VIRTUAL_typing__ASuperExpr__accept_typing(val* self, val* p0) {
9247 typing__ASuperExpr__accept_typing(self, p0);
9248 RET_LABEL:;
9249 }
9250 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
9251 void typing__ASuperExpr__process_superinit(val* self, val* p0) {
9252 val* var_v /* var v: TypeVisitor */;
9253 val* var /* : AClassdef */;
9254 val* var1 /* : nullable MClassDef */;
9255 val* var2 /* : MClassType */;
9256 val* var_recvtype /* var recvtype: MClassType */;
9257 val* var3 /* : MPropDef */;
9258 val* var4 /* : MProperty */;
9259 val* var_mproperty /* var mproperty: MProperty */;
9260 val* var5 /* : null */;
9261 val* var_superprop /* var superprop: nullable MMethodDef */;
9262 val* var6 /* : AClassdef */;
9263 val* var7 /* : nullable MClassDef */;
9264 val* var8 /* : Array[MClassType] */;
9265 val* var9 /* : Iterator[nullable Object] */;
9266 short int var10 /* : Bool */;
9267 val* var11 /* : nullable Object */;
9268 val* var_msupertype /* var msupertype: MClassType */;
9269 val* var12 /* : MModule */;
9270 val* var13 /* : MType */;
9271 val* var14 /* : ModelBuilder */;
9272 val* var15 /* : ToolContext */;
9273 long var16 /* : Int */;
9274 long var_errcount /* var errcount: Int */;
9275 val* var17 /* : String */;
9276 val* var18 /* : nullable MProperty */;
9277 short int var19 /* : Bool */;
9278 int cltype;
9279 int idtype;
9280 const char* var_class_name;
9281 val* var_candidate /* var candidate: nullable MMethod */;
9282 val* var20 /* : null */;
9283 short int var21 /* : Bool */;
9284 val* var22 /* : ModelBuilder */;
9285 val* var23 /* : ToolContext */;
9286 long var24 /* : Int */;
9287 short int var25 /* : Bool */;
9288 short int var27 /* : Bool */;
9289 int cltype28;
9290 int idtype29;
9291 const char* var_class_name30;
9292 short int var31 /* : Bool */;
9293 short int var32 /* : Bool */;
9294 val* var33 /* : null */;
9295 short int var34 /* : Bool */;
9296 short int var_ /* var : Bool */;
9297 val* var35 /* : MProperty */;
9298 short int var36 /* : Bool */;
9299 static val* varonce;
9300 val* var37 /* : String */;
9301 char* var38 /* : NativeString */;
9302 long var39 /* : Int */;
9303 val* var40 /* : String */;
9304 static val* varonce41;
9305 val* var42 /* : String */;
9306 char* var43 /* : NativeString */;
9307 long var44 /* : Int */;
9308 val* var45 /* : String */;
9309 val* var46 /* : String */;
9310 static val* varonce47;
9311 val* var48 /* : String */;
9312 char* var49 /* : NativeString */;
9313 long var50 /* : Int */;
9314 val* var51 /* : String */;
9315 val* var52 /* : MProperty */;
9316 val* var53 /* : String */;
9317 val* var54 /* : Array[Object] */;
9318 long var55 /* : Int */;
9319 val* var56 /* : NativeArray[Object] */;
9320 val* var57 /* : String */;
9321 val* var58 /* : MModule */;
9322 val* var59 /* : Array[MPropDef] */;
9323 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
9324 val* var60 /* : null */;
9325 short int var61 /* : Bool */;
9326 val* var62 /* : nullable Object */;
9327 short int var63 /* : Bool */;
9328 long var64 /* : Int */;
9329 long var65 /* : Int */;
9330 short int var66 /* : Bool */;
9331 short int var68 /* : Bool */;
9332 int cltype69;
9333 int idtype70;
9334 const char* var_class_name71;
9335 short int var72 /* : Bool */;
9336 static val* varonce73;
9337 val* var74 /* : String */;
9338 char* var75 /* : NativeString */;
9339 long var76 /* : Int */;
9340 val* var77 /* : String */;
9341 static val* varonce78;
9342 val* var79 /* : String */;
9343 char* var80 /* : NativeString */;
9344 long var81 /* : Int */;
9345 val* var82 /* : String */;
9346 static val* varonce83;
9347 val* var84 /* : String */;
9348 char* var85 /* : NativeString */;
9349 long var86 /* : Int */;
9350 val* var87 /* : String */;
9351 static val* varonce88;
9352 val* var89 /* : String */;
9353 char* var90 /* : NativeString */;
9354 long var91 /* : Int */;
9355 val* var92 /* : String */;
9356 val* var93 /* : String */;
9357 val* var94 /* : Array[Object] */;
9358 long var95 /* : Int */;
9359 val* var96 /* : NativeArray[Object] */;
9360 val* var97 /* : String */;
9361 val* var98 /* : nullable Object */;
9362 val* var99 /* : null */;
9363 short int var100 /* : Bool */;
9364 static val* varonce101;
9365 val* var102 /* : String */;
9366 char* var103 /* : NativeString */;
9367 long var104 /* : Int */;
9368 val* var105 /* : String */;
9369 static val* varonce106;
9370 val* var107 /* : String */;
9371 char* var108 /* : NativeString */;
9372 long var109 /* : Int */;
9373 val* var110 /* : String */;
9374 val* var111 /* : Array[Object] */;
9375 long var112 /* : Int */;
9376 val* var113 /* : NativeArray[Object] */;
9377 val* var114 /* : String */;
9378 val* var115 /* : MProperty */;
9379 val* var116 /* : AExprs */;
9380 val* var117 /* : Array[AExpr] */;
9381 val* var_args /* var args: Array[AExpr] */;
9382 short int var118 /* : Bool */;
9383 val* var119 /* : MSignature */;
9384 val* var_msignature /* var msignature: MSignature */;
9385 long var120 /* : Int */;
9386 long var121 /* : Int */;
9387 short int var122 /* : Bool */;
9388 short int var124 /* : Bool */;
9389 int cltype125;
9390 int idtype126;
9391 const char* var_class_name127;
9392 short int var128 /* : Bool */;
9393 val* var129 /* : String */;
9394 short int var130 /* : Bool */;
9395 short int var131 /* : Bool */;
9396 var_v = p0;
9397 var = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9398 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var) /* mclassdef on <var:AClassdef>*/;
9399 if (var1 == NULL) {
9400 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9401 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1462);
9402 exit(1);
9403 } else {
9404 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:nullable MClassDef>*/;
9405 }
9406 var_recvtype = var2;
9407 var3 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mpropdef]))(var_v) /* mpropdef on <var_v:TypeVisitor>*/;
9408 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mproperty]))(var3) /* mproperty on <var3:MPropDef>*/;
9409 var_mproperty = var4;
9410 var5 = NULL;
9411 var_superprop = var5;
9412 var6 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__nclassdef]))(var_v) /* nclassdef on <var_v:TypeVisitor>*/;
9413 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var6) /* mclassdef on <var6:AClassdef>*/;
9414 if (var7 == NULL) {
9415 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9416 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1465);
9417 exit(1);
9418 } else {
9419 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__supertypes]))(var7) /* supertypes on <var7:nullable MClassDef>*/;
9420 }
9421 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Array[MClassType]>*/;
9422 for(;;) {
9423 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
9424 if(!var10) break;
9425 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
9426 var_msupertype = var11;
9427 var12 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9428 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>*/;
9429 var_msupertype = var13;
9430 var14 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
9431 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var14) /* toolcontext on <var14:ModelBuilder>*/;
9432 var16 = ((long (*)(val*))(var15->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var15) /* error_count on <var15:ToolContext>*/;
9433 var_errcount = var16;
9434 var17 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty>*/;
9435 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>*/;
9436 /* <var18:nullable MProperty> isa nullable MMethod */
9437 cltype = type_nullable_model__MMethod.color;
9438 idtype = type_nullable_model__MMethod.id;
9439 if(var18 == NULL) {
9440 var19 = 1;
9441 } else {
9442 if(cltype >= var18->type->table_size) {
9443 var19 = 0;
9444 } else {
9445 var19 = var18->type->type_table[cltype] == idtype;
9446 }
9447 }
9448 if (!var19) {
9449 var_class_name = var18 == NULL ? "null" : var18->type->name;
9450 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
9451 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1468);
9452 exit(1);
9453 }
9454 var_candidate = var18;
9455 var20 = NULL;
9456 if (var_candidate == NULL) {
9457 var21 = 1; /* is null */
9458 } else {
9459 var21 = 0; /* arg is null but recv is not */
9460 }
9461 if (var21){
9462 var22 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__modelbuilder]))(var_v) /* modelbuilder on <var_v:TypeVisitor>*/;
9463 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var22) /* toolcontext on <var22:ModelBuilder>*/;
9464 var24 = ((long (*)(val*))(var23->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var23) /* error_count on <var23:ToolContext>*/;
9465 { /* Inline kernel#Int#> (var24,var_errcount) */
9466 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
9467 /* <var_errcount:Int> isa OTHER */
9468 var27 = 1; /* easy <var_errcount:Int> isa OTHER*/
9469 if (!var27) {
9470 var_class_name30 = type_kernel__Int.name;
9471 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
9472 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9473 exit(1);
9474 }
9475 var31 = var24 > var_errcount;
9476 var25 = var31;
9477 goto RET_LABEL26;
9478 RET_LABEL26:(void)0;
9479 }
9480 if (var25){
9481 goto RET_LABEL;
9482 } else {
9483 }
9484 goto CONTINUE_label;
9485 } else {
9486 }
9487 var33 = NULL;
9488 if (var_superprop == NULL) {
9489 var34 = 0; /* is null */
9490 } else {
9491 var34 = 1; /* arg is null and recv is not */
9492 }
9493 var_ = var34;
9494 if (var34){
9495 var35 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9496 var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___33d_61d]))(var35, var_candidate) /* != on <var35:MProperty(MMethod)>*/;
9497 var32 = var36;
9498 } else {
9499 var32 = var_;
9500 }
9501 if (var32){
9502 if (varonce) {
9503 var37 = varonce;
9504 } else {
9505 var38 = "Error: conflicting super constructor to call for ";
9506 var39 = 49;
9507 var40 = string__NativeString__to_s_with_length(var38, var39);
9508 var37 = var40;
9509 varonce = var37;
9510 }
9511 if (varonce41) {
9512 var42 = varonce41;
9513 } else {
9514 var43 = ": ";
9515 var44 = 2;
9516 var45 = string__NativeString__to_s_with_length(var43, var44);
9517 var42 = var45;
9518 varonce41 = var42;
9519 }
9520 var46 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__full_name]))(var_candidate) /* full_name on <var_candidate:nullable MMethod(MMethod)>*/;
9521 if (varonce47) {
9522 var48 = varonce47;
9523 } else {
9524 var49 = ", ";
9525 var50 = 2;
9526 var51 = string__NativeString__to_s_with_length(var49, var50);
9527 var48 = var51;
9528 varonce47 = var48;
9529 }
9530 var52 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9531 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MProperty__full_name]))(var52) /* full_name on <var52:MProperty(MMethod)>*/;
9532 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
9533 { /* var54 = array_instance Array[Object] */
9534 var55 = 6;
9535 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
9536 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var37;
9537 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var_mproperty;
9538 ((struct instance_array__NativeArray*)var56)->values[2] = (val*) var42;
9539 ((struct instance_array__NativeArray*)var56)->values[3] = (val*) var46;
9540 ((struct instance_array__NativeArray*)var56)->values[4] = (val*) var48;
9541 ((struct instance_array__NativeArray*)var56)->values[5] = (val*) var53;
9542 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
9543 CHECK_NEW_array__Array(var54);
9544 }
9545 var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
9546 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var57) /* error on <var_v:TypeVisitor>*/;
9547 goto RET_LABEL;
9548 } else {
9549 }
9550 var58 = ((val* (*)(val*))(var_v->class->vft[COLOR_typing__TypeVisitor__mmodule]))(var_v) /* mmodule on <var_v:TypeVisitor>*/;
9551 var59 = ((val* (*)(val*, val*, val*))(var_candidate->class->vft[COLOR_model__MProperty__lookup_definitions]))(var_candidate, var58, var_recvtype) /* lookup_definitions on <var_candidate:nullable MMethod(MMethod)>*/;
9552 var_candidatedefs = var59;
9553 var60 = NULL;
9554 if (var_superprop == NULL) {
9555 var61 = 0; /* is null */
9556 } else {
9557 var61 = 1; /* arg is null and recv is not */
9558 }
9559 if (var61){
9560 var62 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
9561 var63 = ((short int (*)(val*, val*))(var_superprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_superprop, var62) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9562 if (var63){
9563 goto CONTINUE_label;
9564 } else {
9565 }
9566 ((void (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidatedefs, var_superprop) /* add on <var_candidatedefs:Array[MMethodDef]>*/;
9567 } else {
9568 }
9569 var64 = ((long (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidatedefs) /* length on <var_candidatedefs:Array[MMethodDef]>*/;
9570 var65 = 1;
9571 { /* Inline kernel#Int#> (var64,var65) */
9572 /* Covariant cast for argument 0 (i) <var65:Int> isa OTHER */
9573 /* <var65:Int> isa OTHER */
9574 var68 = 1; /* easy <var65:Int> isa OTHER*/
9575 if (!var68) {
9576 var_class_name71 = type_kernel__Int.name;
9577 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name71);
9578 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9579 exit(1);
9580 }
9581 var72 = var64 > var65;
9582 var66 = var72;
9583 goto RET_LABEL67;
9584 RET_LABEL67:(void)0;
9585 }
9586 if (var66){
9587 if (varonce73) {
9588 var74 = varonce73;
9589 } else {
9590 var75 = "Error: confliting property definitions for property ";
9591 var76 = 52;
9592 var77 = string__NativeString__to_s_with_length(var75, var76);
9593 var74 = var77;
9594 varonce73 = var74;
9595 }
9596 if (varonce78) {
9597 var79 = varonce78;
9598 } else {
9599 var80 = " in ";
9600 var81 = 4;
9601 var82 = string__NativeString__to_s_with_length(var80, var81);
9602 var79 = var82;
9603 varonce78 = var79;
9604 }
9605 if (varonce83) {
9606 var84 = varonce83;
9607 } else {
9608 var85 = ": ";
9609 var86 = 2;
9610 var87 = string__NativeString__to_s_with_length(var85, var86);
9611 var84 = var87;
9612 varonce83 = var84;
9613 }
9614 if (varonce88) {
9615 var89 = varonce88;
9616 } else {
9617 var90 = ", ";
9618 var91 = 2;
9619 var92 = string__NativeString__to_s_with_length(var90, var91);
9620 var89 = var92;
9621 varonce88 = var89;
9622 }
9623 var93 = ((val* (*)(val*, val*))(var_candidatedefs->class->vft[COLOR_string__Collection__join]))(var_candidatedefs, var89) /* join on <var_candidatedefs:Array[MMethodDef]>*/;
9624 var94 = NEW_array__Array(&type_array__Arraykernel__Object);
9625 { /* var94 = array_instance Array[Object] */
9626 var95 = 6;
9627 var96 = NEW_array__NativeArray(var95, &type_array__NativeArraykernel__Object);
9628 ((struct instance_array__NativeArray*)var96)->values[0] = (val*) var74;
9629 ((struct instance_array__NativeArray*)var96)->values[1] = (val*) var_mproperty;
9630 ((struct instance_array__NativeArray*)var96)->values[2] = (val*) var79;
9631 ((struct instance_array__NativeArray*)var96)->values[3] = (val*) var_recvtype;
9632 ((struct instance_array__NativeArray*)var96)->values[4] = (val*) var84;
9633 ((struct instance_array__NativeArray*)var96)->values[5] = (val*) var93;
9634 ((void (*)(val*, val*, long))(var94->class->vft[COLOR_array__Array__with_native]))(var94, var96, var95) /* with_native on <var94:Array[Object]>*/;
9635 CHECK_NEW_array__Array(var94);
9636 }
9637 var97 = ((val* (*)(val*))(var94->class->vft[COLOR_string__Object__to_s]))(var94) /* to_s on <var94:Array[Object]>*/;
9638 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var97) /* error on <var_v:TypeVisitor>*/;
9639 goto RET_LABEL;
9640 } else {
9641 }
9642 var98 = ((val* (*)(val*))(var_candidatedefs->class->vft[COLOR_abstract_collection__Collection__first]))(var_candidatedefs) /* first on <var_candidatedefs:Array[MMethodDef]>*/;
9643 var_superprop = var98;
9644 CONTINUE_label: (void)0;
9645 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
9646 }
9647 BREAK_label: (void)0;
9648 var99 = NULL;
9649 if (var_superprop == NULL) {
9650 var100 = 1; /* is null */
9651 } else {
9652 var100 = 0; /* arg is null but recv is not */
9653 }
9654 if (var100){
9655 if (varonce101) {
9656 var102 = varonce101;
9657 } else {
9658 var103 = "Error: No super method to call for ";
9659 var104 = 35;
9660 var105 = string__NativeString__to_s_with_length(var103, var104);
9661 var102 = var105;
9662 varonce101 = var102;
9663 }
9664 if (varonce106) {
9665 var107 = varonce106;
9666 } else {
9667 var108 = ".";
9668 var109 = 1;
9669 var110 = string__NativeString__to_s_with_length(var108, var109);
9670 var107 = var110;
9671 varonce106 = var107;
9672 }
9673 var111 = NEW_array__Array(&type_array__Arraykernel__Object);
9674 { /* var111 = array_instance Array[Object] */
9675 var112 = 3;
9676 var113 = NEW_array__NativeArray(var112, &type_array__NativeArraykernel__Object);
9677 ((struct instance_array__NativeArray*)var113)->values[0] = (val*) var102;
9678 ((struct instance_array__NativeArray*)var113)->values[1] = (val*) var_mproperty;
9679 ((struct instance_array__NativeArray*)var113)->values[2] = (val*) var107;
9680 ((void (*)(val*, val*, long))(var111->class->vft[COLOR_array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
9681 CHECK_NEW_array__Array(var111);
9682 }
9683 var114 = ((val* (*)(val*))(var111->class->vft[COLOR_string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
9684 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__error]))(var_v, self, var114) /* error on <var_v:TypeVisitor>*/;
9685 goto RET_LABEL;
9686 } else {
9687 }
9688 var115 = ((val* (*)(val*))(var_superprop->class->vft[COLOR_model__MPropDef__mproperty]))(var_superprop) /* mproperty on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
9689 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ASuperExpr__mproperty_61d]))(self, var115) /* mproperty= on <self:ASuperExpr>*/;
9690 var116 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASuperExpr__n_args]))(self) /* n_args on <self:ASuperExpr>*/;
9691 var117 = ((val* (*)(val*))(var116->class->vft[COLOR_typing__AExprs__to_a]))(var116) /* to_a on <var116:AExprs>*/;
9692 var_args = var117;
9693 var118 = 1;
9694 var119 = ((val* (*)(val*, val*, val*, short int))(var_v->class->vft[COLOR_typing__TypeVisitor__resolve_signature_for]))(var_v, var_superprop, var_recvtype, var118) /* resolve_signature_for on <var_v:TypeVisitor>*/;
9695 var_msignature = var119;
9696 var120 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[AExpr]>*/;
9697 var121 = 0;
9698 { /* Inline kernel#Int#> (var120,var121) */
9699 /* Covariant cast for argument 0 (i) <var121:Int> isa OTHER */
9700 /* <var121:Int> isa OTHER */
9701 var124 = 1; /* easy <var121:Int> isa OTHER*/
9702 if (!var124) {
9703 var_class_name127 = type_kernel__Int.name;
9704 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name127);
9705 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
9706 exit(1);
9707 }
9708 var128 = var120 > var121;
9709 var122 = var128;
9710 goto RET_LABEL123;
9711 RET_LABEL123:(void)0;
9712 }
9713 if (var122){
9714 var129 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__name]))(var_mproperty) /* name on <var_mproperty:MProperty>*/;
9715 var130 = ((short int (*)(val*, val*, val*, val*, val*))(var_v->class->vft[COLOR_typing__TypeVisitor__check_signature]))(var_v, self, var_args, var129, var_msignature) /* check_signature on <var_v:TypeVisitor>*/;
9716 var130;
9717 } else {
9718 }
9719 var131 = 1;
9720 ((void (*)(val*, short int))(self->class->vft[COLOR_typing__AExpr__is_typed_61d]))(self, var131) /* is_typed= on <self:ASuperExpr>*/;
9721 RET_LABEL:;
9722 }
9723 /* method typing#ASuperExpr#process_superinit for (self: Object, TypeVisitor) */
9724 void VIRTUAL_typing__ASuperExpr__process_superinit(val* self, val* p0) {
9725 typing__ASuperExpr__process_superinit(self, p0);
9726 RET_LABEL:;
9727 }
9728 /* method typing#ANewExpr#mproperty for (self: ANewExpr): nullable MMethod */
9729 val* typing__ANewExpr__mproperty(val* self) {
9730 val* var /* : nullable MMethod */;
9731 val* var1 /* : nullable CallSite */;
9732 val* var2 /* : MMethod */;
9733 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ANewExpr__callsite]))(self) /* callsite on <self:ANewExpr>*/;
9734 if (var1 == NULL) {
9735 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9736 fprintf(stderr, " (%s:%d)\n", "src/typing.nit", 1510);
9737 exit(1);
9738 } else {
9739 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_typing__CallSite__mproperty]))(var1) /* mproperty on <var1:nullable CallSite>*/;
9740 }
9741 var = var2;
9742 goto RET_LABEL;
9743 RET_LABEL:;
9744 return var;
9745 }
9746 /* method typing#ANewExpr#mproperty for (self: Object): nullable MMethod */
9747 val* VIRTUAL_typing__ANewExpr__mproperty(val* self) {
9748 val* var /* : nullable MMethod */;
9749 val* var1 /* : nullable MMethod */;
9750 var1 = typing__ANewExpr__mproperty(self);
9751 var = var1;
9752 RET_LABEL:;
9753 return var;
9754 }
9755 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
9756 val* typing__ANewExpr__callsite(val* self) {
9757 val* var /* : nullable CallSite */;
9758 val* var1 /* : nullable CallSite */;
9759 var1 = self->attrs[COLOR_typing__ANewExpr___64dcallsite].val; /* @callsite on <self:ANewExpr> */
9760 var = var1;
9761 RET_LABEL:;
9762 return var;
9763 }
9764 /* method typing#ANewExpr#callsite for (self: Object): nullable CallSite */
9765 val* VIRTUAL_typing__ANewExpr__callsite(val* self) {
9766 val* var /* : nullable CallSite */;
9767 val* var1 /* : nullable CallSite */;
9768 var1 = typing__ANewExpr__callsite(self);
9769 var = var1;
9770 RET_LABEL:;
9771 return var;
9772 }
9773 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
9774 void typing__ANewExpr__callsite_61d(val* self, val* p0) {
9775 self->attrs[COLOR_typing__ANewExpr___64dcallsite].val = p0; /* @callsite on <self:ANewExpr> */
9776 RET_LABEL:;
9777 }
9778 /* method typing#ANewExpr#callsite= for (self: Object, nullable CallSite) */
9779 void VIRTUAL_typing__ANewExpr__callsite_61d(val* self, val* p0) {
9780 typing__ANewExpr__callsite_61d(self, p0);
9781 RET_LABEL:;
9782 }