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