README: document nit_env.sh
[nit.git] / c_src / nit__typing.sep.3.c
1 #include "nit__typing.sep.0.h"
2 /* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */
3 void nit__typing___ANewExpr___AExpr__accept_typing(val* self, val* p0) {
4 val* var_v /* var v: TypeVisitor */;
5 val* var /* : AType */;
6 val* var2 /* : AType */;
7 val* var3 /* : nullable MType */;
8 val* var_recvtype /* var recvtype: nullable MType */;
9 short int var4 /* : Bool */;
10 short int var5 /* : Bool */;
11 val* var_other /* var other: nullable Object */;
12 short int var7 /* : Bool */;
13 short int var9 /* : Bool */;
14 short int var10 /* : Bool */;
15 int cltype;
16 int idtype;
17 short int var11 /* : Bool */;
18 short int var12 /* : Bool */;
19 int cltype13;
20 int idtype14;
21 val* var15 /* : NativeArray[String] */;
22 static val* varonce;
23 static val* varonce16;
24 val* var17 /* : String */;
25 char* var18 /* : NativeString */;
26 val* var19 /* : FlatString */;
27 static val* varonce20;
28 val* var21 /* : String */;
29 char* var22 /* : NativeString */;
30 val* var23 /* : FlatString */;
31 val* var24 /* : String */;
32 val* var25 /* : String */;
33 short int var26 /* : Bool */;
34 int cltype27;
35 int idtype28;
36 val* var30 /* : NativeArray[String] */;
37 static val* varonce29;
38 static val* varonce31;
39 val* var32 /* : String */;
40 char* var33 /* : NativeString */;
41 val* var34 /* : FlatString */;
42 static val* varonce35;
43 val* var36 /* : String */;
44 char* var37 /* : NativeString */;
45 val* var38 /* : FlatString */;
46 val* var39 /* : String */;
47 val* var40 /* : String */;
48 val* var42 /* : NativeArray[String] */;
49 static val* varonce41;
50 static val* varonce43;
51 val* var44 /* : String */;
52 char* var45 /* : NativeString */;
53 val* var46 /* : FlatString */;
54 static val* varonce47;
55 val* var48 /* : String */;
56 char* var49 /* : NativeString */;
57 val* var50 /* : FlatString */;
58 val* var51 /* : String */;
59 val* var52 /* : String */;
60 val* var54 /* : MClass */;
61 val* var56 /* : MClass */;
62 val* var57 /* : MClassKind */;
63 val* var59 /* : MClassKind */;
64 val* var_kind /* var kind: MClassKind */;
65 val* var60 /* : nullable TId */;
66 val* var62 /* : nullable TId */;
67 val* var_nid /* var nid: nullable TId */;
68 short int var63 /* : Bool */;
69 short int var64 /* : Bool */;
70 val* var_other66 /* var other: nullable Object */;
71 short int var67 /* : Bool */;
72 short int var68 /* : Bool */;
73 val* var69 /* : String */;
74 val* var_name /* var name: String */;
75 val* var_node /* var node: ANode */;
76 static val* varonce70;
77 val* var71 /* : String */;
78 char* var72 /* : NativeString */;
79 val* var73 /* : FlatString */;
80 val* var74 /* : TKwnew */;
81 val* var76 /* : TKwnew */;
82 static val* varonce77;
83 val* var78 /* : String */;
84 char* var79 /* : NativeString */;
85 val* var80 /* : FlatString */;
86 short int var81 /* : Bool */;
87 val* var82 /* : Sys */;
88 val* var83 /* : MClassKind */;
89 short int var84 /* : Bool */;
90 short int var86 /* : Bool */;
91 short int var87 /* : Bool */;
92 val* var89 /* : NativeArray[String] */;
93 static val* varonce88;
94 static val* varonce90;
95 val* var91 /* : String */;
96 char* var92 /* : NativeString */;
97 val* var93 /* : FlatString */;
98 static val* varonce94;
99 val* var95 /* : String */;
100 char* var96 /* : NativeString */;
101 val* var97 /* : FlatString */;
102 static val* varonce98;
103 val* var99 /* : String */;
104 char* var100 /* : NativeString */;
105 val* var101 /* : FlatString */;
106 val* var102 /* : String */;
107 val* var103 /* : String */;
108 val* var104 /* : String */;
109 val* var105 /* : AExprs */;
110 val* var107 /* : AExprs */;
111 val* var108 /* : ANodes[AExpr] */;
112 val* var110 /* : ANodes[AExpr] */;
113 short int var111 /* : Bool */;
114 val* var112 /* : AExprs */;
115 val* var114 /* : AExprs */;
116 static val* varonce115;
117 val* var116 /* : String */;
118 char* var117 /* : NativeString */;
119 val* var118 /* : FlatString */;
120 val* var120 /* : nullable CallSite */;
121 val* var_callsite /* var callsite: nullable CallSite */;
122 short int var121 /* : Bool */;
123 short int var122 /* : Bool */;
124 short int var124 /* : Bool */;
125 short int var126 /* : Bool */;
126 val* var127 /* : MMethod */;
127 val* var129 /* : MMethod */;
128 short int var130 /* : Bool */;
129 short int var132 /* : Bool */;
130 short int var133 /* : Bool */;
131 val* var134 /* : Sys */;
132 val* var135 /* : MClassKind */;
133 short int var136 /* : Bool */;
134 short int var138 /* : Bool */;
135 short int var139 /* : Bool */;
136 val* var141 /* : NativeArray[String] */;
137 static val* varonce140;
138 static val* varonce142;
139 val* var143 /* : String */;
140 char* var144 /* : NativeString */;
141 val* var145 /* : FlatString */;
142 static val* varonce146;
143 val* var147 /* : String */;
144 char* var148 /* : NativeString */;
145 val* var149 /* : FlatString */;
146 static val* varonce150;
147 val* var151 /* : String */;
148 char* var152 /* : NativeString */;
149 val* var153 /* : FlatString */;
150 val* var154 /* : String */;
151 val* var155 /* : String */;
152 val* var156 /* : String */;
153 val* var158 /* : MSignature */;
154 val* var160 /* : MSignature */;
155 val* var161 /* : nullable MType */;
156 val* var163 /* : nullable MType */;
157 val* var165 /* : nullable MType */;
158 val* var167 /* : nullable MType */;
159 short int var168 /* : Bool */;
160 short int var169 /* : Bool */;
161 short int var171 /* : Bool */;
162 short int var172 /* : Bool */;
163 val* var174 /* : MMethod */;
164 val* var176 /* : MMethod */;
165 val* var177 /* : MClass */;
166 val* var179 /* : MClass */;
167 short int var180 /* : Bool */;
168 short int var181 /* : Bool */;
169 val* var183 /* : NativeArray[String] */;
170 static val* varonce182;
171 static val* varonce184;
172 val* var185 /* : String */;
173 char* var186 /* : NativeString */;
174 val* var187 /* : FlatString */;
175 static val* varonce188;
176 val* var189 /* : String */;
177 char* var190 /* : NativeString */;
178 val* var191 /* : FlatString */;
179 val* var192 /* : String */;
180 val* var193 /* : AExprs */;
181 val* var195 /* : AExprs */;
182 val* var196 /* : Array[AExpr] */;
183 val* var_args /* var args: Array[AExpr] */;
184 short int var197 /* : Bool */;
185 var_v = p0;
186 {
187 { /* Inline parser_nodes#ANewExpr#n_type (self) on <self:ANewExpr> */
188 var2 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_type].val; /* _n_type on <self:ANewExpr> */
189 if (unlikely(var2 == NULL)) {
190 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
191 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2255);
192 fatal_exit(1);
193 }
194 var = var2;
195 RET_LABEL1:(void)0;
196 }
197 }
198 {
199 var3 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var);
200 }
201 var_recvtype = var3;
202 if (var_recvtype == NULL) {
203 var4 = 1; /* is null */
204 } else {
205 var4 = 0; /* arg is null but recv is not */
206 }
207 if (0) {
208 { /* Inline kernel#Object#== (var_recvtype,((val*)NULL)) on <var_recvtype:nullable MType> */
209 var_other = ((val*)NULL);
210 {
211 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
212 var9 = var_recvtype == var_other;
213 var7 = var9;
214 goto RET_LABEL8;
215 RET_LABEL8:(void)0;
216 }
217 }
218 var5 = var7;
219 goto RET_LABEL6;
220 RET_LABEL6:(void)0;
221 }
222 var4 = var5;
223 }
224 if (var4){
225 goto RET_LABEL;
226 } else {
227 }
228 /* <var_recvtype:nullable MType(MType)> isa MClassType */
229 cltype = type_nit__MClassType.color;
230 idtype = type_nit__MClassType.id;
231 if(cltype >= var_recvtype->type->table_size) {
232 var10 = 0;
233 } else {
234 var10 = var_recvtype->type->type_table[cltype] == idtype;
235 }
236 var11 = !var10;
237 if (var11){
238 /* <var_recvtype:nullable MType(MType)> isa MNullableType */
239 cltype13 = type_nit__MNullableType.color;
240 idtype14 = type_nit__MNullableType.id;
241 if(cltype13 >= var_recvtype->type->table_size) {
242 var12 = 0;
243 } else {
244 var12 = var_recvtype->type->type_table[cltype13] == idtype14;
245 }
246 if (var12){
247 if (unlikely(varonce==NULL)) {
248 var15 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
249 if (likely(varonce16!=NULL)) {
250 var17 = varonce16;
251 } else {
252 var18 = "Type Error: cannot instantiate the nullable type `";
253 var19 = standard___standard__NativeString___to_s_with_length(var18, 50l);
254 var17 = var19;
255 varonce16 = var17;
256 }
257 ((struct instance_standard__NativeArray*)var15)->values[0]=var17;
258 if (likely(varonce20!=NULL)) {
259 var21 = varonce20;
260 } else {
261 var22 = "`.";
262 var23 = standard___standard__NativeString___to_s_with_length(var22, 2l);
263 var21 = var23;
264 varonce20 = var21;
265 }
266 ((struct instance_standard__NativeArray*)var15)->values[2]=var21;
267 } else {
268 var15 = varonce;
269 varonce = NULL;
270 }
271 {
272 var24 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MNullableType)>*/
273 }
274 ((struct instance_standard__NativeArray*)var15)->values[1]=var24;
275 {
276 var25 = ((val*(*)(val* self))(var15->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
277 }
278 varonce = var15;
279 {
280 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var25); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
281 }
282 goto RET_LABEL;
283 } else {
284 /* <var_recvtype:nullable MType(MType)> isa MFormalType */
285 cltype27 = type_nit__MFormalType.color;
286 idtype28 = type_nit__MFormalType.id;
287 if(cltype27 >= var_recvtype->type->table_size) {
288 var26 = 0;
289 } else {
290 var26 = var_recvtype->type->type_table[cltype27] == idtype28;
291 }
292 if (var26){
293 if (unlikely(varonce29==NULL)) {
294 var30 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
295 if (likely(varonce31!=NULL)) {
296 var32 = varonce31;
297 } else {
298 var33 = "Type Error: cannot instantiate the formal type `";
299 var34 = standard___standard__NativeString___to_s_with_length(var33, 48l);
300 var32 = var34;
301 varonce31 = var32;
302 }
303 ((struct instance_standard__NativeArray*)var30)->values[0]=var32;
304 if (likely(varonce35!=NULL)) {
305 var36 = varonce35;
306 } else {
307 var37 = "`.";
308 var38 = standard___standard__NativeString___to_s_with_length(var37, 2l);
309 var36 = var38;
310 varonce35 = var36;
311 }
312 ((struct instance_standard__NativeArray*)var30)->values[2]=var36;
313 } else {
314 var30 = varonce29;
315 varonce29 = NULL;
316 }
317 {
318 var39 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MFormalType)>*/
319 }
320 ((struct instance_standard__NativeArray*)var30)->values[1]=var39;
321 {
322 var40 = ((val*(*)(val* self))(var30->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var30); /* native_to_s on <var30:NativeArray[String]>*/
323 }
324 varonce29 = var30;
325 {
326 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var40); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
327 }
328 goto RET_LABEL;
329 } else {
330 if (unlikely(varonce41==NULL)) {
331 var42 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
332 if (likely(varonce43!=NULL)) {
333 var44 = varonce43;
334 } else {
335 var45 = "Type Error: cannot instantiate the type `";
336 var46 = standard___standard__NativeString___to_s_with_length(var45, 41l);
337 var44 = var46;
338 varonce43 = var44;
339 }
340 ((struct instance_standard__NativeArray*)var42)->values[0]=var44;
341 if (likely(varonce47!=NULL)) {
342 var48 = varonce47;
343 } else {
344 var49 = "`.";
345 var50 = standard___standard__NativeString___to_s_with_length(var49, 2l);
346 var48 = var50;
347 varonce47 = var48;
348 }
349 ((struct instance_standard__NativeArray*)var42)->values[2]=var48;
350 } else {
351 var42 = varonce41;
352 varonce41 = NULL;
353 }
354 {
355 var51 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MType)>*/
356 }
357 ((struct instance_standard__NativeArray*)var42)->values[1]=var51;
358 {
359 var52 = ((val*(*)(val* self))(var42->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var42); /* native_to_s on <var42:NativeArray[String]>*/
360 }
361 varonce41 = var42;
362 {
363 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var52); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
364 }
365 goto RET_LABEL;
366 }
367 }
368 } else {
369 }
370 {
371 { /* Inline typing#ANewExpr#recvtype= (self,var_recvtype) on <self:ANewExpr> */
372 self->attrs[COLOR_nit__typing__ANewExpr___recvtype].val = var_recvtype; /* _recvtype on <self:ANewExpr> */
373 RET_LABEL53:(void)0;
374 }
375 }
376 {
377 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
378 var56 = var_recvtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
379 if (unlikely(var56 == NULL)) {
380 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
381 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
382 fatal_exit(1);
383 }
384 var54 = var56;
385 RET_LABEL55:(void)0;
386 }
387 }
388 {
389 { /* Inline model#MClass#kind (var54) on <var54:MClass> */
390 var59 = var54->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var54:MClass> */
391 if (unlikely(var59 == NULL)) {
392 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
393 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
394 fatal_exit(1);
395 }
396 var57 = var59;
397 RET_LABEL58:(void)0;
398 }
399 }
400 var_kind = var57;
401 {
402 { /* Inline parser_nodes#ANewExpr#n_id (self) on <self:ANewExpr> */
403 var62 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_id].val; /* _n_id on <self:ANewExpr> */
404 var60 = var62;
405 RET_LABEL61:(void)0;
406 }
407 }
408 var_nid = var60;
409 if (var_nid == NULL) {
410 var63 = 0; /* is null */
411 } else {
412 var63 = 1; /* arg is null and recv is not */
413 }
414 if (0) {
415 { /* Inline kernel#Object#!= (var_nid,((val*)NULL)) on <var_nid:nullable TId> */
416 var_other66 = ((val*)NULL);
417 {
418 var67 = ((short int(*)(val* self, val* p0))(var_nid->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nid, var_other66); /* == on <var_nid:nullable TId(TId)>*/
419 }
420 var68 = !var67;
421 var64 = var68;
422 goto RET_LABEL65;
423 RET_LABEL65:(void)0;
424 }
425 var63 = var64;
426 }
427 if (var63){
428 {
429 var69 = nit__lexer_work___Token___text(var_nid);
430 }
431 var_name = var69;
432 var_node = var_nid;
433 } else {
434 if (likely(varonce70!=NULL)) {
435 var71 = varonce70;
436 } else {
437 var72 = "new";
438 var73 = standard___standard__NativeString___to_s_with_length(var72, 3l);
439 var71 = var73;
440 varonce70 = var71;
441 }
442 var_name = var71;
443 {
444 { /* Inline parser_nodes#ANewExpr#n_kwnew (self) on <self:ANewExpr> */
445 var76 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_kwnew].val; /* _n_kwnew on <self:ANewExpr> */
446 if (unlikely(var76 == NULL)) {
447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwnew");
448 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2252);
449 fatal_exit(1);
450 }
451 var74 = var76;
452 RET_LABEL75:(void)0;
453 }
454 }
455 var_node = var74;
456 }
457 if (likely(varonce77!=NULL)) {
458 var78 = varonce77;
459 } else {
460 var79 = "intern";
461 var80 = standard___standard__NativeString___to_s_with_length(var79, 6l);
462 var78 = var80;
463 varonce77 = var78;
464 }
465 {
466 var81 = ((short int(*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_name, var78); /* == on <var_name:String>*/
467 }
468 if (var81){
469 var82 = glob_sys;
470 {
471 var83 = nit__model___standard__Sys___concrete_kind(var82);
472 }
473 {
474 { /* Inline kernel#Object#!= (var_kind,var83) on <var_kind:MClassKind> */
475 var_other66 = var83;
476 {
477 var86 = ((short int(*)(val* self, val* p0))(var_kind->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_kind, var_other66); /* == on <var_kind:MClassKind>*/
478 }
479 var87 = !var86;
480 var84 = var87;
481 goto RET_LABEL85;
482 RET_LABEL85:(void)0;
483 }
484 }
485 if (var84){
486 if (unlikely(varonce88==NULL)) {
487 var89 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
488 if (likely(varonce90!=NULL)) {
489 var91 = varonce90;
490 } else {
491 var92 = "Type Error: cannot instantiate ";
492 var93 = standard___standard__NativeString___to_s_with_length(var92, 31l);
493 var91 = var93;
494 varonce90 = var91;
495 }
496 ((struct instance_standard__NativeArray*)var89)->values[0]=var91;
497 if (likely(varonce94!=NULL)) {
498 var95 = varonce94;
499 } else {
500 var96 = " ";
501 var97 = standard___standard__NativeString___to_s_with_length(var96, 1l);
502 var95 = var97;
503 varonce94 = var95;
504 }
505 ((struct instance_standard__NativeArray*)var89)->values[2]=var95;
506 if (likely(varonce98!=NULL)) {
507 var99 = varonce98;
508 } else {
509 var100 = ".";
510 var101 = standard___standard__NativeString___to_s_with_length(var100, 1l);
511 var99 = var101;
512 varonce98 = var99;
513 }
514 ((struct instance_standard__NativeArray*)var89)->values[4]=var99;
515 } else {
516 var89 = varonce88;
517 varonce88 = NULL;
518 }
519 {
520 var102 = ((val*(*)(val* self))(var_kind->class->vft[COLOR_standard__string__Object__to_s]))(var_kind); /* to_s on <var_kind:MClassKind>*/
521 }
522 ((struct instance_standard__NativeArray*)var89)->values[1]=var102;
523 {
524 var103 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MClassType)>*/
525 }
526 ((struct instance_standard__NativeArray*)var89)->values[3]=var103;
527 {
528 var104 = ((val*(*)(val* self))(var89->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var89); /* native_to_s on <var89:NativeArray[String]>*/
529 }
530 varonce88 = var89;
531 {
532 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var104); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
533 }
534 goto RET_LABEL;
535 } else {
536 }
537 {
538 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
539 var107 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
540 if (unlikely(var107 == NULL)) {
541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
542 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2261);
543 fatal_exit(1);
544 }
545 var105 = var107;
546 RET_LABEL106:(void)0;
547 }
548 }
549 {
550 { /* Inline parser_nodes#AExprs#n_exprs (var105) on <var105:AExprs> */
551 var110 = var105->attrs[COLOR_nit__parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var105:AExprs> */
552 if (unlikely(var110 == NULL)) {
553 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
554 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2771);
555 fatal_exit(1);
556 }
557 var108 = var110;
558 RET_LABEL109:(void)0;
559 }
560 }
561 {
562 var111 = standard___standard__Collection___not_empty(var108);
563 }
564 if (var111){
565 {
566 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
567 var114 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
568 if (unlikely(var114 == NULL)) {
569 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
570 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2261);
571 fatal_exit(1);
572 }
573 var112 = var114;
574 RET_LABEL113:(void)0;
575 }
576 }
577 if (likely(varonce115!=NULL)) {
578 var116 = varonce115;
579 } else {
580 var117 = "Type Error: the intern constructor expects no arguments.";
581 var118 = standard___standard__NativeString___to_s_with_length(var117, 56l);
582 var116 = var118;
583 varonce115 = var116;
584 }
585 {
586 nit__typing___nit__typing__TypeVisitor___error(var_v, var112, var116); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
587 }
588 goto RET_LABEL;
589 } else {
590 }
591 {
592 { /* Inline typing#AExpr#mtype= (self,var_recvtype) on <self:ANewExpr> */
593 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_recvtype; /* _mtype on <self:ANewExpr> */
594 RET_LABEL119:(void)0;
595 }
596 }
597 goto RET_LABEL;
598 } else {
599 }
600 {
601 var120 = nit__typing___nit__typing__TypeVisitor___get_method(var_v, var_node, var_recvtype, var_name, 0);
602 }
603 var_callsite = var120;
604 if (var_callsite == NULL) {
605 var121 = 1; /* is null */
606 } else {
607 var121 = 0; /* arg is null but recv is not */
608 }
609 if (0) {
610 { /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on <var_callsite:nullable CallSite> */
611 var_other = ((val*)NULL);
612 {
613 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
614 var126 = var_callsite == var_other;
615 var124 = var126;
616 goto RET_LABEL125;
617 RET_LABEL125:(void)0;
618 }
619 }
620 var122 = var124;
621 goto RET_LABEL123;
622 RET_LABEL123:(void)0;
623 }
624 var121 = var122;
625 }
626 if (var121){
627 goto RET_LABEL;
628 } else {
629 }
630 {
631 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
632 var129 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
633 if (unlikely(var129 == NULL)) {
634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
635 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624);
636 fatal_exit(1);
637 }
638 var127 = var129;
639 RET_LABEL128:(void)0;
640 }
641 }
642 {
643 { /* Inline model#MMethod#is_new (var127) on <var127:MMethod> */
644 var132 = var127->attrs[COLOR_nit__model__MMethod___is_new].s; /* _is_new on <var127:MMethod> */
645 var130 = var132;
646 RET_LABEL131:(void)0;
647 }
648 }
649 var133 = !var130;
650 if (var133){
651 var134 = glob_sys;
652 {
653 var135 = nit__model___standard__Sys___concrete_kind(var134);
654 }
655 {
656 { /* Inline kernel#Object#!= (var_kind,var135) on <var_kind:MClassKind> */
657 var_other66 = var135;
658 {
659 var138 = ((short int(*)(val* self, val* p0))(var_kind->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_kind, var_other66); /* == on <var_kind:MClassKind>*/
660 }
661 var139 = !var138;
662 var136 = var139;
663 goto RET_LABEL137;
664 RET_LABEL137:(void)0;
665 }
666 }
667 if (var136){
668 if (unlikely(varonce140==NULL)) {
669 var141 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
670 if (likely(varonce142!=NULL)) {
671 var143 = varonce142;
672 } else {
673 var144 = "Type Error: cannot instantiate ";
674 var145 = standard___standard__NativeString___to_s_with_length(var144, 31l);
675 var143 = var145;
676 varonce142 = var143;
677 }
678 ((struct instance_standard__NativeArray*)var141)->values[0]=var143;
679 if (likely(varonce146!=NULL)) {
680 var147 = varonce146;
681 } else {
682 var148 = " `";
683 var149 = standard___standard__NativeString___to_s_with_length(var148, 2l);
684 var147 = var149;
685 varonce146 = var147;
686 }
687 ((struct instance_standard__NativeArray*)var141)->values[2]=var147;
688 if (likely(varonce150!=NULL)) {
689 var151 = varonce150;
690 } else {
691 var152 = "`.";
692 var153 = standard___standard__NativeString___to_s_with_length(var152, 2l);
693 var151 = var153;
694 varonce150 = var151;
695 }
696 ((struct instance_standard__NativeArray*)var141)->values[4]=var151;
697 } else {
698 var141 = varonce140;
699 varonce140 = NULL;
700 }
701 {
702 var154 = ((val*(*)(val* self))(var_kind->class->vft[COLOR_standard__string__Object__to_s]))(var_kind); /* to_s on <var_kind:MClassKind>*/
703 }
704 ((struct instance_standard__NativeArray*)var141)->values[1]=var154;
705 {
706 var155 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MClassType)>*/
707 }
708 ((struct instance_standard__NativeArray*)var141)->values[3]=var155;
709 {
710 var156 = ((val*(*)(val* self))(var141->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var141); /* native_to_s on <var141:NativeArray[String]>*/
711 }
712 varonce140 = var141;
713 {
714 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var156); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
715 }
716 goto RET_LABEL;
717 } else {
718 }
719 {
720 { /* Inline typing#AExpr#mtype= (self,var_recvtype) on <self:ANewExpr> */
721 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var_recvtype; /* _mtype on <self:ANewExpr> */
722 RET_LABEL157:(void)0;
723 }
724 }
725 } else {
726 {
727 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
728 var160 = var_callsite->attrs[COLOR_nit__typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
729 if (unlikely(var160 == NULL)) {
730 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
731 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 631);
732 fatal_exit(1);
733 }
734 var158 = var160;
735 RET_LABEL159:(void)0;
736 }
737 }
738 {
739 { /* Inline model#MSignature#return_mtype (var158) on <var158:MSignature> */
740 var163 = var158->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var158:MSignature> */
741 var161 = var163;
742 RET_LABEL162:(void)0;
743 }
744 }
745 {
746 { /* Inline typing#AExpr#mtype= (self,var161) on <self:ANewExpr> */
747 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var161; /* _mtype on <self:ANewExpr> */
748 RET_LABEL164:(void)0;
749 }
750 }
751 {
752 { /* Inline typing#AExpr#mtype (self) on <self:ANewExpr> */
753 var167 = self->attrs[COLOR_nit__typing__AExpr___mtype].val; /* _mtype on <self:ANewExpr> */
754 var165 = var167;
755 RET_LABEL166:(void)0;
756 }
757 }
758 if (var165 == NULL) {
759 var168 = 0; /* is null */
760 } else {
761 var168 = 1; /* arg is null and recv is not */
762 }
763 if (0) {
764 { /* Inline kernel#Object#!= (var165,((val*)NULL)) on <var165:nullable MType> */
765 var_other66 = ((val*)NULL);
766 {
767 var171 = ((short int(*)(val* self, val* p0))(var165->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var165, var_other66); /* == on <var165:nullable MType(MType)>*/
768 }
769 var172 = !var171;
770 var169 = var172;
771 goto RET_LABEL170;
772 RET_LABEL170:(void)0;
773 }
774 var168 = var169;
775 }
776 if (unlikely(!var168)) {
777 PRINT_ERROR("Runtime error: %s", "Assert failed");
778 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 1995);
779 fatal_exit(1);
780 }
781 }
782 {
783 { /* Inline typing#ANewExpr#callsite= (self,var_callsite) on <self:ANewExpr> */
784 self->attrs[COLOR_nit__typing__ANewExpr___callsite].val = var_callsite; /* _callsite on <self:ANewExpr> */
785 RET_LABEL173:(void)0;
786 }
787 }
788 {
789 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
790 var176 = var_callsite->attrs[COLOR_nit__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
791 if (unlikely(var176 == NULL)) {
792 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
793 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 624);
794 fatal_exit(1);
795 }
796 var174 = var176;
797 RET_LABEL175:(void)0;
798 }
799 }
800 {
801 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
802 var179 = var_recvtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
803 if (unlikely(var179 == NULL)) {
804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
805 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
806 fatal_exit(1);
807 }
808 var177 = var179;
809 RET_LABEL178:(void)0;
810 }
811 }
812 {
813 var180 = nit___nit__MMethod___is_init_for(var174, var177);
814 }
815 var181 = !var180;
816 if (var181){
817 if (unlikely(varonce182==NULL)) {
818 var183 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
819 if (likely(varonce184!=NULL)) {
820 var185 = varonce184;
821 } else {
822 var186 = "Error: `";
823 var187 = standard___standard__NativeString___to_s_with_length(var186, 8l);
824 var185 = var187;
825 varonce184 = var185;
826 }
827 ((struct instance_standard__NativeArray*)var183)->values[0]=var185;
828 if (likely(varonce188!=NULL)) {
829 var189 = varonce188;
830 } else {
831 var190 = "` is not a constructor.";
832 var191 = standard___standard__NativeString___to_s_with_length(var190, 23l);
833 var189 = var191;
834 varonce188 = var189;
835 }
836 ((struct instance_standard__NativeArray*)var183)->values[2]=var189;
837 } else {
838 var183 = varonce182;
839 varonce182 = NULL;
840 }
841 ((struct instance_standard__NativeArray*)var183)->values[1]=var_name;
842 {
843 var192 = ((val*(*)(val* self))(var183->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var183); /* native_to_s on <var183:NativeArray[String]>*/
844 }
845 varonce182 = var183;
846 {
847 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var192); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
848 }
849 goto RET_LABEL;
850 } else {
851 }
852 {
853 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
854 var195 = self->attrs[COLOR_nit__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
855 if (unlikely(var195 == NULL)) {
856 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
857 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2261);
858 fatal_exit(1);
859 }
860 var193 = var195;
861 RET_LABEL194:(void)0;
862 }
863 }
864 {
865 var196 = nit__typing___AExprs___to_a(var193);
866 }
867 var_args = var196;
868 {
869 var197 = nit___nit__CallSite___check_signature(var_callsite, var_v, var_args);
870 }
871 RET_LABEL:;
872 }
873 /* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */
874 val* nit__typing___AAttrFormExpr___mproperty(val* self) {
875 val* var /* : nullable MAttribute */;
876 val* var1 /* : nullable MAttribute */;
877 var1 = self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrFormExpr> */
878 var = var1;
879 RET_LABEL:;
880 return var;
881 }
882 /* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */
883 void nit__typing___AAttrFormExpr___mproperty_61d(val* self, val* p0) {
884 self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val = p0; /* _mproperty on <self:AAttrFormExpr> */
885 RET_LABEL:;
886 }
887 /* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */
888 val* nit__typing___AAttrFormExpr___attr_type(val* self) {
889 val* var /* : nullable MType */;
890 val* var1 /* : nullable MType */;
891 var1 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrFormExpr> */
892 var = var1;
893 RET_LABEL:;
894 return var;
895 }
896 /* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */
897 void nit__typing___AAttrFormExpr___attr_type_61d(val* self, val* p0) {
898 self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val = p0; /* _attr_type on <self:AAttrFormExpr> */
899 RET_LABEL:;
900 }
901 /* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */
902 void nit__typing___AAttrFormExpr___resolve_property(val* self, val* p0) {
903 val* var_v /* var v: TypeVisitor */;
904 val* var /* : AExpr */;
905 val* var2 /* : AExpr */;
906 val* var3 /* : nullable MType */;
907 val* var_recvtype /* var recvtype: nullable MType */;
908 short int var4 /* : Bool */;
909 short int var5 /* : Bool */;
910 val* var_other /* var other: nullable Object */;
911 short int var7 /* : Bool */;
912 short int var9 /* : Bool */;
913 val* var10 /* : TAttrid */;
914 val* var12 /* : TAttrid */;
915 val* var_node /* var node: TAttrid */;
916 val* var13 /* : String */;
917 val* var_name /* var name: String */;
918 short int var14 /* : Bool */;
919 int cltype;
920 int idtype;
921 val* var15 /* : NativeArray[String] */;
922 static val* varonce;
923 static val* varonce16;
924 val* var17 /* : String */;
925 char* var18 /* : NativeString */;
926 val* var19 /* : FlatString */;
927 static val* varonce20;
928 val* var21 /* : String */;
929 char* var22 /* : NativeString */;
930 val* var23 /* : FlatString */;
931 val* var24 /* : String */;
932 val* var25 /* : MType */;
933 val* var_unsafe_type /* var unsafe_type: MType */;
934 val* var26 /* : nullable MProperty */;
935 val* var_mproperty /* var mproperty: nullable MProperty */;
936 short int var27 /* : Bool */;
937 short int var28 /* : Bool */;
938 short int var30 /* : Bool */;
939 short int var32 /* : Bool */;
940 val* var33 /* : ModelBuilder */;
941 val* var35 /* : ModelBuilder */;
942 val* var37 /* : NativeArray[String] */;
943 static val* varonce36;
944 static val* varonce38;
945 val* var39 /* : String */;
946 char* var40 /* : NativeString */;
947 val* var41 /* : FlatString */;
948 static val* varonce42;
949 val* var43 /* : String */;
950 char* var44 /* : NativeString */;
951 val* var45 /* : FlatString */;
952 static val* varonce46;
953 val* var47 /* : String */;
954 char* var48 /* : NativeString */;
955 val* var49 /* : FlatString */;
956 val* var50 /* : String */;
957 val* var51 /* : String */;
958 short int var52 /* : Bool */;
959 int cltype53;
960 int idtype54;
961 val* var56 /* : MModule */;
962 val* var58 /* : MModule */;
963 val* var59 /* : Array[MPropDef] */;
964 val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */;
965 long var60 /* : Int */;
966 long var62 /* : Int */;
967 short int var63 /* : Bool */;
968 short int var65 /* : Bool */;
969 val* var66 /* : nullable Object */;
970 val* var_mpropdef /* var mpropdef: MAttributeDef */;
971 val* var67 /* : nullable MType */;
972 val* var69 /* : nullable MType */;
973 val* var_attr_type /* var attr_type: nullable MType */;
974 short int var70 /* : Bool */;
975 short int var71 /* : Bool */;
976 short int var73 /* : Bool */;
977 short int var75 /* : Bool */;
978 val* var76 /* : AExpr */;
979 val* var78 /* : AExpr */;
980 short int var79 /* : Bool */;
981 int cltype80;
982 int idtype81;
983 val* var82 /* : MType */;
984 var_v = p0;
985 {
986 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AAttrFormExpr> */
987 var2 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AAttrFormExpr> */
988 if (unlikely(var2 == NULL)) {
989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
990 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2269);
991 fatal_exit(1);
992 }
993 var = var2;
994 RET_LABEL1:(void)0;
995 }
996 }
997 {
998 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
999 }
1000 var_recvtype = var3;
1001 if (var_recvtype == NULL) {
1002 var4 = 1; /* is null */
1003 } else {
1004 var4 = 0; /* arg is null but recv is not */
1005 }
1006 if (0) {
1007 { /* Inline kernel#Object#== (var_recvtype,((val*)NULL)) on <var_recvtype:nullable MType> */
1008 var_other = ((val*)NULL);
1009 {
1010 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
1011 var9 = var_recvtype == var_other;
1012 var7 = var9;
1013 goto RET_LABEL8;
1014 RET_LABEL8:(void)0;
1015 }
1016 }
1017 var5 = var7;
1018 goto RET_LABEL6;
1019 RET_LABEL6:(void)0;
1020 }
1021 var4 = var5;
1022 }
1023 if (var4){
1024 goto RET_LABEL;
1025 } else {
1026 }
1027 {
1028 { /* Inline parser_nodes#AAttrFormExpr#n_id (self) on <self:AAttrFormExpr> */
1029 var12 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_id].val; /* _n_id on <self:AAttrFormExpr> */
1030 if (unlikely(var12 == NULL)) {
1031 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
1032 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2272);
1033 fatal_exit(1);
1034 }
1035 var10 = var12;
1036 RET_LABEL11:(void)0;
1037 }
1038 }
1039 var_node = var10;
1040 {
1041 var13 = nit__lexer_work___Token___text(var_node);
1042 }
1043 var_name = var13;
1044 /* <var_recvtype:nullable MType(MType)> isa MNullType */
1045 cltype = type_nit__MNullType.color;
1046 idtype = type_nit__MNullType.id;
1047 if(cltype >= var_recvtype->type->table_size) {
1048 var14 = 0;
1049 } else {
1050 var14 = var_recvtype->type->type_table[cltype] == idtype;
1051 }
1052 if (var14){
1053 if (unlikely(varonce==NULL)) {
1054 var15 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1055 if (likely(varonce16!=NULL)) {
1056 var17 = varonce16;
1057 } else {
1058 var18 = "Error: attribute `";
1059 var19 = standard___standard__NativeString___to_s_with_length(var18, 18l);
1060 var17 = var19;
1061 varonce16 = var17;
1062 }
1063 ((struct instance_standard__NativeArray*)var15)->values[0]=var17;
1064 if (likely(varonce20!=NULL)) {
1065 var21 = varonce20;
1066 } else {
1067 var22 = "` access on `null`.";
1068 var23 = standard___standard__NativeString___to_s_with_length(var22, 19l);
1069 var21 = var23;
1070 varonce20 = var21;
1071 }
1072 ((struct instance_standard__NativeArray*)var15)->values[2]=var21;
1073 } else {
1074 var15 = varonce;
1075 varonce = NULL;
1076 }
1077 ((struct instance_standard__NativeArray*)var15)->values[1]=var_name;
1078 {
1079 var24 = ((val*(*)(val* self))(var15->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
1080 }
1081 varonce = var15;
1082 {
1083 nit__typing___nit__typing__TypeVisitor___error(var_v, var_node, var24); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1084 }
1085 goto RET_LABEL;
1086 } else {
1087 }
1088 {
1089 var25 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_recvtype);
1090 }
1091 var_unsafe_type = var25;
1092 {
1093 var26 = nit__typing___nit__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, var_node, var_unsafe_type, var_name);
1094 }
1095 var_mproperty = var26;
1096 if (var_mproperty == NULL) {
1097 var27 = 1; /* is null */
1098 } else {
1099 var27 = 0; /* arg is null but recv is not */
1100 }
1101 if (0) {
1102 { /* Inline kernel#Object#== (var_mproperty,((val*)NULL)) on <var_mproperty:nullable MProperty> */
1103 var_other = ((val*)NULL);
1104 {
1105 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
1106 var32 = var_mproperty == var_other;
1107 var30 = var32;
1108 goto RET_LABEL31;
1109 RET_LABEL31:(void)0;
1110 }
1111 }
1112 var28 = var30;
1113 goto RET_LABEL29;
1114 RET_LABEL29:(void)0;
1115 }
1116 var27 = var28;
1117 }
1118 if (var27){
1119 {
1120 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
1121 var35 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
1122 if (unlikely(var35 == NULL)) {
1123 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1124 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
1125 fatal_exit(1);
1126 }
1127 var33 = var35;
1128 RET_LABEL34:(void)0;
1129 }
1130 }
1131 if (unlikely(varonce36==NULL)) {
1132 var37 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
1133 if (likely(varonce38!=NULL)) {
1134 var39 = varonce38;
1135 } else {
1136 var40 = "Error: attribute `";
1137 var41 = standard___standard__NativeString___to_s_with_length(var40, 18l);
1138 var39 = var41;
1139 varonce38 = var39;
1140 }
1141 ((struct instance_standard__NativeArray*)var37)->values[0]=var39;
1142 if (likely(varonce42!=NULL)) {
1143 var43 = varonce42;
1144 } else {
1145 var44 = "` does not exist in `";
1146 var45 = standard___standard__NativeString___to_s_with_length(var44, 21l);
1147 var43 = var45;
1148 varonce42 = var43;
1149 }
1150 ((struct instance_standard__NativeArray*)var37)->values[2]=var43;
1151 if (likely(varonce46!=NULL)) {
1152 var47 = varonce46;
1153 } else {
1154 var48 = "`.";
1155 var49 = standard___standard__NativeString___to_s_with_length(var48, 2l);
1156 var47 = var49;
1157 varonce46 = var47;
1158 }
1159 ((struct instance_standard__NativeArray*)var37)->values[4]=var47;
1160 } else {
1161 var37 = varonce36;
1162 varonce36 = NULL;
1163 }
1164 ((struct instance_standard__NativeArray*)var37)->values[1]=var_name;
1165 {
1166 var50 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_standard__string__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MType)>*/
1167 }
1168 ((struct instance_standard__NativeArray*)var37)->values[3]=var50;
1169 {
1170 var51 = ((val*(*)(val* self))(var37->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
1171 }
1172 varonce36 = var37;
1173 {
1174 nit___nit__ModelBuilder___error(var33, var_node, var51); /* Direct call modelbuilder_base#ModelBuilder#error on <var33:ModelBuilder>*/
1175 }
1176 goto RET_LABEL;
1177 } else {
1178 }
1179 /* <var_mproperty:nullable MProperty(MProperty)> isa MAttribute */
1180 cltype53 = type_nit__MAttribute.color;
1181 idtype54 = type_nit__MAttribute.id;
1182 if(cltype53 >= var_mproperty->type->table_size) {
1183 var52 = 0;
1184 } else {
1185 var52 = var_mproperty->type->type_table[cltype53] == idtype54;
1186 }
1187 if (unlikely(!var52)) {
1188 PRINT_ERROR("Runtime error: %s", "Assert failed");
1189 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 2037);
1190 fatal_exit(1);
1191 }
1192 {
1193 { /* Inline typing#AAttrFormExpr#mproperty= (self,var_mproperty) on <self:AAttrFormExpr> */
1194 self->attrs[COLOR_nit__typing__AAttrFormExpr___mproperty].val = var_mproperty; /* _mproperty on <self:AAttrFormExpr> */
1195 RET_LABEL55:(void)0;
1196 }
1197 }
1198 {
1199 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
1200 var58 = var_v->attrs[COLOR_nit__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
1201 if (unlikely(var58 == NULL)) {
1202 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1203 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 36);
1204 fatal_exit(1);
1205 }
1206 var56 = var58;
1207 RET_LABEL57:(void)0;
1208 }
1209 }
1210 {
1211 var59 = nit___nit__MProperty___lookup_definitions(var_mproperty, var56, var_unsafe_type);
1212 }
1213 var_mpropdefs = var59;
1214 {
1215 { /* Inline array#AbstractArrayRead#length (var_mpropdefs) on <var_mpropdefs:Array[MAttributeDef]> */
1216 var62 = var_mpropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_mpropdefs:Array[MAttributeDef]> */
1217 var60 = var62;
1218 RET_LABEL61:(void)0;
1219 }
1220 }
1221 {
1222 { /* Inline kernel#Int#== (var60,1l) on <var60:Int> */
1223 var65 = var60 == 1l;
1224 var63 = var65;
1225 goto RET_LABEL64;
1226 RET_LABEL64:(void)0;
1227 }
1228 }
1229 if (unlikely(!var63)) {
1230 PRINT_ERROR("Runtime error: %s", "Assert failed");
1231 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 2041);
1232 fatal_exit(1);
1233 }
1234 {
1235 var66 = standard___standard__SequenceRead___Collection__first(var_mpropdefs);
1236 }
1237 var_mpropdef = var66;
1238 {
1239 { /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on <var_mpropdef:MAttributeDef> */
1240 var69 = var_mpropdef->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var_mpropdef:MAttributeDef> */
1241 var67 = var69;
1242 RET_LABEL68:(void)0;
1243 }
1244 }
1245 var_attr_type = var67;
1246 if (var_attr_type == NULL) {
1247 var70 = 1; /* is null */
1248 } else {
1249 var70 = 0; /* arg is null but recv is not */
1250 }
1251 if (0) {
1252 { /* Inline kernel#Object#== (var_attr_type,((val*)NULL)) on <var_attr_type:nullable MType> */
1253 var_other = ((val*)NULL);
1254 {
1255 { /* Inline kernel#Object#is_same_instance (var_attr_type,var_other) on <var_attr_type:nullable MType(MType)> */
1256 var75 = var_attr_type == var_other;
1257 var73 = var75;
1258 goto RET_LABEL74;
1259 RET_LABEL74:(void)0;
1260 }
1261 }
1262 var71 = var73;
1263 goto RET_LABEL72;
1264 RET_LABEL72:(void)0;
1265 }
1266 var70 = var71;
1267 }
1268 if (var70){
1269 goto RET_LABEL;
1270 } else {
1271 }
1272 {
1273 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AAttrFormExpr> */
1274 var78 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AAttrFormExpr> */
1275 if (unlikely(var78 == NULL)) {
1276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1277 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2269);
1278 fatal_exit(1);
1279 }
1280 var76 = var78;
1281 RET_LABEL77:(void)0;
1282 }
1283 }
1284 /* <var76:AExpr> isa ASelfExpr */
1285 cltype80 = type_nit__ASelfExpr.color;
1286 idtype81 = type_nit__ASelfExpr.id;
1287 if(cltype80 >= var76->type->table_size) {
1288 var79 = 0;
1289 } else {
1290 var79 = var76->type->type_table[cltype80] == idtype81;
1291 }
1292 {
1293 var82 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_attr_type, var_recvtype, var79);
1294 }
1295 var_attr_type = var82;
1296 {
1297 { /* Inline typing#AAttrFormExpr#attr_type= (self,var_attr_type) on <self:AAttrFormExpr> */
1298 self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val = var_attr_type; /* _attr_type on <self:AAttrFormExpr> */
1299 RET_LABEL83:(void)0;
1300 }
1301 }
1302 RET_LABEL:;
1303 }
1304 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
1305 void nit__typing___AAttrExpr___AExpr__accept_typing(val* self, val* p0) {
1306 val* var_v /* var v: TypeVisitor */;
1307 val* var /* : nullable MType */;
1308 val* var2 /* : nullable MType */;
1309 var_v = p0;
1310 {
1311 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrExpr>*/
1312 }
1313 {
1314 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrExpr> */
1315 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrExpr> */
1316 var = var2;
1317 RET_LABEL1:(void)0;
1318 }
1319 }
1320 {
1321 { /* Inline typing#AExpr#mtype= (self,var) on <self:AAttrExpr> */
1322 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var; /* _mtype on <self:AAttrExpr> */
1323 RET_LABEL3:(void)0;
1324 }
1325 }
1326 RET_LABEL:;
1327 }
1328 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
1329 void nit__typing___AAttrAssignExpr___AExpr__accept_typing(val* self, val* p0) {
1330 val* var_v /* var v: TypeVisitor */;
1331 val* var /* : nullable MType */;
1332 val* var2 /* : nullable MType */;
1333 val* var_mtype /* var mtype: nullable MType */;
1334 val* var3 /* : AExpr */;
1335 val* var5 /* : AExpr */;
1336 val* var6 /* : nullable MType */;
1337 short int var7 /* : Bool */;
1338 short int var8 /* : Bool */;
1339 val* var_other /* var other: nullable Object */;
1340 short int var10 /* : Bool */;
1341 short int var11 /* : Bool */;
1342 var_v = p0;
1343 {
1344 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrAssignExpr>*/
1345 }
1346 {
1347 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrAssignExpr> */
1348 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrAssignExpr> */
1349 var = var2;
1350 RET_LABEL1:(void)0;
1351 }
1352 }
1353 var_mtype = var;
1354 {
1355 { /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:AAttrAssignExpr> */
1356 var5 = self->attrs[COLOR_nit__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:AAttrAssignExpr> */
1357 if (unlikely(var5 == NULL)) {
1358 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
1359 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1995);
1360 fatal_exit(1);
1361 }
1362 var3 = var5;
1363 RET_LABEL4:(void)0;
1364 }
1365 }
1366 {
1367 var6 = nit__typing___nit__typing__TypeVisitor___visit_expr_subtype(var_v, var3, var_mtype);
1368 }
1369 if (var_mtype == NULL) {
1370 var7 = 0; /* is null */
1371 } else {
1372 var7 = 1; /* arg is null and recv is not */
1373 }
1374 if (0) {
1375 { /* Inline kernel#Object#!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
1376 var_other = ((val*)NULL);
1377 {
1378 var10 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other); /* == on <var_mtype:nullable MType(MType)>*/
1379 }
1380 var11 = !var10;
1381 var8 = var11;
1382 goto RET_LABEL9;
1383 RET_LABEL9:(void)0;
1384 }
1385 var7 = var8;
1386 }
1387 {
1388 { /* Inline typing#AExpr#is_typed= (self,var7) on <self:AAttrAssignExpr> */
1389 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var7; /* _is_typed on <self:AAttrAssignExpr> */
1390 RET_LABEL12:(void)0;
1391 }
1392 }
1393 RET_LABEL:;
1394 }
1395 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
1396 void nit__typing___AAttrReassignExpr___AExpr__accept_typing(val* self, val* p0) {
1397 val* var_v /* var v: TypeVisitor */;
1398 val* var /* : nullable MType */;
1399 val* var2 /* : nullable MType */;
1400 val* var_mtype /* var mtype: nullable MType */;
1401 short int var3 /* : Bool */;
1402 short int var4 /* : Bool */;
1403 val* var_other /* var other: nullable Object */;
1404 short int var6 /* : Bool */;
1405 short int var8 /* : Bool */;
1406 val* var9 /* : nullable MType */;
1407 val* var_rettype /* var rettype: nullable MType */;
1408 short int var10 /* : Bool */;
1409 short int var11 /* : Bool */;
1410 val* var_other13 /* var other: nullable Object */;
1411 short int var14 /* : Bool */;
1412 short int var15 /* : Bool */;
1413 var_v = p0;
1414 {
1415 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrReassignExpr>*/
1416 }
1417 {
1418 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrReassignExpr> */
1419 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrReassignExpr> */
1420 var = var2;
1421 RET_LABEL1:(void)0;
1422 }
1423 }
1424 var_mtype = var;
1425 if (var_mtype == NULL) {
1426 var3 = 1; /* is null */
1427 } else {
1428 var3 = 0; /* arg is null but recv is not */
1429 }
1430 if (0) {
1431 { /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
1432 var_other = ((val*)NULL);
1433 {
1434 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
1435 var8 = var_mtype == var_other;
1436 var6 = var8;
1437 goto RET_LABEL7;
1438 RET_LABEL7:(void)0;
1439 }
1440 }
1441 var4 = var6;
1442 goto RET_LABEL5;
1443 RET_LABEL5:(void)0;
1444 }
1445 var3 = var4;
1446 }
1447 if (var3){
1448 goto RET_LABEL;
1449 } else {
1450 }
1451 {
1452 var9 = nit__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_mtype, var_mtype);
1453 }
1454 var_rettype = var9;
1455 if (var_rettype == NULL) {
1456 var10 = 0; /* is null */
1457 } else {
1458 var10 = 1; /* arg is null and recv is not */
1459 }
1460 if (0) {
1461 { /* Inline kernel#Object#!= (var_rettype,((val*)NULL)) on <var_rettype:nullable MType> */
1462 var_other13 = ((val*)NULL);
1463 {
1464 var14 = ((short int(*)(val* self, val* p0))(var_rettype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_rettype, var_other13); /* == on <var_rettype:nullable MType(MType)>*/
1465 }
1466 var15 = !var14;
1467 var11 = var15;
1468 goto RET_LABEL12;
1469 RET_LABEL12:(void)0;
1470 }
1471 var10 = var11;
1472 }
1473 {
1474 { /* Inline typing#AExpr#is_typed= (self,var10) on <self:AAttrReassignExpr> */
1475 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = var10; /* _is_typed on <self:AAttrReassignExpr> */
1476 RET_LABEL16:(void)0;
1477 }
1478 }
1479 RET_LABEL:;
1480 }
1481 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
1482 void nit__typing___AIssetAttrExpr___AExpr__accept_typing(val* self, val* p0) {
1483 val* var_v /* var v: TypeVisitor */;
1484 val* var /* : nullable MType */;
1485 val* var2 /* : nullable MType */;
1486 val* var_mtype /* var mtype: nullable MType */;
1487 short int var3 /* : Bool */;
1488 short int var4 /* : Bool */;
1489 val* var_other /* var other: nullable Object */;
1490 short int var6 /* : Bool */;
1491 short int var8 /* : Bool */;
1492 val* var9 /* : AExpr */;
1493 val* var11 /* : AExpr */;
1494 val* var12 /* : nullable MType */;
1495 val* var_recvtype /* var recvtype: MType */;
1496 val* var13 /* : MType */;
1497 val* var_bound /* var bound: MType */;
1498 short int var14 /* : Bool */;
1499 int cltype;
1500 int idtype;
1501 val* var15 /* : TAttrid */;
1502 val* var17 /* : TAttrid */;
1503 static val* varonce;
1504 val* var18 /* : String */;
1505 char* var19 /* : NativeString */;
1506 val* var20 /* : FlatString */;
1507 val* var21 /* : nullable MType */;
1508 var_v = p0;
1509 {
1510 nit__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AIssetAttrExpr>*/
1511 }
1512 {
1513 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AIssetAttrExpr> */
1514 var2 = self->attrs[COLOR_nit__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AIssetAttrExpr> */
1515 var = var2;
1516 RET_LABEL1:(void)0;
1517 }
1518 }
1519 var_mtype = var;
1520 if (var_mtype == NULL) {
1521 var3 = 1; /* is null */
1522 } else {
1523 var3 = 0; /* arg is null but recv is not */
1524 }
1525 if (0) {
1526 { /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
1527 var_other = ((val*)NULL);
1528 {
1529 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
1530 var8 = var_mtype == var_other;
1531 var6 = var8;
1532 goto RET_LABEL7;
1533 RET_LABEL7:(void)0;
1534 }
1535 }
1536 var4 = var6;
1537 goto RET_LABEL5;
1538 RET_LABEL5:(void)0;
1539 }
1540 var3 = var4;
1541 }
1542 if (var3){
1543 goto RET_LABEL;
1544 } else {
1545 }
1546 {
1547 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AIssetAttrExpr> */
1548 var11 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AIssetAttrExpr> */
1549 if (unlikely(var11 == NULL)) {
1550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1551 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2269);
1552 fatal_exit(1);
1553 }
1554 var9 = var11;
1555 RET_LABEL10:(void)0;
1556 }
1557 }
1558 {
1559 var12 = ((val*(*)(val* self))(var9->class->vft[COLOR_nit__typing__AExpr__mtype]))(var9); /* mtype on <var9:AExpr>*/
1560 }
1561 if (unlikely(var12 == NULL)) {
1562 PRINT_ERROR("Runtime error: %s", "Cast failed");
1563 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 2090);
1564 fatal_exit(1);
1565 }
1566 var_recvtype = var12;
1567 {
1568 var13 = nit__typing___nit__typing__TypeVisitor___resolve_for(var_v, var_mtype, var_recvtype, 0);
1569 }
1570 var_bound = var13;
1571 /* <var_bound:MType> isa MNullableType */
1572 cltype = type_nit__MNullableType.color;
1573 idtype = type_nit__MNullableType.id;
1574 if(cltype >= var_bound->type->table_size) {
1575 var14 = 0;
1576 } else {
1577 var14 = var_bound->type->type_table[cltype] == idtype;
1578 }
1579 if (var14){
1580 {
1581 { /* Inline parser_nodes#AAttrFormExpr#n_id (self) on <self:AIssetAttrExpr> */
1582 var17 = self->attrs[COLOR_nit__parser_nodes__AAttrFormExpr___n_id].val; /* _n_id on <self:AIssetAttrExpr> */
1583 if (unlikely(var17 == NULL)) {
1584 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
1585 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2272);
1586 fatal_exit(1);
1587 }
1588 var15 = var17;
1589 RET_LABEL16:(void)0;
1590 }
1591 }
1592 if (likely(varonce!=NULL)) {
1593 var18 = varonce;
1594 } else {
1595 var19 = "Type Error: `isset` on a nullable attribute.";
1596 var20 = standard___standard__NativeString___to_s_with_length(var19, 44l);
1597 var18 = var20;
1598 varonce = var18;
1599 }
1600 {
1601 nit__typing___nit__typing__TypeVisitor___error(var_v, var15, var18); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1602 }
1603 } else {
1604 }
1605 {
1606 var21 = nit__typing___nit__typing__TypeVisitor___type_bool(var_v, self);
1607 }
1608 {
1609 { /* Inline typing#AExpr#mtype= (self,var21) on <self:AIssetAttrExpr> */
1610 self->attrs[COLOR_nit__typing__AExpr___mtype].val = var21; /* _mtype on <self:AIssetAttrExpr> */
1611 RET_LABEL22:(void)0;
1612 }
1613 }
1614 RET_LABEL:;
1615 }
1616 /* method typing#AVarargExpr#accept_typing for (self: AVarargExpr, TypeVisitor) */
1617 void nit__typing___AVarargExpr___AExpr__accept_typing(val* self, val* p0) {
1618 val* var_v /* var v: TypeVisitor */;
1619 static val* varonce;
1620 val* var /* : String */;
1621 char* var1 /* : NativeString */;
1622 val* var2 /* : FlatString */;
1623 var_v = p0;
1624 if (likely(varonce!=NULL)) {
1625 var = varonce;
1626 } else {
1627 var1 = "Syntax Error: unexpected `...`.";
1628 var2 = standard___standard__NativeString___to_s_with_length(var1, 31l);
1629 var = var2;
1630 varonce = var;
1631 }
1632 {
1633 nit__typing___nit__typing__TypeVisitor___error(var_v, self, var); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1634 }
1635 RET_LABEL:;
1636 }
1637 /* method typing#ADebugTypeExpr#accept_typing for (self: ADebugTypeExpr, TypeVisitor) */
1638 void nit__typing___ADebugTypeExpr___AExpr__accept_typing(val* self, val* p0) {
1639 val* var_v /* var v: TypeVisitor */;
1640 val* var /* : AExpr */;
1641 val* var2 /* : AExpr */;
1642 val* var3 /* : nullable MType */;
1643 val* var_expr /* var expr: nullable MType */;
1644 short int var4 /* : Bool */;
1645 short int var5 /* : Bool */;
1646 val* var_other /* var other: nullable Object */;
1647 short int var7 /* : Bool */;
1648 short int var9 /* : Bool */;
1649 val* var10 /* : MType */;
1650 val* var_unsafe /* var unsafe: MType */;
1651 val* var11 /* : AType */;
1652 val* var13 /* : AType */;
1653 val* var_ntype /* var ntype: AType */;
1654 val* var14 /* : nullable MType */;
1655 val* var_mtype /* var mtype: nullable MType */;
1656 short int var15 /* : Bool */;
1657 short int var16 /* : Bool */;
1658 short int var17 /* : Bool */;
1659 val* var_other19 /* var other: nullable Object */;
1660 short int var20 /* : Bool */;
1661 short int var21 /* : Bool */;
1662 short int var_ /* var : Bool */;
1663 short int var22 /* : Bool */;
1664 short int var24 /* : Bool */;
1665 short int var25 /* : Bool */;
1666 val* var26 /* : MType */;
1667 val* var_umtype /* var umtype: MType */;
1668 val* var27 /* : ModelBuilder */;
1669 val* var29 /* : ModelBuilder */;
1670 static val* varonce;
1671 val* var30 /* : String */;
1672 char* var31 /* : NativeString */;
1673 val* var32 /* : FlatString */;
1674 val* var34 /* : NativeArray[String] */;
1675 static val* varonce33;
1676 static val* varonce35;
1677 val* var36 /* : String */;
1678 char* var37 /* : NativeString */;
1679 val* var38 /* : FlatString */;
1680 static val* varonce39;
1681 val* var40 /* : String */;
1682 char* var41 /* : NativeString */;
1683 val* var42 /* : FlatString */;
1684 static val* varonce43;
1685 val* var44 /* : String */;
1686 char* var45 /* : NativeString */;
1687 val* var46 /* : FlatString */;
1688 static val* varonce47;
1689 val* var48 /* : String */;
1690 char* var49 /* : NativeString */;
1691 val* var50 /* : FlatString */;
1692 static val* varonce51;
1693 val* var52 /* : String */;
1694 char* var53 /* : NativeString */;
1695 val* var54 /* : FlatString */;
1696 val* var55 /* : String */;
1697 val* var56 /* : String */;
1698 val* var57 /* : String */;
1699 val* var58 /* : String */;
1700 val* var59 /* : String */;
1701 var_v = p0;
1702 {
1703 { /* Inline parser_nodes#ADebugTypeExpr#n_expr (self) on <self:ADebugTypeExpr> */
1704 var2 = self->attrs[COLOR_nit__parser_nodes__ADebugTypeExpr___n_expr].val; /* _n_expr on <self:ADebugTypeExpr> */
1705 if (unlikely(var2 == NULL)) {
1706 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
1707 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2760);
1708 fatal_exit(1);
1709 }
1710 var = var2;
1711 RET_LABEL1:(void)0;
1712 }
1713 }
1714 {
1715 var3 = nit__typing___nit__typing__TypeVisitor___visit_expr(var_v, var);
1716 }
1717 var_expr = var3;
1718 if (var_expr == NULL) {
1719 var4 = 1; /* is null */
1720 } else {
1721 var4 = 0; /* arg is null but recv is not */
1722 }
1723 if (0) {
1724 { /* Inline kernel#Object#== (var_expr,((val*)NULL)) on <var_expr:nullable MType> */
1725 var_other = ((val*)NULL);
1726 {
1727 { /* Inline kernel#Object#is_same_instance (var_expr,var_other) on <var_expr:nullable MType(MType)> */
1728 var9 = var_expr == var_other;
1729 var7 = var9;
1730 goto RET_LABEL8;
1731 RET_LABEL8:(void)0;
1732 }
1733 }
1734 var5 = var7;
1735 goto RET_LABEL6;
1736 RET_LABEL6:(void)0;
1737 }
1738 var4 = var5;
1739 }
1740 if (var4){
1741 goto RET_LABEL;
1742 } else {
1743 }
1744 {
1745 var10 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_expr);
1746 }
1747 var_unsafe = var10;
1748 {
1749 { /* Inline parser_nodes#ADebugTypeExpr#n_type (self) on <self:ADebugTypeExpr> */
1750 var13 = self->attrs[COLOR_nit__parser_nodes__ADebugTypeExpr___n_type].val; /* _n_type on <self:ADebugTypeExpr> */
1751 if (unlikely(var13 == NULL)) {
1752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
1753 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2763);
1754 fatal_exit(1);
1755 }
1756 var11 = var13;
1757 RET_LABEL12:(void)0;
1758 }
1759 }
1760 var_ntype = var11;
1761 {
1762 var14 = nit__typing___nit__typing__TypeVisitor___resolve_mtype(var_v, var_ntype);
1763 }
1764 var_mtype = var14;
1765 if (var_mtype == NULL) {
1766 var16 = 0; /* is null */
1767 } else {
1768 var16 = 1; /* arg is null and recv is not */
1769 }
1770 if (0) {
1771 { /* Inline kernel#Object#!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
1772 var_other19 = ((val*)NULL);
1773 {
1774 var20 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other19); /* == on <var_mtype:nullable MType(MType)>*/
1775 }
1776 var21 = !var20;
1777 var17 = var21;
1778 goto RET_LABEL18;
1779 RET_LABEL18:(void)0;
1780 }
1781 var16 = var17;
1782 }
1783 var_ = var16;
1784 if (var16){
1785 {
1786 { /* Inline kernel#Object#!= (var_mtype,var_expr) on <var_mtype:nullable MType(MType)> */
1787 var_other19 = var_expr;
1788 {
1789 var24 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mtype, var_other19); /* == on <var_mtype:nullable MType(MType)>*/
1790 }
1791 var25 = !var24;
1792 var22 = var25;
1793 goto RET_LABEL23;
1794 RET_LABEL23:(void)0;
1795 }
1796 }
1797 var15 = var22;
1798 } else {
1799 var15 = var_;
1800 }
1801 if (var15){
1802 {
1803 var26 = nit__typing___nit__typing__TypeVisitor___anchor_to(var_v, var_mtype);
1804 }
1805 var_umtype = var26;
1806 {
1807 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
1808 var29 = var_v->attrs[COLOR_nit__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
1809 if (unlikely(var29 == NULL)) {
1810 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1811 PRINT_ERROR(" (%s:%d)\n", FILE_nit__typing, 34);
1812 fatal_exit(1);
1813 }
1814 var27 = var29;
1815 RET_LABEL28:(void)0;
1816 }
1817 }
1818 if (likely(varonce!=NULL)) {
1819 var30 = varonce;
1820 } else {
1821 var31 = "debug";
1822 var32 = standard___standard__NativeString___to_s_with_length(var31, 5l);
1823 var30 = var32;
1824 varonce = var30;
1825 }
1826 if (unlikely(varonce33==NULL)) {
1827 var34 = NEW_standard__NativeArray(9l, &type_standard__NativeArray__standard__String);
1828 if (likely(varonce35!=NULL)) {
1829 var36 = varonce35;
1830 } else {
1831 var37 = "Found type ";
1832 var38 = standard___standard__NativeString___to_s_with_length(var37, 11l);
1833 var36 = var38;
1834 varonce35 = var36;
1835 }
1836 ((struct instance_standard__NativeArray*)var34)->values[0]=var36;
1837 if (likely(varonce39!=NULL)) {
1838 var40 = varonce39;
1839 } else {
1840 var41 = " (-> ";
1841 var42 = standard___standard__NativeString___to_s_with_length(var41, 5l);
1842 var40 = var42;
1843 varonce39 = var40;
1844 }
1845 ((struct instance_standard__NativeArray*)var34)->values[2]=var40;
1846 if (likely(varonce43!=NULL)) {
1847 var44 = varonce43;
1848 } else {
1849 var45 = "), expected ";
1850 var46 = standard___standard__NativeString___to_s_with_length(var45, 12l);
1851 var44 = var46;
1852 varonce43 = var44;
1853 }
1854 ((struct instance_standard__NativeArray*)var34)->values[4]=var44;
1855 if (likely(varonce47!=NULL)) {
1856 var48 = varonce47;
1857 } else {
1858 var49 = " (-> ";
1859 var50 = standard___standard__NativeString___to_s_with_length(var49, 5l);
1860 var48 = var50;
1861 varonce47 = var48;
1862 }
1863 ((struct instance_standard__NativeArray*)var34)->values[6]=var48;
1864 if (likely(varonce51!=NULL)) {
1865 var52 = varonce51;
1866 } else {
1867 var53 = ")";
1868 var54 = standard___standard__NativeString___to_s_with_length(var53, 1l);
1869 var52 = var54;
1870 varonce51 = var52;
1871 }
1872 ((struct instance_standard__NativeArray*)var34)->values[8]=var52;
1873 } else {
1874 var34 = varonce33;
1875 varonce33 = NULL;
1876 }
1877 {
1878 var55 = ((val*(*)(val* self))(var_expr->class->vft[COLOR_standard__string__Object__to_s]))(var_expr); /* to_s on <var_expr:nullable MType(MType)>*/
1879 }
1880 ((struct instance_standard__NativeArray*)var34)->values[1]=var55;
1881 {
1882 var56 = ((val*(*)(val* self))(var_unsafe->class->vft[COLOR_standard__string__Object__to_s]))(var_unsafe); /* to_s on <var_unsafe:MType>*/
1883 }
1884 ((struct instance_standard__NativeArray*)var34)->values[3]=var56;
1885 {
1886 var57 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:nullable MType(MType)>*/
1887 }
1888 ((struct instance_standard__NativeArray*)var34)->values[5]=var57;
1889 {
1890 var58 = ((val*(*)(val* self))(var_umtype->class->vft[COLOR_standard__string__Object__to_s]))(var_umtype); /* to_s on <var_umtype:MType>*/
1891 }
1892 ((struct instance_standard__NativeArray*)var34)->values[7]=var58;
1893 {
1894 var59 = ((val*(*)(val* self))(var34->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var34); /* native_to_s on <var34:NativeArray[String]>*/
1895 }
1896 varonce33 = var34;
1897 {
1898 nit___nit__ModelBuilder___warning(var27, self, var30, var59); /* Direct call modelbuilder_base#ModelBuilder#warning on <var27:ModelBuilder>*/
1899 }
1900 } else {
1901 }
1902 {
1903 { /* Inline typing#AExpr#is_typed= (self,1) on <self:ADebugTypeExpr> */
1904 self->attrs[COLOR_nit__typing__AExpr___is_typed].s = 1; /* _is_typed on <self:ADebugTypeExpr> */
1905 RET_LABEL60:(void)0;
1906 }
1907 }
1908 RET_LABEL:;
1909 }