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