neo: Explain how arguments of a MClasType are named.
[nit.git] / c_src / typing.sep.2.c
1 #include "typing.sep.0.h"
2 /* method typing#ANotExpr#accept_typing for (self: ANotExpr, TypeVisitor) */
3 void typing__ANotExpr__accept_typing(val* self, val* p0) {
4 val* var_v /* var v: TypeVisitor */;
5 val* var /* : AExpr */;
6 val* var1 /* : nullable MType */;
7 val* var2 /* : nullable MType */;
8 var_v = p0;
9 {
10 var = parser_nodes__ANotExpr__n_expr(self);
11 }
12 {
13 var1 = typing__TypeVisitor__visit_expr_bool(var_v, var);
14 }
15 var1;
16 {
17 var2 = typing__TypeVisitor__type_bool(var_v, self);
18 }
19 {
20 { /* Inline typing#AExpr#mtype= (self,var2) on <self:ANotExpr> */
21 self->attrs[COLOR_typing__AExpr___mtype].val = var2; /* _mtype on <self:ANotExpr> */
22 RET_LABEL3:(void)0;
23 }
24 }
25 RET_LABEL:;
26 }
27 /* method typing#ANotExpr#accept_typing for (self: Object, TypeVisitor) */
28 void VIRTUAL_typing__ANotExpr__accept_typing(val* self, val* p0) {
29 typing__ANotExpr__accept_typing(self, p0); /* Direct call typing#ANotExpr#accept_typing on <self:Object(ANotExpr)>*/
30 RET_LABEL:;
31 }
32 /* method typing#AOrElseExpr#accept_typing for (self: AOrElseExpr, TypeVisitor) */
33 void typing__AOrElseExpr__accept_typing(val* self, val* p0) {
34 val* var_v /* var v: TypeVisitor */;
35 val* var /* : AExpr */;
36 val* var1 /* : nullable MType */;
37 val* var_t1 /* var t1: nullable MType */;
38 val* var2 /* : AExpr */;
39 val* var3 /* : nullable MType */;
40 val* var_t2 /* var t2: nullable MType */;
41 short int var4 /* : Bool */;
42 val* var5 /* : null */;
43 short int var6 /* : Bool */;
44 short int var7 /* : Bool */;
45 val* var_other /* var other: nullable Object */;
46 short int var9 /* : Bool */;
47 short int var11 /* : Bool */;
48 short int var_ /* var : Bool */;
49 val* var12 /* : null */;
50 short int var13 /* : Bool */;
51 short int var14 /* : Bool */;
52 short int var16 /* : Bool */;
53 short int var18 /* : Bool */;
54 val* var19 /* : MType */;
55 val* var20 /* : Array[MType] */;
56 long var21 /* : Int */;
57 val* var_22 /* var : Array[MType] */;
58 val* var23 /* : nullable MType */;
59 val* var_t /* var t: nullable MType */;
60 val* var24 /* : null */;
61 short int var25 /* : Bool */;
62 short int var26 /* : Bool */;
63 short int var28 /* : Bool */;
64 short int var30 /* : Bool */;
65 val* var31 /* : MModule */;
66 val* var33 /* : MModule */;
67 val* var34 /* : MClassType */;
68 short int var35 /* : Bool */;
69 int cltype;
70 int idtype;
71 val* var36 /* : MType */;
72 var_v = p0;
73 {
74 var = parser_nodes__AOrElseExpr__n_expr(self);
75 }
76 {
77 var1 = typing__TypeVisitor__visit_expr(var_v, var);
78 }
79 var_t1 = var1;
80 {
81 var2 = parser_nodes__AOrElseExpr__n_expr2(self);
82 }
83 {
84 var3 = typing__TypeVisitor__visit_expr(var_v, var2);
85 }
86 var_t2 = var3;
87 var5 = NULL;
88 if (var_t1 == NULL) {
89 var6 = 1; /* is null */
90 } else {
91 var6 = 0; /* arg is null but recv is not */
92 }
93 if (0) {
94 { /* Inline kernel#Object#== (var_t1,var5) on <var_t1:nullable MType> */
95 var_other = var5;
96 {
97 { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
98 var11 = var_t1 == var_other;
99 var9 = var11;
100 goto RET_LABEL10;
101 RET_LABEL10:(void)0;
102 }
103 }
104 var7 = var9;
105 goto RET_LABEL8;
106 RET_LABEL8:(void)0;
107 }
108 var6 = var7;
109 }
110 var_ = var6;
111 if (var6){
112 var4 = var_;
113 } else {
114 var12 = NULL;
115 if (var_t2 == NULL) {
116 var13 = 1; /* is null */
117 } else {
118 var13 = 0; /* arg is null but recv is not */
119 }
120 if (0) {
121 { /* Inline kernel#Object#== (var_t2,var12) on <var_t2:nullable MType> */
122 var_other = var12;
123 {
124 { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
125 var18 = var_t2 == var_other;
126 var16 = var18;
127 goto RET_LABEL17;
128 RET_LABEL17:(void)0;
129 }
130 }
131 var14 = var16;
132 goto RET_LABEL15;
133 RET_LABEL15:(void)0;
134 }
135 var13 = var14;
136 }
137 var4 = var13;
138 }
139 if (var4){
140 goto RET_LABEL;
141 } else {
142 }
143 {
144 var19 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MType__as_notnullable]))(var_t1) /* as_notnullable on <var_t1:nullable MType(MType)>*/;
145 }
146 var_t1 = var19;
147 var20 = NEW_array__Array(&type_array__Arraymodel__MType);
148 var21 = 2;
149 {
150 array__Array__with_capacity(var20, var21); /* Direct call array#Array#with_capacity on <var20:Array[MType]>*/
151 }
152 var_22 = var20;
153 {
154 array__AbstractArray__push(var_22, var_t1); /* Direct call array#AbstractArray#push on <var_22:Array[MType]>*/
155 }
156 {
157 array__AbstractArray__push(var_22, var_t2); /* Direct call array#AbstractArray#push on <var_22:Array[MType]>*/
158 }
159 {
160 var23 = typing__TypeVisitor__merge_types(var_v, self, var_22);
161 }
162 var_t = var23;
163 var24 = NULL;
164 if (var_t == NULL) {
165 var25 = 1; /* is null */
166 } else {
167 var25 = 0; /* arg is null but recv is not */
168 }
169 if (0) {
170 { /* Inline kernel#Object#== (var_t,var24) on <var_t:nullable MType> */
171 var_other = var24;
172 {
173 { /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:nullable MType(MType)> */
174 var30 = var_t == var_other;
175 var28 = var30;
176 goto RET_LABEL29;
177 RET_LABEL29:(void)0;
178 }
179 }
180 var26 = var28;
181 goto RET_LABEL27;
182 RET_LABEL27:(void)0;
183 }
184 var25 = var26;
185 }
186 if (var25){
187 {
188 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
189 var33 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
190 if (unlikely(var33 == NULL)) {
191 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
192 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
193 show_backtrace(1);
194 }
195 var31 = var33;
196 RET_LABEL32:(void)0;
197 }
198 }
199 {
200 var34 = model__MModule__object_type(var31);
201 }
202 var_t = var34;
203 /* <var_t2:nullable MType(MType)> isa MNullableType */
204 cltype = type_model__MNullableType.color;
205 idtype = type_model__MNullableType.id;
206 if(cltype >= var_t2->type->table_size) {
207 var35 = 0;
208 } else {
209 var35 = var_t2->type->type_table[cltype] == idtype;
210 }
211 if (var35){
212 {
213 var36 = model__MType__as_nullable(var_t);
214 }
215 var_t = var36;
216 } else {
217 }
218 } else {
219 }
220 {
221 { /* Inline typing#AExpr#mtype= (self,var_t) on <self:AOrElseExpr> */
222 self->attrs[COLOR_typing__AExpr___mtype].val = var_t; /* _mtype on <self:AOrElseExpr> */
223 RET_LABEL37:(void)0;
224 }
225 }
226 RET_LABEL:;
227 }
228 /* method typing#AOrElseExpr#accept_typing for (self: Object, TypeVisitor) */
229 void VIRTUAL_typing__AOrElseExpr__accept_typing(val* self, val* p0) {
230 typing__AOrElseExpr__accept_typing(self, p0); /* Direct call typing#AOrElseExpr#accept_typing on <self:Object(AOrElseExpr)>*/
231 RET_LABEL:;
232 }
233 /* method typing#ATrueExpr#accept_typing for (self: ATrueExpr, TypeVisitor) */
234 void typing__ATrueExpr__accept_typing(val* self, val* p0) {
235 val* var_v /* var v: TypeVisitor */;
236 val* var /* : nullable MType */;
237 var_v = p0;
238 {
239 var = typing__TypeVisitor__type_bool(var_v, self);
240 }
241 {
242 { /* Inline typing#AExpr#mtype= (self,var) on <self:ATrueExpr> */
243 self->attrs[COLOR_typing__AExpr___mtype].val = var; /* _mtype on <self:ATrueExpr> */
244 RET_LABEL1:(void)0;
245 }
246 }
247 RET_LABEL:;
248 }
249 /* method typing#ATrueExpr#accept_typing for (self: Object, TypeVisitor) */
250 void VIRTUAL_typing__ATrueExpr__accept_typing(val* self, val* p0) {
251 typing__ATrueExpr__accept_typing(self, p0); /* Direct call typing#ATrueExpr#accept_typing on <self:Object(ATrueExpr)>*/
252 RET_LABEL:;
253 }
254 /* method typing#AFalseExpr#accept_typing for (self: AFalseExpr, TypeVisitor) */
255 void typing__AFalseExpr__accept_typing(val* self, val* p0) {
256 val* var_v /* var v: TypeVisitor */;
257 val* var /* : nullable MType */;
258 var_v = p0;
259 {
260 var = typing__TypeVisitor__type_bool(var_v, self);
261 }
262 {
263 { /* Inline typing#AExpr#mtype= (self,var) on <self:AFalseExpr> */
264 self->attrs[COLOR_typing__AExpr___mtype].val = var; /* _mtype on <self:AFalseExpr> */
265 RET_LABEL1:(void)0;
266 }
267 }
268 RET_LABEL:;
269 }
270 /* method typing#AFalseExpr#accept_typing for (self: Object, TypeVisitor) */
271 void VIRTUAL_typing__AFalseExpr__accept_typing(val* self, val* p0) {
272 typing__AFalseExpr__accept_typing(self, p0); /* Direct call typing#AFalseExpr#accept_typing on <self:Object(AFalseExpr)>*/
273 RET_LABEL:;
274 }
275 /* method typing#AIntExpr#accept_typing for (self: AIntExpr, TypeVisitor) */
276 void typing__AIntExpr__accept_typing(val* self, val* p0) {
277 val* var_v /* var v: TypeVisitor */;
278 static val* varonce;
279 val* var /* : String */;
280 char* var1 /* : NativeString */;
281 long var2 /* : Int */;
282 val* var3 /* : FlatString */;
283 val* var4 /* : nullable MClass */;
284 val* var_mclass /* var mclass: nullable MClass */;
285 val* var5 /* : null */;
286 short int var6 /* : Bool */;
287 short int var7 /* : Bool */;
288 val* var_other /* var other: nullable Object */;
289 short int var9 /* : Bool */;
290 short int var11 /* : Bool */;
291 val* var12 /* : MClassType */;
292 val* var14 /* : MClassType */;
293 var_v = p0;
294 if (varonce) {
295 var = varonce;
296 } else {
297 var1 = "Int";
298 var2 = 3;
299 var3 = string__NativeString__to_s_with_length(var1, var2);
300 var = var3;
301 varonce = var;
302 }
303 {
304 var4 = typing__TypeVisitor__get_mclass(var_v, self, var);
305 }
306 var_mclass = var4;
307 var5 = NULL;
308 if (var_mclass == NULL) {
309 var6 = 1; /* is null */
310 } else {
311 var6 = 0; /* arg is null but recv is not */
312 }
313 if (0) {
314 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
315 var_other = var5;
316 {
317 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
318 var11 = var_mclass == var_other;
319 var9 = var11;
320 goto RET_LABEL10;
321 RET_LABEL10:(void)0;
322 }
323 }
324 var7 = var9;
325 goto RET_LABEL8;
326 RET_LABEL8:(void)0;
327 }
328 var6 = var7;
329 }
330 if (var6){
331 goto RET_LABEL;
332 } else {
333 }
334 {
335 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
336 var14 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
337 if (unlikely(var14 == NULL)) {
338 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
339 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
340 show_backtrace(1);
341 }
342 var12 = var14;
343 RET_LABEL13:(void)0;
344 }
345 }
346 {
347 { /* Inline typing#AExpr#mtype= (self,var12) on <self:AIntExpr> */
348 self->attrs[COLOR_typing__AExpr___mtype].val = var12; /* _mtype on <self:AIntExpr> */
349 RET_LABEL15:(void)0;
350 }
351 }
352 RET_LABEL:;
353 }
354 /* method typing#AIntExpr#accept_typing for (self: Object, TypeVisitor) */
355 void VIRTUAL_typing__AIntExpr__accept_typing(val* self, val* p0) {
356 typing__AIntExpr__accept_typing(self, p0); /* Direct call typing#AIntExpr#accept_typing on <self:Object(AIntExpr)>*/
357 RET_LABEL:;
358 }
359 /* method typing#AFloatExpr#accept_typing for (self: AFloatExpr, TypeVisitor) */
360 void typing__AFloatExpr__accept_typing(val* self, val* p0) {
361 val* var_v /* var v: TypeVisitor */;
362 static val* varonce;
363 val* var /* : String */;
364 char* var1 /* : NativeString */;
365 long var2 /* : Int */;
366 val* var3 /* : FlatString */;
367 val* var4 /* : nullable MClass */;
368 val* var_mclass /* var mclass: nullable MClass */;
369 val* var5 /* : null */;
370 short int var6 /* : Bool */;
371 short int var7 /* : Bool */;
372 val* var_other /* var other: nullable Object */;
373 short int var9 /* : Bool */;
374 short int var11 /* : Bool */;
375 val* var12 /* : MClassType */;
376 val* var14 /* : MClassType */;
377 var_v = p0;
378 if (varonce) {
379 var = varonce;
380 } else {
381 var1 = "Float";
382 var2 = 5;
383 var3 = string__NativeString__to_s_with_length(var1, var2);
384 var = var3;
385 varonce = var;
386 }
387 {
388 var4 = typing__TypeVisitor__get_mclass(var_v, self, var);
389 }
390 var_mclass = var4;
391 var5 = NULL;
392 if (var_mclass == NULL) {
393 var6 = 1; /* is null */
394 } else {
395 var6 = 0; /* arg is null but recv is not */
396 }
397 if (0) {
398 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
399 var_other = var5;
400 {
401 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
402 var11 = var_mclass == var_other;
403 var9 = var11;
404 goto RET_LABEL10;
405 RET_LABEL10:(void)0;
406 }
407 }
408 var7 = var9;
409 goto RET_LABEL8;
410 RET_LABEL8:(void)0;
411 }
412 var6 = var7;
413 }
414 if (var6){
415 goto RET_LABEL;
416 } else {
417 }
418 {
419 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
420 var14 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
421 if (unlikely(var14 == NULL)) {
422 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
423 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
424 show_backtrace(1);
425 }
426 var12 = var14;
427 RET_LABEL13:(void)0;
428 }
429 }
430 {
431 { /* Inline typing#AExpr#mtype= (self,var12) on <self:AFloatExpr> */
432 self->attrs[COLOR_typing__AExpr___mtype].val = var12; /* _mtype on <self:AFloatExpr> */
433 RET_LABEL15:(void)0;
434 }
435 }
436 RET_LABEL:;
437 }
438 /* method typing#AFloatExpr#accept_typing for (self: Object, TypeVisitor) */
439 void VIRTUAL_typing__AFloatExpr__accept_typing(val* self, val* p0) {
440 typing__AFloatExpr__accept_typing(self, p0); /* Direct call typing#AFloatExpr#accept_typing on <self:Object(AFloatExpr)>*/
441 RET_LABEL:;
442 }
443 /* method typing#ACharExpr#accept_typing for (self: ACharExpr, TypeVisitor) */
444 void typing__ACharExpr__accept_typing(val* self, val* p0) {
445 val* var_v /* var v: TypeVisitor */;
446 static val* varonce;
447 val* var /* : String */;
448 char* var1 /* : NativeString */;
449 long var2 /* : Int */;
450 val* var3 /* : FlatString */;
451 val* var4 /* : nullable MClass */;
452 val* var_mclass /* var mclass: nullable MClass */;
453 val* var5 /* : null */;
454 short int var6 /* : Bool */;
455 short int var7 /* : Bool */;
456 val* var_other /* var other: nullable Object */;
457 short int var9 /* : Bool */;
458 short int var11 /* : Bool */;
459 val* var12 /* : MClassType */;
460 val* var14 /* : MClassType */;
461 var_v = p0;
462 if (varonce) {
463 var = varonce;
464 } else {
465 var1 = "Char";
466 var2 = 4;
467 var3 = string__NativeString__to_s_with_length(var1, var2);
468 var = var3;
469 varonce = var;
470 }
471 {
472 var4 = typing__TypeVisitor__get_mclass(var_v, self, var);
473 }
474 var_mclass = var4;
475 var5 = NULL;
476 if (var_mclass == NULL) {
477 var6 = 1; /* is null */
478 } else {
479 var6 = 0; /* arg is null but recv is not */
480 }
481 if (0) {
482 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
483 var_other = var5;
484 {
485 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
486 var11 = var_mclass == var_other;
487 var9 = var11;
488 goto RET_LABEL10;
489 RET_LABEL10:(void)0;
490 }
491 }
492 var7 = var9;
493 goto RET_LABEL8;
494 RET_LABEL8:(void)0;
495 }
496 var6 = var7;
497 }
498 if (var6){
499 goto RET_LABEL;
500 } else {
501 }
502 {
503 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
504 var14 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
505 if (unlikely(var14 == NULL)) {
506 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
507 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
508 show_backtrace(1);
509 }
510 var12 = var14;
511 RET_LABEL13:(void)0;
512 }
513 }
514 {
515 { /* Inline typing#AExpr#mtype= (self,var12) on <self:ACharExpr> */
516 self->attrs[COLOR_typing__AExpr___mtype].val = var12; /* _mtype on <self:ACharExpr> */
517 RET_LABEL15:(void)0;
518 }
519 }
520 RET_LABEL:;
521 }
522 /* method typing#ACharExpr#accept_typing for (self: Object, TypeVisitor) */
523 void VIRTUAL_typing__ACharExpr__accept_typing(val* self, val* p0) {
524 typing__ACharExpr__accept_typing(self, p0); /* Direct call typing#ACharExpr#accept_typing on <self:Object(ACharExpr)>*/
525 RET_LABEL:;
526 }
527 /* method typing#AStringFormExpr#accept_typing for (self: AStringFormExpr, TypeVisitor) */
528 void typing__AStringFormExpr__accept_typing(val* self, val* p0) {
529 val* var_v /* var v: TypeVisitor */;
530 static val* varonce;
531 val* var /* : String */;
532 char* var1 /* : NativeString */;
533 long var2 /* : Int */;
534 val* var3 /* : FlatString */;
535 val* var4 /* : nullable MClass */;
536 val* var_mclass /* var mclass: nullable MClass */;
537 val* var5 /* : null */;
538 short int var6 /* : Bool */;
539 short int var7 /* : Bool */;
540 val* var_other /* var other: nullable Object */;
541 short int var9 /* : Bool */;
542 short int var11 /* : Bool */;
543 val* var12 /* : MClassType */;
544 val* var14 /* : MClassType */;
545 var_v = p0;
546 if (varonce) {
547 var = varonce;
548 } else {
549 var1 = "String";
550 var2 = 6;
551 var3 = string__NativeString__to_s_with_length(var1, var2);
552 var = var3;
553 varonce = var;
554 }
555 {
556 var4 = typing__TypeVisitor__get_mclass(var_v, self, var);
557 }
558 var_mclass = var4;
559 var5 = NULL;
560 if (var_mclass == NULL) {
561 var6 = 1; /* is null */
562 } else {
563 var6 = 0; /* arg is null but recv is not */
564 }
565 if (0) {
566 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
567 var_other = var5;
568 {
569 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
570 var11 = var_mclass == var_other;
571 var9 = var11;
572 goto RET_LABEL10;
573 RET_LABEL10:(void)0;
574 }
575 }
576 var7 = var9;
577 goto RET_LABEL8;
578 RET_LABEL8:(void)0;
579 }
580 var6 = var7;
581 }
582 if (var6){
583 goto RET_LABEL;
584 } else {
585 }
586 {
587 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
588 var14 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
589 if (unlikely(var14 == NULL)) {
590 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
591 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
592 show_backtrace(1);
593 }
594 var12 = var14;
595 RET_LABEL13:(void)0;
596 }
597 }
598 {
599 { /* Inline typing#AExpr#mtype= (self,var12) on <self:AStringFormExpr> */
600 self->attrs[COLOR_typing__AExpr___mtype].val = var12; /* _mtype on <self:AStringFormExpr> */
601 RET_LABEL15:(void)0;
602 }
603 }
604 RET_LABEL:;
605 }
606 /* method typing#AStringFormExpr#accept_typing for (self: Object, TypeVisitor) */
607 void VIRTUAL_typing__AStringFormExpr__accept_typing(val* self, val* p0) {
608 typing__AStringFormExpr__accept_typing(self, p0); /* Direct call typing#AStringFormExpr#accept_typing on <self:Object(AStringFormExpr)>*/
609 RET_LABEL:;
610 }
611 /* method typing#ASuperstringExpr#accept_typing for (self: ASuperstringExpr, TypeVisitor) */
612 void typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
613 val* var_v /* var v: TypeVisitor */;
614 static val* varonce;
615 val* var /* : String */;
616 char* var1 /* : NativeString */;
617 long var2 /* : Int */;
618 val* var3 /* : FlatString */;
619 val* var4 /* : nullable MClass */;
620 val* var_mclass /* var mclass: nullable MClass */;
621 val* var5 /* : null */;
622 short int var6 /* : Bool */;
623 short int var7 /* : Bool */;
624 val* var_other /* var other: nullable Object */;
625 short int var9 /* : Bool */;
626 short int var11 /* : Bool */;
627 val* var12 /* : MClassType */;
628 val* var14 /* : MClassType */;
629 val* var16 /* : ANodes[AExpr] */;
630 val* var18 /* : ANodes[AExpr] */;
631 val* var19 /* : Iterator[ANode] */;
632 short int var20 /* : Bool */;
633 val* var21 /* : nullable Object */;
634 val* var_nexpr /* var nexpr: AExpr */;
635 val* var22 /* : MModule */;
636 val* var24 /* : MModule */;
637 val* var25 /* : MClassType */;
638 val* var26 /* : nullable MType */;
639 var_v = p0;
640 if (varonce) {
641 var = varonce;
642 } else {
643 var1 = "String";
644 var2 = 6;
645 var3 = string__NativeString__to_s_with_length(var1, var2);
646 var = var3;
647 varonce = var;
648 }
649 {
650 var4 = typing__TypeVisitor__get_mclass(var_v, self, var);
651 }
652 var_mclass = var4;
653 var5 = NULL;
654 if (var_mclass == NULL) {
655 var6 = 1; /* is null */
656 } else {
657 var6 = 0; /* arg is null but recv is not */
658 }
659 if (0) {
660 { /* Inline kernel#Object#== (var_mclass,var5) on <var_mclass:nullable MClass> */
661 var_other = var5;
662 {
663 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
664 var11 = var_mclass == var_other;
665 var9 = var11;
666 goto RET_LABEL10;
667 RET_LABEL10:(void)0;
668 }
669 }
670 var7 = var9;
671 goto RET_LABEL8;
672 RET_LABEL8:(void)0;
673 }
674 var6 = var7;
675 }
676 if (var6){
677 goto RET_LABEL;
678 } else {
679 }
680 {
681 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
682 var14 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
683 if (unlikely(var14 == NULL)) {
684 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
685 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
686 show_backtrace(1);
687 }
688 var12 = var14;
689 RET_LABEL13:(void)0;
690 }
691 }
692 {
693 { /* Inline typing#AExpr#mtype= (self,var12) on <self:ASuperstringExpr> */
694 self->attrs[COLOR_typing__AExpr___mtype].val = var12; /* _mtype on <self:ASuperstringExpr> */
695 RET_LABEL15:(void)0;
696 }
697 }
698 {
699 { /* Inline parser_nodes#ASuperstringExpr#n_exprs (self) on <self:ASuperstringExpr> */
700 var18 = self->attrs[COLOR_parser_nodes__ASuperstringExpr___n_exprs].val; /* _n_exprs on <self:ASuperstringExpr> */
701 if (unlikely(var18 == NULL)) {
702 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
703 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2180);
704 show_backtrace(1);
705 }
706 var16 = var18;
707 RET_LABEL17:(void)0;
708 }
709 }
710 {
711 var19 = parser_nodes__ANodes__iterator(var16);
712 }
713 for(;;) {
714 {
715 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[ANode]>*/;
716 }
717 if(!var20) break;
718 {
719 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[ANode]>*/;
720 }
721 var_nexpr = var21;
722 {
723 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
724 var24 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
725 if (unlikely(var24 == NULL)) {
726 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
727 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
728 show_backtrace(1);
729 }
730 var22 = var24;
731 RET_LABEL23:(void)0;
732 }
733 }
734 {
735 var25 = model__MModule__object_type(var22);
736 }
737 {
738 var26 = typing__TypeVisitor__visit_expr_subtype(var_v, var_nexpr, var25);
739 }
740 var26;
741 CONTINUE_label: (void)0;
742 {
743 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[ANode]>*/;
744 }
745 }
746 BREAK_label: (void)0;
747 RET_LABEL:;
748 }
749 /* method typing#ASuperstringExpr#accept_typing for (self: Object, TypeVisitor) */
750 void VIRTUAL_typing__ASuperstringExpr__accept_typing(val* self, val* p0) {
751 typing__ASuperstringExpr__accept_typing(self, p0); /* Direct call typing#ASuperstringExpr#accept_typing on <self:Object(ASuperstringExpr)>*/
752 RET_LABEL:;
753 }
754 /* method typing#AArrayExpr#with_capacity_callsite for (self: AArrayExpr): nullable CallSite */
755 val* typing__AArrayExpr__with_capacity_callsite(val* self) {
756 val* var /* : nullable CallSite */;
757 val* var1 /* : nullable CallSite */;
758 var1 = self->attrs[COLOR_typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on <self:AArrayExpr> */
759 var = var1;
760 RET_LABEL:;
761 return var;
762 }
763 /* method typing#AArrayExpr#with_capacity_callsite for (self: Object): nullable CallSite */
764 val* VIRTUAL_typing__AArrayExpr__with_capacity_callsite(val* self) {
765 val* var /* : nullable CallSite */;
766 val* var1 /* : nullable CallSite */;
767 val* var3 /* : nullable CallSite */;
768 { /* Inline typing#AArrayExpr#with_capacity_callsite (self) on <self:Object(AArrayExpr)> */
769 var3 = self->attrs[COLOR_typing__AArrayExpr___with_capacity_callsite].val; /* _with_capacity_callsite on <self:Object(AArrayExpr)> */
770 var1 = var3;
771 RET_LABEL2:(void)0;
772 }
773 var = var1;
774 RET_LABEL:;
775 return var;
776 }
777 /* method typing#AArrayExpr#with_capacity_callsite= for (self: AArrayExpr, nullable CallSite) */
778 void typing__AArrayExpr__with_capacity_callsite_61d(val* self, val* p0) {
779 self->attrs[COLOR_typing__AArrayExpr___with_capacity_callsite].val = p0; /* _with_capacity_callsite on <self:AArrayExpr> */
780 RET_LABEL:;
781 }
782 /* method typing#AArrayExpr#with_capacity_callsite= for (self: Object, nullable CallSite) */
783 void VIRTUAL_typing__AArrayExpr__with_capacity_callsite_61d(val* self, val* p0) {
784 { /* Inline typing#AArrayExpr#with_capacity_callsite= (self,p0) on <self:Object(AArrayExpr)> */
785 self->attrs[COLOR_typing__AArrayExpr___with_capacity_callsite].val = p0; /* _with_capacity_callsite on <self:Object(AArrayExpr)> */
786 RET_LABEL1:(void)0;
787 }
788 RET_LABEL:;
789 }
790 /* method typing#AArrayExpr#push_callsite for (self: AArrayExpr): nullable CallSite */
791 val* typing__AArrayExpr__push_callsite(val* self) {
792 val* var /* : nullable CallSite */;
793 val* var1 /* : nullable CallSite */;
794 var1 = self->attrs[COLOR_typing__AArrayExpr___push_callsite].val; /* _push_callsite on <self:AArrayExpr> */
795 var = var1;
796 RET_LABEL:;
797 return var;
798 }
799 /* method typing#AArrayExpr#push_callsite for (self: Object): nullable CallSite */
800 val* VIRTUAL_typing__AArrayExpr__push_callsite(val* self) {
801 val* var /* : nullable CallSite */;
802 val* var1 /* : nullable CallSite */;
803 val* var3 /* : nullable CallSite */;
804 { /* Inline typing#AArrayExpr#push_callsite (self) on <self:Object(AArrayExpr)> */
805 var3 = self->attrs[COLOR_typing__AArrayExpr___push_callsite].val; /* _push_callsite on <self:Object(AArrayExpr)> */
806 var1 = var3;
807 RET_LABEL2:(void)0;
808 }
809 var = var1;
810 RET_LABEL:;
811 return var;
812 }
813 /* method typing#AArrayExpr#push_callsite= for (self: AArrayExpr, nullable CallSite) */
814 void typing__AArrayExpr__push_callsite_61d(val* self, val* p0) {
815 self->attrs[COLOR_typing__AArrayExpr___push_callsite].val = p0; /* _push_callsite on <self:AArrayExpr> */
816 RET_LABEL:;
817 }
818 /* method typing#AArrayExpr#push_callsite= for (self: Object, nullable CallSite) */
819 void VIRTUAL_typing__AArrayExpr__push_callsite_61d(val* self, val* p0) {
820 { /* Inline typing#AArrayExpr#push_callsite= (self,p0) on <self:Object(AArrayExpr)> */
821 self->attrs[COLOR_typing__AArrayExpr___push_callsite].val = p0; /* _push_callsite on <self:Object(AArrayExpr)> */
822 RET_LABEL1:(void)0;
823 }
824 RET_LABEL:;
825 }
826 /* method typing#AArrayExpr#accept_typing for (self: AArrayExpr, TypeVisitor) */
827 void typing__AArrayExpr__accept_typing(val* self, val* p0) {
828 val* var_v /* var v: TypeVisitor */;
829 val* var /* : Array[nullable MType] */;
830 val* var_mtypes /* var mtypes: Array[nullable MType] */;
831 val* var1 /* : AExprs */;
832 val* var2 /* : ANodes[AExpr] */;
833 val* var4 /* : ANodes[AExpr] */;
834 val* var5 /* : Iterator[ANode] */;
835 short int var6 /* : Bool */;
836 val* var7 /* : nullable Object */;
837 val* var_e /* var e: AExpr */;
838 val* var8 /* : nullable MType */;
839 val* var_t /* var t: nullable MType */;
840 val* var9 /* : null */;
841 short int var10 /* : Bool */;
842 short int var11 /* : Bool */;
843 val* var_other /* var other: nullable Object */;
844 short int var13 /* : Bool */;
845 short int var15 /* : Bool */;
846 val* var16 /* : nullable MType */;
847 val* var_mtype /* var mtype: nullable MType */;
848 val* var17 /* : null */;
849 short int var18 /* : Bool */;
850 short int var19 /* : Bool */;
851 short int var21 /* : Bool */;
852 short int var23 /* : Bool */;
853 static val* varonce;
854 val* var24 /* : String */;
855 char* var25 /* : NativeString */;
856 long var26 /* : Int */;
857 val* var27 /* : FlatString */;
858 static val* varonce28;
859 val* var29 /* : String */;
860 char* var30 /* : NativeString */;
861 long var31 /* : Int */;
862 val* var32 /* : FlatString */;
863 val* var33 /* : String */;
864 val* var34 /* : Array[Object] */;
865 long var35 /* : Int */;
866 val* var36 /* : NativeArray[Object] */;
867 val* var37 /* : String */;
868 static val* varonce38;
869 val* var39 /* : String */;
870 char* var40 /* : NativeString */;
871 long var41 /* : Int */;
872 val* var42 /* : FlatString */;
873 val* var43 /* : nullable MClass */;
874 val* var_mclass /* var mclass: nullable MClass */;
875 val* var44 /* : null */;
876 short int var45 /* : Bool */;
877 short int var46 /* : Bool */;
878 short int var48 /* : Bool */;
879 short int var50 /* : Bool */;
880 val* var51 /* : Array[MType] */;
881 long var52 /* : Int */;
882 val* var_ /* var : Array[MType] */;
883 val* var53 /* : MClassType */;
884 val* var_array_mtype /* var array_mtype: MClassType */;
885 static val* varonce54;
886 val* var55 /* : String */;
887 char* var56 /* : NativeString */;
888 long var57 /* : Int */;
889 val* var58 /* : FlatString */;
890 short int var59 /* : Bool */;
891 val* var60 /* : nullable CallSite */;
892 static val* varonce62;
893 val* var63 /* : String */;
894 char* var64 /* : NativeString */;
895 long var65 /* : Int */;
896 val* var66 /* : FlatString */;
897 short int var67 /* : Bool */;
898 val* var68 /* : nullable CallSite */;
899 var_v = p0;
900 var = NEW_array__Array(&type_array__Arraynullable_model__MType);
901 {
902 array__Array__init(var); /* Direct call array#Array#init on <var:Array[nullable MType]>*/
903 }
904 var_mtypes = var;
905 {
906 var1 = parser_nodes__AArrayExpr__n_exprs(self);
907 }
908 {
909 { /* Inline parser_nodes#AExprs#n_exprs (var1) on <var1:AExprs> */
910 var4 = var1->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var1:AExprs> */
911 if (unlikely(var4 == NULL)) {
912 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
913 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
914 show_backtrace(1);
915 }
916 var2 = var4;
917 RET_LABEL3:(void)0;
918 }
919 }
920 {
921 var5 = parser_nodes__ANodes__iterator(var2);
922 }
923 for(;;) {
924 {
925 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[ANode]>*/;
926 }
927 if(!var6) break;
928 {
929 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[ANode]>*/;
930 }
931 var_e = var7;
932 {
933 var8 = typing__TypeVisitor__visit_expr(var_v, var_e);
934 }
935 var_t = var8;
936 var9 = NULL;
937 if (var_t == NULL) {
938 var10 = 1; /* is null */
939 } else {
940 var10 = 0; /* arg is null but recv is not */
941 }
942 if (0) {
943 { /* Inline kernel#Object#== (var_t,var9) on <var_t:nullable MType> */
944 var_other = var9;
945 {
946 { /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:nullable MType(MType)> */
947 var15 = var_t == var_other;
948 var13 = var15;
949 goto RET_LABEL14;
950 RET_LABEL14:(void)0;
951 }
952 }
953 var11 = var13;
954 goto RET_LABEL12;
955 RET_LABEL12:(void)0;
956 }
957 var10 = var11;
958 }
959 if (var10){
960 goto RET_LABEL;
961 } else {
962 }
963 {
964 array__Array__add(var_mtypes, var_t); /* Direct call array#Array#add on <var_mtypes:Array[nullable MType]>*/
965 }
966 CONTINUE_label: (void)0;
967 {
968 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[ANode]>*/;
969 }
970 }
971 BREAK_label: (void)0;
972 {
973 var16 = typing__TypeVisitor__merge_types(var_v, self, var_mtypes);
974 }
975 var_mtype = var16;
976 var17 = NULL;
977 if (var_mtype == NULL) {
978 var18 = 1; /* is null */
979 } else {
980 var18 = 0; /* arg is null but recv is not */
981 }
982 if (0) {
983 { /* Inline kernel#Object#== (var_mtype,var17) on <var_mtype:nullable MType> */
984 var_other = var17;
985 {
986 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
987 var23 = var_mtype == var_other;
988 var21 = var23;
989 goto RET_LABEL22;
990 RET_LABEL22:(void)0;
991 }
992 }
993 var19 = var21;
994 goto RET_LABEL20;
995 RET_LABEL20:(void)0;
996 }
997 var18 = var19;
998 }
999 if (var18){
1000 if (varonce) {
1001 var24 = varonce;
1002 } else {
1003 var25 = "Type Error: ambiguous array type ";
1004 var26 = 33;
1005 var27 = string__NativeString__to_s_with_length(var25, var26);
1006 var24 = var27;
1007 varonce = var24;
1008 }
1009 if (varonce28) {
1010 var29 = varonce28;
1011 } else {
1012 var30 = " ";
1013 var31 = 1;
1014 var32 = string__NativeString__to_s_with_length(var30, var31);
1015 var29 = var32;
1016 varonce28 = var29;
1017 }
1018 {
1019 var33 = string__Collection__join(var_mtypes, var29);
1020 }
1021 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
1022 { /* var34 = array_instance Array[Object] */
1023 var35 = 2;
1024 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
1025 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var24;
1026 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var33;
1027 {
1028 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
1029 }
1030 }
1031 {
1032 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
1033 }
1034 {
1035 typing__TypeVisitor__error(var_v, self, var37); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1036 }
1037 goto RET_LABEL;
1038 } else {
1039 }
1040 if (varonce38) {
1041 var39 = varonce38;
1042 } else {
1043 var40 = "Array";
1044 var41 = 5;
1045 var42 = string__NativeString__to_s_with_length(var40, var41);
1046 var39 = var42;
1047 varonce38 = var39;
1048 }
1049 {
1050 var43 = typing__TypeVisitor__get_mclass(var_v, self, var39);
1051 }
1052 var_mclass = var43;
1053 var44 = NULL;
1054 if (var_mclass == NULL) {
1055 var45 = 1; /* is null */
1056 } else {
1057 var45 = 0; /* arg is null but recv is not */
1058 }
1059 if (0) {
1060 { /* Inline kernel#Object#== (var_mclass,var44) on <var_mclass:nullable MClass> */
1061 var_other = var44;
1062 {
1063 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
1064 var50 = var_mclass == var_other;
1065 var48 = var50;
1066 goto RET_LABEL49;
1067 RET_LABEL49:(void)0;
1068 }
1069 }
1070 var46 = var48;
1071 goto RET_LABEL47;
1072 RET_LABEL47:(void)0;
1073 }
1074 var45 = var46;
1075 }
1076 if (var45){
1077 goto RET_LABEL;
1078 } else {
1079 }
1080 var51 = NEW_array__Array(&type_array__Arraymodel__MType);
1081 var52 = 1;
1082 {
1083 array__Array__with_capacity(var51, var52); /* Direct call array#Array#with_capacity on <var51:Array[MType]>*/
1084 }
1085 var_ = var51;
1086 {
1087 array__AbstractArray__push(var_, var_mtype); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
1088 }
1089 {
1090 var53 = model__MClass__get_mtype(var_mclass, var_);
1091 }
1092 var_array_mtype = var53;
1093 if (varonce54) {
1094 var55 = varonce54;
1095 } else {
1096 var56 = "with_capacity";
1097 var57 = 13;
1098 var58 = string__NativeString__to_s_with_length(var56, var57);
1099 var55 = var58;
1100 varonce54 = var55;
1101 }
1102 var59 = 0;
1103 {
1104 var60 = typing__TypeVisitor__get_method(var_v, self, var_array_mtype, var55, var59);
1105 }
1106 {
1107 { /* Inline typing#AArrayExpr#with_capacity_callsite= (self,var60) on <self:AArrayExpr> */
1108 self->attrs[COLOR_typing__AArrayExpr___with_capacity_callsite].val = var60; /* _with_capacity_callsite on <self:AArrayExpr> */
1109 RET_LABEL61:(void)0;
1110 }
1111 }
1112 if (varonce62) {
1113 var63 = varonce62;
1114 } else {
1115 var64 = "push";
1116 var65 = 4;
1117 var66 = string__NativeString__to_s_with_length(var64, var65);
1118 var63 = var66;
1119 varonce62 = var63;
1120 }
1121 var67 = 0;
1122 {
1123 var68 = typing__TypeVisitor__get_method(var_v, self, var_array_mtype, var63, var67);
1124 }
1125 {
1126 { /* Inline typing#AArrayExpr#push_callsite= (self,var68) on <self:AArrayExpr> */
1127 self->attrs[COLOR_typing__AArrayExpr___push_callsite].val = var68; /* _push_callsite on <self:AArrayExpr> */
1128 RET_LABEL69:(void)0;
1129 }
1130 }
1131 {
1132 { /* Inline typing#AExpr#mtype= (self,var_array_mtype) on <self:AArrayExpr> */
1133 self->attrs[COLOR_typing__AExpr___mtype].val = var_array_mtype; /* _mtype on <self:AArrayExpr> */
1134 RET_LABEL70:(void)0;
1135 }
1136 }
1137 RET_LABEL:;
1138 }
1139 /* method typing#AArrayExpr#accept_typing for (self: Object, TypeVisitor) */
1140 void VIRTUAL_typing__AArrayExpr__accept_typing(val* self, val* p0) {
1141 typing__AArrayExpr__accept_typing(self, p0); /* Direct call typing#AArrayExpr#accept_typing on <self:Object(AArrayExpr)>*/
1142 RET_LABEL:;
1143 }
1144 /* method typing#ARangeExpr#init_callsite for (self: ARangeExpr): nullable CallSite */
1145 val* typing__ARangeExpr__init_callsite(val* self) {
1146 val* var /* : nullable CallSite */;
1147 val* var1 /* : nullable CallSite */;
1148 var1 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:ARangeExpr> */
1149 var = var1;
1150 RET_LABEL:;
1151 return var;
1152 }
1153 /* method typing#ARangeExpr#init_callsite for (self: Object): nullable CallSite */
1154 val* VIRTUAL_typing__ARangeExpr__init_callsite(val* self) {
1155 val* var /* : nullable CallSite */;
1156 val* var1 /* : nullable CallSite */;
1157 val* var3 /* : nullable CallSite */;
1158 { /* Inline typing#ARangeExpr#init_callsite (self) on <self:Object(ARangeExpr)> */
1159 var3 = self->attrs[COLOR_typing__ARangeExpr___init_callsite].val; /* _init_callsite on <self:Object(ARangeExpr)> */
1160 var1 = var3;
1161 RET_LABEL2:(void)0;
1162 }
1163 var = var1;
1164 RET_LABEL:;
1165 return var;
1166 }
1167 /* method typing#ARangeExpr#init_callsite= for (self: ARangeExpr, nullable CallSite) */
1168 void typing__ARangeExpr__init_callsite_61d(val* self, val* p0) {
1169 self->attrs[COLOR_typing__ARangeExpr___init_callsite].val = p0; /* _init_callsite on <self:ARangeExpr> */
1170 RET_LABEL:;
1171 }
1172 /* method typing#ARangeExpr#init_callsite= for (self: Object, nullable CallSite) */
1173 void VIRTUAL_typing__ARangeExpr__init_callsite_61d(val* self, val* p0) {
1174 { /* Inline typing#ARangeExpr#init_callsite= (self,p0) on <self:Object(ARangeExpr)> */
1175 self->attrs[COLOR_typing__ARangeExpr___init_callsite].val = p0; /* _init_callsite on <self:Object(ARangeExpr)> */
1176 RET_LABEL1:(void)0;
1177 }
1178 RET_LABEL:;
1179 }
1180 /* method typing#ARangeExpr#accept_typing for (self: ARangeExpr, TypeVisitor) */
1181 void typing__ARangeExpr__accept_typing(val* self, val* p0) {
1182 val* var_v /* var v: TypeVisitor */;
1183 static val* varonce;
1184 val* var /* : String */;
1185 char* var1 /* : NativeString */;
1186 long var2 /* : Int */;
1187 val* var3 /* : FlatString */;
1188 val* var4 /* : nullable MClass */;
1189 val* var_discrete_class /* var discrete_class: nullable MClass */;
1190 val* var5 /* : null */;
1191 short int var6 /* : Bool */;
1192 short int var7 /* : Bool */;
1193 val* var_other /* var other: nullable Object */;
1194 short int var9 /* : Bool */;
1195 short int var11 /* : Bool */;
1196 val* var12 /* : MClassDef */;
1197 val* var13 /* : MClassType */;
1198 val* var15 /* : MClassType */;
1199 val* var_discrete_type /* var discrete_type: MClassType */;
1200 val* var16 /* : AExpr */;
1201 val* var17 /* : nullable MType */;
1202 val* var_t1 /* var t1: nullable MType */;
1203 val* var18 /* : AExpr */;
1204 val* var19 /* : nullable MType */;
1205 val* var_t2 /* var t2: nullable MType */;
1206 short int var20 /* : Bool */;
1207 val* var21 /* : null */;
1208 short int var22 /* : Bool */;
1209 short int var23 /* : Bool */;
1210 short int var25 /* : Bool */;
1211 short int var27 /* : Bool */;
1212 short int var_ /* var : Bool */;
1213 val* var28 /* : null */;
1214 short int var29 /* : Bool */;
1215 short int var30 /* : Bool */;
1216 short int var32 /* : Bool */;
1217 short int var34 /* : Bool */;
1218 static val* varonce35;
1219 val* var36 /* : String */;
1220 char* var37 /* : NativeString */;
1221 long var38 /* : Int */;
1222 val* var39 /* : FlatString */;
1223 val* var40 /* : nullable MClass */;
1224 val* var_mclass /* var mclass: nullable MClass */;
1225 val* var41 /* : null */;
1226 short int var42 /* : Bool */;
1227 short int var43 /* : Bool */;
1228 short int var45 /* : Bool */;
1229 short int var47 /* : Bool */;
1230 short int var48 /* : Bool */;
1231 val* var49 /* : Array[MType] */;
1232 long var50 /* : Int */;
1233 val* var_51 /* var : Array[MType] */;
1234 val* var52 /* : MClassType */;
1235 val* var_mtype /* var mtype: nullable Object */;
1236 short int var53 /* : Bool */;
1237 val* var54 /* : Array[MType] */;
1238 long var55 /* : Int */;
1239 val* var_56 /* var : Array[MType] */;
1240 val* var57 /* : MClassType */;
1241 static val* varonce58;
1242 val* var59 /* : String */;
1243 char* var60 /* : NativeString */;
1244 long var61 /* : Int */;
1245 val* var62 /* : FlatString */;
1246 static val* varonce63;
1247 val* var64 /* : String */;
1248 char* var65 /* : NativeString */;
1249 long var66 /* : Int */;
1250 val* var67 /* : FlatString */;
1251 val* var68 /* : Array[Object] */;
1252 long var69 /* : Int */;
1253 val* var70 /* : NativeArray[Object] */;
1254 val* var71 /* : String */;
1255 short int var73 /* : Bool */;
1256 int cltype;
1257 int idtype;
1258 static val* varonce74;
1259 val* var75 /* : String */;
1260 char* var76 /* : NativeString */;
1261 long var77 /* : Int */;
1262 val* var78 /* : FlatString */;
1263 short int var79 /* : Bool */;
1264 val* var80 /* : nullable CallSite */;
1265 val* var_callsite /* var callsite: nullable Object */;
1266 short int var81 /* : Bool */;
1267 int cltype82;
1268 int idtype83;
1269 static val* varonce84;
1270 val* var85 /* : String */;
1271 char* var86 /* : NativeString */;
1272 long var87 /* : Int */;
1273 val* var88 /* : FlatString */;
1274 short int var89 /* : Bool */;
1275 val* var90 /* : nullable CallSite */;
1276 var_v = p0;
1277 if (varonce) {
1278 var = varonce;
1279 } else {
1280 var1 = "Discrete";
1281 var2 = 8;
1282 var3 = string__NativeString__to_s_with_length(var1, var2);
1283 var = var3;
1284 varonce = var;
1285 }
1286 {
1287 var4 = typing__TypeVisitor__get_mclass(var_v, self, var);
1288 }
1289 var_discrete_class = var4;
1290 var5 = NULL;
1291 if (var_discrete_class == NULL) {
1292 var6 = 1; /* is null */
1293 } else {
1294 var6 = 0; /* arg is null but recv is not */
1295 }
1296 if (0) {
1297 { /* Inline kernel#Object#== (var_discrete_class,var5) on <var_discrete_class:nullable MClass> */
1298 var_other = var5;
1299 {
1300 { /* Inline kernel#Object#is_same_instance (var_discrete_class,var_other) on <var_discrete_class:nullable MClass(MClass)> */
1301 var11 = var_discrete_class == var_other;
1302 var9 = var11;
1303 goto RET_LABEL10;
1304 RET_LABEL10:(void)0;
1305 }
1306 }
1307 var7 = var9;
1308 goto RET_LABEL8;
1309 RET_LABEL8:(void)0;
1310 }
1311 var6 = var7;
1312 }
1313 if (var6){
1314 goto RET_LABEL;
1315 } else {
1316 }
1317 {
1318 var12 = model__MClass__intro(var_discrete_class);
1319 }
1320 {
1321 { /* Inline model#MClassDef#bound_mtype (var12) on <var12:MClassDef> */
1322 var15 = var12->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var12:MClassDef> */
1323 if (unlikely(var15 == NULL)) {
1324 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1325 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
1326 show_backtrace(1);
1327 }
1328 var13 = var15;
1329 RET_LABEL14:(void)0;
1330 }
1331 }
1332 var_discrete_type = var13;
1333 {
1334 var16 = parser_nodes__ARangeExpr__n_expr(self);
1335 }
1336 {
1337 var17 = typing__TypeVisitor__visit_expr_subtype(var_v, var16, var_discrete_type);
1338 }
1339 var_t1 = var17;
1340 {
1341 var18 = parser_nodes__ARangeExpr__n_expr2(self);
1342 }
1343 {
1344 var19 = typing__TypeVisitor__visit_expr_subtype(var_v, var18, var_discrete_type);
1345 }
1346 var_t2 = var19;
1347 var21 = NULL;
1348 if (var_t1 == NULL) {
1349 var22 = 1; /* is null */
1350 } else {
1351 var22 = 0; /* arg is null but recv is not */
1352 }
1353 if (0) {
1354 { /* Inline kernel#Object#== (var_t1,var21) on <var_t1:nullable MType> */
1355 var_other = var21;
1356 {
1357 { /* Inline kernel#Object#is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
1358 var27 = var_t1 == var_other;
1359 var25 = var27;
1360 goto RET_LABEL26;
1361 RET_LABEL26:(void)0;
1362 }
1363 }
1364 var23 = var25;
1365 goto RET_LABEL24;
1366 RET_LABEL24:(void)0;
1367 }
1368 var22 = var23;
1369 }
1370 var_ = var22;
1371 if (var22){
1372 var20 = var_;
1373 } else {
1374 var28 = NULL;
1375 if (var_t2 == NULL) {
1376 var29 = 1; /* is null */
1377 } else {
1378 var29 = 0; /* arg is null but recv is not */
1379 }
1380 if (0) {
1381 { /* Inline kernel#Object#== (var_t2,var28) on <var_t2:nullable MType> */
1382 var_other = var28;
1383 {
1384 { /* Inline kernel#Object#is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
1385 var34 = var_t2 == var_other;
1386 var32 = var34;
1387 goto RET_LABEL33;
1388 RET_LABEL33:(void)0;
1389 }
1390 }
1391 var30 = var32;
1392 goto RET_LABEL31;
1393 RET_LABEL31:(void)0;
1394 }
1395 var29 = var30;
1396 }
1397 var20 = var29;
1398 }
1399 if (var20){
1400 goto RET_LABEL;
1401 } else {
1402 }
1403 if (varonce35) {
1404 var36 = varonce35;
1405 } else {
1406 var37 = "Range";
1407 var38 = 5;
1408 var39 = string__NativeString__to_s_with_length(var37, var38);
1409 var36 = var39;
1410 varonce35 = var36;
1411 }
1412 {
1413 var40 = typing__TypeVisitor__get_mclass(var_v, self, var36);
1414 }
1415 var_mclass = var40;
1416 var41 = NULL;
1417 if (var_mclass == NULL) {
1418 var42 = 1; /* is null */
1419 } else {
1420 var42 = 0; /* arg is null but recv is not */
1421 }
1422 if (0) {
1423 { /* Inline kernel#Object#== (var_mclass,var41) on <var_mclass:nullable MClass> */
1424 var_other = var41;
1425 {
1426 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
1427 var47 = var_mclass == var_other;
1428 var45 = var47;
1429 goto RET_LABEL46;
1430 RET_LABEL46:(void)0;
1431 }
1432 }
1433 var43 = var45;
1434 goto RET_LABEL44;
1435 RET_LABEL44:(void)0;
1436 }
1437 var42 = var43;
1438 }
1439 if (var42){
1440 goto RET_LABEL;
1441 } else {
1442 }
1443 {
1444 var48 = typing__TypeVisitor__is_subtype(var_v, var_t1, var_t2);
1445 }
1446 if (var48){
1447 var49 = NEW_array__Array(&type_array__Arraymodel__MType);
1448 var50 = 1;
1449 {
1450 array__Array__with_capacity(var49, var50); /* Direct call array#Array#with_capacity on <var49:Array[MType]>*/
1451 }
1452 var_51 = var49;
1453 {
1454 array__AbstractArray__push(var_51, var_t2); /* Direct call array#AbstractArray#push on <var_51:Array[MType]>*/
1455 }
1456 {
1457 var52 = model__MClass__get_mtype(var_mclass, var_51);
1458 }
1459 var_mtype = var52;
1460 } else {
1461 {
1462 var53 = typing__TypeVisitor__is_subtype(var_v, var_t2, var_t1);
1463 }
1464 if (var53){
1465 var54 = NEW_array__Array(&type_array__Arraymodel__MType);
1466 var55 = 1;
1467 {
1468 array__Array__with_capacity(var54, var55); /* Direct call array#Array#with_capacity on <var54:Array[MType]>*/
1469 }
1470 var_56 = var54;
1471 {
1472 array__AbstractArray__push(var_56, var_t1); /* Direct call array#AbstractArray#push on <var_56:Array[MType]>*/
1473 }
1474 {
1475 var57 = model__MClass__get_mtype(var_mclass, var_56);
1476 }
1477 var_mtype = var57;
1478 } else {
1479 if (varonce58) {
1480 var59 = varonce58;
1481 } else {
1482 var60 = "Type Error: Cannot create range: ";
1483 var61 = 33;
1484 var62 = string__NativeString__to_s_with_length(var60, var61);
1485 var59 = var62;
1486 varonce58 = var59;
1487 }
1488 if (varonce63) {
1489 var64 = varonce63;
1490 } else {
1491 var65 = " vs ";
1492 var66 = 4;
1493 var67 = string__NativeString__to_s_with_length(var65, var66);
1494 var64 = var67;
1495 varonce63 = var64;
1496 }
1497 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
1498 { /* var68 = array_instance Array[Object] */
1499 var69 = 4;
1500 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
1501 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var59;
1502 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var_t1;
1503 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var64;
1504 ((struct instance_array__NativeArray*)var70)->values[3] = (val*) var_t2;
1505 {
1506 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
1507 }
1508 }
1509 {
1510 var71 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
1511 }
1512 {
1513 typing__TypeVisitor__error(var_v, self, var71); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1514 }
1515 goto RET_LABEL;
1516 }
1517 }
1518 {
1519 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:ARangeExpr> */
1520 self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:ARangeExpr> */
1521 RET_LABEL72:(void)0;
1522 }
1523 }
1524 /* <self:ARangeExpr> isa ACrangeExpr */
1525 cltype = type_parser_nodes__ACrangeExpr.color;
1526 idtype = type_parser_nodes__ACrangeExpr.id;
1527 if(cltype >= self->type->table_size) {
1528 var73 = 0;
1529 } else {
1530 var73 = self->type->type_table[cltype] == idtype;
1531 }
1532 if (var73){
1533 if (varonce74) {
1534 var75 = varonce74;
1535 } else {
1536 var76 = "init";
1537 var77 = 4;
1538 var78 = string__NativeString__to_s_with_length(var76, var77);
1539 var75 = var78;
1540 varonce74 = var75;
1541 }
1542 var79 = 0;
1543 {
1544 var80 = typing__TypeVisitor__get_method(var_v, self, var_mtype, var75, var79);
1545 }
1546 var_callsite = var80;
1547 } else {
1548 /* <self:ARangeExpr> isa AOrangeExpr */
1549 cltype82 = type_parser_nodes__AOrangeExpr.color;
1550 idtype83 = type_parser_nodes__AOrangeExpr.id;
1551 if(cltype82 >= self->type->table_size) {
1552 var81 = 0;
1553 } else {
1554 var81 = self->type->type_table[cltype82] == idtype83;
1555 }
1556 if (var81){
1557 if (varonce84) {
1558 var85 = varonce84;
1559 } else {
1560 var86 = "without_last";
1561 var87 = 12;
1562 var88 = string__NativeString__to_s_with_length(var86, var87);
1563 var85 = var88;
1564 varonce84 = var85;
1565 }
1566 var89 = 0;
1567 {
1568 var90 = typing__TypeVisitor__get_method(var_v, self, var_mtype, var85, var89);
1569 }
1570 var_callsite = var90;
1571 } else {
1572 PRINT_ERROR("Runtime error: %s", "Aborted");
1573 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1149);
1574 show_backtrace(1);
1575 }
1576 }
1577 {
1578 { /* Inline typing#ARangeExpr#init_callsite= (self,var_callsite) on <self:ARangeExpr> */
1579 self->attrs[COLOR_typing__ARangeExpr___init_callsite].val = var_callsite; /* _init_callsite on <self:ARangeExpr> */
1580 RET_LABEL91:(void)0;
1581 }
1582 }
1583 RET_LABEL:;
1584 }
1585 /* method typing#ARangeExpr#accept_typing for (self: Object, TypeVisitor) */
1586 void VIRTUAL_typing__ARangeExpr__accept_typing(val* self, val* p0) {
1587 typing__ARangeExpr__accept_typing(self, p0); /* Direct call typing#ARangeExpr#accept_typing on <self:Object(ARangeExpr)>*/
1588 RET_LABEL:;
1589 }
1590 /* method typing#ANullExpr#accept_typing for (self: ANullExpr, TypeVisitor) */
1591 void typing__ANullExpr__accept_typing(val* self, val* p0) {
1592 val* var_v /* var v: TypeVisitor */;
1593 val* var /* : MModule */;
1594 val* var2 /* : MModule */;
1595 val* var3 /* : Model */;
1596 val* var5 /* : Model */;
1597 val* var6 /* : MNullType */;
1598 val* var8 /* : MNullType */;
1599 var_v = p0;
1600 {
1601 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
1602 var2 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
1603 if (unlikely(var2 == NULL)) {
1604 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1605 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
1606 show_backtrace(1);
1607 }
1608 var = var2;
1609 RET_LABEL1:(void)0;
1610 }
1611 }
1612 {
1613 { /* Inline mmodule#MModule#model (var) on <var:MModule> */
1614 var5 = var->attrs[COLOR_mmodule__MModule___model].val; /* _model on <var:MModule> */
1615 if (unlikely(var5 == NULL)) {
1616 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
1617 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 74);
1618 show_backtrace(1);
1619 }
1620 var3 = var5;
1621 RET_LABEL4:(void)0;
1622 }
1623 }
1624 {
1625 { /* Inline model#Model#null_type (var3) on <var3:Model> */
1626 var8 = var3->attrs[COLOR_model__Model___null_type].val; /* _null_type on <var3:Model> */
1627 if (unlikely(var8 == NULL)) {
1628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type");
1629 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 104);
1630 show_backtrace(1);
1631 }
1632 var6 = var8;
1633 RET_LABEL7:(void)0;
1634 }
1635 }
1636 {
1637 { /* Inline typing#AExpr#mtype= (self,var6) on <self:ANullExpr> */
1638 self->attrs[COLOR_typing__AExpr___mtype].val = var6; /* _mtype on <self:ANullExpr> */
1639 RET_LABEL9:(void)0;
1640 }
1641 }
1642 RET_LABEL:;
1643 }
1644 /* method typing#ANullExpr#accept_typing for (self: Object, TypeVisitor) */
1645 void VIRTUAL_typing__ANullExpr__accept_typing(val* self, val* p0) {
1646 typing__ANullExpr__accept_typing(self, p0); /* Direct call typing#ANullExpr#accept_typing on <self:Object(ANullExpr)>*/
1647 RET_LABEL:;
1648 }
1649 /* method typing#AIsaExpr#cast_type for (self: AIsaExpr): nullable MType */
1650 val* typing__AIsaExpr__cast_type(val* self) {
1651 val* var /* : nullable MType */;
1652 val* var1 /* : nullable MType */;
1653 var1 = self->attrs[COLOR_typing__AIsaExpr___cast_type].val; /* _cast_type on <self:AIsaExpr> */
1654 var = var1;
1655 RET_LABEL:;
1656 return var;
1657 }
1658 /* method typing#AIsaExpr#cast_type for (self: Object): nullable MType */
1659 val* VIRTUAL_typing__AIsaExpr__cast_type(val* self) {
1660 val* var /* : nullable MType */;
1661 val* var1 /* : nullable MType */;
1662 val* var3 /* : nullable MType */;
1663 { /* Inline typing#AIsaExpr#cast_type (self) on <self:Object(AIsaExpr)> */
1664 var3 = self->attrs[COLOR_typing__AIsaExpr___cast_type].val; /* _cast_type on <self:Object(AIsaExpr)> */
1665 var1 = var3;
1666 RET_LABEL2:(void)0;
1667 }
1668 var = var1;
1669 RET_LABEL:;
1670 return var;
1671 }
1672 /* method typing#AIsaExpr#cast_type= for (self: AIsaExpr, nullable MType) */
1673 void typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
1674 self->attrs[COLOR_typing__AIsaExpr___cast_type].val = p0; /* _cast_type on <self:AIsaExpr> */
1675 RET_LABEL:;
1676 }
1677 /* method typing#AIsaExpr#cast_type= for (self: Object, nullable MType) */
1678 void VIRTUAL_typing__AIsaExpr__cast_type_61d(val* self, val* p0) {
1679 { /* Inline typing#AIsaExpr#cast_type= (self,p0) on <self:Object(AIsaExpr)> */
1680 self->attrs[COLOR_typing__AIsaExpr___cast_type].val = p0; /* _cast_type on <self:Object(AIsaExpr)> */
1681 RET_LABEL1:(void)0;
1682 }
1683 RET_LABEL:;
1684 }
1685 /* method typing#AIsaExpr#accept_typing for (self: AIsaExpr, TypeVisitor) */
1686 void typing__AIsaExpr__accept_typing(val* self, val* p0) {
1687 val* var_v /* var v: TypeVisitor */;
1688 val* var /* : AExpr */;
1689 val* var1 /* : AType */;
1690 val* var2 /* : nullable MType */;
1691 val* var_mtype /* var mtype: nullable MType */;
1692 val* var4 /* : AExpr */;
1693 val* var5 /* : nullable Variable */;
1694 val* var_variable /* var variable: nullable Variable */;
1695 val* var6 /* : null */;
1696 short int var7 /* : Bool */;
1697 short int var8 /* : Bool */;
1698 val* var_other /* var other: nullable Object */;
1699 short int var10 /* : Bool */;
1700 short int var11 /* : Bool */;
1701 short int var12 /* : Bool */;
1702 val* var13 /* : AExpr */;
1703 val* var14 /* : nullable MType */;
1704 val* var_orig /* var orig: nullable MType */;
1705 val* var15 /* : String */;
1706 val* var16 /* : null */;
1707 short int var17 /* : Bool */;
1708 short int var18 /* : Bool */;
1709 short int var20 /* : Bool */;
1710 short int var21 /* : Bool */;
1711 short int var22 /* : Bool */;
1712 val* var23 /* : String */;
1713 static val* varonce;
1714 val* var24 /* : String */;
1715 char* var25 /* : NativeString */;
1716 long var26 /* : Int */;
1717 val* var27 /* : FlatString */;
1718 val* var_from /* var from: String */;
1719 val* var28 /* : String */;
1720 val* var29 /* : null */;
1721 short int var30 /* : Bool */;
1722 short int var31 /* : Bool */;
1723 short int var33 /* : Bool */;
1724 short int var34 /* : Bool */;
1725 short int var35 /* : Bool */;
1726 val* var36 /* : String */;
1727 static val* varonce37;
1728 val* var38 /* : String */;
1729 char* var39 /* : NativeString */;
1730 long var40 /* : Int */;
1731 val* var41 /* : FlatString */;
1732 val* var_to /* var to: String */;
1733 val* var42 /* : nullable FlowContext */;
1734 val* var44 /* : nullable FlowContext */;
1735 val* var45 /* : FlowContext */;
1736 val* var47 /* : FlowContext */;
1737 val* var48 /* : nullable MType */;
1738 var_v = p0;
1739 {
1740 var = parser_nodes__AIsaExpr__n_expr(self);
1741 }
1742 {
1743 var1 = parser_nodes__AIsaExpr__n_type(self);
1744 }
1745 {
1746 var2 = typing__TypeVisitor__visit_expr_cast(var_v, self, var, var1);
1747 }
1748 var_mtype = var2;
1749 {
1750 { /* Inline typing#AIsaExpr#cast_type= (self,var_mtype) on <self:AIsaExpr> */
1751 self->attrs[COLOR_typing__AIsaExpr___cast_type].val = var_mtype; /* _cast_type on <self:AIsaExpr> */
1752 RET_LABEL3:(void)0;
1753 }
1754 }
1755 {
1756 var4 = parser_nodes__AIsaExpr__n_expr(self);
1757 }
1758 {
1759 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_typing__AExpr__its_variable]))(var4) /* its_variable on <var4:AExpr>*/;
1760 }
1761 var_variable = var5;
1762 var6 = NULL;
1763 if (var_variable == NULL) {
1764 var7 = 0; /* is null */
1765 } else {
1766 var7 = 1; /* arg is null and recv is not */
1767 }
1768 if (0) {
1769 { /* Inline kernel#Object#!= (var_variable,var6) on <var_variable:nullable Variable> */
1770 var_other = var6;
1771 {
1772 var11 = ((short int (*)(val*, val*))(var_variable->class->vft[COLOR_kernel__Object___61d_61d]))(var_variable, var_other) /* == on <var_variable:nullable Variable(Variable)>*/;
1773 var10 = var11;
1774 }
1775 var12 = !var10;
1776 var8 = var12;
1777 goto RET_LABEL9;
1778 RET_LABEL9:(void)0;
1779 }
1780 var7 = var8;
1781 }
1782 if (var7){
1783 {
1784 var13 = parser_nodes__AIsaExpr__n_expr(self);
1785 }
1786 {
1787 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_typing__AExpr__mtype]))(var13) /* mtype on <var13:AExpr>*/;
1788 }
1789 var_orig = var14;
1790 var16 = NULL;
1791 if (var_orig == NULL) {
1792 var17 = 0; /* is null */
1793 } else {
1794 var17 = 1; /* arg is null and recv is not */
1795 }
1796 if (0) {
1797 { /* Inline kernel#Object#!= (var_orig,var16) on <var_orig:nullable MType> */
1798 var_other = var16;
1799 {
1800 var21 = ((short int (*)(val*, val*))(var_orig->class->vft[COLOR_kernel__Object___61d_61d]))(var_orig, var_other) /* == on <var_orig:nullable MType(MType)>*/;
1801 var20 = var21;
1802 }
1803 var22 = !var20;
1804 var18 = var22;
1805 goto RET_LABEL19;
1806 RET_LABEL19:(void)0;
1807 }
1808 var17 = var18;
1809 }
1810 if (var17){
1811 {
1812 var23 = ((val* (*)(val*))(var_orig->class->vft[COLOR_string__Object__to_s]))(var_orig) /* to_s on <var_orig:nullable MType(MType)>*/;
1813 }
1814 var15 = var23;
1815 } else {
1816 if (varonce) {
1817 var24 = varonce;
1818 } else {
1819 var25 = "invalid";
1820 var26 = 7;
1821 var27 = string__NativeString__to_s_with_length(var25, var26);
1822 var24 = var27;
1823 varonce = var24;
1824 }
1825 var15 = var24;
1826 }
1827 var_from = var15;
1828 var29 = NULL;
1829 if (var_mtype == NULL) {
1830 var30 = 0; /* is null */
1831 } else {
1832 var30 = 1; /* arg is null and recv is not */
1833 }
1834 if (0) {
1835 { /* Inline kernel#Object#!= (var_mtype,var29) on <var_mtype:nullable MType> */
1836 var_other = var29;
1837 {
1838 var34 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other) /* == on <var_mtype:nullable MType(MType)>*/;
1839 var33 = var34;
1840 }
1841 var35 = !var33;
1842 var31 = var35;
1843 goto RET_LABEL32;
1844 RET_LABEL32:(void)0;
1845 }
1846 var30 = var31;
1847 }
1848 if (var30){
1849 {
1850 var36 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:nullable MType(MType)>*/;
1851 }
1852 var28 = var36;
1853 } else {
1854 if (varonce37) {
1855 var38 = varonce37;
1856 } else {
1857 var39 = "invalid";
1858 var40 = 7;
1859 var41 = string__NativeString__to_s_with_length(var39, var40);
1860 var38 = var41;
1861 varonce37 = var38;
1862 }
1863 var28 = var38;
1864 }
1865 var_to = var28;
1866 {
1867 { /* Inline flow#AExpr#after_flow_context (self) on <self:AIsaExpr> */
1868 var44 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AIsaExpr> */
1869 var42 = var44;
1870 RET_LABEL43:(void)0;
1871 }
1872 }
1873 if (var42 == NULL) {
1874 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1875 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1177);
1876 show_backtrace(1);
1877 } else {
1878 { /* Inline flow#FlowContext#when_true (var42) on <var42:nullable FlowContext> */
1879 if (unlikely(var42 == NULL)) {
1880 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1881 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
1882 show_backtrace(1);
1883 }
1884 var47 = var42->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var42:nullable FlowContext> */
1885 if (unlikely(var47 == NULL)) {
1886 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
1887 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
1888 show_backtrace(1);
1889 }
1890 var45 = var47;
1891 RET_LABEL46:(void)0;
1892 }
1893 }
1894 {
1895 typing__FlowContext__set_var(var45, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on <var45:FlowContext>*/
1896 }
1897 } else {
1898 }
1899 {
1900 var48 = typing__TypeVisitor__type_bool(var_v, self);
1901 }
1902 {
1903 { /* Inline typing#AExpr#mtype= (self,var48) on <self:AIsaExpr> */
1904 self->attrs[COLOR_typing__AExpr___mtype].val = var48; /* _mtype on <self:AIsaExpr> */
1905 RET_LABEL49:(void)0;
1906 }
1907 }
1908 RET_LABEL:;
1909 }
1910 /* method typing#AIsaExpr#accept_typing for (self: Object, TypeVisitor) */
1911 void VIRTUAL_typing__AIsaExpr__accept_typing(val* self, val* p0) {
1912 typing__AIsaExpr__accept_typing(self, p0); /* Direct call typing#AIsaExpr#accept_typing on <self:Object(AIsaExpr)>*/
1913 RET_LABEL:;
1914 }
1915 /* method typing#AAsCastExpr#accept_typing for (self: AAsCastExpr, TypeVisitor) */
1916 void typing__AAsCastExpr__accept_typing(val* self, val* p0) {
1917 val* var_v /* var v: TypeVisitor */;
1918 val* var /* : AExpr */;
1919 val* var1 /* : AType */;
1920 val* var2 /* : nullable MType */;
1921 var_v = p0;
1922 {
1923 var = parser_nodes__AAsCastExpr__n_expr(self);
1924 }
1925 {
1926 var1 = parser_nodes__AAsCastExpr__n_type(self);
1927 }
1928 {
1929 var2 = typing__TypeVisitor__visit_expr_cast(var_v, self, var, var1);
1930 }
1931 {
1932 { /* Inline typing#AExpr#mtype= (self,var2) on <self:AAsCastExpr> */
1933 self->attrs[COLOR_typing__AExpr___mtype].val = var2; /* _mtype on <self:AAsCastExpr> */
1934 RET_LABEL3:(void)0;
1935 }
1936 }
1937 RET_LABEL:;
1938 }
1939 /* method typing#AAsCastExpr#accept_typing for (self: Object, TypeVisitor) */
1940 void VIRTUAL_typing__AAsCastExpr__accept_typing(val* self, val* p0) {
1941 typing__AAsCastExpr__accept_typing(self, p0); /* Direct call typing#AAsCastExpr#accept_typing on <self:Object(AAsCastExpr)>*/
1942 RET_LABEL:;
1943 }
1944 /* method typing#AAsNotnullExpr#accept_typing for (self: AAsNotnullExpr, TypeVisitor) */
1945 void typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
1946 val* var_v /* var v: TypeVisitor */;
1947 val* var /* : AExpr */;
1948 val* var1 /* : nullable MType */;
1949 val* var_mtype /* var mtype: nullable MType */;
1950 val* var2 /* : null */;
1951 short int var3 /* : Bool */;
1952 short int var4 /* : Bool */;
1953 val* var_other /* var other: nullable Object */;
1954 short int var6 /* : Bool */;
1955 short int var8 /* : Bool */;
1956 short int var9 /* : Bool */;
1957 int cltype;
1958 int idtype;
1959 static val* varonce;
1960 val* var10 /* : String */;
1961 char* var11 /* : NativeString */;
1962 long var12 /* : Int */;
1963 val* var13 /* : FlatString */;
1964 short int var14 /* : Bool */;
1965 int cltype15;
1966 int idtype16;
1967 val* var17 /* : MType */;
1968 val* var19 /* : MType */;
1969 short int var22 /* : Bool */;
1970 int cltype23;
1971 int idtype24;
1972 val* var25 /* : ModelBuilder */;
1973 val* var27 /* : ModelBuilder */;
1974 static val* varonce28;
1975 val* var29 /* : String */;
1976 char* var30 /* : NativeString */;
1977 long var31 /* : Int */;
1978 val* var32 /* : FlatString */;
1979 static val* varonce33;
1980 val* var34 /* : String */;
1981 char* var35 /* : NativeString */;
1982 long var36 /* : Int */;
1983 val* var37 /* : FlatString */;
1984 val* var38 /* : Array[Object] */;
1985 long var39 /* : Int */;
1986 val* var40 /* : NativeArray[Object] */;
1987 val* var41 /* : String */;
1988 short int var42 /* : Bool */;
1989 val* var43 /* : MType */;
1990 val* var_u /* var u: MType */;
1991 short int var44 /* : Bool */;
1992 int cltype45;
1993 int idtype46;
1994 short int var47 /* : Bool */;
1995 val* var48 /* : ModelBuilder */;
1996 val* var50 /* : ModelBuilder */;
1997 static val* varonce51;
1998 val* var52 /* : String */;
1999 char* var53 /* : NativeString */;
2000 long var54 /* : Int */;
2001 val* var55 /* : FlatString */;
2002 static val* varonce56;
2003 val* var57 /* : String */;
2004 char* var58 /* : NativeString */;
2005 long var59 /* : Int */;
2006 val* var60 /* : FlatString */;
2007 static val* varonce61;
2008 val* var62 /* : String */;
2009 char* var63 /* : NativeString */;
2010 long var64 /* : Int */;
2011 val* var65 /* : FlatString */;
2012 val* var66 /* : Array[Object] */;
2013 long var67 /* : Int */;
2014 val* var68 /* : NativeArray[Object] */;
2015 val* var69 /* : String */;
2016 var_v = p0;
2017 {
2018 var = parser_nodes__AAsNotnullExpr__n_expr(self);
2019 }
2020 {
2021 var1 = typing__TypeVisitor__visit_expr(var_v, var);
2022 }
2023 var_mtype = var1;
2024 var2 = NULL;
2025 if (var_mtype == NULL) {
2026 var3 = 1; /* is null */
2027 } else {
2028 var3 = 0; /* arg is null but recv is not */
2029 }
2030 if (0) {
2031 { /* Inline kernel#Object#== (var_mtype,var2) on <var_mtype:nullable MType> */
2032 var_other = var2;
2033 {
2034 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
2035 var8 = var_mtype == var_other;
2036 var6 = var8;
2037 goto RET_LABEL7;
2038 RET_LABEL7:(void)0;
2039 }
2040 }
2041 var4 = var6;
2042 goto RET_LABEL5;
2043 RET_LABEL5:(void)0;
2044 }
2045 var3 = var4;
2046 }
2047 if (var3){
2048 goto RET_LABEL;
2049 } else {
2050 }
2051 /* <var_mtype:nullable MType(MType)> isa MNullType */
2052 cltype = type_model__MNullType.color;
2053 idtype = type_model__MNullType.id;
2054 if(cltype >= var_mtype->type->table_size) {
2055 var9 = 0;
2056 } else {
2057 var9 = var_mtype->type->type_table[cltype] == idtype;
2058 }
2059 if (var9){
2060 if (varonce) {
2061 var10 = varonce;
2062 } else {
2063 var11 = "Type error: as(not null) on null";
2064 var12 = 32;
2065 var13 = string__NativeString__to_s_with_length(var11, var12);
2066 var10 = var13;
2067 varonce = var10;
2068 }
2069 {
2070 typing__TypeVisitor__error(var_v, self, var10); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2071 }
2072 goto RET_LABEL;
2073 } else {
2074 }
2075 /* <var_mtype:nullable MType(MType)> isa MNullableType */
2076 cltype15 = type_model__MNullableType.color;
2077 idtype16 = type_model__MNullableType.id;
2078 if(cltype15 >= var_mtype->type->table_size) {
2079 var14 = 0;
2080 } else {
2081 var14 = var_mtype->type->type_table[cltype15] == idtype16;
2082 }
2083 if (var14){
2084 {
2085 { /* Inline model#MNullableType#mtype (var_mtype) on <var_mtype:nullable MType(MNullableType)> */
2086 var19 = var_mtype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_mtype:nullable MType(MNullableType)> */
2087 if (unlikely(var19 == NULL)) {
2088 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2089 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
2090 show_backtrace(1);
2091 }
2092 var17 = var19;
2093 RET_LABEL18:(void)0;
2094 }
2095 }
2096 {
2097 { /* Inline typing#AExpr#mtype= (self,var17) on <self:AAsNotnullExpr> */
2098 self->attrs[COLOR_typing__AExpr___mtype].val = var17; /* _mtype on <self:AAsNotnullExpr> */
2099 RET_LABEL20:(void)0;
2100 }
2101 }
2102 goto RET_LABEL;
2103 } else {
2104 }
2105 {
2106 { /* Inline typing#AExpr#mtype= (self,var_mtype) on <self:AAsNotnullExpr> */
2107 self->attrs[COLOR_typing__AExpr___mtype].val = var_mtype; /* _mtype on <self:AAsNotnullExpr> */
2108 RET_LABEL21:(void)0;
2109 }
2110 }
2111 /* <var_mtype:nullable MType(MType)> isa MClassType */
2112 cltype23 = type_model__MClassType.color;
2113 idtype24 = type_model__MClassType.id;
2114 if(cltype23 >= var_mtype->type->table_size) {
2115 var22 = 0;
2116 } else {
2117 var22 = var_mtype->type->type_table[cltype23] == idtype24;
2118 }
2119 if (var22){
2120 {
2121 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
2122 var27 = var_v->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
2123 if (unlikely(var27 == NULL)) {
2124 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2125 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 36);
2126 show_backtrace(1);
2127 }
2128 var25 = var27;
2129 RET_LABEL26:(void)0;
2130 }
2131 }
2132 if (varonce28) {
2133 var29 = varonce28;
2134 } else {
2135 var30 = "Warning: expression is already not null, since it is a `";
2136 var31 = 56;
2137 var32 = string__NativeString__to_s_with_length(var30, var31);
2138 var29 = var32;
2139 varonce28 = var29;
2140 }
2141 if (varonce33) {
2142 var34 = varonce33;
2143 } else {
2144 var35 = "`.";
2145 var36 = 2;
2146 var37 = string__NativeString__to_s_with_length(var35, var36);
2147 var34 = var37;
2148 varonce33 = var34;
2149 }
2150 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
2151 { /* var38 = array_instance Array[Object] */
2152 var39 = 3;
2153 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
2154 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var29;
2155 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_mtype;
2156 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34;
2157 {
2158 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
2159 }
2160 }
2161 {
2162 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
2163 }
2164 {
2165 modelbuilder__ModelBuilder__warning(var25, self, var41); /* Direct call modelbuilder#ModelBuilder#warning on <var25:ModelBuilder>*/
2166 }
2167 goto RET_LABEL;
2168 } else {
2169 }
2170 {
2171 var42 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:nullable MType(MType)>*/;
2172 }
2173 if (unlikely(!var42)) {
2174 PRINT_ERROR("Runtime error: %s", "Assert failed");
2175 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1211);
2176 show_backtrace(1);
2177 }
2178 {
2179 var43 = typing__TypeVisitor__anchor_to(var_v, var_mtype);
2180 }
2181 var_u = var43;
2182 /* <var_u:MType> isa MNullableType */
2183 cltype45 = type_model__MNullableType.color;
2184 idtype46 = type_model__MNullableType.id;
2185 if(cltype45 >= var_u->type->table_size) {
2186 var44 = 0;
2187 } else {
2188 var44 = var_u->type->type_table[cltype45] == idtype46;
2189 }
2190 var47 = !var44;
2191 if (var47){
2192 {
2193 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
2194 var50 = var_v->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
2195 if (unlikely(var50 == NULL)) {
2196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2197 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 36);
2198 show_backtrace(1);
2199 }
2200 var48 = var50;
2201 RET_LABEL49:(void)0;
2202 }
2203 }
2204 if (varonce51) {
2205 var52 = varonce51;
2206 } else {
2207 var53 = "Warning: expression is already not null, since it is a `";
2208 var54 = 56;
2209 var55 = string__NativeString__to_s_with_length(var53, var54);
2210 var52 = var55;
2211 varonce51 = var52;
2212 }
2213 if (varonce56) {
2214 var57 = varonce56;
2215 } else {
2216 var58 = ": ";
2217 var59 = 2;
2218 var60 = string__NativeString__to_s_with_length(var58, var59);
2219 var57 = var60;
2220 varonce56 = var57;
2221 }
2222 if (varonce61) {
2223 var62 = varonce61;
2224 } else {
2225 var63 = "`.";
2226 var64 = 2;
2227 var65 = string__NativeString__to_s_with_length(var63, var64);
2228 var62 = var65;
2229 varonce61 = var62;
2230 }
2231 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
2232 { /* var66 = array_instance Array[Object] */
2233 var67 = 5;
2234 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
2235 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var52;
2236 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var_mtype;
2237 ((struct instance_array__NativeArray*)var68)->values[2] = (val*) var57;
2238 ((struct instance_array__NativeArray*)var68)->values[3] = (val*) var_u;
2239 ((struct instance_array__NativeArray*)var68)->values[4] = (val*) var62;
2240 {
2241 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
2242 }
2243 }
2244 {
2245 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
2246 }
2247 {
2248 modelbuilder__ModelBuilder__warning(var48, self, var69); /* Direct call modelbuilder#ModelBuilder#warning on <var48:ModelBuilder>*/
2249 }
2250 goto RET_LABEL;
2251 } else {
2252 }
2253 RET_LABEL:;
2254 }
2255 /* method typing#AAsNotnullExpr#accept_typing for (self: Object, TypeVisitor) */
2256 void VIRTUAL_typing__AAsNotnullExpr__accept_typing(val* self, val* p0) {
2257 typing__AAsNotnullExpr__accept_typing(self, p0); /* Direct call typing#AAsNotnullExpr#accept_typing on <self:Object(AAsNotnullExpr)>*/
2258 RET_LABEL:;
2259 }
2260 /* method typing#AProxyExpr#accept_typing for (self: AProxyExpr, TypeVisitor) */
2261 void typing__AProxyExpr__accept_typing(val* self, val* p0) {
2262 val* var_v /* var v: TypeVisitor */;
2263 val* var /* : AExpr */;
2264 val* var1 /* : nullable MType */;
2265 var_v = p0;
2266 {
2267 var = parser_nodes__AProxyExpr__n_expr(self);
2268 }
2269 {
2270 var1 = typing__TypeVisitor__visit_expr(var_v, var);
2271 }
2272 {
2273 { /* Inline typing#AExpr#mtype= (self,var1) on <self:AProxyExpr> */
2274 self->attrs[COLOR_typing__AExpr___mtype].val = var1; /* _mtype on <self:AProxyExpr> */
2275 RET_LABEL2:(void)0;
2276 }
2277 }
2278 RET_LABEL:;
2279 }
2280 /* method typing#AProxyExpr#accept_typing for (self: Object, TypeVisitor) */
2281 void VIRTUAL_typing__AProxyExpr__accept_typing(val* self, val* p0) {
2282 typing__AProxyExpr__accept_typing(self, p0); /* Direct call typing#AProxyExpr#accept_typing on <self:Object(AProxyExpr)>*/
2283 RET_LABEL:;
2284 }
2285 /* method typing#ASelfExpr#its_variable for (self: ASelfExpr): nullable Variable */
2286 val* typing__ASelfExpr__its_variable(val* self) {
2287 val* var /* : nullable Variable */;
2288 val* var1 /* : nullable Variable */;
2289 var1 = self->attrs[COLOR_typing__ASelfExpr___its_variable].val; /* _its_variable on <self:ASelfExpr> */
2290 var = var1;
2291 RET_LABEL:;
2292 return var;
2293 }
2294 /* method typing#ASelfExpr#its_variable for (self: Object): nullable Variable */
2295 val* VIRTUAL_typing__ASelfExpr__its_variable(val* self) {
2296 val* var /* : nullable Variable */;
2297 val* var1 /* : nullable Variable */;
2298 val* var3 /* : nullable Variable */;
2299 { /* Inline typing#ASelfExpr#its_variable (self) on <self:Object(ASelfExpr)> */
2300 var3 = self->attrs[COLOR_typing__ASelfExpr___its_variable].val; /* _its_variable on <self:Object(ASelfExpr)> */
2301 var1 = var3;
2302 RET_LABEL2:(void)0;
2303 }
2304 var = var1;
2305 RET_LABEL:;
2306 return var;
2307 }
2308 /* method typing#ASelfExpr#its_variable= for (self: ASelfExpr, nullable Variable) */
2309 void typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
2310 self->attrs[COLOR_typing__ASelfExpr___its_variable].val = p0; /* _its_variable on <self:ASelfExpr> */
2311 RET_LABEL:;
2312 }
2313 /* method typing#ASelfExpr#its_variable= for (self: Object, nullable Variable) */
2314 void VIRTUAL_typing__ASelfExpr__its_variable_61d(val* self, val* p0) {
2315 { /* Inline typing#ASelfExpr#its_variable= (self,p0) on <self:Object(ASelfExpr)> */
2316 self->attrs[COLOR_typing__ASelfExpr___its_variable].val = p0; /* _its_variable on <self:Object(ASelfExpr)> */
2317 RET_LABEL1:(void)0;
2318 }
2319 RET_LABEL:;
2320 }
2321 /* method typing#ASelfExpr#accept_typing for (self: ASelfExpr, TypeVisitor) */
2322 void typing__ASelfExpr__accept_typing(val* self, val* p0) {
2323 val* var_v /* var v: TypeVisitor */;
2324 short int var /* : Bool */;
2325 short int var1 /* : Bool */;
2326 short int var3 /* : Bool */;
2327 short int var_ /* var : Bool */;
2328 short int var4 /* : Bool */;
2329 int cltype;
2330 int idtype;
2331 short int var5 /* : Bool */;
2332 static val* varonce;
2333 val* var6 /* : String */;
2334 char* var7 /* : NativeString */;
2335 long var8 /* : Int */;
2336 val* var9 /* : FlatString */;
2337 val* var10 /* : Variable */;
2338 val* var12 /* : Variable */;
2339 val* var_variable /* var variable: Variable */;
2340 val* var14 /* : nullable MType */;
2341 var_v = p0;
2342 {
2343 { /* Inline typing#TypeVisitor#is_toplevel_context (var_v) on <var_v:TypeVisitor> */
2344 var3 = var_v->attrs[COLOR_typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <var_v:TypeVisitor> */
2345 var1 = var3;
2346 RET_LABEL2:(void)0;
2347 }
2348 }
2349 var_ = var1;
2350 if (var1){
2351 /* <self:ASelfExpr> isa AImplicitSelfExpr */
2352 cltype = type_parser_nodes__AImplicitSelfExpr.color;
2353 idtype = type_parser_nodes__AImplicitSelfExpr.id;
2354 if(cltype >= self->type->table_size) {
2355 var4 = 0;
2356 } else {
2357 var4 = self->type->type_table[cltype] == idtype;
2358 }
2359 var5 = !var4;
2360 var = var5;
2361 } else {
2362 var = var_;
2363 }
2364 if (var){
2365 if (varonce) {
2366 var6 = varonce;
2367 } else {
2368 var7 = "Error: self cannot be used in top-level method.";
2369 var8 = 47;
2370 var9 = string__NativeString__to_s_with_length(var7, var8);
2371 var6 = var9;
2372 varonce = var6;
2373 }
2374 {
2375 typing__TypeVisitor__error(var_v, self, var6); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2376 }
2377 } else {
2378 }
2379 {
2380 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
2381 var12 = var_v->attrs[COLOR_typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
2382 if (unlikely(var12 == NULL)) {
2383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
2384 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 52);
2385 show_backtrace(1);
2386 }
2387 var10 = var12;
2388 RET_LABEL11:(void)0;
2389 }
2390 }
2391 var_variable = var10;
2392 {
2393 { /* Inline typing#ASelfExpr#its_variable= (self,var_variable) on <self:ASelfExpr> */
2394 self->attrs[COLOR_typing__ASelfExpr___its_variable].val = var_variable; /* _its_variable on <self:ASelfExpr> */
2395 RET_LABEL13:(void)0;
2396 }
2397 }
2398 {
2399 var14 = typing__TypeVisitor__get_variable(var_v, self, var_variable);
2400 }
2401 {
2402 { /* Inline typing#AExpr#mtype= (self,var14) on <self:ASelfExpr> */
2403 self->attrs[COLOR_typing__AExpr___mtype].val = var14; /* _mtype on <self:ASelfExpr> */
2404 RET_LABEL15:(void)0;
2405 }
2406 }
2407 RET_LABEL:;
2408 }
2409 /* method typing#ASelfExpr#accept_typing for (self: Object, TypeVisitor) */
2410 void VIRTUAL_typing__ASelfExpr__accept_typing(val* self, val* p0) {
2411 typing__ASelfExpr__accept_typing(self, p0); /* Direct call typing#ASelfExpr#accept_typing on <self:Object(ASelfExpr)>*/
2412 RET_LABEL:;
2413 }
2414 /* method typing#ASendExpr#callsite for (self: ASendExpr): nullable CallSite */
2415 val* typing__ASendExpr__callsite(val* self) {
2416 val* var /* : nullable CallSite */;
2417 val* var1 /* : nullable CallSite */;
2418 var1 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on <self:ASendExpr> */
2419 var = var1;
2420 RET_LABEL:;
2421 return var;
2422 }
2423 /* method typing#ASendExpr#callsite for (self: Object): nullable CallSite */
2424 val* VIRTUAL_typing__ASendExpr__callsite(val* self) {
2425 val* var /* : nullable CallSite */;
2426 val* var1 /* : nullable CallSite */;
2427 val* var3 /* : nullable CallSite */;
2428 { /* Inline typing#ASendExpr#callsite (self) on <self:Object(ASendExpr)> */
2429 var3 = self->attrs[COLOR_typing__ASendExpr___callsite].val; /* _callsite on <self:Object(ASendExpr)> */
2430 var1 = var3;
2431 RET_LABEL2:(void)0;
2432 }
2433 var = var1;
2434 RET_LABEL:;
2435 return var;
2436 }
2437 /* method typing#ASendExpr#callsite= for (self: ASendExpr, nullable CallSite) */
2438 void typing__ASendExpr__callsite_61d(val* self, val* p0) {
2439 self->attrs[COLOR_typing__ASendExpr___callsite].val = p0; /* _callsite on <self:ASendExpr> */
2440 RET_LABEL:;
2441 }
2442 /* method typing#ASendExpr#callsite= for (self: Object, nullable CallSite) */
2443 void VIRTUAL_typing__ASendExpr__callsite_61d(val* self, val* p0) {
2444 { /* Inline typing#ASendExpr#callsite= (self,p0) on <self:Object(ASendExpr)> */
2445 self->attrs[COLOR_typing__ASendExpr___callsite].val = p0; /* _callsite on <self:Object(ASendExpr)> */
2446 RET_LABEL1:(void)0;
2447 }
2448 RET_LABEL:;
2449 }
2450 /* method typing#ASendExpr#accept_typing for (self: ASendExpr, TypeVisitor) */
2451 void typing__ASendExpr__accept_typing(val* self, val* p0) {
2452 val* var_v /* var v: TypeVisitor */;
2453 val* var /* : AExpr */;
2454 val* var1 /* : nullable MType */;
2455 val* var_recvtype /* var recvtype: nullable MType */;
2456 val* var2 /* : String */;
2457 val* var_name /* var name: String */;
2458 val* var3 /* : null */;
2459 short int var4 /* : Bool */;
2460 short int var5 /* : Bool */;
2461 val* var_other /* var other: nullable Object */;
2462 short int var7 /* : Bool */;
2463 short int var9 /* : Bool */;
2464 short int var10 /* : Bool */;
2465 int cltype;
2466 int idtype;
2467 static val* varonce;
2468 val* var11 /* : String */;
2469 char* var12 /* : NativeString */;
2470 long var13 /* : Int */;
2471 val* var14 /* : FlatString */;
2472 static val* varonce15;
2473 val* var16 /* : String */;
2474 char* var17 /* : NativeString */;
2475 long var18 /* : Int */;
2476 val* var19 /* : FlatString */;
2477 val* var20 /* : Array[Object] */;
2478 long var21 /* : Int */;
2479 val* var22 /* : NativeArray[Object] */;
2480 val* var23 /* : String */;
2481 val* var24 /* : AExpr */;
2482 short int var25 /* : Bool */;
2483 int cltype26;
2484 int idtype27;
2485 val* var28 /* : nullable CallSite */;
2486 val* var_callsite /* var callsite: nullable CallSite */;
2487 val* var29 /* : null */;
2488 short int var30 /* : Bool */;
2489 short int var31 /* : Bool */;
2490 short int var33 /* : Bool */;
2491 short int var35 /* : Bool */;
2492 val* var37 /* : MSignature */;
2493 val* var39 /* : MSignature */;
2494 val* var_msignature /* var msignature: MSignature */;
2495 val* var40 /* : Array[AExpr] */;
2496 val* var_args /* var args: Array[AExpr] */;
2497 short int var41 /* : Bool */;
2498 val* var42 /* : MMethod */;
2499 val* var44 /* : MMethod */;
2500 short int var45 /* : Bool */;
2501 short int var47 /* : Bool */;
2502 val* var48 /* : nullable MPropDef */;
2503 val* var50 /* : nullable MPropDef */;
2504 val* var_vmpropdef /* var vmpropdef: nullable MPropDef */;
2505 short int var51 /* : Bool */;
2506 short int var52 /* : Bool */;
2507 int cltype53;
2508 int idtype54;
2509 short int var_ /* var : Bool */;
2510 val* var55 /* : MProperty */;
2511 val* var57 /* : MProperty */;
2512 short int var58 /* : Bool */;
2513 short int var60 /* : Bool */;
2514 short int var61 /* : Bool */;
2515 static val* varonce62;
2516 val* var63 /* : String */;
2517 char* var64 /* : NativeString */;
2518 long var65 /* : Int */;
2519 val* var66 /* : FlatString */;
2520 val* var67 /* : nullable MType */;
2521 val* var69 /* : nullable MType */;
2522 val* var_ret /* var ret: nullable MType */;
2523 val* var70 /* : null */;
2524 short int var71 /* : Bool */;
2525 short int var72 /* : Bool */;
2526 val* var_other74 /* var other: nullable Object */;
2527 short int var75 /* : Bool */;
2528 short int var76 /* : Bool */;
2529 short int var77 /* : Bool */;
2530 short int var79 /* : Bool */;
2531 var_v = p0;
2532 {
2533 var = parser_nodes__ASendExpr__n_expr(self);
2534 }
2535 {
2536 var1 = typing__TypeVisitor__visit_expr(var_v, var);
2537 }
2538 var_recvtype = var1;
2539 {
2540 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendExpr>*/;
2541 }
2542 var_name = var2;
2543 var3 = NULL;
2544 if (var_recvtype == NULL) {
2545 var4 = 1; /* is null */
2546 } else {
2547 var4 = 0; /* arg is null but recv is not */
2548 }
2549 if (0) {
2550 { /* Inline kernel#Object#== (var_recvtype,var3) on <var_recvtype:nullable MType> */
2551 var_other = var3;
2552 {
2553 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
2554 var9 = var_recvtype == var_other;
2555 var7 = var9;
2556 goto RET_LABEL8;
2557 RET_LABEL8:(void)0;
2558 }
2559 }
2560 var5 = var7;
2561 goto RET_LABEL6;
2562 RET_LABEL6:(void)0;
2563 }
2564 var4 = var5;
2565 }
2566 if (var4){
2567 goto RET_LABEL;
2568 } else {
2569 }
2570 /* <var_recvtype:nullable MType(MType)> isa MNullType */
2571 cltype = type_model__MNullType.color;
2572 idtype = type_model__MNullType.id;
2573 if(cltype >= var_recvtype->type->table_size) {
2574 var10 = 0;
2575 } else {
2576 var10 = var_recvtype->type->type_table[cltype] == idtype;
2577 }
2578 if (var10){
2579 if (varonce) {
2580 var11 = varonce;
2581 } else {
2582 var12 = "Error: Method \'";
2583 var13 = 15;
2584 var14 = string__NativeString__to_s_with_length(var12, var13);
2585 var11 = var14;
2586 varonce = var11;
2587 }
2588 if (varonce15) {
2589 var16 = varonce15;
2590 } else {
2591 var17 = "\' call on \'null\'.";
2592 var18 = 17;
2593 var19 = string__NativeString__to_s_with_length(var17, var18);
2594 var16 = var19;
2595 varonce15 = var16;
2596 }
2597 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
2598 { /* var20 = array_instance Array[Object] */
2599 var21 = 3;
2600 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
2601 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var11;
2602 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_name;
2603 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var16;
2604 {
2605 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
2606 }
2607 }
2608 {
2609 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
2610 }
2611 {
2612 typing__TypeVisitor__error(var_v, self, var23); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2613 }
2614 goto RET_LABEL;
2615 } else {
2616 }
2617 {
2618 var24 = parser_nodes__ASendExpr__n_expr(self);
2619 }
2620 /* <var24:AExpr> isa ASelfExpr */
2621 cltype26 = type_parser_nodes__ASelfExpr.color;
2622 idtype27 = type_parser_nodes__ASelfExpr.id;
2623 if(cltype26 >= var24->type->table_size) {
2624 var25 = 0;
2625 } else {
2626 var25 = var24->type->type_table[cltype26] == idtype27;
2627 }
2628 {
2629 var28 = typing__TypeVisitor__get_method(var_v, self, var_recvtype, var_name, var25);
2630 }
2631 var_callsite = var28;
2632 var29 = NULL;
2633 if (var_callsite == NULL) {
2634 var30 = 1; /* is null */
2635 } else {
2636 var30 = 0; /* arg is null but recv is not */
2637 }
2638 if (0) {
2639 { /* Inline kernel#Object#== (var_callsite,var29) on <var_callsite:nullable CallSite> */
2640 var_other = var29;
2641 {
2642 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
2643 var35 = var_callsite == var_other;
2644 var33 = var35;
2645 goto RET_LABEL34;
2646 RET_LABEL34:(void)0;
2647 }
2648 }
2649 var31 = var33;
2650 goto RET_LABEL32;
2651 RET_LABEL32:(void)0;
2652 }
2653 var30 = var31;
2654 }
2655 if (var30){
2656 goto RET_LABEL;
2657 } else {
2658 }
2659 {
2660 { /* Inline typing#ASendExpr#callsite= (self,var_callsite) on <self:ASendExpr> */
2661 self->attrs[COLOR_typing__ASendExpr___callsite].val = var_callsite; /* _callsite on <self:ASendExpr> */
2662 RET_LABEL36:(void)0;
2663 }
2664 }
2665 {
2666 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
2667 var39 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
2668 if (unlikely(var39 == NULL)) {
2669 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
2670 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
2671 show_backtrace(1);
2672 }
2673 var37 = var39;
2674 RET_LABEL38:(void)0;
2675 }
2676 }
2677 var_msignature = var37;
2678 {
2679 var40 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
2680 }
2681 var_args = var40;
2682 {
2683 var41 = typing__CallSite__check_signature(var_callsite, var_v, var_args);
2684 }
2685 var41;
2686 {
2687 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
2688 var44 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
2689 if (unlikely(var44 == NULL)) {
2690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2691 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 422);
2692 show_backtrace(1);
2693 }
2694 var42 = var44;
2695 RET_LABEL43:(void)0;
2696 }
2697 }
2698 {
2699 { /* Inline model#MMethod#is_init (var42) on <var42:MMethod> */
2700 var47 = var42->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var42:MMethod> */
2701 var45 = var47;
2702 RET_LABEL46:(void)0;
2703 }
2704 }
2705 if (var45){
2706 {
2707 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
2708 var50 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
2709 var48 = var50;
2710 RET_LABEL49:(void)0;
2711 }
2712 }
2713 var_vmpropdef = var48;
2714 /* <var_vmpropdef:nullable MPropDef> isa MMethodDef */
2715 cltype53 = type_model__MMethodDef.color;
2716 idtype54 = type_model__MMethodDef.id;
2717 if(var_vmpropdef == NULL) {
2718 var52 = 0;
2719 } else {
2720 if(cltype53 >= var_vmpropdef->type->table_size) {
2721 var52 = 0;
2722 } else {
2723 var52 = var_vmpropdef->type->type_table[cltype53] == idtype54;
2724 }
2725 }
2726 var_ = var52;
2727 if (var52){
2728 {
2729 { /* Inline model#MPropDef#mproperty (var_vmpropdef) on <var_vmpropdef:nullable MPropDef(MMethodDef)> */
2730 var57 = var_vmpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_vmpropdef:nullable MPropDef(MMethodDef)> */
2731 if (unlikely(var57 == NULL)) {
2732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2733 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
2734 show_backtrace(1);
2735 }
2736 var55 = var57;
2737 RET_LABEL56:(void)0;
2738 }
2739 }
2740 {
2741 { /* Inline model#MMethod#is_init (var55) on <var55:MProperty(MMethod)> */
2742 var60 = var55->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var55:MProperty(MMethod)> */
2743 var58 = var60;
2744 RET_LABEL59:(void)0;
2745 }
2746 }
2747 var51 = var58;
2748 } else {
2749 var51 = var_;
2750 }
2751 var61 = !var51;
2752 if (var61){
2753 if (varonce62) {
2754 var63 = varonce62;
2755 } else {
2756 var64 = "Can call a init only in another init";
2757 var65 = 36;
2758 var66 = string__NativeString__to_s_with_length(var64, var65);
2759 var63 = var66;
2760 varonce62 = var63;
2761 }
2762 {
2763 typing__TypeVisitor__error(var_v, self, var63); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2764 }
2765 } else {
2766 }
2767 } else {
2768 }
2769 {
2770 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
2771 var69 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
2772 var67 = var69;
2773 RET_LABEL68:(void)0;
2774 }
2775 }
2776 var_ret = var67;
2777 var70 = NULL;
2778 if (var_ret == NULL) {
2779 var71 = 0; /* is null */
2780 } else {
2781 var71 = 1; /* arg is null and recv is not */
2782 }
2783 if (0) {
2784 { /* Inline kernel#Object#!= (var_ret,var70) on <var_ret:nullable MType> */
2785 var_other74 = var70;
2786 {
2787 var76 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other74) /* == on <var_ret:nullable MType(MType)>*/;
2788 var75 = var76;
2789 }
2790 var77 = !var75;
2791 var72 = var77;
2792 goto RET_LABEL73;
2793 RET_LABEL73:(void)0;
2794 }
2795 var71 = var72;
2796 }
2797 if (var71){
2798 {
2799 { /* Inline typing#AExpr#mtype= (self,var_ret) on <self:ASendExpr> */
2800 self->attrs[COLOR_typing__AExpr___mtype].val = var_ret; /* _mtype on <self:ASendExpr> */
2801 RET_LABEL78:(void)0;
2802 }
2803 }
2804 } else {
2805 var79 = 1;
2806 {
2807 { /* Inline typing#AExpr#is_typed= (self,var79) on <self:ASendExpr> */
2808 self->attrs[COLOR_typing__AExpr___is_typed].s = var79; /* _is_typed on <self:ASendExpr> */
2809 RET_LABEL80:(void)0;
2810 }
2811 }
2812 }
2813 RET_LABEL:;
2814 }
2815 /* method typing#ASendExpr#accept_typing for (self: Object, TypeVisitor) */
2816 void VIRTUAL_typing__ASendExpr__accept_typing(val* self, val* p0) {
2817 typing__ASendExpr__accept_typing(self, p0); /* Direct call typing#ASendExpr#accept_typing on <self:Object(ASendExpr)>*/
2818 RET_LABEL:;
2819 }
2820 /* method typing#ASendExpr#raw_arguments for (self: ASendExpr): Array[AExpr] */
2821 val* typing__ASendExpr__raw_arguments(val* self) {
2822 val* var /* : Array[AExpr] */;
2823 val* var1 /* : Array[AExpr] */;
2824 {
2825 var1 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendExpr>*/;
2826 }
2827 var = var1;
2828 goto RET_LABEL;
2829 RET_LABEL:;
2830 return var;
2831 }
2832 /* method typing#ASendExpr#raw_arguments for (self: Object): Array[AExpr] */
2833 val* VIRTUAL_typing__ASendExpr__raw_arguments(val* self) {
2834 val* var /* : Array[AExpr] */;
2835 val* var1 /* : Array[AExpr] */;
2836 var1 = typing__ASendExpr__raw_arguments(self);
2837 var = var1;
2838 RET_LABEL:;
2839 return var;
2840 }
2841 /* method typing#ABinopExpr#compute_raw_arguments for (self: ABinopExpr): Array[AExpr] */
2842 val* typing__ABinopExpr__compute_raw_arguments(val* self) {
2843 val* var /* : Array[AExpr] */;
2844 val* var1 /* : Array[AExpr] */;
2845 long var2 /* : Int */;
2846 val* var_ /* var : Array[AExpr] */;
2847 val* var3 /* : AExpr */;
2848 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
2849 var2 = 1;
2850 {
2851 array__Array__with_capacity(var1, var2); /* Direct call array#Array#with_capacity on <var1:Array[AExpr]>*/
2852 }
2853 var_ = var1;
2854 {
2855 var3 = parser_nodes__ABinopExpr__n_expr2(self);
2856 }
2857 {
2858 array__AbstractArray__push(var_, var3); /* Direct call array#AbstractArray#push on <var_:Array[AExpr]>*/
2859 }
2860 var = var_;
2861 goto RET_LABEL;
2862 RET_LABEL:;
2863 return var;
2864 }
2865 /* method typing#ABinopExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
2866 val* VIRTUAL_typing__ABinopExpr__compute_raw_arguments(val* self) {
2867 val* var /* : Array[AExpr] */;
2868 val* var1 /* : Array[AExpr] */;
2869 var1 = typing__ABinopExpr__compute_raw_arguments(self);
2870 var = var1;
2871 RET_LABEL:;
2872 return var;
2873 }
2874 /* method typing#AEqExpr#property_name for (self: AEqExpr): String */
2875 val* typing__AEqExpr__property_name(val* self) {
2876 val* var /* : String */;
2877 static val* varonce;
2878 val* var1 /* : String */;
2879 char* var2 /* : NativeString */;
2880 long var3 /* : Int */;
2881 val* var4 /* : FlatString */;
2882 if (varonce) {
2883 var1 = varonce;
2884 } else {
2885 var2 = "==";
2886 var3 = 2;
2887 var4 = string__NativeString__to_s_with_length(var2, var3);
2888 var1 = var4;
2889 varonce = var1;
2890 }
2891 var = var1;
2892 goto RET_LABEL;
2893 RET_LABEL:;
2894 return var;
2895 }
2896 /* method typing#AEqExpr#property_name for (self: Object): String */
2897 val* VIRTUAL_typing__AEqExpr__property_name(val* self) {
2898 val* var /* : String */;
2899 val* var1 /* : String */;
2900 var1 = typing__AEqExpr__property_name(self);
2901 var = var1;
2902 RET_LABEL:;
2903 return var;
2904 }
2905 /* method typing#AEqExpr#accept_typing for (self: AEqExpr, TypeVisitor) */
2906 void typing__AEqExpr__accept_typing(val* self, val* p0) {
2907 val* var_v /* var v: TypeVisitor */;
2908 val* var /* : AExpr */;
2909 val* var1 /* : nullable Variable */;
2910 val* var_variable /* var variable: nullable Variable */;
2911 val* var2 /* : null */;
2912 short int var3 /* : Bool */;
2913 short int var4 /* : Bool */;
2914 val* var_other /* var other: nullable Object */;
2915 short int var6 /* : Bool */;
2916 short int var8 /* : Bool */;
2917 val* var9 /* : AExpr */;
2918 val* var10 /* : nullable MType */;
2919 val* var_mtype /* var mtype: nullable MType */;
2920 short int var11 /* : Bool */;
2921 int cltype;
2922 int idtype;
2923 short int var12 /* : Bool */;
2924 val* var13 /* : nullable MType */;
2925 val* var_vartype /* var vartype: nullable MType */;
2926 short int var14 /* : Bool */;
2927 int cltype15;
2928 int idtype16;
2929 short int var17 /* : Bool */;
2930 val* var18 /* : nullable FlowContext */;
2931 val* var20 /* : nullable FlowContext */;
2932 val* var21 /* : FlowContext */;
2933 val* var23 /* : FlowContext */;
2934 val* var24 /* : nullable FlowContext */;
2935 val* var26 /* : nullable FlowContext */;
2936 val* var27 /* : FlowContext */;
2937 val* var29 /* : FlowContext */;
2938 val* var30 /* : MType */;
2939 val* var32 /* : MType */;
2940 var_v = p0;
2941 {
2942 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__AEqExpr__accept_typing]))(self, p0) /* accept_typing on <self:AEqExpr>*/;
2943 }
2944 {
2945 var = parser_nodes__ASendExpr__n_expr(self);
2946 }
2947 {
2948 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
2949 }
2950 var_variable = var1;
2951 var2 = NULL;
2952 if (var_variable == NULL) {
2953 var3 = 1; /* is null */
2954 } else {
2955 var3 = 0; /* arg is null but recv is not */
2956 }
2957 if (0) {
2958 { /* Inline kernel#Object#== (var_variable,var2) on <var_variable:nullable Variable> */
2959 var_other = var2;
2960 {
2961 { /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
2962 var8 = var_variable == var_other;
2963 var6 = var8;
2964 goto RET_LABEL7;
2965 RET_LABEL7:(void)0;
2966 }
2967 }
2968 var4 = var6;
2969 goto RET_LABEL5;
2970 RET_LABEL5:(void)0;
2971 }
2972 var3 = var4;
2973 }
2974 if (var3){
2975 goto RET_LABEL;
2976 } else {
2977 }
2978 {
2979 var9 = parser_nodes__ABinopExpr__n_expr2(self);
2980 }
2981 {
2982 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_typing__AExpr__mtype]))(var9) /* mtype on <var9:AExpr>*/;
2983 }
2984 var_mtype = var10;
2985 /* <var_mtype:nullable MType> isa MNullType */
2986 cltype = type_model__MNullType.color;
2987 idtype = type_model__MNullType.id;
2988 if(var_mtype == NULL) {
2989 var11 = 0;
2990 } else {
2991 if(cltype >= var_mtype->type->table_size) {
2992 var11 = 0;
2993 } else {
2994 var11 = var_mtype->type->type_table[cltype] == idtype;
2995 }
2996 }
2997 var12 = !var11;
2998 if (var12){
2999 goto RET_LABEL;
3000 } else {
3001 }
3002 {
3003 var13 = typing__TypeVisitor__get_variable(var_v, self, var_variable);
3004 }
3005 var_vartype = var13;
3006 /* <var_vartype:nullable MType> isa MNullableType */
3007 cltype15 = type_model__MNullableType.color;
3008 idtype16 = type_model__MNullableType.id;
3009 if(var_vartype == NULL) {
3010 var14 = 0;
3011 } else {
3012 if(cltype15 >= var_vartype->type->table_size) {
3013 var14 = 0;
3014 } else {
3015 var14 = var_vartype->type->type_table[cltype15] == idtype16;
3016 }
3017 }
3018 var17 = !var14;
3019 if (var17){
3020 goto RET_LABEL;
3021 } else {
3022 }
3023 {
3024 { /* Inline flow#AExpr#after_flow_context (self) on <self:AEqExpr> */
3025 var20 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AEqExpr> */
3026 var18 = var20;
3027 RET_LABEL19:(void)0;
3028 }
3029 }
3030 if (var18 == NULL) {
3031 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3032 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1306);
3033 show_backtrace(1);
3034 } else {
3035 { /* Inline flow#FlowContext#when_true (var18) on <var18:nullable FlowContext> */
3036 if (unlikely(var18 == NULL)) {
3037 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3038 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3039 show_backtrace(1);
3040 }
3041 var23 = var18->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var18:nullable FlowContext> */
3042 if (unlikely(var23 == NULL)) {
3043 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3044 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3045 show_backtrace(1);
3046 }
3047 var21 = var23;
3048 RET_LABEL22:(void)0;
3049 }
3050 }
3051 {
3052 typing__FlowContext__set_var(var21, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on <var21:FlowContext>*/
3053 }
3054 {
3055 { /* Inline flow#AExpr#after_flow_context (self) on <self:AEqExpr> */
3056 var26 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:AEqExpr> */
3057 var24 = var26;
3058 RET_LABEL25:(void)0;
3059 }
3060 }
3061 if (var24 == NULL) {
3062 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3063 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1307);
3064 show_backtrace(1);
3065 } else {
3066 { /* Inline flow#FlowContext#when_false (var24) on <var24:nullable FlowContext> */
3067 if (unlikely(var24 == NULL)) {
3068 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3069 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3070 show_backtrace(1);
3071 }
3072 var29 = var24->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var24:nullable FlowContext> */
3073 if (unlikely(var29 == NULL)) {
3074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3075 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3076 show_backtrace(1);
3077 }
3078 var27 = var29;
3079 RET_LABEL28:(void)0;
3080 }
3081 }
3082 {
3083 { /* Inline model#MNullableType#mtype (var_vartype) on <var_vartype:nullable MType(MNullableType)> */
3084 var32 = var_vartype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_vartype:nullable MType(MNullableType)> */
3085 if (unlikely(var32 == NULL)) {
3086 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3087 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
3088 show_backtrace(1);
3089 }
3090 var30 = var32;
3091 RET_LABEL31:(void)0;
3092 }
3093 }
3094 {
3095 typing__FlowContext__set_var(var27, var_variable, var30); /* Direct call typing#FlowContext#set_var on <var27:FlowContext>*/
3096 }
3097 RET_LABEL:;
3098 }
3099 /* method typing#AEqExpr#accept_typing for (self: Object, TypeVisitor) */
3100 void VIRTUAL_typing__AEqExpr__accept_typing(val* self, val* p0) {
3101 typing__AEqExpr__accept_typing(self, p0); /* Direct call typing#AEqExpr#accept_typing on <self:Object(AEqExpr)>*/
3102 RET_LABEL:;
3103 }
3104 /* method typing#ANeExpr#property_name for (self: ANeExpr): String */
3105 val* typing__ANeExpr__property_name(val* self) {
3106 val* var /* : String */;
3107 static val* varonce;
3108 val* var1 /* : String */;
3109 char* var2 /* : NativeString */;
3110 long var3 /* : Int */;
3111 val* var4 /* : FlatString */;
3112 if (varonce) {
3113 var1 = varonce;
3114 } else {
3115 var2 = "!=";
3116 var3 = 2;
3117 var4 = string__NativeString__to_s_with_length(var2, var3);
3118 var1 = var4;
3119 varonce = var1;
3120 }
3121 var = var1;
3122 goto RET_LABEL;
3123 RET_LABEL:;
3124 return var;
3125 }
3126 /* method typing#ANeExpr#property_name for (self: Object): String */
3127 val* VIRTUAL_typing__ANeExpr__property_name(val* self) {
3128 val* var /* : String */;
3129 val* var1 /* : String */;
3130 var1 = typing__ANeExpr__property_name(self);
3131 var = var1;
3132 RET_LABEL:;
3133 return var;
3134 }
3135 /* method typing#ANeExpr#accept_typing for (self: ANeExpr, TypeVisitor) */
3136 void typing__ANeExpr__accept_typing(val* self, val* p0) {
3137 val* var_v /* var v: TypeVisitor */;
3138 val* var /* : AExpr */;
3139 val* var1 /* : nullable Variable */;
3140 val* var_variable /* var variable: nullable Variable */;
3141 val* var2 /* : null */;
3142 short int var3 /* : Bool */;
3143 short int var4 /* : Bool */;
3144 val* var_other /* var other: nullable Object */;
3145 short int var6 /* : Bool */;
3146 short int var8 /* : Bool */;
3147 val* var9 /* : AExpr */;
3148 val* var10 /* : nullable MType */;
3149 val* var_mtype /* var mtype: nullable MType */;
3150 short int var11 /* : Bool */;
3151 int cltype;
3152 int idtype;
3153 short int var12 /* : Bool */;
3154 val* var13 /* : nullable MType */;
3155 val* var_vartype /* var vartype: nullable MType */;
3156 short int var14 /* : Bool */;
3157 int cltype15;
3158 int idtype16;
3159 short int var17 /* : Bool */;
3160 val* var18 /* : nullable FlowContext */;
3161 val* var20 /* : nullable FlowContext */;
3162 val* var21 /* : FlowContext */;
3163 val* var23 /* : FlowContext */;
3164 val* var24 /* : nullable FlowContext */;
3165 val* var26 /* : nullable FlowContext */;
3166 val* var27 /* : FlowContext */;
3167 val* var29 /* : FlowContext */;
3168 val* var30 /* : MType */;
3169 val* var32 /* : MType */;
3170 var_v = p0;
3171 {
3172 ((void (*)(val*, val*))(self->class->vft[COLOR_typing__ANeExpr__accept_typing]))(self, p0) /* accept_typing on <self:ANeExpr>*/;
3173 }
3174 {
3175 var = parser_nodes__ASendExpr__n_expr(self);
3176 }
3177 {
3178 var1 = ((val* (*)(val*))(var->class->vft[COLOR_typing__AExpr__its_variable]))(var) /* its_variable on <var:AExpr>*/;
3179 }
3180 var_variable = var1;
3181 var2 = NULL;
3182 if (var_variable == NULL) {
3183 var3 = 1; /* is null */
3184 } else {
3185 var3 = 0; /* arg is null but recv is not */
3186 }
3187 if (0) {
3188 { /* Inline kernel#Object#== (var_variable,var2) on <var_variable:nullable Variable> */
3189 var_other = var2;
3190 {
3191 { /* Inline kernel#Object#is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
3192 var8 = var_variable == var_other;
3193 var6 = var8;
3194 goto RET_LABEL7;
3195 RET_LABEL7:(void)0;
3196 }
3197 }
3198 var4 = var6;
3199 goto RET_LABEL5;
3200 RET_LABEL5:(void)0;
3201 }
3202 var3 = var4;
3203 }
3204 if (var3){
3205 goto RET_LABEL;
3206 } else {
3207 }
3208 {
3209 var9 = parser_nodes__ABinopExpr__n_expr2(self);
3210 }
3211 {
3212 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_typing__AExpr__mtype]))(var9) /* mtype on <var9:AExpr>*/;
3213 }
3214 var_mtype = var10;
3215 /* <var_mtype:nullable MType> isa MNullType */
3216 cltype = type_model__MNullType.color;
3217 idtype = type_model__MNullType.id;
3218 if(var_mtype == NULL) {
3219 var11 = 0;
3220 } else {
3221 if(cltype >= var_mtype->type->table_size) {
3222 var11 = 0;
3223 } else {
3224 var11 = var_mtype->type->type_table[cltype] == idtype;
3225 }
3226 }
3227 var12 = !var11;
3228 if (var12){
3229 goto RET_LABEL;
3230 } else {
3231 }
3232 {
3233 var13 = typing__TypeVisitor__get_variable(var_v, self, var_variable);
3234 }
3235 var_vartype = var13;
3236 /* <var_vartype:nullable MType> isa MNullableType */
3237 cltype15 = type_model__MNullableType.color;
3238 idtype16 = type_model__MNullableType.id;
3239 if(var_vartype == NULL) {
3240 var14 = 0;
3241 } else {
3242 if(cltype15 >= var_vartype->type->table_size) {
3243 var14 = 0;
3244 } else {
3245 var14 = var_vartype->type->type_table[cltype15] == idtype16;
3246 }
3247 }
3248 var17 = !var14;
3249 if (var17){
3250 goto RET_LABEL;
3251 } else {
3252 }
3253 {
3254 { /* Inline flow#AExpr#after_flow_context (self) on <self:ANeExpr> */
3255 var20 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:ANeExpr> */
3256 var18 = var20;
3257 RET_LABEL19:(void)0;
3258 }
3259 }
3260 if (var18 == NULL) {
3261 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3262 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1323);
3263 show_backtrace(1);
3264 } else {
3265 { /* Inline flow#FlowContext#when_false (var18) on <var18:nullable FlowContext> */
3266 if (unlikely(var18 == NULL)) {
3267 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3268 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3269 show_backtrace(1);
3270 }
3271 var23 = var18->attrs[COLOR_flow__FlowContext___when_false].val; /* _when_false on <var18:nullable FlowContext> */
3272 if (unlikely(var23 == NULL)) {
3273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
3274 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 231);
3275 show_backtrace(1);
3276 }
3277 var21 = var23;
3278 RET_LABEL22:(void)0;
3279 }
3280 }
3281 {
3282 typing__FlowContext__set_var(var21, var_variable, var_mtype); /* Direct call typing#FlowContext#set_var on <var21:FlowContext>*/
3283 }
3284 {
3285 { /* Inline flow#AExpr#after_flow_context (self) on <self:ANeExpr> */
3286 var26 = self->attrs[COLOR_flow__AExpr___after_flow_context].val; /* _after_flow_context on <self:ANeExpr> */
3287 var24 = var26;
3288 RET_LABEL25:(void)0;
3289 }
3290 }
3291 if (var24 == NULL) {
3292 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3293 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1324);
3294 show_backtrace(1);
3295 } else {
3296 { /* Inline flow#FlowContext#when_true (var24) on <var24:nullable FlowContext> */
3297 if (unlikely(var24 == NULL)) {
3298 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3299 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3300 show_backtrace(1);
3301 }
3302 var29 = var24->attrs[COLOR_flow__FlowContext___when_true].val; /* _when_true on <var24:nullable FlowContext> */
3303 if (unlikely(var29 == NULL)) {
3304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
3305 PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 228);
3306 show_backtrace(1);
3307 }
3308 var27 = var29;
3309 RET_LABEL28:(void)0;
3310 }
3311 }
3312 {
3313 { /* Inline model#MNullableType#mtype (var_vartype) on <var_vartype:nullable MType(MNullableType)> */
3314 var32 = var_vartype->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_vartype:nullable MType(MNullableType)> */
3315 if (unlikely(var32 == NULL)) {
3316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3317 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
3318 show_backtrace(1);
3319 }
3320 var30 = var32;
3321 RET_LABEL31:(void)0;
3322 }
3323 }
3324 {
3325 typing__FlowContext__set_var(var27, var_variable, var30); /* Direct call typing#FlowContext#set_var on <var27:FlowContext>*/
3326 }
3327 RET_LABEL:;
3328 }
3329 /* method typing#ANeExpr#accept_typing for (self: Object, TypeVisitor) */
3330 void VIRTUAL_typing__ANeExpr__accept_typing(val* self, val* p0) {
3331 typing__ANeExpr__accept_typing(self, p0); /* Direct call typing#ANeExpr#accept_typing on <self:Object(ANeExpr)>*/
3332 RET_LABEL:;
3333 }
3334 /* method typing#ALtExpr#property_name for (self: ALtExpr): String */
3335 val* typing__ALtExpr__property_name(val* self) {
3336 val* var /* : String */;
3337 static val* varonce;
3338 val* var1 /* : String */;
3339 char* var2 /* : NativeString */;
3340 long var3 /* : Int */;
3341 val* var4 /* : FlatString */;
3342 if (varonce) {
3343 var1 = varonce;
3344 } else {
3345 var2 = "<";
3346 var3 = 1;
3347 var4 = string__NativeString__to_s_with_length(var2, var3);
3348 var1 = var4;
3349 varonce = var1;
3350 }
3351 var = var1;
3352 goto RET_LABEL;
3353 RET_LABEL:;
3354 return var;
3355 }
3356 /* method typing#ALtExpr#property_name for (self: Object): String */
3357 val* VIRTUAL_typing__ALtExpr__property_name(val* self) {
3358 val* var /* : String */;
3359 val* var1 /* : String */;
3360 var1 = typing__ALtExpr__property_name(self);
3361 var = var1;
3362 RET_LABEL:;
3363 return var;
3364 }
3365 /* method typing#ALeExpr#property_name for (self: ALeExpr): String */
3366 val* typing__ALeExpr__property_name(val* self) {
3367 val* var /* : String */;
3368 static val* varonce;
3369 val* var1 /* : String */;
3370 char* var2 /* : NativeString */;
3371 long var3 /* : Int */;
3372 val* var4 /* : FlatString */;
3373 if (varonce) {
3374 var1 = varonce;
3375 } else {
3376 var2 = "<=";
3377 var3 = 2;
3378 var4 = string__NativeString__to_s_with_length(var2, var3);
3379 var1 = var4;
3380 varonce = var1;
3381 }
3382 var = var1;
3383 goto RET_LABEL;
3384 RET_LABEL:;
3385 return var;
3386 }
3387 /* method typing#ALeExpr#property_name for (self: Object): String */
3388 val* VIRTUAL_typing__ALeExpr__property_name(val* self) {
3389 val* var /* : String */;
3390 val* var1 /* : String */;
3391 var1 = typing__ALeExpr__property_name(self);
3392 var = var1;
3393 RET_LABEL:;
3394 return var;
3395 }
3396 /* method typing#ALlExpr#property_name for (self: ALlExpr): String */
3397 val* typing__ALlExpr__property_name(val* self) {
3398 val* var /* : String */;
3399 static val* varonce;
3400 val* var1 /* : String */;
3401 char* var2 /* : NativeString */;
3402 long var3 /* : Int */;
3403 val* var4 /* : FlatString */;
3404 if (varonce) {
3405 var1 = varonce;
3406 } else {
3407 var2 = "<<";
3408 var3 = 2;
3409 var4 = string__NativeString__to_s_with_length(var2, var3);
3410 var1 = var4;
3411 varonce = var1;
3412 }
3413 var = var1;
3414 goto RET_LABEL;
3415 RET_LABEL:;
3416 return var;
3417 }
3418 /* method typing#ALlExpr#property_name for (self: Object): String */
3419 val* VIRTUAL_typing__ALlExpr__property_name(val* self) {
3420 val* var /* : String */;
3421 val* var1 /* : String */;
3422 var1 = typing__ALlExpr__property_name(self);
3423 var = var1;
3424 RET_LABEL:;
3425 return var;
3426 }
3427 /* method typing#AGtExpr#property_name for (self: AGtExpr): String */
3428 val* typing__AGtExpr__property_name(val* self) {
3429 val* var /* : String */;
3430 static val* varonce;
3431 val* var1 /* : String */;
3432 char* var2 /* : NativeString */;
3433 long var3 /* : Int */;
3434 val* var4 /* : FlatString */;
3435 if (varonce) {
3436 var1 = varonce;
3437 } else {
3438 var2 = ">";
3439 var3 = 1;
3440 var4 = string__NativeString__to_s_with_length(var2, var3);
3441 var1 = var4;
3442 varonce = var1;
3443 }
3444 var = var1;
3445 goto RET_LABEL;
3446 RET_LABEL:;
3447 return var;
3448 }
3449 /* method typing#AGtExpr#property_name for (self: Object): String */
3450 val* VIRTUAL_typing__AGtExpr__property_name(val* self) {
3451 val* var /* : String */;
3452 val* var1 /* : String */;
3453 var1 = typing__AGtExpr__property_name(self);
3454 var = var1;
3455 RET_LABEL:;
3456 return var;
3457 }
3458 /* method typing#AGeExpr#property_name for (self: AGeExpr): String */
3459 val* typing__AGeExpr__property_name(val* self) {
3460 val* var /* : String */;
3461 static val* varonce;
3462 val* var1 /* : String */;
3463 char* var2 /* : NativeString */;
3464 long var3 /* : Int */;
3465 val* var4 /* : FlatString */;
3466 if (varonce) {
3467 var1 = varonce;
3468 } else {
3469 var2 = ">=";
3470 var3 = 2;
3471 var4 = string__NativeString__to_s_with_length(var2, var3);
3472 var1 = var4;
3473 varonce = var1;
3474 }
3475 var = var1;
3476 goto RET_LABEL;
3477 RET_LABEL:;
3478 return var;
3479 }
3480 /* method typing#AGeExpr#property_name for (self: Object): String */
3481 val* VIRTUAL_typing__AGeExpr__property_name(val* self) {
3482 val* var /* : String */;
3483 val* var1 /* : String */;
3484 var1 = typing__AGeExpr__property_name(self);
3485 var = var1;
3486 RET_LABEL:;
3487 return var;
3488 }
3489 /* method typing#AGgExpr#property_name for (self: AGgExpr): String */
3490 val* typing__AGgExpr__property_name(val* self) {
3491 val* var /* : String */;
3492 static val* varonce;
3493 val* var1 /* : String */;
3494 char* var2 /* : NativeString */;
3495 long var3 /* : Int */;
3496 val* var4 /* : FlatString */;
3497 if (varonce) {
3498 var1 = varonce;
3499 } else {
3500 var2 = ">>";
3501 var3 = 2;
3502 var4 = string__NativeString__to_s_with_length(var2, var3);
3503 var1 = var4;
3504 varonce = var1;
3505 }
3506 var = var1;
3507 goto RET_LABEL;
3508 RET_LABEL:;
3509 return var;
3510 }
3511 /* method typing#AGgExpr#property_name for (self: Object): String */
3512 val* VIRTUAL_typing__AGgExpr__property_name(val* self) {
3513 val* var /* : String */;
3514 val* var1 /* : String */;
3515 var1 = typing__AGgExpr__property_name(self);
3516 var = var1;
3517 RET_LABEL:;
3518 return var;
3519 }
3520 /* method typing#APlusExpr#property_name for (self: APlusExpr): String */
3521 val* typing__APlusExpr__property_name(val* self) {
3522 val* var /* : String */;
3523 static val* varonce;
3524 val* var1 /* : String */;
3525 char* var2 /* : NativeString */;
3526 long var3 /* : Int */;
3527 val* var4 /* : FlatString */;
3528 if (varonce) {
3529 var1 = varonce;
3530 } else {
3531 var2 = "+";
3532 var3 = 1;
3533 var4 = string__NativeString__to_s_with_length(var2, var3);
3534 var1 = var4;
3535 varonce = var1;
3536 }
3537 var = var1;
3538 goto RET_LABEL;
3539 RET_LABEL:;
3540 return var;
3541 }
3542 /* method typing#APlusExpr#property_name for (self: Object): String */
3543 val* VIRTUAL_typing__APlusExpr__property_name(val* self) {
3544 val* var /* : String */;
3545 val* var1 /* : String */;
3546 var1 = typing__APlusExpr__property_name(self);
3547 var = var1;
3548 RET_LABEL:;
3549 return var;
3550 }
3551 /* method typing#AMinusExpr#property_name for (self: AMinusExpr): String */
3552 val* typing__AMinusExpr__property_name(val* self) {
3553 val* var /* : String */;
3554 static val* varonce;
3555 val* var1 /* : String */;
3556 char* var2 /* : NativeString */;
3557 long var3 /* : Int */;
3558 val* var4 /* : FlatString */;
3559 if (varonce) {
3560 var1 = varonce;
3561 } else {
3562 var2 = "-";
3563 var3 = 1;
3564 var4 = string__NativeString__to_s_with_length(var2, var3);
3565 var1 = var4;
3566 varonce = var1;
3567 }
3568 var = var1;
3569 goto RET_LABEL;
3570 RET_LABEL:;
3571 return var;
3572 }
3573 /* method typing#AMinusExpr#property_name for (self: Object): String */
3574 val* VIRTUAL_typing__AMinusExpr__property_name(val* self) {
3575 val* var /* : String */;
3576 val* var1 /* : String */;
3577 var1 = typing__AMinusExpr__property_name(self);
3578 var = var1;
3579 RET_LABEL:;
3580 return var;
3581 }
3582 /* method typing#AStarshipExpr#property_name for (self: AStarshipExpr): String */
3583 val* typing__AStarshipExpr__property_name(val* self) {
3584 val* var /* : String */;
3585 static val* varonce;
3586 val* var1 /* : String */;
3587 char* var2 /* : NativeString */;
3588 long var3 /* : Int */;
3589 val* var4 /* : FlatString */;
3590 if (varonce) {
3591 var1 = varonce;
3592 } else {
3593 var2 = "<=>";
3594 var3 = 3;
3595 var4 = string__NativeString__to_s_with_length(var2, var3);
3596 var1 = var4;
3597 varonce = var1;
3598 }
3599 var = var1;
3600 goto RET_LABEL;
3601 RET_LABEL:;
3602 return var;
3603 }
3604 /* method typing#AStarshipExpr#property_name for (self: Object): String */
3605 val* VIRTUAL_typing__AStarshipExpr__property_name(val* self) {
3606 val* var /* : String */;
3607 val* var1 /* : String */;
3608 var1 = typing__AStarshipExpr__property_name(self);
3609 var = var1;
3610 RET_LABEL:;
3611 return var;
3612 }
3613 /* method typing#AStarExpr#property_name for (self: AStarExpr): String */
3614 val* typing__AStarExpr__property_name(val* self) {
3615 val* var /* : String */;
3616 static val* varonce;
3617 val* var1 /* : String */;
3618 char* var2 /* : NativeString */;
3619 long var3 /* : Int */;
3620 val* var4 /* : FlatString */;
3621 if (varonce) {
3622 var1 = varonce;
3623 } else {
3624 var2 = "*";
3625 var3 = 1;
3626 var4 = string__NativeString__to_s_with_length(var2, var3);
3627 var1 = var4;
3628 varonce = var1;
3629 }
3630 var = var1;
3631 goto RET_LABEL;
3632 RET_LABEL:;
3633 return var;
3634 }
3635 /* method typing#AStarExpr#property_name for (self: Object): String */
3636 val* VIRTUAL_typing__AStarExpr__property_name(val* self) {
3637 val* var /* : String */;
3638 val* var1 /* : String */;
3639 var1 = typing__AStarExpr__property_name(self);
3640 var = var1;
3641 RET_LABEL:;
3642 return var;
3643 }
3644 /* method typing#ASlashExpr#property_name for (self: ASlashExpr): String */
3645 val* typing__ASlashExpr__property_name(val* self) {
3646 val* var /* : String */;
3647 static val* varonce;
3648 val* var1 /* : String */;
3649 char* var2 /* : NativeString */;
3650 long var3 /* : Int */;
3651 val* var4 /* : FlatString */;
3652 if (varonce) {
3653 var1 = varonce;
3654 } else {
3655 var2 = "/";
3656 var3 = 1;
3657 var4 = string__NativeString__to_s_with_length(var2, var3);
3658 var1 = var4;
3659 varonce = var1;
3660 }
3661 var = var1;
3662 goto RET_LABEL;
3663 RET_LABEL:;
3664 return var;
3665 }
3666 /* method typing#ASlashExpr#property_name for (self: Object): String */
3667 val* VIRTUAL_typing__ASlashExpr__property_name(val* self) {
3668 val* var /* : String */;
3669 val* var1 /* : String */;
3670 var1 = typing__ASlashExpr__property_name(self);
3671 var = var1;
3672 RET_LABEL:;
3673 return var;
3674 }
3675 /* method typing#APercentExpr#property_name for (self: APercentExpr): String */
3676 val* typing__APercentExpr__property_name(val* self) {
3677 val* var /* : String */;
3678 static val* varonce;
3679 val* var1 /* : String */;
3680 char* var2 /* : NativeString */;
3681 long var3 /* : Int */;
3682 val* var4 /* : FlatString */;
3683 if (varonce) {
3684 var1 = varonce;
3685 } else {
3686 var2 = "%";
3687 var3 = 1;
3688 var4 = string__NativeString__to_s_with_length(var2, var3);
3689 var1 = var4;
3690 varonce = var1;
3691 }
3692 var = var1;
3693 goto RET_LABEL;
3694 RET_LABEL:;
3695 return var;
3696 }
3697 /* method typing#APercentExpr#property_name for (self: Object): String */
3698 val* VIRTUAL_typing__APercentExpr__property_name(val* self) {
3699 val* var /* : String */;
3700 val* var1 /* : String */;
3701 var1 = typing__APercentExpr__property_name(self);
3702 var = var1;
3703 RET_LABEL:;
3704 return var;
3705 }
3706 /* method typing#AUminusExpr#property_name for (self: AUminusExpr): String */
3707 val* typing__AUminusExpr__property_name(val* self) {
3708 val* var /* : String */;
3709 static val* varonce;
3710 val* var1 /* : String */;
3711 char* var2 /* : NativeString */;
3712 long var3 /* : Int */;
3713 val* var4 /* : FlatString */;
3714 if (varonce) {
3715 var1 = varonce;
3716 } else {
3717 var2 = "unary -";
3718 var3 = 7;
3719 var4 = string__NativeString__to_s_with_length(var2, var3);
3720 var1 = var4;
3721 varonce = var1;
3722 }
3723 var = var1;
3724 goto RET_LABEL;
3725 RET_LABEL:;
3726 return var;
3727 }
3728 /* method typing#AUminusExpr#property_name for (self: Object): String */
3729 val* VIRTUAL_typing__AUminusExpr__property_name(val* self) {
3730 val* var /* : String */;
3731 val* var1 /* : String */;
3732 var1 = typing__AUminusExpr__property_name(self);
3733 var = var1;
3734 RET_LABEL:;
3735 return var;
3736 }
3737 /* method typing#AUminusExpr#compute_raw_arguments for (self: AUminusExpr): Array[AExpr] */
3738 val* typing__AUminusExpr__compute_raw_arguments(val* self) {
3739 val* var /* : Array[AExpr] */;
3740 val* var1 /* : Array[AExpr] */;
3741 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AExpr);
3742 {
3743 array__Array__init(var1); /* Direct call array#Array#init on <var1:Array[AExpr]>*/
3744 }
3745 var = var1;
3746 goto RET_LABEL;
3747 RET_LABEL:;
3748 return var;
3749 }
3750 /* method typing#AUminusExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
3751 val* VIRTUAL_typing__AUminusExpr__compute_raw_arguments(val* self) {
3752 val* var /* : Array[AExpr] */;
3753 val* var1 /* : Array[AExpr] */;
3754 var1 = typing__AUminusExpr__compute_raw_arguments(self);
3755 var = var1;
3756 RET_LABEL:;
3757 return var;
3758 }
3759 /* method typing#ACallExpr#property_name for (self: ACallExpr): String */
3760 val* typing__ACallExpr__property_name(val* self) {
3761 val* var /* : String */;
3762 val* var1 /* : TId */;
3763 val* var2 /* : String */;
3764 {
3765 var1 = parser_nodes__ACallFormExpr__n_id(self);
3766 }
3767 {
3768 var2 = lexer_work__Token__text(var1);
3769 }
3770 var = var2;
3771 goto RET_LABEL;
3772 RET_LABEL:;
3773 return var;
3774 }
3775 /* method typing#ACallExpr#property_name for (self: Object): String */
3776 val* VIRTUAL_typing__ACallExpr__property_name(val* self) {
3777 val* var /* : String */;
3778 val* var1 /* : String */;
3779 var1 = typing__ACallExpr__property_name(self);
3780 var = var1;
3781 RET_LABEL:;
3782 return var;
3783 }
3784 /* method typing#ACallExpr#compute_raw_arguments for (self: ACallExpr): Array[AExpr] */
3785 val* typing__ACallExpr__compute_raw_arguments(val* self) {
3786 val* var /* : Array[AExpr] */;
3787 val* var1 /* : AExprs */;
3788 val* var2 /* : Array[AExpr] */;
3789 {
3790 var1 = parser_nodes__ACallFormExpr__n_args(self);
3791 }
3792 {
3793 var2 = typing__AExprs__to_a(var1);
3794 }
3795 var = var2;
3796 goto RET_LABEL;
3797 RET_LABEL:;
3798 return var;
3799 }
3800 /* method typing#ACallExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
3801 val* VIRTUAL_typing__ACallExpr__compute_raw_arguments(val* self) {
3802 val* var /* : Array[AExpr] */;
3803 val* var1 /* : Array[AExpr] */;
3804 var1 = typing__ACallExpr__compute_raw_arguments(self);
3805 var = var1;
3806 RET_LABEL:;
3807 return var;
3808 }
3809 /* method typing#ACallAssignExpr#property_name for (self: ACallAssignExpr): String */
3810 val* typing__ACallAssignExpr__property_name(val* self) {
3811 val* var /* : String */;
3812 val* var1 /* : TId */;
3813 val* var2 /* : String */;
3814 static val* varonce;
3815 val* var3 /* : String */;
3816 char* var4 /* : NativeString */;
3817 long var5 /* : Int */;
3818 val* var6 /* : FlatString */;
3819 val* var7 /* : String */;
3820 {
3821 var1 = parser_nodes__ACallFormExpr__n_id(self);
3822 }
3823 {
3824 var2 = lexer_work__Token__text(var1);
3825 }
3826 if (varonce) {
3827 var3 = varonce;
3828 } else {
3829 var4 = "=";
3830 var5 = 1;
3831 var6 = string__NativeString__to_s_with_length(var4, var5);
3832 var3 = var6;
3833 varonce = var3;
3834 }
3835 {
3836 var7 = string__FlatString___43d(var2, var3);
3837 }
3838 var = var7;
3839 goto RET_LABEL;
3840 RET_LABEL:;
3841 return var;
3842 }
3843 /* method typing#ACallAssignExpr#property_name for (self: Object): String */
3844 val* VIRTUAL_typing__ACallAssignExpr__property_name(val* self) {
3845 val* var /* : String */;
3846 val* var1 /* : String */;
3847 var1 = typing__ACallAssignExpr__property_name(self);
3848 var = var1;
3849 RET_LABEL:;
3850 return var;
3851 }
3852 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: ACallAssignExpr): Array[AExpr] */
3853 val* typing__ACallAssignExpr__compute_raw_arguments(val* self) {
3854 val* var /* : Array[AExpr] */;
3855 val* var1 /* : AExprs */;
3856 val* var2 /* : Array[AExpr] */;
3857 val* var_res /* var res: Array[AExpr] */;
3858 val* var3 /* : AExpr */;
3859 {
3860 var1 = parser_nodes__ACallFormExpr__n_args(self);
3861 }
3862 {
3863 var2 = typing__AExprs__to_a(var1);
3864 }
3865 var_res = var2;
3866 {
3867 var3 = parser_nodes__AAssignFormExpr__n_value(self);
3868 }
3869 {
3870 array__Array__add(var_res, var3); /* Direct call array#Array#add on <var_res:Array[AExpr]>*/
3871 }
3872 var = var_res;
3873 goto RET_LABEL;
3874 RET_LABEL:;
3875 return var;
3876 }
3877 /* method typing#ACallAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
3878 val* VIRTUAL_typing__ACallAssignExpr__compute_raw_arguments(val* self) {
3879 val* var /* : Array[AExpr] */;
3880 val* var1 /* : Array[AExpr] */;
3881 var1 = typing__ACallAssignExpr__compute_raw_arguments(self);
3882 var = var1;
3883 RET_LABEL:;
3884 return var;
3885 }
3886 /* method typing#ABraExpr#property_name for (self: ABraExpr): String */
3887 val* typing__ABraExpr__property_name(val* self) {
3888 val* var /* : String */;
3889 static val* varonce;
3890 val* var1 /* : String */;
3891 char* var2 /* : NativeString */;
3892 long var3 /* : Int */;
3893 val* var4 /* : FlatString */;
3894 if (varonce) {
3895 var1 = varonce;
3896 } else {
3897 var2 = "[]";
3898 var3 = 2;
3899 var4 = string__NativeString__to_s_with_length(var2, var3);
3900 var1 = var4;
3901 varonce = var1;
3902 }
3903 var = var1;
3904 goto RET_LABEL;
3905 RET_LABEL:;
3906 return var;
3907 }
3908 /* method typing#ABraExpr#property_name for (self: Object): String */
3909 val* VIRTUAL_typing__ABraExpr__property_name(val* self) {
3910 val* var /* : String */;
3911 val* var1 /* : String */;
3912 var1 = typing__ABraExpr__property_name(self);
3913 var = var1;
3914 RET_LABEL:;
3915 return var;
3916 }
3917 /* method typing#ABraExpr#compute_raw_arguments for (self: ABraExpr): Array[AExpr] */
3918 val* typing__ABraExpr__compute_raw_arguments(val* self) {
3919 val* var /* : Array[AExpr] */;
3920 val* var1 /* : AExprs */;
3921 val* var2 /* : Array[AExpr] */;
3922 {
3923 var1 = parser_nodes__ABraFormExpr__n_args(self);
3924 }
3925 {
3926 var2 = typing__AExprs__to_a(var1);
3927 }
3928 var = var2;
3929 goto RET_LABEL;
3930 RET_LABEL:;
3931 return var;
3932 }
3933 /* method typing#ABraExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
3934 val* VIRTUAL_typing__ABraExpr__compute_raw_arguments(val* self) {
3935 val* var /* : Array[AExpr] */;
3936 val* var1 /* : Array[AExpr] */;
3937 var1 = typing__ABraExpr__compute_raw_arguments(self);
3938 var = var1;
3939 RET_LABEL:;
3940 return var;
3941 }
3942 /* method typing#ABraAssignExpr#property_name for (self: ABraAssignExpr): String */
3943 val* typing__ABraAssignExpr__property_name(val* self) {
3944 val* var /* : String */;
3945 static val* varonce;
3946 val* var1 /* : String */;
3947 char* var2 /* : NativeString */;
3948 long var3 /* : Int */;
3949 val* var4 /* : FlatString */;
3950 if (varonce) {
3951 var1 = varonce;
3952 } else {
3953 var2 = "[]=";
3954 var3 = 3;
3955 var4 = string__NativeString__to_s_with_length(var2, var3);
3956 var1 = var4;
3957 varonce = var1;
3958 }
3959 var = var1;
3960 goto RET_LABEL;
3961 RET_LABEL:;
3962 return var;
3963 }
3964 /* method typing#ABraAssignExpr#property_name for (self: Object): String */
3965 val* VIRTUAL_typing__ABraAssignExpr__property_name(val* self) {
3966 val* var /* : String */;
3967 val* var1 /* : String */;
3968 var1 = typing__ABraAssignExpr__property_name(self);
3969 var = var1;
3970 RET_LABEL:;
3971 return var;
3972 }
3973 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: ABraAssignExpr): Array[AExpr] */
3974 val* typing__ABraAssignExpr__compute_raw_arguments(val* self) {
3975 val* var /* : Array[AExpr] */;
3976 val* var1 /* : AExprs */;
3977 val* var2 /* : Array[AExpr] */;
3978 val* var_res /* var res: Array[AExpr] */;
3979 val* var3 /* : AExpr */;
3980 {
3981 var1 = parser_nodes__ABraFormExpr__n_args(self);
3982 }
3983 {
3984 var2 = typing__AExprs__to_a(var1);
3985 }
3986 var_res = var2;
3987 {
3988 var3 = parser_nodes__AAssignFormExpr__n_value(self);
3989 }
3990 {
3991 array__Array__add(var_res, var3); /* Direct call array#Array#add on <var_res:Array[AExpr]>*/
3992 }
3993 var = var_res;
3994 goto RET_LABEL;
3995 RET_LABEL:;
3996 return var;
3997 }
3998 /* method typing#ABraAssignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
3999 val* VIRTUAL_typing__ABraAssignExpr__compute_raw_arguments(val* self) {
4000 val* var /* : Array[AExpr] */;
4001 val* var1 /* : Array[AExpr] */;
4002 var1 = typing__ABraAssignExpr__compute_raw_arguments(self);
4003 var = var1;
4004 RET_LABEL:;
4005 return var;
4006 }
4007 /* method typing#ASendReassignFormExpr#write_callsite for (self: ASendReassignFormExpr): nullable CallSite */
4008 val* typing__ASendReassignFormExpr__write_callsite(val* self) {
4009 val* var /* : nullable CallSite */;
4010 val* var1 /* : nullable CallSite */;
4011 var1 = self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on <self:ASendReassignFormExpr> */
4012 var = var1;
4013 RET_LABEL:;
4014 return var;
4015 }
4016 /* method typing#ASendReassignFormExpr#write_callsite for (self: Object): nullable CallSite */
4017 val* VIRTUAL_typing__ASendReassignFormExpr__write_callsite(val* self) {
4018 val* var /* : nullable CallSite */;
4019 val* var1 /* : nullable CallSite */;
4020 val* var3 /* : nullable CallSite */;
4021 { /* Inline typing#ASendReassignFormExpr#write_callsite (self) on <self:Object(ASendReassignFormExpr)> */
4022 var3 = self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val; /* _write_callsite on <self:Object(ASendReassignFormExpr)> */
4023 var1 = var3;
4024 RET_LABEL2:(void)0;
4025 }
4026 var = var1;
4027 RET_LABEL:;
4028 return var;
4029 }
4030 /* method typing#ASendReassignFormExpr#write_callsite= for (self: ASendReassignFormExpr, nullable CallSite) */
4031 void typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
4032 self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val = p0; /* _write_callsite on <self:ASendReassignFormExpr> */
4033 RET_LABEL:;
4034 }
4035 /* method typing#ASendReassignFormExpr#write_callsite= for (self: Object, nullable CallSite) */
4036 void VIRTUAL_typing__ASendReassignFormExpr__write_callsite_61d(val* self, val* p0) {
4037 { /* Inline typing#ASendReassignFormExpr#write_callsite= (self,p0) on <self:Object(ASendReassignFormExpr)> */
4038 self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val = p0; /* _write_callsite on <self:Object(ASendReassignFormExpr)> */
4039 RET_LABEL1:(void)0;
4040 }
4041 RET_LABEL:;
4042 }
4043 /* method typing#ASendReassignFormExpr#accept_typing for (self: ASendReassignFormExpr, TypeVisitor) */
4044 void typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
4045 val* var_v /* var v: TypeVisitor */;
4046 val* var /* : AExpr */;
4047 val* var1 /* : nullable MType */;
4048 val* var_recvtype /* var recvtype: nullable MType */;
4049 val* var2 /* : String */;
4050 val* var_name /* var name: String */;
4051 val* var3 /* : null */;
4052 short int var4 /* : Bool */;
4053 short int var5 /* : Bool */;
4054 val* var_other /* var other: nullable Object */;
4055 short int var7 /* : Bool */;
4056 short int var9 /* : Bool */;
4057 short int var10 /* : Bool */;
4058 int cltype;
4059 int idtype;
4060 static val* varonce;
4061 val* var11 /* : String */;
4062 char* var12 /* : NativeString */;
4063 long var13 /* : Int */;
4064 val* var14 /* : FlatString */;
4065 static val* varonce15;
4066 val* var16 /* : String */;
4067 char* var17 /* : NativeString */;
4068 long var18 /* : Int */;
4069 val* var19 /* : FlatString */;
4070 val* var20 /* : Array[Object] */;
4071 long var21 /* : Int */;
4072 val* var22 /* : NativeArray[Object] */;
4073 val* var23 /* : String */;
4074 val* var24 /* : AExpr */;
4075 short int var25 /* : Bool */;
4076 int cltype26;
4077 int idtype27;
4078 short int var_for_self /* var for_self: Bool */;
4079 val* var28 /* : nullable CallSite */;
4080 val* var_callsite /* var callsite: nullable CallSite */;
4081 val* var29 /* : null */;
4082 short int var30 /* : Bool */;
4083 short int var31 /* : Bool */;
4084 short int var33 /* : Bool */;
4085 short int var35 /* : Bool */;
4086 val* var37 /* : Array[AExpr] */;
4087 val* var_args /* var args: Array[AExpr] */;
4088 short int var38 /* : Bool */;
4089 val* var39 /* : MSignature */;
4090 val* var41 /* : MSignature */;
4091 val* var42 /* : nullable MType */;
4092 val* var44 /* : nullable MType */;
4093 val* var_readtype /* var readtype: nullable MType */;
4094 val* var45 /* : null */;
4095 short int var46 /* : Bool */;
4096 short int var47 /* : Bool */;
4097 short int var49 /* : Bool */;
4098 short int var51 /* : Bool */;
4099 static val* varonce52;
4100 val* var53 /* : String */;
4101 char* var54 /* : NativeString */;
4102 long var55 /* : Int */;
4103 val* var56 /* : FlatString */;
4104 static val* varonce57;
4105 val* var58 /* : String */;
4106 char* var59 /* : NativeString */;
4107 long var60 /* : Int */;
4108 val* var61 /* : FlatString */;
4109 val* var62 /* : Array[Object] */;
4110 long var63 /* : Int */;
4111 val* var64 /* : NativeArray[Object] */;
4112 val* var65 /* : String */;
4113 static val* varonce66;
4114 val* var67 /* : String */;
4115 char* var68 /* : NativeString */;
4116 long var69 /* : Int */;
4117 val* var70 /* : FlatString */;
4118 val* var71 /* : String */;
4119 val* var72 /* : AExpr */;
4120 short int var73 /* : Bool */;
4121 int cltype74;
4122 int idtype75;
4123 val* var76 /* : nullable CallSite */;
4124 val* var_wcallsite /* var wcallsite: nullable CallSite */;
4125 val* var77 /* : null */;
4126 short int var78 /* : Bool */;
4127 short int var79 /* : Bool */;
4128 short int var81 /* : Bool */;
4129 short int var83 /* : Bool */;
4130 val* var85 /* : MSignature */;
4131 val* var87 /* : MSignature */;
4132 val* var88 /* : Array[MParameter] */;
4133 val* var90 /* : Array[MParameter] */;
4134 val* var91 /* : nullable Object */;
4135 val* var92 /* : MType */;
4136 val* var94 /* : MType */;
4137 val* var95 /* : nullable MType */;
4138 val* var_wtype /* var wtype: nullable MType */;
4139 val* var96 /* : null */;
4140 short int var97 /* : Bool */;
4141 short int var98 /* : Bool */;
4142 short int var100 /* : Bool */;
4143 short int var102 /* : Bool */;
4144 val* var103 /* : Array[nullable Object] */;
4145 val* var104 /* : AExpr */;
4146 short int var105 /* : Bool */;
4147 short int var106 /* : Bool */;
4148 var_v = p0;
4149 {
4150 var = parser_nodes__ASendExpr__n_expr(self);
4151 }
4152 {
4153 var1 = typing__TypeVisitor__visit_expr(var_v, var);
4154 }
4155 var_recvtype = var1;
4156 {
4157 var2 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__property_name]))(self) /* property_name on <self:ASendReassignFormExpr>*/;
4158 }
4159 var_name = var2;
4160 var3 = NULL;
4161 if (var_recvtype == NULL) {
4162 var4 = 1; /* is null */
4163 } else {
4164 var4 = 0; /* arg is null but recv is not */
4165 }
4166 if (0) {
4167 { /* Inline kernel#Object#== (var_recvtype,var3) on <var_recvtype:nullable MType> */
4168 var_other = var3;
4169 {
4170 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
4171 var9 = var_recvtype == var_other;
4172 var7 = var9;
4173 goto RET_LABEL8;
4174 RET_LABEL8:(void)0;
4175 }
4176 }
4177 var5 = var7;
4178 goto RET_LABEL6;
4179 RET_LABEL6:(void)0;
4180 }
4181 var4 = var5;
4182 }
4183 if (var4){
4184 goto RET_LABEL;
4185 } else {
4186 }
4187 /* <var_recvtype:nullable MType(MType)> isa MNullType */
4188 cltype = type_model__MNullType.color;
4189 idtype = type_model__MNullType.id;
4190 if(cltype >= var_recvtype->type->table_size) {
4191 var10 = 0;
4192 } else {
4193 var10 = var_recvtype->type->type_table[cltype] == idtype;
4194 }
4195 if (var10){
4196 if (varonce) {
4197 var11 = varonce;
4198 } else {
4199 var12 = "Error: Method \'";
4200 var13 = 15;
4201 var14 = string__NativeString__to_s_with_length(var12, var13);
4202 var11 = var14;
4203 varonce = var11;
4204 }
4205 if (varonce15) {
4206 var16 = varonce15;
4207 } else {
4208 var17 = "\' call on \'null\'.";
4209 var18 = 17;
4210 var19 = string__NativeString__to_s_with_length(var17, var18);
4211 var16 = var19;
4212 varonce15 = var16;
4213 }
4214 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
4215 { /* var20 = array_instance Array[Object] */
4216 var21 = 3;
4217 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
4218 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var11;
4219 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_name;
4220 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var16;
4221 {
4222 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
4223 }
4224 }
4225 {
4226 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
4227 }
4228 {
4229 typing__TypeVisitor__error(var_v, self, var23); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
4230 }
4231 goto RET_LABEL;
4232 } else {
4233 }
4234 {
4235 var24 = parser_nodes__ASendExpr__n_expr(self);
4236 }
4237 /* <var24:AExpr> isa ASelfExpr */
4238 cltype26 = type_parser_nodes__ASelfExpr.color;
4239 idtype27 = type_parser_nodes__ASelfExpr.id;
4240 if(cltype26 >= var24->type->table_size) {
4241 var25 = 0;
4242 } else {
4243 var25 = var24->type->type_table[cltype26] == idtype27;
4244 }
4245 var_for_self = var25;
4246 {
4247 var28 = typing__TypeVisitor__get_method(var_v, self, var_recvtype, var_name, var_for_self);
4248 }
4249 var_callsite = var28;
4250 var29 = NULL;
4251 if (var_callsite == NULL) {
4252 var30 = 1; /* is null */
4253 } else {
4254 var30 = 0; /* arg is null but recv is not */
4255 }
4256 if (0) {
4257 { /* Inline kernel#Object#== (var_callsite,var29) on <var_callsite:nullable CallSite> */
4258 var_other = var29;
4259 {
4260 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
4261 var35 = var_callsite == var_other;
4262 var33 = var35;
4263 goto RET_LABEL34;
4264 RET_LABEL34:(void)0;
4265 }
4266 }
4267 var31 = var33;
4268 goto RET_LABEL32;
4269 RET_LABEL32:(void)0;
4270 }
4271 var30 = var31;
4272 }
4273 if (var30){
4274 goto RET_LABEL;
4275 } else {
4276 }
4277 {
4278 { /* Inline typing#ASendExpr#callsite= (self,var_callsite) on <self:ASendReassignFormExpr> */
4279 self->attrs[COLOR_typing__ASendExpr___callsite].val = var_callsite; /* _callsite on <self:ASendReassignFormExpr> */
4280 RET_LABEL36:(void)0;
4281 }
4282 }
4283 {
4284 var37 = ((val* (*)(val*))(self->class->vft[COLOR_typing__ASendExpr__compute_raw_arguments]))(self) /* compute_raw_arguments on <self:ASendReassignFormExpr>*/;
4285 }
4286 var_args = var37;
4287 {
4288 var38 = typing__CallSite__check_signature(var_callsite, var_v, var_args);
4289 }
4290 var38;
4291 {
4292 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
4293 var41 = var_callsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
4294 if (unlikely(var41 == NULL)) {
4295 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
4296 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
4297 show_backtrace(1);
4298 }
4299 var39 = var41;
4300 RET_LABEL40:(void)0;
4301 }
4302 }
4303 {
4304 { /* Inline model#MSignature#return_mtype (var39) on <var39:MSignature> */
4305 var44 = var39->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var39:MSignature> */
4306 var42 = var44;
4307 RET_LABEL43:(void)0;
4308 }
4309 }
4310 var_readtype = var42;
4311 var45 = NULL;
4312 if (var_readtype == NULL) {
4313 var46 = 1; /* is null */
4314 } else {
4315 var46 = 0; /* arg is null but recv is not */
4316 }
4317 if (0) {
4318 { /* Inline kernel#Object#== (var_readtype,var45) on <var_readtype:nullable MType> */
4319 var_other = var45;
4320 {
4321 { /* Inline kernel#Object#is_same_instance (var_readtype,var_other) on <var_readtype:nullable MType(MType)> */
4322 var51 = var_readtype == var_other;
4323 var49 = var51;
4324 goto RET_LABEL50;
4325 RET_LABEL50:(void)0;
4326 }
4327 }
4328 var47 = var49;
4329 goto RET_LABEL48;
4330 RET_LABEL48:(void)0;
4331 }
4332 var46 = var47;
4333 }
4334 if (var46){
4335 if (varonce52) {
4336 var53 = varonce52;
4337 } else {
4338 var54 = "Error: ";
4339 var55 = 7;
4340 var56 = string__NativeString__to_s_with_length(var54, var55);
4341 var53 = var56;
4342 varonce52 = var53;
4343 }
4344 if (varonce57) {
4345 var58 = varonce57;
4346 } else {
4347 var59 = " is not a function";
4348 var60 = 18;
4349 var61 = string__NativeString__to_s_with_length(var59, var60);
4350 var58 = var61;
4351 varonce57 = var58;
4352 }
4353 var62 = NEW_array__Array(&type_array__Arraykernel__Object);
4354 { /* var62 = array_instance Array[Object] */
4355 var63 = 3;
4356 var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object);
4357 ((struct instance_array__NativeArray*)var64)->values[0] = (val*) var53;
4358 ((struct instance_array__NativeArray*)var64)->values[1] = (val*) var_name;
4359 ((struct instance_array__NativeArray*)var64)->values[2] = (val*) var58;
4360 {
4361 ((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on <var62:Array[Object]>*/;
4362 }
4363 }
4364 {
4365 var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on <var62:Array[Object]>*/;
4366 }
4367 {
4368 typing__TypeVisitor__error(var_v, self, var65); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
4369 }
4370 goto RET_LABEL;
4371 } else {
4372 }
4373 if (varonce66) {
4374 var67 = varonce66;
4375 } else {
4376 var68 = "=";
4377 var69 = 1;
4378 var70 = string__NativeString__to_s_with_length(var68, var69);
4379 var67 = var70;
4380 varonce66 = var67;
4381 }
4382 {
4383 var71 = string__FlatString___43d(var_name, var67);
4384 }
4385 {
4386 var72 = parser_nodes__ASendExpr__n_expr(self);
4387 }
4388 /* <var72:AExpr> isa ASelfExpr */
4389 cltype74 = type_parser_nodes__ASelfExpr.color;
4390 idtype75 = type_parser_nodes__ASelfExpr.id;
4391 if(cltype74 >= var72->type->table_size) {
4392 var73 = 0;
4393 } else {
4394 var73 = var72->type->type_table[cltype74] == idtype75;
4395 }
4396 {
4397 var76 = typing__TypeVisitor__get_method(var_v, self, var_recvtype, var71, var73);
4398 }
4399 var_wcallsite = var76;
4400 var77 = NULL;
4401 if (var_wcallsite == NULL) {
4402 var78 = 1; /* is null */
4403 } else {
4404 var78 = 0; /* arg is null but recv is not */
4405 }
4406 if (0) {
4407 { /* Inline kernel#Object#== (var_wcallsite,var77) on <var_wcallsite:nullable CallSite> */
4408 var_other = var77;
4409 {
4410 { /* Inline kernel#Object#is_same_instance (var_wcallsite,var_other) on <var_wcallsite:nullable CallSite(CallSite)> */
4411 var83 = var_wcallsite == var_other;
4412 var81 = var83;
4413 goto RET_LABEL82;
4414 RET_LABEL82:(void)0;
4415 }
4416 }
4417 var79 = var81;
4418 goto RET_LABEL80;
4419 RET_LABEL80:(void)0;
4420 }
4421 var78 = var79;
4422 }
4423 if (var78){
4424 goto RET_LABEL;
4425 } else {
4426 }
4427 {
4428 { /* Inline typing#ASendReassignFormExpr#write_callsite= (self,var_wcallsite) on <self:ASendReassignFormExpr> */
4429 self->attrs[COLOR_typing__ASendReassignFormExpr___write_callsite].val = var_wcallsite; /* _write_callsite on <self:ASendReassignFormExpr> */
4430 RET_LABEL84:(void)0;
4431 }
4432 }
4433 {
4434 { /* Inline typing#CallSite#msignature (var_wcallsite) on <var_wcallsite:nullable CallSite(CallSite)> */
4435 var87 = var_wcallsite->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <var_wcallsite:nullable CallSite(CallSite)> */
4436 if (unlikely(var87 == NULL)) {
4437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
4438 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
4439 show_backtrace(1);
4440 }
4441 var85 = var87;
4442 RET_LABEL86:(void)0;
4443 }
4444 }
4445 {
4446 { /* Inline model#MSignature#mparameters (var85) on <var85:MSignature> */
4447 var90 = var85->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var85:MSignature> */
4448 if (unlikely(var90 == NULL)) {
4449 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
4450 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
4451 show_backtrace(1);
4452 }
4453 var88 = var90;
4454 RET_LABEL89:(void)0;
4455 }
4456 }
4457 {
4458 var91 = abstract_collection__SequenceRead__last(var88);
4459 }
4460 {
4461 { /* Inline model#MParameter#mtype (var91) on <var91:nullable Object(MParameter)> */
4462 var94 = var91->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var91:nullable Object(MParameter)> */
4463 if (unlikely(var94 == NULL)) {
4464 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4465 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
4466 show_backtrace(1);
4467 }
4468 var92 = var94;
4469 RET_LABEL93:(void)0;
4470 }
4471 }
4472 {
4473 var95 = typing__AReassignFormExpr__resolve_reassignment(self, var_v, var_readtype, var92);
4474 }
4475 var_wtype = var95;
4476 var96 = NULL;
4477 if (var_wtype == NULL) {
4478 var97 = 1; /* is null */
4479 } else {
4480 var97 = 0; /* arg is null but recv is not */
4481 }
4482 if (0) {
4483 { /* Inline kernel#Object#== (var_wtype,var96) on <var_wtype:nullable MType> */
4484 var_other = var96;
4485 {
4486 { /* Inline kernel#Object#is_same_instance (var_wtype,var_other) on <var_wtype:nullable MType(MType)> */
4487 var102 = var_wtype == var_other;
4488 var100 = var102;
4489 goto RET_LABEL101;
4490 RET_LABEL101:(void)0;
4491 }
4492 }
4493 var98 = var100;
4494 goto RET_LABEL99;
4495 RET_LABEL99:(void)0;
4496 }
4497 var97 = var98;
4498 }
4499 if (var97){
4500 goto RET_LABEL;
4501 } else {
4502 }
4503 {
4504 var103 = array__Collection__to_a(var_args);
4505 }
4506 var_args = var103;
4507 {
4508 var104 = parser_nodes__AReassignFormExpr__n_value(self);
4509 }
4510 {
4511 array__Array__add(var_args, var104); /* Direct call array#Array#add on <var_args:Array[AExpr]>*/
4512 }
4513 {
4514 var105 = typing__CallSite__check_signature(var_wcallsite, var_v, var_args);
4515 }
4516 var105;
4517 var106 = 1;
4518 {
4519 { /* Inline typing#AExpr#is_typed= (self,var106) on <self:ASendReassignFormExpr> */
4520 self->attrs[COLOR_typing__AExpr___is_typed].s = var106; /* _is_typed on <self:ASendReassignFormExpr> */
4521 RET_LABEL107:(void)0;
4522 }
4523 }
4524 RET_LABEL:;
4525 }
4526 /* method typing#ASendReassignFormExpr#accept_typing for (self: Object, TypeVisitor) */
4527 void VIRTUAL_typing__ASendReassignFormExpr__accept_typing(val* self, val* p0) {
4528 typing__ASendReassignFormExpr__accept_typing(self, p0); /* Direct call typing#ASendReassignFormExpr#accept_typing on <self:Object(ASendReassignFormExpr)>*/
4529 RET_LABEL:;
4530 }
4531 /* method typing#ACallReassignExpr#property_name for (self: ACallReassignExpr): String */
4532 val* typing__ACallReassignExpr__property_name(val* self) {
4533 val* var /* : String */;
4534 val* var1 /* : TId */;
4535 val* var2 /* : String */;
4536 {
4537 var1 = parser_nodes__ACallFormExpr__n_id(self);
4538 }
4539 {
4540 var2 = lexer_work__Token__text(var1);
4541 }
4542 var = var2;
4543 goto RET_LABEL;
4544 RET_LABEL:;
4545 return var;
4546 }
4547 /* method typing#ACallReassignExpr#property_name for (self: Object): String */
4548 val* VIRTUAL_typing__ACallReassignExpr__property_name(val* self) {
4549 val* var /* : String */;
4550 val* var1 /* : String */;
4551 var1 = typing__ACallReassignExpr__property_name(self);
4552 var = var1;
4553 RET_LABEL:;
4554 return var;
4555 }
4556 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: ACallReassignExpr): Array[AExpr] */
4557 val* typing__ACallReassignExpr__compute_raw_arguments(val* self) {
4558 val* var /* : Array[AExpr] */;
4559 val* var1 /* : AExprs */;
4560 val* var2 /* : Array[AExpr] */;
4561 {
4562 var1 = parser_nodes__ACallFormExpr__n_args(self);
4563 }
4564 {
4565 var2 = typing__AExprs__to_a(var1);
4566 }
4567 var = var2;
4568 goto RET_LABEL;
4569 RET_LABEL:;
4570 return var;
4571 }
4572 /* method typing#ACallReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
4573 val* VIRTUAL_typing__ACallReassignExpr__compute_raw_arguments(val* self) {
4574 val* var /* : Array[AExpr] */;
4575 val* var1 /* : Array[AExpr] */;
4576 var1 = typing__ACallReassignExpr__compute_raw_arguments(self);
4577 var = var1;
4578 RET_LABEL:;
4579 return var;
4580 }
4581 /* method typing#ABraReassignExpr#property_name for (self: ABraReassignExpr): String */
4582 val* typing__ABraReassignExpr__property_name(val* self) {
4583 val* var /* : String */;
4584 static val* varonce;
4585 val* var1 /* : String */;
4586 char* var2 /* : NativeString */;
4587 long var3 /* : Int */;
4588 val* var4 /* : FlatString */;
4589 if (varonce) {
4590 var1 = varonce;
4591 } else {
4592 var2 = "[]";
4593 var3 = 2;
4594 var4 = string__NativeString__to_s_with_length(var2, var3);
4595 var1 = var4;
4596 varonce = var1;
4597 }
4598 var = var1;
4599 goto RET_LABEL;
4600 RET_LABEL:;
4601 return var;
4602 }
4603 /* method typing#ABraReassignExpr#property_name for (self: Object): String */
4604 val* VIRTUAL_typing__ABraReassignExpr__property_name(val* self) {
4605 val* var /* : String */;
4606 val* var1 /* : String */;
4607 var1 = typing__ABraReassignExpr__property_name(self);
4608 var = var1;
4609 RET_LABEL:;
4610 return var;
4611 }
4612 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: ABraReassignExpr): Array[AExpr] */
4613 val* typing__ABraReassignExpr__compute_raw_arguments(val* self) {
4614 val* var /* : Array[AExpr] */;
4615 val* var1 /* : AExprs */;
4616 val* var2 /* : Array[AExpr] */;
4617 {
4618 var1 = parser_nodes__ABraFormExpr__n_args(self);
4619 }
4620 {
4621 var2 = typing__AExprs__to_a(var1);
4622 }
4623 var = var2;
4624 goto RET_LABEL;
4625 RET_LABEL:;
4626 return var;
4627 }
4628 /* method typing#ABraReassignExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
4629 val* VIRTUAL_typing__ABraReassignExpr__compute_raw_arguments(val* self) {
4630 val* var /* : Array[AExpr] */;
4631 val* var1 /* : Array[AExpr] */;
4632 var1 = typing__ABraReassignExpr__compute_raw_arguments(self);
4633 var = var1;
4634 RET_LABEL:;
4635 return var;
4636 }
4637 /* method typing#AInitExpr#property_name for (self: AInitExpr): String */
4638 val* typing__AInitExpr__property_name(val* self) {
4639 val* var /* : String */;
4640 static val* varonce;
4641 val* var1 /* : String */;
4642 char* var2 /* : NativeString */;
4643 long var3 /* : Int */;
4644 val* var4 /* : FlatString */;
4645 if (varonce) {
4646 var1 = varonce;
4647 } else {
4648 var2 = "init";
4649 var3 = 4;
4650 var4 = string__NativeString__to_s_with_length(var2, var3);
4651 var1 = var4;
4652 varonce = var1;
4653 }
4654 var = var1;
4655 goto RET_LABEL;
4656 RET_LABEL:;
4657 return var;
4658 }
4659 /* method typing#AInitExpr#property_name for (self: Object): String */
4660 val* VIRTUAL_typing__AInitExpr__property_name(val* self) {
4661 val* var /* : String */;
4662 val* var1 /* : String */;
4663 var1 = typing__AInitExpr__property_name(self);
4664 var = var1;
4665 RET_LABEL:;
4666 return var;
4667 }
4668 /* method typing#AInitExpr#compute_raw_arguments for (self: AInitExpr): Array[AExpr] */
4669 val* typing__AInitExpr__compute_raw_arguments(val* self) {
4670 val* var /* : Array[AExpr] */;
4671 val* var1 /* : AExprs */;
4672 val* var2 /* : Array[AExpr] */;
4673 {
4674 var1 = parser_nodes__AInitExpr__n_args(self);
4675 }
4676 {
4677 var2 = typing__AExprs__to_a(var1);
4678 }
4679 var = var2;
4680 goto RET_LABEL;
4681 RET_LABEL:;
4682 return var;
4683 }
4684 /* method typing#AInitExpr#compute_raw_arguments for (self: Object): Array[AExpr] */
4685 val* VIRTUAL_typing__AInitExpr__compute_raw_arguments(val* self) {
4686 val* var /* : Array[AExpr] */;
4687 val* var1 /* : Array[AExpr] */;
4688 var1 = typing__AInitExpr__compute_raw_arguments(self);
4689 var = var1;
4690 RET_LABEL:;
4691 return var;
4692 }
4693 /* method typing#AExprs#to_a for (self: AExprs): Array[AExpr] */
4694 val* typing__AExprs__to_a(val* self) {
4695 val* var /* : Array[AExpr] */;
4696 val* var1 /* : ANodes[AExpr] */;
4697 val* var3 /* : ANodes[AExpr] */;
4698 val* var4 /* : Array[nullable Object] */;
4699 {
4700 { /* Inline parser_nodes#AExprs#n_exprs (self) on <self:AExprs> */
4701 var3 = self->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <self:AExprs> */
4702 if (unlikely(var3 == NULL)) {
4703 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
4704 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
4705 show_backtrace(1);
4706 }
4707 var1 = var3;
4708 RET_LABEL2:(void)0;
4709 }
4710 }
4711 {
4712 var4 = array__Collection__to_a(var1);
4713 }
4714 var = var4;
4715 goto RET_LABEL;
4716 RET_LABEL:;
4717 return var;
4718 }
4719 /* method typing#AExprs#to_a for (self: Object): Array[AExpr] */
4720 val* VIRTUAL_typing__AExprs__to_a(val* self) {
4721 val* var /* : Array[AExpr] */;
4722 val* var1 /* : Array[AExpr] */;
4723 var1 = typing__AExprs__to_a(self);
4724 var = var1;
4725 RET_LABEL:;
4726 return var;
4727 }
4728 /* method typing#ASuperExpr#callsite for (self: ASuperExpr): nullable CallSite */
4729 val* typing__ASuperExpr__callsite(val* self) {
4730 val* var /* : nullable CallSite */;
4731 val* var1 /* : nullable CallSite */;
4732 var1 = self->attrs[COLOR_typing__ASuperExpr___callsite].val; /* _callsite on <self:ASuperExpr> */
4733 var = var1;
4734 RET_LABEL:;
4735 return var;
4736 }
4737 /* method typing#ASuperExpr#callsite for (self: Object): nullable CallSite */
4738 val* VIRTUAL_typing__ASuperExpr__callsite(val* self) {
4739 val* var /* : nullable CallSite */;
4740 val* var1 /* : nullable CallSite */;
4741 val* var3 /* : nullable CallSite */;
4742 { /* Inline typing#ASuperExpr#callsite (self) on <self:Object(ASuperExpr)> */
4743 var3 = self->attrs[COLOR_typing__ASuperExpr___callsite].val; /* _callsite on <self:Object(ASuperExpr)> */
4744 var1 = var3;
4745 RET_LABEL2:(void)0;
4746 }
4747 var = var1;
4748 RET_LABEL:;
4749 return var;
4750 }
4751 /* method typing#ASuperExpr#callsite= for (self: ASuperExpr, nullable CallSite) */
4752 void typing__ASuperExpr__callsite_61d(val* self, val* p0) {
4753 self->attrs[COLOR_typing__ASuperExpr___callsite].val = p0; /* _callsite on <self:ASuperExpr> */
4754 RET_LABEL:;
4755 }
4756 /* method typing#ASuperExpr#callsite= for (self: Object, nullable CallSite) */
4757 void VIRTUAL_typing__ASuperExpr__callsite_61d(val* self, val* p0) {
4758 { /* Inline typing#ASuperExpr#callsite= (self,p0) on <self:Object(ASuperExpr)> */
4759 self->attrs[COLOR_typing__ASuperExpr___callsite].val = p0; /* _callsite on <self:Object(ASuperExpr)> */
4760 RET_LABEL1:(void)0;
4761 }
4762 RET_LABEL:;
4763 }
4764 /* method typing#ASuperExpr#mpropdef for (self: ASuperExpr): nullable MMethodDef */
4765 val* typing__ASuperExpr__mpropdef(val* self) {
4766 val* var /* : nullable MMethodDef */;
4767 val* var1 /* : nullable MMethodDef */;
4768 var1 = self->attrs[COLOR_typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:ASuperExpr> */
4769 var = var1;
4770 RET_LABEL:;
4771 return var;
4772 }
4773 /* method typing#ASuperExpr#mpropdef for (self: Object): nullable MMethodDef */
4774 val* VIRTUAL_typing__ASuperExpr__mpropdef(val* self) {
4775 val* var /* : nullable MMethodDef */;
4776 val* var1 /* : nullable MMethodDef */;
4777 val* var3 /* : nullable MMethodDef */;
4778 { /* Inline typing#ASuperExpr#mpropdef (self) on <self:Object(ASuperExpr)> */
4779 var3 = self->attrs[COLOR_typing__ASuperExpr___mpropdef].val; /* _mpropdef on <self:Object(ASuperExpr)> */
4780 var1 = var3;
4781 RET_LABEL2:(void)0;
4782 }
4783 var = var1;
4784 RET_LABEL:;
4785 return var;
4786 }
4787 /* method typing#ASuperExpr#mpropdef= for (self: ASuperExpr, nullable MMethodDef) */
4788 void typing__ASuperExpr__mpropdef_61d(val* self, val* p0) {
4789 self->attrs[COLOR_typing__ASuperExpr___mpropdef].val = p0; /* _mpropdef on <self:ASuperExpr> */
4790 RET_LABEL:;
4791 }
4792 /* method typing#ASuperExpr#mpropdef= for (self: Object, nullable MMethodDef) */
4793 void VIRTUAL_typing__ASuperExpr__mpropdef_61d(val* self, val* p0) {
4794 { /* Inline typing#ASuperExpr#mpropdef= (self,p0) on <self:Object(ASuperExpr)> */
4795 self->attrs[COLOR_typing__ASuperExpr___mpropdef].val = p0; /* _mpropdef on <self:Object(ASuperExpr)> */
4796 RET_LABEL1:(void)0;
4797 }
4798 RET_LABEL:;
4799 }
4800 /* method typing#ASuperExpr#accept_typing for (self: ASuperExpr, TypeVisitor) */
4801 void typing__ASuperExpr__accept_typing(val* self, val* p0) {
4802 val* var_v /* var v: TypeVisitor */;
4803 val* var /* : nullable MClassType */;
4804 val* var2 /* : nullable MClassType */;
4805 val* var_recvtype /* var recvtype: nullable MClassType */;
4806 val* var3 /* : null */;
4807 short int var4 /* : Bool */;
4808 short int var5 /* : Bool */;
4809 val* var_other /* var other: nullable Object */;
4810 short int var7 /* : Bool */;
4811 short int var8 /* : Bool */;
4812 short int var9 /* : Bool */;
4813 val* var10 /* : nullable MPropDef */;
4814 val* var12 /* : nullable MPropDef */;
4815 val* var13 /* : MProperty */;
4816 val* var15 /* : MProperty */;
4817 val* var_mproperty /* var mproperty: MProperty */;
4818 short int var16 /* : Bool */;
4819 int cltype;
4820 int idtype;
4821 short int var17 /* : Bool */;
4822 static val* varonce;
4823 val* var18 /* : String */;
4824 char* var19 /* : NativeString */;
4825 long var20 /* : Int */;
4826 val* var21 /* : FlatString */;
4827 val* var22 /* : MModule */;
4828 val* var24 /* : MModule */;
4829 val* var25 /* : Array[MPropDef] */;
4830 val* var_superprops /* var superprops: Array[MMethodDef] */;
4831 long var26 /* : Int */;
4832 long var27 /* : Int */;
4833 short int var28 /* : Bool */;
4834 short int var29 /* : Bool */;
4835 short int var31 /* : Bool */;
4836 short int var32 /* : Bool */;
4837 short int var33 /* : Bool */;
4838 short int var35 /* : Bool */;
4839 short int var_ /* var : Bool */;
4840 val* var36 /* : nullable MPropDef */;
4841 val* var38 /* : nullable MPropDef */;
4842 short int var39 /* : Bool */;
4843 static val* varonce40;
4844 val* var41 /* : String */;
4845 char* var42 /* : NativeString */;
4846 long var43 /* : Int */;
4847 val* var44 /* : FlatString */;
4848 static val* varonce45;
4849 val* var46 /* : String */;
4850 char* var47 /* : NativeString */;
4851 long var48 /* : Int */;
4852 val* var49 /* : FlatString */;
4853 val* var50 /* : Array[Object] */;
4854 long var51 /* : Int */;
4855 val* var52 /* : NativeArray[Object] */;
4856 val* var53 /* : String */;
4857 val* var54 /* : nullable Object */;
4858 val* var_superprop /* var superprop: MMethodDef */;
4859 val* var55 /* : nullable MSignature */;
4860 val* var57 /* : nullable MSignature */;
4861 val* var_msignature /* var msignature: MSignature */;
4862 short int var58 /* : Bool */;
4863 val* var59 /* : MType */;
4864 short int var60 /* : Bool */;
4865 int cltype61;
4866 int idtype62;
4867 const char* var_class_name;
4868 val* var63 /* : AExprs */;
4869 val* var64 /* : Array[AExpr] */;
4870 val* var_args /* var args: Array[AExpr] */;
4871 long var65 /* : Int */;
4872 long var66 /* : Int */;
4873 short int var67 /* : Bool */;
4874 short int var69 /* : Bool */;
4875 int cltype70;
4876 int idtype71;
4877 const char* var_class_name72;
4878 short int var73 /* : Bool */;
4879 val* var74 /* : String */;
4880 val* var76 /* : String */;
4881 short int var77 /* : Bool */;
4882 val* var78 /* : nullable MType */;
4883 val* var80 /* : nullable MType */;
4884 short int var82 /* : Bool */;
4885 val* var84 /* : nullable MPropDef */;
4886 val* var86 /* : nullable MPropDef */;
4887 short int var87 /* : Bool */;
4888 val* var89 /* : nullable MPropDef */;
4889 val* var91 /* : nullable MPropDef */;
4890 short int var92 /* : Bool */;
4891 int cltype93;
4892 int idtype94;
4893 const char* var_class_name95;
4894 var_v = p0;
4895 {
4896 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
4897 var2 = var_v->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
4898 var = var2;
4899 RET_LABEL1:(void)0;
4900 }
4901 }
4902 var_recvtype = var;
4903 var3 = NULL;
4904 if (var_recvtype == NULL) {
4905 var4 = 0; /* is null */
4906 } else {
4907 var4 = 1; /* arg is null and recv is not */
4908 }
4909 if (0) {
4910 { /* Inline kernel#Object#!= (var_recvtype,var3) on <var_recvtype:nullable MClassType> */
4911 var_other = var3;
4912 {
4913 var8 = ((short int (*)(val*, val*))(var_recvtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_recvtype, var_other) /* == on <var_recvtype:nullable MClassType(MClassType)>*/;
4914 var7 = var8;
4915 }
4916 var9 = !var7;
4917 var5 = var9;
4918 goto RET_LABEL6;
4919 RET_LABEL6:(void)0;
4920 }
4921 var4 = var5;
4922 }
4923 if (unlikely(!var4)) {
4924 PRINT_ERROR("Runtime error: %s", "Assert failed");
4925 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1480);
4926 show_backtrace(1);
4927 }
4928 {
4929 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
4930 var12 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
4931 var10 = var12;
4932 RET_LABEL11:(void)0;
4933 }
4934 }
4935 if (var10 == NULL) {
4936 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4937 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1481);
4938 show_backtrace(1);
4939 } else {
4940 { /* Inline model#MPropDef#mproperty (var10) on <var10:nullable MPropDef> */
4941 if (unlikely(var10 == NULL)) {
4942 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4943 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4944 show_backtrace(1);
4945 }
4946 var15 = var10->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var10:nullable MPropDef> */
4947 if (unlikely(var15 == NULL)) {
4948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4949 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4950 show_backtrace(1);
4951 }
4952 var13 = var15;
4953 RET_LABEL14:(void)0;
4954 }
4955 }
4956 var_mproperty = var13;
4957 /* <var_mproperty:MProperty> isa MMethod */
4958 cltype = type_model__MMethod.color;
4959 idtype = type_model__MMethod.id;
4960 if(cltype >= var_mproperty->type->table_size) {
4961 var16 = 0;
4962 } else {
4963 var16 = var_mproperty->type->type_table[cltype] == idtype;
4964 }
4965 var17 = !var16;
4966 if (var17){
4967 if (varonce) {
4968 var18 = varonce;
4969 } else {
4970 var19 = "Error: super only usable in a method";
4971 var20 = 36;
4972 var21 = string__NativeString__to_s_with_length(var19, var20);
4973 var18 = var21;
4974 varonce = var18;
4975 }
4976 {
4977 typing__TypeVisitor__error(var_v, self, var18); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
4978 }
4979 goto RET_LABEL;
4980 } else {
4981 }
4982 {
4983 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
4984 var24 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
4985 if (unlikely(var24 == NULL)) {
4986 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4987 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
4988 show_backtrace(1);
4989 }
4990 var22 = var24;
4991 RET_LABEL23:(void)0;
4992 }
4993 }
4994 {
4995 var25 = model__MProperty__lookup_super_definitions(var_mproperty, var22, var_recvtype);
4996 }
4997 var_superprops = var25;
4998 {
4999 var26 = array__AbstractArrayRead__length(var_superprops);
5000 }
5001 var27 = 0;
5002 {
5003 { /* Inline kernel#Int#== (var26,var27) on <var26:Int> */
5004 var31 = var26 == var27;
5005 var29 = var31;
5006 goto RET_LABEL30;
5007 RET_LABEL30:(void)0;
5008 }
5009 var28 = var29;
5010 }
5011 if (var28){
5012 {
5013 { /* Inline model#MMethod#is_init (var_mproperty) on <var_mproperty:MProperty(MMethod)> */
5014 var35 = var_mproperty->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var_mproperty:MProperty(MMethod)> */
5015 var33 = var35;
5016 RET_LABEL34:(void)0;
5017 }
5018 }
5019 var_ = var33;
5020 if (var33){
5021 {
5022 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
5023 var38 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
5024 var36 = var38;
5025 RET_LABEL37:(void)0;
5026 }
5027 }
5028 if (var36 == NULL) {
5029 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5030 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1488);
5031 show_backtrace(1);
5032 } else {
5033 var39 = model__MPropDef__is_intro(var36);
5034 }
5035 var32 = var39;
5036 } else {
5037 var32 = var_;
5038 }
5039 if (var32){
5040 {
5041 typing__ASuperExpr__process_superinit(self, var_v); /* Direct call typing#ASuperExpr#process_superinit on <self:ASuperExpr>*/
5042 }
5043 goto RET_LABEL;
5044 } else {
5045 }
5046 if (varonce40) {
5047 var41 = varonce40;
5048 } else {
5049 var42 = "Error: No super method to call for ";
5050 var43 = 35;
5051 var44 = string__NativeString__to_s_with_length(var42, var43);
5052 var41 = var44;
5053 varonce40 = var41;
5054 }
5055 if (varonce45) {
5056 var46 = varonce45;
5057 } else {
5058 var47 = ".";
5059 var48 = 1;
5060 var49 = string__NativeString__to_s_with_length(var47, var48);
5061 var46 = var49;
5062 varonce45 = var46;
5063 }
5064 var50 = NEW_array__Array(&type_array__Arraykernel__Object);
5065 { /* var50 = array_instance Array[Object] */
5066 var51 = 3;
5067 var52 = NEW_array__NativeArray(var51, &type_array__NativeArraykernel__Object);
5068 ((struct instance_array__NativeArray*)var52)->values[0] = (val*) var41;
5069 ((struct instance_array__NativeArray*)var52)->values[1] = (val*) var_mproperty;
5070 ((struct instance_array__NativeArray*)var52)->values[2] = (val*) var46;
5071 {
5072 ((void (*)(val*, val*, long))(var50->class->vft[COLOR_array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
5073 }
5074 }
5075 {
5076 var53 = ((val* (*)(val*))(var50->class->vft[COLOR_string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
5077 }
5078 {
5079 typing__TypeVisitor__error(var_v, self, var53); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
5080 }
5081 goto RET_LABEL;
5082 } else {
5083 }
5084 {
5085 var54 = abstract_collection__SequenceRead__first(var_superprops);
5086 }
5087 var_superprop = var54;
5088 {
5089 { /* Inline model#MMethodDef#msignature (var_superprop) on <var_superprop:MMethodDef> */
5090 var57 = var_superprop->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_superprop:MMethodDef> */
5091 var55 = var57;
5092 RET_LABEL56:(void)0;
5093 }
5094 }
5095 if (unlikely(var55 == NULL)) {
5096 PRINT_ERROR("Runtime error: %s", "Cast failed");
5097 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1498);
5098 show_backtrace(1);
5099 }
5100 var_msignature = var55;
5101 var58 = 1;
5102 {
5103 var59 = typing__TypeVisitor__resolve_for(var_v, var_msignature, var_recvtype, var58);
5104 }
5105 /* <var59:MType> isa MSignature */
5106 cltype61 = type_model__MSignature.color;
5107 idtype62 = type_model__MSignature.id;
5108 if(cltype61 >= var59->type->table_size) {
5109 var60 = 0;
5110 } else {
5111 var60 = var59->type->type_table[cltype61] == idtype62;
5112 }
5113 if (unlikely(!var60)) {
5114 var_class_name = var59 == NULL ? "null" : var59->type->name;
5115 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
5116 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1499);
5117 show_backtrace(1);
5118 }
5119 var_msignature = var59;
5120 {
5121 var63 = parser_nodes__ASuperExpr__n_args(self);
5122 }
5123 {
5124 var64 = typing__AExprs__to_a(var63);
5125 }
5126 var_args = var64;
5127 {
5128 var65 = array__AbstractArrayRead__length(var_args);
5129 }
5130 var66 = 0;
5131 {
5132 { /* Inline kernel#Int#> (var65,var66) on <var65:Int> */
5133 /* Covariant cast for argument 0 (i) <var66:Int> isa OTHER */
5134 /* <var66:Int> isa OTHER */
5135 var69 = 1; /* easy <var66:Int> isa OTHER*/
5136 if (unlikely(!var69)) {
5137 var_class_name72 = type_kernel__Int.name;
5138 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name72);
5139 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
5140 show_backtrace(1);
5141 }
5142 var73 = var65 > var66;
5143 var67 = var73;
5144 goto RET_LABEL68;
5145 RET_LABEL68:(void)0;
5146 }
5147 }
5148 if (var67){
5149 {
5150 { /* Inline model#MProperty#name (var_mproperty) on <var_mproperty:MProperty(MMethod)> */
5151 var76 = var_mproperty->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mproperty:MProperty(MMethod)> */
5152 if (unlikely(var76 == NULL)) {
5153 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5154 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
5155 show_backtrace(1);
5156 }
5157 var74 = var76;
5158 RET_LABEL75:(void)0;
5159 }
5160 }
5161 {
5162 var77 = typing__TypeVisitor__check_signature(var_v, self, var_args, var74, var_msignature);
5163 }
5164 var77;
5165 } else {
5166 }
5167 {
5168 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
5169 var80 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
5170 var78 = var80;
5171 RET_LABEL79:(void)0;
5172 }
5173 }
5174 {
5175 { /* Inline typing#AExpr#mtype= (self,var78) on <self:ASuperExpr> */
5176 self->attrs[COLOR_typing__AExpr___mtype].val = var78; /* _mtype on <self:ASuperExpr> */
5177 RET_LABEL81:(void)0;
5178 }
5179 }
5180 var82 = 1;
5181 {
5182 { /* Inline typing#AExpr#is_typed= (self,var82) on <self:ASuperExpr> */
5183 self->attrs[COLOR_typing__AExpr___is_typed].s = var82; /* _is_typed on <self:ASuperExpr> */
5184 RET_LABEL83:(void)0;
5185 }
5186 }
5187 {
5188 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
5189 var86 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
5190 var84 = var86;
5191 RET_LABEL85:(void)0;
5192 }
5193 }
5194 var87 = 1;
5195 if (var84 == NULL) {
5196 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5197 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1506);
5198 show_backtrace(1);
5199 } else {
5200 { /* Inline modelize_property#MPropDef#has_supercall= (var84,var87) on <var84:nullable MPropDef> */
5201 if (unlikely(var84 == NULL)) {
5202 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5203 PRINT_ERROR(" (%s:%d)\n", "src/modelize_property.nit", 236);
5204 show_backtrace(1);
5205 }
5206 var84->attrs[COLOR_modelize_property__MPropDef___has_supercall].s = var87; /* _has_supercall on <var84:nullable MPropDef> */
5207 RET_LABEL88:(void)0;
5208 }
5209 }
5210 {
5211 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
5212 var91 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
5213 var89 = var91;
5214 RET_LABEL90:(void)0;
5215 }
5216 }
5217 /* <var89:nullable MPropDef> isa MMethodDef */
5218 cltype93 = type_model__MMethodDef.color;
5219 idtype94 = type_model__MMethodDef.id;
5220 if(var89 == NULL) {
5221 var92 = 0;
5222 } else {
5223 if(cltype93 >= var89->type->table_size) {
5224 var92 = 0;
5225 } else {
5226 var92 = var89->type->type_table[cltype93] == idtype94;
5227 }
5228 }
5229 if (unlikely(!var92)) {
5230 var_class_name95 = var89 == NULL ? "null" : var89->type->name;
5231 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name95);
5232 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1507);
5233 show_backtrace(1);
5234 }
5235 {
5236 { /* Inline typing#ASuperExpr#mpropdef= (self,var89) on <self:ASuperExpr> */
5237 self->attrs[COLOR_typing__ASuperExpr___mpropdef].val = var89; /* _mpropdef on <self:ASuperExpr> */
5238 RET_LABEL96:(void)0;
5239 }
5240 }
5241 RET_LABEL:;
5242 }
5243 /* method typing#ASuperExpr#accept_typing for (self: Object, TypeVisitor) */
5244 void VIRTUAL_typing__ASuperExpr__accept_typing(val* self, val* p0) {
5245 typing__ASuperExpr__accept_typing(self, p0); /* Direct call typing#ASuperExpr#accept_typing on <self:Object(ASuperExpr)>*/
5246 RET_LABEL:;
5247 }
5248 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
5249 void typing__ASuperExpr__process_superinit(val* self, val* p0) {
5250 val* var_v /* var v: TypeVisitor */;
5251 val* var /* : nullable MClassType */;
5252 val* var2 /* : nullable MClassType */;
5253 val* var_recvtype /* var recvtype: nullable MClassType */;
5254 val* var3 /* : null */;
5255 short int var4 /* : Bool */;
5256 short int var5 /* : Bool */;
5257 val* var_other /* var other: nullable Object */;
5258 short int var7 /* : Bool */;
5259 short int var8 /* : Bool */;
5260 short int var9 /* : Bool */;
5261 val* var10 /* : nullable MPropDef */;
5262 val* var12 /* : nullable MPropDef */;
5263 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
5264 short int var13 /* : Bool */;
5265 int cltype;
5266 int idtype;
5267 val* var14 /* : MProperty */;
5268 val* var16 /* : MProperty */;
5269 val* var_mproperty /* var mproperty: MMethod */;
5270 val* var17 /* : null */;
5271 val* var_superprop /* var superprop: nullable MMethodDef */;
5272 val* var18 /* : MClassDef */;
5273 val* var20 /* : MClassDef */;
5274 val* var21 /* : Array[MClassType] */;
5275 val* var23 /* : Array[MClassType] */;
5276 val* var24 /* : ArrayIterator[nullable Object] */;
5277 short int var25 /* : Bool */;
5278 val* var26 /* : nullable Object */;
5279 val* var_msupertype /* var msupertype: MClassType */;
5280 val* var27 /* : MModule */;
5281 val* var29 /* : MModule */;
5282 val* var30 /* : MClassType */;
5283 val* var31 /* : ModelBuilder */;
5284 val* var33 /* : ModelBuilder */;
5285 val* var34 /* : ToolContext */;
5286 val* var36 /* : ToolContext */;
5287 long var37 /* : Int */;
5288 long var39 /* : Int */;
5289 long var_errcount /* var errcount: Int */;
5290 val* var40 /* : String */;
5291 val* var42 /* : String */;
5292 val* var43 /* : nullable MProperty */;
5293 short int var44 /* : Bool */;
5294 int cltype45;
5295 int idtype46;
5296 const char* var_class_name;
5297 val* var_candidate /* var candidate: nullable MMethod */;
5298 val* var47 /* : null */;
5299 short int var48 /* : Bool */;
5300 short int var49 /* : Bool */;
5301 val* var_other51 /* var other: nullable Object */;
5302 short int var52 /* : Bool */;
5303 short int var54 /* : Bool */;
5304 val* var55 /* : ModelBuilder */;
5305 val* var57 /* : ModelBuilder */;
5306 val* var58 /* : ToolContext */;
5307 val* var60 /* : ToolContext */;
5308 long var61 /* : Int */;
5309 long var63 /* : Int */;
5310 short int var64 /* : Bool */;
5311 short int var66 /* : Bool */;
5312 int cltype67;
5313 int idtype68;
5314 const char* var_class_name69;
5315 short int var70 /* : Bool */;
5316 short int var71 /* : Bool */;
5317 val* var72 /* : null */;
5318 short int var73 /* : Bool */;
5319 short int var74 /* : Bool */;
5320 short int var76 /* : Bool */;
5321 short int var77 /* : Bool */;
5322 short int var78 /* : Bool */;
5323 short int var_ /* var : Bool */;
5324 val* var79 /* : MProperty */;
5325 val* var81 /* : MProperty */;
5326 short int var82 /* : Bool */;
5327 short int var83 /* : Bool */;
5328 short int var85 /* : Bool */;
5329 short int var86 /* : Bool */;
5330 short int var87 /* : Bool */;
5331 static val* varonce;
5332 val* var88 /* : String */;
5333 char* var89 /* : NativeString */;
5334 long var90 /* : Int */;
5335 val* var91 /* : FlatString */;
5336 static val* varonce92;
5337 val* var93 /* : String */;
5338 char* var94 /* : NativeString */;
5339 long var95 /* : Int */;
5340 val* var96 /* : FlatString */;
5341 val* var97 /* : String */;
5342 static val* varonce98;
5343 val* var99 /* : String */;
5344 char* var100 /* : NativeString */;
5345 long var101 /* : Int */;
5346 val* var102 /* : FlatString */;
5347 val* var103 /* : MProperty */;
5348 val* var105 /* : MProperty */;
5349 val* var106 /* : String */;
5350 val* var107 /* : Array[Object] */;
5351 long var108 /* : Int */;
5352 val* var109 /* : NativeArray[Object] */;
5353 val* var110 /* : String */;
5354 val* var111 /* : MModule */;
5355 val* var113 /* : MModule */;
5356 val* var114 /* : Array[MPropDef] */;
5357 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
5358 val* var115 /* : null */;
5359 short int var116 /* : Bool */;
5360 short int var117 /* : Bool */;
5361 short int var119 /* : Bool */;
5362 short int var120 /* : Bool */;
5363 short int var121 /* : Bool */;
5364 val* var122 /* : nullable Object */;
5365 short int var123 /* : Bool */;
5366 short int var124 /* : Bool */;
5367 short int var126 /* : Bool */;
5368 short int var128 /* : Bool */;
5369 long var129 /* : Int */;
5370 long var130 /* : Int */;
5371 short int var131 /* : Bool */;
5372 short int var133 /* : Bool */;
5373 int cltype134;
5374 int idtype135;
5375 const char* var_class_name136;
5376 short int var137 /* : Bool */;
5377 static val* varonce138;
5378 val* var139 /* : String */;
5379 char* var140 /* : NativeString */;
5380 long var141 /* : Int */;
5381 val* var142 /* : FlatString */;
5382 static val* varonce143;
5383 val* var144 /* : String */;
5384 char* var145 /* : NativeString */;
5385 long var146 /* : Int */;
5386 val* var147 /* : FlatString */;
5387 static val* varonce148;
5388 val* var149 /* : String */;
5389 char* var150 /* : NativeString */;
5390 long var151 /* : Int */;
5391 val* var152 /* : FlatString */;
5392 static val* varonce153;
5393 val* var154 /* : String */;
5394 char* var155 /* : NativeString */;
5395 long var156 /* : Int */;
5396 val* var157 /* : FlatString */;
5397 val* var158 /* : String */;
5398 val* var159 /* : Array[Object] */;
5399 long var160 /* : Int */;
5400 val* var161 /* : NativeArray[Object] */;
5401 val* var162 /* : String */;
5402 val* var163 /* : nullable Object */;
5403 val* var164 /* : null */;
5404 short int var165 /* : Bool */;
5405 short int var166 /* : Bool */;
5406 short int var168 /* : Bool */;
5407 short int var170 /* : Bool */;
5408 static val* varonce171;
5409 val* var172 /* : String */;
5410 char* var173 /* : NativeString */;
5411 long var174 /* : Int */;
5412 val* var175 /* : FlatString */;
5413 static val* varonce176;
5414 val* var177 /* : String */;
5415 char* var178 /* : NativeString */;
5416 long var179 /* : Int */;
5417 val* var180 /* : FlatString */;
5418 val* var181 /* : Array[Object] */;
5419 long var182 /* : Int */;
5420 val* var183 /* : NativeArray[Object] */;
5421 val* var184 /* : String */;
5422 val* var185 /* : nullable MSignature */;
5423 val* var187 /* : nullable MSignature */;
5424 val* var_msignature /* var msignature: MSignature */;
5425 short int var188 /* : Bool */;
5426 val* var189 /* : MType */;
5427 short int var190 /* : Bool */;
5428 int cltype191;
5429 int idtype192;
5430 const char* var_class_name193;
5431 val* var194 /* : CallSite */;
5432 val* var195 /* : MModule */;
5433 val* var197 /* : MModule */;
5434 val* var198 /* : nullable MClassType */;
5435 val* var200 /* : nullable MClassType */;
5436 short int var201 /* : Bool */;
5437 val* var202 /* : MProperty */;
5438 val* var204 /* : MProperty */;
5439 short int var205 /* : Bool */;
5440 val* var_callsite /* var callsite: CallSite */;
5441 val* var208 /* : AExprs */;
5442 val* var209 /* : Array[AExpr] */;
5443 val* var_args /* var args: Array[AExpr] */;
5444 long var210 /* : Int */;
5445 long var211 /* : Int */;
5446 short int var212 /* : Bool */;
5447 short int var214 /* : Bool */;
5448 int cltype215;
5449 int idtype216;
5450 const char* var_class_name217;
5451 short int var218 /* : Bool */;
5452 short int var219 /* : Bool */;
5453 val* var220 /* : nullable MSignature */;
5454 val* var222 /* : nullable MSignature */;
5455 long var223 /* : Int */;
5456 long var224 /* : Int */;
5457 short int var225 /* : Bool */;
5458 short int var227 /* : Bool */;
5459 int cltype228;
5460 int idtype229;
5461 const char* var_class_name230;
5462 short int var231 /* : Bool */;
5463 static val* varonce232;
5464 val* var233 /* : String */;
5465 char* var234 /* : NativeString */;
5466 long var235 /* : Int */;
5467 val* var236 /* : FlatString */;
5468 val* var237 /* : nullable MSignature */;
5469 val* var239 /* : nullable MSignature */;
5470 long var240 /* : Int */;
5471 static val* varonce241;
5472 val* var242 /* : String */;
5473 char* var243 /* : NativeString */;
5474 long var244 /* : Int */;
5475 val* var245 /* : FlatString */;
5476 long var246 /* : Int */;
5477 static val* varonce247;
5478 val* var248 /* : String */;
5479 char* var249 /* : NativeString */;
5480 long var250 /* : Int */;
5481 val* var251 /* : FlatString */;
5482 val* var252 /* : Array[Object] */;
5483 long var253 /* : Int */;
5484 val* var254 /* : NativeArray[Object] */;
5485 val* var255 /* : Object */;
5486 val* var256 /* : Object */;
5487 val* var257 /* : String */;
5488 long var258 /* : Int */;
5489 long var_i /* var i: Int */;
5490 val* var259 /* : Array[MParameter] */;
5491 val* var261 /* : Array[MParameter] */;
5492 val* var262 /* : ArrayIterator[nullable Object] */;
5493 short int var263 /* : Bool */;
5494 val* var264 /* : nullable Object */;
5495 val* var_sp /* var sp: MParameter */;
5496 val* var265 /* : nullable MSignature */;
5497 val* var267 /* : nullable MSignature */;
5498 val* var268 /* : Array[MParameter] */;
5499 val* var270 /* : Array[MParameter] */;
5500 val* var271 /* : nullable Object */;
5501 val* var_p /* var p: MParameter */;
5502 val* var272 /* : MType */;
5503 val* var274 /* : MType */;
5504 val* var275 /* : MType */;
5505 val* var277 /* : MType */;
5506 short int var278 /* : Bool */;
5507 short int var279 /* : Bool */;
5508 static val* varonce280;
5509 val* var281 /* : String */;
5510 char* var282 /* : NativeString */;
5511 long var283 /* : Int */;
5512 val* var284 /* : FlatString */;
5513 static val* varonce285;
5514 val* var286 /* : String */;
5515 char* var287 /* : NativeString */;
5516 long var288 /* : Int */;
5517 val* var289 /* : FlatString */;
5518 val* var290 /* : MType */;
5519 val* var292 /* : MType */;
5520 static val* varonce293;
5521 val* var294 /* : String */;
5522 char* var295 /* : NativeString */;
5523 long var296 /* : Int */;
5524 val* var297 /* : FlatString */;
5525 val* var298 /* : String */;
5526 val* var300 /* : String */;
5527 static val* varonce301;
5528 val* var302 /* : String */;
5529 char* var303 /* : NativeString */;
5530 long var304 /* : Int */;
5531 val* var305 /* : FlatString */;
5532 val* var306 /* : MType */;
5533 val* var308 /* : MType */;
5534 static val* varonce309;
5535 val* var310 /* : String */;
5536 char* var311 /* : NativeString */;
5537 long var312 /* : Int */;
5538 val* var313 /* : FlatString */;
5539 val* var314 /* : Array[Object] */;
5540 long var315 /* : Int */;
5541 val* var316 /* : NativeArray[Object] */;
5542 val* var317 /* : Object */;
5543 val* var318 /* : String */;
5544 long var319 /* : Int */;
5545 long var320 /* : Int */;
5546 short int var322 /* : Bool */;
5547 int cltype323;
5548 int idtype324;
5549 const char* var_class_name325;
5550 long var326 /* : Int */;
5551 short int var328 /* : Bool */;
5552 var_v = p0;
5553 {
5554 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
5555 var2 = var_v->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
5556 var = var2;
5557 RET_LABEL1:(void)0;
5558 }
5559 }
5560 var_recvtype = var;
5561 var3 = NULL;
5562 if (var_recvtype == NULL) {
5563 var4 = 0; /* is null */
5564 } else {
5565 var4 = 1; /* arg is null and recv is not */
5566 }
5567 if (0) {
5568 { /* Inline kernel#Object#!= (var_recvtype,var3) on <var_recvtype:nullable MClassType> */
5569 var_other = var3;
5570 {
5571 var8 = ((short int (*)(val*, val*))(var_recvtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_recvtype, var_other) /* == on <var_recvtype:nullable MClassType(MClassType)>*/;
5572 var7 = var8;
5573 }
5574 var9 = !var7;
5575 var5 = var9;
5576 goto RET_LABEL6;
5577 RET_LABEL6:(void)0;
5578 }
5579 var4 = var5;
5580 }
5581 if (unlikely(!var4)) {
5582 PRINT_ERROR("Runtime error: %s", "Assert failed");
5583 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1513);
5584 show_backtrace(1);
5585 }
5586 {
5587 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
5588 var12 = var_v->attrs[COLOR_typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
5589 var10 = var12;
5590 RET_LABEL11:(void)0;
5591 }
5592 }
5593 var_mpropdef = var10;
5594 /* <var_mpropdef:nullable MPropDef> isa MMethodDef */
5595 cltype = type_model__MMethodDef.color;
5596 idtype = type_model__MMethodDef.id;
5597 if(var_mpropdef == NULL) {
5598 var13 = 0;
5599 } else {
5600 if(cltype >= var_mpropdef->type->table_size) {
5601 var13 = 0;
5602 } else {
5603 var13 = var_mpropdef->type->type_table[cltype] == idtype;
5604 }
5605 }
5606 if (unlikely(!var13)) {
5607 PRINT_ERROR("Runtime error: %s", "Assert failed");
5608 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1515);
5609 show_backtrace(1);
5610 }
5611 {
5612 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
5613 var16 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MPropDef(MMethodDef)> */
5614 if (unlikely(var16 == NULL)) {
5615 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5616 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
5617 show_backtrace(1);
5618 }
5619 var14 = var16;
5620 RET_LABEL15:(void)0;
5621 }
5622 }
5623 var_mproperty = var14;
5624 var17 = NULL;
5625 var_superprop = var17;
5626 {
5627 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
5628 var20 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MPropDef(MMethodDef)> */
5629 if (unlikely(var20 == NULL)) {
5630 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5631 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
5632 show_backtrace(1);
5633 }
5634 var18 = var20;
5635 RET_LABEL19:(void)0;
5636 }
5637 }
5638 {
5639 { /* Inline model#MClassDef#supertypes (var18) on <var18:MClassDef> */
5640 var23 = var18->attrs[COLOR_model__MClassDef___supertypes].val; /* _supertypes on <var18:MClassDef> */
5641 if (unlikely(var23 == NULL)) {
5642 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes");
5643 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 517);
5644 show_backtrace(1);
5645 }
5646 var21 = var23;
5647 RET_LABEL22:(void)0;
5648 }
5649 }
5650 {
5651 var24 = array__AbstractArrayRead__iterator(var21);
5652 }
5653 for(;;) {
5654 {
5655 var25 = array__ArrayIterator__is_ok(var24);
5656 }
5657 if(!var25) break;
5658 {
5659 var26 = array__ArrayIterator__item(var24);
5660 }
5661 var_msupertype = var26;
5662 {
5663 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
5664 var29 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
5665 if (unlikely(var29 == NULL)) {
5666 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5667 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
5668 show_backtrace(1);
5669 }
5670 var27 = var29;
5671 RET_LABEL28:(void)0;
5672 }
5673 }
5674 {
5675 var30 = model__MClassType__anchor_to(var_msupertype, var27, var_recvtype);
5676 }
5677 var_msupertype = var30;
5678 {
5679 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
5680 var33 = var_v->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
5681 if (unlikely(var33 == NULL)) {
5682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5683 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 36);
5684 show_backtrace(1);
5685 }
5686 var31 = var33;
5687 RET_LABEL32:(void)0;
5688 }
5689 }
5690 {
5691 { /* Inline modelbuilder#ModelBuilder#toolcontext (var31) on <var31:ModelBuilder> */
5692 var36 = var31->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var31:ModelBuilder> */
5693 if (unlikely(var36 == NULL)) {
5694 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5695 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
5696 show_backtrace(1);
5697 }
5698 var34 = var36;
5699 RET_LABEL35:(void)0;
5700 }
5701 }
5702 {
5703 { /* Inline toolcontext#ToolContext#error_count (var34) on <var34:ToolContext> */
5704 var39 = var34->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var34:ToolContext> */
5705 var37 = var39;
5706 RET_LABEL38:(void)0;
5707 }
5708 }
5709 var_errcount = var37;
5710 {
5711 { /* Inline model#MProperty#name (var_mproperty) on <var_mproperty:MMethod> */
5712 var42 = var_mproperty->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mproperty:MMethod> */
5713 if (unlikely(var42 == NULL)) {
5714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5715 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
5716 show_backtrace(1);
5717 }
5718 var40 = var42;
5719 RET_LABEL41:(void)0;
5720 }
5721 }
5722 {
5723 var43 = typing__TypeVisitor__try_get_mproperty_by_name2(var_v, self, var_msupertype, var40);
5724 }
5725 /* <var43:nullable MProperty> isa nullable MMethod */
5726 cltype45 = type_nullable_model__MMethod.color;
5727 idtype46 = type_nullable_model__MMethod.id;
5728 if(var43 == NULL) {
5729 var44 = 1;
5730 } else {
5731 if(cltype45 >= var43->type->table_size) {
5732 var44 = 0;
5733 } else {
5734 var44 = var43->type->type_table[cltype45] == idtype46;
5735 }
5736 }
5737 if (unlikely(!var44)) {
5738 var_class_name = var43 == NULL ? "null" : var43->type->name;
5739 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
5740 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1521);
5741 show_backtrace(1);
5742 }
5743 var_candidate = var43;
5744 var47 = NULL;
5745 if (var_candidate == NULL) {
5746 var48 = 1; /* is null */
5747 } else {
5748 var48 = 0; /* arg is null but recv is not */
5749 }
5750 if (0) {
5751 { /* Inline kernel#Object#== (var_candidate,var47) on <var_candidate:nullable MMethod> */
5752 var_other51 = var47;
5753 {
5754 { /* Inline kernel#Object#is_same_instance (var_candidate,var_other51) on <var_candidate:nullable MMethod(MMethod)> */
5755 var54 = var_candidate == var_other51;
5756 var52 = var54;
5757 goto RET_LABEL53;
5758 RET_LABEL53:(void)0;
5759 }
5760 }
5761 var49 = var52;
5762 goto RET_LABEL50;
5763 RET_LABEL50:(void)0;
5764 }
5765 var48 = var49;
5766 }
5767 if (var48){
5768 {
5769 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
5770 var57 = var_v->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
5771 if (unlikely(var57 == NULL)) {
5772 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5773 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 36);
5774 show_backtrace(1);
5775 }
5776 var55 = var57;
5777 RET_LABEL56:(void)0;
5778 }
5779 }
5780 {
5781 { /* Inline modelbuilder#ModelBuilder#toolcontext (var55) on <var55:ModelBuilder> */
5782 var60 = var55->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var55:ModelBuilder> */
5783 if (unlikely(var60 == NULL)) {
5784 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5785 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
5786 show_backtrace(1);
5787 }
5788 var58 = var60;
5789 RET_LABEL59:(void)0;
5790 }
5791 }
5792 {
5793 { /* Inline toolcontext#ToolContext#error_count (var58) on <var58:ToolContext> */
5794 var63 = var58->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var58:ToolContext> */
5795 var61 = var63;
5796 RET_LABEL62:(void)0;
5797 }
5798 }
5799 {
5800 { /* Inline kernel#Int#> (var61,var_errcount) on <var61:Int> */
5801 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
5802 /* <var_errcount:Int> isa OTHER */
5803 var66 = 1; /* easy <var_errcount:Int> isa OTHER*/
5804 if (unlikely(!var66)) {
5805 var_class_name69 = type_kernel__Int.name;
5806 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name69);
5807 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
5808 show_backtrace(1);
5809 }
5810 var70 = var61 > var_errcount;
5811 var64 = var70;
5812 goto RET_LABEL65;
5813 RET_LABEL65:(void)0;
5814 }
5815 }
5816 if (var64){
5817 goto RET_LABEL;
5818 } else {
5819 }
5820 goto CONTINUE_label;
5821 } else {
5822 }
5823 var72 = NULL;
5824 if (var_superprop == NULL) {
5825 var73 = 0; /* is null */
5826 } else {
5827 var73 = 1; /* arg is null and recv is not */
5828 }
5829 if (0) {
5830 { /* Inline kernel#Object#!= (var_superprop,var72) on <var_superprop:nullable MMethodDef> */
5831 var_other = var72;
5832 {
5833 var77 = ((short int (*)(val*, val*))(var_superprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_superprop, var_other) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
5834 var76 = var77;
5835 }
5836 var78 = !var76;
5837 var74 = var78;
5838 goto RET_LABEL75;
5839 RET_LABEL75:(void)0;
5840 }
5841 var73 = var74;
5842 }
5843 var_ = var73;
5844 if (var73){
5845 {
5846 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
5847 var81 = var_superprop->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
5848 if (unlikely(var81 == NULL)) {
5849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5850 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
5851 show_backtrace(1);
5852 }
5853 var79 = var81;
5854 RET_LABEL80:(void)0;
5855 }
5856 }
5857 {
5858 { /* Inline kernel#Object#!= (var79,var_candidate) on <var79:MProperty(MMethod)> */
5859 var_other = var_candidate;
5860 {
5861 var86 = ((short int (*)(val*, val*))(var79->class->vft[COLOR_kernel__Object___61d_61d]))(var79, var_other) /* == on <var79:MProperty(MMethod)>*/;
5862 var85 = var86;
5863 }
5864 var87 = !var85;
5865 var83 = var87;
5866 goto RET_LABEL84;
5867 RET_LABEL84:(void)0;
5868 }
5869 var82 = var83;
5870 }
5871 var71 = var82;
5872 } else {
5873 var71 = var_;
5874 }
5875 if (var71){
5876 if (varonce) {
5877 var88 = varonce;
5878 } else {
5879 var89 = "Error: conflicting super constructor to call for ";
5880 var90 = 49;
5881 var91 = string__NativeString__to_s_with_length(var89, var90);
5882 var88 = var91;
5883 varonce = var88;
5884 }
5885 if (varonce92) {
5886 var93 = varonce92;
5887 } else {
5888 var94 = ": ";
5889 var95 = 2;
5890 var96 = string__NativeString__to_s_with_length(var94, var95);
5891 var93 = var96;
5892 varonce92 = var93;
5893 }
5894 {
5895 var97 = model__MProperty__full_name(var_candidate);
5896 }
5897 if (varonce98) {
5898 var99 = varonce98;
5899 } else {
5900 var100 = ", ";
5901 var101 = 2;
5902 var102 = string__NativeString__to_s_with_length(var100, var101);
5903 var99 = var102;
5904 varonce98 = var99;
5905 }
5906 {
5907 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
5908 var105 = var_superprop->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
5909 if (unlikely(var105 == NULL)) {
5910 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5911 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
5912 show_backtrace(1);
5913 }
5914 var103 = var105;
5915 RET_LABEL104:(void)0;
5916 }
5917 }
5918 {
5919 var106 = model__MProperty__full_name(var103);
5920 }
5921 var107 = NEW_array__Array(&type_array__Arraykernel__Object);
5922 { /* var107 = array_instance Array[Object] */
5923 var108 = 6;
5924 var109 = NEW_array__NativeArray(var108, &type_array__NativeArraykernel__Object);
5925 ((struct instance_array__NativeArray*)var109)->values[0] = (val*) var88;
5926 ((struct instance_array__NativeArray*)var109)->values[1] = (val*) var_mproperty;
5927 ((struct instance_array__NativeArray*)var109)->values[2] = (val*) var93;
5928 ((struct instance_array__NativeArray*)var109)->values[3] = (val*) var97;
5929 ((struct instance_array__NativeArray*)var109)->values[4] = (val*) var99;
5930 ((struct instance_array__NativeArray*)var109)->values[5] = (val*) var106;
5931 {
5932 ((void (*)(val*, val*, long))(var107->class->vft[COLOR_array__Array__with_native]))(var107, var109, var108) /* with_native on <var107:Array[Object]>*/;
5933 }
5934 }
5935 {
5936 var110 = ((val* (*)(val*))(var107->class->vft[COLOR_string__Object__to_s]))(var107) /* to_s on <var107:Array[Object]>*/;
5937 }
5938 {
5939 typing__TypeVisitor__error(var_v, self, var110); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
5940 }
5941 goto RET_LABEL;
5942 } else {
5943 }
5944 {
5945 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
5946 var113 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
5947 if (unlikely(var113 == NULL)) {
5948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5949 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
5950 show_backtrace(1);
5951 }
5952 var111 = var113;
5953 RET_LABEL112:(void)0;
5954 }
5955 }
5956 {
5957 var114 = model__MProperty__lookup_definitions(var_candidate, var111, var_recvtype);
5958 }
5959 var_candidatedefs = var114;
5960 var115 = NULL;
5961 if (var_superprop == NULL) {
5962 var116 = 0; /* is null */
5963 } else {
5964 var116 = 1; /* arg is null and recv is not */
5965 }
5966 if (0) {
5967 { /* Inline kernel#Object#!= (var_superprop,var115) on <var_superprop:nullable MMethodDef> */
5968 var_other = var115;
5969 {
5970 var120 = ((short int (*)(val*, val*))(var_superprop->class->vft[COLOR_kernel__Object___61d_61d]))(var_superprop, var_other) /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/;
5971 var119 = var120;
5972 }
5973 var121 = !var119;
5974 var117 = var121;
5975 goto RET_LABEL118;
5976 RET_LABEL118:(void)0;
5977 }
5978 var116 = var117;
5979 }
5980 if (var116){
5981 {
5982 var122 = abstract_collection__SequenceRead__first(var_candidatedefs);
5983 }
5984 {
5985 { /* Inline kernel#Object#== (var_superprop,var122) on <var_superprop:nullable MMethodDef(MMethodDef)> */
5986 var_other51 = var122;
5987 {
5988 { /* Inline kernel#Object#is_same_instance (var_superprop,var_other51) on <var_superprop:nullable MMethodDef(MMethodDef)> */
5989 var128 = var_superprop == var_other51;
5990 var126 = var128;
5991 goto RET_LABEL127;
5992 RET_LABEL127:(void)0;
5993 }
5994 }
5995 var124 = var126;
5996 goto RET_LABEL125;
5997 RET_LABEL125:(void)0;
5998 }
5999 var123 = var124;
6000 }
6001 if (var123){
6002 goto CONTINUE_label;
6003 } else {
6004 }
6005 {
6006 array__Array__add(var_candidatedefs, var_superprop); /* Direct call array#Array#add on <var_candidatedefs:Array[MMethodDef]>*/
6007 }
6008 } else {
6009 }
6010 {
6011 var129 = array__AbstractArrayRead__length(var_candidatedefs);
6012 }
6013 var130 = 1;
6014 {
6015 { /* Inline kernel#Int#> (var129,var130) on <var129:Int> */
6016 /* Covariant cast for argument 0 (i) <var130:Int> isa OTHER */
6017 /* <var130:Int> isa OTHER */
6018 var133 = 1; /* easy <var130:Int> isa OTHER*/
6019 if (unlikely(!var133)) {
6020 var_class_name136 = type_kernel__Int.name;
6021 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name136);
6022 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
6023 show_backtrace(1);
6024 }
6025 var137 = var129 > var130;
6026 var131 = var137;
6027 goto RET_LABEL132;
6028 RET_LABEL132:(void)0;
6029 }
6030 }
6031 if (var131){
6032 if (varonce138) {
6033 var139 = varonce138;
6034 } else {
6035 var140 = "Error: confliting property definitions for property ";
6036 var141 = 52;
6037 var142 = string__NativeString__to_s_with_length(var140, var141);
6038 var139 = var142;
6039 varonce138 = var139;
6040 }
6041 if (varonce143) {
6042 var144 = varonce143;
6043 } else {
6044 var145 = " in ";
6045 var146 = 4;
6046 var147 = string__NativeString__to_s_with_length(var145, var146);
6047 var144 = var147;
6048 varonce143 = var144;
6049 }
6050 if (varonce148) {
6051 var149 = varonce148;
6052 } else {
6053 var150 = ": ";
6054 var151 = 2;
6055 var152 = string__NativeString__to_s_with_length(var150, var151);
6056 var149 = var152;
6057 varonce148 = var149;
6058 }
6059 if (varonce153) {
6060 var154 = varonce153;
6061 } else {
6062 var155 = ", ";
6063 var156 = 2;
6064 var157 = string__NativeString__to_s_with_length(var155, var156);
6065 var154 = var157;
6066 varonce153 = var154;
6067 }
6068 {
6069 var158 = string__Collection__join(var_candidatedefs, var154);
6070 }
6071 var159 = NEW_array__Array(&type_array__Arraykernel__Object);
6072 { /* var159 = array_instance Array[Object] */
6073 var160 = 6;
6074 var161 = NEW_array__NativeArray(var160, &type_array__NativeArraykernel__Object);
6075 ((struct instance_array__NativeArray*)var161)->values[0] = (val*) var139;
6076 ((struct instance_array__NativeArray*)var161)->values[1] = (val*) var_mproperty;
6077 ((struct instance_array__NativeArray*)var161)->values[2] = (val*) var144;
6078 ((struct instance_array__NativeArray*)var161)->values[3] = (val*) var_recvtype;
6079 ((struct instance_array__NativeArray*)var161)->values[4] = (val*) var149;
6080 ((struct instance_array__NativeArray*)var161)->values[5] = (val*) var158;
6081 {
6082 ((void (*)(val*, val*, long))(var159->class->vft[COLOR_array__Array__with_native]))(var159, var161, var160) /* with_native on <var159:Array[Object]>*/;
6083 }
6084 }
6085 {
6086 var162 = ((val* (*)(val*))(var159->class->vft[COLOR_string__Object__to_s]))(var159) /* to_s on <var159:Array[Object]>*/;
6087 }
6088 {
6089 typing__TypeVisitor__error(var_v, self, var162); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6090 }
6091 goto RET_LABEL;
6092 } else {
6093 }
6094 {
6095 var163 = abstract_collection__SequenceRead__first(var_candidatedefs);
6096 }
6097 var_superprop = var163;
6098 CONTINUE_label: (void)0;
6099 {
6100 array__ArrayIterator__next(var24); /* Direct call array#ArrayIterator#next on <var24:ArrayIterator[nullable Object]>*/
6101 }
6102 }
6103 BREAK_label: (void)0;
6104 var164 = NULL;
6105 if (var_superprop == NULL) {
6106 var165 = 1; /* is null */
6107 } else {
6108 var165 = 0; /* arg is null but recv is not */
6109 }
6110 if (0) {
6111 { /* Inline kernel#Object#== (var_superprop,var164) on <var_superprop:nullable MMethodDef> */
6112 var_other51 = var164;
6113 {
6114 { /* Inline kernel#Object#is_same_instance (var_superprop,var_other51) on <var_superprop:nullable MMethodDef(MMethodDef)> */
6115 var170 = var_superprop == var_other51;
6116 var168 = var170;
6117 goto RET_LABEL169;
6118 RET_LABEL169:(void)0;
6119 }
6120 }
6121 var166 = var168;
6122 goto RET_LABEL167;
6123 RET_LABEL167:(void)0;
6124 }
6125 var165 = var166;
6126 }
6127 if (var165){
6128 if (varonce171) {
6129 var172 = varonce171;
6130 } else {
6131 var173 = "Error: No super method to call for ";
6132 var174 = 35;
6133 var175 = string__NativeString__to_s_with_length(var173, var174);
6134 var172 = var175;
6135 varonce171 = var172;
6136 }
6137 if (varonce176) {
6138 var177 = varonce176;
6139 } else {
6140 var178 = ".";
6141 var179 = 1;
6142 var180 = string__NativeString__to_s_with_length(var178, var179);
6143 var177 = var180;
6144 varonce176 = var177;
6145 }
6146 var181 = NEW_array__Array(&type_array__Arraykernel__Object);
6147 { /* var181 = array_instance Array[Object] */
6148 var182 = 3;
6149 var183 = NEW_array__NativeArray(var182, &type_array__NativeArraykernel__Object);
6150 ((struct instance_array__NativeArray*)var183)->values[0] = (val*) var172;
6151 ((struct instance_array__NativeArray*)var183)->values[1] = (val*) var_mproperty;
6152 ((struct instance_array__NativeArray*)var183)->values[2] = (val*) var177;
6153 {
6154 ((void (*)(val*, val*, long))(var181->class->vft[COLOR_array__Array__with_native]))(var181, var183, var182) /* with_native on <var181:Array[Object]>*/;
6155 }
6156 }
6157 {
6158 var184 = ((val* (*)(val*))(var181->class->vft[COLOR_string__Object__to_s]))(var181) /* to_s on <var181:Array[Object]>*/;
6159 }
6160 {
6161 typing__TypeVisitor__error(var_v, self, var184); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6162 }
6163 goto RET_LABEL;
6164 } else {
6165 }
6166 {
6167 { /* Inline model#MMethodDef#msignature (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
6168 var187 = var_superprop->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_superprop:nullable MMethodDef(MMethodDef)> */
6169 var185 = var187;
6170 RET_LABEL186:(void)0;
6171 }
6172 }
6173 if (unlikely(var185 == NULL)) {
6174 PRINT_ERROR("Runtime error: %s", "Cast failed");
6175 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1546);
6176 show_backtrace(1);
6177 }
6178 var_msignature = var185;
6179 var188 = 1;
6180 {
6181 var189 = typing__TypeVisitor__resolve_for(var_v, var_msignature, var_recvtype, var188);
6182 }
6183 /* <var189:MType> isa MSignature */
6184 cltype191 = type_model__MSignature.color;
6185 idtype192 = type_model__MSignature.id;
6186 if(cltype191 >= var189->type->table_size) {
6187 var190 = 0;
6188 } else {
6189 var190 = var189->type->type_table[cltype191] == idtype192;
6190 }
6191 if (unlikely(!var190)) {
6192 var_class_name193 = var189 == NULL ? "null" : var189->type->name;
6193 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name193);
6194 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1547);
6195 show_backtrace(1);
6196 }
6197 var_msignature = var189;
6198 var194 = NEW_typing__CallSite(&type_typing__CallSite);
6199 {
6200 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
6201 var197 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
6202 if (unlikely(var197 == NULL)) {
6203 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6204 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
6205 show_backtrace(1);
6206 }
6207 var195 = var197;
6208 RET_LABEL196:(void)0;
6209 }
6210 }
6211 {
6212 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
6213 var200 = var_v->attrs[COLOR_typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
6214 var198 = var200;
6215 RET_LABEL199:(void)0;
6216 }
6217 }
6218 var201 = 1;
6219 {
6220 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
6221 var204 = var_superprop->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
6222 if (unlikely(var204 == NULL)) {
6223 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6224 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
6225 show_backtrace(1);
6226 }
6227 var202 = var204;
6228 RET_LABEL203:(void)0;
6229 }
6230 }
6231 var205 = 0;
6232 {
6233 { /* Inline typing#CallSite#init (var194,self,var_recvtype,var195,var198,var201,var202,var_superprop,var_msignature,var205) on <var194:CallSite> */
6234 var194->attrs[COLOR_typing__CallSite___node].val = self; /* _node on <var194:CallSite> */
6235 var194->attrs[COLOR_typing__CallSite___recv].val = var_recvtype; /* _recv on <var194:CallSite> */
6236 var194->attrs[COLOR_typing__CallSite___mmodule].val = var195; /* _mmodule on <var194:CallSite> */
6237 var194->attrs[COLOR_typing__CallSite___anchor].val = var198; /* _anchor on <var194:CallSite> */
6238 var194->attrs[COLOR_typing__CallSite___recv_is_self].s = var201; /* _recv_is_self on <var194:CallSite> */
6239 var194->attrs[COLOR_typing__CallSite___mproperty].val = var202; /* _mproperty on <var194:CallSite> */
6240 var194->attrs[COLOR_typing__CallSite___mpropdef].val = var_superprop; /* _mpropdef on <var194:CallSite> */
6241 var194->attrs[COLOR_typing__CallSite___msignature].val = var_msignature; /* _msignature on <var194:CallSite> */
6242 var194->attrs[COLOR_typing__CallSite___erasure_cast].s = var205; /* _erasure_cast on <var194:CallSite> */
6243 RET_LABEL206:(void)0;
6244 }
6245 }
6246 var_callsite = var194;
6247 {
6248 { /* Inline typing#ASuperExpr#callsite= (self,var_callsite) on <self:ASuperExpr> */
6249 self->attrs[COLOR_typing__ASuperExpr___callsite].val = var_callsite; /* _callsite on <self:ASuperExpr> */
6250 RET_LABEL207:(void)0;
6251 }
6252 }
6253 {
6254 var208 = parser_nodes__ASuperExpr__n_args(self);
6255 }
6256 {
6257 var209 = typing__AExprs__to_a(var208);
6258 }
6259 var_args = var209;
6260 {
6261 var210 = array__AbstractArrayRead__length(var_args);
6262 }
6263 var211 = 0;
6264 {
6265 { /* Inline kernel#Int#> (var210,var211) on <var210:Int> */
6266 /* Covariant cast for argument 0 (i) <var211:Int> isa OTHER */
6267 /* <var211:Int> isa OTHER */
6268 var214 = 1; /* easy <var211:Int> isa OTHER*/
6269 if (unlikely(!var214)) {
6270 var_class_name217 = type_kernel__Int.name;
6271 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name217);
6272 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
6273 show_backtrace(1);
6274 }
6275 var218 = var210 > var211;
6276 var212 = var218;
6277 goto RET_LABEL213;
6278 RET_LABEL213:(void)0;
6279 }
6280 }
6281 if (var212){
6282 {
6283 var219 = typing__CallSite__check_signature(var_callsite, var_v, var_args);
6284 }
6285 var219;
6286 } else {
6287 {
6288 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
6289 var222 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
6290 var220 = var222;
6291 RET_LABEL221:(void)0;
6292 }
6293 }
6294 if (var220 == NULL) {
6295 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6296 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1557);
6297 show_backtrace(1);
6298 } else {
6299 var223 = model__MSignature__arity(var220);
6300 }
6301 {
6302 var224 = model__MSignature__arity(var_msignature);
6303 }
6304 {
6305 { /* Inline kernel#Int#< (var223,var224) on <var223:Int> */
6306 /* Covariant cast for argument 0 (i) <var224:Int> isa OTHER */
6307 /* <var224:Int> isa OTHER */
6308 var227 = 1; /* easy <var224:Int> isa OTHER*/
6309 if (unlikely(!var227)) {
6310 var_class_name230 = type_kernel__Int.name;
6311 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name230);
6312 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
6313 show_backtrace(1);
6314 }
6315 var231 = var223 < var224;
6316 var225 = var231;
6317 goto RET_LABEL226;
6318 RET_LABEL226:(void)0;
6319 }
6320 }
6321 if (var225){
6322 if (varonce232) {
6323 var233 = varonce232;
6324 } else {
6325 var234 = "Error: Not enough implicit arguments to pass. Got ";
6326 var235 = 50;
6327 var236 = string__NativeString__to_s_with_length(var234, var235);
6328 var233 = var236;
6329 varonce232 = var233;
6330 }
6331 {
6332 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
6333 var239 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
6334 var237 = var239;
6335 RET_LABEL238:(void)0;
6336 }
6337 }
6338 if (var237 == NULL) {
6339 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6340 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1558);
6341 show_backtrace(1);
6342 } else {
6343 var240 = model__MSignature__arity(var237);
6344 }
6345 if (varonce241) {
6346 var242 = varonce241;
6347 } else {
6348 var243 = ", expected at least ";
6349 var244 = 20;
6350 var245 = string__NativeString__to_s_with_length(var243, var244);
6351 var242 = var245;
6352 varonce241 = var242;
6353 }
6354 {
6355 var246 = model__MSignature__arity(var_msignature);
6356 }
6357 if (varonce247) {
6358 var248 = varonce247;
6359 } else {
6360 var249 = ". Signature is ";
6361 var250 = 15;
6362 var251 = string__NativeString__to_s_with_length(var249, var250);
6363 var248 = var251;
6364 varonce247 = var248;
6365 }
6366 var252 = NEW_array__Array(&type_array__Arraykernel__Object);
6367 { /* var252 = array_instance Array[Object] */
6368 var253 = 6;
6369 var254 = NEW_array__NativeArray(var253, &type_array__NativeArraykernel__Object);
6370 ((struct instance_array__NativeArray*)var254)->values[0] = (val*) var233;
6371 var255 = BOX_kernel__Int(var240); /* autobox from Int to Object */
6372 ((struct instance_array__NativeArray*)var254)->values[1] = (val*) var255;
6373 ((struct instance_array__NativeArray*)var254)->values[2] = (val*) var242;
6374 var256 = BOX_kernel__Int(var246); /* autobox from Int to Object */
6375 ((struct instance_array__NativeArray*)var254)->values[3] = (val*) var256;
6376 ((struct instance_array__NativeArray*)var254)->values[4] = (val*) var248;
6377 ((struct instance_array__NativeArray*)var254)->values[5] = (val*) var_msignature;
6378 {
6379 ((void (*)(val*, val*, long))(var252->class->vft[COLOR_array__Array__with_native]))(var252, var254, var253) /* with_native on <var252:Array[Object]>*/;
6380 }
6381 }
6382 {
6383 var257 = ((val* (*)(val*))(var252->class->vft[COLOR_string__Object__to_s]))(var252) /* to_s on <var252:Array[Object]>*/;
6384 }
6385 {
6386 typing__TypeVisitor__error(var_v, self, var257); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6387 }
6388 goto RET_LABEL;
6389 } else {
6390 }
6391 var258 = 0;
6392 var_i = var258;
6393 {
6394 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
6395 var261 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
6396 if (unlikely(var261 == NULL)) {
6397 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6398 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
6399 show_backtrace(1);
6400 }
6401 var259 = var261;
6402 RET_LABEL260:(void)0;
6403 }
6404 }
6405 {
6406 var262 = array__AbstractArrayRead__iterator(var259);
6407 }
6408 for(;;) {
6409 {
6410 var263 = array__ArrayIterator__is_ok(var262);
6411 }
6412 if(!var263) break;
6413 {
6414 var264 = array__ArrayIterator__item(var262);
6415 }
6416 var_sp = var264;
6417 {
6418 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
6419 var267 = var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
6420 var265 = var267;
6421 RET_LABEL266:(void)0;
6422 }
6423 }
6424 if (var265 == NULL) {
6425 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6426 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1564);
6427 show_backtrace(1);
6428 } else {
6429 { /* Inline model#MSignature#mparameters (var265) on <var265:nullable MSignature> */
6430 if (unlikely(var265 == NULL)) {
6431 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6432 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
6433 show_backtrace(1);
6434 }
6435 var270 = var265->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var265:nullable MSignature> */
6436 if (unlikely(var270 == NULL)) {
6437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6438 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
6439 show_backtrace(1);
6440 }
6441 var268 = var270;
6442 RET_LABEL269:(void)0;
6443 }
6444 }
6445 {
6446 var271 = array__Array___91d_93d(var268, var_i);
6447 }
6448 var_p = var271;
6449 {
6450 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
6451 var274 = var_p->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
6452 if (unlikely(var274 == NULL)) {
6453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6454 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
6455 show_backtrace(1);
6456 }
6457 var272 = var274;
6458 RET_LABEL273:(void)0;
6459 }
6460 }
6461 {
6462 { /* Inline model#MParameter#mtype (var_sp) on <var_sp:MParameter> */
6463 var277 = var_sp->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_sp:MParameter> */
6464 if (unlikely(var277 == NULL)) {
6465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6466 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
6467 show_backtrace(1);
6468 }
6469 var275 = var277;
6470 RET_LABEL276:(void)0;
6471 }
6472 }
6473 {
6474 var278 = typing__TypeVisitor__is_subtype(var_v, var272, var275);
6475 }
6476 var279 = !var278;
6477 if (var279){
6478 if (varonce280) {
6479 var281 = varonce280;
6480 } else {
6481 var282 = "Type error: expected argument #";
6482 var283 = 31;
6483 var284 = string__NativeString__to_s_with_length(var282, var283);
6484 var281 = var284;
6485 varonce280 = var281;
6486 }
6487 if (varonce285) {
6488 var286 = varonce285;
6489 } else {
6490 var287 = " of type ";
6491 var288 = 9;
6492 var289 = string__NativeString__to_s_with_length(var287, var288);
6493 var286 = var289;
6494 varonce285 = var286;
6495 }
6496 {
6497 { /* Inline model#MParameter#mtype (var_sp) on <var_sp:MParameter> */
6498 var292 = var_sp->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_sp:MParameter> */
6499 if (unlikely(var292 == NULL)) {
6500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6501 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
6502 show_backtrace(1);
6503 }
6504 var290 = var292;
6505 RET_LABEL291:(void)0;
6506 }
6507 }
6508 if (varonce293) {
6509 var294 = varonce293;
6510 } else {
6511 var295 = ", got implicit argument ";
6512 var296 = 24;
6513 var297 = string__NativeString__to_s_with_length(var295, var296);
6514 var294 = var297;
6515 varonce293 = var294;
6516 }
6517 {
6518 { /* Inline model#MParameter#name (var_p) on <var_p:MParameter> */
6519 var300 = var_p->attrs[COLOR_model__MParameter___name].val; /* _name on <var_p:MParameter> */
6520 if (unlikely(var300 == NULL)) {
6521 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6522 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
6523 show_backtrace(1);
6524 }
6525 var298 = var300;
6526 RET_LABEL299:(void)0;
6527 }
6528 }
6529 if (varonce301) {
6530 var302 = varonce301;
6531 } else {
6532 var303 = " of type ";
6533 var304 = 9;
6534 var305 = string__NativeString__to_s_with_length(var303, var304);
6535 var302 = var305;
6536 varonce301 = var302;
6537 }
6538 {
6539 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
6540 var308 = var_p->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
6541 if (unlikely(var308 == NULL)) {
6542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6543 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
6544 show_backtrace(1);
6545 }
6546 var306 = var308;
6547 RET_LABEL307:(void)0;
6548 }
6549 }
6550 if (varonce309) {
6551 var310 = varonce309;
6552 } else {
6553 var311 = ". Signature is ";
6554 var312 = 15;
6555 var313 = string__NativeString__to_s_with_length(var311, var312);
6556 var310 = var313;
6557 varonce309 = var310;
6558 }
6559 var314 = NEW_array__Array(&type_array__Arraykernel__Object);
6560 { /* var314 = array_instance Array[Object] */
6561 var315 = 10;
6562 var316 = NEW_array__NativeArray(var315, &type_array__NativeArraykernel__Object);
6563 ((struct instance_array__NativeArray*)var316)->values[0] = (val*) var281;
6564 var317 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
6565 ((struct instance_array__NativeArray*)var316)->values[1] = (val*) var317;
6566 ((struct instance_array__NativeArray*)var316)->values[2] = (val*) var286;
6567 ((struct instance_array__NativeArray*)var316)->values[3] = (val*) var290;
6568 ((struct instance_array__NativeArray*)var316)->values[4] = (val*) var294;
6569 ((struct instance_array__NativeArray*)var316)->values[5] = (val*) var298;
6570 ((struct instance_array__NativeArray*)var316)->values[6] = (val*) var302;
6571 ((struct instance_array__NativeArray*)var316)->values[7] = (val*) var306;
6572 ((struct instance_array__NativeArray*)var316)->values[8] = (val*) var310;
6573 ((struct instance_array__NativeArray*)var316)->values[9] = (val*) var_msignature;
6574 {
6575 ((void (*)(val*, val*, long))(var314->class->vft[COLOR_array__Array__with_native]))(var314, var316, var315) /* with_native on <var314:Array[Object]>*/;
6576 }
6577 }
6578 {
6579 var318 = ((val* (*)(val*))(var314->class->vft[COLOR_string__Object__to_s]))(var314) /* to_s on <var314:Array[Object]>*/;
6580 }
6581 {
6582 typing__TypeVisitor__error(var_v, self, var318); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6583 }
6584 goto RET_LABEL;
6585 } else {
6586 }
6587 var319 = 1;
6588 {
6589 { /* Inline kernel#Int#+ (var_i,var319) on <var_i:Int> */
6590 /* Covariant cast for argument 0 (i) <var319:Int> isa OTHER */
6591 /* <var319:Int> isa OTHER */
6592 var322 = 1; /* easy <var319:Int> isa OTHER*/
6593 if (unlikely(!var322)) {
6594 var_class_name325 = type_kernel__Int.name;
6595 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name325);
6596 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
6597 show_backtrace(1);
6598 }
6599 var326 = var_i + var319;
6600 var320 = var326;
6601 goto RET_LABEL321;
6602 RET_LABEL321:(void)0;
6603 }
6604 }
6605 var_i = var320;
6606 CONTINUE_label327: (void)0;
6607 {
6608 array__ArrayIterator__next(var262); /* Direct call array#ArrayIterator#next on <var262:ArrayIterator[nullable Object]>*/
6609 }
6610 }
6611 BREAK_label327: (void)0;
6612 }
6613 var328 = 1;
6614 {
6615 { /* Inline typing#AExpr#is_typed= (self,var328) on <self:ASuperExpr> */
6616 self->attrs[COLOR_typing__AExpr___is_typed].s = var328; /* _is_typed on <self:ASuperExpr> */
6617 RET_LABEL329:(void)0;
6618 }
6619 }
6620 RET_LABEL:;
6621 }
6622 /* method typing#ASuperExpr#process_superinit for (self: Object, TypeVisitor) */
6623 void VIRTUAL_typing__ASuperExpr__process_superinit(val* self, val* p0) {
6624 typing__ASuperExpr__process_superinit(self, p0); /* Direct call typing#ASuperExpr#process_superinit on <self:Object(ASuperExpr)>*/
6625 RET_LABEL:;
6626 }
6627 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
6628 val* typing__ANewExpr__callsite(val* self) {
6629 val* var /* : nullable CallSite */;
6630 val* var1 /* : nullable CallSite */;
6631 var1 = self->attrs[COLOR_typing__ANewExpr___callsite].val; /* _callsite on <self:ANewExpr> */
6632 var = var1;
6633 RET_LABEL:;
6634 return var;
6635 }
6636 /* method typing#ANewExpr#callsite for (self: Object): nullable CallSite */
6637 val* VIRTUAL_typing__ANewExpr__callsite(val* self) {
6638 val* var /* : nullable CallSite */;
6639 val* var1 /* : nullable CallSite */;
6640 val* var3 /* : nullable CallSite */;
6641 { /* Inline typing#ANewExpr#callsite (self) on <self:Object(ANewExpr)> */
6642 var3 = self->attrs[COLOR_typing__ANewExpr___callsite].val; /* _callsite on <self:Object(ANewExpr)> */
6643 var1 = var3;
6644 RET_LABEL2:(void)0;
6645 }
6646 var = var1;
6647 RET_LABEL:;
6648 return var;
6649 }
6650 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
6651 void typing__ANewExpr__callsite_61d(val* self, val* p0) {
6652 self->attrs[COLOR_typing__ANewExpr___callsite].val = p0; /* _callsite on <self:ANewExpr> */
6653 RET_LABEL:;
6654 }
6655 /* method typing#ANewExpr#callsite= for (self: Object, nullable CallSite) */
6656 void VIRTUAL_typing__ANewExpr__callsite_61d(val* self, val* p0) {
6657 { /* Inline typing#ANewExpr#callsite= (self,p0) on <self:Object(ANewExpr)> */
6658 self->attrs[COLOR_typing__ANewExpr___callsite].val = p0; /* _callsite on <self:Object(ANewExpr)> */
6659 RET_LABEL1:(void)0;
6660 }
6661 RET_LABEL:;
6662 }
6663 /* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */
6664 void typing__ANewExpr__accept_typing(val* self, val* p0) {
6665 val* var_v /* var v: TypeVisitor */;
6666 val* var /* : AType */;
6667 val* var1 /* : nullable MType */;
6668 val* var_recvtype /* var recvtype: nullable MType */;
6669 val* var2 /* : null */;
6670 short int var3 /* : Bool */;
6671 short int var4 /* : Bool */;
6672 val* var_other /* var other: nullable Object */;
6673 short int var6 /* : Bool */;
6674 short int var8 /* : Bool */;
6675 short int var10 /* : Bool */;
6676 int cltype;
6677 int idtype;
6678 short int var11 /* : Bool */;
6679 short int var12 /* : Bool */;
6680 int cltype13;
6681 int idtype14;
6682 static val* varonce;
6683 val* var15 /* : String */;
6684 char* var16 /* : NativeString */;
6685 long var17 /* : Int */;
6686 val* var18 /* : FlatString */;
6687 static val* varonce19;
6688 val* var20 /* : String */;
6689 char* var21 /* : NativeString */;
6690 long var22 /* : Int */;
6691 val* var23 /* : FlatString */;
6692 val* var24 /* : Array[Object] */;
6693 long var25 /* : Int */;
6694 val* var26 /* : NativeArray[Object] */;
6695 val* var27 /* : String */;
6696 static val* varonce28;
6697 val* var29 /* : String */;
6698 char* var30 /* : NativeString */;
6699 long var31 /* : Int */;
6700 val* var32 /* : FlatString */;
6701 static val* varonce33;
6702 val* var34 /* : String */;
6703 char* var35 /* : NativeString */;
6704 long var36 /* : Int */;
6705 val* var37 /* : FlatString */;
6706 val* var38 /* : Array[Object] */;
6707 long var39 /* : Int */;
6708 val* var40 /* : NativeArray[Object] */;
6709 val* var41 /* : String */;
6710 val* var42 /* : MClass */;
6711 val* var44 /* : MClass */;
6712 val* var45 /* : MClassKind */;
6713 val* var47 /* : MClassKind */;
6714 val* var48 /* : MClassKind */;
6715 short int var49 /* : Bool */;
6716 short int var50 /* : Bool */;
6717 short int var52 /* : Bool */;
6718 short int var54 /* : Bool */;
6719 static val* varonce55;
6720 val* var56 /* : String */;
6721 char* var57 /* : NativeString */;
6722 long var58 /* : Int */;
6723 val* var59 /* : FlatString */;
6724 static val* varonce60;
6725 val* var61 /* : String */;
6726 char* var62 /* : NativeString */;
6727 long var63 /* : Int */;
6728 val* var64 /* : FlatString */;
6729 val* var65 /* : Array[Object] */;
6730 long var66 /* : Int */;
6731 val* var67 /* : NativeArray[Object] */;
6732 val* var68 /* : String */;
6733 val* var69 /* : MClass */;
6734 val* var71 /* : MClass */;
6735 val* var72 /* : MClassKind */;
6736 val* var74 /* : MClassKind */;
6737 val* var75 /* : MClassKind */;
6738 short int var76 /* : Bool */;
6739 short int var77 /* : Bool */;
6740 short int var79 /* : Bool */;
6741 short int var81 /* : Bool */;
6742 static val* varonce82;
6743 val* var83 /* : String */;
6744 char* var84 /* : NativeString */;
6745 long var85 /* : Int */;
6746 val* var86 /* : FlatString */;
6747 static val* varonce87;
6748 val* var88 /* : String */;
6749 char* var89 /* : NativeString */;
6750 long var90 /* : Int */;
6751 val* var91 /* : FlatString */;
6752 val* var92 /* : Array[Object] */;
6753 long var93 /* : Int */;
6754 val* var94 /* : NativeArray[Object] */;
6755 val* var95 /* : String */;
6756 val* var96 /* : nullable TId */;
6757 val* var_nid /* var nid: nullable TId */;
6758 val* var97 /* : null */;
6759 short int var98 /* : Bool */;
6760 short int var99 /* : Bool */;
6761 val* var_other101 /* var other: nullable Object */;
6762 short int var102 /* : Bool */;
6763 short int var103 /* : Bool */;
6764 short int var104 /* : Bool */;
6765 val* var105 /* : String */;
6766 val* var_name /* var name: String */;
6767 static val* varonce106;
6768 val* var107 /* : String */;
6769 char* var108 /* : NativeString */;
6770 long var109 /* : Int */;
6771 val* var110 /* : FlatString */;
6772 short int var111 /* : Bool */;
6773 val* var112 /* : nullable CallSite */;
6774 val* var_callsite /* var callsite: nullable CallSite */;
6775 val* var113 /* : null */;
6776 short int var114 /* : Bool */;
6777 short int var115 /* : Bool */;
6778 short int var117 /* : Bool */;
6779 short int var119 /* : Bool */;
6780 val* var121 /* : MMethod */;
6781 val* var123 /* : MMethod */;
6782 val* var124 /* : MClass */;
6783 val* var126 /* : MClass */;
6784 short int var127 /* : Bool */;
6785 short int var128 /* : Bool */;
6786 static val* varonce129;
6787 val* var130 /* : String */;
6788 char* var131 /* : NativeString */;
6789 long var132 /* : Int */;
6790 val* var133 /* : FlatString */;
6791 static val* varonce134;
6792 val* var135 /* : String */;
6793 char* var136 /* : NativeString */;
6794 long var137 /* : Int */;
6795 val* var138 /* : FlatString */;
6796 val* var139 /* : Array[Object] */;
6797 long var140 /* : Int */;
6798 val* var141 /* : NativeArray[Object] */;
6799 val* var142 /* : String */;
6800 val* var143 /* : AExprs */;
6801 val* var144 /* : Array[AExpr] */;
6802 val* var_args /* var args: Array[AExpr] */;
6803 short int var145 /* : Bool */;
6804 var_v = p0;
6805 {
6806 var = parser_nodes__ANewExpr__n_type(self);
6807 }
6808 {
6809 var1 = typing__TypeVisitor__resolve_mtype(var_v, var);
6810 }
6811 var_recvtype = var1;
6812 var2 = NULL;
6813 if (var_recvtype == NULL) {
6814 var3 = 1; /* is null */
6815 } else {
6816 var3 = 0; /* arg is null but recv is not */
6817 }
6818 if (0) {
6819 { /* Inline kernel#Object#== (var_recvtype,var2) on <var_recvtype:nullable MType> */
6820 var_other = var2;
6821 {
6822 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
6823 var8 = var_recvtype == var_other;
6824 var6 = var8;
6825 goto RET_LABEL7;
6826 RET_LABEL7:(void)0;
6827 }
6828 }
6829 var4 = var6;
6830 goto RET_LABEL5;
6831 RET_LABEL5:(void)0;
6832 }
6833 var3 = var4;
6834 }
6835 if (var3){
6836 goto RET_LABEL;
6837 } else {
6838 }
6839 {
6840 { /* Inline typing#AExpr#mtype= (self,var_recvtype) on <self:ANewExpr> */
6841 self->attrs[COLOR_typing__AExpr___mtype].val = var_recvtype; /* _mtype on <self:ANewExpr> */
6842 RET_LABEL9:(void)0;
6843 }
6844 }
6845 /* <var_recvtype:nullable MType(MType)> isa MClassType */
6846 cltype = type_model__MClassType.color;
6847 idtype = type_model__MClassType.id;
6848 if(cltype >= var_recvtype->type->table_size) {
6849 var10 = 0;
6850 } else {
6851 var10 = var_recvtype->type->type_table[cltype] == idtype;
6852 }
6853 var11 = !var10;
6854 if (var11){
6855 /* <var_recvtype:nullable MType(MType)> isa MNullableType */
6856 cltype13 = type_model__MNullableType.color;
6857 idtype14 = type_model__MNullableType.id;
6858 if(cltype13 >= var_recvtype->type->table_size) {
6859 var12 = 0;
6860 } else {
6861 var12 = var_recvtype->type->type_table[cltype13] == idtype14;
6862 }
6863 if (var12){
6864 if (varonce) {
6865 var15 = varonce;
6866 } else {
6867 var16 = "Type error: cannot instantiate the nullable type ";
6868 var17 = 49;
6869 var18 = string__NativeString__to_s_with_length(var16, var17);
6870 var15 = var18;
6871 varonce = var15;
6872 }
6873 if (varonce19) {
6874 var20 = varonce19;
6875 } else {
6876 var21 = ".";
6877 var22 = 1;
6878 var23 = string__NativeString__to_s_with_length(var21, var22);
6879 var20 = var23;
6880 varonce19 = var20;
6881 }
6882 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
6883 { /* var24 = array_instance Array[Object] */
6884 var25 = 3;
6885 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
6886 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var15;
6887 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var_recvtype;
6888 ((struct instance_array__NativeArray*)var26)->values[2] = (val*) var20;
6889 {
6890 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
6891 }
6892 }
6893 {
6894 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
6895 }
6896 {
6897 typing__TypeVisitor__error(var_v, self, var27); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6898 }
6899 goto RET_LABEL;
6900 } else {
6901 if (varonce28) {
6902 var29 = varonce28;
6903 } else {
6904 var30 = "Type error: cannot instantiate the formal type ";
6905 var31 = 47;
6906 var32 = string__NativeString__to_s_with_length(var30, var31);
6907 var29 = var32;
6908 varonce28 = var29;
6909 }
6910 if (varonce33) {
6911 var34 = varonce33;
6912 } else {
6913 var35 = ".";
6914 var36 = 1;
6915 var37 = string__NativeString__to_s_with_length(var35, var36);
6916 var34 = var37;
6917 varonce33 = var34;
6918 }
6919 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
6920 { /* var38 = array_instance Array[Object] */
6921 var39 = 3;
6922 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
6923 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var29;
6924 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_recvtype;
6925 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34;
6926 {
6927 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
6928 }
6929 }
6930 {
6931 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
6932 }
6933 {
6934 typing__TypeVisitor__error(var_v, self, var41); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
6935 }
6936 goto RET_LABEL;
6937 }
6938 } else {
6939 {
6940 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
6941 var44 = var_recvtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
6942 if (unlikely(var44 == NULL)) {
6943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6944 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
6945 show_backtrace(1);
6946 }
6947 var42 = var44;
6948 RET_LABEL43:(void)0;
6949 }
6950 }
6951 {
6952 { /* Inline model#MClass#kind (var42) on <var42:MClass> */
6953 var47 = var42->attrs[COLOR_model__MClass___kind].val; /* _kind on <var42:MClass> */
6954 if (unlikely(var47 == NULL)) {
6955 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
6956 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
6957 show_backtrace(1);
6958 }
6959 var45 = var47;
6960 RET_LABEL46:(void)0;
6961 }
6962 }
6963 {
6964 var48 = model__Object__abstract_kind(self);
6965 }
6966 {
6967 { /* Inline kernel#Object#== (var45,var48) on <var45:MClassKind> */
6968 var_other = var48;
6969 {
6970 { /* Inline kernel#Object#is_same_instance (var45,var_other) on <var45:MClassKind> */
6971 var54 = var45 == var_other;
6972 var52 = var54;
6973 goto RET_LABEL53;
6974 RET_LABEL53:(void)0;
6975 }
6976 }
6977 var50 = var52;
6978 goto RET_LABEL51;
6979 RET_LABEL51:(void)0;
6980 }
6981 var49 = var50;
6982 }
6983 if (var49){
6984 if (varonce55) {
6985 var56 = varonce55;
6986 } else {
6987 var57 = "Cannot instantiate abstract class ";
6988 var58 = 34;
6989 var59 = string__NativeString__to_s_with_length(var57, var58);
6990 var56 = var59;
6991 varonce55 = var56;
6992 }
6993 if (varonce60) {
6994 var61 = varonce60;
6995 } else {
6996 var62 = ".";
6997 var63 = 1;
6998 var64 = string__NativeString__to_s_with_length(var62, var63);
6999 var61 = var64;
7000 varonce60 = var61;
7001 }
7002 var65 = NEW_array__Array(&type_array__Arraykernel__Object);
7003 { /* var65 = array_instance Array[Object] */
7004 var66 = 3;
7005 var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
7006 ((struct instance_array__NativeArray*)var67)->values[0] = (val*) var56;
7007 ((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_recvtype;
7008 ((struct instance_array__NativeArray*)var67)->values[2] = (val*) var61;
7009 {
7010 ((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
7011 }
7012 }
7013 {
7014 var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
7015 }
7016 {
7017 typing__TypeVisitor__error(var_v, self, var68); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7018 }
7019 goto RET_LABEL;
7020 } else {
7021 {
7022 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
7023 var71 = var_recvtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
7024 if (unlikely(var71 == NULL)) {
7025 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
7026 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
7027 show_backtrace(1);
7028 }
7029 var69 = var71;
7030 RET_LABEL70:(void)0;
7031 }
7032 }
7033 {
7034 { /* Inline model#MClass#kind (var69) on <var69:MClass> */
7035 var74 = var69->attrs[COLOR_model__MClass___kind].val; /* _kind on <var69:MClass> */
7036 if (unlikely(var74 == NULL)) {
7037 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
7038 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
7039 show_backtrace(1);
7040 }
7041 var72 = var74;
7042 RET_LABEL73:(void)0;
7043 }
7044 }
7045 {
7046 var75 = model__Object__interface_kind(self);
7047 }
7048 {
7049 { /* Inline kernel#Object#== (var72,var75) on <var72:MClassKind> */
7050 var_other = var75;
7051 {
7052 { /* Inline kernel#Object#is_same_instance (var72,var_other) on <var72:MClassKind> */
7053 var81 = var72 == var_other;
7054 var79 = var81;
7055 goto RET_LABEL80;
7056 RET_LABEL80:(void)0;
7057 }
7058 }
7059 var77 = var79;
7060 goto RET_LABEL78;
7061 RET_LABEL78:(void)0;
7062 }
7063 var76 = var77;
7064 }
7065 if (var76){
7066 if (varonce82) {
7067 var83 = varonce82;
7068 } else {
7069 var84 = "Cannot instantiate interface ";
7070 var85 = 29;
7071 var86 = string__NativeString__to_s_with_length(var84, var85);
7072 var83 = var86;
7073 varonce82 = var83;
7074 }
7075 if (varonce87) {
7076 var88 = varonce87;
7077 } else {
7078 var89 = ".";
7079 var90 = 1;
7080 var91 = string__NativeString__to_s_with_length(var89, var90);
7081 var88 = var91;
7082 varonce87 = var88;
7083 }
7084 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
7085 { /* var92 = array_instance Array[Object] */
7086 var93 = 3;
7087 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
7088 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var83;
7089 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var_recvtype;
7090 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var88;
7091 {
7092 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
7093 }
7094 }
7095 {
7096 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
7097 }
7098 {
7099 typing__TypeVisitor__error(var_v, self, var95); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7100 }
7101 goto RET_LABEL;
7102 } else {
7103 }
7104 }
7105 }
7106 {
7107 var96 = parser_nodes__ANewExpr__n_id(self);
7108 }
7109 var_nid = var96;
7110 var97 = NULL;
7111 if (var_nid == NULL) {
7112 var98 = 0; /* is null */
7113 } else {
7114 var98 = 1; /* arg is null and recv is not */
7115 }
7116 if (0) {
7117 { /* Inline kernel#Object#!= (var_nid,var97) on <var_nid:nullable TId> */
7118 var_other101 = var97;
7119 {
7120 var103 = ((short int (*)(val*, val*))(var_nid->class->vft[COLOR_kernel__Object___61d_61d]))(var_nid, var_other101) /* == on <var_nid:nullable TId(TId)>*/;
7121 var102 = var103;
7122 }
7123 var104 = !var102;
7124 var99 = var104;
7125 goto RET_LABEL100;
7126 RET_LABEL100:(void)0;
7127 }
7128 var98 = var99;
7129 }
7130 if (var98){
7131 {
7132 var105 = lexer_work__Token__text(var_nid);
7133 }
7134 var_name = var105;
7135 } else {
7136 if (varonce106) {
7137 var107 = varonce106;
7138 } else {
7139 var108 = "init";
7140 var109 = 4;
7141 var110 = string__NativeString__to_s_with_length(var108, var109);
7142 var107 = var110;
7143 varonce106 = var107;
7144 }
7145 var_name = var107;
7146 }
7147 var111 = 0;
7148 {
7149 var112 = typing__TypeVisitor__get_method(var_v, self, var_recvtype, var_name, var111);
7150 }
7151 var_callsite = var112;
7152 var113 = NULL;
7153 if (var_callsite == NULL) {
7154 var114 = 1; /* is null */
7155 } else {
7156 var114 = 0; /* arg is null but recv is not */
7157 }
7158 if (0) {
7159 { /* Inline kernel#Object#== (var_callsite,var113) on <var_callsite:nullable CallSite> */
7160 var_other = var113;
7161 {
7162 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
7163 var119 = var_callsite == var_other;
7164 var117 = var119;
7165 goto RET_LABEL118;
7166 RET_LABEL118:(void)0;
7167 }
7168 }
7169 var115 = var117;
7170 goto RET_LABEL116;
7171 RET_LABEL116:(void)0;
7172 }
7173 var114 = var115;
7174 }
7175 if (var114){
7176 goto RET_LABEL;
7177 } else {
7178 }
7179 {
7180 { /* Inline typing#ANewExpr#callsite= (self,var_callsite) on <self:ANewExpr> */
7181 self->attrs[COLOR_typing__ANewExpr___callsite].val = var_callsite; /* _callsite on <self:ANewExpr> */
7182 RET_LABEL120:(void)0;
7183 }
7184 }
7185 {
7186 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
7187 var123 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
7188 if (unlikely(var123 == NULL)) {
7189 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
7190 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 422);
7191 show_backtrace(1);
7192 }
7193 var121 = var123;
7194 RET_LABEL122:(void)0;
7195 }
7196 }
7197 {
7198 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
7199 var126 = var_recvtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
7200 if (unlikely(var126 == NULL)) {
7201 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
7202 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
7203 show_backtrace(1);
7204 }
7205 var124 = var126;
7206 RET_LABEL125:(void)0;
7207 }
7208 }
7209 {
7210 var127 = model__MMethod__is_init_for(var121, var124);
7211 }
7212 var128 = !var127;
7213 if (var128){
7214 if (varonce129) {
7215 var130 = varonce129;
7216 } else {
7217 var131 = "Error: ";
7218 var132 = 7;
7219 var133 = string__NativeString__to_s_with_length(var131, var132);
7220 var130 = var133;
7221 varonce129 = var130;
7222 }
7223 if (varonce134) {
7224 var135 = varonce134;
7225 } else {
7226 var136 = " is not a constructor.";
7227 var137 = 22;
7228 var138 = string__NativeString__to_s_with_length(var136, var137);
7229 var135 = var138;
7230 varonce134 = var135;
7231 }
7232 var139 = NEW_array__Array(&type_array__Arraykernel__Object);
7233 { /* var139 = array_instance Array[Object] */
7234 var140 = 3;
7235 var141 = NEW_array__NativeArray(var140, &type_array__NativeArraykernel__Object);
7236 ((struct instance_array__NativeArray*)var141)->values[0] = (val*) var130;
7237 ((struct instance_array__NativeArray*)var141)->values[1] = (val*) var_name;
7238 ((struct instance_array__NativeArray*)var141)->values[2] = (val*) var135;
7239 {
7240 ((void (*)(val*, val*, long))(var139->class->vft[COLOR_array__Array__with_native]))(var139, var141, var140) /* with_native on <var139:Array[Object]>*/;
7241 }
7242 }
7243 {
7244 var142 = ((val* (*)(val*))(var139->class->vft[COLOR_string__Object__to_s]))(var139) /* to_s on <var139:Array[Object]>*/;
7245 }
7246 {
7247 typing__TypeVisitor__error(var_v, self, var142); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7248 }
7249 goto RET_LABEL;
7250 } else {
7251 }
7252 {
7253 var143 = parser_nodes__ANewExpr__n_args(self);
7254 }
7255 {
7256 var144 = typing__AExprs__to_a(var143);
7257 }
7258 var_args = var144;
7259 {
7260 var145 = typing__CallSite__check_signature(var_callsite, var_v, var_args);
7261 }
7262 var145;
7263 RET_LABEL:;
7264 }
7265 /* method typing#ANewExpr#accept_typing for (self: Object, TypeVisitor) */
7266 void VIRTUAL_typing__ANewExpr__accept_typing(val* self, val* p0) {
7267 typing__ANewExpr__accept_typing(self, p0); /* Direct call typing#ANewExpr#accept_typing on <self:Object(ANewExpr)>*/
7268 RET_LABEL:;
7269 }
7270 /* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */
7271 val* typing__AAttrFormExpr__mproperty(val* self) {
7272 val* var /* : nullable MAttribute */;
7273 val* var1 /* : nullable MAttribute */;
7274 var1 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrFormExpr> */
7275 var = var1;
7276 RET_LABEL:;
7277 return var;
7278 }
7279 /* method typing#AAttrFormExpr#mproperty for (self: Object): nullable MAttribute */
7280 val* VIRTUAL_typing__AAttrFormExpr__mproperty(val* self) {
7281 val* var /* : nullable MAttribute */;
7282 val* var1 /* : nullable MAttribute */;
7283 val* var3 /* : nullable MAttribute */;
7284 { /* Inline typing#AAttrFormExpr#mproperty (self) on <self:Object(AAttrFormExpr)> */
7285 var3 = self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:Object(AAttrFormExpr)> */
7286 var1 = var3;
7287 RET_LABEL2:(void)0;
7288 }
7289 var = var1;
7290 RET_LABEL:;
7291 return var;
7292 }
7293 /* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */
7294 void typing__AAttrFormExpr__mproperty_61d(val* self, val* p0) {
7295 self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = p0; /* _mproperty on <self:AAttrFormExpr> */
7296 RET_LABEL:;
7297 }
7298 /* method typing#AAttrFormExpr#mproperty= for (self: Object, nullable MAttribute) */
7299 void VIRTUAL_typing__AAttrFormExpr__mproperty_61d(val* self, val* p0) {
7300 { /* Inline typing#AAttrFormExpr#mproperty= (self,p0) on <self:Object(AAttrFormExpr)> */
7301 self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = p0; /* _mproperty on <self:Object(AAttrFormExpr)> */
7302 RET_LABEL1:(void)0;
7303 }
7304 RET_LABEL:;
7305 }
7306 /* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */
7307 val* typing__AAttrFormExpr__attr_type(val* self) {
7308 val* var /* : nullable MType */;
7309 val* var1 /* : nullable MType */;
7310 var1 = self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrFormExpr> */
7311 var = var1;
7312 RET_LABEL:;
7313 return var;
7314 }
7315 /* method typing#AAttrFormExpr#attr_type for (self: Object): nullable MType */
7316 val* VIRTUAL_typing__AAttrFormExpr__attr_type(val* self) {
7317 val* var /* : nullable MType */;
7318 val* var1 /* : nullable MType */;
7319 val* var3 /* : nullable MType */;
7320 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:Object(AAttrFormExpr)> */
7321 var3 = self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:Object(AAttrFormExpr)> */
7322 var1 = var3;
7323 RET_LABEL2:(void)0;
7324 }
7325 var = var1;
7326 RET_LABEL:;
7327 return var;
7328 }
7329 /* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */
7330 void typing__AAttrFormExpr__attr_type_61d(val* self, val* p0) {
7331 self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val = p0; /* _attr_type on <self:AAttrFormExpr> */
7332 RET_LABEL:;
7333 }
7334 /* method typing#AAttrFormExpr#attr_type= for (self: Object, nullable MType) */
7335 void VIRTUAL_typing__AAttrFormExpr__attr_type_61d(val* self, val* p0) {
7336 { /* Inline typing#AAttrFormExpr#attr_type= (self,p0) on <self:Object(AAttrFormExpr)> */
7337 self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val = p0; /* _attr_type on <self:Object(AAttrFormExpr)> */
7338 RET_LABEL1:(void)0;
7339 }
7340 RET_LABEL:;
7341 }
7342 /* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */
7343 void typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
7344 val* var_v /* var v: TypeVisitor */;
7345 val* var /* : AExpr */;
7346 val* var1 /* : nullable MType */;
7347 val* var_recvtype /* var recvtype: nullable MType */;
7348 val* var2 /* : null */;
7349 short int var3 /* : Bool */;
7350 short int var4 /* : Bool */;
7351 val* var_other /* var other: nullable Object */;
7352 short int var6 /* : Bool */;
7353 short int var8 /* : Bool */;
7354 val* var9 /* : TAttrid */;
7355 val* var10 /* : String */;
7356 val* var_name /* var name: String */;
7357 short int var11 /* : Bool */;
7358 int cltype;
7359 int idtype;
7360 static val* varonce;
7361 val* var12 /* : String */;
7362 char* var13 /* : NativeString */;
7363 long var14 /* : Int */;
7364 val* var15 /* : FlatString */;
7365 static val* varonce16;
7366 val* var17 /* : String */;
7367 char* var18 /* : NativeString */;
7368 long var19 /* : Int */;
7369 val* var20 /* : FlatString */;
7370 val* var21 /* : Array[Object] */;
7371 long var22 /* : Int */;
7372 val* var23 /* : NativeArray[Object] */;
7373 val* var24 /* : String */;
7374 val* var25 /* : MType */;
7375 val* var_unsafe_type /* var unsafe_type: MType */;
7376 val* var26 /* : nullable MProperty */;
7377 val* var_mproperty /* var mproperty: nullable MProperty */;
7378 val* var27 /* : null */;
7379 short int var28 /* : Bool */;
7380 short int var29 /* : Bool */;
7381 short int var31 /* : Bool */;
7382 short int var33 /* : Bool */;
7383 val* var34 /* : ModelBuilder */;
7384 val* var36 /* : ModelBuilder */;
7385 static val* varonce37;
7386 val* var38 /* : String */;
7387 char* var39 /* : NativeString */;
7388 long var40 /* : Int */;
7389 val* var41 /* : FlatString */;
7390 static val* varonce42;
7391 val* var43 /* : String */;
7392 char* var44 /* : NativeString */;
7393 long var45 /* : Int */;
7394 val* var46 /* : FlatString */;
7395 static val* varonce47;
7396 val* var48 /* : String */;
7397 char* var49 /* : NativeString */;
7398 long var50 /* : Int */;
7399 val* var51 /* : FlatString */;
7400 val* var52 /* : Array[Object] */;
7401 long var53 /* : Int */;
7402 val* var54 /* : NativeArray[Object] */;
7403 val* var55 /* : String */;
7404 short int var56 /* : Bool */;
7405 int cltype57;
7406 int idtype58;
7407 val* var60 /* : MModule */;
7408 val* var62 /* : MModule */;
7409 val* var63 /* : Array[MPropDef] */;
7410 val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */;
7411 long var64 /* : Int */;
7412 long var65 /* : Int */;
7413 short int var66 /* : Bool */;
7414 short int var67 /* : Bool */;
7415 short int var69 /* : Bool */;
7416 val* var70 /* : nullable Object */;
7417 val* var_mpropdef /* var mpropdef: MAttributeDef */;
7418 val* var71 /* : nullable MType */;
7419 val* var73 /* : nullable MType */;
7420 val* var_attr_type /* var attr_type: MType */;
7421 val* var74 /* : AExpr */;
7422 short int var75 /* : Bool */;
7423 int cltype76;
7424 int idtype77;
7425 val* var78 /* : MType */;
7426 var_v = p0;
7427 {
7428 var = parser_nodes__AAttrFormExpr__n_expr(self);
7429 }
7430 {
7431 var1 = typing__TypeVisitor__visit_expr(var_v, var);
7432 }
7433 var_recvtype = var1;
7434 var2 = NULL;
7435 if (var_recvtype == NULL) {
7436 var3 = 1; /* is null */
7437 } else {
7438 var3 = 0; /* arg is null but recv is not */
7439 }
7440 if (0) {
7441 { /* Inline kernel#Object#== (var_recvtype,var2) on <var_recvtype:nullable MType> */
7442 var_other = var2;
7443 {
7444 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
7445 var8 = var_recvtype == var_other;
7446 var6 = var8;
7447 goto RET_LABEL7;
7448 RET_LABEL7:(void)0;
7449 }
7450 }
7451 var4 = var6;
7452 goto RET_LABEL5;
7453 RET_LABEL5:(void)0;
7454 }
7455 var3 = var4;
7456 }
7457 if (var3){
7458 goto RET_LABEL;
7459 } else {
7460 }
7461 {
7462 var9 = parser_nodes__AAttrFormExpr__n_id(self);
7463 }
7464 {
7465 var10 = lexer_work__Token__text(var9);
7466 }
7467 var_name = var10;
7468 /* <var_recvtype:nullable MType(MType)> isa MNullType */
7469 cltype = type_model__MNullType.color;
7470 idtype = type_model__MNullType.id;
7471 if(cltype >= var_recvtype->type->table_size) {
7472 var11 = 0;
7473 } else {
7474 var11 = var_recvtype->type->type_table[cltype] == idtype;
7475 }
7476 if (var11){
7477 if (varonce) {
7478 var12 = varonce;
7479 } else {
7480 var13 = "Error: Attribute \'";
7481 var14 = 18;
7482 var15 = string__NativeString__to_s_with_length(var13, var14);
7483 var12 = var15;
7484 varonce = var12;
7485 }
7486 if (varonce16) {
7487 var17 = varonce16;
7488 } else {
7489 var18 = "\' access on \'null\'.";
7490 var19 = 19;
7491 var20 = string__NativeString__to_s_with_length(var18, var19);
7492 var17 = var20;
7493 varonce16 = var17;
7494 }
7495 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
7496 { /* var21 = array_instance Array[Object] */
7497 var22 = 3;
7498 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
7499 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var12;
7500 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var_name;
7501 ((struct instance_array__NativeArray*)var23)->values[2] = (val*) var17;
7502 {
7503 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
7504 }
7505 }
7506 {
7507 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
7508 }
7509 {
7510 typing__TypeVisitor__error(var_v, self, var24); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7511 }
7512 goto RET_LABEL;
7513 } else {
7514 }
7515 {
7516 var25 = typing__TypeVisitor__anchor_to(var_v, var_recvtype);
7517 }
7518 var_unsafe_type = var25;
7519 {
7520 var26 = typing__TypeVisitor__try_get_mproperty_by_name2(var_v, self, var_unsafe_type, var_name);
7521 }
7522 var_mproperty = var26;
7523 var27 = NULL;
7524 if (var_mproperty == NULL) {
7525 var28 = 1; /* is null */
7526 } else {
7527 var28 = 0; /* arg is null but recv is not */
7528 }
7529 if (0) {
7530 { /* Inline kernel#Object#== (var_mproperty,var27) on <var_mproperty:nullable MProperty> */
7531 var_other = var27;
7532 {
7533 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
7534 var33 = var_mproperty == var_other;
7535 var31 = var33;
7536 goto RET_LABEL32;
7537 RET_LABEL32:(void)0;
7538 }
7539 }
7540 var29 = var31;
7541 goto RET_LABEL30;
7542 RET_LABEL30:(void)0;
7543 }
7544 var28 = var29;
7545 }
7546 if (var28){
7547 {
7548 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
7549 var36 = var_v->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
7550 if (unlikely(var36 == NULL)) {
7551 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7552 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 36);
7553 show_backtrace(1);
7554 }
7555 var34 = var36;
7556 RET_LABEL35:(void)0;
7557 }
7558 }
7559 if (varonce37) {
7560 var38 = varonce37;
7561 } else {
7562 var39 = "Error: Attribute ";
7563 var40 = 17;
7564 var41 = string__NativeString__to_s_with_length(var39, var40);
7565 var38 = var41;
7566 varonce37 = var38;
7567 }
7568 if (varonce42) {
7569 var43 = varonce42;
7570 } else {
7571 var44 = " doesn\'t exists in ";
7572 var45 = 19;
7573 var46 = string__NativeString__to_s_with_length(var44, var45);
7574 var43 = var46;
7575 varonce42 = var43;
7576 }
7577 if (varonce47) {
7578 var48 = varonce47;
7579 } else {
7580 var49 = ".";
7581 var50 = 1;
7582 var51 = string__NativeString__to_s_with_length(var49, var50);
7583 var48 = var51;
7584 varonce47 = var48;
7585 }
7586 var52 = NEW_array__Array(&type_array__Arraykernel__Object);
7587 { /* var52 = array_instance Array[Object] */
7588 var53 = 5;
7589 var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
7590 ((struct instance_array__NativeArray*)var54)->values[0] = (val*) var38;
7591 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var_name;
7592 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var43;
7593 ((struct instance_array__NativeArray*)var54)->values[3] = (val*) var_recvtype;
7594 ((struct instance_array__NativeArray*)var54)->values[4] = (val*) var48;
7595 {
7596 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
7597 }
7598 }
7599 {
7600 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
7601 }
7602 {
7603 modelbuilder__ModelBuilder__error(var34, self, var55); /* Direct call modelbuilder#ModelBuilder#error on <var34:ModelBuilder>*/
7604 }
7605 goto RET_LABEL;
7606 } else {
7607 }
7608 /* <var_mproperty:nullable MProperty(MProperty)> isa MAttribute */
7609 cltype57 = type_model__MAttribute.color;
7610 idtype58 = type_model__MAttribute.id;
7611 if(cltype57 >= var_mproperty->type->table_size) {
7612 var56 = 0;
7613 } else {
7614 var56 = var_mproperty->type->type_table[cltype57] == idtype58;
7615 }
7616 if (unlikely(!var56)) {
7617 PRINT_ERROR("Runtime error: %s", "Assert failed");
7618 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1655);
7619 show_backtrace(1);
7620 }
7621 {
7622 { /* Inline typing#AAttrFormExpr#mproperty= (self,var_mproperty) on <self:AAttrFormExpr> */
7623 self->attrs[COLOR_typing__AAttrFormExpr___mproperty].val = var_mproperty; /* _mproperty on <self:AAttrFormExpr> */
7624 RET_LABEL59:(void)0;
7625 }
7626 }
7627 {
7628 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
7629 var62 = var_v->attrs[COLOR_typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
7630 if (unlikely(var62 == NULL)) {
7631 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
7632 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 38);
7633 show_backtrace(1);
7634 }
7635 var60 = var62;
7636 RET_LABEL61:(void)0;
7637 }
7638 }
7639 {
7640 var63 = model__MProperty__lookup_definitions(var_mproperty, var60, var_unsafe_type);
7641 }
7642 var_mpropdefs = var63;
7643 {
7644 var64 = array__AbstractArrayRead__length(var_mpropdefs);
7645 }
7646 var65 = 1;
7647 {
7648 { /* Inline kernel#Int#== (var64,var65) on <var64:Int> */
7649 var69 = var64 == var65;
7650 var67 = var69;
7651 goto RET_LABEL68;
7652 RET_LABEL68:(void)0;
7653 }
7654 var66 = var67;
7655 }
7656 if (unlikely(!var66)) {
7657 PRINT_ERROR("Runtime error: %s", "Assert failed");
7658 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1659);
7659 show_backtrace(1);
7660 }
7661 {
7662 var70 = abstract_collection__SequenceRead__first(var_mpropdefs);
7663 }
7664 var_mpropdef = var70;
7665 {
7666 { /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on <var_mpropdef:MAttributeDef> */
7667 var73 = var_mpropdef->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var_mpropdef:MAttributeDef> */
7668 var71 = var73;
7669 RET_LABEL72:(void)0;
7670 }
7671 }
7672 if (unlikely(var71 == NULL)) {
7673 PRINT_ERROR("Runtime error: %s", "Cast failed");
7674 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1661);
7675 show_backtrace(1);
7676 }
7677 var_attr_type = var71;
7678 {
7679 var74 = parser_nodes__AAttrFormExpr__n_expr(self);
7680 }
7681 /* <var74:AExpr> isa ASelfExpr */
7682 cltype76 = type_parser_nodes__ASelfExpr.color;
7683 idtype77 = type_parser_nodes__ASelfExpr.id;
7684 if(cltype76 >= var74->type->table_size) {
7685 var75 = 0;
7686 } else {
7687 var75 = var74->type->type_table[cltype76] == idtype77;
7688 }
7689 {
7690 var78 = typing__TypeVisitor__resolve_for(var_v, var_attr_type, var_recvtype, var75);
7691 }
7692 var_attr_type = var78;
7693 {
7694 { /* Inline typing#AAttrFormExpr#attr_type= (self,var_attr_type) on <self:AAttrFormExpr> */
7695 self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val = var_attr_type; /* _attr_type on <self:AAttrFormExpr> */
7696 RET_LABEL79:(void)0;
7697 }
7698 }
7699 RET_LABEL:;
7700 }
7701 /* method typing#AAttrFormExpr#resolve_property for (self: Object, TypeVisitor) */
7702 void VIRTUAL_typing__AAttrFormExpr__resolve_property(val* self, val* p0) {
7703 typing__AAttrFormExpr__resolve_property(self, p0); /* Direct call typing#AAttrFormExpr#resolve_property on <self:Object(AAttrFormExpr)>*/
7704 RET_LABEL:;
7705 }
7706 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
7707 void typing__AAttrExpr__accept_typing(val* self, val* p0) {
7708 val* var_v /* var v: TypeVisitor */;
7709 val* var /* : nullable MType */;
7710 val* var2 /* : nullable MType */;
7711 var_v = p0;
7712 {
7713 typing__AAttrFormExpr__resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrExpr>*/
7714 }
7715 {
7716 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrExpr> */
7717 var2 = self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrExpr> */
7718 var = var2;
7719 RET_LABEL1:(void)0;
7720 }
7721 }
7722 {
7723 { /* Inline typing#AExpr#mtype= (self,var) on <self:AAttrExpr> */
7724 self->attrs[COLOR_typing__AExpr___mtype].val = var; /* _mtype on <self:AAttrExpr> */
7725 RET_LABEL3:(void)0;
7726 }
7727 }
7728 RET_LABEL:;
7729 }
7730 /* method typing#AAttrExpr#accept_typing for (self: Object, TypeVisitor) */
7731 void VIRTUAL_typing__AAttrExpr__accept_typing(val* self, val* p0) {
7732 typing__AAttrExpr__accept_typing(self, p0); /* Direct call typing#AAttrExpr#accept_typing on <self:Object(AAttrExpr)>*/
7733 RET_LABEL:;
7734 }
7735 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
7736 void typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
7737 val* var_v /* var v: TypeVisitor */;
7738 val* var /* : nullable MType */;
7739 val* var2 /* : nullable MType */;
7740 val* var_mtype /* var mtype: nullable MType */;
7741 val* var3 /* : AExpr */;
7742 val* var4 /* : nullable MType */;
7743 short int var5 /* : Bool */;
7744 var_v = p0;
7745 {
7746 typing__AAttrFormExpr__resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrAssignExpr>*/
7747 }
7748 {
7749 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrAssignExpr> */
7750 var2 = self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrAssignExpr> */
7751 var = var2;
7752 RET_LABEL1:(void)0;
7753 }
7754 }
7755 var_mtype = var;
7756 {
7757 var3 = parser_nodes__AAssignFormExpr__n_value(self);
7758 }
7759 {
7760 var4 = typing__TypeVisitor__visit_expr_subtype(var_v, var3, var_mtype);
7761 }
7762 var4;
7763 var5 = 1;
7764 {
7765 { /* Inline typing#AExpr#is_typed= (self,var5) on <self:AAttrAssignExpr> */
7766 self->attrs[COLOR_typing__AExpr___is_typed].s = var5; /* _is_typed on <self:AAttrAssignExpr> */
7767 RET_LABEL6:(void)0;
7768 }
7769 }
7770 RET_LABEL:;
7771 }
7772 /* method typing#AAttrAssignExpr#accept_typing for (self: Object, TypeVisitor) */
7773 void VIRTUAL_typing__AAttrAssignExpr__accept_typing(val* self, val* p0) {
7774 typing__AAttrAssignExpr__accept_typing(self, p0); /* Direct call typing#AAttrAssignExpr#accept_typing on <self:Object(AAttrAssignExpr)>*/
7775 RET_LABEL:;
7776 }
7777 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
7778 void typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
7779 val* var_v /* var v: TypeVisitor */;
7780 val* var /* : nullable MType */;
7781 val* var2 /* : nullable MType */;
7782 val* var_mtype /* var mtype: nullable MType */;
7783 val* var3 /* : null */;
7784 short int var4 /* : Bool */;
7785 short int var5 /* : Bool */;
7786 val* var_other /* var other: nullable Object */;
7787 short int var7 /* : Bool */;
7788 short int var9 /* : Bool */;
7789 val* var10 /* : nullable MType */;
7790 short int var11 /* : Bool */;
7791 var_v = p0;
7792 {
7793 typing__AAttrFormExpr__resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrReassignExpr>*/
7794 }
7795 {
7796 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrReassignExpr> */
7797 var2 = self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrReassignExpr> */
7798 var = var2;
7799 RET_LABEL1:(void)0;
7800 }
7801 }
7802 var_mtype = var;
7803 var3 = NULL;
7804 if (var_mtype == NULL) {
7805 var4 = 1; /* is null */
7806 } else {
7807 var4 = 0; /* arg is null but recv is not */
7808 }
7809 if (0) {
7810 { /* Inline kernel#Object#== (var_mtype,var3) on <var_mtype:nullable MType> */
7811 var_other = var3;
7812 {
7813 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
7814 var9 = var_mtype == var_other;
7815 var7 = var9;
7816 goto RET_LABEL8;
7817 RET_LABEL8:(void)0;
7818 }
7819 }
7820 var5 = var7;
7821 goto RET_LABEL6;
7822 RET_LABEL6:(void)0;
7823 }
7824 var4 = var5;
7825 }
7826 if (var4){
7827 goto RET_LABEL;
7828 } else {
7829 }
7830 {
7831 var10 = typing__AReassignFormExpr__resolve_reassignment(self, var_v, var_mtype, var_mtype);
7832 }
7833 var10;
7834 var11 = 1;
7835 {
7836 { /* Inline typing#AExpr#is_typed= (self,var11) on <self:AAttrReassignExpr> */
7837 self->attrs[COLOR_typing__AExpr___is_typed].s = var11; /* _is_typed on <self:AAttrReassignExpr> */
7838 RET_LABEL12:(void)0;
7839 }
7840 }
7841 RET_LABEL:;
7842 }
7843 /* method typing#AAttrReassignExpr#accept_typing for (self: Object, TypeVisitor) */
7844 void VIRTUAL_typing__AAttrReassignExpr__accept_typing(val* self, val* p0) {
7845 typing__AAttrReassignExpr__accept_typing(self, p0); /* Direct call typing#AAttrReassignExpr#accept_typing on <self:Object(AAttrReassignExpr)>*/
7846 RET_LABEL:;
7847 }
7848 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
7849 void typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
7850 val* var_v /* var v: TypeVisitor */;
7851 val* var /* : nullable MType */;
7852 val* var2 /* : nullable MType */;
7853 val* var_mtype /* var mtype: nullable MType */;
7854 val* var3 /* : null */;
7855 short int var4 /* : Bool */;
7856 short int var5 /* : Bool */;
7857 val* var_other /* var other: nullable Object */;
7858 short int var7 /* : Bool */;
7859 short int var9 /* : Bool */;
7860 val* var10 /* : AExpr */;
7861 val* var11 /* : nullable MType */;
7862 val* var_recvtype /* var recvtype: MType */;
7863 short int var12 /* : Bool */;
7864 val* var13 /* : MType */;
7865 val* var_bound /* var bound: MType */;
7866 short int var14 /* : Bool */;
7867 int cltype;
7868 int idtype;
7869 static val* varonce;
7870 val* var15 /* : String */;
7871 char* var16 /* : NativeString */;
7872 long var17 /* : Int */;
7873 val* var18 /* : FlatString */;
7874 val* var19 /* : nullable MType */;
7875 var_v = p0;
7876 {
7877 typing__AAttrFormExpr__resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AIssetAttrExpr>*/
7878 }
7879 {
7880 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AIssetAttrExpr> */
7881 var2 = self->attrs[COLOR_typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AIssetAttrExpr> */
7882 var = var2;
7883 RET_LABEL1:(void)0;
7884 }
7885 }
7886 var_mtype = var;
7887 var3 = NULL;
7888 if (var_mtype == NULL) {
7889 var4 = 1; /* is null */
7890 } else {
7891 var4 = 0; /* arg is null but recv is not */
7892 }
7893 if (0) {
7894 { /* Inline kernel#Object#== (var_mtype,var3) on <var_mtype:nullable MType> */
7895 var_other = var3;
7896 {
7897 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
7898 var9 = var_mtype == var_other;
7899 var7 = var9;
7900 goto RET_LABEL8;
7901 RET_LABEL8:(void)0;
7902 }
7903 }
7904 var5 = var7;
7905 goto RET_LABEL6;
7906 RET_LABEL6:(void)0;
7907 }
7908 var4 = var5;
7909 }
7910 if (var4){
7911 goto RET_LABEL;
7912 } else {
7913 }
7914 {
7915 var10 = parser_nodes__AAttrFormExpr__n_expr(self);
7916 }
7917 {
7918 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_typing__AExpr__mtype]))(var10) /* mtype on <var10:AExpr>*/;
7919 }
7920 if (unlikely(var11 == NULL)) {
7921 PRINT_ERROR("Runtime error: %s", "Cast failed");
7922 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 1707);
7923 show_backtrace(1);
7924 }
7925 var_recvtype = var11;
7926 var12 = 0;
7927 {
7928 var13 = typing__TypeVisitor__resolve_for(var_v, var_mtype, var_recvtype, var12);
7929 }
7930 var_bound = var13;
7931 /* <var_bound:MType> isa MNullableType */
7932 cltype = type_model__MNullableType.color;
7933 idtype = type_model__MNullableType.id;
7934 if(cltype >= var_bound->type->table_size) {
7935 var14 = 0;
7936 } else {
7937 var14 = var_bound->type->type_table[cltype] == idtype;
7938 }
7939 if (var14){
7940 if (varonce) {
7941 var15 = varonce;
7942 } else {
7943 var16 = "Error: isset on a nullable attribute.";
7944 var17 = 37;
7945 var18 = string__NativeString__to_s_with_length(var16, var17);
7946 var15 = var18;
7947 varonce = var15;
7948 }
7949 {
7950 typing__TypeVisitor__error(var_v, self, var15); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
7951 }
7952 } else {
7953 }
7954 {
7955 var19 = typing__TypeVisitor__type_bool(var_v, self);
7956 }
7957 {
7958 { /* Inline typing#AExpr#mtype= (self,var19) on <self:AIssetAttrExpr> */
7959 self->attrs[COLOR_typing__AExpr___mtype].val = var19; /* _mtype on <self:AIssetAttrExpr> */
7960 RET_LABEL20:(void)0;
7961 }
7962 }
7963 RET_LABEL:;
7964 }
7965 /* method typing#AIssetAttrExpr#accept_typing for (self: Object, TypeVisitor) */
7966 void VIRTUAL_typing__AIssetAttrExpr__accept_typing(val* self, val* p0) {
7967 typing__AIssetAttrExpr__accept_typing(self, p0); /* Direct call typing#AIssetAttrExpr#accept_typing on <self:Object(AIssetAttrExpr)>*/
7968 RET_LABEL:;
7969 }
7970 /* method typing#ADebugTypeExpr#accept_typing for (self: ADebugTypeExpr, TypeVisitor) */
7971 void typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
7972 val* var_v /* var v: TypeVisitor */;
7973 val* var /* : AExpr */;
7974 val* var1 /* : nullable MType */;
7975 val* var_expr /* var expr: nullable MType */;
7976 val* var2 /* : null */;
7977 short int var3 /* : Bool */;
7978 short int var4 /* : Bool */;
7979 val* var_other /* var other: nullable Object */;
7980 short int var6 /* : Bool */;
7981 short int var8 /* : Bool */;
7982 val* var9 /* : MType */;
7983 val* var_unsafe /* var unsafe: MType */;
7984 val* var10 /* : AType */;
7985 val* var_ntype /* var ntype: AType */;
7986 val* var11 /* : nullable MType */;
7987 val* var_mtype /* var mtype: nullable MType */;
7988 short int var12 /* : Bool */;
7989 val* var13 /* : null */;
7990 short int var14 /* : Bool */;
7991 short int var15 /* : Bool */;
7992 val* var_other17 /* var other: nullable Object */;
7993 short int var18 /* : Bool */;
7994 short int var19 /* : Bool */;
7995 short int var20 /* : Bool */;
7996 short int var_ /* var : Bool */;
7997 short int var21 /* : Bool */;
7998 short int var22 /* : Bool */;
7999 short int var24 /* : Bool */;
8000 short int var25 /* : Bool */;
8001 short int var26 /* : Bool */;
8002 val* var27 /* : MType */;
8003 val* var_umtype /* var umtype: MType */;
8004 val* var28 /* : ModelBuilder */;
8005 val* var30 /* : ModelBuilder */;
8006 static val* varonce;
8007 val* var31 /* : String */;
8008 char* var32 /* : NativeString */;
8009 long var33 /* : Int */;
8010 val* var34 /* : FlatString */;
8011 static val* varonce35;
8012 val* var36 /* : String */;
8013 char* var37 /* : NativeString */;
8014 long var38 /* : Int */;
8015 val* var39 /* : FlatString */;
8016 static val* varonce40;
8017 val* var41 /* : String */;
8018 char* var42 /* : NativeString */;
8019 long var43 /* : Int */;
8020 val* var44 /* : FlatString */;
8021 static val* varonce45;
8022 val* var46 /* : String */;
8023 char* var47 /* : NativeString */;
8024 long var48 /* : Int */;
8025 val* var49 /* : FlatString */;
8026 static val* varonce50;
8027 val* var51 /* : String */;
8028 char* var52 /* : NativeString */;
8029 long var53 /* : Int */;
8030 val* var54 /* : FlatString */;
8031 val* var55 /* : Array[Object] */;
8032 long var56 /* : Int */;
8033 val* var57 /* : NativeArray[Object] */;
8034 val* var58 /* : String */;
8035 short int var59 /* : Bool */;
8036 var_v = p0;
8037 {
8038 var = parser_nodes__ADebugTypeExpr__n_expr(self);
8039 }
8040 {
8041 var1 = typing__TypeVisitor__visit_expr(var_v, var);
8042 }
8043 var_expr = var1;
8044 var2 = NULL;
8045 if (var_expr == NULL) {
8046 var3 = 1; /* is null */
8047 } else {
8048 var3 = 0; /* arg is null but recv is not */
8049 }
8050 if (0) {
8051 { /* Inline kernel#Object#== (var_expr,var2) on <var_expr:nullable MType> */
8052 var_other = var2;
8053 {
8054 { /* Inline kernel#Object#is_same_instance (var_expr,var_other) on <var_expr:nullable MType(MType)> */
8055 var8 = var_expr == var_other;
8056 var6 = var8;
8057 goto RET_LABEL7;
8058 RET_LABEL7:(void)0;
8059 }
8060 }
8061 var4 = var6;
8062 goto RET_LABEL5;
8063 RET_LABEL5:(void)0;
8064 }
8065 var3 = var4;
8066 }
8067 if (var3){
8068 goto RET_LABEL;
8069 } else {
8070 }
8071 {
8072 var9 = typing__TypeVisitor__anchor_to(var_v, var_expr);
8073 }
8074 var_unsafe = var9;
8075 {
8076 var10 = parser_nodes__ADebugTypeExpr__n_type(self);
8077 }
8078 var_ntype = var10;
8079 {
8080 var11 = typing__TypeVisitor__resolve_mtype(var_v, var_ntype);
8081 }
8082 var_mtype = var11;
8083 var13 = NULL;
8084 if (var_mtype == NULL) {
8085 var14 = 0; /* is null */
8086 } else {
8087 var14 = 1; /* arg is null and recv is not */
8088 }
8089 if (0) {
8090 { /* Inline kernel#Object#!= (var_mtype,var13) on <var_mtype:nullable MType> */
8091 var_other17 = var13;
8092 {
8093 var19 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other17) /* == on <var_mtype:nullable MType(MType)>*/;
8094 var18 = var19;
8095 }
8096 var20 = !var18;
8097 var15 = var20;
8098 goto RET_LABEL16;
8099 RET_LABEL16:(void)0;
8100 }
8101 var14 = var15;
8102 }
8103 var_ = var14;
8104 if (var14){
8105 {
8106 { /* Inline kernel#Object#!= (var_mtype,var_expr) on <var_mtype:nullable MType(MType)> */
8107 var_other17 = var_expr;
8108 {
8109 var25 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_other17) /* == on <var_mtype:nullable MType(MType)>*/;
8110 var24 = var25;
8111 }
8112 var26 = !var24;
8113 var22 = var26;
8114 goto RET_LABEL23;
8115 RET_LABEL23:(void)0;
8116 }
8117 var21 = var22;
8118 }
8119 var12 = var21;
8120 } else {
8121 var12 = var_;
8122 }
8123 if (var12){
8124 {
8125 var27 = typing__TypeVisitor__anchor_to(var_v, var_mtype);
8126 }
8127 var_umtype = var27;
8128 {
8129 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
8130 var30 = var_v->attrs[COLOR_typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
8131 if (unlikely(var30 == NULL)) {
8132 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8133 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 36);
8134 show_backtrace(1);
8135 }
8136 var28 = var30;
8137 RET_LABEL29:(void)0;
8138 }
8139 }
8140 if (varonce) {
8141 var31 = varonce;
8142 } else {
8143 var32 = "Found type ";
8144 var33 = 11;
8145 var34 = string__NativeString__to_s_with_length(var32, var33);
8146 var31 = var34;
8147 varonce = var31;
8148 }
8149 if (varonce35) {
8150 var36 = varonce35;
8151 } else {
8152 var37 = " (-> ";
8153 var38 = 5;
8154 var39 = string__NativeString__to_s_with_length(var37, var38);
8155 var36 = var39;
8156 varonce35 = var36;
8157 }
8158 if (varonce40) {
8159 var41 = varonce40;
8160 } else {
8161 var42 = "), expected ";
8162 var43 = 12;
8163 var44 = string__NativeString__to_s_with_length(var42, var43);
8164 var41 = var44;
8165 varonce40 = var41;
8166 }
8167 if (varonce45) {
8168 var46 = varonce45;
8169 } else {
8170 var47 = " (-> ";
8171 var48 = 5;
8172 var49 = string__NativeString__to_s_with_length(var47, var48);
8173 var46 = var49;
8174 varonce45 = var46;
8175 }
8176 if (varonce50) {
8177 var51 = varonce50;
8178 } else {
8179 var52 = ")";
8180 var53 = 1;
8181 var54 = string__NativeString__to_s_with_length(var52, var53);
8182 var51 = var54;
8183 varonce50 = var51;
8184 }
8185 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
8186 { /* var55 = array_instance Array[Object] */
8187 var56 = 9;
8188 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
8189 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var31;
8190 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_expr;
8191 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var36;
8192 ((struct instance_array__NativeArray*)var57)->values[3] = (val*) var_unsafe;
8193 ((struct instance_array__NativeArray*)var57)->values[4] = (val*) var41;
8194 ((struct instance_array__NativeArray*)var57)->values[5] = (val*) var_mtype;
8195 ((struct instance_array__NativeArray*)var57)->values[6] = (val*) var46;
8196 ((struct instance_array__NativeArray*)var57)->values[7] = (val*) var_umtype;
8197 ((struct instance_array__NativeArray*)var57)->values[8] = (val*) var51;
8198 {
8199 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
8200 }
8201 }
8202 {
8203 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
8204 }
8205 {
8206 modelbuilder__ModelBuilder__warning(var28, self, var58); /* Direct call modelbuilder#ModelBuilder#warning on <var28:ModelBuilder>*/
8207 }
8208 } else {
8209 }
8210 var59 = 1;
8211 {
8212 { /* Inline typing#AExpr#is_typed= (self,var59) on <self:ADebugTypeExpr> */
8213 self->attrs[COLOR_typing__AExpr___is_typed].s = var59; /* _is_typed on <self:ADebugTypeExpr> */
8214 RET_LABEL60:(void)0;
8215 }
8216 }
8217 RET_LABEL:;
8218 }
8219 /* method typing#ADebugTypeExpr#accept_typing for (self: Object, TypeVisitor) */
8220 void VIRTUAL_typing__ADebugTypeExpr__accept_typing(val* self, val* p0) {
8221 typing__ADebugTypeExpr__accept_typing(self, p0); /* Direct call typing#ADebugTypeExpr#accept_typing on <self:Object(ADebugTypeExpr)>*/
8222 RET_LABEL:;
8223 }