jwrapper: accept interfaces
[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___typing_phase].val; /* _typing_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _typing_phase");
9 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 25);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method typing#ToolContext#typing_phase for (self: Object): Phase */
17 val* VIRTUAL_typing__ToolContext__typing_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 val* var3 /* : Phase */;
21 { /* Inline typing#ToolContext#typing_phase (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_typing__ToolContext___typing_phase].val; /* _typing_phase on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _typing_phase");
25 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 25);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method typing#TypingPhase#process_npropdef for (self: TypingPhase, APropdef) */
36 void typing__TypingPhase__process_npropdef(val* self, val* p0) {
37 val* var_npropdef /* var npropdef: APropdef */;
38 val* var /* : ToolContext */;
39 val* var2 /* : ToolContext */;
40 val* var3 /* : ModelBuilder */;
41 var_npropdef = p0;
42 {
43 { /* Inline phase#Phase#toolcontext (self) on <self:TypingPhase> */
44 var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:TypingPhase> */
45 if (unlikely(var2 == NULL)) {
46 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
47 PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162);
48 show_backtrace(1);
49 }
50 var = var2;
51 RET_LABEL1:(void)0;
52 }
53 }
54 {
55 var3 = modelbuilder__ToolContext__modelbuilder(var);
56 }
57 {
58 ((void (*)(val*, val*))(var_npropdef->class->vft[COLOR_typing__APropdef__do_typing]))(var_npropdef, var3) /* do_typing on <var_npropdef:APropdef>*/;
59 }
60 RET_LABEL:;
61 }
62 /* method typing#TypingPhase#process_npropdef for (self: Object, APropdef) */
63 void VIRTUAL_typing__TypingPhase__process_npropdef(val* self, val* p0) {
64 typing__TypingPhase__process_npropdef(self, p0); /* Direct call typing#TypingPhase#process_npropdef on <self:Object(TypingPhase)>*/
65 RET_LABEL:;
66 }
67 /* method typing#TypeVisitor#modelbuilder for (self: TypeVisitor): ModelBuilder */
68 val* typing__TypeVisitor__modelbuilder(val* self) {
69 val* var /* : ModelBuilder */;
70 val* var1 /* : ModelBuilder */;
71 var1 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
72 if (unlikely(var1 == NULL)) {
73 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
74 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
75 show_backtrace(1);
76 }
77 var = var1;
78 RET_LABEL:;
79 return var;
80 }
81 /* method typing#TypeVisitor#modelbuilder for (self: Object): ModelBuilder */
82 val* VIRTUAL_typing__TypeVisitor__modelbuilder(val* self) {
83 val* var /* : ModelBuilder */;
84 val* var1 /* : ModelBuilder */;
85 val* var3 /* : ModelBuilder */;
86 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:Object(TypeVisitor)> */
87 var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:Object(TypeVisitor)> */
88 if (unlikely(var3 == NULL)) {
89 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
90 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
91 show_backtrace(1);
92 }
93 var1 = var3;
94 RET_LABEL2:(void)0;
95 }
96 var = var1;
97 RET_LABEL:;
98 return var;
99 }
100 /* method typing#TypeVisitor#modelbuilder= for (self: TypeVisitor, ModelBuilder) */
101 void typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
102 self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val = p0; /* _modelbuilder on <self:TypeVisitor> */
103 RET_LABEL:;
104 }
105 /* method typing#TypeVisitor#modelbuilder= for (self: Object, ModelBuilder) */
106 void VIRTUAL_typing__TypeVisitor__modelbuilder_61d(val* self, val* p0) {
107 { /* Inline typing#TypeVisitor#modelbuilder= (self,p0) on <self:Object(TypeVisitor)> */
108 self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val = p0; /* _modelbuilder on <self:Object(TypeVisitor)> */
109 RET_LABEL1:(void)0;
110 }
111 RET_LABEL:;
112 }
113 /* method typing#TypeVisitor#mmodule for (self: TypeVisitor): MModule */
114 val* typing__TypeVisitor__mmodule(val* self) {
115 val* var /* : MModule */;
116 val* var1 /* : MModule */;
117 var1 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
118 if (unlikely(var1 == NULL)) {
119 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
120 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
121 show_backtrace(1);
122 }
123 var = var1;
124 RET_LABEL:;
125 return var;
126 }
127 /* method typing#TypeVisitor#mmodule for (self: Object): MModule */
128 val* VIRTUAL_typing__TypeVisitor__mmodule(val* self) {
129 val* var /* : MModule */;
130 val* var1 /* : MModule */;
131 val* var3 /* : MModule */;
132 { /* Inline typing#TypeVisitor#mmodule (self) on <self:Object(TypeVisitor)> */
133 var3 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:Object(TypeVisitor)> */
134 if (unlikely(var3 == NULL)) {
135 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
136 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
137 show_backtrace(1);
138 }
139 var1 = var3;
140 RET_LABEL2:(void)0;
141 }
142 var = var1;
143 RET_LABEL:;
144 return var;
145 }
146 /* method typing#TypeVisitor#mmodule= for (self: TypeVisitor, MModule) */
147 void typing__TypeVisitor__mmodule_61d(val* self, val* p0) {
148 self->attrs[COLOR_typing__TypeVisitor___mmodule].val = p0; /* _mmodule on <self:TypeVisitor> */
149 RET_LABEL:;
150 }
151 /* method typing#TypeVisitor#mmodule= for (self: Object, MModule) */
152 void VIRTUAL_typing__TypeVisitor__mmodule_61d(val* self, val* p0) {
153 { /* Inline typing#TypeVisitor#mmodule= (self,p0) on <self:Object(TypeVisitor)> */
154 self->attrs[COLOR_typing__TypeVisitor___mmodule].val = p0; /* _mmodule on <self:Object(TypeVisitor)> */
155 RET_LABEL1:(void)0;
156 }
157 RET_LABEL:;
158 }
159 /* method typing#TypeVisitor#anchor for (self: TypeVisitor): nullable MClassType */
160 val* typing__TypeVisitor__anchor(val* self) {
161 val* var /* : nullable MClassType */;
162 val* var1 /* : nullable MClassType */;
163 var1 = self->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
164 var = var1;
165 RET_LABEL:;
166 return var;
167 }
168 /* method typing#TypeVisitor#anchor for (self: Object): nullable MClassType */
169 val* VIRTUAL_typing__TypeVisitor__anchor(val* self) {
170 val* var /* : nullable MClassType */;
171 val* var1 /* : nullable MClassType */;
172 val* var3 /* : nullable MClassType */;
173 { /* Inline typing#TypeVisitor#anchor (self) on <self:Object(TypeVisitor)> */
174 var3 = self->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <self:Object(TypeVisitor)> */
175 var1 = var3;
176 RET_LABEL2:(void)0;
177 }
178 var = var1;
179 RET_LABEL:;
180 return var;
181 }
182 /* method typing#TypeVisitor#anchor= for (self: TypeVisitor, nullable MClassType) */
183 void typing__TypeVisitor__anchor_61d(val* self, val* p0) {
184 self->attrs[COLOR_typing__TypeVisitor___anchor].val = p0; /* _anchor on <self:TypeVisitor> */
185 RET_LABEL:;
186 }
187 /* method typing#TypeVisitor#anchor= for (self: Object, nullable MClassType) */
188 void VIRTUAL_typing__TypeVisitor__anchor_61d(val* self, val* p0) {
189 { /* Inline typing#TypeVisitor#anchor= (self,p0) on <self:Object(TypeVisitor)> */
190 self->attrs[COLOR_typing__TypeVisitor___anchor].val = p0; /* _anchor on <self:Object(TypeVisitor)> */
191 RET_LABEL1:(void)0;
192 }
193 RET_LABEL:;
194 }
195 /* method typing#TypeVisitor#mclassdef for (self: TypeVisitor): nullable MClassDef */
196 val* typing__TypeVisitor__mclassdef(val* self) {
197 val* var /* : nullable MClassDef */;
198 val* var1 /* : nullable MClassDef */;
199 var1 = self->attrs[COLOR_typing__TypeVisitor___mclassdef].val; /* _mclassdef on <self:TypeVisitor> */
200 var = var1;
201 RET_LABEL:;
202 return var;
203 }
204 /* method typing#TypeVisitor#mclassdef for (self: Object): nullable MClassDef */
205 val* VIRTUAL_typing__TypeVisitor__mclassdef(val* self) {
206 val* var /* : nullable MClassDef */;
207 val* var1 /* : nullable MClassDef */;
208 val* var3 /* : nullable MClassDef */;
209 { /* Inline typing#TypeVisitor#mclassdef (self) on <self:Object(TypeVisitor)> */
210 var3 = self->attrs[COLOR_typing__TypeVisitor___mclassdef].val; /* _mclassdef on <self:Object(TypeVisitor)> */
211 var1 = var3;
212 RET_LABEL2:(void)0;
213 }
214 var = var1;
215 RET_LABEL:;
216 return var;
217 }
218 /* method typing#TypeVisitor#mclassdef= for (self: TypeVisitor, nullable MClassDef) */
219 void typing__TypeVisitor__mclassdef_61d(val* self, val* p0) {
220 self->attrs[COLOR_typing__TypeVisitor___mclassdef].val = p0; /* _mclassdef on <self:TypeVisitor> */
221 RET_LABEL:;
222 }
223 /* method typing#TypeVisitor#mclassdef= for (self: Object, nullable MClassDef) */
224 void VIRTUAL_typing__TypeVisitor__mclassdef_61d(val* self, val* p0) {
225 { /* Inline typing#TypeVisitor#mclassdef= (self,p0) on <self:Object(TypeVisitor)> */
226 self->attrs[COLOR_typing__TypeVisitor___mclassdef].val = p0; /* _mclassdef on <self:Object(TypeVisitor)> */
227 RET_LABEL1:(void)0;
228 }
229 RET_LABEL:;
230 }
231 /* method typing#TypeVisitor#mpropdef for (self: TypeVisitor): nullable MPropDef */
232 val* typing__TypeVisitor__mpropdef(val* self) {
233 val* var /* : nullable MPropDef */;
234 val* var1 /* : nullable MPropDef */;
235 var1 = self->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <self:TypeVisitor> */
236 var = var1;
237 RET_LABEL:;
238 return var;
239 }
240 /* method typing#TypeVisitor#mpropdef for (self: Object): nullable MPropDef */
241 val* VIRTUAL_typing__TypeVisitor__mpropdef(val* self) {
242 val* var /* : nullable MPropDef */;
243 val* var1 /* : nullable MPropDef */;
244 val* var3 /* : nullable MPropDef */;
245 { /* Inline typing#TypeVisitor#mpropdef (self) on <self:Object(TypeVisitor)> */
246 var3 = self->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <self:Object(TypeVisitor)> */
247 var1 = var3;
248 RET_LABEL2:(void)0;
249 }
250 var = var1;
251 RET_LABEL:;
252 return var;
253 }
254 /* method typing#TypeVisitor#mpropdef= for (self: TypeVisitor, nullable MPropDef) */
255 void typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
256 self->attrs[COLOR_typing__TypeVisitor___mpropdef].val = p0; /* _mpropdef on <self:TypeVisitor> */
257 RET_LABEL:;
258 }
259 /* method typing#TypeVisitor#mpropdef= for (self: Object, nullable MPropDef) */
260 void VIRTUAL_typing__TypeVisitor__mpropdef_61d(val* self, val* p0) {
261 { /* Inline typing#TypeVisitor#mpropdef= (self,p0) on <self:Object(TypeVisitor)> */
262 self->attrs[COLOR_typing__TypeVisitor___mpropdef].val = p0; /* _mpropdef on <self:Object(TypeVisitor)> */
263 RET_LABEL1:(void)0;
264 }
265 RET_LABEL:;
266 }
267 /* method typing#TypeVisitor#selfvariable for (self: TypeVisitor): Variable */
268 val* typing__TypeVisitor__selfvariable(val* self) {
269 val* var /* : Variable */;
270 val* var1 /* : Variable */;
271 var1 = self->attrs[COLOR_typing__TypeVisitor___selfvariable].val; /* _selfvariable on <self:TypeVisitor> */
272 if (unlikely(var1 == NULL)) {
273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
274 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 50);
275 show_backtrace(1);
276 }
277 var = var1;
278 RET_LABEL:;
279 return var;
280 }
281 /* method typing#TypeVisitor#selfvariable for (self: Object): Variable */
282 val* VIRTUAL_typing__TypeVisitor__selfvariable(val* self) {
283 val* var /* : Variable */;
284 val* var1 /* : Variable */;
285 val* var3 /* : Variable */;
286 { /* Inline typing#TypeVisitor#selfvariable (self) on <self:Object(TypeVisitor)> */
287 var3 = self->attrs[COLOR_typing__TypeVisitor___selfvariable].val; /* _selfvariable on <self:Object(TypeVisitor)> */
288 if (unlikely(var3 == NULL)) {
289 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
290 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 50);
291 show_backtrace(1);
292 }
293 var1 = var3;
294 RET_LABEL2:(void)0;
295 }
296 var = var1;
297 RET_LABEL:;
298 return var;
299 }
300 /* method typing#TypeVisitor#selfvariable= for (self: TypeVisitor, Variable) */
301 void typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
302 self->attrs[COLOR_typing__TypeVisitor___selfvariable].val = p0; /* _selfvariable on <self:TypeVisitor> */
303 RET_LABEL:;
304 }
305 /* method typing#TypeVisitor#selfvariable= for (self: Object, Variable) */
306 void VIRTUAL_typing__TypeVisitor__selfvariable_61d(val* self, val* p0) {
307 { /* Inline typing#TypeVisitor#selfvariable= (self,p0) on <self:Object(TypeVisitor)> */
308 self->attrs[COLOR_typing__TypeVisitor___selfvariable].val = p0; /* _selfvariable on <self:Object(TypeVisitor)> */
309 RET_LABEL1:(void)0;
310 }
311 RET_LABEL:;
312 }
313 /* method typing#TypeVisitor#is_toplevel_context for (self: TypeVisitor): Bool */
314 short int typing__TypeVisitor__is_toplevel_context(val* self) {
315 short int var /* : Bool */;
316 short int var1 /* : Bool */;
317 var1 = self->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <self:TypeVisitor> */
318 var = var1;
319 RET_LABEL:;
320 return var;
321 }
322 /* method typing#TypeVisitor#is_toplevel_context for (self: Object): Bool */
323 short int VIRTUAL_typing__TypeVisitor__is_toplevel_context(val* self) {
324 short int var /* : Bool */;
325 short int var1 /* : Bool */;
326 short int var3 /* : Bool */;
327 { /* Inline typing#TypeVisitor#is_toplevel_context (self) on <self:Object(TypeVisitor)> */
328 var3 = self->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <self:Object(TypeVisitor)> */
329 var1 = var3;
330 RET_LABEL2:(void)0;
331 }
332 var = var1;
333 RET_LABEL:;
334 return var;
335 }
336 /* method typing#TypeVisitor#is_toplevel_context= for (self: TypeVisitor, Bool) */
337 void typing__TypeVisitor__is_toplevel_context_61d(val* self, short int p0) {
338 self->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s = p0; /* _is_toplevel_context on <self:TypeVisitor> */
339 RET_LABEL:;
340 }
341 /* method typing#TypeVisitor#is_toplevel_context= for (self: Object, Bool) */
342 void VIRTUAL_typing__TypeVisitor__is_toplevel_context_61d(val* self, short int p0) {
343 { /* Inline typing#TypeVisitor#is_toplevel_context= (self,p0) on <self:Object(TypeVisitor)> */
344 self->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s = p0; /* _is_toplevel_context on <self:Object(TypeVisitor)> */
345 RET_LABEL1:(void)0;
346 }
347 RET_LABEL:;
348 }
349 /* method typing#TypeVisitor#init for (self: TypeVisitor, ModelBuilder, MModule, nullable MPropDef) */
350 void typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
351 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
352 val* var_mmodule /* var mmodule: MModule */;
353 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
354 val* var /* : null */;
355 short int var3 /* : Bool */;
356 short int var4 /* : Bool */;
357 val* var_other /* var other: nullable Object */;
358 short int var6 /* : Bool */;
359 short int var7 /* : Bool */;
360 short int var8 /* : Bool */;
361 val* var10 /* : MClassDef */;
362 val* var12 /* : MClassDef */;
363 val* var_mclassdef /* var mclassdef: MClassDef */;
364 val* var14 /* : MClassType */;
365 val* var16 /* : MClassType */;
366 val* var18 /* : MClass */;
367 val* var20 /* : MClass */;
368 val* var_mclass /* var mclass: MClass */;
369 val* var21 /* : Variable */;
370 static val* varonce;
371 val* var22 /* : String */;
372 char* var23 /* : NativeString */;
373 long var24 /* : Int */;
374 val* var25 /* : FlatString */;
375 val* var_selfvariable /* var selfvariable: Variable */;
376 val* var27 /* : MClassType */;
377 val* var29 /* : MClassType */;
378 val* var31 /* : MProperty */;
379 val* var33 /* : MProperty */;
380 val* var_mprop /* var mprop: MProperty */;
381 short int var34 /* : Bool */;
382 short int var35 /* : Bool */;
383 int cltype;
384 int idtype;
385 short int var_ /* var : Bool */;
386 short int var36 /* : Bool */;
387 short int var37 /* : Bool */;
388 short int var39 /* : Bool */;
389 short int var_40 /* var : Bool */;
390 short int var41 /* : Bool */;
391 short int var43 /* : Bool */;
392 short int var44 /* : Bool */;
393 var_modelbuilder = p0;
394 var_mmodule = p1;
395 var_mpropdef = p2;
396 {
397 { /* Inline typing#TypeVisitor#modelbuilder= (self,var_modelbuilder) on <self:TypeVisitor> */
398 self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val = var_modelbuilder; /* _modelbuilder on <self:TypeVisitor> */
399 RET_LABEL1:(void)0;
400 }
401 }
402 {
403 { /* Inline typing#TypeVisitor#mmodule= (self,var_mmodule) on <self:TypeVisitor> */
404 self->attrs[COLOR_typing__TypeVisitor___mmodule].val = var_mmodule; /* _mmodule on <self:TypeVisitor> */
405 RET_LABEL2:(void)0;
406 }
407 }
408 var = NULL;
409 if (var_mpropdef == NULL) {
410 var3 = 0; /* is null */
411 } else {
412 var3 = 1; /* arg is null and recv is not */
413 }
414 if (0) {
415 { /* Inline kernel#Object#!= (var_mpropdef,var) on <var_mpropdef:nullable MPropDef> */
416 var_other = var;
417 {
418 var7 = ((short int (*)(val*, val*))(var_mpropdef->class->vft[COLOR_kernel__Object___61d_61d]))(var_mpropdef, var_other) /* == on <var_mpropdef:nullable MPropDef(MPropDef)>*/;
419 var6 = var7;
420 }
421 var8 = !var6;
422 var4 = var8;
423 goto RET_LABEL5;
424 RET_LABEL5:(void)0;
425 }
426 var3 = var4;
427 }
428 if (var3){
429 {
430 { /* Inline typing#TypeVisitor#mpropdef= (self,var_mpropdef) on <self:TypeVisitor> */
431 self->attrs[COLOR_typing__TypeVisitor___mpropdef].val = var_mpropdef; /* _mpropdef on <self:TypeVisitor> */
432 RET_LABEL9:(void)0;
433 }
434 }
435 {
436 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MPropDef)> */
437 var12 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MPropDef(MPropDef)> */
438 if (unlikely(var12 == NULL)) {
439 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
440 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
441 show_backtrace(1);
442 }
443 var10 = var12;
444 RET_LABEL11:(void)0;
445 }
446 }
447 var_mclassdef = var10;
448 {
449 { /* Inline typing#TypeVisitor#mclassdef= (self,var_mclassdef) on <self:TypeVisitor> */
450 self->attrs[COLOR_typing__TypeVisitor___mclassdef].val = var_mclassdef; /* _mclassdef on <self:TypeVisitor> */
451 RET_LABEL13:(void)0;
452 }
453 }
454 {
455 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
456 var16 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
457 if (unlikely(var16 == NULL)) {
458 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
459 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
460 show_backtrace(1);
461 }
462 var14 = var16;
463 RET_LABEL15:(void)0;
464 }
465 }
466 {
467 { /* Inline typing#TypeVisitor#anchor= (self,var14) on <self:TypeVisitor> */
468 self->attrs[COLOR_typing__TypeVisitor___anchor].val = var14; /* _anchor on <self:TypeVisitor> */
469 RET_LABEL17:(void)0;
470 }
471 }
472 {
473 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
474 var20 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
475 if (unlikely(var20 == NULL)) {
476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
477 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
478 show_backtrace(1);
479 }
480 var18 = var20;
481 RET_LABEL19:(void)0;
482 }
483 }
484 var_mclass = var18;
485 var21 = NEW_scope__Variable(&type_scope__Variable);
486 if (varonce) {
487 var22 = varonce;
488 } else {
489 var23 = "self";
490 var24 = 4;
491 var25 = string__NativeString__to_s_with_length(var23, var24);
492 var22 = var25;
493 varonce = var22;
494 }
495 {
496 ((void (*)(val*, val*))(var21->class->vft[COLOR_scope__Variable__name_61d]))(var21, var22) /* name= on <var21:Variable>*/;
497 }
498 {
499 ((void (*)(val*))(var21->class->vft[COLOR_kernel__Object__init]))(var21) /* init on <var21:Variable>*/;
500 }
501 var_selfvariable = var21;
502 {
503 { /* Inline typing#TypeVisitor#selfvariable= (self,var_selfvariable) on <self:TypeVisitor> */
504 self->attrs[COLOR_typing__TypeVisitor___selfvariable].val = var_selfvariable; /* _selfvariable on <self:TypeVisitor> */
505 RET_LABEL26:(void)0;
506 }
507 }
508 {
509 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:MClass> */
510 var29 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:MClass> */
511 if (unlikely(var29 == NULL)) {
512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
513 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
514 show_backtrace(1);
515 }
516 var27 = var29;
517 RET_LABEL28:(void)0;
518 }
519 }
520 {
521 { /* Inline typing#Variable#declared_type= (var_selfvariable,var27) on <var_selfvariable:Variable> */
522 var_selfvariable->attrs[COLOR_typing__Variable___declared_type].val = var27; /* _declared_type on <var_selfvariable:Variable> */
523 RET_LABEL30:(void)0;
524 }
525 }
526 {
527 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MPropDef(MPropDef)> */
528 var33 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MPropDef(MPropDef)> */
529 if (unlikely(var33 == NULL)) {
530 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
531 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
532 show_backtrace(1);
533 }
534 var31 = var33;
535 RET_LABEL32:(void)0;
536 }
537 }
538 var_mprop = var31;
539 /* <var_mprop:MProperty> isa MMethod */
540 cltype = type_model__MMethod.color;
541 idtype = type_model__MMethod.id;
542 if(cltype >= var_mprop->type->table_size) {
543 var35 = 0;
544 } else {
545 var35 = var_mprop->type->type_table[cltype] == idtype;
546 }
547 var_ = var35;
548 if (var35){
549 {
550 { /* Inline model#MMethod#is_toplevel (var_mprop) on <var_mprop:MProperty(MMethod)> */
551 var39 = var_mprop->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mprop:MProperty(MMethod)> */
552 var37 = var39;
553 RET_LABEL38:(void)0;
554 }
555 }
556 var_40 = var37;
557 if (var37){
558 var36 = var_40;
559 } else {
560 {
561 { /* Inline model#MMethod#is_new (var_mprop) on <var_mprop:MProperty(MMethod)> */
562 var43 = var_mprop->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <var_mprop:MProperty(MMethod)> */
563 var41 = var43;
564 RET_LABEL42:(void)0;
565 }
566 }
567 var36 = var41;
568 }
569 var34 = var36;
570 } else {
571 var34 = var_;
572 }
573 if (var34){
574 var44 = 1;
575 {
576 { /* Inline typing#TypeVisitor#is_toplevel_context= (self,var44) on <self:TypeVisitor> */
577 self->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s = var44; /* _is_toplevel_context on <self:TypeVisitor> */
578 RET_LABEL45:(void)0;
579 }
580 }
581 } else {
582 }
583 } else {
584 }
585 RET_LABEL:;
586 }
587 /* method typing#TypeVisitor#init for (self: Object, ModelBuilder, MModule, nullable MPropDef) */
588 void VIRTUAL_typing__TypeVisitor__init(val* self, val* p0, val* p1, val* p2) {
589 typing__TypeVisitor__init(self, p0, p1, p2); /* Direct call typing#TypeVisitor#init on <self:Object(TypeVisitor)>*/
590 RET_LABEL:;
591 }
592 /* method typing#TypeVisitor#anchor_to for (self: TypeVisitor, MType): MType */
593 val* typing__TypeVisitor__anchor_to(val* self, val* p0) {
594 val* var /* : MType */;
595 val* var_mtype /* var mtype: MType */;
596 val* var1 /* : nullable MClassType */;
597 val* var3 /* : nullable MClassType */;
598 val* var_anchor /* var anchor: nullable MClassType */;
599 val* var4 /* : null */;
600 short int var5 /* : Bool */;
601 short int var6 /* : Bool */;
602 val* var_other /* var other: nullable Object */;
603 short int var8 /* : Bool */;
604 short int var10 /* : Bool */;
605 short int var11 /* : Bool */;
606 short int var12 /* : Bool */;
607 val* var13 /* : MModule */;
608 val* var15 /* : MModule */;
609 val* var16 /* : MType */;
610 var_mtype = p0;
611 {
612 { /* Inline typing#TypeVisitor#anchor (self) on <self:TypeVisitor> */
613 var3 = self->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
614 var1 = var3;
615 RET_LABEL2:(void)0;
616 }
617 }
618 var_anchor = var1;
619 var4 = NULL;
620 if (var_anchor == NULL) {
621 var5 = 1; /* is null */
622 } else {
623 var5 = 0; /* arg is null but recv is not */
624 }
625 if (0) {
626 { /* Inline kernel#Object#== (var_anchor,var4) on <var_anchor:nullable MClassType> */
627 var_other = var4;
628 {
629 { /* Inline kernel#Object#is_same_instance (var_anchor,var_other) on <var_anchor:nullable MClassType(MClassType)> */
630 var10 = var_anchor == var_other;
631 var8 = var10;
632 goto RET_LABEL9;
633 RET_LABEL9:(void)0;
634 }
635 }
636 var6 = var8;
637 goto RET_LABEL7;
638 RET_LABEL7:(void)0;
639 }
640 var5 = var6;
641 }
642 if (var5){
643 {
644 var11 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
645 }
646 var12 = !var11;
647 if (unlikely(!var12)) {
648 PRINT_ERROR("Runtime error: %s", "Assert failed");
649 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 85);
650 show_backtrace(1);
651 }
652 var = var_mtype;
653 goto RET_LABEL;
654 } else {
655 }
656 {
657 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
658 var15 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
659 if (unlikely(var15 == NULL)) {
660 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
661 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
662 show_backtrace(1);
663 }
664 var13 = var15;
665 RET_LABEL14:(void)0;
666 }
667 }
668 {
669 var16 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var13, var_anchor) /* anchor_to on <var_mtype:MType>*/;
670 }
671 var = var16;
672 goto RET_LABEL;
673 RET_LABEL:;
674 return var;
675 }
676 /* method typing#TypeVisitor#anchor_to for (self: Object, MType): MType */
677 val* VIRTUAL_typing__TypeVisitor__anchor_to(val* self, val* p0) {
678 val* var /* : MType */;
679 val* var1 /* : MType */;
680 var1 = typing__TypeVisitor__anchor_to(self, p0);
681 var = var1;
682 RET_LABEL:;
683 return var;
684 }
685 /* method typing#TypeVisitor#is_subtype for (self: TypeVisitor, MType, MType): Bool */
686 short int typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
687 short int var /* : Bool */;
688 val* var_sub /* var sub: MType */;
689 val* var_sup /* var sup: MType */;
690 val* var1 /* : MModule */;
691 val* var3 /* : MModule */;
692 val* var4 /* : nullable MClassType */;
693 val* var6 /* : nullable MClassType */;
694 short int var7 /* : Bool */;
695 var_sub = p0;
696 var_sup = p1;
697 {
698 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
699 var3 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
700 if (unlikely(var3 == NULL)) {
701 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
702 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
703 show_backtrace(1);
704 }
705 var1 = var3;
706 RET_LABEL2:(void)0;
707 }
708 }
709 {
710 { /* Inline typing#TypeVisitor#anchor (self) on <self:TypeVisitor> */
711 var6 = self->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
712 var4 = var6;
713 RET_LABEL5:(void)0;
714 }
715 }
716 {
717 var7 = model__MType__is_subtype(var_sub, var1, var4, var_sup);
718 }
719 var = var7;
720 goto RET_LABEL;
721 RET_LABEL:;
722 return var;
723 }
724 /* method typing#TypeVisitor#is_subtype for (self: Object, MType, MType): Bool */
725 short int VIRTUAL_typing__TypeVisitor__is_subtype(val* self, val* p0, val* p1) {
726 short int var /* : Bool */;
727 short int var1 /* : Bool */;
728 var1 = typing__TypeVisitor__is_subtype(self, p0, p1);
729 var = var1;
730 RET_LABEL:;
731 return var;
732 }
733 /* method typing#TypeVisitor#resolve_for for (self: TypeVisitor, MType, MType, Bool): MType */
734 val* typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
735 val* var /* : MType */;
736 val* var_mtype /* var mtype: MType */;
737 val* var_subtype /* var subtype: MType */;
738 short int var_for_self /* var for_self: Bool */;
739 val* var1 /* : nullable MClassType */;
740 val* var3 /* : nullable MClassType */;
741 val* var4 /* : MModule */;
742 val* var6 /* : MModule */;
743 short int var7 /* : Bool */;
744 val* var8 /* : MType */;
745 val* var_res /* var res: MType */;
746 var_mtype = p0;
747 var_subtype = p1;
748 var_for_self = p2;
749 {
750 { /* Inline typing#TypeVisitor#anchor (self) on <self:TypeVisitor> */
751 var3 = self->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
752 var1 = var3;
753 RET_LABEL2:(void)0;
754 }
755 }
756 {
757 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
758 var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
759 if (unlikely(var6 == NULL)) {
760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
761 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
762 show_backtrace(1);
763 }
764 var4 = var6;
765 RET_LABEL5:(void)0;
766 }
767 }
768 var7 = !var_for_self;
769 {
770 var8 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var_subtype, var1, var4, var7) /* resolve_for on <var_mtype:MType>*/;
771 }
772 var_res = var8;
773 var = var_res;
774 goto RET_LABEL;
775 RET_LABEL:;
776 return var;
777 }
778 /* method typing#TypeVisitor#resolve_for for (self: Object, MType, MType, Bool): MType */
779 val* VIRTUAL_typing__TypeVisitor__resolve_for(val* self, val* p0, val* p1, short int p2) {
780 val* var /* : MType */;
781 val* var1 /* : MType */;
782 var1 = typing__TypeVisitor__resolve_for(self, p0, p1, p2);
783 var = var1;
784 RET_LABEL:;
785 return var;
786 }
787 /* method typing#TypeVisitor#check_subtype for (self: TypeVisitor, ANode, MType, MType): nullable MType */
788 val* typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
789 val* var /* : nullable MType */;
790 val* var_node /* var node: ANode */;
791 val* var_sub /* var sub: MType */;
792 val* var_sup /* var sup: MType */;
793 short int var1 /* : Bool */;
794 val* var2 /* : MType */;
795 short int var3 /* : Bool */;
796 val* var4 /* : ModelBuilder */;
797 val* var6 /* : ModelBuilder */;
798 static val* varonce;
799 val* var7 /* : String */;
800 char* var8 /* : NativeString */;
801 long var9 /* : Int */;
802 val* var10 /* : FlatString */;
803 static val* varonce11;
804 val* var12 /* : String */;
805 char* var13 /* : NativeString */;
806 long var14 /* : Int */;
807 val* var15 /* : FlatString */;
808 val* var16 /* : Array[Object] */;
809 long var17 /* : Int */;
810 val* var18 /* : NativeArray[Object] */;
811 val* var19 /* : String */;
812 val* var20 /* : null */;
813 var_node = p0;
814 var_sub = p1;
815 var_sup = p2;
816 {
817 var1 = typing__TypeVisitor__is_subtype(self, var_sub, var_sup);
818 }
819 if (var1){
820 var = var_sub;
821 goto RET_LABEL;
822 } else {
823 }
824 {
825 var2 = typing__TypeVisitor__anchor_to(self, var_sup);
826 }
827 {
828 var3 = typing__TypeVisitor__is_subtype(self, var_sub, var2);
829 }
830 if (var3){
831 var = var_sup;
832 goto RET_LABEL;
833 } else {
834 }
835 {
836 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
837 var6 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
838 if (unlikely(var6 == NULL)) {
839 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
840 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
841 show_backtrace(1);
842 }
843 var4 = var6;
844 RET_LABEL5:(void)0;
845 }
846 }
847 if (varonce) {
848 var7 = varonce;
849 } else {
850 var8 = "Type error: expected ";
851 var9 = 21;
852 var10 = string__NativeString__to_s_with_length(var8, var9);
853 var7 = var10;
854 varonce = var7;
855 }
856 if (varonce11) {
857 var12 = varonce11;
858 } else {
859 var13 = ", got ";
860 var14 = 6;
861 var15 = string__NativeString__to_s_with_length(var13, var14);
862 var12 = var15;
863 varonce11 = var12;
864 }
865 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
866 { /* var16 = array_instance Array[Object] */
867 var17 = 4;
868 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
869 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
870 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_sup;
871 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
872 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var_sub;
873 {
874 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
875 }
876 }
877 {
878 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
879 }
880 {
881 modelbuilder__ModelBuilder__error(var4, var_node, var19); /* Direct call modelbuilder#ModelBuilder#error on <var4:ModelBuilder>*/
882 }
883 var20 = NULL;
884 var = var20;
885 goto RET_LABEL;
886 RET_LABEL:;
887 return var;
888 }
889 /* method typing#TypeVisitor#check_subtype for (self: Object, ANode, MType, MType): nullable MType */
890 val* VIRTUAL_typing__TypeVisitor__check_subtype(val* self, val* p0, val* p1, val* p2) {
891 val* var /* : nullable MType */;
892 val* var1 /* : nullable MType */;
893 var1 = typing__TypeVisitor__check_subtype(self, p0, p1, p2);
894 var = var1;
895 RET_LABEL:;
896 return var;
897 }
898 /* method typing#TypeVisitor#visit_stmt for (self: TypeVisitor, nullable AExpr) */
899 void typing__TypeVisitor__visit_stmt(val* self, val* p0) {
900 val* var_nexpr /* var nexpr: nullable AExpr */;
901 val* var /* : null */;
902 short int var1 /* : Bool */;
903 short int var2 /* : Bool */;
904 val* var_other /* var other: nullable Object */;
905 short int var4 /* : Bool */;
906 short int var6 /* : Bool */;
907 var_nexpr = p0;
908 var = NULL;
909 if (var_nexpr == NULL) {
910 var1 = 1; /* is null */
911 } else {
912 var1 = 0; /* arg is null but recv is not */
913 }
914 if (0) {
915 { /* Inline kernel#Object#== (var_nexpr,var) on <var_nexpr:nullable AExpr> */
916 var_other = var;
917 {
918 { /* Inline kernel#Object#is_same_instance (var_nexpr,var_other) on <var_nexpr:nullable AExpr(AExpr)> */
919 var6 = var_nexpr == var_other;
920 var4 = var6;
921 goto RET_LABEL5;
922 RET_LABEL5:(void)0;
923 }
924 }
925 var2 = var4;
926 goto RET_LABEL3;
927 RET_LABEL3:(void)0;
928 }
929 var1 = var2;
930 }
931 if (var1){
932 goto RET_LABEL;
933 } else {
934 }
935 {
936 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:nullable AExpr(AExpr)>*/;
937 }
938 RET_LABEL:;
939 }
940 /* method typing#TypeVisitor#visit_stmt for (self: Object, nullable AExpr) */
941 void VIRTUAL_typing__TypeVisitor__visit_stmt(val* self, val* p0) {
942 typing__TypeVisitor__visit_stmt(self, p0); /* Direct call typing#TypeVisitor#visit_stmt on <self:Object(TypeVisitor)>*/
943 RET_LABEL:;
944 }
945 /* method typing#TypeVisitor#visit_expr for (self: TypeVisitor, AExpr): nullable MType */
946 val* typing__TypeVisitor__visit_expr(val* self, val* p0) {
947 val* var /* : nullable MType */;
948 val* var_nexpr /* var nexpr: AExpr */;
949 val* var1 /* : nullable MType */;
950 val* var_mtype /* var mtype: nullable MType */;
951 val* var2 /* : null */;
952 short int var3 /* : Bool */;
953 short int var4 /* : Bool */;
954 val* var_other /* var other: nullable Object */;
955 short int var6 /* : Bool */;
956 short int var7 /* : Bool */;
957 short int var8 /* : Bool */;
958 short int var9 /* : Bool */;
959 short int var11 /* : Bool */;
960 short int var12 /* : Bool */;
961 val* var13 /* : ModelBuilder */;
962 val* var15 /* : ModelBuilder */;
963 val* var16 /* : ToolContext */;
964 val* var18 /* : ToolContext */;
965 long var19 /* : Int */;
966 long var21 /* : Int */;
967 long var22 /* : Int */;
968 short int var23 /* : Bool */;
969 short int var25 /* : Bool */;
970 int cltype;
971 int idtype;
972 const char* var_class_name;
973 short int var26 /* : Bool */;
974 short int var27 /* : Bool */;
975 val* var28 /* : ModelBuilder */;
976 val* var30 /* : ModelBuilder */;
977 val* var31 /* : ToolContext */;
978 val* var33 /* : ToolContext */;
979 long var34 /* : Int */;
980 long var36 /* : Int */;
981 long var37 /* : Int */;
982 short int var38 /* : Bool */;
983 short int var40 /* : Bool */;
984 int cltype41;
985 int idtype42;
986 const char* var_class_name43;
987 short int var44 /* : Bool */;
988 static val* varonce;
989 val* var45 /* : String */;
990 char* var46 /* : NativeString */;
991 long var47 /* : Int */;
992 val* var48 /* : FlatString */;
993 val* var49 /* : null */;
994 static val* varonce50;
995 val* var51 /* : String */;
996 char* var52 /* : NativeString */;
997 long var53 /* : Int */;
998 val* var54 /* : FlatString */;
999 val* var55 /* : null */;
1000 var_nexpr = p0;
1001 {
1002 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_typing__AExpr__accept_typing]))(var_nexpr, self) /* accept_typing on <var_nexpr:AExpr>*/;
1003 }
1004 {
1005 var1 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
1006 }
1007 var_mtype = var1;
1008 var2 = NULL;
1009 if (var_mtype == NULL) {
1010 var3 = 0; /* is null */
1011 } else {
1012 var3 = 1; /* arg is null and recv is not */
1013 }
1014 if (0) {
1015 { /* Inline kernel#Object#!= (var_mtype,var2) on <var_mtype:nullable MType> */
1016 var_other = var2;
1017 {
1018 var7 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other) /* == on <var_mtype:nullable MType(MType)>*/;
1019 var6 = var7;
1020 }
1021 var8 = !var6;
1022 var4 = var8;
1023 goto RET_LABEL5;
1024 RET_LABEL5:(void)0;
1025 }
1026 var3 = var4;
1027 }
1028 if (var3){
1029 var = var_mtype;
1030 goto RET_LABEL;
1031 } else {
1032 }
1033 {
1034 { /* Inline typing#AExpr#is_typed (var_nexpr) on <var_nexpr:AExpr> */
1035 var11 = var_nexpr->attrs[COLOR_typing__AExpr___is_typed].s; /* _is_typed on <var_nexpr:AExpr> */
1036 var9 = var11;
1037 RET_LABEL10:(void)0;
1038 }
1039 }
1040 var12 = !var9;
1041 if (var12){
1042 {
1043 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
1044 var15 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1045 if (unlikely(var15 == NULL)) {
1046 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1047 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
1048 show_backtrace(1);
1049 }
1050 var13 = var15;
1051 RET_LABEL14:(void)0;
1052 }
1053 }
1054 {
1055 { /* Inline modelbuilder#ModelBuilder#toolcontext (var13) on <var13:ModelBuilder> */
1056 var18 = var13->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var13:ModelBuilder> */
1057 if (unlikely(var18 == NULL)) {
1058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1059 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1060 show_backtrace(1);
1061 }
1062 var16 = var18;
1063 RET_LABEL17:(void)0;
1064 }
1065 }
1066 {
1067 { /* Inline toolcontext#ToolContext#error_count (var16) on <var16:ToolContext> */
1068 var21 = var16->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var16:ToolContext> */
1069 var19 = var21;
1070 RET_LABEL20:(void)0;
1071 }
1072 }
1073 var22 = 0;
1074 {
1075 { /* Inline kernel#Int#> (var19,var22) on <var19:Int> */
1076 /* Covariant cast for argument 0 (i) <var22:Int> isa OTHER */
1077 /* <var22:Int> isa OTHER */
1078 var25 = 1; /* easy <var22:Int> isa OTHER*/
1079 if (unlikely(!var25)) {
1080 var_class_name = type_kernel__Int.name;
1081 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1082 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
1083 show_backtrace(1);
1084 }
1085 var26 = var19 > var22;
1086 var23 = var26;
1087 goto RET_LABEL24;
1088 RET_LABEL24:(void)0;
1089 }
1090 }
1091 var27 = !var23;
1092 if (var27){
1093 {
1094 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
1095 var30 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1096 if (unlikely(var30 == NULL)) {
1097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1098 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
1099 show_backtrace(1);
1100 }
1101 var28 = var30;
1102 RET_LABEL29:(void)0;
1103 }
1104 }
1105 {
1106 { /* Inline modelbuilder#ModelBuilder#toolcontext (var28) on <var28:ModelBuilder> */
1107 var33 = var28->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var28:ModelBuilder> */
1108 if (unlikely(var33 == NULL)) {
1109 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1110 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1111 show_backtrace(1);
1112 }
1113 var31 = var33;
1114 RET_LABEL32:(void)0;
1115 }
1116 }
1117 {
1118 { /* Inline toolcontext#ToolContext#verbose_level (var31) on <var31:ToolContext> */
1119 var36 = var31->attrs[COLOR_toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <var31:ToolContext> */
1120 var34 = var36;
1121 RET_LABEL35:(void)0;
1122 }
1123 }
1124 var37 = 1;
1125 {
1126 { /* Inline kernel#Int#> (var34,var37) on <var34:Int> */
1127 /* Covariant cast for argument 0 (i) <var37:Int> isa OTHER */
1128 /* <var37:Int> isa OTHER */
1129 var40 = 1; /* easy <var37:Int> isa OTHER*/
1130 if (unlikely(!var40)) {
1131 var_class_name43 = type_kernel__Int.name;
1132 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
1133 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
1134 show_backtrace(1);
1135 }
1136 var44 = var34 > var37;
1137 var38 = var44;
1138 goto RET_LABEL39;
1139 RET_LABEL39:(void)0;
1140 }
1141 }
1142 if (var38){
1143 if (varonce) {
1144 var45 = varonce;
1145 } else {
1146 var46 = "No return type but no error.";
1147 var47 = 28;
1148 var48 = string__NativeString__to_s_with_length(var46, var47);
1149 var45 = var48;
1150 varonce = var45;
1151 }
1152 {
1153 parser_nodes__ANode__debug(var_nexpr, var45); /* Direct call parser_nodes#ANode#debug on <var_nexpr:AExpr>*/
1154 }
1155 } else {
1156 }
1157 } else {
1158 }
1159 var49 = NULL;
1160 var = var49;
1161 goto RET_LABEL;
1162 } else {
1163 }
1164 if (varonce50) {
1165 var51 = varonce50;
1166 } else {
1167 var52 = "Type error: expected expression.";
1168 var53 = 32;
1169 var54 = string__NativeString__to_s_with_length(var52, var53);
1170 var51 = var54;
1171 varonce50 = var51;
1172 }
1173 {
1174 typing__TypeVisitor__error(self, var_nexpr, var51); /* Direct call typing#TypeVisitor#error on <self:TypeVisitor>*/
1175 }
1176 var55 = NULL;
1177 var = var55;
1178 goto RET_LABEL;
1179 RET_LABEL:;
1180 return var;
1181 }
1182 /* method typing#TypeVisitor#visit_expr for (self: Object, AExpr): nullable MType */
1183 val* VIRTUAL_typing__TypeVisitor__visit_expr(val* self, val* p0) {
1184 val* var /* : nullable MType */;
1185 val* var1 /* : nullable MType */;
1186 var1 = typing__TypeVisitor__visit_expr(self, p0);
1187 var = var1;
1188 RET_LABEL:;
1189 return var;
1190 }
1191 /* method typing#TypeVisitor#visit_expr_subtype for (self: TypeVisitor, AExpr, nullable MType): nullable MType */
1192 val* typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
1193 val* var /* : nullable MType */;
1194 val* var_nexpr /* var nexpr: AExpr */;
1195 val* var_sup /* var sup: nullable MType */;
1196 val* var1 /* : nullable MType */;
1197 val* var_sub /* var sub: nullable MType */;
1198 val* var2 /* : null */;
1199 short int var3 /* : Bool */;
1200 short int var4 /* : Bool */;
1201 val* var_other /* var other: nullable Object */;
1202 short int var6 /* : Bool */;
1203 short int var8 /* : Bool */;
1204 val* var9 /* : null */;
1205 val* var10 /* : null */;
1206 short int var11 /* : Bool */;
1207 short int var12 /* : Bool */;
1208 short int var14 /* : Bool */;
1209 short int var16 /* : Bool */;
1210 val* var17 /* : null */;
1211 val* var18 /* : nullable MType */;
1212 val* var_res /* var res: nullable MType */;
1213 short int var19 /* : Bool */;
1214 short int var20 /* : Bool */;
1215 val* var_other22 /* var other: nullable Object */;
1216 short int var23 /* : Bool */;
1217 short int var24 /* : Bool */;
1218 short int var25 /* : Bool */;
1219 var_nexpr = p0;
1220 var_sup = p1;
1221 {
1222 var1 = typing__TypeVisitor__visit_expr(self, var_nexpr);
1223 }
1224 var_sub = var1;
1225 var2 = NULL;
1226 if (var_sub == NULL) {
1227 var3 = 1; /* is null */
1228 } else {
1229 var3 = 0; /* arg is null but recv is not */
1230 }
1231 if (0) {
1232 { /* Inline kernel#Object#== (var_sub,var2) on <var_sub:nullable MType> */
1233 var_other = var2;
1234 {
1235 { /* Inline kernel#Object#is_same_instance (var_sub,var_other) on <var_sub:nullable MType(MType)> */
1236 var8 = var_sub == var_other;
1237 var6 = var8;
1238 goto RET_LABEL7;
1239 RET_LABEL7:(void)0;
1240 }
1241 }
1242 var4 = var6;
1243 goto RET_LABEL5;
1244 RET_LABEL5:(void)0;
1245 }
1246 var3 = var4;
1247 }
1248 if (var3){
1249 var9 = NULL;
1250 var = var9;
1251 goto RET_LABEL;
1252 } else {
1253 }
1254 var10 = NULL;
1255 if (var_sup == NULL) {
1256 var11 = 1; /* is null */
1257 } else {
1258 var11 = 0; /* arg is null but recv is not */
1259 }
1260 if (0) {
1261 { /* Inline kernel#Object#== (var_sup,var10) on <var_sup:nullable MType> */
1262 var_other = var10;
1263 {
1264 { /* Inline kernel#Object#is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
1265 var16 = var_sup == var_other;
1266 var14 = var16;
1267 goto RET_LABEL15;
1268 RET_LABEL15:(void)0;
1269 }
1270 }
1271 var12 = var14;
1272 goto RET_LABEL13;
1273 RET_LABEL13:(void)0;
1274 }
1275 var11 = var12;
1276 }
1277 if (var11){
1278 var17 = NULL;
1279 var = var17;
1280 goto RET_LABEL;
1281 } else {
1282 }
1283 {
1284 var18 = typing__TypeVisitor__check_subtype(self, var_nexpr, var_sub, var_sup);
1285 }
1286 var_res = var18;
1287 if (var_res == NULL) {
1288 var19 = 1; /* <var_sub:nullable MType(MType)> cannot be null */
1289 } else {
1290 { /* Inline kernel#Object#!= (var_res,var_sub) on <var_res:nullable MType> */
1291 var_other22 = var_sub;
1292 {
1293 var24 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other22) /* == on <var_res:nullable MType(MType)>*/;
1294 var23 = var24;
1295 }
1296 var25 = !var23;
1297 var20 = var25;
1298 goto RET_LABEL21;
1299 RET_LABEL21:(void)0;
1300 }
1301 var19 = var20;
1302 }
1303 if (var19){
1304 {
1305 { /* Inline typing#AExpr#implicit_cast_to= (var_nexpr,var_res) on <var_nexpr:AExpr> */
1306 var_nexpr->attrs[COLOR_typing__AExpr___implicit_cast_to].val = var_res; /* _implicit_cast_to on <var_nexpr:AExpr> */
1307 RET_LABEL26:(void)0;
1308 }
1309 }
1310 } else {
1311 }
1312 var = var_res;
1313 goto RET_LABEL;
1314 RET_LABEL:;
1315 return var;
1316 }
1317 /* method typing#TypeVisitor#visit_expr_subtype for (self: Object, AExpr, nullable MType): nullable MType */
1318 val* VIRTUAL_typing__TypeVisitor__visit_expr_subtype(val* self, val* p0, val* p1) {
1319 val* var /* : nullable MType */;
1320 val* var1 /* : nullable MType */;
1321 var1 = typing__TypeVisitor__visit_expr_subtype(self, p0, p1);
1322 var = var1;
1323 RET_LABEL:;
1324 return var;
1325 }
1326 /* method typing#TypeVisitor#visit_expr_bool for (self: TypeVisitor, AExpr): nullable MType */
1327 val* typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
1328 val* var /* : nullable MType */;
1329 val* var_nexpr /* var nexpr: AExpr */;
1330 val* var1 /* : nullable MType */;
1331 val* var2 /* : nullable MType */;
1332 var_nexpr = p0;
1333 {
1334 var1 = typing__TypeVisitor__type_bool(self, var_nexpr);
1335 }
1336 {
1337 var2 = typing__TypeVisitor__visit_expr_subtype(self, var_nexpr, var1);
1338 }
1339 var = var2;
1340 goto RET_LABEL;
1341 RET_LABEL:;
1342 return var;
1343 }
1344 /* method typing#TypeVisitor#visit_expr_bool for (self: Object, AExpr): nullable MType */
1345 val* VIRTUAL_typing__TypeVisitor__visit_expr_bool(val* self, val* p0) {
1346 val* var /* : nullable MType */;
1347 val* var1 /* : nullable MType */;
1348 var1 = typing__TypeVisitor__visit_expr_bool(self, p0);
1349 var = var1;
1350 RET_LABEL:;
1351 return var;
1352 }
1353 /* method typing#TypeVisitor#visit_expr_cast for (self: TypeVisitor, ANode, AExpr, AType): nullable MType */
1354 val* typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
1355 val* var /* : nullable MType */;
1356 val* var_node /* var node: ANode */;
1357 val* var_nexpr /* var nexpr: AExpr */;
1358 val* var_ntype /* var ntype: AType */;
1359 val* var1 /* : nullable MType */;
1360 val* var_sub /* var sub: nullable MType */;
1361 val* var2 /* : null */;
1362 short int var3 /* : Bool */;
1363 short int var4 /* : Bool */;
1364 val* var_other /* var other: nullable Object */;
1365 short int var6 /* : Bool */;
1366 short int var8 /* : Bool */;
1367 val* var9 /* : null */;
1368 val* var10 /* : nullable MType */;
1369 val* var_sup /* var sup: nullable MType */;
1370 val* var11 /* : null */;
1371 short int var12 /* : Bool */;
1372 short int var13 /* : Bool */;
1373 short int var15 /* : Bool */;
1374 short int var17 /* : Bool */;
1375 val* var18 /* : null */;
1376 short int var19 /* : Bool */;
1377 short int var20 /* : Bool */;
1378 short int var22 /* : Bool */;
1379 short int var24 /* : Bool */;
1380 val* var25 /* : ModelBuilder */;
1381 val* var27 /* : ModelBuilder */;
1382 static val* varonce;
1383 val* var28 /* : String */;
1384 char* var29 /* : NativeString */;
1385 long var30 /* : Int */;
1386 val* var31 /* : FlatString */;
1387 static val* varonce32;
1388 val* var33 /* : String */;
1389 char* var34 /* : NativeString */;
1390 long var35 /* : Int */;
1391 val* var36 /* : FlatString */;
1392 static val* varonce37;
1393 val* var38 /* : String */;
1394 char* var39 /* : NativeString */;
1395 long var40 /* : Int */;
1396 val* var41 /* : FlatString */;
1397 val* var42 /* : Array[Object] */;
1398 long var43 /* : Int */;
1399 val* var44 /* : NativeArray[Object] */;
1400 val* var45 /* : String */;
1401 short int var46 /* : Bool */;
1402 val* var47 /* : ModelBuilder */;
1403 val* var49 /* : ModelBuilder */;
1404 static val* varonce50;
1405 val* var51 /* : String */;
1406 char* var52 /* : NativeString */;
1407 long var53 /* : Int */;
1408 val* var54 /* : FlatString */;
1409 static val* varonce55;
1410 val* var56 /* : String */;
1411 char* var57 /* : NativeString */;
1412 long var58 /* : Int */;
1413 val* var59 /* : FlatString */;
1414 static val* varonce60;
1415 val* var61 /* : String */;
1416 char* var62 /* : NativeString */;
1417 long var63 /* : Int */;
1418 val* var64 /* : FlatString */;
1419 static val* varonce65;
1420 val* var66 /* : String */;
1421 char* var67 /* : NativeString */;
1422 long var68 /* : Int */;
1423 val* var69 /* : FlatString */;
1424 val* var70 /* : Array[Object] */;
1425 long var71 /* : Int */;
1426 val* var72 /* : NativeArray[Object] */;
1427 val* var73 /* : String */;
1428 var_node = p0;
1429 var_nexpr = p1;
1430 var_ntype = p2;
1431 {
1432 var1 = typing__TypeVisitor__visit_expr(self, var_nexpr);
1433 }
1434 var_sub = var1;
1435 var2 = NULL;
1436 if (var_sub == NULL) {
1437 var3 = 1; /* is null */
1438 } else {
1439 var3 = 0; /* arg is null but recv is not */
1440 }
1441 if (0) {
1442 { /* Inline kernel#Object#== (var_sub,var2) on <var_sub:nullable MType> */
1443 var_other = var2;
1444 {
1445 { /* Inline kernel#Object#is_same_instance (var_sub,var_other) on <var_sub:nullable MType(MType)> */
1446 var8 = var_sub == var_other;
1447 var6 = var8;
1448 goto RET_LABEL7;
1449 RET_LABEL7:(void)0;
1450 }
1451 }
1452 var4 = var6;
1453 goto RET_LABEL5;
1454 RET_LABEL5:(void)0;
1455 }
1456 var3 = var4;
1457 }
1458 if (var3){
1459 var9 = NULL;
1460 var = var9;
1461 goto RET_LABEL;
1462 } else {
1463 }
1464 {
1465 var10 = typing__TypeVisitor__resolve_mtype(self, var_ntype);
1466 }
1467 var_sup = var10;
1468 var11 = NULL;
1469 if (var_sup == NULL) {
1470 var12 = 1; /* is null */
1471 } else {
1472 var12 = 0; /* arg is null but recv is not */
1473 }
1474 if (0) {
1475 { /* Inline kernel#Object#== (var_sup,var11) on <var_sup:nullable MType> */
1476 var_other = var11;
1477 {
1478 { /* Inline kernel#Object#is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
1479 var17 = var_sup == var_other;
1480 var15 = var17;
1481 goto RET_LABEL16;
1482 RET_LABEL16:(void)0;
1483 }
1484 }
1485 var13 = var15;
1486 goto RET_LABEL14;
1487 RET_LABEL14:(void)0;
1488 }
1489 var12 = var13;
1490 }
1491 if (var12){
1492 var18 = NULL;
1493 var = var18;
1494 goto RET_LABEL;
1495 } else {
1496 }
1497 {
1498 { /* Inline kernel#Object#== (var_sup,var_sub) on <var_sup:nullable MType(MType)> */
1499 var_other = var_sub;
1500 {
1501 { /* Inline kernel#Object#is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
1502 var24 = var_sup == var_other;
1503 var22 = var24;
1504 goto RET_LABEL23;
1505 RET_LABEL23:(void)0;
1506 }
1507 }
1508 var20 = var22;
1509 goto RET_LABEL21;
1510 RET_LABEL21:(void)0;
1511 }
1512 var19 = var20;
1513 }
1514 if (var19){
1515 {
1516 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
1517 var27 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1518 if (unlikely(var27 == NULL)) {
1519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1520 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
1521 show_backtrace(1);
1522 }
1523 var25 = var27;
1524 RET_LABEL26:(void)0;
1525 }
1526 }
1527 if (varonce) {
1528 var28 = varonce;
1529 } else {
1530 var29 = "useless-type-test";
1531 var30 = 17;
1532 var31 = string__NativeString__to_s_with_length(var29, var30);
1533 var28 = var31;
1534 varonce = var28;
1535 }
1536 if (varonce32) {
1537 var33 = varonce32;
1538 } else {
1539 var34 = "Warning: Expression is already a ";
1540 var35 = 33;
1541 var36 = string__NativeString__to_s_with_length(var34, var35);
1542 var33 = var36;
1543 varonce32 = var33;
1544 }
1545 if (varonce37) {
1546 var38 = varonce37;
1547 } else {
1548 var39 = ".";
1549 var40 = 1;
1550 var41 = string__NativeString__to_s_with_length(var39, var40);
1551 var38 = var41;
1552 varonce37 = var38;
1553 }
1554 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
1555 { /* var42 = array_instance Array[Object] */
1556 var43 = 3;
1557 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
1558 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var33;
1559 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_sup;
1560 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var38;
1561 {
1562 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
1563 }
1564 }
1565 {
1566 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
1567 }
1568 {
1569 modelbuilder__ModelBuilder__warning(var25, var_node, var28, var45); /* Direct call modelbuilder#ModelBuilder#warning on <var25:ModelBuilder>*/
1570 }
1571 } else {
1572 {
1573 var46 = typing__TypeVisitor__is_subtype(self, var_sub, var_sup);
1574 }
1575 if (var46){
1576 {
1577 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
1578 var49 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1579 if (unlikely(var49 == NULL)) {
1580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1581 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
1582 show_backtrace(1);
1583 }
1584 var47 = var49;
1585 RET_LABEL48:(void)0;
1586 }
1587 }
1588 if (varonce50) {
1589 var51 = varonce50;
1590 } else {
1591 var52 = "useless-type-test";
1592 var53 = 17;
1593 var54 = string__NativeString__to_s_with_length(var52, var53);
1594 var51 = var54;
1595 varonce50 = var51;
1596 }
1597 if (varonce55) {
1598 var56 = varonce55;
1599 } else {
1600 var57 = "Warning: Expression is already a ";
1601 var58 = 33;
1602 var59 = string__NativeString__to_s_with_length(var57, var58);
1603 var56 = var59;
1604 varonce55 = var56;
1605 }
1606 if (varonce60) {
1607 var61 = varonce60;
1608 } else {
1609 var62 = " since it is a ";
1610 var63 = 15;
1611 var64 = string__NativeString__to_s_with_length(var62, var63);
1612 var61 = var64;
1613 varonce60 = var61;
1614 }
1615 if (varonce65) {
1616 var66 = varonce65;
1617 } else {
1618 var67 = ".";
1619 var68 = 1;
1620 var69 = string__NativeString__to_s_with_length(var67, var68);
1621 var66 = var69;
1622 varonce65 = var66;
1623 }
1624 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
1625 { /* var70 = array_instance Array[Object] */
1626 var71 = 5;
1627 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
1628 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var56;
1629 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var_sup;
1630 ((struct instance_array__NativeArray*)var72)->values[2] = (val*) var61;
1631 ((struct instance_array__NativeArray*)var72)->values[3] = (val*) var_sub;
1632 ((struct instance_array__NativeArray*)var72)->values[4] = (val*) var66;
1633 {
1634 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
1635 }
1636 }
1637 {
1638 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
1639 }
1640 {
1641 modelbuilder__ModelBuilder__warning(var47, var_node, var51, var73); /* Direct call modelbuilder#ModelBuilder#warning on <var47:ModelBuilder>*/
1642 }
1643 } else {
1644 }
1645 }
1646 var = var_sup;
1647 goto RET_LABEL;
1648 RET_LABEL:;
1649 return var;
1650 }
1651 /* method typing#TypeVisitor#visit_expr_cast for (self: Object, ANode, AExpr, AType): nullable MType */
1652 val* VIRTUAL_typing__TypeVisitor__visit_expr_cast(val* self, val* p0, val* p1, val* p2) {
1653 val* var /* : nullable MType */;
1654 val* var1 /* : nullable MType */;
1655 var1 = typing__TypeVisitor__visit_expr_cast(self, p0, p1, p2);
1656 var = var1;
1657 RET_LABEL:;
1658 return var;
1659 }
1660 /* method typing#TypeVisitor#null_test for (self: TypeVisitor, ABinopExpr) */
1661 void typing__TypeVisitor__null_test(val* self, val* p0) {
1662 val* var_anode /* var anode: ABinopExpr */;
1663 val* var /* : AExpr */;
1664 val* var2 /* : AExpr */;
1665 val* var3 /* : nullable MType */;
1666 val* var_mtype /* var mtype: nullable MType */;
1667 val* var4 /* : AExpr */;
1668 val* var6 /* : AExpr */;
1669 val* var7 /* : nullable MType */;
1670 val* var_mtype2 /* var mtype2: nullable MType */;
1671 short int var8 /* : Bool */;
1672 val* var9 /* : null */;
1673 short int var10 /* : Bool */;
1674 short int var11 /* : Bool */;
1675 val* var_other /* var other: nullable Object */;
1676 short int var13 /* : Bool */;
1677 short int var15 /* : Bool */;
1678 short int var_ /* var : Bool */;
1679 val* var16 /* : null */;
1680 short int var17 /* : Bool */;
1681 short int var18 /* : Bool */;
1682 short int var20 /* : Bool */;
1683 short int var22 /* : Bool */;
1684 short int var23 /* : Bool */;
1685 int cltype;
1686 int idtype;
1687 short int var24 /* : Bool */;
1688 short int var25 /* : Bool */;
1689 int cltype26;
1690 int idtype27;
1691 short int var28 /* : Bool */;
1692 val* var29 /* : MType */;
1693 short int var30 /* : Bool */;
1694 int cltype31;
1695 int idtype32;
1696 short int var33 /* : Bool */;
1697 val* var34 /* : ModelBuilder */;
1698 val* var36 /* : ModelBuilder */;
1699 static val* varonce;
1700 val* var37 /* : String */;
1701 char* var38 /* : NativeString */;
1702 long var39 /* : Int */;
1703 val* var40 /* : FlatString */;
1704 static val* varonce41;
1705 val* var42 /* : String */;
1706 char* var43 /* : NativeString */;
1707 long var44 /* : Int */;
1708 val* var45 /* : FlatString */;
1709 static val* varonce46;
1710 val* var47 /* : String */;
1711 char* var48 /* : NativeString */;
1712 long var49 /* : Int */;
1713 val* var50 /* : FlatString */;
1714 val* var51 /* : Array[Object] */;
1715 long var52 /* : Int */;
1716 val* var53 /* : NativeArray[Object] */;
1717 val* var54 /* : String */;
1718 val* var55 /* : AExpr */;
1719 val* var57 /* : AExpr */;
1720 val* var58 /* : nullable Variable */;
1721 val* var_variable /* var variable: nullable Variable */;
1722 val* var59 /* : null */;
1723 short int var60 /* : Bool */;
1724 short int var61 /* : Bool */;
1725 short int var63 /* : Bool */;
1726 short int var65 /* : Bool */;
1727 short int var66 /* : Bool */;
1728 int cltype67;
1729 int idtype68;
1730 val* var69 /* : nullable FlowContext */;
1731 val* var71 /* : nullable FlowContext */;
1732 val* var72 /* : FlowContext */;
1733 val* var74 /* : FlowContext */;
1734 val* var75 /* : nullable FlowContext */;
1735 val* var77 /* : nullable FlowContext */;
1736 val* var78 /* : FlowContext */;
1737 val* var80 /* : FlowContext */;
1738 val* var81 /* : MType */;
1739 val* var83 /* : MType */;
1740 short int var84 /* : Bool */;
1741 int cltype85;
1742 int idtype86;
1743 val* var87 /* : nullable FlowContext */;
1744 val* var89 /* : nullable FlowContext */;
1745 val* var90 /* : FlowContext */;
1746 val* var92 /* : FlowContext */;
1747 val* var93 /* : nullable FlowContext */;
1748 val* var95 /* : nullable FlowContext */;
1749 val* var96 /* : FlowContext */;
1750 val* var98 /* : FlowContext */;
1751 val* var99 /* : MType */;
1752 val* var101 /* : MType */;
1753 var_anode = p0;
1754 {
1755 { /* Inline parser_nodes#ASendExpr#n_expr (var_anode) on <var_anode:ABinopExpr> */
1756 var2 = var_anode->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <var_anode:ABinopExpr> */
1757 if (unlikely(var2 == NULL)) {
1758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1759 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1466);
1760 show_backtrace(1);
1761 }
1762 var = var2;
1763 RET_LABEL1:(void)0;
1764 }
1765 }
1766 {
1767 var3 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__mtype]))(var) /* mtype on <var:AExpr>*/;
1768 }
1769 var_mtype = var3;
1770 {
1771 { /* Inline parser_nodes#ABinopExpr#n_expr2 (var_anode) on <var_anode:ABinopExpr> */
1772 var6 = var_anode->attrs[COLOR_parser_nodes__ABinopExpr___n_expr2].val; /* _n_expr2 on <var_anode:ABinopExpr> */
1773 if (unlikely(var6 == NULL)) {
1774 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
1775 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1473);
1776 show_backtrace(1);
1777 }
1778 var4 = var6;
1779 RET_LABEL5:(void)0;
1780 }
1781 }
1782 {
1783 var7 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__mtype]))(var4) /* mtype on <var4:AExpr>*/;
1784 }
1785 var_mtype2 = var7;
1786 var9 = NULL;
1787 if (var_mtype == NULL) {
1788 var10 = 1; /* is null */
1789 } else {
1790 var10 = 0; /* arg is null but recv is not */
1791 }
1792 if (0) {
1793 { /* Inline kernel#Object#== (var_mtype,var9) on <var_mtype:nullable MType> */
1794 var_other = var9;
1795 {
1796 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
1797 var15 = var_mtype == var_other;
1798 var13 = var15;
1799 goto RET_LABEL14;
1800 RET_LABEL14:(void)0;
1801 }
1802 }
1803 var11 = var13;
1804 goto RET_LABEL12;
1805 RET_LABEL12:(void)0;
1806 }
1807 var10 = var11;
1808 }
1809 var_ = var10;
1810 if (var10){
1811 var8 = var_;
1812 } else {
1813 var16 = NULL;
1814 if (var_mtype2 == NULL) {
1815 var17 = 1; /* is null */
1816 } else {
1817 var17 = 0; /* arg is null but recv is not */
1818 }
1819 if (0) {
1820 { /* Inline kernel#Object#== (var_mtype2,var16) on <var_mtype2:nullable MType> */
1821 var_other = var16;
1822 {
1823 { /* Inline kernel#Object#is_same_instance (var_mtype2,var_other) on <var_mtype2:nullable MType(MType)> */
1824 var22 = var_mtype2 == var_other;
1825 var20 = var22;
1826 goto RET_LABEL21;
1827 RET_LABEL21:(void)0;
1828 }
1829 }
1830 var18 = var20;
1831 goto RET_LABEL19;
1832 RET_LABEL19:(void)0;
1833 }
1834 var17 = var18;
1835 }
1836 var8 = var17;
1837 }
1838 if (var8){
1839 goto RET_LABEL;
1840 } else {
1841 }
1842 /* <var_mtype2:nullable MType(MType)> isa MNullType */
1843 cltype = type_model__MNullType.color;
1844 idtype = type_model__MNullType.id;
1845 if(cltype >= var_mtype2->type->table_size) {
1846 var23 = 0;
1847 } else {
1848 var23 = var_mtype2->type->type_table[cltype] == idtype;
1849 }
1850 var24 = !var23;
1851 if (var24){
1852 goto RET_LABEL;
1853 } else {
1854 }
1855 /* <var_mtype:nullable MType(MType)> isa MNullableType */
1856 cltype26 = type_model__MNullableType.color;
1857 idtype27 = type_model__MNullableType.id;
1858 if(cltype26 >= var_mtype->type->table_size) {
1859 var25 = 0;
1860 } else {
1861 var25 = var_mtype->type->type_table[cltype26] == idtype27;
1862 }
1863 var28 = !var25;
1864 if (var28){
1865 {
1866 var29 = typing__TypeVisitor__anchor_to(self, var_mtype);
1867 }
1868 /* <var29:MType> isa MNullableType */
1869 cltype31 = type_model__MNullableType.color;
1870 idtype32 = type_model__MNullableType.id;
1871 if(cltype31 >= var29->type->table_size) {
1872 var30 = 0;
1873 } else {
1874 var30 = var29->type->type_table[cltype31] == idtype32;
1875 }
1876 var33 = !var30;
1877 if (var33){
1878 {
1879 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
1880 var36 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1881 if (unlikely(var36 == NULL)) {
1882 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1883 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
1884 show_backtrace(1);
1885 }
1886 var34 = var36;
1887 RET_LABEL35:(void)0;
1888 }
1889 }
1890 if (varonce) {
1891 var37 = varonce;
1892 } else {
1893 var38 = "useless-null-test";
1894 var39 = 17;
1895 var40 = string__NativeString__to_s_with_length(var38, var39);
1896 var37 = var40;
1897 varonce = var37;
1898 }
1899 if (varonce41) {
1900 var42 = varonce41;
1901 } else {
1902 var43 = "Warning: expression is not null, since it is a `";
1903 var44 = 48;
1904 var45 = string__NativeString__to_s_with_length(var43, var44);
1905 var42 = var45;
1906 varonce41 = var42;
1907 }
1908 if (varonce46) {
1909 var47 = varonce46;
1910 } else {
1911 var48 = "`.";
1912 var49 = 2;
1913 var50 = string__NativeString__to_s_with_length(var48, var49);
1914 var47 = var50;
1915 varonce46 = var47;
1916 }
1917 var51 = NEW_array__Array(&type_array__Arraykernel__Object);
1918 { /* var51 = array_instance Array[Object] */
1919 var52 = 3;
1920 var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
1921 ((struct instance_array__NativeArray*)var53)->values[0] = (val*) var42;
1922 ((struct instance_array__NativeArray*)var53)->values[1] = (val*) var_mtype;
1923 ((struct instance_array__NativeArray*)var53)->values[2] = (val*) var47;
1924 {
1925 ((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
1926 }
1927 }
1928 {
1929 var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
1930 }
1931 {
1932 modelbuilder__ModelBuilder__warning(var34, var_anode, var37, var54); /* Direct call modelbuilder#ModelBuilder#warning on <var34:ModelBuilder>*/
1933 }
1934 } else {
1935 }
1936 goto RET_LABEL;
1937 } else {
1938 }
1939 {
1940 { /* Inline parser_nodes#ASendExpr#n_expr (var_anode) on <var_anode:ABinopExpr> */
1941 var57 = var_anode->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <var_anode:ABinopExpr> */
1942 if (unlikely(var57 == NULL)) {
1943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1944 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1466);
1945 show_backtrace(1);
1946 }
1947 var55 = var57;
1948 RET_LABEL56:(void)0;
1949 }
1950 }
1951 {
1952 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_typing__AExpr__its_variable]))(var55) /* its_variable on <var55:AExpr>*/;
1953 }
1954 var_variable = var58;
1955 var59 = NULL;
1956 if (var_variable == NULL) {
1957 var60 = 1; /* is null */
1958 } else {
1959 var60 = 0; /* arg is null but recv is not */
1960 }
1961 if (0) {
1962 { /* Inline kernel#Object#== (var_variable,var59) on <var_variable:nullable Variable> */
1963 var_other = var59;
1964 {
1965 { /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
1966 var65 = var_variable == var_other;
1967 var63 = var65;
1968 goto RET_LABEL64;
1969 RET_LABEL64:(void)0;
1970 }
1971 }
1972 var61 = var63;
1973 goto RET_LABEL62;
1974 RET_LABEL62:(void)0;
1975 }
1976 var60 = var61;
1977 }
1978 if (var60){
1979 goto RET_LABEL;
1980 } else {
1981 }
1982 /* <var_anode:ABinopExpr> isa AEqExpr */
1983 cltype67 = type_parser_nodes__AEqExpr.color;
1984 idtype68 = type_parser_nodes__AEqExpr.id;
1985 if(cltype67 >= var_anode->type->table_size) {
1986 var66 = 0;
1987 } else {
1988 var66 = var_anode->type->type_table[cltype67] == idtype68;
1989 }
1990 if (var66){
1991 {
1992 { /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(AEqExpr)> */
1993 var71 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(AEqExpr)> */
1994 var69 = var71;
1995 RET_LABEL70:(void)0;
1996 }
1997 }
1998 if (var69 == NULL) {
1999 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2000 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 222);
2001 show_backtrace(1);
2002 } else {
2003 { /* Inline flow#FlowContext#when_true (var69) on <var69:nullable FlowContext> */
2004 if (unlikely(var69 == NULL)) {
2005 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2006 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
2007 show_backtrace(1);
2008 }
2009 var74 = var69->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var69:nullable FlowContext> */
2010 if (unlikely(var74 == NULL)) {
2011 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2012 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
2013 show_backtrace(1);
2014 }
2015 var72 = var74;
2016 RET_LABEL73:(void)0;
2017 }
2018 }
2019 {
2020 typing__FlowContext__set_var(var72, var_variable, var_mtype2); /* Direct call typing#FlowContext#set_var on <var72:FlowContext>*/
2021 }
2022 {
2023 { /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(AEqExpr)> */
2024 var77 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(AEqExpr)> */
2025 var75 = var77;
2026 RET_LABEL76:(void)0;
2027 }
2028 }
2029 if (var75 == NULL) {
2030 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2031 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 223);
2032 show_backtrace(1);
2033 } else {
2034 { /* Inline flow#FlowContext#when_false (var75) on <var75:nullable FlowContext> */
2035 if (unlikely(var75 == NULL)) {
2036 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2037 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
2038 show_backtrace(1);
2039 }
2040 var80 = var75->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var75:nullable FlowContext> */
2041 if (unlikely(var80 == NULL)) {
2042 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2043 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
2044 show_backtrace(1);
2045 }
2046 var78 = var80;
2047 RET_LABEL79:(void)0;
2048 }
2049 }
2050 {
2051 { /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:nullable MType(MNullableType)> */
2052 var83 = var_mtype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_mtype:nullable MType(MNullableType)> */
2053 if (unlikely(var83 == NULL)) {
2054 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2055 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
2056 show_backtrace(1);
2057 }
2058 var81 = var83;
2059 RET_LABEL82:(void)0;
2060 }
2061 }
2062 {
2063 typing__FlowContext__set_var(var78, var_variable, var81); /* Direct call typing#FlowContext#set_var on <var78:FlowContext>*/
2064 }
2065 } else {
2066 /* <var_anode:ABinopExpr> isa ANeExpr */
2067 cltype85 = type_parser_nodes__ANeExpr.color;
2068 idtype86 = type_parser_nodes__ANeExpr.id;
2069 if(cltype85 >= var_anode->type->table_size) {
2070 var84 = 0;
2071 } else {
2072 var84 = var_anode->type->type_table[cltype85] == idtype86;
2073 }
2074 if (var84){
2075 {
2076 { /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(ANeExpr)> */
2077 var89 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(ANeExpr)> */
2078 var87 = var89;
2079 RET_LABEL88:(void)0;
2080 }
2081 }
2082 if (var87 == NULL) {
2083 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2084 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 225);
2085 show_backtrace(1);
2086 } else {
2087 { /* Inline flow#FlowContext#when_false (var87) on <var87:nullable FlowContext> */
2088 if (unlikely(var87 == NULL)) {
2089 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2090 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
2091 show_backtrace(1);
2092 }
2093 var92 = var87->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var87:nullable FlowContext> */
2094 if (unlikely(var92 == NULL)) {
2095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2096 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 228);
2097 show_backtrace(1);
2098 }
2099 var90 = var92;
2100 RET_LABEL91:(void)0;
2101 }
2102 }
2103 {
2104 typing__FlowContext__set_var(var90, var_variable, var_mtype2); /* Direct call typing#FlowContext#set_var on <var90:FlowContext>*/
2105 }
2106 {
2107 { /* Inline flow#AExpr#after_flow_context (var_anode) on <var_anode:ABinopExpr(ANeExpr)> */
2108 var95 = var_anode->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(ANeExpr)> */
2109 var93 = var95;
2110 RET_LABEL94:(void)0;
2111 }
2112 }
2113 if (var93 == NULL) {
2114 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2115 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 226);
2116 show_backtrace(1);
2117 } else {
2118 { /* Inline flow#FlowContext#when_true (var93) on <var93:nullable FlowContext> */
2119 if (unlikely(var93 == NULL)) {
2120 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2121 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
2122 show_backtrace(1);
2123 }
2124 var98 = var93->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var93:nullable FlowContext> */
2125 if (unlikely(var98 == NULL)) {
2126 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2127 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 225);
2128 show_backtrace(1);
2129 }
2130 var96 = var98;
2131 RET_LABEL97:(void)0;
2132 }
2133 }
2134 {
2135 { /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:nullable MType(MNullableType)> */
2136 var101 = var_mtype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_mtype:nullable MType(MNullableType)> */
2137 if (unlikely(var101 == NULL)) {
2138 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2139 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
2140 show_backtrace(1);
2141 }
2142 var99 = var101;
2143 RET_LABEL100:(void)0;
2144 }
2145 }
2146 {
2147 typing__FlowContext__set_var(var96, var_variable, var99); /* Direct call typing#FlowContext#set_var on <var96:FlowContext>*/
2148 }
2149 } else {
2150 PRINT_ERROR("Runtime error: %s", "Aborted");
2151 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 228);
2152 show_backtrace(1);
2153 }
2154 }
2155 RET_LABEL:;
2156 }
2157 /* method typing#TypeVisitor#null_test for (self: Object, ABinopExpr) */
2158 void VIRTUAL_typing__TypeVisitor__null_test(val* self, val* p0) {
2159 typing__TypeVisitor__null_test(self, p0); /* Direct call typing#TypeVisitor#null_test on <self:Object(TypeVisitor)>*/
2160 RET_LABEL:;
2161 }
2162 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
2163 val* typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
2164 val* var /* : nullable MProperty */;
2165 val* var_anode /* var anode: ANode */;
2166 val* var_mtype /* var mtype: MType */;
2167 val* var_name /* var name: String */;
2168 val* var1 /* : ModelBuilder */;
2169 val* var3 /* : ModelBuilder */;
2170 val* var4 /* : MModule */;
2171 val* var6 /* : MModule */;
2172 val* var7 /* : nullable MProperty */;
2173 var_anode = p0;
2174 var_mtype = p1;
2175 var_name = p2;
2176 {
2177 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
2178 var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2179 if (unlikely(var3 == NULL)) {
2180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2181 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
2182 show_backtrace(1);
2183 }
2184 var1 = var3;
2185 RET_LABEL2:(void)0;
2186 }
2187 }
2188 {
2189 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
2190 var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2191 if (unlikely(var6 == NULL)) {
2192 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2193 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
2194 show_backtrace(1);
2195 }
2196 var4 = var6;
2197 RET_LABEL5:(void)0;
2198 }
2199 }
2200 {
2201 var7 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2(var1, var_anode, var4, var_mtype, var_name);
2202 }
2203 var = var7;
2204 goto RET_LABEL;
2205 RET_LABEL:;
2206 return var;
2207 }
2208 /* method typing#TypeVisitor#try_get_mproperty_by_name2 for (self: Object, ANode, MType, String): nullable MProperty */
2209 val* VIRTUAL_typing__TypeVisitor__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
2210 val* var /* : nullable MProperty */;
2211 val* var1 /* : nullable MProperty */;
2212 var1 = typing__TypeVisitor__try_get_mproperty_by_name2(self, p0, p1, p2);
2213 var = var1;
2214 RET_LABEL:;
2215 return var;
2216 }
2217 /* method typing#TypeVisitor#resolve_mtype for (self: TypeVisitor, AType): nullable MType */
2218 val* typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
2219 val* var /* : nullable MType */;
2220 val* var_node /* var node: AType */;
2221 val* var1 /* : ModelBuilder */;
2222 val* var3 /* : ModelBuilder */;
2223 val* var4 /* : MModule */;
2224 val* var6 /* : MModule */;
2225 val* var7 /* : nullable MClassDef */;
2226 val* var9 /* : nullable MClassDef */;
2227 val* var10 /* : nullable MType */;
2228 var_node = p0;
2229 {
2230 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
2231 var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2232 if (unlikely(var3 == NULL)) {
2233 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2234 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
2235 show_backtrace(1);
2236 }
2237 var1 = var3;
2238 RET_LABEL2:(void)0;
2239 }
2240 }
2241 {
2242 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
2243 var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2244 if (unlikely(var6 == NULL)) {
2245 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2246 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
2247 show_backtrace(1);
2248 }
2249 var4 = var6;
2250 RET_LABEL5:(void)0;
2251 }
2252 }
2253 {
2254 { /* Inline typing#TypeVisitor#mclassdef (self) on <self:TypeVisitor> */
2255 var9 = self->attrs[COLOR_typing__TypeVisitor___mclassdef].val; /* _mclassdef on <self:TypeVisitor> */
2256 var7 = var9;
2257 RET_LABEL8:(void)0;
2258 }
2259 }
2260 {
2261 var10 = modelize_class__ModelBuilder__resolve_mtype(var1, var4, var7, var_node);
2262 }
2263 var = var10;
2264 goto RET_LABEL;
2265 RET_LABEL:;
2266 return var;
2267 }
2268 /* method typing#TypeVisitor#resolve_mtype for (self: Object, AType): nullable MType */
2269 val* VIRTUAL_typing__TypeVisitor__resolve_mtype(val* self, val* p0) {
2270 val* var /* : nullable MType */;
2271 val* var1 /* : nullable MType */;
2272 var1 = typing__TypeVisitor__resolve_mtype(self, p0);
2273 var = var1;
2274 RET_LABEL:;
2275 return var;
2276 }
2277 /* method typing#TypeVisitor#try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
2278 val* typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
2279 val* var /* : nullable MClass */;
2280 val* var_node /* var node: ANode */;
2281 val* var_name /* var name: String */;
2282 val* var1 /* : ModelBuilder */;
2283 val* var3 /* : ModelBuilder */;
2284 val* var4 /* : MModule */;
2285 val* var6 /* : MModule */;
2286 val* var7 /* : nullable MClass */;
2287 val* var_mclass /* var mclass: nullable MClass */;
2288 var_node = p0;
2289 var_name = p1;
2290 {
2291 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
2292 var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2293 if (unlikely(var3 == NULL)) {
2294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2295 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
2296 show_backtrace(1);
2297 }
2298 var1 = var3;
2299 RET_LABEL2:(void)0;
2300 }
2301 }
2302 {
2303 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
2304 var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2305 if (unlikely(var6 == NULL)) {
2306 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2307 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
2308 show_backtrace(1);
2309 }
2310 var4 = var6;
2311 RET_LABEL5:(void)0;
2312 }
2313 }
2314 {
2315 var7 = modelbuilder__ModelBuilder__try_get_mclass_by_name(var1, var_node, var4, var_name);
2316 }
2317 var_mclass = var7;
2318 var = var_mclass;
2319 goto RET_LABEL;
2320 RET_LABEL:;
2321 return var;
2322 }
2323 /* method typing#TypeVisitor#try_get_mclass for (self: Object, ANode, String): nullable MClass */
2324 val* VIRTUAL_typing__TypeVisitor__try_get_mclass(val* self, val* p0, val* p1) {
2325 val* var /* : nullable MClass */;
2326 val* var1 /* : nullable MClass */;
2327 var1 = typing__TypeVisitor__try_get_mclass(self, p0, p1);
2328 var = var1;
2329 RET_LABEL:;
2330 return var;
2331 }
2332 /* method typing#TypeVisitor#get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
2333 val* typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
2334 val* var /* : nullable MClass */;
2335 val* var_node /* var node: ANode */;
2336 val* var_name /* var name: String */;
2337 val* var1 /* : ModelBuilder */;
2338 val* var3 /* : ModelBuilder */;
2339 val* var4 /* : MModule */;
2340 val* var6 /* : MModule */;
2341 val* var7 /* : nullable MClass */;
2342 val* var_mclass /* var mclass: nullable MClass */;
2343 val* var8 /* : null */;
2344 short int var9 /* : Bool */;
2345 short int var10 /* : Bool */;
2346 val* var_other /* var other: nullable Object */;
2347 short int var12 /* : Bool */;
2348 short int var14 /* : Bool */;
2349 val* var15 /* : ModelBuilder */;
2350 val* var17 /* : ModelBuilder */;
2351 static val* varonce;
2352 val* var18 /* : String */;
2353 char* var19 /* : NativeString */;
2354 long var20 /* : Int */;
2355 val* var21 /* : FlatString */;
2356 static val* varonce22;
2357 val* var23 /* : String */;
2358 char* var24 /* : NativeString */;
2359 long var25 /* : Int */;
2360 val* var26 /* : FlatString */;
2361 val* var27 /* : Array[Object] */;
2362 long var28 /* : Int */;
2363 val* var29 /* : NativeArray[Object] */;
2364 val* var30 /* : String */;
2365 var_node = p0;
2366 var_name = p1;
2367 {
2368 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
2369 var3 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2370 if (unlikely(var3 == NULL)) {
2371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2372 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
2373 show_backtrace(1);
2374 }
2375 var1 = var3;
2376 RET_LABEL2:(void)0;
2377 }
2378 }
2379 {
2380 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
2381 var6 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2382 if (unlikely(var6 == NULL)) {
2383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2384 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
2385 show_backtrace(1);
2386 }
2387 var4 = var6;
2388 RET_LABEL5:(void)0;
2389 }
2390 }
2391 {
2392 var7 = modelbuilder__ModelBuilder__try_get_mclass_by_name(var1, var_node, var4, var_name);
2393 }
2394 var_mclass = var7;
2395 var8 = NULL;
2396 if (var_mclass == NULL) {
2397 var9 = 1; /* is null */
2398 } else {
2399 var9 = 0; /* arg is null but recv is not */
2400 }
2401 if (0) {
2402 { /* Inline kernel#Object#== (var_mclass,var8) on <var_mclass:nullable MClass> */
2403 var_other = var8;
2404 {
2405 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2406 var14 = var_mclass == var_other;
2407 var12 = var14;
2408 goto RET_LABEL13;
2409 RET_LABEL13:(void)0;
2410 }
2411 }
2412 var10 = var12;
2413 goto RET_LABEL11;
2414 RET_LABEL11:(void)0;
2415 }
2416 var9 = var10;
2417 }
2418 if (var9){
2419 {
2420 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
2421 var17 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2422 if (unlikely(var17 == NULL)) {
2423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2424 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
2425 show_backtrace(1);
2426 }
2427 var15 = var17;
2428 RET_LABEL16:(void)0;
2429 }
2430 }
2431 if (varonce) {
2432 var18 = varonce;
2433 } else {
2434 var19 = "Type Error: missing primitive class `";
2435 var20 = 37;
2436 var21 = string__NativeString__to_s_with_length(var19, var20);
2437 var18 = var21;
2438 varonce = var18;
2439 }
2440 if (varonce22) {
2441 var23 = varonce22;
2442 } else {
2443 var24 = "\'.";
2444 var25 = 2;
2445 var26 = string__NativeString__to_s_with_length(var24, var25);
2446 var23 = var26;
2447 varonce22 = var23;
2448 }
2449 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
2450 { /* var27 = array_instance Array[Object] */
2451 var28 = 3;
2452 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
2453 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var18;
2454 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_name;
2455 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var23;
2456 {
2457 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
2458 }
2459 }
2460 {
2461 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
2462 }
2463 {
2464 modelbuilder__ModelBuilder__error(var15, var_node, var30); /* Direct call modelbuilder#ModelBuilder#error on <var15:ModelBuilder>*/
2465 }
2466 } else {
2467 }
2468 var = var_mclass;
2469 goto RET_LABEL;
2470 RET_LABEL:;
2471 return var;
2472 }
2473 /* method typing#TypeVisitor#get_mclass for (self: Object, ANode, String): nullable MClass */
2474 val* VIRTUAL_typing__TypeVisitor__get_mclass(val* self, val* p0, val* p1) {
2475 val* var /* : nullable MClass */;
2476 val* var1 /* : nullable MClass */;
2477 var1 = typing__TypeVisitor__get_mclass(self, p0, p1);
2478 var = var1;
2479 RET_LABEL:;
2480 return var;
2481 }
2482 /* method typing#TypeVisitor#type_bool for (self: TypeVisitor, ANode): nullable MType */
2483 val* typing__TypeVisitor__type_bool(val* self, val* p0) {
2484 val* var /* : nullable MType */;
2485 val* var_node /* var node: ANode */;
2486 static val* varonce;
2487 val* var1 /* : String */;
2488 char* var2 /* : NativeString */;
2489 long var3 /* : Int */;
2490 val* var4 /* : FlatString */;
2491 val* var5 /* : nullable MClass */;
2492 val* var_mclass /* var mclass: nullable MClass */;
2493 val* var6 /* : null */;
2494 short int var7 /* : Bool */;
2495 short int var8 /* : Bool */;
2496 val* var_other /* var other: nullable Object */;
2497 short int var10 /* : Bool */;
2498 short int var12 /* : Bool */;
2499 val* var13 /* : null */;
2500 val* var14 /* : MClassType */;
2501 val* var16 /* : MClassType */;
2502 var_node = p0;
2503 if (varonce) {
2504 var1 = varonce;
2505 } else {
2506 var2 = "Bool";
2507 var3 = 4;
2508 var4 = string__NativeString__to_s_with_length(var2, var3);
2509 var1 = var4;
2510 varonce = var1;
2511 }
2512 {
2513 var5 = typing__TypeVisitor__get_mclass(self, var_node, var1);
2514 }
2515 var_mclass = var5;
2516 var6 = NULL;
2517 if (var_mclass == NULL) {
2518 var7 = 1; /* is null */
2519 } else {
2520 var7 = 0; /* arg is null but recv is not */
2521 }
2522 if (0) {
2523 { /* Inline kernel#Object#== (var_mclass,var6) on <var_mclass:nullable MClass> */
2524 var_other = var6;
2525 {
2526 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2527 var12 = var_mclass == var_other;
2528 var10 = var12;
2529 goto RET_LABEL11;
2530 RET_LABEL11:(void)0;
2531 }
2532 }
2533 var8 = var10;
2534 goto RET_LABEL9;
2535 RET_LABEL9:(void)0;
2536 }
2537 var7 = var8;
2538 }
2539 if (var7){
2540 var13 = NULL;
2541 var = var13;
2542 goto RET_LABEL;
2543 } else {
2544 }
2545 {
2546 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2547 var16 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2548 if (unlikely(var16 == NULL)) {
2549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2550 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
2551 show_backtrace(1);
2552 }
2553 var14 = var16;
2554 RET_LABEL15:(void)0;
2555 }
2556 }
2557 var = var14;
2558 goto RET_LABEL;
2559 RET_LABEL:;
2560 return var;
2561 }
2562 /* method typing#TypeVisitor#type_bool for (self: Object, ANode): nullable MType */
2563 val* VIRTUAL_typing__TypeVisitor__type_bool(val* self, val* p0) {
2564 val* var /* : nullable MType */;
2565 val* var1 /* : nullable MType */;
2566 var1 = typing__TypeVisitor__type_bool(self, p0);
2567 var = var1;
2568 RET_LABEL:;
2569 return var;
2570 }
2571 /* method typing#TypeVisitor#get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
2572 val* typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
2573 val* var /* : nullable CallSite */;
2574 val* var_node /* var node: ANode */;
2575 val* var_recvtype /* var recvtype: MType */;
2576 val* var_name /* var name: String */;
2577 short int var_recv_is_self /* var recv_is_self: Bool */;
2578 val* var1 /* : MType */;
2579 val* var_unsafe_type /* var unsafe_type: MType */;
2580 short int var2 /* : Bool */;
2581 int cltype;
2582 int idtype;
2583 static val* varonce;
2584 val* var3 /* : String */;
2585 char* var4 /* : NativeString */;
2586 long var5 /* : Int */;
2587 val* var6 /* : FlatString */;
2588 static val* varonce7;
2589 val* var8 /* : String */;
2590 char* var9 /* : NativeString */;
2591 long var10 /* : Int */;
2592 val* var11 /* : FlatString */;
2593 val* var12 /* : Array[Object] */;
2594 long var13 /* : Int */;
2595 val* var14 /* : NativeArray[Object] */;
2596 val* var15 /* : String */;
2597 val* var16 /* : null */;
2598 val* var17 /* : nullable MProperty */;
2599 val* var_mproperty /* var mproperty: nullable MProperty */;
2600 short int var18 /* : Bool */;
2601 static val* varonce19;
2602 val* var20 /* : String */;
2603 char* var21 /* : NativeString */;
2604 long var22 /* : Int */;
2605 val* var23 /* : FlatString */;
2606 short int var24 /* : Bool */;
2607 short int var25 /* : Bool */;
2608 short int var_ /* var : Bool */;
2609 val* var26 /* : null */;
2610 short int var27 /* : Bool */;
2611 short int var28 /* : Bool */;
2612 val* var_other /* var other: nullable Object */;
2613 short int var30 /* : Bool */;
2614 short int var32 /* : Bool */;
2615 static val* varonce33;
2616 val* var34 /* : String */;
2617 char* var35 /* : NativeString */;
2618 long var36 /* : Int */;
2619 val* var37 /* : FlatString */;
2620 val* var38 /* : nullable MProperty */;
2621 val* var39 /* : null */;
2622 short int var40 /* : Bool */;
2623 short int var41 /* : Bool */;
2624 short int var43 /* : Bool */;
2625 short int var45 /* : Bool */;
2626 val* var46 /* : ModelBuilder */;
2627 val* var48 /* : ModelBuilder */;
2628 static val* varonce49;
2629 val* var50 /* : String */;
2630 char* var51 /* : NativeString */;
2631 long var52 /* : Int */;
2632 val* var53 /* : FlatString */;
2633 static val* varonce54;
2634 val* var55 /* : String */;
2635 char* var56 /* : NativeString */;
2636 long var57 /* : Int */;
2637 val* var58 /* : FlatString */;
2638 static val* varonce59;
2639 val* var60 /* : String */;
2640 char* var61 /* : NativeString */;
2641 long var62 /* : Int */;
2642 val* var63 /* : FlatString */;
2643 val* var64 /* : Array[Object] */;
2644 long var65 /* : Int */;
2645 val* var66 /* : NativeArray[Object] */;
2646 val* var67 /* : String */;
2647 val* var68 /* : ModelBuilder */;
2648 val* var70 /* : ModelBuilder */;
2649 static val* varonce71;
2650 val* var72 /* : String */;
2651 char* var73 /* : NativeString */;
2652 long var74 /* : Int */;
2653 val* var75 /* : FlatString */;
2654 static val* varonce76;
2655 val* var77 /* : String */;
2656 char* var78 /* : NativeString */;
2657 long var79 /* : Int */;
2658 val* var80 /* : FlatString */;
2659 static val* varonce81;
2660 val* var82 /* : String */;
2661 char* var83 /* : NativeString */;
2662 long var84 /* : Int */;
2663 val* var85 /* : FlatString */;
2664 val* var86 /* : Array[Object] */;
2665 long var87 /* : Int */;
2666 val* var88 /* : NativeArray[Object] */;
2667 val* var89 /* : String */;
2668 val* var90 /* : null */;
2669 short int var91 /* : Bool */;
2670 int cltype92;
2671 int idtype93;
2672 short int var94 /* : Bool */;
2673 short int var95 /* : Bool */;
2674 short int var96 /* : Bool */;
2675 short int var98 /* : Bool */;
2676 short int var_99 /* var : Bool */;
2677 short int var_100 /* var : Bool */;
2678 short int var101 /* : Bool */;
2679 short int var103 /* : Bool */;
2680 short int var104 /* : Bool */;
2681 static val* varonce105;
2682 val* var106 /* : String */;
2683 char* var107 /* : NativeString */;
2684 long var108 /* : Int */;
2685 val* var109 /* : FlatString */;
2686 static val* varonce110;
2687 val* var111 /* : String */;
2688 char* var112 /* : NativeString */;
2689 long var113 /* : Int */;
2690 val* var114 /* : FlatString */;
2691 val* var115 /* : Array[Object] */;
2692 long var116 /* : Int */;
2693 val* var117 /* : NativeArray[Object] */;
2694 val* var118 /* : String */;
2695 short int var119 /* : Bool */;
2696 short int var120 /* : Bool */;
2697 short int var_121 /* var : Bool */;
2698 short int var122 /* : Bool */;
2699 short int var124 /* : Bool */;
2700 static val* varonce125;
2701 val* var126 /* : String */;
2702 char* var127 /* : NativeString */;
2703 long var128 /* : Int */;
2704 val* var129 /* : FlatString */;
2705 static val* varonce130;
2706 val* var131 /* : String */;
2707 char* var132 /* : NativeString */;
2708 long var133 /* : Int */;
2709 val* var134 /* : FlatString */;
2710 val* var135 /* : Array[Object] */;
2711 long var136 /* : Int */;
2712 val* var137 /* : NativeArray[Object] */;
2713 val* var138 /* : String */;
2714 short int var139 /* : Bool */;
2715 short int var140 /* : Bool */;
2716 short int var141 /* : Bool */;
2717 val* var142 /* : MVisibility */;
2718 val* var144 /* : MVisibility */;
2719 val* var145 /* : MVisibility */;
2720 short int var146 /* : Bool */;
2721 short int var147 /* : Bool */;
2722 short int var149 /* : Bool */;
2723 short int var151 /* : Bool */;
2724 short int var_152 /* var : Bool */;
2725 short int var153 /* : Bool */;
2726 short int var_154 /* var : Bool */;
2727 val* var155 /* : MModule */;
2728 val* var157 /* : MModule */;
2729 val* var158 /* : MClassDef */;
2730 val* var160 /* : MClassDef */;
2731 val* var161 /* : MModule */;
2732 val* var163 /* : MModule */;
2733 val* var164 /* : MVisibility */;
2734 val* var165 /* : MVisibility */;
2735 short int var166 /* : Bool */;
2736 short int var_167 /* var : Bool */;
2737 val* var168 /* : ModelBuilder */;
2738 val* var170 /* : ModelBuilder */;
2739 val* var171 /* : ToolContext */;
2740 val* var173 /* : ToolContext */;
2741 val* var174 /* : OptionBool */;
2742 val* var176 /* : OptionBool */;
2743 val* var177 /* : nullable Object */;
2744 val* var179 /* : nullable Object */;
2745 short int var180 /* : Bool */;
2746 short int var181 /* : Bool */;
2747 val* var182 /* : ModelBuilder */;
2748 val* var184 /* : ModelBuilder */;
2749 static val* varonce185;
2750 val* var186 /* : String */;
2751 char* var187 /* : NativeString */;
2752 long var188 /* : Int */;
2753 val* var189 /* : FlatString */;
2754 static val* varonce190;
2755 val* var191 /* : String */;
2756 char* var192 /* : NativeString */;
2757 long var193 /* : Int */;
2758 val* var194 /* : FlatString */;
2759 val* var195 /* : Array[Object] */;
2760 long var196 /* : Int */;
2761 val* var197 /* : NativeArray[Object] */;
2762 val* var198 /* : String */;
2763 val* var199 /* : null */;
2764 val* var200 /* : nullable MDeprecationInfo */;
2765 val* var202 /* : nullable MDeprecationInfo */;
2766 val* var_info /* var info: nullable MDeprecationInfo */;
2767 short int var203 /* : Bool */;
2768 val* var204 /* : null */;
2769 short int var205 /* : Bool */;
2770 short int var206 /* : Bool */;
2771 val* var_other208 /* var other: nullable Object */;
2772 short int var209 /* : Bool */;
2773 short int var210 /* : Bool */;
2774 short int var211 /* : Bool */;
2775 short int var_212 /* var : Bool */;
2776 val* var213 /* : nullable MPropDef */;
2777 val* var215 /* : nullable MPropDef */;
2778 val* var216 /* : MProperty */;
2779 val* var218 /* : MProperty */;
2780 val* var219 /* : nullable MDeprecationInfo */;
2781 val* var221 /* : nullable MDeprecationInfo */;
2782 val* var222 /* : null */;
2783 short int var223 /* : Bool */;
2784 short int var224 /* : Bool */;
2785 short int var226 /* : Bool */;
2786 short int var228 /* : Bool */;
2787 val* var229 /* : nullable MDoc */;
2788 val* var231 /* : nullable MDoc */;
2789 val* var_mdoc /* var mdoc: nullable MDoc */;
2790 val* var232 /* : null */;
2791 short int var233 /* : Bool */;
2792 short int var234 /* : Bool */;
2793 short int var236 /* : Bool */;
2794 short int var237 /* : Bool */;
2795 short int var238 /* : Bool */;
2796 val* var239 /* : ModelBuilder */;
2797 val* var241 /* : ModelBuilder */;
2798 static val* varonce242;
2799 val* var243 /* : String */;
2800 char* var244 /* : NativeString */;
2801 long var245 /* : Int */;
2802 val* var246 /* : FlatString */;
2803 static val* varonce247;
2804 val* var248 /* : String */;
2805 char* var249 /* : NativeString */;
2806 long var250 /* : Int */;
2807 val* var251 /* : FlatString */;
2808 static val* varonce252;
2809 val* var253 /* : String */;
2810 char* var254 /* : NativeString */;
2811 long var255 /* : Int */;
2812 val* var256 /* : FlatString */;
2813 val* var257 /* : Array[String] */;
2814 val* var259 /* : Array[String] */;
2815 val* var260 /* : nullable Object */;
2816 val* var261 /* : Array[Object] */;
2817 long var262 /* : Int */;
2818 val* var263 /* : NativeArray[Object] */;
2819 val* var264 /* : String */;
2820 val* var265 /* : ModelBuilder */;
2821 val* var267 /* : ModelBuilder */;
2822 static val* varonce268;
2823 val* var269 /* : String */;
2824 char* var270 /* : NativeString */;
2825 long var271 /* : Int */;
2826 val* var272 /* : FlatString */;
2827 static val* varonce273;
2828 val* var274 /* : String */;
2829 char* var275 /* : NativeString */;
2830 long var276 /* : Int */;
2831 val* var277 /* : FlatString */;
2832 static val* varonce278;
2833 val* var279 /* : String */;
2834 char* var280 /* : NativeString */;
2835 long var281 /* : Int */;
2836 val* var282 /* : FlatString */;
2837 val* var283 /* : Array[Object] */;
2838 long var284 /* : Int */;
2839 val* var285 /* : NativeArray[Object] */;
2840 val* var286 /* : String */;
2841 val* var287 /* : MModule */;
2842 val* var289 /* : MModule */;
2843 val* var290 /* : Array[MPropDef] */;
2844 val* var_propdefs /* var propdefs: Array[MMethodDef] */;
2845 long var291 /* : Int */;
2846 long var293 /* : Int */;
2847 long var294 /* : Int */;
2848 short int var295 /* : Bool */;
2849 short int var296 /* : Bool */;
2850 short int var298 /* : Bool */;
2851 val* var299 /* : ModelBuilder */;
2852 val* var301 /* : ModelBuilder */;
2853 static val* varonce302;
2854 val* var303 /* : String */;
2855 char* var304 /* : NativeString */;
2856 long var305 /* : Int */;
2857 val* var306 /* : FlatString */;
2858 static val* varonce307;
2859 val* var308 /* : String */;
2860 char* var309 /* : NativeString */;
2861 long var310 /* : Int */;
2862 val* var311 /* : FlatString */;
2863 val* var312 /* : Array[Object] */;
2864 long var313 /* : Int */;
2865 val* var314 /* : NativeArray[Object] */;
2866 val* var315 /* : String */;
2867 val* var316 /* : null */;
2868 long var317 /* : Int */;
2869 long var319 /* : Int */;
2870 long var320 /* : Int */;
2871 short int var321 /* : Bool */;
2872 short int var322 /* : Bool */;
2873 short int var324 /* : Bool */;
2874 val* var325 /* : nullable Object */;
2875 val* var_mpropdef /* var mpropdef: nullable Object */;
2876 val* var326 /* : ModelBuilder */;
2877 val* var328 /* : ModelBuilder */;
2878 static val* varonce329;
2879 val* var330 /* : String */;
2880 char* var331 /* : NativeString */;
2881 long var332 /* : Int */;
2882 val* var333 /* : FlatString */;
2883 static val* varonce334;
2884 val* var335 /* : String */;
2885 char* var336 /* : NativeString */;
2886 long var337 /* : Int */;
2887 val* var338 /* : FlatString */;
2888 static val* varonce339;
2889 val* var340 /* : String */;
2890 char* var341 /* : NativeString */;
2891 long var342 /* : Int */;
2892 val* var343 /* : FlatString */;
2893 static val* varonce344;
2894 val* var345 /* : String */;
2895 char* var346 /* : NativeString */;
2896 long var347 /* : Int */;
2897 val* var348 /* : FlatString */;
2898 static val* varonce349;
2899 val* var350 /* : String */;
2900 char* var351 /* : NativeString */;
2901 long var352 /* : Int */;
2902 val* var353 /* : FlatString */;
2903 val* var354 /* : String */;
2904 val* var355 /* : Array[Object] */;
2905 long var356 /* : Int */;
2906 val* var357 /* : NativeArray[Object] */;
2907 val* var358 /* : String */;
2908 val* var359 /* : MPropDef */;
2909 val* var361 /* : MPropDef */;
2910 val* var362 /* : MSignature */;
2911 val* var363 /* : nullable MSignature */;
2912 val* var365 /* : nullable MSignature */;
2913 val* var366 /* : nullable MSignature */;
2914 val* var368 /* : nullable MSignature */;
2915 val* var_msignature /* var msignature: MSignature */;
2916 val* var369 /* : MType */;
2917 short int var370 /* : Bool */;
2918 int cltype371;
2919 int idtype372;
2920 const char* var_class_name;
2921 short int var373 /* : Bool */;
2922 short int var_erasure_cast /* var erasure_cast: Bool */;
2923 val* var374 /* : nullable MSignature */;
2924 val* var376 /* : nullable MSignature */;
2925 val* var377 /* : nullable MType */;
2926 val* var379 /* : nullable MType */;
2927 val* var_rettype /* var rettype: nullable MType */;
2928 short int var380 /* : Bool */;
2929 short int var381 /* : Bool */;
2930 short int var_382 /* var : Bool */;
2931 val* var383 /* : null */;
2932 short int var384 /* : Bool */;
2933 short int var385 /* : Bool */;
2934 short int var387 /* : Bool */;
2935 short int var388 /* : Bool */;
2936 short int var389 /* : Bool */;
2937 val* var390 /* : MType */;
2938 short int var391 /* : Bool */;
2939 int cltype392;
2940 int idtype393;
2941 val* var394 /* : nullable MType */;
2942 val* var396 /* : nullable MType */;
2943 val* var_erased_rettype /* var erased_rettype: nullable MType */;
2944 val* var397 /* : null */;
2945 short int var398 /* : Bool */;
2946 short int var399 /* : Bool */;
2947 short int var401 /* : Bool */;
2948 short int var402 /* : Bool */;
2949 short int var403 /* : Bool */;
2950 short int var404 /* : Bool */;
2951 val* var405 /* : CallSite */;
2952 val* var406 /* : MModule */;
2953 val* var408 /* : MModule */;
2954 val* var409 /* : nullable MClassType */;
2955 val* var411 /* : nullable MClassType */;
2956 val* var_callsite /* var callsite: CallSite */;
2957 var_node = p0;
2958 var_recvtype = p1;
2959 var_name = p2;
2960 var_recv_is_self = p3;
2961 {
2962 var1 = typing__TypeVisitor__anchor_to(self, var_recvtype);
2963 }
2964 var_unsafe_type = var1;
2965 /* <var_recvtype:MType> isa MNullType */
2966 cltype = type_model__MNullType.color;
2967 idtype = type_model__MNullType.id;
2968 if(cltype >= var_recvtype->type->table_size) {
2969 var2 = 0;
2970 } else {
2971 var2 = var_recvtype->type->type_table[cltype] == idtype;
2972 }
2973 if (var2){
2974 if (varonce) {
2975 var3 = varonce;
2976 } else {
2977 var4 = "Error: Method \'";
2978 var5 = 15;
2979 var6 = string__NativeString__to_s_with_length(var4, var5);
2980 var3 = var6;
2981 varonce = var3;
2982 }
2983 if (varonce7) {
2984 var8 = varonce7;
2985 } else {
2986 var9 = "\' call on \'null\'.";
2987 var10 = 17;
2988 var11 = string__NativeString__to_s_with_length(var9, var10);
2989 var8 = var11;
2990 varonce7 = var8;
2991 }
2992 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
2993 { /* var12 = array_instance Array[Object] */
2994 var13 = 3;
2995 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
2996 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var3;
2997 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var_name;
2998 ((struct instance_array__NativeArray*)var14)->values[2] = (val*) var8;
2999 {
3000 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
3001 }
3002 }
3003 {
3004 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
3005 }
3006 {
3007 typing__TypeVisitor__error(self, var_node, var15); /* Direct call typing#TypeVisitor#error on <self:TypeVisitor>*/
3008 }
3009 var16 = NULL;
3010 var = var16;
3011 goto RET_LABEL;
3012 } else {
3013 }
3014 {
3015 var17 = typing__TypeVisitor__try_get_mproperty_by_name2(self, var_node, var_unsafe_type, var_name);
3016 }
3017 var_mproperty = var17;
3018 if (varonce19) {
3019 var20 = varonce19;
3020 } else {
3021 var21 = "new";
3022 var22 = 3;
3023 var23 = string__NativeString__to_s_with_length(var21, var22);
3024 var20 = var23;
3025 varonce19 = var20;
3026 }
3027 {
3028 var25 = string__FlatString___61d_61d(var_name, var20);
3029 var24 = var25;
3030 }
3031 var_ = var24;
3032 if (var24){
3033 var26 = NULL;
3034 if (var_mproperty == NULL) {
3035 var27 = 1; /* is null */
3036 } else {
3037 var27 = 0; /* arg is null but recv is not */
3038 }
3039 if (0) {
3040 { /* Inline kernel#Object#== (var_mproperty,var26) on <var_mproperty:nullable MProperty> */
3041 var_other = var26;
3042 {
3043 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
3044 var32 = var_mproperty == var_other;
3045 var30 = var32;
3046 goto RET_LABEL31;
3047 RET_LABEL31:(void)0;
3048 }
3049 }
3050 var28 = var30;
3051 goto RET_LABEL29;
3052 RET_LABEL29:(void)0;
3053 }
3054 var27 = var28;
3055 }
3056 var18 = var27;
3057 } else {
3058 var18 = var_;
3059 }
3060 if (var18){
3061 if (varonce33) {
3062 var34 = varonce33;
3063 } else {
3064 var35 = "init";
3065 var36 = 4;
3066 var37 = string__NativeString__to_s_with_length(var35, var36);
3067 var34 = var37;
3068 varonce33 = var34;
3069 }
3070 var_name = var34;
3071 {
3072 var38 = typing__TypeVisitor__try_get_mproperty_by_name2(self, var_node, var_unsafe_type, var_name);
3073 }
3074 var_mproperty = var38;
3075 } else {
3076 }
3077 var39 = NULL;
3078 if (var_mproperty == NULL) {
3079 var40 = 1; /* is null */
3080 } else {
3081 var40 = 0; /* arg is null but recv is not */
3082 }
3083 if (0) {
3084 { /* Inline kernel#Object#== (var_mproperty,var39) on <var_mproperty:nullable MProperty> */
3085 var_other = var39;
3086 {
3087 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
3088 var45 = var_mproperty == var_other;
3089 var43 = var45;
3090 goto RET_LABEL44;
3091 RET_LABEL44:(void)0;
3092 }
3093 }
3094 var41 = var43;
3095 goto RET_LABEL42;
3096 RET_LABEL42:(void)0;
3097 }
3098 var40 = var41;
3099 }
3100 if (var40){
3101 if (var_recv_is_self){
3102 {
3103 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3104 var48 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3105 if (unlikely(var48 == NULL)) {
3106 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3107 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3108 show_backtrace(1);
3109 }
3110 var46 = var48;
3111 RET_LABEL47:(void)0;
3112 }
3113 }
3114 if (varonce49) {
3115 var50 = varonce49;
3116 } else {
3117 var51 = "Error: Method or variable \'";
3118 var52 = 27;
3119 var53 = string__NativeString__to_s_with_length(var51, var52);
3120 var50 = var53;
3121 varonce49 = var50;
3122 }
3123 if (varonce54) {
3124 var55 = varonce54;
3125 } else {
3126 var56 = "\' unknown in ";
3127 var57 = 13;
3128 var58 = string__NativeString__to_s_with_length(var56, var57);
3129 var55 = var58;
3130 varonce54 = var55;
3131 }
3132 if (varonce59) {
3133 var60 = varonce59;
3134 } else {
3135 var61 = ".";
3136 var62 = 1;
3137 var63 = string__NativeString__to_s_with_length(var61, var62);
3138 var60 = var63;
3139 varonce59 = var60;
3140 }
3141 var64 = NEW_array__Array(&type_array__Arraykernel__Object);
3142 { /* var64 = array_instance Array[Object] */
3143 var65 = 5;
3144 var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object);
3145 ((struct instance_array__NativeArray*)var66)->values[0] = (val*) var50;
3146 ((struct instance_array__NativeArray*)var66)->values[1] = (val*) var_name;
3147 ((struct instance_array__NativeArray*)var66)->values[2] = (val*) var55;
3148 ((struct instance_array__NativeArray*)var66)->values[3] = (val*) var_recvtype;
3149 ((struct instance_array__NativeArray*)var66)->values[4] = (val*) var60;
3150 {
3151 ((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
3152 }
3153 }
3154 {
3155 var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
3156 }
3157 {
3158 modelbuilder__ModelBuilder__error(var46, var_node, var67); /* Direct call modelbuilder#ModelBuilder#error on <var46:ModelBuilder>*/
3159 }
3160 } else {
3161 {
3162 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3163 var70 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3164 if (unlikely(var70 == NULL)) {
3165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3166 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3167 show_backtrace(1);
3168 }
3169 var68 = var70;
3170 RET_LABEL69:(void)0;
3171 }
3172 }
3173 if (varonce71) {
3174 var72 = varonce71;
3175 } else {
3176 var73 = "Error: Method \'";
3177 var74 = 15;
3178 var75 = string__NativeString__to_s_with_length(var73, var74);
3179 var72 = var75;
3180 varonce71 = var72;
3181 }
3182 if (varonce76) {
3183 var77 = varonce76;
3184 } else {
3185 var78 = "\' doesn\'t exists in ";
3186 var79 = 20;
3187 var80 = string__NativeString__to_s_with_length(var78, var79);
3188 var77 = var80;
3189 varonce76 = var77;
3190 }
3191 if (varonce81) {
3192 var82 = varonce81;
3193 } else {
3194 var83 = ".";
3195 var84 = 1;
3196 var85 = string__NativeString__to_s_with_length(var83, var84);
3197 var82 = var85;
3198 varonce81 = var82;
3199 }
3200 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
3201 { /* var86 = array_instance Array[Object] */
3202 var87 = 5;
3203 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
3204 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var72;
3205 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var_name;
3206 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var77;
3207 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var_recvtype;
3208 ((struct instance_array__NativeArray*)var88)->values[4] = (val*) var82;
3209 {
3210 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
3211 }
3212 }
3213 {
3214 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
3215 }
3216 {
3217 modelbuilder__ModelBuilder__error(var68, var_node, var89); /* Direct call modelbuilder#ModelBuilder#error on <var68:ModelBuilder>*/
3218 }
3219 }
3220 var90 = NULL;
3221 var = var90;
3222 goto RET_LABEL;
3223 } else {
3224 }
3225 /* <var_mproperty:nullable MProperty(MProperty)> isa MMethod */
3226 cltype92 = type_model__MMethod.color;
3227 idtype93 = type_model__MMethod.id;
3228 if(cltype92 >= var_mproperty->type->table_size) {
3229 var91 = 0;
3230 } else {
3231 var91 = var_mproperty->type->type_table[cltype92] == idtype93;
3232 }
3233 if (unlikely(!var91)) {
3234 PRINT_ERROR("Runtime error: %s", "Assert failed");
3235 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 290);
3236 show_backtrace(1);
3237 }
3238 {
3239 { /* Inline typing#TypeVisitor#is_toplevel_context (self) on <self:TypeVisitor> */
3240 var98 = self->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <self:TypeVisitor> */
3241 var96 = var98;
3242 RET_LABEL97:(void)0;
3243 }
3244 }
3245 var_99 = var96;
3246 if (var96){
3247 var95 = var_recv_is_self;
3248 } else {
3249 var95 = var_99;
3250 }
3251 var_100 = var95;
3252 if (var95){
3253 {
3254 { /* Inline model#MMethod#is_toplevel (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
3255 var103 = var_mproperty->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mproperty:nullable MProperty(MMethod)> */
3256 var101 = var103;
3257 RET_LABEL102:(void)0;
3258 }
3259 }
3260 var104 = !var101;
3261 var94 = var104;
3262 } else {
3263 var94 = var_100;
3264 }
3265 if (var94){
3266 if (varonce105) {
3267 var106 = varonce105;
3268 } else {
3269 var107 = "Error: \'";
3270 var108 = 8;
3271 var109 = string__NativeString__to_s_with_length(var107, var108);
3272 var106 = var109;
3273 varonce105 = var106;
3274 }
3275 if (varonce110) {
3276 var111 = varonce110;
3277 } else {
3278 var112 = "\' is not a top-level method, thus need a receiver.";
3279 var113 = 50;
3280 var114 = string__NativeString__to_s_with_length(var112, var113);
3281 var111 = var114;
3282 varonce110 = var111;
3283 }
3284 var115 = NEW_array__Array(&type_array__Arraykernel__Object);
3285 { /* var115 = array_instance Array[Object] */
3286 var116 = 3;
3287 var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
3288 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var106;
3289 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_name;
3290 ((struct instance_array__NativeArray*)var117)->values[2] = (val*) var111;
3291 {
3292 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
3293 }
3294 }
3295 {
3296 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
3297 }
3298 {
3299 typing__TypeVisitor__error(self, var_node, var118); /* Direct call typing#TypeVisitor#error on <self:TypeVisitor>*/
3300 }
3301 } else {
3302 }
3303 var120 = !var_recv_is_self;
3304 var_121 = var120;
3305 if (var120){
3306 {
3307 { /* Inline model#MMethod#is_toplevel (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
3308 var124 = var_mproperty->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mproperty:nullable MProperty(MMethod)> */
3309 var122 = var124;
3310 RET_LABEL123:(void)0;
3311 }
3312 }
3313 var119 = var122;
3314 } else {
3315 var119 = var_121;
3316 }
3317 if (var119){
3318 if (varonce125) {
3319 var126 = varonce125;
3320 } else {
3321 var127 = "Error: cannot call \'";
3322 var128 = 20;
3323 var129 = string__NativeString__to_s_with_length(var127, var128);
3324 var126 = var129;
3325 varonce125 = var126;
3326 }
3327 if (varonce130) {
3328 var131 = varonce130;
3329 } else {
3330 var132 = "\', a top-level method, with a receiver.";
3331 var133 = 39;
3332 var134 = string__NativeString__to_s_with_length(var132, var133);
3333 var131 = var134;
3334 varonce130 = var131;
3335 }
3336 var135 = NEW_array__Array(&type_array__Arraykernel__Object);
3337 { /* var135 = array_instance Array[Object] */
3338 var136 = 3;
3339 var137 = NEW_array__NativeArray(var136, &type_array__NativeArraykernel__Object);
3340 ((struct instance_array__NativeArray*)var137)->values[0] = (val*) var126;
3341 ((struct instance_array__NativeArray*)var137)->values[1] = (val*) var_name;
3342 ((struct instance_array__NativeArray*)var137)->values[2] = (val*) var131;
3343 {
3344 ((void (*)(val*, val*, long))(var135->class->vft[COLOR_array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
3345 }
3346 }
3347 {
3348 var138 = ((val* (*)(val*))(var135->class->vft[COLOR_string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
3349 }
3350 {
3351 typing__TypeVisitor__error(self, var_node, var138); /* Direct call typing#TypeVisitor#error on <self:TypeVisitor>*/
3352 }
3353 } else {
3354 }
3355 {
3356 { /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
3357 var144 = var_mproperty->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mproperty:nullable MProperty(MMethod)> */
3358 if (unlikely(var144 == NULL)) {
3359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3360 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3361 show_backtrace(1);
3362 }
3363 var142 = var144;
3364 RET_LABEL143:(void)0;
3365 }
3366 }
3367 {
3368 var145 = model_base__Object__protected_visibility(self);
3369 }
3370 {
3371 { /* Inline kernel#Object#== (var142,var145) on <var142:MVisibility> */
3372 var_other = var145;
3373 {
3374 { /* Inline kernel#Object#is_same_instance (var142,var_other) on <var142:MVisibility> */
3375 var151 = var142 == var_other;
3376 var149 = var151;
3377 goto RET_LABEL150;
3378 RET_LABEL150:(void)0;
3379 }
3380 }
3381 var147 = var149;
3382 goto RET_LABEL148;
3383 RET_LABEL148:(void)0;
3384 }
3385 var146 = var147;
3386 }
3387 var_152 = var146;
3388 if (var146){
3389 var153 = !var_recv_is_self;
3390 var141 = var153;
3391 } else {
3392 var141 = var_152;
3393 }
3394 var_154 = var141;
3395 if (var141){
3396 {
3397 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
3398 var157 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
3399 if (unlikely(var157 == NULL)) {
3400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3401 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
3402 show_backtrace(1);
3403 }
3404 var155 = var157;
3405 RET_LABEL156:(void)0;
3406 }
3407 }
3408 {
3409 { /* Inline model#MProperty#intro_mclassdef (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
3410 var160 = var_mproperty->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)> */
3411 if (unlikely(var160 == NULL)) {
3412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
3413 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
3414 show_backtrace(1);
3415 }
3416 var158 = var160;
3417 RET_LABEL159:(void)0;
3418 }
3419 }
3420 {
3421 { /* Inline model#MClassDef#mmodule (var158) on <var158:MClassDef> */
3422 var163 = var158->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var158:MClassDef> */
3423 if (unlikely(var163 == NULL)) {
3424 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3425 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3426 show_backtrace(1);
3427 }
3428 var161 = var163;
3429 RET_LABEL162:(void)0;
3430 }
3431 }
3432 {
3433 var164 = mmodule__MModule__visibility_for(var155, var161);
3434 }
3435 {
3436 var165 = model_base__Object__intrude_visibility(self);
3437 }
3438 {
3439 var166 = model_base__MVisibility___60d(var164, var165);
3440 }
3441 var140 = var166;
3442 } else {
3443 var140 = var_154;
3444 }
3445 var_167 = var140;
3446 if (var140){
3447 {
3448 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3449 var170 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3450 if (unlikely(var170 == NULL)) {
3451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3452 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3453 show_backtrace(1);
3454 }
3455 var168 = var170;
3456 RET_LABEL169:(void)0;
3457 }
3458 }
3459 {
3460 { /* Inline modelbuilder#ModelBuilder#toolcontext (var168) on <var168:ModelBuilder> */
3461 var173 = var168->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var168:ModelBuilder> */
3462 if (unlikely(var173 == NULL)) {
3463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3464 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
3465 show_backtrace(1);
3466 }
3467 var171 = var173;
3468 RET_LABEL172:(void)0;
3469 }
3470 }
3471 {
3472 { /* Inline modelbuilder#ToolContext#opt_ignore_visibility (var171) on <var171:ToolContext> */
3473 var176 = var171->attrs[COLOR_modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on <var171:ToolContext> */
3474 if (unlikely(var176 == NULL)) {
3475 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility");
3476 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 42);
3477 show_backtrace(1);
3478 }
3479 var174 = var176;
3480 RET_LABEL175:(void)0;
3481 }
3482 }
3483 {
3484 { /* Inline opts#Option#value (var174) on <var174:OptionBool> */
3485 var179 = var174->attrs[COLOR_opts__Option___value].val; /* _value on <var174:OptionBool> */
3486 var177 = var179;
3487 RET_LABEL178:(void)0;
3488 }
3489 }
3490 var180 = ((struct instance_kernel__Bool*)var177)->value; /* autounbox from nullable Object to Bool */;
3491 var181 = !var180;
3492 var139 = var181;
3493 } else {
3494 var139 = var_167;
3495 }
3496 if (var139){
3497 {
3498 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3499 var184 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3500 if (unlikely(var184 == NULL)) {
3501 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3502 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3503 show_backtrace(1);
3504 }
3505 var182 = var184;
3506 RET_LABEL183:(void)0;
3507 }
3508 }
3509 if (varonce185) {
3510 var186 = varonce185;
3511 } else {
3512 var187 = "Error: Method \'";
3513 var188 = 15;
3514 var189 = string__NativeString__to_s_with_length(var187, var188);
3515 var186 = var189;
3516 varonce185 = var186;
3517 }
3518 if (varonce190) {
3519 var191 = varonce190;
3520 } else {
3521 var192 = "\' is protected and can only acceded by self.";
3522 var193 = 44;
3523 var194 = string__NativeString__to_s_with_length(var192, var193);
3524 var191 = var194;
3525 varonce190 = var191;
3526 }
3527 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
3528 { /* var195 = array_instance Array[Object] */
3529 var196 = 3;
3530 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
3531 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var186;
3532 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var_name;
3533 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var191;
3534 {
3535 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
3536 }
3537 }
3538 {
3539 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
3540 }
3541 {
3542 modelbuilder__ModelBuilder__error(var182, var_node, var198); /* Direct call modelbuilder#ModelBuilder#error on <var182:ModelBuilder>*/
3543 }
3544 var199 = NULL;
3545 var = var199;
3546 goto RET_LABEL;
3547 } else {
3548 }
3549 {
3550 { /* Inline mdoc#MEntity#deprecation (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
3551 var202 = var_mproperty->attrs[COLOR_mdoc__MEntity___deprecation].val; /* _deprecation on <var_mproperty:nullable MProperty(MMethod)> */
3552 var200 = var202;
3553 RET_LABEL201:(void)0;
3554 }
3555 }
3556 var_info = var200;
3557 var204 = NULL;
3558 if (var_info == NULL) {
3559 var205 = 0; /* is null */
3560 } else {
3561 var205 = 1; /* arg is null and recv is not */
3562 }
3563 if (0) {
3564 { /* Inline kernel#Object#!= (var_info,var204) on <var_info:nullable MDeprecationInfo> */
3565 var_other208 = var204;
3566 {
3567 var210 = ((short int (*)(val*, val*))(var_info->class->vft[COLOR_kernel__Object___61d_61d]))(var_info, var_other208) /* == on <var_info:nullable MDeprecationInfo(MDeprecationInfo)>*/;
3568 var209 = var210;
3569 }
3570 var211 = !var209;
3571 var206 = var211;
3572 goto RET_LABEL207;
3573 RET_LABEL207:(void)0;
3574 }
3575 var205 = var206;
3576 }
3577 var_212 = var205;
3578 if (var205){
3579 {
3580 { /* Inline typing#TypeVisitor#mpropdef (self) on <self:TypeVisitor> */
3581 var215 = self->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <self:TypeVisitor> */
3582 var213 = var215;
3583 RET_LABEL214:(void)0;
3584 }
3585 }
3586 if (var213 == NULL) {
3587 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3588 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 305);
3589 show_backtrace(1);
3590 } else {
3591 { /* Inline model#MPropDef#mproperty (var213) on <var213:nullable MPropDef> */
3592 if (unlikely(var213 == NULL)) {
3593 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3594 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
3595 show_backtrace(1);
3596 }
3597 var218 = var213->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var213:nullable MPropDef> */
3598 if (unlikely(var218 == NULL)) {
3599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3600 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
3601 show_backtrace(1);
3602 }
3603 var216 = var218;
3604 RET_LABEL217:(void)0;
3605 }
3606 }
3607 {
3608 { /* Inline mdoc#MEntity#deprecation (var216) on <var216:MProperty> */
3609 var221 = var216->attrs[COLOR_mdoc__MEntity___deprecation].val; /* _deprecation on <var216:MProperty> */
3610 var219 = var221;
3611 RET_LABEL220:(void)0;
3612 }
3613 }
3614 var222 = NULL;
3615 if (var219 == NULL) {
3616 var223 = 1; /* is null */
3617 } else {
3618 var223 = 0; /* arg is null but recv is not */
3619 }
3620 if (0) {
3621 { /* Inline kernel#Object#== (var219,var222) on <var219:nullable MDeprecationInfo> */
3622 var_other = var222;
3623 {
3624 { /* Inline kernel#Object#is_same_instance (var219,var_other) on <var219:nullable MDeprecationInfo(MDeprecationInfo)> */
3625 var228 = var219 == var_other;
3626 var226 = var228;
3627 goto RET_LABEL227;
3628 RET_LABEL227:(void)0;
3629 }
3630 }
3631 var224 = var226;
3632 goto RET_LABEL225;
3633 RET_LABEL225:(void)0;
3634 }
3635 var223 = var224;
3636 }
3637 var203 = var223;
3638 } else {
3639 var203 = var_212;
3640 }
3641 if (var203){
3642 {
3643 { /* Inline mdoc#MDeprecationInfo#mdoc (var_info) on <var_info:nullable MDeprecationInfo(MDeprecationInfo)> */
3644 var231 = var_info->attrs[COLOR_mdoc__MDeprecationInfo___mdoc].val; /* _mdoc on <var_info:nullable MDeprecationInfo(MDeprecationInfo)> */
3645 var229 = var231;
3646 RET_LABEL230:(void)0;
3647 }
3648 }
3649 var_mdoc = var229;
3650 var232 = NULL;
3651 if (var_mdoc == NULL) {
3652 var233 = 0; /* is null */
3653 } else {
3654 var233 = 1; /* arg is null and recv is not */
3655 }
3656 if (0) {
3657 { /* Inline kernel#Object#!= (var_mdoc,var232) on <var_mdoc:nullable MDoc> */
3658 var_other208 = var232;
3659 {
3660 var237 = ((short int (*)(val*, val*))(var_mdoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_mdoc, var_other208) /* == on <var_mdoc:nullable MDoc(MDoc)>*/;
3661 var236 = var237;
3662 }
3663 var238 = !var236;
3664 var234 = var238;
3665 goto RET_LABEL235;
3666 RET_LABEL235:(void)0;
3667 }
3668 var233 = var234;
3669 }
3670 if (var233){
3671 {
3672 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3673 var241 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3674 if (unlikely(var241 == NULL)) {
3675 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3676 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3677 show_backtrace(1);
3678 }
3679 var239 = var241;
3680 RET_LABEL240:(void)0;
3681 }
3682 }
3683 if (varonce242) {
3684 var243 = varonce242;
3685 } else {
3686 var244 = "deprecated-method";
3687 var245 = 17;
3688 var246 = string__NativeString__to_s_with_length(var244, var245);
3689 var243 = var246;
3690 varonce242 = var243;
3691 }
3692 if (varonce247) {
3693 var248 = varonce247;
3694 } else {
3695 var249 = "Deprecation Warning: Method \'";
3696 var250 = 29;
3697 var251 = string__NativeString__to_s_with_length(var249, var250);
3698 var248 = var251;
3699 varonce247 = var248;
3700 }
3701 if (varonce252) {
3702 var253 = varonce252;
3703 } else {
3704 var254 = "\' is deprecated: ";
3705 var255 = 17;
3706 var256 = string__NativeString__to_s_with_length(var254, var255);
3707 var253 = var256;
3708 varonce252 = var253;
3709 }
3710 {
3711 { /* Inline mdoc#MDoc#content (var_mdoc) on <var_mdoc:nullable MDoc(MDoc)> */
3712 var259 = var_mdoc->attrs[COLOR_mdoc__MDoc___content].val; /* _content on <var_mdoc:nullable MDoc(MDoc)> */
3713 if (unlikely(var259 == NULL)) {
3714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
3715 PRINT_ERROR(" (%s:%d)\n", "model/mdoc.nit", 22);
3716 show_backtrace(1);
3717 }
3718 var257 = var259;
3719 RET_LABEL258:(void)0;
3720 }
3721 }
3722 {
3723 var260 = abstract_collection__SequenceRead__first(var257);
3724 }
3725 var261 = NEW_array__Array(&type_array__Arraykernel__Object);
3726 { /* var261 = array_instance Array[Object] */
3727 var262 = 4;
3728 var263 = NEW_array__NativeArray(var262, &type_array__NativeArraykernel__Object);
3729 ((struct instance_array__NativeArray*)var263)->values[0] = (val*) var248;
3730 ((struct instance_array__NativeArray*)var263)->values[1] = (val*) var_name;
3731 ((struct instance_array__NativeArray*)var263)->values[2] = (val*) var253;
3732 ((struct instance_array__NativeArray*)var263)->values[3] = (val*) var260;
3733 {
3734 ((void (*)(val*, val*, long))(var261->class->vft[COLOR_array__Array__with_native]))(var261, var263, var262) /* with_native on <var261:Array[Object]>*/;
3735 }
3736 }
3737 {
3738 var264 = ((val* (*)(val*))(var261->class->vft[COLOR_string__Object__to_s]))(var261) /* to_s on <var261:Array[Object]>*/;
3739 }
3740 {
3741 modelbuilder__ModelBuilder__warning(var239, var_node, var243, var264); /* Direct call modelbuilder#ModelBuilder#warning on <var239:ModelBuilder>*/
3742 }
3743 } else {
3744 {
3745 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3746 var267 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3747 if (unlikely(var267 == NULL)) {
3748 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3749 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3750 show_backtrace(1);
3751 }
3752 var265 = var267;
3753 RET_LABEL266:(void)0;
3754 }
3755 }
3756 if (varonce268) {
3757 var269 = varonce268;
3758 } else {
3759 var270 = "deprecated-method";
3760 var271 = 17;
3761 var272 = string__NativeString__to_s_with_length(var270, var271);
3762 var269 = var272;
3763 varonce268 = var269;
3764 }
3765 if (varonce273) {
3766 var274 = varonce273;
3767 } else {
3768 var275 = "Deprecation Warning: Method \'";
3769 var276 = 29;
3770 var277 = string__NativeString__to_s_with_length(var275, var276);
3771 var274 = var277;
3772 varonce273 = var274;
3773 }
3774 if (varonce278) {
3775 var279 = varonce278;
3776 } else {
3777 var280 = "\' is deprecated.";
3778 var281 = 16;
3779 var282 = string__NativeString__to_s_with_length(var280, var281);
3780 var279 = var282;
3781 varonce278 = var279;
3782 }
3783 var283 = NEW_array__Array(&type_array__Arraykernel__Object);
3784 { /* var283 = array_instance Array[Object] */
3785 var284 = 3;
3786 var285 = NEW_array__NativeArray(var284, &type_array__NativeArraykernel__Object);
3787 ((struct instance_array__NativeArray*)var285)->values[0] = (val*) var274;
3788 ((struct instance_array__NativeArray*)var285)->values[1] = (val*) var_name;
3789 ((struct instance_array__NativeArray*)var285)->values[2] = (val*) var279;
3790 {
3791 ((void (*)(val*, val*, long))(var283->class->vft[COLOR_array__Array__with_native]))(var283, var285, var284) /* with_native on <var283:Array[Object]>*/;
3792 }
3793 }
3794 {
3795 var286 = ((val* (*)(val*))(var283->class->vft[COLOR_string__Object__to_s]))(var283) /* to_s on <var283:Array[Object]>*/;
3796 }
3797 {
3798 modelbuilder__ModelBuilder__warning(var265, var_node, var269, var286); /* Direct call modelbuilder#ModelBuilder#warning on <var265:ModelBuilder>*/
3799 }
3800 }
3801 } else {
3802 }
3803 {
3804 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
3805 var289 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
3806 if (unlikely(var289 == NULL)) {
3807 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3808 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
3809 show_backtrace(1);
3810 }
3811 var287 = var289;
3812 RET_LABEL288:(void)0;
3813 }
3814 }
3815 {
3816 var290 = model__MProperty__lookup_definitions(var_mproperty, var287, var_unsafe_type);
3817 }
3818 var_propdefs = var290;
3819 {
3820 { /* Inline array#AbstractArrayRead#length (var_propdefs) on <var_propdefs:Array[MMethodDef]> */
3821 var293 = var_propdefs->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_propdefs:Array[MMethodDef]> */
3822 var291 = var293;
3823 RET_LABEL292:(void)0;
3824 }
3825 }
3826 var294 = 0;
3827 {
3828 { /* Inline kernel#Int#== (var291,var294) on <var291:Int> */
3829 var298 = var291 == var294;
3830 var296 = var298;
3831 goto RET_LABEL297;
3832 RET_LABEL297:(void)0;
3833 }
3834 var295 = var296;
3835 }
3836 if (var295){
3837 {
3838 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3839 var301 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3840 if (unlikely(var301 == NULL)) {
3841 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3842 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3843 show_backtrace(1);
3844 }
3845 var299 = var301;
3846 RET_LABEL300:(void)0;
3847 }
3848 }
3849 if (varonce302) {
3850 var303 = varonce302;
3851 } else {
3852 var304 = "Type error: no definition found for property ";
3853 var305 = 45;
3854 var306 = string__NativeString__to_s_with_length(var304, var305);
3855 var303 = var306;
3856 varonce302 = var303;
3857 }
3858 if (varonce307) {
3859 var308 = varonce307;
3860 } else {
3861 var309 = " in ";
3862 var310 = 4;
3863 var311 = string__NativeString__to_s_with_length(var309, var310);
3864 var308 = var311;
3865 varonce307 = var308;
3866 }
3867 var312 = NEW_array__Array(&type_array__Arraykernel__Object);
3868 { /* var312 = array_instance Array[Object] */
3869 var313 = 4;
3870 var314 = NEW_array__NativeArray(var313, &type_array__NativeArraykernel__Object);
3871 ((struct instance_array__NativeArray*)var314)->values[0] = (val*) var303;
3872 ((struct instance_array__NativeArray*)var314)->values[1] = (val*) var_name;
3873 ((struct instance_array__NativeArray*)var314)->values[2] = (val*) var308;
3874 ((struct instance_array__NativeArray*)var314)->values[3] = (val*) var_unsafe_type;
3875 {
3876 ((void (*)(val*, val*, long))(var312->class->vft[COLOR_array__Array__with_native]))(var312, var314, var313) /* with_native on <var312:Array[Object]>*/;
3877 }
3878 }
3879 {
3880 var315 = ((val* (*)(val*))(var312->class->vft[COLOR_string__Object__to_s]))(var312) /* to_s on <var312:Array[Object]>*/;
3881 }
3882 {
3883 modelbuilder__ModelBuilder__error(var299, var_node, var315); /* Direct call modelbuilder#ModelBuilder#error on <var299:ModelBuilder>*/
3884 }
3885 var316 = NULL;
3886 var = var316;
3887 goto RET_LABEL;
3888 } else {
3889 {
3890 { /* Inline array#AbstractArrayRead#length (var_propdefs) on <var_propdefs:Array[MMethodDef]> */
3891 var319 = var_propdefs->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_propdefs:Array[MMethodDef]> */
3892 var317 = var319;
3893 RET_LABEL318:(void)0;
3894 }
3895 }
3896 var320 = 1;
3897 {
3898 { /* Inline kernel#Int#== (var317,var320) on <var317:Int> */
3899 var324 = var317 == var320;
3900 var322 = var324;
3901 goto RET_LABEL323;
3902 RET_LABEL323:(void)0;
3903 }
3904 var321 = var322;
3905 }
3906 if (var321){
3907 {
3908 var325 = abstract_collection__SequenceRead__first(var_propdefs);
3909 }
3910 var_mpropdef = var325;
3911 } else {
3912 {
3913 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
3914 var328 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3915 if (unlikely(var328 == NULL)) {
3916 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3917 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
3918 show_backtrace(1);
3919 }
3920 var326 = var328;
3921 RET_LABEL327:(void)0;
3922 }
3923 }
3924 if (varonce329) {
3925 var330 = varonce329;
3926 } else {
3927 var331 = "property-conflict";
3928 var332 = 17;
3929 var333 = string__NativeString__to_s_with_length(var331, var332);
3930 var330 = var333;
3931 varonce329 = var330;
3932 }
3933 if (varonce334) {
3934 var335 = varonce334;
3935 } else {
3936 var336 = "Warning: conflicting property definitions for property ";
3937 var337 = 55;
3938 var338 = string__NativeString__to_s_with_length(var336, var337);
3939 var335 = var338;
3940 varonce334 = var335;
3941 }
3942 if (varonce339) {
3943 var340 = varonce339;
3944 } else {
3945 var341 = " in ";
3946 var342 = 4;
3947 var343 = string__NativeString__to_s_with_length(var341, var342);
3948 var340 = var343;
3949 varonce339 = var340;
3950 }
3951 if (varonce344) {
3952 var345 = varonce344;
3953 } else {
3954 var346 = ": ";
3955 var347 = 2;
3956 var348 = string__NativeString__to_s_with_length(var346, var347);
3957 var345 = var348;
3958 varonce344 = var345;
3959 }
3960 if (varonce349) {
3961 var350 = varonce349;
3962 } else {
3963 var351 = " ";
3964 var352 = 1;
3965 var353 = string__NativeString__to_s_with_length(var351, var352);
3966 var350 = var353;
3967 varonce349 = var350;
3968 }
3969 {
3970 var354 = string__Collection__join(var_propdefs, var350);
3971 }
3972 var355 = NEW_array__Array(&type_array__Arraykernel__Object);
3973 { /* var355 = array_instance Array[Object] */
3974 var356 = 6;
3975 var357 = NEW_array__NativeArray(var356, &type_array__NativeArraykernel__Object);
3976 ((struct instance_array__NativeArray*)var357)->values[0] = (val*) var335;
3977 ((struct instance_array__NativeArray*)var357)->values[1] = (val*) var_name;
3978 ((struct instance_array__NativeArray*)var357)->values[2] = (val*) var340;
3979 ((struct instance_array__NativeArray*)var357)->values[3] = (val*) var_unsafe_type;
3980 ((struct instance_array__NativeArray*)var357)->values[4] = (val*) var345;
3981 ((struct instance_array__NativeArray*)var357)->values[5] = (val*) var354;
3982 {
3983 ((void (*)(val*, val*, long))(var355->class->vft[COLOR_array__Array__with_native]))(var355, var357, var356) /* with_native on <var355:Array[Object]>*/;
3984 }
3985 }
3986 {
3987 var358 = ((val* (*)(val*))(var355->class->vft[COLOR_string__Object__to_s]))(var355) /* to_s on <var355:Array[Object]>*/;
3988 }
3989 {
3990 modelbuilder__ModelBuilder__warning(var326, var_node, var330, var358); /* Direct call modelbuilder#ModelBuilder#warning on <var326:ModelBuilder>*/
3991 }
3992 {
3993 { /* Inline model#MProperty#intro (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
3994 var361 = var_mproperty->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mproperty:nullable MProperty(MMethod)> */
3995 if (unlikely(var361 == NULL)) {
3996 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3997 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3998 show_backtrace(1);
3999 }
4000 var359 = var361;
4001 RET_LABEL360:(void)0;
4002 }
4003 }
4004 var_mpropdef = var359;
4005 }
4006 }
4007 {
4008 { /* Inline model#MMethodDef#new_msignature (var_mpropdef) on <var_mpropdef:nullable Object(MMethodDef)> */
4009 var365 = var_mpropdef->attrs[COLOR_model__MMethodDef___new_msignature].val; /* _new_msignature on <var_mpropdef:nullable Object(MMethodDef)> */
4010 var363 = var365;
4011 RET_LABEL364:(void)0;
4012 }
4013 }
4014 if (var363!=NULL) {
4015 var362 = var363;
4016 } else {
4017 {
4018 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable Object(MMethodDef)> */
4019 var368 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable Object(MMethodDef)> */
4020 var366 = var368;
4021 RET_LABEL367:(void)0;
4022 }
4023 }
4024 if (unlikely(var366 == NULL)) {
4025 PRINT_ERROR("Runtime error: %s", "Cast failed");
4026 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 327);
4027 show_backtrace(1);
4028 }
4029 var362 = var366;
4030 }
4031 var_msignature = var362;
4032 {
4033 var369 = typing__TypeVisitor__resolve_for(self, var_msignature, var_recvtype, var_recv_is_self);
4034 }
4035 /* <var369:MType> isa MSignature */
4036 cltype371 = type_model__MSignature.color;
4037 idtype372 = type_model__MSignature.id;
4038 if(cltype371 >= var369->type->table_size) {
4039 var370 = 0;
4040 } else {
4041 var370 = var369->type->type_table[cltype371] == idtype372;
4042 }
4043 if (unlikely(!var370)) {
4044 var_class_name = var369 == NULL ? "null" : var369->type->name;
4045 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
4046 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 328);
4047 show_backtrace(1);
4048 }
4049 var_msignature = var369;
4050 var373 = 0;
4051 var_erasure_cast = var373;
4052 {
4053 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable Object(MMethodDef)> */
4054 var376 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable Object(MMethodDef)> */
4055 var374 = var376;
4056 RET_LABEL375:(void)0;
4057 }
4058 }
4059 if (var374 == NULL) {
4060 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4061 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 331);
4062 show_backtrace(1);
4063 } else {
4064 { /* Inline model#MSignature#return_mtype (var374) on <var374:nullable MSignature> */
4065 if (unlikely(var374 == NULL)) {
4066 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4067 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468);
4068 show_backtrace(1);
4069 }
4070 var379 = var374->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var374:nullable MSignature> */
4071 var377 = var379;
4072 RET_LABEL378:(void)0;
4073 }
4074 }
4075 var_rettype = var377;
4076 var381 = !var_recv_is_self;
4077 var_382 = var381;
4078 if (var381){
4079 var383 = NULL;
4080 if (var_rettype == NULL) {
4081 var384 = 0; /* is null */
4082 } else {
4083 var384 = 1; /* arg is null and recv is not */
4084 }
4085 if (0) {
4086 { /* Inline kernel#Object#!= (var_rettype,var383) on <var_rettype:nullable MType> */
4087 var_other208 = var383;
4088 {
4089 var388 = ((short int (*)(val*, val*))(var_rettype->class->vft[COLOR_kernel__Object___61d_61d]))(var_rettype, var_other208) /* == on <var_rettype:nullable MType(MType)>*/;
4090 var387 = var388;
4091 }
4092 var389 = !var387;
4093 var385 = var389;
4094 goto RET_LABEL386;
4095 RET_LABEL386:(void)0;
4096 }
4097 var384 = var385;
4098 }
4099 var380 = var384;
4100 } else {
4101 var380 = var_382;
4102 }
4103 if (var380){
4104 {
4105 var390 = ((val* (*)(val*))(var_rettype->class->vft[COLOR_model__MType__as_notnullable]))(var_rettype) /* as_notnullable on <var_rettype:nullable MType(MType)>*/;
4106 }
4107 var_rettype = var390;
4108 /* <var_rettype:nullable MType(MType)> isa MParameterType */
4109 cltype392 = type_model__MParameterType.color;
4110 idtype393 = type_model__MParameterType.id;
4111 if(cltype392 >= var_rettype->type->table_size) {
4112 var391 = 0;
4113 } else {
4114 var391 = var_rettype->type->type_table[cltype392] == idtype393;
4115 }
4116 if (var391){
4117 {
4118 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
4119 var396 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
4120 var394 = var396;
4121 RET_LABEL395:(void)0;
4122 }
4123 }
4124 var_erased_rettype = var394;
4125 var397 = NULL;
4126 if (var_erased_rettype == NULL) {
4127 var398 = 0; /* is null */
4128 } else {
4129 var398 = 1; /* arg is null and recv is not */
4130 }
4131 if (0) {
4132 { /* Inline kernel#Object#!= (var_erased_rettype,var397) on <var_erased_rettype:nullable MType> */
4133 var_other208 = var397;
4134 {
4135 var402 = ((short int (*)(val*, val*))(var_erased_rettype->class->vft[COLOR_kernel__Object___61d_61d]))(var_erased_rettype, var_other208) /* == on <var_erased_rettype:nullable MType(MType)>*/;
4136 var401 = var402;
4137 }
4138 var403 = !var401;
4139 var399 = var403;
4140 goto RET_LABEL400;
4141 RET_LABEL400:(void)0;
4142 }
4143 var398 = var399;
4144 }
4145 if (unlikely(!var398)) {
4146 PRINT_ERROR("Runtime error: %s", "Assert failed");
4147 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 336);
4148 show_backtrace(1);
4149 }
4150 var404 = 1;
4151 var_erasure_cast = var404;
4152 } else {
4153 }
4154 } else {
4155 }
4156 var405 = NEW_typing__CallSite(&type_typing__CallSite);
4157 {
4158 { /* Inline typing#TypeVisitor#mmodule (self) on <self:TypeVisitor> */
4159 var408 = self->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
4160 if (unlikely(var408 == NULL)) {
4161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4162 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 36);
4163 show_backtrace(1);
4164 }
4165 var406 = var408;
4166 RET_LABEL407:(void)0;
4167 }
4168 }
4169 {
4170 { /* Inline typing#TypeVisitor#anchor (self) on <self:TypeVisitor> */
4171 var411 = self->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
4172 var409 = var411;
4173 RET_LABEL410:(void)0;
4174 }
4175 }
4176 {
4177 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__node_61d]))(var405, var_node) /* node= on <var405:CallSite>*/;
4178 }
4179 {
4180 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__recv_61d]))(var405, var_recvtype) /* recv= on <var405:CallSite>*/;
4181 }
4182 {
4183 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__mmodule_61d]))(var405, var406) /* mmodule= on <var405:CallSite>*/;
4184 }
4185 {
4186 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__anchor_61d]))(var405, var409) /* anchor= on <var405:CallSite>*/;
4187 }
4188 {
4189 ((void (*)(val*, short int))(var405->class->vft[COLOR_typing__CallSite__recv_is_self_61d]))(var405, var_recv_is_self) /* recv_is_self= on <var405:CallSite>*/;
4190 }
4191 {
4192 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__mproperty_61d]))(var405, var_mproperty) /* mproperty= on <var405:CallSite>*/;
4193 }
4194 {
4195 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__mpropdef_61d]))(var405, var_mpropdef) /* mpropdef= on <var405:CallSite>*/;
4196 }
4197 {
4198 ((void (*)(val*, val*))(var405->class->vft[COLOR_typing__CallSite__msignature_61d]))(var405, var_msignature) /* msignature= on <var405:CallSite>*/;
4199 }
4200 {
4201 ((void (*)(val*, short int))(var405->class->vft[COLOR_typing__CallSite__erasure_cast_61d]))(var405, var_erasure_cast) /* erasure_cast= on <var405:CallSite>*/;
4202 }
4203 {
4204 ((void (*)(val*))(var405->class->vft[COLOR_kernel__Object__init]))(var405) /* init on <var405:CallSite>*/;
4205 }
4206 var_callsite = var405;
4207 var = var_callsite;
4208 goto RET_LABEL;
4209 RET_LABEL:;
4210 return var;
4211 }
4212 /* method typing#TypeVisitor#get_method for (self: Object, ANode, MType, String, Bool): nullable CallSite */
4213 val* VIRTUAL_typing__TypeVisitor__get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
4214 val* var /* : nullable CallSite */;
4215 val* var1 /* : nullable CallSite */;
4216 var1 = typing__TypeVisitor__get_method(self, p0, p1, p2, p3);
4217 var = var1;
4218 RET_LABEL:;
4219 return var;
4220 }
4221 /* method typing#TypeVisitor#try_get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
4222 val* typing__TypeVisitor__try_get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
4223 val* var /* : nullable CallSite */;
4224 val* var_node /* var node: ANode */;
4225 val* var_recvtype /* var recvtype: MType */;
4226 val* var_name /* var name: String */;
4227 short int var_recv_is_self /* var recv_is_self: Bool */;
4228 val* var1 /* : MType */;
4229 val* var_unsafe_type /* var unsafe_type: MType */;
4230 val* var2 /* : nullable MProperty */;
4231 val* var_mproperty /* var mproperty: nullable MProperty */;
4232 val* var3 /* : null */;
4233 short int var4 /* : Bool */;
4234 short int var5 /* : Bool */;
4235 val* var_other /* var other: nullable Object */;
4236 short int var7 /* : Bool */;
4237 short int var9 /* : Bool */;
4238 val* var10 /* : null */;
4239 val* var11 /* : nullable CallSite */;
4240 var_node = p0;
4241 var_recvtype = p1;
4242 var_name = p2;
4243 var_recv_is_self = p3;
4244 {
4245 var1 = typing__TypeVisitor__anchor_to(self, var_recvtype);
4246 }
4247 var_unsafe_type = var1;
4248 {
4249 var2 = typing__TypeVisitor__try_get_mproperty_by_name2(self, var_node, var_unsafe_type, var_name);
4250 }
4251 var_mproperty = var2;
4252 var3 = NULL;
4253 if (var_mproperty == NULL) {
4254 var4 = 1; /* is null */
4255 } else {
4256 var4 = 0; /* arg is null but recv is not */
4257 }
4258 if (0) {
4259 { /* Inline kernel#Object#== (var_mproperty,var3) on <var_mproperty:nullable MProperty> */
4260 var_other = var3;
4261 {
4262 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
4263 var9 = var_mproperty == var_other;
4264 var7 = var9;
4265 goto RET_LABEL8;
4266 RET_LABEL8:(void)0;
4267 }
4268 }
4269 var5 = var7;
4270 goto RET_LABEL6;
4271 RET_LABEL6:(void)0;
4272 }
4273 var4 = var5;
4274 }
4275 if (var4){
4276 var10 = NULL;
4277 var = var10;
4278 goto RET_LABEL;
4279 } else {
4280 }
4281 {
4282 var11 = typing__TypeVisitor__get_method(self, var_node, var_recvtype, var_name, var_recv_is_self);
4283 }
4284 var = var11;
4285 goto RET_LABEL;
4286 RET_LABEL:;
4287 return var;
4288 }
4289 /* method typing#TypeVisitor#try_get_method for (self: Object, ANode, MType, String, Bool): nullable CallSite */
4290 val* VIRTUAL_typing__TypeVisitor__try_get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
4291 val* var /* : nullable CallSite */;
4292 val* var1 /* : nullable CallSite */;
4293 var1 = typing__TypeVisitor__try_get_method(self, p0, p1, p2, p3);
4294 var = var1;
4295 RET_LABEL:;
4296 return var;
4297 }
4298 /* method typing#TypeVisitor#check_signature for (self: TypeVisitor, ANode, Array[AExpr], String, MSignature): Bool */
4299 short int typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
4300 short int var /* : Bool */;
4301 val* var_node /* var node: ANode */;
4302 val* var_args /* var args: Array[AExpr] */;
4303 val* var_name /* var name: String */;
4304 val* var_msignature /* var msignature: MSignature */;
4305 long var1 /* : Int */;
4306 long var3 /* : Int */;
4307 long var_vararg_rank /* var vararg_rank: Int */;
4308 long var4 /* : Int */;
4309 short int var5 /* : Bool */;
4310 short int var7 /* : Bool */;
4311 int cltype;
4312 int idtype;
4313 const char* var_class_name;
4314 short int var8 /* : Bool */;
4315 long var9 /* : Int */;
4316 long var11 /* : Int */;
4317 long var12 /* : Int */;
4318 short int var13 /* : Bool */;
4319 short int var15 /* : Bool */;
4320 int cltype16;
4321 int idtype17;
4322 const char* var_class_name18;
4323 short int var19 /* : Bool */;
4324 val* var20 /* : ModelBuilder */;
4325 val* var22 /* : ModelBuilder */;
4326 static val* varonce;
4327 val* var23 /* : String */;
4328 char* var24 /* : NativeString */;
4329 long var25 /* : Int */;
4330 val* var26 /* : FlatString */;
4331 static val* varonce27;
4332 val* var28 /* : String */;
4333 char* var29 /* : NativeString */;
4334 long var30 /* : Int */;
4335 val* var31 /* : FlatString */;
4336 val* var32 /* : Array[Object] */;
4337 long var33 /* : Int */;
4338 val* var34 /* : NativeArray[Object] */;
4339 val* var35 /* : String */;
4340 short int var36 /* : Bool */;
4341 long var37 /* : Int */;
4342 long var39 /* : Int */;
4343 long var40 /* : Int */;
4344 short int var41 /* : Bool */;
4345 short int var42 /* : Bool */;
4346 short int var44 /* : Bool */;
4347 short int var45 /* : Bool */;
4348 val* var46 /* : ModelBuilder */;
4349 val* var48 /* : ModelBuilder */;
4350 static val* varonce49;
4351 val* var50 /* : String */;
4352 char* var51 /* : NativeString */;
4353 long var52 /* : Int */;
4354 val* var53 /* : FlatString */;
4355 long var54 /* : Int */;
4356 long var56 /* : Int */;
4357 static val* varonce57;
4358 val* var58 /* : String */;
4359 char* var59 /* : NativeString */;
4360 long var60 /* : Int */;
4361 val* var61 /* : FlatString */;
4362 long var62 /* : Int */;
4363 static val* varonce63;
4364 val* var64 /* : String */;
4365 char* var65 /* : NativeString */;
4366 long var66 /* : Int */;
4367 val* var67 /* : FlatString */;
4368 val* var68 /* : Array[Object] */;
4369 long var69 /* : Int */;
4370 val* var70 /* : NativeArray[Object] */;
4371 val* var71 /* : Object */;
4372 val* var72 /* : Object */;
4373 val* var73 /* : String */;
4374 short int var74 /* : Bool */;
4375 long var75 /* : Int */;
4376 long var77 /* : Int */;
4377 long var78 /* : Int */;
4378 long var79 /* : Int */;
4379 short int var81 /* : Bool */;
4380 int cltype82;
4381 int idtype83;
4382 const char* var_class_name84;
4383 long var85 /* : Int */;
4384 long var_vararg_decl /* var vararg_decl: Int */;
4385 long var86 /* : Int */;
4386 long var_i /* var i: Int */;
4387 long var87 /* : Int */;
4388 long var_ /* var : Int */;
4389 short int var88 /* : Bool */;
4390 short int var90 /* : Bool */;
4391 int cltype91;
4392 int idtype92;
4393 const char* var_class_name93;
4394 short int var94 /* : Bool */;
4395 long var_j /* var j: Int */;
4396 short int var95 /* : Bool */;
4397 short int var96 /* : Bool */;
4398 short int var98 /* : Bool */;
4399 short int var99 /* : Bool */;
4400 short int var101 /* : Bool */;
4401 int cltype102;
4402 int idtype103;
4403 const char* var_class_name104;
4404 short int var105 /* : Bool */;
4405 long var106 /* : Int */;
4406 short int var108 /* : Bool */;
4407 int cltype109;
4408 int idtype110;
4409 const char* var_class_name111;
4410 long var112 /* : Int */;
4411 val* var113 /* : Array[MParameter] */;
4412 val* var115 /* : Array[MParameter] */;
4413 val* var116 /* : nullable Object */;
4414 val* var117 /* : MType */;
4415 val* var119 /* : MType */;
4416 val* var_paramtype /* var paramtype: MType */;
4417 val* var120 /* : nullable Object */;
4418 val* var121 /* : nullable MType */;
4419 long var122 /* : Int */;
4420 long var123 /* : Int */;
4421 long var125 /* : Int */;
4422 short int var126 /* : Bool */;
4423 short int var128 /* : Bool */;
4424 int cltype129;
4425 int idtype130;
4426 const char* var_class_name131;
4427 short int var132 /* : Bool */;
4428 val* var133 /* : Array[MParameter] */;
4429 val* var135 /* : Array[MParameter] */;
4430 val* var136 /* : nullable Object */;
4431 val* var137 /* : MType */;
4432 val* var139 /* : MType */;
4433 val* var_paramtype140 /* var paramtype: MType */;
4434 val* var141 /* : nullable Object */;
4435 val* var_first /* var first: AExpr */;
4436 short int var142 /* : Bool */;
4437 long var143 /* : Int */;
4438 short int var144 /* : Bool */;
4439 short int var145 /* : Bool */;
4440 short int var147 /* : Bool */;
4441 short int var_148 /* var : Bool */;
4442 short int var149 /* : Bool */;
4443 int cltype150;
4444 int idtype151;
4445 static val* varonce152;
4446 val* var153 /* : String */;
4447 char* var154 /* : NativeString */;
4448 long var155 /* : Int */;
4449 val* var156 /* : FlatString */;
4450 val* var157 /* : nullable MClass */;
4451 val* var_mclass /* var mclass: nullable MClass */;
4452 val* var158 /* : null */;
4453 short int var159 /* : Bool */;
4454 short int var160 /* : Bool */;
4455 val* var_other /* var other: nullable Object */;
4456 short int var162 /* : Bool */;
4457 short int var164 /* : Bool */;
4458 short int var165 /* : Bool */;
4459 val* var166 /* : Array[MType] */;
4460 long var167 /* : Int */;
4461 val* var_168 /* var : Array[MType] */;
4462 val* var169 /* : MClassType */;
4463 val* var_array_mtype /* var array_mtype: MClassType */;
4464 val* var170 /* : AExpr */;
4465 val* var172 /* : AExpr */;
4466 val* var173 /* : nullable MType */;
4467 val* var174 /* : AExpr */;
4468 val* var176 /* : AExpr */;
4469 val* var177 /* : nullable MType */;
4470 long var_j179 /* var j: Int */;
4471 long var180 /* : Int */;
4472 short int var182 /* : Bool */;
4473 int cltype183;
4474 int idtype184;
4475 const char* var_class_name185;
4476 long var186 /* : Int */;
4477 long var_187 /* var : Int */;
4478 short int var188 /* : Bool */;
4479 short int var190 /* : Bool */;
4480 int cltype191;
4481 int idtype192;
4482 const char* var_class_name193;
4483 short int var194 /* : Bool */;
4484 val* var195 /* : nullable Object */;
4485 val* var196 /* : nullable MType */;
4486 long var197 /* : Int */;
4487 long var198 /* : Int */;
4488 short int var200 /* : Bool */;
4489 var_node = p0;
4490 var_args = p1;
4491 var_name = p2;
4492 var_msignature = p3;
4493 {
4494 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
4495 var3 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
4496 var1 = var3;
4497 RET_LABEL2:(void)0;
4498 }
4499 }
4500 var_vararg_rank = var1;
4501 var4 = 0;
4502 {
4503 { /* Inline kernel#Int#>= (var_vararg_rank,var4) on <var_vararg_rank:Int> */
4504 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
4505 /* <var4:Int> isa OTHER */
4506 var7 = 1; /* easy <var4:Int> isa OTHER*/
4507 if (unlikely(!var7)) {
4508 var_class_name = type_kernel__Int.name;
4509 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4510 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
4511 show_backtrace(1);
4512 }
4513 var8 = var_vararg_rank >= var4;
4514 var5 = var8;
4515 goto RET_LABEL6;
4516 RET_LABEL6:(void)0;
4517 }
4518 }
4519 if (var5){
4520 {
4521 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
4522 var11 = var_args->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
4523 var9 = var11;
4524 RET_LABEL10:(void)0;
4525 }
4526 }
4527 {
4528 var12 = model__MSignature__arity(var_msignature);
4529 }
4530 {
4531 { /* Inline kernel#Int#< (var9,var12) on <var9:Int> */
4532 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
4533 /* <var12:Int> isa OTHER */
4534 var15 = 1; /* easy <var12:Int> isa OTHER*/
4535 if (unlikely(!var15)) {
4536 var_class_name18 = type_kernel__Int.name;
4537 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
4538 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
4539 show_backtrace(1);
4540 }
4541 var19 = var9 < var12;
4542 var13 = var19;
4543 goto RET_LABEL14;
4544 RET_LABEL14:(void)0;
4545 }
4546 }
4547 if (var13){
4548 {
4549 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
4550 var22 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4551 if (unlikely(var22 == NULL)) {
4552 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4553 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
4554 show_backtrace(1);
4555 }
4556 var20 = var22;
4557 RET_LABEL21:(void)0;
4558 }
4559 }
4560 if (varonce) {
4561 var23 = varonce;
4562 } else {
4563 var24 = "Error: arity mismatch; prototype is \'";
4564 var25 = 37;
4565 var26 = string__NativeString__to_s_with_length(var24, var25);
4566 var23 = var26;
4567 varonce = var23;
4568 }
4569 if (varonce27) {
4570 var28 = varonce27;
4571 } else {
4572 var29 = "\'";
4573 var30 = 1;
4574 var31 = string__NativeString__to_s_with_length(var29, var30);
4575 var28 = var31;
4576 varonce27 = var28;
4577 }
4578 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
4579 { /* var32 = array_instance Array[Object] */
4580 var33 = 4;
4581 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
4582 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var23;
4583 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_name;
4584 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var_msignature;
4585 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var28;
4586 {
4587 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
4588 }
4589 }
4590 {
4591 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
4592 }
4593 {
4594 modelbuilder__ModelBuilder__error(var20, var_node, var35); /* Direct call modelbuilder#ModelBuilder#error on <var20:ModelBuilder>*/
4595 }
4596 var36 = 0;
4597 var = var36;
4598 goto RET_LABEL;
4599 } else {
4600 }
4601 } else {
4602 {
4603 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
4604 var39 = var_args->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
4605 var37 = var39;
4606 RET_LABEL38:(void)0;
4607 }
4608 }
4609 {
4610 var40 = model__MSignature__arity(var_msignature);
4611 }
4612 {
4613 { /* Inline kernel#Int#!= (var37,var40) on <var37:Int> */
4614 var44 = var37 == var40;
4615 var45 = !var44;
4616 var42 = var45;
4617 goto RET_LABEL43;
4618 RET_LABEL43:(void)0;
4619 }
4620 var41 = var42;
4621 }
4622 if (var41){
4623 {
4624 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
4625 var48 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4626 if (unlikely(var48 == NULL)) {
4627 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4628 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
4629 show_backtrace(1);
4630 }
4631 var46 = var48;
4632 RET_LABEL47:(void)0;
4633 }
4634 }
4635 if (varonce49) {
4636 var50 = varonce49;
4637 } else {
4638 var51 = "Error: Incorrect number of parameters. Got ";
4639 var52 = 43;
4640 var53 = string__NativeString__to_s_with_length(var51, var52);
4641 var50 = var53;
4642 varonce49 = var50;
4643 }
4644 {
4645 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
4646 var56 = var_args->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
4647 var54 = var56;
4648 RET_LABEL55:(void)0;
4649 }
4650 }
4651 if (varonce57) {
4652 var58 = varonce57;
4653 } else {
4654 var59 = ", expected ";
4655 var60 = 11;
4656 var61 = string__NativeString__to_s_with_length(var59, var60);
4657 var58 = var61;
4658 varonce57 = var58;
4659 }
4660 {
4661 var62 = model__MSignature__arity(var_msignature);
4662 }
4663 if (varonce63) {
4664 var64 = varonce63;
4665 } else {
4666 var65 = ". Signature is ";
4667 var66 = 15;
4668 var67 = string__NativeString__to_s_with_length(var65, var66);
4669 var64 = var67;
4670 varonce63 = var64;
4671 }
4672 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
4673 { /* var68 = array_instance Array[Object] */
4674 var69 = 6;
4675 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
4676 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var50;
4677 var71 = BOX_kernel__Int(var54); /* autobox from Int to Object */
4678 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var71;
4679 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var58;
4680 var72 = BOX_kernel__Int(var62); /* autobox from Int to Object */
4681 ((struct instance_array__NativeArray*)var70)->values[3] = (val*) var72;
4682 ((struct instance_array__NativeArray*)var70)->values[4] = (val*) var64;
4683 ((struct instance_array__NativeArray*)var70)->values[5] = (val*) var_msignature;
4684 {
4685 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
4686 }
4687 }
4688 {
4689 var73 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
4690 }
4691 {
4692 modelbuilder__ModelBuilder__error(var46, var_node, var73); /* Direct call modelbuilder#ModelBuilder#error on <var46:ModelBuilder>*/
4693 }
4694 var74 = 0;
4695 var = var74;
4696 goto RET_LABEL;
4697 } else {
4698 }
4699 }
4700 {
4701 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
4702 var77 = var_args->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
4703 var75 = var77;
4704 RET_LABEL76:(void)0;
4705 }
4706 }
4707 {
4708 var78 = model__MSignature__arity(var_msignature);
4709 }
4710 {
4711 { /* Inline kernel#Int#- (var75,var78) on <var75:Int> */
4712 /* Covariant cast for argument 0 (i) <var78:Int> isa OTHER */
4713 /* <var78:Int> isa OTHER */
4714 var81 = 1; /* easy <var78:Int> isa OTHER*/
4715 if (unlikely(!var81)) {
4716 var_class_name84 = type_kernel__Int.name;
4717 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
4718 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
4719 show_backtrace(1);
4720 }
4721 var85 = var75 - var78;
4722 var79 = var85;
4723 goto RET_LABEL80;
4724 RET_LABEL80:(void)0;
4725 }
4726 }
4727 var_vararg_decl = var79;
4728 var86 = 0;
4729 var_i = var86;
4730 {
4731 var87 = model__MSignature__arity(var_msignature);
4732 }
4733 var_ = var87;
4734 for(;;) {
4735 {
4736 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
4737 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
4738 /* <var_:Int> isa OTHER */
4739 var90 = 1; /* easy <var_:Int> isa OTHER*/
4740 if (unlikely(!var90)) {
4741 var_class_name93 = type_kernel__Int.name;
4742 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name93);
4743 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
4744 show_backtrace(1);
4745 }
4746 var94 = var_i < var_;
4747 var88 = var94;
4748 goto RET_LABEL89;
4749 RET_LABEL89:(void)0;
4750 }
4751 }
4752 if (var88){
4753 var_j = var_i;
4754 {
4755 { /* Inline kernel#Int#== (var_i,var_vararg_rank) on <var_i:Int> */
4756 var98 = var_i == var_vararg_rank;
4757 var96 = var98;
4758 goto RET_LABEL97;
4759 RET_LABEL97:(void)0;
4760 }
4761 var95 = var96;
4762 }
4763 if (var95){
4764 goto BREAK_label;
4765 } else {
4766 }
4767 {
4768 { /* Inline kernel#Int#> (var_i,var_vararg_rank) on <var_i:Int> */
4769 /* Covariant cast for argument 0 (i) <var_vararg_rank:Int> isa OTHER */
4770 /* <var_vararg_rank:Int> isa OTHER */
4771 var101 = 1; /* easy <var_vararg_rank:Int> isa OTHER*/
4772 if (unlikely(!var101)) {
4773 var_class_name104 = type_kernel__Int.name;
4774 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name104);
4775 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
4776 show_backtrace(1);
4777 }
4778 var105 = var_i > var_vararg_rank;
4779 var99 = var105;
4780 goto RET_LABEL100;
4781 RET_LABEL100:(void)0;
4782 }
4783 }
4784 if (var99){
4785 {
4786 { /* Inline kernel#Int#+ (var_i,var_vararg_decl) on <var_i:Int> */
4787 /* Covariant cast for argument 0 (i) <var_vararg_decl:Int> isa OTHER */
4788 /* <var_vararg_decl:Int> isa OTHER */
4789 var108 = 1; /* easy <var_vararg_decl:Int> isa OTHER*/
4790 if (unlikely(!var108)) {
4791 var_class_name111 = type_kernel__Int.name;
4792 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name111);
4793 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
4794 show_backtrace(1);
4795 }
4796 var112 = var_i + var_vararg_decl;
4797 var106 = var112;
4798 goto RET_LABEL107;
4799 RET_LABEL107:(void)0;
4800 }
4801 }
4802 var_j = var106;
4803 } else {
4804 }
4805 {
4806 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
4807 var115 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
4808 if (unlikely(var115 == NULL)) {
4809 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
4810 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
4811 show_backtrace(1);
4812 }
4813 var113 = var115;
4814 RET_LABEL114:(void)0;
4815 }
4816 }
4817 {
4818 var116 = array__Array___91d_93d(var113, var_i);
4819 }
4820 {
4821 { /* Inline model#MParameter#mtype (var116) on <var116:nullable Object(MParameter)> */
4822 var119 = var116->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var116:nullable Object(MParameter)> */
4823 if (unlikely(var119 == NULL)) {
4824 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4825 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
4826 show_backtrace(1);
4827 }
4828 var117 = var119;
4829 RET_LABEL118:(void)0;
4830 }
4831 }
4832 var_paramtype = var117;
4833 {
4834 var120 = array__Array___91d_93d(var_args, var_j);
4835 }
4836 {
4837 var121 = typing__TypeVisitor__visit_expr_subtype(self, var120, var_paramtype);
4838 }
4839 BREAK_label: (void)0;
4840 var122 = 1;
4841 {
4842 var123 = kernel__Int__successor(var_i, var122);
4843 }
4844 var_i = var123;
4845 } else {
4846 goto BREAK_label124;
4847 }
4848 }
4849 BREAK_label124: (void)0;
4850 var125 = 0;
4851 {
4852 { /* Inline kernel#Int#>= (var_vararg_rank,var125) on <var_vararg_rank:Int> */
4853 /* Covariant cast for argument 0 (i) <var125:Int> isa OTHER */
4854 /* <var125:Int> isa OTHER */
4855 var128 = 1; /* easy <var125:Int> isa OTHER*/
4856 if (unlikely(!var128)) {
4857 var_class_name131 = type_kernel__Int.name;
4858 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name131);
4859 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
4860 show_backtrace(1);
4861 }
4862 var132 = var_vararg_rank >= var125;
4863 var126 = var132;
4864 goto RET_LABEL127;
4865 RET_LABEL127:(void)0;
4866 }
4867 }
4868 if (var126){
4869 {
4870 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
4871 var135 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
4872 if (unlikely(var135 == NULL)) {
4873 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
4874 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
4875 show_backtrace(1);
4876 }
4877 var133 = var135;
4878 RET_LABEL134:(void)0;
4879 }
4880 }
4881 {
4882 var136 = array__Array___91d_93d(var133, var_vararg_rank);
4883 }
4884 {
4885 { /* Inline model#MParameter#mtype (var136) on <var136:nullable Object(MParameter)> */
4886 var139 = var136->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var136:nullable Object(MParameter)> */
4887 if (unlikely(var139 == NULL)) {
4888 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4889 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
4890 show_backtrace(1);
4891 }
4892 var137 = var139;
4893 RET_LABEL138:(void)0;
4894 }
4895 }
4896 var_paramtype140 = var137;
4897 {
4898 var141 = array__Array___91d_93d(var_args, var_vararg_rank);
4899 }
4900 var_first = var141;
4901 var143 = 0;
4902 {
4903 { /* Inline kernel#Int#== (var_vararg_decl,var143) on <var_vararg_decl:Int> */
4904 var147 = var_vararg_decl == var143;
4905 var145 = var147;
4906 goto RET_LABEL146;
4907 RET_LABEL146:(void)0;
4908 }
4909 var144 = var145;
4910 }
4911 var_148 = var144;
4912 if (var144){
4913 /* <var_first:AExpr> isa AVarargExpr */
4914 cltype150 = type_parser_nodes__AVarargExpr.color;
4915 idtype151 = type_parser_nodes__AVarargExpr.id;
4916 if(cltype150 >= var_first->type->table_size) {
4917 var149 = 0;
4918 } else {
4919 var149 = var_first->type->type_table[cltype150] == idtype151;
4920 }
4921 var142 = var149;
4922 } else {
4923 var142 = var_148;
4924 }
4925 if (var142){
4926 if (varonce152) {
4927 var153 = varonce152;
4928 } else {
4929 var154 = "Array";
4930 var155 = 5;
4931 var156 = string__NativeString__to_s_with_length(var154, var155);
4932 var153 = var156;
4933 varonce152 = var153;
4934 }
4935 {
4936 var157 = typing__TypeVisitor__get_mclass(self, var_node, var153);
4937 }
4938 var_mclass = var157;
4939 var158 = NULL;
4940 if (var_mclass == NULL) {
4941 var159 = 1; /* is null */
4942 } else {
4943 var159 = 0; /* arg is null but recv is not */
4944 }
4945 if (0) {
4946 { /* Inline kernel#Object#== (var_mclass,var158) on <var_mclass:nullable MClass> */
4947 var_other = var158;
4948 {
4949 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
4950 var164 = var_mclass == var_other;
4951 var162 = var164;
4952 goto RET_LABEL163;
4953 RET_LABEL163:(void)0;
4954 }
4955 }
4956 var160 = var162;
4957 goto RET_LABEL161;
4958 RET_LABEL161:(void)0;
4959 }
4960 var159 = var160;
4961 }
4962 if (var159){
4963 var165 = 0;
4964 var = var165;
4965 goto RET_LABEL;
4966 } else {
4967 }
4968 var166 = NEW_array__Array(&type_array__Arraymodel__MType);
4969 var167 = 1;
4970 {
4971 array__Array__with_capacity(var166, var167); /* Direct call array#Array#with_capacity on <var166:Array[MType]>*/
4972 }
4973 var_168 = var166;
4974 {
4975 array__AbstractArray__push(var_168, var_paramtype140); /* Direct call array#AbstractArray#push on <var_168:Array[MType]>*/
4976 }
4977 {
4978 var169 = model__MClass__get_mtype(var_mclass, var_168);
4979 }
4980 var_array_mtype = var169;
4981 {
4982 { /* Inline parser_nodes#AVarargExpr#n_expr (var_first) on <var_first:AExpr(AVarargExpr)> */
4983 var172 = var_first->attrs[COLOR_parser_nodes__AVarargExpr___n_expr].val; /* _n_expr on <var_first:AExpr(AVarargExpr)> */
4984 if (unlikely(var172 == NULL)) {
4985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
4986 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1902);
4987 show_backtrace(1);
4988 }
4989 var170 = var172;
4990 RET_LABEL171:(void)0;
4991 }
4992 }
4993 {
4994 var173 = typing__TypeVisitor__visit_expr_subtype(self, var170, var_array_mtype);
4995 }
4996 {
4997 { /* Inline parser_nodes#AVarargExpr#n_expr (var_first) on <var_first:AExpr(AVarargExpr)> */
4998 var176 = var_first->attrs[COLOR_parser_nodes__AVarargExpr___n_expr].val; /* _n_expr on <var_first:AExpr(AVarargExpr)> */
4999 if (unlikely(var176 == NULL)) {
5000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
5001 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1902);
5002 show_backtrace(1);
5003 }
5004 var174 = var176;
5005 RET_LABEL175:(void)0;
5006 }
5007 }
5008 {
5009 var177 = ((val* (*)(val*))(var174->class->vft[COLOR_typing__AExpr__mtype]))(var174) /* mtype on <var174:AExpr>*/;
5010 }
5011 {
5012 { /* Inline typing#AExpr#mtype= (var_first,var177) on <var_first:AExpr(AVarargExpr)> */
5013 var_first->attrs[COLOR_typing__AExpr___mtype].val = var177; /* _mtype on <var_first:AExpr(AVarargExpr)> */
5014 RET_LABEL178:(void)0;
5015 }
5016 }
5017 } else {
5018 var_j179 = var_vararg_rank;
5019 {
5020 { /* Inline kernel#Int#+ (var_vararg_rank,var_vararg_decl) on <var_vararg_rank:Int> */
5021 /* Covariant cast for argument 0 (i) <var_vararg_decl:Int> isa OTHER */
5022 /* <var_vararg_decl:Int> isa OTHER */
5023 var182 = 1; /* easy <var_vararg_decl:Int> isa OTHER*/
5024 if (unlikely(!var182)) {
5025 var_class_name185 = type_kernel__Int.name;
5026 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name185);
5027 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
5028 show_backtrace(1);
5029 }
5030 var186 = var_vararg_rank + var_vararg_decl;
5031 var180 = var186;
5032 goto RET_LABEL181;
5033 RET_LABEL181:(void)0;
5034 }
5035 }
5036 var_187 = var180;
5037 for(;;) {
5038 {
5039 { /* Inline kernel#Int#<= (var_j179,var_187) on <var_j179:Int> */
5040 /* Covariant cast for argument 0 (i) <var_187:Int> isa OTHER */
5041 /* <var_187:Int> isa OTHER */
5042 var190 = 1; /* easy <var_187:Int> isa OTHER*/
5043 if (unlikely(!var190)) {
5044 var_class_name193 = type_kernel__Int.name;
5045 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name193);
5046 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
5047 show_backtrace(1);
5048 }
5049 var194 = var_j179 <= var_187;
5050 var188 = var194;
5051 goto RET_LABEL189;
5052 RET_LABEL189:(void)0;
5053 }
5054 }
5055 if (var188){
5056 {
5057 var195 = array__Array___91d_93d(var_args, var_j179);
5058 }
5059 {
5060 var196 = typing__TypeVisitor__visit_expr_subtype(self, var195, var_paramtype140);
5061 }
5062 var197 = 1;
5063 {
5064 var198 = kernel__Int__successor(var_j179, var197);
5065 }
5066 var_j179 = var198;
5067 } else {
5068 goto BREAK_label199;
5069 }
5070 }
5071 BREAK_label199: (void)0;
5072 }
5073 } else {
5074 }
5075 var200 = 1;
5076 var = var200;
5077 goto RET_LABEL;
5078 RET_LABEL:;
5079 return var;
5080 }
5081 /* method typing#TypeVisitor#check_signature for (self: Object, ANode, Array[AExpr], String, MSignature): Bool */
5082 short int VIRTUAL_typing__TypeVisitor__check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
5083 short int var /* : Bool */;
5084 short int var1 /* : Bool */;
5085 var1 = typing__TypeVisitor__check_signature(self, p0, p1, p2, p3);
5086 var = var1;
5087 RET_LABEL:;
5088 return var;
5089 }
5090 /* method typing#TypeVisitor#error for (self: TypeVisitor, ANode, String) */
5091 void typing__TypeVisitor__error(val* self, val* p0, val* p1) {
5092 val* var_node /* var node: ANode */;
5093 val* var_message /* var message: String */;
5094 val* var /* : ModelBuilder */;
5095 val* var2 /* : ModelBuilder */;
5096 val* var3 /* : ToolContext */;
5097 val* var5 /* : ToolContext */;
5098 val* var6 /* : Location */;
5099 var_node = p0;
5100 var_message = p1;
5101 {
5102 { /* Inline typing#TypeVisitor#modelbuilder (self) on <self:TypeVisitor> */
5103 var2 = self->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
5104 if (unlikely(var2 == NULL)) {
5105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5106 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 34);
5107 show_backtrace(1);
5108 }
5109 var = var2;
5110 RET_LABEL1:(void)0;
5111 }
5112 }
5113 {
5114 { /* Inline modelbuilder#ModelBuilder#toolcontext (var) on <var:ModelBuilder> */
5115 var5 = var->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var:ModelBuilder> */
5116 if (unlikely(var5 == NULL)) {
5117 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5118 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
5119 show_backtrace(1);
5120 }
5121 var3 = var5;
5122 RET_LABEL4:(void)0;
5123 }
5124 }
5125 {
5126 var6 = ((val* (*)(val*))(var_node->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_node) /* hot_location on <var_node:ANode>*/;
5127 }
5128 {
5129 toolcontext__ToolContext__error(var3, var6, var_message); /* Direct call toolcontext#ToolContext#error on <var3:ToolContext>*/
5130 }
5131 RET_LABEL:;
5132 }
5133 /* method typing#TypeVisitor#error for (self: Object, ANode, String) */
5134 void VIRTUAL_typing__TypeVisitor__error(val* self, val* p0, val* p1) {
5135 typing__TypeVisitor__error(self, p0, p1); /* Direct call typing#TypeVisitor#error on <self:Object(TypeVisitor)>*/
5136 RET_LABEL:;
5137 }
5138 /* method typing#TypeVisitor#get_variable for (self: TypeVisitor, AExpr, Variable): nullable MType */
5139 val* typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
5140 val* var /* : nullable MType */;
5141 val* var_node /* var node: AExpr */;
5142 val* var_variable /* var variable: Variable */;
5143 val* var1 /* : nullable FlowContext */;
5144 val* var3 /* : nullable FlowContext */;
5145 val* var_flow /* var flow: nullable FlowContext */;
5146 val* var4 /* : null */;
5147 short int var5 /* : Bool */;
5148 short int var6 /* : Bool */;
5149 val* var_other /* var other: nullable Object */;
5150 short int var8 /* : Bool */;
5151 short int var10 /* : Bool */;
5152 static val* varonce;
5153 val* var11 /* : String */;
5154 char* var12 /* : NativeString */;
5155 long var13 /* : Int */;
5156 val* var14 /* : FlatString */;
5157 val* var15 /* : null */;
5158 val* var16 /* : HashMap[Variable, nullable MType] */;
5159 val* var18 /* : HashMap[Variable, nullable MType] */;
5160 short int var19 /* : Bool */;
5161 val* var20 /* : HashMap[Variable, nullable MType] */;
5162 val* var22 /* : HashMap[Variable, nullable MType] */;
5163 val* var23 /* : nullable Object */;
5164 val* var24 /* : nullable Array[nullable MType] */;
5165 val* var_mtypes /* var mtypes: nullable Array[nullable MType] */;
5166 short int var25 /* : Bool */;
5167 val* var26 /* : null */;
5168 short int var27 /* : Bool */;
5169 short int var28 /* : Bool */;
5170 short int var_ /* var : Bool */;
5171 long var29 /* : Int */;
5172 long var31 /* : Int */;
5173 long var32 /* : Int */;
5174 short int var33 /* : Bool */;
5175 short int var34 /* : Bool */;
5176 short int var36 /* : Bool */;
5177 val* var37 /* : nullable MType */;
5178 val* var39 /* : nullable MType */;
5179 long var40 /* : Int */;
5180 long var42 /* : Int */;
5181 long var43 /* : Int */;
5182 short int var44 /* : Bool */;
5183 short int var45 /* : Bool */;
5184 short int var47 /* : Bool */;
5185 val* var48 /* : nullable Object */;
5186 val* var49 /* : nullable MType */;
5187 val* var_res /* var res: nullable MType */;
5188 val* var50 /* : null */;
5189 short int var51 /* : Bool */;
5190 short int var52 /* : Bool */;
5191 short int var54 /* : Bool */;
5192 short int var56 /* : Bool */;
5193 val* var57 /* : nullable MType */;
5194 val* var59 /* : nullable MType */;
5195 var_node = p0;
5196 var_variable = p1;
5197 {
5198 { /* Inline flow#AExpr#after_flow_context (var_node) on <var_node:AExpr> */
5199 var3 = var_node->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
5200 var1 = var3;
5201 RET_LABEL2:(void)0;
5202 }
5203 }
5204 var_flow = var1;
5205 var4 = NULL;
5206 if (var_flow == NULL) {
5207 var5 = 1; /* is null */
5208 } else {
5209 var5 = 0; /* arg is null but recv is not */
5210 }
5211 if (0) {
5212 { /* Inline kernel#Object#== (var_flow,var4) on <var_flow:nullable FlowContext> */
5213 var_other = var4;
5214 {
5215 { /* Inline kernel#Object#is_same_instance (var_flow,var_other) on <var_flow:nullable FlowContext(FlowContext)> */
5216 var10 = var_flow == var_other;
5217 var8 = var10;
5218 goto RET_LABEL9;
5219 RET_LABEL9:(void)0;
5220 }
5221 }
5222 var6 = var8;
5223 goto RET_LABEL7;
5224 RET_LABEL7:(void)0;
5225 }
5226 var5 = var6;
5227 }
5228 if (var5){
5229 if (varonce) {
5230 var11 = varonce;
5231 } else {
5232 var12 = "No context!";
5233 var13 = 11;
5234 var14 = string__NativeString__to_s_with_length(var12, var13);
5235 var11 = var14;
5236 varonce = var11;
5237 }
5238 {
5239 typing__TypeVisitor__error(self, var_node, var11); /* Direct call typing#TypeVisitor#error on <self:TypeVisitor>*/
5240 }
5241 var15 = NULL;
5242 var = var15;
5243 goto RET_LABEL;
5244 } else {
5245 }
5246 {
5247 { /* Inline typing#FlowContext#vars (var_flow) on <var_flow:nullable FlowContext(FlowContext)> */
5248 var18 = var_flow->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <var_flow:nullable FlowContext(FlowContext)> */
5249 if (unlikely(var18 == NULL)) {
5250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
5251 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
5252 show_backtrace(1);
5253 }
5254 var16 = var18;
5255 RET_LABEL17:(void)0;
5256 }
5257 }
5258 {
5259 var19 = abstract_collection__MapRead__has_key(var16, var_variable);
5260 }
5261 if (var19){
5262 {
5263 { /* Inline typing#FlowContext#vars (var_flow) on <var_flow:nullable FlowContext(FlowContext)> */
5264 var22 = var_flow->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <var_flow:nullable FlowContext(FlowContext)> */
5265 if (unlikely(var22 == NULL)) {
5266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
5267 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
5268 show_backtrace(1);
5269 }
5270 var20 = var22;
5271 RET_LABEL21:(void)0;
5272 }
5273 }
5274 {
5275 var23 = hash_collection__HashMap___91d_93d(var20, var_variable);
5276 }
5277 var = var23;
5278 goto RET_LABEL;
5279 } else {
5280 {
5281 var24 = typing__FlowContext__collect_types(var_flow, var_variable);
5282 }
5283 var_mtypes = var24;
5284 var26 = NULL;
5285 if (var_mtypes == NULL) {
5286 var27 = 1; /* is null */
5287 } else {
5288 var27 = 0; /* arg is null but recv is not */
5289 }
5290 if (0) {
5291 var28 = array__Array___61d_61d(var_mtypes, var26);
5292 var27 = var28;
5293 }
5294 var_ = var27;
5295 if (var27){
5296 var25 = var_;
5297 } else {
5298 {
5299 { /* Inline array#AbstractArrayRead#length (var_mtypes) on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])> */
5300 var31 = var_mtypes->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])> */
5301 var29 = var31;
5302 RET_LABEL30:(void)0;
5303 }
5304 }
5305 var32 = 0;
5306 {
5307 { /* Inline kernel#Int#== (var29,var32) on <var29:Int> */
5308 var36 = var29 == var32;
5309 var34 = var36;
5310 goto RET_LABEL35;
5311 RET_LABEL35:(void)0;
5312 }
5313 var33 = var34;
5314 }
5315 var25 = var33;
5316 }
5317 if (var25){
5318 {
5319 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:Variable> */
5320 var39 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
5321 var37 = var39;
5322 RET_LABEL38:(void)0;
5323 }
5324 }
5325 var = var37;
5326 goto RET_LABEL;
5327 } else {
5328 {
5329 { /* Inline array#AbstractArrayRead#length (var_mtypes) on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])> */
5330 var42 = var_mtypes->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_mtypes:nullable Array[nullable MType](Array[nullable MType])> */
5331 var40 = var42;
5332 RET_LABEL41:(void)0;
5333 }
5334 }
5335 var43 = 1;
5336 {
5337 { /* Inline kernel#Int#== (var40,var43) on <var40:Int> */
5338 var47 = var40 == var43;
5339 var45 = var47;
5340 goto RET_LABEL46;
5341 RET_LABEL46:(void)0;
5342 }
5343 var44 = var45;
5344 }
5345 if (var44){
5346 {
5347 var48 = abstract_collection__SequenceRead__first(var_mtypes);
5348 }
5349 var = var48;
5350 goto RET_LABEL;
5351 } else {
5352 {
5353 var49 = typing__TypeVisitor__merge_types(self, var_node, var_mtypes);
5354 }
5355 var_res = var49;
5356 var50 = NULL;
5357 if (var_res == NULL) {
5358 var51 = 1; /* is null */
5359 } else {
5360 var51 = 0; /* arg is null but recv is not */
5361 }
5362 if (0) {
5363 { /* Inline kernel#Object#== (var_res,var50) on <var_res:nullable MType> */
5364 var_other = var50;
5365 {
5366 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable MType(MType)> */
5367 var56 = var_res == var_other;
5368 var54 = var56;
5369 goto RET_LABEL55;
5370 RET_LABEL55:(void)0;
5371 }
5372 }
5373 var52 = var54;
5374 goto RET_LABEL53;
5375 RET_LABEL53:(void)0;
5376 }
5377 var51 = var52;
5378 }
5379 if (var51){
5380 {
5381 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:Variable> */
5382 var59 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
5383 var57 = var59;
5384 RET_LABEL58:(void)0;
5385 }
5386 }
5387 var_res = var57;
5388 } else {
5389 }
5390 var = var_res;
5391 goto RET_LABEL;
5392 }
5393 }
5394 }
5395 RET_LABEL:;
5396 return var;
5397 }
5398 /* method typing#TypeVisitor#get_variable for (self: Object, AExpr, Variable): nullable MType */
5399 val* VIRTUAL_typing__TypeVisitor__get_variable(val* self, val* p0, val* p1) {
5400 val* var /* : nullable MType */;
5401 val* var1 /* : nullable MType */;
5402 var1 = typing__TypeVisitor__get_variable(self, p0, p1);
5403 var = var1;
5404 RET_LABEL:;
5405 return var;
5406 }
5407 /* method typing#TypeVisitor#set_variable for (self: TypeVisitor, AExpr, Variable, nullable MType) */
5408 void typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
5409 val* var_node /* var node: AExpr */;
5410 val* var_variable /* var variable: Variable */;
5411 val* var_mtype /* var mtype: nullable MType */;
5412 val* var /* : nullable FlowContext */;
5413 val* var2 /* : nullable FlowContext */;
5414 val* var_flow /* var flow: nullable FlowContext */;
5415 val* var3 /* : null */;
5416 short int var4 /* : Bool */;
5417 short int var5 /* : Bool */;
5418 val* var_other /* var other: nullable Object */;
5419 short int var7 /* : Bool */;
5420 short int var8 /* : Bool */;
5421 short int var9 /* : Bool */;
5422 var_node = p0;
5423 var_variable = p1;
5424 var_mtype = p2;
5425 {
5426 { /* Inline flow#AExpr#after_flow_context (var_node) on <var_node:AExpr> */
5427 var2 = var_node->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
5428 var = var2;
5429 RET_LABEL1:(void)0;
5430 }
5431 }
5432 var_flow = var;
5433 var3 = NULL;
5434 if (var_flow == NULL) {
5435 var4 = 0; /* is null */
5436 } else {
5437 var4 = 1; /* arg is null and recv is not */
5438 }
5439 if (0) {
5440 { /* Inline kernel#Object#!= (var_flow,var3) on <var_flow:nullable FlowContext> */
5441 var_other = var3;
5442 {
5443 var8 = ((short int (*)(val*, val*))(var_flow->class->vft[COLOR_kernel__Object___61d_61d]))(var_flow, var_other) /* == on <var_flow:nullable FlowContext(FlowContext)>*/;
5444 var7 = var8;
5445 }
5446 var9 = !var7;
5447 var5 = var9;
5448 goto RET_LABEL6;
5449 RET_LABEL6:(void)0;
5450 }
5451 var4 = var5;
5452 }
5453 if (unlikely(!var4)) {
5454 PRINT_ERROR("Runtime error: %s", "Assert failed");
5455 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 436);
5456 show_backtrace(1);
5457 }
5458 {
5459 typing__FlowContext__set_var(var_flow, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on <var_flow:nullable FlowContext(FlowContext)>*/
5460 }
5461 RET_LABEL:;
5462 }
5463 /* method typing#TypeVisitor#set_variable for (self: Object, AExpr, Variable, nullable MType) */
5464 void VIRTUAL_typing__TypeVisitor__set_variable(val* self, val* p0, val* p1, val* p2) {
5465 typing__TypeVisitor__set_variable(self, p0, p1, p2); /* Direct call typing#TypeVisitor#set_variable on <self:Object(TypeVisitor)>*/
5466 RET_LABEL:;
5467 }
5468 /* method typing#TypeVisitor#merge_types for (self: TypeVisitor, ANode, Array[nullable MType]): nullable MType */
5469 val* typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
5470 val* var /* : nullable MType */;
5471 val* var_node /* var node: ANode */;
5472 val* var_col /* var col: Array[nullable MType] */;
5473 long var1 /* : Int */;
5474 long var3 /* : Int */;
5475 long var4 /* : Int */;
5476 short int var5 /* : Bool */;
5477 short int var6 /* : Bool */;
5478 short int var8 /* : Bool */;
5479 val* var9 /* : nullable Object */;
5480 val* var_ /* var : Array[nullable MType] */;
5481 val* var10 /* : ArrayIterator[nullable Object] */;
5482 val* var_11 /* var : ArrayIterator[nullable MType] */;
5483 short int var12 /* : Bool */;
5484 val* var13 /* : nullable Object */;
5485 val* var_t1 /* var t1: nullable MType */;
5486 val* var14 /* : null */;
5487 short int var15 /* : Bool */;
5488 short int var16 /* : Bool */;
5489 val* var_other /* var other: nullable Object */;
5490 short int var18 /* : Bool */;
5491 short int var20 /* : Bool */;
5492 short int var21 /* : Bool */;
5493 short int var_found /* var found: Bool */;
5494 val* var_22 /* var : Array[nullable MType] */;
5495 val* var23 /* : ArrayIterator[nullable Object] */;
5496 val* var_24 /* var : ArrayIterator[nullable MType] */;
5497 short int var25 /* : Bool */;
5498 val* var26 /* : nullable Object */;
5499 val* var_t2 /* var t2: nullable MType */;
5500 val* var27 /* : null */;
5501 short int var28 /* : Bool */;
5502 short int var29 /* : Bool */;
5503 short int var31 /* : Bool */;
5504 short int var33 /* : Bool */;
5505 short int var35 /* : Bool */;
5506 short int var36 /* : Bool */;
5507 int cltype;
5508 int idtype;
5509 short int var_37 /* var : Bool */;
5510 short int var38 /* : Bool */;
5511 int cltype39;
5512 int idtype40;
5513 val* var41 /* : MType */;
5514 short int var42 /* : Bool */;
5515 short int var43 /* : Bool */;
5516 short int var44 /* : Bool */;
5517 val* var49 /* : null */;
5518 var_node = p0;
5519 var_col = p1;
5520 {
5521 { /* Inline array#AbstractArrayRead#length (var_col) on <var_col:Array[nullable MType]> */
5522 var3 = var_col->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_col:Array[nullable MType]> */
5523 var1 = var3;
5524 RET_LABEL2:(void)0;
5525 }
5526 }
5527 var4 = 1;
5528 {
5529 { /* Inline kernel#Int#== (var1,var4) on <var1:Int> */
5530 var8 = var1 == var4;
5531 var6 = var8;
5532 goto RET_LABEL7;
5533 RET_LABEL7:(void)0;
5534 }
5535 var5 = var6;
5536 }
5537 if (var5){
5538 {
5539 var9 = abstract_collection__SequenceRead__first(var_col);
5540 }
5541 var = var9;
5542 goto RET_LABEL;
5543 } else {
5544 }
5545 var_ = var_col;
5546 {
5547 var10 = array__AbstractArrayRead__iterator(var_);
5548 }
5549 var_11 = var10;
5550 for(;;) {
5551 {
5552 var12 = array__ArrayIterator__is_ok(var_11);
5553 }
5554 if (var12){
5555 {
5556 var13 = array__ArrayIterator__item(var_11);
5557 }
5558 var_t1 = var13;
5559 var14 = NULL;
5560 if (var_t1 == NULL) {
5561 var15 = 1; /* is null */
5562 } else {
5563 var15 = 0; /* arg is null but recv is not */
5564 }
5565 if (0) {
5566 { /* Inline kernel#Object#== (var_t1,var14) on <var_t1:nullable MType> */
5567 var_other = var14;
5568 {
5569 { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
5570 var20 = var_t1 == var_other;
5571 var18 = var20;
5572 goto RET_LABEL19;
5573 RET_LABEL19:(void)0;
5574 }
5575 }
5576 var16 = var18;
5577 goto RET_LABEL17;
5578 RET_LABEL17:(void)0;
5579 }
5580 var15 = var16;
5581 }
5582 if (var15){
5583 goto BREAK_label;
5584 } else {
5585 }
5586 var21 = 1;
5587 var_found = var21;
5588 var_22 = var_col;
5589 {
5590 var23 = array__AbstractArrayRead__iterator(var_22);
5591 }
5592 var_24 = var23;
5593 for(;;) {
5594 {
5595 var25 = array__ArrayIterator__is_ok(var_24);
5596 }
5597 if (var25){
5598 {
5599 var26 = array__ArrayIterator__item(var_24);
5600 }
5601 var_t2 = var26;
5602 var27 = NULL;
5603 if (var_t2 == NULL) {
5604 var28 = 1; /* is null */
5605 } else {
5606 var28 = 0; /* arg is null but recv is not */
5607 }
5608 if (0) {
5609 { /* Inline kernel#Object#== (var_t2,var27) on <var_t2:nullable MType> */
5610 var_other = var27;
5611 {
5612 { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
5613 var33 = var_t2 == var_other;
5614 var31 = var33;
5615 goto RET_LABEL32;
5616 RET_LABEL32:(void)0;
5617 }
5618 }
5619 var29 = var31;
5620 goto RET_LABEL30;
5621 RET_LABEL30:(void)0;
5622 }
5623 var28 = var29;
5624 }
5625 if (var28){
5626 goto BREAK_label34;
5627 } else {
5628 }
5629 /* <var_t2:nullable MType(MType)> isa MNullableType */
5630 cltype = type_model__MNullableType.color;
5631 idtype = type_model__MNullableType.id;
5632 if(cltype >= var_t2->type->table_size) {
5633 var36 = 0;
5634 } else {
5635 var36 = var_t2->type->type_table[cltype] == idtype;
5636 }
5637 var_37 = var36;
5638 if (var36){
5639 var35 = var_37;
5640 } else {
5641 /* <var_t2:nullable MType(MType)> isa MNullType */
5642 cltype39 = type_model__MNullType.color;
5643 idtype40 = type_model__MNullType.id;
5644 if(cltype39 >= var_t2->type->table_size) {
5645 var38 = 0;
5646 } else {
5647 var38 = var_t2->type->type_table[cltype39] == idtype40;
5648 }
5649 var35 = var38;
5650 }
5651 if (var35){
5652 {
5653 var41 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MType__as_nullable]))(var_t1) /* as_nullable on <var_t1:nullable MType(MType)>*/;
5654 }
5655 var_t1 = var41;
5656 } else {
5657 }
5658 {
5659 var42 = typing__TypeVisitor__is_subtype(self, var_t2, var_t1);
5660 }
5661 var43 = !var42;
5662 if (var43){
5663 var44 = 0;
5664 var_found = var44;
5665 } else {
5666 }
5667 BREAK_label34: (void)0;
5668 {
5669 array__ArrayIterator__next(var_24); /* Direct call array#ArrayIterator#next on <var_24:ArrayIterator[nullable MType]>*/
5670 }
5671 } else {
5672 goto BREAK_label45;
5673 }
5674 }
5675 BREAK_label45: (void)0;
5676 {
5677 { /* Inline abstract_collection#Iterator#finish (var_24) on <var_24:ArrayIterator[nullable MType]> */
5678 RET_LABEL46:(void)0;
5679 }
5680 }
5681 if (var_found){
5682 var = var_t1;
5683 goto RET_LABEL;
5684 } else {
5685 }
5686 BREAK_label: (void)0;
5687 {
5688 array__ArrayIterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[nullable MType]>*/
5689 }
5690 } else {
5691 goto BREAK_label47;
5692 }
5693 }
5694 BREAK_label47: (void)0;
5695 {
5696 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[nullable MType]> */
5697 RET_LABEL48:(void)0;
5698 }
5699 }
5700 var49 = NULL;
5701 var = var49;
5702 goto RET_LABEL;
5703 RET_LABEL:;
5704 return var;
5705 }
5706 /* method typing#TypeVisitor#merge_types for (self: Object, ANode, Array[nullable MType]): nullable MType */
5707 val* VIRTUAL_typing__TypeVisitor__merge_types(val* self, val* p0, val* p1) {
5708 val* var /* : nullable MType */;
5709 val* var1 /* : nullable MType */;
5710 var1 = typing__TypeVisitor__merge_types(self, p0, p1);
5711 var = var1;
5712 RET_LABEL:;
5713 return var;
5714 }
5715 /* method typing#CallSite#node for (self: CallSite): ANode */
5716 val* typing__CallSite__node(val* self) {
5717 val* var /* : ANode */;
5718 val* var1 /* : ANode */;
5719 var1 = self->attrs[COLOR_typing__CallSite___node].val; /* _node on <self:CallSite> */
5720 if (unlikely(var1 == NULL)) {
5721 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _node");
5722 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 466);
5723 show_backtrace(1);
5724 }
5725 var = var1;
5726 RET_LABEL:;
5727 return var;
5728 }
5729 /* method typing#CallSite#node for (self: Object): ANode */
5730 val* VIRTUAL_typing__CallSite__node(val* self) {
5731 val* var /* : ANode */;
5732 val* var1 /* : ANode */;
5733 val* var3 /* : ANode */;
5734 { /* Inline typing#CallSite#node (self) on <self:Object(CallSite)> */
5735 var3 = self->attrs[COLOR_typing__CallSite___node].val; /* _node on <self:Object(CallSite)> */
5736 if (unlikely(var3 == NULL)) {
5737 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _node");
5738 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 466);
5739 show_backtrace(1);
5740 }
5741 var1 = var3;
5742 RET_LABEL2:(void)0;
5743 }
5744 var = var1;
5745 RET_LABEL:;
5746 return var;
5747 }
5748 /* method typing#CallSite#node= for (self: CallSite, ANode) */
5749 void typing__CallSite__node_61d(val* self, val* p0) {
5750 self->attrs[COLOR_typing__CallSite___node].val = p0; /* _node on <self:CallSite> */
5751 RET_LABEL:;
5752 }
5753 /* method typing#CallSite#node= for (self: Object, ANode) */
5754 void VIRTUAL_typing__CallSite__node_61d(val* self, val* p0) {
5755 { /* Inline typing#CallSite#node= (self,p0) on <self:Object(CallSite)> */
5756 self->attrs[COLOR_typing__CallSite___node].val = p0; /* _node on <self:Object(CallSite)> */
5757 RET_LABEL1:(void)0;
5758 }
5759 RET_LABEL:;
5760 }
5761 /* method typing#CallSite#recv for (self: CallSite): MType */
5762 val* typing__CallSite__recv(val* self) {
5763 val* var /* : MType */;
5764 val* var1 /* : MType */;
5765 var1 = self->attrs[COLOR_typing__CallSite___recv].val; /* _recv on <self:CallSite> */
5766 if (unlikely(var1 == NULL)) {
5767 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
5768 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469);
5769 show_backtrace(1);
5770 }
5771 var = var1;
5772 RET_LABEL:;
5773 return var;
5774 }
5775 /* method typing#CallSite#recv for (self: Object): MType */
5776 val* VIRTUAL_typing__CallSite__recv(val* self) {
5777 val* var /* : MType */;
5778 val* var1 /* : MType */;
5779 val* var3 /* : MType */;
5780 { /* Inline typing#CallSite#recv (self) on <self:Object(CallSite)> */
5781 var3 = self->attrs[COLOR_typing__CallSite___recv].val; /* _recv on <self:Object(CallSite)> */
5782 if (unlikely(var3 == NULL)) {
5783 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
5784 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 469);
5785 show_backtrace(1);
5786 }
5787 var1 = var3;
5788 RET_LABEL2:(void)0;
5789 }
5790 var = var1;
5791 RET_LABEL:;
5792 return var;
5793 }
5794 /* method typing#CallSite#recv= for (self: CallSite, MType) */
5795 void typing__CallSite__recv_61d(val* self, val* p0) {
5796 self->attrs[COLOR_typing__CallSite___recv].val = p0; /* _recv on <self:CallSite> */
5797 RET_LABEL:;
5798 }
5799 /* method typing#CallSite#recv= for (self: Object, MType) */
5800 void VIRTUAL_typing__CallSite__recv_61d(val* self, val* p0) {
5801 { /* Inline typing#CallSite#recv= (self,p0) on <self:Object(CallSite)> */
5802 self->attrs[COLOR_typing__CallSite___recv].val = p0; /* _recv on <self:Object(CallSite)> */
5803 RET_LABEL1:(void)0;
5804 }
5805 RET_LABEL:;
5806 }
5807 /* method typing#CallSite#mmodule for (self: CallSite): MModule */
5808 val* typing__CallSite__mmodule(val* self) {
5809 val* var /* : MModule */;
5810 val* var1 /* : MModule */;
5811 var1 = self->attrs[COLOR_typing__CallSite___mmodule].val; /* _mmodule on <self:CallSite> */
5812 if (unlikely(var1 == NULL)) {
5813 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5814 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 472);
5815 show_backtrace(1);
5816 }
5817 var = var1;
5818 RET_LABEL:;
5819 return var;
5820 }
5821 /* method typing#CallSite#mmodule for (self: Object): MModule */
5822 val* VIRTUAL_typing__CallSite__mmodule(val* self) {
5823 val* var /* : MModule */;
5824 val* var1 /* : MModule */;
5825 val* var3 /* : MModule */;
5826 { /* Inline typing#CallSite#mmodule (self) on <self:Object(CallSite)> */
5827 var3 = self->attrs[COLOR_typing__CallSite___mmodule].val; /* _mmodule on <self:Object(CallSite)> */
5828 if (unlikely(var3 == NULL)) {
5829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5830 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 472);
5831 show_backtrace(1);
5832 }
5833 var1 = var3;
5834 RET_LABEL2:(void)0;
5835 }
5836 var = var1;
5837 RET_LABEL:;
5838 return var;
5839 }
5840 /* method typing#CallSite#mmodule= for (self: CallSite, MModule) */
5841 void typing__CallSite__mmodule_61d(val* self, val* p0) {
5842 self->attrs[COLOR_typing__CallSite___mmodule].val = p0; /* _mmodule on <self:CallSite> */
5843 RET_LABEL:;
5844 }
5845 /* method typing#CallSite#mmodule= for (self: Object, MModule) */
5846 void VIRTUAL_typing__CallSite__mmodule_61d(val* self, val* p0) {
5847 { /* Inline typing#CallSite#mmodule= (self,p0) on <self:Object(CallSite)> */
5848 self->attrs[COLOR_typing__CallSite___mmodule].val = p0; /* _mmodule on <self:Object(CallSite)> */
5849 RET_LABEL1:(void)0;
5850 }
5851 RET_LABEL:;
5852 }
5853 /* method typing#CallSite#anchor for (self: CallSite): nullable MClassType */
5854 val* typing__CallSite__anchor(val* self) {
5855 val* var /* : nullable MClassType */;
5856 val* var1 /* : nullable MClassType */;
5857 var1 = self->attrs[COLOR_typing__CallSite___anchor].val; /* _anchor on <self:CallSite> */
5858 var = var1;
5859 RET_LABEL:;
5860 return var;
5861 }
5862 /* method typing#CallSite#anchor for (self: Object): nullable MClassType */
5863 val* VIRTUAL_typing__CallSite__anchor(val* self) {
5864 val* var /* : nullable MClassType */;
5865 val* var1 /* : nullable MClassType */;
5866 val* var3 /* : nullable MClassType */;
5867 { /* Inline typing#CallSite#anchor (self) on <self:Object(CallSite)> */
5868 var3 = self->attrs[COLOR_typing__CallSite___anchor].val; /* _anchor on <self:Object(CallSite)> */
5869 var1 = var3;
5870 RET_LABEL2:(void)0;
5871 }
5872 var = var1;
5873 RET_LABEL:;
5874 return var;
5875 }
5876 /* method typing#CallSite#anchor= for (self: CallSite, nullable MClassType) */
5877 void typing__CallSite__anchor_61d(val* self, val* p0) {
5878 self->attrs[COLOR_typing__CallSite___anchor].val = p0; /* _anchor on <self:CallSite> */
5879 RET_LABEL:;
5880 }
5881 /* method typing#CallSite#anchor= for (self: Object, nullable MClassType) */
5882 void VIRTUAL_typing__CallSite__anchor_61d(val* self, val* p0) {
5883 { /* Inline typing#CallSite#anchor= (self,p0) on <self:Object(CallSite)> */
5884 self->attrs[COLOR_typing__CallSite___anchor].val = p0; /* _anchor on <self:Object(CallSite)> */
5885 RET_LABEL1:(void)0;
5886 }
5887 RET_LABEL:;
5888 }
5889 /* method typing#CallSite#recv_is_self= for (self: CallSite, Bool) */
5890 void typing__CallSite__recv_is_self_61d(val* self, short int p0) {
5891 self->attrs[COLOR_typing__CallSite___recv_is_self].s = p0; /* _recv_is_self on <self:CallSite> */
5892 RET_LABEL:;
5893 }
5894 /* method typing#CallSite#recv_is_self= for (self: Object, Bool) */
5895 void VIRTUAL_typing__CallSite__recv_is_self_61d(val* self, short int p0) {
5896 { /* Inline typing#CallSite#recv_is_self= (self,p0) on <self:Object(CallSite)> */
5897 self->attrs[COLOR_typing__CallSite___recv_is_self].s = p0; /* _recv_is_self on <self:Object(CallSite)> */
5898 RET_LABEL1:(void)0;
5899 }
5900 RET_LABEL:;
5901 }
5902 /* method typing#CallSite#mproperty for (self: CallSite): MMethod */
5903 val* typing__CallSite__mproperty(val* self) {
5904 val* var /* : MMethod */;
5905 val* var1 /* : MMethod */;
5906 var1 = self->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <self:CallSite> */
5907 if (unlikely(var1 == NULL)) {
5908 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5909 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
5910 show_backtrace(1);
5911 }
5912 var = var1;
5913 RET_LABEL:;
5914 return var;
5915 }
5916 /* method typing#CallSite#mproperty for (self: Object): MMethod */
5917 val* VIRTUAL_typing__CallSite__mproperty(val* self) {
5918 val* var /* : MMethod */;
5919 val* var1 /* : MMethod */;
5920 val* var3 /* : MMethod */;
5921 { /* Inline typing#CallSite#mproperty (self) on <self:Object(CallSite)> */
5922 var3 = self->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <self:Object(CallSite)> */
5923 if (unlikely(var3 == NULL)) {
5924 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5925 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
5926 show_backtrace(1);
5927 }
5928 var1 = var3;
5929 RET_LABEL2:(void)0;
5930 }
5931 var = var1;
5932 RET_LABEL:;
5933 return var;
5934 }
5935 /* method typing#CallSite#mproperty= for (self: CallSite, MMethod) */
5936 void typing__CallSite__mproperty_61d(val* self, val* p0) {
5937 self->attrs[COLOR_typing__CallSite___mproperty].val = p0; /* _mproperty on <self:CallSite> */
5938 RET_LABEL:;
5939 }
5940 /* method typing#CallSite#mproperty= for (self: Object, MMethod) */
5941 void VIRTUAL_typing__CallSite__mproperty_61d(val* self, val* p0) {
5942 { /* Inline typing#CallSite#mproperty= (self,p0) on <self:Object(CallSite)> */
5943 self->attrs[COLOR_typing__CallSite___mproperty].val = p0; /* _mproperty on <self:Object(CallSite)> */
5944 RET_LABEL1:(void)0;
5945 }
5946 RET_LABEL:;
5947 }
5948 /* method typing#CallSite#mpropdef for (self: CallSite): MMethodDef */
5949 val* typing__CallSite__mpropdef(val* self) {
5950 val* var /* : MMethodDef */;
5951 val* var1 /* : MMethodDef */;
5952 var1 = self->attrs[COLOR_typing__CallSite___mpropdef].val; /* _mpropdef on <self:CallSite> */
5953 if (unlikely(var1 == NULL)) {
5954 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
5955 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 486);
5956 show_backtrace(1);
5957 }
5958 var = var1;
5959 RET_LABEL:;
5960 return var;
5961 }
5962 /* method typing#CallSite#mpropdef for (self: Object): MMethodDef */
5963 val* VIRTUAL_typing__CallSite__mpropdef(val* self) {
5964 val* var /* : MMethodDef */;
5965 val* var1 /* : MMethodDef */;
5966 val* var3 /* : MMethodDef */;
5967 { /* Inline typing#CallSite#mpropdef (self) on <self:Object(CallSite)> */
5968 var3 = self->attrs[COLOR_typing__CallSite___mpropdef].val; /* _mpropdef on <self:Object(CallSite)> */
5969 if (unlikely(var3 == NULL)) {
5970 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
5971 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 486);
5972 show_backtrace(1);
5973 }
5974 var1 = var3;
5975 RET_LABEL2:(void)0;
5976 }
5977 var = var1;
5978 RET_LABEL:;
5979 return var;
5980 }
5981 /* method typing#CallSite#mpropdef= for (self: CallSite, MMethodDef) */
5982 void typing__CallSite__mpropdef_61d(val* self, val* p0) {
5983 self->attrs[COLOR_typing__CallSite___mpropdef].val = p0; /* _mpropdef on <self:CallSite> */
5984 RET_LABEL:;
5985 }
5986 /* method typing#CallSite#mpropdef= for (self: Object, MMethodDef) */
5987 void VIRTUAL_typing__CallSite__mpropdef_61d(val* self, val* p0) {
5988 { /* Inline typing#CallSite#mpropdef= (self,p0) on <self:Object(CallSite)> */
5989 self->attrs[COLOR_typing__CallSite___mpropdef].val = p0; /* _mpropdef on <self:Object(CallSite)> */
5990 RET_LABEL1:(void)0;
5991 }
5992 RET_LABEL:;
5993 }
5994 /* method typing#CallSite#msignature for (self: CallSite): MSignature */
5995 val* typing__CallSite__msignature(val* self) {
5996 val* var /* : MSignature */;
5997 val* var1 /* : MSignature */;
5998 var1 = self->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <self:CallSite> */
5999 if (unlikely(var1 == NULL)) {
6000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
6001 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
6002 show_backtrace(1);
6003 }
6004 var = var1;
6005 RET_LABEL:;
6006 return var;
6007 }
6008 /* method typing#CallSite#msignature for (self: Object): MSignature */
6009 val* VIRTUAL_typing__CallSite__msignature(val* self) {
6010 val* var /* : MSignature */;
6011 val* var1 /* : MSignature */;
6012 val* var3 /* : MSignature */;
6013 { /* Inline typing#CallSite#msignature (self) on <self:Object(CallSite)> */
6014 var3 = self->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <self:Object(CallSite)> */
6015 if (unlikely(var3 == NULL)) {
6016 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
6017 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
6018 show_backtrace(1);
6019 }
6020 var1 = var3;
6021 RET_LABEL2:(void)0;
6022 }
6023 var = var1;
6024 RET_LABEL:;
6025 return var;
6026 }
6027 /* method typing#CallSite#msignature= for (self: CallSite, MSignature) */
6028 void typing__CallSite__msignature_61d(val* self, val* p0) {
6029 self->attrs[COLOR_typing__CallSite___msignature].val = p0; /* _msignature on <self:CallSite> */
6030 RET_LABEL:;
6031 }
6032 /* method typing#CallSite#msignature= for (self: Object, MSignature) */
6033 void VIRTUAL_typing__CallSite__msignature_61d(val* self, val* p0) {
6034 { /* Inline typing#CallSite#msignature= (self,p0) on <self:Object(CallSite)> */
6035 self->attrs[COLOR_typing__CallSite___msignature].val = p0; /* _msignature on <self:Object(CallSite)> */
6036 RET_LABEL1:(void)0;
6037 }
6038 RET_LABEL:;
6039 }
6040 /* method typing#CallSite#erasure_cast for (self: CallSite): Bool */
6041 short int typing__CallSite__erasure_cast(val* self) {
6042 short int var /* : Bool */;
6043 short int var1 /* : Bool */;
6044 var1 = self->attrs[COLOR_typing__CallSite___erasure_cast].s; /* _erasure_cast on <self:CallSite> */
6045 var = var1;
6046 RET_LABEL:;
6047 return var;
6048 }
6049 /* method typing#CallSite#erasure_cast for (self: Object): Bool */
6050 short int VIRTUAL_typing__CallSite__erasure_cast(val* self) {
6051 short int var /* : Bool */;
6052 short int var1 /* : Bool */;
6053 short int var3 /* : Bool */;
6054 { /* Inline typing#CallSite#erasure_cast (self) on <self:Object(CallSite)> */
6055 var3 = self->attrs[COLOR_typing__CallSite___erasure_cast].s; /* _erasure_cast on <self:Object(CallSite)> */
6056 var1 = var3;
6057 RET_LABEL2:(void)0;
6058 }
6059 var = var1;
6060 RET_LABEL:;
6061 return var;
6062 }
6063 /* method typing#CallSite#erasure_cast= for (self: CallSite, Bool) */
6064 void typing__CallSite__erasure_cast_61d(val* self, short int p0) {
6065 self->attrs[COLOR_typing__CallSite___erasure_cast].s = p0; /* _erasure_cast on <self:CallSite> */
6066 RET_LABEL:;
6067 }
6068 /* method typing#CallSite#erasure_cast= for (self: Object, Bool) */
6069 void VIRTUAL_typing__CallSite__erasure_cast_61d(val* self, short int p0) {
6070 { /* Inline typing#CallSite#erasure_cast= (self,p0) on <self:Object(CallSite)> */
6071 self->attrs[COLOR_typing__CallSite___erasure_cast].s = p0; /* _erasure_cast on <self:Object(CallSite)> */
6072 RET_LABEL1:(void)0;
6073 }
6074 RET_LABEL:;
6075 }
6076 /* method typing#CallSite#check_signature for (self: CallSite, TypeVisitor, Array[AExpr]): Bool */
6077 short int typing__CallSite__check_signature(val* self, val* p0, val* p1) {
6078 short int var /* : Bool */;
6079 val* var_v /* var v: TypeVisitor */;
6080 val* var_args /* var args: Array[AExpr] */;
6081 val* var1 /* : ANode */;
6082 val* var3 /* : ANode */;
6083 val* var4 /* : MMethod */;
6084 val* var6 /* : MMethod */;
6085 val* var7 /* : String */;
6086 val* var9 /* : String */;
6087 val* var10 /* : MSignature */;
6088 val* var12 /* : MSignature */;
6089 short int var13 /* : Bool */;
6090 var_v = p0;
6091 var_args = p1;
6092 {
6093 { /* Inline typing#CallSite#node (self) on <self:CallSite> */
6094 var3 = self->attrs[COLOR_typing__CallSite___node].val; /* _node on <self:CallSite> */
6095 if (unlikely(var3 == NULL)) {
6096 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _node");
6097 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 466);
6098 show_backtrace(1);
6099 }
6100 var1 = var3;
6101 RET_LABEL2:(void)0;
6102 }
6103 }
6104 {
6105 { /* Inline typing#CallSite#mproperty (self) on <self:CallSite> */
6106 var6 = self->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <self:CallSite> */
6107 if (unlikely(var6 == NULL)) {
6108 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6109 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
6110 show_backtrace(1);
6111 }
6112 var4 = var6;
6113 RET_LABEL5:(void)0;
6114 }
6115 }
6116 {
6117 { /* Inline model#MProperty#name (var4) on <var4:MMethod> */
6118 var9 = var4->attrs[COLOR_model__MProperty___name].val; /* _name on <var4:MMethod> */
6119 if (unlikely(var9 == NULL)) {
6120 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6121 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
6122 show_backtrace(1);
6123 }
6124 var7 = var9;
6125 RET_LABEL8:(void)0;
6126 }
6127 }
6128 {
6129 { /* Inline typing#CallSite#msignature (self) on <self:CallSite> */
6130 var12 = self->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <self:CallSite> */
6131 if (unlikely(var12 == NULL)) {
6132 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
6133 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
6134 show_backtrace(1);
6135 }
6136 var10 = var12;
6137 RET_LABEL11:(void)0;
6138 }
6139 }
6140 {
6141 var13 = typing__TypeVisitor__check_signature(var_v, var1, var_args, var7, var10);
6142 }
6143 var = var13;
6144 goto RET_LABEL;
6145 RET_LABEL:;
6146 return var;
6147 }
6148 /* method typing#CallSite#check_signature for (self: Object, TypeVisitor, Array[AExpr]): Bool */
6149 short int VIRTUAL_typing__CallSite__check_signature(val* self, val* p0, val* p1) {
6150 short int var /* : Bool */;
6151 short int var1 /* : Bool */;
6152 var1 = typing__CallSite__check_signature(self, p0, p1);
6153 var = var1;
6154 RET_LABEL:;
6155 return var;
6156 }
6157 /* method typing#CallSite#init for (self: CallSite) */
6158 void typing__CallSite__init(val* self) {
6159 {
6160 ((void (*)(val*))(self->class->vft[COLOR_typing__CallSite__init]))(self) /* init on <self:CallSite>*/;
6161 }
6162 RET_LABEL:;
6163 }
6164 /* method typing#CallSite#init for (self: Object) */
6165 void VIRTUAL_typing__CallSite__init(val* self) {
6166 { /* Inline typing#CallSite#init (self) on <self:Object(CallSite)> */
6167 {
6168 ((void (*)(val*))(self->class->vft[COLOR_typing__CallSite__init]))(self) /* init on <self:Object(CallSite)>*/;
6169 }
6170 RET_LABEL1:(void)0;
6171 }
6172 RET_LABEL:;
6173 }
6174 /* method typing#Variable#declared_type for (self: Variable): nullable MType */
6175 val* typing__Variable__declared_type(val* self) {
6176 val* var /* : nullable MType */;
6177 val* var1 /* : nullable MType */;
6178 var1 = self->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <self:Variable> */
6179 var = var1;
6180 RET_LABEL:;
6181 return var;
6182 }
6183 /* method typing#Variable#declared_type for (self: Object): nullable MType */
6184 val* VIRTUAL_typing__Variable__declared_type(val* self) {
6185 val* var /* : nullable MType */;
6186 val* var1 /* : nullable MType */;
6187 val* var3 /* : nullable MType */;
6188 { /* Inline typing#Variable#declared_type (self) on <self:Object(Variable)> */
6189 var3 = self->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <self:Object(Variable)> */
6190 var1 = var3;
6191 RET_LABEL2:(void)0;
6192 }
6193 var = var1;
6194 RET_LABEL:;
6195 return var;
6196 }
6197 /* method typing#Variable#declared_type= for (self: Variable, nullable MType) */
6198 void typing__Variable__declared_type_61d(val* self, val* p0) {
6199 self->attrs[COLOR_typing__Variable___declared_type].val = p0; /* _declared_type on <self:Variable> */
6200 RET_LABEL:;
6201 }
6202 /* method typing#Variable#declared_type= for (self: Object, nullable MType) */
6203 void VIRTUAL_typing__Variable__declared_type_61d(val* self, val* p0) {
6204 { /* Inline typing#Variable#declared_type= (self,p0) on <self:Object(Variable)> */
6205 self->attrs[COLOR_typing__Variable___declared_type].val = p0; /* _declared_type on <self:Object(Variable)> */
6206 RET_LABEL1:(void)0;
6207 }
6208 RET_LABEL:;
6209 }
6210 /* method typing#FlowContext#vars for (self: FlowContext): HashMap[Variable, nullable MType] */
6211 val* typing__FlowContext__vars(val* self) {
6212 val* var /* : HashMap[Variable, nullable MType] */;
6213 val* var1 /* : HashMap[Variable, nullable MType] */;
6214 var1 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
6215 if (unlikely(var1 == NULL)) {
6216 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
6217 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
6218 show_backtrace(1);
6219 }
6220 var = var1;
6221 RET_LABEL:;
6222 return var;
6223 }
6224 /* method typing#FlowContext#vars for (self: Object): HashMap[Variable, nullable MType] */
6225 val* VIRTUAL_typing__FlowContext__vars(val* self) {
6226 val* var /* : HashMap[Variable, nullable MType] */;
6227 val* var1 /* : HashMap[Variable, nullable MType] */;
6228 val* var3 /* : HashMap[Variable, nullable MType] */;
6229 { /* Inline typing#FlowContext#vars (self) on <self:Object(FlowContext)> */
6230 var3 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:Object(FlowContext)> */
6231 if (unlikely(var3 == NULL)) {
6232 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
6233 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
6234 show_backtrace(1);
6235 }
6236 var1 = var3;
6237 RET_LABEL2:(void)0;
6238 }
6239 var = var1;
6240 RET_LABEL:;
6241 return var;
6242 }
6243 /* method typing#FlowContext#cache for (self: FlowContext): HashMap[Variable, nullable Array[nullable MType]] */
6244 val* typing__FlowContext__cache(val* self) {
6245 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
6246 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6247 var1 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
6248 if (unlikely(var1 == NULL)) {
6249 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
6250 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 510);
6251 show_backtrace(1);
6252 }
6253 var = var1;
6254 RET_LABEL:;
6255 return var;
6256 }
6257 /* method typing#FlowContext#cache for (self: Object): HashMap[Variable, nullable Array[nullable MType]] */
6258 val* VIRTUAL_typing__FlowContext__cache(val* self) {
6259 val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
6260 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6261 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6262 { /* Inline typing#FlowContext#cache (self) on <self:Object(FlowContext)> */
6263 var3 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:Object(FlowContext)> */
6264 if (unlikely(var3 == NULL)) {
6265 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
6266 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 510);
6267 show_backtrace(1);
6268 }
6269 var1 = var3;
6270 RET_LABEL2:(void)0;
6271 }
6272 var = var1;
6273 RET_LABEL:;
6274 return var;
6275 }
6276 /* method typing#FlowContext#set_var for (self: FlowContext, Variable, nullable MType) */
6277 void typing__FlowContext__set_var(val* self, val* p0, val* p1) {
6278 val* var_variable /* var variable: Variable */;
6279 val* var_mtype /* var mtype: nullable MType */;
6280 val* var /* : HashMap[Variable, nullable MType] */;
6281 val* var2 /* : HashMap[Variable, nullable MType] */;
6282 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6283 val* var5 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6284 val* var6 /* : RemovableCollection[Object] */;
6285 val* var8 /* : RemovableCollection[Object] */;
6286 var_variable = p0;
6287 var_mtype = p1;
6288 {
6289 { /* Inline typing#FlowContext#vars (self) on <self:FlowContext> */
6290 var2 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
6291 if (unlikely(var2 == NULL)) {
6292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
6293 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
6294 show_backtrace(1);
6295 }
6296 var = var2;
6297 RET_LABEL1:(void)0;
6298 }
6299 }
6300 {
6301 hash_collection__HashMap___91d_93d_61d(var, var_variable, var_mtype); /* Direct call hash_collection#HashMap#[]= on <var:HashMap[Variable, nullable MType]>*/
6302 }
6303 {
6304 { /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
6305 var5 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
6306 if (unlikely(var5 == NULL)) {
6307 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
6308 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 510);
6309 show_backtrace(1);
6310 }
6311 var3 = var5;
6312 RET_LABEL4:(void)0;
6313 }
6314 }
6315 {
6316 { /* Inline hash_collection#HashMap#keys (var3) on <var3:HashMap[Variable, nullable Array[nullable MType]]> */
6317 var8 = var3->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var3:HashMap[Variable, nullable Array[nullable MType]]> */
6318 if (unlikely(var8 == NULL)) {
6319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
6320 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
6321 show_backtrace(1);
6322 }
6323 var6 = var8;
6324 RET_LABEL7:(void)0;
6325 }
6326 }
6327 {
6328 ((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var6, var_variable) /* remove on <var6:RemovableCollection[Object](RemovableCollection[Variable])>*/;
6329 }
6330 RET_LABEL:;
6331 }
6332 /* method typing#FlowContext#set_var for (self: Object, Variable, nullable MType) */
6333 void VIRTUAL_typing__FlowContext__set_var(val* self, val* p0, val* p1) {
6334 typing__FlowContext__set_var(self, p0, p1); /* Direct call typing#FlowContext#set_var on <self:Object(FlowContext)>*/
6335 RET_LABEL:;
6336 }
6337 /* method typing#FlowContext#collect_types for (self: FlowContext, Variable): nullable Array[nullable MType] */
6338 val* typing__FlowContext__collect_types(val* self, val* p0) {
6339 val* var /* : nullable Array[nullable MType] */;
6340 val* var_variable /* var variable: Variable */;
6341 val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6342 val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6343 short int var4 /* : Bool */;
6344 val* var5 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6345 val* var7 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6346 val* var8 /* : nullable Object */;
6347 val* var9 /* : null */;
6348 val* var_res /* var res: nullable Array[nullable MType] */;
6349 val* var10 /* : HashMap[Variable, nullable MType] */;
6350 val* var12 /* : HashMap[Variable, nullable MType] */;
6351 short int var13 /* : Bool */;
6352 val* var14 /* : HashMap[Variable, nullable MType] */;
6353 val* var16 /* : HashMap[Variable, nullable MType] */;
6354 val* var17 /* : nullable Object */;
6355 val* var_mtype /* var mtype: nullable MType */;
6356 val* var18 /* : Array[nullable MType] */;
6357 long var19 /* : Int */;
6358 val* var_ /* var : Array[nullable MType] */;
6359 val* var20 /* : Array[FlowContext] */;
6360 val* var22 /* : Array[FlowContext] */;
6361 short int var23 /* : Bool */;
6362 val* var24 /* : Array[nullable MType] */;
6363 long var25 /* : Int */;
6364 val* var_26 /* var : Array[nullable MType] */;
6365 val* var27 /* : nullable MType */;
6366 val* var29 /* : nullable MType */;
6367 val* var30 /* : Array[FlowContext] */;
6368 val* var32 /* : Array[FlowContext] */;
6369 val* var_33 /* var : Array[FlowContext] */;
6370 val* var34 /* : ArrayIterator[nullable Object] */;
6371 val* var_35 /* var : ArrayIterator[FlowContext] */;
6372 short int var36 /* : Bool */;
6373 val* var37 /* : nullable Object */;
6374 val* var_flow /* var flow: FlowContext */;
6375 short int var38 /* : Bool */;
6376 val* var39 /* : nullable Array[nullable MType] */;
6377 val* var_r2 /* var r2: nullable Array[nullable MType] */;
6378 val* var40 /* : null */;
6379 short int var41 /* : Bool */;
6380 short int var42 /* : Bool */;
6381 val* var43 /* : null */;
6382 short int var44 /* : Bool */;
6383 short int var45 /* : Bool */;
6384 val* var46 /* : Array[nullable Object] */;
6385 val* var_47 /* var : Array[nullable MType] */;
6386 val* var48 /* : ArrayIterator[nullable Object] */;
6387 val* var_49 /* var : ArrayIterator[nullable MType] */;
6388 short int var50 /* : Bool */;
6389 val* var51 /* : nullable Object */;
6390 val* var_t /* var t: nullable MType */;
6391 short int var52 /* : Bool */;
6392 short int var53 /* : Bool */;
6393 val* var58 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6394 val* var60 /* : HashMap[Variable, nullable Array[nullable MType]] */;
6395 var_variable = p0;
6396 {
6397 { /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
6398 var3 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
6399 if (unlikely(var3 == NULL)) {
6400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
6401 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 510);
6402 show_backtrace(1);
6403 }
6404 var1 = var3;
6405 RET_LABEL2:(void)0;
6406 }
6407 }
6408 {
6409 var4 = abstract_collection__MapRead__has_key(var1, var_variable);
6410 }
6411 if (var4){
6412 {
6413 { /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
6414 var7 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
6415 if (unlikely(var7 == NULL)) {
6416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
6417 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 510);
6418 show_backtrace(1);
6419 }
6420 var5 = var7;
6421 RET_LABEL6:(void)0;
6422 }
6423 }
6424 {
6425 var8 = hash_collection__HashMap___91d_93d(var5, var_variable);
6426 }
6427 var = var8;
6428 goto RET_LABEL;
6429 } else {
6430 }
6431 var9 = NULL;
6432 var_res = var9;
6433 {
6434 { /* Inline typing#FlowContext#vars (self) on <self:FlowContext> */
6435 var12 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
6436 if (unlikely(var12 == NULL)) {
6437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
6438 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
6439 show_backtrace(1);
6440 }
6441 var10 = var12;
6442 RET_LABEL11:(void)0;
6443 }
6444 }
6445 {
6446 var13 = abstract_collection__MapRead__has_key(var10, var_variable);
6447 }
6448 if (var13){
6449 {
6450 { /* Inline typing#FlowContext#vars (self) on <self:FlowContext> */
6451 var16 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
6452 if (unlikely(var16 == NULL)) {
6453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
6454 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 508);
6455 show_backtrace(1);
6456 }
6457 var14 = var16;
6458 RET_LABEL15:(void)0;
6459 }
6460 }
6461 {
6462 var17 = hash_collection__HashMap___91d_93d(var14, var_variable);
6463 }
6464 var_mtype = var17;
6465 var18 = NEW_array__Array(&type_array__Arraynullable_model__MType);
6466 var19 = 1;
6467 {
6468 array__Array__with_capacity(var18, var19); /* Direct call array#Array#with_capacity on <var18:Array[nullable MType]>*/
6469 }
6470 var_ = var18;
6471 {
6472 array__AbstractArray__push(var_, var_mtype); /* Direct call array#AbstractArray#push on <var_:Array[nullable MType]>*/
6473 }
6474 var_res = var_;
6475 } else {
6476 {
6477 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
6478 var22 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
6479 if (unlikely(var22 == NULL)) {
6480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
6481 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189);
6482 show_backtrace(1);
6483 }
6484 var20 = var22;
6485 RET_LABEL21:(void)0;
6486 }
6487 }
6488 {
6489 var23 = array__AbstractArrayRead__is_empty(var20);
6490 }
6491 if (var23){
6492 var24 = NEW_array__Array(&type_array__Arraynullable_model__MType);
6493 var25 = 1;
6494 {
6495 array__Array__with_capacity(var24, var25); /* Direct call array#Array#with_capacity on <var24:Array[nullable MType]>*/
6496 }
6497 var_26 = var24;
6498 {
6499 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:Variable> */
6500 var29 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
6501 var27 = var29;
6502 RET_LABEL28:(void)0;
6503 }
6504 }
6505 {
6506 array__AbstractArray__push(var_26, var27); /* Direct call array#AbstractArray#push on <var_26:Array[nullable MType]>*/
6507 }
6508 var_res = var_26;
6509 } else {
6510 {
6511 { /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
6512 var32 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
6513 if (unlikely(var32 == NULL)) {
6514 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
6515 PRINT_ERROR(" (%s:%d)\n", "semantize/flow.nit", 189);
6516 show_backtrace(1);
6517 }
6518 var30 = var32;
6519 RET_LABEL31:(void)0;
6520 }
6521 }
6522 var_33 = var30;
6523 {
6524 var34 = array__AbstractArrayRead__iterator(var_33);
6525 }
6526 var_35 = var34;
6527 for(;;) {
6528 {
6529 var36 = array__ArrayIterator__is_ok(var_35);
6530 }
6531 if (var36){
6532 {
6533 var37 = array__ArrayIterator__item(var_35);
6534 }
6535 var_flow = var37;
6536 {
6537 var38 = flow__FlowContext__is_unreachable(var_flow);
6538 }
6539 if (var38){
6540 goto BREAK_label;
6541 } else {
6542 }
6543 {
6544 var39 = typing__FlowContext__collect_types(var_flow, var_variable);
6545 }
6546 var_r2 = var39;
6547 var40 = NULL;
6548 if (var_r2 == NULL) {
6549 var41 = 1; /* is null */
6550 } else {
6551 var41 = 0; /* arg is null but recv is not */
6552 }
6553 if (0) {
6554 var42 = array__Array___61d_61d(var_r2, var40);
6555 var41 = var42;
6556 }
6557 if (var41){
6558 goto BREAK_label;
6559 } else {
6560 }
6561 var43 = NULL;
6562 if (var_res == NULL) {
6563 var44 = 1; /* is null */
6564 } else {
6565 var44 = 0; /* arg is null but recv is not */
6566 }
6567 if (0) {
6568 var45 = array__Array___61d_61d(var_res, var43);
6569 var44 = var45;
6570 }
6571 if (var44){
6572 {
6573 var46 = array__Collection__to_a(var_r2);
6574 }
6575 var_res = var46;
6576 } else {
6577 var_47 = var_r2;
6578 {
6579 var48 = array__AbstractArrayRead__iterator(var_47);
6580 }
6581 var_49 = var48;
6582 for(;;) {
6583 {
6584 var50 = array__ArrayIterator__is_ok(var_49);
6585 }
6586 if (var50){
6587 {
6588 var51 = array__ArrayIterator__item(var_49);
6589 }
6590 var_t = var51;
6591 {
6592 var52 = array__AbstractArrayRead__has(var_res, var_t);
6593 }
6594 var53 = !var52;
6595 if (var53){
6596 {
6597 array__Array__add(var_res, var_t); /* Direct call array#Array#add on <var_res:nullable Array[nullable MType](Array[nullable MType])>*/
6598 }
6599 } else {
6600 }
6601 {
6602 array__ArrayIterator__next(var_49); /* Direct call array#ArrayIterator#next on <var_49:ArrayIterator[nullable MType]>*/
6603 }
6604 } else {
6605 goto BREAK_label54;
6606 }
6607 }
6608 BREAK_label54: (void)0;
6609 {
6610 { /* Inline abstract_collection#Iterator#finish (var_49) on <var_49:ArrayIterator[nullable MType]> */
6611 RET_LABEL55:(void)0;
6612 }
6613 }
6614 }
6615 BREAK_label: (void)0;
6616 {
6617 array__ArrayIterator__next(var_35); /* Direct call array#ArrayIterator#next on <var_35:ArrayIterator[FlowContext]>*/
6618 }
6619 } else {
6620 goto BREAK_label56;
6621 }
6622 }
6623 BREAK_label56: (void)0;
6624 {
6625 { /* Inline abstract_collection#Iterator#finish (var_35) on <var_35:ArrayIterator[FlowContext]> */
6626 RET_LABEL57:(void)0;
6627 }
6628 }
6629 }
6630 }
6631 {
6632 { /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
6633 var60 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
6634 if (unlikely(var60 == NULL)) {
6635 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
6636 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 510);
6637 show_backtrace(1);
6638 }
6639 var58 = var60;
6640 RET_LABEL59:(void)0;
6641 }
6642 }
6643 {
6644 hash_collection__HashMap___91d_93d_61d(var58, var_variable, var_res); /* Direct call hash_collection#HashMap#[]= on <var58:HashMap[Variable, nullable Array[nullable MType]]>*/
6645 }
6646 var = var_res;
6647 goto RET_LABEL;
6648 RET_LABEL:;
6649 return var;
6650 }
6651 /* method typing#FlowContext#collect_types for (self: Object, Variable): nullable Array[nullable MType] */
6652 val* VIRTUAL_typing__FlowContext__collect_types(val* self, val* p0) {
6653 val* var /* : nullable Array[nullable MType] */;
6654 val* var1 /* : nullable Array[nullable MType] */;
6655 var1 = typing__FlowContext__collect_types(self, p0);
6656 var = var1;
6657 RET_LABEL:;
6658 return var;
6659 }
6660 /* method typing#APropdef#do_typing for (self: APropdef, ModelBuilder) */
6661 void typing__APropdef__do_typing(val* self, val* p0) {
6662 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6663 var_modelbuilder = p0;
6664 RET_LABEL:;
6665 }
6666 /* method typing#APropdef#do_typing for (self: Object, ModelBuilder) */
6667 void VIRTUAL_typing__APropdef__do_typing(val* self, val* p0) {
6668 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6669 { /* Inline typing#APropdef#do_typing (self,p0) on <self:Object(APropdef)> */
6670 var_modelbuilder = p0;
6671 RET_LABEL1:(void)0;
6672 }
6673 RET_LABEL:;
6674 }
6675 /* method typing#APropdef#selfvariable= for (self: APropdef, nullable Variable) */
6676 void typing__APropdef__selfvariable_61d(val* self, val* p0) {
6677 self->attrs[COLOR_typing__APropdef___selfvariable].val = p0; /* _selfvariable on <self:APropdef> */
6678 RET_LABEL:;
6679 }
6680 /* method typing#APropdef#selfvariable= for (self: Object, nullable Variable) */
6681 void VIRTUAL_typing__APropdef__selfvariable_61d(val* self, val* p0) {
6682 { /* Inline typing#APropdef#selfvariable= (self,p0) on <self:Object(APropdef)> */
6683 self->attrs[COLOR_typing__APropdef___selfvariable].val = p0; /* _selfvariable on <self:Object(APropdef)> */
6684 RET_LABEL1:(void)0;
6685 }
6686 RET_LABEL:;
6687 }
6688 /* method typing#AMethPropdef#do_typing for (self: AMethPropdef, ModelBuilder) */
6689 void typing__AMethPropdef__do_typing(val* self, val* p0) {
6690 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6691 val* var /* : nullable AExpr */;
6692 val* var2 /* : nullable AExpr */;
6693 val* var_nblock /* var nblock: nullable AExpr */;
6694 val* var3 /* : null */;
6695 short int var4 /* : Bool */;
6696 short int var5 /* : Bool */;
6697 val* var_other /* var other: nullable Object */;
6698 short int var7 /* : Bool */;
6699 short int var9 /* : Bool */;
6700 val* var10 /* : nullable MPropDef */;
6701 val* var12 /* : nullable MPropDef */;
6702 val* var_mpropdef /* var mpropdef: MMethodDef */;
6703 val* var13 /* : TypeVisitor */;
6704 val* var14 /* : MClassDef */;
6705 val* var16 /* : MClassDef */;
6706 val* var17 /* : MModule */;
6707 val* var19 /* : MModule */;
6708 val* var_v /* var v: TypeVisitor */;
6709 val* var20 /* : Variable */;
6710 val* var22 /* : Variable */;
6711 val* var24 /* : nullable MPropDef */;
6712 val* var26 /* : nullable MPropDef */;
6713 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
6714 long var27 /* : Int */;
6715 long var_i /* var i: Int */;
6716 val* var28 /* : nullable MSignature */;
6717 val* var30 /* : nullable MSignature */;
6718 long var31 /* : Int */;
6719 long var_ /* var : Int */;
6720 short int var32 /* : Bool */;
6721 short int var34 /* : Bool */;
6722 int cltype;
6723 int idtype;
6724 const char* var_class_name;
6725 short int var35 /* : Bool */;
6726 val* var36 /* : nullable MSignature */;
6727 val* var38 /* : nullable MSignature */;
6728 val* var39 /* : Array[MParameter] */;
6729 val* var41 /* : Array[MParameter] */;
6730 val* var42 /* : nullable Object */;
6731 val* var43 /* : MType */;
6732 val* var45 /* : MType */;
6733 val* var_mtype /* var mtype: MType */;
6734 val* var46 /* : nullable MSignature */;
6735 val* var48 /* : nullable MSignature */;
6736 long var49 /* : Int */;
6737 long var51 /* : Int */;
6738 short int var52 /* : Bool */;
6739 short int var53 /* : Bool */;
6740 short int var55 /* : Bool */;
6741 val* var56 /* : nullable ASignature */;
6742 val* var58 /* : nullable ASignature */;
6743 val* var59 /* : ANodes[AParam] */;
6744 val* var61 /* : ANodes[AParam] */;
6745 val* var62 /* : ANode */;
6746 static val* varonce;
6747 val* var63 /* : String */;
6748 char* var64 /* : NativeString */;
6749 long var65 /* : Int */;
6750 val* var66 /* : FlatString */;
6751 val* var67 /* : nullable MClass */;
6752 val* var_arrayclass /* var arrayclass: nullable MClass */;
6753 val* var68 /* : null */;
6754 short int var69 /* : Bool */;
6755 short int var70 /* : Bool */;
6756 short int var72 /* : Bool */;
6757 short int var74 /* : Bool */;
6758 val* var75 /* : Array[MType] */;
6759 long var76 /* : Int */;
6760 val* var_77 /* var : Array[MType] */;
6761 val* var78 /* : MClassType */;
6762 val* var79 /* : nullable ASignature */;
6763 val* var81 /* : nullable ASignature */;
6764 val* var82 /* : ANodes[AParam] */;
6765 val* var84 /* : ANodes[AParam] */;
6766 val* var85 /* : ANode */;
6767 val* var86 /* : nullable Variable */;
6768 val* var88 /* : nullable Variable */;
6769 val* var_variable /* var variable: nullable Variable */;
6770 val* var89 /* : null */;
6771 short int var90 /* : Bool */;
6772 short int var91 /* : Bool */;
6773 val* var_other93 /* var other: nullable Object */;
6774 short int var94 /* : Bool */;
6775 short int var95 /* : Bool */;
6776 short int var96 /* : Bool */;
6777 long var98 /* : Int */;
6778 long var99 /* : Int */;
6779 short int var100 /* : Bool */;
6780 val* var101 /* : nullable FlowContext */;
6781 val* var103 /* : nullable FlowContext */;
6782 short int var104 /* : Bool */;
6783 short int var105 /* : Bool */;
6784 short int var_106 /* var : Bool */;
6785 val* var107 /* : nullable MSignature */;
6786 val* var109 /* : nullable MSignature */;
6787 val* var110 /* : nullable MType */;
6788 val* var112 /* : nullable MType */;
6789 val* var113 /* : null */;
6790 short int var114 /* : Bool */;
6791 short int var115 /* : Bool */;
6792 short int var117 /* : Bool */;
6793 short int var118 /* : Bool */;
6794 short int var119 /* : Bool */;
6795 static val* varonce120;
6796 val* var121 /* : String */;
6797 char* var122 /* : NativeString */;
6798 long var123 /* : Int */;
6799 val* var124 /* : FlatString */;
6800 var_modelbuilder = p0;
6801 {
6802 { /* Inline parser_nodes#AMethPropdef#n_block (self) on <self:AMethPropdef> */
6803 var2 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
6804 var = var2;
6805 RET_LABEL1:(void)0;
6806 }
6807 }
6808 var_nblock = var;
6809 var3 = NULL;
6810 if (var_nblock == NULL) {
6811 var4 = 1; /* is null */
6812 } else {
6813 var4 = 0; /* arg is null but recv is not */
6814 }
6815 if (0) {
6816 { /* Inline kernel#Object#== (var_nblock,var3) on <var_nblock:nullable AExpr> */
6817 var_other = var3;
6818 {
6819 { /* Inline kernel#Object#is_same_instance (var_nblock,var_other) on <var_nblock:nullable AExpr(AExpr)> */
6820 var9 = var_nblock == var_other;
6821 var7 = var9;
6822 goto RET_LABEL8;
6823 RET_LABEL8:(void)0;
6824 }
6825 }
6826 var5 = var7;
6827 goto RET_LABEL6;
6828 RET_LABEL6:(void)0;
6829 }
6830 var4 = var5;
6831 }
6832 if (var4){
6833 goto RET_LABEL;
6834 } else {
6835 }
6836 {
6837 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
6838 var12 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
6839 var10 = var12;
6840 RET_LABEL11:(void)0;
6841 }
6842 }
6843 if (unlikely(var10 == NULL)) {
6844 PRINT_ERROR("Runtime error: %s", "Cast failed");
6845 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 568);
6846 show_backtrace(1);
6847 }
6848 var_mpropdef = var10;
6849 var13 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
6850 {
6851 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
6852 var16 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
6853 if (unlikely(var16 == NULL)) {
6854 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
6855 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
6856 show_backtrace(1);
6857 }
6858 var14 = var16;
6859 RET_LABEL15:(void)0;
6860 }
6861 }
6862 {
6863 { /* Inline model#MClassDef#mmodule (var14) on <var14:MClassDef> */
6864 var19 = var14->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var14:MClassDef> */
6865 if (unlikely(var19 == NULL)) {
6866 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6867 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
6868 show_backtrace(1);
6869 }
6870 var17 = var19;
6871 RET_LABEL18:(void)0;
6872 }
6873 }
6874 {
6875 typing__TypeVisitor__init(var13, var_modelbuilder, var17, var_mpropdef); /* Direct call typing#TypeVisitor#init on <var13:TypeVisitor>*/
6876 }
6877 var_v = var13;
6878 {
6879 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
6880 var22 = var_v->attrs[COLOR_typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
6881 if (unlikely(var22 == NULL)) {
6882 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
6883 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 50);
6884 show_backtrace(1);
6885 }
6886 var20 = var22;
6887 RET_LABEL21:(void)0;
6888 }
6889 }
6890 {
6891 { /* Inline typing#APropdef#selfvariable= (self,var20) on <self:AMethPropdef> */
6892 self->attrs[COLOR_typing__APropdef___selfvariable].val = var20; /* _selfvariable on <self:AMethPropdef> */
6893 RET_LABEL23:(void)0;
6894 }
6895 }
6896 {
6897 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
6898 var26 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
6899 var24 = var26;
6900 RET_LABEL25:(void)0;
6901 }
6902 }
6903 if (unlikely(var24 == NULL)) {
6904 PRINT_ERROR("Runtime error: %s", "Cast failed");
6905 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 572);
6906 show_backtrace(1);
6907 }
6908 var_mmethoddef = var24;
6909 var27 = 0;
6910 var_i = var27;
6911 {
6912 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
6913 var30 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
6914 var28 = var30;
6915 RET_LABEL29:(void)0;
6916 }
6917 }
6918 if (var28 == NULL) {
6919 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6920 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 573);
6921 show_backtrace(1);
6922 } else {
6923 var31 = model__MSignature__arity(var28);
6924 }
6925 var_ = var31;
6926 for(;;) {
6927 {
6928 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
6929 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
6930 /* <var_:Int> isa OTHER */
6931 var34 = 1; /* easy <var_:Int> isa OTHER*/
6932 if (unlikely(!var34)) {
6933 var_class_name = type_kernel__Int.name;
6934 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6935 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
6936 show_backtrace(1);
6937 }
6938 var35 = var_i < var_;
6939 var32 = var35;
6940 goto RET_LABEL33;
6941 RET_LABEL33:(void)0;
6942 }
6943 }
6944 if (var32){
6945 {
6946 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
6947 var38 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
6948 var36 = var38;
6949 RET_LABEL37:(void)0;
6950 }
6951 }
6952 if (var36 == NULL) {
6953 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6954 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 574);
6955 show_backtrace(1);
6956 } else {
6957 { /* Inline model#MSignature#mparameters (var36) on <var36:nullable MSignature> */
6958 if (unlikely(var36 == NULL)) {
6959 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6960 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6961 show_backtrace(1);
6962 }
6963 var41 = var36->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var36:nullable MSignature> */
6964 if (unlikely(var41 == NULL)) {
6965 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6966 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
6967 show_backtrace(1);
6968 }
6969 var39 = var41;
6970 RET_LABEL40:(void)0;
6971 }
6972 }
6973 {
6974 var42 = array__Array___91d_93d(var39, var_i);
6975 }
6976 {
6977 { /* Inline model#MParameter#mtype (var42) on <var42:nullable Object(MParameter)> */
6978 var45 = var42->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var42:nullable Object(MParameter)> */
6979 if (unlikely(var45 == NULL)) {
6980 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6981 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
6982 show_backtrace(1);
6983 }
6984 var43 = var45;
6985 RET_LABEL44:(void)0;
6986 }
6987 }
6988 var_mtype = var43;
6989 {
6990 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
6991 var48 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
6992 var46 = var48;
6993 RET_LABEL47:(void)0;
6994 }
6995 }
6996 if (var46 == NULL) {
6997 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6998 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 575);
6999 show_backtrace(1);
7000 } else {
7001 { /* Inline model#MSignature#vararg_rank (var46) on <var46:nullable MSignature> */
7002 if (unlikely(var46 == NULL)) {
7003 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7004 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1510);
7005 show_backtrace(1);
7006 }
7007 var51 = var46->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var46:nullable MSignature> */
7008 var49 = var51;
7009 RET_LABEL50:(void)0;
7010 }
7011 }
7012 {
7013 { /* Inline kernel#Int#== (var49,var_i) on <var49:Int> */
7014 var55 = var49 == var_i;
7015 var53 = var55;
7016 goto RET_LABEL54;
7017 RET_LABEL54:(void)0;
7018 }
7019 var52 = var53;
7020 }
7021 if (var52){
7022 {
7023 { /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
7024 var58 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
7025 var56 = var58;
7026 RET_LABEL57:(void)0;
7027 }
7028 }
7029 if (var56 == NULL) {
7030 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7031 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 576);
7032 show_backtrace(1);
7033 } else {
7034 { /* Inline parser_nodes#ASignature#n_params (var56) on <var56:nullable ASignature> */
7035 if (unlikely(var56 == NULL)) {
7036 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7037 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7038 show_backtrace(1);
7039 }
7040 var61 = var56->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var56:nullable ASignature> */
7041 if (unlikely(var61 == NULL)) {
7042 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
7043 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7044 show_backtrace(1);
7045 }
7046 var59 = var61;
7047 RET_LABEL60:(void)0;
7048 }
7049 }
7050 {
7051 var62 = parser_nodes__ANodes___91d_93d(var59, var_i);
7052 }
7053 if (varonce) {
7054 var63 = varonce;
7055 } else {
7056 var64 = "Array";
7057 var65 = 5;
7058 var66 = string__NativeString__to_s_with_length(var64, var65);
7059 var63 = var66;
7060 varonce = var63;
7061 }
7062 {
7063 var67 = typing__TypeVisitor__get_mclass(var_v, var62, var63);
7064 }
7065 var_arrayclass = var67;
7066 var68 = NULL;
7067 if (var_arrayclass == NULL) {
7068 var69 = 1; /* is null */
7069 } else {
7070 var69 = 0; /* arg is null but recv is not */
7071 }
7072 if (0) {
7073 { /* Inline kernel#Object#== (var_arrayclass,var68) on <var_arrayclass:nullable MClass> */
7074 var_other = var68;
7075 {
7076 { /* Inline kernel#Object#is_same_instance (var_arrayclass,var_other) on <var_arrayclass:nullable MClass(MClass)> */
7077 var74 = var_arrayclass == var_other;
7078 var72 = var74;
7079 goto RET_LABEL73;
7080 RET_LABEL73:(void)0;
7081 }
7082 }
7083 var70 = var72;
7084 goto RET_LABEL71;
7085 RET_LABEL71:(void)0;
7086 }
7087 var69 = var70;
7088 }
7089 if (var69){
7090 goto RET_LABEL;
7091 } else {
7092 }
7093 var75 = NEW_array__Array(&type_array__Arraymodel__MType);
7094 var76 = 1;
7095 {
7096 array__Array__with_capacity(var75, var76); /* Direct call array#Array#with_capacity on <var75:Array[MType]>*/
7097 }
7098 var_77 = var75;
7099 {
7100 array__AbstractArray__push(var_77, var_mtype); /* Direct call array#AbstractArray#push on <var_77:Array[MType]>*/
7101 }
7102 {
7103 var78 = model__MClass__get_mtype(var_arrayclass, var_77);
7104 }
7105 var_mtype = var78;
7106 } else {
7107 }
7108 {
7109 { /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
7110 var81 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
7111 var79 = var81;
7112 RET_LABEL80:(void)0;
7113 }
7114 }
7115 if (var79 == NULL) {
7116 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7117 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 580);
7118 show_backtrace(1);
7119 } else {
7120 { /* Inline parser_nodes#ASignature#n_params (var79) on <var79:nullable ASignature> */
7121 if (unlikely(var79 == NULL)) {
7122 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7123 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7124 show_backtrace(1);
7125 }
7126 var84 = var79->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var79:nullable ASignature> */
7127 if (unlikely(var84 == NULL)) {
7128 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
7129 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7130 show_backtrace(1);
7131 }
7132 var82 = var84;
7133 RET_LABEL83:(void)0;
7134 }
7135 }
7136 {
7137 var85 = parser_nodes__ANodes___91d_93d(var82, var_i);
7138 }
7139 {
7140 { /* Inline scope#AParam#variable (var85) on <var85:ANode(AParam)> */
7141 var88 = var85->attrs[COLOR_scope__AParam___variable].val; /* _variable on <var85:ANode(AParam)> */
7142 var86 = var88;
7143 RET_LABEL87:(void)0;
7144 }
7145 }
7146 var_variable = var86;
7147 var89 = NULL;
7148 if (var_variable == NULL) {
7149 var90 = 0; /* is null */
7150 } else {
7151 var90 = 1; /* arg is null and recv is not */
7152 }
7153 if (0) {
7154 { /* Inline kernel#Object#!= (var_variable,var89) on <var_variable:nullable Variable> */
7155 var_other93 = var89;
7156 {
7157 var95 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other93) /* == on <var_variable:nullable Variable(Variable)>*/;
7158 var94 = var95;
7159 }
7160 var96 = !var94;
7161 var91 = var96;
7162 goto RET_LABEL92;
7163 RET_LABEL92:(void)0;
7164 }
7165 var90 = var91;
7166 }
7167 if (unlikely(!var90)) {
7168 PRINT_ERROR("Runtime error: %s", "Assert failed");
7169 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 581);
7170 show_backtrace(1);
7171 }
7172 {
7173 { /* Inline typing#Variable#declared_type= (var_variable,var_mtype) on <var_variable:nullable Variable(Variable)> */
7174 var_variable->attrs[COLOR_typing__Variable___declared_type].val = var_mtype; /* _declared_type on <var_variable:nullable Variable(Variable)> */
7175 RET_LABEL97:(void)0;
7176 }
7177 }
7178 var98 = 1;
7179 {
7180 var99 = kernel__Int__successor(var_i, var98);
7181 }
7182 var_i = var99;
7183 } else {
7184 goto BREAK_label;
7185 }
7186 }
7187 BREAK_label: (void)0;
7188 {
7189 typing__TypeVisitor__visit_stmt(var_v, var_nblock); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
7190 }
7191 {
7192 { /* Inline flow#AExpr#after_flow_context (var_nblock) on <var_nblock:nullable AExpr(AExpr)> */
7193 var103 = var_nblock->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_nblock:nullable AExpr(AExpr)> */
7194 var101 = var103;
7195 RET_LABEL102:(void)0;
7196 }
7197 }
7198 if (var101 == NULL) {
7199 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7200 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 586);
7201 show_backtrace(1);
7202 } else {
7203 var104 = flow__FlowContext__is_unreachable(var101);
7204 }
7205 var105 = !var104;
7206 var_106 = var105;
7207 if (var105){
7208 {
7209 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7210 var109 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
7211 var107 = var109;
7212 RET_LABEL108:(void)0;
7213 }
7214 }
7215 if (var107 == NULL) {
7216 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7217 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 586);
7218 show_backtrace(1);
7219 } else {
7220 { /* Inline model#MSignature#return_mtype (var107) on <var107:nullable MSignature> */
7221 if (unlikely(var107 == NULL)) {
7222 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7223 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468);
7224 show_backtrace(1);
7225 }
7226 var112 = var107->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var107:nullable MSignature> */
7227 var110 = var112;
7228 RET_LABEL111:(void)0;
7229 }
7230 }
7231 var113 = NULL;
7232 if (var110 == NULL) {
7233 var114 = 0; /* is null */
7234 } else {
7235 var114 = 1; /* arg is null and recv is not */
7236 }
7237 if (0) {
7238 { /* Inline kernel#Object#!= (var110,var113) on <var110:nullable MType> */
7239 var_other93 = var113;
7240 {
7241 var118 = ((short int (*)(val*, val*))(var110->class->vft[COLOR_kernel__Object___61d_61d]))(var110, var_other93) /* == on <var110:nullable MType(MType)>*/;
7242 var117 = var118;
7243 }
7244 var119 = !var117;
7245 var115 = var119;
7246 goto RET_LABEL116;
7247 RET_LABEL116:(void)0;
7248 }
7249 var114 = var115;
7250 }
7251 var100 = var114;
7252 } else {
7253 var100 = var_106;
7254 }
7255 if (var100){
7256 if (varonce120) {
7257 var121 = varonce120;
7258 } else {
7259 var122 = "Control error: Reached end of function (a \'return\' with a value was expected).";
7260 var123 = 78;
7261 var124 = string__NativeString__to_s_with_length(var122, var123);
7262 var121 = var124;
7263 varonce120 = var121;
7264 }
7265 {
7266 typing__TypeVisitor__error(var_v, self, var121); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7267 }
7268 } else {
7269 }
7270 RET_LABEL:;
7271 }
7272 /* method typing#AMethPropdef#do_typing for (self: Object, ModelBuilder) */
7273 void VIRTUAL_typing__AMethPropdef__do_typing(val* self, val* p0) {
7274 typing__AMethPropdef__do_typing(self, p0); /* Direct call typing#AMethPropdef#do_typing on <self:Object(AMethPropdef)>*/
7275 RET_LABEL:;
7276 }
7277 /* method typing#AAttrPropdef#do_typing for (self: AAttrPropdef, ModelBuilder) */
7278 void typing__AAttrPropdef__do_typing(val* self, val* p0) {
7279 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
7280 val* var /* : nullable MPropDef */;
7281 val* var2 /* : nullable MPropDef */;
7282 val* var_mpropdef /* var mpropdef: MAttributeDef */;
7283 val* var3 /* : TypeVisitor */;
7284 val* var4 /* : MClassDef */;
7285 val* var6 /* : MClassDef */;
7286 val* var7 /* : MModule */;
7287 val* var9 /* : MModule */;
7288 val* var_v /* var v: TypeVisitor */;
7289 val* var10 /* : Variable */;
7290 val* var12 /* : Variable */;
7291 val* var14 /* : nullable AExpr */;
7292 val* var16 /* : nullable AExpr */;
7293 val* var_nexpr /* var nexpr: nullable AExpr */;
7294 val* var17 /* : null */;
7295 short int var18 /* : Bool */;
7296 short int var19 /* : Bool */;
7297 val* var_other /* var other: nullable Object */;
7298 short int var21 /* : Bool */;
7299 short int var22 /* : Bool */;
7300 short int var23 /* : Bool */;
7301 val* var24 /* : nullable MPropDef */;
7302 val* var26 /* : nullable MPropDef */;
7303 val* var27 /* : nullable MType */;
7304 val* var29 /* : nullable MType */;
7305 val* var_mtype /* var mtype: nullable MType */;
7306 val* var30 /* : nullable MType */;
7307 val* var31 /* : nullable AExpr */;
7308 val* var33 /* : nullable AExpr */;
7309 val* var_nblock /* var nblock: nullable AExpr */;
7310 val* var34 /* : null */;
7311 short int var35 /* : Bool */;
7312 short int var36 /* : Bool */;
7313 short int var38 /* : Bool */;
7314 short int var39 /* : Bool */;
7315 short int var40 /* : Bool */;
7316 var_modelbuilder = p0;
7317 {
7318 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AAttrPropdef> */
7319 var2 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AAttrPropdef> */
7320 var = var2;
7321 RET_LABEL1:(void)0;
7322 }
7323 }
7324 if (unlikely(var == NULL)) {
7325 PRINT_ERROR("Runtime error: %s", "Cast failed");
7326 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 596);
7327 show_backtrace(1);
7328 }
7329 var_mpropdef = var;
7330 var3 = NEW_typing__TypeVisitor(&type_typing__TypeVisitor);
7331 {
7332 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MAttributeDef> */
7333 var6 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MAttributeDef> */
7334 if (unlikely(var6 == NULL)) {
7335 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7336 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
7337 show_backtrace(1);
7338 }
7339 var4 = var6;
7340 RET_LABEL5:(void)0;
7341 }
7342 }
7343 {
7344 { /* Inline model#MClassDef#mmodule (var4) on <var4:MClassDef> */
7345 var9 = var4->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var4:MClassDef> */
7346 if (unlikely(var9 == NULL)) {
7347 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
7348 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
7349 show_backtrace(1);
7350 }
7351 var7 = var9;
7352 RET_LABEL8:(void)0;
7353 }
7354 }
7355 {
7356 typing__TypeVisitor__init(var3, var_modelbuilder, var7, var_mpropdef); /* Direct call typing#TypeVisitor#init on <var3:TypeVisitor>*/
7357 }
7358 var_v = var3;
7359 {
7360 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
7361 var12 = var_v->attrs[COLOR_typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
7362 if (unlikely(var12 == NULL)) {
7363 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
7364 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 50);
7365 show_backtrace(1);
7366 }
7367 var10 = var12;
7368 RET_LABEL11:(void)0;
7369 }
7370 }
7371 {
7372 { /* Inline typing#APropdef#selfvariable= (self,var10) on <self:AAttrPropdef> */
7373 self->attrs[COLOR_typing__APropdef___selfvariable].val = var10; /* _selfvariable on <self:AAttrPropdef> */
7374 RET_LABEL13:(void)0;
7375 }
7376 }
7377 {
7378 { /* Inline parser_nodes#AAttrPropdef#n_expr (self) on <self:AAttrPropdef> */
7379 var16 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_expr].val; /* _n_expr on <self:AAttrPropdef> */
7380 var14 = var16;
7381 RET_LABEL15:(void)0;
7382 }
7383 }
7384 var_nexpr = var14;
7385 var17 = NULL;
7386 if (var_nexpr == NULL) {
7387 var18 = 0; /* is null */
7388 } else {
7389 var18 = 1; /* arg is null and recv is not */
7390 }
7391 if (0) {
7392 { /* Inline kernel#Object#!= (var_nexpr,var17) on <var_nexpr:nullable AExpr> */
7393 var_other = var17;
7394 {
7395 var22 = ((short int (*)(val*, val*))(var_nexpr->class->vft[COLOR_kernel__Object___61d_61d]))(var_nexpr, var_other) /* == on <var_nexpr:nullable AExpr(AExpr)>*/;
7396 var21 = var22;
7397 }
7398 var23 = !var21;
7399 var19 = var23;
7400 goto RET_LABEL20;
7401 RET_LABEL20:(void)0;
7402 }
7403 var18 = var19;
7404 }
7405 if (var18){
7406 {
7407 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AAttrPropdef> */
7408 var26 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AAttrPropdef> */
7409 var24 = var26;
7410 RET_LABEL25:(void)0;
7411 }
7412 }
7413 if (var24 == NULL) {
7414 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7415 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 602);
7416 show_backtrace(1);
7417 } else {
7418 { /* Inline model#MAttributeDef#static_mtype (var24) on <var24:nullable MPropDef(nullable MAttributeDef)> */
7419 if (unlikely(var24 == NULL)) {
7420 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7421 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 2006);
7422 show_backtrace(1);
7423 }
7424 var29 = var24->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var24:nullable MPropDef(nullable MAttributeDef)> */
7425 var27 = var29;
7426 RET_LABEL28:(void)0;
7427 }
7428 }
7429 var_mtype = var27;
7430 {
7431 var30 = typing__TypeVisitor__visit_expr_subtype(var_v, var_nexpr, var_mtype);
7432 }
7433 } else {
7434 }
7435 {
7436 { /* Inline parser_nodes#AAttrPropdef#n_block (self) on <self:AAttrPropdef> */
7437 var33 = self->attrs[COLOR_parser_nodes__AAttrPropdef___n_block].val; /* _n_block on <self:AAttrPropdef> */
7438 var31 = var33;
7439 RET_LABEL32:(void)0;
7440 }
7441 }
7442 var_nblock = var31;
7443 var34 = NULL;
7444 if (var_nblock == NULL) {
7445 var35 = 0; /* is null */
7446 } else {
7447 var35 = 1; /* arg is null and recv is not */
7448 }
7449 if (0) {
7450 { /* Inline kernel#Object#!= (var_nblock,var34) on <var_nblock:nullable AExpr> */
7451 var_other = var34;
7452 {
7453 var39 = ((short int (*)(val*, val*))(var_nblock->class->vft[COLOR_kernel__Object___61d_61d]))(var_nblock, var_other) /* == on <var_nblock:nullable AExpr(AExpr)>*/;
7454 var38 = var39;
7455 }
7456 var40 = !var38;
7457 var36 = var40;
7458 goto RET_LABEL37;
7459 RET_LABEL37:(void)0;
7460 }
7461 var35 = var36;
7462 }
7463 if (var35){
7464 {
7465 typing__TypeVisitor__visit_stmt(var_v, var_nblock); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
7466 }
7467 } else {
7468 }
7469 RET_LABEL:;
7470 }
7471 /* method typing#AAttrPropdef#do_typing for (self: Object, ModelBuilder) */
7472 void VIRTUAL_typing__AAttrPropdef__do_typing(val* self, val* p0) {
7473 typing__AAttrPropdef__do_typing(self, p0); /* Direct call typing#AAttrPropdef#do_typing on <self:Object(AAttrPropdef)>*/
7474 RET_LABEL:;
7475 }
7476 /* method typing#AExpr#mtype for (self: AExpr): nullable MType */
7477 val* typing__AExpr__mtype(val* self) {
7478 val* var /* : nullable MType */;
7479 val* var1 /* : nullable MType */;
7480 var1 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:AExpr> */
7481 var = var1;
7482 RET_LABEL:;
7483 return var;
7484 }
7485 /* method typing#AExpr#mtype for (self: Object): nullable MType */
7486 val* VIRTUAL_typing__AExpr__mtype(val* self) {
7487 val* var /* : nullable MType */;
7488 val* var1 /* : nullable MType */;
7489 val* var3 /* : nullable MType */;
7490 { /* Inline typing#AExpr#mtype (self) on <self:Object(AExpr)> */
7491 var3 = self->attrs[COLOR_typing__AExpr___mtype].val; /* _mtype on <self:Object(AExpr)> */
7492 var1 = var3;
7493 RET_LABEL2:(void)0;
7494 }
7495 var = var1;
7496 RET_LABEL:;
7497 return var;
7498 }
7499 /* method typing#AExpr#mtype= for (self: AExpr, nullable MType) */
7500 void typing__AExpr__mtype_61d(val* self, val* p0) {
7501 self->attrs[COLOR_typing__AExpr___mtype].val = p0; /* _mtype on <self:AExpr> */
7502 RET_LABEL:;
7503 }
7504 /* method typing#AExpr#mtype= for (self: Object, nullable MType) */
7505 void VIRTUAL_typing__AExpr__mtype_61d(val* self, val* p0) {
7506 { /* Inline typing#AExpr#mtype= (self,p0) on <self:Object(AExpr)> */
7507 self->attrs[COLOR_typing__AExpr___mtype].val = p0; /* _mtype on <self:Object(AExpr)> */
7508 RET_LABEL1:(void)0;
7509 }
7510 RET_LABEL:;
7511 }
7512 /* method typing#AExpr#is_typed for (self: AExpr): Bool */
7513 short int typing__AExpr__is_typed(val* self) {
7514 short int var /* : Bool */;
7515 short int var1 /* : Bool */;
7516 var1 = self->attrs[COLOR_typing__AExpr___is_typed].s; /* _is_typed on <self:AExpr> */
7517 var = var1;
7518 RET_LABEL:;
7519 return var;
7520 }
7521 /* method typing#AExpr#is_typed for (self: Object): Bool */
7522 short int VIRTUAL_typing__AExpr__is_typed(val* self) {
7523 short int var /* : Bool */;
7524 short int var1 /* : Bool */;
7525 short int var3 /* : Bool */;
7526 { /* Inline typing#AExpr#is_typed (self) on <self:Object(AExpr)> */
7527 var3 = self->attrs[COLOR_typing__AExpr___is_typed].s; /* _is_typed on <self:Object(AExpr)> */
7528 var1 = var3;
7529 RET_LABEL2:(void)0;
7530 }
7531 var = var1;
7532 RET_LABEL:;
7533 return var;
7534 }
7535 /* method typing#AExpr#is_typed= for (self: AExpr, Bool) */
7536 void typing__AExpr__is_typed_61d(val* self, short int p0) {
7537 self->attrs[COLOR_typing__AExpr___is_typed].s = p0; /* _is_typed on <self:AExpr> */
7538 RET_LABEL:;
7539 }
7540 /* method typing#AExpr#is_typed= for (self: Object, Bool) */
7541 void VIRTUAL_typing__AExpr__is_typed_61d(val* self, short int p0) {
7542 { /* Inline typing#AExpr#is_typed= (self,p0) on <self:Object(AExpr)> */
7543 self->attrs[COLOR_typing__AExpr___is_typed].s = p0; /* _is_typed on <self:Object(AExpr)> */
7544 RET_LABEL1:(void)0;
7545 }
7546 RET_LABEL:;
7547 }
7548 /* method typing#AExpr#implicit_cast_to for (self: AExpr): nullable MType */
7549 val* typing__AExpr__implicit_cast_to(val* self) {
7550 val* var /* : nullable MType */;
7551 val* var1 /* : nullable MType */;
7552 var1 = self->attrs[COLOR_typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on <self:AExpr> */
7553 var = var1;
7554 RET_LABEL:;
7555 return var;
7556 }
7557 /* method typing#AExpr#implicit_cast_to for (self: Object): nullable MType */
7558 val* VIRTUAL_typing__AExpr__implicit_cast_to(val* self) {
7559 val* var /* : nullable MType */;
7560 val* var1 /* : nullable MType */;
7561 val* var3 /* : nullable MType */;
7562 { /* Inline typing#AExpr#implicit_cast_to (self) on <self:Object(AExpr)> */
7563 var3 = self->attrs[COLOR_typing__AExpr___implicit_cast_to].val; /* _implicit_cast_to on <self:Object(AExpr)> */
7564 var1 = var3;
7565 RET_LABEL2:(void)0;
7566 }
7567 var = var1;
7568 RET_LABEL:;
7569 return var;
7570 }
7571 /* method typing#AExpr#implicit_cast_to= for (self: AExpr, nullable MType) */
7572 void typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
7573 self->attrs[COLOR_typing__AExpr___implicit_cast_to].val = p0; /* _implicit_cast_to on <self:AExpr> */
7574 RET_LABEL:;
7575 }
7576 /* method typing#AExpr#implicit_cast_to= for (self: Object, nullable MType) */
7577 void VIRTUAL_typing__AExpr__implicit_cast_to_61d(val* self, val* p0) {
7578 { /* Inline typing#AExpr#implicit_cast_to= (self,p0) on <self:Object(AExpr)> */
7579 self->attrs[COLOR_typing__AExpr___implicit_cast_to].val = p0; /* _implicit_cast_to on <self:Object(AExpr)> */
7580 RET_LABEL1:(void)0;
7581 }
7582 RET_LABEL:;
7583 }
7584 /* method typing#AExpr#its_variable for (self: AExpr): nullable Variable */
7585 val* typing__AExpr__its_variable(val* self) {
7586 val* var /* : nullable Variable */;
7587 val* var1 /* : null */;
7588 var1 = NULL;
7589 var = var1;
7590 goto RET_LABEL;
7591 RET_LABEL:;
7592 return var;
7593 }
7594 /* method typing#AExpr#its_variable for (self: Object): nullable Variable */
7595 val* VIRTUAL_typing__AExpr__its_variable(val* self) {
7596 val* var /* : nullable Variable */;
7597 val* var1 /* : nullable Variable */;
7598 var1 = typing__AExpr__its_variable(self);
7599 var = var1;
7600 RET_LABEL:;
7601 return var;
7602 }
7603 /* method typing#AExpr#accept_typing for (self: AExpr, TypeVisitor) */
7604 void typing__AExpr__accept_typing(val* self, val* p0) {
7605 val* var_v /* var v: TypeVisitor */;
7606 static val* varonce;
7607 val* var /* : String */;
7608 char* var1 /* : NativeString */;
7609 long var2 /* : Int */;
7610 val* var3 /* : FlatString */;
7611 val* var4 /* : String */;
7612 val* var5 /* : Array[Object] */;
7613 long var6 /* : Int */;
7614 val* var7 /* : NativeArray[Object] */;
7615 val* var8 /* : String */;
7616 var_v = p0;
7617 if (varonce) {
7618 var = varonce;
7619 } else {
7620 var1 = "no implemented accept_typing for ";
7621 var2 = 33;
7622 var3 = string__NativeString__to_s_with_length(var1, var2);
7623 var = var3;
7624 varonce = var;
7625 }
7626 {
7627 var4 = string__Object__class_name(self);
7628 }
7629 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
7630 { /* var5 = array_instance Array[Object] */
7631 var6 = 2;
7632 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
7633 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
7634 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var4;
7635 {
7636 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
7637 }
7638 }
7639 {
7640 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
7641 }
7642 {
7643 typing__TypeVisitor__error(var_v, self, var8); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7644 }
7645 RET_LABEL:;
7646 }
7647 /* method typing#AExpr#accept_typing for (self: Object, TypeVisitor) */
7648 void VIRTUAL_typing__AExpr__accept_typing(val* self, val* p0) {
7649 typing__AExpr__accept_typing(self, p0); /* Direct call typing#AExpr#accept_typing on <self:Object(AExpr)>*/
7650 RET_LABEL:;
7651 }
7652 /* method typing#ABlockExpr#accept_typing for (self: ABlockExpr, TypeVisitor) */
7653 void typing__ABlockExpr__accept_typing(val* self, val* p0) {
7654 val* var_v /* var v: TypeVisitor */;
7655 val* var /* : ANodes[AExpr] */;
7656 val* var2 /* : ANodes[AExpr] */;
7657 val* var_ /* var : ANodes[AExpr] */;
7658 val* var3 /* : Iterator[ANode] */;
7659 val* var_4 /* var : Iterator[AExpr] */;
7660 short int var5 /* : Bool */;
7661 val* var6 /* : nullable Object */;
7662 val* var_e /* var e: AExpr */;
7663 short int var8 /* : Bool */;
7664 var_v = p0;
7665 {
7666 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
7667 var2 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
7668 if (unlikely(var2 == NULL)) {
7669 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
7670 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321);
7671 show_backtrace(1);
7672 }
7673 var = var2;
7674 RET_LABEL1:(void)0;
7675 }
7676 }
7677 var_ = var;
7678 {
7679 var3 = parser_nodes__ANodes__iterator(var_);
7680 }
7681 var_4 = var3;
7682 for(;;) {
7683 {
7684 var5 = ((short int (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_4) /* is_ok on <var_4:Iterator[AExpr]>*/;
7685 }
7686 if (var5){
7687 {
7688 var6 = ((val* (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__item]))(var_4) /* item on <var_4:Iterator[AExpr]>*/;
7689 }
7690 var_e = var6;
7691 {
7692 typing__TypeVisitor__visit_stmt(var_v, var_e); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
7693 }
7694 {
7695 ((void (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__next]))(var_4) /* next on <var_4:Iterator[AExpr]>*/;
7696 }
7697 } else {
7698 goto BREAK_label;
7699 }
7700 }
7701 BREAK_label: (void)0;
7702 {
7703 { /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:Iterator[AExpr]> */
7704 RET_LABEL7:(void)0;
7705 }
7706 }
7707 var8 = 1;
7708 {
7709 { /* Inline typing#AExpr#is_typed= (self,var8) on <self:ABlockExpr> */
7710 self->attrs[COLOR_typing__AExpr___is_typed].s = var8; /* _is_typed on <self:ABlockExpr> */
7711 RET_LABEL9:(void)0;
7712 }
7713 }
7714 RET_LABEL:;
7715 }
7716 /* method typing#ABlockExpr#accept_typing for (self: Object, TypeVisitor) */
7717 void VIRTUAL_typing__ABlockExpr__accept_typing(val* self, val* p0) {
7718 typing__ABlockExpr__accept_typing(self, p0); /* Direct call typing#ABlockExpr#accept_typing on <self:Object(ABlockExpr)>*/
7719 RET_LABEL:;
7720 }
7721 /* method typing#ABlockExpr#mtype for (self: ABlockExpr): nullable MType */
7722 val* typing__ABlockExpr__mtype(val* self) {
7723 val* var /* : nullable MType */;
7724 val* var1 /* : ANodes[AExpr] */;
7725 val* var3 /* : ANodes[AExpr] */;
7726 short int var4 /* : Bool */;
7727 val* var5 /* : null */;
7728 val* var6 /* : ANodes[AExpr] */;
7729 val* var8 /* : ANodes[AExpr] */;
7730 val* var9 /* : nullable Object */;
7731 val* var10 /* : nullable MType */;
7732 {
7733 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
7734 var3 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
7735 if (unlikely(var3 == NULL)) {
7736 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
7737 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321);
7738 show_backtrace(1);
7739 }
7740 var1 = var3;
7741 RET_LABEL2:(void)0;
7742 }
7743 }
7744 {
7745 var4 = parser_nodes__ANodes__is_empty(var1);
7746 }
7747 if (var4){
7748 var5 = NULL;
7749 var = var5;
7750 goto RET_LABEL;
7751 } else {
7752 }
7753 {
7754 { /* Inline parser_nodes#ABlockExpr#n_expr (self) on <self:ABlockExpr> */
7755 var8 = self->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <self:ABlockExpr> */
7756 if (unlikely(var8 == NULL)) {
7757 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
7758 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321);
7759 show_backtrace(1);
7760 }
7761 var6 = var8;
7762 RET_LABEL7:(void)0;
7763 }
7764 }
7765 {
7766 var9 = abstract_collection__SequenceRead__last(var6);
7767 }
7768 {
7769 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_typing__AExpr__mtype]))(var9) /* mtype on <var9:nullable Object(AExpr)>*/;
7770 }
7771 var = var10;
7772 goto RET_LABEL;
7773 RET_LABEL:;
7774 return var;
7775 }
7776 /* method typing#ABlockExpr#mtype for (self: Object): nullable MType */
7777 val* VIRTUAL_typing__ABlockExpr__mtype(val* self) {
7778 val* var /* : nullable MType */;
7779 val* var1 /* : nullable MType */;
7780 var1 = typing__ABlockExpr__mtype(self);
7781 var = var1;
7782 RET_LABEL:;
7783 return var;
7784 }
7785 /* method typing#AVardeclExpr#accept_typing for (self: AVardeclExpr, TypeVisitor) */
7786 void typing__AVardeclExpr__accept_typing(val* self, val* p0) {
7787 val* var_v /* var v: TypeVisitor */;
7788 val* var /* : nullable Variable */;
7789 val* var2 /* : nullable Variable */;
7790 val* var_variable /* var variable: nullable Variable */;
7791 val* var3 /* : null */;
7792 short int var4 /* : Bool */;
7793 short int var5 /* : Bool */;
7794 val* var_other /* var other: nullable Object */;
7795 short int var7 /* : Bool */;
7796 short int var9 /* : Bool */;
7797 val* var10 /* : nullable AType */;
7798 val* var12 /* : nullable AType */;
7799 val* var_ntype /* var ntype: nullable AType */;
7800 val* var13 /* : null */;
7801 short int var14 /* : Bool */;
7802 short int var15 /* : Bool */;
7803 short int var17 /* : Bool */;
7804 short int var19 /* : Bool */;
7805 val* var20 /* : null */;
7806 val* var_mtype /* var mtype: nullable MType */;
7807 val* var21 /* : nullable MType */;
7808 val* var22 /* : null */;
7809 short int var23 /* : Bool */;
7810 short int var24 /* : Bool */;
7811 short int var26 /* : Bool */;
7812 short int var28 /* : Bool */;
7813 val* var29 /* : nullable AExpr */;
7814 val* var31 /* : nullable AExpr */;
7815 val* var_nexpr /* var nexpr: nullable AExpr */;
7816 val* var32 /* : null */;
7817 short int var33 /* : Bool */;
7818 short int var34 /* : Bool */;
7819 val* var_other36 /* var other: nullable Object */;
7820 short int var37 /* : Bool */;
7821 short int var38 /* : Bool */;
7822 short int var39 /* : Bool */;
7823 val* var40 /* : null */;
7824 short int var41 /* : Bool */;
7825 short int var42 /* : Bool */;
7826 short int var44 /* : Bool */;
7827 short int var45 /* : Bool */;
7828 short int var46 /* : Bool */;
7829 val* var47 /* : nullable MType */;
7830 val* var48 /* : nullable MType */;
7831 val* var49 /* : null */;
7832 short int var50 /* : Bool */;
7833 short int var51 /* : Bool */;
7834 short int var53 /* : Bool */;
7835 short int var55 /* : Bool */;
7836 val* var_decltype /* var decltype: nullable MType */;
7837 short int var56 /* : Bool */;
7838 val* var57 /* : null */;
7839 short int var58 /* : Bool */;
7840 short int var59 /* : Bool */;
7841 short int var61 /* : Bool */;
7842 short int var63 /* : Bool */;
7843 short int var_ /* var : Bool */;
7844 short int var64 /* : Bool */;
7845 int cltype;
7846 int idtype;
7847 static val* varonce;
7848 val* var65 /* : String */;
7849 char* var66 /* : NativeString */;
7850 long var67 /* : Int */;
7851 val* var68 /* : FlatString */;
7852 val* var69 /* : nullable MClass */;
7853 val* var70 /* : MClassType */;
7854 val* var72 /* : MClassType */;
7855 val* var73 /* : MType */;
7856 val* var74 /* : null */;
7857 short int var75 /* : Bool */;
7858 short int var76 /* : Bool */;
7859 short int var78 /* : Bool */;
7860 short int var80 /* : Bool */;
7861 short int var82 /* : Bool */;
7862 var_v = p0;
7863 {
7864 { /* Inline scope#AVardeclExpr#variable (self) on <self:AVardeclExpr> */
7865 var2 = self->attrs[COLOR_scope__AVardeclExpr___variable].val; /* _variable on <self:AVardeclExpr> */
7866 var = var2;
7867 RET_LABEL1:(void)0;
7868 }
7869 }
7870 var_variable = var;
7871 var3 = NULL;
7872 if (var_variable == NULL) {
7873 var4 = 1; /* is null */
7874 } else {
7875 var4 = 0; /* arg is null but recv is not */
7876 }
7877 if (0) {
7878 { /* Inline kernel#Object#== (var_variable,var3) on <var_variable:nullable Variable> */
7879 var_other = var3;
7880 {
7881 { /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
7882 var9 = var_variable == var_other;
7883 var7 = var9;
7884 goto RET_LABEL8;
7885 RET_LABEL8:(void)0;
7886 }
7887 }
7888 var5 = var7;
7889 goto RET_LABEL6;
7890 RET_LABEL6:(void)0;
7891 }
7892 var4 = var5;
7893 }
7894 if (var4){
7895 goto RET_LABEL;
7896 } else {
7897 }
7898 {
7899 { /* Inline parser_nodes#AVardeclExpr#n_type (self) on <self:AVardeclExpr> */
7900 var12 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_type].val; /* _n_type on <self:AVardeclExpr> */
7901 var10 = var12;
7902 RET_LABEL11:(void)0;
7903 }
7904 }
7905 var_ntype = var10;
7906 var13 = NULL;
7907 if (var_ntype == NULL) {
7908 var14 = 1; /* is null */
7909 } else {
7910 var14 = 0; /* arg is null but recv is not */
7911 }
7912 if (0) {
7913 { /* Inline kernel#Object#== (var_ntype,var13) on <var_ntype:nullable AType> */
7914 var_other = var13;
7915 {
7916 { /* Inline kernel#Object#is_same_instance (var_ntype,var_other) on <var_ntype:nullable AType(AType)> */
7917 var19 = var_ntype == var_other;
7918 var17 = var19;
7919 goto RET_LABEL18;
7920 RET_LABEL18:(void)0;
7921 }
7922 }
7923 var15 = var17;
7924 goto RET_LABEL16;
7925 RET_LABEL16:(void)0;
7926 }
7927 var14 = var15;
7928 }
7929 if (var14){
7930 var20 = NULL;
7931 var_mtype = var20;
7932 } else {
7933 {
7934 var21 = typing__TypeVisitor__resolve_mtype(var_v, var_ntype);
7935 }
7936 var_mtype = var21;
7937 var22 = NULL;
7938 if (var_mtype == NULL) {
7939 var23 = 1; /* is null */
7940 } else {
7941 var23 = 0; /* arg is null but recv is not */
7942 }
7943 if (0) {
7944 { /* Inline kernel#Object#== (var_mtype,var22) on <var_mtype:nullable MType> */
7945 var_other = var22;
7946 {
7947 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
7948 var28 = var_mtype == var_other;
7949 var26 = var28;
7950 goto RET_LABEL27;
7951 RET_LABEL27:(void)0;
7952 }
7953 }
7954 var24 = var26;
7955 goto RET_LABEL25;
7956 RET_LABEL25:(void)0;
7957 }
7958 var23 = var24;
7959 }
7960 if (var23){
7961 goto RET_LABEL;
7962 } else {
7963 }
7964 }
7965 {
7966 { /* Inline parser_nodes#AVardeclExpr#n_expr (self) on <self:AVardeclExpr> */
7967 var31 = self->attrs[COLOR_parser_nodes__AVardeclExpr___n_expr].val; /* _n_expr on <self:AVardeclExpr> */
7968 var29 = var31;
7969 RET_LABEL30:(void)0;
7970 }
7971 }
7972 var_nexpr = var29;
7973 var32 = NULL;
7974 if (var_nexpr == NULL) {
7975 var33 = 0; /* is null */
7976 } else {
7977 var33 = 1; /* arg is null and recv is not */
7978 }
7979 if (0) {
7980 { /* Inline kernel#Object#!= (var_nexpr,var32) on <var_nexpr:nullable AExpr> */
7981 var_other36 = var32;
7982 {
7983 var38 = ((short int (*)(val*, val*))(var_nexpr->class->vft[COLOR_kernel__Object___61d_61d]))(var_nexpr, var_other36) /* == on <var_nexpr:nullable AExpr(AExpr)>*/;
7984 var37 = var38;
7985 }
7986 var39 = !var37;
7987 var34 = var39;
7988 goto RET_LABEL35;
7989 RET_LABEL35:(void)0;
7990 }
7991 var33 = var34;
7992 }
7993 if (var33){
7994 var40 = NULL;
7995 if (var_mtype == NULL) {
7996 var41 = 0; /* is null */
7997 } else {
7998 var41 = 1; /* arg is null and recv is not */
7999 }
8000 if (0) {
8001 { /* Inline kernel#Object#!= (var_mtype,var40) on <var_mtype:nullable MType> */
8002 var_other36 = var40;
8003 {
8004 var45 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other36) /* == on <var_mtype:nullable MType(MType)>*/;
8005 var44 = var45;
8006 }
8007 var46 = !var44;
8008 var42 = var46;
8009 goto RET_LABEL43;
8010 RET_LABEL43:(void)0;
8011 }
8012 var41 = var42;
8013 }
8014 if (var41){
8015 {
8016 var47 = typing__TypeVisitor__visit_expr_subtype(var_v, var_nexpr, var_mtype);
8017 }
8018 } else {
8019 {
8020 var48 = typing__TypeVisitor__visit_expr(var_v, var_nexpr);
8021 }
8022 var_mtype = var48;
8023 var49 = NULL;
8024 if (var_mtype == NULL) {
8025 var50 = 1; /* is null */
8026 } else {
8027 var50 = 0; /* arg is null but recv is not */
8028 }
8029 if (0) {
8030 { /* Inline kernel#Object#== (var_mtype,var49) on <var_mtype:nullable MType> */
8031 var_other = var49;
8032 {
8033 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
8034 var55 = var_mtype == var_other;
8035 var53 = var55;
8036 goto RET_LABEL54;
8037 RET_LABEL54:(void)0;
8038 }
8039 }
8040 var51 = var53;
8041 goto RET_LABEL52;
8042 RET_LABEL52:(void)0;
8043 }
8044 var50 = var51;
8045 }
8046 if (var50){
8047 goto RET_LABEL;
8048 } else {
8049 }
8050 }
8051 } else {
8052 }
8053 var_decltype = var_mtype;
8054 var57 = NULL;
8055 if (var_mtype == NULL) {
8056 var58 = 1; /* is null */
8057 } else {
8058 var58 = 0; /* arg is null but recv is not */
8059 }
8060 if (0) {
8061 { /* Inline kernel#Object#== (var_mtype,var57) on <var_mtype:nullable MType> */
8062 var_other = var57;
8063 {
8064 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
8065 var63 = var_mtype == var_other;
8066 var61 = var63;
8067 goto RET_LABEL62;
8068 RET_LABEL62:(void)0;
8069 }
8070 }
8071 var59 = var61;
8072 goto RET_LABEL60;
8073 RET_LABEL60:(void)0;
8074 }
8075 var58 = var59;
8076 }
8077 var_ = var58;
8078 if (var58){
8079 var56 = var_;
8080 } else {
8081 /* <var_mtype:nullable MType(MType)> isa MNullType */
8082 cltype = type_model__MNullType.color;
8083 idtype = type_model__MNullType.id;
8084 if(cltype >= var_mtype->type->table_size) {
8085 var64 = 0;
8086 } else {
8087 var64 = var_mtype->type->type_table[cltype] == idtype;
8088 }
8089 var56 = var64;
8090 }
8091 if (var56){
8092 if (varonce) {
8093 var65 = varonce;
8094 } else {
8095 var66 = "Object";
8096 var67 = 6;
8097 var68 = string__NativeString__to_s_with_length(var66, var67);
8098 var65 = var68;
8099 varonce = var65;
8100 }
8101 {
8102 var69 = typing__TypeVisitor__get_mclass(var_v, self, var65);
8103 }
8104 if (var69 == NULL) {
8105 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8106 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 681);
8107 show_backtrace(1);
8108 } else {
8109 { /* Inline model#MClass#mclass_type (var69) on <var69:nullable MClass> */
8110 if (unlikely(var69 == NULL)) {
8111 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8112 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
8113 show_backtrace(1);
8114 }
8115 var72 = var69->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var69:nullable MClass> */
8116 if (unlikely(var72 == NULL)) {
8117 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
8118 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
8119 show_backtrace(1);
8120 }
8121 var70 = var72;
8122 RET_LABEL71:(void)0;
8123 }
8124 }
8125 {
8126 var73 = model__MType__as_nullable(var70);
8127 }
8128 var_decltype = var73;
8129 var74 = NULL;
8130 if (var_mtype == NULL) {
8131 var75 = 1; /* is null */
8132 } else {
8133 var75 = 0; /* arg is null but recv is not */
8134 }
8135 if (0) {
8136 { /* Inline kernel#Object#== (var_mtype,var74) on <var_mtype:nullable MType(nullable MNullType)> */
8137 var_other = var74;
8138 {
8139 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MNullType(MNullType)> */
8140 var80 = var_mtype == var_other;
8141 var78 = var80;
8142 goto RET_LABEL79;
8143 RET_LABEL79:(void)0;
8144 }
8145 }
8146 var76 = var78;
8147 goto RET_LABEL77;
8148 RET_LABEL77:(void)0;
8149 }
8150 var75 = var76;
8151 }
8152 if (var75){
8153 var_mtype = var_decltype;
8154 } else {
8155 }
8156 } else {
8157 }
8158 {
8159 { /* Inline typing#Variable#declared_type= (var_variable,var_decltype) on <var_variable:nullable Variable(Variable)> */
8160 var_variable->attrs[COLOR_typing__Variable___declared_type].val = var_decltype; /* _declared_type on <var_variable:nullable Variable(Variable)> */
8161 RET_LABEL81:(void)0;
8162 }
8163 }
8164 {
8165 typing__TypeVisitor__set_variable(var_v, self, var_variable, var_mtype); /* Direct call typing#TypeVisitor#set_variable on <var_v:TypeVisitor>*/
8166 }
8167 var82 = 1;
8168 {
8169 { /* Inline typing#AExpr#is_typed= (self,var82) on <self:AVardeclExpr> */
8170 self->attrs[COLOR_typing__AExpr___is_typed].s = var82; /* _is_typed on <self:AVardeclExpr> */
8171 RET_LABEL83:(void)0;
8172 }
8173 }
8174 RET_LABEL:;
8175 }
8176 /* method typing#AVardeclExpr#accept_typing for (self: Object, TypeVisitor) */
8177 void VIRTUAL_typing__AVardeclExpr__accept_typing(val* self, val* p0) {
8178 typing__AVardeclExpr__accept_typing(self, p0); /* Direct call typing#AVardeclExpr#accept_typing on <self:Object(AVardeclExpr)>*/
8179 RET_LABEL:;
8180 }
8181 /* method typing#AVarExpr#its_variable for (self: AVarExpr): nullable Variable */
8182 val* typing__AVarExpr__its_variable(val* self) {
8183 val* var /* : nullable Variable */;
8184 val* var1 /* : nullable Variable */;
8185 val* var3 /* : nullable Variable */;
8186 {
8187 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarExpr> */
8188 var3 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarExpr> */
8189 var1 = var3;
8190 RET_LABEL2:(void)0;
8191 }
8192 }
8193 var = var1;
8194 goto RET_LABEL;
8195 RET_LABEL:;
8196 return var;
8197 }
8198 /* method typing#AVarExpr#its_variable for (self: Object): nullable Variable */
8199 val* VIRTUAL_typing__AVarExpr__its_variable(val* self) {
8200 val* var /* : nullable Variable */;
8201 val* var1 /* : nullable Variable */;
8202 var1 = typing__AVarExpr__its_variable(self);
8203 var = var1;
8204 RET_LABEL:;
8205 return var;
8206 }
8207 /* method typing#AVarExpr#accept_typing for (self: AVarExpr, TypeVisitor) */
8208 void typing__AVarExpr__accept_typing(val* self, val* p0) {
8209 val* var_v /* var v: TypeVisitor */;
8210 val* var /* : nullable Variable */;
8211 val* var2 /* : nullable Variable */;
8212 val* var_variable /* var variable: nullable Variable */;
8213 val* var3 /* : null */;
8214 short int var4 /* : Bool */;
8215 short int var5 /* : Bool */;
8216 val* var_other /* var other: nullable Object */;
8217 short int var7 /* : Bool */;
8218 short int var9 /* : Bool */;
8219 val* var10 /* : nullable MType */;
8220 val* var_mtype /* var mtype: nullable MType */;
8221 val* var11 /* : null */;
8222 short int var12 /* : Bool */;
8223 short int var13 /* : Bool */;
8224 val* var_other15 /* var other: nullable Object */;
8225 short int var16 /* : Bool */;
8226 short int var17 /* : Bool */;
8227 short int var18 /* : Bool */;
8228 var_v = p0;
8229 {
8230 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarExpr> */
8231 var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarExpr> */
8232 var = var2;
8233 RET_LABEL1:(void)0;
8234 }
8235 }
8236 var_variable = var;
8237 var3 = NULL;
8238 if (var_variable == NULL) {
8239 var4 = 1; /* is null */
8240 } else {
8241 var4 = 0; /* arg is null but recv is not */
8242 }
8243 if (0) {
8244 { /* Inline kernel#Object#== (var_variable,var3) on <var_variable:nullable Variable> */
8245 var_other = var3;
8246 {
8247 { /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
8248 var9 = var_variable == var_other;
8249 var7 = var9;
8250 goto RET_LABEL8;
8251 RET_LABEL8:(void)0;
8252 }
8253 }
8254 var5 = var7;
8255 goto RET_LABEL6;
8256 RET_LABEL6:(void)0;
8257 }
8258 var4 = var5;
8259 }
8260 if (var4){
8261 goto RET_LABEL;
8262 } else {
8263 }
8264 {
8265 var10 = typing__TypeVisitor__get_variable(var_v, self, var_variable);
8266 }
8267 var_mtype = var10;
8268 var11 = NULL;
8269 if (var_mtype == NULL) {
8270 var12 = 0; /* is null */
8271 } else {
8272 var12 = 1; /* arg is null and recv is not */
8273 }
8274 if (0) {
8275 { /* Inline kernel#Object#!= (var_mtype,var11) on <var_mtype:nullable MType> */
8276 var_other15 = var11;
8277 {
8278 var17 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other15) /* == on <var_mtype:nullable MType(MType)>*/;
8279 var16 = var17;
8280 }
8281 var18 = !var16;
8282 var13 = var18;
8283 goto RET_LABEL14;
8284 RET_LABEL14:(void)0;
8285 }
8286 var12 = var13;
8287 }
8288 if (var12){
8289 } else {
8290 }
8291 {
8292 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AVarExpr> */
8293 self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AVarExpr> */
8294 RET_LABEL19:(void)0;
8295 }
8296 }
8297 RET_LABEL:;
8298 }
8299 /* method typing#AVarExpr#accept_typing for (self: Object, TypeVisitor) */
8300 void VIRTUAL_typing__AVarExpr__accept_typing(val* self, val* p0) {
8301 typing__AVarExpr__accept_typing(self, p0); /* Direct call typing#AVarExpr#accept_typing on <self:Object(AVarExpr)>*/
8302 RET_LABEL:;
8303 }
8304 /* method typing#AVarAssignExpr#accept_typing for (self: AVarAssignExpr, TypeVisitor) */
8305 void typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
8306 val* var_v /* var v: TypeVisitor */;
8307 val* var /* : nullable Variable */;
8308 val* var2 /* : nullable Variable */;
8309 val* var_variable /* var variable: nullable Variable */;
8310 val* var3 /* : null */;
8311 short int var4 /* : Bool */;
8312 short int var5 /* : Bool */;
8313 val* var_other /* var other: nullable Object */;
8314 short int var7 /* : Bool */;
8315 short int var8 /* : Bool */;
8316 short int var9 /* : Bool */;
8317 val* var10 /* : AExpr */;
8318 val* var12 /* : AExpr */;
8319 val* var13 /* : nullable MType */;
8320 val* var15 /* : nullable MType */;
8321 val* var16 /* : nullable MType */;
8322 val* var_mtype /* var mtype: nullable MType */;
8323 short int var17 /* : Bool */;
8324 var_v = p0;
8325 {
8326 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarAssignExpr> */
8327 var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarAssignExpr> */
8328 var = var2;
8329 RET_LABEL1:(void)0;
8330 }
8331 }
8332 var_variable = var;
8333 var3 = NULL;
8334 if (var_variable == NULL) {
8335 var4 = 0; /* is null */
8336 } else {
8337 var4 = 1; /* arg is null and recv is not */
8338 }
8339 if (0) {
8340 { /* Inline kernel#Object#!= (var_variable,var3) on <var_variable:nullable Variable> */
8341 var_other = var3;
8342 {
8343 var8 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
8344 var7 = var8;
8345 }
8346 var9 = !var7;
8347 var5 = var9;
8348 goto RET_LABEL6;
8349 RET_LABEL6:(void)0;
8350 }
8351 var4 = var5;
8352 }
8353 if (unlikely(!var4)) {
8354 PRINT_ERROR("Runtime error: %s", "Assert failed");
8355 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 716);
8356 show_backtrace(1);
8357 }
8358 {
8359 { /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:AVarAssignExpr> */
8360 var12 = self->attrs[COLOR_parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:AVarAssignExpr> */
8361 if (unlikely(var12 == NULL)) {
8362 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
8363 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1445);
8364 show_backtrace(1);
8365 }
8366 var10 = var12;
8367 RET_LABEL11:(void)0;
8368 }
8369 }
8370 {
8371 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:nullable Variable(Variable)> */
8372 var15 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:nullable Variable(Variable)> */
8373 var13 = var15;
8374 RET_LABEL14:(void)0;
8375 }
8376 }
8377 {
8378 var16 = typing__TypeVisitor__visit_expr_subtype(var_v, var10, var13);
8379 }
8380 var_mtype = var16;
8381 {
8382 typing__TypeVisitor__set_variable(var_v, self, var_variable, var_mtype); /* Direct call typing#TypeVisitor#set_variable on <var_v:TypeVisitor>*/
8383 }
8384 var17 = 1;
8385 {
8386 { /* Inline typing#AExpr#is_typed= (self,var17) on <self:AVarAssignExpr> */
8387 self->attrs[COLOR_typing__AExpr___is_typed].s = var17; /* _is_typed on <self:AVarAssignExpr> */
8388 RET_LABEL18:(void)0;
8389 }
8390 }
8391 RET_LABEL:;
8392 }
8393 /* method typing#AVarAssignExpr#accept_typing for (self: Object, TypeVisitor) */
8394 void VIRTUAL_typing__AVarAssignExpr__accept_typing(val* self, val* p0) {
8395 typing__AVarAssignExpr__accept_typing(self, p0); /* Direct call typing#AVarAssignExpr#accept_typing on <self:Object(AVarAssignExpr)>*/
8396 RET_LABEL:;
8397 }
8398 /* method typing#AReassignFormExpr#reassign_callsite for (self: AReassignFormExpr): nullable CallSite */
8399 val* typing__AReassignFormExpr__reassign_callsite(val* self) {
8400 val* var /* : nullable CallSite */;
8401 val* var1 /* : nullable CallSite */;
8402 var1 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:AReassignFormExpr> */
8403 var = var1;
8404 RET_LABEL:;
8405 return var;
8406 }
8407 /* method typing#AReassignFormExpr#reassign_callsite for (self: Object): nullable CallSite */
8408 val* VIRTUAL_typing__AReassignFormExpr__reassign_callsite(val* self) {
8409 val* var /* : nullable CallSite */;
8410 val* var1 /* : nullable CallSite */;
8411 val* var3 /* : nullable CallSite */;
8412 { /* Inline typing#AReassignFormExpr#reassign_callsite (self) on <self:Object(AReassignFormExpr)> */
8413 var3 = self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val; /* _reassign_callsite on <self:Object(AReassignFormExpr)> */
8414 var1 = var3;
8415 RET_LABEL2:(void)0;
8416 }
8417 var = var1;
8418 RET_LABEL:;
8419 return var;
8420 }
8421 /* method typing#AReassignFormExpr#reassign_callsite= for (self: AReassignFormExpr, nullable CallSite) */
8422 void typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
8423 self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val = p0; /* _reassign_callsite on <self:AReassignFormExpr> */
8424 RET_LABEL:;
8425 }
8426 /* method typing#AReassignFormExpr#reassign_callsite= for (self: Object, nullable CallSite) */
8427 void VIRTUAL_typing__AReassignFormExpr__reassign_callsite_61d(val* self, val* p0) {
8428 { /* Inline typing#AReassignFormExpr#reassign_callsite= (self,p0) on <self:Object(AReassignFormExpr)> */
8429 self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val = p0; /* _reassign_callsite on <self:Object(AReassignFormExpr)> */
8430 RET_LABEL1:(void)0;
8431 }
8432 RET_LABEL:;
8433 }
8434 /* method typing#AReassignFormExpr#read_type for (self: AReassignFormExpr): nullable MType */
8435 val* typing__AReassignFormExpr__read_type(val* self) {
8436 val* var /* : nullable MType */;
8437 val* var1 /* : nullable MType */;
8438 var1 = self->attrs[COLOR_typing__AReassignFormExpr___read_type].val; /* _read_type on <self:AReassignFormExpr> */
8439 var = var1;
8440 RET_LABEL:;
8441 return var;
8442 }
8443 /* method typing#AReassignFormExpr#read_type for (self: Object): nullable MType */
8444 val* VIRTUAL_typing__AReassignFormExpr__read_type(val* self) {
8445 val* var /* : nullable MType */;
8446 val* var1 /* : nullable MType */;
8447 val* var3 /* : nullable MType */;
8448 { /* Inline typing#AReassignFormExpr#read_type (self) on <self:Object(AReassignFormExpr)> */
8449 var3 = self->attrs[COLOR_typing__AReassignFormExpr___read_type].val; /* _read_type on <self:Object(AReassignFormExpr)> */
8450 var1 = var3;
8451 RET_LABEL2:(void)0;
8452 }
8453 var = var1;
8454 RET_LABEL:;
8455 return var;
8456 }
8457 /* method typing#AReassignFormExpr#read_type= for (self: AReassignFormExpr, nullable MType) */
8458 void typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
8459 self->attrs[COLOR_typing__AReassignFormExpr___read_type].val = p0; /* _read_type on <self:AReassignFormExpr> */
8460 RET_LABEL:;
8461 }
8462 /* method typing#AReassignFormExpr#read_type= for (self: Object, nullable MType) */
8463 void VIRTUAL_typing__AReassignFormExpr__read_type_61d(val* self, val* p0) {
8464 { /* Inline typing#AReassignFormExpr#read_type= (self,p0) on <self:Object(AReassignFormExpr)> */
8465 self->attrs[COLOR_typing__AReassignFormExpr___read_type].val = p0; /* _read_type on <self:Object(AReassignFormExpr)> */
8466 RET_LABEL1:(void)0;
8467 }
8468 RET_LABEL:;
8469 }
8470 /* method typing#AReassignFormExpr#resolve_reassignment for (self: AReassignFormExpr, TypeVisitor, MType, MType): nullable MType */
8471 val* typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
8472 val* var /* : nullable MType */;
8473 val* var_v /* var v: TypeVisitor */;
8474 val* var_readtype /* var readtype: MType */;
8475 val* var_writetype /* var writetype: MType */;
8476 val* var1 /* : AAssignOp */;
8477 val* var3 /* : AAssignOp */;
8478 short int var4 /* : Bool */;
8479 int cltype;
8480 int idtype;
8481 static val* varonce;
8482 val* var5 /* : String */;
8483 char* var6 /* : NativeString */;
8484 long var7 /* : Int */;
8485 val* var8 /* : FlatString */;
8486 val* var_reassign_name /* var reassign_name: String */;
8487 val* var9 /* : AAssignOp */;
8488 val* var11 /* : AAssignOp */;
8489 short int var12 /* : Bool */;
8490 int cltype13;
8491 int idtype14;
8492 static val* varonce15;
8493 val* var16 /* : String */;
8494 char* var17 /* : NativeString */;
8495 long var18 /* : Int */;
8496 val* var19 /* : FlatString */;
8497 short int var21 /* : Bool */;
8498 int cltype22;
8499 int idtype23;
8500 static val* varonce24;
8501 val* var25 /* : String */;
8502 char* var26 /* : NativeString */;
8503 long var27 /* : Int */;
8504 val* var28 /* : FlatString */;
8505 static val* varonce29;
8506 val* var30 /* : String */;
8507 char* var31 /* : NativeString */;
8508 long var32 /* : Int */;
8509 val* var33 /* : FlatString */;
8510 val* var34 /* : Array[Object] */;
8511 long var35 /* : Int */;
8512 val* var36 /* : NativeArray[Object] */;
8513 val* var37 /* : String */;
8514 val* var38 /* : null */;
8515 short int var39 /* : Bool */;
8516 val* var40 /* : nullable CallSite */;
8517 val* var_callsite /* var callsite: nullable CallSite */;
8518 val* var41 /* : null */;
8519 short int var42 /* : Bool */;
8520 short int var43 /* : Bool */;
8521 val* var_other /* var other: nullable Object */;
8522 short int var45 /* : Bool */;
8523 short int var47 /* : Bool */;
8524 val* var48 /* : null */;
8525 val* var50 /* : MSignature */;
8526 val* var52 /* : MSignature */;
8527 val* var_msignature /* var msignature: MSignature */;
8528 val* var53 /* : nullable MType */;
8529 val* var55 /* : nullable MType */;
8530 val* var_rettype /* var rettype: nullable MType */;
8531 short int var56 /* : Bool */;
8532 long var57 /* : Int */;
8533 long var58 /* : Int */;
8534 short int var59 /* : Bool */;
8535 short int var60 /* : Bool */;
8536 short int var62 /* : Bool */;
8537 short int var_ /* var : Bool */;
8538 val* var63 /* : null */;
8539 short int var64 /* : Bool */;
8540 short int var65 /* : Bool */;
8541 val* var_other67 /* var other: nullable Object */;
8542 short int var68 /* : Bool */;
8543 short int var69 /* : Bool */;
8544 short int var70 /* : Bool */;
8545 val* var71 /* : AExpr */;
8546 val* var73 /* : AExpr */;
8547 val* var74 /* : Array[MParameter] */;
8548 val* var76 /* : Array[MParameter] */;
8549 val* var77 /* : nullable Object */;
8550 val* var78 /* : MType */;
8551 val* var80 /* : MType */;
8552 val* var81 /* : nullable MType */;
8553 val* var_value_type /* var value_type: nullable MType */;
8554 val* var82 /* : null */;
8555 short int var83 /* : Bool */;
8556 short int var84 /* : Bool */;
8557 short int var86 /* : Bool */;
8558 short int var88 /* : Bool */;
8559 val* var89 /* : null */;
8560 val* var90 /* : nullable MType */;
8561 var_v = p0;
8562 var_readtype = p1;
8563 var_writetype = p2;
8564 {
8565 { /* Inline parser_nodes#AReassignFormExpr#n_assign_op (self) on <self:AReassignFormExpr> */
8566 var3 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_assign_op].val; /* _n_assign_op on <self:AReassignFormExpr> */
8567 if (unlikely(var3 == NULL)) {
8568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_assign_op");
8569 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1451);
8570 show_backtrace(1);
8571 }
8572 var1 = var3;
8573 RET_LABEL2:(void)0;
8574 }
8575 }
8576 /* <var1:AAssignOp> isa APlusAssignOp */
8577 cltype = type_parser_nodes__APlusAssignOp.color;
8578 idtype = type_parser_nodes__APlusAssignOp.id;
8579 if(cltype >= var1->type->table_size) {
8580 var4 = 0;
8581 } else {
8582 var4 = var1->type->type_table[cltype] == idtype;
8583 }
8584 if (var4){
8585 if (varonce) {
8586 var5 = varonce;
8587 } else {
8588 var6 = "+";
8589 var7 = 1;
8590 var8 = string__NativeString__to_s_with_length(var6, var7);
8591 var5 = var8;
8592 varonce = var5;
8593 }
8594 var_reassign_name = var5;
8595 } else {
8596 {
8597 { /* Inline parser_nodes#AReassignFormExpr#n_assign_op (self) on <self:AReassignFormExpr> */
8598 var11 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_assign_op].val; /* _n_assign_op on <self:AReassignFormExpr> */
8599 if (unlikely(var11 == NULL)) {
8600 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_assign_op");
8601 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1451);
8602 show_backtrace(1);
8603 }
8604 var9 = var11;
8605 RET_LABEL10:(void)0;
8606 }
8607 }
8608 /* <var9:AAssignOp> isa AMinusAssignOp */
8609 cltype13 = type_parser_nodes__AMinusAssignOp.color;
8610 idtype14 = type_parser_nodes__AMinusAssignOp.id;
8611 if(cltype13 >= var9->type->table_size) {
8612 var12 = 0;
8613 } else {
8614 var12 = var9->type->type_table[cltype13] == idtype14;
8615 }
8616 if (var12){
8617 if (varonce15) {
8618 var16 = varonce15;
8619 } else {
8620 var17 = "-";
8621 var18 = 1;
8622 var19 = string__NativeString__to_s_with_length(var17, var18);
8623 var16 = var19;
8624 varonce15 = var16;
8625 }
8626 var_reassign_name = var16;
8627 } else {
8628 PRINT_ERROR("Runtime error: %s", "Aborted");
8629 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 745);
8630 show_backtrace(1);
8631 }
8632 }
8633 {
8634 { /* Inline typing#AReassignFormExpr#read_type= (self,var_readtype) on <self:AReassignFormExpr> */
8635 self->attrs[COLOR_typing__AReassignFormExpr___read_type].val = var_readtype; /* _read_type on <self:AReassignFormExpr> */
8636 RET_LABEL20:(void)0;
8637 }
8638 }
8639 /* <var_readtype:MType> isa MNullType */
8640 cltype22 = type_model__MNullType.color;
8641 idtype23 = type_model__MNullType.id;
8642 if(cltype22 >= var_readtype->type->table_size) {
8643 var21 = 0;
8644 } else {
8645 var21 = var_readtype->type->type_table[cltype22] == idtype23;
8646 }
8647 if (var21){
8648 if (varonce24) {
8649 var25 = varonce24;
8650 } else {
8651 var26 = "Error: Method \'";
8652 var27 = 15;
8653 var28 = string__NativeString__to_s_with_length(var26, var27);
8654 var25 = var28;
8655 varonce24 = var25;
8656 }
8657 if (varonce29) {
8658 var30 = varonce29;
8659 } else {
8660 var31 = "\' call on \'null\'.";
8661 var32 = 17;
8662 var33 = string__NativeString__to_s_with_length(var31, var32);
8663 var30 = var33;
8664 varonce29 = var30;
8665 }
8666 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
8667 { /* var34 = array_instance Array[Object] */
8668 var35 = 3;
8669 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
8670 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var25;
8671 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_reassign_name;
8672 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var30;
8673 {
8674 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
8675 }
8676 }
8677 {
8678 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
8679 }
8680 {
8681 typing__TypeVisitor__error(var_v, self, var37); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
8682 }
8683 var38 = NULL;
8684 var = var38;
8685 goto RET_LABEL;
8686 } else {
8687 }
8688 var39 = 0;
8689 {
8690 var40 = typing__TypeVisitor__get_method(var_v, self, var_readtype, var_reassign_name, var39);
8691 }
8692 var_callsite = var40;
8693 var41 = NULL;
8694 if (var_callsite == NULL) {
8695 var42 = 1; /* is null */
8696 } else {
8697 var42 = 0; /* arg is null but recv is not */
8698 }
8699 if (0) {
8700 { /* Inline kernel#Object#== (var_callsite,var41) on <var_callsite:nullable CallSite> */
8701 var_other = var41;
8702 {
8703 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
8704 var47 = var_callsite == var_other;
8705 var45 = var47;
8706 goto RET_LABEL46;
8707 RET_LABEL46:(void)0;
8708 }
8709 }
8710 var43 = var45;
8711 goto RET_LABEL44;
8712 RET_LABEL44:(void)0;
8713 }
8714 var42 = var43;
8715 }
8716 if (var42){
8717 var48 = NULL;
8718 var = var48;
8719 goto RET_LABEL;
8720 } else {
8721 }
8722 {
8723 { /* Inline typing#AReassignFormExpr#reassign_callsite= (self,var_callsite) on <self:AReassignFormExpr> */
8724 self->attrs[COLOR_typing__AReassignFormExpr___reassign_callsite].val = var_callsite; /* _reassign_callsite on <self:AReassignFormExpr> */
8725 RET_LABEL49:(void)0;
8726 }
8727 }
8728 {
8729 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
8730 var52 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
8731 if (unlikely(var52 == NULL)) {
8732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
8733 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 490);
8734 show_backtrace(1);
8735 }
8736 var50 = var52;
8737 RET_LABEL51:(void)0;
8738 }
8739 }
8740 var_msignature = var50;
8741 {
8742 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
8743 var55 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
8744 var53 = var55;
8745 RET_LABEL54:(void)0;
8746 }
8747 }
8748 var_rettype = var53;
8749 {
8750 var57 = model__MSignature__arity(var_msignature);
8751 }
8752 var58 = 1;
8753 {
8754 { /* Inline kernel#Int#== (var57,var58) on <var57:Int> */
8755 var62 = var57 == var58;
8756 var60 = var62;
8757 goto RET_LABEL61;
8758 RET_LABEL61:(void)0;
8759 }
8760 var59 = var60;
8761 }
8762 var_ = var59;
8763 if (var59){
8764 var63 = NULL;
8765 if (var_rettype == NULL) {
8766 var64 = 0; /* is null */
8767 } else {
8768 var64 = 1; /* arg is null and recv is not */
8769 }
8770 if (0) {
8771 { /* Inline kernel#Object#!= (var_rettype,var63) on <var_rettype:nullable MType> */
8772 var_other67 = var63;
8773 {
8774 var69 = ((short int (*)(val*, val*))(var_rettype->class->vft[COLOR_kernel__Object___61d_61d]))(var_rettype, var_other67) /* == on <var_rettype:nullable MType(MType)>*/;
8775 var68 = var69;
8776 }
8777 var70 = !var68;
8778 var65 = var70;
8779 goto RET_LABEL66;
8780 RET_LABEL66:(void)0;
8781 }
8782 var64 = var65;
8783 }
8784 var56 = var64;
8785 } else {
8786 var56 = var_;
8787 }
8788 if (unlikely(!var56)) {
8789 PRINT_ERROR("Runtime error: %s", "Assert failed");
8790 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 761);
8791 show_backtrace(1);
8792 }
8793 {
8794 { /* Inline parser_nodes#AReassignFormExpr#n_value (self) on <self:AReassignFormExpr> */
8795 var73 = self->attrs[COLOR_parser_nodes__AReassignFormExpr___n_value].val; /* _n_value on <self:AReassignFormExpr> */
8796 if (unlikely(var73 == NULL)) {
8797 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
8798 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1452);
8799 show_backtrace(1);
8800 }
8801 var71 = var73;
8802 RET_LABEL72:(void)0;
8803 }
8804 }
8805 {
8806 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
8807 var76 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
8808 if (unlikely(var76 == NULL)) {
8809 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
8810 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
8811 show_backtrace(1);
8812 }
8813 var74 = var76;
8814 RET_LABEL75:(void)0;
8815 }
8816 }
8817 {
8818 var77 = abstract_collection__SequenceRead__first(var74);
8819 }
8820 {
8821 { /* Inline model#MParameter#mtype (var77) on <var77:nullable Object(MParameter)> */
8822 var80 = var77->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var77:nullable Object(MParameter)> */
8823 if (unlikely(var80 == NULL)) {
8824 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8825 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
8826 show_backtrace(1);
8827 }
8828 var78 = var80;
8829 RET_LABEL79:(void)0;
8830 }
8831 }
8832 {
8833 var81 = typing__TypeVisitor__visit_expr_subtype(var_v, var71, var78);
8834 }
8835 var_value_type = var81;
8836 var82 = NULL;
8837 if (var_value_type == NULL) {
8838 var83 = 1; /* is null */
8839 } else {
8840 var83 = 0; /* arg is null but recv is not */
8841 }
8842 if (0) {
8843 { /* Inline kernel#Object#== (var_value_type,var82) on <var_value_type:nullable MType> */
8844 var_other = var82;
8845 {
8846 { /* Inline kernel#Object#is_same_instance (var_value_type,var_other) on <var_value_type:nullable MType(MType)> */
8847 var88 = var_value_type == var_other;
8848 var86 = var88;
8849 goto RET_LABEL87;
8850 RET_LABEL87:(void)0;
8851 }
8852 }
8853 var84 = var86;
8854 goto RET_LABEL85;
8855 RET_LABEL85:(void)0;
8856 }
8857 var83 = var84;
8858 }
8859 if (var83){
8860 var89 = NULL;
8861 var = var89;
8862 goto RET_LABEL;
8863 } else {
8864 }
8865 {
8866 var90 = typing__TypeVisitor__check_subtype(var_v, self, var_rettype, var_writetype);
8867 }
8868 var = var_rettype;
8869 goto RET_LABEL;
8870 RET_LABEL:;
8871 return var;
8872 }
8873 /* method typing#AReassignFormExpr#resolve_reassignment for (self: Object, TypeVisitor, MType, MType): nullable MType */
8874 val* VIRTUAL_typing__AReassignFormExpr__resolve_reassignment(val* self, val* p0, val* p1, val* p2) {
8875 val* var /* : nullable MType */;
8876 val* var1 /* : nullable MType */;
8877 var1 = typing__AReassignFormExpr__resolve_reassignment(self, p0, p1, p2);
8878 var = var1;
8879 RET_LABEL:;
8880 return var;
8881 }
8882 /* method typing#AVarReassignExpr#accept_typing for (self: AVarReassignExpr, TypeVisitor) */
8883 void typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
8884 val* var_v /* var v: TypeVisitor */;
8885 val* var /* : nullable Variable */;
8886 val* var2 /* : nullable Variable */;
8887 val* var_variable /* var variable: nullable Variable */;
8888 val* var3 /* : null */;
8889 short int var4 /* : Bool */;
8890 short int var5 /* : Bool */;
8891 val* var_other /* var other: nullable Object */;
8892 short int var7 /* : Bool */;
8893 short int var8 /* : Bool */;
8894 short int var9 /* : Bool */;
8895 val* var10 /* : nullable MType */;
8896 val* var_readtype /* var readtype: nullable MType */;
8897 val* var11 /* : null */;
8898 short int var12 /* : Bool */;
8899 short int var13 /* : Bool */;
8900 val* var_other15 /* var other: nullable Object */;
8901 short int var16 /* : Bool */;
8902 short int var18 /* : Bool */;
8903 val* var20 /* : nullable MType */;
8904 val* var22 /* : nullable MType */;
8905 val* var_writetype /* var writetype: nullable MType */;
8906 val* var23 /* : null */;
8907 short int var24 /* : Bool */;
8908 short int var25 /* : Bool */;
8909 short int var27 /* : Bool */;
8910 short int var29 /* : Bool */;
8911 val* var30 /* : nullable MType */;
8912 val* var_rettype /* var rettype: nullable MType */;
8913 short int var31 /* : Bool */;
8914 var_v = p0;
8915 {
8916 { /* Inline scope#AVarFormExpr#variable (self) on <self:AVarReassignExpr> */
8917 var2 = self->attrs[COLOR_scope__AVarFormExpr___variable].val; /* _variable on <self:AVarReassignExpr> */
8918 var = var2;
8919 RET_LABEL1:(void)0;
8920 }
8921 }
8922 var_variable = var;
8923 var3 = NULL;
8924 if (var_variable == NULL) {
8925 var4 = 0; /* is null */
8926 } else {
8927 var4 = 1; /* arg is null and recv is not */
8928 }
8929 if (0) {
8930 { /* Inline kernel#Object#!= (var_variable,var3) on <var_variable:nullable Variable> */
8931 var_other = var3;
8932 {
8933 var8 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
8934 var7 = var8;
8935 }
8936 var9 = !var7;
8937 var5 = var9;
8938 goto RET_LABEL6;
8939 RET_LABEL6:(void)0;
8940 }
8941 var4 = var5;
8942 }
8943 if (unlikely(!var4)) {
8944 PRINT_ERROR("Runtime error: %s", "Assert failed");
8945 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 775);
8946 show_backtrace(1);
8947 }
8948 {
8949 var10 = typing__TypeVisitor__get_variable(var_v, self, var_variable);
8950 }
8951 var_readtype = var10;
8952 var11 = NULL;
8953 if (var_readtype == NULL) {
8954 var12 = 1; /* is null */
8955 } else {
8956 var12 = 0; /* arg is null but recv is not */
8957 }
8958 if (0) {
8959 { /* Inline kernel#Object#== (var_readtype,var11) on <var_readtype:nullable MType> */
8960 var_other15 = var11;
8961 {
8962 { /* Inline kernel#Object#is_same_instance (var_readtype,var_other15) on <var_readtype:nullable MType(MType)> */
8963 var18 = var_readtype == var_other15;
8964 var16 = var18;
8965 goto RET_LABEL17;
8966 RET_LABEL17:(void)0;
8967 }
8968 }
8969 var13 = var16;
8970 goto RET_LABEL14;
8971 RET_LABEL14:(void)0;
8972 }
8973 var12 = var13;
8974 }
8975 if (var12){
8976 goto RET_LABEL;
8977 } else {
8978 }
8979 {
8980 { /* Inline typing#AReassignFormExpr#read_type= (self,var_readtype) on <self:AVarReassignExpr> */
8981 self->attrs[COLOR_typing__AReassignFormExpr___read_type].val = var_readtype; /* _read_type on <self:AVarReassignExpr> */
8982 RET_LABEL19:(void)0;
8983 }
8984 }
8985 {
8986 { /* Inline typing#Variable#declared_type (var_variable) on <var_variable:nullable Variable(Variable)> */
8987 var22 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:nullable Variable(Variable)> */
8988 var20 = var22;
8989 RET_LABEL21:(void)0;
8990 }
8991 }
8992 var_writetype = var20;
8993 var23 = NULL;
8994 if (var_writetype == NULL) {
8995 var24 = 1; /* is null */
8996 } else {
8997 var24 = 0; /* arg is null but recv is not */
8998 }
8999 if (0) {
9000 { /* Inline kernel#Object#== (var_writetype,var23) on <var_writetype:nullable MType> */
9001 var_other15 = var23;
9002 {
9003 { /* Inline kernel#Object#is_same_instance (var_writetype,var_other15) on <var_writetype:nullable MType(MType)> */
9004 var29 = var_writetype == var_other15;
9005 var27 = var29;
9006 goto RET_LABEL28;
9007 RET_LABEL28:(void)0;
9008 }
9009 }
9010 var25 = var27;
9011 goto RET_LABEL26;
9012 RET_LABEL26:(void)0;
9013 }
9014 var24 = var25;
9015 }
9016 if (var24){
9017 goto RET_LABEL;
9018 } else {
9019 }
9020 {
9021 var30 = typing__AReassignFormExpr__resolve_reassignment(self, var_v, var_readtype, var_writetype);
9022 }
9023 var_rettype = var30;
9024 {
9025 typing__TypeVisitor__set_variable(var_v, self, var_variable, var_rettype); /* Direct call typing#TypeVisitor#set_variable on <var_v:TypeVisitor>*/
9026 }
9027 var31 = 1;
9028 {
9029 { /* Inline typing#AExpr#is_typed= (self,var31) on <self:AVarReassignExpr> */
9030 self->attrs[COLOR_typing__AExpr___is_typed].s = var31; /* _is_typed on <self:AVarReassignExpr> */
9031 RET_LABEL32:(void)0;
9032 }
9033 }
9034 RET_LABEL:;
9035 }
9036 /* method typing#AVarReassignExpr#accept_typing for (self: Object, TypeVisitor) */
9037 void VIRTUAL_typing__AVarReassignExpr__accept_typing(val* self, val* p0) {
9038 typing__AVarReassignExpr__accept_typing(self, p0); /* Direct call typing#AVarReassignExpr#accept_typing on <self:Object(AVarReassignExpr)>*/
9039 RET_LABEL:;
9040 }
9041 /* method typing#AContinueExpr#accept_typing for (self: AContinueExpr, TypeVisitor) */
9042 void typing__AContinueExpr__accept_typing(val* self, val* p0) {
9043 val* var_v /* var v: TypeVisitor */;
9044 val* var /* : nullable AExpr */;
9045 val* var2 /* : nullable AExpr */;
9046 val* var_nexpr /* var nexpr: nullable AExpr */;
9047 val* var3 /* : null */;
9048 short int var4 /* : Bool */;
9049 short int var5 /* : Bool */;
9050 val* var_other /* var other: nullable Object */;
9051 short int var7 /* : Bool */;
9052 short int var8 /* : Bool */;
9053 short int var9 /* : Bool */;
9054 val* var10 /* : nullable MType */;
9055 short int var11 /* : Bool */;
9056 var_v = p0;
9057 {
9058 { /* Inline parser_nodes#AEscapeExpr#n_expr (self) on <self:AContinueExpr> */
9059 var2 = self->attrs[COLOR_parser_nodes__AEscapeExpr___n_expr].val; /* _n_expr on <self:AContinueExpr> */
9060 var = var2;
9061 RET_LABEL1:(void)0;
9062 }
9063 }
9064 var_nexpr = var;
9065 var3 = NULL;
9066 if (var_nexpr == NULL) {
9067 var4 = 0; /* is null */
9068 } else {
9069 var4 = 1; /* arg is null and recv is not */
9070 }
9071 if (0) {
9072 { /* Inline kernel#Object#!= (var_nexpr,var3) on <var_nexpr:nullable AExpr> */
9073 var_other = var3;
9074 {
9075 var8 = ((short int (*)(val*, val*))(var_nexpr->class->vft[COLOR_kernel__Object___61d_61d]))(var_nexpr, var_other) /* == on <var_nexpr:nullable AExpr(AExpr)>*/;
9076 var7 = var8;
9077 }
9078 var9 = !var7;
9079 var5 = var9;
9080 goto RET_LABEL6;
9081 RET_LABEL6:(void)0;
9082 }
9083 var4 = var5;
9084 }
9085 if (var4){
9086 {
9087 var10 = typing__TypeVisitor__visit_expr(var_v, var_nexpr);
9088 }
9089 } else {
9090 }
9091 var11 = 1;
9092 {
9093 { /* Inline typing#AExpr#is_typed= (self,var11) on <self:AContinueExpr> */
9094 self->attrs[COLOR_typing__AExpr___is_typed].s = var11; /* _is_typed on <self:AContinueExpr> */
9095 RET_LABEL12:(void)0;
9096 }
9097 }
9098 RET_LABEL:;
9099 }
9100 /* method typing#AContinueExpr#accept_typing for (self: Object, TypeVisitor) */
9101 void VIRTUAL_typing__AContinueExpr__accept_typing(val* self, val* p0) {
9102 typing__AContinueExpr__accept_typing(self, p0); /* Direct call typing#AContinueExpr#accept_typing on <self:Object(AContinueExpr)>*/
9103 RET_LABEL:;
9104 }
9105 /* method typing#ABreakExpr#accept_typing for (self: ABreakExpr, TypeVisitor) */
9106 void typing__ABreakExpr__accept_typing(val* self, val* p0) {
9107 val* var_v /* var v: TypeVisitor */;
9108 val* var /* : nullable AExpr */;
9109 val* var2 /* : nullable AExpr */;
9110 val* var_nexpr /* var nexpr: nullable AExpr */;
9111 val* var3 /* : null */;
9112 short int var4 /* : Bool */;
9113 short int var5 /* : Bool */;
9114 val* var_other /* var other: nullable Object */;
9115 short int var7 /* : Bool */;
9116 short int var8 /* : Bool */;
9117 short int var9 /* : Bool */;
9118 val* var10 /* : nullable MType */;
9119 short int var11 /* : Bool */;
9120 var_v = p0;
9121 {
9122 { /* Inline parser_nodes#AEscapeExpr#n_expr (self) on <self:ABreakExpr> */
9123 var2 = self->attrs[COLOR_parser_nodes__AEscapeExpr___n_expr].val; /* _n_expr on <self:ABreakExpr> */
9124 var = var2;
9125 RET_LABEL1:(void)0;
9126 }
9127 }
9128 var_nexpr = var;
9129 var3 = NULL;
9130 if (var_nexpr == NULL) {
9131 var4 = 0; /* is null */
9132 } else {
9133 var4 = 1; /* arg is null and recv is not */
9134 }
9135 if (0) {
9136 { /* Inline kernel#Object#!= (var_nexpr,var3) on <var_nexpr:nullable AExpr> */
9137 var_other = var3;
9138 {
9139 var8 = ((short int (*)(val*, val*))(var_nexpr->class->vft[COLOR_kernel__Object___61d_61d]))(var_nexpr, var_other) /* == on <var_nexpr:nullable AExpr(AExpr)>*/;
9140 var7 = var8;
9141 }
9142 var9 = !var7;
9143 var5 = var9;
9144 goto RET_LABEL6;
9145 RET_LABEL6:(void)0;
9146 }
9147 var4 = var5;
9148 }
9149 if (var4){
9150 {
9151 var10 = typing__TypeVisitor__visit_expr(var_v, var_nexpr);
9152 }
9153 } else {
9154 }
9155 var11 = 1;
9156 {
9157 { /* Inline typing#AExpr#is_typed= (self,var11) on <self:ABreakExpr> */
9158 self->attrs[COLOR_typing__AExpr___is_typed].s = var11; /* _is_typed on <self:ABreakExpr> */
9159 RET_LABEL12:(void)0;
9160 }
9161 }
9162 RET_LABEL:;
9163 }
9164 /* method typing#ABreakExpr#accept_typing for (self: Object, TypeVisitor) */
9165 void VIRTUAL_typing__ABreakExpr__accept_typing(val* self, val* p0) {
9166 typing__ABreakExpr__accept_typing(self, p0); /* Direct call typing#ABreakExpr#accept_typing on <self:Object(ABreakExpr)>*/
9167 RET_LABEL:;
9168 }
9169 /* method typing#AReturnExpr#accept_typing for (self: AReturnExpr, TypeVisitor) */
9170 void typing__AReturnExpr__accept_typing(val* self, val* p0) {
9171 val* var_v /* var v: TypeVisitor */;
9172 val* var /* : nullable AExpr */;
9173 val* var2 /* : nullable AExpr */;
9174 val* var_nexpr /* var nexpr: nullable AExpr */;
9175 val* var3 /* : nullable MPropDef */;
9176 val* var5 /* : nullable MPropDef */;
9177 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
9178 short int var6 /* : Bool */;
9179 int cltype;
9180 int idtype;
9181 val* var7 /* : nullable MSignature */;
9182 val* var9 /* : nullable MSignature */;
9183 val* var10 /* : nullable MType */;
9184 val* var12 /* : nullable MType */;
9185 val* var_ret_type /* var ret_type: nullable Object */;
9186 short int var13 /* : Bool */;
9187 int cltype14;
9188 int idtype15;
9189 val* var16 /* : nullable MType */;
9190 val* var18 /* : nullable MType */;
9191 val* var19 /* : null */;
9192 short int var20 /* : Bool */;
9193 short int var21 /* : Bool */;
9194 val* var_other /* var other: nullable Object */;
9195 short int var23 /* : Bool */;
9196 short int var24 /* : Bool */;
9197 short int var25 /* : Bool */;
9198 val* var26 /* : null */;
9199 short int var27 /* : Bool */;
9200 short int var28 /* : Bool */;
9201 short int var30 /* : Bool */;
9202 short int var31 /* : Bool */;
9203 short int var32 /* : Bool */;
9204 val* var33 /* : nullable MType */;
9205 val* var34 /* : nullable MType */;
9206 static val* varonce;
9207 val* var35 /* : String */;
9208 char* var36 /* : NativeString */;
9209 long var37 /* : Int */;
9210 val* var38 /* : FlatString */;
9211 val* var39 /* : null */;
9212 short int var40 /* : Bool */;
9213 short int var41 /* : Bool */;
9214 short int var43 /* : Bool */;
9215 short int var44 /* : Bool */;
9216 short int var45 /* : Bool */;
9217 static val* varonce46;
9218 val* var47 /* : String */;
9219 char* var48 /* : NativeString */;
9220 long var49 /* : Int */;
9221 val* var50 /* : FlatString */;
9222 short int var51 /* : Bool */;
9223 var_v = p0;
9224 {
9225 { /* Inline parser_nodes#AReturnExpr#n_expr (self) on <self:AReturnExpr> */
9226 var2 = self->attrs[COLOR_parser_nodes__AReturnExpr___n_expr].val; /* _n_expr on <self:AReturnExpr> */
9227 var = var2;
9228 RET_LABEL1:(void)0;
9229 }
9230 }
9231 var_nexpr = var;
9232 {
9233 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
9234 var5 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
9235 var3 = var5;
9236 RET_LABEL4:(void)0;
9237 }
9238 }
9239 var_mpropdef = var3;
9240 /* <var_mpropdef:nullable MPropDef> isa MMethodDef */
9241 cltype = type_model__MMethodDef.color;
9242 idtype = type_model__MMethodDef.id;
9243 if(var_mpropdef == NULL) {
9244 var6 = 0;
9245 } else {
9246 if(cltype >= var_mpropdef->type->table_size) {
9247 var6 = 0;
9248 } else {
9249 var6 = var_mpropdef->type->type_table[cltype] == idtype;
9250 }
9251 }
9252 if (var6){
9253 {
9254 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
9255 var9 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
9256 var7 = var9;
9257 RET_LABEL8:(void)0;
9258 }
9259 }
9260 if (var7 == NULL) {
9261 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9262 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 823);
9263 show_backtrace(1);
9264 } else {
9265 { /* Inline model#MSignature#return_mtype (var7) on <var7:nullable MSignature> */
9266 if (unlikely(var7 == NULL)) {
9267 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9268 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468);
9269 show_backtrace(1);
9270 }
9271 var12 = var7->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var7:nullable MSignature> */
9272 var10 = var12;
9273 RET_LABEL11:(void)0;
9274 }
9275 }
9276 var_ret_type = var10;
9277 } else {
9278 /* <var_mpropdef:nullable MPropDef> isa MAttributeDef */
9279 cltype14 = type_model__MAttributeDef.color;
9280 idtype15 = type_model__MAttributeDef.id;
9281 if(var_mpropdef == NULL) {
9282 var13 = 0;
9283 } else {
9284 if(cltype14 >= var_mpropdef->type->table_size) {
9285 var13 = 0;
9286 } else {
9287 var13 = var_mpropdef->type->type_table[cltype14] == idtype15;
9288 }
9289 }
9290 if (var13){
9291 {
9292 { /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on <var_mpropdef:nullable MPropDef(MAttributeDef)> */
9293 var18 = var_mpropdef->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var_mpropdef:nullable MPropDef(MAttributeDef)> */
9294 var16 = var18;
9295 RET_LABEL17:(void)0;
9296 }
9297 }
9298 var_ret_type = var16;
9299 } else {
9300 PRINT_ERROR("Runtime error: %s", "Aborted");
9301 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 827);
9302 show_backtrace(1);
9303 }
9304 }
9305 var19 = NULL;
9306 if (var_nexpr == NULL) {
9307 var20 = 0; /* is null */
9308 } else {
9309 var20 = 1; /* arg is null and recv is not */
9310 }
9311 if (0) {
9312 { /* Inline kernel#Object#!= (var_nexpr,var19) on <var_nexpr:nullable AExpr> */
9313 var_other = var19;
9314 {
9315 var24 = ((short int (*)(val*, val*))(var_nexpr->class->vft[COLOR_kernel__Object___61d_61d]))(var_nexpr, var_other) /* == on <var_nexpr:nullable AExpr(AExpr)>*/;
9316 var23 = var24;
9317 }
9318 var25 = !var23;
9319 var21 = var25;
9320 goto RET_LABEL22;
9321 RET_LABEL22:(void)0;
9322 }
9323 var20 = var21;
9324 }
9325 if (var20){
9326 var26 = NULL;
9327 if (var_ret_type == NULL) {
9328 var27 = 0; /* is null */
9329 } else {
9330 var27 = 1; /* arg is null and recv is not */
9331 }
9332 if (0) {
9333 { /* Inline kernel#Object#!= (var_ret_type,var26) on <var_ret_type:nullable Object(nullable MType)> */
9334 var_other = var26;
9335 {
9336 var31 = ((short int (*)(val*, val*))(var_ret_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret_type, var_other) /* == on <var_ret_type:nullable MType(MType)>*/;
9337 var30 = var31;
9338 }
9339 var32 = !var30;
9340 var28 = var32;
9341 goto RET_LABEL29;
9342 RET_LABEL29:(void)0;
9343 }
9344 var27 = var28;
9345 }
9346 if (var27){
9347 {
9348 var33 = typing__TypeVisitor__visit_expr_subtype(var_v, var_nexpr, var_ret_type);
9349 }
9350 } else {
9351 {
9352 var34 = typing__TypeVisitor__visit_expr(var_v, var_nexpr);
9353 }
9354 if (varonce) {
9355 var35 = varonce;
9356 } else {
9357 var36 = "Error: Return with value in a procedure.";
9358 var37 = 40;
9359 var38 = string__NativeString__to_s_with_length(var36, var37);
9360 var35 = var38;
9361 varonce = var35;
9362 }
9363 {
9364 typing__TypeVisitor__error(var_v, self, var35); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9365 }
9366 }
9367 } else {
9368 var39 = NULL;
9369 if (var_ret_type == NULL) {
9370 var40 = 0; /* is null */
9371 } else {
9372 var40 = 1; /* arg is null and recv is not */
9373 }
9374 if (0) {
9375 { /* Inline kernel#Object#!= (var_ret_type,var39) on <var_ret_type:nullable Object(nullable MType)> */
9376 var_other = var39;
9377 {
9378 var44 = ((short int (*)(val*, val*))(var_ret_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret_type, var_other) /* == on <var_ret_type:nullable MType(MType)>*/;
9379 var43 = var44;
9380 }
9381 var45 = !var43;
9382 var41 = var45;
9383 goto RET_LABEL42;
9384 RET_LABEL42:(void)0;
9385 }
9386 var40 = var41;
9387 }
9388 if (var40){
9389 if (varonce46) {
9390 var47 = varonce46;
9391 } else {
9392 var48 = "Error: Return without value in a function.";
9393 var49 = 42;
9394 var50 = string__NativeString__to_s_with_length(var48, var49);
9395 var47 = var50;
9396 varonce46 = var47;
9397 }
9398 {
9399 typing__TypeVisitor__error(var_v, self, var47); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9400 }
9401 } else {
9402 }
9403 }
9404 var51 = 1;
9405 {
9406 { /* Inline typing#AExpr#is_typed= (self,var51) on <self:AReturnExpr> */
9407 self->attrs[COLOR_typing__AExpr___is_typed].s = var51; /* _is_typed on <self:AReturnExpr> */
9408 RET_LABEL52:(void)0;
9409 }
9410 }
9411 RET_LABEL:;
9412 }
9413 /* method typing#AReturnExpr#accept_typing for (self: Object, TypeVisitor) */
9414 void VIRTUAL_typing__AReturnExpr__accept_typing(val* self, val* p0) {
9415 typing__AReturnExpr__accept_typing(self, p0); /* Direct call typing#AReturnExpr#accept_typing on <self:Object(AReturnExpr)>*/
9416 RET_LABEL:;
9417 }
9418 /* method typing#AAbortExpr#accept_typing for (self: AAbortExpr, TypeVisitor) */
9419 void typing__AAbortExpr__accept_typing(val* self, val* p0) {
9420 val* var_v /* var v: TypeVisitor */;
9421 short int var /* : Bool */;
9422 var_v = p0;
9423 var = 1;
9424 {
9425 { /* Inline typing#AExpr#is_typed= (self,var) on <self:AAbortExpr> */
9426 self->attrs[COLOR_typing__AExpr___is_typed].s = var; /* _is_typed on <self:AAbortExpr> */
9427 RET_LABEL1:(void)0;
9428 }
9429 }
9430 RET_LABEL:;
9431 }
9432 /* method typing#AAbortExpr#accept_typing for (self: Object, TypeVisitor) */
9433 void VIRTUAL_typing__AAbortExpr__accept_typing(val* self, val* p0) {
9434 typing__AAbortExpr__accept_typing(self, p0); /* Direct call typing#AAbortExpr#accept_typing on <self:Object(AAbortExpr)>*/
9435 RET_LABEL:;
9436 }
9437 /* method typing#AIfExpr#accept_typing for (self: AIfExpr, TypeVisitor) */
9438 void typing__AIfExpr__accept_typing(val* self, val* p0) {
9439 val* var_v /* var v: TypeVisitor */;
9440 val* var /* : AExpr */;
9441 val* var2 /* : AExpr */;
9442 val* var3 /* : nullable MType */;
9443 val* var4 /* : nullable AExpr */;
9444 val* var6 /* : nullable AExpr */;
9445 val* var7 /* : nullable AExpr */;
9446 val* var9 /* : nullable AExpr */;
9447 short int var10 /* : Bool */;
9448 var_v = p0;
9449 {
9450 { /* Inline parser_nodes#AIfExpr#n_expr (self) on <self:AIfExpr> */
9451 var2 = self->attrs[COLOR_parser_nodes__AIfExpr___n_expr].val; /* _n_expr on <self:AIfExpr> */
9452 if (unlikely(var2 == NULL)) {
9453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
9454 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1387);
9455 show_backtrace(1);
9456 }
9457 var = var2;
9458 RET_LABEL1:(void)0;
9459 }
9460 }
9461 {
9462 var3 = typing__TypeVisitor__visit_expr_bool(var_v, var);
9463 }
9464 {
9465 { /* Inline parser_nodes#AIfExpr#n_then (self) on <self:AIfExpr> */
9466 var6 = self->attrs[COLOR_parser_nodes__AIfExpr___n_then].val; /* _n_then on <self:AIfExpr> */
9467 var4 = var6;
9468 RET_LABEL5:(void)0;
9469 }
9470 }
9471 {
9472 typing__TypeVisitor__visit_stmt(var_v, var4); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
9473 }
9474 {
9475 { /* Inline parser_nodes#AIfExpr#n_else (self) on <self:AIfExpr> */
9476 var9 = self->attrs[COLOR_parser_nodes__AIfExpr___n_else].val; /* _n_else on <self:AIfExpr> */
9477 var7 = var9;
9478 RET_LABEL8:(void)0;
9479 }
9480 }
9481 {
9482 typing__TypeVisitor__visit_stmt(var_v, var7); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
9483 }
9484 var10 = 1;
9485 {
9486 { /* Inline typing#AExpr#is_typed= (self,var10) on <self:AIfExpr> */
9487 self->attrs[COLOR_typing__AExpr___is_typed].s = var10; /* _is_typed on <self:AIfExpr> */
9488 RET_LABEL11:(void)0;
9489 }
9490 }
9491 RET_LABEL:;
9492 }
9493 /* method typing#AIfExpr#accept_typing for (self: Object, TypeVisitor) */
9494 void VIRTUAL_typing__AIfExpr__accept_typing(val* self, val* p0) {
9495 typing__AIfExpr__accept_typing(self, p0); /* Direct call typing#AIfExpr#accept_typing on <self:Object(AIfExpr)>*/
9496 RET_LABEL:;
9497 }
9498 /* method typing#AIfexprExpr#accept_typing for (self: AIfexprExpr, TypeVisitor) */
9499 void typing__AIfexprExpr__accept_typing(val* self, val* p0) {
9500 val* var_v /* var v: TypeVisitor */;
9501 val* var /* : AExpr */;
9502 val* var2 /* : AExpr */;
9503 val* var3 /* : nullable MType */;
9504 val* var4 /* : AExpr */;
9505 val* var6 /* : AExpr */;
9506 val* var7 /* : nullable MType */;
9507 val* var_t1 /* var t1: nullable MType */;
9508 val* var8 /* : AExpr */;
9509 val* var10 /* : AExpr */;
9510 val* var11 /* : nullable MType */;
9511 val* var_t2 /* var t2: nullable MType */;
9512 short int var12 /* : Bool */;
9513 val* var13 /* : null */;
9514 short int var14 /* : Bool */;
9515 short int var15 /* : Bool */;
9516 val* var_other /* var other: nullable Object */;
9517 short int var17 /* : Bool */;
9518 short int var19 /* : Bool */;
9519 short int var_ /* var : Bool */;
9520 val* var20 /* : null */;
9521 short int var21 /* : Bool */;
9522 short int var22 /* : Bool */;
9523 short int var24 /* : Bool */;
9524 short int var26 /* : Bool */;
9525 val* var27 /* : Array[MType] */;
9526 long var28 /* : Int */;
9527 val* var_29 /* var : Array[MType] */;
9528 val* var30 /* : nullable MType */;
9529 val* var_t /* var t: nullable MType */;
9530 val* var31 /* : null */;
9531 short int var32 /* : Bool */;
9532 short int var33 /* : Bool */;
9533 short int var35 /* : Bool */;
9534 short int var37 /* : Bool */;
9535 static val* varonce;
9536 val* var38 /* : String */;
9537 char* var39 /* : NativeString */;
9538 long var40 /* : Int */;
9539 val* var41 /* : FlatString */;
9540 static val* varonce42;
9541 val* var43 /* : String */;
9542 char* var44 /* : NativeString */;
9543 long var45 /* : Int */;
9544 val* var46 /* : FlatString */;
9545 val* var47 /* : Array[Object] */;
9546 long var48 /* : Int */;
9547 val* var49 /* : NativeArray[Object] */;
9548 val* var50 /* : String */;
9549 var_v = p0;
9550 {
9551 { /* Inline parser_nodes#AIfexprExpr#n_expr (self) on <self:AIfexprExpr> */
9552 var2 = self->attrs[COLOR_parser_nodes__AIfexprExpr___n_expr].val; /* _n_expr on <self:AIfexprExpr> */
9553 if (unlikely(var2 == NULL)) {
9554 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
9555 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1396);
9556 show_backtrace(1);
9557 }
9558 var = var2;
9559 RET_LABEL1:(void)0;
9560 }
9561 }
9562 {
9563 var3 = typing__TypeVisitor__visit_expr_bool(var_v, var);
9564 }
9565 {
9566 { /* Inline parser_nodes#AIfexprExpr#n_then (self) on <self:AIfexprExpr> */
9567 var6 = self->attrs[COLOR_parser_nodes__AIfexprExpr___n_then].val; /* _n_then on <self:AIfexprExpr> */
9568 if (unlikely(var6 == NULL)) {
9569 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_then");
9570 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1398);
9571 show_backtrace(1);
9572 }
9573 var4 = var6;
9574 RET_LABEL5:(void)0;
9575 }
9576 }
9577 {
9578 var7 = typing__TypeVisitor__visit_expr(var_v, var4);
9579 }
9580 var_t1 = var7;
9581 {
9582 { /* Inline parser_nodes#AIfexprExpr#n_else (self) on <self:AIfexprExpr> */
9583 var10 = self->attrs[COLOR_parser_nodes__AIfexprExpr___n_else].val; /* _n_else on <self:AIfexprExpr> */
9584 if (unlikely(var10 == NULL)) {
9585 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_else");
9586 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1400);
9587 show_backtrace(1);
9588 }
9589 var8 = var10;
9590 RET_LABEL9:(void)0;
9591 }
9592 }
9593 {
9594 var11 = typing__TypeVisitor__visit_expr(var_v, var8);
9595 }
9596 var_t2 = var11;
9597 var13 = NULL;
9598 if (var_t1 == NULL) {
9599 var14 = 1; /* is null */
9600 } else {
9601 var14 = 0; /* arg is null but recv is not */
9602 }
9603 if (0) {
9604 { /* Inline kernel#Object#== (var_t1,var13) on <var_t1:nullable MType> */
9605 var_other = var13;
9606 {
9607 { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
9608 var19 = var_t1 == var_other;
9609 var17 = var19;
9610 goto RET_LABEL18;
9611 RET_LABEL18:(void)0;
9612 }
9613 }
9614 var15 = var17;
9615 goto RET_LABEL16;
9616 RET_LABEL16:(void)0;
9617 }
9618 var14 = var15;
9619 }
9620 var_ = var14;
9621 if (var14){
9622 var12 = var_;
9623 } else {
9624 var20 = NULL;
9625 if (var_t2 == NULL) {
9626 var21 = 1; /* is null */
9627 } else {
9628 var21 = 0; /* arg is null but recv is not */
9629 }
9630 if (0) {
9631 { /* Inline kernel#Object#== (var_t2,var20) on <var_t2:nullable MType> */
9632 var_other = var20;
9633 {
9634 { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
9635 var26 = var_t2 == var_other;
9636 var24 = var26;
9637 goto RET_LABEL25;
9638 RET_LABEL25:(void)0;
9639 }
9640 }
9641 var22 = var24;
9642 goto RET_LABEL23;
9643 RET_LABEL23:(void)0;
9644 }
9645 var21 = var22;
9646 }
9647 var12 = var21;
9648 }
9649 if (var12){
9650 goto RET_LABEL;
9651 } else {
9652 }
9653 var27 = NEW_array__Array(&type_array__Arraymodel__MType);
9654 var28 = 2;
9655 {
9656 array__Array__with_capacity(var27, var28); /* Direct call array#Array#with_capacity on <var27:Array[MType]>*/
9657 }
9658 var_29 = var27;
9659 {
9660 array__AbstractArray__push(var_29, var_t1); /* Direct call array#AbstractArray#push on <var_29:Array[MType]>*/
9661 }
9662 {
9663 array__AbstractArray__push(var_29, var_t2); /* Direct call array#AbstractArray#push on <var_29:Array[MType]>*/
9664 }
9665 {
9666 var30 = typing__TypeVisitor__merge_types(var_v, self, var_29);
9667 }
9668 var_t = var30;
9669 var31 = NULL;
9670 if (var_t == NULL) {
9671 var32 = 1; /* is null */
9672 } else {
9673 var32 = 0; /* arg is null but recv is not */
9674 }
9675 if (0) {
9676 { /* Inline kernel#Object#== (var_t,var31) on <var_t:nullable MType> */
9677 var_other = var31;
9678 {
9679 { /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:nullable MType(MType)> */
9680 var37 = var_t == var_other;
9681 var35 = var37;
9682 goto RET_LABEL36;
9683 RET_LABEL36:(void)0;
9684 }
9685 }
9686 var33 = var35;
9687 goto RET_LABEL34;
9688 RET_LABEL34:(void)0;
9689 }
9690 var32 = var33;
9691 }
9692 if (var32){
9693 if (varonce) {
9694 var38 = varonce;
9695 } else {
9696 var39 = "Type Error: ambiguous type ";
9697 var40 = 27;
9698 var41 = string__NativeString__to_s_with_length(var39, var40);
9699 var38 = var41;
9700 varonce = var38;
9701 }
9702 if (varonce42) {
9703 var43 = varonce42;
9704 } else {
9705 var44 = " vs ";
9706 var45 = 4;
9707 var46 = string__NativeString__to_s_with_length(var44, var45);
9708 var43 = var46;
9709 varonce42 = var43;
9710 }
9711 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
9712 { /* var47 = array_instance Array[Object] */
9713 var48 = 4;
9714 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
9715 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var38;
9716 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var_t1;
9717 ((struct instance_array__NativeArray*)var49)->values[2] = (val*) var43;
9718 ((struct instance_array__NativeArray*)var49)->values[3] = (val*) var_t2;
9719 {
9720 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
9721 }
9722 }
9723 {
9724 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
9725 }
9726 {
9727 typing__TypeVisitor__error(var_v, self, var50); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
9728 }
9729 } else {
9730 }
9731 {
9732 { /* Inline typing#AExpr#mtype= (self,var_t) on <self:AIfexprExpr> */
9733 self->attrs[COLOR_typing__AExpr___mtype].val = var_t; /* _mtype on <self:AIfexprExpr> */
9734 RET_LABEL51:(void)0;
9735 }
9736 }
9737 RET_LABEL:;
9738 }
9739 /* method typing#AIfexprExpr#accept_typing for (self: Object, TypeVisitor) */
9740 void VIRTUAL_typing__AIfexprExpr__accept_typing(val* self, val* p0) {
9741 typing__AIfexprExpr__accept_typing(self, p0); /* Direct call typing#AIfexprExpr#accept_typing on <self:Object(AIfexprExpr)>*/
9742 RET_LABEL:;
9743 }
9744 /* method typing#ADoExpr#accept_typing for (self: ADoExpr, TypeVisitor) */
9745 void typing__ADoExpr__accept_typing(val* self, val* p0) {
9746 val* var_v /* var v: TypeVisitor */;
9747 val* var /* : nullable AExpr */;
9748 val* var2 /* : nullable AExpr */;
9749 short int var3 /* : Bool */;
9750 var_v = p0;
9751 {
9752 { /* Inline parser_nodes#ADoExpr#n_block (self) on <self:ADoExpr> */
9753 var2 = self->attrs[COLOR_parser_nodes__ADoExpr___n_block].val; /* _n_block on <self:ADoExpr> */
9754 var = var2;
9755 RET_LABEL1:(void)0;
9756 }
9757 }
9758 {
9759 typing__TypeVisitor__visit_stmt(var_v, var); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
9760 }
9761 var3 = 1;
9762 {
9763 { /* Inline typing#AExpr#is_typed= (self,var3) on <self:ADoExpr> */
9764 self->attrs[COLOR_typing__AExpr___is_typed].s = var3; /* _is_typed on <self:ADoExpr> */
9765 RET_LABEL4:(void)0;
9766 }
9767 }
9768 RET_LABEL:;
9769 }
9770 /* method typing#ADoExpr#accept_typing for (self: Object, TypeVisitor) */
9771 void VIRTUAL_typing__ADoExpr__accept_typing(val* self, val* p0) {
9772 typing__ADoExpr__accept_typing(self, p0); /* Direct call typing#ADoExpr#accept_typing on <self:Object(ADoExpr)>*/
9773 RET_LABEL:;
9774 }
9775 /* method typing#AWhileExpr#accept_typing for (self: AWhileExpr, TypeVisitor) */
9776 void typing__AWhileExpr__accept_typing(val* self, val* p0) {
9777 val* var_v /* var v: TypeVisitor */;
9778 val* var /* : AExpr */;
9779 val* var2 /* : AExpr */;
9780 val* var3 /* : nullable MType */;
9781 val* var4 /* : nullable AExpr */;
9782 val* var6 /* : nullable AExpr */;
9783 short int var7 /* : Bool */;
9784 var_v = p0;
9785 {
9786 { /* Inline parser_nodes#AWhileExpr#n_expr (self) on <self:AWhileExpr> */
9787 var2 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_expr].val; /* _n_expr on <self:AWhileExpr> */
9788 if (unlikely(var2 == NULL)) {
9789 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
9790 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1408);
9791 show_backtrace(1);
9792 }
9793 var = var2;
9794 RET_LABEL1:(void)0;
9795 }
9796 }
9797 {
9798 var3 = typing__TypeVisitor__visit_expr_bool(var_v, var);
9799 }
9800 {
9801 { /* Inline parser_nodes#AWhileExpr#n_block (self) on <self:AWhileExpr> */
9802 var6 = self->attrs[COLOR_parser_nodes__AWhileExpr___n_block].val; /* _n_block on <self:AWhileExpr> */
9803 var4 = var6;
9804 RET_LABEL5:(void)0;
9805 }
9806 }
9807 {
9808 typing__TypeVisitor__visit_stmt(var_v, var4); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
9809 }
9810 var7 = 1;
9811 {
9812 { /* Inline typing#AExpr#is_typed= (self,var7) on <self:AWhileExpr> */
9813 self->attrs[COLOR_typing__AExpr___is_typed].s = var7; /* _is_typed on <self:AWhileExpr> */
9814 RET_LABEL8:(void)0;
9815 }
9816 }
9817 RET_LABEL:;
9818 }
9819 /* method typing#AWhileExpr#accept_typing for (self: Object, TypeVisitor) */
9820 void VIRTUAL_typing__AWhileExpr__accept_typing(val* self, val* p0) {
9821 typing__AWhileExpr__accept_typing(self, p0); /* Direct call typing#AWhileExpr#accept_typing on <self:Object(AWhileExpr)>*/
9822 RET_LABEL:;
9823 }
9824 /* method typing#ALoopExpr#accept_typing for (self: ALoopExpr, TypeVisitor) */
9825 void typing__ALoopExpr__accept_typing(val* self, val* p0) {
9826 val* var_v /* var v: TypeVisitor */;
9827 val* var /* : nullable AExpr */;
9828 val* var2 /* : nullable AExpr */;
9829 short int var3 /* : Bool */;
9830 var_v = p0;
9831 {
9832 { /* Inline parser_nodes#ALoopExpr#n_block (self) on <self:ALoopExpr> */
9833 var2 = self->attrs[COLOR_parser_nodes__ALoopExpr___n_block].val; /* _n_block on <self:ALoopExpr> */
9834 var = var2;
9835 RET_LABEL1:(void)0;
9836 }
9837 }
9838 {
9839 typing__TypeVisitor__visit_stmt(var_v, var); /* Direct call typing#TypeVisitor#visit_stmt on <var_v:TypeVisitor>*/
9840 }
9841 var3 = 1;
9842 {
9843 { /* Inline typing#AExpr#is_typed= (self,var3) on <self:ALoopExpr> */
9844 self->attrs[COLOR_typing__AExpr___is_typed].s = var3; /* _is_typed on <self:ALoopExpr> */
9845 RET_LABEL4:(void)0;
9846 }
9847 }
9848 RET_LABEL:;
9849 }
9850 /* method typing#ALoopExpr#accept_typing for (self: Object, TypeVisitor) */
9851 void VIRTUAL_typing__ALoopExpr__accept_typing(val* self, val* p0) {
9852 typing__ALoopExpr__accept_typing(self, p0); /* Direct call typing#ALoopExpr#accept_typing on <self:Object(ALoopExpr)>*/
9853 RET_LABEL:;
9854 }
9855 /* method typing#AForExpr#coltype= for (self: AForExpr, nullable MClassType) */
9856 void typing__AForExpr__coltype_61d(val* self, val* p0) {
9857 self->attrs[COLOR_typing__AForExpr___coltype].val = p0; /* _coltype on <self:AForExpr> */
9858 RET_LABEL:;
9859 }
9860 /* method typing#AForExpr#coltype= for (self: Object, nullable MClassType) */
9861 void VIRTUAL_typing__AForExpr__coltype_61d(val* self, val* p0) {
9862 { /* Inline typing#AForExpr#coltype= (self,p0) on <self:Object(AForExpr)> */
9863 self->attrs[COLOR_typing__AForExpr___coltype].val = p0; /* _coltype on <self:Object(AForExpr)> */
9864 RET_LABEL1:(void)0;
9865 }
9866 RET_LABEL:;
9867 }
9868 /* method typing#AForExpr#method_iterator for (self: AForExpr): nullable CallSite */
9869 val* typing__AForExpr__method_iterator(val* self) {
9870 val* var /* : nullable CallSite */;
9871 val* var1 /* : nullable CallSite */;
9872 var1 = self->attrs[COLOR_typing__AForExpr___method_iterator].val; /* _method_iterator on <self:AForExpr> */
9873 var = var1;
9874 RET_LABEL:;
9875 return var;
9876 }
9877 /* method typing#AForExpr#method_iterator for (self: Object): nullable CallSite */
9878 val* VIRTUAL_typing__AForExpr__method_iterator(val* self) {
9879 val* var /* : nullable CallSite */;
9880 val* var1 /* : nullable CallSite */;
9881 val* var3 /* : nullable CallSite */;
9882 { /* Inline typing#AForExpr#method_iterator (self) on <self:Object(AForExpr)> */
9883 var3 = self->attrs[COLOR_typing__AForExpr___method_iterator].val; /* _method_iterator on <self:Object(AForExpr)> */
9884 var1 = var3;
9885 RET_LABEL2:(void)0;
9886 }
9887 var = var1;
9888 RET_LABEL:;
9889 return var;
9890 }
9891 /* method typing#AForExpr#method_iterator= for (self: AForExpr, nullable CallSite) */
9892 void typing__AForExpr__method_iterator_61d(val* self, val* p0) {
9893 self->attrs[COLOR_typing__AForExpr___method_iterator].val = p0; /* _method_iterator on <self:AForExpr> */
9894 RET_LABEL:;
9895 }
9896 /* method typing#AForExpr#method_iterator= for (self: Object, nullable CallSite) */
9897 void VIRTUAL_typing__AForExpr__method_iterator_61d(val* self, val* p0) {
9898 { /* Inline typing#AForExpr#method_iterator= (self,p0) on <self:Object(AForExpr)> */
9899 self->attrs[COLOR_typing__AForExpr___method_iterator].val = p0; /* _method_iterator on <self:Object(AForExpr)> */
9900 RET_LABEL1:(void)0;
9901 }
9902 RET_LABEL:;
9903 }
9904 /* method typing#AForExpr#method_is_ok for (self: AForExpr): nullable CallSite */
9905 val* typing__AForExpr__method_is_ok(val* self) {
9906 val* var /* : nullable CallSite */;
9907 val* var1 /* : nullable CallSite */;
9908 var1 = self->attrs[COLOR_typing__AForExpr___method_is_ok].val; /* _method_is_ok on <self:AForExpr> */
9909 var = var1;
9910 RET_LABEL:;
9911 return var;
9912 }
9913 /* method typing#AForExpr#method_is_ok for (self: Object): nullable CallSite */
9914 val* VIRTUAL_typing__AForExpr__method_is_ok(val* self) {
9915 val* var /* : nullable CallSite */;
9916 val* var1 /* : nullable CallSite */;
9917 val* var3 /* : nullable CallSite */;
9918 { /* Inline typing#AForExpr#method_is_ok (self) on <self:Object(AForExpr)> */
9919 var3 = self->attrs[COLOR_typing__AForExpr___method_is_ok].val; /* _method_is_ok on <self:Object(AForExpr)> */
9920 var1 = var3;
9921 RET_LABEL2:(void)0;
9922 }
9923 var = var1;
9924 RET_LABEL:;
9925 return var;
9926 }
9927 /* method typing#AForExpr#method_is_ok= for (self: AForExpr, nullable CallSite) */
9928 void typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
9929 self->attrs[COLOR_typing__AForExpr___method_is_ok].val = p0; /* _method_is_ok on <self:AForExpr> */
9930 RET_LABEL:;
9931 }
9932 /* method typing#AForExpr#method_is_ok= for (self: Object, nullable CallSite) */
9933 void VIRTUAL_typing__AForExpr__method_is_ok_61d(val* self, val* p0) {
9934 { /* Inline typing#AForExpr#method_is_ok= (self,p0) on <self:Object(AForExpr)> */
9935 self->attrs[COLOR_typing__AForExpr___method_is_ok].val = p0; /* _method_is_ok on <self:Object(AForExpr)> */
9936 RET_LABEL1:(void)0;
9937 }
9938 RET_LABEL:;
9939 }
9940 /* method typing#AForExpr#method_item for (self: AForExpr): nullable CallSite */
9941 val* typing__AForExpr__method_item(val* self) {
9942 val* var /* : nullable CallSite */;
9943 val* var1 /* : nullable CallSite */;
9944 var1 = self->attrs[COLOR_typing__AForExpr___method_item].val; /* _method_item on <self:AForExpr> */
9945 var = var1;
9946 RET_LABEL:;
9947 return var;
9948 }
9949 /* method typing#AForExpr#method_item for (self: Object): nullable CallSite */
9950 val* VIRTUAL_typing__AForExpr__method_item(val* self) {
9951 val* var /* : nullable CallSite */;
9952 val* var1 /* : nullable CallSite */;
9953 val* var3 /* : nullable CallSite */;
9954 { /* Inline typing#AForExpr#method_item (self) on <self:Object(AForExpr)> */
9955 var3 = self->attrs[COLOR_typing__AForExpr___method_item].val; /* _method_item on <self:Object(AForExpr)> */
9956 var1 = var3;
9957 RET_LABEL2:(void)0;
9958 }
9959 var = var1;
9960 RET_LABEL:;
9961 return var;
9962 }
9963 /* method typing#AForExpr#method_item= for (self: AForExpr, nullable CallSite) */
9964 void typing__AForExpr__method_item_61d(val* self, val* p0) {
9965 self->attrs[COLOR_typing__AForExpr___method_item].val = p0; /* _method_item on <self:AForExpr> */
9966 RET_LABEL:;
9967 }
9968 /* method typing#AForExpr#method_item= for (self: Object, nullable CallSite) */
9969 void VIRTUAL_typing__AForExpr__method_item_61d(val* self, val* p0) {
9970 { /* Inline typing#AForExpr#method_item= (self,p0) on <self:Object(AForExpr)> */
9971 self->attrs[COLOR_typing__AForExpr___method_item].val = p0; /* _method_item on <self:Object(AForExpr)> */
9972 RET_LABEL1:(void)0;
9973 }
9974 RET_LABEL:;
9975 }
9976 /* method typing#AForExpr#method_next for (self: AForExpr): nullable CallSite */
9977 val* typing__AForExpr__method_next(val* self) {
9978 val* var /* : nullable CallSite */;
9979 val* var1 /* : nullable CallSite */;
9980 var1 = self->attrs[COLOR_typing__AForExpr___method_next].val; /* _method_next on <self:AForExpr> */
9981 var = var1;
9982 RET_LABEL:;
9983 return var;
9984 }
9985 /* method typing#AForExpr#method_next for (self: Object): nullable CallSite */
9986 val* VIRTUAL_typing__AForExpr__method_next(val* self) {
9987 val* var /* : nullable CallSite */;
9988 val* var1 /* : nullable CallSite */;
9989 val* var3 /* : nullable CallSite */;
9990 { /* Inline typing#AForExpr#method_next (self) on <self:Object(AForExpr)> */
9991 var3 = self->attrs[COLOR_typing__AForExpr___method_next].val; /* _method_next on <self:Object(AForExpr)> */
9992 var1 = var3;
9993 RET_LABEL2:(void)0;
9994 }
9995 var = var1;
9996 RET_LABEL:;
9997 return var;
9998 }