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