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