README: document nit_env.sh
[nit.git] / c_src / nit__modelbuilder_base.sep.1.c
1 #include "nit__modelbuilder_base.sep.0.h"
2 /* method modelbuilder_base#ToolContext#modelbuilder for (self: ToolContext): ModelBuilder */
3 val* nit__modelbuilder_base___ToolContext___modelbuilder(val* self) {
4 val* var /* : ModelBuilder */;
5 val* var1 /* : nullable ModelBuilder */;
6 val* var3 /* : nullable ModelBuilder */;
7 {
8 { /* Inline modelbuilder_base#ToolContext#modelbuilder_real (self) on <self:ToolContext> */
9 var3 = self->attrs[COLOR_nit__modelbuilder_base__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on <self:ToolContext> */
10 var1 = var3;
11 RET_LABEL2:(void)0;
12 }
13 }
14 if (unlikely(var1 == NULL)) {
15 PRINT_ERROR("Runtime error: %s", "Cast failed");
16 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 36);
17 fatal_exit(1);
18 }
19 var = var1;
20 goto RET_LABEL;
21 RET_LABEL:;
22 return var;
23 }
24 /* method modelbuilder_base#ToolContext#modelbuilder_real for (self: ToolContext): nullable ModelBuilder */
25 val* nit__modelbuilder_base___ToolContext___modelbuilder_real(val* self) {
26 val* var /* : nullable ModelBuilder */;
27 val* var1 /* : nullable ModelBuilder */;
28 var1 = self->attrs[COLOR_nit__modelbuilder_base__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on <self:ToolContext> */
29 var = var1;
30 RET_LABEL:;
31 return var;
32 }
33 /* method modelbuilder_base#ToolContext#modelbuilder_real= for (self: ToolContext, nullable ModelBuilder) */
34 void nit__modelbuilder_base___ToolContext___modelbuilder_real_61d(val* self, val* p0) {
35 self->attrs[COLOR_nit__modelbuilder_base__ToolContext___modelbuilder_real].val = p0; /* _modelbuilder_real on <self:ToolContext> */
36 RET_LABEL:;
37 }
38 /* method modelbuilder_base#ModelBuilder#model for (self: ModelBuilder): Model */
39 val* nit___nit__ModelBuilder___model(val* self) {
40 val* var /* : Model */;
41 val* var1 /* : Model */;
42 var1 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
43 if (unlikely(var1 == NULL)) {
44 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
45 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
46 fatal_exit(1);
47 }
48 var = var1;
49 RET_LABEL:;
50 return var;
51 }
52 /* method modelbuilder_base#ModelBuilder#model= for (self: ModelBuilder, Model) */
53 void nit___nit__ModelBuilder___model_61d(val* self, val* p0) {
54 self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val = p0; /* _model on <self:ModelBuilder> */
55 RET_LABEL:;
56 }
57 /* method modelbuilder_base#ModelBuilder#toolcontext for (self: ModelBuilder): ToolContext */
58 val* nit___nit__ModelBuilder___toolcontext(val* self) {
59 val* var /* : ToolContext */;
60 val* var1 /* : ToolContext */;
61 var1 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
62 if (unlikely(var1 == NULL)) {
63 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
64 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
65 fatal_exit(1);
66 }
67 var = var1;
68 RET_LABEL:;
69 return var;
70 }
71 /* method modelbuilder_base#ModelBuilder#toolcontext= for (self: ModelBuilder, ToolContext) */
72 void nit___nit__ModelBuilder___toolcontext_61d(val* self, val* p0) {
73 self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val = p0; /* _toolcontext on <self:ModelBuilder> */
74 RET_LABEL:;
75 }
76 /* method modelbuilder_base#ModelBuilder#init for (self: ModelBuilder) */
77 void nit___nit__ModelBuilder___standard__kernel__Object__init(val* self) {
78 val* var /* : ToolContext */;
79 val* var2 /* : ToolContext */;
80 val* var3 /* : nullable ModelBuilder */;
81 val* var5 /* : nullable ModelBuilder */;
82 short int var6 /* : Bool */;
83 short int var7 /* : Bool */;
84 val* var_other /* var other: nullable Object */;
85 short int var9 /* : Bool */;
86 short int var11 /* : Bool */;
87 val* var12 /* : ToolContext */;
88 val* var14 /* : ToolContext */;
89 {
90 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
91 var2 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
92 if (unlikely(var2 == NULL)) {
93 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
94 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
95 fatal_exit(1);
96 }
97 var = var2;
98 RET_LABEL1:(void)0;
99 }
100 }
101 {
102 { /* Inline modelbuilder_base#ToolContext#modelbuilder_real (var) on <var:ToolContext> */
103 var5 = var->attrs[COLOR_nit__modelbuilder_base__ToolContext___modelbuilder_real].val; /* _modelbuilder_real on <var:ToolContext> */
104 var3 = var5;
105 RET_LABEL4:(void)0;
106 }
107 }
108 if (var3 == NULL) {
109 var6 = 1; /* is null */
110 } else {
111 var6 = 0; /* arg is null but recv is not */
112 }
113 if (0) {
114 { /* Inline kernel#Object#== (var3,((val*)NULL)) on <var3:nullable ModelBuilder> */
115 var_other = ((val*)NULL);
116 {
117 { /* Inline kernel#Object#is_same_instance (var3,var_other) on <var3:nullable ModelBuilder(ModelBuilder)> */
118 var11 = var3 == var_other;
119 var9 = var11;
120 goto RET_LABEL10;
121 RET_LABEL10:(void)0;
122 }
123 }
124 var7 = var9;
125 goto RET_LABEL8;
126 RET_LABEL8:(void)0;
127 }
128 var6 = var7;
129 }
130 if (unlikely(!var6)) {
131 PRINT_ERROR("Runtime error: %s", "Assert failed");
132 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 54);
133 fatal_exit(1);
134 }
135 {
136 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
137 var14 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
138 if (unlikely(var14 == NULL)) {
139 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
140 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
141 fatal_exit(1);
142 }
143 var12 = var14;
144 RET_LABEL13:(void)0;
145 }
146 }
147 {
148 { /* Inline modelbuilder_base#ToolContext#modelbuilder_real= (var12,self) on <var12:ToolContext> */
149 var12->attrs[COLOR_nit__modelbuilder_base__ToolContext___modelbuilder_real].val = self; /* _modelbuilder_real on <var12:ToolContext> */
150 RET_LABEL15:(void)0;
151 }
152 }
153 RET_LABEL:;
154 }
155 /* method modelbuilder_base#ModelBuilder#try_get_mclass_by_name for (self: ModelBuilder, ANode, MModule, String): nullable MClass */
156 val* nit___nit__ModelBuilder___try_get_mclass_by_name(val* self, val* p0, val* p1, val* p2) {
157 val* var /* : nullable MClass */;
158 val* var_anode /* var anode: ANode */;
159 val* var_mmodule /* var mmodule: MModule */;
160 val* var_name /* var name: String */;
161 val* var1 /* : Model */;
162 val* var3 /* : Model */;
163 val* var4 /* : nullable Array[MClass] */;
164 val* var_classes /* var classes: nullable Array[MClass] */;
165 short int var5 /* : Bool */;
166 short int var6 /* : Bool */;
167 val* var_res /* var res: nullable MClass */;
168 val* var_ /* var : Array[MClass] */;
169 val* var7 /* : ArrayIterator[nullable Object] */;
170 val* var_8 /* var : ArrayIterator[MClass] */;
171 short int var9 /* : Bool */;
172 val* var10 /* : nullable Object */;
173 val* var_mclass /* var mclass: MClass */;
174 val* var11 /* : POSetElement[MModule] */;
175 val* var13 /* : POSetElement[MModule] */;
176 val* var14 /* : MModule */;
177 val* var16 /* : MModule */;
178 short int var17 /* : Bool */;
179 short int var18 /* : Bool */;
180 val* var19 /* : MModule */;
181 val* var21 /* : MModule */;
182 val* var22 /* : MVisibility */;
183 val* var24 /* : MVisibility */;
184 short int var25 /* : Bool */;
185 short int var26 /* : Bool */;
186 short int var27 /* : Bool */;
187 short int var28 /* : Bool */;
188 val* var_other /* var other: nullable Object */;
189 short int var30 /* : Bool */;
190 short int var32 /* : Bool */;
191 val* var33 /* : NativeArray[String] */;
192 static val* varonce;
193 static val* varonce34;
194 val* var35 /* : String */;
195 char* var36 /* : NativeString */;
196 val* var37 /* : FlatString */;
197 static val* varonce38;
198 val* var39 /* : String */;
199 char* var40 /* : NativeString */;
200 val* var41 /* : FlatString */;
201 static val* varonce42;
202 val* var43 /* : String */;
203 char* var44 /* : NativeString */;
204 val* var45 /* : FlatString */;
205 static val* varonce46;
206 val* var47 /* : String */;
207 char* var48 /* : NativeString */;
208 val* var49 /* : FlatString */;
209 val* var50 /* : String */;
210 val* var51 /* : String */;
211 val* var52 /* : String */;
212 var_anode = p0;
213 var_mmodule = p1;
214 var_name = p2;
215 {
216 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
217 var3 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
218 if (unlikely(var3 == NULL)) {
219 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
220 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
221 fatal_exit(1);
222 }
223 var1 = var3;
224 RET_LABEL2:(void)0;
225 }
226 }
227 {
228 var4 = nit__model___Model___get_mclasses_by_name(var1, var_name);
229 }
230 var_classes = var4;
231 if (var_classes == NULL) {
232 var5 = 1; /* is null */
233 } else {
234 var5 = 0; /* arg is null but recv is not */
235 }
236 if (0) {
237 var6 = standard___standard__Array___standard__kernel__Object___61d_61d(var_classes, ((val*)NULL));
238 var5 = var6;
239 }
240 if (var5){
241 var = ((val*)NULL);
242 goto RET_LABEL;
243 } else {
244 }
245 var_res = ((val*)NULL);
246 var_ = var_classes;
247 {
248 var7 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
249 }
250 var_8 = var7;
251 for(;;) {
252 {
253 var9 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_8);
254 }
255 if (var9){
256 {
257 var10 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_8);
258 }
259 var_mclass = var10;
260 {
261 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
262 var13 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
263 if (unlikely(var13 == NULL)) {
264 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
265 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
266 fatal_exit(1);
267 }
268 var11 = var13;
269 RET_LABEL12:(void)0;
270 }
271 }
272 {
273 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
274 var16 = var_mclass->attrs[COLOR_nit__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
275 if (unlikely(var16 == NULL)) {
276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
277 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 357);
278 fatal_exit(1);
279 }
280 var14 = var16;
281 RET_LABEL15:(void)0;
282 }
283 }
284 {
285 var17 = poset___poset__POSetElement____60d_61d(var11, var14);
286 }
287 var18 = !var17;
288 if (var18){
289 goto BREAK_label;
290 } else {
291 }
292 {
293 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
294 var21 = var_mclass->attrs[COLOR_nit__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
295 if (unlikely(var21 == NULL)) {
296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
297 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 357);
298 fatal_exit(1);
299 }
300 var19 = var21;
301 RET_LABEL20:(void)0;
302 }
303 }
304 {
305 { /* Inline model#MClass#visibility (var_mclass) on <var_mclass:MClass> */
306 var24 = var_mclass->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var_mclass:MClass> */
307 if (unlikely(var24 == NULL)) {
308 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
309 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 440);
310 fatal_exit(1);
311 }
312 var22 = var24;
313 RET_LABEL23:(void)0;
314 }
315 }
316 {
317 var25 = nit___nit__MModule___is_visible(var_mmodule, var19, var22);
318 }
319 var26 = !var25;
320 if (var26){
321 goto BREAK_label;
322 } else {
323 }
324 if (var_res == NULL) {
325 var27 = 1; /* is null */
326 } else {
327 var27 = 0; /* arg is null but recv is not */
328 }
329 if (0) {
330 { /* Inline kernel#Object#== (var_res,((val*)NULL)) on <var_res:nullable MClass> */
331 var_other = ((val*)NULL);
332 {
333 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable MClass(MClass)> */
334 var32 = var_res == var_other;
335 var30 = var32;
336 goto RET_LABEL31;
337 RET_LABEL31:(void)0;
338 }
339 }
340 var28 = var30;
341 goto RET_LABEL29;
342 RET_LABEL29:(void)0;
343 }
344 var27 = var28;
345 }
346 if (var27){
347 var_res = var_mclass;
348 } else {
349 if (unlikely(varonce==NULL)) {
350 var33 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
351 if (likely(varonce34!=NULL)) {
352 var35 = varonce34;
353 } else {
354 var36 = "Error: ambiguous class name `";
355 var37 = standard___standard__NativeString___to_s_with_length(var36, 29l);
356 var35 = var37;
357 varonce34 = var35;
358 }
359 ((struct instance_standard__NativeArray*)var33)->values[0]=var35;
360 if (likely(varonce38!=NULL)) {
361 var39 = varonce38;
362 } else {
363 var40 = "`; conflict between `";
364 var41 = standard___standard__NativeString___to_s_with_length(var40, 21l);
365 var39 = var41;
366 varonce38 = var39;
367 }
368 ((struct instance_standard__NativeArray*)var33)->values[2]=var39;
369 if (likely(varonce42!=NULL)) {
370 var43 = varonce42;
371 } else {
372 var44 = "` and `";
373 var45 = standard___standard__NativeString___to_s_with_length(var44, 7l);
374 var43 = var45;
375 varonce42 = var43;
376 }
377 ((struct instance_standard__NativeArray*)var33)->values[4]=var43;
378 if (likely(varonce46!=NULL)) {
379 var47 = varonce46;
380 } else {
381 var48 = "`.";
382 var49 = standard___standard__NativeString___to_s_with_length(var48, 2l);
383 var47 = var49;
384 varonce46 = var47;
385 }
386 ((struct instance_standard__NativeArray*)var33)->values[6]=var47;
387 } else {
388 var33 = varonce;
389 varonce = NULL;
390 }
391 ((struct instance_standard__NativeArray*)var33)->values[1]=var_name;
392 {
393 var50 = nit___nit__MClass___nit__model_base__MEntity__full_name(var_mclass);
394 }
395 ((struct instance_standard__NativeArray*)var33)->values[3]=var50;
396 {
397 var51 = nit___nit__MClass___nit__model_base__MEntity__full_name(var_res);
398 }
399 ((struct instance_standard__NativeArray*)var33)->values[5]=var51;
400 {
401 var52 = ((val*(*)(val* self))(var33->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
402 }
403 varonce = var33;
404 {
405 nit___nit__ModelBuilder___error(self, var_anode, var52); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
406 }
407 var = ((val*)NULL);
408 goto RET_LABEL;
409 }
410 BREAK_label: (void)0;
411 {
412 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_8); /* Direct call array#ArrayIterator#next on <var_8:ArrayIterator[MClass]>*/
413 }
414 } else {
415 goto BREAK_label53;
416 }
417 }
418 BREAK_label53: (void)0;
419 {
420 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_8); /* Direct call array#ArrayIterator#finish on <var_8:ArrayIterator[MClass]>*/
421 }
422 var = var_res;
423 goto RET_LABEL;
424 RET_LABEL:;
425 return var;
426 }
427 /* method modelbuilder_base#ModelBuilder#get_mclass_by_name for (self: ModelBuilder, ANode, MModule, String): nullable MClass */
428 val* nit___nit__ModelBuilder___get_mclass_by_name(val* self, val* p0, val* p1, val* p2) {
429 val* var /* : nullable MClass */;
430 val* var_node /* var node: ANode */;
431 val* var_mmodule /* var mmodule: MModule */;
432 val* var_name /* var name: String */;
433 val* var1 /* : nullable MClass */;
434 val* var_mclass /* var mclass: nullable MClass */;
435 short int var2 /* : Bool */;
436 short int var3 /* : Bool */;
437 val* var_other /* var other: nullable Object */;
438 short int var5 /* : Bool */;
439 short int var7 /* : Bool */;
440 val* var8 /* : NativeArray[String] */;
441 static val* varonce;
442 static val* varonce9;
443 val* var10 /* : String */;
444 char* var11 /* : NativeString */;
445 val* var12 /* : FlatString */;
446 static val* varonce13;
447 val* var14 /* : String */;
448 char* var15 /* : NativeString */;
449 val* var16 /* : FlatString */;
450 val* var17 /* : String */;
451 var_node = p0;
452 var_mmodule = p1;
453 var_name = p2;
454 {
455 var1 = nit___nit__ModelBuilder___try_get_mclass_by_name(self, var_node, var_mmodule, var_name);
456 }
457 var_mclass = var1;
458 if (var_mclass == NULL) {
459 var2 = 1; /* is null */
460 } else {
461 var2 = 0; /* arg is null but recv is not */
462 }
463 if (0) {
464 { /* Inline kernel#Object#== (var_mclass,((val*)NULL)) on <var_mclass:nullable MClass> */
465 var_other = ((val*)NULL);
466 {
467 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
468 var7 = var_mclass == var_other;
469 var5 = var7;
470 goto RET_LABEL6;
471 RET_LABEL6:(void)0;
472 }
473 }
474 var3 = var5;
475 goto RET_LABEL4;
476 RET_LABEL4:(void)0;
477 }
478 var2 = var3;
479 }
480 if (var2){
481 if (unlikely(varonce==NULL)) {
482 var8 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
483 if (likely(varonce9!=NULL)) {
484 var10 = varonce9;
485 } else {
486 var11 = "Type Error: missing primitive class `";
487 var12 = standard___standard__NativeString___to_s_with_length(var11, 37l);
488 var10 = var12;
489 varonce9 = var10;
490 }
491 ((struct instance_standard__NativeArray*)var8)->values[0]=var10;
492 if (likely(varonce13!=NULL)) {
493 var14 = varonce13;
494 } else {
495 var15 = "\'.";
496 var16 = standard___standard__NativeString___to_s_with_length(var15, 2l);
497 var14 = var16;
498 varonce13 = var14;
499 }
500 ((struct instance_standard__NativeArray*)var8)->values[2]=var14;
501 } else {
502 var8 = varonce;
503 varonce = NULL;
504 }
505 ((struct instance_standard__NativeArray*)var8)->values[1]=var_name;
506 {
507 var17 = ((val*(*)(val* self))(var8->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
508 }
509 varonce = var8;
510 {
511 nit___nit__ModelBuilder___error(self, var_node, var17); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
512 }
513 } else {
514 }
515 var = var_mclass;
516 goto RET_LABEL;
517 RET_LABEL:;
518 return var;
519 }
520 /* method modelbuilder_base#ModelBuilder#try_get_mproperty_by_name2 for (self: ModelBuilder, ANode, MModule, MType, String): nullable MProperty */
521 val* nit___nit__ModelBuilder___try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2, val* p3) {
522 val* var /* : nullable MProperty */;
523 val* var_anode /* var anode: ANode */;
524 val* var_mmodule /* var mmodule: MModule */;
525 val* var_mtype /* var mtype: MType */;
526 val* var_name /* var name: String */;
527 val* var1 /* : Model */;
528 val* var3 /* : Model */;
529 val* var4 /* : nullable Array[MProperty] */;
530 val* var_props /* var props: nullable Array[MProperty] */;
531 short int var5 /* : Bool */;
532 short int var6 /* : Bool */;
533 val* var7 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
534 val* var9 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
535 val* var10 /* : nullable Object */;
536 val* var_cache /* var cache: nullable MProperty */;
537 short int var11 /* : Bool */;
538 short int var12 /* : Bool */;
539 val* var_other /* var other: nullable Object */;
540 short int var14 /* : Bool */;
541 short int var15 /* : Bool */;
542 val* var_res /* var res: nullable MProperty */;
543 val* var_ress /* var ress: nullable Array[MProperty] */;
544 val* var_ /* var : Array[MProperty] */;
545 val* var16 /* : ArrayIterator[nullable Object] */;
546 val* var_17 /* var : ArrayIterator[MProperty] */;
547 short int var18 /* : Bool */;
548 val* var19 /* : nullable Object */;
549 val* var_mprop /* var mprop: MProperty */;
550 short int var20 /* : Bool */;
551 short int var21 /* : Bool */;
552 val* var22 /* : MClassDef */;
553 val* var24 /* : MClassDef */;
554 val* var25 /* : MModule */;
555 val* var27 /* : MModule */;
556 val* var28 /* : MVisibility */;
557 val* var30 /* : MVisibility */;
558 short int var31 /* : Bool */;
559 short int var32 /* : Bool */;
560 short int var33 /* : Bool */;
561 short int var34 /* : Bool */;
562 short int var35 /* : Bool */;
563 int cltype;
564 int idtype;
565 short int var_36 /* var : Bool */;
566 short int var37 /* : Bool */;
567 short int var39 /* : Bool */;
568 short int var_40 /* var : Bool */;
569 short int var41 /* : Bool */;
570 short int var42 /* : Bool */;
571 int cltype43;
572 int idtype44;
573 short int var45 /* : Bool */;
574 short int var_46 /* var : Bool */;
575 val* var47 /* : MClassDef */;
576 val* var49 /* : MClassDef */;
577 val* var50 /* : MClass */;
578 val* var52 /* : MClass */;
579 val* var53 /* : MClass */;
580 val* var55 /* : MClass */;
581 short int var56 /* : Bool */;
582 short int var58 /* : Bool */;
583 short int var59 /* : Bool */;
584 short int var60 /* : Bool */;
585 short int var61 /* : Bool */;
586 val* var_other63 /* var other: nullable Object */;
587 short int var64 /* : Bool */;
588 short int var66 /* : Bool */;
589 short int var67 /* : Bool */;
590 short int var68 /* : Bool */;
591 short int var69 /* : Bool */;
592 short int var70 /* : Bool */;
593 int cltype71;
594 int idtype72;
595 short int var_73 /* var : Bool */;
596 short int var74 /* : Bool */;
597 int cltype75;
598 int idtype76;
599 short int var_77 /* var : Bool */;
600 short int var78 /* : Bool */;
601 short int var80 /* : Bool */;
602 short int var_81 /* var : Bool */;
603 short int var82 /* : Bool */;
604 short int var84 /* : Bool */;
605 val* var85 /* : MClassDef */;
606 val* var87 /* : MClassDef */;
607 val* var88 /* : MClassType */;
608 val* var90 /* : MClassType */;
609 val* var_restype /* var restype: MClassType */;
610 val* var91 /* : MClassDef */;
611 val* var93 /* : MClassDef */;
612 val* var94 /* : MClassType */;
613 val* var96 /* : MClassType */;
614 val* var_mproptype /* var mproptype: MClassType */;
615 short int var97 /* : Bool */;
616 short int var98 /* : Bool */;
617 short int var99 /* : Bool */;
618 val* var100 /* : Array[MProperty] */;
619 short int var102 /* : Bool */;
620 short int var103 /* : Bool */;
621 short int var104 /* : Bool */;
622 short int var105 /* : Bool */;
623 short int var107 /* : Bool */;
624 short int var108 /* : Bool */;
625 short int var_109 /* var : Bool */;
626 short int var110 /* : Bool */;
627 int cltype111;
628 int idtype112;
629 short int var_113 /* var : Bool */;
630 short int var114 /* : Bool */;
631 short int var116 /* : Bool */;
632 val* var117 /* : MClassDef */;
633 val* var119 /* : MClassDef */;
634 val* var120 /* : MClassType */;
635 val* var122 /* : MClassType */;
636 val* var_restype123 /* var restype: MClassType */;
637 val* var124 /* : Array[MProperty] */;
638 val* var_ress2 /* var ress2: Array[MProperty] */;
639 val* var_125 /* var : Array[MProperty] */;
640 val* var126 /* : ArrayIterator[nullable Object] */;
641 val* var_127 /* var : ArrayIterator[MProperty] */;
642 short int var128 /* : Bool */;
643 val* var129 /* : nullable Object */;
644 val* var_mprop130 /* var mprop: MProperty */;
645 val* var131 /* : MClassDef */;
646 val* var133 /* : MClassDef */;
647 val* var134 /* : MClassType */;
648 val* var136 /* : MClassType */;
649 val* var_mproptype137 /* var mproptype: MClassType */;
650 short int var138 /* : Bool */;
651 short int var139 /* : Bool */;
652 short int var140 /* : Bool */;
653 short int var141 /* : Bool */;
654 int cltype142;
655 int idtype143;
656 short int var144 /* : Bool */;
657 short int var_145 /* var : Bool */;
658 short int var146 /* : Bool */;
659 short int var148 /* : Bool */;
660 short int var149 /* : Bool */;
661 short int var151 /* : Bool */;
662 short int var152 /* : Bool */;
663 short int var153 /* : Bool */;
664 short int var155 /* : Bool */;
665 short int var156 /* : Bool */;
666 long var157 /* : Int */;
667 long var159 /* : Int */;
668 short int var160 /* : Bool */;
669 short int var162 /* : Bool */;
670 int cltype163;
671 int idtype164;
672 const char* var_class_name;
673 short int var165 /* : Bool */;
674 val* var166 /* : Array[String] */;
675 val* var_s /* var s: Array[String] */;
676 val* var_167 /* var : Array[MProperty] */;
677 val* var168 /* : ArrayIterator[nullable Object] */;
678 val* var_169 /* var : ArrayIterator[MProperty] */;
679 short int var170 /* : Bool */;
680 val* var171 /* : nullable Object */;
681 val* var_mprop172 /* var mprop: MProperty */;
682 val* var173 /* : String */;
683 val* var175 /* : NativeArray[String] */;
684 static val* varonce;
685 static val* varonce176;
686 val* var177 /* : String */;
687 char* var178 /* : NativeString */;
688 val* var179 /* : FlatString */;
689 static val* varonce180;
690 val* var181 /* : String */;
691 char* var182 /* : NativeString */;
692 val* var183 /* : FlatString */;
693 static val* varonce184;
694 val* var185 /* : String */;
695 char* var186 /* : NativeString */;
696 val* var187 /* : FlatString */;
697 static val* varonce188;
698 val* var189 /* : String */;
699 char* var190 /* : NativeString */;
700 val* var191 /* : FlatString */;
701 val* var192 /* : String */;
702 static val* varonce193;
703 val* var194 /* : String */;
704 char* var195 /* : NativeString */;
705 val* var196 /* : FlatString */;
706 val* var197 /* : String */;
707 val* var198 /* : String */;
708 val* var199 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
709 val* var201 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
710 var_anode = p0;
711 var_mmodule = p1;
712 var_mtype = p2;
713 var_name = p3;
714 {
715 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
716 var3 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
717 if (unlikely(var3 == NULL)) {
718 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
719 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
720 fatal_exit(1);
721 }
722 var1 = var3;
723 RET_LABEL2:(void)0;
724 }
725 }
726 {
727 var4 = nit__model___Model___get_mproperties_by_name(var1, var_name);
728 }
729 var_props = var4;
730 if (var_props == NULL) {
731 var5 = 1; /* is null */
732 } else {
733 var5 = 0; /* arg is null but recv is not */
734 }
735 if (0) {
736 var6 = standard___standard__Array___standard__kernel__Object___61d_61d(var_props, ((val*)NULL));
737 var5 = var6;
738 }
739 if (var5){
740 var = ((val*)NULL);
741 goto RET_LABEL;
742 } else {
743 }
744 {
745 { /* Inline modelbuilder_base#ModelBuilder#try_get_mproperty_by_name2_cache (self) on <self:ModelBuilder> */
746 var9 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
747 if (unlikely(var9 == NULL)) {
748 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache");
749 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 178);
750 fatal_exit(1);
751 }
752 var7 = var9;
753 RET_LABEL8:(void)0;
754 }
755 }
756 {
757 var10 = more_collections___more_collections__HashMap3____91d_93d(var7, var_mmodule, var_mtype, var_name);
758 }
759 var_cache = var10;
760 if (var_cache == NULL) {
761 var11 = 0; /* is null */
762 } else {
763 var11 = 1; /* arg is null and recv is not */
764 }
765 if (0) {
766 { /* Inline kernel#Object#!= (var_cache,((val*)NULL)) on <var_cache:nullable MProperty> */
767 var_other = ((val*)NULL);
768 {
769 var14 = ((short int(*)(val* self, val* p0))(var_cache->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cache, var_other); /* == on <var_cache:nullable MProperty(MProperty)>*/
770 }
771 var15 = !var14;
772 var12 = var15;
773 goto RET_LABEL13;
774 RET_LABEL13:(void)0;
775 }
776 var11 = var12;
777 }
778 if (var11){
779 var = var_cache;
780 goto RET_LABEL;
781 } else {
782 }
783 var_res = ((val*)NULL);
784 var_ress = ((val*)NULL);
785 var_ = var_props;
786 {
787 var16 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
788 }
789 var_17 = var16;
790 for(;;) {
791 {
792 var18 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_17);
793 }
794 if (var18){
795 {
796 var19 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_17);
797 }
798 var_mprop = var19;
799 {
800 var20 = nit___nit__MType___has_mproperty(var_mtype, var_mmodule, var_mprop);
801 }
802 var21 = !var20;
803 if (var21){
804 goto BREAK_label;
805 } else {
806 }
807 {
808 { /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
809 var24 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
810 if (unlikely(var24 == NULL)) {
811 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
812 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
813 fatal_exit(1);
814 }
815 var22 = var24;
816 RET_LABEL23:(void)0;
817 }
818 }
819 {
820 { /* Inline model#MClassDef#mmodule (var22) on <var22:MClassDef> */
821 var27 = var22->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var22:MClassDef> */
822 if (unlikely(var27 == NULL)) {
823 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
824 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
825 fatal_exit(1);
826 }
827 var25 = var27;
828 RET_LABEL26:(void)0;
829 }
830 }
831 {
832 { /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
833 var30 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
834 if (unlikely(var30 == NULL)) {
835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
836 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
837 fatal_exit(1);
838 }
839 var28 = var30;
840 RET_LABEL29:(void)0;
841 }
842 }
843 {
844 var31 = nit___nit__MModule___is_visible(var_mmodule, var25, var28);
845 }
846 var32 = !var31;
847 if (var32){
848 goto BREAK_label;
849 } else {
850 }
851 /* <var_mprop:MProperty> isa MMethod */
852 cltype = type_nit__MMethod.color;
853 idtype = type_nit__MMethod.id;
854 if(cltype >= var_mprop->type->table_size) {
855 var35 = 0;
856 } else {
857 var35 = var_mprop->type->type_table[cltype] == idtype;
858 }
859 var_36 = var35;
860 if (var35){
861 {
862 { /* Inline model#MMethod#is_new (var_mprop) on <var_mprop:MProperty(MMethod)> */
863 var39 = var_mprop->attrs[COLOR_nit__model__MMethod___is_new].s; /* _is_new on <var_mprop:MProperty(MMethod)> */
864 var37 = var39;
865 RET_LABEL38:(void)0;
866 }
867 }
868 var34 = var37;
869 } else {
870 var34 = var_36;
871 }
872 var_40 = var34;
873 if (var34){
874 /* <var_mtype:MType> isa MClassType */
875 cltype43 = type_nit__MClassType.color;
876 idtype44 = type_nit__MClassType.id;
877 if(cltype43 >= var_mtype->type->table_size) {
878 var42 = 0;
879 } else {
880 var42 = var_mtype->type->type_table[cltype43] == idtype44;
881 }
882 var45 = !var42;
883 var_46 = var45;
884 if (var45){
885 var41 = var_46;
886 } else {
887 {
888 { /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty(MMethod)> */
889 var49 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty(MMethod)> */
890 if (unlikely(var49 == NULL)) {
891 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
892 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
893 fatal_exit(1);
894 }
895 var47 = var49;
896 RET_LABEL48:(void)0;
897 }
898 }
899 {
900 { /* Inline model#MClassDef#mclass (var47) on <var47:MClassDef> */
901 var52 = var47->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var47:MClassDef> */
902 if (unlikely(var52 == NULL)) {
903 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
904 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
905 fatal_exit(1);
906 }
907 var50 = var52;
908 RET_LABEL51:(void)0;
909 }
910 }
911 {
912 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
913 var55 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
914 if (unlikely(var55 == NULL)) {
915 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
916 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
917 fatal_exit(1);
918 }
919 var53 = var55;
920 RET_LABEL54:(void)0;
921 }
922 }
923 {
924 { /* Inline kernel#Object#!= (var50,var53) on <var50:MClass> */
925 var_other = var53;
926 {
927 var58 = ((short int(*)(val* self, val* p0))(var50->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var50, var_other); /* == on <var50:MClass>*/
928 }
929 var59 = !var58;
930 var56 = var59;
931 goto RET_LABEL57;
932 RET_LABEL57:(void)0;
933 }
934 }
935 var41 = var56;
936 }
937 var33 = var41;
938 } else {
939 var33 = var_40;
940 }
941 if (var33){
942 goto BREAK_label;
943 } else {
944 }
945 if (var_res == NULL) {
946 var60 = 1; /* is null */
947 } else {
948 var60 = 0; /* arg is null but recv is not */
949 }
950 if (0) {
951 { /* Inline kernel#Object#== (var_res,((val*)NULL)) on <var_res:nullable MProperty> */
952 var_other63 = ((val*)NULL);
953 {
954 { /* Inline kernel#Object#is_same_instance (var_res,var_other63) on <var_res:nullable MProperty(MProperty)> */
955 var66 = var_res == var_other63;
956 var64 = var66;
957 goto RET_LABEL65;
958 RET_LABEL65:(void)0;
959 }
960 }
961 var61 = var64;
962 goto RET_LABEL62;
963 RET_LABEL62:(void)0;
964 }
965 var60 = var61;
966 }
967 if (var60){
968 var_res = var_mprop;
969 goto BREAK_label;
970 } else {
971 }
972 /* <var_res:nullable MProperty(MProperty)> isa MMethod */
973 cltype71 = type_nit__MMethod.color;
974 idtype72 = type_nit__MMethod.id;
975 if(cltype71 >= var_res->type->table_size) {
976 var70 = 0;
977 } else {
978 var70 = var_res->type->type_table[cltype71] == idtype72;
979 }
980 var_73 = var70;
981 if (var70){
982 /* <var_mprop:MProperty> isa MMethod */
983 cltype75 = type_nit__MMethod.color;
984 idtype76 = type_nit__MMethod.id;
985 if(cltype75 >= var_mprop->type->table_size) {
986 var74 = 0;
987 } else {
988 var74 = var_mprop->type->type_table[cltype75] == idtype76;
989 }
990 var69 = var74;
991 } else {
992 var69 = var_73;
993 }
994 var_77 = var69;
995 if (var69){
996 {
997 { /* Inline model#MMethod#is_init (var_res) on <var_res:nullable MProperty(MMethod)> */
998 var80 = var_res->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var_res:nullable MProperty(MMethod)> */
999 var78 = var80;
1000 RET_LABEL79:(void)0;
1001 }
1002 }
1003 var68 = var78;
1004 } else {
1005 var68 = var_77;
1006 }
1007 var_81 = var68;
1008 if (var68){
1009 {
1010 { /* Inline model#MMethod#is_init (var_mprop) on <var_mprop:MProperty(MMethod)> */
1011 var84 = var_mprop->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var_mprop:MProperty(MMethod)> */
1012 var82 = var84;
1013 RET_LABEL83:(void)0;
1014 }
1015 }
1016 var67 = var82;
1017 } else {
1018 var67 = var_81;
1019 }
1020 if (var67){
1021 {
1022 { /* Inline model#MProperty#intro_mclassdef (var_res) on <var_res:nullable MProperty(MMethod)> */
1023 var87 = var_res->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_res:nullable MProperty(MMethod)> */
1024 if (unlikely(var87 == NULL)) {
1025 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
1026 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
1027 fatal_exit(1);
1028 }
1029 var85 = var87;
1030 RET_LABEL86:(void)0;
1031 }
1032 }
1033 {
1034 { /* Inline model#MClassDef#bound_mtype (var85) on <var85:MClassDef> */
1035 var90 = var85->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var85:MClassDef> */
1036 if (unlikely(var90 == NULL)) {
1037 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1038 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1039 fatal_exit(1);
1040 }
1041 var88 = var90;
1042 RET_LABEL89:(void)0;
1043 }
1044 }
1045 var_restype = var88;
1046 {
1047 { /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty(MMethod)> */
1048 var93 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty(MMethod)> */
1049 if (unlikely(var93 == NULL)) {
1050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
1051 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
1052 fatal_exit(1);
1053 }
1054 var91 = var93;
1055 RET_LABEL92:(void)0;
1056 }
1057 }
1058 {
1059 { /* Inline model#MClassDef#bound_mtype (var91) on <var91:MClassDef> */
1060 var96 = var91->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var91:MClassDef> */
1061 if (unlikely(var96 == NULL)) {
1062 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1063 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1064 fatal_exit(1);
1065 }
1066 var94 = var96;
1067 RET_LABEL95:(void)0;
1068 }
1069 }
1070 var_mproptype = var94;
1071 {
1072 var97 = nit___nit__MType___is_subtype(var_mproptype, var_mmodule, ((val*)NULL), var_restype);
1073 }
1074 if (var97){
1075 var_res = var_mprop;
1076 goto BREAK_label;
1077 } else {
1078 }
1079 } else {
1080 }
1081 if (var_ress == NULL) {
1082 var98 = 1; /* is null */
1083 } else {
1084 var98 = 0; /* arg is null but recv is not */
1085 }
1086 if (0) {
1087 var99 = standard___standard__Array___standard__kernel__Object___61d_61d(var_ress, ((val*)NULL));
1088 var98 = var99;
1089 }
1090 if (var98){
1091 var100 = NEW_standard__Array(&type_standard__Array__nit__MProperty);
1092 {
1093 standard___standard__Array___standard__kernel__Object__init(var100); /* Direct call array#Array#init on <var100:Array[MProperty]>*/
1094 }
1095 var_ress = var100;
1096 {
1097 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_ress, var_res); /* Direct call array#Array#add on <var_ress:nullable Array[MProperty](Array[MProperty])>*/
1098 }
1099 } else {
1100 }
1101 {
1102 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_ress, var_mprop); /* Direct call array#Array#add on <var_ress:nullable Array[MProperty](Array[MProperty])>*/
1103 }
1104 BREAK_label: (void)0;
1105 {
1106 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_17); /* Direct call array#ArrayIterator#next on <var_17:ArrayIterator[MProperty]>*/
1107 }
1108 } else {
1109 goto BREAK_label101;
1110 }
1111 }
1112 BREAK_label101: (void)0;
1113 {
1114 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_17); /* Direct call array#ArrayIterator#finish on <var_17:ArrayIterator[MProperty]>*/
1115 }
1116 if (var_ress == NULL) {
1117 var104 = 0; /* is null */
1118 } else {
1119 var104 = 1; /* arg is null and recv is not */
1120 }
1121 if (0) {
1122 { /* Inline kernel#Object#!= (var_ress,((val*)NULL)) on <var_ress:nullable Array[MProperty]> */
1123 var_other = ((val*)NULL);
1124 {
1125 var107 = ((short int(*)(val* self, val* p0))(var_ress->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ress, var_other); /* == on <var_ress:nullable Array[MProperty](Array[MProperty])>*/
1126 }
1127 var108 = !var107;
1128 var105 = var108;
1129 goto RET_LABEL106;
1130 RET_LABEL106:(void)0;
1131 }
1132 var104 = var105;
1133 }
1134 var_109 = var104;
1135 if (var104){
1136 /* <var_res:nullable MProperty> isa MMethod */
1137 cltype111 = type_nit__MMethod.color;
1138 idtype112 = type_nit__MMethod.id;
1139 if(var_res == NULL) {
1140 var110 = 0;
1141 } else {
1142 if(cltype111 >= var_res->type->table_size) {
1143 var110 = 0;
1144 } else {
1145 var110 = var_res->type->type_table[cltype111] == idtype112;
1146 }
1147 }
1148 var103 = var110;
1149 } else {
1150 var103 = var_109;
1151 }
1152 var_113 = var103;
1153 if (var103){
1154 {
1155 { /* Inline model#MMethod#is_init (var_res) on <var_res:nullable MProperty(MMethod)> */
1156 var116 = var_res->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var_res:nullable MProperty(MMethod)> */
1157 var114 = var116;
1158 RET_LABEL115:(void)0;
1159 }
1160 }
1161 var102 = var114;
1162 } else {
1163 var102 = var_113;
1164 }
1165 if (var102){
1166 {
1167 { /* Inline model#MProperty#intro_mclassdef (var_res) on <var_res:nullable MProperty(MMethod)> */
1168 var119 = var_res->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_res:nullable MProperty(MMethod)> */
1169 if (unlikely(var119 == NULL)) {
1170 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
1171 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
1172 fatal_exit(1);
1173 }
1174 var117 = var119;
1175 RET_LABEL118:(void)0;
1176 }
1177 }
1178 {
1179 { /* Inline model#MClassDef#bound_mtype (var117) on <var117:MClassDef> */
1180 var122 = var117->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var117:MClassDef> */
1181 if (unlikely(var122 == NULL)) {
1182 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1183 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1184 fatal_exit(1);
1185 }
1186 var120 = var122;
1187 RET_LABEL121:(void)0;
1188 }
1189 }
1190 var_restype123 = var120;
1191 var124 = NEW_standard__Array(&type_standard__Array__nit__MProperty);
1192 {
1193 standard___standard__Array___standard__kernel__Object__init(var124); /* Direct call array#Array#init on <var124:Array[MProperty]>*/
1194 }
1195 var_ress2 = var124;
1196 var_125 = var_ress;
1197 {
1198 var126 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_125);
1199 }
1200 var_127 = var126;
1201 for(;;) {
1202 {
1203 var128 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_127);
1204 }
1205 if (var128){
1206 {
1207 var129 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_127);
1208 }
1209 var_mprop130 = var129;
1210 {
1211 { /* Inline model#MProperty#intro_mclassdef (var_mprop130) on <var_mprop130:MProperty> */
1212 var133 = var_mprop130->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop130:MProperty> */
1213 if (unlikely(var133 == NULL)) {
1214 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
1215 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
1216 fatal_exit(1);
1217 }
1218 var131 = var133;
1219 RET_LABEL132:(void)0;
1220 }
1221 }
1222 {
1223 { /* Inline model#MClassDef#bound_mtype (var131) on <var131:MClassDef> */
1224 var136 = var131->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var131:MClassDef> */
1225 if (unlikely(var136 == NULL)) {
1226 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1227 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1228 fatal_exit(1);
1229 }
1230 var134 = var136;
1231 RET_LABEL135:(void)0;
1232 }
1233 }
1234 var_mproptype137 = var134;
1235 {
1236 var138 = nit___nit__MType___is_subtype(var_restype123, var_mmodule, ((val*)NULL), var_mproptype137);
1237 }
1238 var139 = !var138;
1239 if (var139){
1240 {
1241 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_ress2, var_mprop130); /* Direct call array#Array#add on <var_ress2:Array[MProperty]>*/
1242 }
1243 } else {
1244 /* <var_mprop130:MProperty> isa MMethod */
1245 cltype142 = type_nit__MMethod.color;
1246 idtype143 = type_nit__MMethod.id;
1247 if(cltype142 >= var_mprop130->type->table_size) {
1248 var141 = 0;
1249 } else {
1250 var141 = var_mprop130->type->type_table[cltype142] == idtype143;
1251 }
1252 var144 = !var141;
1253 var_145 = var144;
1254 if (var144){
1255 var140 = var_145;
1256 } else {
1257 {
1258 { /* Inline model#MMethod#is_init (var_mprop130) on <var_mprop130:MProperty(MMethod)> */
1259 var148 = var_mprop130->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var_mprop130:MProperty(MMethod)> */
1260 var146 = var148;
1261 RET_LABEL147:(void)0;
1262 }
1263 }
1264 var149 = !var146;
1265 var140 = var149;
1266 }
1267 if (var140){
1268 {
1269 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_ress2, var_mprop130); /* Direct call array#Array#add on <var_ress2:Array[MProperty]>*/
1270 }
1271 } else {
1272 }
1273 }
1274 {
1275 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_127); /* Direct call array#ArrayIterator#next on <var_127:ArrayIterator[MProperty]>*/
1276 }
1277 } else {
1278 goto BREAK_label150;
1279 }
1280 }
1281 BREAK_label150: (void)0;
1282 {
1283 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_127); /* Direct call array#ArrayIterator#finish on <var_127:ArrayIterator[MProperty]>*/
1284 }
1285 {
1286 var151 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_ress2);
1287 }
1288 if (var151){
1289 var_ress = ((val*)NULL);
1290 } else {
1291 var_ress = var_ress2;
1292 {
1293 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_ress, var_res); /* Direct call array#Array#add on <var_ress:nullable Array[MProperty](Array[MProperty])>*/
1294 }
1295 }
1296 } else {
1297 }
1298 if (var_ress == NULL) {
1299 var152 = 0; /* is null */
1300 } else {
1301 var152 = 1; /* arg is null and recv is not */
1302 }
1303 if (0) {
1304 { /* Inline kernel#Object#!= (var_ress,((val*)NULL)) on <var_ress:nullable Array[MProperty]> */
1305 var_other = ((val*)NULL);
1306 {
1307 var155 = ((short int(*)(val* self, val* p0))(var_ress->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ress, var_other); /* == on <var_ress:nullable Array[MProperty](Array[MProperty])>*/
1308 }
1309 var156 = !var155;
1310 var153 = var156;
1311 goto RET_LABEL154;
1312 RET_LABEL154:(void)0;
1313 }
1314 var152 = var153;
1315 }
1316 if (var152){
1317 {
1318 { /* Inline array#AbstractArrayRead#length (var_ress) on <var_ress:nullable Array[MProperty](Array[MProperty])> */
1319 var159 = var_ress->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_ress:nullable Array[MProperty](Array[MProperty])> */
1320 var157 = var159;
1321 RET_LABEL158:(void)0;
1322 }
1323 }
1324 {
1325 { /* Inline kernel#Int#> (var157,1l) on <var157:Int> */
1326 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1327 /* <1l:Int> isa OTHER */
1328 var162 = 1; /* easy <1l:Int> isa OTHER*/
1329 if (unlikely(!var162)) {
1330 var_class_name = type_standard__Int.name;
1331 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1332 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
1333 fatal_exit(1);
1334 }
1335 var165 = var157 > 1l;
1336 var160 = var165;
1337 goto RET_LABEL161;
1338 RET_LABEL161:(void)0;
1339 }
1340 }
1341 if (unlikely(!var160)) {
1342 PRINT_ERROR("Runtime error: %s", "Assert failed");
1343 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 168);
1344 fatal_exit(1);
1345 }
1346 var166 = NEW_standard__Array(&type_standard__Array__standard__String);
1347 {
1348 standard___standard__Array___standard__kernel__Object__init(var166); /* Direct call array#Array#init on <var166:Array[String]>*/
1349 }
1350 var_s = var166;
1351 var_167 = var_ress;
1352 {
1353 var168 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_167);
1354 }
1355 var_169 = var168;
1356 for(;;) {
1357 {
1358 var170 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_169);
1359 }
1360 if (var170){
1361 {
1362 var171 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_169);
1363 }
1364 var_mprop172 = var171;
1365 {
1366 var173 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_mprop172);
1367 }
1368 {
1369 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_s, var173); /* Direct call array#Array#add on <var_s:Array[String]>*/
1370 }
1371 {
1372 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_169); /* Direct call array#ArrayIterator#next on <var_169:ArrayIterator[MProperty]>*/
1373 }
1374 } else {
1375 goto BREAK_label174;
1376 }
1377 }
1378 BREAK_label174: (void)0;
1379 {
1380 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_169); /* Direct call array#ArrayIterator#finish on <var_169:ArrayIterator[MProperty]>*/
1381 }
1382 if (unlikely(varonce==NULL)) {
1383 var175 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
1384 if (likely(varonce176!=NULL)) {
1385 var177 = varonce176;
1386 } else {
1387 var178 = "Error: ambiguous property name `";
1388 var179 = standard___standard__NativeString___to_s_with_length(var178, 32l);
1389 var177 = var179;
1390 varonce176 = var177;
1391 }
1392 ((struct instance_standard__NativeArray*)var175)->values[0]=var177;
1393 if (likely(varonce180!=NULL)) {
1394 var181 = varonce180;
1395 } else {
1396 var182 = "` for `";
1397 var183 = standard___standard__NativeString___to_s_with_length(var182, 7l);
1398 var181 = var183;
1399 varonce180 = var181;
1400 }
1401 ((struct instance_standard__NativeArray*)var175)->values[2]=var181;
1402 if (likely(varonce184!=NULL)) {
1403 var185 = varonce184;
1404 } else {
1405 var186 = "`; conflict between ";
1406 var187 = standard___standard__NativeString___to_s_with_length(var186, 20l);
1407 var185 = var187;
1408 varonce184 = var185;
1409 }
1410 ((struct instance_standard__NativeArray*)var175)->values[4]=var185;
1411 if (likely(varonce188!=NULL)) {
1412 var189 = varonce188;
1413 } else {
1414 var190 = ".";
1415 var191 = standard___standard__NativeString___to_s_with_length(var190, 1l);
1416 var189 = var191;
1417 varonce188 = var189;
1418 }
1419 ((struct instance_standard__NativeArray*)var175)->values[6]=var189;
1420 } else {
1421 var175 = varonce;
1422 varonce = NULL;
1423 }
1424 ((struct instance_standard__NativeArray*)var175)->values[1]=var_name;
1425 {
1426 var192 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
1427 }
1428 ((struct instance_standard__NativeArray*)var175)->values[3]=var192;
1429 if (likely(varonce193!=NULL)) {
1430 var194 = varonce193;
1431 } else {
1432 var195 = " and ";
1433 var196 = standard___standard__NativeString___to_s_with_length(var195, 5l);
1434 var194 = var196;
1435 varonce193 = var194;
1436 }
1437 {
1438 var197 = standard__string___Collection___join(var_s, var194);
1439 }
1440 ((struct instance_standard__NativeArray*)var175)->values[5]=var197;
1441 {
1442 var198 = ((val*(*)(val* self))(var175->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var175); /* native_to_s on <var175:NativeArray[String]>*/
1443 }
1444 varonce = var175;
1445 {
1446 nit___nit__ModelBuilder___error(self, var_anode, var198); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
1447 }
1448 } else {
1449 }
1450 {
1451 { /* Inline modelbuilder_base#ModelBuilder#try_get_mproperty_by_name2_cache (self) on <self:ModelBuilder> */
1452 var201 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
1453 if (unlikely(var201 == NULL)) {
1454 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache");
1455 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 178);
1456 fatal_exit(1);
1457 }
1458 var199 = var201;
1459 RET_LABEL200:(void)0;
1460 }
1461 }
1462 {
1463 more_collections___more_collections__HashMap3____91d_93d_61d(var199, var_mmodule, var_mtype, var_name, var_res); /* Direct call more_collections#HashMap3#[]= on <var199:HashMap3[MModule, MType, String, nullable MProperty]>*/
1464 }
1465 var = var_res;
1466 goto RET_LABEL;
1467 RET_LABEL:;
1468 return var;
1469 }
1470 /* method modelbuilder_base#ModelBuilder#try_get_mproperty_by_name2_cache for (self: ModelBuilder): HashMap3[MModule, MType, String, nullable MProperty] */
1471 val* nit___nit__ModelBuilder___try_get_mproperty_by_name2_cache(val* self) {
1472 val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1473 val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1474 var1 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___try_get_mproperty_by_name2_cache].val; /* _try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
1475 if (unlikely(var1 == NULL)) {
1476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _try_get_mproperty_by_name2_cache");
1477 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 178);
1478 fatal_exit(1);
1479 }
1480 var = var1;
1481 RET_LABEL:;
1482 return var;
1483 }
1484 /* method modelbuilder_base#ModelBuilder#try_get_mproperty_by_name for (self: ModelBuilder, ANode, MClassDef, String): nullable MProperty */
1485 val* nit___nit__ModelBuilder___try_get_mproperty_by_name(val* self, val* p0, val* p1, val* p2) {
1486 val* var /* : nullable MProperty */;
1487 val* var_anode /* var anode: ANode */;
1488 val* var_mclassdef /* var mclassdef: MClassDef */;
1489 val* var_name /* var name: String */;
1490 val* var1 /* : MModule */;
1491 val* var3 /* : MModule */;
1492 val* var4 /* : MClassType */;
1493 val* var6 /* : MClassType */;
1494 val* var7 /* : nullable MProperty */;
1495 var_anode = p0;
1496 var_mclassdef = p1;
1497 var_name = p2;
1498 {
1499 { /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
1500 var3 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
1501 if (unlikely(var3 == NULL)) {
1502 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1503 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
1504 fatal_exit(1);
1505 }
1506 var1 = var3;
1507 RET_LABEL2:(void)0;
1508 }
1509 }
1510 {
1511 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
1512 var6 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
1513 if (unlikely(var6 == NULL)) {
1514 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1515 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1516 fatal_exit(1);
1517 }
1518 var4 = var6;
1519 RET_LABEL5:(void)0;
1520 }
1521 }
1522 {
1523 var7 = nit___nit__ModelBuilder___try_get_mproperty_by_name2(self, var_anode, var1, var4, var_name);
1524 }
1525 var = var7;
1526 goto RET_LABEL;
1527 RET_LABEL:;
1528 return var;
1529 }
1530 /* method modelbuilder_base#ModelBuilder#error for (self: ModelBuilder, nullable ANode, String) */
1531 void nit___nit__ModelBuilder___error(val* self, val* p0, val* p1) {
1532 val* var_n /* var n: nullable ANode */;
1533 val* var_text /* var text: String */;
1534 val* var_l /* var l: nullable Object */;
1535 short int var /* : Bool */;
1536 short int var1 /* : Bool */;
1537 val* var_other /* var other: nullable Object */;
1538 short int var3 /* : Bool */;
1539 short int var4 /* : Bool */;
1540 val* var5 /* : Location */;
1541 val* var6 /* : ToolContext */;
1542 val* var8 /* : ToolContext */;
1543 val* var9 /* : Message */;
1544 var_n = p0;
1545 var_text = p1;
1546 var_l = ((val*)NULL);
1547 if (var_n == NULL) {
1548 var = 0; /* is null */
1549 } else {
1550 var = 1; /* arg is null and recv is not */
1551 }
1552 if (0) {
1553 { /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ANode> */
1554 var_other = ((val*)NULL);
1555 {
1556 var3 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ANode(ANode)>*/
1557 }
1558 var4 = !var3;
1559 var1 = var4;
1560 goto RET_LABEL2;
1561 RET_LABEL2:(void)0;
1562 }
1563 var = var1;
1564 }
1565 if (var){
1566 {
1567 var5 = ((val*(*)(val* self))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__hot_location]))(var_n); /* hot_location on <var_n:nullable ANode(ANode)>*/
1568 }
1569 var_l = var5;
1570 } else {
1571 }
1572 {
1573 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1574 var8 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1575 if (unlikely(var8 == NULL)) {
1576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1577 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1578 fatal_exit(1);
1579 }
1580 var6 = var8;
1581 RET_LABEL7:(void)0;
1582 }
1583 }
1584 {
1585 var9 = nit___nit__ToolContext___error(var6, var_l, var_text);
1586 }
1587 RET_LABEL:;
1588 }
1589 /* method modelbuilder_base#ModelBuilder#warning for (self: ModelBuilder, nullable ANode, String, String) */
1590 void nit___nit__ModelBuilder___warning(val* self, val* p0, val* p1, val* p2) {
1591 val* var_n /* var n: nullable ANode */;
1592 val* var_tag /* var tag: String */;
1593 val* var_text /* var text: String */;
1594 val* var_l /* var l: nullable Object */;
1595 short int var /* : Bool */;
1596 short int var1 /* : Bool */;
1597 val* var_other /* var other: nullable Object */;
1598 short int var3 /* : Bool */;
1599 short int var4 /* : Bool */;
1600 val* var5 /* : Location */;
1601 val* var6 /* : ToolContext */;
1602 val* var8 /* : ToolContext */;
1603 val* var9 /* : nullable Message */;
1604 var_n = p0;
1605 var_tag = p1;
1606 var_text = p2;
1607 var_l = ((val*)NULL);
1608 if (var_n == NULL) {
1609 var = 0; /* is null */
1610 } else {
1611 var = 1; /* arg is null and recv is not */
1612 }
1613 if (0) {
1614 { /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ANode> */
1615 var_other = ((val*)NULL);
1616 {
1617 var3 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ANode(ANode)>*/
1618 }
1619 var4 = !var3;
1620 var1 = var4;
1621 goto RET_LABEL2;
1622 RET_LABEL2:(void)0;
1623 }
1624 var = var1;
1625 }
1626 if (var){
1627 {
1628 var5 = ((val*(*)(val* self))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__hot_location]))(var_n); /* hot_location on <var_n:nullable ANode(ANode)>*/
1629 }
1630 var_l = var5;
1631 } else {
1632 }
1633 {
1634 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1635 var8 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1636 if (unlikely(var8 == NULL)) {
1637 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1638 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1639 fatal_exit(1);
1640 }
1641 var6 = var8;
1642 RET_LABEL7:(void)0;
1643 }
1644 }
1645 {
1646 var9 = nit___nit__ToolContext___warning(var6, var_l, var_tag, var_text);
1647 }
1648 RET_LABEL:;
1649 }
1650 /* method modelbuilder_base#ModelBuilder#advice for (self: ModelBuilder, nullable ANode, String, String) */
1651 void nit___nit__ModelBuilder___advice(val* self, val* p0, val* p1, val* p2) {
1652 val* var_n /* var n: nullable ANode */;
1653 val* var_tag /* var tag: String */;
1654 val* var_text /* var text: String */;
1655 val* var_l /* var l: nullable Object */;
1656 short int var /* : Bool */;
1657 short int var1 /* : Bool */;
1658 val* var_other /* var other: nullable Object */;
1659 short int var3 /* : Bool */;
1660 short int var4 /* : Bool */;
1661 val* var5 /* : Location */;
1662 val* var6 /* : ToolContext */;
1663 val* var8 /* : ToolContext */;
1664 val* var9 /* : nullable Message */;
1665 var_n = p0;
1666 var_tag = p1;
1667 var_text = p2;
1668 var_l = ((val*)NULL);
1669 if (var_n == NULL) {
1670 var = 0; /* is null */
1671 } else {
1672 var = 1; /* arg is null and recv is not */
1673 }
1674 if (0) {
1675 { /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ANode> */
1676 var_other = ((val*)NULL);
1677 {
1678 var3 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:nullable ANode(ANode)>*/
1679 }
1680 var4 = !var3;
1681 var1 = var4;
1682 goto RET_LABEL2;
1683 RET_LABEL2:(void)0;
1684 }
1685 var = var1;
1686 }
1687 if (var){
1688 {
1689 var5 = ((val*(*)(val* self))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__hot_location]))(var_n); /* hot_location on <var_n:nullable ANode(ANode)>*/
1690 }
1691 var_l = var5;
1692 } else {
1693 }
1694 {
1695 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1696 var8 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1697 if (unlikely(var8 == NULL)) {
1698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1699 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1700 fatal_exit(1);
1701 }
1702 var6 = var8;
1703 RET_LABEL7:(void)0;
1704 }
1705 }
1706 {
1707 var9 = nit___nit__ToolContext___advice(var6, var_l, var_tag, var_text);
1708 }
1709 RET_LABEL:;
1710 }
1711 /* method modelbuilder_base#ModelBuilder#force_get_primitive_method for (self: ModelBuilder, nullable ANode, String, MClass, MModule): MMethod */
1712 val* nit___nit__ModelBuilder___force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
1713 val* var /* : MMethod */;
1714 val* var_n /* var n: nullable ANode */;
1715 val* var_name /* var name: String */;
1716 val* var_recv /* var recv: MClass */;
1717 val* var_mmodule /* var mmodule: MModule */;
1718 val* var1 /* : nullable MMethod */;
1719 val* var_res /* var res: nullable MMethod */;
1720 short int var2 /* : Bool */;
1721 short int var3 /* : Bool */;
1722 val* var_other /* var other: nullable Object */;
1723 short int var5 /* : Bool */;
1724 short int var7 /* : Bool */;
1725 val* var_l /* var l: nullable Object */;
1726 short int var8 /* : Bool */;
1727 short int var9 /* : Bool */;
1728 val* var_other11 /* var other: nullable Object */;
1729 short int var12 /* : Bool */;
1730 short int var13 /* : Bool */;
1731 val* var14 /* : Location */;
1732 val* var15 /* : ToolContext */;
1733 val* var17 /* : ToolContext */;
1734 val* var18 /* : NativeArray[String] */;
1735 static val* varonce;
1736 static val* varonce19;
1737 val* var20 /* : String */;
1738 char* var21 /* : NativeString */;
1739 val* var22 /* : FlatString */;
1740 static val* varonce23;
1741 val* var24 /* : String */;
1742 char* var25 /* : NativeString */;
1743 val* var26 /* : FlatString */;
1744 static val* varonce27;
1745 val* var28 /* : String */;
1746 char* var29 /* : NativeString */;
1747 val* var30 /* : FlatString */;
1748 val* var31 /* : String */;
1749 val* var32 /* : String */;
1750 var_n = p0;
1751 var_name = p1;
1752 var_recv = p2;
1753 var_mmodule = p3;
1754 {
1755 var1 = nit__model___MModule___try_get_primitive_method(var_mmodule, var_name, var_recv);
1756 }
1757 var_res = var1;
1758 if (var_res == NULL) {
1759 var2 = 1; /* is null */
1760 } else {
1761 var2 = 0; /* arg is null but recv is not */
1762 }
1763 if (0) {
1764 { /* Inline kernel#Object#== (var_res,((val*)NULL)) on <var_res:nullable MMethod> */
1765 var_other = ((val*)NULL);
1766 {
1767 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable MMethod(MMethod)> */
1768 var7 = var_res == var_other;
1769 var5 = var7;
1770 goto RET_LABEL6;
1771 RET_LABEL6:(void)0;
1772 }
1773 }
1774 var3 = var5;
1775 goto RET_LABEL4;
1776 RET_LABEL4:(void)0;
1777 }
1778 var2 = var3;
1779 }
1780 if (var2){
1781 var_l = ((val*)NULL);
1782 if (var_n == NULL) {
1783 var8 = 0; /* is null */
1784 } else {
1785 var8 = 1; /* arg is null and recv is not */
1786 }
1787 if (0) {
1788 { /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ANode> */
1789 var_other11 = ((val*)NULL);
1790 {
1791 var12 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other11); /* == on <var_n:nullable ANode(ANode)>*/
1792 }
1793 var13 = !var12;
1794 var9 = var13;
1795 goto RET_LABEL10;
1796 RET_LABEL10:(void)0;
1797 }
1798 var8 = var9;
1799 }
1800 if (var8){
1801 {
1802 var14 = ((val*(*)(val* self))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__hot_location]))(var_n); /* hot_location on <var_n:nullable ANode(ANode)>*/
1803 }
1804 var_l = var14;
1805 } else {
1806 }
1807 {
1808 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1809 var17 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1810 if (unlikely(var17 == NULL)) {
1811 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1812 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1813 fatal_exit(1);
1814 }
1815 var15 = var17;
1816 RET_LABEL16:(void)0;
1817 }
1818 }
1819 if (unlikely(varonce==NULL)) {
1820 var18 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
1821 if (likely(varonce19!=NULL)) {
1822 var20 = varonce19;
1823 } else {
1824 var21 = "Fatal Error: `";
1825 var22 = standard___standard__NativeString___to_s_with_length(var21, 14l);
1826 var20 = var22;
1827 varonce19 = var20;
1828 }
1829 ((struct instance_standard__NativeArray*)var18)->values[0]=var20;
1830 if (likely(varonce23!=NULL)) {
1831 var24 = varonce23;
1832 } else {
1833 var25 = "` must have a property named `";
1834 var26 = standard___standard__NativeString___to_s_with_length(var25, 30l);
1835 var24 = var26;
1836 varonce23 = var24;
1837 }
1838 ((struct instance_standard__NativeArray*)var18)->values[2]=var24;
1839 if (likely(varonce27!=NULL)) {
1840 var28 = varonce27;
1841 } else {
1842 var29 = "`.";
1843 var30 = standard___standard__NativeString___to_s_with_length(var29, 2l);
1844 var28 = var30;
1845 varonce27 = var28;
1846 }
1847 ((struct instance_standard__NativeArray*)var18)->values[4]=var28;
1848 } else {
1849 var18 = varonce;
1850 varonce = NULL;
1851 }
1852 {
1853 var31 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_standard__string__Object__to_s]))(var_recv); /* to_s on <var_recv:MClass>*/
1854 }
1855 ((struct instance_standard__NativeArray*)var18)->values[1]=var31;
1856 ((struct instance_standard__NativeArray*)var18)->values[3]=var_name;
1857 {
1858 var32 = ((val*(*)(val* self))(var18->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var18); /* native_to_s on <var18:NativeArray[String]>*/
1859 }
1860 varonce = var18;
1861 {
1862 nit___nit__ToolContext___fatal_error(var15, var_l, var32); /* Direct call toolcontext#ToolContext#fatal_error on <var15:ToolContext>*/
1863 }
1864 PRINT_ERROR("Runtime error: %s", "Aborted");
1865 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 222);
1866 fatal_exit(1);
1867 } else {
1868 }
1869 var = var_res;
1870 goto RET_LABEL;
1871 RET_LABEL:;
1872 return var;
1873 }
1874 /* method modelbuilder_base#ModelBuilder#resolve_mtype_unchecked for (self: ModelBuilder, MModule, nullable MClassDef, AType, Bool): nullable MType */
1875 val* nit___nit__ModelBuilder___resolve_mtype_unchecked(val* self, val* p0, val* p1, val* p2, short int p3) {
1876 val* var /* : nullable MType */;
1877 val* var_mmodule /* var mmodule: MModule */;
1878 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
1879 val* var_ntype /* var ntype: AType */;
1880 short int var_with_virtual /* var with_virtual: Bool */;
1881 val* var1 /* : TClassid */;
1882 val* var3 /* : TClassid */;
1883 val* var4 /* : String */;
1884 val* var_name /* var name: String */;
1885 short int var5 /* : Bool */;
1886 short int var6 /* : Bool */;
1887 short int var7 /* : Bool */;
1888 val* var_other /* var other: nullable Object */;
1889 short int var9 /* : Bool */;
1890 short int var10 /* : Bool */;
1891 short int var_ /* var : Bool */;
1892 val* var11 /* : nullable MProperty */;
1893 short int var12 /* : Bool */;
1894 int cltype;
1895 int idtype;
1896 const char* var_class_name;
1897 val* var_prop /* var prop: nullable MVirtualTypeProp */;
1898 short int var13 /* : Bool */;
1899 short int var14 /* : Bool */;
1900 short int var16 /* : Bool */;
1901 short int var17 /* : Bool */;
1902 val* var18 /* : ANodes[AType] */;
1903 val* var20 /* : ANodes[AType] */;
1904 short int var21 /* : Bool */;
1905 short int var22 /* : Bool */;
1906 val* var23 /* : NativeArray[String] */;
1907 static val* varonce;
1908 static val* varonce24;
1909 val* var25 /* : String */;
1910 char* var26 /* : NativeString */;
1911 val* var27 /* : FlatString */;
1912 static val* varonce28;
1913 val* var29 /* : String */;
1914 char* var30 /* : NativeString */;
1915 val* var31 /* : FlatString */;
1916 val* var32 /* : String */;
1917 val* var33 /* : MVirtualType */;
1918 val* var35 /* : MVirtualType */;
1919 val* var_res /* var res: MType */;
1920 val* var36 /* : nullable TKwnullable */;
1921 val* var38 /* : nullable TKwnullable */;
1922 short int var39 /* : Bool */;
1923 short int var40 /* : Bool */;
1924 short int var42 /* : Bool */;
1925 short int var43 /* : Bool */;
1926 val* var44 /* : MType */;
1927 short int var46 /* : Bool */;
1928 short int var47 /* : Bool */;
1929 short int var49 /* : Bool */;
1930 short int var50 /* : Bool */;
1931 val* var51 /* : MClass */;
1932 val* var53 /* : MClass */;
1933 val* var54 /* : Array[MParameterType] */;
1934 val* var56 /* : Array[MParameterType] */;
1935 val* var_57 /* var : Array[MParameterType] */;
1936 val* var58 /* : ArrayIterator[nullable Object] */;
1937 val* var_59 /* var : ArrayIterator[MParameterType] */;
1938 short int var60 /* : Bool */;
1939 val* var61 /* : nullable Object */;
1940 val* var_p /* var p: MParameterType */;
1941 val* var62 /* : String */;
1942 val* var64 /* : String */;
1943 short int var65 /* : Bool */;
1944 short int var67 /* : Bool */;
1945 short int var68 /* : Bool */;
1946 val* var69 /* : ANodes[AType] */;
1947 val* var71 /* : ANodes[AType] */;
1948 short int var72 /* : Bool */;
1949 short int var73 /* : Bool */;
1950 val* var75 /* : NativeArray[String] */;
1951 static val* varonce74;
1952 static val* varonce76;
1953 val* var77 /* : String */;
1954 char* var78 /* : NativeString */;
1955 val* var79 /* : FlatString */;
1956 static val* varonce80;
1957 val* var81 /* : String */;
1958 char* var82 /* : NativeString */;
1959 val* var83 /* : FlatString */;
1960 val* var84 /* : String */;
1961 val* var85 /* : nullable TKwnullable */;
1962 val* var87 /* : nullable TKwnullable */;
1963 short int var88 /* : Bool */;
1964 short int var89 /* : Bool */;
1965 short int var91 /* : Bool */;
1966 short int var92 /* : Bool */;
1967 val* var93 /* : MType */;
1968 val* var96 /* : nullable MClass */;
1969 val* var_mclass /* var mclass: nullable MClass */;
1970 short int var97 /* : Bool */;
1971 short int var98 /* : Bool */;
1972 short int var100 /* : Bool */;
1973 short int var101 /* : Bool */;
1974 val* var102 /* : ANodes[AType] */;
1975 val* var104 /* : ANodes[AType] */;
1976 long var105 /* : Int */;
1977 long var_arity /* var arity: Int */;
1978 long var106 /* : Int */;
1979 long var108 /* : Int */;
1980 short int var109 /* : Bool */;
1981 short int var111 /* : Bool */;
1982 short int var112 /* : Bool */;
1983 short int var113 /* : Bool */;
1984 short int var115 /* : Bool */;
1985 val* var117 /* : NativeArray[String] */;
1986 static val* varonce116;
1987 static val* varonce118;
1988 val* var119 /* : String */;
1989 char* var120 /* : NativeString */;
1990 val* var121 /* : FlatString */;
1991 static val* varonce122;
1992 val* var123 /* : String */;
1993 char* var124 /* : NativeString */;
1994 val* var125 /* : FlatString */;
1995 val* var126 /* : String */;
1996 val* var127 /* : String */;
1997 long var128 /* : Int */;
1998 long var130 /* : Int */;
1999 short int var131 /* : Bool */;
2000 short int var133 /* : Bool */;
2001 val* var135 /* : NativeArray[String] */;
2002 static val* varonce134;
2003 static val* varonce136;
2004 val* var137 /* : String */;
2005 char* var138 /* : NativeString */;
2006 val* var139 /* : FlatString */;
2007 static val* varonce140;
2008 val* var141 /* : String */;
2009 char* var142 /* : NativeString */;
2010 val* var143 /* : FlatString */;
2011 val* var144 /* : String */;
2012 val* var146 /* : NativeArray[String] */;
2013 static val* varonce145;
2014 static val* varonce147;
2015 val* var148 /* : String */;
2016 char* var149 /* : NativeString */;
2017 val* var150 /* : FlatString */;
2018 static val* varonce151;
2019 val* var152 /* : String */;
2020 char* var153 /* : NativeString */;
2021 val* var154 /* : FlatString */;
2022 static val* varonce155;
2023 val* var156 /* : String */;
2024 char* var157 /* : NativeString */;
2025 val* var158 /* : FlatString */;
2026 static val* varonce159;
2027 val* var160 /* : String */;
2028 char* var161 /* : NativeString */;
2029 val* var162 /* : FlatString */;
2030 long var163 /* : Int */;
2031 long var165 /* : Int */;
2032 val* var166 /* : String */;
2033 val* var167 /* : String */;
2034 val* var168 /* : String */;
2035 val* var169 /* : String */;
2036 short int var170 /* : Bool */;
2037 short int var172 /* : Bool */;
2038 val* var173 /* : MClassType */;
2039 val* var175 /* : MClassType */;
2040 val* var176 /* : nullable TKwnullable */;
2041 val* var178 /* : nullable TKwnullable */;
2042 short int var179 /* : Bool */;
2043 short int var180 /* : Bool */;
2044 short int var182 /* : Bool */;
2045 short int var183 /* : Bool */;
2046 val* var184 /* : MType */;
2047 val* var186 /* : Array[MType] */;
2048 val* var_mtypes /* var mtypes: Array[MType] */;
2049 val* var187 /* : ANodes[AType] */;
2050 val* var189 /* : ANodes[AType] */;
2051 val* var_190 /* var : ANodes[AType] */;
2052 val* var191 /* : Iterator[ANode] */;
2053 val* var_192 /* var : Iterator[AType] */;
2054 short int var193 /* : Bool */;
2055 val* var194 /* : nullable Object */;
2056 val* var_nt /* var nt: AType */;
2057 val* var195 /* : nullable MType */;
2058 val* var_mt /* var mt: nullable MType */;
2059 short int var196 /* : Bool */;
2060 short int var197 /* : Bool */;
2061 val* var_other199 /* var other: nullable Object */;
2062 short int var200 /* : Bool */;
2063 short int var202 /* : Bool */;
2064 val* var204 /* : MClassType */;
2065 val* var205 /* : nullable TKwnullable */;
2066 val* var207 /* : nullable TKwnullable */;
2067 short int var208 /* : Bool */;
2068 short int var209 /* : Bool */;
2069 short int var211 /* : Bool */;
2070 short int var212 /* : Bool */;
2071 val* var213 /* : MType */;
2072 val* var216 /* : NativeArray[String] */;
2073 static val* varonce215;
2074 static val* varonce217;
2075 val* var218 /* : String */;
2076 char* var219 /* : NativeString */;
2077 val* var220 /* : FlatString */;
2078 static val* varonce221;
2079 val* var222 /* : String */;
2080 char* var223 /* : NativeString */;
2081 val* var224 /* : FlatString */;
2082 static val* varonce225;
2083 val* var226 /* : String */;
2084 char* var227 /* : NativeString */;
2085 val* var228 /* : FlatString */;
2086 val* var229 /* : String */;
2087 val* var230 /* : String */;
2088 var_mmodule = p0;
2089 var_mclassdef = p1;
2090 var_ntype = p2;
2091 var_with_virtual = p3;
2092 {
2093 { /* Inline parser_nodes#AType#n_id (var_ntype) on <var_ntype:AType> */
2094 var3 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_id].val; /* _n_id on <var_ntype:AType> */
2095 if (unlikely(var3 == NULL)) {
2096 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
2097 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1723);
2098 fatal_exit(1);
2099 }
2100 var1 = var3;
2101 RET_LABEL2:(void)0;
2102 }
2103 }
2104 {
2105 var4 = nit__lexer_work___Token___text(var1);
2106 }
2107 var_name = var4;
2108 if (var_mclassdef == NULL) {
2109 var6 = 0; /* is null */
2110 } else {
2111 var6 = 1; /* arg is null and recv is not */
2112 }
2113 if (0) {
2114 { /* Inline kernel#Object#!= (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
2115 var_other = ((val*)NULL);
2116 {
2117 var9 = ((short int(*)(val* self, val* p0))(var_mclassdef->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclassdef, var_other); /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/
2118 }
2119 var10 = !var9;
2120 var7 = var10;
2121 goto RET_LABEL8;
2122 RET_LABEL8:(void)0;
2123 }
2124 var6 = var7;
2125 }
2126 var_ = var6;
2127 if (var6){
2128 var5 = var_with_virtual;
2129 } else {
2130 var5 = var_;
2131 }
2132 if (var5){
2133 {
2134 var11 = nit___nit__ModelBuilder___try_get_mproperty_by_name(self, var_ntype, var_mclassdef, var_name);
2135 }
2136 /* <var11:nullable MProperty> isa nullable MVirtualTypeProp */
2137 cltype = type_nullable__nit__MVirtualTypeProp.color;
2138 idtype = type_nullable__nit__MVirtualTypeProp.id;
2139 if(var11 == NULL) {
2140 var12 = 1;
2141 } else {
2142 if(cltype >= var11->type->table_size) {
2143 var12 = 0;
2144 } else {
2145 var12 = var11->type->type_table[cltype] == idtype;
2146 }
2147 }
2148 if (unlikely(!var12)) {
2149 var_class_name = var11 == NULL ? "null" : var11->type->name;
2150 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MVirtualTypeProp", var_class_name);
2151 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 238);
2152 fatal_exit(1);
2153 }
2154 var_prop = var11;
2155 if (var_prop == NULL) {
2156 var13 = 0; /* is null */
2157 } else {
2158 var13 = 1; /* arg is null and recv is not */
2159 }
2160 if (0) {
2161 { /* Inline kernel#Object#!= (var_prop,((val*)NULL)) on <var_prop:nullable MVirtualTypeProp> */
2162 var_other = ((val*)NULL);
2163 {
2164 var16 = ((short int(*)(val* self, val* p0))(var_prop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_prop, var_other); /* == on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)>*/
2165 }
2166 var17 = !var16;
2167 var14 = var17;
2168 goto RET_LABEL15;
2169 RET_LABEL15:(void)0;
2170 }
2171 var13 = var14;
2172 }
2173 if (var13){
2174 {
2175 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
2176 var20 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
2177 if (unlikely(var20 == NULL)) {
2178 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
2179 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
2180 fatal_exit(1);
2181 }
2182 var18 = var20;
2183 RET_LABEL19:(void)0;
2184 }
2185 }
2186 {
2187 var21 = nit___nit__ANodes___standard__abstract_collection__Collection__is_empty(var18);
2188 }
2189 var22 = !var21;
2190 if (var22){
2191 if (unlikely(varonce==NULL)) {
2192 var23 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2193 if (likely(varonce24!=NULL)) {
2194 var25 = varonce24;
2195 } else {
2196 var26 = "Type Error: formal type `";
2197 var27 = standard___standard__NativeString___to_s_with_length(var26, 25l);
2198 var25 = var27;
2199 varonce24 = var25;
2200 }
2201 ((struct instance_standard__NativeArray*)var23)->values[0]=var25;
2202 if (likely(varonce28!=NULL)) {
2203 var29 = varonce28;
2204 } else {
2205 var30 = "` cannot have formal parameters.";
2206 var31 = standard___standard__NativeString___to_s_with_length(var30, 32l);
2207 var29 = var31;
2208 varonce28 = var29;
2209 }
2210 ((struct instance_standard__NativeArray*)var23)->values[2]=var29;
2211 } else {
2212 var23 = varonce;
2213 varonce = NULL;
2214 }
2215 ((struct instance_standard__NativeArray*)var23)->values[1]=var_name;
2216 {
2217 var32 = ((val*(*)(val* self))(var23->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
2218 }
2219 varonce = var23;
2220 {
2221 nit___nit__ModelBuilder___error(self, var_ntype, var32); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
2222 }
2223 } else {
2224 }
2225 {
2226 { /* Inline model#MVirtualTypeProp#mvirtualtype (var_prop) on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)> */
2227 var35 = var_prop->attrs[COLOR_nit__model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)> */
2228 if (unlikely(var35 == NULL)) {
2229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
2230 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2191);
2231 fatal_exit(1);
2232 }
2233 var33 = var35;
2234 RET_LABEL34:(void)0;
2235 }
2236 }
2237 var_res = var33;
2238 {
2239 { /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
2240 var38 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
2241 var36 = var38;
2242 RET_LABEL37:(void)0;
2243 }
2244 }
2245 if (var36 == NULL) {
2246 var39 = 0; /* is null */
2247 } else {
2248 var39 = 1; /* arg is null and recv is not */
2249 }
2250 if (0) {
2251 { /* Inline kernel#Object#!= (var36,((val*)NULL)) on <var36:nullable TKwnullable> */
2252 var_other = ((val*)NULL);
2253 {
2254 var42 = ((short int(*)(val* self, val* p0))(var36->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var36, var_other); /* == on <var36:nullable TKwnullable(TKwnullable)>*/
2255 }
2256 var43 = !var42;
2257 var40 = var43;
2258 goto RET_LABEL41;
2259 RET_LABEL41:(void)0;
2260 }
2261 var39 = var40;
2262 }
2263 if (var39){
2264 {
2265 var44 = nit___nit__MType___as_nullable(var_res);
2266 }
2267 var_res = var44;
2268 } else {
2269 }
2270 {
2271 { /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
2272 var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
2273 RET_LABEL45:(void)0;
2274 }
2275 }
2276 var = var_res;
2277 goto RET_LABEL;
2278 } else {
2279 }
2280 } else {
2281 }
2282 if (var_mclassdef == NULL) {
2283 var46 = 0; /* is null */
2284 } else {
2285 var46 = 1; /* arg is null and recv is not */
2286 }
2287 if (0) {
2288 { /* Inline kernel#Object#!= (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
2289 var_other = ((val*)NULL);
2290 {
2291 var49 = ((short int(*)(val* self, val* p0))(var_mclassdef->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclassdef, var_other); /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/
2292 }
2293 var50 = !var49;
2294 var47 = var50;
2295 goto RET_LABEL48;
2296 RET_LABEL48:(void)0;
2297 }
2298 var46 = var47;
2299 }
2300 if (var46){
2301 {
2302 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
2303 var53 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:nullable MClassDef(MClassDef)> */
2304 if (unlikely(var53 == NULL)) {
2305 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2306 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
2307 fatal_exit(1);
2308 }
2309 var51 = var53;
2310 RET_LABEL52:(void)0;
2311 }
2312 }
2313 {
2314 { /* Inline model#MClass#mparameters (var51) on <var51:MClass> */
2315 var56 = var51->attrs[COLOR_nit__model__MClass___mparameters].val; /* _mparameters on <var51:MClass> */
2316 if (unlikely(var56 == NULL)) {
2317 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2318 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 382);
2319 fatal_exit(1);
2320 }
2321 var54 = var56;
2322 RET_LABEL55:(void)0;
2323 }
2324 }
2325 var_57 = var54;
2326 {
2327 var58 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_57);
2328 }
2329 var_59 = var58;
2330 for(;;) {
2331 {
2332 var60 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_59);
2333 }
2334 if (var60){
2335 {
2336 var61 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_59);
2337 }
2338 var_p = var61;
2339 {
2340 { /* Inline model#MParameterType#name (var_p) on <var_p:MParameterType> */
2341 var64 = var_p->attrs[COLOR_nit__model__MParameterType___name].val; /* _name on <var_p:MParameterType> */
2342 if (unlikely(var64 == NULL)) {
2343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2344 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1481);
2345 fatal_exit(1);
2346 }
2347 var62 = var64;
2348 RET_LABEL63:(void)0;
2349 }
2350 }
2351 {
2352 { /* Inline kernel#Object#!= (var62,var_name) on <var62:String> */
2353 var_other = var_name;
2354 {
2355 var67 = ((short int(*)(val* self, val* p0))(var62->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var62, var_other); /* == on <var62:String>*/
2356 }
2357 var68 = !var67;
2358 var65 = var68;
2359 goto RET_LABEL66;
2360 RET_LABEL66:(void)0;
2361 }
2362 }
2363 if (var65){
2364 goto BREAK_label;
2365 } else {
2366 }
2367 {
2368 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
2369 var71 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
2370 if (unlikely(var71 == NULL)) {
2371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
2372 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
2373 fatal_exit(1);
2374 }
2375 var69 = var71;
2376 RET_LABEL70:(void)0;
2377 }
2378 }
2379 {
2380 var72 = nit___nit__ANodes___standard__abstract_collection__Collection__is_empty(var69);
2381 }
2382 var73 = !var72;
2383 if (var73){
2384 if (unlikely(varonce74==NULL)) {
2385 var75 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2386 if (likely(varonce76!=NULL)) {
2387 var77 = varonce76;
2388 } else {
2389 var78 = "Type Error: formal type `";
2390 var79 = standard___standard__NativeString___to_s_with_length(var78, 25l);
2391 var77 = var79;
2392 varonce76 = var77;
2393 }
2394 ((struct instance_standard__NativeArray*)var75)->values[0]=var77;
2395 if (likely(varonce80!=NULL)) {
2396 var81 = varonce80;
2397 } else {
2398 var82 = "` cannot have formal parameters.";
2399 var83 = standard___standard__NativeString___to_s_with_length(var82, 32l);
2400 var81 = var83;
2401 varonce80 = var81;
2402 }
2403 ((struct instance_standard__NativeArray*)var75)->values[2]=var81;
2404 } else {
2405 var75 = varonce74;
2406 varonce74 = NULL;
2407 }
2408 ((struct instance_standard__NativeArray*)var75)->values[1]=var_name;
2409 {
2410 var84 = ((val*(*)(val* self))(var75->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var75); /* native_to_s on <var75:NativeArray[String]>*/
2411 }
2412 varonce74 = var75;
2413 {
2414 nit___nit__ModelBuilder___error(self, var_ntype, var84); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
2415 }
2416 } else {
2417 }
2418 var_res = var_p;
2419 {
2420 { /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
2421 var87 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
2422 var85 = var87;
2423 RET_LABEL86:(void)0;
2424 }
2425 }
2426 if (var85 == NULL) {
2427 var88 = 0; /* is null */
2428 } else {
2429 var88 = 1; /* arg is null and recv is not */
2430 }
2431 if (0) {
2432 { /* Inline kernel#Object#!= (var85,((val*)NULL)) on <var85:nullable TKwnullable> */
2433 var_other = ((val*)NULL);
2434 {
2435 var91 = ((short int(*)(val* self, val* p0))(var85->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var85, var_other); /* == on <var85:nullable TKwnullable(TKwnullable)>*/
2436 }
2437 var92 = !var91;
2438 var89 = var92;
2439 goto RET_LABEL90;
2440 RET_LABEL90:(void)0;
2441 }
2442 var88 = var89;
2443 }
2444 if (var88){
2445 {
2446 var93 = nit___nit__MType___as_nullable(var_res);
2447 }
2448 var_res = var93;
2449 } else {
2450 }
2451 {
2452 { /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
2453 var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
2454 RET_LABEL94:(void)0;
2455 }
2456 }
2457 var = var_res;
2458 goto RET_LABEL;
2459 BREAK_label: (void)0;
2460 {
2461 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_59); /* Direct call array#ArrayIterator#next on <var_59:ArrayIterator[MParameterType]>*/
2462 }
2463 } else {
2464 goto BREAK_label95;
2465 }
2466 }
2467 BREAK_label95: (void)0;
2468 {
2469 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_59); /* Direct call array#ArrayIterator#finish on <var_59:ArrayIterator[MParameterType]>*/
2470 }
2471 } else {
2472 }
2473 {
2474 var96 = nit___nit__ModelBuilder___try_get_mclass_by_name(self, var_ntype, var_mmodule, var_name);
2475 }
2476 var_mclass = var96;
2477 if (var_mclass == NULL) {
2478 var97 = 0; /* is null */
2479 } else {
2480 var97 = 1; /* arg is null and recv is not */
2481 }
2482 if (0) {
2483 { /* Inline kernel#Object#!= (var_mclass,((val*)NULL)) on <var_mclass:nullable MClass> */
2484 var_other = ((val*)NULL);
2485 {
2486 var100 = ((short int(*)(val* self, val* p0))(var_mclass->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclass, var_other); /* == on <var_mclass:nullable MClass(MClass)>*/
2487 }
2488 var101 = !var100;
2489 var98 = var101;
2490 goto RET_LABEL99;
2491 RET_LABEL99:(void)0;
2492 }
2493 var97 = var98;
2494 }
2495 if (var97){
2496 {
2497 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
2498 var104 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
2499 if (unlikely(var104 == NULL)) {
2500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
2501 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
2502 fatal_exit(1);
2503 }
2504 var102 = var104;
2505 RET_LABEL103:(void)0;
2506 }
2507 }
2508 {
2509 var105 = nit___nit__ANodes___standard__abstract_collection__Collection__length(var102);
2510 }
2511 var_arity = var105;
2512 {
2513 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2514 var108 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
2515 var106 = var108;
2516 RET_LABEL107:(void)0;
2517 }
2518 }
2519 {
2520 { /* Inline kernel#Int#!= (var_arity,var106) on <var_arity:Int> */
2521 var111 = var_arity == var106;
2522 var112 = !var111;
2523 var109 = var112;
2524 goto RET_LABEL110;
2525 RET_LABEL110:(void)0;
2526 }
2527 }
2528 if (var109){
2529 {
2530 { /* Inline kernel#Int#== (var_arity,0l) on <var_arity:Int> */
2531 var115 = var_arity == 0l;
2532 var113 = var115;
2533 goto RET_LABEL114;
2534 RET_LABEL114:(void)0;
2535 }
2536 }
2537 if (var113){
2538 if (unlikely(varonce116==NULL)) {
2539 var117 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2540 if (likely(varonce118!=NULL)) {
2541 var119 = varonce118;
2542 } else {
2543 var120 = "Type Error: `";
2544 var121 = standard___standard__NativeString___to_s_with_length(var120, 13l);
2545 var119 = var121;
2546 varonce118 = var119;
2547 }
2548 ((struct instance_standard__NativeArray*)var117)->values[0]=var119;
2549 if (likely(varonce122!=NULL)) {
2550 var123 = varonce122;
2551 } else {
2552 var124 = "` is a generic class.";
2553 var125 = standard___standard__NativeString___to_s_with_length(var124, 21l);
2554 var123 = var125;
2555 varonce122 = var123;
2556 }
2557 ((struct instance_standard__NativeArray*)var117)->values[2]=var123;
2558 } else {
2559 var117 = varonce116;
2560 varonce116 = NULL;
2561 }
2562 {
2563 var126 = nit___nit__MClass___signature_to_s(var_mclass);
2564 }
2565 ((struct instance_standard__NativeArray*)var117)->values[1]=var126;
2566 {
2567 var127 = ((val*(*)(val* self))(var117->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var117); /* native_to_s on <var117:NativeArray[String]>*/
2568 }
2569 varonce116 = var117;
2570 {
2571 nit___nit__ModelBuilder___error(self, var_ntype, var127); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
2572 }
2573 } else {
2574 {
2575 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2576 var130 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
2577 var128 = var130;
2578 RET_LABEL129:(void)0;
2579 }
2580 }
2581 {
2582 { /* Inline kernel#Int#== (var128,0l) on <var128:Int> */
2583 var133 = var128 == 0l;
2584 var131 = var133;
2585 goto RET_LABEL132;
2586 RET_LABEL132:(void)0;
2587 }
2588 }
2589 if (var131){
2590 if (unlikely(varonce134==NULL)) {
2591 var135 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2592 if (likely(varonce136!=NULL)) {
2593 var137 = varonce136;
2594 } else {
2595 var138 = "Type Error: `";
2596 var139 = standard___standard__NativeString___to_s_with_length(var138, 13l);
2597 var137 = var139;
2598 varonce136 = var137;
2599 }
2600 ((struct instance_standard__NativeArray*)var135)->values[0]=var137;
2601 if (likely(varonce140!=NULL)) {
2602 var141 = varonce140;
2603 } else {
2604 var142 = "` is not a generic class.";
2605 var143 = standard___standard__NativeString___to_s_with_length(var142, 25l);
2606 var141 = var143;
2607 varonce140 = var141;
2608 }
2609 ((struct instance_standard__NativeArray*)var135)->values[2]=var141;
2610 } else {
2611 var135 = varonce134;
2612 varonce134 = NULL;
2613 }
2614 ((struct instance_standard__NativeArray*)var135)->values[1]=var_name;
2615 {
2616 var144 = ((val*(*)(val* self))(var135->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var135); /* native_to_s on <var135:NativeArray[String]>*/
2617 }
2618 varonce134 = var135;
2619 {
2620 nit___nit__ModelBuilder___error(self, var_ntype, var144); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
2621 }
2622 } else {
2623 if (unlikely(varonce145==NULL)) {
2624 var146 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
2625 if (likely(varonce147!=NULL)) {
2626 var148 = varonce147;
2627 } else {
2628 var149 = "Type Error: expected ";
2629 var150 = standard___standard__NativeString___to_s_with_length(var149, 21l);
2630 var148 = var150;
2631 varonce147 = var148;
2632 }
2633 ((struct instance_standard__NativeArray*)var146)->values[0]=var148;
2634 if (likely(varonce151!=NULL)) {
2635 var152 = varonce151;
2636 } else {
2637 var153 = " formal argument(s) for `";
2638 var154 = standard___standard__NativeString___to_s_with_length(var153, 25l);
2639 var152 = var154;
2640 varonce151 = var152;
2641 }
2642 ((struct instance_standard__NativeArray*)var146)->values[2]=var152;
2643 if (likely(varonce155!=NULL)) {
2644 var156 = varonce155;
2645 } else {
2646 var157 = "`; got ";
2647 var158 = standard___standard__NativeString___to_s_with_length(var157, 7l);
2648 var156 = var158;
2649 varonce155 = var156;
2650 }
2651 ((struct instance_standard__NativeArray*)var146)->values[4]=var156;
2652 if (likely(varonce159!=NULL)) {
2653 var160 = varonce159;
2654 } else {
2655 var161 = ".";
2656 var162 = standard___standard__NativeString___to_s_with_length(var161, 1l);
2657 var160 = var162;
2658 varonce159 = var160;
2659 }
2660 ((struct instance_standard__NativeArray*)var146)->values[6]=var160;
2661 } else {
2662 var146 = varonce145;
2663 varonce145 = NULL;
2664 }
2665 {
2666 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2667 var165 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
2668 var163 = var165;
2669 RET_LABEL164:(void)0;
2670 }
2671 }
2672 var166 = standard__string___Int___Object__to_s(var163);
2673 ((struct instance_standard__NativeArray*)var146)->values[1]=var166;
2674 {
2675 var167 = nit___nit__MClass___signature_to_s(var_mclass);
2676 }
2677 ((struct instance_standard__NativeArray*)var146)->values[3]=var167;
2678 var168 = standard__string___Int___Object__to_s(var_arity);
2679 ((struct instance_standard__NativeArray*)var146)->values[5]=var168;
2680 {
2681 var169 = ((val*(*)(val* self))(var146->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var146); /* native_to_s on <var146:NativeArray[String]>*/
2682 }
2683 varonce145 = var146;
2684 {
2685 nit___nit__ModelBuilder___error(self, var_ntype, var169); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
2686 }
2687 }
2688 }
2689 var = ((val*)NULL);
2690 goto RET_LABEL;
2691 } else {
2692 }
2693 {
2694 { /* Inline kernel#Int#== (var_arity,0l) on <var_arity:Int> */
2695 var172 = var_arity == 0l;
2696 var170 = var172;
2697 goto RET_LABEL171;
2698 RET_LABEL171:(void)0;
2699 }
2700 }
2701 if (var170){
2702 {
2703 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2704 var175 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2705 if (unlikely(var175 == NULL)) {
2706 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2707 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
2708 fatal_exit(1);
2709 }
2710 var173 = var175;
2711 RET_LABEL174:(void)0;
2712 }
2713 }
2714 var_res = var173;
2715 {
2716 { /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
2717 var178 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
2718 var176 = var178;
2719 RET_LABEL177:(void)0;
2720 }
2721 }
2722 if (var176 == NULL) {
2723 var179 = 0; /* is null */
2724 } else {
2725 var179 = 1; /* arg is null and recv is not */
2726 }
2727 if (0) {
2728 { /* Inline kernel#Object#!= (var176,((val*)NULL)) on <var176:nullable TKwnullable> */
2729 var_other = ((val*)NULL);
2730 {
2731 var182 = ((short int(*)(val* self, val* p0))(var176->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var176, var_other); /* == on <var176:nullable TKwnullable(TKwnullable)>*/
2732 }
2733 var183 = !var182;
2734 var180 = var183;
2735 goto RET_LABEL181;
2736 RET_LABEL181:(void)0;
2737 }
2738 var179 = var180;
2739 }
2740 if (var179){
2741 {
2742 var184 = nit___nit__MType___as_nullable(var_res);
2743 }
2744 var_res = var184;
2745 } else {
2746 }
2747 {
2748 { /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
2749 var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
2750 RET_LABEL185:(void)0;
2751 }
2752 }
2753 var = var_res;
2754 goto RET_LABEL;
2755 } else {
2756 var186 = NEW_standard__Array(&type_standard__Array__nit__MType);
2757 {
2758 standard___standard__Array___standard__kernel__Object__init(var186); /* Direct call array#Array#init on <var186:Array[MType]>*/
2759 }
2760 var_mtypes = var186;
2761 {
2762 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
2763 var189 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
2764 if (unlikely(var189 == NULL)) {
2765 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
2766 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
2767 fatal_exit(1);
2768 }
2769 var187 = var189;
2770 RET_LABEL188:(void)0;
2771 }
2772 }
2773 var_190 = var187;
2774 {
2775 var191 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_190);
2776 }
2777 var_192 = var191;
2778 for(;;) {
2779 {
2780 var193 = ((short int(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_192); /* is_ok on <var_192:Iterator[AType]>*/
2781 }
2782 if (var193){
2783 {
2784 var194 = ((val*(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_192); /* item on <var_192:Iterator[AType]>*/
2785 }
2786 var_nt = var194;
2787 {
2788 var195 = nit___nit__ModelBuilder___resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_nt, var_with_virtual);
2789 }
2790 var_mt = var195;
2791 if (var_mt == NULL) {
2792 var196 = 1; /* is null */
2793 } else {
2794 var196 = 0; /* arg is null but recv is not */
2795 }
2796 if (0) {
2797 { /* Inline kernel#Object#== (var_mt,((val*)NULL)) on <var_mt:nullable MType> */
2798 var_other199 = ((val*)NULL);
2799 {
2800 { /* Inline kernel#Object#is_same_instance (var_mt,var_other199) on <var_mt:nullable MType(MType)> */
2801 var202 = var_mt == var_other199;
2802 var200 = var202;
2803 goto RET_LABEL201;
2804 RET_LABEL201:(void)0;
2805 }
2806 }
2807 var197 = var200;
2808 goto RET_LABEL198;
2809 RET_LABEL198:(void)0;
2810 }
2811 var196 = var197;
2812 }
2813 if (var196){
2814 var = ((val*)NULL);
2815 goto RET_LABEL;
2816 } else {
2817 }
2818 {
2819 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mtypes, var_mt); /* Direct call array#Array#add on <var_mtypes:Array[MType]>*/
2820 }
2821 {
2822 ((void(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_192); /* next on <var_192:Iterator[AType]>*/
2823 }
2824 } else {
2825 goto BREAK_label203;
2826 }
2827 }
2828 BREAK_label203: (void)0;
2829 {
2830 ((void(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_192); /* finish on <var_192:Iterator[AType]>*/
2831 }
2832 {
2833 var204 = nit___nit__MClass___get_mtype(var_mclass, var_mtypes);
2834 }
2835 var_res = var204;
2836 {
2837 { /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
2838 var207 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
2839 var205 = var207;
2840 RET_LABEL206:(void)0;
2841 }
2842 }
2843 if (var205 == NULL) {
2844 var208 = 0; /* is null */
2845 } else {
2846 var208 = 1; /* arg is null and recv is not */
2847 }
2848 if (0) {
2849 { /* Inline kernel#Object#!= (var205,((val*)NULL)) on <var205:nullable TKwnullable> */
2850 var_other = ((val*)NULL);
2851 {
2852 var211 = ((short int(*)(val* self, val* p0))(var205->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var205, var_other); /* == on <var205:nullable TKwnullable(TKwnullable)>*/
2853 }
2854 var212 = !var211;
2855 var209 = var212;
2856 goto RET_LABEL210;
2857 RET_LABEL210:(void)0;
2858 }
2859 var208 = var209;
2860 }
2861 if (var208){
2862 {
2863 var213 = nit___nit__MType___as_nullable(var_res);
2864 }
2865 var_res = var213;
2866 } else {
2867 }
2868 {
2869 { /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
2870 var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
2871 RET_LABEL214:(void)0;
2872 }
2873 }
2874 var = var_res;
2875 goto RET_LABEL;
2876 }
2877 } else {
2878 }
2879 if (unlikely(varonce215==NULL)) {
2880 var216 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2881 if (likely(varonce217!=NULL)) {
2882 var218 = varonce217;
2883 } else {
2884 var219 = "Error: class `";
2885 var220 = standard___standard__NativeString___to_s_with_length(var219, 14l);
2886 var218 = var220;
2887 varonce217 = var218;
2888 }
2889 ((struct instance_standard__NativeArray*)var216)->values[0]=var218;
2890 if (likely(varonce221!=NULL)) {
2891 var222 = varonce221;
2892 } else {
2893 var223 = "` not found in module `";
2894 var224 = standard___standard__NativeString___to_s_with_length(var223, 23l);
2895 var222 = var224;
2896 varonce221 = var222;
2897 }
2898 ((struct instance_standard__NativeArray*)var216)->values[2]=var222;
2899 if (likely(varonce225!=NULL)) {
2900 var226 = varonce225;
2901 } else {
2902 var227 = "`.";
2903 var228 = standard___standard__NativeString___to_s_with_length(var227, 2l);
2904 var226 = var228;
2905 varonce225 = var226;
2906 }
2907 ((struct instance_standard__NativeArray*)var216)->values[4]=var226;
2908 } else {
2909 var216 = varonce215;
2910 varonce215 = NULL;
2911 }
2912 ((struct instance_standard__NativeArray*)var216)->values[1]=var_name;
2913 {
2914 var229 = ((val*(*)(val* self))(var_mmodule->class->vft[COLOR_standard__string__Object__to_s]))(var_mmodule); /* to_s on <var_mmodule:MModule>*/
2915 }
2916 ((struct instance_standard__NativeArray*)var216)->values[3]=var229;
2917 {
2918 var230 = ((val*(*)(val* self))(var216->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var216); /* native_to_s on <var216:NativeArray[String]>*/
2919 }
2920 varonce215 = var216;
2921 {
2922 nit___nit__ModelBuilder___error(self, var_ntype, var230); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
2923 }
2924 var = ((val*)NULL);
2925 goto RET_LABEL;
2926 RET_LABEL:;
2927 return var;
2928 }
2929 /* method modelbuilder_base#ModelBuilder#resolve_mtype for (self: ModelBuilder, MModule, nullable MClassDef, AType): nullable MType */
2930 val* nit___nit__ModelBuilder___resolve_mtype(val* self, val* p0, val* p1, val* p2) {
2931 val* var /* : nullable MType */;
2932 val* var_mmodule /* var mmodule: MModule */;
2933 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
2934 val* var_ntype /* var ntype: AType */;
2935 val* var1 /* : nullable MType */;
2936 val* var3 /* : nullable MType */;
2937 val* var_mtype /* var mtype: nullable MType */;
2938 short int var4 /* : Bool */;
2939 short int var5 /* : Bool */;
2940 val* var_other /* var other: nullable Object */;
2941 short int var7 /* : Bool */;
2942 short int var9 /* : Bool */;
2943 val* var10 /* : nullable MType */;
2944 short int var11 /* : Bool */;
2945 short int var12 /* : Bool */;
2946 short int var14 /* : Bool */;
2947 short int var16 /* : Bool */;
2948 short int var17 /* : Bool */;
2949 short int var19 /* : Bool */;
2950 short int var20 /* : Bool */;
2951 int cltype;
2952 int idtype;
2953 val* var21 /* : MClass */;
2954 val* var23 /* : MClass */;
2955 val* var_mclass /* var mclass: MClass */;
2956 long var_i /* var i: Int */;
2957 long var24 /* : Int */;
2958 long var26 /* : Int */;
2959 long var_ /* var : Int */;
2960 short int var27 /* : Bool */;
2961 short int var29 /* : Bool */;
2962 int cltype30;
2963 int idtype31;
2964 const char* var_class_name;
2965 short int var32 /* : Bool */;
2966 val* var33 /* : nullable MClassDef */;
2967 val* var_intro /* var intro: nullable MClassDef */;
2968 short int var34 /* : Bool */;
2969 short int var35 /* : Bool */;
2970 short int var37 /* : Bool */;
2971 short int var39 /* : Bool */;
2972 val* var40 /* : MClassType */;
2973 val* var42 /* : MClassType */;
2974 val* var43 /* : Array[MType] */;
2975 val* var44 /* : nullable Object */;
2976 val* var_bound /* var bound: MType */;
2977 val* var45 /* : ANodes[AType] */;
2978 val* var47 /* : ANodes[AType] */;
2979 val* var48 /* : ANode */;
2980 val* var_nt /* var nt: AType */;
2981 val* var49 /* : nullable MType */;
2982 val* var_mt /* var mt: nullable MType */;
2983 short int var50 /* : Bool */;
2984 short int var51 /* : Bool */;
2985 short int var53 /* : Bool */;
2986 short int var55 /* : Bool */;
2987 short int var56 /* : Bool */;
2988 short int var57 /* : Bool */;
2989 val* var_other59 /* var other: nullable Object */;
2990 short int var60 /* : Bool */;
2991 short int var61 /* : Bool */;
2992 val* var62 /* : MClassType */;
2993 val* var64 /* : MClassType */;
2994 val* var_anchor /* var anchor: nullable Object */;
2995 short int var65 /* : Bool */;
2996 short int var66 /* : Bool */;
2997 val* var67 /* : NativeArray[String] */;
2998 static val* varonce;
2999 static val* varonce68;
3000 val* var69 /* : String */;
3001 char* var70 /* : NativeString */;
3002 val* var71 /* : FlatString */;
3003 static val* varonce72;
3004 val* var73 /* : String */;
3005 char* var74 /* : NativeString */;
3006 val* var75 /* : FlatString */;
3007 static val* varonce76;
3008 val* var77 /* : String */;
3009 char* var78 /* : NativeString */;
3010 val* var79 /* : FlatString */;
3011 val* var80 /* : String */;
3012 val* var81 /* : String */;
3013 val* var82 /* : String */;
3014 long var83 /* : Int */;
3015 var_mmodule = p0;
3016 var_mclassdef = p1;
3017 var_ntype = p2;
3018 {
3019 { /* Inline modelbuilder_base#AType#mtype (var_ntype) on <var_ntype:AType> */
3020 var3 = var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val; /* _mtype on <var_ntype:AType> */
3021 var1 = var3;
3022 RET_LABEL2:(void)0;
3023 }
3024 }
3025 var_mtype = var1;
3026 if (var_mtype == NULL) {
3027 var4 = 1; /* is null */
3028 } else {
3029 var4 = 0; /* arg is null but recv is not */
3030 }
3031 if (0) {
3032 { /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
3033 var_other = ((val*)NULL);
3034 {
3035 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
3036 var9 = var_mtype == var_other;
3037 var7 = var9;
3038 goto RET_LABEL8;
3039 RET_LABEL8:(void)0;
3040 }
3041 }
3042 var5 = var7;
3043 goto RET_LABEL6;
3044 RET_LABEL6:(void)0;
3045 }
3046 var4 = var5;
3047 }
3048 if (var4){
3049 {
3050 var10 = nit___nit__ModelBuilder___resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_ntype, 1);
3051 }
3052 var_mtype = var10;
3053 } else {
3054 }
3055 if (var_mtype == NULL) {
3056 var11 = 1; /* is null */
3057 } else {
3058 var11 = 0; /* arg is null but recv is not */
3059 }
3060 if (0) {
3061 { /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
3062 var_other = ((val*)NULL);
3063 {
3064 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
3065 var16 = var_mtype == var_other;
3066 var14 = var16;
3067 goto RET_LABEL15;
3068 RET_LABEL15:(void)0;
3069 }
3070 }
3071 var12 = var14;
3072 goto RET_LABEL13;
3073 RET_LABEL13:(void)0;
3074 }
3075 var11 = var12;
3076 }
3077 if (var11){
3078 var = ((val*)NULL);
3079 goto RET_LABEL;
3080 } else {
3081 }
3082 {
3083 { /* Inline modelbuilder_base#AType#checked_mtype (var_ntype) on <var_ntype:AType> */
3084 var19 = var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___checked_mtype].s; /* _checked_mtype on <var_ntype:AType> */
3085 var17 = var19;
3086 RET_LABEL18:(void)0;
3087 }
3088 }
3089 if (var17){
3090 var = var_mtype;
3091 goto RET_LABEL;
3092 } else {
3093 }
3094 /* <var_mtype:nullable MType(MType)> isa MGenericType */
3095 cltype = type_nit__MGenericType.color;
3096 idtype = type_nit__MGenericType.id;
3097 if(cltype >= var_mtype->type->table_size) {
3098 var20 = 0;
3099 } else {
3100 var20 = var_mtype->type->type_table[cltype] == idtype;
3101 }
3102 if (var20){
3103 {
3104 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MType(MGenericType)> */
3105 var23 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MGenericType)> */
3106 if (unlikely(var23 == NULL)) {
3107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3108 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
3109 fatal_exit(1);
3110 }
3111 var21 = var23;
3112 RET_LABEL22:(void)0;
3113 }
3114 }
3115 var_mclass = var21;
3116 var_i = 0l;
3117 {
3118 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:MClass> */
3119 var26 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:MClass> */
3120 var24 = var26;
3121 RET_LABEL25:(void)0;
3122 }
3123 }
3124 var_ = var24;
3125 for(;;) {
3126 {
3127 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
3128 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
3129 /* <var_:Int> isa OTHER */
3130 var29 = 1; /* easy <var_:Int> isa OTHER*/
3131 if (unlikely(!var29)) {
3132 var_class_name = type_standard__Int.name;
3133 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3134 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
3135 fatal_exit(1);
3136 }
3137 var32 = var_i < var_;
3138 var27 = var32;
3139 goto RET_LABEL28;
3140 RET_LABEL28:(void)0;
3141 }
3142 }
3143 if (var27){
3144 {
3145 var33 = nit___nit__MClass___try_intro(var_mclass);
3146 }
3147 var_intro = var33;
3148 if (var_intro == NULL) {
3149 var34 = 1; /* is null */
3150 } else {
3151 var34 = 0; /* arg is null but recv is not */
3152 }
3153 if (0) {
3154 { /* Inline kernel#Object#== (var_intro,((val*)NULL)) on <var_intro:nullable MClassDef> */
3155 var_other = ((val*)NULL);
3156 {
3157 { /* Inline kernel#Object#is_same_instance (var_intro,var_other) on <var_intro:nullable MClassDef(MClassDef)> */
3158 var39 = var_intro == var_other;
3159 var37 = var39;
3160 goto RET_LABEL38;
3161 RET_LABEL38:(void)0;
3162 }
3163 }
3164 var35 = var37;
3165 goto RET_LABEL36;
3166 RET_LABEL36:(void)0;
3167 }
3168 var34 = var35;
3169 }
3170 if (var34){
3171 var = ((val*)NULL);
3172 goto RET_LABEL;
3173 } else {
3174 }
3175 {
3176 { /* Inline model#MClassDef#bound_mtype (var_intro) on <var_intro:nullable MClassDef(MClassDef)> */
3177 var42 = var_intro->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intro:nullable MClassDef(MClassDef)> */
3178 if (unlikely(var42 == NULL)) {
3179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3180 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
3181 fatal_exit(1);
3182 }
3183 var40 = var42;
3184 RET_LABEL41:(void)0;
3185 }
3186 }
3187 {
3188 var43 = ((val*(*)(val* self))(var40->class->vft[COLOR_nit__model__MClassType__arguments]))(var40); /* arguments on <var40:MClassType>*/
3189 }
3190 {
3191 var44 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var43, var_i);
3192 }
3193 var_bound = var44;
3194 {
3195 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
3196 var47 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
3197 if (unlikely(var47 == NULL)) {
3198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
3199 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
3200 fatal_exit(1);
3201 }
3202 var45 = var47;
3203 RET_LABEL46:(void)0;
3204 }
3205 }
3206 {
3207 var48 = nit___nit__ANodes___standard__abstract_collection__SequenceRead___91d_93d(var45, var_i);
3208 }
3209 var_nt = var48;
3210 {
3211 var49 = nit___nit__ModelBuilder___resolve_mtype(self, var_mmodule, var_mclassdef, var_nt);
3212 }
3213 var_mt = var49;
3214 if (var_mt == NULL) {
3215 var50 = 1; /* is null */
3216 } else {
3217 var50 = 0; /* arg is null but recv is not */
3218 }
3219 if (0) {
3220 { /* Inline kernel#Object#== (var_mt,((val*)NULL)) on <var_mt:nullable MType> */
3221 var_other = ((val*)NULL);
3222 {
3223 { /* Inline kernel#Object#is_same_instance (var_mt,var_other) on <var_mt:nullable MType(MType)> */
3224 var55 = var_mt == var_other;
3225 var53 = var55;
3226 goto RET_LABEL54;
3227 RET_LABEL54:(void)0;
3228 }
3229 }
3230 var51 = var53;
3231 goto RET_LABEL52;
3232 RET_LABEL52:(void)0;
3233 }
3234 var50 = var51;
3235 }
3236 if (var50){
3237 var = ((val*)NULL);
3238 goto RET_LABEL;
3239 } else {
3240 }
3241 if (var_mclassdef == NULL) {
3242 var56 = 0; /* is null */
3243 } else {
3244 var56 = 1; /* arg is null and recv is not */
3245 }
3246 if (0) {
3247 { /* Inline kernel#Object#!= (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
3248 var_other59 = ((val*)NULL);
3249 {
3250 var60 = ((short int(*)(val* self, val* p0))(var_mclassdef->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclassdef, var_other59); /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/
3251 }
3252 var61 = !var60;
3253 var57 = var61;
3254 goto RET_LABEL58;
3255 RET_LABEL58:(void)0;
3256 }
3257 var56 = var57;
3258 }
3259 if (var56){
3260 {
3261 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
3262 var64 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:nullable MClassDef(MClassDef)> */
3263 if (unlikely(var64 == NULL)) {
3264 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3265 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
3266 fatal_exit(1);
3267 }
3268 var62 = var64;
3269 RET_LABEL63:(void)0;
3270 }
3271 }
3272 var_anchor = var62;
3273 } else {
3274 var_anchor = ((val*)NULL);
3275 }
3276 {
3277 var65 = nit___nit__ModelBuilder___check_subtype(self, var_nt, var_mmodule, var_anchor, var_mt, var_bound);
3278 }
3279 var66 = !var65;
3280 if (var66){
3281 if (unlikely(varonce==NULL)) {
3282 var67 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
3283 if (likely(varonce68!=NULL)) {
3284 var69 = varonce68;
3285 } else {
3286 var70 = "Type Error: expected `";
3287 var71 = standard___standard__NativeString___to_s_with_length(var70, 22l);
3288 var69 = var71;
3289 varonce68 = var69;
3290 }
3291 ((struct instance_standard__NativeArray*)var67)->values[0]=var69;
3292 if (likely(varonce72!=NULL)) {
3293 var73 = varonce72;
3294 } else {
3295 var74 = "`, got `";
3296 var75 = standard___standard__NativeString___to_s_with_length(var74, 8l);
3297 var73 = var75;
3298 varonce72 = var73;
3299 }
3300 ((struct instance_standard__NativeArray*)var67)->values[2]=var73;
3301 if (likely(varonce76!=NULL)) {
3302 var77 = varonce76;
3303 } else {
3304 var78 = "`.";
3305 var79 = standard___standard__NativeString___to_s_with_length(var78, 2l);
3306 var77 = var79;
3307 varonce76 = var77;
3308 }
3309 ((struct instance_standard__NativeArray*)var67)->values[4]=var77;
3310 } else {
3311 var67 = varonce;
3312 varonce = NULL;
3313 }
3314 {
3315 var80 = ((val*(*)(val* self))(var_bound->class->vft[COLOR_standard__string__Object__to_s]))(var_bound); /* to_s on <var_bound:MType>*/
3316 }
3317 ((struct instance_standard__NativeArray*)var67)->values[1]=var80;
3318 {
3319 var81 = ((val*(*)(val* self))(var_mt->class->vft[COLOR_standard__string__Object__to_s]))(var_mt); /* to_s on <var_mt:nullable MType(MType)>*/
3320 }
3321 ((struct instance_standard__NativeArray*)var67)->values[3]=var81;
3322 {
3323 var82 = ((val*(*)(val* self))(var67->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var67); /* native_to_s on <var67:NativeArray[String]>*/
3324 }
3325 varonce = var67;
3326 {
3327 nit___nit__ModelBuilder___error(self, var_nt, var82); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
3328 }
3329 var = ((val*)NULL);
3330 goto RET_LABEL;
3331 } else {
3332 }
3333 {
3334 var83 = standard___standard__Int___Discrete__successor(var_i, 1l);
3335 }
3336 var_i = var83;
3337 } else {
3338 goto BREAK_label;
3339 }
3340 }
3341 BREAK_label: (void)0;
3342 } else {
3343 }
3344 {
3345 { /* Inline modelbuilder_base#AType#checked_mtype= (var_ntype,1) on <var_ntype:AType> */
3346 var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___checked_mtype].s = 1; /* _checked_mtype on <var_ntype:AType> */
3347 RET_LABEL84:(void)0;
3348 }
3349 }
3350 var = var_mtype;
3351 goto RET_LABEL;
3352 RET_LABEL:;
3353 return var;
3354 }
3355 /* method modelbuilder_base#ModelBuilder#check_subtype for (self: ModelBuilder, ANode, MModule, nullable MClassType, MType, MType): Bool */
3356 short int nit___nit__ModelBuilder___check_subtype(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
3357 short int var /* : Bool */;
3358 val* var_node /* var node: ANode */;
3359 val* var_mmodule /* var mmodule: MModule */;
3360 val* var_anchor /* var anchor: nullable MClassType */;
3361 val* var_sub /* var sub: MType */;
3362 val* var_sup /* var sup: MType */;
3363 short int var1 /* : Bool */;
3364 var_node = p0;
3365 var_mmodule = p1;
3366 var_anchor = p2;
3367 var_sub = p3;
3368 var_sup = p4;
3369 {
3370 var1 = nit___nit__MType___is_subtype(var_sub, var_mmodule, var_anchor, var_sup);
3371 }
3372 var = var1;
3373 goto RET_LABEL;
3374 RET_LABEL:;
3375 return var;
3376 }
3377 /* method modelbuilder_base#ModelBuilder#check_sametype for (self: ModelBuilder, ANode, MModule, nullable MClassType, MType, MType): Bool */
3378 short int nit___nit__ModelBuilder___check_sametype(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
3379 short int var /* : Bool */;
3380 val* var_node /* var node: ANode */;
3381 val* var_mmodule /* var mmodule: MModule */;
3382 val* var_anchor /* var anchor: nullable MClassType */;
3383 val* var_sub /* var sub: MType */;
3384 val* var_sup /* var sup: MType */;
3385 short int var1 /* : Bool */;
3386 short int var2 /* : Bool */;
3387 short int var_ /* var : Bool */;
3388 short int var3 /* : Bool */;
3389 var_node = p0;
3390 var_mmodule = p1;
3391 var_anchor = p2;
3392 var_sub = p3;
3393 var_sup = p4;
3394 {
3395 var2 = nit___nit__MType___is_subtype(var_sub, var_mmodule, var_anchor, var_sup);
3396 }
3397 var_ = var2;
3398 if (var2){
3399 {
3400 var3 = nit___nit__MType___is_subtype(var_sup, var_mmodule, var_anchor, var_sub);
3401 }
3402 var1 = var3;
3403 } else {
3404 var1 = var_;
3405 }
3406 var = var1;
3407 goto RET_LABEL;
3408 RET_LABEL:;
3409 return var;
3410 }
3411 /* method modelbuilder_base#AType#mtype for (self: AType): nullable MType */
3412 val* nit__modelbuilder_base___AType___mtype(val* self) {
3413 val* var /* : nullable MType */;
3414 val* var1 /* : nullable MType */;
3415 var1 = self->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val; /* _mtype on <self:AType> */
3416 var = var1;
3417 RET_LABEL:;
3418 return var;
3419 }
3420 /* method modelbuilder_base#AType#mtype= for (self: AType, nullable MType) */
3421 void nit__modelbuilder_base___AType___mtype_61d(val* self, val* p0) {
3422 self->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = p0; /* _mtype on <self:AType> */
3423 RET_LABEL:;
3424 }
3425 /* method modelbuilder_base#AType#checked_mtype for (self: AType): Bool */
3426 short int nit__modelbuilder_base___AType___checked_mtype(val* self) {
3427 short int var /* : Bool */;
3428 short int var1 /* : Bool */;
3429 var1 = self->attrs[COLOR_nit__modelbuilder_base__AType___checked_mtype].s; /* _checked_mtype on <self:AType> */
3430 var = var1;
3431 RET_LABEL:;
3432 return var;
3433 }
3434 /* method modelbuilder_base#AType#checked_mtype= for (self: AType, Bool) */
3435 void nit__modelbuilder_base___AType___checked_mtype_61d(val* self, short int p0) {
3436 self->attrs[COLOR_nit__modelbuilder_base__AType___checked_mtype].s = p0; /* _checked_mtype on <self:AType> */
3437 RET_LABEL:;
3438 }
3439 /* method modelbuilder_base#AIntrudeVisibility#mvisibility for (self: AIntrudeVisibility): MVisibility */
3440 val* nit__modelbuilder_base___AIntrudeVisibility___AVisibility__mvisibility(val* self) {
3441 val* var /* : MVisibility */;
3442 val* var1 /* : Sys */;
3443 val* var2 /* : MVisibility */;
3444 var1 = glob_sys;
3445 {
3446 var2 = nit__model_base___standard__Sys___intrude_visibility(var1);
3447 }
3448 var = var2;
3449 goto RET_LABEL;
3450 RET_LABEL:;
3451 return var;
3452 }
3453 /* method modelbuilder_base#APublicVisibility#mvisibility for (self: APublicVisibility): MVisibility */
3454 val* nit__modelbuilder_base___APublicVisibility___AVisibility__mvisibility(val* self) {
3455 val* var /* : MVisibility */;
3456 val* var1 /* : Sys */;
3457 val* var2 /* : MVisibility */;
3458 var1 = glob_sys;
3459 {
3460 var2 = nit__model_base___standard__Sys___public_visibility(var1);
3461 }
3462 var = var2;
3463 goto RET_LABEL;
3464 RET_LABEL:;
3465 return var;
3466 }
3467 /* method modelbuilder_base#AProtectedVisibility#mvisibility for (self: AProtectedVisibility): MVisibility */
3468 val* nit__modelbuilder_base___AProtectedVisibility___AVisibility__mvisibility(val* self) {
3469 val* var /* : MVisibility */;
3470 val* var1 /* : Sys */;
3471 val* var2 /* : MVisibility */;
3472 var1 = glob_sys;
3473 {
3474 var2 = nit__model_base___standard__Sys___protected_visibility(var1);
3475 }
3476 var = var2;
3477 goto RET_LABEL;
3478 RET_LABEL:;
3479 return var;
3480 }
3481 /* method modelbuilder_base#APrivateVisibility#mvisibility for (self: APrivateVisibility): MVisibility */
3482 val* nit__modelbuilder_base___APrivateVisibility___AVisibility__mvisibility(val* self) {
3483 val* var /* : MVisibility */;
3484 val* var1 /* : Sys */;
3485 val* var2 /* : MVisibility */;
3486 var1 = glob_sys;
3487 {
3488 var2 = nit__model_base___standard__Sys___private_visibility(var1);
3489 }
3490 var = var2;
3491 goto RET_LABEL;
3492 RET_LABEL:;
3493 return var;
3494 }
3495 /* method modelbuilder_base#ADoc#mdoc_cache for (self: ADoc): nullable MDoc */
3496 val* nit__modelbuilder_base___ADoc___mdoc_cache(val* self) {
3497 val* var /* : nullable MDoc */;
3498 val* var1 /* : nullable MDoc */;
3499 var1 = self->attrs[COLOR_nit__modelbuilder_base__ADoc___mdoc_cache].val; /* _mdoc_cache on <self:ADoc> */
3500 var = var1;
3501 RET_LABEL:;
3502 return var;
3503 }
3504 /* method modelbuilder_base#ADoc#mdoc_cache= for (self: ADoc, nullable MDoc) */
3505 void nit__modelbuilder_base___ADoc___mdoc_cache_61d(val* self, val* p0) {
3506 self->attrs[COLOR_nit__modelbuilder_base__ADoc___mdoc_cache].val = p0; /* _mdoc_cache on <self:ADoc> */
3507 RET_LABEL:;
3508 }
3509 /* method modelbuilder_base#ADoc#to_mdoc for (self: ADoc): MDoc */
3510 val* nit__modelbuilder_base___ADoc___to_mdoc(val* self) {
3511 val* var /* : MDoc */;
3512 val* var1 /* : nullable MDoc */;
3513 val* var3 /* : nullable MDoc */;
3514 val* var_res /* var res: nullable MDoc */;
3515 short int var4 /* : Bool */;
3516 short int var5 /* : Bool */;
3517 val* var_other /* var other: nullable Object */;
3518 short int var7 /* : Bool */;
3519 short int var8 /* : Bool */;
3520 val* var9 /* : MDoc */;
3521 val* var10 /* : Location */;
3522 val* var12 /* : Location */;
3523 val* var13 /* : ANodes[TComment] */;
3524 val* var15 /* : ANodes[TComment] */;
3525 val* var_ /* var : ANodes[TComment] */;
3526 val* var16 /* : Iterator[ANode] */;
3527 val* var_17 /* var : Iterator[TComment] */;
3528 short int var18 /* : Bool */;
3529 val* var19 /* : nullable Object */;
3530 val* var_c /* var c: TComment */;
3531 val* var20 /* : String */;
3532 val* var_text /* var text: String */;
3533 long var21 /* : Int */;
3534 short int var22 /* : Bool */;
3535 short int var24 /* : Bool */;
3536 int cltype;
3537 int idtype;
3538 const char* var_class_name;
3539 short int var25 /* : Bool */;
3540 val* var26 /* : Array[String] */;
3541 val* var28 /* : Array[String] */;
3542 static val* varonce;
3543 val* var29 /* : String */;
3544 char* var30 /* : NativeString */;
3545 val* var31 /* : FlatString */;
3546 val* var32 /* : SequenceRead[Char] */;
3547 val* var33 /* : nullable Object */;
3548 short int var34 /* : Bool */;
3549 short int var36 /* : Bool */;
3550 uint32_t var37 /* : Char */;
3551 val* var38 /* : SequenceRead[Char] */;
3552 val* var39 /* : nullable Object */;
3553 short int var40 /* : Bool */;
3554 short int var42 /* : Bool */;
3555 uint32_t var43 /* : Char */;
3556 val* var44 /* : Text */;
3557 val* var45 /* : Text */;
3558 val* var46 /* : SequenceRead[Char] */;
3559 val* var47 /* : nullable Object */;
3560 short int var48 /* : Bool */;
3561 short int var50 /* : Bool */;
3562 uint32_t var51 /* : Char */;
3563 long var52 /* : Int */;
3564 long var53 /* : Int */;
3565 short int var55 /* : Bool */;
3566 int cltype56;
3567 int idtype57;
3568 const char* var_class_name58;
3569 long var59 /* : Int */;
3570 val* var60 /* : Text */;
3571 val* var61 /* : Array[String] */;
3572 val* var63 /* : Array[String] */;
3573 {
3574 { /* Inline modelbuilder_base#ADoc#mdoc_cache (self) on <self:ADoc> */
3575 var3 = self->attrs[COLOR_nit__modelbuilder_base__ADoc___mdoc_cache].val; /* _mdoc_cache on <self:ADoc> */
3576 var1 = var3;
3577 RET_LABEL2:(void)0;
3578 }
3579 }
3580 var_res = var1;
3581 if (var_res == NULL) {
3582 var4 = 0; /* is null */
3583 } else {
3584 var4 = 1; /* arg is null and recv is not */
3585 }
3586 if (0) {
3587 { /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable MDoc> */
3588 var_other = ((val*)NULL);
3589 {
3590 var7 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other); /* == on <var_res:nullable MDoc(MDoc)>*/
3591 }
3592 var8 = !var7;
3593 var5 = var8;
3594 goto RET_LABEL6;
3595 RET_LABEL6:(void)0;
3596 }
3597 var4 = var5;
3598 }
3599 if (var4){
3600 var = var_res;
3601 goto RET_LABEL;
3602 } else {
3603 }
3604 var9 = NEW_nit__MDoc(&type_nit__MDoc);
3605 {
3606 { /* Inline parser_nodes#ANode#location (self) on <self:ADoc> */
3607 var12 = self->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <self:ADoc> */
3608 if (unlikely(var12 == NULL)) {
3609 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
3610 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
3611 fatal_exit(1);
3612 }
3613 var10 = var12;
3614 RET_LABEL11:(void)0;
3615 }
3616 }
3617 {
3618 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nit__mdoc__MDoc__location_61d]))(var9, var10); /* location= on <var9:MDoc>*/
3619 }
3620 {
3621 ((void(*)(val* self))(var9->class->vft[COLOR_standard__kernel__Object__init]))(var9); /* init on <var9:MDoc>*/
3622 }
3623 var_res = var9;
3624 {
3625 { /* Inline parser_nodes#ADoc#n_comment (self) on <self:ADoc> */
3626 var15 = self->attrs[COLOR_nit__parser_nodes__ADoc___n_comment].val; /* _n_comment on <self:ADoc> */
3627 if (unlikely(var15 == NULL)) {
3628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_comment");
3629 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2945);
3630 fatal_exit(1);
3631 }
3632 var13 = var15;
3633 RET_LABEL14:(void)0;
3634 }
3635 }
3636 var_ = var13;
3637 {
3638 var16 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
3639 }
3640 var_17 = var16;
3641 for(;;) {
3642 {
3643 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:Iterator[TComment]>*/
3644 }
3645 if (var18){
3646 {
3647 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:Iterator[TComment]>*/
3648 }
3649 var_c = var19;
3650 {
3651 var20 = nit__lexer_work___Token___text(var_c);
3652 }
3653 var_text = var20;
3654 {
3655 var21 = ((long(*)(val* self))(var_text->class->vft[COLOR_standard__string__Text__length]))(var_text); /* length on <var_text:String>*/
3656 }
3657 {
3658 { /* Inline kernel#Int#< (var21,2l) on <var21:Int> */
3659 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
3660 /* <2l:Int> isa OTHER */
3661 var24 = 1; /* easy <2l:Int> isa OTHER*/
3662 if (unlikely(!var24)) {
3663 var_class_name = type_standard__Int.name;
3664 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3665 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
3666 fatal_exit(1);
3667 }
3668 var25 = var21 < 2l;
3669 var22 = var25;
3670 goto RET_LABEL23;
3671 RET_LABEL23:(void)0;
3672 }
3673 }
3674 if (var22){
3675 {
3676 { /* Inline mdoc#MDoc#content (var_res) on <var_res:nullable MDoc(MDoc)> */
3677 var28 = var_res->attrs[COLOR_nit__mdoc__MDoc___content].val; /* _content on <var_res:nullable MDoc(MDoc)> */
3678 if (unlikely(var28 == NULL)) {
3679 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
3680 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mdoc, 23);
3681 fatal_exit(1);
3682 }
3683 var26 = var28;
3684 RET_LABEL27:(void)0;
3685 }
3686 }
3687 if (likely(varonce!=NULL)) {
3688 var29 = varonce;
3689 } else {
3690 var30 = "";
3691 var31 = standard___standard__NativeString___to_s_with_length(var30, 0l);
3692 var29 = var31;
3693 varonce = var29;
3694 }
3695 {
3696 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var26, var29); /* Direct call array#Array#add on <var26:Array[String]>*/
3697 }
3698 goto BREAK_label;
3699 } else {
3700 }
3701 {
3702 var32 = ((val*(*)(val* self))(var_text->class->vft[COLOR_standard__string__Text__chars]))(var_text); /* chars on <var_text:String>*/
3703 }
3704 {
3705 var33 = ((val*(*)(val* self, long p0))((((long)var32&3)?class_info[((long)var32&3)]:var32->class)->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var32, 0l); /* [] on <var32:SequenceRead[Char]>*/
3706 }
3707 {
3708 { /* Inline kernel#Char#== (var33,'#') on <var33:nullable Object(Char)> */
3709 var37 = (uint32_t)((long)(var33)>>2);
3710 var36 = (var33 != NULL) && (var37 == '#');
3711 var34 = var36;
3712 goto RET_LABEL35;
3713 RET_LABEL35:(void)0;
3714 }
3715 }
3716 if (unlikely(!var34)) {
3717 PRINT_ERROR("Runtime error: %s", "Assert failed");
3718 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 397);
3719 fatal_exit(1);
3720 }
3721 {
3722 var38 = ((val*(*)(val* self))(var_text->class->vft[COLOR_standard__string__Text__chars]))(var_text); /* chars on <var_text:String>*/
3723 }
3724 {
3725 var39 = ((val*(*)(val* self, long p0))((((long)var38&3)?class_info[((long)var38&3)]:var38->class)->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var38, 1l); /* [] on <var38:SequenceRead[Char]>*/
3726 }
3727 {
3728 { /* Inline kernel#Char#== (var39,' ') on <var39:nullable Object(Char)> */
3729 var43 = (uint32_t)((long)(var39)>>2);
3730 var42 = (var39 != NULL) && (var43 == ' ');
3731 var40 = var42;
3732 goto RET_LABEL41;
3733 RET_LABEL41:(void)0;
3734 }
3735 }
3736 if (var40){
3737 {
3738 var44 = standard___standard__Text___substring_from(var_text, 2l);
3739 }
3740 var_text = var44;
3741 } else {
3742 {
3743 var45 = standard___standard__Text___substring_from(var_text, 1l);
3744 }
3745 var_text = var45;
3746 }
3747 {
3748 var46 = ((val*(*)(val* self))(var_text->class->vft[COLOR_standard__string__Text__chars]))(var_text); /* chars on <var_text:String>*/
3749 }
3750 {
3751 var47 = ((val*(*)(val* self))((((long)var46&3)?class_info[((long)var46&3)]:var46->class)->vft[COLOR_standard__abstract_collection__SequenceRead__last]))(var46); /* last on <var46:SequenceRead[Char]>*/
3752 }
3753 {
3754 { /* Inline kernel#Char#== (var47,'\n') on <var47:nullable Object(Char)> */
3755 var51 = (uint32_t)((long)(var47)>>2);
3756 var50 = (var47 != NULL) && (var51 == '\n');
3757 var48 = var50;
3758 goto RET_LABEL49;
3759 RET_LABEL49:(void)0;
3760 }
3761 }
3762 if (var48){
3763 {
3764 var52 = ((long(*)(val* self))(var_text->class->vft[COLOR_standard__string__Text__length]))(var_text); /* length on <var_text:String>*/
3765 }
3766 {
3767 { /* Inline kernel#Int#- (var52,1l) on <var52:Int> */
3768 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3769 /* <1l:Int> isa OTHER */
3770 var55 = 1; /* easy <1l:Int> isa OTHER*/
3771 if (unlikely(!var55)) {
3772 var_class_name58 = type_standard__Int.name;
3773 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
3774 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
3775 fatal_exit(1);
3776 }
3777 var59 = var52 - 1l;
3778 var53 = var59;
3779 goto RET_LABEL54;
3780 RET_LABEL54:(void)0;
3781 }
3782 }
3783 {
3784 var60 = ((val*(*)(val* self, long p0, long p1))(var_text->class->vft[COLOR_standard__string__Text__substring]))(var_text, 0l, var53); /* substring on <var_text:String>*/
3785 }
3786 var_text = var60;
3787 } else {
3788 }
3789 {
3790 { /* Inline mdoc#MDoc#content (var_res) on <var_res:nullable MDoc(MDoc)> */
3791 var63 = var_res->attrs[COLOR_nit__mdoc__MDoc___content].val; /* _content on <var_res:nullable MDoc(MDoc)> */
3792 if (unlikely(var63 == NULL)) {
3793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
3794 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mdoc, 23);
3795 fatal_exit(1);
3796 }
3797 var61 = var63;
3798 RET_LABEL62:(void)0;
3799 }
3800 }
3801 {
3802 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var61, var_text); /* Direct call array#Array#add on <var61:Array[String]>*/
3803 }
3804 BREAK_label: (void)0;
3805 {
3806 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:Iterator[TComment]>*/
3807 }
3808 } else {
3809 goto BREAK_label64;
3810 }
3811 }
3812 BREAK_label64: (void)0;
3813 {
3814 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:Iterator[TComment]>*/
3815 }
3816 {
3817 { /* Inline modelbuilder_base#ADoc#mdoc_cache= (self,var_res) on <self:ADoc> */
3818 self->attrs[COLOR_nit__modelbuilder_base__ADoc___mdoc_cache].val = var_res; /* _mdoc_cache on <self:ADoc> */
3819 RET_LABEL65:(void)0;
3820 }
3821 }
3822 var = var_res;
3823 goto RET_LABEL;
3824 RET_LABEL:;
3825 return var;
3826 }