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