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