NOTICE: Update author list and years
[nit.git] / c_src / nitc__typing.sep.3.c
1 #include "nitc__typing.sep.0.h"
2 /* method typing#ASuperExpr#process_superinit for (self: ASuperExpr, TypeVisitor) */
3 void nitc__typing___ASuperExpr___process_superinit(val* self, val* p0) {
4 val* var_v /* var v: TypeVisitor */;
5 val* var /* : nullable MClassType */;
6 val* var2 /* : nullable MClassType */;
7 val* var_anchor /* var anchor: nullable MClassType */;
8 short int var3 /* : Bool */;
9 short int var4 /* : Bool */;
10 val* var_other /* var other: nullable Object */;
11 short int var6 /* : Bool */;
12 short int var7 /* : Bool */;
13 val* var8 /* : Variable */;
14 val* var10 /* : Variable */;
15 val* var11 /* : nullable MType */;
16 val* var_recvtype /* var recvtype: nullable MType */;
17 short int var12 /* : Bool */;
18 short int var13 /* : Bool */;
19 short int var15 /* : Bool */;
20 short int var16 /* : Bool */;
21 val* var17 /* : nullable MPropDef */;
22 val* var19 /* : nullable MPropDef */;
23 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
24 short int var20 /* : Bool */;
25 int cltype;
26 int idtype;
27 val* var21 /* : MProperty */;
28 val* var23 /* : MProperty */;
29 val* var_mproperty /* var mproperty: MMethod */;
30 val* var_superprop /* var superprop: nullable MMethodDef */;
31 val* var24 /* : MClassDef */;
32 val* var26 /* : MClassDef */;
33 val* var27 /* : Array[MClassType] */;
34 val* var29 /* : Array[MClassType] */;
35 val* var_ /* var : Array[MClassType] */;
36 val* var30 /* : IndexedIterator[nullable Object] */;
37 val* var_31 /* var : IndexedIterator[MClassType] */;
38 short int var32 /* : Bool */;
39 val* var33 /* : nullable Object */;
40 val* var_msupertype /* var msupertype: MClassType */;
41 val* var34 /* : MModule */;
42 val* var36 /* : MModule */;
43 val* var37 /* : MClassType */;
44 val* var38 /* : ModelBuilder */;
45 val* var40 /* : ModelBuilder */;
46 val* var41 /* : ToolContext */;
47 val* var43 /* : ToolContext */;
48 long var44 /* : Int */;
49 long var46 /* : Int */;
50 long var_errcount /* var errcount: Int */;
51 val* var47 /* : String */;
52 val* var49 /* : String */;
53 val* var50 /* : nullable MProperty */;
54 short int var51 /* : Bool */;
55 int cltype52;
56 int idtype53;
57 const char* var_class_name;
58 val* var_candidate /* var candidate: nullable MMethod */;
59 short int var54 /* : Bool */;
60 short int var55 /* : Bool */;
61 val* var_other57 /* var other: nullable Object */;
62 short int var58 /* : Bool */;
63 short int var60 /* : Bool */;
64 val* var61 /* : ModelBuilder */;
65 val* var63 /* : ModelBuilder */;
66 val* var64 /* : ToolContext */;
67 val* var66 /* : ToolContext */;
68 long var67 /* : Int */;
69 long var69 /* : Int */;
70 short int var70 /* : Bool */;
71 short int var72 /* : Bool */;
72 int cltype73;
73 int idtype74;
74 const char* var_class_name75;
75 short int var76 /* : Bool */;
76 short int var78 /* : Bool */;
77 short int var79 /* : Bool */;
78 short int var80 /* : Bool */;
79 short int var82 /* : Bool */;
80 short int var83 /* : Bool */;
81 short int var_84 /* var : Bool */;
82 short int var85 /* : Bool */;
83 short int var87 /* : Bool */;
84 short int var88 /* : Bool */;
85 short int var89 /* : Bool */;
86 short int var90 /* : Bool */;
87 short int var91 /* : Bool */;
88 short int var93 /* : Bool */;
89 short int var94 /* : Bool */;
90 short int var_95 /* var : Bool */;
91 val* var96 /* : MProperty */;
92 val* var98 /* : MProperty */;
93 short int var99 /* : Bool */;
94 short int var101 /* : Bool */;
95 short int var102 /* : Bool */;
96 short int var_103 /* var : Bool */;
97 val* var104 /* : MProperty */;
98 val* var106 /* : MProperty */;
99 short int var107 /* : Bool */;
100 short int var109 /* : Bool */;
101 short int var110 /* : Bool */;
102 val* var111 /* : NativeArray[String] */;
103 static val* varonce;
104 static val* varonce112;
105 val* var113 /* : String */;
106 char* var114 /* : NativeString */;
107 val* var115 /* : String */;
108 static val* varonce116;
109 val* var117 /* : String */;
110 char* var118 /* : NativeString */;
111 val* var119 /* : String */;
112 static val* varonce120;
113 val* var121 /* : String */;
114 char* var122 /* : NativeString */;
115 val* var123 /* : String */;
116 static val* varonce124;
117 val* var125 /* : String */;
118 char* var126 /* : NativeString */;
119 val* var127 /* : String */;
120 val* var128 /* : String */;
121 val* var129 /* : String */;
122 val* var130 /* : MProperty */;
123 val* var132 /* : MProperty */;
124 val* var133 /* : String */;
125 val* var134 /* : String */;
126 val* var135 /* : MModule */;
127 val* var137 /* : MModule */;
128 val* var138 /* : Array[MPropDef] */;
129 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
130 short int var139 /* : Bool */;
131 short int var140 /* : Bool */;
132 short int var141 /* : Bool */;
133 short int var143 /* : Bool */;
134 short int var144 /* : Bool */;
135 short int var_145 /* var : Bool */;
136 val* var146 /* : MProperty */;
137 val* var148 /* : MProperty */;
138 short int var149 /* : Bool */;
139 short int var151 /* : Bool */;
140 short int var153 /* : Bool */;
141 val* var154 /* : nullable Object */;
142 short int var155 /* : Bool */;
143 short int var157 /* : Bool */;
144 short int var159 /* : Bool */;
145 long var160 /* : Int */;
146 long var162 /* : Int */;
147 short int var163 /* : Bool */;
148 short int var165 /* : Bool */;
149 int cltype166;
150 int idtype167;
151 const char* var_class_name168;
152 short int var169 /* : Bool */;
153 val* var171 /* : NativeArray[String] */;
154 static val* varonce170;
155 static val* varonce172;
156 val* var173 /* : String */;
157 char* var174 /* : NativeString */;
158 val* var175 /* : String */;
159 static val* varonce176;
160 val* var177 /* : String */;
161 char* var178 /* : NativeString */;
162 val* var179 /* : String */;
163 static val* varonce180;
164 val* var181 /* : String */;
165 char* var182 /* : NativeString */;
166 val* var183 /* : String */;
167 val* var184 /* : String */;
168 val* var185 /* : String */;
169 static val* varonce186;
170 val* var187 /* : String */;
171 char* var188 /* : NativeString */;
172 val* var189 /* : String */;
173 val* var190 /* : String */;
174 val* var191 /* : String */;
175 val* var192 /* : nullable Object */;
176 short int var193 /* : Bool */;
177 short int var194 /* : Bool */;
178 short int var196 /* : Bool */;
179 short int var198 /* : Bool */;
180 val* var200 /* : NativeArray[String] */;
181 static val* varonce199;
182 static val* varonce201;
183 val* var202 /* : String */;
184 char* var203 /* : NativeString */;
185 val* var204 /* : String */;
186 static val* varonce205;
187 val* var206 /* : String */;
188 char* var207 /* : NativeString */;
189 val* var208 /* : String */;
190 val* var209 /* : String */;
191 val* var210 /* : String */;
192 val* var211 /* : MSignature */;
193 val* var212 /* : nullable MSignature */;
194 val* var214 /* : nullable MSignature */;
195 val* var215 /* : nullable MSignature */;
196 val* var217 /* : nullable MSignature */;
197 val* var_msignature /* var msignature: MSignature */;
198 val* var218 /* : MType */;
199 short int var219 /* : Bool */;
200 int cltype220;
201 int idtype221;
202 const char* var_class_name222;
203 val* var223 /* : CallSite */;
204 val* var224 /* : Location */;
205 val* var225 /* : MModule */;
206 val* var227 /* : MModule */;
207 val* var228 /* : nullable MClassType */;
208 val* var230 /* : nullable MClassType */;
209 val* var231 /* : MProperty */;
210 val* var233 /* : MProperty */;
211 val* var_callsite /* var callsite: CallSite */;
212 val* var235 /* : AExprs */;
213 val* var237 /* : AExprs */;
214 val* var238 /* : Array[AExpr] */;
215 val* var_args /* var args: Array[AExpr] */;
216 long var239 /* : Int */;
217 long var241 /* : Int */;
218 short int var242 /* : Bool */;
219 short int var244 /* : Bool */;
220 int cltype245;
221 int idtype246;
222 const char* var_class_name247;
223 short int var248 /* : Bool */;
224 short int var249 /* : Bool */;
225 val* var250 /* : nullable MSignature */;
226 val* var252 /* : nullable MSignature */;
227 long var253 /* : Int */;
228 long var254 /* : Int */;
229 short int var255 /* : Bool */;
230 short int var257 /* : Bool */;
231 int cltype258;
232 int idtype259;
233 const char* var_class_name260;
234 short int var261 /* : Bool */;
235 val* var263 /* : NativeArray[String] */;
236 static val* varonce262;
237 static val* varonce264;
238 val* var265 /* : String */;
239 char* var266 /* : NativeString */;
240 val* var267 /* : String */;
241 static val* varonce268;
242 val* var269 /* : String */;
243 char* var270 /* : NativeString */;
244 val* var271 /* : String */;
245 static val* varonce272;
246 val* var273 /* : String */;
247 char* var274 /* : NativeString */;
248 val* var275 /* : String */;
249 static val* varonce276;
250 val* var277 /* : String */;
251 char* var278 /* : NativeString */;
252 val* var279 /* : String */;
253 val* var280 /* : nullable MSignature */;
254 val* var282 /* : nullable MSignature */;
255 long var283 /* : Int */;
256 val* var284 /* : String */;
257 long var285 /* : Int */;
258 val* var286 /* : String */;
259 val* var287 /* : String */;
260 val* var288 /* : String */;
261 long var_i /* var i: Int */;
262 val* var289 /* : Array[MParameter] */;
263 val* var291 /* : Array[MParameter] */;
264 val* var_292 /* var : Array[MParameter] */;
265 val* var293 /* : IndexedIterator[nullable Object] */;
266 val* var_294 /* var : IndexedIterator[MParameter] */;
267 short int var295 /* : Bool */;
268 val* var297 /* : nullable Object */;
269 val* var_sp /* var sp: MParameter */;
270 val* var298 /* : nullable MSignature */;
271 val* var300 /* : nullable MSignature */;
272 val* var301 /* : Array[MParameter] */;
273 val* var303 /* : Array[MParameter] */;
274 val* var304 /* : nullable Object */;
275 val* var_p /* var p: MParameter */;
276 val* var305 /* : MType */;
277 val* var307 /* : MType */;
278 val* var308 /* : MType */;
279 val* var310 /* : MType */;
280 short int var311 /* : Bool */;
281 short int var312 /* : Bool */;
282 val* var314 /* : NativeArray[String] */;
283 static val* varonce313;
284 static val* varonce315;
285 val* var316 /* : String */;
286 char* var317 /* : NativeString */;
287 val* var318 /* : String */;
288 static val* varonce319;
289 val* var320 /* : String */;
290 char* var321 /* : NativeString */;
291 val* var322 /* : String */;
292 static val* varonce323;
293 val* var324 /* : String */;
294 char* var325 /* : NativeString */;
295 val* var326 /* : String */;
296 static val* varonce327;
297 val* var328 /* : String */;
298 char* var329 /* : NativeString */;
299 val* var330 /* : String */;
300 static val* varonce331;
301 val* var332 /* : String */;
302 char* var333 /* : NativeString */;
303 val* var334 /* : String */;
304 val* var335 /* : String */;
305 val* var336 /* : MType */;
306 val* var338 /* : MType */;
307 val* var339 /* : String */;
308 val* var340 /* : String */;
309 val* var342 /* : String */;
310 val* var343 /* : MType */;
311 val* var345 /* : MType */;
312 val* var346 /* : String */;
313 val* var347 /* : String */;
314 val* var348 /* : String */;
315 long var349 /* : Int */;
316 short int var351 /* : Bool */;
317 int cltype352;
318 int idtype353;
319 const char* var_class_name354;
320 long var355 /* : Int */;
321 var_v = p0;
322 {
323 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
324 var2 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
325 var = var2;
326 RET_LABEL1:(void)0;
327 }
328 }
329 var_anchor = var;
330 if (var_anchor == NULL) {
331 var3 = 0; /* is null */
332 } else {
333 var3 = 1; /* arg is null and recv is not */
334 }
335 if (0) {
336 { /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
337 var_other = ((val*)NULL);
338 {
339 var6 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_anchor, var_other); /* == on <var_anchor:nullable MClassType(MClassType)>*/
340 }
341 var7 = !var6;
342 var4 = var7;
343 goto RET_LABEL5;
344 RET_LABEL5:(void)0;
345 }
346 var3 = var4;
347 }
348 if (unlikely(!var3)) {
349 PRINT_ERROR("Runtime error: %s", "Assert failed");
350 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 1969);
351 fatal_exit(1);
352 }
353 {
354 { /* Inline typing#TypeVisitor#selfvariable (var_v) on <var_v:TypeVisitor> */
355 var10 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
356 if (unlikely(var10 == NULL)) {
357 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
358 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 51);
359 fatal_exit(1);
360 }
361 var8 = var10;
362 RET_LABEL9:(void)0;
363 }
364 }
365 {
366 var11 = nitc__typing___nitc__typing__TypeVisitor___get_variable(var_v, self, var8);
367 }
368 var_recvtype = var11;
369 if (var_recvtype == NULL) {
370 var12 = 0; /* is null */
371 } else {
372 var12 = 1; /* arg is null and recv is not */
373 }
374 if (0) {
375 { /* Inline kernel#Object#!= (var_recvtype,((val*)NULL)) on <var_recvtype:nullable MType> */
376 var_other = ((val*)NULL);
377 {
378 var15 = ((short int(*)(val* self, val* p0))(var_recvtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_recvtype, var_other); /* == on <var_recvtype:nullable MType(MType)>*/
379 }
380 var16 = !var15;
381 var13 = var16;
382 goto RET_LABEL14;
383 RET_LABEL14:(void)0;
384 }
385 var12 = var13;
386 }
387 if (unlikely(!var12)) {
388 PRINT_ERROR("Runtime error: %s", "Assert failed");
389 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 1971);
390 fatal_exit(1);
391 }
392 {
393 { /* Inline typing#TypeVisitor#mpropdef (var_v) on <var_v:TypeVisitor> */
394 var19 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <var_v:TypeVisitor> */
395 var17 = var19;
396 RET_LABEL18:(void)0;
397 }
398 }
399 var_mpropdef = var17;
400 /* <var_mpropdef:nullable MPropDef> isa MMethodDef */
401 cltype = type_nitc__MMethodDef.color;
402 idtype = type_nitc__MMethodDef.id;
403 if(var_mpropdef == NULL) {
404 var20 = 0;
405 } else {
406 if(cltype >= var_mpropdef->type->table_size) {
407 var20 = 0;
408 } else {
409 var20 = var_mpropdef->type->type_table[cltype] == idtype;
410 }
411 }
412 if (unlikely(!var20)) {
413 PRINT_ERROR("Runtime error: %s", "Assert failed");
414 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 1973);
415 fatal_exit(1);
416 }
417 {
418 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
419 var23 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MPropDef(MMethodDef)> */
420 if (unlikely(var23 == NULL)) {
421 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
422 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
423 fatal_exit(1);
424 }
425 var21 = var23;
426 RET_LABEL22:(void)0;
427 }
428 }
429 var_mproperty = var21;
430 var_superprop = ((val*)NULL);
431 {
432 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
433 var26 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MPropDef(MMethodDef)> */
434 if (unlikely(var26 == NULL)) {
435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
436 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
437 fatal_exit(1);
438 }
439 var24 = var26;
440 RET_LABEL25:(void)0;
441 }
442 }
443 {
444 { /* Inline model#MClassDef#supertypes (var24) on <var24:MClassDef> */
445 var29 = var24->attrs[COLOR_nitc__model__MClassDef___supertypes].val; /* _supertypes on <var24:MClassDef> */
446 if (unlikely(var29 == NULL)) {
447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes");
448 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 650);
449 fatal_exit(1);
450 }
451 var27 = var29;
452 RET_LABEL28:(void)0;
453 }
454 }
455 var_ = var27;
456 {
457 var30 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
458 }
459 var_31 = var30;
460 for(;;) {
461 {
462 var32 = ((short int(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_31); /* is_ok on <var_31:IndexedIterator[MClassType]>*/
463 }
464 if (var32){
465 } else {
466 goto BREAK_label;
467 }
468 {
469 var33 = ((val*(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_31); /* item on <var_31:IndexedIterator[MClassType]>*/
470 }
471 var_msupertype = var33;
472 {
473 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
474 var36 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
475 if (unlikely(var36 == NULL)) {
476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
477 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
478 fatal_exit(1);
479 }
480 var34 = var36;
481 RET_LABEL35:(void)0;
482 }
483 }
484 {
485 var37 = nitc___nitc__MClassType___MType__anchor_to(var_msupertype, var34, var_anchor);
486 }
487 var_msupertype = var37;
488 {
489 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
490 var40 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
491 if (unlikely(var40 == NULL)) {
492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
493 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
494 fatal_exit(1);
495 }
496 var38 = var40;
497 RET_LABEL39:(void)0;
498 }
499 }
500 {
501 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var38) on <var38:ModelBuilder> */
502 var43 = var38->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var38:ModelBuilder> */
503 if (unlikely(var43 == NULL)) {
504 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
505 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
506 fatal_exit(1);
507 }
508 var41 = var43;
509 RET_LABEL42:(void)0;
510 }
511 }
512 {
513 { /* Inline toolcontext#ToolContext#error_count (var41) on <var41:ToolContext> */
514 var46 = var41->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <var41:ToolContext> */
515 var44 = var46;
516 RET_LABEL45:(void)0;
517 }
518 }
519 var_errcount = var44;
520 {
521 { /* Inline model#MProperty#name (var_mproperty) on <var_mproperty:MMethod> */
522 var49 = var_mproperty->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mproperty:MMethod> */
523 if (unlikely(var49 == NULL)) {
524 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
525 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
526 fatal_exit(1);
527 }
528 var47 = var49;
529 RET_LABEL48:(void)0;
530 }
531 }
532 {
533 var50 = nitc__typing___nitc__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, self, var_msupertype, var47);
534 }
535 /* <var50:nullable MProperty> isa nullable MMethod */
536 cltype52 = type_nullable__nitc__MMethod.color;
537 idtype53 = type_nullable__nitc__MMethod.id;
538 if(var50 == NULL) {
539 var51 = 1;
540 } else {
541 if(cltype52 >= var50->type->table_size) {
542 var51 = 0;
543 } else {
544 var51 = var50->type->type_table[cltype52] == idtype53;
545 }
546 }
547 if (unlikely(!var51)) {
548 var_class_name = var50 == NULL ? "null" : var50->type->name;
549 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
550 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 1979);
551 fatal_exit(1);
552 }
553 var_candidate = var50;
554 if (var_candidate == NULL) {
555 var54 = 1; /* is null */
556 } else {
557 var54 = 0; /* arg is null but recv is not */
558 }
559 if (0) {
560 { /* Inline kernel#Object#== (var_candidate,((val*)NULL)) on <var_candidate:nullable MMethod> */
561 var_other57 = ((val*)NULL);
562 {
563 { /* Inline kernel#Object#is_same_instance (var_candidate,var_other57) on <var_candidate:nullable MMethod(MMethod)> */
564 var60 = var_candidate == var_other57;
565 var58 = var60;
566 goto RET_LABEL59;
567 RET_LABEL59:(void)0;
568 }
569 }
570 var55 = var58;
571 goto RET_LABEL56;
572 RET_LABEL56:(void)0;
573 }
574 var54 = var55;
575 }
576 if (var54){
577 {
578 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
579 var63 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
580 if (unlikely(var63 == NULL)) {
581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
582 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
583 fatal_exit(1);
584 }
585 var61 = var63;
586 RET_LABEL62:(void)0;
587 }
588 }
589 {
590 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var61) on <var61:ModelBuilder> */
591 var66 = var61->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var61:ModelBuilder> */
592 if (unlikely(var66 == NULL)) {
593 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
594 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
595 fatal_exit(1);
596 }
597 var64 = var66;
598 RET_LABEL65:(void)0;
599 }
600 }
601 {
602 { /* Inline toolcontext#ToolContext#error_count (var64) on <var64:ToolContext> */
603 var69 = var64->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <var64:ToolContext> */
604 var67 = var69;
605 RET_LABEL68:(void)0;
606 }
607 }
608 {
609 { /* Inline kernel#Int#> (var67,var_errcount) on <var67:Int> */
610 /* Covariant cast for argument 0 (i) <var_errcount:Int> isa OTHER */
611 /* <var_errcount:Int> isa OTHER */
612 var72 = 1; /* easy <var_errcount:Int> isa OTHER*/
613 if (unlikely(!var72)) {
614 var_class_name75 = type_core__Int.name;
615 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name75);
616 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
617 fatal_exit(1);
618 }
619 var76 = var67 > var_errcount;
620 var70 = var76;
621 goto RET_LABEL71;
622 RET_LABEL71:(void)0;
623 }
624 }
625 if (var70){
626 goto RET_LABEL;
627 } else {
628 }
629 goto BREAK_label77;
630 } else {
631 }
632 if (var_superprop == NULL) {
633 var79 = 0; /* is null */
634 } else {
635 var79 = 1; /* arg is null and recv is not */
636 }
637 if (0) {
638 { /* Inline kernel#Object#!= (var_superprop,((val*)NULL)) on <var_superprop:nullable MMethodDef> */
639 var_other = ((val*)NULL);
640 {
641 var82 = ((short int(*)(val* self, val* p0))(var_superprop->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_superprop, var_other); /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/
642 }
643 var83 = !var82;
644 var80 = var83;
645 goto RET_LABEL81;
646 RET_LABEL81:(void)0;
647 }
648 var79 = var80;
649 }
650 var_84 = var79;
651 if (var79){
652 {
653 { /* Inline model#MMethod#is_root_init (var_candidate) on <var_candidate:nullable MMethod(MMethod)> */
654 var87 = var_candidate->attrs[COLOR_nitc__model__MMethod___is_root_init].s; /* _is_root_init on <var_candidate:nullable MMethod(MMethod)> */
655 var85 = var87;
656 RET_LABEL86:(void)0;
657 }
658 }
659 var78 = var85;
660 } else {
661 var78 = var_84;
662 }
663 if (var78){
664 goto BREAK_label77;
665 } else {
666 }
667 if (var_superprop == NULL) {
668 var90 = 0; /* is null */
669 } else {
670 var90 = 1; /* arg is null and recv is not */
671 }
672 if (0) {
673 { /* Inline kernel#Object#!= (var_superprop,((val*)NULL)) on <var_superprop:nullable MMethodDef> */
674 var_other = ((val*)NULL);
675 {
676 var93 = ((short int(*)(val* self, val* p0))(var_superprop->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_superprop, var_other); /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/
677 }
678 var94 = !var93;
679 var91 = var94;
680 goto RET_LABEL92;
681 RET_LABEL92:(void)0;
682 }
683 var90 = var91;
684 }
685 var_95 = var90;
686 if (var90){
687 {
688 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
689 var98 = var_superprop->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
690 if (unlikely(var98 == NULL)) {
691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
692 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
693 fatal_exit(1);
694 }
695 var96 = var98;
696 RET_LABEL97:(void)0;
697 }
698 }
699 {
700 { /* Inline kernel#Object#!= (var96,var_candidate) on <var96:MProperty(MMethod)> */
701 var_other = var_candidate;
702 {
703 var101 = ((short int(*)(val* self, val* p0))(var96->class->vft[COLOR_core__kernel__Object___61d_61d]))(var96, var_other); /* == on <var96:MProperty(MMethod)>*/
704 }
705 var102 = !var101;
706 var99 = var102;
707 goto RET_LABEL100;
708 RET_LABEL100:(void)0;
709 }
710 }
711 var89 = var99;
712 } else {
713 var89 = var_95;
714 }
715 var_103 = var89;
716 if (var89){
717 {
718 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
719 var106 = var_superprop->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
720 if (unlikely(var106 == NULL)) {
721 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
722 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
723 fatal_exit(1);
724 }
725 var104 = var106;
726 RET_LABEL105:(void)0;
727 }
728 }
729 {
730 { /* Inline model#MMethod#is_root_init (var104) on <var104:MProperty(MMethod)> */
731 var109 = var104->attrs[COLOR_nitc__model__MMethod___is_root_init].s; /* _is_root_init on <var104:MProperty(MMethod)> */
732 var107 = var109;
733 RET_LABEL108:(void)0;
734 }
735 }
736 var110 = !var107;
737 var88 = var110;
738 } else {
739 var88 = var_103;
740 }
741 if (var88){
742 if (unlikely(varonce==NULL)) {
743 var111 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
744 if (likely(varonce112!=NULL)) {
745 var113 = varonce112;
746 } else {
747 var114 = "Error: conflicting super constructor to call for `";
748 var115 = core__flat___NativeString___to_s_full(var114, 50l, 50l);
749 var113 = var115;
750 varonce112 = var113;
751 }
752 ((struct instance_core__NativeArray*)var111)->values[0]=var113;
753 if (likely(varonce116!=NULL)) {
754 var117 = varonce116;
755 } else {
756 var118 = "`: `";
757 var119 = core__flat___NativeString___to_s_full(var118, 4l, 4l);
758 var117 = var119;
759 varonce116 = var117;
760 }
761 ((struct instance_core__NativeArray*)var111)->values[2]=var117;
762 if (likely(varonce120!=NULL)) {
763 var121 = varonce120;
764 } else {
765 var122 = "`, `";
766 var123 = core__flat___NativeString___to_s_full(var122, 4l, 4l);
767 var121 = var123;
768 varonce120 = var121;
769 }
770 ((struct instance_core__NativeArray*)var111)->values[4]=var121;
771 if (likely(varonce124!=NULL)) {
772 var125 = varonce124;
773 } else {
774 var126 = "`";
775 var127 = core__flat___NativeString___to_s_full(var126, 1l, 1l);
776 var125 = var127;
777 varonce124 = var125;
778 }
779 ((struct instance_core__NativeArray*)var111)->values[6]=var125;
780 } else {
781 var111 = varonce;
782 varonce = NULL;
783 }
784 {
785 var128 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MMethod>*/
786 }
787 ((struct instance_core__NativeArray*)var111)->values[1]=var128;
788 {
789 var129 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var_candidate);
790 }
791 ((struct instance_core__NativeArray*)var111)->values[3]=var129;
792 {
793 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
794 var132 = var_superprop->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
795 if (unlikely(var132 == NULL)) {
796 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
797 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
798 fatal_exit(1);
799 }
800 var130 = var132;
801 RET_LABEL131:(void)0;
802 }
803 }
804 {
805 var133 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var130);
806 }
807 ((struct instance_core__NativeArray*)var111)->values[5]=var133;
808 {
809 var134 = ((val*(*)(val* self))(var111->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var111); /* native_to_s on <var111:NativeArray[String]>*/
810 }
811 varonce = var111;
812 {
813 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var134); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
814 }
815 goto RET_LABEL;
816 } else {
817 }
818 {
819 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
820 var137 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
821 if (unlikely(var137 == NULL)) {
822 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
823 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
824 fatal_exit(1);
825 }
826 var135 = var137;
827 RET_LABEL136:(void)0;
828 }
829 }
830 {
831 var138 = nitc___nitc__MProperty___lookup_definitions(var_candidate, var135, var_anchor);
832 }
833 var_candidatedefs = var138;
834 if (var_superprop == NULL) {
835 var140 = 0; /* is null */
836 } else {
837 var140 = 1; /* arg is null and recv is not */
838 }
839 if (0) {
840 { /* Inline kernel#Object#!= (var_superprop,((val*)NULL)) on <var_superprop:nullable MMethodDef> */
841 var_other = ((val*)NULL);
842 {
843 var143 = ((short int(*)(val* self, val* p0))(var_superprop->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_superprop, var_other); /* == on <var_superprop:nullable MMethodDef(MMethodDef)>*/
844 }
845 var144 = !var143;
846 var141 = var144;
847 goto RET_LABEL142;
848 RET_LABEL142:(void)0;
849 }
850 var140 = var141;
851 }
852 var_145 = var140;
853 if (var140){
854 {
855 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
856 var148 = var_superprop->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
857 if (unlikely(var148 == NULL)) {
858 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
859 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
860 fatal_exit(1);
861 }
862 var146 = var148;
863 RET_LABEL147:(void)0;
864 }
865 }
866 {
867 { /* Inline kernel#Object#== (var146,var_candidate) on <var146:MProperty(MMethod)> */
868 var_other57 = var_candidate;
869 {
870 { /* Inline kernel#Object#is_same_instance (var146,var_other57) on <var146:MProperty(MMethod)> */
871 var153 = var146 == var_other57;
872 var151 = var153;
873 goto RET_LABEL152;
874 RET_LABEL152:(void)0;
875 }
876 }
877 var149 = var151;
878 goto RET_LABEL150;
879 RET_LABEL150:(void)0;
880 }
881 }
882 var139 = var149;
883 } else {
884 var139 = var_145;
885 }
886 if (var139){
887 {
888 var154 = core___core__SequenceRead___Collection__first(var_candidatedefs);
889 }
890 {
891 { /* Inline kernel#Object#== (var_superprop,var154) on <var_superprop:nullable MMethodDef(MMethodDef)> */
892 var_other57 = var154;
893 {
894 { /* Inline kernel#Object#is_same_instance (var_superprop,var_other57) on <var_superprop:nullable MMethodDef(MMethodDef)> */
895 var159 = var_superprop == var_other57;
896 var157 = var159;
897 goto RET_LABEL158;
898 RET_LABEL158:(void)0;
899 }
900 }
901 var155 = var157;
902 goto RET_LABEL156;
903 RET_LABEL156:(void)0;
904 }
905 }
906 if (var155){
907 goto BREAK_label77;
908 } else {
909 }
910 {
911 core___core__Array___core__abstract_collection__SimpleCollection__add(var_candidatedefs, var_superprop); /* Direct call array#Array#add on <var_candidatedefs:Array[MMethodDef]>*/
912 }
913 } else {
914 }
915 {
916 { /* Inline array#AbstractArrayRead#length (var_candidatedefs) on <var_candidatedefs:Array[MMethodDef]> */
917 var162 = var_candidatedefs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_candidatedefs:Array[MMethodDef]> */
918 var160 = var162;
919 RET_LABEL161:(void)0;
920 }
921 }
922 {
923 { /* Inline kernel#Int#> (var160,1l) on <var160:Int> */
924 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
925 /* <1l:Int> isa OTHER */
926 var165 = 1; /* easy <1l:Int> isa OTHER*/
927 if (unlikely(!var165)) {
928 var_class_name168 = type_core__Int.name;
929 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name168);
930 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
931 fatal_exit(1);
932 }
933 var169 = var160 > 1l;
934 var163 = var169;
935 goto RET_LABEL164;
936 RET_LABEL164:(void)0;
937 }
938 }
939 if (var163){
940 if (unlikely(varonce170==NULL)) {
941 var171 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
942 if (likely(varonce172!=NULL)) {
943 var173 = varonce172;
944 } else {
945 var174 = "Error: conflicting property definitions for property `";
946 var175 = core__flat___NativeString___to_s_full(var174, 54l, 54l);
947 var173 = var175;
948 varonce172 = var173;
949 }
950 ((struct instance_core__NativeArray*)var171)->values[0]=var173;
951 if (likely(varonce176!=NULL)) {
952 var177 = varonce176;
953 } else {
954 var178 = "` in `";
955 var179 = core__flat___NativeString___to_s_full(var178, 6l, 6l);
956 var177 = var179;
957 varonce176 = var177;
958 }
959 ((struct instance_core__NativeArray*)var171)->values[2]=var177;
960 if (likely(varonce180!=NULL)) {
961 var181 = varonce180;
962 } else {
963 var182 = "`: ";
964 var183 = core__flat___NativeString___to_s_full(var182, 3l, 3l);
965 var181 = var183;
966 varonce180 = var181;
967 }
968 ((struct instance_core__NativeArray*)var171)->values[4]=var181;
969 } else {
970 var171 = varonce170;
971 varonce170 = NULL;
972 }
973 {
974 var184 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MMethod>*/
975 }
976 ((struct instance_core__NativeArray*)var171)->values[1]=var184;
977 {
978 var185 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MType)>*/
979 }
980 ((struct instance_core__NativeArray*)var171)->values[3]=var185;
981 if (likely(varonce186!=NULL)) {
982 var187 = varonce186;
983 } else {
984 var188 = ", ";
985 var189 = core__flat___NativeString___to_s_full(var188, 2l, 2l);
986 var187 = var189;
987 varonce186 = var187;
988 }
989 {
990 var190 = core__abstract_text___Collection___join(var_candidatedefs, var187);
991 }
992 ((struct instance_core__NativeArray*)var171)->values[5]=var190;
993 {
994 var191 = ((val*(*)(val* self))(var171->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var171); /* native_to_s on <var171:NativeArray[String]>*/
995 }
996 varonce170 = var171;
997 {
998 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var191); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
999 }
1000 goto RET_LABEL;
1001 } else {
1002 }
1003 {
1004 var192 = core___core__SequenceRead___Collection__first(var_candidatedefs);
1005 }
1006 var_superprop = var192;
1007 BREAK_label77: (void)0;
1008 {
1009 ((void(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_31); /* next on <var_31:IndexedIterator[MClassType]>*/
1010 }
1011 }
1012 BREAK_label: (void)0;
1013 {
1014 ((void(*)(val* self))((((long)var_31&3)?class_info[((long)var_31&3)]:var_31->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_31); /* finish on <var_31:IndexedIterator[MClassType]>*/
1015 }
1016 if (var_superprop == NULL) {
1017 var193 = 1; /* is null */
1018 } else {
1019 var193 = 0; /* arg is null but recv is not */
1020 }
1021 if (0) {
1022 { /* Inline kernel#Object#== (var_superprop,((val*)NULL)) on <var_superprop:nullable MMethodDef> */
1023 var_other57 = ((val*)NULL);
1024 {
1025 { /* Inline kernel#Object#is_same_instance (var_superprop,var_other57) on <var_superprop:nullable MMethodDef(MMethodDef)> */
1026 var198 = var_superprop == var_other57;
1027 var196 = var198;
1028 goto RET_LABEL197;
1029 RET_LABEL197:(void)0;
1030 }
1031 }
1032 var194 = var196;
1033 goto RET_LABEL195;
1034 RET_LABEL195:(void)0;
1035 }
1036 var193 = var194;
1037 }
1038 if (var193){
1039 if (unlikely(varonce199==NULL)) {
1040 var200 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1041 if (likely(varonce201!=NULL)) {
1042 var202 = varonce201;
1043 } else {
1044 var203 = "Error: no super method to call for `";
1045 var204 = core__flat___NativeString___to_s_full(var203, 36l, 36l);
1046 var202 = var204;
1047 varonce201 = var202;
1048 }
1049 ((struct instance_core__NativeArray*)var200)->values[0]=var202;
1050 if (likely(varonce205!=NULL)) {
1051 var206 = varonce205;
1052 } else {
1053 var207 = "`.";
1054 var208 = core__flat___NativeString___to_s_full(var207, 2l, 2l);
1055 var206 = var208;
1056 varonce205 = var206;
1057 }
1058 ((struct instance_core__NativeArray*)var200)->values[2]=var206;
1059 } else {
1060 var200 = varonce199;
1061 varonce199 = NULL;
1062 }
1063 {
1064 var209 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MMethod>*/
1065 }
1066 ((struct instance_core__NativeArray*)var200)->values[1]=var209;
1067 {
1068 var210 = ((val*(*)(val* self))(var200->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var200); /* native_to_s on <var200:NativeArray[String]>*/
1069 }
1070 varonce199 = var200;
1071 {
1072 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var210); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1073 }
1074 goto RET_LABEL;
1075 } else {
1076 }
1077 {
1078 { /* Inline model#MMethodDef#new_msignature (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
1079 var214 = var_superprop->attrs[COLOR_nitc__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_superprop:nullable MMethodDef(MMethodDef)> */
1080 var212 = var214;
1081 RET_LABEL213:(void)0;
1082 }
1083 }
1084 if (var212!=NULL) {
1085 var211 = var212;
1086 } else {
1087 {
1088 { /* Inline model#MMethodDef#msignature (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
1089 var217 = var_superprop->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_superprop:nullable MMethodDef(MMethodDef)> */
1090 var215 = var217;
1091 RET_LABEL216:(void)0;
1092 }
1093 }
1094 if (unlikely(var215 == NULL)) {
1095 PRINT_ERROR("Runtime error: %s", "Cast failed");
1096 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2007);
1097 fatal_exit(1);
1098 }
1099 var211 = var215;
1100 }
1101 var_msignature = var211;
1102 {
1103 var218 = nitc__typing___nitc__typing__TypeVisitor___resolve_for(var_v, var_msignature, var_recvtype, 1);
1104 }
1105 /* <var218:MType> isa MSignature */
1106 cltype220 = type_nitc__MSignature.color;
1107 idtype221 = type_nitc__MSignature.id;
1108 if(cltype220 >= var218->type->table_size) {
1109 var219 = 0;
1110 } else {
1111 var219 = var218->type->type_table[cltype220] == idtype221;
1112 }
1113 if (unlikely(!var219)) {
1114 var_class_name222 = var218 == NULL ? "null" : var218->type->name;
1115 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name222);
1116 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2008);
1117 fatal_exit(1);
1118 }
1119 var_msignature = var218;
1120 var223 = NEW_nitc__CallSite(&type_nitc__CallSite);
1121 {
1122 var224 = nitc___nitc__ANode___hot_location(self);
1123 }
1124 {
1125 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
1126 var227 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
1127 if (unlikely(var227 == NULL)) {
1128 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1129 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
1130 fatal_exit(1);
1131 }
1132 var225 = var227;
1133 RET_LABEL226:(void)0;
1134 }
1135 }
1136 {
1137 { /* Inline typing#TypeVisitor#anchor (var_v) on <var_v:TypeVisitor> */
1138 var230 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <var_v:TypeVisitor> */
1139 var228 = var230;
1140 RET_LABEL229:(void)0;
1141 }
1142 }
1143 {
1144 { /* Inline model#MPropDef#mproperty (var_superprop) on <var_superprop:nullable MMethodDef(MMethodDef)> */
1145 var233 = var_superprop->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_superprop:nullable MMethodDef(MMethodDef)> */
1146 if (unlikely(var233 == NULL)) {
1147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1148 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
1149 fatal_exit(1);
1150 }
1151 var231 = var233;
1152 RET_LABEL232:(void)0;
1153 }
1154 }
1155 {
1156 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__location_61d]))(var223, var224); /* location= on <var223:CallSite>*/
1157 }
1158 {
1159 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__recv_61d]))(var223, var_recvtype); /* recv= on <var223:CallSite>*/
1160 }
1161 {
1162 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__mmodule_61d]))(var223, var225); /* mmodule= on <var223:CallSite>*/
1163 }
1164 {
1165 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__anchor_61d]))(var223, var228); /* anchor= on <var223:CallSite>*/
1166 }
1167 {
1168 ((void(*)(val* self, short int p0))(var223->class->vft[COLOR_nitc__typing__CallSite__recv_is_self_61d]))(var223, 1); /* recv_is_self= on <var223:CallSite>*/
1169 }
1170 {
1171 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__mproperty_61d]))(var223, var231); /* mproperty= on <var223:CallSite>*/
1172 }
1173 {
1174 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__mpropdef_61d]))(var223, var_superprop); /* mpropdef= on <var223:CallSite>*/
1175 }
1176 {
1177 ((void(*)(val* self, val* p0))(var223->class->vft[COLOR_nitc__typing__CallSite__msignature_61d]))(var223, var_msignature); /* msignature= on <var223:CallSite>*/
1178 }
1179 {
1180 ((void(*)(val* self, short int p0))(var223->class->vft[COLOR_nitc__typing__CallSite__erasure_cast_61d]))(var223, 0); /* erasure_cast= on <var223:CallSite>*/
1181 }
1182 {
1183 ((void(*)(val* self))(var223->class->vft[COLOR_core__kernel__Object__init]))(var223); /* init on <var223:CallSite>*/
1184 }
1185 var_callsite = var223;
1186 {
1187 { /* Inline typing#ASuperExpr#callsite= (self,var_callsite) on <self:ASuperExpr> */
1188 self->attrs[COLOR_nitc__typing__ASuperExpr___callsite].val = var_callsite; /* _callsite on <self:ASuperExpr> */
1189 RET_LABEL234:(void)0;
1190 }
1191 }
1192 {
1193 { /* Inline parser_nodes#ASuperExpr#n_args (self) on <self:ASuperExpr> */
1194 var237 = self->attrs[COLOR_nitc__parser_nodes__ASuperExpr___n_args].val; /* _n_args on <self:ASuperExpr> */
1195 if (unlikely(var237 == NULL)) {
1196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
1197 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2348);
1198 fatal_exit(1);
1199 }
1200 var235 = var237;
1201 RET_LABEL236:(void)0;
1202 }
1203 }
1204 {
1205 var238 = nitc__typing___AExprs___to_a(var235);
1206 }
1207 var_args = var238;
1208 {
1209 { /* Inline array#AbstractArrayRead#length (var_args) on <var_args:Array[AExpr]> */
1210 var241 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
1211 var239 = var241;
1212 RET_LABEL240:(void)0;
1213 }
1214 }
1215 {
1216 { /* Inline kernel#Int#> (var239,0l) on <var239:Int> */
1217 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1218 /* <0l:Int> isa OTHER */
1219 var244 = 1; /* easy <0l:Int> isa OTHER*/
1220 if (unlikely(!var244)) {
1221 var_class_name247 = type_core__Int.name;
1222 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name247);
1223 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
1224 fatal_exit(1);
1225 }
1226 var248 = var239 > 0l;
1227 var242 = var248;
1228 goto RET_LABEL243;
1229 RET_LABEL243:(void)0;
1230 }
1231 }
1232 if (var242){
1233 {
1234 var249 = nitc___nitc__CallSite___check_signature(var_callsite, var_v, self, var_args);
1235 }
1236 } else {
1237 {
1238 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
1239 var252 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
1240 var250 = var252;
1241 RET_LABEL251:(void)0;
1242 }
1243 }
1244 if (var250 == NULL) {
1245 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1246 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2018);
1247 fatal_exit(1);
1248 } else {
1249 var253 = nitc___nitc__MSignature___arity(var250);
1250 }
1251 {
1252 var254 = nitc___nitc__MSignature___arity(var_msignature);
1253 }
1254 {
1255 { /* Inline kernel#Int#< (var253,var254) on <var253:Int> */
1256 /* Covariant cast for argument 0 (i) <var254:Int> isa OTHER */
1257 /* <var254:Int> isa OTHER */
1258 var257 = 1; /* easy <var254:Int> isa OTHER*/
1259 if (unlikely(!var257)) {
1260 var_class_name260 = type_core__Int.name;
1261 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name260);
1262 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1263 fatal_exit(1);
1264 }
1265 var261 = var253 < var254;
1266 var255 = var261;
1267 goto RET_LABEL256;
1268 RET_LABEL256:(void)0;
1269 }
1270 }
1271 if (var255){
1272 if (unlikely(varonce262==NULL)) {
1273 var263 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
1274 if (likely(varonce264!=NULL)) {
1275 var265 = varonce264;
1276 } else {
1277 var266 = "Error: not enough implicit arguments to pass. Got `";
1278 var267 = core__flat___NativeString___to_s_full(var266, 51l, 51l);
1279 var265 = var267;
1280 varonce264 = var265;
1281 }
1282 ((struct instance_core__NativeArray*)var263)->values[0]=var265;
1283 if (likely(varonce268!=NULL)) {
1284 var269 = varonce268;
1285 } else {
1286 var270 = "`, expected at least `";
1287 var271 = core__flat___NativeString___to_s_full(var270, 22l, 22l);
1288 var269 = var271;
1289 varonce268 = var269;
1290 }
1291 ((struct instance_core__NativeArray*)var263)->values[2]=var269;
1292 if (likely(varonce272!=NULL)) {
1293 var273 = varonce272;
1294 } else {
1295 var274 = "`. Signature is `";
1296 var275 = core__flat___NativeString___to_s_full(var274, 17l, 17l);
1297 var273 = var275;
1298 varonce272 = var273;
1299 }
1300 ((struct instance_core__NativeArray*)var263)->values[4]=var273;
1301 if (likely(varonce276!=NULL)) {
1302 var277 = varonce276;
1303 } else {
1304 var278 = "`.";
1305 var279 = core__flat___NativeString___to_s_full(var278, 2l, 2l);
1306 var277 = var279;
1307 varonce276 = var277;
1308 }
1309 ((struct instance_core__NativeArray*)var263)->values[6]=var277;
1310 } else {
1311 var263 = varonce262;
1312 varonce262 = NULL;
1313 }
1314 {
1315 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
1316 var282 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
1317 var280 = var282;
1318 RET_LABEL281:(void)0;
1319 }
1320 }
1321 if (var280 == NULL) {
1322 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1323 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2019);
1324 fatal_exit(1);
1325 } else {
1326 var283 = nitc___nitc__MSignature___arity(var280);
1327 }
1328 var284 = core__flat___Int___core__abstract_text__Object__to_s(var283);
1329 ((struct instance_core__NativeArray*)var263)->values[1]=var284;
1330 {
1331 var285 = nitc___nitc__MSignature___arity(var_msignature);
1332 }
1333 var286 = core__flat___Int___core__abstract_text__Object__to_s(var285);
1334 ((struct instance_core__NativeArray*)var263)->values[3]=var286;
1335 {
1336 var287 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
1337 }
1338 ((struct instance_core__NativeArray*)var263)->values[5]=var287;
1339 {
1340 var288 = ((val*(*)(val* self))(var263->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var263); /* native_to_s on <var263:NativeArray[String]>*/
1341 }
1342 varonce262 = var263;
1343 {
1344 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var288); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1345 }
1346 goto RET_LABEL;
1347 } else {
1348 }
1349 var_i = 0l;
1350 {
1351 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
1352 var291 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
1353 if (unlikely(var291 == NULL)) {
1354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1355 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
1356 fatal_exit(1);
1357 }
1358 var289 = var291;
1359 RET_LABEL290:(void)0;
1360 }
1361 }
1362 var_292 = var289;
1363 {
1364 var293 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_292);
1365 }
1366 var_294 = var293;
1367 for(;;) {
1368 {
1369 var295 = ((short int(*)(val* self))((((long)var_294&3)?class_info[((long)var_294&3)]:var_294->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_294); /* is_ok on <var_294:IndexedIterator[MParameter]>*/
1370 }
1371 if (var295){
1372 } else {
1373 goto BREAK_label296;
1374 }
1375 {
1376 var297 = ((val*(*)(val* self))((((long)var_294&3)?class_info[((long)var_294&3)]:var_294->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_294); /* item on <var_294:IndexedIterator[MParameter]>*/
1377 }
1378 var_sp = var297;
1379 {
1380 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
1381 var300 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable MPropDef(MMethodDef)> */
1382 var298 = var300;
1383 RET_LABEL299:(void)0;
1384 }
1385 }
1386 if (var298 == NULL) {
1387 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1388 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2025);
1389 fatal_exit(1);
1390 } else {
1391 { /* Inline model#MSignature#mparameters (var298) on <var298:nullable MSignature> */
1392 if (unlikely(var298 == NULL)) {
1393 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1394 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
1395 fatal_exit(1);
1396 }
1397 var303 = var298->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var298:nullable MSignature> */
1398 if (unlikely(var303 == NULL)) {
1399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1400 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
1401 fatal_exit(1);
1402 }
1403 var301 = var303;
1404 RET_LABEL302:(void)0;
1405 }
1406 }
1407 {
1408 var304 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var301, var_i);
1409 }
1410 var_p = var304;
1411 {
1412 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
1413 var307 = var_p->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
1414 if (unlikely(var307 == NULL)) {
1415 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1416 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1900);
1417 fatal_exit(1);
1418 }
1419 var305 = var307;
1420 RET_LABEL306:(void)0;
1421 }
1422 }
1423 {
1424 { /* Inline model#MParameter#mtype (var_sp) on <var_sp:MParameter> */
1425 var310 = var_sp->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_sp:MParameter> */
1426 if (unlikely(var310 == NULL)) {
1427 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1428 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1900);
1429 fatal_exit(1);
1430 }
1431 var308 = var310;
1432 RET_LABEL309:(void)0;
1433 }
1434 }
1435 {
1436 var311 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(var_v, var305, var308);
1437 }
1438 var312 = !var311;
1439 if (var312){
1440 if (unlikely(varonce313==NULL)) {
1441 var314 = NEW_core__NativeArray(10l, &type_core__NativeArray__core__String);
1442 if (likely(varonce315!=NULL)) {
1443 var316 = varonce315;
1444 } else {
1445 var317 = "Type Error: expected argument #";
1446 var318 = core__flat___NativeString___to_s_full(var317, 31l, 31l);
1447 var316 = var318;
1448 varonce315 = var316;
1449 }
1450 ((struct instance_core__NativeArray*)var314)->values[0]=var316;
1451 if (likely(varonce319!=NULL)) {
1452 var320 = varonce319;
1453 } else {
1454 var321 = " of type `";
1455 var322 = core__flat___NativeString___to_s_full(var321, 10l, 10l);
1456 var320 = var322;
1457 varonce319 = var320;
1458 }
1459 ((struct instance_core__NativeArray*)var314)->values[2]=var320;
1460 if (likely(varonce323!=NULL)) {
1461 var324 = varonce323;
1462 } else {
1463 var325 = "`, got implicit argument `";
1464 var326 = core__flat___NativeString___to_s_full(var325, 26l, 26l);
1465 var324 = var326;
1466 varonce323 = var324;
1467 }
1468 ((struct instance_core__NativeArray*)var314)->values[4]=var324;
1469 if (likely(varonce327!=NULL)) {
1470 var328 = varonce327;
1471 } else {
1472 var329 = "` of type `";
1473 var330 = core__flat___NativeString___to_s_full(var329, 11l, 11l);
1474 var328 = var330;
1475 varonce327 = var328;
1476 }
1477 ((struct instance_core__NativeArray*)var314)->values[6]=var328;
1478 if (likely(varonce331!=NULL)) {
1479 var332 = varonce331;
1480 } else {
1481 var333 = "`. Signature is ";
1482 var334 = core__flat___NativeString___to_s_full(var333, 16l, 16l);
1483 var332 = var334;
1484 varonce331 = var332;
1485 }
1486 ((struct instance_core__NativeArray*)var314)->values[8]=var332;
1487 } else {
1488 var314 = varonce313;
1489 varonce313 = NULL;
1490 }
1491 var335 = core__flat___Int___core__abstract_text__Object__to_s(var_i);
1492 ((struct instance_core__NativeArray*)var314)->values[1]=var335;
1493 {
1494 { /* Inline model#MParameter#mtype (var_sp) on <var_sp:MParameter> */
1495 var338 = var_sp->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_sp:MParameter> */
1496 if (unlikely(var338 == NULL)) {
1497 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1498 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1900);
1499 fatal_exit(1);
1500 }
1501 var336 = var338;
1502 RET_LABEL337:(void)0;
1503 }
1504 }
1505 {
1506 var339 = ((val*(*)(val* self))(var336->class->vft[COLOR_core__abstract_text__Object__to_s]))(var336); /* to_s on <var336:MType>*/
1507 }
1508 ((struct instance_core__NativeArray*)var314)->values[3]=var339;
1509 {
1510 { /* Inline model#MParameter#name (var_p) on <var_p:MParameter> */
1511 var342 = var_p->attrs[COLOR_nitc__model__MParameter___name].val; /* _name on <var_p:MParameter> */
1512 if (unlikely(var342 == NULL)) {
1513 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1514 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1897);
1515 fatal_exit(1);
1516 }
1517 var340 = var342;
1518 RET_LABEL341:(void)0;
1519 }
1520 }
1521 ((struct instance_core__NativeArray*)var314)->values[5]=var340;
1522 {
1523 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
1524 var345 = var_p->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
1525 if (unlikely(var345 == NULL)) {
1526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1527 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1900);
1528 fatal_exit(1);
1529 }
1530 var343 = var345;
1531 RET_LABEL344:(void)0;
1532 }
1533 }
1534 {
1535 var346 = ((val*(*)(val* self))(var343->class->vft[COLOR_core__abstract_text__Object__to_s]))(var343); /* to_s on <var343:MType>*/
1536 }
1537 ((struct instance_core__NativeArray*)var314)->values[7]=var346;
1538 {
1539 var347 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
1540 }
1541 ((struct instance_core__NativeArray*)var314)->values[9]=var347;
1542 {
1543 var348 = ((val*(*)(val* self))(var314->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var314); /* native_to_s on <var314:NativeArray[String]>*/
1544 }
1545 varonce313 = var314;
1546 {
1547 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var348); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1548 }
1549 goto RET_LABEL;
1550 } else {
1551 }
1552 {
1553 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
1554 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1555 /* <1l:Int> isa OTHER */
1556 var351 = 1; /* easy <1l:Int> isa OTHER*/
1557 if (unlikely(!var351)) {
1558 var_class_name354 = type_core__Int.name;
1559 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name354);
1560 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1561 fatal_exit(1);
1562 }
1563 var355 = var_i + 1l;
1564 var349 = var355;
1565 goto RET_LABEL350;
1566 RET_LABEL350:(void)0;
1567 }
1568 }
1569 var_i = var349;
1570 {
1571 ((void(*)(val* self))((((long)var_294&3)?class_info[((long)var_294&3)]:var_294->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_294); /* next on <var_294:IndexedIterator[MParameter]>*/
1572 }
1573 }
1574 BREAK_label296: (void)0;
1575 {
1576 ((void(*)(val* self))((((long)var_294&3)?class_info[((long)var_294&3)]:var_294->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_294); /* finish on <var_294:IndexedIterator[MParameter]>*/
1577 }
1578 }
1579 {
1580 { /* Inline typing#AExpr#is_typed= (self,1) on <self:ASuperExpr> */
1581 self->attrs[COLOR_nitc__typing__AExpr___is_typed].s = 1; /* _is_typed on <self:ASuperExpr> */
1582 RET_LABEL356:(void)0;
1583 }
1584 }
1585 RET_LABEL:;
1586 }
1587 /* method typing#ANewExpr#callsite for (self: ANewExpr): nullable CallSite */
1588 val* nitc__typing___ANewExpr___callsite(val* self) {
1589 val* var /* : nullable CallSite */;
1590 val* var1 /* : nullable CallSite */;
1591 var1 = self->attrs[COLOR_nitc__typing__ANewExpr___callsite].val; /* _callsite on <self:ANewExpr> */
1592 var = var1;
1593 RET_LABEL:;
1594 return var;
1595 }
1596 /* method typing#ANewExpr#callsite= for (self: ANewExpr, nullable CallSite) */
1597 void nitc__typing___ANewExpr___callsite_61d(val* self, val* p0) {
1598 self->attrs[COLOR_nitc__typing__ANewExpr___callsite].val = p0; /* _callsite on <self:ANewExpr> */
1599 RET_LABEL:;
1600 }
1601 /* method typing#ANewExpr#recvtype for (self: ANewExpr): nullable MClassType */
1602 val* nitc__typing___ANewExpr___recvtype(val* self) {
1603 val* var /* : nullable MClassType */;
1604 val* var1 /* : nullable MClassType */;
1605 var1 = self->attrs[COLOR_nitc__typing__ANewExpr___recvtype].val; /* _recvtype on <self:ANewExpr> */
1606 var = var1;
1607 RET_LABEL:;
1608 return var;
1609 }
1610 /* method typing#ANewExpr#recvtype= for (self: ANewExpr, nullable MClassType) */
1611 void nitc__typing___ANewExpr___recvtype_61d(val* self, val* p0) {
1612 self->attrs[COLOR_nitc__typing__ANewExpr___recvtype].val = p0; /* _recvtype on <self:ANewExpr> */
1613 RET_LABEL:;
1614 }
1615 /* method typing#ANewExpr#accept_typing for (self: ANewExpr, TypeVisitor) */
1616 void nitc__typing___ANewExpr___AExpr__accept_typing(val* self, val* p0) {
1617 val* var_v /* var v: TypeVisitor */;
1618 val* var /* : AType */;
1619 val* var2 /* : AType */;
1620 val* var3 /* : nullable MType */;
1621 val* var_recvtype /* var recvtype: nullable MType */;
1622 short int var4 /* : Bool */;
1623 short int var5 /* : Bool */;
1624 val* var_other /* var other: nullable Object */;
1625 short int var7 /* : Bool */;
1626 short int var9 /* : Bool */;
1627 short int var10 /* : Bool */;
1628 int cltype;
1629 int idtype;
1630 short int var11 /* : Bool */;
1631 short int var12 /* : Bool */;
1632 int cltype13;
1633 int idtype14;
1634 val* var15 /* : NativeArray[String] */;
1635 static val* varonce;
1636 static val* varonce16;
1637 val* var17 /* : String */;
1638 char* var18 /* : NativeString */;
1639 val* var19 /* : String */;
1640 static val* varonce20;
1641 val* var21 /* : String */;
1642 char* var22 /* : NativeString */;
1643 val* var23 /* : String */;
1644 val* var24 /* : String */;
1645 val* var25 /* : String */;
1646 short int var26 /* : Bool */;
1647 int cltype27;
1648 int idtype28;
1649 val* var30 /* : NativeArray[String] */;
1650 static val* varonce29;
1651 static val* varonce31;
1652 val* var32 /* : String */;
1653 char* var33 /* : NativeString */;
1654 val* var34 /* : String */;
1655 static val* varonce35;
1656 val* var36 /* : String */;
1657 char* var37 /* : NativeString */;
1658 val* var38 /* : String */;
1659 val* var39 /* : String */;
1660 val* var40 /* : String */;
1661 val* var42 /* : NativeArray[String] */;
1662 static val* varonce41;
1663 static val* varonce43;
1664 val* var44 /* : String */;
1665 char* var45 /* : NativeString */;
1666 val* var46 /* : String */;
1667 static val* varonce47;
1668 val* var48 /* : String */;
1669 char* var49 /* : NativeString */;
1670 val* var50 /* : String */;
1671 val* var51 /* : String */;
1672 val* var52 /* : String */;
1673 val* var54 /* : MClass */;
1674 val* var56 /* : MClass */;
1675 val* var57 /* : MClassKind */;
1676 val* var59 /* : MClassKind */;
1677 val* var_kind /* var kind: MClassKind */;
1678 val* var60 /* : nullable AQid */;
1679 val* var62 /* : nullable AQid */;
1680 val* var_nqid /* var nqid: nullable AQid */;
1681 short int var63 /* : Bool */;
1682 short int var64 /* : Bool */;
1683 val* var_other66 /* var other: nullable Object */;
1684 short int var67 /* : Bool */;
1685 short int var68 /* : Bool */;
1686 val* var69 /* : TId */;
1687 val* var71 /* : TId */;
1688 val* var72 /* : String */;
1689 val* var_name /* var name: String */;
1690 val* var_node /* var node: ANode */;
1691 static val* varonce73;
1692 val* var74 /* : String */;
1693 char* var75 /* : NativeString */;
1694 val* var76 /* : String */;
1695 val* var77 /* : TKwnew */;
1696 val* var79 /* : TKwnew */;
1697 static val* varonce80;
1698 val* var81 /* : String */;
1699 char* var82 /* : NativeString */;
1700 val* var83 /* : String */;
1701 short int var84 /* : Bool */;
1702 val* var85 /* : Sys */;
1703 val* var86 /* : MClassKind */;
1704 short int var87 /* : Bool */;
1705 short int var89 /* : Bool */;
1706 short int var90 /* : Bool */;
1707 val* var92 /* : NativeArray[String] */;
1708 static val* varonce91;
1709 static val* varonce93;
1710 val* var94 /* : String */;
1711 char* var95 /* : NativeString */;
1712 val* var96 /* : String */;
1713 static val* varonce97;
1714 val* var98 /* : String */;
1715 char* var99 /* : NativeString */;
1716 val* var100 /* : String */;
1717 static val* varonce101;
1718 val* var102 /* : String */;
1719 char* var103 /* : NativeString */;
1720 val* var104 /* : String */;
1721 val* var105 /* : String */;
1722 val* var106 /* : String */;
1723 val* var107 /* : String */;
1724 val* var108 /* : AExprs */;
1725 val* var110 /* : AExprs */;
1726 val* var111 /* : ANodes[AExpr] */;
1727 val* var113 /* : ANodes[AExpr] */;
1728 short int var114 /* : Bool */;
1729 val* var115 /* : AExprs */;
1730 val* var117 /* : AExprs */;
1731 static val* varonce118;
1732 val* var119 /* : String */;
1733 char* var120 /* : NativeString */;
1734 val* var121 /* : String */;
1735 val* var123 /* : nullable CallSite */;
1736 val* var_callsite /* var callsite: nullable CallSite */;
1737 short int var124 /* : Bool */;
1738 short int var125 /* : Bool */;
1739 short int var127 /* : Bool */;
1740 short int var129 /* : Bool */;
1741 val* var130 /* : MMethod */;
1742 val* var132 /* : MMethod */;
1743 short int var133 /* : Bool */;
1744 short int var135 /* : Bool */;
1745 short int var136 /* : Bool */;
1746 val* var137 /* : Sys */;
1747 val* var138 /* : MClassKind */;
1748 short int var139 /* : Bool */;
1749 short int var141 /* : Bool */;
1750 short int var142 /* : Bool */;
1751 val* var144 /* : NativeArray[String] */;
1752 static val* varonce143;
1753 static val* varonce145;
1754 val* var146 /* : String */;
1755 char* var147 /* : NativeString */;
1756 val* var148 /* : String */;
1757 static val* varonce149;
1758 val* var150 /* : String */;
1759 char* var151 /* : NativeString */;
1760 val* var152 /* : String */;
1761 static val* varonce153;
1762 val* var154 /* : String */;
1763 char* var155 /* : NativeString */;
1764 val* var156 /* : String */;
1765 val* var157 /* : String */;
1766 val* var158 /* : String */;
1767 val* var159 /* : String */;
1768 val* var161 /* : MSignature */;
1769 val* var163 /* : MSignature */;
1770 val* var164 /* : nullable MType */;
1771 val* var166 /* : nullable MType */;
1772 val* var168 /* : nullable MType */;
1773 val* var170 /* : nullable MType */;
1774 short int var171 /* : Bool */;
1775 short int var172 /* : Bool */;
1776 short int var174 /* : Bool */;
1777 short int var175 /* : Bool */;
1778 val* var177 /* : MMethod */;
1779 val* var179 /* : MMethod */;
1780 val* var180 /* : MClass */;
1781 val* var182 /* : MClass */;
1782 short int var183 /* : Bool */;
1783 short int var184 /* : Bool */;
1784 val* var186 /* : NativeArray[String] */;
1785 static val* varonce185;
1786 static val* varonce187;
1787 val* var188 /* : String */;
1788 char* var189 /* : NativeString */;
1789 val* var190 /* : String */;
1790 static val* varonce191;
1791 val* var192 /* : String */;
1792 char* var193 /* : NativeString */;
1793 val* var194 /* : String */;
1794 val* var195 /* : String */;
1795 val* var196 /* : AExprs */;
1796 val* var198 /* : AExprs */;
1797 val* var199 /* : Array[AExpr] */;
1798 val* var_args /* var args: Array[AExpr] */;
1799 short int var200 /* : Bool */;
1800 var_v = p0;
1801 {
1802 { /* Inline parser_nodes#ANewExpr#n_type (self) on <self:ANewExpr> */
1803 var2 = self->attrs[COLOR_nitc__parser_nodes__ANewExpr___n_type].val; /* _n_type on <self:ANewExpr> */
1804 if (unlikely(var2 == NULL)) {
1805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
1806 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2259);
1807 fatal_exit(1);
1808 }
1809 var = var2;
1810 RET_LABEL1:(void)0;
1811 }
1812 }
1813 {
1814 var3 = nitc__typing___nitc__typing__TypeVisitor___resolve_mtype(var_v, var);
1815 }
1816 var_recvtype = var3;
1817 if (var_recvtype == NULL) {
1818 var4 = 1; /* is null */
1819 } else {
1820 var4 = 0; /* arg is null but recv is not */
1821 }
1822 if (0) {
1823 { /* Inline kernel#Object#== (var_recvtype,((val*)NULL)) on <var_recvtype:nullable MType> */
1824 var_other = ((val*)NULL);
1825 {
1826 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
1827 var9 = var_recvtype == var_other;
1828 var7 = var9;
1829 goto RET_LABEL8;
1830 RET_LABEL8:(void)0;
1831 }
1832 }
1833 var5 = var7;
1834 goto RET_LABEL6;
1835 RET_LABEL6:(void)0;
1836 }
1837 var4 = var5;
1838 }
1839 if (var4){
1840 goto RET_LABEL;
1841 } else {
1842 }
1843 /* <var_recvtype:nullable MType(MType)> isa MClassType */
1844 cltype = type_nitc__MClassType.color;
1845 idtype = type_nitc__MClassType.id;
1846 if(cltype >= var_recvtype->type->table_size) {
1847 var10 = 0;
1848 } else {
1849 var10 = var_recvtype->type->type_table[cltype] == idtype;
1850 }
1851 var11 = !var10;
1852 if (var11){
1853 /* <var_recvtype:nullable MType(MType)> isa MNullableType */
1854 cltype13 = type_nitc__MNullableType.color;
1855 idtype14 = type_nitc__MNullableType.id;
1856 if(cltype13 >= var_recvtype->type->table_size) {
1857 var12 = 0;
1858 } else {
1859 var12 = var_recvtype->type->type_table[cltype13] == idtype14;
1860 }
1861 if (var12){
1862 if (unlikely(varonce==NULL)) {
1863 var15 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1864 if (likely(varonce16!=NULL)) {
1865 var17 = varonce16;
1866 } else {
1867 var18 = "Type Error: cannot instantiate the nullable type `";
1868 var19 = core__flat___NativeString___to_s_full(var18, 50l, 50l);
1869 var17 = var19;
1870 varonce16 = var17;
1871 }
1872 ((struct instance_core__NativeArray*)var15)->values[0]=var17;
1873 if (likely(varonce20!=NULL)) {
1874 var21 = varonce20;
1875 } else {
1876 var22 = "`.";
1877 var23 = core__flat___NativeString___to_s_full(var22, 2l, 2l);
1878 var21 = var23;
1879 varonce20 = var21;
1880 }
1881 ((struct instance_core__NativeArray*)var15)->values[2]=var21;
1882 } else {
1883 var15 = varonce;
1884 varonce = NULL;
1885 }
1886 {
1887 var24 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MNullableType)>*/
1888 }
1889 ((struct instance_core__NativeArray*)var15)->values[1]=var24;
1890 {
1891 var25 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
1892 }
1893 varonce = var15;
1894 {
1895 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var25); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1896 }
1897 goto RET_LABEL;
1898 } else {
1899 /* <var_recvtype:nullable MType(MType)> isa MFormalType */
1900 cltype27 = type_nitc__MFormalType.color;
1901 idtype28 = type_nitc__MFormalType.id;
1902 if(cltype27 >= var_recvtype->type->table_size) {
1903 var26 = 0;
1904 } else {
1905 var26 = var_recvtype->type->type_table[cltype27] == idtype28;
1906 }
1907 if (var26){
1908 if (unlikely(varonce29==NULL)) {
1909 var30 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1910 if (likely(varonce31!=NULL)) {
1911 var32 = varonce31;
1912 } else {
1913 var33 = "Type Error: cannot instantiate the formal type `";
1914 var34 = core__flat___NativeString___to_s_full(var33, 48l, 48l);
1915 var32 = var34;
1916 varonce31 = var32;
1917 }
1918 ((struct instance_core__NativeArray*)var30)->values[0]=var32;
1919 if (likely(varonce35!=NULL)) {
1920 var36 = varonce35;
1921 } else {
1922 var37 = "`.";
1923 var38 = core__flat___NativeString___to_s_full(var37, 2l, 2l);
1924 var36 = var38;
1925 varonce35 = var36;
1926 }
1927 ((struct instance_core__NativeArray*)var30)->values[2]=var36;
1928 } else {
1929 var30 = varonce29;
1930 varonce29 = NULL;
1931 }
1932 {
1933 var39 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MFormalType)>*/
1934 }
1935 ((struct instance_core__NativeArray*)var30)->values[1]=var39;
1936 {
1937 var40 = ((val*(*)(val* self))(var30->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var30); /* native_to_s on <var30:NativeArray[String]>*/
1938 }
1939 varonce29 = var30;
1940 {
1941 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var40); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1942 }
1943 goto RET_LABEL;
1944 } else {
1945 if (unlikely(varonce41==NULL)) {
1946 var42 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1947 if (likely(varonce43!=NULL)) {
1948 var44 = varonce43;
1949 } else {
1950 var45 = "Type Error: cannot instantiate the type `";
1951 var46 = core__flat___NativeString___to_s_full(var45, 41l, 41l);
1952 var44 = var46;
1953 varonce43 = var44;
1954 }
1955 ((struct instance_core__NativeArray*)var42)->values[0]=var44;
1956 if (likely(varonce47!=NULL)) {
1957 var48 = varonce47;
1958 } else {
1959 var49 = "`.";
1960 var50 = core__flat___NativeString___to_s_full(var49, 2l, 2l);
1961 var48 = var50;
1962 varonce47 = var48;
1963 }
1964 ((struct instance_core__NativeArray*)var42)->values[2]=var48;
1965 } else {
1966 var42 = varonce41;
1967 varonce41 = NULL;
1968 }
1969 {
1970 var51 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MType)>*/
1971 }
1972 ((struct instance_core__NativeArray*)var42)->values[1]=var51;
1973 {
1974 var52 = ((val*(*)(val* self))(var42->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var42); /* native_to_s on <var42:NativeArray[String]>*/
1975 }
1976 varonce41 = var42;
1977 {
1978 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var52); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
1979 }
1980 goto RET_LABEL;
1981 }
1982 }
1983 } else {
1984 }
1985 {
1986 { /* Inline typing#ANewExpr#recvtype= (self,var_recvtype) on <self:ANewExpr> */
1987 self->attrs[COLOR_nitc__typing__ANewExpr___recvtype].val = var_recvtype; /* _recvtype on <self:ANewExpr> */
1988 RET_LABEL53:(void)0;
1989 }
1990 }
1991 {
1992 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
1993 var56 = var_recvtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
1994 if (unlikely(var56 == NULL)) {
1995 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1996 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
1997 fatal_exit(1);
1998 }
1999 var54 = var56;
2000 RET_LABEL55:(void)0;
2001 }
2002 }
2003 {
2004 { /* Inline model#MClass#kind (var54) on <var54:MClass> */
2005 var59 = var54->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var54:MClass> */
2006 if (unlikely(var59 == NULL)) {
2007 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2008 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
2009 fatal_exit(1);
2010 }
2011 var57 = var59;
2012 RET_LABEL58:(void)0;
2013 }
2014 }
2015 var_kind = var57;
2016 {
2017 { /* Inline parser_nodes#ANewExpr#n_qid (self) on <self:ANewExpr> */
2018 var62 = self->attrs[COLOR_nitc__parser_nodes__ANewExpr___n_qid].val; /* _n_qid on <self:ANewExpr> */
2019 var60 = var62;
2020 RET_LABEL61:(void)0;
2021 }
2022 }
2023 var_nqid = var60;
2024 if (var_nqid == NULL) {
2025 var63 = 0; /* is null */
2026 } else {
2027 var63 = 1; /* arg is null and recv is not */
2028 }
2029 if (0) {
2030 { /* Inline kernel#Object#!= (var_nqid,((val*)NULL)) on <var_nqid:nullable AQid> */
2031 var_other66 = ((val*)NULL);
2032 {
2033 var67 = ((short int(*)(val* self, val* p0))(var_nqid->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_nqid, var_other66); /* == on <var_nqid:nullable AQid(AQid)>*/
2034 }
2035 var68 = !var67;
2036 var64 = var68;
2037 goto RET_LABEL65;
2038 RET_LABEL65:(void)0;
2039 }
2040 var63 = var64;
2041 }
2042 if (var63){
2043 {
2044 { /* Inline parser_nodes#AQid#n_id (var_nqid) on <var_nqid:nullable AQid(AQid)> */
2045 var71 = var_nqid->attrs[COLOR_nitc__parser_nodes__AQid___n_id].val; /* _n_id on <var_nqid:nullable AQid(AQid)> */
2046 if (unlikely(var71 == NULL)) {
2047 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
2048 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1658);
2049 fatal_exit(1);
2050 }
2051 var69 = var71;
2052 RET_LABEL70:(void)0;
2053 }
2054 }
2055 {
2056 var72 = nitc__lexer_work___Token___text(var69);
2057 }
2058 var_name = var72;
2059 var_node = var_nqid;
2060 } else {
2061 if (likely(varonce73!=NULL)) {
2062 var74 = varonce73;
2063 } else {
2064 var75 = "new";
2065 var76 = core__flat___NativeString___to_s_full(var75, 3l, 3l);
2066 var74 = var76;
2067 varonce73 = var74;
2068 }
2069 var_name = var74;
2070 {
2071 { /* Inline parser_nodes#ANewExpr#n_kwnew (self) on <self:ANewExpr> */
2072 var79 = self->attrs[COLOR_nitc__parser_nodes__ANewExpr___n_kwnew].val; /* _n_kwnew on <self:ANewExpr> */
2073 if (unlikely(var79 == NULL)) {
2074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_kwnew");
2075 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2256);
2076 fatal_exit(1);
2077 }
2078 var77 = var79;
2079 RET_LABEL78:(void)0;
2080 }
2081 }
2082 var_node = var77;
2083 }
2084 if (likely(varonce80!=NULL)) {
2085 var81 = varonce80;
2086 } else {
2087 var82 = "intern";
2088 var83 = core__flat___NativeString___to_s_full(var82, 6l, 6l);
2089 var81 = var83;
2090 varonce80 = var81;
2091 }
2092 {
2093 var84 = ((short int(*)(val* self, val* p0))(var_name->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_name, var81); /* == on <var_name:String>*/
2094 }
2095 if (var84){
2096 var85 = glob_sys;
2097 {
2098 var86 = nitc__model___core__Sys___concrete_kind(var85);
2099 }
2100 {
2101 { /* Inline kernel#Object#!= (var_kind,var86) on <var_kind:MClassKind> */
2102 var_other66 = var86;
2103 {
2104 var89 = ((short int(*)(val* self, val* p0))(var_kind->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_kind, var_other66); /* == on <var_kind:MClassKind>*/
2105 }
2106 var90 = !var89;
2107 var87 = var90;
2108 goto RET_LABEL88;
2109 RET_LABEL88:(void)0;
2110 }
2111 }
2112 if (var87){
2113 if (unlikely(varonce91==NULL)) {
2114 var92 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
2115 if (likely(varonce93!=NULL)) {
2116 var94 = varonce93;
2117 } else {
2118 var95 = "Type Error: cannot instantiate ";
2119 var96 = core__flat___NativeString___to_s_full(var95, 31l, 31l);
2120 var94 = var96;
2121 varonce93 = var94;
2122 }
2123 ((struct instance_core__NativeArray*)var92)->values[0]=var94;
2124 if (likely(varonce97!=NULL)) {
2125 var98 = varonce97;
2126 } else {
2127 var99 = " ";
2128 var100 = core__flat___NativeString___to_s_full(var99, 1l, 1l);
2129 var98 = var100;
2130 varonce97 = var98;
2131 }
2132 ((struct instance_core__NativeArray*)var92)->values[2]=var98;
2133 if (likely(varonce101!=NULL)) {
2134 var102 = varonce101;
2135 } else {
2136 var103 = ".";
2137 var104 = core__flat___NativeString___to_s_full(var103, 1l, 1l);
2138 var102 = var104;
2139 varonce101 = var102;
2140 }
2141 ((struct instance_core__NativeArray*)var92)->values[4]=var102;
2142 } else {
2143 var92 = varonce91;
2144 varonce91 = NULL;
2145 }
2146 {
2147 var105 = ((val*(*)(val* self))(var_kind->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_kind); /* to_s on <var_kind:MClassKind>*/
2148 }
2149 ((struct instance_core__NativeArray*)var92)->values[1]=var105;
2150 {
2151 var106 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MClassType)>*/
2152 }
2153 ((struct instance_core__NativeArray*)var92)->values[3]=var106;
2154 {
2155 var107 = ((val*(*)(val* self))(var92->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var92); /* native_to_s on <var92:NativeArray[String]>*/
2156 }
2157 varonce91 = var92;
2158 {
2159 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var107); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2160 }
2161 goto RET_LABEL;
2162 } else {
2163 }
2164 {
2165 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
2166 var110 = self->attrs[COLOR_nitc__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
2167 if (unlikely(var110 == NULL)) {
2168 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
2169 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2265);
2170 fatal_exit(1);
2171 }
2172 var108 = var110;
2173 RET_LABEL109:(void)0;
2174 }
2175 }
2176 {
2177 { /* Inline parser_nodes#AExprs#n_exprs (var108) on <var108:AExprs> */
2178 var113 = var108->attrs[COLOR_nitc__parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var108:AExprs> */
2179 if (unlikely(var113 == NULL)) {
2180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
2181 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2709);
2182 fatal_exit(1);
2183 }
2184 var111 = var113;
2185 RET_LABEL112:(void)0;
2186 }
2187 }
2188 {
2189 var114 = core___core__Collection___not_empty(var111);
2190 }
2191 if (var114){
2192 {
2193 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
2194 var117 = self->attrs[COLOR_nitc__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
2195 if (unlikely(var117 == NULL)) {
2196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
2197 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2265);
2198 fatal_exit(1);
2199 }
2200 var115 = var117;
2201 RET_LABEL116:(void)0;
2202 }
2203 }
2204 if (likely(varonce118!=NULL)) {
2205 var119 = varonce118;
2206 } else {
2207 var120 = "Type Error: the intern constructor expects no arguments.";
2208 var121 = core__flat___NativeString___to_s_full(var120, 56l, 56l);
2209 var119 = var121;
2210 varonce118 = var119;
2211 }
2212 {
2213 nitc__typing___nitc__typing__TypeVisitor___error(var_v, var115, var119); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2214 }
2215 goto RET_LABEL;
2216 } else {
2217 }
2218 {
2219 { /* Inline typing#AExpr#mtype= (self,var_recvtype) on <self:ANewExpr> */
2220 self->attrs[COLOR_nitc__typing__AExpr___mtype].val = var_recvtype; /* _mtype on <self:ANewExpr> */
2221 RET_LABEL122:(void)0;
2222 }
2223 }
2224 goto RET_LABEL;
2225 } else {
2226 }
2227 {
2228 var123 = nitc__typing___nitc__typing__TypeVisitor___get_method(var_v, var_node, var_recvtype, var_name, 0);
2229 }
2230 var_callsite = var123;
2231 if (var_callsite == NULL) {
2232 var124 = 1; /* is null */
2233 } else {
2234 var124 = 0; /* arg is null but recv is not */
2235 }
2236 if (0) {
2237 { /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on <var_callsite:nullable CallSite> */
2238 var_other = ((val*)NULL);
2239 {
2240 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
2241 var129 = var_callsite == var_other;
2242 var127 = var129;
2243 goto RET_LABEL128;
2244 RET_LABEL128:(void)0;
2245 }
2246 }
2247 var125 = var127;
2248 goto RET_LABEL126;
2249 RET_LABEL126:(void)0;
2250 }
2251 var124 = var125;
2252 }
2253 if (var124){
2254 goto RET_LABEL;
2255 } else {
2256 }
2257 {
2258 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
2259 var132 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
2260 if (unlikely(var132 == NULL)) {
2261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2262 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 653);
2263 fatal_exit(1);
2264 }
2265 var130 = var132;
2266 RET_LABEL131:(void)0;
2267 }
2268 }
2269 {
2270 { /* Inline model#MMethod#is_new (var130) on <var130:MMethod> */
2271 var135 = var130->attrs[COLOR_nitc__model__MMethod___is_new].s; /* _is_new on <var130:MMethod> */
2272 var133 = var135;
2273 RET_LABEL134:(void)0;
2274 }
2275 }
2276 var136 = !var133;
2277 if (var136){
2278 var137 = glob_sys;
2279 {
2280 var138 = nitc__model___core__Sys___concrete_kind(var137);
2281 }
2282 {
2283 { /* Inline kernel#Object#!= (var_kind,var138) on <var_kind:MClassKind> */
2284 var_other66 = var138;
2285 {
2286 var141 = ((short int(*)(val* self, val* p0))(var_kind->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_kind, var_other66); /* == on <var_kind:MClassKind>*/
2287 }
2288 var142 = !var141;
2289 var139 = var142;
2290 goto RET_LABEL140;
2291 RET_LABEL140:(void)0;
2292 }
2293 }
2294 if (var139){
2295 if (unlikely(varonce143==NULL)) {
2296 var144 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
2297 if (likely(varonce145!=NULL)) {
2298 var146 = varonce145;
2299 } else {
2300 var147 = "Type Error: cannot instantiate ";
2301 var148 = core__flat___NativeString___to_s_full(var147, 31l, 31l);
2302 var146 = var148;
2303 varonce145 = var146;
2304 }
2305 ((struct instance_core__NativeArray*)var144)->values[0]=var146;
2306 if (likely(varonce149!=NULL)) {
2307 var150 = varonce149;
2308 } else {
2309 var151 = " `";
2310 var152 = core__flat___NativeString___to_s_full(var151, 2l, 2l);
2311 var150 = var152;
2312 varonce149 = var150;
2313 }
2314 ((struct instance_core__NativeArray*)var144)->values[2]=var150;
2315 if (likely(varonce153!=NULL)) {
2316 var154 = varonce153;
2317 } else {
2318 var155 = "`.";
2319 var156 = core__flat___NativeString___to_s_full(var155, 2l, 2l);
2320 var154 = var156;
2321 varonce153 = var154;
2322 }
2323 ((struct instance_core__NativeArray*)var144)->values[4]=var154;
2324 } else {
2325 var144 = varonce143;
2326 varonce143 = NULL;
2327 }
2328 {
2329 var157 = ((val*(*)(val* self))(var_kind->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_kind); /* to_s on <var_kind:MClassKind>*/
2330 }
2331 ((struct instance_core__NativeArray*)var144)->values[1]=var157;
2332 {
2333 var158 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MClassType)>*/
2334 }
2335 ((struct instance_core__NativeArray*)var144)->values[3]=var158;
2336 {
2337 var159 = ((val*(*)(val* self))(var144->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var144); /* native_to_s on <var144:NativeArray[String]>*/
2338 }
2339 varonce143 = var144;
2340 {
2341 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var159); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2342 }
2343 goto RET_LABEL;
2344 } else {
2345 }
2346 {
2347 { /* Inline typing#AExpr#mtype= (self,var_recvtype) on <self:ANewExpr> */
2348 self->attrs[COLOR_nitc__typing__AExpr___mtype].val = var_recvtype; /* _mtype on <self:ANewExpr> */
2349 RET_LABEL160:(void)0;
2350 }
2351 }
2352 } else {
2353 {
2354 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
2355 var163 = var_callsite->attrs[COLOR_nitc__typing__CallSite___msignature].val; /* _msignature on <var_callsite:nullable CallSite(CallSite)> */
2356 if (unlikely(var163 == NULL)) {
2357 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
2358 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 660);
2359 fatal_exit(1);
2360 }
2361 var161 = var163;
2362 RET_LABEL162:(void)0;
2363 }
2364 }
2365 {
2366 { /* Inline model#MSignature#return_mtype (var161) on <var161:MSignature> */
2367 var166 = var161->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var161:MSignature> */
2368 var164 = var166;
2369 RET_LABEL165:(void)0;
2370 }
2371 }
2372 {
2373 { /* Inline typing#AExpr#mtype= (self,var164) on <self:ANewExpr> */
2374 self->attrs[COLOR_nitc__typing__AExpr___mtype].val = var164; /* _mtype on <self:ANewExpr> */
2375 RET_LABEL167:(void)0;
2376 }
2377 }
2378 {
2379 { /* Inline typing#AExpr#mtype (self) on <self:ANewExpr> */
2380 var170 = self->attrs[COLOR_nitc__typing__AExpr___mtype].val; /* _mtype on <self:ANewExpr> */
2381 var168 = var170;
2382 RET_LABEL169:(void)0;
2383 }
2384 }
2385 if (var168 == NULL) {
2386 var171 = 0; /* is null */
2387 } else {
2388 var171 = 1; /* arg is null and recv is not */
2389 }
2390 if (0) {
2391 { /* Inline kernel#Object#!= (var168,((val*)NULL)) on <var168:nullable MType> */
2392 var_other66 = ((val*)NULL);
2393 {
2394 var174 = ((short int(*)(val* self, val* p0))(var168->class->vft[COLOR_core__kernel__Object___61d_61d]))(var168, var_other66); /* == on <var168:nullable MType(MType)>*/
2395 }
2396 var175 = !var174;
2397 var172 = var175;
2398 goto RET_LABEL173;
2399 RET_LABEL173:(void)0;
2400 }
2401 var171 = var172;
2402 }
2403 if (unlikely(!var171)) {
2404 PRINT_ERROR("Runtime error: %s", "Assert failed");
2405 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2103);
2406 fatal_exit(1);
2407 }
2408 }
2409 {
2410 { /* Inline typing#ANewExpr#callsite= (self,var_callsite) on <self:ANewExpr> */
2411 self->attrs[COLOR_nitc__typing__ANewExpr___callsite].val = var_callsite; /* _callsite on <self:ANewExpr> */
2412 RET_LABEL176:(void)0;
2413 }
2414 }
2415 {
2416 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
2417 var179 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
2418 if (unlikely(var179 == NULL)) {
2419 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2420 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 653);
2421 fatal_exit(1);
2422 }
2423 var177 = var179;
2424 RET_LABEL178:(void)0;
2425 }
2426 }
2427 {
2428 { /* Inline model#MClassType#mclass (var_recvtype) on <var_recvtype:nullable MType(MClassType)> */
2429 var182 = var_recvtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_recvtype:nullable MType(MClassType)> */
2430 if (unlikely(var182 == NULL)) {
2431 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2432 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
2433 fatal_exit(1);
2434 }
2435 var180 = var182;
2436 RET_LABEL181:(void)0;
2437 }
2438 }
2439 {
2440 var183 = nitc___nitc__MMethod___is_init_for(var177, var180);
2441 }
2442 var184 = !var183;
2443 if (var184){
2444 if (unlikely(varonce185==NULL)) {
2445 var186 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2446 if (likely(varonce187!=NULL)) {
2447 var188 = varonce187;
2448 } else {
2449 var189 = "Error: `";
2450 var190 = core__flat___NativeString___to_s_full(var189, 8l, 8l);
2451 var188 = var190;
2452 varonce187 = var188;
2453 }
2454 ((struct instance_core__NativeArray*)var186)->values[0]=var188;
2455 if (likely(varonce191!=NULL)) {
2456 var192 = varonce191;
2457 } else {
2458 var193 = "` is not a constructor.";
2459 var194 = core__flat___NativeString___to_s_full(var193, 23l, 23l);
2460 var192 = var194;
2461 varonce191 = var192;
2462 }
2463 ((struct instance_core__NativeArray*)var186)->values[2]=var192;
2464 } else {
2465 var186 = varonce185;
2466 varonce185 = NULL;
2467 }
2468 ((struct instance_core__NativeArray*)var186)->values[1]=var_name;
2469 {
2470 var195 = ((val*(*)(val* self))(var186->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var186); /* native_to_s on <var186:NativeArray[String]>*/
2471 }
2472 varonce185 = var186;
2473 {
2474 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var195); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2475 }
2476 goto RET_LABEL;
2477 } else {
2478 }
2479 {
2480 { /* Inline parser_nodes#ANewExpr#n_args (self) on <self:ANewExpr> */
2481 var198 = self->attrs[COLOR_nitc__parser_nodes__ANewExpr___n_args].val; /* _n_args on <self:ANewExpr> */
2482 if (unlikely(var198 == NULL)) {
2483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
2484 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2265);
2485 fatal_exit(1);
2486 }
2487 var196 = var198;
2488 RET_LABEL197:(void)0;
2489 }
2490 }
2491 {
2492 var199 = nitc__typing___AExprs___to_a(var196);
2493 }
2494 var_args = var199;
2495 {
2496 var200 = nitc___nitc__CallSite___check_signature(var_callsite, var_v, var_node, var_args);
2497 }
2498 RET_LABEL:;
2499 }
2500 /* method typing#AAttrFormExpr#mproperty for (self: AAttrFormExpr): nullable MAttribute */
2501 val* nitc__typing___AAttrFormExpr___mproperty(val* self) {
2502 val* var /* : nullable MAttribute */;
2503 val* var1 /* : nullable MAttribute */;
2504 var1 = self->attrs[COLOR_nitc__typing__AAttrFormExpr___mproperty].val; /* _mproperty on <self:AAttrFormExpr> */
2505 var = var1;
2506 RET_LABEL:;
2507 return var;
2508 }
2509 /* method typing#AAttrFormExpr#mproperty= for (self: AAttrFormExpr, nullable MAttribute) */
2510 void nitc__typing___AAttrFormExpr___mproperty_61d(val* self, val* p0) {
2511 self->attrs[COLOR_nitc__typing__AAttrFormExpr___mproperty].val = p0; /* _mproperty on <self:AAttrFormExpr> */
2512 RET_LABEL:;
2513 }
2514 /* method typing#AAttrFormExpr#attr_type for (self: AAttrFormExpr): nullable MType */
2515 val* nitc__typing___AAttrFormExpr___attr_type(val* self) {
2516 val* var /* : nullable MType */;
2517 val* var1 /* : nullable MType */;
2518 var1 = self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrFormExpr> */
2519 var = var1;
2520 RET_LABEL:;
2521 return var;
2522 }
2523 /* method typing#AAttrFormExpr#attr_type= for (self: AAttrFormExpr, nullable MType) */
2524 void nitc__typing___AAttrFormExpr___attr_type_61d(val* self, val* p0) {
2525 self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val = p0; /* _attr_type on <self:AAttrFormExpr> */
2526 RET_LABEL:;
2527 }
2528 /* method typing#AAttrFormExpr#resolve_property for (self: AAttrFormExpr, TypeVisitor) */
2529 void nitc__typing___AAttrFormExpr___resolve_property(val* self, val* p0) {
2530 val* var_v /* var v: TypeVisitor */;
2531 val* var /* : AExpr */;
2532 val* var2 /* : AExpr */;
2533 val* var3 /* : nullable MType */;
2534 val* var_recvtype /* var recvtype: nullable MType */;
2535 short int var4 /* : Bool */;
2536 short int var5 /* : Bool */;
2537 val* var_other /* var other: nullable Object */;
2538 short int var7 /* : Bool */;
2539 short int var9 /* : Bool */;
2540 val* var10 /* : TAttrid */;
2541 val* var12 /* : TAttrid */;
2542 val* var_node /* var node: TAttrid */;
2543 val* var13 /* : String */;
2544 val* var_name /* var name: String */;
2545 short int var14 /* : Bool */;
2546 int cltype;
2547 int idtype;
2548 val* var15 /* : NativeArray[String] */;
2549 static val* varonce;
2550 static val* varonce16;
2551 val* var17 /* : String */;
2552 char* var18 /* : NativeString */;
2553 val* var19 /* : String */;
2554 static val* varonce20;
2555 val* var21 /* : String */;
2556 char* var22 /* : NativeString */;
2557 val* var23 /* : String */;
2558 val* var24 /* : String */;
2559 val* var25 /* : MType */;
2560 val* var_unsafe_type /* var unsafe_type: MType */;
2561 val* var26 /* : nullable MProperty */;
2562 val* var_mproperty /* var mproperty: nullable MProperty */;
2563 short int var27 /* : Bool */;
2564 short int var28 /* : Bool */;
2565 short int var30 /* : Bool */;
2566 short int var32 /* : Bool */;
2567 val* var33 /* : ModelBuilder */;
2568 val* var35 /* : ModelBuilder */;
2569 val* var37 /* : NativeArray[String] */;
2570 static val* varonce36;
2571 static val* varonce38;
2572 val* var39 /* : String */;
2573 char* var40 /* : NativeString */;
2574 val* var41 /* : String */;
2575 static val* varonce42;
2576 val* var43 /* : String */;
2577 char* var44 /* : NativeString */;
2578 val* var45 /* : String */;
2579 static val* varonce46;
2580 val* var47 /* : String */;
2581 char* var48 /* : NativeString */;
2582 val* var49 /* : String */;
2583 val* var50 /* : String */;
2584 val* var51 /* : String */;
2585 short int var52 /* : Bool */;
2586 int cltype53;
2587 int idtype54;
2588 val* var56 /* : MModule */;
2589 val* var58 /* : MModule */;
2590 val* var59 /* : Array[MPropDef] */;
2591 val* var_mpropdefs /* var mpropdefs: Array[MAttributeDef] */;
2592 long var60 /* : Int */;
2593 long var62 /* : Int */;
2594 short int var63 /* : Bool */;
2595 short int var65 /* : Bool */;
2596 val* var66 /* : nullable Object */;
2597 val* var_mpropdef /* var mpropdef: MAttributeDef */;
2598 val* var67 /* : nullable MType */;
2599 val* var69 /* : nullable MType */;
2600 val* var_attr_type /* var attr_type: nullable MType */;
2601 short int var70 /* : Bool */;
2602 short int var71 /* : Bool */;
2603 short int var73 /* : Bool */;
2604 short int var75 /* : Bool */;
2605 val* var76 /* : AExpr */;
2606 val* var78 /* : AExpr */;
2607 short int var79 /* : Bool */;
2608 int cltype80;
2609 int idtype81;
2610 val* var82 /* : MType */;
2611 var_v = p0;
2612 {
2613 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AAttrFormExpr> */
2614 var2 = self->attrs[COLOR_nitc__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AAttrFormExpr> */
2615 if (unlikely(var2 == NULL)) {
2616 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2617 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2273);
2618 fatal_exit(1);
2619 }
2620 var = var2;
2621 RET_LABEL1:(void)0;
2622 }
2623 }
2624 {
2625 var3 = nitc__typing___nitc__typing__TypeVisitor___visit_expr(var_v, var);
2626 }
2627 var_recvtype = var3;
2628 if (var_recvtype == NULL) {
2629 var4 = 1; /* is null */
2630 } else {
2631 var4 = 0; /* arg is null but recv is not */
2632 }
2633 if (0) {
2634 { /* Inline kernel#Object#== (var_recvtype,((val*)NULL)) on <var_recvtype:nullable MType> */
2635 var_other = ((val*)NULL);
2636 {
2637 { /* Inline kernel#Object#is_same_instance (var_recvtype,var_other) on <var_recvtype:nullable MType(MType)> */
2638 var9 = var_recvtype == var_other;
2639 var7 = var9;
2640 goto RET_LABEL8;
2641 RET_LABEL8:(void)0;
2642 }
2643 }
2644 var5 = var7;
2645 goto RET_LABEL6;
2646 RET_LABEL6:(void)0;
2647 }
2648 var4 = var5;
2649 }
2650 if (var4){
2651 goto RET_LABEL;
2652 } else {
2653 }
2654 {
2655 { /* Inline parser_nodes#AAttrFormExpr#n_id (self) on <self:AAttrFormExpr> */
2656 var12 = self->attrs[COLOR_nitc__parser_nodes__AAttrFormExpr___n_id].val; /* _n_id on <self:AAttrFormExpr> */
2657 if (unlikely(var12 == NULL)) {
2658 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
2659 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2276);
2660 fatal_exit(1);
2661 }
2662 var10 = var12;
2663 RET_LABEL11:(void)0;
2664 }
2665 }
2666 var_node = var10;
2667 {
2668 var13 = nitc__lexer_work___Token___text(var_node);
2669 }
2670 var_name = var13;
2671 /* <var_recvtype:nullable MType(MType)> isa MNullType */
2672 cltype = type_nitc__MNullType.color;
2673 idtype = type_nitc__MNullType.id;
2674 if(cltype >= var_recvtype->type->table_size) {
2675 var14 = 0;
2676 } else {
2677 var14 = var_recvtype->type->type_table[cltype] == idtype;
2678 }
2679 if (var14){
2680 if (unlikely(varonce==NULL)) {
2681 var15 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2682 if (likely(varonce16!=NULL)) {
2683 var17 = varonce16;
2684 } else {
2685 var18 = "Error: attribute `";
2686 var19 = core__flat___NativeString___to_s_full(var18, 18l, 18l);
2687 var17 = var19;
2688 varonce16 = var17;
2689 }
2690 ((struct instance_core__NativeArray*)var15)->values[0]=var17;
2691 if (likely(varonce20!=NULL)) {
2692 var21 = varonce20;
2693 } else {
2694 var22 = "` access on `null`.";
2695 var23 = core__flat___NativeString___to_s_full(var22, 19l, 19l);
2696 var21 = var23;
2697 varonce20 = var21;
2698 }
2699 ((struct instance_core__NativeArray*)var15)->values[2]=var21;
2700 } else {
2701 var15 = varonce;
2702 varonce = NULL;
2703 }
2704 ((struct instance_core__NativeArray*)var15)->values[1]=var_name;
2705 {
2706 var24 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
2707 }
2708 varonce = var15;
2709 {
2710 nitc__typing___nitc__typing__TypeVisitor___error(var_v, var_node, var24); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
2711 }
2712 goto RET_LABEL;
2713 } else {
2714 }
2715 {
2716 var25 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(var_v, var_recvtype);
2717 }
2718 var_unsafe_type = var25;
2719 {
2720 var26 = nitc__typing___nitc__typing__TypeVisitor___try_get_mproperty_by_name2(var_v, var_node, var_unsafe_type, var_name);
2721 }
2722 var_mproperty = var26;
2723 if (var_mproperty == NULL) {
2724 var27 = 1; /* is null */
2725 } else {
2726 var27 = 0; /* arg is null but recv is not */
2727 }
2728 if (0) {
2729 { /* Inline kernel#Object#== (var_mproperty,((val*)NULL)) on <var_mproperty:nullable MProperty> */
2730 var_other = ((val*)NULL);
2731 {
2732 { /* Inline kernel#Object#is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
2733 var32 = var_mproperty == var_other;
2734 var30 = var32;
2735 goto RET_LABEL31;
2736 RET_LABEL31:(void)0;
2737 }
2738 }
2739 var28 = var30;
2740 goto RET_LABEL29;
2741 RET_LABEL29:(void)0;
2742 }
2743 var27 = var28;
2744 }
2745 if (var27){
2746 {
2747 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
2748 var35 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
2749 if (unlikely(var35 == NULL)) {
2750 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2751 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2752 fatal_exit(1);
2753 }
2754 var33 = var35;
2755 RET_LABEL34:(void)0;
2756 }
2757 }
2758 if (unlikely(varonce36==NULL)) {
2759 var37 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
2760 if (likely(varonce38!=NULL)) {
2761 var39 = varonce38;
2762 } else {
2763 var40 = "Error: attribute `";
2764 var41 = core__flat___NativeString___to_s_full(var40, 18l, 18l);
2765 var39 = var41;
2766 varonce38 = var39;
2767 }
2768 ((struct instance_core__NativeArray*)var37)->values[0]=var39;
2769 if (likely(varonce42!=NULL)) {
2770 var43 = varonce42;
2771 } else {
2772 var44 = "` does not exist in `";
2773 var45 = core__flat___NativeString___to_s_full(var44, 21l, 21l);
2774 var43 = var45;
2775 varonce42 = var43;
2776 }
2777 ((struct instance_core__NativeArray*)var37)->values[2]=var43;
2778 if (likely(varonce46!=NULL)) {
2779 var47 = varonce46;
2780 } else {
2781 var48 = "`.";
2782 var49 = core__flat___NativeString___to_s_full(var48, 2l, 2l);
2783 var47 = var49;
2784 varonce46 = var47;
2785 }
2786 ((struct instance_core__NativeArray*)var37)->values[4]=var47;
2787 } else {
2788 var37 = varonce36;
2789 varonce36 = NULL;
2790 }
2791 ((struct instance_core__NativeArray*)var37)->values[1]=var_name;
2792 {
2793 var50 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:nullable MType(MType)>*/
2794 }
2795 ((struct instance_core__NativeArray*)var37)->values[3]=var50;
2796 {
2797 var51 = ((val*(*)(val* self))(var37->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
2798 }
2799 varonce36 = var37;
2800 {
2801 nitc___nitc__ModelBuilder___error(var33, var_node, var51); /* Direct call modelbuilder_base#ModelBuilder#error on <var33:ModelBuilder>*/
2802 }
2803 goto RET_LABEL;
2804 } else {
2805 }
2806 /* <var_mproperty:nullable MProperty(MProperty)> isa MAttribute */
2807 cltype53 = type_nitc__MAttribute.color;
2808 idtype54 = type_nitc__MAttribute.id;
2809 if(cltype53 >= var_mproperty->type->table_size) {
2810 var52 = 0;
2811 } else {
2812 var52 = var_mproperty->type->type_table[cltype53] == idtype54;
2813 }
2814 if (unlikely(!var52)) {
2815 PRINT_ERROR("Runtime error: %s", "Assert failed");
2816 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2145);
2817 fatal_exit(1);
2818 }
2819 {
2820 { /* Inline typing#AAttrFormExpr#mproperty= (self,var_mproperty) on <self:AAttrFormExpr> */
2821 self->attrs[COLOR_nitc__typing__AAttrFormExpr___mproperty].val = var_mproperty; /* _mproperty on <self:AAttrFormExpr> */
2822 RET_LABEL55:(void)0;
2823 }
2824 }
2825 {
2826 { /* Inline typing#TypeVisitor#mmodule (var_v) on <var_v:TypeVisitor> */
2827 var58 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <var_v:TypeVisitor> */
2828 if (unlikely(var58 == NULL)) {
2829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2830 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
2831 fatal_exit(1);
2832 }
2833 var56 = var58;
2834 RET_LABEL57:(void)0;
2835 }
2836 }
2837 {
2838 var59 = nitc___nitc__MProperty___lookup_definitions(var_mproperty, var56, var_unsafe_type);
2839 }
2840 var_mpropdefs = var59;
2841 {
2842 { /* Inline array#AbstractArrayRead#length (var_mpropdefs) on <var_mpropdefs:Array[MAttributeDef]> */
2843 var62 = var_mpropdefs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_mpropdefs:Array[MAttributeDef]> */
2844 var60 = var62;
2845 RET_LABEL61:(void)0;
2846 }
2847 }
2848 {
2849 { /* Inline kernel#Int#== (var60,1l) on <var60:Int> */
2850 var65 = var60 == 1l;
2851 var63 = var65;
2852 goto RET_LABEL64;
2853 RET_LABEL64:(void)0;
2854 }
2855 }
2856 if (unlikely(!var63)) {
2857 PRINT_ERROR("Runtime error: %s", "Assert failed");
2858 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2149);
2859 fatal_exit(1);
2860 }
2861 {
2862 var66 = core___core__SequenceRead___Collection__first(var_mpropdefs);
2863 }
2864 var_mpropdef = var66;
2865 {
2866 { /* Inline model#MAttributeDef#static_mtype (var_mpropdef) on <var_mpropdef:MAttributeDef> */
2867 var69 = var_mpropdef->attrs[COLOR_nitc__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var_mpropdef:MAttributeDef> */
2868 var67 = var69;
2869 RET_LABEL68:(void)0;
2870 }
2871 }
2872 var_attr_type = var67;
2873 if (var_attr_type == NULL) {
2874 var70 = 1; /* is null */
2875 } else {
2876 var70 = 0; /* arg is null but recv is not */
2877 }
2878 if (0) {
2879 { /* Inline kernel#Object#== (var_attr_type,((val*)NULL)) on <var_attr_type:nullable MType> */
2880 var_other = ((val*)NULL);
2881 {
2882 { /* Inline kernel#Object#is_same_instance (var_attr_type,var_other) on <var_attr_type:nullable MType(MType)> */
2883 var75 = var_attr_type == var_other;
2884 var73 = var75;
2885 goto RET_LABEL74;
2886 RET_LABEL74:(void)0;
2887 }
2888 }
2889 var71 = var73;
2890 goto RET_LABEL72;
2891 RET_LABEL72:(void)0;
2892 }
2893 var70 = var71;
2894 }
2895 if (var70){
2896 goto RET_LABEL;
2897 } else {
2898 }
2899 {
2900 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AAttrFormExpr> */
2901 var78 = self->attrs[COLOR_nitc__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AAttrFormExpr> */
2902 if (unlikely(var78 == NULL)) {
2903 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2904 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2273);
2905 fatal_exit(1);
2906 }
2907 var76 = var78;
2908 RET_LABEL77:(void)0;
2909 }
2910 }
2911 /* <var76:AExpr> isa ASelfExpr */
2912 cltype80 = type_nitc__ASelfExpr.color;
2913 idtype81 = type_nitc__ASelfExpr.id;
2914 if(cltype80 >= var76->type->table_size) {
2915 var79 = 0;
2916 } else {
2917 var79 = var76->type->type_table[cltype80] == idtype81;
2918 }
2919 {
2920 var82 = nitc__typing___nitc__typing__TypeVisitor___resolve_for(var_v, var_attr_type, var_recvtype, var79);
2921 }
2922 var_attr_type = var82;
2923 {
2924 { /* Inline typing#AAttrFormExpr#attr_type= (self,var_attr_type) on <self:AAttrFormExpr> */
2925 self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val = var_attr_type; /* _attr_type on <self:AAttrFormExpr> */
2926 RET_LABEL83:(void)0;
2927 }
2928 }
2929 RET_LABEL:;
2930 }
2931 /* method typing#AAttrExpr#accept_typing for (self: AAttrExpr, TypeVisitor) */
2932 void nitc__typing___AAttrExpr___AExpr__accept_typing(val* self, val* p0) {
2933 val* var_v /* var v: TypeVisitor */;
2934 val* var /* : nullable MType */;
2935 val* var2 /* : nullable MType */;
2936 var_v = p0;
2937 {
2938 nitc__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrExpr>*/
2939 }
2940 {
2941 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrExpr> */
2942 var2 = self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrExpr> */
2943 var = var2;
2944 RET_LABEL1:(void)0;
2945 }
2946 }
2947 {
2948 { /* Inline typing#AExpr#mtype= (self,var) on <self:AAttrExpr> */
2949 self->attrs[COLOR_nitc__typing__AExpr___mtype].val = var; /* _mtype on <self:AAttrExpr> */
2950 RET_LABEL3:(void)0;
2951 }
2952 }
2953 RET_LABEL:;
2954 }
2955 /* method typing#AAttrAssignExpr#accept_typing for (self: AAttrAssignExpr, TypeVisitor) */
2956 void nitc__typing___AAttrAssignExpr___AExpr__accept_typing(val* self, val* p0) {
2957 val* var_v /* var v: TypeVisitor */;
2958 val* var /* : nullable MType */;
2959 val* var2 /* : nullable MType */;
2960 val* var_mtype /* var mtype: nullable MType */;
2961 val* var3 /* : AExpr */;
2962 val* var5 /* : AExpr */;
2963 val* var6 /* : nullable MType */;
2964 short int var7 /* : Bool */;
2965 short int var8 /* : Bool */;
2966 val* var_other /* var other: nullable Object */;
2967 short int var10 /* : Bool */;
2968 short int var11 /* : Bool */;
2969 var_v = p0;
2970 {
2971 nitc__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrAssignExpr>*/
2972 }
2973 {
2974 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrAssignExpr> */
2975 var2 = self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrAssignExpr> */
2976 var = var2;
2977 RET_LABEL1:(void)0;
2978 }
2979 }
2980 var_mtype = var;
2981 {
2982 { /* Inline parser_nodes#AAssignFormExpr#n_value (self) on <self:AAttrAssignExpr> */
2983 var5 = self->attrs[COLOR_nitc__parser_nodes__AAssignFormExpr___n_value].val; /* _n_value on <self:AAttrAssignExpr> */
2984 if (unlikely(var5 == NULL)) {
2985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_value");
2986 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1992);
2987 fatal_exit(1);
2988 }
2989 var3 = var5;
2990 RET_LABEL4:(void)0;
2991 }
2992 }
2993 {
2994 var6 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(var_v, var3, var_mtype);
2995 }
2996 if (var_mtype == NULL) {
2997 var7 = 0; /* is null */
2998 } else {
2999 var7 = 1; /* arg is null and recv is not */
3000 }
3001 if (0) {
3002 { /* Inline kernel#Object#!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
3003 var_other = ((val*)NULL);
3004 {
3005 var10 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mtype, var_other); /* == on <var_mtype:nullable MType(MType)>*/
3006 }
3007 var11 = !var10;
3008 var8 = var11;
3009 goto RET_LABEL9;
3010 RET_LABEL9:(void)0;
3011 }
3012 var7 = var8;
3013 }
3014 {
3015 { /* Inline typing#AExpr#is_typed= (self,var7) on <self:AAttrAssignExpr> */
3016 self->attrs[COLOR_nitc__typing__AExpr___is_typed].s = var7; /* _is_typed on <self:AAttrAssignExpr> */
3017 RET_LABEL12:(void)0;
3018 }
3019 }
3020 RET_LABEL:;
3021 }
3022 /* method typing#AAttrReassignExpr#accept_typing for (self: AAttrReassignExpr, TypeVisitor) */
3023 void nitc__typing___AAttrReassignExpr___AExpr__accept_typing(val* self, val* p0) {
3024 val* var_v /* var v: TypeVisitor */;
3025 val* var /* : nullable MType */;
3026 val* var2 /* : nullable MType */;
3027 val* var_mtype /* var mtype: nullable MType */;
3028 short int var3 /* : Bool */;
3029 short int var4 /* : Bool */;
3030 val* var_other /* var other: nullable Object */;
3031 short int var6 /* : Bool */;
3032 short int var8 /* : Bool */;
3033 val* var9 /* : nullable MType */;
3034 val* var_rettype /* var rettype: nullable MType */;
3035 short int var10 /* : Bool */;
3036 short int var11 /* : Bool */;
3037 val* var_other13 /* var other: nullable Object */;
3038 short int var14 /* : Bool */;
3039 short int var15 /* : Bool */;
3040 var_v = p0;
3041 {
3042 nitc__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AAttrReassignExpr>*/
3043 }
3044 {
3045 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AAttrReassignExpr> */
3046 var2 = self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AAttrReassignExpr> */
3047 var = var2;
3048 RET_LABEL1:(void)0;
3049 }
3050 }
3051 var_mtype = var;
3052 if (var_mtype == NULL) {
3053 var3 = 1; /* is null */
3054 } else {
3055 var3 = 0; /* arg is null but recv is not */
3056 }
3057 if (0) {
3058 { /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
3059 var_other = ((val*)NULL);
3060 {
3061 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
3062 var8 = var_mtype == var_other;
3063 var6 = var8;
3064 goto RET_LABEL7;
3065 RET_LABEL7:(void)0;
3066 }
3067 }
3068 var4 = var6;
3069 goto RET_LABEL5;
3070 RET_LABEL5:(void)0;
3071 }
3072 var3 = var4;
3073 }
3074 if (var3){
3075 goto RET_LABEL;
3076 } else {
3077 }
3078 {
3079 var9 = nitc__typing___AReassignFormExpr___resolve_reassignment(self, var_v, var_mtype, var_mtype);
3080 }
3081 var_rettype = var9;
3082 if (var_rettype == NULL) {
3083 var10 = 0; /* is null */
3084 } else {
3085 var10 = 1; /* arg is null and recv is not */
3086 }
3087 if (0) {
3088 { /* Inline kernel#Object#!= (var_rettype,((val*)NULL)) on <var_rettype:nullable MType> */
3089 var_other13 = ((val*)NULL);
3090 {
3091 var14 = ((short int(*)(val* self, val* p0))(var_rettype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rettype, var_other13); /* == on <var_rettype:nullable MType(MType)>*/
3092 }
3093 var15 = !var14;
3094 var11 = var15;
3095 goto RET_LABEL12;
3096 RET_LABEL12:(void)0;
3097 }
3098 var10 = var11;
3099 }
3100 {
3101 { /* Inline typing#AExpr#is_typed= (self,var10) on <self:AAttrReassignExpr> */
3102 self->attrs[COLOR_nitc__typing__AExpr___is_typed].s = var10; /* _is_typed on <self:AAttrReassignExpr> */
3103 RET_LABEL16:(void)0;
3104 }
3105 }
3106 RET_LABEL:;
3107 }
3108 /* method typing#AIssetAttrExpr#accept_typing for (self: AIssetAttrExpr, TypeVisitor) */
3109 void nitc__typing___AIssetAttrExpr___AExpr__accept_typing(val* self, val* p0) {
3110 val* var_v /* var v: TypeVisitor */;
3111 val* var /* : nullable MType */;
3112 val* var2 /* : nullable MType */;
3113 val* var_mtype /* var mtype: nullable MType */;
3114 short int var3 /* : Bool */;
3115 short int var4 /* : Bool */;
3116 val* var_other /* var other: nullable Object */;
3117 short int var6 /* : Bool */;
3118 short int var8 /* : Bool */;
3119 val* var9 /* : AExpr */;
3120 val* var11 /* : AExpr */;
3121 val* var12 /* : nullable MType */;
3122 val* var_recvtype /* var recvtype: MType */;
3123 val* var13 /* : MType */;
3124 val* var_bound /* var bound: MType */;
3125 short int var14 /* : Bool */;
3126 int cltype;
3127 int idtype;
3128 val* var15 /* : TAttrid */;
3129 val* var17 /* : TAttrid */;
3130 static val* varonce;
3131 val* var18 /* : String */;
3132 char* var19 /* : NativeString */;
3133 val* var20 /* : String */;
3134 val* var21 /* : nullable MType */;
3135 var_v = p0;
3136 {
3137 nitc__typing___AAttrFormExpr___resolve_property(self, var_v); /* Direct call typing#AAttrFormExpr#resolve_property on <self:AIssetAttrExpr>*/
3138 }
3139 {
3140 { /* Inline typing#AAttrFormExpr#attr_type (self) on <self:AIssetAttrExpr> */
3141 var2 = self->attrs[COLOR_nitc__typing__AAttrFormExpr___attr_type].val; /* _attr_type on <self:AIssetAttrExpr> */
3142 var = var2;
3143 RET_LABEL1:(void)0;
3144 }
3145 }
3146 var_mtype = var;
3147 if (var_mtype == NULL) {
3148 var3 = 1; /* is null */
3149 } else {
3150 var3 = 0; /* arg is null but recv is not */
3151 }
3152 if (0) {
3153 { /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
3154 var_other = ((val*)NULL);
3155 {
3156 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
3157 var8 = var_mtype == var_other;
3158 var6 = var8;
3159 goto RET_LABEL7;
3160 RET_LABEL7:(void)0;
3161 }
3162 }
3163 var4 = var6;
3164 goto RET_LABEL5;
3165 RET_LABEL5:(void)0;
3166 }
3167 var3 = var4;
3168 }
3169 if (var3){
3170 goto RET_LABEL;
3171 } else {
3172 }
3173 {
3174 { /* Inline parser_nodes#AAttrFormExpr#n_expr (self) on <self:AIssetAttrExpr> */
3175 var11 = self->attrs[COLOR_nitc__parser_nodes__AAttrFormExpr___n_expr].val; /* _n_expr on <self:AIssetAttrExpr> */
3176 if (unlikely(var11 == NULL)) {
3177 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3178 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2273);
3179 fatal_exit(1);
3180 }
3181 var9 = var11;
3182 RET_LABEL10:(void)0;
3183 }
3184 }
3185 {
3186 var12 = ((val*(*)(val* self))(var9->class->vft[COLOR_nitc__typing__AExpr__mtype]))(var9); /* mtype on <var9:AExpr>*/
3187 }
3188 if (unlikely(var12 == NULL)) {
3189 PRINT_ERROR("Runtime error: %s", "Cast failed");
3190 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 2198);
3191 fatal_exit(1);
3192 }
3193 var_recvtype = var12;
3194 {
3195 var13 = nitc__typing___nitc__typing__TypeVisitor___resolve_for(var_v, var_mtype, var_recvtype, 0);
3196 }
3197 var_bound = var13;
3198 /* <var_bound:MType> isa MNullableType */
3199 cltype = type_nitc__MNullableType.color;
3200 idtype = type_nitc__MNullableType.id;
3201 if(cltype >= var_bound->type->table_size) {
3202 var14 = 0;
3203 } else {
3204 var14 = var_bound->type->type_table[cltype] == idtype;
3205 }
3206 if (var14){
3207 {
3208 { /* Inline parser_nodes#AAttrFormExpr#n_id (self) on <self:AIssetAttrExpr> */
3209 var17 = self->attrs[COLOR_nitc__parser_nodes__AAttrFormExpr___n_id].val; /* _n_id on <self:AIssetAttrExpr> */
3210 if (unlikely(var17 == NULL)) {
3211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
3212 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2276);
3213 fatal_exit(1);
3214 }
3215 var15 = var17;
3216 RET_LABEL16:(void)0;
3217 }
3218 }
3219 if (likely(varonce!=NULL)) {
3220 var18 = varonce;
3221 } else {
3222 var19 = "Type Error: `isset` on a nullable attribute.";
3223 var20 = core__flat___NativeString___to_s_full(var19, 44l, 44l);
3224 var18 = var20;
3225 varonce = var18;
3226 }
3227 {
3228 nitc__typing___nitc__typing__TypeVisitor___error(var_v, var15, var18); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
3229 }
3230 } else {
3231 }
3232 {
3233 var21 = nitc__typing___nitc__typing__TypeVisitor___type_bool(var_v, self);
3234 }
3235 {
3236 { /* Inline typing#AExpr#mtype= (self,var21) on <self:AIssetAttrExpr> */
3237 self->attrs[COLOR_nitc__typing__AExpr___mtype].val = var21; /* _mtype on <self:AIssetAttrExpr> */
3238 RET_LABEL22:(void)0;
3239 }
3240 }
3241 RET_LABEL:;
3242 }
3243 /* method typing#AVarargExpr#accept_typing for (self: AVarargExpr, TypeVisitor) */
3244 void nitc__typing___AVarargExpr___AExpr__accept_typing(val* self, val* p0) {
3245 val* var_v /* var v: TypeVisitor */;
3246 static val* varonce;
3247 val* var /* : String */;
3248 char* var1 /* : NativeString */;
3249 val* var2 /* : String */;
3250 var_v = p0;
3251 if (likely(varonce!=NULL)) {
3252 var = varonce;
3253 } else {
3254 var1 = "Syntax Error: unexpected `...`.";
3255 var2 = core__flat___NativeString___to_s_full(var1, 31l, 31l);
3256 var = var2;
3257 varonce = var;
3258 }
3259 {
3260 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var); /* Direct call typing#TypeVisitor#error on <var_v:TypeVisitor>*/
3261 }
3262 RET_LABEL:;
3263 }
3264 /* method typing#ADebugTypeExpr#accept_typing for (self: ADebugTypeExpr, TypeVisitor) */
3265 void nitc__typing___ADebugTypeExpr___AExpr__accept_typing(val* self, val* p0) {
3266 val* var_v /* var v: TypeVisitor */;
3267 val* var /* : AExpr */;
3268 val* var2 /* : AExpr */;
3269 val* var3 /* : nullable MType */;
3270 val* var_expr /* var expr: nullable MType */;
3271 short int var4 /* : Bool */;
3272 short int var5 /* : Bool */;
3273 val* var_other /* var other: nullable Object */;
3274 short int var7 /* : Bool */;
3275 short int var9 /* : Bool */;
3276 val* var10 /* : MType */;
3277 val* var_unsafe /* var unsafe: MType */;
3278 val* var11 /* : AType */;
3279 val* var13 /* : AType */;
3280 val* var_ntype /* var ntype: AType */;
3281 val* var14 /* : nullable MType */;
3282 val* var_mtype /* var mtype: nullable MType */;
3283 short int var15 /* : Bool */;
3284 short int var16 /* : Bool */;
3285 short int var17 /* : Bool */;
3286 val* var_other19 /* var other: nullable Object */;
3287 short int var20 /* : Bool */;
3288 short int var21 /* : Bool */;
3289 short int var_ /* var : Bool */;
3290 short int var22 /* : Bool */;
3291 short int var24 /* : Bool */;
3292 short int var25 /* : Bool */;
3293 val* var26 /* : MType */;
3294 val* var_umtype /* var umtype: MType */;
3295 val* var27 /* : ModelBuilder */;
3296 val* var29 /* : ModelBuilder */;
3297 static val* varonce;
3298 val* var30 /* : String */;
3299 char* var31 /* : NativeString */;
3300 val* var32 /* : String */;
3301 val* var34 /* : NativeArray[String] */;
3302 static val* varonce33;
3303 static val* varonce35;
3304 val* var36 /* : String */;
3305 char* var37 /* : NativeString */;
3306 val* var38 /* : String */;
3307 static val* varonce39;
3308 val* var40 /* : String */;
3309 char* var41 /* : NativeString */;
3310 val* var42 /* : String */;
3311 static val* varonce43;
3312 val* var44 /* : String */;
3313 char* var45 /* : NativeString */;
3314 val* var46 /* : String */;
3315 static val* varonce47;
3316 val* var48 /* : String */;
3317 char* var49 /* : NativeString */;
3318 val* var50 /* : String */;
3319 static val* varonce51;
3320 val* var52 /* : String */;
3321 char* var53 /* : NativeString */;
3322 val* var54 /* : String */;
3323 val* var55 /* : String */;
3324 val* var56 /* : String */;
3325 val* var57 /* : String */;
3326 val* var58 /* : String */;
3327 val* var59 /* : String */;
3328 var_v = p0;
3329 {
3330 { /* Inline parser_nodes#ADebugTypeExpr#n_expr (self) on <self:ADebugTypeExpr> */
3331 var2 = self->attrs[COLOR_nitc__parser_nodes__ADebugTypeExpr___n_expr].val; /* _n_expr on <self:ADebugTypeExpr> */
3332 if (unlikely(var2 == NULL)) {
3333 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
3334 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2698);
3335 fatal_exit(1);
3336 }
3337 var = var2;
3338 RET_LABEL1:(void)0;
3339 }
3340 }
3341 {
3342 var3 = nitc__typing___nitc__typing__TypeVisitor___visit_expr(var_v, var);
3343 }
3344 var_expr = var3;
3345 if (var_expr == NULL) {
3346 var4 = 1; /* is null */
3347 } else {
3348 var4 = 0; /* arg is null but recv is not */
3349 }
3350 if (0) {
3351 { /* Inline kernel#Object#== (var_expr,((val*)NULL)) on <var_expr:nullable MType> */
3352 var_other = ((val*)NULL);
3353 {
3354 { /* Inline kernel#Object#is_same_instance (var_expr,var_other) on <var_expr:nullable MType(MType)> */
3355 var9 = var_expr == var_other;
3356 var7 = var9;
3357 goto RET_LABEL8;
3358 RET_LABEL8:(void)0;
3359 }
3360 }
3361 var5 = var7;
3362 goto RET_LABEL6;
3363 RET_LABEL6:(void)0;
3364 }
3365 var4 = var5;
3366 }
3367 if (var4){
3368 goto RET_LABEL;
3369 } else {
3370 }
3371 {
3372 var10 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(var_v, var_expr);
3373 }
3374 var_unsafe = var10;
3375 {
3376 { /* Inline parser_nodes#ADebugTypeExpr#n_type (self) on <self:ADebugTypeExpr> */
3377 var13 = self->attrs[COLOR_nitc__parser_nodes__ADebugTypeExpr___n_type].val; /* _n_type on <self:ADebugTypeExpr> */
3378 if (unlikely(var13 == NULL)) {
3379 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_type");
3380 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2701);
3381 fatal_exit(1);
3382 }
3383 var11 = var13;
3384 RET_LABEL12:(void)0;
3385 }
3386 }
3387 var_ntype = var11;
3388 {
3389 var14 = nitc__typing___nitc__typing__TypeVisitor___resolve_mtype(var_v, var_ntype);
3390 }
3391 var_mtype = var14;
3392 if (var_mtype == NULL) {
3393 var16 = 0; /* is null */
3394 } else {
3395 var16 = 1; /* arg is null and recv is not */
3396 }
3397 if (0) {
3398 { /* Inline kernel#Object#!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
3399 var_other19 = ((val*)NULL);
3400 {
3401 var20 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mtype, var_other19); /* == on <var_mtype:nullable MType(MType)>*/
3402 }
3403 var21 = !var20;
3404 var17 = var21;
3405 goto RET_LABEL18;
3406 RET_LABEL18:(void)0;
3407 }
3408 var16 = var17;
3409 }
3410 var_ = var16;
3411 if (var16){
3412 {
3413 { /* Inline kernel#Object#!= (var_mtype,var_expr) on <var_mtype:nullable MType(MType)> */
3414 var_other19 = var_expr;
3415 {
3416 var24 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mtype, var_other19); /* == on <var_mtype:nullable MType(MType)>*/
3417 }
3418 var25 = !var24;
3419 var22 = var25;
3420 goto RET_LABEL23;
3421 RET_LABEL23:(void)0;
3422 }
3423 }
3424 var15 = var22;
3425 } else {
3426 var15 = var_;
3427 }
3428 if (var15){
3429 {
3430 var26 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(var_v, var_mtype);
3431 }
3432 var_umtype = var26;
3433 {
3434 { /* Inline typing#TypeVisitor#modelbuilder (var_v) on <var_v:TypeVisitor> */
3435 var29 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <var_v:TypeVisitor> */
3436 if (unlikely(var29 == NULL)) {
3437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3438 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
3439 fatal_exit(1);
3440 }
3441 var27 = var29;
3442 RET_LABEL28:(void)0;
3443 }
3444 }
3445 if (likely(varonce!=NULL)) {
3446 var30 = varonce;
3447 } else {
3448 var31 = "debug";
3449 var32 = core__flat___NativeString___to_s_full(var31, 5l, 5l);
3450 var30 = var32;
3451 varonce = var30;
3452 }
3453 if (unlikely(varonce33==NULL)) {
3454 var34 = NEW_core__NativeArray(9l, &type_core__NativeArray__core__String);
3455 if (likely(varonce35!=NULL)) {
3456 var36 = varonce35;
3457 } else {
3458 var37 = "Found type ";
3459 var38 = core__flat___NativeString___to_s_full(var37, 11l, 11l);
3460 var36 = var38;
3461 varonce35 = var36;
3462 }
3463 ((struct instance_core__NativeArray*)var34)->values[0]=var36;
3464 if (likely(varonce39!=NULL)) {
3465 var40 = varonce39;
3466 } else {
3467 var41 = " (-> ";
3468 var42 = core__flat___NativeString___to_s_full(var41, 5l, 5l);
3469 var40 = var42;
3470 varonce39 = var40;
3471 }
3472 ((struct instance_core__NativeArray*)var34)->values[2]=var40;
3473 if (likely(varonce43!=NULL)) {
3474 var44 = varonce43;
3475 } else {
3476 var45 = "), expected ";
3477 var46 = core__flat___NativeString___to_s_full(var45, 12l, 12l);
3478 var44 = var46;
3479 varonce43 = var44;
3480 }
3481 ((struct instance_core__NativeArray*)var34)->values[4]=var44;
3482 if (likely(varonce47!=NULL)) {
3483 var48 = varonce47;
3484 } else {
3485 var49 = " (-> ";
3486 var50 = core__flat___NativeString___to_s_full(var49, 5l, 5l);
3487 var48 = var50;
3488 varonce47 = var48;
3489 }
3490 ((struct instance_core__NativeArray*)var34)->values[6]=var48;
3491 if (likely(varonce51!=NULL)) {
3492 var52 = varonce51;
3493 } else {
3494 var53 = ")";
3495 var54 = core__flat___NativeString___to_s_full(var53, 1l, 1l);
3496 var52 = var54;
3497 varonce51 = var52;
3498 }
3499 ((struct instance_core__NativeArray*)var34)->values[8]=var52;
3500 } else {
3501 var34 = varonce33;
3502 varonce33 = NULL;
3503 }
3504 {
3505 var55 = ((val*(*)(val* self))(var_expr->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_expr); /* to_s on <var_expr:nullable MType(MType)>*/
3506 }
3507 ((struct instance_core__NativeArray*)var34)->values[1]=var55;
3508 {
3509 var56 = ((val*(*)(val* self))(var_unsafe->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_unsafe); /* to_s on <var_unsafe:MType>*/
3510 }
3511 ((struct instance_core__NativeArray*)var34)->values[3]=var56;
3512 {
3513 var57 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:nullable MType(MType)>*/
3514 }
3515 ((struct instance_core__NativeArray*)var34)->values[5]=var57;
3516 {
3517 var58 = ((val*(*)(val* self))(var_umtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_umtype); /* to_s on <var_umtype:MType>*/
3518 }
3519 ((struct instance_core__NativeArray*)var34)->values[7]=var58;
3520 {
3521 var59 = ((val*(*)(val* self))(var34->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var34); /* native_to_s on <var34:NativeArray[String]>*/
3522 }
3523 varonce33 = var34;
3524 {
3525 nitc___nitc__ModelBuilder___warning(var27, self, var30, var59); /* Direct call modelbuilder_base#ModelBuilder#warning on <var27:ModelBuilder>*/
3526 }
3527 } else {
3528 }
3529 {
3530 { /* Inline typing#AExpr#is_typed= (self,1) on <self:ADebugTypeExpr> */
3531 self->attrs[COLOR_nitc__typing__AExpr___is_typed].s = 1; /* _is_typed on <self:ADebugTypeExpr> */
3532 RET_LABEL60:(void)0;
3533 }
3534 }
3535 RET_LABEL:;
3536 }