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