nitc: let CC, CXX and NO_STACKTRACE use env value
[nit.git] / c_src / nitc__auto_super_init.sep.1.c
1 #include "nitc__auto_super_init.sep.0.h"
2 /* method auto_super_init#ToolContext#auto_super_init_phase for (self: ToolContext): Phase */
3 val* nitc__auto_super_init___ToolContext___auto_super_init_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_nitc__auto_super_init__ToolContext___auto_super_init_phase].val; /* _auto_super_init_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _auto_super_init_phase");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__auto_super_init, 25);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method auto_super_init#AutoSuperInitPhase#process_npropdef for (self: AutoSuperInitPhase, APropdef) */
17 void nitc__auto_super_init___nitc__auto_super_init__AutoSuperInitPhase___nitc__phase__Phase__process_npropdef(val* self, val* p0) {
18 val* var_npropdef /* var npropdef: APropdef */;
19 short int var /* : Bool */;
20 int cltype;
21 int idtype;
22 val* var1 /* : ToolContext */;
23 val* var3 /* : ToolContext */;
24 val* var4 /* : ModelBuilder */;
25 var_npropdef = p0;
26 /* <var_npropdef:APropdef> isa AMethPropdef */
27 cltype = type_nitc__AMethPropdef.color;
28 idtype = type_nitc__AMethPropdef.id;
29 if(cltype >= var_npropdef->type->table_size) {
30 var = 0;
31 } else {
32 var = var_npropdef->type->type_table[cltype] == idtype;
33 }
34 if (var){
35 {
36 { /* Inline phase#Phase#toolcontext (self) on <self:AutoSuperInitPhase> */
37 var3 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:AutoSuperInitPhase> */
38 if (unlikely(var3 == NULL)) {
39 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
40 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
41 fatal_exit(1);
42 }
43 var1 = var3;
44 RET_LABEL2:(void)0;
45 }
46 }
47 {
48 var4 = nitc__modelbuilder_base___ToolContext___modelbuilder(var1);
49 }
50 {
51 nitc__auto_super_init___AMethPropdef___do_auto_super_init(var_npropdef, var4); /* Direct call auto_super_init#AMethPropdef#do_auto_super_init on <var_npropdef:APropdef(AMethPropdef)>*/
52 }
53 } else {
54 }
55 RET_LABEL:;
56 }
57 /* method auto_super_init#AutoSuperInitVisitor#visit for (self: AutoSuperInitVisitor, ANode) */
58 void nitc__auto_super_init___nitc__auto_super_init__AutoSuperInitVisitor___nitc__parser_nodes__Visitor__visit(val* self, val* p0) {
59 val* var_n /* var n: ANode */;
60 var_n = p0;
61 {
62 ((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nitc__auto_super_init__ANode__accept_auto_super_init]))(var_n, self); /* accept_auto_super_init on <var_n:ANode>*/
63 }
64 {
65 ((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nitc__parser_nodes__ANode__visit_all]))(var_n, self); /* visit_all on <var_n:ANode>*/
66 }
67 RET_LABEL:;
68 }
69 /* method auto_super_init#AutoSuperInitVisitor#has_explicit_super_init for (self: AutoSuperInitVisitor): nullable ANode */
70 val* nitc__auto_super_init___nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init(val* self) {
71 val* var /* : nullable ANode */;
72 val* var1 /* : nullable ANode */;
73 var1 = self->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init].val; /* _has_explicit_super_init on <self:AutoSuperInitVisitor> */
74 var = var1;
75 RET_LABEL:;
76 return var;
77 }
78 /* method auto_super_init#AutoSuperInitVisitor#has_explicit_super_init= for (self: AutoSuperInitVisitor, nullable ANode) */
79 void nitc__auto_super_init___nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init_61d(val* self, val* p0) {
80 self->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init].val = p0; /* _has_explicit_super_init on <self:AutoSuperInitVisitor> */
81 RET_LABEL:;
82 }
83 /* method auto_super_init#AutoSuperInitVisitor#is_broken for (self: AutoSuperInitVisitor): Bool */
84 short int nitc__auto_super_init___nitc__auto_super_init__AutoSuperInitVisitor___is_broken(val* self) {
85 short int var /* : Bool */;
86 short int var1 /* : Bool */;
87 var1 = self->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___is_broken].s; /* _is_broken on <self:AutoSuperInitVisitor> */
88 var = var1;
89 RET_LABEL:;
90 return var;
91 }
92 /* method auto_super_init#AutoSuperInitVisitor#is_broken= for (self: AutoSuperInitVisitor, Bool) */
93 void nitc__auto_super_init___nitc__auto_super_init__AutoSuperInitVisitor___is_broken_61d(val* self, short int p0) {
94 self->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___is_broken].s = p0; /* _is_broken on <self:AutoSuperInitVisitor> */
95 RET_LABEL:;
96 }
97 /* method auto_super_init#AMethPropdef#auto_super_inits for (self: AMethPropdef): nullable Array[CallSite] */
98 val* nitc__auto_super_init___AMethPropdef___auto_super_inits(val* self) {
99 val* var /* : nullable Array[CallSite] */;
100 val* var1 /* : nullable Array[CallSite] */;
101 var1 = self->attrs[COLOR_nitc__auto_super_init__AMethPropdef___auto_super_inits].val; /* _auto_super_inits on <self:AMethPropdef> */
102 var = var1;
103 RET_LABEL:;
104 return var;
105 }
106 /* method auto_super_init#AMethPropdef#auto_super_inits= for (self: AMethPropdef, nullable Array[CallSite]) */
107 void nitc__auto_super_init___AMethPropdef___auto_super_inits_61d(val* self, val* p0) {
108 self->attrs[COLOR_nitc__auto_super_init__AMethPropdef___auto_super_inits].val = p0; /* _auto_super_inits on <self:AMethPropdef> */
109 RET_LABEL:;
110 }
111 /* method auto_super_init#AMethPropdef#auto_super_call for (self: AMethPropdef): Bool */
112 short int nitc__auto_super_init___AMethPropdef___auto_super_call(val* self) {
113 short int var /* : Bool */;
114 short int var1 /* : Bool */;
115 var1 = self->attrs[COLOR_nitc__auto_super_init__AMethPropdef___auto_super_call].s; /* _auto_super_call on <self:AMethPropdef> */
116 var = var1;
117 RET_LABEL:;
118 return var;
119 }
120 /* method auto_super_init#AMethPropdef#auto_super_call= for (self: AMethPropdef, Bool) */
121 void nitc__auto_super_init___AMethPropdef___auto_super_call_61d(val* self, short int p0) {
122 self->attrs[COLOR_nitc__auto_super_init__AMethPropdef___auto_super_call].s = p0; /* _auto_super_call on <self:AMethPropdef> */
123 RET_LABEL:;
124 }
125 /* method auto_super_init#AMethPropdef#do_auto_super_init for (self: AMethPropdef, ModelBuilder) */
126 void nitc__auto_super_init___AMethPropdef___do_auto_super_init(val* self, val* p0) {
127 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
128 val* var /* : nullable ANode */;
129 val* var2 /* : nullable ANode */;
130 short int var3 /* : Bool */;
131 int cltype;
132 int idtype;
133 const char* var_class_name;
134 val* var4 /* : nullable MClassDef */;
135 val* var6 /* : nullable MClassDef */;
136 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
137 short int var7 /* : Bool */;
138 short int var8 /* : Bool */;
139 short int var9 /* : Bool */;
140 val* var_other /* var other: nullable Object */;
141 short int var11 /* : Bool */;
142 short int var13 /* : Bool */;
143 short int var_ /* var : Bool */;
144 short int var14 /* : Bool */;
145 short int var16 /* : Bool */;
146 val* var17 /* : nullable MPropDef */;
147 val* var19 /* : nullable MPropDef */;
148 val* var_mpropdef /* var mpropdef: nullable MMethodDef */;
149 short int var20 /* : Bool */;
150 short int var21 /* : Bool */;
151 short int var22 /* : Bool */;
152 short int var24 /* : Bool */;
153 short int var26 /* : Bool */;
154 short int var_27 /* var : Bool */;
155 short int var28 /* : Bool */;
156 short int var30 /* : Bool */;
157 val* var31 /* : MClassDef */;
158 val* var33 /* : MClassDef */;
159 val* var34 /* : MModule */;
160 val* var36 /* : MModule */;
161 val* var_mmodule /* var mmodule: MModule */;
162 val* var37 /* : MClassType */;
163 val* var39 /* : MClassType */;
164 val* var_anchor /* var anchor: MClassType */;
165 val* var40 /* : MClass */;
166 val* var42 /* : MClass */;
167 val* var43 /* : MClassType */;
168 val* var45 /* : MClassType */;
169 val* var_recvtype /* var recvtype: MClassType */;
170 static val* varonce;
171 val* var46 /* : String */;
172 char* var47 /* : NativeString */;
173 val* var48 /* : String */;
174 val* var49 /* : nullable AAnnotation */;
175 val* var_nosuper /* var nosuper: nullable AAnnotation */;
176 short int var50 /* : Bool */;
177 val* var51 /* : MProperty */;
178 val* var53 /* : MProperty */;
179 short int var54 /* : Bool */;
180 short int var56 /* : Bool */;
181 short int var57 /* : Bool */;
182 short int var_58 /* var : Bool */;
183 val* var59 /* : MProperty */;
184 val* var61 /* : MProperty */;
185 short int var62 /* : Bool */;
186 short int var64 /* : Bool */;
187 short int var65 /* : Bool */;
188 short int var66 /* : Bool */;
189 val* var_other68 /* var other: nullable Object */;
190 short int var69 /* : Bool */;
191 short int var70 /* : Bool */;
192 static val* varonce71;
193 val* var72 /* : String */;
194 char* var73 /* : NativeString */;
195 val* var74 /* : String */;
196 val* var75 /* : nullable AExpr */;
197 val* var77 /* : nullable AExpr */;
198 val* var_nblock /* var nblock: nullable AExpr */;
199 short int var78 /* : Bool */;
200 short int var79 /* : Bool */;
201 short int var81 /* : Bool */;
202 short int var82 /* : Bool */;
203 val* var83 /* : AutoSuperInitVisitor */;
204 val* var_v /* var v: AutoSuperInitVisitor */;
205 val* var85 /* : nullable ANode */;
206 val* var87 /* : nullable ANode */;
207 val* var_anode /* var anode: nullable ANode */;
208 short int var88 /* : Bool */;
209 short int var89 /* : Bool */;
210 short int var91 /* : Bool */;
211 short int var92 /* : Bool */;
212 short int var93 /* : Bool */;
213 short int var94 /* : Bool */;
214 short int var96 /* : Bool */;
215 short int var97 /* : Bool */;
216 static val* varonce98;
217 val* var99 /* : String */;
218 char* var100 /* : NativeString */;
219 val* var101 /* : String */;
220 short int var102 /* : Bool */;
221 short int var104 /* : Bool */;
222 short int var105 /* : Bool */;
223 short int var106 /* : Bool */;
224 short int var108 /* : Bool */;
225 short int var109 /* : Bool */;
226 short int var110 /* : Bool */;
227 short int var111 /* : Bool */;
228 val* var114 /* : ToolContext */;
229 val* var116 /* : ToolContext */;
230 val* var118 /* : NativeArray[String] */;
231 static val* varonce117;
232 static val* varonce119;
233 val* var120 /* : String */;
234 char* var121 /* : NativeString */;
235 val* var122 /* : String */;
236 val* var123 /* : String */;
237 val* var124 /* : String */;
238 val* var125 /* : Array[CallSite] */;
239 val* var_auto_super_inits /* var auto_super_inits: Array[CallSite] */;
240 val* var126 /* : nullable MMethod */;
241 val* var128 /* : nullable MMethod */;
242 val* var_the_root_init_mmethod /* var the_root_init_mmethod: nullable MMethod */;
243 short int var129 /* : Bool */;
244 short int var130 /* : Bool */;
245 short int var131 /* : Bool */;
246 short int var133 /* : Bool */;
247 short int var134 /* : Bool */;
248 short int var_135 /* var : Bool */;
249 short int var136 /* : Bool */;
250 val* var137 /* : Array[MPropDef] */;
251 val* var_candidatedefs /* var candidatedefs: Array[MMethodDef] */;
252 short int var138 /* : Bool */;
253 val* var140 /* : nullable Object */;
254 val* var_candidatedef /* var candidatedef: MMethodDef */;
255 long var141 /* : Int */;
256 long var143 /* : Int */;
257 short int var144 /* : Bool */;
258 short int var146 /* : Bool */;
259 int cltype147;
260 int idtype148;
261 const char* var_class_name149;
262 short int var150 /* : Bool */;
263 val* var151 /* : nullable Object */;
264 val* var_cd2 /* var cd2: MMethodDef */;
265 val* var153 /* : NativeArray[String] */;
266 static val* varonce152;
267 static val* varonce154;
268 val* var155 /* : String */;
269 char* var156 /* : NativeString */;
270 val* var157 /* : String */;
271 static val* varonce158;
272 val* var159 /* : String */;
273 char* var160 /* : NativeString */;
274 val* var161 /* : String */;
275 static val* varonce162;
276 val* var163 /* : String */;
277 char* var164 /* : NativeString */;
278 val* var165 /* : String */;
279 static val* varonce166;
280 val* var167 /* : String */;
281 char* var168 /* : NativeString */;
282 val* var169 /* : String */;
283 static val* varonce170;
284 val* var171 /* : String */;
285 char* var172 /* : NativeString */;
286 val* var173 /* : String */;
287 val* var174 /* : String */;
288 val* var175 /* : Array[MProperty] */;
289 val* var177 /* : Array[MProperty] */;
290 static val* varonce178;
291 val* var179 /* : String */;
292 char* var180 /* : NativeString */;
293 val* var181 /* : String */;
294 val* var182 /* : String */;
295 val* var183 /* : String */;
296 val* var184 /* : Array[MProperty] */;
297 val* var186 /* : Array[MProperty] */;
298 static val* varonce187;
299 val* var188 /* : String */;
300 char* var189 /* : NativeString */;
301 val* var190 /* : String */;
302 val* var191 /* : String */;
303 val* var192 /* : String */;
304 val* var194 /* : nullable MSignature */;
305 val* var195 /* : nullable MSignature */;
306 val* var197 /* : nullable MSignature */;
307 val* var198 /* : nullable MSignature */;
308 val* var200 /* : nullable MSignature */;
309 val* var_msignature /* var msignature: nullable MSignature */;
310 val* var201 /* : MSignature */;
311 long var202 /* : Int */;
312 short int var203 /* : Bool */;
313 short int var205 /* : Bool */;
314 int cltype206;
315 int idtype207;
316 const char* var_class_name208;
317 short int var209 /* : Bool */;
318 val* var211 /* : NativeArray[String] */;
319 static val* varonce210;
320 static val* varonce212;
321 val* var213 /* : String */;
322 char* var214 /* : NativeString */;
323 val* var215 /* : String */;
324 static val* varonce216;
325 val* var217 /* : String */;
326 char* var218 /* : NativeString */;
327 val* var219 /* : String */;
328 static val* varonce220;
329 val* var221 /* : String */;
330 char* var222 /* : NativeString */;
331 val* var223 /* : String */;
332 val* var224 /* : String */;
333 val* var225 /* : String */;
334 long var226 /* : Int */;
335 val* var227 /* : String */;
336 val* var228 /* : String */;
337 val* var230 /* : CallSite */;
338 val* var231 /* : Location */;
339 val* var_callsite /* var callsite: CallSite */;
340 val* var232 /* : ToolContext */;
341 val* var234 /* : ToolContext */;
342 val* var236 /* : NativeArray[String] */;
343 static val* varonce235;
344 static val* varonce237;
345 val* var238 /* : String */;
346 char* var239 /* : NativeString */;
347 val* var240 /* : String */;
348 static val* varonce241;
349 val* var242 /* : String */;
350 char* var243 /* : NativeString */;
351 val* var244 /* : String */;
352 val* var245 /* : String */;
353 val* var246 /* : String */;
354 val* var247 /* : String */;
355 short int var248 /* : Bool */;
356 val* var250 /* : NativeArray[String] */;
357 static val* varonce249;
358 static val* varonce251;
359 val* var252 /* : String */;
360 char* var253 /* : NativeString */;
361 val* var254 /* : String */;
362 static val* varonce255;
363 val* var256 /* : String */;
364 char* var257 /* : NativeString */;
365 val* var258 /* : String */;
366 val* var259 /* : String */;
367 val* var260 /* : String */;
368 var_modelbuilder = p0;
369 {
370 { /* Inline parser_nodes#ANode#parent (self) on <self:AMethPropdef> */
371 var2 = self->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <self:AMethPropdef> */
372 var = var2;
373 RET_LABEL1:(void)0;
374 }
375 }
376 /* <var:nullable ANode> isa AClassdef */
377 cltype = type_nitc__AClassdef.color;
378 idtype = type_nitc__AClassdef.id;
379 if(var == NULL) {
380 var3 = 0;
381 } else {
382 if(cltype >= var->type->table_size) {
383 var3 = 0;
384 } else {
385 var3 = var->type->type_table[cltype] == idtype;
386 }
387 }
388 if (unlikely(!var3)) {
389 var_class_name = var == NULL ? "null" : var->type->name;
390 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AClassdef", var_class_name);
391 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__auto_super_init, 59);
392 fatal_exit(1);
393 }
394 {
395 { /* Inline modelize_class#AClassdef#mclassdef (var) on <var:nullable ANode(AClassdef)> */
396 var6 = var->attrs[COLOR_nitc__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var:nullable ANode(AClassdef)> */
397 var4 = var6;
398 RET_LABEL5:(void)0;
399 }
400 }
401 var_mclassdef = var4;
402 if (var_mclassdef == NULL) {
403 var8 = 1; /* is null */
404 } else {
405 var8 = 0; /* arg is null but recv is not */
406 }
407 if (0) {
408 { /* Inline kernel#Object#== (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
409 var_other = ((val*)NULL);
410 {
411 { /* Inline kernel#Object#is_same_instance (var_mclassdef,var_other) on <var_mclassdef:nullable MClassDef(MClassDef)> */
412 var13 = var_mclassdef == var_other;
413 var11 = var13;
414 goto RET_LABEL12;
415 RET_LABEL12:(void)0;
416 }
417 }
418 var9 = var11;
419 goto RET_LABEL10;
420 RET_LABEL10:(void)0;
421 }
422 var8 = var9;
423 }
424 var_ = var8;
425 if (var8){
426 var7 = var_;
427 } else {
428 {
429 { /* Inline model_base#MEntity#is_broken (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
430 var16 = var_mclassdef->attrs[COLOR_nitc__model_base__MEntity___is_broken].s; /* _is_broken on <var_mclassdef:nullable MClassDef(MClassDef)> */
431 var14 = var16;
432 RET_LABEL15:(void)0;
433 }
434 }
435 var7 = var14;
436 }
437 if (var7){
438 goto RET_LABEL;
439 } else {
440 }
441 {
442 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
443 var19 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
444 var17 = var19;
445 RET_LABEL18:(void)0;
446 }
447 }
448 var_mpropdef = var17;
449 if (var_mpropdef == NULL) {
450 var21 = 1; /* is null */
451 } else {
452 var21 = 0; /* arg is null but recv is not */
453 }
454 if (0) {
455 { /* Inline kernel#Object#== (var_mpropdef,((val*)NULL)) on <var_mpropdef:nullable MMethodDef> */
456 var_other = ((val*)NULL);
457 {
458 { /* Inline kernel#Object#is_same_instance (var_mpropdef,var_other) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
459 var26 = var_mpropdef == var_other;
460 var24 = var26;
461 goto RET_LABEL25;
462 RET_LABEL25:(void)0;
463 }
464 }
465 var22 = var24;
466 goto RET_LABEL23;
467 RET_LABEL23:(void)0;
468 }
469 var21 = var22;
470 }
471 var_27 = var21;
472 if (var21){
473 var20 = var_27;
474 } else {
475 {
476 { /* Inline model_base#MEntity#is_broken (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
477 var30 = var_mpropdef->attrs[COLOR_nitc__model_base__MEntity___is_broken].s; /* _is_broken on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
478 var28 = var30;
479 RET_LABEL29:(void)0;
480 }
481 }
482 var20 = var28;
483 }
484 if (var20){
485 goto RET_LABEL;
486 } else {
487 }
488 {
489 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
490 var33 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
491 if (unlikely(var33 == NULL)) {
492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
493 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
494 fatal_exit(1);
495 }
496 var31 = var33;
497 RET_LABEL32:(void)0;
498 }
499 }
500 {
501 { /* Inline model#MClassDef#mmodule (var31) on <var31:MClassDef> */
502 var36 = var31->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var31:MClassDef> */
503 if (unlikely(var36 == NULL)) {
504 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
505 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 573);
506 fatal_exit(1);
507 }
508 var34 = var36;
509 RET_LABEL35:(void)0;
510 }
511 }
512 var_mmodule = var34;
513 {
514 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
515 var39 = var_mclassdef->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:nullable MClassDef(MClassDef)> */
516 if (unlikely(var39 == NULL)) {
517 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
518 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
519 fatal_exit(1);
520 }
521 var37 = var39;
522 RET_LABEL38:(void)0;
523 }
524 }
525 var_anchor = var37;
526 {
527 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
528 var42 = var_mclassdef->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:nullable MClassDef(MClassDef)> */
529 if (unlikely(var42 == NULL)) {
530 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
531 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 576);
532 fatal_exit(1);
533 }
534 var40 = var42;
535 RET_LABEL41:(void)0;
536 }
537 }
538 {
539 { /* Inline model#MClass#mclass_type (var40) on <var40:MClass> */
540 var45 = var40->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var40:MClass> */
541 if (unlikely(var45 == NULL)) {
542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
543 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 507);
544 fatal_exit(1);
545 }
546 var43 = var45;
547 RET_LABEL44:(void)0;
548 }
549 }
550 var_recvtype = var43;
551 if (likely(varonce!=NULL)) {
552 var46 = varonce;
553 } else {
554 var47 = "nosuper";
555 var48 = core__flat___NativeString___to_s_full(var47, 7l, 7l);
556 var46 = var48;
557 varonce = var46;
558 }
559 {
560 var49 = nitc__annotation___Prod___get_single_annotation(self, var46, var_modelbuilder);
561 }
562 var_nosuper = var49;
563 {
564 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
565 var53 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
566 if (unlikely(var53 == NULL)) {
567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
568 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
569 fatal_exit(1);
570 }
571 var51 = var53;
572 RET_LABEL52:(void)0;
573 }
574 }
575 {
576 { /* Inline model#MMethod#is_init (var51) on <var51:MProperty(MMethod)> */
577 var56 = var51->attrs[COLOR_nitc__model__MMethod___is_init].s; /* _is_init on <var51:MProperty(MMethod)> */
578 var54 = var56;
579 RET_LABEL55:(void)0;
580 }
581 }
582 var57 = !var54;
583 var_58 = var57;
584 if (var57){
585 var50 = var_58;
586 } else {
587 {
588 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
589 var61 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
590 if (unlikely(var61 == NULL)) {
591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
592 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
593 fatal_exit(1);
594 }
595 var59 = var61;
596 RET_LABEL60:(void)0;
597 }
598 }
599 {
600 { /* Inline model#MMethod#is_new (var59) on <var59:MProperty(MMethod)> */
601 var64 = var59->attrs[COLOR_nitc__model__MMethod___is_new].s; /* _is_new on <var59:MProperty(MMethod)> */
602 var62 = var64;
603 RET_LABEL63:(void)0;
604 }
605 }
606 var50 = var62;
607 }
608 if (var50){
609 if (var_nosuper == NULL) {
610 var65 = 0; /* is null */
611 } else {
612 var65 = 1; /* arg is null and recv is not */
613 }
614 if (0) {
615 { /* Inline kernel#Object#!= (var_nosuper,((val*)NULL)) on <var_nosuper:nullable AAnnotation> */
616 var_other68 = ((val*)NULL);
617 {
618 var69 = ((short int(*)(val* self, val* p0))(var_nosuper->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_nosuper, var_other68); /* == on <var_nosuper:nullable AAnnotation(AAnnotation)>*/
619 }
620 var70 = !var69;
621 var66 = var70;
622 goto RET_LABEL67;
623 RET_LABEL67:(void)0;
624 }
625 var65 = var66;
626 }
627 if (var65){
628 if (likely(varonce71!=NULL)) {
629 var72 = varonce71;
630 } else {
631 var73 = "Error: `nosuper` only allowed in `init`.";
632 var74 = core__flat___NativeString___to_s_full(var73, 40l, 40l);
633 var72 = var74;
634 varonce71 = var72;
635 }
636 {
637 nitc___nitc__ModelBuilder___error(var_modelbuilder, var_nosuper, var72); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
638 }
639 } else {
640 }
641 goto RET_LABEL;
642 } else {
643 }
644 {
645 { /* Inline parser_nodes#AMethPropdef#n_block (self) on <self:AMethPropdef> */
646 var77 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
647 var75 = var77;
648 RET_LABEL76:(void)0;
649 }
650 }
651 var_nblock = var75;
652 if (var_nblock == NULL) {
653 var78 = 0; /* is null */
654 } else {
655 var78 = 1; /* arg is null and recv is not */
656 }
657 if (0) {
658 { /* Inline kernel#Object#!= (var_nblock,((val*)NULL)) on <var_nblock:nullable AExpr> */
659 var_other68 = ((val*)NULL);
660 {
661 var81 = ((short int(*)(val* self, val* p0))(var_nblock->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_nblock, var_other68); /* == on <var_nblock:nullable AExpr(AExpr)>*/
662 }
663 var82 = !var81;
664 var79 = var82;
665 goto RET_LABEL80;
666 RET_LABEL80:(void)0;
667 }
668 var78 = var79;
669 }
670 if (var78){
671 var83 = NEW_nitc__auto_super_init__AutoSuperInitVisitor(&type_nitc__auto_super_init__AutoSuperInitVisitor);
672 {
673 { /* Inline kernel#Object#init (var83) on <var83:AutoSuperInitVisitor> */
674 RET_LABEL84:(void)0;
675 }
676 }
677 var_v = var83;
678 {
679 nitc___nitc__Visitor___enter_visit(var_v, var_nblock); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:AutoSuperInitVisitor>*/
680 }
681 {
682 { /* Inline auto_super_init#AutoSuperInitVisitor#has_explicit_super_init (var_v) on <var_v:AutoSuperInitVisitor> */
683 var87 = var_v->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init].val; /* _has_explicit_super_init on <var_v:AutoSuperInitVisitor> */
684 var85 = var87;
685 RET_LABEL86:(void)0;
686 }
687 }
688 var_anode = var85;
689 if (var_anode == NULL) {
690 var88 = 0; /* is null */
691 } else {
692 var88 = 1; /* arg is null and recv is not */
693 }
694 if (0) {
695 { /* Inline kernel#Object#!= (var_anode,((val*)NULL)) on <var_anode:nullable ANode> */
696 var_other68 = ((val*)NULL);
697 {
698 var91 = ((short int(*)(val* self, val* p0))(var_anode->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_anode, var_other68); /* == on <var_anode:nullable ANode(ANode)>*/
699 }
700 var92 = !var91;
701 var89 = var92;
702 goto RET_LABEL90;
703 RET_LABEL90:(void)0;
704 }
705 var88 = var89;
706 }
707 if (var88){
708 if (var_nosuper == NULL) {
709 var93 = 0; /* is null */
710 } else {
711 var93 = 1; /* arg is null and recv is not */
712 }
713 if (0) {
714 { /* Inline kernel#Object#!= (var_nosuper,((val*)NULL)) on <var_nosuper:nullable AAnnotation> */
715 var_other68 = ((val*)NULL);
716 {
717 var96 = ((short int(*)(val* self, val* p0))(var_nosuper->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_nosuper, var_other68); /* == on <var_nosuper:nullable AAnnotation(AAnnotation)>*/
718 }
719 var97 = !var96;
720 var94 = var97;
721 goto RET_LABEL95;
722 RET_LABEL95:(void)0;
723 }
724 var93 = var94;
725 }
726 if (var93){
727 if (likely(varonce98!=NULL)) {
728 var99 = varonce98;
729 } else {
730 var100 = "Error: method is annotated `nosuper` but a super-constructor call is present.";
731 var101 = core__flat___NativeString___to_s_full(var100, 77l, 77l);
732 var99 = var101;
733 varonce98 = var99;
734 }
735 {
736 nitc___nitc__ModelBuilder___error(var_modelbuilder, var_anode, var99); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
737 }
738 } else {
739 }
740 goto RET_LABEL;
741 } else {
742 }
743 {
744 { /* Inline auto_super_init#AutoSuperInitVisitor#is_broken (var_v) on <var_v:AutoSuperInitVisitor> */
745 var104 = var_v->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___is_broken].s; /* _is_broken on <var_v:AutoSuperInitVisitor> */
746 var102 = var104;
747 RET_LABEL103:(void)0;
748 }
749 }
750 if (var102){
751 goto RET_LABEL;
752 } else {
753 }
754 } else {
755 }
756 if (var_nosuper == NULL) {
757 var105 = 0; /* is null */
758 } else {
759 var105 = 1; /* arg is null and recv is not */
760 }
761 if (0) {
762 { /* Inline kernel#Object#!= (var_nosuper,((val*)NULL)) on <var_nosuper:nullable AAnnotation> */
763 var_other68 = ((val*)NULL);
764 {
765 var108 = ((short int(*)(val* self, val* p0))(var_nosuper->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_nosuper, var_other68); /* == on <var_nosuper:nullable AAnnotation(AAnnotation)>*/
766 }
767 var109 = !var108;
768 var106 = var109;
769 goto RET_LABEL107;
770 RET_LABEL107:(void)0;
771 }
772 var105 = var106;
773 }
774 if (var105){
775 goto RET_LABEL;
776 } else {
777 }
778 {
779 var110 = nitc___nitc__MPropDef___is_intro(var_mpropdef);
780 }
781 var111 = !var110;
782 if (var111){
783 {
784 { /* Inline auto_super_init#AMethPropdef#auto_super_call= (self,1) on <self:AMethPropdef> */
785 self->attrs[COLOR_nitc__auto_super_init__AMethPropdef___auto_super_call].s = 1; /* _auto_super_call on <self:AMethPropdef> */
786 RET_LABEL112:(void)0;
787 }
788 }
789 {
790 { /* Inline modelize_property#MPropDef#has_supercall= (var_mpropdef,1) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
791 var_mpropdef->attrs[COLOR_nitc__modelize_property__MPropDef___has_supercall].s = 1; /* _has_supercall on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
792 RET_LABEL113:(void)0;
793 }
794 }
795 {
796 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
797 var116 = var_modelbuilder->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var_modelbuilder:ModelBuilder> */
798 if (unlikely(var116 == NULL)) {
799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
800 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
801 fatal_exit(1);
802 }
803 var114 = var116;
804 RET_LABEL115:(void)0;
805 }
806 }
807 if (unlikely(varonce117==NULL)) {
808 var118 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
809 if (likely(varonce119!=NULL)) {
810 var120 = varonce119;
811 } else {
812 var121 = "Auto-super call for ";
813 var122 = core__flat___NativeString___to_s_full(var121, 20l, 20l);
814 var120 = var122;
815 varonce119 = var120;
816 }
817 ((struct instance_core__NativeArray*)var118)->values[0]=var120;
818 } else {
819 var118 = varonce117;
820 varonce117 = NULL;
821 }
822 {
823 var123 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/
824 }
825 ((struct instance_core__NativeArray*)var118)->values[1]=var123;
826 {
827 var124 = ((val*(*)(val* self))(var118->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var118); /* native_to_s on <var118:NativeArray[String]>*/
828 }
829 varonce117 = var118;
830 {
831 nitc___nitc__ToolContext___info(var114, var124, 4l); /* Direct call toolcontext#ToolContext#info on <var114:ToolContext>*/
832 }
833 goto RET_LABEL;
834 } else {
835 }
836 var125 = NEW_core__Array(&type_core__Array__nitc__CallSite);
837 {
838 core___core__Array___core__kernel__Object__init(var125); /* Direct call array#Array#init on <var125:Array[CallSite]>*/
839 }
840 var_auto_super_inits = var125;
841 {
842 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
843 var128 = var_modelbuilder->attrs[COLOR_nitc__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
844 var126 = var128;
845 RET_LABEL127:(void)0;
846 }
847 }
848 var_the_root_init_mmethod = var126;
849 if (var_the_root_init_mmethod == NULL) {
850 var130 = 0; /* is null */
851 } else {
852 var130 = 1; /* arg is null and recv is not */
853 }
854 if (0) {
855 { /* Inline kernel#Object#!= (var_the_root_init_mmethod,((val*)NULL)) on <var_the_root_init_mmethod:nullable MMethod> */
856 var_other68 = ((val*)NULL);
857 {
858 var133 = ((short int(*)(val* self, val* p0))(var_the_root_init_mmethod->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_the_root_init_mmethod, var_other68); /* == on <var_the_root_init_mmethod:nullable MMethod(MMethod)>*/
859 }
860 var134 = !var133;
861 var131 = var134;
862 goto RET_LABEL132;
863 RET_LABEL132:(void)0;
864 }
865 var130 = var131;
866 }
867 var_135 = var130;
868 if (var130){
869 {
870 var136 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_auto_super_inits);
871 }
872 var129 = var136;
873 } else {
874 var129 = var_135;
875 }
876 if (var129){
877 {
878 var137 = nitc___nitc__MProperty___lookup_definitions(var_the_root_init_mmethod, var_mmodule, var_anchor);
879 }
880 var_candidatedefs = var137;
881 {
882 var138 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_candidatedefs);
883 }
884 if (var138){
885 {
886 { /* Inline modelbuilder_base#ANode#is_broken= (self,1) on <self:AMethPropdef> */
887 self->attrs[COLOR_nitc__modelbuilder_base__ANode___is_broken].s = 1; /* _is_broken on <self:AMethPropdef> */
888 RET_LABEL139:(void)0;
889 }
890 }
891 goto RET_LABEL;
892 } else {
893 }
894 {
895 var140 = core___core__SequenceRead___Collection__first(var_candidatedefs);
896 }
897 var_candidatedef = var140;
898 {
899 { /* Inline array#AbstractArrayRead#length (var_candidatedefs) on <var_candidatedefs:Array[MMethodDef]> */
900 var143 = var_candidatedefs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_candidatedefs:Array[MMethodDef]> */
901 var141 = var143;
902 RET_LABEL142:(void)0;
903 }
904 }
905 {
906 { /* Inline kernel#Int#> (var141,1l) on <var141:Int> */
907 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
908 /* <1l:Int> isa OTHER */
909 var146 = 1; /* easy <1l:Int> isa OTHER*/
910 if (unlikely(!var146)) {
911 var_class_name149 = type_core__Int.name;
912 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name149);
913 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
914 fatal_exit(1);
915 }
916 var150 = var141 > 1l;
917 var144 = var150;
918 goto RET_LABEL145;
919 RET_LABEL145:(void)0;
920 }
921 }
922 if (var144){
923 {
924 var151 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_candidatedefs, 1l);
925 }
926 var_cd2 = var151;
927 if (unlikely(varonce152==NULL)) {
928 var153 = NEW_core__NativeArray(9l, &type_core__NativeArray__core__String);
929 if (likely(varonce154!=NULL)) {
930 var155 = varonce154;
931 } else {
932 var156 = "Error: cannot do an implicit constructor call to conflicting inherited inits `";
933 var157 = core__flat___NativeString___to_s_full(var156, 78l, 78l);
934 var155 = var157;
935 varonce154 = var155;
936 }
937 ((struct instance_core__NativeArray*)var153)->values[0]=var155;
938 if (likely(varonce158!=NULL)) {
939 var159 = varonce158;
940 } else {
941 var160 = "(";
942 var161 = core__flat___NativeString___to_s_full(var160, 1l, 1l);
943 var159 = var161;
944 varonce158 = var159;
945 }
946 ((struct instance_core__NativeArray*)var153)->values[2]=var159;
947 if (likely(varonce162!=NULL)) {
948 var163 = varonce162;
949 } else {
950 var164 = "`) and `";
951 var165 = core__flat___NativeString___to_s_full(var164, 8l, 8l);
952 var163 = var165;
953 varonce162 = var163;
954 }
955 ((struct instance_core__NativeArray*)var153)->values[4]=var163;
956 if (likely(varonce166!=NULL)) {
957 var167 = varonce166;
958 } else {
959 var168 = "(";
960 var169 = core__flat___NativeString___to_s_full(var168, 1l, 1l);
961 var167 = var169;
962 varonce166 = var167;
963 }
964 ((struct instance_core__NativeArray*)var153)->values[6]=var167;
965 if (likely(varonce170!=NULL)) {
966 var171 = varonce170;
967 } else {
968 var172 = "`). NOTE: Do not mix old-style and new-style init!";
969 var173 = core__flat___NativeString___to_s_full(var172, 50l, 50l);
970 var171 = var173;
971 varonce170 = var171;
972 }
973 ((struct instance_core__NativeArray*)var153)->values[8]=var171;
974 } else {
975 var153 = varonce152;
976 varonce152 = NULL;
977 }
978 {
979 var174 = ((val*(*)(val* self))(var_cd2->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_cd2); /* to_s on <var_cd2:MMethodDef>*/
980 }
981 ((struct instance_core__NativeArray*)var153)->values[1]=var174;
982 {
983 { /* Inline model#MMethodDef#initializers (var_cd2) on <var_cd2:MMethodDef> */
984 var177 = var_cd2->attrs[COLOR_nitc__model__MMethodDef___initializers].val; /* _initializers on <var_cd2:MMethodDef> */
985 if (unlikely(var177 == NULL)) {
986 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
987 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2363);
988 fatal_exit(1);
989 }
990 var175 = var177;
991 RET_LABEL176:(void)0;
992 }
993 }
994 if (likely(varonce178!=NULL)) {
995 var179 = varonce178;
996 } else {
997 var180 = ", ";
998 var181 = core__flat___NativeString___to_s_full(var180, 2l, 2l);
999 var179 = var181;
1000 varonce178 = var179;
1001 }
1002 {
1003 var182 = core__abstract_text___Collection___join(var175, var179);
1004 }
1005 ((struct instance_core__NativeArray*)var153)->values[3]=var182;
1006 {
1007 var183 = ((val*(*)(val* self))(var_candidatedef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_candidatedef); /* to_s on <var_candidatedef:MMethodDef>*/
1008 }
1009 ((struct instance_core__NativeArray*)var153)->values[5]=var183;
1010 {
1011 { /* Inline model#MMethodDef#initializers (var_candidatedef) on <var_candidatedef:MMethodDef> */
1012 var186 = var_candidatedef->attrs[COLOR_nitc__model__MMethodDef___initializers].val; /* _initializers on <var_candidatedef:MMethodDef> */
1013 if (unlikely(var186 == NULL)) {
1014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
1015 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2363);
1016 fatal_exit(1);
1017 }
1018 var184 = var186;
1019 RET_LABEL185:(void)0;
1020 }
1021 }
1022 if (likely(varonce187!=NULL)) {
1023 var188 = varonce187;
1024 } else {
1025 var189 = ", ";
1026 var190 = core__flat___NativeString___to_s_full(var189, 2l, 2l);
1027 var188 = var190;
1028 varonce187 = var188;
1029 }
1030 {
1031 var191 = core__abstract_text___Collection___join(var184, var188);
1032 }
1033 ((struct instance_core__NativeArray*)var153)->values[7]=var191;
1034 {
1035 var192 = ((val*(*)(val* self))(var153->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var153); /* native_to_s on <var153:NativeArray[String]>*/
1036 }
1037 varonce152 = var153;
1038 {
1039 nitc___nitc__ModelBuilder___error(var_modelbuilder, self, var192); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
1040 }
1041 {
1042 { /* Inline modelbuilder_base#ANode#is_broken= (self,1) on <self:AMethPropdef> */
1043 self->attrs[COLOR_nitc__modelbuilder_base__ANode___is_broken].s = 1; /* _is_broken on <self:AMethPropdef> */
1044 RET_LABEL193:(void)0;
1045 }
1046 }
1047 goto RET_LABEL;
1048 } else {
1049 }
1050 {
1051 { /* Inline model#MMethodDef#new_msignature (var_candidatedef) on <var_candidatedef:MMethodDef> */
1052 var197 = var_candidatedef->attrs[COLOR_nitc__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_candidatedef:MMethodDef> */
1053 var195 = var197;
1054 RET_LABEL196:(void)0;
1055 }
1056 }
1057 if (var195!=NULL) {
1058 var194 = var195;
1059 } else {
1060 {
1061 { /* Inline model#MMethodDef#msignature (var_candidatedef) on <var_candidatedef:MMethodDef> */
1062 var200 = var_candidatedef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_candidatedef:MMethodDef> */
1063 var198 = var200;
1064 RET_LABEL199:(void)0;
1065 }
1066 }
1067 var194 = var198;
1068 }
1069 var_msignature = var194;
1070 if (var_msignature == NULL) {
1071 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1072 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__auto_super_init, 125);
1073 fatal_exit(1);
1074 } else {
1075 var201 = nitc___nitc__MSignature___MType__resolve_for(var_msignature, var_recvtype, var_anchor, var_mmodule, 1);
1076 }
1077 var_msignature = var201;
1078 {
1079 var202 = nitc___nitc__MSignature___arity(var_msignature);
1080 }
1081 {
1082 { /* Inline kernel#Int#> (var202,0l) on <var202:Int> */
1083 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1084 /* <0l:Int> isa OTHER */
1085 var205 = 1; /* easy <0l:Int> isa OTHER*/
1086 if (unlikely(!var205)) {
1087 var_class_name208 = type_core__Int.name;
1088 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name208);
1089 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
1090 fatal_exit(1);
1091 }
1092 var209 = var202 > 0l;
1093 var203 = var209;
1094 goto RET_LABEL204;
1095 RET_LABEL204:(void)0;
1096 }
1097 }
1098 if (var203){
1099 if (unlikely(varonce210==NULL)) {
1100 var211 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
1101 if (likely(varonce212!=NULL)) {
1102 var213 = varonce212;
1103 } else {
1104 var214 = "Error: cannot do an implicit constructor call to `";
1105 var215 = core__flat___NativeString___to_s_full(var214, 50l, 50l);
1106 var213 = var215;
1107 varonce212 = var213;
1108 }
1109 ((struct instance_core__NativeArray*)var211)->values[0]=var213;
1110 if (likely(varonce216!=NULL)) {
1111 var217 = varonce216;
1112 } else {
1113 var218 = "`. Expected at least `";
1114 var219 = core__flat___NativeString___to_s_full(var218, 22l, 22l);
1115 var217 = var219;
1116 varonce216 = var217;
1117 }
1118 ((struct instance_core__NativeArray*)var211)->values[3]=var217;
1119 if (likely(varonce220!=NULL)) {
1120 var221 = varonce220;
1121 } else {
1122 var222 = "` arguments.";
1123 var223 = core__flat___NativeString___to_s_full(var222, 12l, 12l);
1124 var221 = var223;
1125 varonce220 = var221;
1126 }
1127 ((struct instance_core__NativeArray*)var211)->values[5]=var221;
1128 } else {
1129 var211 = varonce210;
1130 varonce210 = NULL;
1131 }
1132 {
1133 var224 = ((val*(*)(val* self))(var_candidatedef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_candidatedef); /* to_s on <var_candidatedef:MMethodDef>*/
1134 }
1135 ((struct instance_core__NativeArray*)var211)->values[1]=var224;
1136 {
1137 var225 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:nullable MSignature(MSignature)>*/
1138 }
1139 ((struct instance_core__NativeArray*)var211)->values[2]=var225;
1140 {
1141 var226 = nitc___nitc__MSignature___arity(var_msignature);
1142 }
1143 var227 = core__flat___Int___core__abstract_text__Object__to_s(var226);
1144 ((struct instance_core__NativeArray*)var211)->values[4]=var227;
1145 {
1146 var228 = ((val*(*)(val* self))(var211->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var211); /* native_to_s on <var211:NativeArray[String]>*/
1147 }
1148 varonce210 = var211;
1149 {
1150 nitc___nitc__ModelBuilder___error(var_modelbuilder, self, var228); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
1151 }
1152 {
1153 { /* Inline modelbuilder_base#ANode#is_broken= (self,1) on <self:AMethPropdef> */
1154 self->attrs[COLOR_nitc__modelbuilder_base__ANode___is_broken].s = 1; /* _is_broken on <self:AMethPropdef> */
1155 RET_LABEL229:(void)0;
1156 }
1157 }
1158 goto RET_LABEL;
1159 } else {
1160 }
1161 var230 = NEW_nitc__CallSite(&type_nitc__CallSite);
1162 {
1163 var231 = nitc___nitc__AMethPropdef___ANode__hot_location(self);
1164 }
1165 {
1166 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__location_61d]))(var230, var231); /* location= on <var230:CallSite>*/
1167 }
1168 {
1169 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__recv_61d]))(var230, var_recvtype); /* recv= on <var230:CallSite>*/
1170 }
1171 {
1172 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__mmodule_61d]))(var230, var_mmodule); /* mmodule= on <var230:CallSite>*/
1173 }
1174 {
1175 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__anchor_61d]))(var230, var_anchor); /* anchor= on <var230:CallSite>*/
1176 }
1177 {
1178 ((void(*)(val* self, short int p0))(var230->class->vft[COLOR_nitc__typing__CallSite__recv_is_self_61d]))(var230, 1); /* recv_is_self= on <var230:CallSite>*/
1179 }
1180 {
1181 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__mproperty_61d]))(var230, var_the_root_init_mmethod); /* mproperty= on <var230:CallSite>*/
1182 }
1183 {
1184 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__mpropdef_61d]))(var230, var_candidatedef); /* mpropdef= on <var230:CallSite>*/
1185 }
1186 {
1187 ((void(*)(val* self, val* p0))(var230->class->vft[COLOR_nitc__typing__CallSite__msignature_61d]))(var230, var_msignature); /* msignature= on <var230:CallSite>*/
1188 }
1189 {
1190 ((void(*)(val* self, short int p0))(var230->class->vft[COLOR_nitc__typing__CallSite__erasure_cast_61d]))(var230, 0); /* erasure_cast= on <var230:CallSite>*/
1191 }
1192 {
1193 ((void(*)(val* self))(var230->class->vft[COLOR_core__kernel__Object__init]))(var230); /* init on <var230:CallSite>*/
1194 }
1195 var_callsite = var230;
1196 {
1197 core___core__Array___core__abstract_collection__SimpleCollection__add(var_auto_super_inits, var_callsite); /* Direct call array#Array#add on <var_auto_super_inits:Array[CallSite]>*/
1198 }
1199 {
1200 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
1201 var234 = var_modelbuilder->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var_modelbuilder:ModelBuilder> */
1202 if (unlikely(var234 == NULL)) {
1203 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1204 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
1205 fatal_exit(1);
1206 }
1207 var232 = var234;
1208 RET_LABEL233:(void)0;
1209 }
1210 }
1211 if (unlikely(varonce235==NULL)) {
1212 var236 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
1213 if (likely(varonce237!=NULL)) {
1214 var238 = varonce237;
1215 } else {
1216 var239 = "Auto-super init for ";
1217 var240 = core__flat___NativeString___to_s_full(var239, 20l, 20l);
1218 var238 = var240;
1219 varonce237 = var238;
1220 }
1221 ((struct instance_core__NativeArray*)var236)->values[0]=var238;
1222 if (likely(varonce241!=NULL)) {
1223 var242 = varonce241;
1224 } else {
1225 var243 = " to ";
1226 var244 = core__flat___NativeString___to_s_full(var243, 4l, 4l);
1227 var242 = var244;
1228 varonce241 = var242;
1229 }
1230 ((struct instance_core__NativeArray*)var236)->values[2]=var242;
1231 } else {
1232 var236 = varonce235;
1233 varonce235 = NULL;
1234 }
1235 {
1236 var245 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/
1237 }
1238 ((struct instance_core__NativeArray*)var236)->values[1]=var245;
1239 {
1240 var246 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var_the_root_init_mmethod);
1241 }
1242 ((struct instance_core__NativeArray*)var236)->values[3]=var246;
1243 {
1244 var247 = ((val*(*)(val* self))(var236->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var236); /* native_to_s on <var236:NativeArray[String]>*/
1245 }
1246 varonce235 = var236;
1247 {
1248 nitc___nitc__ToolContext___info(var232, var247, 4l); /* Direct call toolcontext#ToolContext#info on <var232:ToolContext>*/
1249 }
1250 } else {
1251 }
1252 {
1253 var248 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_auto_super_inits);
1254 }
1255 if (var248){
1256 if (unlikely(varonce249==NULL)) {
1257 var250 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1258 if (likely(varonce251!=NULL)) {
1259 var252 = varonce251;
1260 } else {
1261 var253 = "Error: no constructors to call implicitly in `";
1262 var254 = core__flat___NativeString___to_s_full(var253, 46l, 46l);
1263 var252 = var254;
1264 varonce251 = var252;
1265 }
1266 ((struct instance_core__NativeArray*)var250)->values[0]=var252;
1267 if (likely(varonce255!=NULL)) {
1268 var256 = varonce255;
1269 } else {
1270 var257 = "`. Call one explicitly.";
1271 var258 = core__flat___NativeString___to_s_full(var257, 23l, 23l);
1272 var256 = var258;
1273 varonce255 = var256;
1274 }
1275 ((struct instance_core__NativeArray*)var250)->values[2]=var256;
1276 } else {
1277 var250 = varonce249;
1278 varonce249 = NULL;
1279 }
1280 {
1281 var259 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/
1282 }
1283 ((struct instance_core__NativeArray*)var250)->values[1]=var259;
1284 {
1285 var260 = ((val*(*)(val* self))(var250->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var250); /* native_to_s on <var250:NativeArray[String]>*/
1286 }
1287 varonce249 = var250;
1288 {
1289 nitc___nitc__ModelBuilder___error(var_modelbuilder, self, var260); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
1290 }
1291 goto RET_LABEL;
1292 } else {
1293 }
1294 {
1295 { /* Inline auto_super_init#AMethPropdef#auto_super_inits= (self,var_auto_super_inits) on <self:AMethPropdef> */
1296 self->attrs[COLOR_nitc__auto_super_init__AMethPropdef___auto_super_inits].val = var_auto_super_inits; /* _auto_super_inits on <self:AMethPropdef> */
1297 RET_LABEL261:(void)0;
1298 }
1299 }
1300 RET_LABEL:;
1301 }
1302 /* method auto_super_init#ANode#accept_auto_super_init for (self: ANode, AutoSuperInitVisitor) */
1303 void nitc__auto_super_init___ANode___accept_auto_super_init(val* self, val* p0) {
1304 val* var_v /* var v: AutoSuperInitVisitor */;
1305 var_v = p0;
1306 RET_LABEL:;
1307 }
1308 /* method auto_super_init#ASendExpr#accept_auto_super_init for (self: ASendExpr, AutoSuperInitVisitor) */
1309 void nitc__auto_super_init___ASendExpr___ANode__accept_auto_super_init(val* self, val* p0) {
1310 val* var_v /* var v: AutoSuperInitVisitor */;
1311 val* var /* : nullable CallSite */;
1312 val* var2 /* : nullable CallSite */;
1313 val* var_callsite /* var callsite: nullable CallSite */;
1314 short int var3 /* : Bool */;
1315 short int var4 /* : Bool */;
1316 val* var_other /* var other: nullable Object */;
1317 short int var6 /* : Bool */;
1318 short int var8 /* : Bool */;
1319 val* var10 /* : MMethod */;
1320 val* var12 /* : MMethod */;
1321 short int var13 /* : Bool */;
1322 short int var15 /* : Bool */;
1323 var_v = p0;
1324 {
1325 { /* Inline typing#ASendExpr#callsite (self) on <self:ASendExpr> */
1326 var2 = self->attrs[COLOR_nitc__typing__ASendExpr___callsite].val; /* _callsite on <self:ASendExpr> */
1327 var = var2;
1328 RET_LABEL1:(void)0;
1329 }
1330 }
1331 var_callsite = var;
1332 if (var_callsite == NULL) {
1333 var3 = 1; /* is null */
1334 } else {
1335 var3 = 0; /* arg is null but recv is not */
1336 }
1337 if (0) {
1338 { /* Inline kernel#Object#== (var_callsite,((val*)NULL)) on <var_callsite:nullable CallSite> */
1339 var_other = ((val*)NULL);
1340 {
1341 { /* Inline kernel#Object#is_same_instance (var_callsite,var_other) on <var_callsite:nullable CallSite(CallSite)> */
1342 var8 = var_callsite == var_other;
1343 var6 = var8;
1344 goto RET_LABEL7;
1345 RET_LABEL7:(void)0;
1346 }
1347 }
1348 var4 = var6;
1349 goto RET_LABEL5;
1350 RET_LABEL5:(void)0;
1351 }
1352 var3 = var4;
1353 }
1354 if (var3){
1355 {
1356 { /* Inline auto_super_init#AutoSuperInitVisitor#is_broken= (var_v,1) on <var_v:AutoSuperInitVisitor> */
1357 var_v->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___is_broken].s = 1; /* _is_broken on <var_v:AutoSuperInitVisitor> */
1358 RET_LABEL9:(void)0;
1359 }
1360 }
1361 goto RET_LABEL;
1362 } else {
1363 }
1364 {
1365 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:nullable CallSite(CallSite)> */
1366 var12 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:nullable CallSite(CallSite)> */
1367 if (unlikely(var12 == NULL)) {
1368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1369 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 653);
1370 fatal_exit(1);
1371 }
1372 var10 = var12;
1373 RET_LABEL11:(void)0;
1374 }
1375 }
1376 {
1377 { /* Inline model#MMethod#is_init (var10) on <var10:MMethod> */
1378 var15 = var10->attrs[COLOR_nitc__model__MMethod___is_init].s; /* _is_init on <var10:MMethod> */
1379 var13 = var15;
1380 RET_LABEL14:(void)0;
1381 }
1382 }
1383 if (var13){
1384 {
1385 { /* Inline auto_super_init#AutoSuperInitVisitor#has_explicit_super_init= (var_v,self) on <var_v:AutoSuperInitVisitor> */
1386 var_v->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init].val = self; /* _has_explicit_super_init on <var_v:AutoSuperInitVisitor> */
1387 RET_LABEL16:(void)0;
1388 }
1389 }
1390 } else {
1391 }
1392 RET_LABEL:;
1393 }
1394 /* method auto_super_init#ASuperExpr#accept_auto_super_init for (self: ASuperExpr, AutoSuperInitVisitor) */
1395 void nitc__auto_super_init___ASuperExpr___ANode__accept_auto_super_init(val* self, val* p0) {
1396 val* var_v /* var v: AutoSuperInitVisitor */;
1397 var_v = p0;
1398 {
1399 { /* Inline auto_super_init#AutoSuperInitVisitor#has_explicit_super_init= (var_v,self) on <var_v:AutoSuperInitVisitor> */
1400 var_v->attrs[COLOR_nitc__auto_super_init__AutoSuperInitVisitor___has_explicit_super_init].val = self; /* _has_explicit_super_init on <var_v:AutoSuperInitVisitor> */
1401 RET_LABEL1:(void)0;
1402 }
1403 }
1404 RET_LABEL:;
1405 }