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