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