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