lib: do not ignore key/values when value is null in Map::join
[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___64dmclasses].val; /* @mclasses on <self:Model> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclasses");
9 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 38);
10 exit(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 var1 = model__Model__mclasses(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method model#Model#mclasses= for (self: Model, Array[MClass]) */
26 void model__Model__mclasses_61d(val* self, val* p0) {
27 self->attrs[COLOR_model__Model___64dmclasses].val = p0; /* @mclasses on <self:Model> */
28 RET_LABEL:;
29 }
30 /* method model#Model#mclasses= for (self: Object, Array[MClass]) */
31 void VIRTUAL_model__Model__mclasses_61d(val* self, val* p0) {
32 model__Model__mclasses_61d(self, p0);
33 RET_LABEL:;
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___64dmproperties].val; /* @mproperties on <self:Model> */
40 if (var1 == NULL) {
41 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperties");
42 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 41);
43 exit(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 var1 = model__Model__mproperties(self);
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method model#Model#mproperties= for (self: Model, Array[MProperty]) */
59 void model__Model__mproperties_61d(val* self, val* p0) {
60 self->attrs[COLOR_model__Model___64dmproperties].val = p0; /* @mproperties on <self:Model> */
61 RET_LABEL:;
62 }
63 /* method model#Model#mproperties= for (self: Object, Array[MProperty]) */
64 void VIRTUAL_model__Model__mproperties_61d(val* self, val* p0) {
65 model__Model__mproperties_61d(self, p0);
66 RET_LABEL:;
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___64dmclassdef_hierarchy].val; /* @mclassdef_hierarchy on <self:Model> */
73 if (var1 == NULL) {
74 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef_hierarchy");
75 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 44);
76 exit(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 var1 = model__Model__mclassdef_hierarchy(self);
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method model#Model#mclassdef_hierarchy= for (self: Model, POSet[MClassDef]) */
92 void model__Model__mclassdef_hierarchy_61d(val* self, val* p0) {
93 self->attrs[COLOR_model__Model___64dmclassdef_hierarchy].val = p0; /* @mclassdef_hierarchy on <self:Model> */
94 RET_LABEL:;
95 }
96 /* method model#Model#mclassdef_hierarchy= for (self: Object, POSet[MClassDef]) */
97 void VIRTUAL_model__Model__mclassdef_hierarchy_61d(val* self, val* p0) {
98 model__Model__mclassdef_hierarchy_61d(self, p0);
99 RET_LABEL:;
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___64dintro_mtype_specialization_hierarchy].val; /* @intro_mtype_specialization_hierarchy on <self:Model> */
106 if (var1 == NULL) {
107 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mtype_specialization_hierarchy");
108 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 50);
109 exit(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 var1 = model__Model__intro_mtype_specialization_hierarchy(self);
120 var = var1;
121 RET_LABEL:;
122 return var;
123 }
124 /* method model#Model#intro_mtype_specialization_hierarchy= for (self: Model, POSet[MClassType]) */
125 void model__Model__intro_mtype_specialization_hierarchy_61d(val* self, val* p0) {
126 self->attrs[COLOR_model__Model___64dintro_mtype_specialization_hierarchy].val = p0; /* @intro_mtype_specialization_hierarchy on <self:Model> */
127 RET_LABEL:;
128 }
129 /* method model#Model#intro_mtype_specialization_hierarchy= for (self: Object, POSet[MClassType]) */
130 void VIRTUAL_model__Model__intro_mtype_specialization_hierarchy_61d(val* self, val* p0) {
131 model__Model__intro_mtype_specialization_hierarchy_61d(self, p0);
132 RET_LABEL:;
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___64dfull_mtype_specialization_hierarchy].val; /* @full_mtype_specialization_hierarchy on <self:Model> */
139 if (var1 == NULL) {
140 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @full_mtype_specialization_hierarchy");
141 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 61);
142 exit(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 var1 = model__Model__full_mtype_specialization_hierarchy(self);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method model#Model#full_mtype_specialization_hierarchy= for (self: Model, POSet[MClassType]) */
158 void model__Model__full_mtype_specialization_hierarchy_61d(val* self, val* p0) {
159 self->attrs[COLOR_model__Model___64dfull_mtype_specialization_hierarchy].val = p0; /* @full_mtype_specialization_hierarchy on <self:Model> */
160 RET_LABEL:;
161 }
162 /* method model#Model#full_mtype_specialization_hierarchy= for (self: Object, POSet[MClassType]) */
163 void VIRTUAL_model__Model__full_mtype_specialization_hierarchy_61d(val* self, val* p0) {
164 model__Model__full_mtype_specialization_hierarchy_61d(self, p0);
165 RET_LABEL:;
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___64dmclasses_by_name].val; /* @mclasses_by_name on <self:Model> */
172 if (var1 == NULL) {
173 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclasses_by_name");
174 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 70);
175 exit(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 var1 = model__Model__mclasses_by_name(self);
186 var = var1;
187 RET_LABEL:;
188 return var;
189 }
190 /* method model#Model#mclasses_by_name= for (self: Model, MultiHashMap[String, MClass]) */
191 void model__Model__mclasses_by_name_61d(val* self, val* p0) {
192 self->attrs[COLOR_model__Model___64dmclasses_by_name].val = p0; /* @mclasses_by_name on <self:Model> */
193 RET_LABEL:;
194 }
195 /* method model#Model#mclasses_by_name= for (self: Object, MultiHashMap[String, MClass]) */
196 void VIRTUAL_model__Model__mclasses_by_name_61d(val* self, val* p0) {
197 model__Model__mclasses_by_name_61d(self, p0);
198 RET_LABEL:;
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 short int var2 /* : Bool */;
206 val* var3 /* : MultiHashMap[String, MClass] */;
207 val* var4 /* : nullable Object */;
208 val* var5 /* : null */;
209 var_name = p0;
210 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mclasses_by_name]))(self) /* mclasses_by_name on <self:Model>*/;
211 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_name) /* has_key on <var1:MultiHashMap[String, MClass]>*/;
212 if (var2){
213 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mclasses_by_name]))(self) /* mclasses_by_name on <self:Model>*/;
214 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_name) /* [] on <var3:MultiHashMap[String, MClass]>*/;
215 var = var4;
216 goto RET_LABEL;
217 } else {
218 var5 = NULL;
219 var = var5;
220 goto RET_LABEL;
221 }
222 RET_LABEL:;
223 return var;
224 }
225 /* method model#Model#get_mclasses_by_name for (self: Object, String): nullable Array[MClass] */
226 val* VIRTUAL_model__Model__get_mclasses_by_name(val* self, val* p0) {
227 val* var /* : nullable Array[MClass] */;
228 val* var1 /* : nullable Array[MClass] */;
229 var1 = model__Model__get_mclasses_by_name(self, p0);
230 var = var1;
231 RET_LABEL:;
232 return var;
233 }
234 /* method model#Model#mproperties_by_name for (self: Model): MultiHashMap[String, MProperty] */
235 val* model__Model__mproperties_by_name(val* self) {
236 val* var /* : MultiHashMap[String, MProperty] */;
237 val* var1 /* : MultiHashMap[String, MProperty] */;
238 var1 = self->attrs[COLOR_model__Model___64dmproperties_by_name].val; /* @mproperties_by_name on <self:Model> */
239 if (var1 == NULL) {
240 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperties_by_name");
241 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 88);
242 exit(1);
243 }
244 var = var1;
245 RET_LABEL:;
246 return var;
247 }
248 /* method model#Model#mproperties_by_name for (self: Object): MultiHashMap[String, MProperty] */
249 val* VIRTUAL_model__Model__mproperties_by_name(val* self) {
250 val* var /* : MultiHashMap[String, MProperty] */;
251 val* var1 /* : MultiHashMap[String, MProperty] */;
252 var1 = model__Model__mproperties_by_name(self);
253 var = var1;
254 RET_LABEL:;
255 return var;
256 }
257 /* method model#Model#mproperties_by_name= for (self: Model, MultiHashMap[String, MProperty]) */
258 void model__Model__mproperties_by_name_61d(val* self, val* p0) {
259 self->attrs[COLOR_model__Model___64dmproperties_by_name].val = p0; /* @mproperties_by_name on <self:Model> */
260 RET_LABEL:;
261 }
262 /* method model#Model#mproperties_by_name= for (self: Object, MultiHashMap[String, MProperty]) */
263 void VIRTUAL_model__Model__mproperties_by_name_61d(val* self, val* p0) {
264 model__Model__mproperties_by_name_61d(self, p0);
265 RET_LABEL:;
266 }
267 /* method model#Model#get_mproperties_by_name for (self: Model, String): nullable Array[MProperty] */
268 val* model__Model__get_mproperties_by_name(val* self, val* p0) {
269 val* var /* : nullable Array[MProperty] */;
270 val* var_name /* var name: String */;
271 val* var1 /* : MultiHashMap[String, MProperty] */;
272 short int var2 /* : Bool */;
273 short int var3 /* : Bool */;
274 val* var4 /* : null */;
275 val* var5 /* : MultiHashMap[String, MProperty] */;
276 val* var6 /* : nullable Object */;
277 var_name = p0;
278 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mproperties_by_name]))(self) /* mproperties_by_name on <self:Model>*/;
279 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_name) /* has_key on <var1:MultiHashMap[String, MProperty]>*/;
280 var3 = !var2;
281 if (var3){
282 var4 = NULL;
283 var = var4;
284 goto RET_LABEL;
285 } else {
286 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mproperties_by_name]))(self) /* mproperties_by_name on <self:Model>*/;
287 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_name) /* [] on <var5:MultiHashMap[String, MProperty]>*/;
288 var = var6;
289 goto RET_LABEL;
290 }
291 RET_LABEL:;
292 return var;
293 }
294 /* method model#Model#get_mproperties_by_name for (self: Object, String): nullable Array[MProperty] */
295 val* VIRTUAL_model__Model__get_mproperties_by_name(val* self, val* p0) {
296 val* var /* : nullable Array[MProperty] */;
297 val* var1 /* : nullable Array[MProperty] */;
298 var1 = model__Model__get_mproperties_by_name(self, p0);
299 var = var1;
300 RET_LABEL:;
301 return var;
302 }
303 /* method model#Model#null_type for (self: Model): MNullType */
304 val* model__Model__null_type(val* self) {
305 val* var /* : MNullType */;
306 val* var1 /* : MNullType */;
307 var1 = self->attrs[COLOR_model__Model___64dnull_type].val; /* @null_type on <self:Model> */
308 if (var1 == NULL) {
309 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @null_type");
310 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 106);
311 exit(1);
312 }
313 var = var1;
314 RET_LABEL:;
315 return var;
316 }
317 /* method model#Model#null_type for (self: Object): MNullType */
318 val* VIRTUAL_model__Model__null_type(val* self) {
319 val* var /* : MNullType */;
320 val* var1 /* : MNullType */;
321 var1 = model__Model__null_type(self);
322 var = var1;
323 RET_LABEL:;
324 return var;
325 }
326 /* method model#Model#null_type= for (self: Model, MNullType) */
327 void model__Model__null_type_61d(val* self, val* p0) {
328 self->attrs[COLOR_model__Model___64dnull_type].val = p0; /* @null_type on <self:Model> */
329 RET_LABEL:;
330 }
331 /* method model#Model#null_type= for (self: Object, MNullType) */
332 void VIRTUAL_model__Model__null_type_61d(val* self, val* p0) {
333 model__Model__null_type_61d(self, p0);
334 RET_LABEL:;
335 }
336 /* method model#MModule#intro_mclasses for (self: MModule): Array[MClass] */
337 val* model__MModule__intro_mclasses(val* self) {
338 val* var /* : Array[MClass] */;
339 val* var1 /* : Array[MClass] */;
340 var1 = self->attrs[COLOR_model__MModule___64dintro_mclasses].val; /* @intro_mclasses on <self:MModule> */
341 if (var1 == NULL) {
342 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclasses");
343 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 111);
344 exit(1);
345 }
346 var = var1;
347 RET_LABEL:;
348 return var;
349 }
350 /* method model#MModule#intro_mclasses for (self: Object): Array[MClass] */
351 val* VIRTUAL_model__MModule__intro_mclasses(val* self) {
352 val* var /* : Array[MClass] */;
353 val* var1 /* : Array[MClass] */;
354 var1 = model__MModule__intro_mclasses(self);
355 var = var1;
356 RET_LABEL:;
357 return var;
358 }
359 /* method model#MModule#intro_mclasses= for (self: MModule, Array[MClass]) */
360 void model__MModule__intro_mclasses_61d(val* self, val* p0) {
361 self->attrs[COLOR_model__MModule___64dintro_mclasses].val = p0; /* @intro_mclasses on <self:MModule> */
362 RET_LABEL:;
363 }
364 /* method model#MModule#intro_mclasses= for (self: Object, Array[MClass]) */
365 void VIRTUAL_model__MModule__intro_mclasses_61d(val* self, val* p0) {
366 model__MModule__intro_mclasses_61d(self, p0);
367 RET_LABEL:;
368 }
369 /* method model#MModule#mclassdefs for (self: MModule): Array[MClassDef] */
370 val* model__MModule__mclassdefs(val* self) {
371 val* var /* : Array[MClassDef] */;
372 val* var1 /* : Array[MClassDef] */;
373 var1 = self->attrs[COLOR_model__MModule___64dmclassdefs].val; /* @mclassdefs on <self:MModule> */
374 if (var1 == NULL) {
375 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdefs");
376 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 114);
377 exit(1);
378 }
379 var = var1;
380 RET_LABEL:;
381 return var;
382 }
383 /* method model#MModule#mclassdefs for (self: Object): Array[MClassDef] */
384 val* VIRTUAL_model__MModule__mclassdefs(val* self) {
385 val* var /* : Array[MClassDef] */;
386 val* var1 /* : Array[MClassDef] */;
387 var1 = model__MModule__mclassdefs(self);
388 var = var1;
389 RET_LABEL:;
390 return var;
391 }
392 /* method model#MModule#mclassdefs= for (self: MModule, Array[MClassDef]) */
393 void model__MModule__mclassdefs_61d(val* self, val* p0) {
394 self->attrs[COLOR_model__MModule___64dmclassdefs].val = p0; /* @mclassdefs on <self:MModule> */
395 RET_LABEL:;
396 }
397 /* method model#MModule#mclassdefs= for (self: Object, Array[MClassDef]) */
398 void VIRTUAL_model__MModule__mclassdefs_61d(val* self, val* p0) {
399 model__MModule__mclassdefs_61d(self, p0);
400 RET_LABEL:;
401 }
402 /* method model#MModule#has_mclass for (self: MModule, MClass): Bool */
403 short int model__MModule__has_mclass(val* self, val* p0) {
404 short int var /* : Bool */;
405 val* var_mclass /* var mclass: MClass */;
406 val* var1 /* : POSetElement[MModule] */;
407 val* var2 /* : MModule */;
408 short int var3 /* : Bool */;
409 var_mclass = p0;
410 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
411 var2 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
412 var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_poset__POSetElement___60d_61d]))(var1, var2) /* <= on <var1:POSetElement[MModule]>*/;
413 var = var3;
414 goto RET_LABEL;
415 RET_LABEL:;
416 return var;
417 }
418 /* method model#MModule#has_mclass for (self: Object, MClass): Bool */
419 short int VIRTUAL_model__MModule__has_mclass(val* self, val* p0) {
420 short int var /* : Bool */;
421 short int var1 /* : Bool */;
422 var1 = model__MModule__has_mclass(self, p0);
423 var = var1;
424 RET_LABEL:;
425 return var;
426 }
427 /* method model#MModule#flatten_mclass_hierarchy for (self: MModule): POSet[MClass] */
428 val* model__MModule__flatten_mclass_hierarchy(val* self) {
429 val* var /* : POSet[MClass] */;
430 val* var1 /* : nullable POSet[MClass] */;
431 val* var_res /* var res: nullable POSet[MClass] */;
432 val* var2 /* : null */;
433 short int var3 /* : Bool */;
434 val* var4 /* : POSet[MClass] */;
435 val* var5 /* : POSetElement[MModule] */;
436 val* var6 /* : Collection[Object] */;
437 val* var7 /* : Iterator[nullable Object] */;
438 short int var8 /* : Bool */;
439 val* var9 /* : nullable Object */;
440 val* var_m /* var m: MModule */;
441 val* var10 /* : Array[MClassDef] */;
442 val* var11 /* : Iterator[nullable Object] */;
443 short int var12 /* : Bool */;
444 val* var13 /* : nullable Object */;
445 val* var_cd /* var cd: MClassDef */;
446 val* var14 /* : MClass */;
447 val* var_c /* var c: MClass */;
448 val* var15 /* : POSetElement[Object] */;
449 val* var16 /* : Array[MClassType] */;
450 val* var17 /* : Iterator[nullable Object] */;
451 short int var18 /* : Bool */;
452 val* var19 /* : nullable Object */;
453 val* var_s /* var s: MClassType */;
454 val* var20 /* : MClass */;
455 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy_cache]))(self) /* flatten_mclass_hierarchy_cache on <self:MModule>*/;
456 var_res = var1;
457 var2 = NULL;
458 if (var_res == NULL) {
459 var3 = 0; /* is null */
460 } else {
461 var3 = 1; /* arg is null and recv is not */
462 }
463 if (var3){
464 var = var_res;
465 goto RET_LABEL;
466 } else {
467 }
468 var4 = NEW_poset__POSet(&type_poset__POSetmodel__MClass);
469 ((void (*)(val*))(var4->class->vft[COLOR_poset__POSet__init]))(var4) /* init on <var4:POSet[MClass]>*/;
470 CHECK_NEW_poset__POSet(var4);
471 var_res = var4;
472 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
473 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_poset__POSetElement__greaters]))(var5) /* greaters on <var5:POSetElement[MModule]>*/;
474 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Collection[Object](Collection[MModule])>*/;
475 for(;;) {
476 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
477 if(!var8) break;
478 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
479 var_m = var9;
480 var10 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MModule__mclassdefs]))(var_m) /* mclassdefs on <var_m:MModule>*/;
481 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MClassDef]>*/;
482 for(;;) {
483 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
484 if(!var12) break;
485 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
486 var_cd = var13;
487 var14 = ((val* (*)(val*))(var_cd->class->vft[COLOR_model__MClassDef__mclass]))(var_cd) /* mclass on <var_cd:MClassDef>*/;
488 var_c = var14;
489 var15 = ((val* (*)(val*, val*))(var_res->class->vft[COLOR_poset__POSet__add_node]))(var_res, var_c) /* add_node on <var_res:nullable POSet[MClass](POSet[MClass])>*/;
490 var15;
491 var16 = ((val* (*)(val*))(var_cd->class->vft[COLOR_model__MClassDef__supertypes]))(var_cd) /* supertypes on <var_cd:MClassDef>*/;
492 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__iterator]))(var16) /* iterator on <var16:Array[MClassType]>*/;
493 for(;;) {
494 var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var17) /* is_ok on <var17:Iterator[nullable Object]>*/;
495 if(!var18) break;
496 var19 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__item]))(var17) /* item on <var17:Iterator[nullable Object]>*/;
497 var_s = var19;
498 var20 = ((val* (*)(val*))(var_s->class->vft[COLOR_model__MClassType__mclass]))(var_s) /* mclass on <var_s:MClassType>*/;
499 ((void (*)(val*, val*, val*))(var_res->class->vft[COLOR_poset__POSet__add_edge]))(var_res, var_c, var20) /* add_edge on <var_res:nullable POSet[MClass](POSet[MClass])>*/;
500 CONTINUE_label: (void)0;
501 ((void (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__next]))(var17) /* next on <var17:Iterator[nullable Object]>*/;
502 }
503 BREAK_label: (void)0;
504 CONTINUE_label21: (void)0;
505 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
506 }
507 BREAK_label21: (void)0;
508 CONTINUE_label22: (void)0;
509 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
510 }
511 BREAK_label22: (void)0;
512 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy_cache_61d]))(self, var_res) /* flatten_mclass_hierarchy_cache= on <self:MModule>*/;
513 var = var_res;
514 goto RET_LABEL;
515 RET_LABEL:;
516 return var;
517 }
518 /* method model#MModule#flatten_mclass_hierarchy for (self: Object): POSet[MClass] */
519 val* VIRTUAL_model__MModule__flatten_mclass_hierarchy(val* self) {
520 val* var /* : POSet[MClass] */;
521 val* var1 /* : POSet[MClass] */;
522 var1 = model__MModule__flatten_mclass_hierarchy(self);
523 var = var1;
524 RET_LABEL:;
525 return var;
526 }
527 /* method model#MModule#linearize_mclasses for (self: MModule, Array[MClass]) */
528 void model__MModule__linearize_mclasses(val* self, val* p0) {
529 val* var_mclasses /* var mclasses: Array[MClass] */;
530 val* var /* : POSet[MClass] */;
531 var_mclasses = p0;
532 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(self) /* flatten_mclass_hierarchy on <self:MModule>*/;
533 ((void (*)(val*, val*))(var->class->vft[COLOR_sorter__AbstractSorter__sort]))(var, var_mclasses) /* sort on <var:POSet[MClass]>*/;
534 RET_LABEL:;
535 }
536 /* method model#MModule#linearize_mclasses for (self: Object, Array[MClass]) */
537 void VIRTUAL_model__MModule__linearize_mclasses(val* self, val* p0) {
538 model__MModule__linearize_mclasses(self, p0);
539 RET_LABEL:;
540 }
541 /* method model#MModule#linearize_mclassdefs for (self: MModule, Array[MClassDef]) */
542 void model__MModule__linearize_mclassdefs(val* self, val* p0) {
543 val* var_mclassdefs /* var mclassdefs: Array[MClassDef] */;
544 val* var /* : MClassDefSorter */;
545 val* var_sorter /* var sorter: MClassDefSorter */;
546 var_mclassdefs = p0;
547 var = NEW_model__MClassDefSorter(&type_model__MClassDefSorter);
548 ((void (*)(val*, val*))(var->class->vft[COLOR_model__MClassDefSorter__init]))(var, self) /* init on <var:MClassDefSorter>*/;
549 CHECK_NEW_model__MClassDefSorter(var);
550 var_sorter = var;
551 ((void (*)(val*, val*))(var_sorter->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_sorter, var_mclassdefs) /* sort on <var_sorter:MClassDefSorter>*/;
552 RET_LABEL:;
553 }
554 /* method model#MModule#linearize_mclassdefs for (self: Object, Array[MClassDef]) */
555 void VIRTUAL_model__MModule__linearize_mclassdefs(val* self, val* p0) {
556 model__MModule__linearize_mclassdefs(self, p0);
557 RET_LABEL:;
558 }
559 /* method model#MModule#linearize_mpropdefs for (self: MModule, Array[MPropDef]) */
560 void model__MModule__linearize_mpropdefs(val* self, val* p0) {
561 val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
562 val* var /* : MPropDefSorter */;
563 val* var_sorter /* var sorter: MPropDefSorter */;
564 var_mpropdefs = p0;
565 var = NEW_model__MPropDefSorter(&type_model__MPropDefSorter);
566 ((void (*)(val*, val*))(var->class->vft[COLOR_model__MPropDefSorter__init]))(var, self) /* init on <var:MPropDefSorter>*/;
567 CHECK_NEW_model__MPropDefSorter(var);
568 var_sorter = var;
569 ((void (*)(val*, val*))(var_sorter->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_sorter, var_mpropdefs) /* sort on <var_sorter:MPropDefSorter>*/;
570 RET_LABEL:;
571 }
572 /* method model#MModule#linearize_mpropdefs for (self: Object, Array[MPropDef]) */
573 void VIRTUAL_model__MModule__linearize_mpropdefs(val* self, val* p0) {
574 model__MModule__linearize_mpropdefs(self, p0);
575 RET_LABEL:;
576 }
577 /* method model#MModule#flatten_mclass_hierarchy_cache for (self: MModule): nullable POSet[MClass] */
578 val* model__MModule__flatten_mclass_hierarchy_cache(val* self) {
579 val* var /* : nullable POSet[MClass] */;
580 val* var1 /* : nullable POSet[MClass] */;
581 var1 = self->attrs[COLOR_model__MModule___64dflatten_mclass_hierarchy_cache].val; /* @flatten_mclass_hierarchy_cache on <self:MModule> */
582 var = var1;
583 RET_LABEL:;
584 return var;
585 }
586 /* method model#MModule#flatten_mclass_hierarchy_cache for (self: Object): nullable POSet[MClass] */
587 val* VIRTUAL_model__MModule__flatten_mclass_hierarchy_cache(val* self) {
588 val* var /* : nullable POSet[MClass] */;
589 val* var1 /* : nullable POSet[MClass] */;
590 var1 = model__MModule__flatten_mclass_hierarchy_cache(self);
591 var = var1;
592 RET_LABEL:;
593 return var;
594 }
595 /* method model#MModule#flatten_mclass_hierarchy_cache= for (self: MModule, nullable POSet[MClass]) */
596 void model__MModule__flatten_mclass_hierarchy_cache_61d(val* self, val* p0) {
597 self->attrs[COLOR_model__MModule___64dflatten_mclass_hierarchy_cache].val = p0; /* @flatten_mclass_hierarchy_cache on <self:MModule> */
598 RET_LABEL:;
599 }
600 /* method model#MModule#flatten_mclass_hierarchy_cache= for (self: Object, nullable POSet[MClass]) */
601 void VIRTUAL_model__MModule__flatten_mclass_hierarchy_cache_61d(val* self, val* p0) {
602 model__MModule__flatten_mclass_hierarchy_cache_61d(self, p0);
603 RET_LABEL:;
604 }
605 /* method model#MModule#object_type for (self: MModule): MClassType */
606 val* model__MModule__object_type(val* self) {
607 val* var /* : MClassType */;
608 val* var1 /* : nullable MClassType */;
609 val* var_res /* var res: nullable MClassType */;
610 val* var2 /* : null */;
611 short int var3 /* : Bool */;
612 static val* varonce;
613 val* var4 /* : String */;
614 char* var5 /* : NativeString */;
615 long var6 /* : Int */;
616 val* var7 /* : String */;
617 val* var8 /* : MClass */;
618 val* var9 /* : MClassType */;
619 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__object_type_cache]))(self) /* object_type_cache on <self:MModule>*/;
620 var_res = var1;
621 var2 = NULL;
622 if (var_res == NULL) {
623 var3 = 0; /* is null */
624 } else {
625 var3 = 1; /* arg is null and recv is not */
626 }
627 if (var3){
628 var = var_res;
629 goto RET_LABEL;
630 } else {
631 }
632 if (varonce) {
633 var4 = varonce;
634 } else {
635 var5 = "Object";
636 var6 = 6;
637 var7 = string__NativeString__to_s_with_length(var5, var6);
638 var4 = var7;
639 varonce = var4;
640 }
641 var8 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MModule__get_primitive_class]))(self, var4) /* get_primitive_class on <self:MModule>*/;
642 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClass__mclass_type]))(var8) /* mclass_type on <var8:MClass>*/;
643 var_res = var9;
644 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MModule__object_type_cache_61d]))(self, var_res) /* object_type_cache= on <self:MModule>*/;
645 var = var_res;
646 goto RET_LABEL;
647 RET_LABEL:;
648 return var;
649 }
650 /* method model#MModule#object_type for (self: Object): MClassType */
651 val* VIRTUAL_model__MModule__object_type(val* self) {
652 val* var /* : MClassType */;
653 val* var1 /* : MClassType */;
654 var1 = model__MModule__object_type(self);
655 var = var1;
656 RET_LABEL:;
657 return var;
658 }
659 /* method model#MModule#object_type_cache for (self: MModule): nullable MClassType */
660 val* model__MModule__object_type_cache(val* self) {
661 val* var /* : nullable MClassType */;
662 val* var1 /* : nullable MClassType */;
663 var1 = self->attrs[COLOR_model__MModule___64dobject_type_cache].val; /* @object_type_cache on <self:MModule> */
664 var = var1;
665 RET_LABEL:;
666 return var;
667 }
668 /* method model#MModule#object_type_cache for (self: Object): nullable MClassType */
669 val* VIRTUAL_model__MModule__object_type_cache(val* self) {
670 val* var /* : nullable MClassType */;
671 val* var1 /* : nullable MClassType */;
672 var1 = model__MModule__object_type_cache(self);
673 var = var1;
674 RET_LABEL:;
675 return var;
676 }
677 /* method model#MModule#object_type_cache= for (self: MModule, nullable MClassType) */
678 void model__MModule__object_type_cache_61d(val* self, val* p0) {
679 self->attrs[COLOR_model__MModule___64dobject_type_cache].val = p0; /* @object_type_cache on <self:MModule> */
680 RET_LABEL:;
681 }
682 /* method model#MModule#object_type_cache= for (self: Object, nullable MClassType) */
683 void VIRTUAL_model__MModule__object_type_cache_61d(val* self, val* p0) {
684 model__MModule__object_type_cache_61d(self, p0);
685 RET_LABEL:;
686 }
687 /* method model#MModule#bool_type for (self: MModule): MClassType */
688 val* model__MModule__bool_type(val* self) {
689 val* var /* : MClassType */;
690 val* var1 /* : nullable MClassType */;
691 val* var_res /* var res: nullable MClassType */;
692 val* var2 /* : null */;
693 short int var3 /* : Bool */;
694 static val* varonce;
695 val* var4 /* : String */;
696 char* var5 /* : NativeString */;
697 long var6 /* : Int */;
698 val* var7 /* : String */;
699 val* var8 /* : MClass */;
700 val* var9 /* : MClassType */;
701 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__bool_type_cache]))(self) /* bool_type_cache on <self:MModule>*/;
702 var_res = var1;
703 var2 = NULL;
704 if (var_res == NULL) {
705 var3 = 0; /* is null */
706 } else {
707 var3 = 1; /* arg is null and recv is not */
708 }
709 if (var3){
710 var = var_res;
711 goto RET_LABEL;
712 } else {
713 }
714 if (varonce) {
715 var4 = varonce;
716 } else {
717 var5 = "Bool";
718 var6 = 4;
719 var7 = string__NativeString__to_s_with_length(var5, var6);
720 var4 = var7;
721 varonce = var4;
722 }
723 var8 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MModule__get_primitive_class]))(self, var4) /* get_primitive_class on <self:MModule>*/;
724 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClass__mclass_type]))(var8) /* mclass_type on <var8:MClass>*/;
725 var_res = var9;
726 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MModule__bool_type_cache_61d]))(self, var_res) /* bool_type_cache= on <self:MModule>*/;
727 var = var_res;
728 goto RET_LABEL;
729 RET_LABEL:;
730 return var;
731 }
732 /* method model#MModule#bool_type for (self: Object): MClassType */
733 val* VIRTUAL_model__MModule__bool_type(val* self) {
734 val* var /* : MClassType */;
735 val* var1 /* : MClassType */;
736 var1 = model__MModule__bool_type(self);
737 var = var1;
738 RET_LABEL:;
739 return var;
740 }
741 /* method model#MModule#bool_type_cache for (self: MModule): nullable MClassType */
742 val* model__MModule__bool_type_cache(val* self) {
743 val* var /* : nullable MClassType */;
744 val* var1 /* : nullable MClassType */;
745 var1 = self->attrs[COLOR_model__MModule___64dbool_type_cache].val; /* @bool_type_cache on <self:MModule> */
746 var = var1;
747 RET_LABEL:;
748 return var;
749 }
750 /* method model#MModule#bool_type_cache for (self: Object): nullable MClassType */
751 val* VIRTUAL_model__MModule__bool_type_cache(val* self) {
752 val* var /* : nullable MClassType */;
753 val* var1 /* : nullable MClassType */;
754 var1 = model__MModule__bool_type_cache(self);
755 var = var1;
756 RET_LABEL:;
757 return var;
758 }
759 /* method model#MModule#bool_type_cache= for (self: MModule, nullable MClassType) */
760 void model__MModule__bool_type_cache_61d(val* self, val* p0) {
761 self->attrs[COLOR_model__MModule___64dbool_type_cache].val = p0; /* @bool_type_cache on <self:MModule> */
762 RET_LABEL:;
763 }
764 /* method model#MModule#bool_type_cache= for (self: Object, nullable MClassType) */
765 void VIRTUAL_model__MModule__bool_type_cache_61d(val* self, val* p0) {
766 model__MModule__bool_type_cache_61d(self, p0);
767 RET_LABEL:;
768 }
769 /* method model#MModule#sys_type for (self: MModule): nullable MClassType */
770 val* model__MModule__sys_type(val* self) {
771 val* var /* : nullable MClassType */;
772 val* var1 /* : Model */;
773 static val* varonce;
774 val* var2 /* : String */;
775 char* var3 /* : NativeString */;
776 long var4 /* : Int */;
777 val* var5 /* : String */;
778 val* var6 /* : nullable Array[MClass] */;
779 val* var_clas /* var clas: nullable Array[MClass] */;
780 val* var7 /* : null */;
781 short int var8 /* : Bool */;
782 val* var9 /* : null */;
783 static val* varonce10;
784 val* var11 /* : String */;
785 char* var12 /* : NativeString */;
786 long var13 /* : Int */;
787 val* var14 /* : String */;
788 val* var15 /* : MClass */;
789 val* var16 /* : MClassType */;
790 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__model]))(self) /* model on <self:MModule>*/;
791 if (varonce) {
792 var2 = varonce;
793 } else {
794 var3 = "Sys";
795 var4 = 3;
796 var5 = string__NativeString__to_s_with_length(var3, var4);
797 var2 = var5;
798 varonce = var2;
799 }
800 var6 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var2) /* get_mclasses_by_name on <var1:Model>*/;
801 var_clas = var6;
802 var7 = NULL;
803 if (var_clas == NULL) {
804 var8 = 1; /* is null */
805 } else {
806 var8 = 0; /* arg is null but recv is not */
807 }
808 if (var8){
809 var9 = NULL;
810 var = var9;
811 goto RET_LABEL;
812 } else {
813 }
814 if (varonce10) {
815 var11 = varonce10;
816 } else {
817 var12 = "Sys";
818 var13 = 3;
819 var14 = string__NativeString__to_s_with_length(var12, var13);
820 var11 = var14;
821 varonce10 = var11;
822 }
823 var15 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MModule__get_primitive_class]))(self, var11) /* get_primitive_class on <self:MModule>*/;
824 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__mclass_type]))(var15) /* mclass_type on <var15:MClass>*/;
825 var = var16;
826 goto RET_LABEL;
827 RET_LABEL:;
828 return var;
829 }
830 /* method model#MModule#sys_type for (self: Object): nullable MClassType */
831 val* VIRTUAL_model__MModule__sys_type(val* self) {
832 val* var /* : nullable MClassType */;
833 val* var1 /* : nullable MClassType */;
834 var1 = model__MModule__sys_type(self);
835 var = var1;
836 RET_LABEL:;
837 return var;
838 }
839 /* method model#MModule#get_primitive_class for (self: MModule, String): MClass */
840 val* model__MModule__get_primitive_class(val* self, val* p0) {
841 val* var /* : MClass */;
842 val* var_name /* var name: String */;
843 val* var1 /* : Model */;
844 val* var2 /* : nullable Array[MClass] */;
845 val* var_cla /* var cla: nullable Array[MClass] */;
846 val* var3 /* : null */;
847 short int var4 /* : Bool */;
848 static val* varonce;
849 val* var5 /* : String */;
850 char* var6 /* : NativeString */;
851 long var7 /* : Int */;
852 val* var8 /* : String */;
853 short int var9 /* : Bool */;
854 val* var10 /* : MClass */;
855 long var11 /* : Int */;
856 val* var12 /* : MClassKind */;
857 val* var13 /* : MVisibility */;
858 val* var_c /* var c: MClass */;
859 val* var14 /* : MClassDef */;
860 val* var15 /* : MClassType */;
861 val* var16 /* : Location */;
862 val* var17 /* : null */;
863 long var18 /* : Int */;
864 long var19 /* : Int */;
865 long var20 /* : Int */;
866 long var21 /* : Int */;
867 val* var22 /* : Array[String] */;
868 val* var_cladef /* var cladef: MClassDef */;
869 static val* varonce23;
870 val* var24 /* : String */;
871 char* var25 /* : NativeString */;
872 long var26 /* : Int */;
873 val* var27 /* : String */;
874 val* var28 /* : Array[Object] */;
875 long var29 /* : Int */;
876 val* var30 /* : NativeArray[Object] */;
877 val* var31 /* : String */;
878 long var32 /* : Int */;
879 long var33 /* : Int */;
880 long var34 /* : Int */;
881 short int var35 /* : Bool */;
882 short int var37 /* : Bool */;
883 static val* varonce38;
884 val* var39 /* : String */;
885 char* var40 /* : NativeString */;
886 long var41 /* : Int */;
887 val* var42 /* : String */;
888 val* var43 /* : String */;
889 val* var44 /* : nullable Object */;
890 var_name = p0;
891 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__model]))(self) /* model on <self:MModule>*/;
892 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var_name) /* get_mclasses_by_name on <var1:Model>*/;
893 var_cla = var2;
894 var3 = NULL;
895 if (var_cla == NULL) {
896 var4 = 1; /* is null */
897 } else {
898 var4 = 0; /* arg is null but recv is not */
899 }
900 if (var4){
901 if (varonce) {
902 var5 = varonce;
903 } else {
904 var6 = "Bool";
905 var7 = 4;
906 var8 = string__NativeString__to_s_with_length(var6, var7);
907 var5 = var8;
908 varonce = var5;
909 }
910 var9 = ((short int (*)(val*, val*))(var_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_name, var5) /* == on <var_name:String>*/;
911 if (var9){
912 var10 = NEW_model__MClass(&type_model__MClass);
913 var11 = 0;
914 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MModule>*/;
915 var13 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:MModule>*/;
916 ((void (*)(val*, val*, val*, long, val*, val*))(var10->class->vft[COLOR_model__MClass__init]))(var10, self, var_name, var11, var12, var13) /* init on <var10:MClass>*/;
917 CHECK_NEW_model__MClass(var10);
918 var_c = var10;
919 var14 = NEW_model__MClassDef(&type_model__MClassDef);
920 var15 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
921 var16 = NEW_location__Location(&type_location__Location);
922 var17 = NULL;
923 var18 = 0;
924 var19 = 0;
925 var20 = 0;
926 var21 = 0;
927 ((void (*)(val*, val*, long, long, long, long))(var16->class->vft[COLOR_location__Location__init]))(var16, var17, var18, var19, var20, var21) /* init on <var16:Location>*/;
928 CHECK_NEW_location__Location(var16);
929 var22 = NEW_array__Array(&type_array__Arraystring__String);
930 ((void (*)(val*))(var22->class->vft[COLOR_array__Array__init]))(var22) /* init on <var22:Array[String]>*/;
931 CHECK_NEW_array__Array(var22);
932 ((void (*)(val*, val*, val*, val*, val*))(var14->class->vft[COLOR_model__MClassDef__init]))(var14, self, var15, var16, var22) /* init on <var14:MClassDef>*/;
933 CHECK_NEW_model__MClassDef(var14);
934 var_cladef = var14;
935 var = var_c;
936 goto RET_LABEL;
937 } else {
938 }
939 if (varonce23) {
940 var24 = varonce23;
941 } else {
942 var25 = "Fatal Error: no primitive class ";
943 var26 = 32;
944 var27 = string__NativeString__to_s_with_length(var25, var26);
945 var24 = var27;
946 varonce23 = var24;
947 }
948 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
949 { /* var28 = array_instance Array[Object] */
950 var29 = 2;
951 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
952 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var24;
953 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_name;
954 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
955 CHECK_NEW_array__Array(var28);
956 }
957 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
958 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var31) /* print on <self:MModule>*/;
959 var32 = 1;
960 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var32) /* exit on <self:MModule>*/;
961 } else {
962 }
963 if (var_cla == NULL) {
964 fprintf(stderr, "Runtime error: %s", "Reciever is null");
965 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
966 exit(1);
967 } else {
968 var33 = ((long (*)(val*))(var_cla->class->vft[COLOR_abstract_collection__Collection__length]))(var_cla) /* length on <var_cla:nullable Array[MClass]>*/;
969 }
970 var34 = 1;
971 { /* Inline kernel#Int#== (var33,var34) */
972 var37 = var33 == var34;
973 var35 = var37;
974 goto RET_LABEL36;
975 RET_LABEL36:(void)0;
976 }
977 if (!var35) {
978 if (varonce38) {
979 var39 = varonce38;
980 } else {
981 var40 = ", ";
982 var41 = 2;
983 var42 = string__NativeString__to_s_with_length(var40, var41);
984 var39 = var42;
985 varonce38 = var39;
986 }
987 if (var_cla == NULL) {
988 fprintf(stderr, "Runtime error: %s", "Reciever is null");
989 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
990 exit(1);
991 } else {
992 var43 = ((val* (*)(val*, val*))(var_cla->class->vft[COLOR_string__Collection__join]))(var_cla, var39) /* join on <var_cla:nullable Array[MClass]>*/;
993 }
994 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var43) /* print on <self:MModule>*/;
995 fprintf(stderr, "Runtime error: %s", "Assert failed");
996 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
997 exit(1);
998 }
999 if (var_cla == NULL) {
1000 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1001 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 226);
1002 exit(1);
1003 } else {
1004 var44 = ((val* (*)(val*))(var_cla->class->vft[COLOR_abstract_collection__Collection__first]))(var_cla) /* first on <var_cla:nullable Array[MClass]>*/;
1005 }
1006 var = var44;
1007 goto RET_LABEL;
1008 RET_LABEL:;
1009 return var;
1010 }
1011 /* method model#MModule#get_primitive_class for (self: Object, String): MClass */
1012 val* VIRTUAL_model__MModule__get_primitive_class(val* self, val* p0) {
1013 val* var /* : MClass */;
1014 val* var1 /* : MClass */;
1015 var1 = model__MModule__get_primitive_class(self, p0);
1016 var = var1;
1017 RET_LABEL:;
1018 return var;
1019 }
1020 /* method model#MModule#try_get_primitive_method for (self: MModule, String, MClass): nullable MMethod */
1021 val* model__MModule__try_get_primitive_method(val* self, val* p0, val* p1) {
1022 val* var /* : nullable MMethod */;
1023 val* var_name /* var name: String */;
1024 val* var_recv /* var recv: MClass */;
1025 val* var1 /* : Model */;
1026 val* var2 /* : nullable Array[MProperty] */;
1027 val* var_props /* var props: nullable Array[MProperty] */;
1028 val* var3 /* : null */;
1029 short int var4 /* : Bool */;
1030 val* var5 /* : null */;
1031 val* var6 /* : null */;
1032 val* var_res /* var res: nullable MMethod */;
1033 val* var7 /* : Iterator[nullable Object] */;
1034 short int var8 /* : Bool */;
1035 val* var9 /* : nullable Object */;
1036 val* var_mprop /* var mprop: MProperty */;
1037 short int var10 /* : Bool */;
1038 int cltype;
1039 int idtype;
1040 val* var11 /* : MClassDef */;
1041 val* var_intro /* var intro: MClassDef */;
1042 val* var12 /* : Array[MClassDef] */;
1043 val* var13 /* : Iterator[nullable Object] */;
1044 short int var14 /* : Bool */;
1045 val* var15 /* : nullable Object */;
1046 val* var_mclassdef /* var mclassdef: MClassDef */;
1047 val* var16 /* : POSetElement[MModule] */;
1048 val* var17 /* : Collection[Object] */;
1049 val* var18 /* : MModule */;
1050 short int var19 /* : Bool */;
1051 short int var20 /* : Bool */;
1052 val* var21 /* : nullable POSetElement[MClassDef] */;
1053 val* var22 /* : Collection[Object] */;
1054 short int var23 /* : Bool */;
1055 short int var24 /* : Bool */;
1056 val* var25 /* : null */;
1057 short int var26 /* : Bool */;
1058 short int var27 /* : Bool */;
1059 static val* varonce;
1060 val* var28 /* : String */;
1061 char* var29 /* : NativeString */;
1062 long var30 /* : Int */;
1063 val* var31 /* : String */;
1064 static val* varonce32;
1065 val* var33 /* : String */;
1066 char* var34 /* : NativeString */;
1067 long var35 /* : Int */;
1068 val* var36 /* : String */;
1069 val* var37 /* : String */;
1070 static val* varonce38;
1071 val* var39 /* : String */;
1072 char* var40 /* : NativeString */;
1073 long var41 /* : Int */;
1074 val* var42 /* : String */;
1075 val* var43 /* : String */;
1076 val* var44 /* : Array[Object] */;
1077 long var45 /* : Int */;
1078 val* var46 /* : NativeArray[Object] */;
1079 val* var47 /* : String */;
1080 var_name = p0;
1081 var_recv = p1;
1082 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__model]))(self) /* model on <self:MModule>*/;
1083 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mproperties_by_name]))(var1, var_name) /* get_mproperties_by_name on <var1:Model>*/;
1084 var_props = var2;
1085 var3 = NULL;
1086 if (var_props == NULL) {
1087 var4 = 1; /* is null */
1088 } else {
1089 var4 = 0; /* arg is null but recv is not */
1090 }
1091 if (var4){
1092 var5 = NULL;
1093 var = var5;
1094 goto RET_LABEL;
1095 } else {
1096 }
1097 var6 = NULL;
1098 var_res = var6;
1099 var7 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:nullable Array[MProperty](Array[MProperty])>*/;
1100 for(;;) {
1101 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
1102 if(!var8) break;
1103 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
1104 var_mprop = var9;
1105 /* <var_mprop:MProperty> isa MMethod */
1106 cltype = type_model__MMethod.color;
1107 idtype = type_model__MMethod.id;
1108 if(cltype >= var_mprop->type->table_size) {
1109 var10 = 0;
1110 } else {
1111 var10 = var_mprop->type->type_table[cltype] == idtype;
1112 }
1113 if (!var10) {
1114 fprintf(stderr, "Runtime error: %s", "Assert failed");
1115 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 236);
1116 exit(1);
1117 }
1118 var11 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty(MMethod)>*/;
1119 var_intro = var11;
1120 var12 = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClass__mclassdefs]))(var_recv) /* mclassdefs on <var_recv:MClass>*/;
1121 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:Array[MClassDef]>*/;
1122 for(;;) {
1123 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
1124 if(!var14) break;
1125 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
1126 var_mclassdef = var15;
1127 var16 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
1128 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_poset__POSetElement__greaters]))(var16) /* greaters on <var16:POSetElement[MModule]>*/;
1129 var18 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
1130 var19 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__Collection__has]))(var17, var18) /* has on <var17:Collection[Object](Collection[MModule])>*/;
1131 var20 = !var19;
1132 if (var20){
1133 goto CONTINUE_label;
1134 } else {
1135 }
1136 var21 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
1137 if (var21 == NULL) {
1138 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1139 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 240);
1140 exit(1);
1141 } else {
1142 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_poset__POSetElement__greaters]))(var21) /* greaters on <var21:nullable POSetElement[MClassDef]>*/;
1143 }
1144 var23 = ((short int (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__Collection__has]))(var22, var_intro) /* has on <var22:Collection[Object](Collection[MClassDef])>*/;
1145 var24 = !var23;
1146 if (var24){
1147 goto CONTINUE_label;
1148 } else {
1149 }
1150 var25 = NULL;
1151 if (var_res == NULL) {
1152 var26 = 1; /* is null */
1153 } else {
1154 var26 = 0; /* arg is null but recv is not */
1155 }
1156 if (var26){
1157 var_res = var_mprop;
1158 } else {
1159 var27 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___33d_61d]))(var_res, var_mprop) /* != on <var_res:nullable MMethod(MMethod)>*/;
1160 if (var27){
1161 if (varonce) {
1162 var28 = varonce;
1163 } else {
1164 var29 = "Fatal Error: ambigous property name \'";
1165 var30 = 37;
1166 var31 = string__NativeString__to_s_with_length(var29, var30);
1167 var28 = var31;
1168 varonce = var28;
1169 }
1170 if (varonce32) {
1171 var33 = varonce32;
1172 } else {
1173 var34 = "\'; conflict between ";
1174 var35 = 20;
1175 var36 = string__NativeString__to_s_with_length(var34, var35);
1176 var33 = var36;
1177 varonce32 = var33;
1178 }
1179 var37 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:MProperty(MMethod)>*/;
1180 if (varonce38) {
1181 var39 = varonce38;
1182 } else {
1183 var40 = " and ";
1184 var41 = 5;
1185 var42 = string__NativeString__to_s_with_length(var40, var41);
1186 var39 = var42;
1187 varonce38 = var39;
1188 }
1189 var43 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__full_name]))(var_res) /* full_name on <var_res:nullable MMethod(MMethod)>*/;
1190 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
1191 { /* var44 = array_instance Array[Object] */
1192 var45 = 6;
1193 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
1194 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var28;
1195 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_name;
1196 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var33;
1197 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var37;
1198 ((struct instance_array__NativeArray*)var46)->values[4] = (val*) var39;
1199 ((struct instance_array__NativeArray*)var46)->values[5] = (val*) var43;
1200 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
1201 CHECK_NEW_array__Array(var44);
1202 }
1203 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
1204 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var47) /* print on <self:MModule>*/;
1205 fprintf(stderr, "Runtime error: %s", "Aborted");
1206 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 245);
1207 exit(1);
1208 } else {
1209 }
1210 }
1211 CONTINUE_label: (void)0;
1212 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
1213 }
1214 BREAK_label: (void)0;
1215 CONTINUE_label48: (void)0;
1216 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
1217 }
1218 BREAK_label48: (void)0;
1219 var = var_res;
1220 goto RET_LABEL;
1221 RET_LABEL:;
1222 return var;
1223 }
1224 /* method model#MModule#try_get_primitive_method for (self: Object, String, MClass): nullable MMethod */
1225 val* VIRTUAL_model__MModule__try_get_primitive_method(val* self, val* p0, val* p1) {
1226 val* var /* : nullable MMethod */;
1227 val* var1 /* : nullable MMethod */;
1228 var1 = model__MModule__try_get_primitive_method(self, p0, p1);
1229 var = var1;
1230 RET_LABEL:;
1231 return var;
1232 }
1233 /* method model#MClassDefSorter#mmodule for (self: MClassDefSorter): MModule */
1234 val* model__MClassDefSorter__mmodule(val* self) {
1235 val* var /* : MModule */;
1236 val* var1 /* : MModule */;
1237 var1 = self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val; /* @mmodule on <self:MClassDefSorter> */
1238 if (var1 == NULL) {
1239 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
1240 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 255);
1241 exit(1);
1242 }
1243 var = var1;
1244 RET_LABEL:;
1245 return var;
1246 }
1247 /* method model#MClassDefSorter#mmodule for (self: Object): MModule */
1248 val* VIRTUAL_model__MClassDefSorter__mmodule(val* self) {
1249 val* var /* : MModule */;
1250 val* var1 /* : MModule */;
1251 var1 = model__MClassDefSorter__mmodule(self);
1252 var = var1;
1253 RET_LABEL:;
1254 return var;
1255 }
1256 /* method model#MClassDefSorter#mmodule= for (self: MClassDefSorter, MModule) */
1257 void model__MClassDefSorter__mmodule_61d(val* self, val* p0) {
1258 self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MClassDefSorter> */
1259 RET_LABEL:;
1260 }
1261 /* method model#MClassDefSorter#mmodule= for (self: Object, MModule) */
1262 void VIRTUAL_model__MClassDefSorter__mmodule_61d(val* self, val* p0) {
1263 model__MClassDefSorter__mmodule_61d(self, p0);
1264 RET_LABEL:;
1265 }
1266 /* method model#MClassDefSorter#compare for (self: MClassDefSorter, MClassDef, MClassDef): Int */
1267 long model__MClassDefSorter__compare(val* self, val* p0, val* p1) {
1268 long var /* : Int */;
1269 short int var1 /* : Bool */;
1270 int cltype;
1271 int idtype;
1272 const char* var_class_name;
1273 short int var2 /* : Bool */;
1274 int cltype3;
1275 int idtype4;
1276 const char* var_class_name5;
1277 val* var_a /* var a: MClassDef */;
1278 val* var_b /* var b: MClassDef */;
1279 val* var6 /* : MClass */;
1280 val* var_ca /* var ca: MClass */;
1281 val* var7 /* : MClass */;
1282 val* var_cb /* var cb: MClass */;
1283 short int var8 /* : Bool */;
1284 val* var9 /* : MModule */;
1285 val* var10 /* : POSet[MClass] */;
1286 long var11 /* : Int */;
1287 val* var12 /* : MModule */;
1288 val* var13 /* : Model */;
1289 val* var14 /* : POSet[MClassDef] */;
1290 long var15 /* : Int */;
1291 /* Covariant cast for argument 0 (a) <p0:MClassDef> isa AbstractSorter#0 */
1292 /* <p0:MClassDef> isa AbstractSorter#0 */
1293 var1 = 1; /* easy <p0:MClassDef> isa AbstractSorter#0*/
1294 if (!var1) {
1295 var_class_name = p0 == NULL ? "null" : p0->type->name;
1296 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
1297 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 256);
1298 exit(1);
1299 }
1300 /* Covariant cast for argument 1 (b) <p1:MClassDef> isa AbstractSorter#0 */
1301 /* <p1:MClassDef> isa AbstractSorter#0 */
1302 var2 = 1; /* easy <p1:MClassDef> isa AbstractSorter#0*/
1303 if (!var2) {
1304 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1305 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name5);
1306 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 256);
1307 exit(1);
1308 }
1309 var_a = p0;
1310 var_b = p1;
1311 var6 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
1312 var_ca = var6;
1313 var7 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
1314 var_cb = var7;
1315 var8 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
1316 if (var8){
1317 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
1318 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var9) /* flatten_mclass_hierarchy on <var9:MModule>*/;
1319 var11 = ((long (*)(val*, val*, val*))(var10->class->vft[COLOR_sorter__AbstractSorter__compare]))(var10, var_ca, var_cb) /* compare on <var10:POSet[MClass]>*/;
1320 var = var11;
1321 goto RET_LABEL;
1322 } else {
1323 }
1324 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
1325 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model_base__MModule__model]))(var12) /* model on <var12:MModule>*/;
1326 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var13) /* mclassdef_hierarchy on <var13:Model>*/;
1327 var15 = ((long (*)(val*, val*, val*))(var14->class->vft[COLOR_sorter__AbstractSorter__compare]))(var14, var_a, var_b) /* compare on <var14:POSet[MClassDef]>*/;
1328 var = var15;
1329 goto RET_LABEL;
1330 RET_LABEL:;
1331 return var;
1332 }
1333 /* method model#MClassDefSorter#compare for (self: Object, nullable Object, nullable Object): Int */
1334 long VIRTUAL_model__MClassDefSorter__compare(val* self, val* p0, val* p1) {
1335 long var /* : Int */;
1336 long var1 /* : Int */;
1337 var1 = model__MClassDefSorter__compare(self, p0, p1);
1338 var = var1;
1339 RET_LABEL:;
1340 return var;
1341 }
1342 /* method model#MClassDefSorter#init for (self: MClassDefSorter, MModule) */
1343 void model__MClassDefSorter__init(val* self, val* p0) {
1344 self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MClassDefSorter> */
1345 RET_LABEL:;
1346 }
1347 /* method model#MClassDefSorter#init for (self: Object, MModule) */
1348 void VIRTUAL_model__MClassDefSorter__init(val* self, val* p0) {
1349 model__MClassDefSorter__init(self, p0);
1350 RET_LABEL:;
1351 }
1352 /* method model#MPropDefSorter#mmodule for (self: MPropDefSorter): MModule */
1353 val* model__MPropDefSorter__mmodule(val* self) {
1354 val* var /* : MModule */;
1355 val* var1 /* : MModule */;
1356 var1 = self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val; /* @mmodule on <self:MPropDefSorter> */
1357 if (var1 == NULL) {
1358 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
1359 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 267);
1360 exit(1);
1361 }
1362 var = var1;
1363 RET_LABEL:;
1364 return var;
1365 }
1366 /* method model#MPropDefSorter#mmodule for (self: Object): MModule */
1367 val* VIRTUAL_model__MPropDefSorter__mmodule(val* self) {
1368 val* var /* : MModule */;
1369 val* var1 /* : MModule */;
1370 var1 = model__MPropDefSorter__mmodule(self);
1371 var = var1;
1372 RET_LABEL:;
1373 return var;
1374 }
1375 /* method model#MPropDefSorter#mmodule= for (self: MPropDefSorter, MModule) */
1376 void model__MPropDefSorter__mmodule_61d(val* self, val* p0) {
1377 self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MPropDefSorter> */
1378 RET_LABEL:;
1379 }
1380 /* method model#MPropDefSorter#mmodule= for (self: Object, MModule) */
1381 void VIRTUAL_model__MPropDefSorter__mmodule_61d(val* self, val* p0) {
1382 model__MPropDefSorter__mmodule_61d(self, p0);
1383 RET_LABEL:;
1384 }
1385 /* method model#MPropDefSorter#compare for (self: MPropDefSorter, MPropDef, MPropDef): Int */
1386 long model__MPropDefSorter__compare(val* self, val* p0, val* p1) {
1387 long var /* : Int */;
1388 short int var1 /* : Bool */;
1389 int cltype;
1390 int idtype;
1391 const char* var_class_name;
1392 short int var2 /* : Bool */;
1393 int cltype3;
1394 int idtype4;
1395 const char* var_class_name5;
1396 val* var_pa /* var pa: MPropDef */;
1397 val* var_pb /* var pb: MPropDef */;
1398 val* var6 /* : MClassDef */;
1399 val* var_a /* var a: MClassDef */;
1400 val* var7 /* : MClassDef */;
1401 val* var_b /* var b: MClassDef */;
1402 val* var8 /* : MClass */;
1403 val* var_ca /* var ca: MClass */;
1404 val* var9 /* : MClass */;
1405 val* var_cb /* var cb: MClass */;
1406 short int var10 /* : Bool */;
1407 val* var11 /* : MModule */;
1408 val* var12 /* : POSet[MClass] */;
1409 long var13 /* : Int */;
1410 val* var14 /* : MModule */;
1411 val* var15 /* : Model */;
1412 val* var16 /* : POSet[MClassDef] */;
1413 long var17 /* : Int */;
1414 /* Covariant cast for argument 0 (pa) <p0:MPropDef> isa AbstractSorter#0 */
1415 /* <p0:MPropDef> isa AbstractSorter#0 */
1416 var1 = 1; /* easy <p0:MPropDef> isa AbstractSorter#0*/
1417 if (!var1) {
1418 var_class_name = p0 == NULL ? "null" : p0->type->name;
1419 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
1420 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 268);
1421 exit(1);
1422 }
1423 /* Covariant cast for argument 1 (pb) <p1:MPropDef> isa AbstractSorter#0 */
1424 /* <p1:MPropDef> isa AbstractSorter#0 */
1425 var2 = 1; /* easy <p1:MPropDef> isa AbstractSorter#0*/
1426 if (!var2) {
1427 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1428 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name5);
1429 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 268);
1430 exit(1);
1431 }
1432 var_pa = p0;
1433 var_pb = p1;
1434 var6 = ((val* (*)(val*))(var_pa->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pa) /* mclassdef on <var_pa:MPropDef>*/;
1435 var_a = var6;
1436 var7 = ((val* (*)(val*))(var_pb->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pb) /* mclassdef on <var_pb:MPropDef>*/;
1437 var_b = var7;
1438 var8 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
1439 var_ca = var8;
1440 var9 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
1441 var_cb = var9;
1442 var10 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
1443 if (var10){
1444 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
1445 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var11) /* flatten_mclass_hierarchy on <var11:MModule>*/;
1446 var13 = ((long (*)(val*, val*, val*))(var12->class->vft[COLOR_sorter__AbstractSorter__compare]))(var12, var_ca, var_cb) /* compare on <var12:POSet[MClass]>*/;
1447 var = var13;
1448 goto RET_LABEL;
1449 } else {
1450 }
1451 var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
1452 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model_base__MModule__model]))(var14) /* model on <var14:MModule>*/;
1453 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var15) /* mclassdef_hierarchy on <var15:Model>*/;
1454 var17 = ((long (*)(val*, val*, val*))(var16->class->vft[COLOR_sorter__AbstractSorter__compare]))(var16, var_a, var_b) /* compare on <var16:POSet[MClassDef]>*/;
1455 var = var17;
1456 goto RET_LABEL;
1457 RET_LABEL:;
1458 return var;
1459 }
1460 /* method model#MPropDefSorter#compare for (self: Object, nullable Object, nullable Object): Int */
1461 long VIRTUAL_model__MPropDefSorter__compare(val* self, val* p0, val* p1) {
1462 long var /* : Int */;
1463 long var1 /* : Int */;
1464 var1 = model__MPropDefSorter__compare(self, p0, p1);
1465 var = var1;
1466 RET_LABEL:;
1467 return var;
1468 }
1469 /* method model#MPropDefSorter#init for (self: MPropDefSorter, MModule) */
1470 void model__MPropDefSorter__init(val* self, val* p0) {
1471 self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MPropDefSorter> */
1472 RET_LABEL:;
1473 }
1474 /* method model#MPropDefSorter#init for (self: Object, MModule) */
1475 void VIRTUAL_model__MPropDefSorter__init(val* self, val* p0) {
1476 model__MPropDefSorter__init(self, p0);
1477 RET_LABEL:;
1478 }
1479 /* method model#MClass#intro_mmodule for (self: MClass): MModule */
1480 val* model__MClass__intro_mmodule(val* self) {
1481 val* var /* : MModule */;
1482 val* var1 /* : MModule */;
1483 var1 = self->attrs[COLOR_model__MClass___64dintro_mmodule].val; /* @intro_mmodule on <self:MClass> */
1484 if (var1 == NULL) {
1485 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mmodule");
1486 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 290);
1487 exit(1);
1488 }
1489 var = var1;
1490 RET_LABEL:;
1491 return var;
1492 }
1493 /* method model#MClass#intro_mmodule for (self: Object): MModule */
1494 val* VIRTUAL_model__MClass__intro_mmodule(val* self) {
1495 val* var /* : MModule */;
1496 val* var1 /* : MModule */;
1497 var1 = model__MClass__intro_mmodule(self);
1498 var = var1;
1499 RET_LABEL:;
1500 return var;
1501 }
1502 /* method model#MClass#intro_mmodule= for (self: MClass, MModule) */
1503 void model__MClass__intro_mmodule_61d(val* self, val* p0) {
1504 self->attrs[COLOR_model__MClass___64dintro_mmodule].val = p0; /* @intro_mmodule on <self:MClass> */
1505 RET_LABEL:;
1506 }
1507 /* method model#MClass#intro_mmodule= for (self: Object, MModule) */
1508 void VIRTUAL_model__MClass__intro_mmodule_61d(val* self, val* p0) {
1509 model__MClass__intro_mmodule_61d(self, p0);
1510 RET_LABEL:;
1511 }
1512 /* method model#MClass#name for (self: MClass): String */
1513 val* model__MClass__name(val* self) {
1514 val* var /* : String */;
1515 val* var1 /* : String */;
1516 var1 = self->attrs[COLOR_model__MClass___64dname].val; /* @name on <self:MClass> */
1517 if (var1 == NULL) {
1518 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
1519 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 295);
1520 exit(1);
1521 }
1522 var = var1;
1523 RET_LABEL:;
1524 return var;
1525 }
1526 /* method model#MClass#name for (self: Object): String */
1527 val* VIRTUAL_model__MClass__name(val* self) {
1528 val* var /* : String */;
1529 val* var1 /* : String */;
1530 var1 = model__MClass__name(self);
1531 var = var1;
1532 RET_LABEL:;
1533 return var;
1534 }
1535 /* method model#MClass#name= for (self: MClass, String) */
1536 void model__MClass__name_61d(val* self, val* p0) {
1537 self->attrs[COLOR_model__MClass___64dname].val = p0; /* @name on <self:MClass> */
1538 RET_LABEL:;
1539 }
1540 /* method model#MClass#name= for (self: Object, String) */
1541 void VIRTUAL_model__MClass__name_61d(val* self, val* p0) {
1542 model__MClass__name_61d(self, p0);
1543 RET_LABEL:;
1544 }
1545 /* method model#MClass#full_name for (self: MClass): String */
1546 val* model__MClass__full_name(val* self) {
1547 val* var /* : String */;
1548 val* var1 /* : Array[Object] */;
1549 long var2 /* : Int */;
1550 val* var_ /* var : Array[Object] */;
1551 static val* varonce;
1552 val* var3 /* : String */;
1553 char* var4 /* : NativeString */;
1554 long var5 /* : Int */;
1555 val* var6 /* : String */;
1556 val* var7 /* : MModule */;
1557 val* var8 /* : String */;
1558 static val* varonce9;
1559 val* var10 /* : String */;
1560 char* var11 /* : NativeString */;
1561 long var12 /* : Int */;
1562 val* var13 /* : String */;
1563 val* var14 /* : String */;
1564 static val* varonce15;
1565 val* var16 /* : String */;
1566 char* var17 /* : NativeString */;
1567 long var18 /* : Int */;
1568 val* var19 /* : String */;
1569 val* var20 /* : String */;
1570 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
1571 var2 = 5;
1572 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
1573 CHECK_NEW_array__Array(var1);
1574 var_ = var1;
1575 if (varonce) {
1576 var3 = varonce;
1577 } else {
1578 var4 = "";
1579 var5 = 0;
1580 var6 = string__NativeString__to_s_with_length(var4, var5);
1581 var3 = var6;
1582 varonce = var3;
1583 }
1584 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
1585 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__intro_mmodule]))(self) /* intro_mmodule on <self:MClass>*/;
1586 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model_base__MModule__full_name]))(var7) /* full_name on <var7:MModule>*/;
1587 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
1588 if (varonce9) {
1589 var10 = varonce9;
1590 } else {
1591 var11 = "::";
1592 var12 = 2;
1593 var13 = string__NativeString__to_s_with_length(var11, var12);
1594 var10 = var13;
1595 varonce9 = var10;
1596 }
1597 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1598 var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__name]))(self) /* name on <self:MClass>*/;
1599 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
1600 if (varonce15) {
1601 var16 = varonce15;
1602 } else {
1603 var17 = "";
1604 var18 = 0;
1605 var19 = string__NativeString__to_s_with_length(var17, var18);
1606 var16 = var19;
1607 varonce15 = var16;
1608 }
1609 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
1610 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1611 var = var20;
1612 goto RET_LABEL;
1613 RET_LABEL:;
1614 return var;
1615 }
1616 /* method model#MClass#full_name for (self: Object): String */
1617 val* VIRTUAL_model__MClass__full_name(val* self) {
1618 val* var /* : String */;
1619 val* var1 /* : String */;
1620 var1 = model__MClass__full_name(self);
1621 var = var1;
1622 RET_LABEL:;
1623 return var;
1624 }
1625 /* method model#MClass#arity for (self: MClass): Int */
1626 long model__MClass__arity(val* self) {
1627 long var /* : Int */;
1628 long var1 /* : Int */;
1629 var1 = self->attrs[COLOR_model__MClass___64darity].l; /* @arity on <self:MClass> */
1630 var = var1;
1631 RET_LABEL:;
1632 return var;
1633 }
1634 /* method model#MClass#arity for (self: Object): Int */
1635 long VIRTUAL_model__MClass__arity(val* self) {
1636 long var /* : Int */;
1637 long var1 /* : Int */;
1638 var1 = model__MClass__arity(self);
1639 var = var1;
1640 RET_LABEL:;
1641 return var;
1642 }
1643 /* method model#MClass#arity= for (self: MClass, Int) */
1644 void model__MClass__arity_61d(val* self, long p0) {
1645 self->attrs[COLOR_model__MClass___64darity].l = p0; /* @arity on <self:MClass> */
1646 RET_LABEL:;
1647 }
1648 /* method model#MClass#arity= for (self: Object, Int) */
1649 void VIRTUAL_model__MClass__arity_61d(val* self, long p0) {
1650 model__MClass__arity_61d(self, p0);
1651 RET_LABEL:;
1652 }
1653 /* method model#MClass#kind for (self: MClass): MClassKind */
1654 val* model__MClass__kind(val* self) {
1655 val* var /* : MClassKind */;
1656 val* var1 /* : MClassKind */;
1657 var1 = self->attrs[COLOR_model__MClass___64dkind].val; /* @kind on <self:MClass> */
1658 if (var1 == NULL) {
1659 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @kind");
1660 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 310);
1661 exit(1);
1662 }
1663 var = var1;
1664 RET_LABEL:;
1665 return var;
1666 }
1667 /* method model#MClass#kind for (self: Object): MClassKind */
1668 val* VIRTUAL_model__MClass__kind(val* self) {
1669 val* var /* : MClassKind */;
1670 val* var1 /* : MClassKind */;
1671 var1 = model__MClass__kind(self);
1672 var = var1;
1673 RET_LABEL:;
1674 return var;
1675 }
1676 /* method model#MClass#kind= for (self: MClass, MClassKind) */
1677 void model__MClass__kind_61d(val* self, val* p0) {
1678 self->attrs[COLOR_model__MClass___64dkind].val = p0; /* @kind on <self:MClass> */
1679 RET_LABEL:;
1680 }
1681 /* method model#MClass#kind= for (self: Object, MClassKind) */
1682 void VIRTUAL_model__MClass__kind_61d(val* self, val* p0) {
1683 model__MClass__kind_61d(self, p0);
1684 RET_LABEL:;
1685 }
1686 /* method model#MClass#visibility for (self: MClass): MVisibility */
1687 val* model__MClass__visibility(val* self) {
1688 val* var /* : MVisibility */;
1689 val* var1 /* : MVisibility */;
1690 var1 = self->attrs[COLOR_model__MClass___64dvisibility].val; /* @visibility on <self:MClass> */
1691 if (var1 == NULL) {
1692 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
1693 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 314);
1694 exit(1);
1695 }
1696 var = var1;
1697 RET_LABEL:;
1698 return var;
1699 }
1700 /* method model#MClass#visibility for (self: Object): MVisibility */
1701 val* VIRTUAL_model__MClass__visibility(val* self) {
1702 val* var /* : MVisibility */;
1703 val* var1 /* : MVisibility */;
1704 var1 = model__MClass__visibility(self);
1705 var = var1;
1706 RET_LABEL:;
1707 return var;
1708 }
1709 /* method model#MClass#visibility= for (self: MClass, MVisibility) */
1710 void model__MClass__visibility_61d(val* self, val* p0) {
1711 self->attrs[COLOR_model__MClass___64dvisibility].val = p0; /* @visibility on <self:MClass> */
1712 RET_LABEL:;
1713 }
1714 /* method model#MClass#visibility= for (self: Object, MVisibility) */
1715 void VIRTUAL_model__MClass__visibility_61d(val* self, val* p0) {
1716 model__MClass__visibility_61d(self, p0);
1717 RET_LABEL:;
1718 }
1719 /* method model#MClass#init for (self: MClass, MModule, String, Int, MClassKind, MVisibility) */
1720 void model__MClass__init(val* self, val* p0, val* p1, long p2, val* p3, val* p4) {
1721 val* var_intro_mmodule /* var intro_mmodule: MModule */;
1722 val* var_name /* var name: String */;
1723 long var_arity /* var arity: Int */;
1724 val* var_kind /* var kind: MClassKind */;
1725 val* var_visibility /* var visibility: MVisibility */;
1726 val* var /* : Array[MClass] */;
1727 val* var1 /* : Model */;
1728 val* var_model /* var model: Model */;
1729 val* var2 /* : MultiHashMap[String, MClass] */;
1730 val* var3 /* : Array[MClass] */;
1731 long var4 /* : Int */;
1732 short int var5 /* : Bool */;
1733 short int var7 /* : Bool */;
1734 int cltype;
1735 int idtype;
1736 const char* var_class_name;
1737 short int var8 /* : Bool */;
1738 val* var9 /* : Array[MParameterType] */;
1739 val* var_mparametertypes /* var mparametertypes: Array[MParameterType] */;
1740 val* var10 /* : Range[Int] */;
1741 long var11 /* : Int */;
1742 val* var12 /* : Discrete */;
1743 val* var13 /* : Discrete */;
1744 val* var14 /* : Iterator[nullable Object] */;
1745 short int var15 /* : Bool */;
1746 val* var16 /* : nullable Object */;
1747 long var_i /* var i: Int */;
1748 long var17 /* : Int */;
1749 val* var18 /* : MParameterType */;
1750 val* var_mparametertype /* var mparametertype: MParameterType */;
1751 val* var19 /* : MGenericType */;
1752 val* var_mclass_type /* var mclass_type: MGenericType */;
1753 val* var20 /* : Array[MGenericType] */;
1754 val* var21 /* : MClassType */;
1755 var_intro_mmodule = p0;
1756 var_name = p1;
1757 var_arity = p2;
1758 var_kind = p3;
1759 var_visibility = p4;
1760 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__intro_mmodule_61d]))(self, var_intro_mmodule) /* intro_mmodule= on <self:MClass>*/;
1761 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__name_61d]))(self, var_name) /* name= on <self:MClass>*/;
1762 ((void (*)(val*, long))(self->class->vft[COLOR_model__MClass__arity_61d]))(self, var_arity) /* arity= on <self:MClass>*/;
1763 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__kind_61d]))(self, var_kind) /* kind= on <self:MClass>*/;
1764 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__visibility_61d]))(self, var_visibility) /* visibility= on <self:MClass>*/;
1765 var = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_model__MModule__intro_mclasses]))(var_intro_mmodule) /* intro_mclasses on <var_intro_mmodule:MModule>*/;
1766 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MClass]>*/;
1767 var1 = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_model_base__MModule__model]))(var_intro_mmodule) /* model on <var_intro_mmodule:MModule>*/;
1768 var_model = var1;
1769 var2 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclasses_by_name]))(var_model) /* mclasses_by_name on <var_model:Model>*/;
1770 ((void (*)(val*, val*, val*))(var2->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var2, var_name, self) /* add_one on <var2:MultiHashMap[String, MClass]>*/;
1771 var3 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclasses]))(var_model) /* mclasses on <var_model:Model>*/;
1772 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, self) /* add on <var3:Array[MClass]>*/;
1773 var4 = 0;
1774 { /* Inline kernel#Int#> (var_arity,var4) */
1775 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1776 /* <var4:Int> isa OTHER */
1777 var7 = 1; /* easy <var4:Int> isa OTHER*/
1778 if (!var7) {
1779 var_class_name = type_kernel__Int.name;
1780 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1781 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1782 exit(1);
1783 }
1784 var8 = var_arity > var4;
1785 var5 = var8;
1786 goto RET_LABEL6;
1787 RET_LABEL6:(void)0;
1788 }
1789 if (var5){
1790 var9 = NEW_array__Array(&type_array__Arraymodel__MParameterType);
1791 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MParameterType]>*/;
1792 CHECK_NEW_array__Array(var9);
1793 var_mparametertypes = var9;
1794 var10 = NEW_range__Range(&type_range__Rangekernel__Int);
1795 var11 = 0;
1796 var12 = BOX_kernel__Int(var11); /* autobox from Int to Discrete */
1797 var13 = BOX_kernel__Int(var_arity); /* autobox from Int to Discrete */
1798 ((void (*)(val*, val*, val*))(var10->class->vft[COLOR_range__Range__without_last]))(var10, var12, var13) /* without_last on <var10:Range[Int]>*/;
1799 CHECK_NEW_range__Range(var10);
1800 var14 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Range[Int]>*/;
1801 for(;;) {
1802 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
1803 if(!var15) break;
1804 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
1805 var17 = ((struct instance_kernel__Int*)var16)->value; /* autounbox from nullable Object to Int */;
1806 var_i = var17;
1807 var18 = NEW_model__MParameterType(&type_model__MParameterType);
1808 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_model__MParameterType__init]))(var18, self, var_i) /* init on <var18:MParameterType>*/;
1809 CHECK_NEW_model__MParameterType(var18);
1810 var_mparametertype = var18;
1811 ((void (*)(val*, val*))(var_mparametertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparametertypes, var_mparametertype) /* add on <var_mparametertypes:Array[MParameterType]>*/;
1812 CONTINUE_label: (void)0;
1813 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
1814 }
1815 BREAK_label: (void)0;
1816 var19 = NEW_model__MGenericType(&type_model__MGenericType);
1817 ((void (*)(val*, val*, val*))(var19->class->vft[COLOR_model__MGenericType__init]))(var19, self, var_mparametertypes) /* init on <var19:MGenericType>*/;
1818 CHECK_NEW_model__MGenericType(var19);
1819 var_mclass_type = var19;
1820 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__mclass_type_61d]))(self, var_mclass_type) /* mclass_type= on <self:MClass>*/;
1821 var20 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
1822 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var20, var_mclass_type) /* add on <var20:Array[MGenericType]>*/;
1823 } else {
1824 var21 = NEW_model__MClassType(&type_model__MClassType);
1825 ((void (*)(val*, val*))(var21->class->vft[COLOR_model__MClassType__init]))(var21, self) /* init on <var21:MClassType>*/;
1826 CHECK_NEW_model__MClassType(var21);
1827 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__mclass_type_61d]))(self, var21) /* mclass_type= on <self:MClass>*/;
1828 }
1829 RET_LABEL:;
1830 }
1831 /* method model#MClass#init for (self: Object, MModule, String, Int, MClassKind, MVisibility) */
1832 void VIRTUAL_model__MClass__init(val* self, val* p0, val* p1, long p2, val* p3, val* p4) {
1833 model__MClass__init(self, p0, p1, p2, p3, p4);
1834 RET_LABEL:;
1835 }
1836 /* method model#MClass#mclassdefs for (self: MClass): Array[MClassDef] */
1837 val* model__MClass__mclassdefs(val* self) {
1838 val* var /* : Array[MClassDef] */;
1839 val* var1 /* : Array[MClassDef] */;
1840 var1 = self->attrs[COLOR_model__MClass___64dmclassdefs].val; /* @mclassdefs on <self:MClass> */
1841 if (var1 == NULL) {
1842 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdefs");
1843 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 345);
1844 exit(1);
1845 }
1846 var = var1;
1847 RET_LABEL:;
1848 return var;
1849 }
1850 /* method model#MClass#mclassdefs for (self: Object): Array[MClassDef] */
1851 val* VIRTUAL_model__MClass__mclassdefs(val* self) {
1852 val* var /* : Array[MClassDef] */;
1853 val* var1 /* : Array[MClassDef] */;
1854 var1 = model__MClass__mclassdefs(self);
1855 var = var1;
1856 RET_LABEL:;
1857 return var;
1858 }
1859 /* method model#MClass#mclassdefs= for (self: MClass, Array[MClassDef]) */
1860 void model__MClass__mclassdefs_61d(val* self, val* p0) {
1861 self->attrs[COLOR_model__MClass___64dmclassdefs].val = p0; /* @mclassdefs on <self:MClass> */
1862 RET_LABEL:;
1863 }
1864 /* method model#MClass#mclassdefs= for (self: Object, Array[MClassDef]) */
1865 void VIRTUAL_model__MClass__mclassdefs_61d(val* self, val* p0) {
1866 model__MClass__mclassdefs_61d(self, p0);
1867 RET_LABEL:;
1868 }
1869 /* method model#MClass#to_s for (self: MClass): String */
1870 val* model__MClass__to_s(val* self) {
1871 val* var /* : String */;
1872 val* var1 /* : String */;
1873 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__name]))(self) /* name on <self:MClass>*/;
1874 var = var1;
1875 goto RET_LABEL;
1876 RET_LABEL:;
1877 return var;
1878 }
1879 /* method model#MClass#to_s for (self: Object): String */
1880 val* VIRTUAL_model__MClass__to_s(val* self) {
1881 val* var /* : String */;
1882 val* var1 /* : String */;
1883 var1 = model__MClass__to_s(self);
1884 var = var1;
1885 RET_LABEL:;
1886 return var;
1887 }
1888 /* method model#MClass#intro for (self: MClass): MClassDef */
1889 val* model__MClass__intro(val* self) {
1890 val* var /* : MClassDef */;
1891 val* var1 /* : Array[MClassDef] */;
1892 short int var2 /* : Bool */;
1893 short int var3 /* : Bool */;
1894 val* var4 /* : Array[MClassDef] */;
1895 val* var5 /* : nullable Object */;
1896 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclassdefs]))(self) /* mclassdefs on <self:MClass>*/;
1897 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:Array[MClassDef]>*/;
1898 var3 = !var2;
1899 if (!var3) {
1900 fprintf(stderr, "Runtime error: %s", "Assert \'has_a_first_definition\' failed");
1901 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 357);
1902 exit(1);
1903 }
1904 var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclassdefs]))(self) /* mclassdefs on <self:MClass>*/;
1905 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__first]))(var4) /* first on <var4:Array[MClassDef]>*/;
1906 var = var5;
1907 goto RET_LABEL;
1908 RET_LABEL:;
1909 return var;
1910 }
1911 /* method model#MClass#intro for (self: Object): MClassDef */
1912 val* VIRTUAL_model__MClass__intro(val* self) {
1913 val* var /* : MClassDef */;
1914 val* var1 /* : MClassDef */;
1915 var1 = model__MClass__intro(self);
1916 var = var1;
1917 RET_LABEL:;
1918 return var;
1919 }
1920 /* method model#MClass#in_hierarchy for (self: MClass, MModule): POSetElement[MClass] */
1921 val* model__MClass__in_hierarchy(val* self, val* p0) {
1922 val* var /* : POSetElement[MClass] */;
1923 val* var_mmodule /* var mmodule: MModule */;
1924 val* var1 /* : POSet[MClass] */;
1925 val* var2 /* : POSetElement[Object] */;
1926 var_mmodule = p0;
1927 var1 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var_mmodule) /* flatten_mclass_hierarchy on <var_mmodule:MModule>*/;
1928 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_poset__POSet___91d_93d]))(var1, self) /* [] on <var1:POSet[MClass]>*/;
1929 var = var2;
1930 goto RET_LABEL;
1931 RET_LABEL:;
1932 return var;
1933 }
1934 /* method model#MClass#in_hierarchy for (self: Object, MModule): POSetElement[MClass] */
1935 val* VIRTUAL_model__MClass__in_hierarchy(val* self, val* p0) {
1936 val* var /* : POSetElement[MClass] */;
1937 val* var1 /* : POSetElement[MClass] */;
1938 var1 = model__MClass__in_hierarchy(self, p0);
1939 var = var1;
1940 RET_LABEL:;
1941 return var;
1942 }
1943 /* method model#MClass#mclass_type for (self: MClass): MClassType */
1944 val* model__MClass__mclass_type(val* self) {
1945 val* var /* : MClassType */;
1946 val* var1 /* : MClassType */;
1947 var1 = self->attrs[COLOR_model__MClass___64dmclass_type].val; /* @mclass_type on <self:MClass> */
1948 if (var1 == NULL) {
1949 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass_type");
1950 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 370);
1951 exit(1);
1952 }
1953 var = var1;
1954 RET_LABEL:;
1955 return var;
1956 }
1957 /* method model#MClass#mclass_type for (self: Object): MClassType */
1958 val* VIRTUAL_model__MClass__mclass_type(val* self) {
1959 val* var /* : MClassType */;
1960 val* var1 /* : MClassType */;
1961 var1 = model__MClass__mclass_type(self);
1962 var = var1;
1963 RET_LABEL:;
1964 return var;
1965 }
1966 /* method model#MClass#mclass_type= for (self: MClass, MClassType) */
1967 void model__MClass__mclass_type_61d(val* self, val* p0) {
1968 self->attrs[COLOR_model__MClass___64dmclass_type].val = p0; /* @mclass_type on <self:MClass> */
1969 RET_LABEL:;
1970 }
1971 /* method model#MClass#mclass_type= for (self: Object, MClassType) */
1972 void VIRTUAL_model__MClass__mclass_type_61d(val* self, val* p0) {
1973 model__MClass__mclass_type_61d(self, p0);
1974 RET_LABEL:;
1975 }
1976 /* method model#MClass#get_mtype for (self: MClass, Array[MType]): MClassType */
1977 val* model__MClass__get_mtype(val* self, val* p0) {
1978 val* var /* : MClassType */;
1979 val* var_mtype_arguments /* var mtype_arguments: Array[MType] */;
1980 long var1 /* : Int */;
1981 long var2 /* : Int */;
1982 short int var3 /* : Bool */;
1983 short int var5 /* : Bool */;
1984 long var6 /* : Int */;
1985 long var7 /* : Int */;
1986 short int var8 /* : Bool */;
1987 short int var10 /* : Bool */;
1988 val* var11 /* : MClassType */;
1989 val* var12 /* : Array[MGenericType] */;
1990 val* var13 /* : Iterator[nullable Object] */;
1991 short int var14 /* : Bool */;
1992 val* var15 /* : nullable Object */;
1993 val* var_t /* var t: MGenericType */;
1994 val* var16 /* : Array[MType] */;
1995 short int var17 /* : Bool */;
1996 val* var18 /* : MGenericType */;
1997 val* var_res /* var res: MGenericType */;
1998 val* var19 /* : Array[MGenericType] */;
1999 var_mtype_arguments = p0;
2000 var1 = ((long (*)(val*))(var_mtype_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_mtype_arguments) /* length on <var_mtype_arguments:Array[MType]>*/;
2001 var2 = ((long (*)(val*))(self->class->vft[COLOR_model__MClass__arity]))(self) /* arity on <self:MClass>*/;
2002 { /* Inline kernel#Int#== (var1,var2) */
2003 var5 = var1 == var2;
2004 var3 = var5;
2005 goto RET_LABEL4;
2006 RET_LABEL4:(void)0;
2007 }
2008 if (!var3) {
2009 fprintf(stderr, "Runtime error: %s", "Assert failed");
2010 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 393);
2011 exit(1);
2012 }
2013 var6 = ((long (*)(val*))(self->class->vft[COLOR_model__MClass__arity]))(self) /* arity on <self:MClass>*/;
2014 var7 = 0;
2015 { /* Inline kernel#Int#== (var6,var7) */
2016 var10 = var6 == var7;
2017 var8 = var10;
2018 goto RET_LABEL9;
2019 RET_LABEL9:(void)0;
2020 }
2021 if (var8){
2022 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclass_type]))(self) /* mclass_type on <self:MClass>*/;
2023 var = var11;
2024 goto RET_LABEL;
2025 } else {
2026 }
2027 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
2028 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:Array[MGenericType]>*/;
2029 for(;;) {
2030 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
2031 if(!var14) break;
2032 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
2033 var_t = var15;
2034 var16 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__arguments]))(var_t) /* arguments on <var_t:MGenericType>*/;
2035 var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_kernel__Object___61d_61d]))(var16, var_mtype_arguments) /* == on <var16:Array[MType]>*/;
2036 if (var17){
2037 var = var_t;
2038 goto RET_LABEL;
2039 } else {
2040 }
2041 CONTINUE_label: (void)0;
2042 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
2043 }
2044 BREAK_label: (void)0;
2045 var18 = NEW_model__MGenericType(&type_model__MGenericType);
2046 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_model__MGenericType__init]))(var18, self, var_mtype_arguments) /* init on <var18:MGenericType>*/;
2047 CHECK_NEW_model__MGenericType(var18);
2048 var_res = var18;
2049 var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
2050 ((void (*)(val*, val*))(var19->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var19, var_res) /* add on <var19:Array[MGenericType]>*/;
2051 var = var_res;
2052 goto RET_LABEL;
2053 RET_LABEL:;
2054 return var;
2055 }
2056 /* method model#MClass#get_mtype for (self: Object, Array[MType]): MClassType */
2057 val* VIRTUAL_model__MClass__get_mtype(val* self, val* p0) {
2058 val* var /* : MClassType */;
2059 val* var1 /* : MClassType */;
2060 var1 = model__MClass__get_mtype(self, p0);
2061 var = var1;
2062 RET_LABEL:;
2063 return var;
2064 }
2065 /* method model#MClass#get_mtype_cache for (self: MClass): Array[MGenericType] */
2066 val* model__MClass__get_mtype_cache(val* self) {
2067 val* var /* : Array[MGenericType] */;
2068 val* var1 /* : Array[MGenericType] */;
2069 var1 = self->attrs[COLOR_model__MClass___64dget_mtype_cache].val; /* @get_mtype_cache on <self:MClass> */
2070 if (var1 == NULL) {
2071 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @get_mtype_cache");
2072 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 405);
2073 exit(1);
2074 }
2075 var = var1;
2076 RET_LABEL:;
2077 return var;
2078 }
2079 /* method model#MClass#get_mtype_cache for (self: Object): Array[MGenericType] */
2080 val* VIRTUAL_model__MClass__get_mtype_cache(val* self) {
2081 val* var /* : Array[MGenericType] */;
2082 val* var1 /* : Array[MGenericType] */;
2083 var1 = model__MClass__get_mtype_cache(self);
2084 var = var1;
2085 RET_LABEL:;
2086 return var;
2087 }
2088 /* method model#MClass#get_mtype_cache= for (self: MClass, Array[MGenericType]) */
2089 void model__MClass__get_mtype_cache_61d(val* self, val* p0) {
2090 self->attrs[COLOR_model__MClass___64dget_mtype_cache].val = p0; /* @get_mtype_cache on <self:MClass> */
2091 RET_LABEL:;
2092 }
2093 /* method model#MClass#get_mtype_cache= for (self: Object, Array[MGenericType]) */
2094 void VIRTUAL_model__MClass__get_mtype_cache_61d(val* self, val* p0) {
2095 model__MClass__get_mtype_cache_61d(self, p0);
2096 RET_LABEL:;
2097 }
2098 /* method model#MClassDef#mmodule for (self: MClassDef): MModule */
2099 val* model__MClassDef__mmodule(val* self) {
2100 val* var /* : MModule */;
2101 val* var1 /* : MModule */;
2102 var1 = self->attrs[COLOR_model__MClassDef___64dmmodule].val; /* @mmodule on <self:MClassDef> */
2103 if (var1 == NULL) {
2104 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
2105 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 415);
2106 exit(1);
2107 }
2108 var = var1;
2109 RET_LABEL:;
2110 return var;
2111 }
2112 /* method model#MClassDef#mmodule for (self: Object): MModule */
2113 val* VIRTUAL_model__MClassDef__mmodule(val* self) {
2114 val* var /* : MModule */;
2115 val* var1 /* : MModule */;
2116 var1 = model__MClassDef__mmodule(self);
2117 var = var1;
2118 RET_LABEL:;
2119 return var;
2120 }
2121 /* method model#MClassDef#mmodule= for (self: MClassDef, MModule) */
2122 void model__MClassDef__mmodule_61d(val* self, val* p0) {
2123 self->attrs[COLOR_model__MClassDef___64dmmodule].val = p0; /* @mmodule on <self:MClassDef> */
2124 RET_LABEL:;
2125 }
2126 /* method model#MClassDef#mmodule= for (self: Object, MModule) */
2127 void VIRTUAL_model__MClassDef__mmodule_61d(val* self, val* p0) {
2128 model__MClassDef__mmodule_61d(self, p0);
2129 RET_LABEL:;
2130 }
2131 /* method model#MClassDef#mclass for (self: MClassDef): MClass */
2132 val* model__MClassDef__mclass(val* self) {
2133 val* var /* : MClass */;
2134 val* var1 /* : MClass */;
2135 var1 = self->attrs[COLOR_model__MClassDef___64dmclass].val; /* @mclass on <self:MClassDef> */
2136 if (var1 == NULL) {
2137 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
2138 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 418);
2139 exit(1);
2140 }
2141 var = var1;
2142 RET_LABEL:;
2143 return var;
2144 }
2145 /* method model#MClassDef#mclass for (self: Object): MClass */
2146 val* VIRTUAL_model__MClassDef__mclass(val* self) {
2147 val* var /* : MClass */;
2148 val* var1 /* : MClass */;
2149 var1 = model__MClassDef__mclass(self);
2150 var = var1;
2151 RET_LABEL:;
2152 return var;
2153 }
2154 /* method model#MClassDef#mclass= for (self: MClassDef, MClass) */
2155 void model__MClassDef__mclass_61d(val* self, val* p0) {
2156 self->attrs[COLOR_model__MClassDef___64dmclass].val = p0; /* @mclass on <self:MClassDef> */
2157 RET_LABEL:;
2158 }
2159 /* method model#MClassDef#mclass= for (self: Object, MClass) */
2160 void VIRTUAL_model__MClassDef__mclass_61d(val* self, val* p0) {
2161 model__MClassDef__mclass_61d(self, p0);
2162 RET_LABEL:;
2163 }
2164 /* method model#MClassDef#bound_mtype for (self: MClassDef): MClassType */
2165 val* model__MClassDef__bound_mtype(val* self) {
2166 val* var /* : MClassType */;
2167 val* var1 /* : MClassType */;
2168 var1 = self->attrs[COLOR_model__MClassDef___64dbound_mtype].val; /* @bound_mtype on <self:MClassDef> */
2169 if (var1 == NULL) {
2170 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @bound_mtype");
2171 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 421);
2172 exit(1);
2173 }
2174 var = var1;
2175 RET_LABEL:;
2176 return var;
2177 }
2178 /* method model#MClassDef#bound_mtype for (self: Object): MClassType */
2179 val* VIRTUAL_model__MClassDef__bound_mtype(val* self) {
2180 val* var /* : MClassType */;
2181 val* var1 /* : MClassType */;
2182 var1 = model__MClassDef__bound_mtype(self);
2183 var = var1;
2184 RET_LABEL:;
2185 return var;
2186 }
2187 /* method model#MClassDef#bound_mtype= for (self: MClassDef, MClassType) */
2188 void model__MClassDef__bound_mtype_61d(val* self, val* p0) {
2189 self->attrs[COLOR_model__MClassDef___64dbound_mtype].val = p0; /* @bound_mtype on <self:MClassDef> */
2190 RET_LABEL:;
2191 }
2192 /* method model#MClassDef#bound_mtype= for (self: Object, MClassType) */
2193 void VIRTUAL_model__MClassDef__bound_mtype_61d(val* self, val* p0) {
2194 model__MClassDef__bound_mtype_61d(self, p0);
2195 RET_LABEL:;
2196 }
2197 /* method model#MClassDef#parameter_names for (self: MClassDef): Array[String] */
2198 val* model__MClassDef__parameter_names(val* self) {
2199 val* var /* : Array[String] */;
2200 val* var1 /* : Array[String] */;
2201 var1 = self->attrs[COLOR_model__MClassDef___64dparameter_names].val; /* @parameter_names on <self:MClassDef> */
2202 if (var1 == NULL) {
2203 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @parameter_names");
2204 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 433);
2205 exit(1);
2206 }
2207 var = var1;
2208 RET_LABEL:;
2209 return var;
2210 }
2211 /* method model#MClassDef#parameter_names for (self: Object): Array[String] */
2212 val* VIRTUAL_model__MClassDef__parameter_names(val* self) {
2213 val* var /* : Array[String] */;
2214 val* var1 /* : Array[String] */;
2215 var1 = model__MClassDef__parameter_names(self);
2216 var = var1;
2217 RET_LABEL:;
2218 return var;
2219 }
2220 /* method model#MClassDef#parameter_names= for (self: MClassDef, Array[String]) */
2221 void model__MClassDef__parameter_names_61d(val* self, val* p0) {
2222 self->attrs[COLOR_model__MClassDef___64dparameter_names].val = p0; /* @parameter_names on <self:MClassDef> */
2223 RET_LABEL:;
2224 }
2225 /* method model#MClassDef#parameter_names= for (self: Object, Array[String]) */
2226 void VIRTUAL_model__MClassDef__parameter_names_61d(val* self, val* p0) {
2227 model__MClassDef__parameter_names_61d(self, p0);
2228 RET_LABEL:;
2229 }
2230 /* method model#MClassDef#location for (self: MClassDef): Location */
2231 val* model__MClassDef__location(val* self) {
2232 val* var /* : Location */;
2233 val* var1 /* : Location */;
2234 var1 = self->attrs[COLOR_model__MClassDef___64dlocation].val; /* @location on <self:MClassDef> */
2235 if (var1 == NULL) {
2236 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
2237 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 436);
2238 exit(1);
2239 }
2240 var = var1;
2241 RET_LABEL:;
2242 return var;
2243 }
2244 /* method model#MClassDef#location for (self: Object): Location */
2245 val* VIRTUAL_model__MClassDef__location(val* self) {
2246 val* var /* : Location */;
2247 val* var1 /* : Location */;
2248 var1 = model__MClassDef__location(self);
2249 var = var1;
2250 RET_LABEL:;
2251 return var;
2252 }
2253 /* method model#MClassDef#location= for (self: MClassDef, Location) */
2254 void model__MClassDef__location_61d(val* self, val* p0) {
2255 self->attrs[COLOR_model__MClassDef___64dlocation].val = p0; /* @location on <self:MClassDef> */
2256 RET_LABEL:;
2257 }
2258 /* method model#MClassDef#location= for (self: Object, Location) */
2259 void VIRTUAL_model__MClassDef__location_61d(val* self, val* p0) {
2260 model__MClassDef__location_61d(self, p0);
2261 RET_LABEL:;
2262 }
2263 /* method model#MClassDef#to_s for (self: MClassDef): String */
2264 val* model__MClassDef__to_s(val* self) {
2265 val* var /* : String */;
2266 val* var1 /* : String */;
2267 var1 = self->attrs[COLOR_model__MClassDef___64dto_s].val; /* @to_s on <self:MClassDef> */
2268 if (var1 == NULL) {
2269 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
2270 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 439);
2271 exit(1);
2272 }
2273 var = var1;
2274 RET_LABEL:;
2275 return var;
2276 }
2277 /* method model#MClassDef#to_s for (self: Object): String */
2278 val* VIRTUAL_model__MClassDef__to_s(val* self) {
2279 val* var /* : String */;
2280 val* var1 /* : String */;
2281 var1 = model__MClassDef__to_s(self);
2282 var = var1;
2283 RET_LABEL:;
2284 return var;
2285 }
2286 /* method model#MClassDef#to_s= for (self: MClassDef, String) */
2287 void model__MClassDef__to_s_61d(val* self, val* p0) {
2288 self->attrs[COLOR_model__MClassDef___64dto_s].val = p0; /* @to_s on <self:MClassDef> */
2289 RET_LABEL:;
2290 }
2291 /* method model#MClassDef#to_s= for (self: Object, String) */
2292 void VIRTUAL_model__MClassDef__to_s_61d(val* self, val* p0) {
2293 model__MClassDef__to_s_61d(self, p0);
2294 RET_LABEL:;
2295 }
2296 /* method model#MClassDef#init for (self: MClassDef, MModule, MClassType, Location, Array[String]) */
2297 void model__MClassDef__init(val* self, val* p0, val* p1, val* p2, val* p3) {
2298 val* var_mmodule /* var mmodule: MModule */;
2299 val* var_bound_mtype /* var bound_mtype: MClassType */;
2300 val* var_location /* var location: Location */;
2301 val* var_parameter_names /* var parameter_names: Array[String] */;
2302 val* var /* : MClass */;
2303 long var1 /* : Int */;
2304 long var2 /* : Int */;
2305 short int var3 /* : Bool */;
2306 short int var5 /* : Bool */;
2307 val* var6 /* : MClass */;
2308 val* var7 /* : Array[MClassDef] */;
2309 val* var8 /* : MClass */;
2310 val* var9 /* : Array[MClassDef] */;
2311 static val* varonce;
2312 val* var10 /* : String */;
2313 char* var11 /* : NativeString */;
2314 long var12 /* : Int */;
2315 val* var13 /* : String */;
2316 val* var14 /* : MClass */;
2317 val* var15 /* : Array[Object] */;
2318 long var16 /* : Int */;
2319 val* var17 /* : NativeArray[Object] */;
2320 val* var18 /* : String */;
2321 var_mmodule = p0;
2322 var_bound_mtype = p1;
2323 var_location = p2;
2324 var_parameter_names = p3;
2325 var = ((val* (*)(val*))(var_bound_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_bound_mtype) /* mclass on <var_bound_mtype:MClassType>*/;
2326 var1 = ((long (*)(val*))(var->class->vft[COLOR_model__MClass__arity]))(var) /* arity on <var:MClass>*/;
2327 var2 = ((long (*)(val*))(var_parameter_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_parameter_names) /* length on <var_parameter_names:Array[String]>*/;
2328 { /* Inline kernel#Int#== (var1,var2) */
2329 var5 = var1 == var2;
2330 var3 = var5;
2331 goto RET_LABEL4;
2332 RET_LABEL4:(void)0;
2333 }
2334 if (!var3) {
2335 fprintf(stderr, "Runtime error: %s", "Assert failed");
2336 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 445);
2337 exit(1);
2338 }
2339 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype_61d]))(self, var_bound_mtype) /* bound_mtype= on <self:MClassDef>*/;
2340 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:MClassDef>*/;
2341 var6 = ((val* (*)(val*))(var_bound_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_bound_mtype) /* mclass on <var_bound_mtype:MClassType>*/;
2342 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__mclass_61d]))(self, var6) /* mclass= on <self:MClassDef>*/;
2343 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__location_61d]))(self, var_location) /* location= on <self:MClassDef>*/;
2344 var7 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__mclassdefs]))(var_mmodule) /* mclassdefs on <var_mmodule:MModule>*/;
2345 ((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var7, self) /* add on <var7:Array[MClassDef]>*/;
2346 var8 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2347 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClass__mclassdefs]))(var8) /* mclassdefs on <var8:MClass>*/;
2348 ((void (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var9, self) /* add on <var9:Array[MClassDef]>*/;
2349 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__parameter_names_61d]))(self, var_parameter_names) /* parameter_names= on <self:MClassDef>*/;
2350 if (varonce) {
2351 var10 = varonce;
2352 } else {
2353 var11 = "#";
2354 var12 = 1;
2355 var13 = string__NativeString__to_s_with_length(var11, var12);
2356 var10 = var13;
2357 varonce = var10;
2358 }
2359 var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2360 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
2361 { /* var15 = array_instance Array[Object] */
2362 var16 = 3;
2363 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
2364 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var_mmodule;
2365 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var10;
2366 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var14;
2367 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
2368 CHECK_NEW_array__Array(var15);
2369 }
2370 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
2371 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__to_s_61d]))(self, var18) /* to_s= on <self:MClassDef>*/;
2372 RET_LABEL:;
2373 }
2374 /* method model#MClassDef#init for (self: Object, MModule, MClassType, Location, Array[String]) */
2375 void VIRTUAL_model__MClassDef__init(val* self, val* p0, val* p1, val* p2, val* p3) {
2376 model__MClassDef__init(self, p0, p1, p2, p3);
2377 RET_LABEL:;
2378 }
2379 /* method model#MClassDef#supertypes for (self: MClassDef): Array[MClassType] */
2380 val* model__MClassDef__supertypes(val* self) {
2381 val* var /* : Array[MClassType] */;
2382 val* var1 /* : Array[MClassType] */;
2383 var1 = self->attrs[COLOR_model__MClassDef___64dsupertypes].val; /* @supertypes on <self:MClassDef> */
2384 if (var1 == NULL) {
2385 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @supertypes");
2386 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 456);
2387 exit(1);
2388 }
2389 var = var1;
2390 RET_LABEL:;
2391 return var;
2392 }
2393 /* method model#MClassDef#supertypes for (self: Object): Array[MClassType] */
2394 val* VIRTUAL_model__MClassDef__supertypes(val* self) {
2395 val* var /* : Array[MClassType] */;
2396 val* var1 /* : Array[MClassType] */;
2397 var1 = model__MClassDef__supertypes(self);
2398 var = var1;
2399 RET_LABEL:;
2400 return var;
2401 }
2402 /* method model#MClassDef#supertypes= for (self: MClassDef, Array[MClassType]) */
2403 void model__MClassDef__supertypes_61d(val* self, val* p0) {
2404 self->attrs[COLOR_model__MClassDef___64dsupertypes].val = p0; /* @supertypes on <self:MClassDef> */
2405 RET_LABEL:;
2406 }
2407 /* method model#MClassDef#supertypes= for (self: Object, Array[MClassType]) */
2408 void VIRTUAL_model__MClassDef__supertypes_61d(val* self, val* p0) {
2409 model__MClassDef__supertypes_61d(self, p0);
2410 RET_LABEL:;
2411 }
2412 /* method model#MClassDef#set_supertypes for (self: MClassDef, Array[MClassType]) */
2413 void model__MClassDef__set_supertypes(val* self, val* p0) {
2414 val* var_supertypes /* var supertypes: Array[MClassType] */;
2415 val* var /* : nullable POSetElement[MClassDef] */;
2416 val* var1 /* : null */;
2417 short int var2 /* : Bool */;
2418 val* var3 /* : MModule */;
2419 val* var_mmodule /* var mmodule: MModule */;
2420 val* var4 /* : Model */;
2421 val* var_model /* var model: Model */;
2422 val* var5 /* : MClassType */;
2423 val* var_mtype /* var mtype: MClassType */;
2424 val* var6 /* : Iterator[nullable Object] */;
2425 short int var7 /* : Bool */;
2426 val* var8 /* : nullable Object */;
2427 val* var_supertype /* var supertype: MClassType */;
2428 val* var9 /* : Array[MClassType] */;
2429 val* var10 /* : POSet[MClassType] */;
2430 short int var11 /* : Bool */;
2431 val* var12 /* : MClass */;
2432 val* var13 /* : MModule */;
2433 short int var14 /* : Bool */;
2434 short int var_ /* var : Bool */;
2435 val* var15 /* : MClass */;
2436 val* var16 /* : MModule */;
2437 short int var17 /* : Bool */;
2438 val* var18 /* : POSet[MClassType] */;
2439 var_supertypes = p0;
2440 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__in_hierarchy]))(self) /* in_hierarchy on <self:MClassDef>*/;
2441 var1 = NULL;
2442 if (var == NULL) {
2443 var2 = 1; /* is null */
2444 } else {
2445 var2 = 0; /* arg is null but recv is not */
2446 }
2447 if (!var2) {
2448 fprintf(stderr, "Runtime error: %s", "Assert \'unique_invocation\' failed");
2449 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 466);
2450 exit(1);
2451 }
2452 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
2453 var_mmodule = var3;
2454 var4 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__model]))(var_mmodule) /* model on <var_mmodule:MModule>*/;
2455 var_model = var4;
2456 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype]))(self) /* bound_mtype on <self:MClassDef>*/;
2457 var_mtype = var5;
2458 var6 = ((val* (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supertypes) /* iterator on <var_supertypes:Array[MClassType]>*/;
2459 for(;;) {
2460 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
2461 if(!var7) break;
2462 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
2463 var_supertype = var8;
2464 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__supertypes]))(self) /* supertypes on <self:MClassDef>*/;
2465 ((void (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var9, var_supertype) /* add on <var9:Array[MClassType]>*/;
2466 var10 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__full_mtype_specialization_hierarchy]))(var_model) /* full_mtype_specialization_hierarchy on <var_model:Model>*/;
2467 ((void (*)(val*, val*, val*))(var10->class->vft[COLOR_poset__POSet__add_edge]))(var10, var_mtype, var_supertype) /* add_edge on <var10:POSet[MClassType]>*/;
2468 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2469 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClass__intro_mmodule]))(var12) /* intro_mmodule on <var12:MClass>*/;
2470 var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var_mmodule) /* == on <var13:MModule>*/;
2471 var_ = var14;
2472 if (var14){
2473 var15 = ((val* (*)(val*))(var_supertype->class->vft[COLOR_model__MClassType__mclass]))(var_supertype) /* mclass on <var_supertype:MClassType>*/;
2474 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__intro_mmodule]))(var15) /* intro_mmodule on <var15:MClass>*/;
2475 var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_kernel__Object___61d_61d]))(var16, var_mmodule) /* == on <var16:MModule>*/;
2476 var11 = var17;
2477 } else {
2478 var11 = var_;
2479 }
2480 if (var11){
2481 var18 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__intro_mtype_specialization_hierarchy]))(var_model) /* intro_mtype_specialization_hierarchy on <var_model:Model>*/;
2482 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_poset__POSet__add_edge]))(var18, var_mtype, var_supertype) /* add_edge on <var18:POSet[MClassType]>*/;
2483 } else {
2484 }
2485 CONTINUE_label: (void)0;
2486 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
2487 }
2488 BREAK_label: (void)0;
2489 RET_LABEL:;
2490 }
2491 /* method model#MClassDef#set_supertypes for (self: Object, Array[MClassType]) */
2492 void VIRTUAL_model__MClassDef__set_supertypes(val* self, val* p0) {
2493 model__MClassDef__set_supertypes(self, p0);
2494 RET_LABEL:;
2495 }
2496 /* method model#MClassDef#add_in_hierarchy for (self: MClassDef) */
2497 void model__MClassDef__add_in_hierarchy(val* self) {
2498 val* var /* : nullable POSetElement[MClassDef] */;
2499 val* var1 /* : null */;
2500 short int var2 /* : Bool */;
2501 val* var3 /* : MModule */;
2502 val* var4 /* : Model */;
2503 val* var_model /* var model: Model */;
2504 val* var5 /* : POSet[MClassDef] */;
2505 val* var6 /* : POSetElement[Object] */;
2506 val* var_res /* var res: POSetElement[MClassDef] */;
2507 val* var7 /* : MClassType */;
2508 val* var_mtype /* var mtype: MClassType */;
2509 val* var8 /* : MModule */;
2510 val* var9 /* : Set[MClassDef] */;
2511 val* var10 /* : Iterator[nullable Object] */;
2512 short int var11 /* : Bool */;
2513 val* var12 /* : nullable Object */;
2514 val* var_mclassdef /* var mclassdef: MClassDef */;
2515 val* var13 /* : POSet[Object] */;
2516 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__in_hierarchy]))(self) /* in_hierarchy on <self:MClassDef>*/;
2517 var1 = NULL;
2518 if (var == NULL) {
2519 var2 = 1; /* is null */
2520 } else {
2521 var2 = 0; /* arg is null but recv is not */
2522 }
2523 if (!var2) {
2524 fprintf(stderr, "Runtime error: %s", "Assert \'unique_invocation\' failed");
2525 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 491);
2526 exit(1);
2527 }
2528 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
2529 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model_base__MModule__model]))(var3) /* model on <var3:MModule>*/;
2530 var_model = var4;
2531 var5 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var_model) /* mclassdef_hierarchy on <var_model:Model>*/;
2532 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_poset__POSet__add_node]))(var5, self) /* add_node on <var5:POSet[MClassDef]>*/;
2533 var_res = var6;
2534 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__in_hierarchy_61d]))(self, var_res) /* in_hierarchy= on <self:MClassDef>*/;
2535 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype]))(self) /* bound_mtype on <self:MClassDef>*/;
2536 var_mtype = var7;
2537 var8 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
2538 var9 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var8) /* collect_mclassdefs on <var_mtype:MClassType>*/;
2539 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Set[MClassDef]>*/;
2540 for(;;) {
2541 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
2542 if(!var11) break;
2543 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
2544 var_mclassdef = var12;
2545 var13 = ((val* (*)(val*))(var_res->class->vft[COLOR_poset__POSetElement__poset]))(var_res) /* poset on <var_res:POSetElement[MClassDef]>*/;
2546 ((void (*)(val*, val*, val*))(var13->class->vft[COLOR_poset__POSet__add_edge]))(var13, self, var_mclassdef) /* add_edge on <var13:POSet[Object](POSet[MClassDef])>*/;
2547 CONTINUE_label: (void)0;
2548 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
2549 }
2550 BREAK_label: (void)0;
2551 RET_LABEL:;
2552 }
2553 /* method model#MClassDef#add_in_hierarchy for (self: Object) */
2554 void VIRTUAL_model__MClassDef__add_in_hierarchy(val* self) {
2555 model__MClassDef__add_in_hierarchy(self);
2556 RET_LABEL:;
2557 }
2558 /* method model#MClassDef#in_hierarchy for (self: MClassDef): nullable POSetElement[MClassDef] */
2559 val* model__MClassDef__in_hierarchy(val* self) {
2560 val* var /* : nullable POSetElement[MClassDef] */;
2561 val* var1 /* : nullable POSetElement[MClassDef] */;
2562 var1 = self->attrs[COLOR_model__MClassDef___64din_hierarchy].val; /* @in_hierarchy on <self:MClassDef> */
2563 var = var1;
2564 RET_LABEL:;
2565 return var;
2566 }
2567 /* method model#MClassDef#in_hierarchy for (self: Object): nullable POSetElement[MClassDef] */
2568 val* VIRTUAL_model__MClassDef__in_hierarchy(val* self) {
2569 val* var /* : nullable POSetElement[MClassDef] */;
2570 val* var1 /* : nullable POSetElement[MClassDef] */;
2571 var1 = model__MClassDef__in_hierarchy(self);
2572 var = var1;
2573 RET_LABEL:;
2574 return var;
2575 }
2576 /* method model#MClassDef#in_hierarchy= for (self: MClassDef, nullable POSetElement[MClassDef]) */
2577 void model__MClassDef__in_hierarchy_61d(val* self, val* p0) {
2578 self->attrs[COLOR_model__MClassDef___64din_hierarchy].val = p0; /* @in_hierarchy on <self:MClassDef> */
2579 RET_LABEL:;
2580 }
2581 /* method model#MClassDef#in_hierarchy= for (self: Object, nullable POSetElement[MClassDef]) */
2582 void VIRTUAL_model__MClassDef__in_hierarchy_61d(val* self, val* p0) {
2583 model__MClassDef__in_hierarchy_61d(self, p0);
2584 RET_LABEL:;
2585 }
2586 /* method model#MClassDef#is_intro for (self: MClassDef): Bool */
2587 short int model__MClassDef__is_intro(val* self) {
2588 short int var /* : Bool */;
2589 val* var1 /* : MClass */;
2590 val* var2 /* : MClassDef */;
2591 short int var3 /* : Bool */;
2592 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2593 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro]))(var1) /* intro on <var1:MClass>*/;
2594 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, self) /* == on <var2:MClassDef>*/;
2595 var = var3;
2596 goto RET_LABEL;
2597 RET_LABEL:;
2598 return var;
2599 }
2600 /* method model#MClassDef#is_intro for (self: Object): Bool */
2601 short int VIRTUAL_model__MClassDef__is_intro(val* self) {
2602 short int var /* : Bool */;
2603 short int var1 /* : Bool */;
2604 var1 = model__MClassDef__is_intro(self);
2605 var = var1;
2606 RET_LABEL:;
2607 return var;
2608 }
2609 /* method model#MClassDef#intro_mproperties for (self: MClassDef): Array[MProperty] */
2610 val* model__MClassDef__intro_mproperties(val* self) {
2611 val* var /* : Array[MProperty] */;
2612 val* var1 /* : Array[MProperty] */;
2613 var1 = self->attrs[COLOR_model__MClassDef___64dintro_mproperties].val; /* @intro_mproperties on <self:MClassDef> */
2614 if (var1 == NULL) {
2615 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mproperties");
2616 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 510);
2617 exit(1);
2618 }
2619 var = var1;
2620 RET_LABEL:;
2621 return var;
2622 }
2623 /* method model#MClassDef#intro_mproperties for (self: Object): Array[MProperty] */
2624 val* VIRTUAL_model__MClassDef__intro_mproperties(val* self) {
2625 val* var /* : Array[MProperty] */;
2626 val* var1 /* : Array[MProperty] */;
2627 var1 = model__MClassDef__intro_mproperties(self);
2628 var = var1;
2629 RET_LABEL:;
2630 return var;
2631 }
2632 /* method model#MClassDef#intro_mproperties= for (self: MClassDef, Array[MProperty]) */
2633 void model__MClassDef__intro_mproperties_61d(val* self, val* p0) {
2634 self->attrs[COLOR_model__MClassDef___64dintro_mproperties].val = p0; /* @intro_mproperties on <self:MClassDef> */
2635 RET_LABEL:;
2636 }
2637 /* method model#MClassDef#intro_mproperties= for (self: Object, Array[MProperty]) */
2638 void VIRTUAL_model__MClassDef__intro_mproperties_61d(val* self, val* p0) {
2639 model__MClassDef__intro_mproperties_61d(self, p0);
2640 RET_LABEL:;
2641 }
2642 /* method model#MClassDef#mpropdefs for (self: MClassDef): Array[MPropDef] */
2643 val* model__MClassDef__mpropdefs(val* self) {
2644 val* var /* : Array[MPropDef] */;
2645 val* var1 /* : Array[MPropDef] */;
2646 var1 = self->attrs[COLOR_model__MClassDef___64dmpropdefs].val; /* @mpropdefs on <self:MClassDef> */
2647 if (var1 == NULL) {
2648 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
2649 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 513);
2650 exit(1);
2651 }
2652 var = var1;
2653 RET_LABEL:;
2654 return var;
2655 }
2656 /* method model#MClassDef#mpropdefs for (self: Object): Array[MPropDef] */
2657 val* VIRTUAL_model__MClassDef__mpropdefs(val* self) {
2658 val* var /* : Array[MPropDef] */;
2659 val* var1 /* : Array[MPropDef] */;
2660 var1 = model__MClassDef__mpropdefs(self);
2661 var = var1;
2662 RET_LABEL:;
2663 return var;
2664 }
2665 /* method model#MClassDef#mpropdefs= for (self: MClassDef, Array[MPropDef]) */
2666 void model__MClassDef__mpropdefs_61d(val* self, val* p0) {
2667 self->attrs[COLOR_model__MClassDef___64dmpropdefs].val = p0; /* @mpropdefs on <self:MClassDef> */
2668 RET_LABEL:;
2669 }
2670 /* method model#MClassDef#mpropdefs= for (self: Object, Array[MPropDef]) */
2671 void VIRTUAL_model__MClassDef__mpropdefs_61d(val* self, val* p0) {
2672 model__MClassDef__mpropdefs_61d(self, p0);
2673 RET_LABEL:;
2674 }
2675 /* method model#MType#model for (self: MType): Model */
2676 val* model__MType__model(val* self) {
2677 val* var /* : Model */;
2678 const char* var_class_name;
2679 var_class_name = self == NULL ? "null" : self->type->name;
2680 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "model", var_class_name);
2681 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 546);
2682 exit(1);
2683 RET_LABEL:;
2684 return var;
2685 }
2686 /* method model#MType#model for (self: Object): Model */
2687 val* VIRTUAL_model__MType__model(val* self) {
2688 val* var /* : Model */;
2689 val* var1 /* : Model */;
2690 var1 = model__MType__model(self);
2691 var = var1;
2692 RET_LABEL:;
2693 return var;
2694 }
2695 /* method model#MType#is_subtype for (self: MType, MModule, nullable MClassType, MType): Bool */
2696 short int model__MType__is_subtype(val* self, val* p0, val* p1, val* p2) {
2697 short int var /* : Bool */;
2698 val* var_mmodule /* var mmodule: MModule */;
2699 val* var_anchor /* var anchor: nullable MClassType */;
2700 val* var_sup /* var sup: MType */;
2701 val* var_sub /* var sub: MType */;
2702 short int var1 /* : Bool */;
2703 short int var2 /* : Bool */;
2704 val* var3 /* : null */;
2705 short int var4 /* : Bool */;
2706 short int var5 /* : Bool */;
2707 short int var6 /* : Bool */;
2708 short int var7 /* : Bool */;
2709 short int var8 /* : Bool */;
2710 val* var9 /* : null */;
2711 short int var10 /* : Bool */;
2712 val* var11 /* : null */;
2713 short int var12 /* : Bool */;
2714 short int var13 /* : Bool */;
2715 short int var14 /* : Bool */;
2716 int cltype;
2717 int idtype;
2718 short int var_ /* var : Bool */;
2719 short int var15 /* : Bool */;
2720 int cltype16;
2721 int idtype17;
2722 val* var18 /* : null */;
2723 short int var19 /* : Bool */;
2724 val* var20 /* : MClass */;
2725 val* var21 /* : MClassType */;
2726 short int var22 /* : Bool */;
2727 val* var23 /* : MType */;
2728 short int var24 /* : Bool */;
2729 short int var25 /* : Bool */;
2730 int cltype26;
2731 int idtype27;
2732 short int var_28 /* var : Bool */;
2733 short int var29 /* : Bool */;
2734 int cltype30;
2735 int idtype31;
2736 val* var32 /* : null */;
2737 short int var33 /* : Bool */;
2738 val* var34 /* : MClass */;
2739 val* var35 /* : MClassType */;
2740 short int var36 /* : Bool */;
2741 val* var37 /* : MType */;
2742 short int var38 /* : Bool */;
2743 short int var_sup_accept_null /* var sup_accept_null: Bool */;
2744 short int var39 /* : Bool */;
2745 int cltype40;
2746 int idtype41;
2747 short int var42 /* : Bool */;
2748 val* var43 /* : MType */;
2749 short int var44 /* : Bool */;
2750 int cltype45;
2751 int idtype46;
2752 short int var47 /* : Bool */;
2753 short int var48 /* : Bool */;
2754 int cltype49;
2755 int idtype50;
2756 short int var51 /* : Bool */;
2757 short int var52 /* : Bool */;
2758 val* var53 /* : MType */;
2759 short int var54 /* : Bool */;
2760 int cltype55;
2761 int idtype56;
2762 short int var57 /* : Bool */;
2763 short int var58 /* : Bool */;
2764 int cltype59;
2765 int idtype60;
2766 short int var_61 /* var : Bool */;
2767 short int var62 /* : Bool */;
2768 int cltype63;
2769 int idtype64;
2770 short int var65 /* : Bool */;
2771 short int var66 /* : Bool */;
2772 short int var67 /* : Bool */;
2773 int cltype68;
2774 int idtype69;
2775 short int var_70 /* var : Bool */;
2776 short int var71 /* : Bool */;
2777 int cltype72;
2778 int idtype73;
2779 val* var74 /* : null */;
2780 short int var75 /* : Bool */;
2781 val* var76 /* : MType */;
2782 short int var77 /* : Bool */;
2783 int cltype78;
2784 int idtype79;
2785 short int var80 /* : Bool */;
2786 short int var81 /* : Bool */;
2787 val* var82 /* : MType */;
2788 short int var83 /* : Bool */;
2789 int cltype84;
2790 int idtype85;
2791 short int var86 /* : Bool */;
2792 int cltype87;
2793 int idtype88;
2794 short int var89 /* : Bool */;
2795 int cltype90;
2796 int idtype91;
2797 short int var92 /* : Bool */;
2798 short int var93 /* : Bool */;
2799 int cltype94;
2800 int idtype95;
2801 short int var96 /* : Bool */;
2802 short int var97 /* : Bool */;
2803 val* var98 /* : null */;
2804 short int var99 /* : Bool */;
2805 val* var100 /* : MType */;
2806 val* var_resolved_sub /* var resolved_sub: MClassType */;
2807 val* var101 /* : Set[MClass] */;
2808 val* var102 /* : MClass */;
2809 short int var103 /* : Bool */;
2810 short int var_res /* var res: Bool */;
2811 short int var104 /* : Bool */;
2812 short int var105 /* : Bool */;
2813 short int var107 /* : Bool */;
2814 short int var108 /* : Bool */;
2815 short int var109 /* : Bool */;
2816 int cltype110;
2817 int idtype111;
2818 short int var112 /* : Bool */;
2819 short int var113 /* : Bool */;
2820 val* var114 /* : MClass */;
2821 val* var115 /* : MClassType */;
2822 val* var_sub2 /* var sub2: MClassType */;
2823 val* var116 /* : MClass */;
2824 val* var117 /* : MClass */;
2825 short int var118 /* : Bool */;
2826 val* var119 /* : Range[Int] */;
2827 long var120 /* : Int */;
2828 val* var121 /* : MClass */;
2829 long var122 /* : Int */;
2830 val* var123 /* : Discrete */;
2831 val* var124 /* : Discrete */;
2832 val* var125 /* : Iterator[nullable Object] */;
2833 short int var126 /* : Bool */;
2834 val* var127 /* : nullable Object */;
2835 long var_i /* var i: Int */;
2836 long var128 /* : Int */;
2837 val* var129 /* : Array[MType] */;
2838 val* var130 /* : nullable Object */;
2839 val* var_sub_arg /* var sub_arg: MType */;
2840 val* var131 /* : Array[MType] */;
2841 val* var132 /* : nullable Object */;
2842 val* var_sup_arg /* var sup_arg: MType */;
2843 short int var133 /* : Bool */;
2844 short int var134 /* : Bool */;
2845 short int var135 /* : Bool */;
2846 short int var137 /* : Bool */;
2847 short int var138 /* : Bool */;
2848 short int var139 /* : Bool */;
2849 var_mmodule = p0;
2850 var_anchor = p1;
2851 var_sup = p2;
2852 var_sub = self;
2853 var1 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType>*/;
2854 if (var1){
2855 var2 = 1;
2856 var = var2;
2857 goto RET_LABEL;
2858 } else {
2859 }
2860 var3 = NULL;
2861 if (var_anchor == NULL) {
2862 var4 = 1; /* is null */
2863 } else {
2864 var4 = 0; /* arg is null but recv is not */
2865 }
2866 if (var4){
2867 var5 = ((short int (*)(val*))(var_sub->class->vft[COLOR_model__MType__need_anchor]))(var_sub) /* need_anchor on <var_sub:MType>*/;
2868 var6 = !var5;
2869 if (!var6) {
2870 fprintf(stderr, "Runtime error: %s", "Assert failed");
2871 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 559);
2872 exit(1);
2873 }
2874 var7 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:MType>*/;
2875 var8 = !var7;
2876 if (!var8) {
2877 fprintf(stderr, "Runtime error: %s", "Assert failed");
2878 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 560);
2879 exit(1);
2880 }
2881 } else {
2882 var9 = NULL;
2883 var10 = ((short int (*)(val*, val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__can_resolve_for]))(var_sub, var_anchor, var9, var_mmodule) /* can_resolve_for on <var_sub:MType>*/;
2884 if (!var10) {
2885 fprintf(stderr, "Runtime error: %s", "Assert failed");
2886 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 562);
2887 exit(1);
2888 }
2889 var11 = NULL;
2890 var12 = ((short int (*)(val*, val*, val*, val*))(var_sup->class->vft[COLOR_model__MType__can_resolve_for]))(var_sup, var_anchor, var11, var_mmodule) /* can_resolve_for on <var_sup:MType>*/;
2891 if (!var12) {
2892 fprintf(stderr, "Runtime error: %s", "Assert failed");
2893 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 563);
2894 exit(1);
2895 }
2896 }
2897 /* <var_sub:MType> isa MParameterType */
2898 cltype = type_model__MParameterType.color;
2899 idtype = type_model__MParameterType.id;
2900 if(cltype >= var_sub->type->table_size) {
2901 var14 = 0;
2902 } else {
2903 var14 = var_sub->type->type_table[cltype] == idtype;
2904 }
2905 var_ = var14;
2906 if (var14){
2907 var13 = var_;
2908 } else {
2909 /* <var_sub:MType> isa MVirtualType */
2910 cltype16 = type_model__MVirtualType.color;
2911 idtype17 = type_model__MVirtualType.id;
2912 if(cltype16 >= var_sub->type->table_size) {
2913 var15 = 0;
2914 } else {
2915 var15 = var_sub->type->type_table[cltype16] == idtype17;
2916 }
2917 var13 = var15;
2918 }
2919 if (var13){
2920 var18 = NULL;
2921 if (var_anchor == NULL) {
2922 var19 = 0; /* is null */
2923 } else {
2924 var19 = 1; /* arg is null and recv is not */
2925 }
2926 if (!var19) {
2927 fprintf(stderr, "Runtime error: %s", "Assert failed");
2928 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 570);
2929 exit(1);
2930 }
2931 var20 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
2932 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClass__mclass_type]))(var20) /* mclass_type on <var20:MClass>*/;
2933 var22 = 0;
2934 var23 = ((val* (*)(val*, val*, val*, val*, short int))(var_sub->class->vft[COLOR_model__MType__resolve_for]))(var_sub, var21, var_anchor, var_mmodule, var22) /* resolve_for on <var_sub:MType>*/;
2935 var_sub = var23;
2936 } else {
2937 }
2938 /* <var_sup:MType> isa MParameterType */
2939 cltype26 = type_model__MParameterType.color;
2940 idtype27 = type_model__MParameterType.id;
2941 if(cltype26 >= var_sup->type->table_size) {
2942 var25 = 0;
2943 } else {
2944 var25 = var_sup->type->type_table[cltype26] == idtype27;
2945 }
2946 var_28 = var25;
2947 if (var25){
2948 var24 = var_28;
2949 } else {
2950 /* <var_sup:MType> isa MVirtualType */
2951 cltype30 = type_model__MVirtualType.color;
2952 idtype31 = type_model__MVirtualType.id;
2953 if(cltype30 >= var_sup->type->table_size) {
2954 var29 = 0;
2955 } else {
2956 var29 = var_sup->type->type_table[cltype30] == idtype31;
2957 }
2958 var24 = var29;
2959 }
2960 if (var24){
2961 var32 = NULL;
2962 if (var_anchor == NULL) {
2963 var33 = 0; /* is null */
2964 } else {
2965 var33 = 1; /* arg is null and recv is not */
2966 }
2967 if (!var33) {
2968 fprintf(stderr, "Runtime error: %s", "Assert failed");
2969 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 574);
2970 exit(1);
2971 }
2972 var34 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
2973 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_model__MClass__mclass_type]))(var34) /* mclass_type on <var34:MClass>*/;
2974 var36 = 0;
2975 var37 = ((val* (*)(val*, val*, val*, val*, short int))(var_sup->class->vft[COLOR_model__MType__resolve_for]))(var_sup, var35, var_anchor, var_mmodule, var36) /* resolve_for on <var_sup:MType>*/;
2976 var_sup = var37;
2977 } else {
2978 }
2979 var38 = 0;
2980 var_sup_accept_null = var38;
2981 /* <var_sup:MType> isa MNullableType */
2982 cltype40 = type_model__MNullableType.color;
2983 idtype41 = type_model__MNullableType.id;
2984 if(cltype40 >= var_sup->type->table_size) {
2985 var39 = 0;
2986 } else {
2987 var39 = var_sup->type->type_table[cltype40] == idtype41;
2988 }
2989 if (var39){
2990 var42 = 1;
2991 var_sup_accept_null = var42;
2992 var43 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MNullableType__mtype]))(var_sup) /* mtype on <var_sup:MType(MNullableType)>*/;
2993 var_sup = var43;
2994 } else {
2995 /* <var_sup:MType> isa MNullType */
2996 cltype45 = type_model__MNullType.color;
2997 idtype46 = type_model__MNullType.id;
2998 if(cltype45 >= var_sup->type->table_size) {
2999 var44 = 0;
3000 } else {
3001 var44 = var_sup->type->type_table[cltype45] == idtype46;
3002 }
3003 if (var44){
3004 var47 = 1;
3005 var_sup_accept_null = var47;
3006 } else {
3007 }
3008 }
3009 /* <var_sub:MType> isa MNullableType */
3010 cltype49 = type_model__MNullableType.color;
3011 idtype50 = type_model__MNullableType.id;
3012 if(cltype49 >= var_sub->type->table_size) {
3013 var48 = 0;
3014 } else {
3015 var48 = var_sub->type->type_table[cltype49] == idtype50;
3016 }
3017 if (var48){
3018 var51 = !var_sup_accept_null;
3019 if (var51){
3020 var52 = 0;
3021 var = var52;
3022 goto RET_LABEL;
3023 } else {
3024 }
3025 var53 = ((val* (*)(val*))(var_sub->class->vft[COLOR_model__MNullableType__mtype]))(var_sub) /* mtype on <var_sub:MType(MNullableType)>*/;
3026 var_sub = var53;
3027 } else {
3028 /* <var_sub:MType> isa MNullType */
3029 cltype55 = type_model__MNullType.color;
3030 idtype56 = type_model__MNullType.id;
3031 if(cltype55 >= var_sub->type->table_size) {
3032 var54 = 0;
3033 } else {
3034 var54 = var_sub->type->type_table[cltype55] == idtype56;
3035 }
3036 if (var54){
3037 var = var_sup_accept_null;
3038 goto RET_LABEL;
3039 } else {
3040 }
3041 }
3042 /* <var_sup:MType> isa MParameterType */
3043 cltype59 = type_model__MParameterType.color;
3044 idtype60 = type_model__MParameterType.id;
3045 if(cltype59 >= var_sup->type->table_size) {
3046 var58 = 0;
3047 } else {
3048 var58 = var_sup->type->type_table[cltype59] == idtype60;
3049 }
3050 var_61 = var58;
3051 if (var58){
3052 var57 = var_61;
3053 } else {
3054 /* <var_sup:MType> isa MVirtualType */
3055 cltype63 = type_model__MVirtualType.color;
3056 idtype64 = type_model__MVirtualType.id;
3057 if(cltype63 >= var_sup->type->table_size) {
3058 var62 = 0;
3059 } else {
3060 var62 = var_sup->type->type_table[cltype63] == idtype64;
3061 }
3062 var57 = var62;
3063 }
3064 if (var57){
3065 var65 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType>*/;
3066 var = var65;
3067 goto RET_LABEL;
3068 } else {
3069 }
3070 /* <var_sub:MType> isa MParameterType */
3071 cltype68 = type_model__MParameterType.color;
3072 idtype69 = type_model__MParameterType.id;
3073 if(cltype68 >= var_sub->type->table_size) {
3074 var67 = 0;
3075 } else {
3076 var67 = var_sub->type->type_table[cltype68] == idtype69;
3077 }
3078 var_70 = var67;
3079 if (var67){
3080 var66 = var_70;
3081 } else {
3082 /* <var_sub:MType> isa MVirtualType */
3083 cltype72 = type_model__MVirtualType.color;
3084 idtype73 = type_model__MVirtualType.id;
3085 if(cltype72 >= var_sub->type->table_size) {
3086 var71 = 0;
3087 } else {
3088 var71 = var_sub->type->type_table[cltype72] == idtype73;
3089 }
3090 var66 = var71;
3091 }
3092 if (var66){
3093 var74 = NULL;
3094 if (var_anchor == NULL) {
3095 var75 = 0; /* is null */
3096 } else {
3097 var75 = 1; /* arg is null and recv is not */
3098 }
3099 if (!var75) {
3100 fprintf(stderr, "Runtime error: %s", "Assert failed");
3101 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 606);
3102 exit(1);
3103 }
3104 var76 = ((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>*/;
3105 var_sub = var76;
3106 /* <var_sub:MType> isa MNullableType */
3107 cltype78 = type_model__MNullableType.color;
3108 idtype79 = type_model__MNullableType.id;
3109 if(cltype78 >= var_sub->type->table_size) {
3110 var77 = 0;
3111 } else {
3112 var77 = var_sub->type->type_table[cltype78] == idtype79;
3113 }
3114 if (var77){
3115 var80 = !var_sup_accept_null;
3116 if (var80){
3117 var81 = 0;
3118 var = var81;
3119 goto RET_LABEL;
3120 } else {
3121 }
3122 var82 = ((val* (*)(val*))(var_sub->class->vft[COLOR_model__MNullableType__mtype]))(var_sub) /* mtype on <var_sub:MType(MNullableType)>*/;
3123 var_sub = var82;
3124 } else {
3125 /* <var_sub:MType> isa MNullType */
3126 cltype84 = type_model__MNullType.color;
3127 idtype85 = type_model__MNullType.id;
3128 if(cltype84 >= var_sub->type->table_size) {
3129 var83 = 0;
3130 } else {
3131 var83 = var_sub->type->type_table[cltype84] == idtype85;
3132 }
3133 if (var83){
3134 var = var_sup_accept_null;
3135 goto RET_LABEL;
3136 } else {
3137 }
3138 }
3139 } else {
3140 }
3141 /* <var_sub:MType> isa MClassType */
3142 cltype87 = type_model__MClassType.color;
3143 idtype88 = type_model__MClassType.id;
3144 if(cltype87 >= var_sub->type->table_size) {
3145 var86 = 0;
3146 } else {
3147 var86 = var_sub->type->type_table[cltype87] == idtype88;
3148 }
3149 if (!var86) {
3150 fprintf(stderr, "Runtime error: %s", "Assert failed");
3151 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 618);
3152 exit(1);
3153 }
3154 /* <var_sup:MType> isa MNullType */
3155 cltype90 = type_model__MNullType.color;
3156 idtype91 = type_model__MNullType.id;
3157 if(cltype90 >= var_sup->type->table_size) {
3158 var89 = 0;
3159 } else {
3160 var89 = var_sup->type->type_table[cltype90] == idtype91;
3161 }
3162 if (var89){
3163 var92 = 0;
3164 var = var92;
3165 goto RET_LABEL;
3166 } else {
3167 }
3168 /* <var_sup:MType> isa MClassType */
3169 cltype94 = type_model__MClassType.color;
3170 idtype95 = type_model__MClassType.id;
3171 if(cltype94 >= var_sup->type->table_size) {
3172 var93 = 0;
3173 } else {
3174 var93 = var_sup->type->type_table[cltype94] == idtype95;
3175 }
3176 if (!var93) {
3177 fprintf(stderr, "Runtime error: %s", "Assert failed");
3178 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 625);
3179 exit(1);
3180 }
3181 var96 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType(MClassType)>*/;
3182 if (var96){
3183 var97 = 1;
3184 var = var97;
3185 goto RET_LABEL;
3186 } else {
3187 }
3188 var98 = NULL;
3189 if (var_anchor == NULL) {
3190 var99 = 1; /* is null */
3191 } else {
3192 var99 = 0; /* arg is null but recv is not */
3193 }
3194 if (var99){
3195 var_anchor = var_sub;
3196 } else {
3197 }
3198 var100 = ((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(MClassType)>*/;
3199 var_resolved_sub = var100;
3200 var101 = ((val* (*)(val*, val*))(var_resolved_sub->class->vft[COLOR_model__MType__collect_mclasses]))(var_resolved_sub, var_mmodule) /* collect_mclasses on <var_resolved_sub:MClassType>*/;
3201 var102 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MClassType)>*/;
3202 var103 = ((short int (*)(val*, val*))(var101->class->vft[COLOR_abstract_collection__Collection__has]))(var101, var102) /* has on <var101:Set[MClass]>*/;
3203 var_res = var103;
3204 var104 = 0;
3205 { /* Inline kernel#Bool#== (var_res,var104) */
3206 var107 = var_res == var104;
3207 var105 = var107;
3208 goto RET_LABEL106;
3209 RET_LABEL106:(void)0;
3210 }
3211 if (var105){
3212 var108 = 0;
3213 var = var108;
3214 goto RET_LABEL;
3215 } else {
3216 }
3217 /* <var_sup:MType(MClassType)> isa MGenericType */
3218 cltype110 = type_model__MGenericType.color;
3219 idtype111 = type_model__MGenericType.id;
3220 if(cltype110 >= var_sup->type->table_size) {
3221 var109 = 0;
3222 } else {
3223 var109 = var_sup->type->type_table[cltype110] == idtype111;
3224 }
3225 var112 = !var109;
3226 if (var112){
3227 var113 = 1;
3228 var = var113;
3229 goto RET_LABEL;
3230 } else {
3231 }
3232 var114 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
3233 var115 = ((val* (*)(val*, val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__supertype_to]))(var_sub, var_mmodule, var_anchor, var114) /* supertype_to on <var_sub:MType(MClassType)>*/;
3234 var_sub2 = var115;
3235 var116 = ((val* (*)(val*))(var_sub2->class->vft[COLOR_model__MClassType__mclass]))(var_sub2) /* mclass on <var_sub2:MClassType>*/;
3236 var117 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
3237 var118 = ((short int (*)(val*, val*))(var116->class->vft[COLOR_kernel__Object___61d_61d]))(var116, var117) /* == on <var116:MClass>*/;
3238 if (!var118) {
3239 fprintf(stderr, "Runtime error: %s", "Assert failed");
3240 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 637);
3241 exit(1);
3242 }
3243 var119 = NEW_range__Range(&type_range__Rangekernel__Int);
3244 var120 = 0;
3245 var121 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
3246 var122 = ((long (*)(val*))(var121->class->vft[COLOR_model__MClass__arity]))(var121) /* arity on <var121:MClass>*/;
3247 var123 = BOX_kernel__Int(var120); /* autobox from Int to Discrete */
3248 var124 = BOX_kernel__Int(var122); /* autobox from Int to Discrete */
3249 ((void (*)(val*, val*, val*))(var119->class->vft[COLOR_range__Range__without_last]))(var119, var123, var124) /* without_last on <var119:Range[Int]>*/;
3250 CHECK_NEW_range__Range(var119);
3251 var125 = ((val* (*)(val*))(var119->class->vft[COLOR_abstract_collection__Collection__iterator]))(var119) /* iterator on <var119:Range[Int]>*/;
3252 for(;;) {
3253 var126 = ((short int (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var125) /* is_ok on <var125:Iterator[nullable Object]>*/;
3254 if(!var126) break;
3255 var127 = ((val* (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__item]))(var125) /* item on <var125:Iterator[nullable Object]>*/;
3256 var128 = ((struct instance_kernel__Int*)var127)->value; /* autounbox from nullable Object to Int */;
3257 var_i = var128;
3258 var129 = ((val* (*)(val*))(var_sub2->class->vft[COLOR_model__MClassType__arguments]))(var_sub2) /* arguments on <var_sub2:MClassType>*/;
3259 var130 = ((val* (*)(val*, long))(var129->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var129, var_i) /* [] on <var129:Array[MType]>*/;
3260 var_sub_arg = var130;
3261 var131 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__arguments]))(var_sup) /* arguments on <var_sup:MType(MGenericType)>*/;
3262 var132 = ((val* (*)(val*, long))(var131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var131, var_i) /* [] on <var131:Array[MType]>*/;
3263 var_sup_arg = var132;
3264 var133 = ((short int (*)(val*, val*, val*, val*))(var_sub_arg->class->vft[COLOR_model__MType__is_subtype]))(var_sub_arg, var_mmodule, var_anchor, var_sup_arg) /* is_subtype on <var_sub_arg:MType>*/;
3265 var_res = var133;
3266 var134 = 0;
3267 { /* Inline kernel#Bool#== (var_res,var134) */
3268 var137 = var_res == var134;
3269 var135 = var137;
3270 goto RET_LABEL136;
3271 RET_LABEL136:(void)0;
3272 }
3273 if (var135){
3274 var138 = 0;
3275 var = var138;
3276 goto RET_LABEL;
3277 } else {
3278 }
3279 CONTINUE_label: (void)0;
3280 ((void (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__next]))(var125) /* next on <var125:Iterator[nullable Object]>*/;
3281 }
3282 BREAK_label: (void)0;
3283 var139 = 1;
3284 var = var139;
3285 goto RET_LABEL;
3286 RET_LABEL:;
3287 return var;
3288 }
3289 /* method model#MType#is_subtype for (self: Object, MModule, nullable MClassType, MType): Bool */
3290 short int VIRTUAL_model__MType__is_subtype(val* self, val* p0, val* p1, val* p2) {
3291 short int var /* : Bool */;
3292 short int var1 /* : Bool */;
3293 var1 = model__MType__is_subtype(self, p0, p1, p2);
3294 var = var1;
3295 RET_LABEL:;
3296 return var;
3297 }
3298 /* method model#MType#anchor_to for (self: MType, MModule, MClassType): MType */
3299 val* model__MType__anchor_to(val* self, val* p0, val* p1) {
3300 val* var /* : MType */;
3301 val* var_mmodule /* var mmodule: MModule */;
3302 val* var_anchor /* var anchor: MClassType */;
3303 short int var1 /* : Bool */;
3304 short int var2 /* : Bool */;
3305 short int var3 /* : Bool */;
3306 short int var4 /* : Bool */;
3307 val* var5 /* : null */;
3308 short int var6 /* : Bool */;
3309 val* var7 /* : MType */;
3310 val* var_res /* var res: MType */;
3311 short int var8 /* : Bool */;
3312 short int var9 /* : Bool */;
3313 var_mmodule = p0;
3314 var_anchor = p1;
3315 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
3316 var2 = !var1;
3317 if (var2){
3318 var = self;
3319 goto RET_LABEL;
3320 } else {
3321 }
3322 var3 = ((short int (*)(val*))(var_anchor->class->vft[COLOR_model__MType__need_anchor]))(var_anchor) /* need_anchor on <var_anchor:MClassType>*/;
3323 var4 = !var3;
3324 if (!var4) {
3325 fprintf(stderr, "Runtime error: %s", "Assert failed");
3326 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 682);
3327 exit(1);
3328 }
3329 var5 = NULL;
3330 var6 = 1;
3331 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>*/;
3332 var_res = var7;
3333 var8 = ((short int (*)(val*))(var_res->class->vft[COLOR_model__MType__need_anchor]))(var_res) /* need_anchor on <var_res:MType>*/;
3334 var9 = !var8;
3335 if (!var9) {
3336 fprintf(stderr, "Runtime error: %s", "Assert failed");
3337 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 685);
3338 exit(1);
3339 }
3340 var = var_res;
3341 goto RET_LABEL;
3342 RET_LABEL:;
3343 return var;
3344 }
3345 /* method model#MType#anchor_to for (self: Object, MModule, MClassType): MType */
3346 val* VIRTUAL_model__MType__anchor_to(val* self, val* p0, val* p1) {
3347 val* var /* : MType */;
3348 val* var1 /* : MType */;
3349 var1 = model__MType__anchor_to(self, p0, p1);
3350 var = var1;
3351 RET_LABEL:;
3352 return var;
3353 }
3354 /* method model#MType#need_anchor for (self: MType): Bool */
3355 short int model__MType__need_anchor(val* self) {
3356 short int var /* : Bool */;
3357 short int var1 /* : Bool */;
3358 var1 = 1;
3359 var = var1;
3360 goto RET_LABEL;
3361 RET_LABEL:;
3362 return var;
3363 }
3364 /* method model#MType#need_anchor for (self: Object): Bool */
3365 short int VIRTUAL_model__MType__need_anchor(val* self) {
3366 short int var /* : Bool */;
3367 short int var1 /* : Bool */;
3368 var1 = model__MType__need_anchor(self);
3369 var = var1;
3370 RET_LABEL:;
3371 return var;
3372 }
3373 /* method model#MType#supertype_to for (self: MType, MModule, nullable MClassType, MClass): MClassType */
3374 val* model__MType__supertype_to(val* self, val* p0, val* p1, val* p2) {
3375 val* var /* : MClassType */;
3376 val* var_mmodule /* var mmodule: MModule */;
3377 val* var_anchor /* var anchor: nullable MClassType */;
3378 val* var_super_mclass /* var super_mclass: MClass */;
3379 long var1 /* : Int */;
3380 long var2 /* : Int */;
3381 short int var3 /* : Bool */;
3382 short int var5 /* : Bool */;
3383 val* var6 /* : MClassType */;
3384 short int var7 /* : Bool */;
3385 short int var8 /* : Bool */;
3386 int cltype;
3387 int idtype;
3388 short int var_ /* var : Bool */;
3389 val* var9 /* : MClass */;
3390 short int var10 /* : Bool */;
3391 short int var11 /* : Bool */;
3392 val* var12 /* : null */;
3393 short int var13 /* : Bool */;
3394 val* var14 /* : MType */;
3395 val* var_resolved_self /* var resolved_self: nullable Object */;
3396 val* var15 /* : Set[MClassType] */;
3397 val* var_supertypes /* var supertypes: Set[MClassType] */;
3398 val* var16 /* : Iterator[nullable Object] */;
3399 short int var17 /* : Bool */;
3400 val* var18 /* : nullable Object */;
3401 val* var_supertype /* var supertype: MClassType */;
3402 val* var19 /* : MClass */;
3403 short int var20 /* : Bool */;
3404 short int var21 /* : Bool */;
3405 val* var22 /* : MType */;
3406 var_mmodule = p0;
3407 var_anchor = p1;
3408 var_super_mclass = p2;
3409 var1 = ((long (*)(val*))(var_super_mclass->class->vft[COLOR_model__MClass__arity]))(var_super_mclass) /* arity on <var_super_mclass:MClass>*/;
3410 var2 = 0;
3411 { /* Inline kernel#Int#== (var1,var2) */
3412 var5 = var1 == var2;
3413 var3 = var5;
3414 goto RET_LABEL4;
3415 RET_LABEL4:(void)0;
3416 }
3417 if (var3){
3418 var6 = ((val* (*)(val*))(var_super_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_super_mclass) /* mclass_type on <var_super_mclass:MClass>*/;
3419 var = var6;
3420 goto RET_LABEL;
3421 } else {
3422 }
3423 /* <self:MType> isa MClassType */
3424 cltype = type_model__MClassType.color;
3425 idtype = type_model__MClassType.id;
3426 if(cltype >= self->type->table_size) {
3427 var8 = 0;
3428 } else {
3429 var8 = self->type->type_table[cltype] == idtype;
3430 }
3431 var_ = var8;
3432 if (var8){
3433 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MType(MClassType)>*/;
3434 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var_super_mclass) /* == on <var9:MClass>*/;
3435 var7 = var10;
3436 } else {
3437 var7 = var_;
3438 }
3439 if (var7){
3440 var = self;
3441 goto RET_LABEL;
3442 } else {
3443 }
3444 var11 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
3445 if (var11){
3446 var12 = NULL;
3447 if (var_anchor == NULL) {
3448 var13 = 0; /* is null */
3449 } else {
3450 var13 = 1; /* arg is null and recv is not */
3451 }
3452 if (!var13) {
3453 fprintf(stderr, "Runtime error: %s", "Assert failed");
3454 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 711);
3455 exit(1);
3456 }
3457 var14 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MType__anchor_to]))(self, var_mmodule, var_anchor) /* anchor_to on <self:MType>*/;
3458 var_resolved_self = var14;
3459 } else {
3460 var_resolved_self = self;
3461 }
3462 var15 = ((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)>*/;
3463 var_supertypes = var15;
3464 var16 = ((val* (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supertypes) /* iterator on <var_supertypes:Set[MClassType]>*/;
3465 for(;;) {
3466 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
3467 if(!var17) break;
3468 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
3469 var_supertype = var18;
3470 var19 = ((val* (*)(val*))(var_supertype->class->vft[COLOR_model__MClassType__mclass]))(var_supertype) /* mclass on <var_supertype:MClassType>*/;
3471 var20 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var_super_mclass) /* == on <var19:MClass>*/;
3472 if (var20){
3473 var21 = 0;
3474 var22 = ((val* (*)(val*, val*, val*, val*, short int))(var_supertype->class->vft[COLOR_model__MType__resolve_for]))(var_supertype, self, var_anchor, var_mmodule, var21) /* resolve_for on <var_supertype:MClassType>*/;
3475 var = var22;
3476 goto RET_LABEL;
3477 } else {
3478 }
3479 CONTINUE_label: (void)0;
3480 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
3481 }
3482 BREAK_label: (void)0;
3483 fprintf(stderr, "Runtime error: %s", "Aborted");
3484 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 723);
3485 exit(1);
3486 RET_LABEL:;
3487 return var;
3488 }
3489 /* method model#MType#supertype_to for (self: Object, MModule, nullable MClassType, MClass): MClassType */
3490 val* VIRTUAL_model__MType__supertype_to(val* self, val* p0, val* p1, val* p2) {
3491 val* var /* : MClassType */;
3492 val* var1 /* : MClassType */;
3493 var1 = model__MType__supertype_to(self, p0, p1, p2);
3494 var = var1;
3495 RET_LABEL:;
3496 return var;
3497 }
3498 /* method model#MType#resolve_for for (self: MType, MType, nullable MClassType, MModule, Bool): MType */
3499 val* model__MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3500 val* var /* : MType */;
3501 const char* var_class_name;
3502 var_class_name = self == NULL ? "null" : self->type->name;
3503 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "resolve_for", var_class_name);
3504 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 726);
3505 exit(1);
3506 RET_LABEL:;
3507 return var;
3508 }
3509 /* method model#MType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
3510 val* VIRTUAL_model__MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3511 val* var /* : MType */;
3512 val* var1 /* : MType */;
3513 var1 = model__MType__resolve_for(self, p0, p1, p2, p3);
3514 var = var1;
3515 RET_LABEL:;
3516 return var;
3517 }
3518 /* method model#MType#can_resolve_for for (self: MType, MType, nullable MClassType, MModule): Bool */
3519 short int model__MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3520 short int var /* : Bool */;
3521 const char* var_class_name;
3522 var_class_name = self == NULL ? "null" : self->type->name;
3523 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "can_resolve_for", var_class_name);
3524 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 798);
3525 exit(1);
3526 RET_LABEL:;
3527 return var;
3528 }
3529 /* method model#MType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
3530 short int VIRTUAL_model__MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3531 short int var /* : Bool */;
3532 short int var1 /* : Bool */;
3533 var1 = model__MType__can_resolve_for(self, p0, p1, p2);
3534 var = var1;
3535 RET_LABEL:;
3536 return var;
3537 }
3538 /* method model#MType#as_nullable for (self: MType): MType */
3539 val* model__MType__as_nullable(val* self) {
3540 val* var /* : MType */;
3541 val* var1 /* : nullable MType */;
3542 val* var_res /* var res: nullable MType */;
3543 val* var2 /* : null */;
3544 short int var3 /* : Bool */;
3545 val* var4 /* : MNullableType */;
3546 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MType__as_nullable_cache]))(self) /* as_nullable_cache on <self:MType>*/;
3547 var_res = var1;
3548 var2 = NULL;
3549 if (var_res == NULL) {
3550 var3 = 0; /* is null */
3551 } else {
3552 var3 = 1; /* arg is null and recv is not */
3553 }
3554 if (var3){
3555 var = var_res;
3556 goto RET_LABEL;
3557 } else {
3558 }
3559 var4 = NEW_model__MNullableType(&type_model__MNullableType);
3560 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MNullableType__init]))(var4, self) /* init on <var4:MNullableType>*/;
3561 CHECK_NEW_model__MNullableType(var4);
3562 var_res = var4;
3563 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MType__as_nullable_cache_61d]))(self, var_res) /* as_nullable_cache= on <self:MType>*/;
3564 var = var_res;
3565 goto RET_LABEL;
3566 RET_LABEL:;
3567 return var;
3568 }
3569 /* method model#MType#as_nullable for (self: Object): MType */
3570 val* VIRTUAL_model__MType__as_nullable(val* self) {
3571 val* var /* : MType */;
3572 val* var1 /* : MType */;
3573 var1 = model__MType__as_nullable(self);
3574 var = var1;
3575 RET_LABEL:;
3576 return var;
3577 }
3578 /* method model#MType#as_nullable_cache for (self: MType): nullable MType */
3579 val* model__MType__as_nullable_cache(val* self) {
3580 val* var /* : nullable MType */;
3581 val* var1 /* : nullable MType */;
3582 var1 = self->attrs[COLOR_model__MType___64das_nullable_cache].val; /* @as_nullable_cache on <self:MType> */
3583 var = var1;
3584 RET_LABEL:;
3585 return var;
3586 }
3587 /* method model#MType#as_nullable_cache for (self: Object): nullable MType */
3588 val* VIRTUAL_model__MType__as_nullable_cache(val* self) {
3589 val* var /* : nullable MType */;
3590 val* var1 /* : nullable MType */;
3591 var1 = model__MType__as_nullable_cache(self);
3592 var = var1;
3593 RET_LABEL:;
3594 return var;
3595 }
3596 /* method model#MType#as_nullable_cache= for (self: MType, nullable MType) */
3597 void model__MType__as_nullable_cache_61d(val* self, val* p0) {
3598 self->attrs[COLOR_model__MType___64das_nullable_cache].val = p0; /* @as_nullable_cache on <self:MType> */
3599 RET_LABEL:;
3600 }
3601 /* method model#MType#as_nullable_cache= for (self: Object, nullable MType) */
3602 void VIRTUAL_model__MType__as_nullable_cache_61d(val* self, val* p0) {
3603 model__MType__as_nullable_cache_61d(self, p0);
3604 RET_LABEL:;
3605 }
3606 /* method model#MType#depth for (self: MType): Int */
3607 long model__MType__depth(val* self) {
3608 long var /* : Int */;
3609 long var1 /* : Int */;
3610 var1 = 1;
3611 var = var1;
3612 goto RET_LABEL;
3613 RET_LABEL:;
3614 return var;
3615 }
3616 /* method model#MType#depth for (self: Object): Int */
3617 long VIRTUAL_model__MType__depth(val* self) {
3618 long var /* : Int */;
3619 long var1 /* : Int */;
3620 var1 = model__MType__depth(self);
3621 var = var1;
3622 RET_LABEL:;
3623 return var;
3624 }
3625 /* method model#MType#length for (self: MType): Int */
3626 long model__MType__length(val* self) {
3627 long var /* : Int */;
3628 long var1 /* : Int */;
3629 var1 = 1;
3630 var = var1;
3631 goto RET_LABEL;
3632 RET_LABEL:;
3633 return var;
3634 }
3635 /* method model#MType#length for (self: Object): Int */
3636 long VIRTUAL_model__MType__length(val* self) {
3637 long var /* : Int */;
3638 long var1 /* : Int */;
3639 var1 = model__MType__length(self);
3640 var = var1;
3641 RET_LABEL:;
3642 return var;
3643 }
3644 /* method model#MType#collect_mclassdefs for (self: MType, MModule): Set[MClassDef] */
3645 val* model__MType__collect_mclassdefs(val* self, val* p0) {
3646 val* var /* : Set[MClassDef] */;
3647 const char* var_class_name;
3648 var_class_name = self == NULL ? "null" : self->type->name;
3649 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mclassdefs", var_class_name);
3650 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 860);
3651 exit(1);
3652 RET_LABEL:;
3653 return var;
3654 }
3655 /* method model#MType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
3656 val* VIRTUAL_model__MType__collect_mclassdefs(val* self, val* p0) {
3657 val* var /* : Set[MClassDef] */;
3658 val* var1 /* : Set[MClassDef] */;
3659 var1 = model__MType__collect_mclassdefs(self, p0);
3660 var = var1;
3661 RET_LABEL:;
3662 return var;
3663 }
3664 /* method model#MType#collect_mclasses for (self: MType, MModule): Set[MClass] */
3665 val* model__MType__collect_mclasses(val* self, val* p0) {
3666 val* var /* : Set[MClass] */;
3667 const char* var_class_name;
3668 var_class_name = self == NULL ? "null" : self->type->name;
3669 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mclasses", var_class_name);
3670 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 870);
3671 exit(1);
3672 RET_LABEL:;
3673 return var;
3674 }
3675 /* method model#MType#collect_mclasses for (self: Object, MModule): Set[MClass] */
3676 val* VIRTUAL_model__MType__collect_mclasses(val* self, val* p0) {
3677 val* var /* : Set[MClass] */;
3678 val* var1 /* : Set[MClass] */;
3679 var1 = model__MType__collect_mclasses(self, p0);
3680 var = var1;
3681 RET_LABEL:;
3682 return var;
3683 }
3684 /* method model#MType#collect_mtypes for (self: MType, MModule): Set[MClassType] */
3685 val* model__MType__collect_mtypes(val* self, val* p0) {
3686 val* var /* : Set[MClassType] */;
3687 const char* var_class_name;
3688 var_class_name = self == NULL ? "null" : self->type->name;
3689 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mtypes", var_class_name);
3690 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 876);
3691 exit(1);
3692 RET_LABEL:;
3693 return var;
3694 }
3695 /* method model#MType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
3696 val* VIRTUAL_model__MType__collect_mtypes(val* self, val* p0) {
3697 val* var /* : Set[MClassType] */;
3698 val* var1 /* : Set[MClassType] */;
3699 var1 = model__MType__collect_mtypes(self, p0);
3700 var = var1;
3701 RET_LABEL:;
3702 return var;
3703 }
3704 /* method model#MType#has_mproperty for (self: MType, MModule, MProperty): Bool */
3705 short int model__MType__has_mproperty(val* self, val* p0, val* p1) {
3706 short int var /* : Bool */;
3707 val* var_mmodule /* var mmodule: MModule */;
3708 val* var_mproperty /* var mproperty: MProperty */;
3709 short int var1 /* : Bool */;
3710 short int var2 /* : Bool */;
3711 val* var3 /* : Set[MClassDef] */;
3712 val* var4 /* : MClassDef */;
3713 short int var5 /* : Bool */;
3714 var_mmodule = p0;
3715 var_mproperty = p1;
3716 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
3717 var2 = !var1;
3718 if (!var2) {
3719 fprintf(stderr, "Runtime error: %s", "Assert failed");
3720 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 889);
3721 exit(1);
3722 }
3723 var3 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MType__collect_mclassdefs]))(self, var_mmodule) /* collect_mclassdefs on <self:MType>*/;
3724 var4 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:MProperty>*/;
3725 var5 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var4) /* has on <var3:Set[MClassDef]>*/;
3726 var = var5;
3727 goto RET_LABEL;
3728 RET_LABEL:;
3729 return var;
3730 }
3731 /* method model#MType#has_mproperty for (self: Object, MModule, MProperty): Bool */
3732 short int VIRTUAL_model__MType__has_mproperty(val* self, val* p0, val* p1) {
3733 short int var /* : Bool */;
3734 short int var1 /* : Bool */;
3735 var1 = model__MType__has_mproperty(self, p0, p1);
3736 var = var1;
3737 RET_LABEL:;
3738 return var;
3739 }
3740 /* method model#MType#init for (self: MType) */
3741 void model__MType__init(val* self) {
3742 RET_LABEL:;
3743 }
3744 /* method model#MType#init for (self: Object) */
3745 void VIRTUAL_model__MType__init(val* self) {
3746 model__MType__init(self);
3747 RET_LABEL:;
3748 }
3749 /* method model#MClassType#mclass for (self: MClassType): MClass */
3750 val* model__MClassType__mclass(val* self) {
3751 val* var /* : MClass */;
3752 val* var1 /* : MClass */;
3753 var1 = self->attrs[COLOR_model__MClassType___64dmclass].val; /* @mclass on <self:MClassType> */
3754 if (var1 == NULL) {
3755 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
3756 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 900);
3757 exit(1);
3758 }
3759 var = var1;
3760 RET_LABEL:;
3761 return var;
3762 }
3763 /* method model#MClassType#mclass for (self: Object): MClass */
3764 val* VIRTUAL_model__MClassType__mclass(val* self) {
3765 val* var /* : MClass */;
3766 val* var1 /* : MClass */;
3767 var1 = model__MClassType__mclass(self);
3768 var = var1;
3769 RET_LABEL:;
3770 return var;
3771 }
3772 /* method model#MClassType#mclass= for (self: MClassType, MClass) */
3773 void model__MClassType__mclass_61d(val* self, val* p0) {
3774 self->attrs[COLOR_model__MClassType___64dmclass].val = p0; /* @mclass on <self:MClassType> */
3775 RET_LABEL:;
3776 }
3777 /* method model#MClassType#mclass= for (self: Object, MClass) */
3778 void VIRTUAL_model__MClassType__mclass_61d(val* self, val* p0) {
3779 model__MClassType__mclass_61d(self, p0);
3780 RET_LABEL:;
3781 }
3782 /* method model#MClassType#model for (self: MClassType): Model */
3783 val* model__MClassType__model(val* self) {
3784 val* var /* : Model */;
3785 val* var1 /* : MClass */;
3786 val* var2 /* : MModule */;
3787 val* var3 /* : Model */;
3788 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3789 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro_mmodule]))(var1) /* intro_mmodule on <var1:MClass>*/;
3790 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model_base__MModule__model]))(var2) /* model on <var2:MModule>*/;
3791 var = var3;
3792 goto RET_LABEL;
3793 RET_LABEL:;
3794 return var;
3795 }
3796 /* method model#MClassType#model for (self: Object): Model */
3797 val* VIRTUAL_model__MClassType__model(val* self) {
3798 val* var /* : Model */;
3799 val* var1 /* : Model */;
3800 var1 = model__MClassType__model(self);
3801 var = var1;
3802 RET_LABEL:;
3803 return var;
3804 }
3805 /* method model#MClassType#init for (self: MClassType, MClass) */
3806 void model__MClassType__init(val* self, val* p0) {
3807 val* var_mclass /* var mclass: MClass */;
3808 var_mclass = p0;
3809 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MClassType>*/;
3810 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__mclass_61d]))(self, var_mclass) /* mclass= on <self:MClassType>*/;
3811 RET_LABEL:;
3812 }
3813 /* method model#MClassType#init for (self: Object, MClass) */
3814 void VIRTUAL_model__MClassType__init(val* self, val* p0) {
3815 model__MClassType__init(self, p0);
3816 RET_LABEL:;
3817 }
3818 /* method model#MClassType#arguments for (self: MClassType): Array[MType] */
3819 val* model__MClassType__arguments(val* self) {
3820 val* var /* : Array[MType] */;
3821 val* var1 /* : Array[MType] */;
3822 var1 = self->attrs[COLOR_model__MClassType___64darguments].val; /* @arguments on <self:MClassType> */
3823 if (var1 == NULL) {
3824 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @arguments");
3825 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 910);
3826 exit(1);
3827 }
3828 var = var1;
3829 RET_LABEL:;
3830 return var;
3831 }
3832 /* method model#MClassType#arguments for (self: Object): Array[MType] */
3833 val* VIRTUAL_model__MClassType__arguments(val* self) {
3834 val* var /* : Array[MType] */;
3835 val* var1 /* : Array[MType] */;
3836 var1 = model__MClassType__arguments(self);
3837 var = var1;
3838 RET_LABEL:;
3839 return var;
3840 }
3841 /* method model#MClassType#arguments= for (self: MClassType, Array[MType]) */
3842 void model__MClassType__arguments_61d(val* self, val* p0) {
3843 self->attrs[COLOR_model__MClassType___64darguments].val = p0; /* @arguments on <self:MClassType> */
3844 RET_LABEL:;
3845 }
3846 /* method model#MClassType#arguments= for (self: Object, Array[MType]) */
3847 void VIRTUAL_model__MClassType__arguments_61d(val* self, val* p0) {
3848 model__MClassType__arguments_61d(self, p0);
3849 RET_LABEL:;
3850 }
3851 /* method model#MClassType#to_s for (self: MClassType): String */
3852 val* model__MClassType__to_s(val* self) {
3853 val* var /* : String */;
3854 val* var1 /* : MClass */;
3855 val* var2 /* : String */;
3856 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3857 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MClass>*/;
3858 var = var2;
3859 goto RET_LABEL;
3860 RET_LABEL:;
3861 return var;
3862 }
3863 /* method model#MClassType#to_s for (self: Object): String */
3864 val* VIRTUAL_model__MClassType__to_s(val* self) {
3865 val* var /* : String */;
3866 val* var1 /* : String */;
3867 var1 = model__MClassType__to_s(self);
3868 var = var1;
3869 RET_LABEL:;
3870 return var;
3871 }
3872 /* method model#MClassType#need_anchor for (self: MClassType): Bool */
3873 short int model__MClassType__need_anchor(val* self) {
3874 short int var /* : Bool */;
3875 short int var1 /* : Bool */;
3876 var1 = 0;
3877 var = var1;
3878 goto RET_LABEL;
3879 RET_LABEL:;
3880 return var;
3881 }
3882 /* method model#MClassType#need_anchor for (self: Object): Bool */
3883 short int VIRTUAL_model__MClassType__need_anchor(val* self) {
3884 short int var /* : Bool */;
3885 short int var1 /* : Bool */;
3886 var1 = model__MClassType__need_anchor(self);
3887 var = var1;
3888 RET_LABEL:;
3889 return var;
3890 }
3891 /* method model#MClassType#anchor_to for (self: MClassType, MModule, MClassType): MClassType */
3892 val* model__MClassType__anchor_to(val* self, val* p0, val* p1) {
3893 val* var /* : MClassType */;
3894 val* var_mmodule /* var mmodule: MModule */;
3895 val* var_anchor /* var anchor: MClassType */;
3896 val* var1 /* : MType */;
3897 short int var2 /* : Bool */;
3898 int cltype;
3899 int idtype;
3900 const char* var_class_name;
3901 var_mmodule = p0;
3902 var_anchor = p1;
3903 var1 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MClassType__anchor_to]))(self, p0, p1) /* anchor_to on <self:MClassType>*/;
3904 /* <var1:MType> isa MClassType */
3905 cltype = type_model__MClassType.color;
3906 idtype = type_model__MClassType.id;
3907 if(cltype >= var1->type->table_size) {
3908 var2 = 0;
3909 } else {
3910 var2 = var1->type->type_table[cltype] == idtype;
3911 }
3912 if (!var2) {
3913 var_class_name = var1 == NULL ? "null" : var1->type->name;
3914 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3915 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 920);
3916 exit(1);
3917 }
3918 var = var1;
3919 goto RET_LABEL;
3920 RET_LABEL:;
3921 return var;
3922 }
3923 /* method model#MClassType#anchor_to for (self: Object, MModule, MClassType): MType */
3924 val* VIRTUAL_model__MClassType__anchor_to(val* self, val* p0, val* p1) {
3925 val* var /* : MType */;
3926 val* var1 /* : MClassType */;
3927 var1 = model__MClassType__anchor_to(self, p0, p1);
3928 var = var1;
3929 RET_LABEL:;
3930 return var;
3931 }
3932 /* method model#MClassType#resolve_for for (self: MClassType, MType, nullable MClassType, MModule, Bool): MClassType */
3933 val* model__MClassType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3934 val* var /* : MClassType */;
3935 val* var_mtype /* var mtype: MType */;
3936 val* var_anchor /* var anchor: nullable MClassType */;
3937 val* var_mmodule /* var mmodule: MModule */;
3938 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
3939 var_mtype = p0;
3940 var_anchor = p1;
3941 var_mmodule = p2;
3942 var_cleanup_virtual = p3;
3943 var = self;
3944 goto RET_LABEL;
3945 RET_LABEL:;
3946 return var;
3947 }
3948 /* method model#MClassType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
3949 val* VIRTUAL_model__MClassType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3950 val* var /* : MType */;
3951 val* var1 /* : MClassType */;
3952 var1 = model__MClassType__resolve_for(self, p0, p1, p2, p3);
3953 var = var1;
3954 RET_LABEL:;
3955 return var;
3956 }
3957 /* method model#MClassType#can_resolve_for for (self: MClassType, MType, nullable MClassType, MModule): Bool */
3958 short int model__MClassType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3959 short int var /* : Bool */;
3960 val* var_mtype /* var mtype: MType */;
3961 val* var_anchor /* var anchor: nullable MClassType */;
3962 val* var_mmodule /* var mmodule: MModule */;
3963 short int var1 /* : Bool */;
3964 var_mtype = p0;
3965 var_anchor = p1;
3966 var_mmodule = p2;
3967 var1 = 1;
3968 var = var1;
3969 goto RET_LABEL;
3970 RET_LABEL:;
3971 return var;
3972 }
3973 /* method model#MClassType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
3974 short int VIRTUAL_model__MClassType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3975 short int var /* : Bool */;
3976 short int var1 /* : Bool */;
3977 var1 = model__MClassType__can_resolve_for(self, p0, p1, p2);
3978 var = var1;
3979 RET_LABEL:;
3980 return var;
3981 }
3982 /* method model#MClassType#collect_mclassdefs for (self: MClassType, MModule): Set[MClassDef] */
3983 val* model__MClassType__collect_mclassdefs(val* self, val* p0) {
3984 val* var /* : Set[MClassDef] */;
3985 val* var_mmodule /* var mmodule: MModule */;
3986 short int var1 /* : Bool */;
3987 short int var2 /* : Bool */;
3988 val* var3 /* : HashMap[MModule, Set[MClassDef]] */;
3989 val* var_cache /* var cache: HashMap[MModule, Set[MClassDef]] */;
3990 short int var4 /* : Bool */;
3991 short int var5 /* : Bool */;
3992 val* var6 /* : nullable Object */;
3993 var_mmodule = p0;
3994 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
3995 var2 = !var1;
3996 if (!var2) {
3997 fprintf(stderr, "Runtime error: %s", "Assert failed");
3998 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 929);
3999 exit(1);
4000 }
4001 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclassdefs_cache]))(self) /* collect_mclassdefs_cache on <self:MClassType>*/;
4002 var_cache = var3;
4003 var4 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_cache, var_mmodule) /* has_key on <var_cache:HashMap[MModule, Set[MClassDef]]>*/;
4004 var5 = !var4;
4005 if (var5){
4006 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__collect_things]))(self, var_mmodule) /* collect_things on <self:MClassType>*/;
4007 } else {
4008 }
4009 var6 = ((val* (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_cache, var_mmodule) /* [] on <var_cache:HashMap[MModule, Set[MClassDef]]>*/;
4010 var = var6;
4011 goto RET_LABEL;
4012 RET_LABEL:;
4013 return var;
4014 }
4015 /* method model#MClassType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
4016 val* VIRTUAL_model__MClassType__collect_mclassdefs(val* self, val* p0) {
4017 val* var /* : Set[MClassDef] */;
4018 val* var1 /* : Set[MClassDef] */;
4019 var1 = model__MClassType__collect_mclassdefs(self, p0);
4020 var = var1;
4021 RET_LABEL:;
4022 return var;
4023 }
4024 /* method model#MClassType#collect_mclasses for (self: MClassType, MModule): Set[MClass] */
4025 val* model__MClassType__collect_mclasses(val* self, val* p0) {
4026 val* var /* : Set[MClass] */;
4027 val* var_mmodule /* var mmodule: MModule */;
4028 short int var1 /* : Bool */;
4029 short int var2 /* : Bool */;
4030 val* var3 /* : HashMap[MModule, Set[MClass]] */;
4031 val* var_cache /* var cache: HashMap[MModule, Set[MClass]] */;
4032 short int var4 /* : Bool */;
4033 short int var5 /* : Bool */;
4034 val* var6 /* : nullable Object */;
4035 var_mmodule = p0;
4036 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
4037 var2 = !var1;
4038 if (!var2) {
4039 fprintf(stderr, "Runtime error: %s", "Assert failed");
4040 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 939);
4041 exit(1);
4042 }
4043 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclasses_cache]))(self) /* collect_mclasses_cache on <self:MClassType>*/;
4044 var_cache = var3;
4045 var4 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_cache, var_mmodule) /* has_key on <var_cache:HashMap[MModule, Set[MClass]]>*/;
4046 var5 = !var4;
4047 if (var5){
4048 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__collect_things]))(self, var_mmodule) /* collect_things on <self:MClassType>*/;
4049 } else {
4050 }
4051 var6 = ((val* (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_cache, var_mmodule) /* [] on <var_cache:HashMap[MModule, Set[MClass]]>*/;
4052 var = var6;
4053 goto RET_LABEL;
4054 RET_LABEL:;
4055 return var;
4056 }
4057 /* method model#MClassType#collect_mclasses for (self: Object, MModule): Set[MClass] */
4058 val* VIRTUAL_model__MClassType__collect_mclasses(val* self, val* p0) {
4059 val* var /* : Set[MClass] */;
4060 val* var1 /* : Set[MClass] */;
4061 var1 = model__MClassType__collect_mclasses(self, p0);
4062 var = var1;
4063 RET_LABEL:;
4064 return var;
4065 }
4066 /* method model#MClassType#collect_mtypes for (self: MClassType, MModule): Set[MClassType] */
4067 val* model__MClassType__collect_mtypes(val* self, val* p0) {
4068 val* var /* : Set[MClassType] */;
4069 val* var_mmodule /* var mmodule: MModule */;
4070 short int var1 /* : Bool */;
4071 short int var2 /* : Bool */;
4072 val* var3 /* : HashMap[MModule, Set[MClassType]] */;
4073 val* var_cache /* var cache: HashMap[MModule, Set[MClassType]] */;
4074 short int var4 /* : Bool */;
4075 short int var5 /* : Bool */;
4076 val* var6 /* : nullable Object */;
4077 var_mmodule = p0;
4078 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
4079 var2 = !var1;
4080 if (!var2) {
4081 fprintf(stderr, "Runtime error: %s", "Assert failed");
4082 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 949);
4083 exit(1);
4084 }
4085 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mtypes_cache]))(self) /* collect_mtypes_cache on <self:MClassType>*/;
4086 var_cache = var3;
4087 var4 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_cache, var_mmodule) /* has_key on <var_cache:HashMap[MModule, Set[MClassType]]>*/;
4088 var5 = !var4;
4089 if (var5){
4090 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__collect_things]))(self, var_mmodule) /* collect_things on <self:MClassType>*/;
4091 } else {
4092 }
4093 var6 = ((val* (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_cache, var_mmodule) /* [] on <var_cache:HashMap[MModule, Set[MClassType]]>*/;
4094 var = var6;
4095 goto RET_LABEL;
4096 RET_LABEL:;
4097 return var;
4098 }
4099 /* method model#MClassType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
4100 val* VIRTUAL_model__MClassType__collect_mtypes(val* self, val* p0) {
4101 val* var /* : Set[MClassType] */;
4102 val* var1 /* : Set[MClassType] */;
4103 var1 = model__MClassType__collect_mtypes(self, p0);
4104 var = var1;
4105 RET_LABEL:;
4106 return var;
4107 }
4108 /* method model#MClassType#collect_things for (self: MClassType, MModule) */
4109 void model__MClassType__collect_things(val* self, val* p0) {
4110 val* var_mmodule /* var mmodule: MModule */;
4111 val* var /* : HashSet[MClassDef] */;
4112 val* var_res /* var res: HashSet[MClassDef] */;
4113 val* var1 /* : HashSet[MClass] */;
4114 val* var_seen /* var seen: HashSet[MClass] */;
4115 val* var2 /* : HashSet[MClassType] */;
4116 val* var_types /* var types: HashSet[MClassType] */;
4117 val* var3 /* : MClass */;
4118 val* var4 /* : Array[MClass] */;
4119 long var5 /* : Int */;
4120 val* var_ /* var : Array[MClass] */;
4121 val* var6 /* : MClass */;
4122 val* var_todo /* var todo: Array[MClass] */;
4123 short int var7 /* : Bool */;
4124 short int var8 /* : Bool */;
4125 val* var9 /* : nullable Object */;
4126 val* var_mclass /* var mclass: MClass */;
4127 val* var10 /* : Array[MClassDef] */;
4128 val* var11 /* : Iterator[nullable Object] */;
4129 short int var12 /* : Bool */;
4130 val* var13 /* : nullable Object */;
4131 val* var_mclassdef /* var mclassdef: MClassDef */;
4132 val* var14 /* : POSetElement[MModule] */;
4133 val* var15 /* : MModule */;
4134 short int var16 /* : Bool */;
4135 short int var17 /* : Bool */;
4136 val* var18 /* : Array[MClassType] */;
4137 val* var19 /* : Iterator[nullable Object] */;
4138 short int var20 /* : Bool */;
4139 val* var21 /* : nullable Object */;
4140 val* var_supertype /* var supertype: MClassType */;
4141 val* var22 /* : MClass */;
4142 val* var_superclass /* var superclass: MClass */;
4143 short int var23 /* : Bool */;
4144 val* var26 /* : HashMap[MModule, Set[MClassDef]] */;
4145 val* var27 /* : HashMap[MModule, Set[MClass]] */;
4146 val* var28 /* : HashMap[MModule, Set[MClassType]] */;
4147 var_mmodule = p0;
4148 var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
4149 ((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashSet__init]))(var) /* init on <var:HashSet[MClassDef]>*/;
4150 CHECK_NEW_hash_collection__HashSet(var);
4151 var_res = var;
4152 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
4153 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
4154 CHECK_NEW_hash_collection__HashSet(var1);
4155 var_seen = var1;
4156 var2 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
4157 ((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashSet__init]))(var2) /* init on <var2:HashSet[MClassType]>*/;
4158 CHECK_NEW_hash_collection__HashSet(var2);
4159 var_types = var2;
4160 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4161 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var3) /* add on <var_seen:HashSet[MClass]>*/;
4162 var4 = NEW_array__Array(&type_array__Arraymodel__MClass);
4163 var5 = 1;
4164 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[MClass]>*/;
4165 CHECK_NEW_array__Array(var4);
4166 var_ = var4;
4167 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4168 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var6) /* push on <var_:Array[MClass]>*/;
4169 var_todo = var_;
4170 for(;;) {
4171 var7 = ((short int (*)(val*))(var_todo->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_todo) /* is_empty on <var_todo:Array[MClass]>*/;
4172 var8 = !var7;
4173 if (!var8) break;
4174 var9 = ((val* (*)(val*))(var_todo->class->vft[COLOR_abstract_collection__Sequence__pop]))(var_todo) /* pop on <var_todo:Array[MClass]>*/;
4175 var_mclass = var9;
4176 var10 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclassdefs]))(var_mclass) /* mclassdefs on <var_mclass:MClass>*/;
4177 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MClassDef]>*/;
4178 for(;;) {
4179 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
4180 if(!var12) break;
4181 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
4182 var_mclassdef = var13;
4183 var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
4184 var15 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
4185 var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var15) /* <= on <var14:POSetElement[MModule]>*/;
4186 var17 = !var16;
4187 if (var17){
4188 goto CONTINUE_label;
4189 } else {
4190 }
4191 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_mclassdef) /* add on <var_res:HashSet[MClassDef]>*/;
4192 var18 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__supertypes]))(var_mclassdef) /* supertypes on <var_mclassdef:MClassDef>*/;
4193 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[MClassType]>*/;
4194 for(;;) {
4195 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
4196 if(!var20) break;
4197 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
4198 var_supertype = var21;
4199 ((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var_supertype) /* add on <var_types:HashSet[MClassType]>*/;
4200 var22 = ((val* (*)(val*))(var_supertype->class->vft[COLOR_model__MClassType__mclass]))(var_supertype) /* mclass on <var_supertype:MClassType>*/;
4201 var_superclass = var22;
4202 var23 = ((short int (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__Collection__has]))(var_seen, var_superclass) /* has on <var_seen:HashSet[MClass]>*/;
4203 if (var23){
4204 goto CONTINUE_label24;
4205 } else {
4206 }
4207 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var_superclass) /* add on <var_seen:HashSet[MClass]>*/;
4208 ((void (*)(val*, val*))(var_todo->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_todo, var_superclass) /* add on <var_todo:Array[MClass]>*/;
4209 CONTINUE_label24: (void)0;
4210 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
4211 }
4212 BREAK_label24: (void)0;
4213 CONTINUE_label: (void)0;
4214 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
4215 }
4216 BREAK_label: (void)0;
4217 CONTINUE_label25: (void)0;
4218 }
4219 BREAK_label25: (void)0;
4220 var26 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclassdefs_cache]))(self) /* collect_mclassdefs_cache on <self:MClassType>*/;
4221 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var26, var_mmodule, var_res) /* []= on <var26:HashMap[MModule, Set[MClassDef]]>*/;
4222 var27 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclasses_cache]))(self) /* collect_mclasses_cache on <self:MClassType>*/;
4223 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var27, var_mmodule, var_seen) /* []= on <var27:HashMap[MModule, Set[MClass]]>*/;
4224 var28 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mtypes_cache]))(self) /* collect_mtypes_cache on <self:MClassType>*/;
4225 ((void (*)(val*, val*, val*))(var28->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var28, var_mmodule, var_types) /* []= on <var28:HashMap[MModule, Set[MClassType]]>*/;
4226 RET_LABEL:;
4227 }
4228 /* method model#MClassType#collect_things for (self: Object, MModule) */
4229 void VIRTUAL_model__MClassType__collect_things(val* self, val* p0) {
4230 model__MClassType__collect_things(self, p0);
4231 RET_LABEL:;
4232 }
4233 /* method model#MClassType#collect_mclassdefs_cache for (self: MClassType): HashMap[MModule, Set[MClassDef]] */
4234 val* model__MClassType__collect_mclassdefs_cache(val* self) {
4235 val* var /* : HashMap[MModule, Set[MClassDef]] */;
4236 val* var1 /* : HashMap[MModule, Set[MClassDef]] */;
4237 var1 = self->attrs[COLOR_model__MClassType___64dcollect_mclassdefs_cache].val; /* @collect_mclassdefs_cache on <self:MClassType> */
4238 if (var1 == NULL) {
4239 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mclassdefs_cache");
4240 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 987);
4241 exit(1);
4242 }
4243 var = var1;
4244 RET_LABEL:;
4245 return var;
4246 }
4247 /* method model#MClassType#collect_mclassdefs_cache for (self: Object): HashMap[MModule, Set[MClassDef]] */
4248 val* VIRTUAL_model__MClassType__collect_mclassdefs_cache(val* self) {
4249 val* var /* : HashMap[MModule, Set[MClassDef]] */;
4250 val* var1 /* : HashMap[MModule, Set[MClassDef]] */;
4251 var1 = model__MClassType__collect_mclassdefs_cache(self);
4252 var = var1;
4253 RET_LABEL:;
4254 return var;
4255 }
4256 /* method model#MClassType#collect_mclassdefs_cache= for (self: MClassType, HashMap[MModule, Set[MClassDef]]) */
4257 void model__MClassType__collect_mclassdefs_cache_61d(val* self, val* p0) {
4258 self->attrs[COLOR_model__MClassType___64dcollect_mclassdefs_cache].val = p0; /* @collect_mclassdefs_cache on <self:MClassType> */
4259 RET_LABEL:;
4260 }
4261 /* method model#MClassType#collect_mclassdefs_cache= for (self: Object, HashMap[MModule, Set[MClassDef]]) */
4262 void VIRTUAL_model__MClassType__collect_mclassdefs_cache_61d(val* self, val* p0) {
4263 model__MClassType__collect_mclassdefs_cache_61d(self, p0);
4264 RET_LABEL:;
4265 }
4266 /* method model#MClassType#collect_mclasses_cache for (self: MClassType): HashMap[MModule, Set[MClass]] */
4267 val* model__MClassType__collect_mclasses_cache(val* self) {
4268 val* var /* : HashMap[MModule, Set[MClass]] */;
4269 val* var1 /* : HashMap[MModule, Set[MClass]] */;
4270 var1 = self->attrs[COLOR_model__MClassType___64dcollect_mclasses_cache].val; /* @collect_mclasses_cache on <self:MClassType> */
4271 if (var1 == NULL) {
4272 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mclasses_cache");
4273 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 988);
4274 exit(1);
4275 }
4276 var = var1;
4277 RET_LABEL:;
4278 return var;
4279 }
4280 /* method model#MClassType#collect_mclasses_cache for (self: Object): HashMap[MModule, Set[MClass]] */
4281 val* VIRTUAL_model__MClassType__collect_mclasses_cache(val* self) {
4282 val* var /* : HashMap[MModule, Set[MClass]] */;
4283 val* var1 /* : HashMap[MModule, Set[MClass]] */;
4284 var1 = model__MClassType__collect_mclasses_cache(self);
4285 var = var1;
4286 RET_LABEL:;
4287 return var;
4288 }
4289 /* method model#MClassType#collect_mclasses_cache= for (self: MClassType, HashMap[MModule, Set[MClass]]) */
4290 void model__MClassType__collect_mclasses_cache_61d(val* self, val* p0) {
4291 self->attrs[COLOR_model__MClassType___64dcollect_mclasses_cache].val = p0; /* @collect_mclasses_cache on <self:MClassType> */
4292 RET_LABEL:;
4293 }
4294 /* method model#MClassType#collect_mclasses_cache= for (self: Object, HashMap[MModule, Set[MClass]]) */
4295 void VIRTUAL_model__MClassType__collect_mclasses_cache_61d(val* self, val* p0) {
4296 model__MClassType__collect_mclasses_cache_61d(self, p0);
4297 RET_LABEL:;
4298 }
4299 /* method model#MClassType#collect_mtypes_cache for (self: MClassType): HashMap[MModule, Set[MClassType]] */
4300 val* model__MClassType__collect_mtypes_cache(val* self) {
4301 val* var /* : HashMap[MModule, Set[MClassType]] */;
4302 val* var1 /* : HashMap[MModule, Set[MClassType]] */;
4303 var1 = self->attrs[COLOR_model__MClassType___64dcollect_mtypes_cache].val; /* @collect_mtypes_cache on <self:MClassType> */
4304 if (var1 == NULL) {
4305 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mtypes_cache");
4306 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 989);
4307 exit(1);
4308 }
4309 var = var1;
4310 RET_LABEL:;
4311 return var;
4312 }
4313 /* method model#MClassType#collect_mtypes_cache for (self: Object): HashMap[MModule, Set[MClassType]] */
4314 val* VIRTUAL_model__MClassType__collect_mtypes_cache(val* self) {
4315 val* var /* : HashMap[MModule, Set[MClassType]] */;
4316 val* var1 /* : HashMap[MModule, Set[MClassType]] */;
4317 var1 = model__MClassType__collect_mtypes_cache(self);
4318 var = var1;
4319 RET_LABEL:;
4320 return var;
4321 }
4322 /* method model#MClassType#collect_mtypes_cache= for (self: MClassType, HashMap[MModule, Set[MClassType]]) */
4323 void model__MClassType__collect_mtypes_cache_61d(val* self, val* p0) {
4324 self->attrs[COLOR_model__MClassType___64dcollect_mtypes_cache].val = p0; /* @collect_mtypes_cache on <self:MClassType> */
4325 RET_LABEL:;
4326 }
4327 /* method model#MClassType#collect_mtypes_cache= for (self: Object, HashMap[MModule, Set[MClassType]]) */
4328 void VIRTUAL_model__MClassType__collect_mtypes_cache_61d(val* self, val* p0) {
4329 model__MClassType__collect_mtypes_cache_61d(self, p0);
4330 RET_LABEL:;
4331 }
4332 /* method model#MGenericType#init for (self: MGenericType, MClass, Array[MType]) */
4333 void model__MGenericType__init(val* self, val* p0, val* p1) {
4334 val* var_mclass /* var mclass: MClass */;
4335 val* var_arguments /* var arguments: Array[MType] */;
4336 val* var /* : MClass */;
4337 long var1 /* : Int */;
4338 long var2 /* : Int */;
4339 short int var3 /* : Bool */;
4340 short int var5 /* : Bool */;
4341 short int var6 /* : Bool */;
4342 val* var7 /* : Iterator[nullable Object] */;
4343 short int var8 /* : Bool */;
4344 val* var9 /* : nullable Object */;
4345 val* var_t /* var t: MType */;
4346 short int var10 /* : Bool */;
4347 short int var11 /* : Bool */;
4348 static val* varonce;
4349 val* var12 /* : String */;
4350 char* var13 /* : NativeString */;
4351 long var14 /* : Int */;
4352 val* var15 /* : String */;
4353 static val* varonce16;
4354 val* var17 /* : String */;
4355 char* var18 /* : NativeString */;
4356 long var19 /* : Int */;
4357 val* var20 /* : String */;
4358 val* var21 /* : String */;
4359 static val* varonce22;
4360 val* var23 /* : String */;
4361 char* var24 /* : NativeString */;
4362 long var25 /* : Int */;
4363 val* var26 /* : String */;
4364 val* var27 /* : Array[Object] */;
4365 long var28 /* : Int */;
4366 val* var29 /* : NativeArray[Object] */;
4367 val* var30 /* : String */;
4368 var_mclass = p0;
4369 var_arguments = p1;
4370 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__init]))(self, var_mclass) /* init on <self:MGenericType>*/;
4371 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MGenericType>*/;
4372 var1 = ((long (*)(val*))(var->class->vft[COLOR_model__MClass__arity]))(var) /* arity on <var:MClass>*/;
4373 var2 = ((long (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_arguments) /* length on <var_arguments:Array[MType]>*/;
4374 { /* Inline kernel#Int#== (var1,var2) */
4375 var5 = var1 == var2;
4376 var3 = var5;
4377 goto RET_LABEL4;
4378 RET_LABEL4:(void)0;
4379 }
4380 if (!var3) {
4381 fprintf(stderr, "Runtime error: %s", "Assert failed");
4382 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1001);
4383 exit(1);
4384 }
4385 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__arguments_61d]))(self, var_arguments) /* arguments= on <self:MGenericType>*/;
4386 var6 = 0;
4387 ((void (*)(val*, short int))(self->class->vft[COLOR_model__MGenericType__need_anchor_61d]))(self, var6) /* need_anchor= on <self:MGenericType>*/;
4388 var7 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_arguments) /* iterator on <var_arguments:Array[MType]>*/;
4389 for(;;) {
4390 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
4391 if(!var8) break;
4392 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
4393 var_t = var9;
4394 var10 = ((short int (*)(val*))(var_t->class->vft[COLOR_model__MType__need_anchor]))(var_t) /* need_anchor on <var_t:MType>*/;
4395 if (var10){
4396 var11 = 1;
4397 ((void (*)(val*, short int))(self->class->vft[COLOR_model__MGenericType__need_anchor_61d]))(self, var11) /* need_anchor= on <self:MGenericType>*/;
4398 goto BREAK_label;
4399 } else {
4400 }
4401 CONTINUE_label: (void)0;
4402 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
4403 }
4404 BREAK_label: (void)0;
4405 if (varonce) {
4406 var12 = varonce;
4407 } else {
4408 var13 = "[";
4409 var14 = 1;
4410 var15 = string__NativeString__to_s_with_length(var13, var14);
4411 var12 = var15;
4412 varonce = var12;
4413 }
4414 if (varonce16) {
4415 var17 = varonce16;
4416 } else {
4417 var18 = ", ";
4418 var19 = 2;
4419 var20 = string__NativeString__to_s_with_length(var18, var19);
4420 var17 = var20;
4421 varonce16 = var17;
4422 }
4423 var21 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var17) /* join on <var_arguments:Array[MType]>*/;
4424 if (varonce22) {
4425 var23 = varonce22;
4426 } else {
4427 var24 = "]";
4428 var25 = 1;
4429 var26 = string__NativeString__to_s_with_length(var24, var25);
4430 var23 = var26;
4431 varonce22 = var23;
4432 }
4433 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
4434 { /* var27 = array_instance Array[Object] */
4435 var28 = 4;
4436 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
4437 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var_mclass;
4438 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var12;
4439 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var21;
4440 ((struct instance_array__NativeArray*)var29)->values[3] = (val*) var23;
4441 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
4442 CHECK_NEW_array__Array(var27);
4443 }
4444 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
4445 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MGenericType__to_s_61d]))(self, var30) /* to_s= on <self:MGenericType>*/;
4446 RET_LABEL:;
4447 }
4448 /* method model#MGenericType#init for (self: Object, MClass, Array[MType]) */
4449 void VIRTUAL_model__MGenericType__init(val* self, val* p0, val* p1) {
4450 model__MGenericType__init(self, p0, p1);
4451 RET_LABEL:;
4452 }
4453 /* method model#MGenericType#to_s for (self: MGenericType): String */
4454 val* model__MGenericType__to_s(val* self) {
4455 val* var /* : String */;
4456 val* var1 /* : String */;
4457 var1 = self->attrs[COLOR_model__MGenericType___64dto_s].val; /* @to_s on <self:MGenericType> */
4458 if (var1 == NULL) {
4459 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
4460 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1015);
4461 exit(1);
4462 }
4463 var = var1;
4464 RET_LABEL:;
4465 return var;
4466 }
4467 /* method model#MGenericType#to_s for (self: Object): String */
4468 val* VIRTUAL_model__MGenericType__to_s(val* self) {
4469 val* var /* : String */;
4470 val* var1 /* : String */;
4471 var1 = model__MGenericType__to_s(self);
4472 var = var1;
4473 RET_LABEL:;
4474 return var;
4475 }
4476 /* method model#MGenericType#to_s= for (self: MGenericType, String) */
4477 void model__MGenericType__to_s_61d(val* self, val* p0) {
4478 self->attrs[COLOR_model__MGenericType___64dto_s].val = p0; /* @to_s on <self:MGenericType> */
4479 RET_LABEL:;
4480 }
4481 /* method model#MGenericType#to_s= for (self: Object, String) */
4482 void VIRTUAL_model__MGenericType__to_s_61d(val* self, val* p0) {
4483 model__MGenericType__to_s_61d(self, p0);
4484 RET_LABEL:;
4485 }
4486 /* method model#MGenericType#need_anchor for (self: MGenericType): Bool */
4487 short int model__MGenericType__need_anchor(val* self) {
4488 short int var /* : Bool */;
4489 short int var1 /* : Bool */;
4490 var1 = self->attrs[COLOR_model__MGenericType___64dneed_anchor].s; /* @need_anchor on <self:MGenericType> */
4491 var = var1;
4492 RET_LABEL:;
4493 return var;
4494 }
4495 /* method model#MGenericType#need_anchor for (self: Object): Bool */
4496 short int VIRTUAL_model__MGenericType__need_anchor(val* self) {
4497 short int var /* : Bool */;
4498 short int var1 /* : Bool */;
4499 var1 = model__MGenericType__need_anchor(self);
4500 var = var1;
4501 RET_LABEL:;
4502 return var;
4503 }
4504 /* method model#MGenericType#need_anchor= for (self: MGenericType, Bool) */
4505 void model__MGenericType__need_anchor_61d(val* self, short int p0) {
4506 self->attrs[COLOR_model__MGenericType___64dneed_anchor].s = p0; /* @need_anchor on <self:MGenericType> */
4507 RET_LABEL:;
4508 }
4509 /* method model#MGenericType#need_anchor= for (self: Object, Bool) */
4510 void VIRTUAL_model__MGenericType__need_anchor_61d(val* self, short int p0) {
4511 model__MGenericType__need_anchor_61d(self, p0);
4512 RET_LABEL:;
4513 }
4514 /* method model#MGenericType#resolve_for for (self: MGenericType, MType, nullable MClassType, MModule, Bool): MType */
4515 val* model__MGenericType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4516 val* var /* : MType */;
4517 val* var_mtype /* var mtype: MType */;
4518 val* var_anchor /* var anchor: nullable MClassType */;
4519 val* var_mmodule /* var mmodule: MModule */;
4520 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
4521 short int var1 /* : Bool */;
4522 short int var2 /* : Bool */;
4523 short int var3 /* : Bool */;
4524 val* var4 /* : Array[MType] */;
4525 val* var_types /* var types: Array[MType] */;
4526 val* var5 /* : Array[MType] */;
4527 val* var6 /* : Iterator[nullable Object] */;
4528 short int var7 /* : Bool */;
4529 val* var8 /* : nullable Object */;
4530 val* var_t /* var t: MType */;
4531 val* var9 /* : MType */;
4532 val* var10 /* : MClass */;
4533 val* var11 /* : MClassType */;
4534 var_mtype = p0;
4535 var_anchor = p1;
4536 var_mmodule = p2;
4537 var_cleanup_virtual = p3;
4538 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MGenericType>*/;
4539 var2 = !var1;
4540 if (var2){
4541 var = self;
4542 goto RET_LABEL;
4543 } else {
4544 }
4545 var3 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MGenericType>*/;
4546 if (!var3) {
4547 fprintf(stderr, "Runtime error: %s", "Assert failed");
4548 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1024);
4549 exit(1);
4550 }
4551 var4 = NEW_array__Array(&type_array__Arraymodel__MType);
4552 ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MType]>*/;
4553 CHECK_NEW_array__Array(var4);
4554 var_types = var4;
4555 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4556 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:Array[MType]>*/;
4557 for(;;) {
4558 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
4559 if(!var7) break;
4560 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
4561 var_t = var8;
4562 var9 = ((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>*/;
4563 ((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var9) /* add on <var_types:Array[MType]>*/;
4564 CONTINUE_label: (void)0;
4565 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
4566 }
4567 BREAK_label: (void)0;
4568 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MGenericType>*/;
4569 var11 = ((val* (*)(val*, val*))(var10->class->vft[COLOR_model__MClass__get_mtype]))(var10, var_types) /* get_mtype on <var10:MClass>*/;
4570 var = var11;
4571 goto RET_LABEL;
4572 RET_LABEL:;
4573 return var;
4574 }
4575 /* method model#MGenericType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
4576 val* VIRTUAL_model__MGenericType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4577 val* var /* : MType */;
4578 val* var1 /* : MType */;
4579 var1 = model__MGenericType__resolve_for(self, p0, p1, p2, p3);
4580 var = var1;
4581 RET_LABEL:;
4582 return var;
4583 }
4584 /* method model#MGenericType#can_resolve_for for (self: MGenericType, MType, nullable MClassType, MModule): Bool */
4585 short int model__MGenericType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
4586 short int var /* : Bool */;
4587 val* var_mtype /* var mtype: MType */;
4588 val* var_anchor /* var anchor: nullable MClassType */;
4589 val* var_mmodule /* var mmodule: MModule */;
4590 short int var1 /* : Bool */;
4591 short int var2 /* : Bool */;
4592 short int var3 /* : Bool */;
4593 val* var4 /* : Array[MType] */;
4594 val* var5 /* : Iterator[nullable Object] */;
4595 short int var6 /* : Bool */;
4596 val* var7 /* : nullable Object */;
4597 val* var_t /* var t: MType */;
4598 short int var8 /* : Bool */;
4599 short int var9 /* : Bool */;
4600 short int var10 /* : Bool */;
4601 short int var11 /* : Bool */;
4602 var_mtype = p0;
4603 var_anchor = p1;
4604 var_mmodule = p2;
4605 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MGenericType>*/;
4606 var2 = !var1;
4607 if (var2){
4608 var3 = 1;
4609 var = var3;
4610 goto RET_LABEL;
4611 } else {
4612 }
4613 var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4614 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Array[MType]>*/;
4615 for(;;) {
4616 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
4617 if(!var6) break;
4618 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
4619 var_t = var7;
4620 var8 = ((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>*/;
4621 var9 = !var8;
4622 if (var9){
4623 var10 = 0;
4624 var = var10;
4625 goto RET_LABEL;
4626 } else {
4627 }
4628 CONTINUE_label: (void)0;
4629 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
4630 }
4631 BREAK_label: (void)0;
4632 var11 = 1;
4633 var = var11;
4634 goto RET_LABEL;
4635 RET_LABEL:;
4636 return var;
4637 }
4638 /* method model#MGenericType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
4639 short int VIRTUAL_model__MGenericType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
4640 short int var /* : Bool */;
4641 short int var1 /* : Bool */;
4642 var1 = model__MGenericType__can_resolve_for(self, p0, p1, p2);
4643 var = var1;
4644 RET_LABEL:;
4645 return var;
4646 }
4647 /* method model#MGenericType#depth for (self: MGenericType): Int */
4648 long model__MGenericType__depth(val* self) {
4649 long var /* : Int */;
4650 long var1 /* : Int */;
4651 long var_dmax /* var dmax: Int */;
4652 val* var2 /* : Array[MType] */;
4653 val* var3 /* : Iterator[nullable Object] */;
4654 short int var4 /* : Bool */;
4655 val* var5 /* : nullable Object */;
4656 val* var_a /* var a: MType */;
4657 long var6 /* : Int */;
4658 long var_d /* var d: Int */;
4659 short int var7 /* : Bool */;
4660 short int var9 /* : Bool */;
4661 int cltype;
4662 int idtype;
4663 const char* var_class_name;
4664 short int var10 /* : Bool */;
4665 long var11 /* : Int */;
4666 long var12 /* : Int */;
4667 long var14 /* : Int */;
4668 var1 = 0;
4669 var_dmax = var1;
4670 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4671 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MType]>*/;
4672 for(;;) {
4673 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4674 if(!var4) break;
4675 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4676 var_a = var5;
4677 var6 = ((long (*)(val*))(var_a->class->vft[COLOR_model__MType__depth]))(var_a) /* depth on <var_a:MType>*/;
4678 var_d = var6;
4679 { /* Inline kernel#Int#> (var_d,var_dmax) */
4680 /* Covariant cast for argument 0 (i) <var_dmax:Int> isa OTHER */
4681 /* <var_dmax:Int> isa OTHER */
4682 var9 = 1; /* easy <var_dmax:Int> isa OTHER*/
4683 if (!var9) {
4684 var_class_name = type_kernel__Int.name;
4685 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4686 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
4687 exit(1);
4688 }
4689 var10 = var_d > var_dmax;
4690 var7 = var10;
4691 goto RET_LABEL8;
4692 RET_LABEL8:(void)0;
4693 }
4694 if (var7){
4695 var_dmax = var_d;
4696 } else {
4697 }
4698 CONTINUE_label: (void)0;
4699 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4700 }
4701 BREAK_label: (void)0;
4702 var11 = 1;
4703 { /* Inline kernel#Int#+ (var_dmax,var11) */
4704 var14 = var_dmax + var11;
4705 var12 = var14;
4706 goto RET_LABEL13;
4707 RET_LABEL13:(void)0;
4708 }
4709 var = var12;
4710 goto RET_LABEL;
4711 RET_LABEL:;
4712 return var;
4713 }
4714 /* method model#MGenericType#depth for (self: Object): Int */
4715 long VIRTUAL_model__MGenericType__depth(val* self) {
4716 long var /* : Int */;
4717 long var1 /* : Int */;
4718 var1 = model__MGenericType__depth(self);
4719 var = var1;
4720 RET_LABEL:;
4721 return var;
4722 }
4723 /* method model#MGenericType#length for (self: MGenericType): Int */
4724 long model__MGenericType__length(val* self) {
4725 long var /* : Int */;
4726 long var1 /* : Int */;
4727 long var_res /* var res: Int */;
4728 val* var2 /* : Array[MType] */;
4729 val* var3 /* : Iterator[nullable Object] */;
4730 short int var4 /* : Bool */;
4731 val* var5 /* : nullable Object */;
4732 val* var_a /* var a: MType */;
4733 long var6 /* : Int */;
4734 long var7 /* : Int */;
4735 long var9 /* : Int */;
4736 var1 = 1;
4737 var_res = var1;
4738 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4739 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MType]>*/;
4740 for(;;) {
4741 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4742 if(!var4) break;
4743 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4744 var_a = var5;
4745 var6 = ((long (*)(val*))(var_a->class->vft[COLOR_model__MType__length]))(var_a) /* length on <var_a:MType>*/;
4746 { /* Inline kernel#Int#+ (var_res,var6) */
4747 var9 = var_res + var6;
4748 var7 = var9;
4749 goto RET_LABEL8;
4750 RET_LABEL8:(void)0;
4751 }
4752 var_res = var7;
4753 CONTINUE_label: (void)0;
4754 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4755 }
4756 BREAK_label: (void)0;
4757 var = var_res;
4758 goto RET_LABEL;
4759 RET_LABEL:;
4760 return var;
4761 }
4762 /* method model#MGenericType#length for (self: Object): Int */
4763 long VIRTUAL_model__MGenericType__length(val* self) {
4764 long var /* : Int */;
4765 long var1 /* : Int */;
4766 var1 = model__MGenericType__length(self);
4767 var = var1;
4768 RET_LABEL:;
4769 return var;
4770 }
4771 /* method model#MVirtualType#mproperty for (self: MVirtualType): MProperty */
4772 val* model__MVirtualType__mproperty(val* self) {
4773 val* var /* : MProperty */;
4774 val* var1 /* : MProperty */;
4775 var1 = self->attrs[COLOR_model__MVirtualType___64dmproperty].val; /* @mproperty on <self:MVirtualType> */
4776 if (var1 == NULL) {
4777 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
4778 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1066);
4779 exit(1);
4780 }
4781 var = var1;
4782 RET_LABEL:;
4783 return var;
4784 }
4785 /* method model#MVirtualType#mproperty for (self: Object): MProperty */
4786 val* VIRTUAL_model__MVirtualType__mproperty(val* self) {
4787 val* var /* : MProperty */;
4788 val* var1 /* : MProperty */;
4789 var1 = model__MVirtualType__mproperty(self);
4790 var = var1;
4791 RET_LABEL:;
4792 return var;
4793 }
4794 /* method model#MVirtualType#mproperty= for (self: MVirtualType, MProperty) */
4795 void model__MVirtualType__mproperty_61d(val* self, val* p0) {
4796 self->attrs[COLOR_model__MVirtualType___64dmproperty].val = p0; /* @mproperty on <self:MVirtualType> */
4797 RET_LABEL:;
4798 }
4799 /* method model#MVirtualType#mproperty= for (self: Object, MProperty) */
4800 void VIRTUAL_model__MVirtualType__mproperty_61d(val* self, val* p0) {
4801 model__MVirtualType__mproperty_61d(self, p0);
4802 RET_LABEL:;
4803 }
4804 /* method model#MVirtualType#model for (self: MVirtualType): Model */
4805 val* model__MVirtualType__model(val* self) {
4806 val* var /* : Model */;
4807 val* var1 /* : MProperty */;
4808 val* var2 /* : MClassDef */;
4809 val* var3 /* : MModule */;
4810 val* var4 /* : Model */;
4811 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
4812 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var1) /* intro_mclassdef on <var1:MProperty>*/;
4813 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:MClassDef>*/;
4814 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model_base__MModule__model]))(var3) /* model on <var3:MModule>*/;
4815 var = var4;
4816 goto RET_LABEL;
4817 RET_LABEL:;
4818 return var;
4819 }
4820 /* method model#MVirtualType#model for (self: Object): Model */
4821 val* VIRTUAL_model__MVirtualType__model(val* self) {
4822 val* var /* : Model */;
4823 val* var1 /* : Model */;
4824 var1 = model__MVirtualType__model(self);
4825 var = var1;
4826 RET_LABEL:;
4827 return var;
4828 }
4829 /* method model#MVirtualType#lookup_bound for (self: MVirtualType, MModule, MType): MType */
4830 val* model__MVirtualType__lookup_bound(val* self, val* p0, val* p1) {
4831 val* var /* : MType */;
4832 val* var_mmodule /* var mmodule: MModule */;
4833 val* var_resolved_receiver /* var resolved_receiver: MType */;
4834 short int var1 /* : Bool */;
4835 short int var2 /* : Bool */;
4836 val* var3 /* : MProperty */;
4837 val* var4 /* : Array[MPropDef] */;
4838 val* var_props /* var props: Array[MPropDef] */;
4839 short int var5 /* : Bool */;
4840 long var6 /* : Int */;
4841 long var7 /* : Int */;
4842 short int var8 /* : Bool */;
4843 short int var10 /* : Bool */;
4844 val* var11 /* : nullable Object */;
4845 short int var12 /* : Bool */;
4846 int cltype;
4847 int idtype;
4848 const char* var_class_name;
4849 val* var13 /* : nullable MType */;
4850 val* var14 /* : ArraySet[MType] */;
4851 val* var_types /* var types: ArraySet[MType] */;
4852 val* var15 /* : Iterator[nullable Object] */;
4853 short int var16 /* : Bool */;
4854 val* var17 /* : nullable Object */;
4855 val* var_p /* var p: MPropDef */;
4856 short int var18 /* : Bool */;
4857 int cltype19;
4858 int idtype20;
4859 const char* var_class_name21;
4860 val* var22 /* : nullable MType */;
4861 long var23 /* : Int */;
4862 long var24 /* : Int */;
4863 short int var25 /* : Bool */;
4864 short int var27 /* : Bool */;
4865 val* var28 /* : nullable Object */;
4866 var_mmodule = p0;
4867 var_resolved_receiver = p1;
4868 var1 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:MType>*/;
4869 var2 = !var1;
4870 if (!var2) {
4871 fprintf(stderr, "Runtime error: %s", "Assert failed");
4872 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1080);
4873 exit(1);
4874 }
4875 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
4876 var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_definitions]))(var3, var_mmodule, var_resolved_receiver) /* lookup_definitions on <var3:MProperty>*/;
4877 var_props = var4;
4878 var5 = ((short int (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_props) /* is_empty on <var_props:Array[MPropDef]>*/;
4879 if (var5){
4880 fprintf(stderr, "Runtime error: %s", "Aborted");
4881 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1083);
4882 exit(1);
4883 } else {
4884 var6 = ((long (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__length]))(var_props) /* length on <var_props:Array[MPropDef]>*/;
4885 var7 = 1;
4886 { /* Inline kernel#Int#== (var6,var7) */
4887 var10 = var6 == var7;
4888 var8 = var10;
4889 goto RET_LABEL9;
4890 RET_LABEL9:(void)0;
4891 }
4892 if (var8){
4893 var11 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__first]))(var_props) /* first on <var_props:Array[MPropDef]>*/;
4894 /* <var11:nullable Object(MPropDef)> isa MVirtualTypeDef */
4895 cltype = type_model__MVirtualTypeDef.color;
4896 idtype = type_model__MVirtualTypeDef.id;
4897 if(cltype >= var11->type->table_size) {
4898 var12 = 0;
4899 } else {
4900 var12 = var11->type->type_table[cltype] == idtype;
4901 }
4902 if (!var12) {
4903 var_class_name = var11 == NULL ? "null" : var11->type->name;
4904 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name);
4905 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1085);
4906 exit(1);
4907 }
4908 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var11) /* bound on <var11:MPropDef(MVirtualTypeDef)>*/;
4909 if (var13 == NULL) {
4910 fprintf(stderr, "Runtime error: %s", "Cast failed");
4911 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1085);
4912 exit(1);
4913 }
4914 var = var13;
4915 goto RET_LABEL;
4916 } else {
4917 }
4918 }
4919 var14 = NEW_array__ArraySet(&type_array__ArraySetmodel__MType);
4920 ((void (*)(val*))(var14->class->vft[COLOR_array__ArraySet__init]))(var14) /* init on <var14:ArraySet[MType]>*/;
4921 CHECK_NEW_array__ArraySet(var14);
4922 var_types = var14;
4923 var15 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:Array[MPropDef]>*/;
4924 for(;;) {
4925 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
4926 if(!var16) break;
4927 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
4928 var_p = var17;
4929 /* <var_p:MPropDef> isa MVirtualTypeDef */
4930 cltype19 = type_model__MVirtualTypeDef.color;
4931 idtype20 = type_model__MVirtualTypeDef.id;
4932 if(cltype19 >= var_p->type->table_size) {
4933 var18 = 0;
4934 } else {
4935 var18 = var_p->type->type_table[cltype19] == idtype20;
4936 }
4937 if (!var18) {
4938 var_class_name21 = var_p == NULL ? "null" : var_p->type->name;
4939 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name21);
4940 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1089);
4941 exit(1);
4942 }
4943 var22 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var_p) /* bound on <var_p:MPropDef(MVirtualTypeDef)>*/;
4944 if (var22 == NULL) {
4945 fprintf(stderr, "Runtime error: %s", "Cast failed");
4946 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1089);
4947 exit(1);
4948 }
4949 ((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var22) /* add on <var_types:ArraySet[MType]>*/;
4950 CONTINUE_label: (void)0;
4951 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
4952 }
4953 BREAK_label: (void)0;
4954 var23 = ((long (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_types) /* length on <var_types:ArraySet[MType]>*/;
4955 var24 = 1;
4956 { /* Inline kernel#Int#== (var23,var24) */
4957 var27 = var23 == var24;
4958 var25 = var27;
4959 goto RET_LABEL26;
4960 RET_LABEL26:(void)0;
4961 }
4962 if (var25){
4963 var28 = ((val* (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__first]))(var_types) /* first on <var_types:ArraySet[MType]>*/;
4964 var = var28;
4965 goto RET_LABEL;
4966 } else {
4967 }
4968 fprintf(stderr, "Runtime error: %s", "Aborted");
4969 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1094);
4970 exit(1);
4971 RET_LABEL:;
4972 return var;
4973 }
4974 /* method model#MVirtualType#lookup_bound for (self: Object, MModule, MType): MType */
4975 val* VIRTUAL_model__MVirtualType__lookup_bound(val* self, val* p0, val* p1) {
4976 val* var /* : MType */;
4977 val* var1 /* : MType */;
4978 var1 = model__MVirtualType__lookup_bound(self, p0, p1);
4979 var = var1;
4980 RET_LABEL:;
4981 return var;
4982 }
4983 /* method model#MVirtualType#resolve_for for (self: MVirtualType, MType, nullable MClassType, MModule, Bool): MType */
4984 val* model__MVirtualType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4985 val* var /* : MType */;
4986 val* var_mtype /* var mtype: MType */;
4987 val* var_anchor /* var anchor: nullable MClassType */;
4988 val* var_mmodule /* var mmodule: MModule */;
4989 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
4990 short int var1 /* : Bool */;
4991 short int var2 /* : Bool */;
4992 val* var3 /* : null */;
4993 short int var4 /* : Bool */;
4994 val* var5 /* : null */;
4995 short int var6 /* : Bool */;
4996 val* var7 /* : MType */;
4997 val* var_resolved_reciever /* var resolved_reciever: nullable Object */;
4998 val* var8 /* : MType */;
4999 val* var_verbatim_bound /* var verbatim_bound: MType */;
5000 val* var9 /* : MType */;
5001 val* var_res /* var res: MType */;
5002 short int var10 /* : Bool */;
5003 int cltype;
5004 int idtype;
5005 val* var11 /* : MType */;
5006 short int var12 /* : Bool */;
5007 int cltype13;
5008 int idtype14;
5009 const char* var_class_name;
5010 val* var15 /* : MClass */;
5011 val* var16 /* : MClassKind */;
5012 val* var17 /* : MClassKind */;
5013 short int var18 /* : Bool */;
5014 short int var19 /* : Bool */;
5015 int cltype20;
5016 int idtype21;
5017 short int var22 /* : Bool */;
5018 short int var23 /* : Bool */;
5019 int cltype24;
5020 int idtype25;
5021 short int var_ /* var : Bool */;
5022 val* var26 /* : MClass */;
5023 val* var27 /* : MClassKind */;
5024 val* var28 /* : MClassKind */;
5025 short int var29 /* : Bool */;
5026 var_mtype = p0;
5027 var_anchor = p1;
5028 var_mmodule = p2;
5029 var_cleanup_virtual = p3;
5030 var1 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MVirtualType>*/;
5031 if (!var1) {
5032 fprintf(stderr, "Runtime error: %s", "Assert failed");
5033 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1099);
5034 exit(1);
5035 }
5036 var2 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5037 if (var2){
5038 var3 = NULL;
5039 if (var_anchor == NULL) {
5040 var4 = 0; /* is null */
5041 } else {
5042 var4 = 1; /* arg is null and recv is not */
5043 }
5044 if (!var4) {
5045 fprintf(stderr, "Runtime error: %s", "Assert failed");
5046 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1106);
5047 exit(1);
5048 }
5049 var5 = NULL;
5050 var6 = 1;
5051 var7 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var_anchor, var5, var_mmodule, var6) /* resolve_for on <var_mtype:MType>*/;
5052 var_resolved_reciever = var7;
5053 } else {
5054 var_resolved_reciever = var_mtype;
5055 }
5056 var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MVirtualType__lookup_bound]))(self, var_mmodule, var_resolved_reciever) /* lookup_bound on <self:MVirtualType>*/;
5057 var_verbatim_bound = var8;
5058 var9 = ((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>*/;
5059 var_res = var9;
5060 if (var_cleanup_virtual){
5061 var = var_res;
5062 goto RET_LABEL;
5063 } else {
5064 }
5065 /* <var_resolved_reciever:nullable Object(MType)> isa MNullableType */
5066 cltype = type_model__MNullableType.color;
5067 idtype = type_model__MNullableType.id;
5068 if(cltype >= var_resolved_reciever->type->table_size) {
5069 var10 = 0;
5070 } else {
5071 var10 = var_resolved_reciever->type->type_table[cltype] == idtype;
5072 }
5073 if (var10){
5074 var11 = ((val* (*)(val*))(var_resolved_reciever->class->vft[COLOR_model__MNullableType__mtype]))(var_resolved_reciever) /* mtype on <var_resolved_reciever:nullable Object(MNullableType)>*/;
5075 var_resolved_reciever = var11;
5076 } else {
5077 }
5078 /* <var_resolved_reciever:nullable Object(MType)> isa MClassType */
5079 cltype13 = type_model__MClassType.color;
5080 idtype14 = type_model__MClassType.id;
5081 if(cltype13 >= var_resolved_reciever->type->table_size) {
5082 var12 = 0;
5083 } else {
5084 var12 = var_resolved_reciever->type->type_table[cltype13] == idtype14;
5085 }
5086 if (!var12) {
5087 var_class_name = var_resolved_reciever == NULL ? "null" : var_resolved_reciever->type->name;
5088 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5089 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1122);
5090 exit(1);
5091 }
5092 var15 = ((val* (*)(val*))(var_resolved_reciever->class->vft[COLOR_model__MClassType__mclass]))(var_resolved_reciever) /* mclass on <var_resolved_reciever:MType(MClassType)>*/;
5093 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__kind]))(var15) /* kind on <var15:MClass>*/;
5094 var17 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MVirtualType>*/;
5095 var18 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_kernel__Object___61d_61d]))(var16, var17) /* == on <var16:MClassKind>*/;
5096 if (var18){
5097 var = var_res;
5098 goto RET_LABEL;
5099 } else {
5100 }
5101 /* <var_res:MType> isa MVirtualType */
5102 cltype20 = type_model__MVirtualType.color;
5103 idtype21 = type_model__MVirtualType.id;
5104 if(cltype20 >= var_res->type->table_size) {
5105 var19 = 0;
5106 } else {
5107 var19 = var_res->type->type_table[cltype20] == idtype21;
5108 }
5109 if (var19){
5110 var = var_res;
5111 goto RET_LABEL;
5112 } else {
5113 }
5114 /* <var_res:MType> isa MClassType */
5115 cltype24 = type_model__MClassType.color;
5116 idtype25 = type_model__MClassType.id;
5117 if(cltype24 >= var_res->type->table_size) {
5118 var23 = 0;
5119 } else {
5120 var23 = var_res->type->type_table[cltype24] == idtype25;
5121 }
5122 var_ = var23;
5123 if (var23){
5124 var26 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MClassType__mclass]))(var_res) /* mclass on <var_res:MType(MClassType)>*/;
5125 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClass__kind]))(var26) /* kind on <var26:MClass>*/;
5126 var28 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MVirtualType>*/;
5127 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MClassKind>*/;
5128 var22 = var29;
5129 } else {
5130 var22 = var_;
5131 }
5132 if (var22){
5133 var = var_res;
5134 goto RET_LABEL;
5135 } else {
5136 }
5137 var = self;
5138 goto RET_LABEL;
5139 RET_LABEL:;
5140 return var;
5141 }
5142 /* method model#MVirtualType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
5143 val* VIRTUAL_model__MVirtualType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5144 val* var /* : MType */;
5145 val* var1 /* : MType */;
5146 var1 = model__MVirtualType__resolve_for(self, p0, p1, p2, p3);
5147 var = var1;
5148 RET_LABEL:;
5149 return var;
5150 }
5151 /* method model#MVirtualType#can_resolve_for for (self: MVirtualType, MType, nullable MClassType, MModule): Bool */
5152 short int model__MVirtualType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5153 short int var /* : Bool */;
5154 val* var_mtype /* var mtype: MType */;
5155 val* var_anchor /* var anchor: nullable MClassType */;
5156 val* var_mmodule /* var mmodule: MModule */;
5157 short int var1 /* : Bool */;
5158 val* var2 /* : null */;
5159 short int var3 /* : Bool */;
5160 val* var4 /* : MType */;
5161 val* var5 /* : MProperty */;
5162 short int var6 /* : Bool */;
5163 var_mtype = p0;
5164 var_anchor = p1;
5165 var_mmodule = p2;
5166 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5167 if (var1){
5168 var2 = NULL;
5169 if (var_anchor == NULL) {
5170 var3 = 0; /* is null */
5171 } else {
5172 var3 = 1; /* arg is null and recv is not */
5173 }
5174 if (!var3) {
5175 fprintf(stderr, "Runtime error: %s", "Assert failed");
5176 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1138);
5177 exit(1);
5178 }
5179 var4 = ((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>*/;
5180 var_mtype = var4;
5181 } else {
5182 }
5183 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
5184 var6 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, var5) /* has_mproperty on <var_mtype:MType>*/;
5185 var = var6;
5186 goto RET_LABEL;
5187 RET_LABEL:;
5188 return var;
5189 }
5190 /* method model#MVirtualType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
5191 short int VIRTUAL_model__MVirtualType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5192 short int var /* : Bool */;
5193 short int var1 /* : Bool */;
5194 var1 = model__MVirtualType__can_resolve_for(self, p0, p1, p2);
5195 var = var1;
5196 RET_LABEL:;
5197 return var;
5198 }
5199 /* method model#MVirtualType#to_s for (self: MVirtualType): String */
5200 val* model__MVirtualType__to_s(val* self) {
5201 val* var /* : String */;
5202 val* var1 /* : MProperty */;
5203 val* var2 /* : String */;
5204 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
5205 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MProperty>*/;
5206 var = var2;
5207 goto RET_LABEL;
5208 RET_LABEL:;
5209 return var;
5210 }
5211 /* method model#MVirtualType#to_s for (self: Object): String */
5212 val* VIRTUAL_model__MVirtualType__to_s(val* self) {
5213 val* var /* : String */;
5214 val* var1 /* : String */;
5215 var1 = model__MVirtualType__to_s(self);
5216 var = var1;
5217 RET_LABEL:;
5218 return var;
5219 }
5220 /* method model#MVirtualType#init for (self: MVirtualType, MProperty) */
5221 void model__MVirtualType__init(val* self, val* p0) {
5222 val* var_mproperty /* var mproperty: MProperty */;
5223 var_mproperty = p0;
5224 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MVirtualType>*/;
5225 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MVirtualType__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:MVirtualType>*/;
5226 RET_LABEL:;
5227 }
5228 /* method model#MVirtualType#init for (self: Object, MProperty) */
5229 void VIRTUAL_model__MVirtualType__init(val* self, val* p0) {
5230 model__MVirtualType__init(self, p0);
5231 RET_LABEL:;
5232 }
5233 /* method model#MParameterType#mclass for (self: MParameterType): MClass */
5234 val* model__MParameterType__mclass(val* self) {
5235 val* var /* : MClass */;
5236 val* var1 /* : MClass */;
5237 var1 = self->attrs[COLOR_model__MParameterType___64dmclass].val; /* @mclass on <self:MParameterType> */
5238 if (var1 == NULL) {
5239 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
5240 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1180);
5241 exit(1);
5242 }
5243 var = var1;
5244 RET_LABEL:;
5245 return var;
5246 }
5247 /* method model#MParameterType#mclass for (self: Object): MClass */
5248 val* VIRTUAL_model__MParameterType__mclass(val* self) {
5249 val* var /* : MClass */;
5250 val* var1 /* : MClass */;
5251 var1 = model__MParameterType__mclass(self);
5252 var = var1;
5253 RET_LABEL:;
5254 return var;
5255 }
5256 /* method model#MParameterType#mclass= for (self: MParameterType, MClass) */
5257 void model__MParameterType__mclass_61d(val* self, val* p0) {
5258 self->attrs[COLOR_model__MParameterType___64dmclass].val = p0; /* @mclass on <self:MParameterType> */
5259 RET_LABEL:;
5260 }
5261 /* method model#MParameterType#mclass= for (self: Object, MClass) */
5262 void VIRTUAL_model__MParameterType__mclass_61d(val* self, val* p0) {
5263 model__MParameterType__mclass_61d(self, p0);
5264 RET_LABEL:;
5265 }
5266 /* method model#MParameterType#model for (self: MParameterType): Model */
5267 val* model__MParameterType__model(val* self) {
5268 val* var /* : Model */;
5269 val* var1 /* : MClass */;
5270 val* var2 /* : MModule */;
5271 val* var3 /* : Model */;
5272 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5273 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro_mmodule]))(var1) /* intro_mmodule on <var1:MClass>*/;
5274 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model_base__MModule__model]))(var2) /* model on <var2:MModule>*/;
5275 var = var3;
5276 goto RET_LABEL;
5277 RET_LABEL:;
5278 return var;
5279 }
5280 /* method model#MParameterType#model for (self: Object): Model */
5281 val* VIRTUAL_model__MParameterType__model(val* self) {
5282 val* var /* : Model */;
5283 val* var1 /* : Model */;
5284 var1 = model__MParameterType__model(self);
5285 var = var1;
5286 RET_LABEL:;
5287 return var;
5288 }
5289 /* method model#MParameterType#rank for (self: MParameterType): Int */
5290 long model__MParameterType__rank(val* self) {
5291 long var /* : Int */;
5292 long var1 /* : Int */;
5293 var1 = self->attrs[COLOR_model__MParameterType___64drank].l; /* @rank on <self:MParameterType> */
5294 var = var1;
5295 RET_LABEL:;
5296 return var;
5297 }
5298 /* method model#MParameterType#rank for (self: Object): Int */
5299 long VIRTUAL_model__MParameterType__rank(val* self) {
5300 long var /* : Int */;
5301 long var1 /* : Int */;
5302 var1 = model__MParameterType__rank(self);
5303 var = var1;
5304 RET_LABEL:;
5305 return var;
5306 }
5307 /* method model#MParameterType#rank= for (self: MParameterType, Int) */
5308 void model__MParameterType__rank_61d(val* self, long p0) {
5309 self->attrs[COLOR_model__MParameterType___64drank].l = p0; /* @rank on <self:MParameterType> */
5310 RET_LABEL:;
5311 }
5312 /* method model#MParameterType#rank= for (self: Object, Int) */
5313 void VIRTUAL_model__MParameterType__rank_61d(val* self, long p0) {
5314 model__MParameterType__rank_61d(self, p0);
5315 RET_LABEL:;
5316 }
5317 /* method model#MParameterType#to_s for (self: MParameterType): String */
5318 val* model__MParameterType__to_s(val* self) {
5319 val* var /* : String */;
5320 val* var1 /* : Array[Object] */;
5321 long var2 /* : Int */;
5322 val* var_ /* var : Array[Object] */;
5323 static val* varonce;
5324 val* var3 /* : String */;
5325 char* var4 /* : NativeString */;
5326 long var5 /* : Int */;
5327 val* var6 /* : String */;
5328 val* var7 /* : MClass */;
5329 static val* varonce8;
5330 val* var9 /* : String */;
5331 char* var10 /* : NativeString */;
5332 long var11 /* : Int */;
5333 val* var12 /* : String */;
5334 long var13 /* : Int */;
5335 val* var14 /* : nullable Object */;
5336 static val* varonce15;
5337 val* var16 /* : String */;
5338 char* var17 /* : NativeString */;
5339 long var18 /* : Int */;
5340 val* var19 /* : String */;
5341 val* var20 /* : String */;
5342 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
5343 var2 = 5;
5344 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
5345 CHECK_NEW_array__Array(var1);
5346 var_ = var1;
5347 if (varonce) {
5348 var3 = varonce;
5349 } else {
5350 var4 = "";
5351 var5 = 0;
5352 var6 = string__NativeString__to_s_with_length(var4, var5);
5353 var3 = var6;
5354 varonce = var3;
5355 }
5356 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
5357 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5358 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
5359 if (varonce8) {
5360 var9 = varonce8;
5361 } else {
5362 var10 = "#";
5363 var11 = 1;
5364 var12 = string__NativeString__to_s_with_length(var10, var11);
5365 var9 = var12;
5366 varonce8 = var9;
5367 }
5368 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
5369 var13 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5370 var14 = BOX_kernel__Int(var13); /* autobox from Int to nullable Object */
5371 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
5372 if (varonce15) {
5373 var16 = varonce15;
5374 } else {
5375 var17 = "";
5376 var18 = 0;
5377 var19 = string__NativeString__to_s_with_length(var17, var18);
5378 var16 = var19;
5379 varonce15 = var16;
5380 }
5381 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
5382 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
5383 var = var20;
5384 goto RET_LABEL;
5385 RET_LABEL:;
5386 return var;
5387 }
5388 /* method model#MParameterType#to_s for (self: Object): String */
5389 val* VIRTUAL_model__MParameterType__to_s(val* self) {
5390 val* var /* : String */;
5391 val* var1 /* : String */;
5392 var1 = model__MParameterType__to_s(self);
5393 var = var1;
5394 RET_LABEL:;
5395 return var;
5396 }
5397 /* method model#MParameterType#lookup_bound for (self: MParameterType, MModule, MType): MType */
5398 val* model__MParameterType__lookup_bound(val* self, val* p0, val* p1) {
5399 val* var /* : MType */;
5400 val* var_mmodule /* var mmodule: MModule */;
5401 val* var_resolved_receiver /* var resolved_receiver: MType */;
5402 short int var1 /* : Bool */;
5403 short int var2 /* : Bool */;
5404 val* var3 /* : MClass */;
5405 val* var_goalclass /* var goalclass: MClass */;
5406 val* var4 /* : Set[MClassType] */;
5407 val* var_supertypes /* var supertypes: Set[MClassType] */;
5408 val* var5 /* : Iterator[nullable Object] */;
5409 short int var6 /* : Bool */;
5410 val* var7 /* : nullable Object */;
5411 val* var_t /* var t: MClassType */;
5412 val* var8 /* : MClass */;
5413 short int var9 /* : Bool */;
5414 val* var10 /* : Array[MType] */;
5415 long var11 /* : Int */;
5416 val* var12 /* : nullable Object */;
5417 val* var_res /* var res: MType */;
5418 var_mmodule = p0;
5419 var_resolved_receiver = p1;
5420 var1 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:MType>*/;
5421 var2 = !var1;
5422 if (!var2) {
5423 fprintf(stderr, "Runtime error: %s", "Assert failed");
5424 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1200);
5425 exit(1);
5426 }
5427 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5428 var_goalclass = var3;
5429 var4 = ((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>*/;
5430 var_supertypes = var4;
5431 var5 = ((val* (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supertypes) /* iterator on <var_supertypes:Set[MClassType]>*/;
5432 for(;;) {
5433 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
5434 if(!var6) break;
5435 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
5436 var_t = var7;
5437 var8 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__mclass]))(var_t) /* mclass on <var_t:MClassType>*/;
5438 var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___61d_61d]))(var8, var_goalclass) /* == on <var8:MClass>*/;
5439 if (var9){
5440 var10 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__arguments]))(var_t) /* arguments on <var_t:MClassType>*/;
5441 var11 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5442 var12 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var11) /* [] on <var10:Array[MType]>*/;
5443 var_res = var12;
5444 var = var_res;
5445 goto RET_LABEL;
5446 } else {
5447 }
5448 CONTINUE_label: (void)0;
5449 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
5450 }
5451 BREAK_label: (void)0;
5452 fprintf(stderr, "Runtime error: %s", "Aborted");
5453 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1211);
5454 exit(1);
5455 RET_LABEL:;
5456 return var;
5457 }
5458 /* method model#MParameterType#lookup_bound for (self: Object, MModule, MType): MType */
5459 val* VIRTUAL_model__MParameterType__lookup_bound(val* self, val* p0, val* p1) {
5460 val* var /* : MType */;
5461 val* var1 /* : MType */;
5462 var1 = model__MParameterType__lookup_bound(self, p0, p1);
5463 var = var1;
5464 RET_LABEL:;
5465 return var;
5466 }
5467 /* method model#MParameterType#resolve_for for (self: MParameterType, MType, nullable MClassType, MModule, Bool): MType */
5468 val* model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5469 val* var /* : MType */;
5470 val* var_mtype /* var mtype: MType */;
5471 val* var_anchor /* var anchor: nullable MClassType */;
5472 val* var_mmodule /* var mmodule: MModule */;
5473 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
5474 short int var1 /* : Bool */;
5475 short int var2 /* : Bool */;
5476 short int var3 /* : Bool */;
5477 int cltype;
5478 int idtype;
5479 short int var_ /* var : Bool */;
5480 val* var4 /* : MClass */;
5481 val* var5 /* : MClass */;
5482 short int var6 /* : Bool */;
5483 val* var7 /* : Array[MType] */;
5484 long var8 /* : Int */;
5485 val* var9 /* : nullable Object */;
5486 short int var10 /* : Bool */;
5487 val* var11 /* : null */;
5488 short int var12 /* : Bool */;
5489 val* var13 /* : MClass */;
5490 val* var14 /* : MClassType */;
5491 short int var15 /* : Bool */;
5492 val* var16 /* : MType */;
5493 val* var_resolved_receiver /* var resolved_receiver: nullable Object */;
5494 short int var17 /* : Bool */;
5495 int cltype18;
5496 int idtype19;
5497 val* var20 /* : MType */;
5498 short int var21 /* : Bool */;
5499 int cltype22;
5500 int idtype23;
5501 val* var24 /* : MClass */;
5502 val* var25 /* : MClass */;
5503 short int var26 /* : Bool */;
5504 val* var27 /* : Array[MType] */;
5505 long var28 /* : Int */;
5506 val* var29 /* : nullable Object */;
5507 short int var30 /* : Bool */;
5508 int cltype31;
5509 int idtype32;
5510 val* var33 /* : MType */;
5511 short int var34 /* : Bool */;
5512 int cltype35;
5513 int idtype36;
5514 val* var37 /* : MClass */;
5515 val* var38 /* : MClass */;
5516 short int var39 /* : Bool */;
5517 val* var40 /* : Array[MType] */;
5518 long var41 /* : Int */;
5519 val* var42 /* : nullable Object */;
5520 val* var_res /* var res: MType */;
5521 short int var43 /* : Bool */;
5522 val* var44 /* : null */;
5523 short int var45 /* : Bool */;
5524 val* var46 /* : null */;
5525 short int var47 /* : Bool */;
5526 val* var48 /* : MType */;
5527 val* var49 /* : MType */;
5528 val* var_verbatim_bound /* var verbatim_bound: MType */;
5529 val* var50 /* : MType */;
5530 val* var_res51 /* var res: MType */;
5531 var_mtype = p0;
5532 var_anchor = p1;
5533 var_mmodule = p2;
5534 var_cleanup_virtual = p3;
5535 var1 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MParameterType>*/;
5536 if (!var1) {
5537 fprintf(stderr, "Runtime error: %s", "Assert failed");
5538 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1216);
5539 exit(1);
5540 }
5541 /* <var_mtype:MType> isa MGenericType */
5542 cltype = type_model__MGenericType.color;
5543 idtype = type_model__MGenericType.id;
5544 if(cltype >= var_mtype->type->table_size) {
5545 var3 = 0;
5546 } else {
5547 var3 = var_mtype->type->type_table[cltype] == idtype;
5548 }
5549 var_ = var3;
5550 if (var3){
5551 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MType(MGenericType)>*/;
5552 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5553 var6 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___61d_61d]))(var4, var5) /* == on <var4:MClass>*/;
5554 var2 = var6;
5555 } else {
5556 var2 = var_;
5557 }
5558 if (var2){
5559 var7 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MType(MGenericType)>*/;
5560 var8 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5561 var9 = ((val* (*)(val*, long))(var7->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var7, var8) /* [] on <var7:Array[MType]>*/;
5562 var = var9;
5563 goto RET_LABEL;
5564 } else {
5565 }
5566 var10 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5567 if (var10){
5568 var11 = NULL;
5569 if (var_anchor == NULL) {
5570 var12 = 0; /* is null */
5571 } else {
5572 var12 = 1; /* arg is null and recv is not */
5573 }
5574 if (!var12) {
5575 fprintf(stderr, "Runtime error: %s", "Assert failed");
5576 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1229);
5577 exit(1);
5578 }
5579 var13 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
5580 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__mclass_type]))(var13) /* mclass_type on <var13:MClass>*/;
5581 var15 = 1;
5582 var16 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var14, var_anchor, var_mmodule, var15) /* resolve_for on <var_mtype:MType>*/;
5583 var_resolved_receiver = var16;
5584 } else {
5585 var_resolved_receiver = var_mtype;
5586 }
5587 /* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
5588 cltype18 = type_model__MNullableType.color;
5589 idtype19 = type_model__MNullableType.id;
5590 if(cltype18 >= var_resolved_receiver->type->table_size) {
5591 var17 = 0;
5592 } else {
5593 var17 = var_resolved_receiver->type->type_table[cltype18] == idtype19;
5594 }
5595 if (var17){
5596 var20 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MNullableType__mtype]))(var_resolved_receiver) /* mtype on <var_resolved_receiver:nullable Object(MNullableType)>*/;
5597 var_resolved_receiver = var20;
5598 } else {
5599 }
5600 /* <var_resolved_receiver:nullable Object(MType)> isa MParameterType */
5601 cltype22 = type_model__MParameterType.color;
5602 idtype23 = type_model__MParameterType.id;
5603 if(cltype22 >= var_resolved_receiver->type->table_size) {
5604 var21 = 0;
5605 } else {
5606 var21 = var_resolved_receiver->type->type_table[cltype22] == idtype23;
5607 }
5608 if (var21){
5609 var24 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MParameterType__mclass]))(var_resolved_receiver) /* mclass on <var_resolved_receiver:nullable Object(MParameterType)>*/;
5610 if (var_anchor == NULL) {
5611 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5612 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1236);
5613 exit(1);
5614 } else {
5615 var25 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType>*/;
5616 }
5617 var26 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_kernel__Object___61d_61d]))(var24, var25) /* == on <var24:MClass>*/;
5618 if (!var26) {
5619 fprintf(stderr, "Runtime error: %s", "Assert failed");
5620 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1236);
5621 exit(1);
5622 }
5623 if (var_anchor == NULL) {
5624 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5625 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1237);
5626 exit(1);
5627 } else {
5628 var27 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__arguments]))(var_anchor) /* arguments on <var_anchor:nullable MClassType>*/;
5629 }
5630 var28 = ((long (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MParameterType__rank]))(var_resolved_receiver) /* rank on <var_resolved_receiver:nullable Object(MParameterType)>*/;
5631 var29 = ((val* (*)(val*, long))(var27->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var27, var28) /* [] on <var27:Array[MType]>*/;
5632 var_resolved_receiver = var29;
5633 /* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
5634 cltype31 = type_model__MNullableType.color;
5635 idtype32 = type_model__MNullableType.id;
5636 if(cltype31 >= var_resolved_receiver->type->table_size) {
5637 var30 = 0;
5638 } else {
5639 var30 = var_resolved_receiver->type->type_table[cltype31] == idtype32;
5640 }
5641 if (var30){
5642 var33 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MNullableType__mtype]))(var_resolved_receiver) /* mtype on <var_resolved_receiver:nullable Object(MNullableType)>*/;
5643 var_resolved_receiver = var33;
5644 } else {
5645 }
5646 } else {
5647 }
5648 /* <var_resolved_receiver:nullable Object(MType)> isa MClassType */
5649 cltype35 = type_model__MClassType.color;
5650 idtype36 = type_model__MClassType.id;
5651 if(cltype35 >= var_resolved_receiver->type->table_size) {
5652 var34 = 0;
5653 } else {
5654 var34 = var_resolved_receiver->type->type_table[cltype35] == idtype36;
5655 }
5656 if (!var34) {
5657 fprintf(stderr, "Runtime error: %s", "Assert failed");
5658 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1240);
5659 exit(1);
5660 }
5661 var37 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MClassType__mclass]))(var_resolved_receiver) /* mclass on <var_resolved_receiver:nullable Object(MClassType)>*/;
5662 var38 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5663 var39 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___61d_61d]))(var37, var38) /* == on <var37:MClass>*/;
5664 if (var39){
5665 var40 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MClassType__arguments]))(var_resolved_receiver) /* arguments on <var_resolved_receiver:nullable Object(MClassType)>*/;
5666 var41 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5667 var42 = ((val* (*)(val*, long))(var40->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var40, var41) /* [] on <var40:Array[MType]>*/;
5668 var_res = var42;
5669 var = var_res;
5670 goto RET_LABEL;
5671 } else {
5672 }
5673 var43 = ((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)>*/;
5674 if (var43){
5675 var44 = NULL;
5676 if (var_anchor == NULL) {
5677 var45 = 0; /* is null */
5678 } else {
5679 var45 = 1; /* arg is null and recv is not */
5680 }
5681 if (!var45) {
5682 fprintf(stderr, "Runtime error: %s", "Assert failed");
5683 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1251);
5684 exit(1);
5685 }
5686 var46 = NULL;
5687 var47 = 0;
5688 var48 = ((val* (*)(val*, val*, val*, val*, short int))(var_resolved_receiver->class->vft[COLOR_model__MType__resolve_for]))(var_resolved_receiver, var_anchor, var46, var_mmodule, var47) /* resolve_for on <var_resolved_receiver:nullable Object(MClassType)>*/;
5689 var_resolved_receiver = var48;
5690 } else {
5691 }
5692 var49 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MParameterType__lookup_bound]))(self, var_mmodule, var_resolved_receiver) /* lookup_bound on <self:MParameterType>*/;
5693 var_verbatim_bound = var49;
5694 var50 = ((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>*/;
5695 var_res51 = var50;
5696 var = var_res51;
5697 goto RET_LABEL;
5698 RET_LABEL:;
5699 return var;
5700 }
5701 /* method model#MParameterType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
5702 val* VIRTUAL_model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5703 val* var /* : MType */;
5704 val* var1 /* : MType */;
5705 var1 = model__MParameterType__resolve_for(self, p0, p1, p2, p3);
5706 var = var1;
5707 RET_LABEL:;
5708 return var;
5709 }
5710 /* method model#MParameterType#can_resolve_for for (self: MParameterType, MType, nullable MClassType, MModule): Bool */
5711 short int model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5712 short int var /* : Bool */;
5713 val* var_mtype /* var mtype: MType */;
5714 val* var_anchor /* var anchor: nullable MClassType */;
5715 val* var_mmodule /* var mmodule: MModule */;
5716 short int var1 /* : Bool */;
5717 val* var2 /* : null */;
5718 short int var3 /* : Bool */;
5719 val* var4 /* : MType */;
5720 val* var5 /* : Set[MClassDef] */;
5721 val* var6 /* : MClass */;
5722 val* var7 /* : MClassDef */;
5723 short int var8 /* : Bool */;
5724 var_mtype = p0;
5725 var_anchor = p1;
5726 var_mmodule = p2;
5727 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5728 if (var1){
5729 var2 = NULL;
5730 if (var_anchor == NULL) {
5731 var3 = 0; /* is null */
5732 } else {
5733 var3 = 1; /* arg is null and recv is not */
5734 }
5735 if (!var3) {
5736 fprintf(stderr, "Runtime error: %s", "Assert failed");
5737 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1267);
5738 exit(1);
5739 }
5740 var4 = ((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>*/;
5741 var_mtype = var4;
5742 } else {
5743 }
5744 var5 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var_mmodule) /* collect_mclassdefs on <var_mtype:MType>*/;
5745 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5746 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MClass__intro]))(var6) /* intro on <var6:MClass>*/;
5747 var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var7) /* has on <var5:Set[MClassDef]>*/;
5748 var = var8;
5749 goto RET_LABEL;
5750 RET_LABEL:;
5751 return var;
5752 }
5753 /* method model#MParameterType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
5754 short int VIRTUAL_model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5755 short int var /* : Bool */;
5756 short int var1 /* : Bool */;
5757 var1 = model__MParameterType__can_resolve_for(self, p0, p1, p2);
5758 var = var1;
5759 RET_LABEL:;
5760 return var;
5761 }
5762 /* method model#MParameterType#init for (self: MParameterType, MClass, Int) */
5763 void model__MParameterType__init(val* self, val* p0, long p1) {
5764 val* var_mclass /* var mclass: MClass */;
5765 long var_rank /* var rank: Int */;
5766 var_mclass = p0;
5767 var_rank = p1;
5768 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MParameterType>*/;
5769 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MParameterType__mclass_61d]))(self, var_mclass) /* mclass= on <self:MParameterType>*/;
5770 ((void (*)(val*, long))(self->class->vft[COLOR_model__MParameterType__rank_61d]))(self, var_rank) /* rank= on <self:MParameterType>*/;
5771 RET_LABEL:;
5772 }
5773 /* method model#MParameterType#init for (self: Object, MClass, Int) */
5774 void VIRTUAL_model__MParameterType__init(val* self, val* p0, long p1) {
5775 model__MParameterType__init(self, p0, p1);
5776 RET_LABEL:;
5777 }
5778 /* method model#MNullableType#mtype for (self: MNullableType): MType */
5779 val* model__MNullableType__mtype(val* self) {
5780 val* var /* : MType */;
5781 val* var1 /* : MType */;
5782 var1 = self->attrs[COLOR_model__MNullableType___64dmtype].val; /* @mtype on <self:MNullableType> */
5783 if (var1 == NULL) {
5784 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
5785 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1284);
5786 exit(1);
5787 }
5788 var = var1;
5789 RET_LABEL:;
5790 return var;
5791 }
5792 /* method model#MNullableType#mtype for (self: Object): MType */
5793 val* VIRTUAL_model__MNullableType__mtype(val* self) {
5794 val* var /* : MType */;
5795 val* var1 /* : MType */;
5796 var1 = model__MNullableType__mtype(self);
5797 var = var1;
5798 RET_LABEL:;
5799 return var;
5800 }
5801 /* method model#MNullableType#mtype= for (self: MNullableType, MType) */
5802 void model__MNullableType__mtype_61d(val* self, val* p0) {
5803 self->attrs[COLOR_model__MNullableType___64dmtype].val = p0; /* @mtype on <self:MNullableType> */
5804 RET_LABEL:;
5805 }
5806 /* method model#MNullableType#mtype= for (self: Object, MType) */
5807 void VIRTUAL_model__MNullableType__mtype_61d(val* self, val* p0) {
5808 model__MNullableType__mtype_61d(self, p0);
5809 RET_LABEL:;
5810 }
5811 /* method model#MNullableType#model for (self: MNullableType): Model */
5812 val* model__MNullableType__model(val* self) {
5813 val* var /* : Model */;
5814 val* var1 /* : MType */;
5815 val* var2 /* : Model */;
5816 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5817 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MType__model]))(var1) /* model on <var1:MType>*/;
5818 var = var2;
5819 goto RET_LABEL;
5820 RET_LABEL:;
5821 return var;
5822 }
5823 /* method model#MNullableType#model for (self: Object): Model */
5824 val* VIRTUAL_model__MNullableType__model(val* self) {
5825 val* var /* : Model */;
5826 val* var1 /* : Model */;
5827 var1 = model__MNullableType__model(self);
5828 var = var1;
5829 RET_LABEL:;
5830 return var;
5831 }
5832 /* method model#MNullableType#init for (self: MNullableType, MType) */
5833 void model__MNullableType__init(val* self, val* p0) {
5834 val* var_mtype /* var mtype: MType */;
5835 static val* varonce;
5836 val* var /* : String */;
5837 char* var1 /* : NativeString */;
5838 long var2 /* : Int */;
5839 val* var3 /* : String */;
5840 val* var4 /* : Array[Object] */;
5841 long var5 /* : Int */;
5842 val* var6 /* : NativeArray[Object] */;
5843 val* var7 /* : String */;
5844 var_mtype = p0;
5845 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MNullableType>*/;
5846 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullableType__mtype_61d]))(self, var_mtype) /* mtype= on <self:MNullableType>*/;
5847 if (varonce) {
5848 var = varonce;
5849 } else {
5850 var1 = "nullable ";
5851 var2 = 9;
5852 var3 = string__NativeString__to_s_with_length(var1, var2);
5853 var = var3;
5854 varonce = var;
5855 }
5856 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
5857 { /* var4 = array_instance Array[Object] */
5858 var5 = 2;
5859 var6 = NEW_array__NativeArray(var5, &type_array__NativeArraykernel__Object);
5860 ((struct instance_array__NativeArray*)var6)->values[0] = (val*) var;
5861 ((struct instance_array__NativeArray*)var6)->values[1] = (val*) var_mtype;
5862 ((void (*)(val*, val*, long))(var4->class->vft[COLOR_array__Array__with_native]))(var4, var6, var5) /* with_native on <var4:Array[Object]>*/;
5863 CHECK_NEW_array__Array(var4);
5864 }
5865 var7 = ((val* (*)(val*))(var4->class->vft[COLOR_string__Object__to_s]))(var4) /* to_s on <var4:Array[Object]>*/;
5866 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullableType__to_s_61d]))(self, var7) /* to_s= on <self:MNullableType>*/;
5867 RET_LABEL:;
5868 }
5869 /* method model#MNullableType#init for (self: Object, MType) */
5870 void VIRTUAL_model__MNullableType__init(val* self, val* p0) {
5871 model__MNullableType__init(self, p0);
5872 RET_LABEL:;
5873 }
5874 /* method model#MNullableType#to_s for (self: MNullableType): String */
5875 val* model__MNullableType__to_s(val* self) {
5876 val* var /* : String */;
5877 val* var1 /* : String */;
5878 var1 = self->attrs[COLOR_model__MNullableType___64dto_s].val; /* @to_s on <self:MNullableType> */
5879 if (var1 == NULL) {
5880 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
5881 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1295);
5882 exit(1);
5883 }
5884 var = var1;
5885 RET_LABEL:;
5886 return var;
5887 }
5888 /* method model#MNullableType#to_s for (self: Object): String */
5889 val* VIRTUAL_model__MNullableType__to_s(val* self) {
5890 val* var /* : String */;
5891 val* var1 /* : String */;
5892 var1 = model__MNullableType__to_s(self);
5893 var = var1;
5894 RET_LABEL:;
5895 return var;
5896 }
5897 /* method model#MNullableType#to_s= for (self: MNullableType, String) */
5898 void model__MNullableType__to_s_61d(val* self, val* p0) {
5899 self->attrs[COLOR_model__MNullableType___64dto_s].val = p0; /* @to_s on <self:MNullableType> */
5900 RET_LABEL:;
5901 }
5902 /* method model#MNullableType#to_s= for (self: Object, String) */
5903 void VIRTUAL_model__MNullableType__to_s_61d(val* self, val* p0) {
5904 model__MNullableType__to_s_61d(self, p0);
5905 RET_LABEL:;
5906 }
5907 /* method model#MNullableType#need_anchor for (self: MNullableType): Bool */
5908 short int model__MNullableType__need_anchor(val* self) {
5909 short int var /* : Bool */;
5910 val* var1 /* : MType */;
5911 short int var2 /* : Bool */;
5912 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5913 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
5914 var = var2;
5915 goto RET_LABEL;
5916 RET_LABEL:;
5917 return var;
5918 }
5919 /* method model#MNullableType#need_anchor for (self: Object): Bool */
5920 short int VIRTUAL_model__MNullableType__need_anchor(val* self) {
5921 short int var /* : Bool */;
5922 short int var1 /* : Bool */;
5923 var1 = model__MNullableType__need_anchor(self);
5924 var = var1;
5925 RET_LABEL:;
5926 return var;
5927 }
5928 /* method model#MNullableType#as_nullable for (self: MNullableType): MType */
5929 val* model__MNullableType__as_nullable(val* self) {
5930 val* var /* : MType */;
5931 var = self;
5932 goto RET_LABEL;
5933 RET_LABEL:;
5934 return var;
5935 }
5936 /* method model#MNullableType#as_nullable for (self: Object): MType */
5937 val* VIRTUAL_model__MNullableType__as_nullable(val* self) {
5938 val* var /* : MType */;
5939 val* var1 /* : MType */;
5940 var1 = model__MNullableType__as_nullable(self);
5941 var = var1;
5942 RET_LABEL:;
5943 return var;
5944 }
5945 /* method model#MNullableType#resolve_for for (self: MNullableType, MType, nullable MClassType, MModule, Bool): MType */
5946 val* model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5947 val* var /* : MType */;
5948 val* var_mtype /* var mtype: MType */;
5949 val* var_anchor /* var anchor: nullable MClassType */;
5950 val* var_mmodule /* var mmodule: MModule */;
5951 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
5952 val* var1 /* : MType */;
5953 val* var2 /* : MType */;
5954 val* var_res /* var res: MType */;
5955 val* var3 /* : MType */;
5956 var_mtype = p0;
5957 var_anchor = p1;
5958 var_mmodule = p2;
5959 var_cleanup_virtual = p3;
5960 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5961 var2 = ((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>*/;
5962 var_res = var2;
5963 var3 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
5964 var = var3;
5965 goto RET_LABEL;
5966 RET_LABEL:;
5967 return var;
5968 }
5969 /* method model#MNullableType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
5970 val* VIRTUAL_model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5971 val* var /* : MType */;
5972 val* var1 /* : MType */;
5973 var1 = model__MNullableType__resolve_for(self, p0, p1, p2, p3);
5974 var = var1;
5975 RET_LABEL:;
5976 return var;
5977 }
5978 /* method model#MNullableType#can_resolve_for for (self: MNullableType, MType, nullable MClassType, MModule): Bool */
5979 short int model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5980 short int var /* : Bool */;
5981 val* var_mtype /* var mtype: MType */;
5982 val* var_anchor /* var anchor: nullable MClassType */;
5983 val* var_mmodule /* var mmodule: MModule */;
5984 val* var1 /* : MType */;
5985 short int var2 /* : Bool */;
5986 var_mtype = p0;
5987 var_anchor = p1;
5988 var_mmodule = p2;
5989 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5990 var2 = ((short int (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_model__MType__can_resolve_for]))(var1, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <var1:MType>*/;
5991 var = var2;
5992 goto RET_LABEL;
5993 RET_LABEL:;
5994 return var;
5995 }
5996 /* method model#MNullableType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
5997 short int VIRTUAL_model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5998 short int var /* : Bool */;
5999 short int var1 /* : Bool */;
6000 var1 = model__MNullableType__can_resolve_for(self, p0, p1, p2);
6001 var = var1;
6002 RET_LABEL:;
6003 return var;
6004 }
6005 /* method model#MNullableType#depth for (self: MNullableType): Int */
6006 long model__MNullableType__depth(val* self) {
6007 long var /* : Int */;
6008 val* var1 /* : MType */;
6009 long var2 /* : Int */;
6010 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6011 var2 = ((long (*)(val*))(var1->class->vft[COLOR_model__MType__depth]))(var1) /* depth on <var1:MType>*/;
6012 var = var2;
6013 goto RET_LABEL;
6014 RET_LABEL:;
6015 return var;
6016 }
6017 /* method model#MNullableType#depth for (self: Object): Int */
6018 long VIRTUAL_model__MNullableType__depth(val* self) {
6019 long var /* : Int */;
6020 long var1 /* : Int */;
6021 var1 = model__MNullableType__depth(self);
6022 var = var1;
6023 RET_LABEL:;
6024 return var;
6025 }
6026 /* method model#MNullableType#length for (self: MNullableType): Int */
6027 long model__MNullableType__length(val* self) {
6028 long var /* : Int */;
6029 val* var1 /* : MType */;
6030 long var2 /* : Int */;
6031 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6032 var2 = ((long (*)(val*))(var1->class->vft[COLOR_model__MType__length]))(var1) /* length on <var1:MType>*/;
6033 var = var2;
6034 goto RET_LABEL;
6035 RET_LABEL:;
6036 return var;
6037 }
6038 /* method model#MNullableType#length for (self: Object): Int */
6039 long VIRTUAL_model__MNullableType__length(val* self) {
6040 long var /* : Int */;
6041 long var1 /* : Int */;
6042 var1 = model__MNullableType__length(self);
6043 var = var1;
6044 RET_LABEL:;
6045 return var;
6046 }
6047 /* method model#MNullableType#collect_mclassdefs for (self: MNullableType, MModule): Set[MClassDef] */
6048 val* model__MNullableType__collect_mclassdefs(val* self, val* p0) {
6049 val* var /* : Set[MClassDef] */;
6050 val* var_mmodule /* var mmodule: MModule */;
6051 short int var1 /* : Bool */;
6052 short int var2 /* : Bool */;
6053 val* var3 /* : MType */;
6054 val* var4 /* : Set[MClassDef] */;
6055 var_mmodule = p0;
6056 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
6057 var2 = !var1;
6058 if (!var2) {
6059 fprintf(stderr, "Runtime error: %s", "Assert failed");
6060 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1316);
6061 exit(1);
6062 }
6063 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6064 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclassdefs]))(var3, var_mmodule) /* collect_mclassdefs on <var3:MType>*/;
6065 var = var4;
6066 goto RET_LABEL;
6067 RET_LABEL:;
6068 return var;
6069 }
6070 /* method model#MNullableType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
6071 val* VIRTUAL_model__MNullableType__collect_mclassdefs(val* self, val* p0) {
6072 val* var /* : Set[MClassDef] */;
6073 val* var1 /* : Set[MClassDef] */;
6074 var1 = model__MNullableType__collect_mclassdefs(self, p0);
6075 var = var1;
6076 RET_LABEL:;
6077 return var;
6078 }
6079 /* method model#MNullableType#collect_mclasses for (self: MNullableType, MModule): Set[MClass] */
6080 val* model__MNullableType__collect_mclasses(val* self, val* p0) {
6081 val* var /* : Set[MClass] */;
6082 val* var_mmodule /* var mmodule: MModule */;
6083 short int var1 /* : Bool */;
6084 short int var2 /* : Bool */;
6085 val* var3 /* : MType */;
6086 val* var4 /* : Set[MClass] */;
6087 var_mmodule = p0;
6088 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
6089 var2 = !var1;
6090 if (!var2) {
6091 fprintf(stderr, "Runtime error: %s", "Assert failed");
6092 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1322);
6093 exit(1);
6094 }
6095 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6096 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclasses]))(var3, var_mmodule) /* collect_mclasses on <var3:MType>*/;
6097 var = var4;
6098 goto RET_LABEL;
6099 RET_LABEL:;
6100 return var;
6101 }
6102 /* method model#MNullableType#collect_mclasses for (self: Object, MModule): Set[MClass] */
6103 val* VIRTUAL_model__MNullableType__collect_mclasses(val* self, val* p0) {
6104 val* var /* : Set[MClass] */;
6105 val* var1 /* : Set[MClass] */;
6106 var1 = model__MNullableType__collect_mclasses(self, p0);
6107 var = var1;
6108 RET_LABEL:;
6109 return var;
6110 }
6111 /* method model#MNullableType#collect_mtypes for (self: MNullableType, MModule): Set[MClassType] */
6112 val* model__MNullableType__collect_mtypes(val* self, val* p0) {
6113 val* var /* : Set[MClassType] */;
6114 val* var_mmodule /* var mmodule: MModule */;
6115 short int var1 /* : Bool */;
6116 short int var2 /* : Bool */;
6117 val* var3 /* : MType */;
6118 val* var4 /* : Set[MClassType] */;
6119 var_mmodule = p0;
6120 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
6121 var2 = !var1;
6122 if (!var2) {
6123 fprintf(stderr, "Runtime error: %s", "Assert failed");
6124 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1328);
6125 exit(1);
6126 }
6127 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6128 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mtypes]))(var3, var_mmodule) /* collect_mtypes on <var3:MType>*/;
6129 var = var4;
6130 goto RET_LABEL;
6131 RET_LABEL:;
6132 return var;
6133 }
6134 /* method model#MNullableType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
6135 val* VIRTUAL_model__MNullableType__collect_mtypes(val* self, val* p0) {
6136 val* var /* : Set[MClassType] */;
6137 val* var1 /* : Set[MClassType] */;
6138 var1 = model__MNullableType__collect_mtypes(self, p0);
6139 var = var1;
6140 RET_LABEL:;
6141 return var;
6142 }
6143 /* method model#MNullType#model for (self: MNullType): Model */
6144 val* model__MNullType__model(val* self) {
6145 val* var /* : Model */;
6146 val* var1 /* : Model */;
6147 var1 = self->attrs[COLOR_model__MNullType___64dmodel].val; /* @model on <self:MNullType> */
6148 if (var1 == NULL) {
6149 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @model");
6150 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1338);
6151 exit(1);
6152 }
6153 var = var1;
6154 RET_LABEL:;
6155 return var;
6156 }
6157 /* method model#MNullType#model for (self: Object): Model */
6158 val* VIRTUAL_model__MNullType__model(val* self) {
6159 val* var /* : Model */;
6160 val* var1 /* : Model */;
6161 var1 = model__MNullType__model(self);
6162 var = var1;
6163 RET_LABEL:;
6164 return var;
6165 }
6166 /* method model#MNullType#model= for (self: MNullType, Model) */
6167 void model__MNullType__model_61d(val* self, val* p0) {
6168 self->attrs[COLOR_model__MNullType___64dmodel].val = p0; /* @model on <self:MNullType> */
6169 RET_LABEL:;
6170 }
6171 /* method model#MNullType#model= for (self: Object, Model) */
6172 void VIRTUAL_model__MNullType__model_61d(val* self, val* p0) {
6173 model__MNullType__model_61d(self, p0);
6174 RET_LABEL:;
6175 }
6176 /* method model#MNullType#init for (self: MNullType, Model) */
6177 void model__MNullType__init(val* self, val* p0) {
6178 val* var_model /* var model: Model */;
6179 var_model = p0;
6180 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MNullType>*/;
6181 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullType__model_61d]))(self, var_model) /* model= on <self:MNullType>*/;
6182 RET_LABEL:;
6183 }
6184 /* method model#MNullType#init for (self: Object, Model) */
6185 void VIRTUAL_model__MNullType__init(val* self, val* p0) {
6186 model__MNullType__init(self, p0);
6187 RET_LABEL:;
6188 }
6189 /* method model#MNullType#to_s for (self: MNullType): String */
6190 val* model__MNullType__to_s(val* self) {
6191 val* var /* : String */;
6192 static val* varonce;
6193 val* var1 /* : String */;
6194 char* var2 /* : NativeString */;
6195 long var3 /* : Int */;
6196 val* var4 /* : String */;
6197 if (varonce) {
6198 var1 = varonce;
6199 } else {
6200 var2 = "null";
6201 var3 = 4;
6202 var4 = string__NativeString__to_s_with_length(var2, var3);
6203 var1 = var4;
6204 varonce = var1;
6205 }
6206 var = var1;
6207 goto RET_LABEL;
6208 RET_LABEL:;
6209 return var;
6210 }
6211 /* method model#MNullType#to_s for (self: Object): String */
6212 val* VIRTUAL_model__MNullType__to_s(val* self) {
6213 val* var /* : String */;
6214 val* var1 /* : String */;
6215 var1 = model__MNullType__to_s(self);
6216 var = var1;
6217 RET_LABEL:;
6218 return var;
6219 }
6220 /* method model#MNullType#as_nullable for (self: MNullType): MType */
6221 val* model__MNullType__as_nullable(val* self) {
6222 val* var /* : MType */;
6223 var = self;
6224 goto RET_LABEL;
6225 RET_LABEL:;
6226 return var;
6227 }
6228 /* method model#MNullType#as_nullable for (self: Object): MType */
6229 val* VIRTUAL_model__MNullType__as_nullable(val* self) {
6230 val* var /* : MType */;
6231 val* var1 /* : MType */;
6232 var1 = model__MNullType__as_nullable(self);
6233 var = var1;
6234 RET_LABEL:;
6235 return var;
6236 }
6237 /* method model#MNullType#need_anchor for (self: MNullType): Bool */
6238 short int model__MNullType__need_anchor(val* self) {
6239 short int var /* : Bool */;
6240 short int var1 /* : Bool */;
6241 var1 = 0;
6242 var = var1;
6243 goto RET_LABEL;
6244 RET_LABEL:;
6245 return var;
6246 }
6247 /* method model#MNullType#need_anchor for (self: Object): Bool */
6248 short int VIRTUAL_model__MNullType__need_anchor(val* self) {
6249 short int var /* : Bool */;
6250 short int var1 /* : Bool */;
6251 var1 = model__MNullType__need_anchor(self);
6252 var = var1;
6253 RET_LABEL:;
6254 return var;
6255 }
6256 /* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
6257 val* model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6258 val* var /* : MType */;
6259 val* var_mtype /* var mtype: MType */;
6260 val* var_anchor /* var anchor: nullable MClassType */;
6261 val* var_mmodule /* var mmodule: MModule */;
6262 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
6263 var_mtype = p0;
6264 var_anchor = p1;
6265 var_mmodule = p2;
6266 var_cleanup_virtual = p3;
6267 var = self;
6268 goto RET_LABEL;
6269 RET_LABEL:;
6270 return var;
6271 }
6272 /* method model#MNullType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
6273 val* VIRTUAL_model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6274 val* var /* : MType */;
6275 val* var1 /* : MType */;
6276 var1 = model__MNullType__resolve_for(self, p0, p1, p2, p3);
6277 var = var1;
6278 RET_LABEL:;
6279 return var;
6280 }
6281 /* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
6282 short int model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
6283 short int var /* : Bool */;
6284 val* var_mtype /* var mtype: MType */;
6285 val* var_anchor /* var anchor: nullable MClassType */;
6286 val* var_mmodule /* var mmodule: MModule */;
6287 short int var1 /* : Bool */;
6288 var_mtype = p0;
6289 var_anchor = p1;
6290 var_mmodule = p2;
6291 var1 = 1;
6292 var = var1;
6293 goto RET_LABEL;
6294 RET_LABEL:;
6295 return var;
6296 }
6297 /* method model#MNullType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
6298 short int VIRTUAL_model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
6299 short int var /* : Bool */;
6300 short int var1 /* : Bool */;
6301 var1 = model__MNullType__can_resolve_for(self, p0, p1, p2);
6302 var = var1;
6303 RET_LABEL:;
6304 return var;
6305 }
6306 /* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
6307 val* model__MNullType__collect_mclassdefs(val* self, val* p0) {
6308 val* var /* : Set[MClassDef] */;
6309 val* var_mmodule /* var mmodule: MModule */;
6310 val* var1 /* : HashSet[MClassDef] */;
6311 var_mmodule = p0;
6312 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
6313 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassDef]>*/;
6314 CHECK_NEW_hash_collection__HashSet(var1);
6315 var = var1;
6316 goto RET_LABEL;
6317 RET_LABEL:;
6318 return var;
6319 }
6320 /* method model#MNullType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
6321 val* VIRTUAL_model__MNullType__collect_mclassdefs(val* self, val* p0) {
6322 val* var /* : Set[MClassDef] */;
6323 val* var1 /* : Set[MClassDef] */;
6324 var1 = model__MNullType__collect_mclassdefs(self, p0);
6325 var = var1;
6326 RET_LABEL:;
6327 return var;
6328 }
6329 /* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
6330 val* model__MNullType__collect_mclasses(val* self, val* p0) {
6331 val* var /* : Set[MClass] */;
6332 val* var_mmodule /* var mmodule: MModule */;
6333 val* var1 /* : HashSet[MClass] */;
6334 var_mmodule = p0;
6335 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
6336 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
6337 CHECK_NEW_hash_collection__HashSet(var1);
6338 var = var1;
6339 goto RET_LABEL;
6340 RET_LABEL:;
6341 return var;
6342 }
6343 /* method model#MNullType#collect_mclasses for (self: Object, MModule): Set[MClass] */
6344 val* VIRTUAL_model__MNullType__collect_mclasses(val* self, val* p0) {
6345 val* var /* : Set[MClass] */;
6346 val* var1 /* : Set[MClass] */;
6347 var1 = model__MNullType__collect_mclasses(self, p0);
6348 var = var1;
6349 RET_LABEL:;
6350 return var;
6351 }
6352 /* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
6353 val* model__MNullType__collect_mtypes(val* self, val* p0) {
6354 val* var /* : Set[MClassType] */;
6355 val* var_mmodule /* var mmodule: MModule */;
6356 val* var1 /* : HashSet[MClassType] */;
6357 var_mmodule = p0;
6358 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
6359 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassType]>*/;
6360 CHECK_NEW_hash_collection__HashSet(var1);
6361 var = var1;
6362 goto RET_LABEL;
6363 RET_LABEL:;
6364 return var;
6365 }
6366 /* method model#MNullType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
6367 val* VIRTUAL_model__MNullType__collect_mtypes(val* self, val* p0) {
6368 val* var /* : Set[MClassType] */;
6369 val* var1 /* : Set[MClassType] */;
6370 var1 = model__MNullType__collect_mtypes(self, p0);
6371 var = var1;
6372 RET_LABEL:;
6373 return var;
6374 }
6375 /* method model#MSignature#mparameters for (self: MSignature): Array[MParameter] */
6376 val* model__MSignature__mparameters(val* self) {
6377 val* var /* : Array[MParameter] */;
6378 val* var1 /* : Array[MParameter] */;
6379 var1 = self->attrs[COLOR_model__MSignature___64dmparameters].val; /* @mparameters on <self:MSignature> */
6380 if (var1 == NULL) {
6381 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mparameters");
6382 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1360);
6383 exit(1);
6384 }
6385 var = var1;
6386 RET_LABEL:;
6387 return var;
6388 }
6389 /* method model#MSignature#mparameters for (self: Object): Array[MParameter] */
6390 val* VIRTUAL_model__MSignature__mparameters(val* self) {
6391 val* var /* : Array[MParameter] */;
6392 val* var1 /* : Array[MParameter] */;
6393 var1 = model__MSignature__mparameters(self);
6394 var = var1;
6395 RET_LABEL:;
6396 return var;
6397 }
6398 /* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
6399 void model__MSignature__mparameters_61d(val* self, val* p0) {
6400 self->attrs[COLOR_model__MSignature___64dmparameters].val = p0; /* @mparameters on <self:MSignature> */
6401 RET_LABEL:;
6402 }
6403 /* method model#MSignature#mparameters= for (self: Object, Array[MParameter]) */
6404 void VIRTUAL_model__MSignature__mparameters_61d(val* self, val* p0) {
6405 model__MSignature__mparameters_61d(self, p0);
6406 RET_LABEL:;
6407 }
6408 /* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
6409 val* model__MSignature__return_mtype(val* self) {
6410 val* var /* : nullable MType */;
6411 val* var1 /* : nullable MType */;
6412 var1 = self->attrs[COLOR_model__MSignature___64dreturn_mtype].val; /* @return_mtype on <self:MSignature> */
6413 var = var1;
6414 RET_LABEL:;
6415 return var;
6416 }
6417 /* method model#MSignature#return_mtype for (self: Object): nullable MType */
6418 val* VIRTUAL_model__MSignature__return_mtype(val* self) {
6419 val* var /* : nullable MType */;
6420 val* var1 /* : nullable MType */;
6421 var1 = model__MSignature__return_mtype(self);
6422 var = var1;
6423 RET_LABEL:;
6424 return var;
6425 }
6426 /* method model#MSignature#return_mtype= for (self: MSignature, nullable MType) */
6427 void model__MSignature__return_mtype_61d(val* self, val* p0) {
6428 self->attrs[COLOR_model__MSignature___64dreturn_mtype].val = p0; /* @return_mtype on <self:MSignature> */
6429 RET_LABEL:;
6430 }
6431 /* method model#MSignature#return_mtype= for (self: Object, nullable MType) */
6432 void VIRTUAL_model__MSignature__return_mtype_61d(val* self, val* p0) {
6433 model__MSignature__return_mtype_61d(self, p0);
6434 RET_LABEL:;
6435 }
6436 /* method model#MSignature#depth for (self: MSignature): Int */
6437 long model__MSignature__depth(val* self) {
6438 long var /* : Int */;
6439 long var1 /* : Int */;
6440 long var_dmax /* var dmax: Int */;
6441 val* var2 /* : nullable MType */;
6442 val* var_t /* var t: nullable MType */;
6443 val* var3 /* : null */;
6444 short int var4 /* : Bool */;
6445 long var5 /* : Int */;
6446 val* var6 /* : Array[MParameter] */;
6447 val* var7 /* : Iterator[nullable Object] */;
6448 short int var8 /* : Bool */;
6449 val* var9 /* : nullable Object */;
6450 val* var_p /* var p: MParameter */;
6451 val* var10 /* : MType */;
6452 long var11 /* : Int */;
6453 long var_d /* var d: Int */;
6454 short int var12 /* : Bool */;
6455 short int var14 /* : Bool */;
6456 int cltype;
6457 int idtype;
6458 const char* var_class_name;
6459 short int var15 /* : Bool */;
6460 long var16 /* : Int */;
6461 long var17 /* : Int */;
6462 long var19 /* : Int */;
6463 var1 = 0;
6464 var_dmax = var1;
6465 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6466 var_t = var2;
6467 var3 = NULL;
6468 if (var_t == NULL) {
6469 var4 = 0; /* is null */
6470 } else {
6471 var4 = 1; /* arg is null and recv is not */
6472 }
6473 if (var4){
6474 var5 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__depth]))(var_t) /* depth on <var_t:nullable MType(MType)>*/;
6475 var_dmax = var5;
6476 } else {
6477 }
6478 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6479 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MParameter]>*/;
6480 for(;;) {
6481 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
6482 if(!var8) break;
6483 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
6484 var_p = var9;
6485 var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
6486 var11 = ((long (*)(val*))(var10->class->vft[COLOR_model__MType__depth]))(var10) /* depth on <var10:MType>*/;
6487 var_d = var11;
6488 { /* Inline kernel#Int#> (var_d,var_dmax) */
6489 /* Covariant cast for argument 0 (i) <var_dmax:Int> isa OTHER */
6490 /* <var_dmax:Int> isa OTHER */
6491 var14 = 1; /* easy <var_dmax:Int> isa OTHER*/
6492 if (!var14) {
6493 var_class_name = type_kernel__Int.name;
6494 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6495 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6496 exit(1);
6497 }
6498 var15 = var_d > var_dmax;
6499 var12 = var15;
6500 goto RET_LABEL13;
6501 RET_LABEL13:(void)0;
6502 }
6503 if (var12){
6504 var_dmax = var_d;
6505 } else {
6506 }
6507 CONTINUE_label: (void)0;
6508 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
6509 }
6510 BREAK_label: (void)0;
6511 var16 = 1;
6512 { /* Inline kernel#Int#+ (var_dmax,var16) */
6513 var19 = var_dmax + var16;
6514 var17 = var19;
6515 goto RET_LABEL18;
6516 RET_LABEL18:(void)0;
6517 }
6518 var = var17;
6519 goto RET_LABEL;
6520 RET_LABEL:;
6521 return var;
6522 }
6523 /* method model#MSignature#depth for (self: Object): Int */
6524 long VIRTUAL_model__MSignature__depth(val* self) {
6525 long var /* : Int */;
6526 long var1 /* : Int */;
6527 var1 = model__MSignature__depth(self);
6528 var = var1;
6529 RET_LABEL:;
6530 return var;
6531 }
6532 /* method model#MSignature#length for (self: MSignature): Int */
6533 long model__MSignature__length(val* self) {
6534 long var /* : Int */;
6535 long var1 /* : Int */;
6536 long var_res /* var res: Int */;
6537 val* var2 /* : nullable MType */;
6538 val* var_t /* var t: nullable MType */;
6539 val* var3 /* : null */;
6540 short int var4 /* : Bool */;
6541 long var5 /* : Int */;
6542 long var6 /* : Int */;
6543 long var8 /* : Int */;
6544 val* var9 /* : Array[MParameter] */;
6545 val* var10 /* : Iterator[nullable Object] */;
6546 short int var11 /* : Bool */;
6547 val* var12 /* : nullable Object */;
6548 val* var_p /* var p: MParameter */;
6549 val* var13 /* : MType */;
6550 long var14 /* : Int */;
6551 long var15 /* : Int */;
6552 long var17 /* : Int */;
6553 var1 = 1;
6554 var_res = var1;
6555 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6556 var_t = var2;
6557 var3 = NULL;
6558 if (var_t == NULL) {
6559 var4 = 0; /* is null */
6560 } else {
6561 var4 = 1; /* arg is null and recv is not */
6562 }
6563 if (var4){
6564 var5 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__length]))(var_t) /* length on <var_t:nullable MType(MType)>*/;
6565 { /* Inline kernel#Int#+ (var_res,var5) */
6566 var8 = var_res + var5;
6567 var6 = var8;
6568 goto RET_LABEL7;
6569 RET_LABEL7:(void)0;
6570 }
6571 var_res = var6;
6572 } else {
6573 }
6574 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6575 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Array[MParameter]>*/;
6576 for(;;) {
6577 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
6578 if(!var11) break;
6579 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
6580 var_p = var12;
6581 var13 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
6582 var14 = ((long (*)(val*))(var13->class->vft[COLOR_model__MType__length]))(var13) /* length on <var13:MType>*/;
6583 { /* Inline kernel#Int#+ (var_res,var14) */
6584 var17 = var_res + var14;
6585 var15 = var17;
6586 goto RET_LABEL16;
6587 RET_LABEL16:(void)0;
6588 }
6589 var_res = var15;
6590 CONTINUE_label: (void)0;
6591 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
6592 }
6593 BREAK_label: (void)0;
6594 var = var_res;
6595 goto RET_LABEL;
6596 RET_LABEL:;
6597 return var;
6598 }
6599 /* method model#MSignature#length for (self: Object): Int */
6600 long VIRTUAL_model__MSignature__length(val* self) {
6601 long var /* : Int */;
6602 long var1 /* : Int */;
6603 var1 = model__MSignature__length(self);
6604 var = var1;
6605 RET_LABEL:;
6606 return var;
6607 }
6608 /* method model#MSignature#init for (self: MSignature, Array[MParameter], nullable MType) */
6609 void model__MSignature__init(val* self, val* p0, val* p1) {
6610 val* var_mparameters /* var mparameters: Array[MParameter] */;
6611 val* var_return_mtype /* var return_mtype: nullable MType */;
6612 long var /* : Int */;
6613 long var1 /* : Int */;
6614 long var3 /* : Int */;
6615 long var_vararg_rank /* var vararg_rank: Int */;
6616 val* var4 /* : Range[Int] */;
6617 long var5 /* : Int */;
6618 long var6 /* : Int */;
6619 val* var7 /* : Discrete */;
6620 val* var8 /* : Discrete */;
6621 val* var9 /* : Iterator[nullable Object] */;
6622 short int var10 /* : Bool */;
6623 val* var11 /* : nullable Object */;
6624 long var_i /* var i: Int */;
6625 long var12 /* : Int */;
6626 val* var13 /* : nullable Object */;
6627 val* var_parameter /* var parameter: MParameter */;
6628 short int var14 /* : Bool */;
6629 long var15 /* : Int */;
6630 long var16 /* : Int */;
6631 long var18 /* : Int */;
6632 short int var19 /* : Bool */;
6633 short int var21 /* : Bool */;
6634 var_mparameters = p0;
6635 var_return_mtype = p1;
6636 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MSignature>*/;
6637 var = 1;
6638 { /* Inline kernel#Int#unary - (var) */
6639 var3 = -var;
6640 var1 = var3;
6641 goto RET_LABEL2;
6642 RET_LABEL2:(void)0;
6643 }
6644 var_vararg_rank = var1;
6645 var4 = NEW_range__Range(&type_range__Rangekernel__Int);
6646 var5 = 0;
6647 var6 = ((long (*)(val*))(var_mparameters->class->vft[COLOR_abstract_collection__Collection__length]))(var_mparameters) /* length on <var_mparameters:Array[MParameter]>*/;
6648 var7 = BOX_kernel__Int(var5); /* autobox from Int to Discrete */
6649 var8 = BOX_kernel__Int(var6); /* autobox from Int to Discrete */
6650 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_range__Range__without_last]))(var4, var7, var8) /* without_last on <var4:Range[Int]>*/;
6651 CHECK_NEW_range__Range(var4);
6652 var9 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Range[Int]>*/;
6653 for(;;) {
6654 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
6655 if(!var10) break;
6656 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
6657 var12 = ((struct instance_kernel__Int*)var11)->value; /* autounbox from nullable Object to Int */;
6658 var_i = var12;
6659 var13 = ((val* (*)(val*, long))(var_mparameters->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_mparameters, var_i) /* [] on <var_mparameters:Array[MParameter]>*/;
6660 var_parameter = var13;
6661 var14 = ((short int (*)(val*))(var_parameter->class->vft[COLOR_model__MParameter__is_vararg]))(var_parameter) /* is_vararg on <var_parameter:MParameter>*/;
6662 if (var14){
6663 var15 = 1;
6664 { /* Inline kernel#Int#unary - (var15) */
6665 var18 = -var15;
6666 var16 = var18;
6667 goto RET_LABEL17;
6668 RET_LABEL17:(void)0;
6669 }
6670 { /* Inline kernel#Int#== (var_vararg_rank,var16) */
6671 var21 = var_vararg_rank == var16;
6672 var19 = var21;
6673 goto RET_LABEL20;
6674 RET_LABEL20:(void)0;
6675 }
6676 if (!var19) {
6677 fprintf(stderr, "Runtime error: %s", "Assert failed");
6678 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1396);
6679 exit(1);
6680 }
6681 var_vararg_rank = var_i;
6682 } else {
6683 }
6684 CONTINUE_label: (void)0;
6685 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
6686 }
6687 BREAK_label: (void)0;
6688 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MSignature__mparameters_61d]))(self, var_mparameters) /* mparameters= on <self:MSignature>*/;
6689 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MSignature__return_mtype_61d]))(self, var_return_mtype) /* return_mtype= on <self:MSignature>*/;
6690 ((void (*)(val*, long))(self->class->vft[COLOR_model__MSignature__vararg_rank_61d]))(self, var_vararg_rank) /* vararg_rank= on <self:MSignature>*/;
6691 RET_LABEL:;
6692 }
6693 /* method model#MSignature#init for (self: Object, Array[MParameter], nullable MType) */
6694 void VIRTUAL_model__MSignature__init(val* self, val* p0, val* p1) {
6695 model__MSignature__init(self, p0, p1);
6696 RET_LABEL:;
6697 }
6698 /* method model#MSignature#vararg_rank for (self: MSignature): Int */
6699 long model__MSignature__vararg_rank(val* self) {
6700 long var /* : Int */;
6701 long var1 /* : Int */;
6702 var1 = self->attrs[COLOR_model__MSignature___64dvararg_rank].l; /* @vararg_rank on <self:MSignature> */
6703 var = var1;
6704 RET_LABEL:;
6705 return var;
6706 }
6707 /* method model#MSignature#vararg_rank for (self: Object): Int */
6708 long VIRTUAL_model__MSignature__vararg_rank(val* self) {
6709 long var /* : Int */;
6710 long var1 /* : Int */;
6711 var1 = model__MSignature__vararg_rank(self);
6712 var = var1;
6713 RET_LABEL:;
6714 return var;
6715 }
6716 /* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
6717 void model__MSignature__vararg_rank_61d(val* self, long p0) {
6718 self->attrs[COLOR_model__MSignature___64dvararg_rank].l = p0; /* @vararg_rank on <self:MSignature> */
6719 RET_LABEL:;
6720 }
6721 /* method model#MSignature#vararg_rank= for (self: Object, Int) */
6722 void VIRTUAL_model__MSignature__vararg_rank_61d(val* self, long p0) {
6723 model__MSignature__vararg_rank_61d(self, p0);
6724 RET_LABEL:;
6725 }
6726 /* method model#MSignature#arity for (self: MSignature): Int */
6727 long model__MSignature__arity(val* self) {
6728 long var /* : Int */;
6729 val* var1 /* : Array[MParameter] */;
6730 long var2 /* : Int */;
6731 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6732 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[MParameter]>*/;
6733 var = var2;
6734 goto RET_LABEL;
6735 RET_LABEL:;
6736 return var;
6737 }
6738 /* method model#MSignature#arity for (self: Object): Int */
6739 long VIRTUAL_model__MSignature__arity(val* self) {
6740 long var /* : Int */;
6741 long var1 /* : Int */;
6742 var1 = model__MSignature__arity(self);
6743 var = var1;
6744 RET_LABEL:;
6745 return var;
6746 }
6747 /* method model#MSignature#to_s for (self: MSignature): String */
6748 val* model__MSignature__to_s(val* self) {
6749 val* var /* : String */;
6750 val* var1 /* : Buffer */;
6751 val* var_b /* var b: Buffer */;
6752 val* var2 /* : Array[MParameter] */;
6753 short int var3 /* : Bool */;
6754 short int var4 /* : Bool */;
6755 static val* varonce;
6756 val* var5 /* : String */;
6757 char* var6 /* : NativeString */;
6758 long var7 /* : Int */;
6759 val* var8 /* : String */;
6760 val* var9 /* : Range[Int] */;
6761 long var10 /* : Int */;
6762 val* var11 /* : Array[MParameter] */;
6763 long var12 /* : Int */;
6764 val* var13 /* : Discrete */;
6765 val* var14 /* : Discrete */;
6766 val* var15 /* : Iterator[nullable Object] */;
6767 short int var16 /* : Bool */;
6768 val* var17 /* : nullable Object */;
6769 long var_i /* var i: Int */;
6770 long var18 /* : Int */;
6771 val* var19 /* : Array[MParameter] */;
6772 val* var20 /* : nullable Object */;
6773 val* var_mparameter /* var mparameter: MParameter */;
6774 long var21 /* : Int */;
6775 short int var22 /* : Bool */;
6776 short int var24 /* : Bool */;
6777 int cltype;
6778 int idtype;
6779 const char* var_class_name;
6780 short int var25 /* : Bool */;
6781 static val* varonce26;
6782 val* var27 /* : String */;
6783 char* var28 /* : NativeString */;
6784 long var29 /* : Int */;
6785 val* var30 /* : String */;
6786 val* var31 /* : String */;
6787 static val* varonce32;
6788 val* var33 /* : String */;
6789 char* var34 /* : NativeString */;
6790 long var35 /* : Int */;
6791 val* var36 /* : String */;
6792 val* var37 /* : MType */;
6793 val* var38 /* : String */;
6794 short int var39 /* : Bool */;
6795 static val* varonce40;
6796 val* var41 /* : String */;
6797 char* var42 /* : NativeString */;
6798 long var43 /* : Int */;
6799 val* var44 /* : String */;
6800 static val* varonce45;
6801 val* var46 /* : String */;
6802 char* var47 /* : NativeString */;
6803 long var48 /* : Int */;
6804 val* var49 /* : String */;
6805 val* var50 /* : nullable MType */;
6806 val* var_ret /* var ret: nullable MType */;
6807 val* var51 /* : null */;
6808 short int var52 /* : Bool */;
6809 static val* varonce53;
6810 val* var54 /* : String */;
6811 char* var55 /* : NativeString */;
6812 long var56 /* : Int */;
6813 val* var57 /* : String */;
6814 val* var58 /* : String */;
6815 val* var59 /* : String */;
6816 var1 = NEW_string__Buffer(&type_string__Buffer);
6817 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
6818 CHECK_NEW_string__Buffer(var1);
6819 var_b = var1;
6820 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6821 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var2) /* is_empty on <var2:Array[MParameter]>*/;
6822 var4 = !var3;
6823 if (var4){
6824 if (varonce) {
6825 var5 = varonce;
6826 } else {
6827 var6 = "(";
6828 var7 = 1;
6829 var8 = string__NativeString__to_s_with_length(var6, var7);
6830 var5 = var8;
6831 varonce = var5;
6832 }
6833 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var5) /* append on <var_b:Buffer>*/;
6834 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
6835 var10 = 0;
6836 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6837 var12 = ((long (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__length]))(var11) /* length on <var11:Array[MParameter]>*/;
6838 var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
6839 var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
6840 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
6841 CHECK_NEW_range__Range(var9);
6842 var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
6843 for(;;) {
6844 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
6845 if(!var16) break;
6846 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
6847 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
6848 var_i = var18;
6849 var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6850 var20 = ((val* (*)(val*, long))(var19->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var19, var_i) /* [] on <var19:Array[MParameter]>*/;
6851 var_mparameter = var20;
6852 var21 = 0;
6853 { /* Inline kernel#Int#> (var_i,var21) */
6854 /* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
6855 /* <var21:Int> isa OTHER */
6856 var24 = 1; /* easy <var21:Int> isa OTHER*/
6857 if (!var24) {
6858 var_class_name = type_kernel__Int.name;
6859 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6860 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6861 exit(1);
6862 }
6863 var25 = var_i > var21;
6864 var22 = var25;
6865 goto RET_LABEL23;
6866 RET_LABEL23:(void)0;
6867 }
6868 if (var22){
6869 if (varonce26) {
6870 var27 = varonce26;
6871 } else {
6872 var28 = ", ";
6873 var29 = 2;
6874 var30 = string__NativeString__to_s_with_length(var28, var29);
6875 var27 = var30;
6876 varonce26 = var27;
6877 }
6878 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var27) /* append on <var_b:Buffer>*/;
6879 } else {
6880 }
6881 var31 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__name]))(var_mparameter) /* name on <var_mparameter:MParameter>*/;
6882 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var31) /* append on <var_b:Buffer>*/;
6883 if (varonce32) {
6884 var33 = varonce32;
6885 } else {
6886 var34 = ": ";
6887 var35 = 2;
6888 var36 = string__NativeString__to_s_with_length(var34, var35);
6889 var33 = var36;
6890 varonce32 = var33;
6891 }
6892 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var33) /* append on <var_b:Buffer>*/;
6893 var37 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__mtype]))(var_mparameter) /* mtype on <var_mparameter:MParameter>*/;
6894 var38 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:MType>*/;
6895 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var38) /* append on <var_b:Buffer>*/;
6896 var39 = ((short int (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__is_vararg]))(var_mparameter) /* is_vararg on <var_mparameter:MParameter>*/;
6897 if (var39){
6898 if (varonce40) {
6899 var41 = varonce40;
6900 } else {
6901 var42 = "...";
6902 var43 = 3;
6903 var44 = string__NativeString__to_s_with_length(var42, var43);
6904 var41 = var44;
6905 varonce40 = var41;
6906 }
6907 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var41) /* append on <var_b:Buffer>*/;
6908 } else {
6909 }
6910 CONTINUE_label: (void)0;
6911 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
6912 }
6913 BREAK_label: (void)0;
6914 if (varonce45) {
6915 var46 = varonce45;
6916 } else {
6917 var47 = ")";
6918 var48 = 1;
6919 var49 = string__NativeString__to_s_with_length(var47, var48);
6920 var46 = var49;
6921 varonce45 = var46;
6922 }
6923 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var46) /* append on <var_b:Buffer>*/;
6924 } else {
6925 }
6926 var50 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6927 var_ret = var50;
6928 var51 = NULL;
6929 if (var_ret == NULL) {
6930 var52 = 0; /* is null */
6931 } else {
6932 var52 = 1; /* arg is null and recv is not */
6933 }
6934 if (var52){
6935 if (varonce53) {
6936 var54 = varonce53;
6937 } else {
6938 var55 = ": ";
6939 var56 = 2;
6940 var57 = string__NativeString__to_s_with_length(var55, var56);
6941 var54 = var57;
6942 varonce53 = var54;
6943 }
6944 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var54) /* append on <var_b:Buffer>*/;
6945 var58 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__Object__to_s]))(var_ret) /* to_s on <var_ret:nullable MType(MType)>*/;
6946 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var58) /* append on <var_b:Buffer>*/;
6947 } else {
6948 }
6949 var59 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
6950 var = var59;
6951 goto RET_LABEL;
6952 RET_LABEL:;
6953 return var;
6954 }
6955 /* method model#MSignature#to_s for (self: Object): String */
6956 val* VIRTUAL_model__MSignature__to_s(val* self) {
6957 val* var /* : String */;
6958 val* var1 /* : String */;
6959 var1 = model__MSignature__to_s(self);
6960 var = var1;
6961 RET_LABEL:;
6962 return var;
6963 }
6964 /* method model#MSignature#resolve_for for (self: MSignature, MType, nullable MClassType, MModule, Bool): MSignature */
6965 val* model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6966 val* var /* : MSignature */;
6967 val* var_mtype /* var mtype: MType */;
6968 val* var_anchor /* var anchor: nullable MClassType */;
6969 val* var_mmodule /* var mmodule: MModule */;
6970 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
6971 val* var1 /* : Array[MParameter] */;
6972 val* var_params /* var params: Array[MParameter] */;
6973 val* var2 /* : Array[MParameter] */;
6974 val* var3 /* : Iterator[nullable Object] */;
6975 short int var4 /* : Bool */;
6976 val* var5 /* : nullable Object */;
6977 val* var_p /* var p: MParameter */;
6978 val* var6 /* : MParameter */;
6979 val* var7 /* : nullable MType */;
6980 val* var_ret /* var ret: nullable MType */;
6981 val* var8 /* : null */;
6982 short int var9 /* : Bool */;
6983 val* var10 /* : MType */;
6984 val* var11 /* : MSignature */;
6985 val* var_res /* var res: MSignature */;
6986 var_mtype = p0;
6987 var_anchor = p1;
6988 var_mmodule = p2;
6989 var_cleanup_virtual = p3;
6990 var1 = NEW_array__Array(&type_array__Arraymodel__MParameter);
6991 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[MParameter]>*/;
6992 CHECK_NEW_array__Array(var1);
6993 var_params = var1;
6994 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6995 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MParameter]>*/;
6996 for(;;) {
6997 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6998 if(!var4) break;
6999 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
7000 var_p = var5;
7001 var6 = ((val* (*)(val*, val*, val*, val*, short int))(var_p->class->vft[COLOR_model__MParameter__resolve_for]))(var_p, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_p:MParameter>*/;
7002 ((void (*)(val*, val*))(var_params->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_params, var6) /* add on <var_params:Array[MParameter]>*/;
7003 CONTINUE_label: (void)0;
7004 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
7005 }
7006 BREAK_label: (void)0;
7007 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
7008 var_ret = var7;
7009 var8 = NULL;
7010 if (var_ret == NULL) {
7011 var9 = 0; /* is null */
7012 } else {
7013 var9 = 1; /* arg is null and recv is not */
7014 }
7015 if (var9){
7016 var10 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_ret:nullable MType(MType)>*/;
7017 var_ret = var10;
7018 } else {
7019 }
7020 var11 = NEW_model__MSignature(&type_model__MSignature);
7021 ((void (*)(val*, val*, val*))(var11->class->vft[COLOR_model__MSignature__init]))(var11, var_params, var_ret) /* init on <var11:MSignature>*/;
7022 CHECK_NEW_model__MSignature(var11);
7023 var_res = var11;
7024 var = var_res;
7025 goto RET_LABEL;
7026 RET_LABEL:;
7027 return var;
7028 }
7029 /* method model#MSignature#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
7030 val* VIRTUAL_model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
7031 val* var /* : MType */;
7032 val* var1 /* : MSignature */;
7033 var1 = model__MSignature__resolve_for(self, p0, p1, p2, p3);
7034 var = var1;
7035 RET_LABEL:;
7036 return var;
7037 }
7038 /* method model#MParameter#name for (self: MParameter): String */
7039 val* model__MParameter__name(val* self) {
7040 val* var /* : String */;
7041 val* var1 /* : String */;
7042 var1 = self->attrs[COLOR_model__MParameter___64dname].val; /* @name on <self:MParameter> */
7043 if (var1 == NULL) {
7044 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
7045 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1455);
7046 exit(1);
7047 }
7048 var = var1;
7049 RET_LABEL:;
7050 return var;
7051 }
7052 /* method model#MParameter#name for (self: Object): String */
7053 val* VIRTUAL_model__MParameter__name(val* self) {
7054 val* var /* : String */;
7055 val* var1 /* : String */;
7056 var1 = model__MParameter__name(self);
7057 var = var1;
7058 RET_LABEL:;
7059 return var;
7060 }
7061 /* method model#MParameter#name= for (self: MParameter, String) */
7062 void model__MParameter__name_61d(val* self, val* p0) {
7063 self->attrs[COLOR_model__MParameter___64dname].val = p0; /* @name on <self:MParameter> */
7064 RET_LABEL:;
7065 }
7066 /* method model#MParameter#name= for (self: Object, String) */
7067 void VIRTUAL_model__MParameter__name_61d(val* self, val* p0) {
7068 model__MParameter__name_61d(self, p0);
7069 RET_LABEL:;
7070 }
7071 /* method model#MParameter#mtype for (self: MParameter): MType */
7072 val* model__MParameter__mtype(val* self) {
7073 val* var /* : MType */;
7074 val* var1 /* : MType */;
7075 var1 = self->attrs[COLOR_model__MParameter___64dmtype].val; /* @mtype on <self:MParameter> */
7076 if (var1 == NULL) {
7077 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
7078 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1458);
7079 exit(1);
7080 }
7081 var = var1;
7082 RET_LABEL:;
7083 return var;
7084 }
7085 /* method model#MParameter#mtype for (self: Object): MType */
7086 val* VIRTUAL_model__MParameter__mtype(val* self) {
7087 val* var /* : MType */;
7088 val* var1 /* : MType */;
7089 var1 = model__MParameter__mtype(self);
7090 var = var1;
7091 RET_LABEL:;
7092 return var;
7093 }
7094 /* method model#MParameter#mtype= for (self: MParameter, MType) */
7095 void model__MParameter__mtype_61d(val* self, val* p0) {
7096 self->attrs[COLOR_model__MParameter___64dmtype].val = p0; /* @mtype on <self:MParameter> */
7097 RET_LABEL:;
7098 }
7099 /* method model#MParameter#mtype= for (self: Object, MType) */
7100 void VIRTUAL_model__MParameter__mtype_61d(val* self, val* p0) {
7101 model__MParameter__mtype_61d(self, p0);
7102 RET_LABEL:;
7103 }
7104 /* method model#MParameter#is_vararg for (self: MParameter): Bool */
7105 short int model__MParameter__is_vararg(val* self) {
7106 short int var /* : Bool */;
7107 short int var1 /* : Bool */;
7108 var1 = self->attrs[COLOR_model__MParameter___64dis_vararg].s; /* @is_vararg on <self:MParameter> */
7109 var = var1;
7110 RET_LABEL:;
7111 return var;
7112 }
7113 /* method model#MParameter#is_vararg for (self: Object): Bool */
7114 short int VIRTUAL_model__MParameter__is_vararg(val* self) {
7115 short int var /* : Bool */;
7116 short int var1 /* : Bool */;
7117 var1 = model__MParameter__is_vararg(self);
7118 var = var1;
7119 RET_LABEL:;
7120 return var;
7121 }
7122 /* method model#MParameter#is_vararg= for (self: MParameter, Bool) */
7123 void model__MParameter__is_vararg_61d(val* self, short int p0) {
7124 self->attrs[COLOR_model__MParameter___64dis_vararg].s = p0; /* @is_vararg on <self:MParameter> */
7125 RET_LABEL:;
7126 }
7127 /* method model#MParameter#is_vararg= for (self: Object, Bool) */
7128 void VIRTUAL_model__MParameter__is_vararg_61d(val* self, short int p0) {
7129 model__MParameter__is_vararg_61d(self, p0);
7130 RET_LABEL:;
7131 }
7132 /* method model#MParameter#resolve_for for (self: MParameter, MType, nullable MClassType, MModule, Bool): MParameter */
7133 val* model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
7134 val* var /* : MParameter */;
7135 val* var_mtype /* var mtype: MType */;
7136 val* var_anchor /* var anchor: nullable MClassType */;
7137 val* var_mmodule /* var mmodule: MModule */;
7138 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
7139 val* var1 /* : MType */;
7140 short int var2 /* : Bool */;
7141 short int var3 /* : Bool */;
7142 val* var4 /* : MType */;
7143 val* var5 /* : MType */;
7144 val* var_newtype /* var newtype: MType */;
7145 val* var6 /* : MParameter */;
7146 val* var7 /* : String */;
7147 short int var8 /* : Bool */;
7148 val* var_res /* var res: MParameter */;
7149 var_mtype = p0;
7150 var_anchor = p1;
7151 var_mmodule = p2;
7152 var_cleanup_virtual = p3;
7153 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__mtype]))(self) /* mtype on <self:MParameter>*/;
7154 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
7155 var3 = !var2;
7156 if (var3){
7157 var = self;
7158 goto RET_LABEL;
7159 } else {
7160 }
7161 var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__mtype]))(self) /* mtype on <self:MParameter>*/;
7162 var5 = ((val* (*)(val*, val*, val*, val*, short int))(var4->class->vft[COLOR_model__MType__resolve_for]))(var4, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var4:MType>*/;
7163 var_newtype = var5;
7164 var6 = NEW_model__MParameter(&type_model__MParameter);
7165 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__name]))(self) /* name on <self:MParameter>*/;
7166 var8 = ((short int (*)(val*))(self->class->vft[COLOR_model__MParameter__is_vararg]))(self) /* is_vararg on <self:MParameter>*/;
7167 ((void (*)(val*, val*, val*, short int))(var6->class->vft[COLOR_model__MParameter__init]))(var6, var7, var_newtype, var8) /* init on <var6:MParameter>*/;
7168 CHECK_NEW_model__MParameter(var6);
7169 var_res = var6;
7170 var = var_res;
7171 goto RET_LABEL;
7172 RET_LABEL:;
7173 return var;
7174 }
7175 /* method model#MParameter#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MParameter */
7176 val* VIRTUAL_model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
7177 val* var /* : MParameter */;
7178 val* var1 /* : MParameter */;
7179 var1 = model__MParameter__resolve_for(self, p0, p1, p2, p3);
7180 var = var1;
7181 RET_LABEL:;
7182 return var;
7183 }
7184 /* method model#MParameter#init for (self: MParameter, String, MType, Bool) */
7185 void model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
7186 self->attrs[COLOR_model__MParameter___64dname].val = p0; /* @name on <self:MParameter> */
7187 self->attrs[COLOR_model__MParameter___64dmtype].val = p1; /* @mtype on <self:MParameter> */
7188 self->attrs[COLOR_model__MParameter___64dis_vararg].s = p2; /* @is_vararg on <self:MParameter> */
7189 RET_LABEL:;
7190 }
7191 /* method model#MParameter#init for (self: Object, String, MType, Bool) */
7192 void VIRTUAL_model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
7193 model__MParameter__init(self, p0, p1, p2);
7194 RET_LABEL:;
7195 }
7196 /* method model#MProperty#intro_mclassdef for (self: MProperty): MClassDef */
7197 val* model__MProperty__intro_mclassdef(val* self) {
7198 val* var /* : MClassDef */;
7199 val* var1 /* : MClassDef */;
7200 var1 = self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val; /* @intro_mclassdef on <self:MProperty> */
7201 if (var1 == NULL) {
7202 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclassdef");
7203 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1489);
7204 exit(1);
7205 }
7206 var = var1;
7207 RET_LABEL:;
7208 return var;
7209 }
7210 /* method model#MProperty#intro_mclassdef for (self: Object): MClassDef */
7211 val* VIRTUAL_model__MProperty__intro_mclassdef(val* self) {
7212 val* var /* : MClassDef */;
7213 val* var1 /* : MClassDef */;
7214 var1 = model__MProperty__intro_mclassdef(self);
7215 var = var1;
7216 RET_LABEL:;
7217 return var;
7218 }
7219 /* method model#MProperty#intro_mclassdef= for (self: MProperty, MClassDef) */
7220 void model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
7221 self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val = p0; /* @intro_mclassdef on <self:MProperty> */
7222 RET_LABEL:;
7223 }
7224 /* method model#MProperty#intro_mclassdef= for (self: Object, MClassDef) */
7225 void VIRTUAL_model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
7226 model__MProperty__intro_mclassdef_61d(self, p0);
7227 RET_LABEL:;
7228 }
7229 /* method model#MProperty#name for (self: MProperty): String */
7230 val* model__MProperty__name(val* self) {
7231 val* var /* : String */;
7232 val* var1 /* : String */;
7233 var1 = self->attrs[COLOR_model__MProperty___64dname].val; /* @name on <self:MProperty> */
7234 if (var1 == NULL) {
7235 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
7236 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1494);
7237 exit(1);
7238 }
7239 var = var1;
7240 RET_LABEL:;
7241 return var;
7242 }
7243 /* method model#MProperty#name for (self: Object): String */
7244 val* VIRTUAL_model__MProperty__name(val* self) {
7245 val* var /* : String */;
7246 val* var1 /* : String */;
7247 var1 = model__MProperty__name(self);
7248 var = var1;
7249 RET_LABEL:;
7250 return var;
7251 }
7252 /* method model#MProperty#name= for (self: MProperty, String) */
7253 void model__MProperty__name_61d(val* self, val* p0) {
7254 self->attrs[COLOR_model__MProperty___64dname].val = p0; /* @name on <self:MProperty> */
7255 RET_LABEL:;
7256 }
7257 /* method model#MProperty#name= for (self: Object, String) */
7258 void VIRTUAL_model__MProperty__name_61d(val* self, val* p0) {
7259 model__MProperty__name_61d(self, p0);
7260 RET_LABEL:;
7261 }
7262 /* method model#MProperty#full_name for (self: MProperty): String */
7263 val* model__MProperty__full_name(val* self) {
7264 val* var /* : String */;
7265 val* var1 /* : Array[Object] */;
7266 long var2 /* : Int */;
7267 val* var_ /* var : Array[Object] */;
7268 static val* varonce;
7269 val* var3 /* : String */;
7270 char* var4 /* : NativeString */;
7271 long var5 /* : Int */;
7272 val* var6 /* : String */;
7273 val* var7 /* : MClassDef */;
7274 val* var8 /* : MModule */;
7275 val* var9 /* : String */;
7276 static val* varonce10;
7277 val* var11 /* : String */;
7278 char* var12 /* : NativeString */;
7279 long var13 /* : Int */;
7280 val* var14 /* : String */;
7281 val* var15 /* : MClassDef */;
7282 val* var16 /* : MClass */;
7283 val* var17 /* : String */;
7284 static val* varonce18;
7285 val* var19 /* : String */;
7286 char* var20 /* : NativeString */;
7287 long var21 /* : Int */;
7288 val* var22 /* : String */;
7289 val* var23 /* : String */;
7290 static val* varonce24;
7291 val* var25 /* : String */;
7292 char* var26 /* : NativeString */;
7293 long var27 /* : Int */;
7294 val* var28 /* : String */;
7295 val* var29 /* : String */;
7296 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
7297 var2 = 7;
7298 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
7299 CHECK_NEW_array__Array(var1);
7300 var_ = var1;
7301 if (varonce) {
7302 var3 = varonce;
7303 } else {
7304 var4 = "";
7305 var5 = 0;
7306 var6 = string__NativeString__to_s_with_length(var4, var5);
7307 var3 = var6;
7308 varonce = var3;
7309 }
7310 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
7311 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
7312 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__mmodule]))(var7) /* mmodule on <var7:MClassDef>*/;
7313 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model_base__MModule__full_name]))(var8) /* full_name on <var8:MModule>*/;
7314 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
7315 if (varonce10) {
7316 var11 = varonce10;
7317 } else {
7318 var12 = "::";
7319 var13 = 2;
7320 var14 = string__NativeString__to_s_with_length(var12, var13);
7321 var11 = var14;
7322 varonce10 = var11;
7323 }
7324 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
7325 var15 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
7326 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mclass]))(var15) /* mclass on <var15:MClassDef>*/;
7327 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClass__name]))(var16) /* name on <var16:MClass>*/;
7328 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
7329 if (varonce18) {
7330 var19 = varonce18;
7331 } else {
7332 var20 = "::";
7333 var21 = 2;
7334 var22 = string__NativeString__to_s_with_length(var20, var21);
7335 var19 = var22;
7336 varonce18 = var19;
7337 }
7338 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
7339 var23 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__name]))(self) /* name on <self:MProperty>*/;
7340 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
7341 if (varonce24) {
7342 var25 = varonce24;
7343 } else {
7344 var26 = "";
7345 var27 = 0;
7346 var28 = string__NativeString__to_s_with_length(var26, var27);
7347 var25 = var28;
7348 varonce24 = var25;
7349 }
7350 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var25) /* add on <var_:Array[Object]>*/;
7351 var29 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
7352 var = var29;
7353 goto RET_LABEL;
7354 RET_LABEL:;
7355 return var;
7356 }
7357 /* method model#MProperty#full_name for (self: Object): String */
7358 val* VIRTUAL_model__MProperty__full_name(val* self) {
7359 val* var /* : String */;
7360 val* var1 /* : String */;
7361 var1 = model__MProperty__full_name(self);
7362 var = var1;
7363 RET_LABEL:;
7364 return var;
7365 }
7366 /* method model#MProperty#visibility for (self: MProperty): MVisibility */
7367 val* model__MProperty__visibility(val* self) {
7368 val* var /* : MVisibility */;
7369 val* var1 /* : MVisibility */;
7370 var1 = self->attrs[COLOR_model__MProperty___64dvisibility].val; /* @visibility on <self:MProperty> */
7371 if (var1 == NULL) {
7372 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
7373 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1504);
7374 exit(1);
7375 }
7376 var = var1;
7377 RET_LABEL:;
7378 return var;
7379 }
7380 /* method model#MProperty#visibility for (self: Object): MVisibility */
7381 val* VIRTUAL_model__MProperty__visibility(val* self) {
7382 val* var /* : MVisibility */;
7383 val* var1 /* : MVisibility */;
7384 var1 = model__MProperty__visibility(self);
7385 var = var1;
7386 RET_LABEL:;
7387 return var;
7388 }
7389 /* method model#MProperty#visibility= for (self: MProperty, MVisibility) */
7390 void model__MProperty__visibility_61d(val* self, val* p0) {
7391 self->attrs[COLOR_model__MProperty___64dvisibility].val = p0; /* @visibility on <self:MProperty> */
7392 RET_LABEL:;
7393 }
7394 /* method model#MProperty#visibility= for (self: Object, MVisibility) */
7395 void VIRTUAL_model__MProperty__visibility_61d(val* self, val* p0) {
7396 model__MProperty__visibility_61d(self, p0);
7397 RET_LABEL:;
7398 }
7399 /* method model#MProperty#init for (self: MProperty, MClassDef, String, MVisibility) */
7400 void model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
7401 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
7402 val* var_name /* var name: String */;
7403 val* var_visibility /* var visibility: MVisibility */;
7404 val* var /* : Array[MProperty] */;
7405 val* var1 /* : MModule */;
7406 val* var2 /* : Model */;
7407 val* var_model /* var model: Model */;
7408 val* var3 /* : MultiHashMap[String, MProperty] */;
7409 val* var4 /* : Array[MProperty] */;
7410 var_intro_mclassdef = p0;
7411 var_name = p1;
7412 var_visibility = p2;
7413 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef_61d]))(self, var_intro_mclassdef) /* intro_mclassdef= on <self:MProperty>*/;
7414 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__name_61d]))(self, var_name) /* name= on <self:MProperty>*/;
7415 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__visibility_61d]))(self, var_visibility) /* visibility= on <self:MProperty>*/;
7416 var = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__intro_mproperties]))(var_intro_mclassdef) /* intro_mproperties on <var_intro_mclassdef:MClassDef>*/;
7417 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MProperty]>*/;
7418 var1 = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intro_mclassdef) /* mmodule on <var_intro_mclassdef:MClassDef>*/;
7419 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MModule__model]))(var1) /* model on <var1:MModule>*/;
7420 var_model = var2;
7421 var3 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties_by_name]))(var_model) /* mproperties_by_name on <var_model:Model>*/;
7422 ((void (*)(val*, val*, val*))(var3->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var3, var_name, self) /* add_one on <var3:MultiHashMap[String, MProperty]>*/;
7423 var4 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties]))(var_model) /* mproperties on <var_model:Model>*/;
7424 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, self) /* add on <var4:Array[MProperty]>*/;
7425 RET_LABEL:;
7426 }
7427 /* method model#MProperty#init for (self: Object, MClassDef, String, MVisibility) */
7428 void VIRTUAL_model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
7429 model__MProperty__init(self, p0, p1, p2);
7430 RET_LABEL:;
7431 }
7432 /* method model#MProperty#mpropdefs for (self: MProperty): Array[MPropDef] */
7433 val* model__MProperty__mpropdefs(val* self) {
7434 val* var /* : Array[MPropDef] */;
7435 val* var1 /* : Array[MPropDef] */;
7436 var1 = self->attrs[COLOR_model__MProperty___64dmpropdefs].val; /* @mpropdefs on <self:MProperty> */
7437 if (var1 == NULL) {
7438 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
7439 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
7440 exit(1);
7441 }
7442 var = var1;
7443 RET_LABEL:;
7444 return var;
7445 }
7446 /* method model#MProperty#mpropdefs for (self: Object): Array[MPropDef] */
7447 val* VIRTUAL_model__MProperty__mpropdefs(val* self) {
7448 val* var /* : Array[MPropDef] */;
7449 val* var1 /* : Array[MPropDef] */;
7450 var1 = model__MProperty__mpropdefs(self);
7451 var = var1;
7452 RET_LABEL:;
7453 return var;
7454 }
7455 /* method model#MProperty#mpropdefs= for (self: MProperty, Array[MPropDef]) */
7456 void model__MProperty__mpropdefs_61d(val* self, val* p0) {
7457 short int var /* : Bool */;
7458 int cltype;
7459 int idtype;
7460 const struct type* type_struct;
7461 const char* var_class_name;
7462 /* Covariant cast for argument 0 (mpropdefs) <p0:Array[MPropDef]> isa Array[MPROPDEF] */
7463 /* <p0:Array[MPropDef]> isa Array[MPROPDEF] */
7464 type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
7465 cltype = type_struct->color;
7466 idtype = type_struct->id;
7467 if(cltype >= p0->type->table_size) {
7468 var = 0;
7469 } else {
7470 var = p0->type->type_table[cltype] == idtype;
7471 }
7472 if (!var) {
7473 var_class_name = p0 == NULL ? "null" : p0->type->name;
7474 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
7475 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
7476 exit(1);
7477 }
7478 self->attrs[COLOR_model__MProperty___64dmpropdefs].val = p0; /* @mpropdefs on <self:MProperty> */
7479 RET_LABEL:;
7480 }
7481 /* method model#MProperty#mpropdefs= for (self: Object, Array[MPropDef]) */
7482 void VIRTUAL_model__MProperty__mpropdefs_61d(val* self, val* p0) {
7483 model__MProperty__mpropdefs_61d(self, p0);
7484 RET_LABEL:;
7485 }
7486 /* method model#MProperty#intro for (self: MProperty): MPropDef */
7487 val* model__MProperty__intro(val* self) {
7488 val* var /* : MPropDef */;
7489 val* var1 /* : Array[MPropDef] */;
7490 val* var2 /* : nullable Object */;
7491 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
7492 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__first]))(var1) /* first on <var1:Array[MPropDef]>*/;
7493 var = var2;
7494 goto RET_LABEL;
7495 RET_LABEL:;
7496 return var;
7497 }
7498 /* method model#MProperty#intro for (self: Object): MPropDef */
7499 val* VIRTUAL_model__MProperty__intro(val* self) {
7500 val* var /* : MPropDef */;
7501 val* var1 /* : MPropDef */;
7502 var1 = model__MProperty__intro(self);
7503 var = var1;
7504 RET_LABEL:;
7505 return var;
7506 }
7507 /* method model#MProperty#to_s for (self: MProperty): String */
7508 val* model__MProperty__to_s(val* self) {
7509 val* var /* : String */;
7510 val* var1 /* : String */;
7511 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__name]))(self) /* name on <self:MProperty>*/;
7512 var = var1;
7513 goto RET_LABEL;
7514 RET_LABEL:;
7515 return var;
7516 }
7517 /* method model#MProperty#to_s for (self: Object): String */
7518 val* VIRTUAL_model__MProperty__to_s(val* self) {
7519 val* var /* : String */;
7520 val* var1 /* : String */;
7521 var1 = model__MProperty__to_s(self);
7522 var = var1;
7523 RET_LABEL:;
7524 return var;
7525 }
7526 /* method model#MProperty#lookup_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
7527 val* model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
7528 val* var /* : Array[MPropDef] */;
7529 val* var_mmodule /* var mmodule: MModule */;
7530 val* var_mtype /* var mtype: MType */;
7531 short int var1 /* : Bool */;
7532 short int var2 /* : Bool */;
7533 short int var3 /* : Bool */;
7534 int cltype;
7535 int idtype;
7536 val* var4 /* : MType */;
7537 val* var5 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7538 val* var6 /* : nullable Object */;
7539 val* var_cache /* var cache: nullable Array[MPropDef] */;
7540 val* var7 /* : null */;
7541 short int var8 /* : Bool */;
7542 val* var9 /* : Array[MPropDef] */;
7543 val* var_candidates /* var candidates: Array[MPropDef] */;
7544 val* var10 /* : Array[MPropDef] */;
7545 val* var11 /* : Iterator[nullable Object] */;
7546 short int var12 /* : Bool */;
7547 val* var13 /* : nullable Object */;
7548 val* var_mpropdef /* var mpropdef: MPropDef */;
7549 val* var14 /* : POSetElement[MModule] */;
7550 val* var15 /* : MClassDef */;
7551 val* var16 /* : MModule */;
7552 short int var17 /* : Bool */;
7553 short int var18 /* : Bool */;
7554 val* var19 /* : null */;
7555 val* var20 /* : MClassDef */;
7556 val* var21 /* : MClassType */;
7557 short int var22 /* : Bool */;
7558 short int var23 /* : Bool */;
7559 long var24 /* : Int */;
7560 long var25 /* : Int */;
7561 short int var26 /* : Bool */;
7562 short int var28 /* : Bool */;
7563 int cltype29;
7564 int idtype30;
7565 const char* var_class_name;
7566 short int var31 /* : Bool */;
7567 val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7568 val* var33 /* : Array[MPropDef] */;
7569 val* var_res /* var res: Array[MPropDef] */;
7570 val* var34 /* : Iterator[nullable Object] */;
7571 short int var35 /* : Bool */;
7572 val* var36 /* : nullable Object */;
7573 val* var_pd1 /* var pd1: MPropDef */;
7574 val* var37 /* : MClassDef */;
7575 val* var_cd1 /* var cd1: MClassDef */;
7576 val* var38 /* : MClass */;
7577 val* var_c1 /* var c1: MClass */;
7578 short int var39 /* : Bool */;
7579 short int var_keep /* var keep: Bool */;
7580 val* var40 /* : Iterator[nullable Object] */;
7581 short int var41 /* : Bool */;
7582 val* var42 /* : nullable Object */;
7583 val* var_pd2 /* var pd2: MPropDef */;
7584 short int var43 /* : Bool */;
7585 val* var45 /* : MClassDef */;
7586 val* var_cd2 /* var cd2: MClassDef */;
7587 val* var46 /* : MClass */;
7588 val* var_c2 /* var c2: MClass */;
7589 val* var47 /* : MClassType */;
7590 val* var48 /* : MClassType */;
7591 short int var49 /* : Bool */;
7592 val* var50 /* : MModule */;
7593 val* var51 /* : POSetElement[MModule] */;
7594 val* var52 /* : MModule */;
7595 short int var53 /* : Bool */;
7596 short int var54 /* : Bool */;
7597 val* var55 /* : MClassType */;
7598 val* var56 /* : null */;
7599 val* var57 /* : MClassType */;
7600 short int var58 /* : Bool */;
7601 short int var59 /* : Bool */;
7602 short int var61 /* : Bool */;
7603 static val* varonce;
7604 val* var62 /* : String */;
7605 char* var63 /* : NativeString */;
7606 long var64 /* : Int */;
7607 val* var65 /* : String */;
7608 static val* varonce66;
7609 val* var67 /* : String */;
7610 char* var68 /* : NativeString */;
7611 long var69 /* : Int */;
7612 val* var70 /* : String */;
7613 val* var71 /* : String */;
7614 val* var72 /* : Array[Object] */;
7615 long var73 /* : Int */;
7616 val* var74 /* : NativeArray[Object] */;
7617 val* var75 /* : String */;
7618 val* var76 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7619 var_mmodule = p0;
7620 var_mtype = p1;
7621 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7622 var2 = !var1;
7623 if (!var2) {
7624 fprintf(stderr, "Runtime error: %s", "Assert failed");
7625 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1540);
7626 exit(1);
7627 }
7628 /* <var_mtype:MType> isa MNullableType */
7629 cltype = type_model__MNullableType.color;
7630 idtype = type_model__MNullableType.id;
7631 if(cltype >= var_mtype->type->table_size) {
7632 var3 = 0;
7633 } else {
7634 var3 = var_mtype->type->type_table[cltype] == idtype;
7635 }
7636 if (var3){
7637 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
7638 var_mtype = var4;
7639 } else {
7640 }
7641 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
7642 var6 = ((val* (*)(val*, val*, val*))(var5->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var5, var_mmodule, var_mtype) /* [] on <var5:HashMap2[MModule, MType, Array[MPropDef]]>*/;
7643 var_cache = var6;
7644 var7 = NULL;
7645 if (var_cache == NULL) {
7646 var8 = 0; /* is null */
7647 } else {
7648 var8 = 1; /* arg is null and recv is not */
7649 }
7650 if (var8){
7651 var = var_cache;
7652 goto RET_LABEL;
7653 } else {
7654 }
7655 var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
7656 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
7657 CHECK_NEW_array__Array(var9);
7658 var_candidates = var9;
7659 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
7660 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
7661 for(;;) {
7662 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
7663 if(!var12) break;
7664 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
7665 var_mpropdef = var13;
7666 var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
7667 var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7668 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
7669 var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
7670 var18 = !var17;
7671 if (var18){
7672 goto CONTINUE_label;
7673 } else {
7674 }
7675 var19 = NULL;
7676 var20 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7677 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClassDef__bound_mtype]))(var20) /* bound_mtype on <var20:MClassDef>*/;
7678 var22 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var19, var21) /* is_subtype on <var_mtype:MType>*/;
7679 var23 = !var22;
7680 if (var23){
7681 goto CONTINUE_label;
7682 } else {
7683 }
7684 ((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
7685 CONTINUE_label: (void)0;
7686 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
7687 }
7688 BREAK_label: (void)0;
7689 var24 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
7690 var25 = 1;
7691 { /* Inline kernel#Int#<= (var24,var25) */
7692 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
7693 /* <var25:Int> isa OTHER */
7694 var28 = 1; /* easy <var25:Int> isa OTHER*/
7695 if (!var28) {
7696 var_class_name = type_kernel__Int.name;
7697 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7698 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
7699 exit(1);
7700 }
7701 var31 = var24 <= var25;
7702 var26 = var31;
7703 goto RET_LABEL27;
7704 RET_LABEL27:(void)0;
7705 }
7706 if (var26){
7707 var32 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
7708 ((void (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var32, var_mmodule, var_mtype, var_candidates) /* []= on <var32:HashMap2[MModule, MType, Array[MPropDef]]>*/;
7709 var = var_candidates;
7710 goto RET_LABEL;
7711 } else {
7712 }
7713 var33 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
7714 ((void (*)(val*))(var33->class->vft[COLOR_array__Array__init]))(var33) /* init on <var33:Array[MPropDef]>*/;
7715 CHECK_NEW_array__Array(var33);
7716 var_res = var33;
7717 var34 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
7718 for(;;) {
7719 var35 = ((short int (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var34) /* is_ok on <var34:Iterator[nullable Object]>*/;
7720 if(!var35) break;
7721 var36 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__item]))(var34) /* item on <var34:Iterator[nullable Object]>*/;
7722 var_pd1 = var36;
7723 var37 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
7724 var_cd1 = var37;
7725 var38 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
7726 var_c1 = var38;
7727 var39 = 1;
7728 var_keep = var39;
7729 var40 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
7730 for(;;) {
7731 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
7732 if(!var41) break;
7733 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
7734 var_pd2 = var42;
7735 var43 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
7736 if (var43){
7737 goto CONTINUE_label44;
7738 } else {
7739 }
7740 var45 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
7741 var_cd2 = var45;
7742 var46 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
7743 var_c2 = var46;
7744 var47 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
7745 var48 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
7746 var49 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_kernel__Object___61d_61d]))(var47, var48) /* == on <var47:MClassType>*/;
7747 if (var49){
7748 var50 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
7749 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_model_base__MModule__in_importation]))(var50) /* in_importation on <var50:MModule>*/;
7750 var52 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
7751 var53 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_poset__POSetElement___60d_61d]))(var51, var52) /* <= on <var51:POSetElement[MModule]>*/;
7752 if (var53){
7753 var54 = 0;
7754 var_keep = var54;
7755 goto BREAK_label44;
7756 } else {
7757 }
7758 } else {
7759 var55 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
7760 var56 = NULL;
7761 var57 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
7762 var58 = ((short int (*)(val*, val*, val*, val*))(var55->class->vft[COLOR_model__MType__is_subtype]))(var55, var_mmodule, var56, var57) /* is_subtype on <var55:MClassType>*/;
7763 if (var58){
7764 var59 = 0;
7765 var_keep = var59;
7766 goto BREAK_label44;
7767 } else {
7768 }
7769 }
7770 CONTINUE_label44: (void)0;
7771 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
7772 }
7773 BREAK_label44: (void)0;
7774 if (var_keep){
7775 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
7776 } else {
7777 }
7778 CONTINUE_label60: (void)0;
7779 ((void (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__next]))(var34) /* next on <var34:Iterator[nullable Object]>*/;
7780 }
7781 BREAK_label60: (void)0;
7782 var61 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
7783 if (var61){
7784 if (varonce) {
7785 var62 = varonce;
7786 } else {
7787 var63 = "All lost! ";
7788 var64 = 10;
7789 var65 = string__NativeString__to_s_with_length(var63, var64);
7790 var62 = var65;
7791 varonce = var62;
7792 }
7793 if (varonce66) {
7794 var67 = varonce66;
7795 } else {
7796 var68 = ", ";
7797 var69 = 2;
7798 var70 = string__NativeString__to_s_with_length(var68, var69);
7799 var67 = var70;
7800 varonce66 = var67;
7801 }
7802 var71 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var67) /* join on <var_candidates:Array[MPropDef]>*/;
7803 var72 = NEW_array__Array(&type_array__Arraykernel__Object);
7804 { /* var72 = array_instance Array[Object] */
7805 var73 = 2;
7806 var74 = NEW_array__NativeArray(var73, &type_array__NativeArraykernel__Object);
7807 ((struct instance_array__NativeArray*)var74)->values[0] = (val*) var62;
7808 ((struct instance_array__NativeArray*)var74)->values[1] = (val*) var71;
7809 ((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Object]>*/;
7810 CHECK_NEW_array__Array(var72);
7811 }
7812 var75 = ((val* (*)(val*))(var72->class->vft[COLOR_string__Object__to_s]))(var72) /* to_s on <var72:Array[Object]>*/;
7813 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var75) /* print on <self:MProperty>*/;
7814 } else {
7815 }
7816 var76 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
7817 ((void (*)(val*, val*, val*, val*))(var76->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var76, var_mmodule, var_mtype, var_res) /* []= on <var76:HashMap2[MModule, MType, Array[MPropDef]]>*/;
7818 var = var_res;
7819 goto RET_LABEL;
7820 RET_LABEL:;
7821 return var;
7822 }
7823 /* method model#MProperty#lookup_definitions for (self: Object, MModule, MType): Array[MPropDef] */
7824 val* VIRTUAL_model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
7825 val* var /* : Array[MPropDef] */;
7826 val* var1 /* : Array[MPropDef] */;
7827 var1 = model__MProperty__lookup_definitions(self, p0, p1);
7828 var = var1;
7829 RET_LABEL:;
7830 return var;
7831 }
7832 /* method model#MProperty#lookup_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
7833 val* model__MProperty__lookup_definitions_cache(val* self) {
7834 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7835 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7836 var1 = self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val; /* @lookup_definitions_cache on <self:MProperty> */
7837 if (var1 == NULL) {
7838 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_definitions_cache");
7839 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1597);
7840 exit(1);
7841 }
7842 var = var1;
7843 RET_LABEL:;
7844 return var;
7845 }
7846 /* method model#MProperty#lookup_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
7847 val* VIRTUAL_model__MProperty__lookup_definitions_cache(val* self) {
7848 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7849 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7850 var1 = model__MProperty__lookup_definitions_cache(self);
7851 var = var1;
7852 RET_LABEL:;
7853 return var;
7854 }
7855 /* method model#MProperty#lookup_definitions_cache= for (self: MProperty, HashMap2[MModule, MType, Array[MPropDef]]) */
7856 void model__MProperty__lookup_definitions_cache_61d(val* self, val* p0) {
7857 short int var /* : Bool */;
7858 int cltype;
7859 int idtype;
7860 const struct type* type_struct;
7861 const char* var_class_name;
7862 /* Covariant cast for argument 0 (lookup_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
7863 /* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
7864 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2model_base__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
7865 cltype = type_struct->color;
7866 idtype = type_struct->id;
7867 if(cltype >= p0->type->table_size) {
7868 var = 0;
7869 } else {
7870 var = p0->type->type_table[cltype] == idtype;
7871 }
7872 if (!var) {
7873 var_class_name = p0 == NULL ? "null" : p0->type->name;
7874 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
7875 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1597);
7876 exit(1);
7877 }
7878 self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val = p0; /* @lookup_definitions_cache on <self:MProperty> */
7879 RET_LABEL:;
7880 }
7881 /* method model#MProperty#lookup_definitions_cache= for (self: Object, HashMap2[MModule, MType, Array[MPropDef]]) */
7882 void VIRTUAL_model__MProperty__lookup_definitions_cache_61d(val* self, val* p0) {
7883 model__MProperty__lookup_definitions_cache_61d(self, p0);
7884 RET_LABEL:;
7885 }
7886 /* method model#MProperty#lookup_super_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
7887 val* model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
7888 val* var /* : Array[MPropDef] */;
7889 val* var_mmodule /* var mmodule: MModule */;
7890 val* var_mtype /* var mtype: MType */;
7891 short int var1 /* : Bool */;
7892 short int var2 /* : Bool */;
7893 short int var3 /* : Bool */;
7894 int cltype;
7895 int idtype;
7896 val* var4 /* : MType */;
7897 val* var5 /* : Array[MPropDef] */;
7898 val* var_candidates /* var candidates: Array[MPropDef] */;
7899 val* var6 /* : Array[MPropDef] */;
7900 val* var7 /* : Iterator[nullable Object] */;
7901 short int var8 /* : Bool */;
7902 val* var9 /* : nullable Object */;
7903 val* var_mpropdef /* var mpropdef: MPropDef */;
7904 val* var10 /* : POSetElement[MModule] */;
7905 val* var11 /* : MClassDef */;
7906 val* var12 /* : MModule */;
7907 short int var13 /* : Bool */;
7908 short int var14 /* : Bool */;
7909 val* var15 /* : null */;
7910 val* var16 /* : MClassDef */;
7911 val* var17 /* : MClassType */;
7912 short int var18 /* : Bool */;
7913 short int var19 /* : Bool */;
7914 short int var20 /* : Bool */;
7915 val* var21 /* : MClassDef */;
7916 val* var22 /* : MClassType */;
7917 short int var23 /* : Bool */;
7918 short int var_ /* var : Bool */;
7919 val* var24 /* : MClassDef */;
7920 val* var25 /* : MModule */;
7921 short int var26 /* : Bool */;
7922 long var27 /* : Int */;
7923 long var28 /* : Int */;
7924 short int var29 /* : Bool */;
7925 short int var31 /* : Bool */;
7926 int cltype32;
7927 int idtype33;
7928 const char* var_class_name;
7929 short int var34 /* : Bool */;
7930 val* var35 /* : Array[MPropDef] */;
7931 val* var_res /* var res: Array[MPropDef] */;
7932 val* var36 /* : Iterator[nullable Object] */;
7933 short int var37 /* : Bool */;
7934 val* var38 /* : nullable Object */;
7935 val* var_pd1 /* var pd1: MPropDef */;
7936 val* var39 /* : MClassDef */;
7937 val* var_cd1 /* var cd1: MClassDef */;
7938 val* var40 /* : MClass */;
7939 val* var_c1 /* var c1: MClass */;
7940 short int var41 /* : Bool */;
7941 short int var_keep /* var keep: Bool */;
7942 val* var42 /* : Iterator[nullable Object] */;
7943 short int var43 /* : Bool */;
7944 val* var44 /* : nullable Object */;
7945 val* var_pd2 /* var pd2: MPropDef */;
7946 short int var45 /* : Bool */;
7947 val* var47 /* : MClassDef */;
7948 val* var_cd2 /* var cd2: MClassDef */;
7949 val* var48 /* : MClass */;
7950 val* var_c2 /* var c2: MClass */;
7951 val* var49 /* : MClassType */;
7952 val* var50 /* : MClassType */;
7953 short int var51 /* : Bool */;
7954 val* var52 /* : MModule */;
7955 val* var53 /* : POSetElement[MModule] */;
7956 val* var54 /* : MModule */;
7957 short int var55 /* : Bool */;
7958 short int var56 /* : Bool */;
7959 val* var57 /* : MClassType */;
7960 val* var58 /* : null */;
7961 val* var59 /* : MClassType */;
7962 short int var60 /* : Bool */;
7963 short int var61 /* : Bool */;
7964 short int var63 /* : Bool */;
7965 static val* varonce;
7966 val* var64 /* : String */;
7967 char* var65 /* : NativeString */;
7968 long var66 /* : Int */;
7969 val* var67 /* : String */;
7970 static val* varonce68;
7971 val* var69 /* : String */;
7972 char* var70 /* : NativeString */;
7973 long var71 /* : Int */;
7974 val* var72 /* : String */;
7975 val* var73 /* : String */;
7976 val* var74 /* : Array[Object] */;
7977 long var75 /* : Int */;
7978 val* var76 /* : NativeArray[Object] */;
7979 val* var77 /* : String */;
7980 var_mmodule = p0;
7981 var_mtype = p1;
7982 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7983 var2 = !var1;
7984 if (!var2) {
7985 fprintf(stderr, "Runtime error: %s", "Assert failed");
7986 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1609);
7987 exit(1);
7988 }
7989 /* <var_mtype:MType> isa MNullableType */
7990 cltype = type_model__MNullableType.color;
7991 idtype = type_model__MNullableType.id;
7992 if(cltype >= var_mtype->type->table_size) {
7993 var3 = 0;
7994 } else {
7995 var3 = var_mtype->type->type_table[cltype] == idtype;
7996 }
7997 if (var3){
7998 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
7999 var_mtype = var4;
8000 } else {
8001 }
8002 var5 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
8003 ((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[MPropDef]>*/;
8004 CHECK_NEW_array__Array(var5);
8005 var_candidates = var5;
8006 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
8007 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MPropDef]>*/;
8008 for(;;) {
8009 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
8010 if(!var8) break;
8011 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
8012 var_mpropdef = var9;
8013 var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
8014 var11 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8015 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MClassDef__mmodule]))(var11) /* mmodule on <var11:MClassDef>*/;
8016 var13 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var12) /* <= on <var10:POSetElement[MModule]>*/;
8017 var14 = !var13;
8018 if (var14){
8019 goto CONTINUE_label;
8020 } else {
8021 }
8022 var15 = NULL;
8023 var16 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8024 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on <var16:MClassDef>*/;
8025 var18 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var15, var17) /* is_subtype on <var_mtype:MType>*/;
8026 var19 = !var18;
8027 if (var19){
8028 goto CONTINUE_label;
8029 } else {
8030 }
8031 var21 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8032 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MClassDef__bound_mtype]))(var21) /* bound_mtype on <var21:MClassDef>*/;
8033 var23 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var22) /* == on <var_mtype:MType>*/;
8034 var_ = var23;
8035 if (var23){
8036 var24 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8037 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__mmodule]))(var24) /* mmodule on <var24:MClassDef>*/;
8038 var26 = ((short int (*)(val*, val*))(var_mmodule->class->vft[COLOR_kernel__Object___61d_61d]))(var_mmodule, var25) /* == on <var_mmodule:MModule>*/;
8039 var20 = var26;
8040 } else {
8041 var20 = var_;
8042 }
8043 if (var20){
8044 goto CONTINUE_label;
8045 } else {
8046 }
8047 ((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
8048 CONTINUE_label: (void)0;
8049 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
8050 }
8051 BREAK_label: (void)0;
8052 var27 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
8053 var28 = 1;
8054 { /* Inline kernel#Int#<= (var27,var28) */
8055 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
8056 /* <var28:Int> isa OTHER */
8057 var31 = 1; /* easy <var28:Int> isa OTHER*/
8058 if (!var31) {
8059 var_class_name = type_kernel__Int.name;
8060 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8061 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
8062 exit(1);
8063 }
8064 var34 = var27 <= var28;
8065 var29 = var34;
8066 goto RET_LABEL30;
8067 RET_LABEL30:(void)0;
8068 }
8069 if (var29){
8070 var = var_candidates;
8071 goto RET_LABEL;
8072 } else {
8073 }
8074 var35 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
8075 ((void (*)(val*))(var35->class->vft[COLOR_array__Array__init]))(var35) /* init on <var35:Array[MPropDef]>*/;
8076 CHECK_NEW_array__Array(var35);
8077 var_res = var35;
8078 var36 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
8079 for(;;) {
8080 var37 = ((short int (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var36) /* is_ok on <var36:Iterator[nullable Object]>*/;
8081 if(!var37) break;
8082 var38 = ((val* (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__item]))(var36) /* item on <var36:Iterator[nullable Object]>*/;
8083 var_pd1 = var38;
8084 var39 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
8085 var_cd1 = var39;
8086 var40 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
8087 var_c1 = var40;
8088 var41 = 1;
8089 var_keep = var41;
8090 var42 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
8091 for(;;) {
8092 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
8093 if(!var43) break;
8094 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
8095 var_pd2 = var44;
8096 var45 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
8097 if (var45){
8098 goto CONTINUE_label46;
8099 } else {
8100 }
8101 var47 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
8102 var_cd2 = var47;
8103 var48 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
8104 var_c2 = var48;
8105 var49 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
8106 var50 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
8107 var51 = ((short int (*)(val*, val*))(var49->class->vft[COLOR_kernel__Object___61d_61d]))(var49, var50) /* == on <var49:MClassType>*/;
8108 if (var51){
8109 var52 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
8110 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model_base__MModule__in_importation]))(var52) /* in_importation on <var52:MModule>*/;
8111 var54 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
8112 var55 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_poset__POSetElement___60d_61d]))(var53, var54) /* <= on <var53:POSetElement[MModule]>*/;
8113 if (var55){
8114 var56 = 0;
8115 var_keep = var56;
8116 goto BREAK_label46;
8117 } else {
8118 }
8119 } else {
8120 var57 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
8121 var58 = NULL;
8122 var59 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
8123 var60 = ((short int (*)(val*, val*, val*, val*))(var57->class->vft[COLOR_model__MType__is_subtype]))(var57, var_mmodule, var58, var59) /* is_subtype on <var57:MClassType>*/;
8124 if (var60){
8125 var61 = 0;
8126 var_keep = var61;
8127 goto BREAK_label46;
8128 } else {
8129 }
8130 }
8131 CONTINUE_label46: (void)0;
8132 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
8133 }
8134 BREAK_label46: (void)0;
8135 if (var_keep){
8136 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
8137 } else {
8138 }
8139 CONTINUE_label62: (void)0;
8140 ((void (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__next]))(var36) /* next on <var36:Iterator[nullable Object]>*/;
8141 }
8142 BREAK_label62: (void)0;
8143 var63 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
8144 if (var63){
8145 if (varonce) {
8146 var64 = varonce;
8147 } else {
8148 var65 = "All lost! ";
8149 var66 = 10;
8150 var67 = string__NativeString__to_s_with_length(var65, var66);
8151 var64 = var67;
8152 varonce = var64;
8153 }
8154 if (varonce68) {
8155 var69 = varonce68;
8156 } else {
8157 var70 = ", ";
8158 var71 = 2;
8159 var72 = string__NativeString__to_s_with_length(var70, var71);
8160 var69 = var72;
8161 varonce68 = var69;
8162 }
8163 var73 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var69) /* join on <var_candidates:Array[MPropDef]>*/;
8164 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
8165 { /* var74 = array_instance Array[Object] */
8166 var75 = 2;
8167 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
8168 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var64;
8169 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var73;
8170 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
8171 CHECK_NEW_array__Array(var74);
8172 }
8173 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
8174 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var77) /* print on <self:MProperty>*/;
8175 } else {
8176 }
8177 var = var_res;
8178 goto RET_LABEL;
8179 RET_LABEL:;
8180 return var;
8181 }
8182 /* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
8183 val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
8184 val* var /* : Array[MPropDef] */;
8185 val* var1 /* : Array[MPropDef] */;
8186 var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
8187 var = var1;
8188 RET_LABEL:;
8189 return var;
8190 }
8191 /* method model#MProperty#lookup_first_definition for (self: MProperty, MModule, MType): MPropDef */
8192 val* model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
8193 val* var /* : MPropDef */;
8194 val* var_mmodule /* var mmodule: MModule */;
8195 val* var_mtype /* var mtype: MType */;
8196 short int var1 /* : Bool */;
8197 val* var2 /* : Array[MPropDef] */;
8198 val* var3 /* : nullable Object */;
8199 var_mmodule = p0;
8200 var_mtype = p1;
8201 var1 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, self) /* has_mproperty on <var_mtype:MType>*/;
8202 if (!var1) {
8203 fprintf(stderr, "Runtime error: %s", "Assert failed");
8204 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1671);
8205 exit(1);
8206 }
8207 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(self, var_mmodule, var_mtype) /* lookup_all_definitions on <self:MProperty>*/;
8208 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[MPropDef]>*/;
8209 var = var3;
8210 goto RET_LABEL;
8211 RET_LABEL:;
8212 return var;
8213 }
8214 /* method model#MProperty#lookup_first_definition for (self: Object, MModule, MType): MPropDef */
8215 val* VIRTUAL_model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
8216 val* var /* : MPropDef */;
8217 val* var1 /* : MPropDef */;
8218 var1 = model__MProperty__lookup_first_definition(self, p0, p1);
8219 var = var1;
8220 RET_LABEL:;
8221 return var;
8222 }
8223 /* method model#MProperty#lookup_all_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
8224 val* model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
8225 val* var /* : Array[MPropDef] */;
8226 val* var_mmodule /* var mmodule: MModule */;
8227 val* var_mtype /* var mtype: MType */;
8228 short int var1 /* : Bool */;
8229 short int var2 /* : Bool */;
8230 short int var3 /* : Bool */;
8231 int cltype;
8232 int idtype;
8233 val* var4 /* : MType */;
8234 val* var5 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8235 val* var6 /* : nullable Object */;
8236 val* var_cache /* var cache: nullable Array[MPropDef] */;
8237 val* var7 /* : null */;
8238 short int var8 /* : Bool */;
8239 val* var9 /* : Array[MPropDef] */;
8240 val* var_candidates /* var candidates: Array[MPropDef] */;
8241 val* var10 /* : Array[MPropDef] */;
8242 val* var11 /* : Iterator[nullable Object] */;
8243 short int var12 /* : Bool */;
8244 val* var13 /* : nullable Object */;
8245 val* var_mpropdef /* var mpropdef: MPropDef */;
8246 val* var14 /* : POSetElement[MModule] */;
8247 val* var15 /* : MClassDef */;
8248 val* var16 /* : MModule */;
8249 short int var17 /* : Bool */;
8250 short int var18 /* : Bool */;
8251 val* var19 /* : null */;
8252 val* var20 /* : MClassDef */;
8253 val* var21 /* : MClassType */;
8254 short int var22 /* : Bool */;
8255 short int var23 /* : Bool */;
8256 long var24 /* : Int */;
8257 long var25 /* : Int */;
8258 short int var26 /* : Bool */;
8259 short int var28 /* : Bool */;
8260 int cltype29;
8261 int idtype30;
8262 const char* var_class_name;
8263 short int var31 /* : Bool */;
8264 val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8265 val* var33 /* : Array[nullable Object] */;
8266 val* var34 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8267 var_mmodule = p0;
8268 var_mtype = p1;
8269 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
8270 var2 = !var1;
8271 if (!var2) {
8272 fprintf(stderr, "Runtime error: %s", "Assert failed");
8273 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1679);
8274 exit(1);
8275 }
8276 /* <var_mtype:MType> isa MNullableType */
8277 cltype = type_model__MNullableType.color;
8278 idtype = type_model__MNullableType.id;
8279 if(cltype >= var_mtype->type->table_size) {
8280 var3 = 0;
8281 } else {
8282 var3 = var_mtype->type->type_table[cltype] == idtype;
8283 }
8284 if (var3){
8285 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
8286 var_mtype = var4;
8287 } else {
8288 }
8289 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
8290 var6 = ((val* (*)(val*, val*, val*))(var5->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var5, var_mmodule, var_mtype) /* [] on <var5:HashMap2[MModule, MType, Array[MPropDef]]>*/;
8291 var_cache = var6;
8292 var7 = NULL;
8293 if (var_cache == NULL) {
8294 var8 = 0; /* is null */
8295 } else {
8296 var8 = 1; /* arg is null and recv is not */
8297 }
8298 if (var8){
8299 var = var_cache;
8300 goto RET_LABEL;
8301 } else {
8302 }
8303 var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
8304 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
8305 CHECK_NEW_array__Array(var9);
8306 var_candidates = var9;
8307 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
8308 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
8309 for(;;) {
8310 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
8311 if(!var12) break;
8312 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
8313 var_mpropdef = var13;
8314 var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
8315 var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8316 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
8317 var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
8318 var18 = !var17;
8319 if (var18){
8320 goto CONTINUE_label;
8321 } else {
8322 }
8323 var19 = NULL;
8324 var20 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8325 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClassDef__bound_mtype]))(var20) /* bound_mtype on <var20:MClassDef>*/;
8326 var22 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var19, var21) /* is_subtype on <var_mtype:MType>*/;
8327 var23 = !var22;
8328 if (var23){
8329 goto CONTINUE_label;
8330 } else {
8331 }
8332 ((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
8333 CONTINUE_label: (void)0;
8334 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
8335 }
8336 BREAK_label: (void)0;
8337 var24 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
8338 var25 = 1;
8339 { /* Inline kernel#Int#<= (var24,var25) */
8340 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
8341 /* <var25:Int> isa OTHER */
8342 var28 = 1; /* easy <var25:Int> isa OTHER*/
8343 if (!var28) {
8344 var_class_name = type_kernel__Int.name;
8345 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8346 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
8347 exit(1);
8348 }
8349 var31 = var24 <= var25;
8350 var26 = var31;
8351 goto RET_LABEL27;
8352 RET_LABEL27:(void)0;
8353 }
8354 if (var26){
8355 var32 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
8356 ((void (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var32, var_mmodule, var_mtype, var_candidates) /* []= on <var32:HashMap2[MModule, MType, Array[MPropDef]]>*/;
8357 var = var_candidates;
8358 goto RET_LABEL;
8359 } else {
8360 }
8361 ((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_model__MModule__linearize_mpropdefs]))(var_mmodule, var_candidates) /* linearize_mpropdefs on <var_mmodule:MModule>*/;
8362 var33 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_array__AbstractArrayRead__reversed]))(var_candidates) /* reversed on <var_candidates:Array[MPropDef]>*/;
8363 var_candidates = var33;
8364 var34 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
8365 ((void (*)(val*, val*, val*, val*))(var34->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var34, var_mmodule, var_mtype, var_candidates) /* []= on <var34:HashMap2[MModule, MType, Array[MPropDef]]>*/;
8366 var = var_candidates;
8367 goto RET_LABEL;
8368 RET_LABEL:;
8369 return var;
8370 }
8371 /* method model#MProperty#lookup_all_definitions for (self: Object, MModule, MType): Array[MPropDef] */
8372 val* VIRTUAL_model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
8373 val* var /* : Array[MPropDef] */;
8374 val* var1 /* : Array[MPropDef] */;
8375 var1 = model__MProperty__lookup_all_definitions(self, p0, p1);
8376 var = var1;
8377 RET_LABEL:;
8378 return var;
8379 }
8380 /* method model#MProperty#lookup_all_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
8381 val* model__MProperty__lookup_all_definitions_cache(val* self) {
8382 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8383 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8384 var1 = self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val; /* @lookup_all_definitions_cache on <self:MProperty> */
8385 if (var1 == NULL) {
8386 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_all_definitions_cache");
8387 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1708);
8388 exit(1);
8389 }
8390 var = var1;
8391 RET_LABEL:;
8392 return var;
8393 }
8394 /* method model#MProperty#lookup_all_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
8395 val* VIRTUAL_model__MProperty__lookup_all_definitions_cache(val* self) {
8396 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8397 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8398 var1 = model__MProperty__lookup_all_definitions_cache(self);
8399 var = var1;
8400 RET_LABEL:;
8401 return var;
8402 }
8403 /* method model#MProperty#lookup_all_definitions_cache= for (self: MProperty, HashMap2[MModule, MType, Array[MPropDef]]) */
8404 void model__MProperty__lookup_all_definitions_cache_61d(val* self, val* p0) {
8405 short int var /* : Bool */;
8406 int cltype;
8407 int idtype;
8408 const struct type* type_struct;
8409 const char* var_class_name;
8410 /* Covariant cast for argument 0 (lookup_all_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
8411 /* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
8412 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2model_base__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
8413 cltype = type_struct->color;
8414 idtype = type_struct->id;
8415 if(cltype >= p0->type->table_size) {
8416 var = 0;
8417 } else {
8418 var = p0->type->type_table[cltype] == idtype;
8419 }
8420 if (!var) {
8421 var_class_name = p0 == NULL ? "null" : p0->type->name;
8422 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
8423 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1708);
8424 exit(1);
8425 }
8426 self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val = p0; /* @lookup_all_definitions_cache on <self:MProperty> */
8427 RET_LABEL:;
8428 }
8429 /* method model#MProperty#lookup_all_definitions_cache= for (self: Object, HashMap2[MModule, MType, Array[MPropDef]]) */
8430 void VIRTUAL_model__MProperty__lookup_all_definitions_cache_61d(val* self, val* p0) {
8431 model__MProperty__lookup_all_definitions_cache_61d(self, p0);
8432 RET_LABEL:;
8433 }
8434 /* method model#MMethod#init for (self: MMethod, MClassDef, String, MVisibility) */
8435 void model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
8436 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
8437 val* var_name /* var name: String */;
8438 val* var_visibility /* var visibility: MVisibility */;
8439 var_intro_mclassdef = p0;
8440 var_name = p1;
8441 var_visibility = p2;
8442 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MMethod>*/;
8443 RET_LABEL:;
8444 }
8445 /* method model#MMethod#init for (self: Object, MClassDef, String, MVisibility) */
8446 void VIRTUAL_model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
8447 model__MMethod__init(self, p0, p1, p2);
8448 RET_LABEL:;
8449 }
8450 /* method model#MMethod#is_init for (self: MMethod): Bool */
8451 short int model__MMethod__is_init(val* self) {
8452 short int var /* : Bool */;
8453 short int var1 /* : Bool */;
8454 var1 = self->attrs[COLOR_model__MMethod___64dis_init].s; /* @is_init on <self:MMethod> */
8455 var = var1;
8456 RET_LABEL:;
8457 return var;
8458 }
8459 /* method model#MMethod#is_init for (self: Object): Bool */
8460 short int VIRTUAL_model__MMethod__is_init(val* self) {
8461 short int var /* : Bool */;
8462 short int var1 /* : Bool */;
8463 var1 = model__MMethod__is_init(self);
8464 var = var1;
8465 RET_LABEL:;
8466 return var;
8467 }
8468 /* method model#MMethod#is_init= for (self: MMethod, Bool) */
8469 void model__MMethod__is_init_61d(val* self, short int p0) {
8470 self->attrs[COLOR_model__MMethod___64dis_init].s = p0; /* @is_init on <self:MMethod> */
8471 RET_LABEL:;
8472 }
8473 /* method model#MMethod#is_init= for (self: Object, Bool) */
8474 void VIRTUAL_model__MMethod__is_init_61d(val* self, short int p0) {
8475 model__MMethod__is_init_61d(self, p0);
8476 RET_LABEL:;
8477 }
8478 /* method model#MMethod#is_new for (self: MMethod): Bool */
8479 short int model__MMethod__is_new(val* self) {
8480 short int var /* : Bool */;
8481 short int var1 /* : Bool */;
8482 var1 = self->attrs[COLOR_model__MMethod___64dis_new].s; /* @is_new on <self:MMethod> */
8483 var = var1;
8484 RET_LABEL:;
8485 return var;
8486 }
8487 /* method model#MMethod#is_new for (self: Object): Bool */
8488 short int VIRTUAL_model__MMethod__is_new(val* self) {
8489 short int var /* : Bool */;
8490 short int var1 /* : Bool */;
8491 var1 = model__MMethod__is_new(self);
8492 var = var1;
8493 RET_LABEL:;
8494 return var;
8495 }
8496 /* method model#MMethod#is_new= for (self: MMethod, Bool) */
8497 void model__MMethod__is_new_61d(val* self, short int p0) {
8498 self->attrs[COLOR_model__MMethod___64dis_new].s = p0; /* @is_new on <self:MMethod> */
8499 RET_LABEL:;
8500 }
8501 /* method model#MMethod#is_new= for (self: Object, Bool) */
8502 void VIRTUAL_model__MMethod__is_new_61d(val* self, short int p0) {
8503 model__MMethod__is_new_61d(self, p0);
8504 RET_LABEL:;
8505 }
8506 /* method model#MMethod#is_init_for for (self: MMethod, MClass): Bool */
8507 short int model__MMethod__is_init_for(val* self, val* p0) {
8508 short int var /* : Bool */;
8509 val* var_mclass /* var mclass: MClass */;
8510 short int var1 /* : Bool */;
8511 var_mclass = p0;
8512 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MMethod__is_init]))(self) /* is_init on <self:MMethod>*/;
8513 var = var1;
8514 goto RET_LABEL;
8515 RET_LABEL:;
8516 return var;
8517 }
8518 /* method model#MMethod#is_init_for for (self: Object, MClass): Bool */
8519 short int VIRTUAL_model__MMethod__is_init_for(val* self, val* p0) {
8520 short int var /* : Bool */;
8521 short int var1 /* : Bool */;
8522 var1 = model__MMethod__is_init_for(self, p0);
8523 var = var1;
8524 RET_LABEL:;
8525 return var;
8526 }
8527 /* method model#MAttribute#init for (self: MAttribute, MClassDef, String, MVisibility) */
8528 void model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
8529 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
8530 val* var_name /* var name: String */;
8531 val* var_visibility /* var visibility: MVisibility */;
8532 var_intro_mclassdef = p0;
8533 var_name = p1;
8534 var_visibility = p2;
8535 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MAttribute>*/;
8536 RET_LABEL:;
8537 }
8538 /* method model#MAttribute#init for (self: Object, MClassDef, String, MVisibility) */
8539 void VIRTUAL_model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
8540 model__MAttribute__init(self, p0, p1, p2);
8541 RET_LABEL:;
8542 }
8543 /* method model#MVirtualTypeProp#init for (self: MVirtualTypeProp, MClassDef, String, MVisibility) */
8544 void model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
8545 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
8546 val* var_name /* var name: String */;
8547 val* var_visibility /* var visibility: MVisibility */;
8548 var_intro_mclassdef = p0;
8549 var_name = p1;
8550 var_visibility = p2;
8551 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MVirtualTypeProp>*/;
8552 RET_LABEL:;
8553 }
8554 /* method model#MVirtualTypeProp#init for (self: Object, MClassDef, String, MVisibility) */
8555 void VIRTUAL_model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
8556 model__MVirtualTypeProp__init(self, p0, p1, p2);
8557 RET_LABEL:;
8558 }
8559 /* method model#MVirtualTypeProp#mvirtualtype for (self: MVirtualTypeProp): MVirtualType */
8560 val* model__MVirtualTypeProp__mvirtualtype(val* self) {
8561 val* var /* : MVirtualType */;
8562 val* var1 /* : MVirtualType */;
8563 var1 = self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val; /* @mvirtualtype on <self:MVirtualTypeProp> */
8564 if (var1 == NULL) {
8565 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mvirtualtype");
8566 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1762);
8567 exit(1);
8568 }
8569 var = var1;
8570 RET_LABEL:;
8571 return var;
8572 }
8573 /* method model#MVirtualTypeProp#mvirtualtype for (self: Object): MVirtualType */
8574 val* VIRTUAL_model__MVirtualTypeProp__mvirtualtype(val* self) {
8575 val* var /* : MVirtualType */;
8576 val* var1 /* : MVirtualType */;
8577 var1 = model__MVirtualTypeProp__mvirtualtype(self);
8578 var = var1;
8579 RET_LABEL:;
8580 return var;
8581 }
8582 /* method model#MVirtualTypeProp#mvirtualtype= for (self: MVirtualTypeProp, MVirtualType) */
8583 void model__MVirtualTypeProp__mvirtualtype_61d(val* self, val* p0) {
8584 self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val = p0; /* @mvirtualtype on <self:MVirtualTypeProp> */
8585 RET_LABEL:;
8586 }
8587 /* method model#MVirtualTypeProp#mvirtualtype= for (self: Object, MVirtualType) */
8588 void VIRTUAL_model__MVirtualTypeProp__mvirtualtype_61d(val* self, val* p0) {
8589 model__MVirtualTypeProp__mvirtualtype_61d(self, p0);
8590 RET_LABEL:;
8591 }
8592 /* method model#MPropDef#location for (self: MPropDef): Location */
8593 val* model__MPropDef__location(val* self) {
8594 val* var /* : Location */;
8595 val* var1 /* : Location */;
8596 var1 = self->attrs[COLOR_model__MPropDef___64dlocation].val; /* @location on <self:MPropDef> */
8597 if (var1 == NULL) {
8598 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
8599 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1779);
8600 exit(1);
8601 }
8602 var = var1;
8603 RET_LABEL:;
8604 return var;
8605 }
8606 /* method model#MPropDef#location for (self: Object): Location */
8607 val* VIRTUAL_model__MPropDef__location(val* self) {
8608 val* var /* : Location */;
8609 val* var1 /* : Location */;
8610 var1 = model__MPropDef__location(self);
8611 var = var1;
8612 RET_LABEL:;
8613 return var;
8614 }
8615 /* method model#MPropDef#location= for (self: MPropDef, Location) */
8616 void model__MPropDef__location_61d(val* self, val* p0) {
8617 self->attrs[COLOR_model__MPropDef___64dlocation].val = p0; /* @location on <self:MPropDef> */
8618 RET_LABEL:;
8619 }
8620 /* method model#MPropDef#location= for (self: Object, Location) */
8621 void VIRTUAL_model__MPropDef__location_61d(val* self, val* p0) {
8622 model__MPropDef__location_61d(self, p0);
8623 RET_LABEL:;
8624 }
8625 /* method model#MPropDef#mclassdef for (self: MPropDef): MClassDef */
8626 val* model__MPropDef__mclassdef(val* self) {
8627 val* var /* : MClassDef */;
8628 val* var1 /* : MClassDef */;
8629 var1 = self->attrs[COLOR_model__MPropDef___64dmclassdef].val; /* @mclassdef on <self:MPropDef> */
8630 if (var1 == NULL) {
8631 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef");
8632 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1782);
8633 exit(1);
8634 }
8635 var = var1;
8636 RET_LABEL:;
8637 return var;
8638 }
8639 /* method model#MPropDef#mclassdef for (self: Object): MClassDef */
8640 val* VIRTUAL_model__MPropDef__mclassdef(val* self) {
8641 val* var /* : MClassDef */;
8642 val* var1 /* : MClassDef */;
8643 var1 = model__MPropDef__mclassdef(self);
8644 var = var1;
8645 RET_LABEL:;
8646 return var;
8647 }
8648 /* method model#MPropDef#mclassdef= for (self: MPropDef, MClassDef) */
8649 void model__MPropDef__mclassdef_61d(val* self, val* p0) {
8650 self->attrs[COLOR_model__MPropDef___64dmclassdef].val = p0; /* @mclassdef on <self:MPropDef> */
8651 RET_LABEL:;
8652 }
8653 /* method model#MPropDef#mclassdef= for (self: Object, MClassDef) */
8654 void VIRTUAL_model__MPropDef__mclassdef_61d(val* self, val* p0) {
8655 model__MPropDef__mclassdef_61d(self, p0);
8656 RET_LABEL:;
8657 }
8658 /* method model#MPropDef#mproperty for (self: MPropDef): MProperty */
8659 val* model__MPropDef__mproperty(val* self) {
8660 val* var /* : MProperty */;
8661 val* var1 /* : MProperty */;
8662 var1 = self->attrs[COLOR_model__MPropDef___64dmproperty].val; /* @mproperty on <self:MPropDef> */
8663 if (var1 == NULL) {
8664 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
8665 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1785);
8666 exit(1);
8667 }
8668 var = var1;
8669 RET_LABEL:;
8670 return var;
8671 }
8672 /* method model#MPropDef#mproperty for (self: Object): MProperty */
8673 val* VIRTUAL_model__MPropDef__mproperty(val* self) {
8674 val* var /* : MProperty */;
8675 val* var1 /* : MProperty */;
8676 var1 = model__MPropDef__mproperty(self);
8677 var = var1;
8678 RET_LABEL:;
8679 return var;
8680 }
8681 /* method model#MPropDef#mproperty= for (self: MPropDef, MProperty) */
8682 void model__MPropDef__mproperty_61d(val* self, val* p0) {
8683 short int var /* : Bool */;
8684 int cltype;
8685 int idtype;
8686 const struct type* type_struct;
8687 const char* var_class_name;
8688 /* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
8689 /* <p0:MProperty> isa MPROPERTY */
8690 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
8691 cltype = type_struct->color;
8692 idtype = type_struct->id;
8693 if(cltype >= p0->type->table_size) {
8694 var = 0;
8695 } else {
8696 var = p0->type->type_table[cltype] == idtype;
8697 }
8698 if (!var) {
8699 var_class_name = p0 == NULL ? "null" : p0->type->name;
8700 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
8701 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1785);
8702 exit(1);
8703 }
8704 self->attrs[COLOR_model__MPropDef___64dmproperty].val = p0; /* @mproperty on <self:MPropDef> */
8705 RET_LABEL:;
8706 }
8707 /* method model#MPropDef#mproperty= for (self: Object, MProperty) */
8708 void VIRTUAL_model__MPropDef__mproperty_61d(val* self, val* p0) {
8709 model__MPropDef__mproperty_61d(self, p0);
8710 RET_LABEL:;
8711 }
8712 /* method model#MPropDef#init for (self: MPropDef, MClassDef, MProperty, Location) */
8713 void model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
8714 short int var /* : Bool */;
8715 int cltype;
8716 int idtype;
8717 const struct type* type_struct;
8718 const char* var_class_name;
8719 val* var_mclassdef /* var mclassdef: MClassDef */;
8720 val* var_mproperty /* var mproperty: MProperty */;
8721 val* var_location /* var location: Location */;
8722 val* var1 /* : Array[MPropDef] */;
8723 val* var2 /* : Array[MPropDef] */;
8724 static val* varonce;
8725 val* var3 /* : String */;
8726 char* var4 /* : NativeString */;
8727 long var5 /* : Int */;
8728 val* var6 /* : String */;
8729 val* var7 /* : Array[Object] */;
8730 long var8 /* : Int */;
8731 val* var9 /* : NativeArray[Object] */;
8732 val* var10 /* : String */;
8733 /* Covariant cast for argument 1 (mproperty) <p1:MProperty> isa MPROPERTY */
8734 /* <p1:MProperty> isa MPROPERTY */
8735 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
8736 cltype = type_struct->color;
8737 idtype = type_struct->id;
8738 if(cltype >= p1->type->table_size) {
8739 var = 0;
8740 } else {
8741 var = p1->type->type_table[cltype] == idtype;
8742 }
8743 if (!var) {
8744 var_class_name = p1 == NULL ? "null" : p1->type->name;
8745 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
8746 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1788);
8747 exit(1);
8748 }
8749 var_mclassdef = p0;
8750 var_mproperty = p1;
8751 var_location = p2;
8752 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__mclassdef_61d]))(self, var_mclassdef) /* mclassdef= on <self:MPropDef>*/;
8753 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:MPropDef>*/;
8754 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__location_61d]))(self, var_location) /* location= on <self:MPropDef>*/;
8755 var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
8756 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, self) /* add on <var1:Array[MPropDef]>*/;
8757 var2 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty>*/;
8758 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, self) /* add on <var2:Array[MPropDef]>*/;
8759 if (varonce) {
8760 var3 = varonce;
8761 } else {
8762 var4 = "#";
8763 var5 = 1;
8764 var6 = string__NativeString__to_s_with_length(var4, var5);
8765 var3 = var6;
8766 varonce = var3;
8767 }
8768 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
8769 { /* var7 = array_instance Array[Object] */
8770 var8 = 3;
8771 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
8772 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var_mclassdef;
8773 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var3;
8774 ((struct instance_array__NativeArray*)var9)->values[2] = (val*) var_mproperty;
8775 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
8776 CHECK_NEW_array__Array(var7);
8777 }
8778 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
8779 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__to_s_61d]))(self, var10) /* to_s= on <self:MPropDef>*/;
8780 RET_LABEL:;
8781 }
8782 /* method model#MPropDef#init for (self: Object, MClassDef, MProperty, Location) */
8783 void VIRTUAL_model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
8784 model__MPropDef__init(self, p0, p1, p2);
8785 RET_LABEL:;
8786 }
8787 /* method model#MPropDef#to_s for (self: MPropDef): String */
8788 val* model__MPropDef__to_s(val* self) {
8789 val* var /* : String */;
8790 val* var1 /* : String */;
8791 var1 = self->attrs[COLOR_model__MPropDef___64dto_s].val; /* @to_s on <self:MPropDef> */
8792 if (var1 == NULL) {
8793 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
8794 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1798);
8795 exit(1);
8796 }
8797 var = var1;
8798 RET_LABEL:;
8799 return var;
8800 }
8801 /* method model#MPropDef#to_s for (self: Object): String */
8802 val* VIRTUAL_model__MPropDef__to_s(val* self) {
8803 val* var /* : String */;
8804 val* var1 /* : String */;
8805 var1 = model__MPropDef__to_s(self);
8806 var = var1;
8807 RET_LABEL:;
8808 return var;
8809 }
8810 /* method model#MPropDef#to_s= for (self: MPropDef, String) */
8811 void model__MPropDef__to_s_61d(val* self, val* p0) {
8812 self->attrs[COLOR_model__MPropDef___64dto_s].val = p0; /* @to_s on <self:MPropDef> */
8813 RET_LABEL:;
8814 }
8815 /* method model#MPropDef#to_s= for (self: Object, String) */
8816 void VIRTUAL_model__MPropDef__to_s_61d(val* self, val* p0) {
8817 model__MPropDef__to_s_61d(self, p0);
8818 RET_LABEL:;
8819 }
8820 /* method model#MPropDef#is_intro for (self: MPropDef): Bool */
8821 short int model__MPropDef__is_intro(val* self) {
8822 short int var /* : Bool */;
8823 val* var1 /* : MProperty */;
8824 val* var2 /* : MPropDef */;
8825 short int var3 /* : Bool */;
8826 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
8827 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MProperty__intro]))(var1) /* intro on <var1:MProperty>*/;
8828 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, self) /* == on <var2:MPropDef>*/;
8829 var = var3;
8830 goto RET_LABEL;
8831 RET_LABEL:;
8832 return var;
8833 }
8834 /* method model#MPropDef#is_intro for (self: Object): Bool */
8835 short int VIRTUAL_model__MPropDef__is_intro(val* self) {
8836 short int var /* : Bool */;
8837 short int var1 /* : Bool */;
8838 var1 = model__MPropDef__is_intro(self);
8839 var = var1;
8840 RET_LABEL:;
8841 return var;
8842 }
8843 /* method model#MPropDef#lookup_next_definition for (self: MPropDef, MModule, MType): MPropDef */
8844 val* model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
8845 val* var /* : MPropDef */;
8846 val* var_mmodule /* var mmodule: MModule */;
8847 val* var_mtype /* var mtype: MType */;
8848 short int var1 /* : Bool */;
8849 short int var2 /* : Bool */;
8850 val* var3 /* : MProperty */;
8851 val* var4 /* : Array[MPropDef] */;
8852 val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
8853 val* var5 /* : Iterator[nullable Object] */;
8854 val* var_i /* var i: ArrayIterator[MPropDef] */;
8855 short int var6 /* : Bool */;
8856 short int var7 /* : Bool */;
8857 short int var_ /* var : Bool */;
8858 val* var8 /* : nullable Object */;
8859 short int var9 /* : Bool */;
8860 short int var10 /* : Bool */;
8861 short int var11 /* : Bool */;
8862 val* var12 /* : nullable Object */;
8863 short int var13 /* : Bool */;
8864 int cltype;
8865 int idtype;
8866 const struct type* type_struct;
8867 const char* var_class_name;
8868 var_mmodule = p0;
8869 var_mtype = p1;
8870 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
8871 var2 = !var1;
8872 if (!var2) {
8873 fprintf(stderr, "Runtime error: %s", "Assert failed");
8874 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1812);
8875 exit(1);
8876 }
8877 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
8878 var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(var3, var_mmodule, var_mtype) /* lookup_all_definitions on <var3:MProperty>*/;
8879 var_mpropdefs = var4;
8880 var5 = ((val* (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mpropdefs) /* iterator on <var_mpropdefs:Array[MPropDef]>*/;
8881 var_i = var5;
8882 for(;;) {
8883 var7 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
8884 var_ = var7;
8885 if (var7){
8886 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
8887 var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___33d_61d]))(var8, self) /* != on <var8:nullable Object(MPropDef)>*/;
8888 var6 = var9;
8889 } else {
8890 var6 = var_;
8891 }
8892 if (!var6) break;
8893 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
8894 CONTINUE_label: (void)0;
8895 }
8896 BREAK_label: (void)0;
8897 var10 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
8898 if (!var10) {
8899 fprintf(stderr, "Runtime error: %s", "Assert \'has_property\' failed");
8900 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1817);
8901 exit(1);
8902 }
8903 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
8904 var11 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
8905 if (!var11) {
8906 fprintf(stderr, "Runtime error: %s", "Assert \'has_next_property\' failed");
8907 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1819);
8908 exit(1);
8909 }
8910 var12 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
8911 /* <var12:nullable Object(MPropDef)> isa MPROPDEF */
8912 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPDEF];
8913 cltype = type_struct->color;
8914 idtype = type_struct->id;
8915 if(cltype >= var12->type->table_size) {
8916 var13 = 0;
8917 } else {
8918 var13 = var12->type->type_table[cltype] == idtype;
8919 }
8920 if (!var13) {
8921 var_class_name = var12 == NULL ? "null" : var12->type->name;
8922 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
8923 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1820);
8924 exit(1);
8925 }
8926 var = var12;
8927 goto RET_LABEL;
8928 RET_LABEL:;
8929 return var;
8930 }
8931 /* method model#MPropDef#lookup_next_definition for (self: Object, MModule, MType): MPropDef */
8932 val* VIRTUAL_model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
8933 val* var /* : MPropDef */;
8934 val* var1 /* : MPropDef */;
8935 var1 = model__MPropDef__lookup_next_definition(self, p0, p1);
8936 var = var1;
8937 RET_LABEL:;
8938 return var;
8939 }
8940 /* method model#MMethodDef#init for (self: MMethodDef, MClassDef, MMethod, Location) */
8941 void model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
8942 short int var /* : Bool */;
8943 int cltype;
8944 int idtype;
8945 const struct type* type_struct;
8946 const char* var_class_name;
8947 val* var_mclassdef /* var mclassdef: MClassDef */;
8948 val* var_mproperty /* var mproperty: MMethod */;
8949 val* var_location /* var location: Location */;
8950 /* Covariant cast for argument 1 (mproperty) <p1:MMethod> isa MPROPERTY */
8951 /* <p1:MMethod> isa MPROPERTY */
8952 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
8953 cltype = type_struct->color;
8954 idtype = type_struct->id;
8955 if(cltype >= p1->type->table_size) {
8956 var = 0;
8957 } else {
8958 var = p1->type->type_table[cltype] == idtype;
8959 }
8960 if (!var) {
8961 var_class_name = p1 == NULL ? "null" : p1->type->name;
8962 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
8963 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1831);
8964 exit(1);
8965 }
8966 var_mclassdef = p0;
8967 var_mproperty = p1;
8968 var_location = p2;
8969 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MMethodDef>*/;
8970 RET_LABEL:;
8971 }
8972 /* method model#MMethodDef#init for (self: Object, MClassDef, MMethod, Location) */
8973 void VIRTUAL_model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
8974 model__MMethodDef__init(self, p0, p1, p2);
8975 RET_LABEL:;
8976 }
8977 /* method model#MMethodDef#msignature for (self: MMethodDef): nullable MSignature */
8978 val* model__MMethodDef__msignature(val* self) {
8979 val* var /* : nullable MSignature */;
8980 val* var1 /* : nullable MSignature */;
8981 var1 = self->attrs[COLOR_model__MMethodDef___64dmsignature].val; /* @msignature on <self:MMethodDef> */
8982 var = var1;
8983 RET_LABEL:;
8984 return var;
8985 }
8986 /* method model#MMethodDef#msignature for (self: Object): nullable MSignature */
8987 val* VIRTUAL_model__MMethodDef__msignature(val* self) {
8988 val* var /* : nullable MSignature */;
8989 val* var1 /* : nullable MSignature */;
8990 var1 = model__MMethodDef__msignature(self);
8991 var = var1;
8992 RET_LABEL:;
8993 return var;
8994 }
8995 /* method model#MMethodDef#msignature= for (self: MMethodDef, nullable MSignature) */
8996 void model__MMethodDef__msignature_61d(val* self, val* p0) {
8997 self->attrs[COLOR_model__MMethodDef___64dmsignature].val = p0; /* @msignature on <self:MMethodDef> */
8998 RET_LABEL:;
8999 }
9000 /* method model#MMethodDef#msignature= for (self: Object, nullable MSignature) */
9001 void VIRTUAL_model__MMethodDef__msignature_61d(val* self, val* p0) {
9002 model__MMethodDef__msignature_61d(self, p0);
9003 RET_LABEL:;
9004 }
9005 /* method model#MMethodDef#is_abstract for (self: MMethodDef): Bool */
9006 short int model__MMethodDef__is_abstract(val* self) {
9007 short int var /* : Bool */;
9008 short int var1 /* : Bool */;
9009 var1 = self->attrs[COLOR_model__MMethodDef___64dis_abstract].s; /* @is_abstract on <self:MMethodDef> */
9010 var = var1;
9011 RET_LABEL:;
9012 return var;
9013 }
9014 /* method model#MMethodDef#is_abstract for (self: Object): Bool */
9015 short int VIRTUAL_model__MMethodDef__is_abstract(val* self) {
9016 short int var /* : Bool */;
9017 short int var1 /* : Bool */;
9018 var1 = model__MMethodDef__is_abstract(self);
9019 var = var1;
9020 RET_LABEL:;
9021 return var;
9022 }
9023 /* method model#MMethodDef#is_abstract= for (self: MMethodDef, Bool) */
9024 void model__MMethodDef__is_abstract_61d(val* self, short int p0) {
9025 self->attrs[COLOR_model__MMethodDef___64dis_abstract].s = p0; /* @is_abstract on <self:MMethodDef> */
9026 RET_LABEL:;
9027 }
9028 /* method model#MMethodDef#is_abstract= for (self: Object, Bool) */
9029 void VIRTUAL_model__MMethodDef__is_abstract_61d(val* self, short int p0) {
9030 model__MMethodDef__is_abstract_61d(self, p0);
9031 RET_LABEL:;
9032 }
9033 /* method model#MAttributeDef#init for (self: MAttributeDef, MClassDef, MAttribute, Location) */
9034 void model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
9035 short int var /* : Bool */;
9036 int cltype;
9037 int idtype;
9038 const struct type* type_struct;
9039 const char* var_class_name;
9040 val* var_mclassdef /* var mclassdef: MClassDef */;
9041 val* var_mproperty /* var mproperty: MAttribute */;
9042 val* var_location /* var location: Location */;
9043 /* Covariant cast for argument 1 (mproperty) <p1:MAttribute> isa MPROPERTY */
9044 /* <p1:MAttribute> isa MPROPERTY */
9045 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
9046 cltype = type_struct->color;
9047 idtype = type_struct->id;
9048 if(cltype >= p1->type->table_size) {
9049 var = 0;
9050 } else {
9051 var = p1->type->type_table[cltype] == idtype;
9052 }
9053 if (!var) {
9054 var_class_name = p1 == NULL ? "null" : p1->type->name;
9055 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
9056 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1850);
9057 exit(1);
9058 }
9059 var_mclassdef = p0;
9060 var_mproperty = p1;
9061 var_location = p2;
9062 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MAttributeDef>*/;
9063 RET_LABEL:;
9064 }
9065 /* method model#MAttributeDef#init for (self: Object, MClassDef, MAttribute, Location) */
9066 void VIRTUAL_model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
9067 model__MAttributeDef__init(self, p0, p1, p2);
9068 RET_LABEL:;
9069 }
9070 /* method model#MAttributeDef#static_mtype for (self: MAttributeDef): nullable MType */
9071 val* model__MAttributeDef__static_mtype(val* self) {
9072 val* var /* : nullable MType */;
9073 val* var1 /* : nullable MType */;
9074 var1 = self->attrs[COLOR_model__MAttributeDef___64dstatic_mtype].val; /* @static_mtype on <self:MAttributeDef> */
9075 var = var1;
9076 RET_LABEL:;
9077 return var;
9078 }
9079 /* method model#MAttributeDef#static_mtype for (self: Object): nullable MType */
9080 val* VIRTUAL_model__MAttributeDef__static_mtype(val* self) {
9081 val* var /* : nullable MType */;
9082 val* var1 /* : nullable MType */;
9083 var1 = model__MAttributeDef__static_mtype(self);
9084 var = var1;
9085 RET_LABEL:;
9086 return var;
9087 }
9088 /* method model#MAttributeDef#static_mtype= for (self: MAttributeDef, nullable MType) */
9089 void model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
9090 self->attrs[COLOR_model__MAttributeDef___64dstatic_mtype].val = p0; /* @static_mtype on <self:MAttributeDef> */
9091 RET_LABEL:;
9092 }
9093 /* method model#MAttributeDef#static_mtype= for (self: Object, nullable MType) */
9094 void VIRTUAL_model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
9095 model__MAttributeDef__static_mtype_61d(self, p0);
9096 RET_LABEL:;
9097 }
9098 /* method model#MVirtualTypeDef#init for (self: MVirtualTypeDef, MClassDef, MVirtualTypeProp, Location) */
9099 void model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
9100 short int var /* : Bool */;
9101 int cltype;
9102 int idtype;
9103 const struct type* type_struct;
9104 const char* var_class_name;
9105 val* var_mclassdef /* var mclassdef: MClassDef */;
9106 val* var_mproperty /* var mproperty: MVirtualTypeProp */;
9107 val* var_location /* var location: Location */;
9108 /* Covariant cast for argument 1 (mproperty) <p1:MVirtualTypeProp> isa MPROPERTY */
9109 /* <p1:MVirtualTypeProp> isa MPROPERTY */
9110 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
9111 cltype = type_struct->color;
9112 idtype = type_struct->id;
9113 if(cltype >= p1->type->table_size) {
9114 var = 0;
9115 } else {
9116 var = p1->type->type_table[cltype] == idtype;
9117 }
9118 if (!var) {
9119 var_class_name = p1 == NULL ? "null" : p1->type->name;
9120 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
9121 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1866);
9122 exit(1);
9123 }
9124 var_mclassdef = p0;
9125 var_mproperty = p1;
9126 var_location = p2;
9127 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MVirtualTypeDef>*/;
9128 RET_LABEL:;
9129 }
9130 /* method model#MVirtualTypeDef#init for (self: Object, MClassDef, MVirtualTypeProp, Location) */
9131 void VIRTUAL_model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
9132 model__MVirtualTypeDef__init(self, p0, p1, p2);
9133 RET_LABEL:;
9134 }
9135 /* method model#MVirtualTypeDef#bound for (self: MVirtualTypeDef): nullable MType */
9136 val* model__MVirtualTypeDef__bound(val* self) {
9137 val* var /* : nullable MType */;
9138 val* var1 /* : nullable MType */;
9139 var1 = self->attrs[COLOR_model__MVirtualTypeDef___64dbound].val; /* @bound on <self:MVirtualTypeDef> */
9140 var = var1;
9141 RET_LABEL:;
9142 return var;
9143 }
9144 /* method model#MVirtualTypeDef#bound for (self: Object): nullable MType */
9145 val* VIRTUAL_model__MVirtualTypeDef__bound(val* self) {
9146 val* var /* : nullable MType */;
9147 val* var1 /* : nullable MType */;
9148 var1 = model__MVirtualTypeDef__bound(self);
9149 var = var1;
9150 RET_LABEL:;
9151 return var;
9152 }
9153 /* method model#MVirtualTypeDef#bound= for (self: MVirtualTypeDef, nullable MType) */
9154 void model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
9155 self->attrs[COLOR_model__MVirtualTypeDef___64dbound].val = p0; /* @bound on <self:MVirtualTypeDef> */
9156 RET_LABEL:;
9157 }
9158 /* method model#MVirtualTypeDef#bound= for (self: Object, nullable MType) */
9159 void VIRTUAL_model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
9160 model__MVirtualTypeDef__bound_61d(self, p0);
9161 RET_LABEL:;
9162 }
9163 /* method model#MClassKind#to_s for (self: MClassKind): String */
9164 val* model__MClassKind__to_s(val* self) {
9165 val* var /* : String */;
9166 val* var1 /* : String */;
9167 var1 = self->attrs[COLOR_model__MClassKind___64dto_s].val; /* @to_s on <self:MClassKind> */
9168 if (var1 == NULL) {
9169 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
9170 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1886);
9171 exit(1);
9172 }
9173 var = var1;
9174 RET_LABEL:;
9175 return var;
9176 }
9177 /* method model#MClassKind#to_s for (self: Object): String */
9178 val* VIRTUAL_model__MClassKind__to_s(val* self) {
9179 val* var /* : String */;
9180 val* var1 /* : String */;
9181 var1 = model__MClassKind__to_s(self);
9182 var = var1;
9183 RET_LABEL:;
9184 return var;
9185 }
9186 /* method model#MClassKind#to_s= for (self: MClassKind, String) */
9187 void model__MClassKind__to_s_61d(val* self, val* p0) {
9188 self->attrs[COLOR_model__MClassKind___64dto_s].val = p0; /* @to_s on <self:MClassKind> */
9189 RET_LABEL:;
9190 }
9191 /* method model#MClassKind#to_s= for (self: Object, String) */
9192 void VIRTUAL_model__MClassKind__to_s_61d(val* self, val* p0) {
9193 model__MClassKind__to_s_61d(self, p0);
9194 RET_LABEL:;
9195 }
9196 /* method model#MClassKind#need_init for (self: MClassKind): Bool */
9197 short int model__MClassKind__need_init(val* self) {
9198 short int var /* : Bool */;
9199 short int var1 /* : Bool */;
9200 var1 = self->attrs[COLOR_model__MClassKind___64dneed_init].s; /* @need_init on <self:MClassKind> */
9201 var = var1;
9202 RET_LABEL:;
9203 return var;
9204 }
9205 /* method model#MClassKind#need_init for (self: Object): Bool */
9206 short int VIRTUAL_model__MClassKind__need_init(val* self) {
9207 short int var /* : Bool */;
9208 short int var1 /* : Bool */;
9209 var1 = model__MClassKind__need_init(self);
9210 var = var1;
9211 RET_LABEL:;
9212 return var;
9213 }
9214 /* method model#MClassKind#need_init= for (self: MClassKind, Bool) */
9215 void model__MClassKind__need_init_61d(val* self, short int p0) {
9216 self->attrs[COLOR_model__MClassKind___64dneed_init].s = p0; /* @need_init on <self:MClassKind> */
9217 RET_LABEL:;
9218 }
9219 /* method model#MClassKind#need_init= for (self: Object, Bool) */
9220 void VIRTUAL_model__MClassKind__need_init_61d(val* self, short int p0) {
9221 model__MClassKind__need_init_61d(self, p0);
9222 RET_LABEL:;
9223 }
9224 /* method model#MClassKind#init for (self: MClassKind, String, Bool) */
9225 void model__MClassKind__init(val* self, val* p0, short int p1) {
9226 val* var_s /* var s: String */;
9227 short int var_need_init /* var need_init: Bool */;
9228 var_s = p0;
9229 var_need_init = p1;
9230 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassKind__to_s_61d]))(self, var_s) /* to_s= on <self:MClassKind>*/;
9231 ((void (*)(val*, short int))(self->class->vft[COLOR_model__MClassKind__need_init_61d]))(self, var_need_init) /* need_init= on <self:MClassKind>*/;
9232 RET_LABEL:;
9233 }
9234 /* method model#MClassKind#init for (self: Object, String, Bool) */
9235 void VIRTUAL_model__MClassKind__init(val* self, val* p0, short int p1) {
9236 model__MClassKind__init(self, p0, p1);
9237 RET_LABEL:;
9238 }
9239 /* method model#Object#abstract_kind for (self: Object): MClassKind */
9240 val* model__Object__abstract_kind(val* self) {
9241 val* var /* : MClassKind */;
9242 static val* varonce;
9243 static int varonce_guard;
9244 val* var1 /* : MClassKind */;
9245 val* var2 /* : MClassKind */;
9246 static val* varonce3;
9247 val* var4 /* : String */;
9248 char* var5 /* : NativeString */;
9249 long var6 /* : Int */;
9250 val* var7 /* : String */;
9251 short int var8 /* : Bool */;
9252 if (varonce_guard) {
9253 var1 = varonce;
9254 } else {
9255 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9256 if (varonce3) {
9257 var4 = varonce3;
9258 } else {
9259 var5 = "abstract class";
9260 var6 = 14;
9261 var7 = string__NativeString__to_s_with_length(var5, var6);
9262 var4 = var7;
9263 varonce3 = var4;
9264 }
9265 var8 = 1;
9266 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9267 CHECK_NEW_model__MClassKind(var2);
9268 var1 = var2;
9269 varonce = var1;
9270 varonce_guard = 1;
9271 }
9272 var = var1;
9273 goto RET_LABEL;
9274 RET_LABEL:;
9275 return var;
9276 }
9277 /* method model#Object#abstract_kind for (self: Object): MClassKind */
9278 val* VIRTUAL_model__Object__abstract_kind(val* self) {
9279 val* var /* : MClassKind */;
9280 val* var1 /* : MClassKind */;
9281 var1 = model__Object__abstract_kind(self);
9282 var = var1;
9283 RET_LABEL:;
9284 return var;
9285 }
9286 /* method model#Object#concrete_kind for (self: Object): MClassKind */
9287 val* model__Object__concrete_kind(val* self) {
9288 val* var /* : MClassKind */;
9289 static val* varonce;
9290 static int varonce_guard;
9291 val* var1 /* : MClassKind */;
9292 val* var2 /* : MClassKind */;
9293 static val* varonce3;
9294 val* var4 /* : String */;
9295 char* var5 /* : NativeString */;
9296 long var6 /* : Int */;
9297 val* var7 /* : String */;
9298 short int var8 /* : Bool */;
9299 if (varonce_guard) {
9300 var1 = varonce;
9301 } else {
9302 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9303 if (varonce3) {
9304 var4 = varonce3;
9305 } else {
9306 var5 = "class";
9307 var6 = 5;
9308 var7 = string__NativeString__to_s_with_length(var5, var6);
9309 var4 = var7;
9310 varonce3 = var4;
9311 }
9312 var8 = 1;
9313 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9314 CHECK_NEW_model__MClassKind(var2);
9315 var1 = var2;
9316 varonce = var1;
9317 varonce_guard = 1;
9318 }
9319 var = var1;
9320 goto RET_LABEL;
9321 RET_LABEL:;
9322 return var;
9323 }
9324 /* method model#Object#concrete_kind for (self: Object): MClassKind */
9325 val* VIRTUAL_model__Object__concrete_kind(val* self) {
9326 val* var /* : MClassKind */;
9327 val* var1 /* : MClassKind */;
9328 var1 = model__Object__concrete_kind(self);
9329 var = var1;
9330 RET_LABEL:;
9331 return var;
9332 }
9333 /* method model#Object#interface_kind for (self: Object): MClassKind */
9334 val* model__Object__interface_kind(val* self) {
9335 val* var /* : MClassKind */;
9336 static val* varonce;
9337 static int varonce_guard;
9338 val* var1 /* : MClassKind */;
9339 val* var2 /* : MClassKind */;
9340 static val* varonce3;
9341 val* var4 /* : String */;
9342 char* var5 /* : NativeString */;
9343 long var6 /* : Int */;
9344 val* var7 /* : String */;
9345 short int var8 /* : Bool */;
9346 if (varonce_guard) {
9347 var1 = varonce;
9348 } else {
9349 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9350 if (varonce3) {
9351 var4 = varonce3;
9352 } else {
9353 var5 = "interface";
9354 var6 = 9;
9355 var7 = string__NativeString__to_s_with_length(var5, var6);
9356 var4 = var7;
9357 varonce3 = var4;
9358 }
9359 var8 = 0;
9360 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9361 CHECK_NEW_model__MClassKind(var2);
9362 var1 = var2;
9363 varonce = var1;
9364 varonce_guard = 1;
9365 }
9366 var = var1;
9367 goto RET_LABEL;
9368 RET_LABEL:;
9369 return var;
9370 }
9371 /* method model#Object#interface_kind for (self: Object): MClassKind */
9372 val* VIRTUAL_model__Object__interface_kind(val* self) {
9373 val* var /* : MClassKind */;
9374 val* var1 /* : MClassKind */;
9375 var1 = model__Object__interface_kind(self);
9376 var = var1;
9377 RET_LABEL:;
9378 return var;
9379 }
9380 /* method model#Object#enum_kind for (self: Object): MClassKind */
9381 val* model__Object__enum_kind(val* self) {
9382 val* var /* : MClassKind */;
9383 static val* varonce;
9384 static int varonce_guard;
9385 val* var1 /* : MClassKind */;
9386 val* var2 /* : MClassKind */;
9387 static val* varonce3;
9388 val* var4 /* : String */;
9389 char* var5 /* : NativeString */;
9390 long var6 /* : Int */;
9391 val* var7 /* : String */;
9392 short int var8 /* : Bool */;
9393 if (varonce_guard) {
9394 var1 = varonce;
9395 } else {
9396 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9397 if (varonce3) {
9398 var4 = varonce3;
9399 } else {
9400 var5 = "enum";
9401 var6 = 4;
9402 var7 = string__NativeString__to_s_with_length(var5, var6);
9403 var4 = var7;
9404 varonce3 = var4;
9405 }
9406 var8 = 0;
9407 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9408 CHECK_NEW_model__MClassKind(var2);
9409 var1 = var2;
9410 varonce = var1;
9411 varonce_guard = 1;
9412 }
9413 var = var1;
9414 goto RET_LABEL;
9415 RET_LABEL:;
9416 return var;
9417 }
9418 /* method model#Object#enum_kind for (self: Object): MClassKind */
9419 val* VIRTUAL_model__Object__enum_kind(val* self) {
9420 val* var /* : MClassKind */;
9421 val* var1 /* : MClassKind */;
9422 var1 = model__Object__enum_kind(self);
9423 var = var1;
9424 RET_LABEL:;
9425 return var;
9426 }
9427 /* method model#Object#extern_kind for (self: Object): MClassKind */
9428 val* model__Object__extern_kind(val* self) {
9429 val* var /* : MClassKind */;
9430 static val* varonce;
9431 static int varonce_guard;
9432 val* var1 /* : MClassKind */;
9433 val* var2 /* : MClassKind */;
9434 static val* varonce3;
9435 val* var4 /* : String */;
9436 char* var5 /* : NativeString */;
9437 long var6 /* : Int */;
9438 val* var7 /* : String */;
9439 short int var8 /* : Bool */;
9440 if (varonce_guard) {
9441 var1 = varonce;
9442 } else {
9443 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9444 if (varonce3) {
9445 var4 = varonce3;
9446 } else {
9447 var5 = "extern";
9448 var6 = 6;
9449 var7 = string__NativeString__to_s_with_length(var5, var6);
9450 var4 = var7;
9451 varonce3 = var4;
9452 }
9453 var8 = 0;
9454 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9455 CHECK_NEW_model__MClassKind(var2);
9456 var1 = var2;
9457 varonce = var1;
9458 varonce_guard = 1;
9459 }
9460 var = var1;
9461 goto RET_LABEL;
9462 RET_LABEL:;
9463 return var;
9464 }
9465 /* method model#Object#extern_kind for (self: Object): MClassKind */
9466 val* VIRTUAL_model__Object__extern_kind(val* self) {
9467 val* var /* : MClassKind */;
9468 val* var1 /* : MClassKind */;
9469 var1 = model__Object__extern_kind(self);
9470 var = var1;
9471 RET_LABEL:;
9472 return var;
9473 }