Makefile: clean the clean recipes
[nit.git] / c_src / model.sep.2.c
1 #include "model.sep.0.h"
2 /* method model#MNullableType#can_resolve_for for (self: MNullableType, MType, nullable MClassType, MModule): Bool */
3 short int model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
4 short int var /* : Bool */;
5 val* var_mtype /* var mtype: MType */;
6 val* var_anchor /* var anchor: nullable MClassType */;
7 val* var_mmodule /* var mmodule: MModule */;
8 val* var1 /* : MType */;
9 val* var3 /* : MType */;
10 short int var4 /* : Bool */;
11 var_mtype = p0;
12 var_anchor = p1;
13 var_mmodule = p2;
14 {
15 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
16 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
17 if (unlikely(var3 == NULL)) {
18 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
19 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
20 show_backtrace(1);
21 }
22 var1 = var3;
23 RET_LABEL2:(void)0;
24 }
25 }
26 {
27 var4 = ((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>*/;
28 }
29 var = var4;
30 goto RET_LABEL;
31 RET_LABEL:;
32 return var;
33 }
34 /* method model#MNullableType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
35 short int VIRTUAL_model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
36 short int var /* : Bool */;
37 short int var1 /* : Bool */;
38 var1 = model__MNullableType__can_resolve_for(self, p0, p1, p2);
39 var = var1;
40 RET_LABEL:;
41 return var;
42 }
43 /* method model#MNullableType#length for (self: MNullableType): Int */
44 long model__MNullableType__length(val* self) {
45 long var /* : Int */;
46 val* var1 /* : MType */;
47 val* var3 /* : MType */;
48 long var4 /* : Int */;
49 {
50 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
51 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
52 if (unlikely(var3 == NULL)) {
53 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
54 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
55 show_backtrace(1);
56 }
57 var1 = var3;
58 RET_LABEL2:(void)0;
59 }
60 }
61 {
62 var4 = ((long (*)(val*))(var1->class->vft[COLOR_model__MType__length]))(var1) /* length on <var1:MType>*/;
63 }
64 var = var4;
65 goto RET_LABEL;
66 RET_LABEL:;
67 return var;
68 }
69 /* method model#MNullableType#length for (self: Object): Int */
70 long VIRTUAL_model__MNullableType__length(val* self) {
71 long var /* : Int */;
72 long var1 /* : Int */;
73 var1 = model__MNullableType__length(self);
74 var = var1;
75 RET_LABEL:;
76 return var;
77 }
78 /* method model#MNullableType#collect_mclassdefs for (self: MNullableType, MModule): Set[MClassDef] */
79 val* model__MNullableType__collect_mclassdefs(val* self, val* p0) {
80 val* var /* : Set[MClassDef] */;
81 val* var_mmodule /* var mmodule: MModule */;
82 short int var1 /* : Bool */;
83 short int var2 /* : Bool */;
84 val* var3 /* : MType */;
85 val* var5 /* : MType */;
86 val* var6 /* : Set[MClassDef] */;
87 var_mmodule = p0;
88 {
89 var1 = model__MNullableType__need_anchor(self);
90 }
91 var2 = !var1;
92 if (unlikely(!var2)) {
93 PRINT_ERROR("Runtime error: %s", "Assert failed");
94 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1408);
95 show_backtrace(1);
96 }
97 {
98 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
99 var5 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
100 if (unlikely(var5 == NULL)) {
101 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
102 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
103 show_backtrace(1);
104 }
105 var3 = var5;
106 RET_LABEL4:(void)0;
107 }
108 }
109 {
110 var6 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclassdefs]))(var3, var_mmodule) /* collect_mclassdefs on <var3:MType>*/;
111 }
112 var = var6;
113 goto RET_LABEL;
114 RET_LABEL:;
115 return var;
116 }
117 /* method model#MNullableType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
118 val* VIRTUAL_model__MNullableType__collect_mclassdefs(val* self, val* p0) {
119 val* var /* : Set[MClassDef] */;
120 val* var1 /* : Set[MClassDef] */;
121 var1 = model__MNullableType__collect_mclassdefs(self, p0);
122 var = var1;
123 RET_LABEL:;
124 return var;
125 }
126 /* method model#MNullableType#collect_mclasses for (self: MNullableType, MModule): Set[MClass] */
127 val* model__MNullableType__collect_mclasses(val* self, val* p0) {
128 val* var /* : Set[MClass] */;
129 val* var_mmodule /* var mmodule: MModule */;
130 short int var1 /* : Bool */;
131 short int var2 /* : Bool */;
132 val* var3 /* : MType */;
133 val* var5 /* : MType */;
134 val* var6 /* : Set[MClass] */;
135 var_mmodule = p0;
136 {
137 var1 = model__MNullableType__need_anchor(self);
138 }
139 var2 = !var1;
140 if (unlikely(!var2)) {
141 PRINT_ERROR("Runtime error: %s", "Assert failed");
142 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1414);
143 show_backtrace(1);
144 }
145 {
146 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
147 var5 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
148 if (unlikely(var5 == NULL)) {
149 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
150 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
151 show_backtrace(1);
152 }
153 var3 = var5;
154 RET_LABEL4:(void)0;
155 }
156 }
157 {
158 var6 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclasses]))(var3, var_mmodule) /* collect_mclasses on <var3:MType>*/;
159 }
160 var = var6;
161 goto RET_LABEL;
162 RET_LABEL:;
163 return var;
164 }
165 /* method model#MNullableType#collect_mclasses for (self: Object, MModule): Set[MClass] */
166 val* VIRTUAL_model__MNullableType__collect_mclasses(val* self, val* p0) {
167 val* var /* : Set[MClass] */;
168 val* var1 /* : Set[MClass] */;
169 var1 = model__MNullableType__collect_mclasses(self, p0);
170 var = var1;
171 RET_LABEL:;
172 return var;
173 }
174 /* method model#MNullableType#collect_mtypes for (self: MNullableType, MModule): Set[MClassType] */
175 val* model__MNullableType__collect_mtypes(val* self, val* p0) {
176 val* var /* : Set[MClassType] */;
177 val* var_mmodule /* var mmodule: MModule */;
178 short int var1 /* : Bool */;
179 short int var2 /* : Bool */;
180 val* var3 /* : MType */;
181 val* var5 /* : MType */;
182 val* var6 /* : Set[MClassType] */;
183 var_mmodule = p0;
184 {
185 var1 = model__MNullableType__need_anchor(self);
186 }
187 var2 = !var1;
188 if (unlikely(!var2)) {
189 PRINT_ERROR("Runtime error: %s", "Assert failed");
190 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1420);
191 show_backtrace(1);
192 }
193 {
194 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
195 var5 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
196 if (unlikely(var5 == NULL)) {
197 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
198 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
199 show_backtrace(1);
200 }
201 var3 = var5;
202 RET_LABEL4:(void)0;
203 }
204 }
205 {
206 var6 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mtypes]))(var3, var_mmodule) /* collect_mtypes on <var3:MType>*/;
207 }
208 var = var6;
209 goto RET_LABEL;
210 RET_LABEL:;
211 return var;
212 }
213 /* method model#MNullableType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
214 val* VIRTUAL_model__MNullableType__collect_mtypes(val* self, val* p0) {
215 val* var /* : Set[MClassType] */;
216 val* var1 /* : Set[MClassType] */;
217 var1 = model__MNullableType__collect_mtypes(self, p0);
218 var = var1;
219 RET_LABEL:;
220 return var;
221 }
222 /* method model#MNullType#model for (self: MNullType): Model */
223 val* model__MNullType__model(val* self) {
224 val* var /* : Model */;
225 val* var1 /* : Model */;
226 var1 = self->attrs[COLOR_model__MNullType___model].val; /* _model on <self:MNullType> */
227 if (unlikely(var1 == NULL)) {
228 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
229 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1430);
230 show_backtrace(1);
231 }
232 var = var1;
233 RET_LABEL:;
234 return var;
235 }
236 /* method model#MNullType#model for (self: Object): Model */
237 val* VIRTUAL_model__MNullType__model(val* self) {
238 val* var /* : Model */;
239 val* var1 /* : Model */;
240 val* var3 /* : Model */;
241 { /* Inline model#MNullType#model (self) on <self:Object(MNullType)> */
242 var3 = self->attrs[COLOR_model__MNullType___model].val; /* _model on <self:Object(MNullType)> */
243 if (unlikely(var3 == NULL)) {
244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
245 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1430);
246 show_backtrace(1);
247 }
248 var1 = var3;
249 RET_LABEL2:(void)0;
250 }
251 var = var1;
252 RET_LABEL:;
253 return var;
254 }
255 /* method model#MNullType#model= for (self: MNullType, Model) */
256 void model__MNullType__model_61d(val* self, val* p0) {
257 self->attrs[COLOR_model__MNullType___model].val = p0; /* _model on <self:MNullType> */
258 RET_LABEL:;
259 }
260 /* method model#MNullType#model= for (self: Object, Model) */
261 void VIRTUAL_model__MNullType__model_61d(val* self, val* p0) {
262 { /* Inline model#MNullType#model= (self,p0) on <self:Object(MNullType)> */
263 self->attrs[COLOR_model__MNullType___model].val = p0; /* _model on <self:Object(MNullType)> */
264 RET_LABEL1:(void)0;
265 }
266 RET_LABEL:;
267 }
268 /* method model#MNullType#init for (self: MNullType, Model) */
269 void model__MNullType__init(val* self, val* p0) {
270 val* var_model /* var model: Model */;
271 {
272 { /* Inline model_base#MEntity#init (self) on <self:MNullType> */
273 RET_LABEL1:(void)0;
274 }
275 }
276 var_model = p0;
277 {
278 { /* Inline model#MNullType#model= (self,var_model) on <self:MNullType> */
279 self->attrs[COLOR_model__MNullType___model].val = var_model; /* _model on <self:MNullType> */
280 RET_LABEL2:(void)0;
281 }
282 }
283 RET_LABEL:;
284 }
285 /* method model#MNullType#init for (self: Object, Model) */
286 void VIRTUAL_model__MNullType__init(val* self, val* p0) {
287 model__MNullType__init(self, p0); /* Direct call model#MNullType#init on <self:Object(MNullType)>*/
288 RET_LABEL:;
289 }
290 /* method model#MNullType#to_s for (self: MNullType): String */
291 val* model__MNullType__to_s(val* self) {
292 val* var /* : String */;
293 static val* varonce;
294 val* var1 /* : String */;
295 char* var2 /* : NativeString */;
296 long var3 /* : Int */;
297 val* var4 /* : FlatString */;
298 if (varonce) {
299 var1 = varonce;
300 } else {
301 var2 = "null";
302 var3 = 4;
303 var4 = string__NativeString__to_s_with_length(var2, var3);
304 var1 = var4;
305 varonce = var1;
306 }
307 var = var1;
308 goto RET_LABEL;
309 RET_LABEL:;
310 return var;
311 }
312 /* method model#MNullType#to_s for (self: Object): String */
313 val* VIRTUAL_model__MNullType__to_s(val* self) {
314 val* var /* : String */;
315 val* var1 /* : String */;
316 var1 = model__MNullType__to_s(self);
317 var = var1;
318 RET_LABEL:;
319 return var;
320 }
321 /* method model#MNullType#as_nullable for (self: MNullType): MType */
322 val* model__MNullType__as_nullable(val* self) {
323 val* var /* : MType */;
324 var = self;
325 goto RET_LABEL;
326 RET_LABEL:;
327 return var;
328 }
329 /* method model#MNullType#as_nullable for (self: Object): MType */
330 val* VIRTUAL_model__MNullType__as_nullable(val* self) {
331 val* var /* : MType */;
332 val* var1 /* : MType */;
333 var1 = model__MNullType__as_nullable(self);
334 var = var1;
335 RET_LABEL:;
336 return var;
337 }
338 /* method model#MNullType#need_anchor for (self: MNullType): Bool */
339 short int model__MNullType__need_anchor(val* self) {
340 short int var /* : Bool */;
341 short int var1 /* : Bool */;
342 var1 = 0;
343 var = var1;
344 goto RET_LABEL;
345 RET_LABEL:;
346 return var;
347 }
348 /* method model#MNullType#need_anchor for (self: Object): Bool */
349 short int VIRTUAL_model__MNullType__need_anchor(val* self) {
350 short int var /* : Bool */;
351 short int var1 /* : Bool */;
352 var1 = model__MNullType__need_anchor(self);
353 var = var1;
354 RET_LABEL:;
355 return var;
356 }
357 /* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
358 val* model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
359 val* var /* : MType */;
360 val* var_mtype /* var mtype: MType */;
361 val* var_anchor /* var anchor: nullable MClassType */;
362 val* var_mmodule /* var mmodule: MModule */;
363 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
364 var_mtype = p0;
365 var_anchor = p1;
366 var_mmodule = p2;
367 var_cleanup_virtual = p3;
368 var = self;
369 goto RET_LABEL;
370 RET_LABEL:;
371 return var;
372 }
373 /* method model#MNullType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
374 val* VIRTUAL_model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
375 val* var /* : MType */;
376 val* var1 /* : MType */;
377 var1 = model__MNullType__resolve_for(self, p0, p1, p2, p3);
378 var = var1;
379 RET_LABEL:;
380 return var;
381 }
382 /* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
383 short int model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
384 short int var /* : Bool */;
385 val* var_mtype /* var mtype: MType */;
386 val* var_anchor /* var anchor: nullable MClassType */;
387 val* var_mmodule /* var mmodule: MModule */;
388 short int var1 /* : Bool */;
389 var_mtype = p0;
390 var_anchor = p1;
391 var_mmodule = p2;
392 var1 = 1;
393 var = var1;
394 goto RET_LABEL;
395 RET_LABEL:;
396 return var;
397 }
398 /* method model#MNullType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
399 short int VIRTUAL_model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
400 short int var /* : Bool */;
401 short int var1 /* : Bool */;
402 var1 = model__MNullType__can_resolve_for(self, p0, p1, p2);
403 var = var1;
404 RET_LABEL:;
405 return var;
406 }
407 /* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
408 val* model__MNullType__collect_mclassdefs(val* self, val* p0) {
409 val* var /* : Set[MClassDef] */;
410 val* var_mmodule /* var mmodule: MModule */;
411 val* var1 /* : HashSet[MClassDef] */;
412 var_mmodule = p0;
413 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
414 {
415 hash_collection__HashSet__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MClassDef]>*/
416 }
417 var = var1;
418 goto RET_LABEL;
419 RET_LABEL:;
420 return var;
421 }
422 /* method model#MNullType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
423 val* VIRTUAL_model__MNullType__collect_mclassdefs(val* self, val* p0) {
424 val* var /* : Set[MClassDef] */;
425 val* var1 /* : Set[MClassDef] */;
426 var1 = model__MNullType__collect_mclassdefs(self, p0);
427 var = var1;
428 RET_LABEL:;
429 return var;
430 }
431 /* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
432 val* model__MNullType__collect_mclasses(val* self, val* p0) {
433 val* var /* : Set[MClass] */;
434 val* var_mmodule /* var mmodule: MModule */;
435 val* var1 /* : HashSet[MClass] */;
436 var_mmodule = p0;
437 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
438 {
439 hash_collection__HashSet__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MClass]>*/
440 }
441 var = var1;
442 goto RET_LABEL;
443 RET_LABEL:;
444 return var;
445 }
446 /* method model#MNullType#collect_mclasses for (self: Object, MModule): Set[MClass] */
447 val* VIRTUAL_model__MNullType__collect_mclasses(val* self, val* p0) {
448 val* var /* : Set[MClass] */;
449 val* var1 /* : Set[MClass] */;
450 var1 = model__MNullType__collect_mclasses(self, p0);
451 var = var1;
452 RET_LABEL:;
453 return var;
454 }
455 /* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
456 val* model__MNullType__collect_mtypes(val* self, val* p0) {
457 val* var /* : Set[MClassType] */;
458 val* var_mmodule /* var mmodule: MModule */;
459 val* var1 /* : HashSet[MClassType] */;
460 var_mmodule = p0;
461 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
462 {
463 hash_collection__HashSet__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MClassType]>*/
464 }
465 var = var1;
466 goto RET_LABEL;
467 RET_LABEL:;
468 return var;
469 }
470 /* method model#MNullType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
471 val* VIRTUAL_model__MNullType__collect_mtypes(val* self, val* p0) {
472 val* var /* : Set[MClassType] */;
473 val* var1 /* : Set[MClassType] */;
474 var1 = model__MNullType__collect_mtypes(self, p0);
475 var = var1;
476 RET_LABEL:;
477 return var;
478 }
479 /* method model#MSignature#mparameters for (self: MSignature): Array[MParameter] */
480 val* model__MSignature__mparameters(val* self) {
481 val* var /* : Array[MParameter] */;
482 val* var1 /* : Array[MParameter] */;
483 var1 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
484 if (unlikely(var1 == NULL)) {
485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
486 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
487 show_backtrace(1);
488 }
489 var = var1;
490 RET_LABEL:;
491 return var;
492 }
493 /* method model#MSignature#mparameters for (self: Object): Array[MParameter] */
494 val* VIRTUAL_model__MSignature__mparameters(val* self) {
495 val* var /* : Array[MParameter] */;
496 val* var1 /* : Array[MParameter] */;
497 val* var3 /* : Array[MParameter] */;
498 { /* Inline model#MSignature#mparameters (self) on <self:Object(MSignature)> */
499 var3 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:Object(MSignature)> */
500 if (unlikely(var3 == NULL)) {
501 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
502 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
503 show_backtrace(1);
504 }
505 var1 = var3;
506 RET_LABEL2:(void)0;
507 }
508 var = var1;
509 RET_LABEL:;
510 return var;
511 }
512 /* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
513 void model__MSignature__mparameters_61d(val* self, val* p0) {
514 self->attrs[COLOR_model__MSignature___mparameters].val = p0; /* _mparameters on <self:MSignature> */
515 RET_LABEL:;
516 }
517 /* method model#MSignature#mparameters= for (self: Object, Array[MParameter]) */
518 void VIRTUAL_model__MSignature__mparameters_61d(val* self, val* p0) {
519 { /* Inline model#MSignature#mparameters= (self,p0) on <self:Object(MSignature)> */
520 self->attrs[COLOR_model__MSignature___mparameters].val = p0; /* _mparameters on <self:Object(MSignature)> */
521 RET_LABEL1:(void)0;
522 }
523 RET_LABEL:;
524 }
525 /* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
526 val* model__MSignature__return_mtype(val* self) {
527 val* var /* : nullable MType */;
528 val* var1 /* : nullable MType */;
529 var1 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
530 var = var1;
531 RET_LABEL:;
532 return var;
533 }
534 /* method model#MSignature#return_mtype for (self: Object): nullable MType */
535 val* VIRTUAL_model__MSignature__return_mtype(val* self) {
536 val* var /* : nullable MType */;
537 val* var1 /* : nullable MType */;
538 val* var3 /* : nullable MType */;
539 { /* Inline model#MSignature#return_mtype (self) on <self:Object(MSignature)> */
540 var3 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:Object(MSignature)> */
541 var1 = var3;
542 RET_LABEL2:(void)0;
543 }
544 var = var1;
545 RET_LABEL:;
546 return var;
547 }
548 /* method model#MSignature#return_mtype= for (self: MSignature, nullable MType) */
549 void model__MSignature__return_mtype_61d(val* self, val* p0) {
550 self->attrs[COLOR_model__MSignature___return_mtype].val = p0; /* _return_mtype on <self:MSignature> */
551 RET_LABEL:;
552 }
553 /* method model#MSignature#return_mtype= for (self: Object, nullable MType) */
554 void VIRTUAL_model__MSignature__return_mtype_61d(val* self, val* p0) {
555 { /* Inline model#MSignature#return_mtype= (self,p0) on <self:Object(MSignature)> */
556 self->attrs[COLOR_model__MSignature___return_mtype].val = p0; /* _return_mtype on <self:Object(MSignature)> */
557 RET_LABEL1:(void)0;
558 }
559 RET_LABEL:;
560 }
561 /* method model#MSignature#length for (self: MSignature): Int */
562 long model__MSignature__length(val* self) {
563 long var /* : Int */;
564 long var1 /* : Int */;
565 long var_res /* var res: Int */;
566 val* var2 /* : nullable MType */;
567 val* var4 /* : nullable MType */;
568 val* var_t /* var t: nullable MType */;
569 val* var5 /* : null */;
570 short int var6 /* : Bool */;
571 short int var7 /* : Bool */;
572 val* var_other /* var other: nullable Object */;
573 short int var9 /* : Bool */;
574 short int var10 /* : Bool */;
575 short int var11 /* : Bool */;
576 long var12 /* : Int */;
577 long var13 /* : Int */;
578 short int var15 /* : Bool */;
579 int cltype;
580 int idtype;
581 const char* var_class_name;
582 long var16 /* : Int */;
583 val* var17 /* : Array[MParameter] */;
584 val* var19 /* : Array[MParameter] */;
585 val* var20 /* : ArrayIterator[nullable Object] */;
586 short int var21 /* : Bool */;
587 val* var22 /* : nullable Object */;
588 val* var_p /* var p: MParameter */;
589 val* var23 /* : MType */;
590 val* var25 /* : MType */;
591 long var26 /* : Int */;
592 long var27 /* : Int */;
593 short int var29 /* : Bool */;
594 int cltype30;
595 int idtype31;
596 const char* var_class_name32;
597 long var33 /* : Int */;
598 var1 = 1;
599 var_res = var1;
600 {
601 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
602 var4 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
603 var2 = var4;
604 RET_LABEL3:(void)0;
605 }
606 }
607 var_t = var2;
608 var5 = NULL;
609 if (var_t == NULL) {
610 var6 = 0; /* is null */
611 } else {
612 var6 = 1; /* arg is null and recv is not */
613 }
614 if (0) {
615 { /* Inline kernel#Object#!= (var_t,var5) on <var_t:nullable MType> */
616 var_other = var5;
617 {
618 var10 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___61d_61d]))(var_t, var_other) /* == on <var_t:nullable MType(MType)>*/;
619 var9 = var10;
620 }
621 var11 = !var9;
622 var7 = var11;
623 goto RET_LABEL8;
624 RET_LABEL8:(void)0;
625 }
626 var6 = var7;
627 }
628 if (var6){
629 {
630 var12 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__length]))(var_t) /* length on <var_t:nullable MType(MType)>*/;
631 }
632 {
633 { /* Inline kernel#Int#+ (var_res,var12) on <var_res:Int> */
634 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
635 /* <var12:Int> isa OTHER */
636 var15 = 1; /* easy <var12:Int> isa OTHER*/
637 if (unlikely(!var15)) {
638 var_class_name = type_kernel__Int.name;
639 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
640 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
641 show_backtrace(1);
642 }
643 var16 = var_res + var12;
644 var13 = var16;
645 goto RET_LABEL14;
646 RET_LABEL14:(void)0;
647 }
648 }
649 var_res = var13;
650 } else {
651 }
652 {
653 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
654 var19 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
655 if (unlikely(var19 == NULL)) {
656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
657 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
658 show_backtrace(1);
659 }
660 var17 = var19;
661 RET_LABEL18:(void)0;
662 }
663 }
664 {
665 var20 = array__AbstractArrayRead__iterator(var17);
666 }
667 for(;;) {
668 {
669 var21 = array__ArrayIterator__is_ok(var20);
670 }
671 if(!var21) break;
672 {
673 var22 = array__ArrayIterator__item(var20);
674 }
675 var_p = var22;
676 {
677 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
678 var25 = var_p->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
679 if (unlikely(var25 == NULL)) {
680 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
681 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
682 show_backtrace(1);
683 }
684 var23 = var25;
685 RET_LABEL24:(void)0;
686 }
687 }
688 {
689 var26 = ((long (*)(val*))(var23->class->vft[COLOR_model__MType__length]))(var23) /* length on <var23:MType>*/;
690 }
691 {
692 { /* Inline kernel#Int#+ (var_res,var26) on <var_res:Int> */
693 /* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
694 /* <var26:Int> isa OTHER */
695 var29 = 1; /* easy <var26:Int> isa OTHER*/
696 if (unlikely(!var29)) {
697 var_class_name32 = type_kernel__Int.name;
698 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
699 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
700 show_backtrace(1);
701 }
702 var33 = var_res + var26;
703 var27 = var33;
704 goto RET_LABEL28;
705 RET_LABEL28:(void)0;
706 }
707 }
708 var_res = var27;
709 CONTINUE_label: (void)0;
710 {
711 array__ArrayIterator__next(var20); /* Direct call array#ArrayIterator#next on <var20:ArrayIterator[nullable Object]>*/
712 }
713 }
714 BREAK_label: (void)0;
715 var = var_res;
716 goto RET_LABEL;
717 RET_LABEL:;
718 return var;
719 }
720 /* method model#MSignature#length for (self: Object): Int */
721 long VIRTUAL_model__MSignature__length(val* self) {
722 long var /* : Int */;
723 long var1 /* : Int */;
724 var1 = model__MSignature__length(self);
725 var = var1;
726 RET_LABEL:;
727 return var;
728 }
729 /* method model#MSignature#init for (self: MSignature, Array[MParameter], nullable MType) */
730 void model__MSignature__init(val* self, val* p0, val* p1) {
731 val* var_mparameters /* var mparameters: Array[MParameter] */;
732 val* var_return_mtype /* var return_mtype: nullable MType */;
733 long var /* : Int */;
734 long var2 /* : Int */;
735 long var4 /* : Int */;
736 long var_vararg_rank /* var vararg_rank: Int */;
737 val* var5 /* : Range[Int] */;
738 long var6 /* : Int */;
739 long var7 /* : Int */;
740 val* var8 /* : Discrete */;
741 val* var9 /* : Discrete */;
742 val* var10 /* : Iterator[Discrete] */;
743 short int var11 /* : Bool */;
744 val* var12 /* : nullable Object */;
745 long var_i /* var i: Int */;
746 long var13 /* : Int */;
747 val* var14 /* : nullable Object */;
748 val* var_parameter /* var parameter: MParameter */;
749 short int var15 /* : Bool */;
750 short int var17 /* : Bool */;
751 long var18 /* : Int */;
752 long var19 /* : Int */;
753 long var21 /* : Int */;
754 short int var22 /* : Bool */;
755 short int var23 /* : Bool */;
756 short int var25 /* : Bool */;
757 {
758 { /* Inline model_base#MEntity#init (self) on <self:MSignature> */
759 RET_LABEL1:(void)0;
760 }
761 }
762 var_mparameters = p0;
763 var_return_mtype = p1;
764 var = 1;
765 {
766 { /* Inline kernel#Int#unary - (var) on <var:Int> */
767 var4 = -var;
768 var2 = var4;
769 goto RET_LABEL3;
770 RET_LABEL3:(void)0;
771 }
772 }
773 var_vararg_rank = var2;
774 var5 = NEW_range__Range(&type_range__Rangekernel__Int);
775 var6 = 0;
776 {
777 var7 = array__AbstractArrayRead__length(var_mparameters);
778 }
779 {
780 var8 = BOX_kernel__Int(var6); /* autobox from Int to Discrete */
781 var9 = BOX_kernel__Int(var7); /* autobox from Int to Discrete */
782 range__Range__without_last(var5, var8, var9); /* Direct call range#Range#without_last on <var5:Range[Int]>*/
783 }
784 {
785 var10 = range__Range__iterator(var5);
786 }
787 for(;;) {
788 {
789 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[Discrete]>*/;
790 }
791 if(!var11) break;
792 {
793 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[Discrete]>*/;
794 }
795 var13 = ((struct instance_kernel__Int*)var12)->value; /* autounbox from nullable Object to Int */;
796 var_i = var13;
797 {
798 var14 = array__Array___91d_93d(var_mparameters, var_i);
799 }
800 var_parameter = var14;
801 {
802 { /* Inline model#MParameter#is_vararg (var_parameter) on <var_parameter:MParameter> */
803 var17 = var_parameter->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <var_parameter:MParameter> */
804 var15 = var17;
805 RET_LABEL16:(void)0;
806 }
807 }
808 if (var15){
809 var18 = 1;
810 {
811 { /* Inline kernel#Int#unary - (var18) on <var18:Int> */
812 var21 = -var18;
813 var19 = var21;
814 goto RET_LABEL20;
815 RET_LABEL20:(void)0;
816 }
817 }
818 {
819 { /* Inline kernel#Int#== (var_vararg_rank,var19) on <var_vararg_rank:Int> */
820 var25 = var_vararg_rank == var19;
821 var23 = var25;
822 goto RET_LABEL24;
823 RET_LABEL24:(void)0;
824 }
825 var22 = var23;
826 }
827 if (unlikely(!var22)) {
828 PRINT_ERROR("Runtime error: %s", "Assert failed");
829 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1488);
830 show_backtrace(1);
831 }
832 var_vararg_rank = var_i;
833 } else {
834 }
835 CONTINUE_label: (void)0;
836 {
837 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[Discrete]>*/;
838 }
839 }
840 BREAK_label: (void)0;
841 {
842 { /* Inline model#MSignature#mparameters= (self,var_mparameters) on <self:MSignature> */
843 self->attrs[COLOR_model__MSignature___mparameters].val = var_mparameters; /* _mparameters on <self:MSignature> */
844 RET_LABEL26:(void)0;
845 }
846 }
847 {
848 { /* Inline model#MSignature#return_mtype= (self,var_return_mtype) on <self:MSignature> */
849 self->attrs[COLOR_model__MSignature___return_mtype].val = var_return_mtype; /* _return_mtype on <self:MSignature> */
850 RET_LABEL27:(void)0;
851 }
852 }
853 {
854 { /* Inline model#MSignature#vararg_rank= (self,var_vararg_rank) on <self:MSignature> */
855 self->attrs[COLOR_model__MSignature___vararg_rank].l = var_vararg_rank; /* _vararg_rank on <self:MSignature> */
856 RET_LABEL28:(void)0;
857 }
858 }
859 RET_LABEL:;
860 }
861 /* method model#MSignature#init for (self: Object, Array[MParameter], nullable MType) */
862 void VIRTUAL_model__MSignature__init(val* self, val* p0, val* p1) {
863 model__MSignature__init(self, p0, p1); /* Direct call model#MSignature#init on <self:Object(MSignature)>*/
864 RET_LABEL:;
865 }
866 /* method model#MSignature#vararg_rank for (self: MSignature): Int */
867 long model__MSignature__vararg_rank(val* self) {
868 long var /* : Int */;
869 long var1 /* : Int */;
870 var1 = self->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <self:MSignature> */
871 var = var1;
872 RET_LABEL:;
873 return var;
874 }
875 /* method model#MSignature#vararg_rank for (self: Object): Int */
876 long VIRTUAL_model__MSignature__vararg_rank(val* self) {
877 long var /* : Int */;
878 long var1 /* : Int */;
879 long var3 /* : Int */;
880 { /* Inline model#MSignature#vararg_rank (self) on <self:Object(MSignature)> */
881 var3 = self->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <self:Object(MSignature)> */
882 var1 = var3;
883 RET_LABEL2:(void)0;
884 }
885 var = var1;
886 RET_LABEL:;
887 return var;
888 }
889 /* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
890 void model__MSignature__vararg_rank_61d(val* self, long p0) {
891 self->attrs[COLOR_model__MSignature___vararg_rank].l = p0; /* _vararg_rank on <self:MSignature> */
892 RET_LABEL:;
893 }
894 /* method model#MSignature#vararg_rank= for (self: Object, Int) */
895 void VIRTUAL_model__MSignature__vararg_rank_61d(val* self, long p0) {
896 { /* Inline model#MSignature#vararg_rank= (self,p0) on <self:Object(MSignature)> */
897 self->attrs[COLOR_model__MSignature___vararg_rank].l = p0; /* _vararg_rank on <self:Object(MSignature)> */
898 RET_LABEL1:(void)0;
899 }
900 RET_LABEL:;
901 }
902 /* method model#MSignature#arity for (self: MSignature): Int */
903 long model__MSignature__arity(val* self) {
904 long var /* : Int */;
905 val* var1 /* : Array[MParameter] */;
906 val* var3 /* : Array[MParameter] */;
907 long var4 /* : Int */;
908 {
909 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
910 var3 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
911 if (unlikely(var3 == NULL)) {
912 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
913 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
914 show_backtrace(1);
915 }
916 var1 = var3;
917 RET_LABEL2:(void)0;
918 }
919 }
920 {
921 var4 = array__AbstractArrayRead__length(var1);
922 }
923 var = var4;
924 goto RET_LABEL;
925 RET_LABEL:;
926 return var;
927 }
928 /* method model#MSignature#arity for (self: Object): Int */
929 long VIRTUAL_model__MSignature__arity(val* self) {
930 long var /* : Int */;
931 long var1 /* : Int */;
932 var1 = model__MSignature__arity(self);
933 var = var1;
934 RET_LABEL:;
935 return var;
936 }
937 /* method model#MSignature#to_s for (self: MSignature): String */
938 val* model__MSignature__to_s(val* self) {
939 val* var /* : String */;
940 val* var1 /* : FlatBuffer */;
941 val* var_b /* var b: FlatBuffer */;
942 val* var2 /* : Array[MParameter] */;
943 val* var4 /* : Array[MParameter] */;
944 short int var5 /* : Bool */;
945 short int var6 /* : Bool */;
946 static val* varonce;
947 val* var7 /* : String */;
948 char* var8 /* : NativeString */;
949 long var9 /* : Int */;
950 val* var10 /* : FlatString */;
951 val* var11 /* : Range[Int] */;
952 long var12 /* : Int */;
953 val* var13 /* : Array[MParameter] */;
954 val* var15 /* : Array[MParameter] */;
955 long var16 /* : Int */;
956 val* var17 /* : Discrete */;
957 val* var18 /* : Discrete */;
958 val* var19 /* : Iterator[Discrete] */;
959 short int var20 /* : Bool */;
960 val* var21 /* : nullable Object */;
961 long var_i /* var i: Int */;
962 long var22 /* : Int */;
963 val* var23 /* : Array[MParameter] */;
964 val* var25 /* : Array[MParameter] */;
965 val* var26 /* : nullable Object */;
966 val* var_mparameter /* var mparameter: MParameter */;
967 long var27 /* : Int */;
968 short int var28 /* : Bool */;
969 short int var30 /* : Bool */;
970 int cltype;
971 int idtype;
972 const char* var_class_name;
973 short int var31 /* : Bool */;
974 static val* varonce32;
975 val* var33 /* : String */;
976 char* var34 /* : NativeString */;
977 long var35 /* : Int */;
978 val* var36 /* : FlatString */;
979 val* var37 /* : String */;
980 val* var39 /* : String */;
981 static val* varonce40;
982 val* var41 /* : String */;
983 char* var42 /* : NativeString */;
984 long var43 /* : Int */;
985 val* var44 /* : FlatString */;
986 val* var45 /* : MType */;
987 val* var47 /* : MType */;
988 val* var48 /* : String */;
989 short int var49 /* : Bool */;
990 short int var51 /* : Bool */;
991 static val* varonce52;
992 val* var53 /* : String */;
993 char* var54 /* : NativeString */;
994 long var55 /* : Int */;
995 val* var56 /* : FlatString */;
996 static val* varonce57;
997 val* var58 /* : String */;
998 char* var59 /* : NativeString */;
999 long var60 /* : Int */;
1000 val* var61 /* : FlatString */;
1001 val* var62 /* : nullable MType */;
1002 val* var64 /* : nullable MType */;
1003 val* var_ret /* var ret: nullable MType */;
1004 val* var65 /* : null */;
1005 short int var66 /* : Bool */;
1006 short int var67 /* : Bool */;
1007 val* var_other /* var other: nullable Object */;
1008 short int var69 /* : Bool */;
1009 short int var70 /* : Bool */;
1010 short int var71 /* : Bool */;
1011 static val* varonce72;
1012 val* var73 /* : String */;
1013 char* var74 /* : NativeString */;
1014 long var75 /* : Int */;
1015 val* var76 /* : FlatString */;
1016 val* var77 /* : String */;
1017 val* var78 /* : String */;
1018 var1 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
1019 {
1020 string__FlatBuffer__init(var1); /* Direct call string#FlatBuffer#init on <var1:FlatBuffer>*/
1021 }
1022 var_b = var1;
1023 {
1024 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
1025 var4 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
1026 if (unlikely(var4 == NULL)) {
1027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1028 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
1029 show_backtrace(1);
1030 }
1031 var2 = var4;
1032 RET_LABEL3:(void)0;
1033 }
1034 }
1035 {
1036 var5 = array__AbstractArrayRead__is_empty(var2);
1037 }
1038 var6 = !var5;
1039 if (var6){
1040 if (varonce) {
1041 var7 = varonce;
1042 } else {
1043 var8 = "(";
1044 var9 = 1;
1045 var10 = string__NativeString__to_s_with_length(var8, var9);
1046 var7 = var10;
1047 varonce = var7;
1048 }
1049 {
1050 string__FlatBuffer__append(var_b, var7); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1051 }
1052 var11 = NEW_range__Range(&type_range__Rangekernel__Int);
1053 var12 = 0;
1054 {
1055 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
1056 var15 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
1057 if (unlikely(var15 == NULL)) {
1058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1059 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
1060 show_backtrace(1);
1061 }
1062 var13 = var15;
1063 RET_LABEL14:(void)0;
1064 }
1065 }
1066 {
1067 var16 = array__AbstractArrayRead__length(var13);
1068 }
1069 {
1070 var17 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
1071 var18 = BOX_kernel__Int(var16); /* autobox from Int to Discrete */
1072 range__Range__without_last(var11, var17, var18); /* Direct call range#Range#without_last on <var11:Range[Int]>*/
1073 }
1074 {
1075 var19 = range__Range__iterator(var11);
1076 }
1077 for(;;) {
1078 {
1079 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[Discrete]>*/;
1080 }
1081 if(!var20) break;
1082 {
1083 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[Discrete]>*/;
1084 }
1085 var22 = ((struct instance_kernel__Int*)var21)->value; /* autounbox from nullable Object to Int */;
1086 var_i = var22;
1087 {
1088 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
1089 var25 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
1090 if (unlikely(var25 == NULL)) {
1091 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1092 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
1093 show_backtrace(1);
1094 }
1095 var23 = var25;
1096 RET_LABEL24:(void)0;
1097 }
1098 }
1099 {
1100 var26 = array__Array___91d_93d(var23, var_i);
1101 }
1102 var_mparameter = var26;
1103 var27 = 0;
1104 {
1105 { /* Inline kernel#Int#> (var_i,var27) on <var_i:Int> */
1106 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
1107 /* <var27:Int> isa OTHER */
1108 var30 = 1; /* easy <var27:Int> isa OTHER*/
1109 if (unlikely(!var30)) {
1110 var_class_name = type_kernel__Int.name;
1111 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1112 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
1113 show_backtrace(1);
1114 }
1115 var31 = var_i > var27;
1116 var28 = var31;
1117 goto RET_LABEL29;
1118 RET_LABEL29:(void)0;
1119 }
1120 }
1121 if (var28){
1122 if (varonce32) {
1123 var33 = varonce32;
1124 } else {
1125 var34 = ", ";
1126 var35 = 2;
1127 var36 = string__NativeString__to_s_with_length(var34, var35);
1128 var33 = var36;
1129 varonce32 = var33;
1130 }
1131 {
1132 string__FlatBuffer__append(var_b, var33); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1133 }
1134 } else {
1135 }
1136 {
1137 { /* Inline model#MParameter#name (var_mparameter) on <var_mparameter:MParameter> */
1138 var39 = var_mparameter->attrs[COLOR_model__MParameter___name].val; /* _name on <var_mparameter:MParameter> */
1139 if (unlikely(var39 == NULL)) {
1140 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1141 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
1142 show_backtrace(1);
1143 }
1144 var37 = var39;
1145 RET_LABEL38:(void)0;
1146 }
1147 }
1148 {
1149 string__FlatBuffer__append(var_b, var37); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1150 }
1151 if (varonce40) {
1152 var41 = varonce40;
1153 } else {
1154 var42 = ": ";
1155 var43 = 2;
1156 var44 = string__NativeString__to_s_with_length(var42, var43);
1157 var41 = var44;
1158 varonce40 = var41;
1159 }
1160 {
1161 string__FlatBuffer__append(var_b, var41); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1162 }
1163 {
1164 { /* Inline model#MParameter#mtype (var_mparameter) on <var_mparameter:MParameter> */
1165 var47 = var_mparameter->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_mparameter:MParameter> */
1166 if (unlikely(var47 == NULL)) {
1167 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1168 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1169 show_backtrace(1);
1170 }
1171 var45 = var47;
1172 RET_LABEL46:(void)0;
1173 }
1174 }
1175 {
1176 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:MType>*/;
1177 }
1178 {
1179 string__FlatBuffer__append(var_b, var48); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1180 }
1181 {
1182 { /* Inline model#MParameter#is_vararg (var_mparameter) on <var_mparameter:MParameter> */
1183 var51 = var_mparameter->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <var_mparameter:MParameter> */
1184 var49 = var51;
1185 RET_LABEL50:(void)0;
1186 }
1187 }
1188 if (var49){
1189 if (varonce52) {
1190 var53 = varonce52;
1191 } else {
1192 var54 = "...";
1193 var55 = 3;
1194 var56 = string__NativeString__to_s_with_length(var54, var55);
1195 var53 = var56;
1196 varonce52 = var53;
1197 }
1198 {
1199 string__FlatBuffer__append(var_b, var53); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1200 }
1201 } else {
1202 }
1203 CONTINUE_label: (void)0;
1204 {
1205 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[Discrete]>*/;
1206 }
1207 }
1208 BREAK_label: (void)0;
1209 if (varonce57) {
1210 var58 = varonce57;
1211 } else {
1212 var59 = ")";
1213 var60 = 1;
1214 var61 = string__NativeString__to_s_with_length(var59, var60);
1215 var58 = var61;
1216 varonce57 = var58;
1217 }
1218 {
1219 string__FlatBuffer__append(var_b, var58); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1220 }
1221 } else {
1222 }
1223 {
1224 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
1225 var64 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
1226 var62 = var64;
1227 RET_LABEL63:(void)0;
1228 }
1229 }
1230 var_ret = var62;
1231 var65 = NULL;
1232 if (var_ret == NULL) {
1233 var66 = 0; /* is null */
1234 } else {
1235 var66 = 1; /* arg is null and recv is not */
1236 }
1237 if (0) {
1238 { /* Inline kernel#Object#!= (var_ret,var65) on <var_ret:nullable MType> */
1239 var_other = var65;
1240 {
1241 var70 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
1242 var69 = var70;
1243 }
1244 var71 = !var69;
1245 var67 = var71;
1246 goto RET_LABEL68;
1247 RET_LABEL68:(void)0;
1248 }
1249 var66 = var67;
1250 }
1251 if (var66){
1252 if (varonce72) {
1253 var73 = varonce72;
1254 } else {
1255 var74 = ": ";
1256 var75 = 2;
1257 var76 = string__NativeString__to_s_with_length(var74, var75);
1258 var73 = var76;
1259 varonce72 = var73;
1260 }
1261 {
1262 string__FlatBuffer__append(var_b, var73); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1263 }
1264 {
1265 var77 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__Object__to_s]))(var_ret) /* to_s on <var_ret:nullable MType(MType)>*/;
1266 }
1267 {
1268 string__FlatBuffer__append(var_b, var77); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
1269 }
1270 } else {
1271 }
1272 {
1273 var78 = string__FlatBuffer__to_s(var_b);
1274 }
1275 var = var78;
1276 goto RET_LABEL;
1277 RET_LABEL:;
1278 return var;
1279 }
1280 /* method model#MSignature#to_s for (self: Object): String */
1281 val* VIRTUAL_model__MSignature__to_s(val* self) {
1282 val* var /* : String */;
1283 val* var1 /* : String */;
1284 var1 = model__MSignature__to_s(self);
1285 var = var1;
1286 RET_LABEL:;
1287 return var;
1288 }
1289 /* method model#MSignature#resolve_for for (self: MSignature, MType, nullable MClassType, MModule, Bool): MSignature */
1290 val* model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1291 val* var /* : MSignature */;
1292 val* var_mtype /* var mtype: MType */;
1293 val* var_anchor /* var anchor: nullable MClassType */;
1294 val* var_mmodule /* var mmodule: MModule */;
1295 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
1296 val* var1 /* : Array[MParameter] */;
1297 val* var_params /* var params: Array[MParameter] */;
1298 val* var2 /* : Array[MParameter] */;
1299 val* var4 /* : Array[MParameter] */;
1300 val* var5 /* : ArrayIterator[nullable Object] */;
1301 short int var6 /* : Bool */;
1302 val* var7 /* : nullable Object */;
1303 val* var_p /* var p: MParameter */;
1304 val* var8 /* : MParameter */;
1305 val* var9 /* : nullable MType */;
1306 val* var11 /* : nullable MType */;
1307 val* var_ret /* var ret: nullable MType */;
1308 val* var12 /* : null */;
1309 short int var13 /* : Bool */;
1310 short int var14 /* : Bool */;
1311 val* var_other /* var other: nullable Object */;
1312 short int var16 /* : Bool */;
1313 short int var17 /* : Bool */;
1314 short int var18 /* : Bool */;
1315 val* var19 /* : MType */;
1316 val* var20 /* : MSignature */;
1317 val* var_res /* var res: MSignature */;
1318 var_mtype = p0;
1319 var_anchor = p1;
1320 var_mmodule = p2;
1321 var_cleanup_virtual = p3;
1322 var1 = NEW_array__Array(&type_array__Arraymodel__MParameter);
1323 {
1324 array__Array__init(var1); /* Direct call array#Array#init on <var1:Array[MParameter]>*/
1325 }
1326 var_params = var1;
1327 {
1328 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
1329 var4 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
1330 if (unlikely(var4 == NULL)) {
1331 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1332 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1452);
1333 show_backtrace(1);
1334 }
1335 var2 = var4;
1336 RET_LABEL3:(void)0;
1337 }
1338 }
1339 {
1340 var5 = array__AbstractArrayRead__iterator(var2);
1341 }
1342 for(;;) {
1343 {
1344 var6 = array__ArrayIterator__is_ok(var5);
1345 }
1346 if(!var6) break;
1347 {
1348 var7 = array__ArrayIterator__item(var5);
1349 }
1350 var_p = var7;
1351 {
1352 var8 = model__MParameter__resolve_for(var_p, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual);
1353 }
1354 {
1355 array__Array__add(var_params, var8); /* Direct call array#Array#add on <var_params:Array[MParameter]>*/
1356 }
1357 CONTINUE_label: (void)0;
1358 {
1359 array__ArrayIterator__next(var5); /* Direct call array#ArrayIterator#next on <var5:ArrayIterator[nullable Object]>*/
1360 }
1361 }
1362 BREAK_label: (void)0;
1363 {
1364 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
1365 var11 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
1366 var9 = var11;
1367 RET_LABEL10:(void)0;
1368 }
1369 }
1370 var_ret = var9;
1371 var12 = NULL;
1372 if (var_ret == NULL) {
1373 var13 = 0; /* is null */
1374 } else {
1375 var13 = 1; /* arg is null and recv is not */
1376 }
1377 if (0) {
1378 { /* Inline kernel#Object#!= (var_ret,var12) on <var_ret:nullable MType> */
1379 var_other = var12;
1380 {
1381 var17 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
1382 var16 = var17;
1383 }
1384 var18 = !var16;
1385 var14 = var18;
1386 goto RET_LABEL15;
1387 RET_LABEL15:(void)0;
1388 }
1389 var13 = var14;
1390 }
1391 if (var13){
1392 {
1393 var19 = ((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)>*/;
1394 }
1395 var_ret = var19;
1396 } else {
1397 }
1398 var20 = NEW_model__MSignature(&type_model__MSignature);
1399 {
1400 model__MSignature__init(var20, var_params, var_ret); /* Direct call model#MSignature#init on <var20:MSignature>*/
1401 }
1402 var_res = var20;
1403 var = var_res;
1404 goto RET_LABEL;
1405 RET_LABEL:;
1406 return var;
1407 }
1408 /* method model#MSignature#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
1409 val* VIRTUAL_model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1410 val* var /* : MType */;
1411 val* var1 /* : MSignature */;
1412 var1 = model__MSignature__resolve_for(self, p0, p1, p2, p3);
1413 var = var1;
1414 RET_LABEL:;
1415 return var;
1416 }
1417 /* method model#MParameter#name for (self: MParameter): String */
1418 val* model__MParameter__name(val* self) {
1419 val* var /* : String */;
1420 val* var1 /* : String */;
1421 var1 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
1422 if (unlikely(var1 == NULL)) {
1423 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1424 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
1425 show_backtrace(1);
1426 }
1427 var = var1;
1428 RET_LABEL:;
1429 return var;
1430 }
1431 /* method model#MParameter#name for (self: Object): String */
1432 val* VIRTUAL_model__MParameter__name(val* self) {
1433 val* var /* : String */;
1434 val* var1 /* : String */;
1435 val* var3 /* : String */;
1436 { /* Inline model#MParameter#name (self) on <self:Object(MParameter)> */
1437 var3 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:Object(MParameter)> */
1438 if (unlikely(var3 == NULL)) {
1439 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1440 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
1441 show_backtrace(1);
1442 }
1443 var1 = var3;
1444 RET_LABEL2:(void)0;
1445 }
1446 var = var1;
1447 RET_LABEL:;
1448 return var;
1449 }
1450 /* method model#MParameter#name= for (self: MParameter, String) */
1451 void model__MParameter__name_61d(val* self, val* p0) {
1452 self->attrs[COLOR_model__MParameter___name].val = p0; /* _name on <self:MParameter> */
1453 RET_LABEL:;
1454 }
1455 /* method model#MParameter#name= for (self: Object, String) */
1456 void VIRTUAL_model__MParameter__name_61d(val* self, val* p0) {
1457 { /* Inline model#MParameter#name= (self,p0) on <self:Object(MParameter)> */
1458 self->attrs[COLOR_model__MParameter___name].val = p0; /* _name on <self:Object(MParameter)> */
1459 RET_LABEL1:(void)0;
1460 }
1461 RET_LABEL:;
1462 }
1463 /* method model#MParameter#mtype for (self: MParameter): MType */
1464 val* model__MParameter__mtype(val* self) {
1465 val* var /* : MType */;
1466 val* var1 /* : MType */;
1467 var1 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
1468 if (unlikely(var1 == NULL)) {
1469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1470 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1471 show_backtrace(1);
1472 }
1473 var = var1;
1474 RET_LABEL:;
1475 return var;
1476 }
1477 /* method model#MParameter#mtype for (self: Object): MType */
1478 val* VIRTUAL_model__MParameter__mtype(val* self) {
1479 val* var /* : MType */;
1480 val* var1 /* : MType */;
1481 val* var3 /* : MType */;
1482 { /* Inline model#MParameter#mtype (self) on <self:Object(MParameter)> */
1483 var3 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:Object(MParameter)> */
1484 if (unlikely(var3 == NULL)) {
1485 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1486 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1487 show_backtrace(1);
1488 }
1489 var1 = var3;
1490 RET_LABEL2:(void)0;
1491 }
1492 var = var1;
1493 RET_LABEL:;
1494 return var;
1495 }
1496 /* method model#MParameter#mtype= for (self: MParameter, MType) */
1497 void model__MParameter__mtype_61d(val* self, val* p0) {
1498 self->attrs[COLOR_model__MParameter___mtype].val = p0; /* _mtype on <self:MParameter> */
1499 RET_LABEL:;
1500 }
1501 /* method model#MParameter#mtype= for (self: Object, MType) */
1502 void VIRTUAL_model__MParameter__mtype_61d(val* self, val* p0) {
1503 { /* Inline model#MParameter#mtype= (self,p0) on <self:Object(MParameter)> */
1504 self->attrs[COLOR_model__MParameter___mtype].val = p0; /* _mtype on <self:Object(MParameter)> */
1505 RET_LABEL1:(void)0;
1506 }
1507 RET_LABEL:;
1508 }
1509 /* method model#MParameter#is_vararg for (self: MParameter): Bool */
1510 short int model__MParameter__is_vararg(val* self) {
1511 short int var /* : Bool */;
1512 short int var1 /* : Bool */;
1513 var1 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
1514 var = var1;
1515 RET_LABEL:;
1516 return var;
1517 }
1518 /* method model#MParameter#is_vararg for (self: Object): Bool */
1519 short int VIRTUAL_model__MParameter__is_vararg(val* self) {
1520 short int var /* : Bool */;
1521 short int var1 /* : Bool */;
1522 short int var3 /* : Bool */;
1523 { /* Inline model#MParameter#is_vararg (self) on <self:Object(MParameter)> */
1524 var3 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:Object(MParameter)> */
1525 var1 = var3;
1526 RET_LABEL2:(void)0;
1527 }
1528 var = var1;
1529 RET_LABEL:;
1530 return var;
1531 }
1532 /* method model#MParameter#is_vararg= for (self: MParameter, Bool) */
1533 void model__MParameter__is_vararg_61d(val* self, short int p0) {
1534 self->attrs[COLOR_model__MParameter___is_vararg].s = p0; /* _is_vararg on <self:MParameter> */
1535 RET_LABEL:;
1536 }
1537 /* method model#MParameter#is_vararg= for (self: Object, Bool) */
1538 void VIRTUAL_model__MParameter__is_vararg_61d(val* self, short int p0) {
1539 { /* Inline model#MParameter#is_vararg= (self,p0) on <self:Object(MParameter)> */
1540 self->attrs[COLOR_model__MParameter___is_vararg].s = p0; /* _is_vararg on <self:Object(MParameter)> */
1541 RET_LABEL1:(void)0;
1542 }
1543 RET_LABEL:;
1544 }
1545 /* method model#MParameter#init for (self: MParameter, String, MType, Bool) */
1546 void model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
1547 val* var_name /* var name: String */;
1548 val* var_mtype /* var mtype: MType */;
1549 short int var_is_vararg /* var is_vararg: Bool */;
1550 {
1551 { /* Inline model_base#MEntity#init (self) on <self:MParameter> */
1552 RET_LABEL1:(void)0;
1553 }
1554 }
1555 var_name = p0;
1556 var_mtype = p1;
1557 var_is_vararg = p2;
1558 {
1559 { /* Inline model#MParameter#name= (self,var_name) on <self:MParameter> */
1560 self->attrs[COLOR_model__MParameter___name].val = var_name; /* _name on <self:MParameter> */
1561 RET_LABEL2:(void)0;
1562 }
1563 }
1564 {
1565 { /* Inline model#MParameter#mtype= (self,var_mtype) on <self:MParameter> */
1566 self->attrs[COLOR_model__MParameter___mtype].val = var_mtype; /* _mtype on <self:MParameter> */
1567 RET_LABEL3:(void)0;
1568 }
1569 }
1570 {
1571 { /* Inline model#MParameter#is_vararg= (self,var_is_vararg) on <self:MParameter> */
1572 self->attrs[COLOR_model__MParameter___is_vararg].s = var_is_vararg; /* _is_vararg on <self:MParameter> */
1573 RET_LABEL4:(void)0;
1574 }
1575 }
1576 RET_LABEL:;
1577 }
1578 /* method model#MParameter#init for (self: Object, String, MType, Bool) */
1579 void VIRTUAL_model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
1580 model__MParameter__init(self, p0, p1, p2); /* Direct call model#MParameter#init on <self:Object(MParameter)>*/
1581 RET_LABEL:;
1582 }
1583 /* method model#MParameter#to_s for (self: MParameter): String */
1584 val* model__MParameter__to_s(val* self) {
1585 val* var /* : String */;
1586 short int var1 /* : Bool */;
1587 short int var3 /* : Bool */;
1588 val* var4 /* : String */;
1589 val* var6 /* : String */;
1590 static val* varonce;
1591 val* var7 /* : String */;
1592 char* var8 /* : NativeString */;
1593 long var9 /* : Int */;
1594 val* var10 /* : FlatString */;
1595 val* var11 /* : MType */;
1596 val* var13 /* : MType */;
1597 static val* varonce14;
1598 val* var15 /* : String */;
1599 char* var16 /* : NativeString */;
1600 long var17 /* : Int */;
1601 val* var18 /* : FlatString */;
1602 val* var19 /* : Array[Object] */;
1603 long var20 /* : Int */;
1604 val* var21 /* : NativeArray[Object] */;
1605 val* var22 /* : String */;
1606 val* var23 /* : String */;
1607 val* var25 /* : String */;
1608 static val* varonce26;
1609 val* var27 /* : String */;
1610 char* var28 /* : NativeString */;
1611 long var29 /* : Int */;
1612 val* var30 /* : FlatString */;
1613 val* var31 /* : MType */;
1614 val* var33 /* : MType */;
1615 val* var34 /* : Array[Object] */;
1616 long var35 /* : Int */;
1617 val* var36 /* : NativeArray[Object] */;
1618 val* var37 /* : String */;
1619 {
1620 { /* Inline model#MParameter#is_vararg (self) on <self:MParameter> */
1621 var3 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
1622 var1 = var3;
1623 RET_LABEL2:(void)0;
1624 }
1625 }
1626 if (var1){
1627 {
1628 { /* Inline model#MParameter#name (self) on <self:MParameter> */
1629 var6 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
1630 if (unlikely(var6 == NULL)) {
1631 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1632 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
1633 show_backtrace(1);
1634 }
1635 var4 = var6;
1636 RET_LABEL5:(void)0;
1637 }
1638 }
1639 if (varonce) {
1640 var7 = varonce;
1641 } else {
1642 var8 = ": ";
1643 var9 = 2;
1644 var10 = string__NativeString__to_s_with_length(var8, var9);
1645 var7 = var10;
1646 varonce = var7;
1647 }
1648 {
1649 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
1650 var13 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
1651 if (unlikely(var13 == NULL)) {
1652 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1653 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1654 show_backtrace(1);
1655 }
1656 var11 = var13;
1657 RET_LABEL12:(void)0;
1658 }
1659 }
1660 if (varonce14) {
1661 var15 = varonce14;
1662 } else {
1663 var16 = "...";
1664 var17 = 3;
1665 var18 = string__NativeString__to_s_with_length(var16, var17);
1666 var15 = var18;
1667 varonce14 = var15;
1668 }
1669 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
1670 { /* var19 = array_instance Array[Object] */
1671 var20 = 4;
1672 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
1673 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var4;
1674 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var7;
1675 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var11;
1676 ((struct instance_array__NativeArray*)var21)->values[3] = (val*) var15;
1677 {
1678 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
1679 }
1680 }
1681 {
1682 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
1683 }
1684 var = var22;
1685 goto RET_LABEL;
1686 } else {
1687 {
1688 { /* Inline model#MParameter#name (self) on <self:MParameter> */
1689 var25 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
1690 if (unlikely(var25 == NULL)) {
1691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1692 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
1693 show_backtrace(1);
1694 }
1695 var23 = var25;
1696 RET_LABEL24:(void)0;
1697 }
1698 }
1699 if (varonce26) {
1700 var27 = varonce26;
1701 } else {
1702 var28 = ": ";
1703 var29 = 2;
1704 var30 = string__NativeString__to_s_with_length(var28, var29);
1705 var27 = var30;
1706 varonce26 = var27;
1707 }
1708 {
1709 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
1710 var33 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
1711 if (unlikely(var33 == NULL)) {
1712 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1713 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1714 show_backtrace(1);
1715 }
1716 var31 = var33;
1717 RET_LABEL32:(void)0;
1718 }
1719 }
1720 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
1721 { /* var34 = array_instance Array[Object] */
1722 var35 = 3;
1723 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
1724 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var23;
1725 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var27;
1726 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var31;
1727 {
1728 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
1729 }
1730 }
1731 {
1732 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
1733 }
1734 var = var37;
1735 goto RET_LABEL;
1736 }
1737 RET_LABEL:;
1738 return var;
1739 }
1740 /* method model#MParameter#to_s for (self: Object): String */
1741 val* VIRTUAL_model__MParameter__to_s(val* self) {
1742 val* var /* : String */;
1743 val* var1 /* : String */;
1744 var1 = model__MParameter__to_s(self);
1745 var = var1;
1746 RET_LABEL:;
1747 return var;
1748 }
1749 /* method model#MParameter#resolve_for for (self: MParameter, MType, nullable MClassType, MModule, Bool): MParameter */
1750 val* model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1751 val* var /* : MParameter */;
1752 val* var_mtype /* var mtype: MType */;
1753 val* var_anchor /* var anchor: nullable MClassType */;
1754 val* var_mmodule /* var mmodule: MModule */;
1755 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
1756 val* var1 /* : MType */;
1757 val* var3 /* : MType */;
1758 short int var4 /* : Bool */;
1759 short int var5 /* : Bool */;
1760 val* var6 /* : MType */;
1761 val* var8 /* : MType */;
1762 val* var9 /* : MType */;
1763 val* var_newtype /* var newtype: MType */;
1764 val* var10 /* : MParameter */;
1765 val* var11 /* : String */;
1766 val* var13 /* : String */;
1767 short int var14 /* : Bool */;
1768 short int var16 /* : Bool */;
1769 val* var_res /* var res: MParameter */;
1770 var_mtype = p0;
1771 var_anchor = p1;
1772 var_mmodule = p2;
1773 var_cleanup_virtual = p3;
1774 {
1775 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
1776 var3 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
1777 if (unlikely(var3 == NULL)) {
1778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1779 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1780 show_backtrace(1);
1781 }
1782 var1 = var3;
1783 RET_LABEL2:(void)0;
1784 }
1785 }
1786 {
1787 var4 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
1788 }
1789 var5 = !var4;
1790 if (var5){
1791 var = self;
1792 goto RET_LABEL;
1793 } else {
1794 }
1795 {
1796 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
1797 var8 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
1798 if (unlikely(var8 == NULL)) {
1799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1800 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1801 show_backtrace(1);
1802 }
1803 var6 = var8;
1804 RET_LABEL7:(void)0;
1805 }
1806 }
1807 {
1808 var9 = ((val* (*)(val*, val*, val*, val*, short int))(var6->class->vft[COLOR_model__MType__resolve_for]))(var6, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var6:MType>*/;
1809 }
1810 var_newtype = var9;
1811 var10 = NEW_model__MParameter(&type_model__MParameter);
1812 {
1813 { /* Inline model#MParameter#name (self) on <self:MParameter> */
1814 var13 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
1815 if (unlikely(var13 == NULL)) {
1816 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1817 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1549);
1818 show_backtrace(1);
1819 }
1820 var11 = var13;
1821 RET_LABEL12:(void)0;
1822 }
1823 }
1824 {
1825 { /* Inline model#MParameter#is_vararg (self) on <self:MParameter> */
1826 var16 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
1827 var14 = var16;
1828 RET_LABEL15:(void)0;
1829 }
1830 }
1831 {
1832 model__MParameter__init(var10, var11, var_newtype, var14); /* Direct call model#MParameter#init on <var10:MParameter>*/
1833 }
1834 var_res = var10;
1835 var = var_res;
1836 goto RET_LABEL;
1837 RET_LABEL:;
1838 return var;
1839 }
1840 /* method model#MParameter#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MParameter */
1841 val* VIRTUAL_model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1842 val* var /* : MParameter */;
1843 val* var1 /* : MParameter */;
1844 var1 = model__MParameter__resolve_for(self, p0, p1, p2, p3);
1845 var = var1;
1846 RET_LABEL:;
1847 return var;
1848 }
1849 /* method model#MParameter#model for (self: MParameter): Model */
1850 val* model__MParameter__model(val* self) {
1851 val* var /* : Model */;
1852 val* var1 /* : MType */;
1853 val* var3 /* : MType */;
1854 val* var4 /* : Model */;
1855 {
1856 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
1857 var3 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
1858 if (unlikely(var3 == NULL)) {
1859 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1860 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1552);
1861 show_backtrace(1);
1862 }
1863 var1 = var3;
1864 RET_LABEL2:(void)0;
1865 }
1866 }
1867 {
1868 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MEntity__model]))(var1) /* model on <var1:MType>*/;
1869 }
1870 var = var4;
1871 goto RET_LABEL;
1872 RET_LABEL:;
1873 return var;
1874 }
1875 /* method model#MParameter#model for (self: Object): Model */
1876 val* VIRTUAL_model__MParameter__model(val* self) {
1877 val* var /* : Model */;
1878 val* var1 /* : Model */;
1879 var1 = model__MParameter__model(self);
1880 var = var1;
1881 RET_LABEL:;
1882 return var;
1883 }
1884 /* method model#MProperty#intro_mclassdef for (self: MProperty): MClassDef */
1885 val* model__MProperty__intro_mclassdef(val* self) {
1886 val* var /* : MClassDef */;
1887 val* var1 /* : MClassDef */;
1888 var1 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
1889 if (unlikely(var1 == NULL)) {
1890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
1891 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1602);
1892 show_backtrace(1);
1893 }
1894 var = var1;
1895 RET_LABEL:;
1896 return var;
1897 }
1898 /* method model#MProperty#intro_mclassdef for (self: Object): MClassDef */
1899 val* VIRTUAL_model__MProperty__intro_mclassdef(val* self) {
1900 val* var /* : MClassDef */;
1901 val* var1 /* : MClassDef */;
1902 val* var3 /* : MClassDef */;
1903 { /* Inline model#MProperty#intro_mclassdef (self) on <self:Object(MProperty)> */
1904 var3 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:Object(MProperty)> */
1905 if (unlikely(var3 == NULL)) {
1906 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
1907 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1602);
1908 show_backtrace(1);
1909 }
1910 var1 = var3;
1911 RET_LABEL2:(void)0;
1912 }
1913 var = var1;
1914 RET_LABEL:;
1915 return var;
1916 }
1917 /* method model#MProperty#intro_mclassdef= for (self: MProperty, MClassDef) */
1918 void model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
1919 self->attrs[COLOR_model__MProperty___intro_mclassdef].val = p0; /* _intro_mclassdef on <self:MProperty> */
1920 RET_LABEL:;
1921 }
1922 /* method model#MProperty#intro_mclassdef= for (self: Object, MClassDef) */
1923 void VIRTUAL_model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
1924 { /* Inline model#MProperty#intro_mclassdef= (self,p0) on <self:Object(MProperty)> */
1925 self->attrs[COLOR_model__MProperty___intro_mclassdef].val = p0; /* _intro_mclassdef on <self:Object(MProperty)> */
1926 RET_LABEL1:(void)0;
1927 }
1928 RET_LABEL:;
1929 }
1930 /* method model#MProperty#name for (self: MProperty): String */
1931 val* model__MProperty__name(val* self) {
1932 val* var /* : String */;
1933 val* var1 /* : String */;
1934 var1 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:MProperty> */
1935 if (unlikely(var1 == NULL)) {
1936 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1937 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
1938 show_backtrace(1);
1939 }
1940 var = var1;
1941 RET_LABEL:;
1942 return var;
1943 }
1944 /* method model#MProperty#name for (self: Object): String */
1945 val* VIRTUAL_model__MProperty__name(val* self) {
1946 val* var /* : String */;
1947 val* var1 /* : String */;
1948 val* var3 /* : String */;
1949 { /* Inline model#MProperty#name (self) on <self:Object(MProperty)> */
1950 var3 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:Object(MProperty)> */
1951 if (unlikely(var3 == NULL)) {
1952 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1953 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
1954 show_backtrace(1);
1955 }
1956 var1 = var3;
1957 RET_LABEL2:(void)0;
1958 }
1959 var = var1;
1960 RET_LABEL:;
1961 return var;
1962 }
1963 /* method model#MProperty#name= for (self: MProperty, String) */
1964 void model__MProperty__name_61d(val* self, val* p0) {
1965 self->attrs[COLOR_model__MProperty___name].val = p0; /* _name on <self:MProperty> */
1966 RET_LABEL:;
1967 }
1968 /* method model#MProperty#name= for (self: Object, String) */
1969 void VIRTUAL_model__MProperty__name_61d(val* self, val* p0) {
1970 { /* Inline model#MProperty#name= (self,p0) on <self:Object(MProperty)> */
1971 self->attrs[COLOR_model__MProperty___name].val = p0; /* _name on <self:Object(MProperty)> */
1972 RET_LABEL1:(void)0;
1973 }
1974 RET_LABEL:;
1975 }
1976 /* method model#MProperty#full_name for (self: MProperty): String */
1977 val* model__MProperty__full_name(val* self) {
1978 val* var /* : String */;
1979 val* var1 /* : MClassDef */;
1980 val* var3 /* : MClassDef */;
1981 val* var4 /* : MModule */;
1982 val* var6 /* : MModule */;
1983 val* var7 /* : String */;
1984 static val* varonce;
1985 val* var8 /* : String */;
1986 char* var9 /* : NativeString */;
1987 long var10 /* : Int */;
1988 val* var11 /* : FlatString */;
1989 val* var12 /* : MClassDef */;
1990 val* var14 /* : MClassDef */;
1991 val* var15 /* : MClass */;
1992 val* var17 /* : MClass */;
1993 val* var18 /* : String */;
1994 val* var20 /* : String */;
1995 static val* varonce21;
1996 val* var22 /* : String */;
1997 char* var23 /* : NativeString */;
1998 long var24 /* : Int */;
1999 val* var25 /* : FlatString */;
2000 val* var26 /* : String */;
2001 val* var28 /* : String */;
2002 val* var29 /* : Array[Object] */;
2003 long var30 /* : Int */;
2004 val* var31 /* : NativeArray[Object] */;
2005 val* var32 /* : String */;
2006 {
2007 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
2008 var3 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
2009 if (unlikely(var3 == NULL)) {
2010 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
2011 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1602);
2012 show_backtrace(1);
2013 }
2014 var1 = var3;
2015 RET_LABEL2:(void)0;
2016 }
2017 }
2018 {
2019 { /* Inline model#MClassDef#mmodule (var1) on <var1:MClassDef> */
2020 var6 = var1->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var1:MClassDef> */
2021 if (unlikely(var6 == NULL)) {
2022 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2023 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
2024 show_backtrace(1);
2025 }
2026 var4 = var6;
2027 RET_LABEL5:(void)0;
2028 }
2029 }
2030 {
2031 var7 = mmodule__MModule__full_name(var4);
2032 }
2033 if (varonce) {
2034 var8 = varonce;
2035 } else {
2036 var9 = "::";
2037 var10 = 2;
2038 var11 = string__NativeString__to_s_with_length(var9, var10);
2039 var8 = var11;
2040 varonce = var8;
2041 }
2042 {
2043 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
2044 var14 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
2045 if (unlikely(var14 == NULL)) {
2046 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
2047 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1602);
2048 show_backtrace(1);
2049 }
2050 var12 = var14;
2051 RET_LABEL13:(void)0;
2052 }
2053 }
2054 {
2055 { /* Inline model#MClassDef#mclass (var12) on <var12:MClassDef> */
2056 var17 = var12->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var12:MClassDef> */
2057 if (unlikely(var17 == NULL)) {
2058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2059 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
2060 show_backtrace(1);
2061 }
2062 var15 = var17;
2063 RET_LABEL16:(void)0;
2064 }
2065 }
2066 {
2067 { /* Inline model#MClass#name (var15) on <var15:MClass> */
2068 var20 = var15->attrs[COLOR_model__MClass___name].val; /* _name on <var15:MClass> */
2069 if (unlikely(var20 == NULL)) {
2070 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2071 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
2072 show_backtrace(1);
2073 }
2074 var18 = var20;
2075 RET_LABEL19:(void)0;
2076 }
2077 }
2078 if (varonce21) {
2079 var22 = varonce21;
2080 } else {
2081 var23 = "::";
2082 var24 = 2;
2083 var25 = string__NativeString__to_s_with_length(var23, var24);
2084 var22 = var25;
2085 varonce21 = var22;
2086 }
2087 {
2088 { /* Inline model#MProperty#name (self) on <self:MProperty> */
2089 var28 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:MProperty> */
2090 if (unlikely(var28 == NULL)) {
2091 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2092 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
2093 show_backtrace(1);
2094 }
2095 var26 = var28;
2096 RET_LABEL27:(void)0;
2097 }
2098 }
2099 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
2100 { /* var29 = array_instance Array[Object] */
2101 var30 = 5;
2102 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
2103 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var7;
2104 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var8;
2105 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var18;
2106 ((struct instance_array__NativeArray*)var31)->values[3] = (val*) var22;
2107 ((struct instance_array__NativeArray*)var31)->values[4] = (val*) var26;
2108 {
2109 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
2110 }
2111 }
2112 {
2113 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
2114 }
2115 var = var32;
2116 goto RET_LABEL;
2117 RET_LABEL:;
2118 return var;
2119 }
2120 /* method model#MProperty#full_name for (self: Object): String */
2121 val* VIRTUAL_model__MProperty__full_name(val* self) {
2122 val* var /* : String */;
2123 val* var1 /* : String */;
2124 var1 = model__MProperty__full_name(self);
2125 var = var1;
2126 RET_LABEL:;
2127 return var;
2128 }
2129 /* method model#MProperty#visibility for (self: MProperty): MVisibility */
2130 val* model__MProperty__visibility(val* self) {
2131 val* var /* : MVisibility */;
2132 val* var1 /* : MVisibility */;
2133 var1 = self->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <self:MProperty> */
2134 if (unlikely(var1 == NULL)) {
2135 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
2136 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1617);
2137 show_backtrace(1);
2138 }
2139 var = var1;
2140 RET_LABEL:;
2141 return var;
2142 }
2143 /* method model#MProperty#visibility for (self: Object): MVisibility */
2144 val* VIRTUAL_model__MProperty__visibility(val* self) {
2145 val* var /* : MVisibility */;
2146 val* var1 /* : MVisibility */;
2147 val* var3 /* : MVisibility */;
2148 { /* Inline model#MProperty#visibility (self) on <self:Object(MProperty)> */
2149 var3 = self->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <self:Object(MProperty)> */
2150 if (unlikely(var3 == NULL)) {
2151 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
2152 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1617);
2153 show_backtrace(1);
2154 }
2155 var1 = var3;
2156 RET_LABEL2:(void)0;
2157 }
2158 var = var1;
2159 RET_LABEL:;
2160 return var;
2161 }
2162 /* method model#MProperty#visibility= for (self: MProperty, MVisibility) */
2163 void model__MProperty__visibility_61d(val* self, val* p0) {
2164 self->attrs[COLOR_model__MProperty___visibility].val = p0; /* _visibility on <self:MProperty> */
2165 RET_LABEL:;
2166 }
2167 /* method model#MProperty#visibility= for (self: Object, MVisibility) */
2168 void VIRTUAL_model__MProperty__visibility_61d(val* self, val* p0) {
2169 { /* Inline model#MProperty#visibility= (self,p0) on <self:Object(MProperty)> */
2170 self->attrs[COLOR_model__MProperty___visibility].val = p0; /* _visibility on <self:Object(MProperty)> */
2171 RET_LABEL1:(void)0;
2172 }
2173 RET_LABEL:;
2174 }
2175 /* method model#MProperty#init for (self: MProperty, MClassDef, String, MVisibility) */
2176 void model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
2177 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
2178 val* var_name /* var name: String */;
2179 val* var_visibility /* var visibility: MVisibility */;
2180 val* var /* : Array[MProperty] */;
2181 val* var6 /* : Array[MProperty] */;
2182 val* var7 /* : MModule */;
2183 val* var9 /* : MModule */;
2184 val* var10 /* : Model */;
2185 val* var12 /* : Model */;
2186 val* var_model /* var model: Model */;
2187 val* var13 /* : MultiHashMap[String, MProperty] */;
2188 val* var15 /* : MultiHashMap[String, MProperty] */;
2189 val* var16 /* : Array[MProperty] */;
2190 val* var18 /* : Array[MProperty] */;
2191 {
2192 { /* Inline model_base#MEntity#init (self) on <self:MProperty> */
2193 RET_LABEL1:(void)0;
2194 }
2195 }
2196 var_intro_mclassdef = p0;
2197 var_name = p1;
2198 var_visibility = p2;
2199 {
2200 { /* Inline model#MProperty#intro_mclassdef= (self,var_intro_mclassdef) on <self:MProperty> */
2201 self->attrs[COLOR_model__MProperty___intro_mclassdef].val = var_intro_mclassdef; /* _intro_mclassdef on <self:MProperty> */
2202 RET_LABEL2:(void)0;
2203 }
2204 }
2205 {
2206 { /* Inline model#MProperty#name= (self,var_name) on <self:MProperty> */
2207 self->attrs[COLOR_model__MProperty___name].val = var_name; /* _name on <self:MProperty> */
2208 RET_LABEL3:(void)0;
2209 }
2210 }
2211 {
2212 { /* Inline model#MProperty#visibility= (self,var_visibility) on <self:MProperty> */
2213 self->attrs[COLOR_model__MProperty___visibility].val = var_visibility; /* _visibility on <self:MProperty> */
2214 RET_LABEL4:(void)0;
2215 }
2216 }
2217 {
2218 { /* Inline model#MClassDef#intro_mproperties (var_intro_mclassdef) on <var_intro_mclassdef:MClassDef> */
2219 var6 = var_intro_mclassdef->attrs[COLOR_model__MClassDef___intro_mproperties].val; /* _intro_mproperties on <var_intro_mclassdef:MClassDef> */
2220 if (unlikely(var6 == NULL)) {
2221 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mproperties");
2222 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 571);
2223 show_backtrace(1);
2224 }
2225 var = var6;
2226 RET_LABEL5:(void)0;
2227 }
2228 }
2229 {
2230 array__Array__add(var, self); /* Direct call array#Array#add on <var:Array[MProperty]>*/
2231 }
2232 {
2233 { /* Inline model#MClassDef#mmodule (var_intro_mclassdef) on <var_intro_mclassdef:MClassDef> */
2234 var9 = var_intro_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_intro_mclassdef:MClassDef> */
2235 if (unlikely(var9 == NULL)) {
2236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2237 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
2238 show_backtrace(1);
2239 }
2240 var7 = var9;
2241 RET_LABEL8:(void)0;
2242 }
2243 }
2244 {
2245 { /* Inline mmodule#MModule#model (var7) on <var7:MModule> */
2246 var12 = var7->attrs[COLOR_mmodule__MModule___model].val; /* _model on <var7:MModule> */
2247 if (unlikely(var12 == NULL)) {
2248 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
2249 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 74);
2250 show_backtrace(1);
2251 }
2252 var10 = var12;
2253 RET_LABEL11:(void)0;
2254 }
2255 }
2256 var_model = var10;
2257 {
2258 { /* Inline model#Model#mproperties_by_name (var_model) on <var_model:Model> */
2259 var15 = var_model->attrs[COLOR_model__Model___mproperties_by_name].val; /* _mproperties_by_name on <var_model:Model> */
2260 if (unlikely(var15 == NULL)) {
2261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperties_by_name");
2262 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 86);
2263 show_backtrace(1);
2264 }
2265 var13 = var15;
2266 RET_LABEL14:(void)0;
2267 }
2268 }
2269 {
2270 more_collections__MultiHashMap__add_one(var13, var_name, self); /* Direct call more_collections#MultiHashMap#add_one on <var13:MultiHashMap[String, MProperty]>*/
2271 }
2272 {
2273 { /* Inline model#Model#mproperties (var_model) on <var_model:Model> */
2274 var18 = var_model->attrs[COLOR_model__Model___mproperties].val; /* _mproperties on <var_model:Model> */
2275 if (unlikely(var18 == NULL)) {
2276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperties");
2277 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 39);
2278 show_backtrace(1);
2279 }
2280 var16 = var18;
2281 RET_LABEL17:(void)0;
2282 }
2283 }
2284 {
2285 array__Array__add(var16, self); /* Direct call array#Array#add on <var16:Array[MProperty]>*/
2286 }
2287 RET_LABEL:;
2288 }
2289 /* method model#MProperty#init for (self: Object, MClassDef, String, MVisibility) */
2290 void VIRTUAL_model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
2291 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:Object(MProperty)>*/
2292 RET_LABEL:;
2293 }
2294 /* method model#MProperty#mpropdefs for (self: MProperty): Array[MPropDef] */
2295 val* model__MProperty__mpropdefs(val* self) {
2296 val* var /* : Array[MPropDef] */;
2297 val* var1 /* : Array[MPropDef] */;
2298 var1 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
2299 if (unlikely(var1 == NULL)) {
2300 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
2301 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
2302 show_backtrace(1);
2303 }
2304 var = var1;
2305 RET_LABEL:;
2306 return var;
2307 }
2308 /* method model#MProperty#mpropdefs for (self: Object): Array[MPropDef] */
2309 val* VIRTUAL_model__MProperty__mpropdefs(val* self) {
2310 val* var /* : Array[MPropDef] */;
2311 val* var1 /* : Array[MPropDef] */;
2312 val* var3 /* : Array[MPropDef] */;
2313 { /* Inline model#MProperty#mpropdefs (self) on <self:Object(MProperty)> */
2314 var3 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:Object(MProperty)> */
2315 if (unlikely(var3 == NULL)) {
2316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
2317 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
2318 show_backtrace(1);
2319 }
2320 var1 = var3;
2321 RET_LABEL2:(void)0;
2322 }
2323 var = var1;
2324 RET_LABEL:;
2325 return var;
2326 }
2327 /* method model#MProperty#intro for (self: MProperty): MPropDef */
2328 val* model__MProperty__intro(val* self) {
2329 val* var /* : MPropDef */;
2330 val* var1 /* : Array[MPropDef] */;
2331 val* var3 /* : Array[MPropDef] */;
2332 val* var4 /* : nullable Object */;
2333 {
2334 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
2335 var3 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
2336 if (unlikely(var3 == NULL)) {
2337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
2338 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
2339 show_backtrace(1);
2340 }
2341 var1 = var3;
2342 RET_LABEL2:(void)0;
2343 }
2344 }
2345 {
2346 var4 = abstract_collection__SequenceRead__first(var1);
2347 }
2348 var = var4;
2349 goto RET_LABEL;
2350 RET_LABEL:;
2351 return var;
2352 }
2353 /* method model#MProperty#intro for (self: Object): MPropDef */
2354 val* VIRTUAL_model__MProperty__intro(val* self) {
2355 val* var /* : MPropDef */;
2356 val* var1 /* : MPropDef */;
2357 var1 = model__MProperty__intro(self);
2358 var = var1;
2359 RET_LABEL:;
2360 return var;
2361 }
2362 /* method model#MProperty#model for (self: MProperty): Model */
2363 val* model__MProperty__model(val* self) {
2364 val* var /* : Model */;
2365 val* var1 /* : MPropDef */;
2366 val* var2 /* : Model */;
2367 {
2368 var1 = model__MProperty__intro(self);
2369 }
2370 {
2371 var2 = model__MPropDef__model(var1);
2372 }
2373 var = var2;
2374 goto RET_LABEL;
2375 RET_LABEL:;
2376 return var;
2377 }
2378 /* method model#MProperty#model for (self: Object): Model */
2379 val* VIRTUAL_model__MProperty__model(val* self) {
2380 val* var /* : Model */;
2381 val* var1 /* : Model */;
2382 var1 = model__MProperty__model(self);
2383 var = var1;
2384 RET_LABEL:;
2385 return var;
2386 }
2387 /* method model#MProperty#to_s for (self: MProperty): String */
2388 val* model__MProperty__to_s(val* self) {
2389 val* var /* : String */;
2390 val* var1 /* : String */;
2391 val* var3 /* : String */;
2392 {
2393 { /* Inline model#MProperty#name (self) on <self:MProperty> */
2394 var3 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:MProperty> */
2395 if (unlikely(var3 == NULL)) {
2396 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2397 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
2398 show_backtrace(1);
2399 }
2400 var1 = var3;
2401 RET_LABEL2:(void)0;
2402 }
2403 }
2404 var = var1;
2405 goto RET_LABEL;
2406 RET_LABEL:;
2407 return var;
2408 }
2409 /* method model#MProperty#to_s for (self: Object): String */
2410 val* VIRTUAL_model__MProperty__to_s(val* self) {
2411 val* var /* : String */;
2412 val* var1 /* : String */;
2413 var1 = model__MProperty__to_s(self);
2414 var = var1;
2415 RET_LABEL:;
2416 return var;
2417 }
2418 /* method model#MProperty#lookup_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
2419 val* model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
2420 val* var /* : Array[MPropDef] */;
2421 val* var_mmodule /* var mmodule: MModule */;
2422 val* var_mtype /* var mtype: MType */;
2423 short int var1 /* : Bool */;
2424 short int var2 /* : Bool */;
2425 val* var3 /* : MType */;
2426 val* var4 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2427 val* var6 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2428 val* var7 /* : nullable Object */;
2429 val* var_cache /* var cache: nullable Array[MPropDef] */;
2430 val* var8 /* : null */;
2431 short int var9 /* : Bool */;
2432 short int var10 /* : Bool */;
2433 val* var_other /* var other: nullable Object */;
2434 short int var12 /* : Bool */;
2435 short int var13 /* : Bool */;
2436 short int var14 /* : Bool */;
2437 val* var15 /* : Array[MPropDef] */;
2438 val* var_candidates /* var candidates: Array[MPropDef] */;
2439 val* var16 /* : Array[MPropDef] */;
2440 val* var18 /* : Array[MPropDef] */;
2441 val* var19 /* : ArrayIterator[nullable Object] */;
2442 short int var20 /* : Bool */;
2443 val* var21 /* : nullable Object */;
2444 val* var_mpropdef /* var mpropdef: MPropDef */;
2445 val* var22 /* : POSetElement[MModule] */;
2446 val* var24 /* : POSetElement[MModule] */;
2447 val* var25 /* : MClassDef */;
2448 val* var27 /* : MClassDef */;
2449 val* var28 /* : MModule */;
2450 val* var30 /* : MModule */;
2451 short int var31 /* : Bool */;
2452 short int var32 /* : Bool */;
2453 val* var33 /* : null */;
2454 val* var34 /* : MClassDef */;
2455 val* var36 /* : MClassDef */;
2456 val* var37 /* : MClassType */;
2457 val* var39 /* : MClassType */;
2458 short int var40 /* : Bool */;
2459 short int var41 /* : Bool */;
2460 long var42 /* : Int */;
2461 long var43 /* : Int */;
2462 short int var44 /* : Bool */;
2463 short int var46 /* : Bool */;
2464 int cltype;
2465 int idtype;
2466 const char* var_class_name;
2467 short int var47 /* : Bool */;
2468 val* var48 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2469 val* var50 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2470 val* var51 /* : Array[MPropDef] */;
2471 var_mmodule = p0;
2472 var_mtype = p1;
2473 {
2474 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
2475 }
2476 var2 = !var1;
2477 if (unlikely(!var2)) {
2478 PRINT_ERROR("Runtime error: %s", "Assert failed");
2479 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1655);
2480 show_backtrace(1);
2481 }
2482 {
2483 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
2484 }
2485 var_mtype = var3;
2486 {
2487 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:MProperty> */
2488 var6 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
2489 if (unlikely(var6 == NULL)) {
2490 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
2491 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1682);
2492 show_backtrace(1);
2493 }
2494 var4 = var6;
2495 RET_LABEL5:(void)0;
2496 }
2497 }
2498 {
2499 var7 = more_collections__HashMap2___91d_93d(var4, var_mmodule, var_mtype);
2500 }
2501 var_cache = var7;
2502 var8 = NULL;
2503 if (var_cache == NULL) {
2504 var9 = 0; /* is null */
2505 } else {
2506 var9 = 1; /* arg is null and recv is not */
2507 }
2508 if (0) {
2509 { /* Inline kernel#Object#!= (var_cache,var8) on <var_cache:nullable Array[MPropDef]> */
2510 var_other = var8;
2511 {
2512 var13 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_kernel__Object___61d_61d]))(var_cache, var_other) /* == on <var_cache:nullable Array[MPropDef](Array[MPropDef])>*/;
2513 var12 = var13;
2514 }
2515 var14 = !var12;
2516 var10 = var14;
2517 goto RET_LABEL11;
2518 RET_LABEL11:(void)0;
2519 }
2520 var9 = var10;
2521 }
2522 if (var9){
2523 var = var_cache;
2524 goto RET_LABEL;
2525 } else {
2526 }
2527 var15 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
2528 {
2529 array__Array__init(var15); /* Direct call array#Array#init on <var15:Array[MPropDef]>*/
2530 }
2531 var_candidates = var15;
2532 {
2533 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
2534 var18 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
2535 if (unlikely(var18 == NULL)) {
2536 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
2537 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
2538 show_backtrace(1);
2539 }
2540 var16 = var18;
2541 RET_LABEL17:(void)0;
2542 }
2543 }
2544 {
2545 var19 = array__AbstractArrayRead__iterator(var16);
2546 }
2547 for(;;) {
2548 {
2549 var20 = array__ArrayIterator__is_ok(var19);
2550 }
2551 if(!var20) break;
2552 {
2553 var21 = array__ArrayIterator__item(var19);
2554 }
2555 var_mpropdef = var21;
2556 {
2557 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
2558 var24 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
2559 if (unlikely(var24 == NULL)) {
2560 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
2561 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
2562 show_backtrace(1);
2563 }
2564 var22 = var24;
2565 RET_LABEL23:(void)0;
2566 }
2567 }
2568 {
2569 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
2570 var27 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
2571 if (unlikely(var27 == NULL)) {
2572 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2573 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
2574 show_backtrace(1);
2575 }
2576 var25 = var27;
2577 RET_LABEL26:(void)0;
2578 }
2579 }
2580 {
2581 { /* Inline model#MClassDef#mmodule (var25) on <var25:MClassDef> */
2582 var30 = var25->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var25:MClassDef> */
2583 if (unlikely(var30 == NULL)) {
2584 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2585 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
2586 show_backtrace(1);
2587 }
2588 var28 = var30;
2589 RET_LABEL29:(void)0;
2590 }
2591 }
2592 {
2593 var31 = poset__POSetElement___60d_61d(var22, var28);
2594 }
2595 var32 = !var31;
2596 if (var32){
2597 goto CONTINUE_label;
2598 } else {
2599 }
2600 var33 = NULL;
2601 {
2602 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
2603 var36 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
2604 if (unlikely(var36 == NULL)) {
2605 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2606 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
2607 show_backtrace(1);
2608 }
2609 var34 = var36;
2610 RET_LABEL35:(void)0;
2611 }
2612 }
2613 {
2614 { /* Inline model#MClassDef#bound_mtype (var34) on <var34:MClassDef> */
2615 var39 = var34->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var34:MClassDef> */
2616 if (unlikely(var39 == NULL)) {
2617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2618 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
2619 show_backtrace(1);
2620 }
2621 var37 = var39;
2622 RET_LABEL38:(void)0;
2623 }
2624 }
2625 {
2626 var40 = model__MType__is_subtype(var_mtype, var_mmodule, var33, var37);
2627 }
2628 var41 = !var40;
2629 if (var41){
2630 goto CONTINUE_label;
2631 } else {
2632 }
2633 {
2634 array__Array__add(var_candidates, var_mpropdef); /* Direct call array#Array#add on <var_candidates:Array[MPropDef]>*/
2635 }
2636 CONTINUE_label: (void)0;
2637 {
2638 array__ArrayIterator__next(var19); /* Direct call array#ArrayIterator#next on <var19:ArrayIterator[nullable Object]>*/
2639 }
2640 }
2641 BREAK_label: (void)0;
2642 {
2643 var42 = array__AbstractArrayRead__length(var_candidates);
2644 }
2645 var43 = 1;
2646 {
2647 { /* Inline kernel#Int#<= (var42,var43) on <var42:Int> */
2648 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
2649 /* <var43:Int> isa OTHER */
2650 var46 = 1; /* easy <var43:Int> isa OTHER*/
2651 if (unlikely(!var46)) {
2652 var_class_name = type_kernel__Int.name;
2653 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2654 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
2655 show_backtrace(1);
2656 }
2657 var47 = var42 <= var43;
2658 var44 = var47;
2659 goto RET_LABEL45;
2660 RET_LABEL45:(void)0;
2661 }
2662 }
2663 if (var44){
2664 {
2665 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:MProperty> */
2666 var50 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
2667 if (unlikely(var50 == NULL)) {
2668 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
2669 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1682);
2670 show_backtrace(1);
2671 }
2672 var48 = var50;
2673 RET_LABEL49:(void)0;
2674 }
2675 }
2676 {
2677 more_collections__HashMap2___91d_93d_61d(var48, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var48:HashMap2[MModule, MType, Array[MPropDef]]>*/
2678 }
2679 var = var_candidates;
2680 goto RET_LABEL;
2681 } else {
2682 }
2683 {
2684 var51 = model__MProperty__select_most_specific(self, var_mmodule, var_candidates);
2685 }
2686 var = var51;
2687 goto RET_LABEL;
2688 RET_LABEL:;
2689 return var;
2690 }
2691 /* method model#MProperty#lookup_definitions for (self: Object, MModule, MType): Array[MPropDef] */
2692 val* VIRTUAL_model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
2693 val* var /* : Array[MPropDef] */;
2694 val* var1 /* : Array[MPropDef] */;
2695 var1 = model__MProperty__lookup_definitions(self, p0, p1);
2696 var = var1;
2697 RET_LABEL:;
2698 return var;
2699 }
2700 /* method model#MProperty#lookup_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
2701 val* model__MProperty__lookup_definitions_cache(val* self) {
2702 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2703 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2704 var1 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
2705 if (unlikely(var1 == NULL)) {
2706 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
2707 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1682);
2708 show_backtrace(1);
2709 }
2710 var = var1;
2711 RET_LABEL:;
2712 return var;
2713 }
2714 /* method model#MProperty#lookup_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
2715 val* VIRTUAL_model__MProperty__lookup_definitions_cache(val* self) {
2716 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2717 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2718 val* var3 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
2719 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:Object(MProperty)> */
2720 var3 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:Object(MProperty)> */
2721 if (unlikely(var3 == NULL)) {
2722 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
2723 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1682);
2724 show_backtrace(1);
2725 }
2726 var1 = var3;
2727 RET_LABEL2:(void)0;
2728 }
2729 var = var1;
2730 RET_LABEL:;
2731 return var;
2732 }
2733 /* method model#MProperty#lookup_super_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
2734 val* model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
2735 val* var /* : Array[MPropDef] */;
2736 val* var_mmodule /* var mmodule: MModule */;
2737 val* var_mtype /* var mtype: MType */;
2738 short int var1 /* : Bool */;
2739 short int var2 /* : Bool */;
2740 val* var3 /* : MType */;
2741 val* var4 /* : Array[MPropDef] */;
2742 val* var_candidates /* var candidates: Array[MPropDef] */;
2743 val* var5 /* : Array[MPropDef] */;
2744 val* var7 /* : Array[MPropDef] */;
2745 val* var8 /* : ArrayIterator[nullable Object] */;
2746 short int var9 /* : Bool */;
2747 val* var10 /* : nullable Object */;
2748 val* var_mpropdef /* var mpropdef: MPropDef */;
2749 val* var11 /* : POSetElement[MModule] */;
2750 val* var13 /* : POSetElement[MModule] */;
2751 val* var14 /* : MClassDef */;
2752 val* var16 /* : MClassDef */;
2753 val* var17 /* : MModule */;
2754 val* var19 /* : MModule */;
2755 short int var20 /* : Bool */;
2756 short int var21 /* : Bool */;
2757 val* var22 /* : null */;
2758 val* var23 /* : MClassDef */;
2759 val* var25 /* : MClassDef */;
2760 val* var26 /* : MClassType */;
2761 val* var28 /* : MClassType */;
2762 short int var29 /* : Bool */;
2763 short int var30 /* : Bool */;
2764 short int var31 /* : Bool */;
2765 val* var32 /* : MClassDef */;
2766 val* var34 /* : MClassDef */;
2767 val* var35 /* : MClassType */;
2768 val* var37 /* : MClassType */;
2769 short int var38 /* : Bool */;
2770 short int var39 /* : Bool */;
2771 val* var_other /* var other: nullable Object */;
2772 short int var41 /* : Bool */;
2773 short int var43 /* : Bool */;
2774 short int var_ /* var : Bool */;
2775 val* var44 /* : MClassDef */;
2776 val* var46 /* : MClassDef */;
2777 val* var47 /* : MModule */;
2778 val* var49 /* : MModule */;
2779 short int var50 /* : Bool */;
2780 short int var51 /* : Bool */;
2781 short int var53 /* : Bool */;
2782 short int var55 /* : Bool */;
2783 long var56 /* : Int */;
2784 long var57 /* : Int */;
2785 short int var58 /* : Bool */;
2786 short int var60 /* : Bool */;
2787 int cltype;
2788 int idtype;
2789 const char* var_class_name;
2790 short int var61 /* : Bool */;
2791 val* var62 /* : Array[MPropDef] */;
2792 var_mmodule = p0;
2793 var_mtype = p1;
2794 {
2795 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
2796 }
2797 var2 = !var1;
2798 if (unlikely(!var2)) {
2799 PRINT_ERROR("Runtime error: %s", "Assert failed");
2800 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1694);
2801 show_backtrace(1);
2802 }
2803 {
2804 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
2805 }
2806 var_mtype = var3;
2807 var4 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
2808 {
2809 array__Array__init(var4); /* Direct call array#Array#init on <var4:Array[MPropDef]>*/
2810 }
2811 var_candidates = var4;
2812 {
2813 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
2814 var7 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
2815 if (unlikely(var7 == NULL)) {
2816 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
2817 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
2818 show_backtrace(1);
2819 }
2820 var5 = var7;
2821 RET_LABEL6:(void)0;
2822 }
2823 }
2824 {
2825 var8 = array__AbstractArrayRead__iterator(var5);
2826 }
2827 for(;;) {
2828 {
2829 var9 = array__ArrayIterator__is_ok(var8);
2830 }
2831 if(!var9) break;
2832 {
2833 var10 = array__ArrayIterator__item(var8);
2834 }
2835 var_mpropdef = var10;
2836 {
2837 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
2838 var13 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
2839 if (unlikely(var13 == NULL)) {
2840 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
2841 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
2842 show_backtrace(1);
2843 }
2844 var11 = var13;
2845 RET_LABEL12:(void)0;
2846 }
2847 }
2848 {
2849 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
2850 var16 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
2851 if (unlikely(var16 == NULL)) {
2852 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2853 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
2854 show_backtrace(1);
2855 }
2856 var14 = var16;
2857 RET_LABEL15:(void)0;
2858 }
2859 }
2860 {
2861 { /* Inline model#MClassDef#mmodule (var14) on <var14:MClassDef> */
2862 var19 = var14->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var14:MClassDef> */
2863 if (unlikely(var19 == NULL)) {
2864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2865 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
2866 show_backtrace(1);
2867 }
2868 var17 = var19;
2869 RET_LABEL18:(void)0;
2870 }
2871 }
2872 {
2873 var20 = poset__POSetElement___60d_61d(var11, var17);
2874 }
2875 var21 = !var20;
2876 if (var21){
2877 goto CONTINUE_label;
2878 } else {
2879 }
2880 var22 = NULL;
2881 {
2882 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
2883 var25 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
2884 if (unlikely(var25 == NULL)) {
2885 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2886 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
2887 show_backtrace(1);
2888 }
2889 var23 = var25;
2890 RET_LABEL24:(void)0;
2891 }
2892 }
2893 {
2894 { /* Inline model#MClassDef#bound_mtype (var23) on <var23:MClassDef> */
2895 var28 = var23->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var23:MClassDef> */
2896 if (unlikely(var28 == NULL)) {
2897 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2898 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
2899 show_backtrace(1);
2900 }
2901 var26 = var28;
2902 RET_LABEL27:(void)0;
2903 }
2904 }
2905 {
2906 var29 = model__MType__is_subtype(var_mtype, var_mmodule, var22, var26);
2907 }
2908 var30 = !var29;
2909 if (var30){
2910 goto CONTINUE_label;
2911 } else {
2912 }
2913 {
2914 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
2915 var34 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
2916 if (unlikely(var34 == NULL)) {
2917 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2918 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
2919 show_backtrace(1);
2920 }
2921 var32 = var34;
2922 RET_LABEL33:(void)0;
2923 }
2924 }
2925 {
2926 { /* Inline model#MClassDef#bound_mtype (var32) on <var32:MClassDef> */
2927 var37 = var32->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var32:MClassDef> */
2928 if (unlikely(var37 == NULL)) {
2929 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2930 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
2931 show_backtrace(1);
2932 }
2933 var35 = var37;
2934 RET_LABEL36:(void)0;
2935 }
2936 }
2937 {
2938 { /* Inline kernel#Object#== (var_mtype,var35) on <var_mtype:MType> */
2939 var_other = var35;
2940 {
2941 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:MType> */
2942 var43 = var_mtype == var_other;
2943 var41 = var43;
2944 goto RET_LABEL42;
2945 RET_LABEL42:(void)0;
2946 }
2947 }
2948 var39 = var41;
2949 goto RET_LABEL40;
2950 RET_LABEL40:(void)0;
2951 }
2952 var38 = var39;
2953 }
2954 var_ = var38;
2955 if (var38){
2956 {
2957 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
2958 var46 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
2959 if (unlikely(var46 == NULL)) {
2960 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2961 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
2962 show_backtrace(1);
2963 }
2964 var44 = var46;
2965 RET_LABEL45:(void)0;
2966 }
2967 }
2968 {
2969 { /* Inline model#MClassDef#mmodule (var44) on <var44:MClassDef> */
2970 var49 = var44->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var44:MClassDef> */
2971 if (unlikely(var49 == NULL)) {
2972 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2973 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
2974 show_backtrace(1);
2975 }
2976 var47 = var49;
2977 RET_LABEL48:(void)0;
2978 }
2979 }
2980 {
2981 { /* Inline kernel#Object#== (var_mmodule,var47) on <var_mmodule:MModule> */
2982 var_other = var47;
2983 {
2984 { /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on <var_mmodule:MModule> */
2985 var55 = var_mmodule == var_other;
2986 var53 = var55;
2987 goto RET_LABEL54;
2988 RET_LABEL54:(void)0;
2989 }
2990 }
2991 var51 = var53;
2992 goto RET_LABEL52;
2993 RET_LABEL52:(void)0;
2994 }
2995 var50 = var51;
2996 }
2997 var31 = var50;
2998 } else {
2999 var31 = var_;
3000 }
3001 if (var31){
3002 goto CONTINUE_label;
3003 } else {
3004 }
3005 {
3006 array__Array__add(var_candidates, var_mpropdef); /* Direct call array#Array#add on <var_candidates:Array[MPropDef]>*/
3007 }
3008 CONTINUE_label: (void)0;
3009 {
3010 array__ArrayIterator__next(var8); /* Direct call array#ArrayIterator#next on <var8:ArrayIterator[nullable Object]>*/
3011 }
3012 }
3013 BREAK_label: (void)0;
3014 {
3015 var56 = array__AbstractArrayRead__length(var_candidates);
3016 }
3017 var57 = 1;
3018 {
3019 { /* Inline kernel#Int#<= (var56,var57) on <var56:Int> */
3020 /* Covariant cast for argument 0 (i) <var57:Int> isa OTHER */
3021 /* <var57:Int> isa OTHER */
3022 var60 = 1; /* easy <var57:Int> isa OTHER*/
3023 if (unlikely(!var60)) {
3024 var_class_name = type_kernel__Int.name;
3025 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3026 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
3027 show_backtrace(1);
3028 }
3029 var61 = var56 <= var57;
3030 var58 = var61;
3031 goto RET_LABEL59;
3032 RET_LABEL59:(void)0;
3033 }
3034 }
3035 if (var58){
3036 var = var_candidates;
3037 goto RET_LABEL;
3038 } else {
3039 }
3040 {
3041 var62 = model__MProperty__select_most_specific(self, var_mmodule, var_candidates);
3042 }
3043 var = var62;
3044 goto RET_LABEL;
3045 RET_LABEL:;
3046 return var;
3047 }
3048 /* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
3049 val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
3050 val* var /* : Array[MPropDef] */;
3051 val* var1 /* : Array[MPropDef] */;
3052 var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
3053 var = var1;
3054 RET_LABEL:;
3055 return var;
3056 }
3057 /* method model#MProperty#select_most_specific for (self: MProperty, MModule, Array[MPropDef]): Array[MPropDef] */
3058 val* model__MProperty__select_most_specific(val* self, val* p0, val* p1) {
3059 val* var /* : Array[MPropDef] */;
3060 short int var1 /* : Bool */;
3061 int cltype;
3062 int idtype;
3063 const struct type* type_struct;
3064 const char* var_class_name;
3065 val* var_mmodule /* var mmodule: MModule */;
3066 val* var_candidates /* var candidates: Array[MPropDef] */;
3067 val* var2 /* : Array[MPropDef] */;
3068 val* var_res /* var res: Array[MPropDef] */;
3069 val* var3 /* : ArrayIterator[nullable Object] */;
3070 short int var4 /* : Bool */;
3071 val* var5 /* : nullable Object */;
3072 val* var_pd1 /* var pd1: MPropDef */;
3073 val* var6 /* : MClassDef */;
3074 val* var8 /* : MClassDef */;
3075 val* var_cd1 /* var cd1: MClassDef */;
3076 val* var9 /* : MClass */;
3077 val* var11 /* : MClass */;
3078 val* var_c1 /* var c1: MClass */;
3079 short int var12 /* : Bool */;
3080 short int var_keep /* var keep: Bool */;
3081 val* var13 /* : ArrayIterator[nullable Object] */;
3082 short int var14 /* : Bool */;
3083 val* var15 /* : nullable Object */;
3084 val* var_pd2 /* var pd2: MPropDef */;
3085 short int var16 /* : Bool */;
3086 short int var17 /* : Bool */;
3087 val* var_other /* var other: nullable Object */;
3088 short int var19 /* : Bool */;
3089 short int var21 /* : Bool */;
3090 val* var22 /* : MClassDef */;
3091 val* var24 /* : MClassDef */;
3092 val* var_cd2 /* var cd2: MClassDef */;
3093 val* var25 /* : MClass */;
3094 val* var27 /* : MClass */;
3095 val* var_c2 /* var c2: MClass */;
3096 val* var28 /* : MClassType */;
3097 val* var30 /* : MClassType */;
3098 val* var31 /* : MClassType */;
3099 val* var33 /* : MClassType */;
3100 short int var34 /* : Bool */;
3101 short int var35 /* : Bool */;
3102 short int var37 /* : Bool */;
3103 short int var39 /* : Bool */;
3104 val* var40 /* : MModule */;
3105 val* var42 /* : MModule */;
3106 val* var43 /* : POSetElement[MModule] */;
3107 val* var45 /* : POSetElement[MModule] */;
3108 val* var46 /* : MModule */;
3109 val* var48 /* : MModule */;
3110 short int var49 /* : Bool */;
3111 short int var50 /* : Bool */;
3112 short int var51 /* : Bool */;
3113 val* var52 /* : MClassType */;
3114 val* var54 /* : MClassType */;
3115 val* var55 /* : null */;
3116 val* var56 /* : MClassType */;
3117 val* var58 /* : MClassType */;
3118 short int var59 /* : Bool */;
3119 short int var_ /* var : Bool */;
3120 val* var60 /* : MClassType */;
3121 val* var62 /* : MClassType */;
3122 val* var63 /* : MClassType */;
3123 val* var65 /* : MClassType */;
3124 short int var66 /* : Bool */;
3125 short int var67 /* : Bool */;
3126 val* var_other69 /* var other: nullable Object */;
3127 short int var70 /* : Bool */;
3128 short int var71 /* : Bool */;
3129 short int var72 /* : Bool */;
3130 short int var73 /* : Bool */;
3131 short int var75 /* : Bool */;
3132 static val* varonce;
3133 val* var76 /* : String */;
3134 char* var77 /* : NativeString */;
3135 long var78 /* : Int */;
3136 val* var79 /* : FlatString */;
3137 static val* varonce80;
3138 val* var81 /* : String */;
3139 char* var82 /* : NativeString */;
3140 long var83 /* : Int */;
3141 val* var84 /* : FlatString */;
3142 val* var85 /* : String */;
3143 val* var86 /* : Array[Object] */;
3144 long var87 /* : Int */;
3145 val* var88 /* : NativeArray[Object] */;
3146 val* var89 /* : String */;
3147 /* Covariant cast for argument 1 (candidates) <p1:Array[MPropDef]> isa Array[MPROPDEF] */
3148 /* <p1:Array[MPropDef]> isa Array[MPROPDEF] */
3149 type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
3150 cltype = type_struct->color;
3151 idtype = type_struct->id;
3152 if(cltype >= p1->type->table_size) {
3153 var1 = 0;
3154 } else {
3155 var1 = p1->type->type_table[cltype] == idtype;
3156 }
3157 if (unlikely(!var1)) {
3158 var_class_name = p1 == NULL ? "null" : p1->type->name;
3159 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
3160 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1716);
3161 show_backtrace(1);
3162 }
3163 var_mmodule = p0;
3164 var_candidates = p1;
3165 var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
3166 {
3167 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[MPropDef]>*/
3168 }
3169 var_res = var2;
3170 {
3171 var3 = array__AbstractArrayRead__iterator(var_candidates);
3172 }
3173 for(;;) {
3174 {
3175 var4 = array__ArrayIterator__is_ok(var3);
3176 }
3177 if(!var4) break;
3178 {
3179 var5 = array__ArrayIterator__item(var3);
3180 }
3181 var_pd1 = var5;
3182 {
3183 { /* Inline model#MPropDef#mclassdef (var_pd1) on <var_pd1:MPropDef> */
3184 var8 = var_pd1->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd1:MPropDef> */
3185 if (unlikely(var8 == NULL)) {
3186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3187 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
3188 show_backtrace(1);
3189 }
3190 var6 = var8;
3191 RET_LABEL7:(void)0;
3192 }
3193 }
3194 var_cd1 = var6;
3195 {
3196 { /* Inline model#MClassDef#mclass (var_cd1) on <var_cd1:MClassDef> */
3197 var11 = var_cd1->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_cd1:MClassDef> */
3198 if (unlikely(var11 == NULL)) {
3199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3200 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
3201 show_backtrace(1);
3202 }
3203 var9 = var11;
3204 RET_LABEL10:(void)0;
3205 }
3206 }
3207 var_c1 = var9;
3208 var12 = 1;
3209 var_keep = var12;
3210 {
3211 var13 = array__AbstractArrayRead__iterator(var_candidates);
3212 }
3213 for(;;) {
3214 {
3215 var14 = array__ArrayIterator__is_ok(var13);
3216 }
3217 if(!var14) break;
3218 {
3219 var15 = array__ArrayIterator__item(var13);
3220 }
3221 var_pd2 = var15;
3222 {
3223 { /* Inline kernel#Object#== (var_pd2,var_pd1) on <var_pd2:MPropDef> */
3224 var_other = var_pd1;
3225 {
3226 { /* Inline kernel#Object#is_same_instance (var_pd2,var_other) on <var_pd2:MPropDef> */
3227 var21 = var_pd2 == var_other;
3228 var19 = var21;
3229 goto RET_LABEL20;
3230 RET_LABEL20:(void)0;
3231 }
3232 }
3233 var17 = var19;
3234 goto RET_LABEL18;
3235 RET_LABEL18:(void)0;
3236 }
3237 var16 = var17;
3238 }
3239 if (var16){
3240 goto CONTINUE_label;
3241 } else {
3242 }
3243 {
3244 { /* Inline model#MPropDef#mclassdef (var_pd2) on <var_pd2:MPropDef> */
3245 var24 = var_pd2->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd2:MPropDef> */
3246 if (unlikely(var24 == NULL)) {
3247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3248 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
3249 show_backtrace(1);
3250 }
3251 var22 = var24;
3252 RET_LABEL23:(void)0;
3253 }
3254 }
3255 var_cd2 = var22;
3256 {
3257 { /* Inline model#MClassDef#mclass (var_cd2) on <var_cd2:MClassDef> */
3258 var27 = var_cd2->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_cd2:MClassDef> */
3259 if (unlikely(var27 == NULL)) {
3260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3261 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
3262 show_backtrace(1);
3263 }
3264 var25 = var27;
3265 RET_LABEL26:(void)0;
3266 }
3267 }
3268 var_c2 = var25;
3269 {
3270 { /* Inline model#MClass#mclass_type (var_c2) on <var_c2:MClass> */
3271 var30 = var_c2->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_c2:MClass> */
3272 if (unlikely(var30 == NULL)) {
3273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
3274 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
3275 show_backtrace(1);
3276 }
3277 var28 = var30;
3278 RET_LABEL29:(void)0;
3279 }
3280 }
3281 {
3282 { /* Inline model#MClass#mclass_type (var_c1) on <var_c1:MClass> */
3283 var33 = var_c1->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_c1:MClass> */
3284 if (unlikely(var33 == NULL)) {
3285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
3286 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
3287 show_backtrace(1);
3288 }
3289 var31 = var33;
3290 RET_LABEL32:(void)0;
3291 }
3292 }
3293 {
3294 { /* Inline kernel#Object#== (var28,var31) on <var28:MClassType> */
3295 var_other = var31;
3296 {
3297 { /* Inline kernel#Object#is_same_instance (var28,var_other) on <var28:MClassType> */
3298 var39 = var28 == var_other;
3299 var37 = var39;
3300 goto RET_LABEL38;
3301 RET_LABEL38:(void)0;
3302 }
3303 }
3304 var35 = var37;
3305 goto RET_LABEL36;
3306 RET_LABEL36:(void)0;
3307 }
3308 var34 = var35;
3309 }
3310 if (var34){
3311 {
3312 { /* Inline model#MClassDef#mmodule (var_cd2) on <var_cd2:MClassDef> */
3313 var42 = var_cd2->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_cd2:MClassDef> */
3314 if (unlikely(var42 == NULL)) {
3315 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3316 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
3317 show_backtrace(1);
3318 }
3319 var40 = var42;
3320 RET_LABEL41:(void)0;
3321 }
3322 }
3323 {
3324 { /* Inline mmodule#MModule#in_importation (var40) on <var40:MModule> */
3325 var45 = var40->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var40:MModule> */
3326 if (unlikely(var45 == NULL)) {
3327 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
3328 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
3329 show_backtrace(1);
3330 }
3331 var43 = var45;
3332 RET_LABEL44:(void)0;
3333 }
3334 }
3335 {
3336 { /* Inline model#MClassDef#mmodule (var_cd1) on <var_cd1:MClassDef> */
3337 var48 = var_cd1->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_cd1:MClassDef> */
3338 if (unlikely(var48 == NULL)) {
3339 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3340 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
3341 show_backtrace(1);
3342 }
3343 var46 = var48;
3344 RET_LABEL47:(void)0;
3345 }
3346 }
3347 {
3348 var49 = poset__POSetElement___60d(var43, var46);
3349 }
3350 if (var49){
3351 var50 = 0;
3352 var_keep = var50;
3353 goto BREAK_label;
3354 } else {
3355 }
3356 } else {
3357 {
3358 { /* Inline model#MClassDef#bound_mtype (var_cd2) on <var_cd2:MClassDef> */
3359 var54 = var_cd2->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
3360 if (unlikely(var54 == NULL)) {
3361 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3362 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3363 show_backtrace(1);
3364 }
3365 var52 = var54;
3366 RET_LABEL53:(void)0;
3367 }
3368 }
3369 var55 = NULL;
3370 {
3371 { /* Inline model#MClassDef#bound_mtype (var_cd1) on <var_cd1:MClassDef> */
3372 var58 = var_cd1->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
3373 if (unlikely(var58 == NULL)) {
3374 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3375 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3376 show_backtrace(1);
3377 }
3378 var56 = var58;
3379 RET_LABEL57:(void)0;
3380 }
3381 }
3382 {
3383 var59 = model__MType__is_subtype(var52, var_mmodule, var55, var56);
3384 }
3385 var_ = var59;
3386 if (var59){
3387 {
3388 { /* Inline model#MClassDef#bound_mtype (var_cd2) on <var_cd2:MClassDef> */
3389 var62 = var_cd2->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
3390 if (unlikely(var62 == NULL)) {
3391 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3392 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3393 show_backtrace(1);
3394 }
3395 var60 = var62;
3396 RET_LABEL61:(void)0;
3397 }
3398 }
3399 {
3400 { /* Inline model#MClassDef#bound_mtype (var_cd1) on <var_cd1:MClassDef> */
3401 var65 = var_cd1->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
3402 if (unlikely(var65 == NULL)) {
3403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3404 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3405 show_backtrace(1);
3406 }
3407 var63 = var65;
3408 RET_LABEL64:(void)0;
3409 }
3410 }
3411 {
3412 { /* Inline kernel#Object#!= (var60,var63) on <var60:MClassType> */
3413 var_other69 = var63;
3414 {
3415 var71 = ((short int (*)(val*, val*))(var60->class->vft[COLOR_kernel__Object___61d_61d]))(var60, var_other69) /* == on <var60:MClassType>*/;
3416 var70 = var71;
3417 }
3418 var72 = !var70;
3419 var67 = var72;
3420 goto RET_LABEL68;
3421 RET_LABEL68:(void)0;
3422 }
3423 var66 = var67;
3424 }
3425 var51 = var66;
3426 } else {
3427 var51 = var_;
3428 }
3429 if (var51){
3430 var73 = 0;
3431 var_keep = var73;
3432 goto BREAK_label;
3433 } else {
3434 }
3435 }
3436 CONTINUE_label: (void)0;
3437 {
3438 array__ArrayIterator__next(var13); /* Direct call array#ArrayIterator#next on <var13:ArrayIterator[nullable Object]>*/
3439 }
3440 }
3441 BREAK_label: (void)0;
3442 if (var_keep){
3443 {
3444 array__Array__add(var_res, var_pd1); /* Direct call array#Array#add on <var_res:Array[MPropDef]>*/
3445 }
3446 } else {
3447 }
3448 CONTINUE_label74: (void)0;
3449 {
3450 array__ArrayIterator__next(var3); /* Direct call array#ArrayIterator#next on <var3:ArrayIterator[nullable Object]>*/
3451 }
3452 }
3453 BREAK_label74: (void)0;
3454 {
3455 var75 = array__AbstractArrayRead__is_empty(var_res);
3456 }
3457 if (var75){
3458 if (varonce) {
3459 var76 = varonce;
3460 } else {
3461 var77 = "All lost! ";
3462 var78 = 10;
3463 var79 = string__NativeString__to_s_with_length(var77, var78);
3464 var76 = var79;
3465 varonce = var76;
3466 }
3467 if (varonce80) {
3468 var81 = varonce80;
3469 } else {
3470 var82 = ", ";
3471 var83 = 2;
3472 var84 = string__NativeString__to_s_with_length(var82, var83);
3473 var81 = var84;
3474 varonce80 = var81;
3475 }
3476 {
3477 var85 = string__Collection__join(var_candidates, var81);
3478 }
3479 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
3480 { /* var86 = array_instance Array[Object] */
3481 var87 = 2;
3482 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
3483 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var76;
3484 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var85;
3485 {
3486 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
3487 }
3488 }
3489 {
3490 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
3491 }
3492 {
3493 file__Object__print(self, var89); /* Direct call file#Object#print on <self:MProperty>*/
3494 }
3495 } else {
3496 }
3497 var = var_res;
3498 goto RET_LABEL;
3499 RET_LABEL:;
3500 return var;
3501 }
3502 /* method model#MProperty#select_most_specific for (self: Object, MModule, Array[MPropDef]): Array[MPropDef] */
3503 val* VIRTUAL_model__MProperty__select_most_specific(val* self, val* p0, val* p1) {
3504 val* var /* : Array[MPropDef] */;
3505 val* var1 /* : Array[MPropDef] */;
3506 var1 = model__MProperty__select_most_specific(self, p0, p1);
3507 var = var1;
3508 RET_LABEL:;
3509 return var;
3510 }
3511 /* method model#MProperty#lookup_first_definition for (self: MProperty, MModule, MType): MPropDef */
3512 val* model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
3513 val* var /* : MPropDef */;
3514 val* var_mmodule /* var mmodule: MModule */;
3515 val* var_mtype /* var mtype: MType */;
3516 short int var1 /* : Bool */;
3517 val* var2 /* : Array[MPropDef] */;
3518 val* var3 /* : nullable Object */;
3519 var_mmodule = p0;
3520 var_mtype = p1;
3521 {
3522 var1 = model__MType__has_mproperty(var_mtype, var_mmodule, self);
3523 }
3524 if (unlikely(!var1)) {
3525 PRINT_ERROR("Runtime error: %s", "Assert failed");
3526 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1763);
3527 show_backtrace(1);
3528 }
3529 {
3530 var2 = model__MProperty__lookup_all_definitions(self, var_mmodule, var_mtype);
3531 }
3532 {
3533 var3 = abstract_collection__SequenceRead__first(var2);
3534 }
3535 var = var3;
3536 goto RET_LABEL;
3537 RET_LABEL:;
3538 return var;
3539 }
3540 /* method model#MProperty#lookup_first_definition for (self: Object, MModule, MType): MPropDef */
3541 val* VIRTUAL_model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
3542 val* var /* : MPropDef */;
3543 val* var1 /* : MPropDef */;
3544 var1 = model__MProperty__lookup_first_definition(self, p0, p1);
3545 var = var1;
3546 RET_LABEL:;
3547 return var;
3548 }
3549 /* method model#MProperty#lookup_all_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
3550 val* model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
3551 val* var /* : Array[MPropDef] */;
3552 val* var_mmodule /* var mmodule: MModule */;
3553 val* var_mtype /* var mtype: MType */;
3554 short int var1 /* : Bool */;
3555 short int var2 /* : Bool */;
3556 val* var3 /* : MType */;
3557 val* var4 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3558 val* var6 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3559 val* var7 /* : nullable Object */;
3560 val* var_cache /* var cache: nullable Array[MPropDef] */;
3561 val* var8 /* : null */;
3562 short int var9 /* : Bool */;
3563 short int var10 /* : Bool */;
3564 val* var_other /* var other: nullable Object */;
3565 short int var12 /* : Bool */;
3566 short int var13 /* : Bool */;
3567 short int var14 /* : Bool */;
3568 val* var15 /* : Array[MPropDef] */;
3569 val* var_candidates /* var candidates: Array[MPropDef] */;
3570 val* var16 /* : Array[MPropDef] */;
3571 val* var18 /* : Array[MPropDef] */;
3572 val* var19 /* : ArrayIterator[nullable Object] */;
3573 short int var20 /* : Bool */;
3574 val* var21 /* : nullable Object */;
3575 val* var_mpropdef /* var mpropdef: MPropDef */;
3576 val* var22 /* : POSetElement[MModule] */;
3577 val* var24 /* : POSetElement[MModule] */;
3578 val* var25 /* : MClassDef */;
3579 val* var27 /* : MClassDef */;
3580 val* var28 /* : MModule */;
3581 val* var30 /* : MModule */;
3582 short int var31 /* : Bool */;
3583 short int var32 /* : Bool */;
3584 val* var33 /* : null */;
3585 val* var34 /* : MClassDef */;
3586 val* var36 /* : MClassDef */;
3587 val* var37 /* : MClassType */;
3588 val* var39 /* : MClassType */;
3589 short int var40 /* : Bool */;
3590 short int var41 /* : Bool */;
3591 long var42 /* : Int */;
3592 long var43 /* : Int */;
3593 short int var44 /* : Bool */;
3594 short int var46 /* : Bool */;
3595 int cltype;
3596 int idtype;
3597 const char* var_class_name;
3598 short int var47 /* : Bool */;
3599 val* var48 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3600 val* var50 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3601 val* var51 /* : Array[nullable Object] */;
3602 val* var52 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3603 val* var54 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3604 var_mmodule = p0;
3605 var_mtype = p1;
3606 {
3607 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
3608 }
3609 var2 = !var1;
3610 if (unlikely(!var2)) {
3611 PRINT_ERROR("Runtime error: %s", "Assert failed");
3612 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1771);
3613 show_backtrace(1);
3614 }
3615 {
3616 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
3617 }
3618 var_mtype = var3;
3619 {
3620 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
3621 var6 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
3622 if (unlikely(var6 == NULL)) {
3623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
3624 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1800);
3625 show_backtrace(1);
3626 }
3627 var4 = var6;
3628 RET_LABEL5:(void)0;
3629 }
3630 }
3631 {
3632 var7 = more_collections__HashMap2___91d_93d(var4, var_mmodule, var_mtype);
3633 }
3634 var_cache = var7;
3635 var8 = NULL;
3636 if (var_cache == NULL) {
3637 var9 = 0; /* is null */
3638 } else {
3639 var9 = 1; /* arg is null and recv is not */
3640 }
3641 if (0) {
3642 { /* Inline kernel#Object#!= (var_cache,var8) on <var_cache:nullable Array[MPropDef]> */
3643 var_other = var8;
3644 {
3645 var13 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_kernel__Object___61d_61d]))(var_cache, var_other) /* == on <var_cache:nullable Array[MPropDef](Array[MPropDef])>*/;
3646 var12 = var13;
3647 }
3648 var14 = !var12;
3649 var10 = var14;
3650 goto RET_LABEL11;
3651 RET_LABEL11:(void)0;
3652 }
3653 var9 = var10;
3654 }
3655 if (var9){
3656 var = var_cache;
3657 goto RET_LABEL;
3658 } else {
3659 }
3660 var15 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
3661 {
3662 array__Array__init(var15); /* Direct call array#Array#init on <var15:Array[MPropDef]>*/
3663 }
3664 var_candidates = var15;
3665 {
3666 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
3667 var18 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
3668 if (unlikely(var18 == NULL)) {
3669 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3670 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
3671 show_backtrace(1);
3672 }
3673 var16 = var18;
3674 RET_LABEL17:(void)0;
3675 }
3676 }
3677 {
3678 var19 = array__AbstractArrayRead__iterator(var16);
3679 }
3680 for(;;) {
3681 {
3682 var20 = array__ArrayIterator__is_ok(var19);
3683 }
3684 if(!var20) break;
3685 {
3686 var21 = array__ArrayIterator__item(var19);
3687 }
3688 var_mpropdef = var21;
3689 {
3690 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
3691 var24 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
3692 if (unlikely(var24 == NULL)) {
3693 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
3694 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
3695 show_backtrace(1);
3696 }
3697 var22 = var24;
3698 RET_LABEL23:(void)0;
3699 }
3700 }
3701 {
3702 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
3703 var27 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
3704 if (unlikely(var27 == NULL)) {
3705 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3706 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
3707 show_backtrace(1);
3708 }
3709 var25 = var27;
3710 RET_LABEL26:(void)0;
3711 }
3712 }
3713 {
3714 { /* Inline model#MClassDef#mmodule (var25) on <var25:MClassDef> */
3715 var30 = var25->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var25:MClassDef> */
3716 if (unlikely(var30 == NULL)) {
3717 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3718 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 471);
3719 show_backtrace(1);
3720 }
3721 var28 = var30;
3722 RET_LABEL29:(void)0;
3723 }
3724 }
3725 {
3726 var31 = poset__POSetElement___60d_61d(var22, var28);
3727 }
3728 var32 = !var31;
3729 if (var32){
3730 goto CONTINUE_label;
3731 } else {
3732 }
3733 var33 = NULL;
3734 {
3735 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
3736 var36 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
3737 if (unlikely(var36 == NULL)) {
3738 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3739 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
3740 show_backtrace(1);
3741 }
3742 var34 = var36;
3743 RET_LABEL35:(void)0;
3744 }
3745 }
3746 {
3747 { /* Inline model#MClassDef#bound_mtype (var34) on <var34:MClassDef> */
3748 var39 = var34->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var34:MClassDef> */
3749 if (unlikely(var39 == NULL)) {
3750 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3751 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3752 show_backtrace(1);
3753 }
3754 var37 = var39;
3755 RET_LABEL38:(void)0;
3756 }
3757 }
3758 {
3759 var40 = model__MType__is_subtype(var_mtype, var_mmodule, var33, var37);
3760 }
3761 var41 = !var40;
3762 if (var41){
3763 goto CONTINUE_label;
3764 } else {
3765 }
3766 {
3767 array__Array__add(var_candidates, var_mpropdef); /* Direct call array#Array#add on <var_candidates:Array[MPropDef]>*/
3768 }
3769 CONTINUE_label: (void)0;
3770 {
3771 array__ArrayIterator__next(var19); /* Direct call array#ArrayIterator#next on <var19:ArrayIterator[nullable Object]>*/
3772 }
3773 }
3774 BREAK_label: (void)0;
3775 {
3776 var42 = array__AbstractArrayRead__length(var_candidates);
3777 }
3778 var43 = 1;
3779 {
3780 { /* Inline kernel#Int#<= (var42,var43) on <var42:Int> */
3781 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
3782 /* <var43:Int> isa OTHER */
3783 var46 = 1; /* easy <var43:Int> isa OTHER*/
3784 if (unlikely(!var46)) {
3785 var_class_name = type_kernel__Int.name;
3786 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3787 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
3788 show_backtrace(1);
3789 }
3790 var47 = var42 <= var43;
3791 var44 = var47;
3792 goto RET_LABEL45;
3793 RET_LABEL45:(void)0;
3794 }
3795 }
3796 if (var44){
3797 {
3798 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
3799 var50 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
3800 if (unlikely(var50 == NULL)) {
3801 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
3802 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1800);
3803 show_backtrace(1);
3804 }
3805 var48 = var50;
3806 RET_LABEL49:(void)0;
3807 }
3808 }
3809 {
3810 more_collections__HashMap2___91d_93d_61d(var48, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var48:HashMap2[MModule, MType, Array[MPropDef]]>*/
3811 }
3812 var = var_candidates;
3813 goto RET_LABEL;
3814 } else {
3815 }
3816 {
3817 model__MModule__linearize_mpropdefs(var_mmodule, var_candidates); /* Direct call model#MModule#linearize_mpropdefs on <var_mmodule:MModule>*/
3818 }
3819 {
3820 var51 = array__AbstractArrayRead__reversed(var_candidates);
3821 }
3822 var_candidates = var51;
3823 {
3824 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
3825 var54 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
3826 if (unlikely(var54 == NULL)) {
3827 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
3828 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1800);
3829 show_backtrace(1);
3830 }
3831 var52 = var54;
3832 RET_LABEL53:(void)0;
3833 }
3834 }
3835 {
3836 more_collections__HashMap2___91d_93d_61d(var52, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var52:HashMap2[MModule, MType, Array[MPropDef]]>*/
3837 }
3838 var = var_candidates;
3839 goto RET_LABEL;
3840 RET_LABEL:;
3841 return var;
3842 }
3843 /* method model#MProperty#lookup_all_definitions for (self: Object, MModule, MType): Array[MPropDef] */
3844 val* VIRTUAL_model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
3845 val* var /* : Array[MPropDef] */;
3846 val* var1 /* : Array[MPropDef] */;
3847 var1 = model__MProperty__lookup_all_definitions(self, p0, p1);
3848 var = var1;
3849 RET_LABEL:;
3850 return var;
3851 }
3852 /* method model#MProperty#lookup_all_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
3853 val* model__MProperty__lookup_all_definitions_cache(val* self) {
3854 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3855 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3856 var1 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
3857 if (unlikely(var1 == NULL)) {
3858 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
3859 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1800);
3860 show_backtrace(1);
3861 }
3862 var = var1;
3863 RET_LABEL:;
3864 return var;
3865 }
3866 /* method model#MProperty#lookup_all_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
3867 val* VIRTUAL_model__MProperty__lookup_all_definitions_cache(val* self) {
3868 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3869 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3870 val* var3 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3871 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:Object(MProperty)> */
3872 var3 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:Object(MProperty)> */
3873 if (unlikely(var3 == NULL)) {
3874 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
3875 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1800);
3876 show_backtrace(1);
3877 }
3878 var1 = var3;
3879 RET_LABEL2:(void)0;
3880 }
3881 var = var1;
3882 RET_LABEL:;
3883 return var;
3884 }
3885 /* method model#MMethod#init for (self: MMethod, MClassDef, String, MVisibility) */
3886 void model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
3887 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
3888 val* var_name /* var name: String */;
3889 val* var_visibility /* var visibility: MVisibility */;
3890 var_intro_mclassdef = p0;
3891 var_name = p1;
3892 var_visibility = p2;
3893 {
3894 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:MMethod>*/
3895 }
3896 RET_LABEL:;
3897 }
3898 /* method model#MMethod#init for (self: Object, MClassDef, String, MVisibility) */
3899 void VIRTUAL_model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
3900 model__MMethod__init(self, p0, p1, p2); /* Direct call model#MMethod#init on <self:Object(MMethod)>*/
3901 RET_LABEL:;
3902 }
3903 /* method model#MMethod#is_toplevel for (self: MMethod): Bool */
3904 short int model__MMethod__is_toplevel(val* self) {
3905 short int var /* : Bool */;
3906 short int var1 /* : Bool */;
3907 var1 = self->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <self:MMethod> */
3908 var = var1;
3909 RET_LABEL:;
3910 return var;
3911 }
3912 /* method model#MMethod#is_toplevel for (self: Object): Bool */
3913 short int VIRTUAL_model__MMethod__is_toplevel(val* self) {
3914 short int var /* : Bool */;
3915 short int var1 /* : Bool */;
3916 short int var3 /* : Bool */;
3917 { /* Inline model#MMethod#is_toplevel (self) on <self:Object(MMethod)> */
3918 var3 = self->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <self:Object(MMethod)> */
3919 var1 = var3;
3920 RET_LABEL2:(void)0;
3921 }
3922 var = var1;
3923 RET_LABEL:;
3924 return var;
3925 }
3926 /* method model#MMethod#is_toplevel= for (self: MMethod, Bool) */
3927 void model__MMethod__is_toplevel_61d(val* self, short int p0) {
3928 self->attrs[COLOR_model__MMethod___is_toplevel].s = p0; /* _is_toplevel on <self:MMethod> */
3929 RET_LABEL:;
3930 }
3931 /* method model#MMethod#is_toplevel= for (self: Object, Bool) */
3932 void VIRTUAL_model__MMethod__is_toplevel_61d(val* self, short int p0) {
3933 { /* Inline model#MMethod#is_toplevel= (self,p0) on <self:Object(MMethod)> */
3934 self->attrs[COLOR_model__MMethod___is_toplevel].s = p0; /* _is_toplevel on <self:Object(MMethod)> */
3935 RET_LABEL1:(void)0;
3936 }
3937 RET_LABEL:;
3938 }
3939 /* method model#MMethod#is_init for (self: MMethod): Bool */
3940 short int model__MMethod__is_init(val* self) {
3941 short int var /* : Bool */;
3942 short int var1 /* : Bool */;
3943 var1 = self->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <self:MMethod> */
3944 var = var1;
3945 RET_LABEL:;
3946 return var;
3947 }
3948 /* method model#MMethod#is_init for (self: Object): Bool */
3949 short int VIRTUAL_model__MMethod__is_init(val* self) {
3950 short int var /* : Bool */;
3951 short int var1 /* : Bool */;
3952 short int var3 /* : Bool */;
3953 { /* Inline model#MMethod#is_init (self) on <self:Object(MMethod)> */
3954 var3 = self->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <self:Object(MMethod)> */
3955 var1 = var3;
3956 RET_LABEL2:(void)0;
3957 }
3958 var = var1;
3959 RET_LABEL:;
3960 return var;
3961 }
3962 /* method model#MMethod#is_init= for (self: MMethod, Bool) */
3963 void model__MMethod__is_init_61d(val* self, short int p0) {
3964 self->attrs[COLOR_model__MMethod___is_init].s = p0; /* _is_init on <self:MMethod> */
3965 RET_LABEL:;
3966 }
3967 /* method model#MMethod#is_init= for (self: Object, Bool) */
3968 void VIRTUAL_model__MMethod__is_init_61d(val* self, short int p0) {
3969 { /* Inline model#MMethod#is_init= (self,p0) on <self:Object(MMethod)> */
3970 self->attrs[COLOR_model__MMethod___is_init].s = p0; /* _is_init on <self:Object(MMethod)> */
3971 RET_LABEL1:(void)0;
3972 }
3973 RET_LABEL:;
3974 }
3975 /* method model#MMethod#is_new for (self: MMethod): Bool */
3976 short int model__MMethod__is_new(val* self) {
3977 short int var /* : Bool */;
3978 short int var1 /* : Bool */;
3979 var1 = self->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <self:MMethod> */
3980 var = var1;
3981 RET_LABEL:;
3982 return var;
3983 }
3984 /* method model#MMethod#is_new for (self: Object): Bool */
3985 short int VIRTUAL_model__MMethod__is_new(val* self) {
3986 short int var /* : Bool */;
3987 short int var1 /* : Bool */;
3988 short int var3 /* : Bool */;
3989 { /* Inline model#MMethod#is_new (self) on <self:Object(MMethod)> */
3990 var3 = self->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <self:Object(MMethod)> */
3991 var1 = var3;
3992 RET_LABEL2:(void)0;
3993 }
3994 var = var1;
3995 RET_LABEL:;
3996 return var;
3997 }
3998 /* method model#MMethod#is_new= for (self: MMethod, Bool) */
3999 void model__MMethod__is_new_61d(val* self, short int p0) {
4000 self->attrs[COLOR_model__MMethod___is_new].s = p0; /* _is_new on <self:MMethod> */
4001 RET_LABEL:;
4002 }
4003 /* method model#MMethod#is_new= for (self: Object, Bool) */
4004 void VIRTUAL_model__MMethod__is_new_61d(val* self, short int p0) {
4005 { /* Inline model#MMethod#is_new= (self,p0) on <self:Object(MMethod)> */
4006 self->attrs[COLOR_model__MMethod___is_new].s = p0; /* _is_new on <self:Object(MMethod)> */
4007 RET_LABEL1:(void)0;
4008 }
4009 RET_LABEL:;
4010 }
4011 /* method model#MMethod#is_init_for for (self: MMethod, MClass): Bool */
4012 short int model__MMethod__is_init_for(val* self, val* p0) {
4013 short int var /* : Bool */;
4014 val* var_mclass /* var mclass: MClass */;
4015 short int var1 /* : Bool */;
4016 short int var3 /* : Bool */;
4017 var_mclass = p0;
4018 {
4019 { /* Inline model#MMethod#is_init (self) on <self:MMethod> */
4020 var3 = self->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <self:MMethod> */
4021 var1 = var3;
4022 RET_LABEL2:(void)0;
4023 }
4024 }
4025 var = var1;
4026 goto RET_LABEL;
4027 RET_LABEL:;
4028 return var;
4029 }
4030 /* method model#MMethod#is_init_for for (self: Object, MClass): Bool */
4031 short int VIRTUAL_model__MMethod__is_init_for(val* self, val* p0) {
4032 short int var /* : Bool */;
4033 short int var1 /* : Bool */;
4034 var1 = model__MMethod__is_init_for(self, p0);
4035 var = var1;
4036 RET_LABEL:;
4037 return var;
4038 }
4039 /* method model#MAttribute#init for (self: MAttribute, MClassDef, String, MVisibility) */
4040 void model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
4041 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
4042 val* var_name /* var name: String */;
4043 val* var_visibility /* var visibility: MVisibility */;
4044 var_intro_mclassdef = p0;
4045 var_name = p1;
4046 var_visibility = p2;
4047 {
4048 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:MAttribute>*/
4049 }
4050 RET_LABEL:;
4051 }
4052 /* method model#MAttribute#init for (self: Object, MClassDef, String, MVisibility) */
4053 void VIRTUAL_model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
4054 model__MAttribute__init(self, p0, p1, p2); /* Direct call model#MAttribute#init on <self:Object(MAttribute)>*/
4055 RET_LABEL:;
4056 }
4057 /* method model#MVirtualTypeProp#init for (self: MVirtualTypeProp, MClassDef, String, MVisibility) */
4058 void model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
4059 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
4060 val* var_name /* var name: String */;
4061 val* var_visibility /* var visibility: MVisibility */;
4062 var_intro_mclassdef = p0;
4063 var_name = p1;
4064 var_visibility = p2;
4065 {
4066 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:MVirtualTypeProp>*/
4067 }
4068 RET_LABEL:;
4069 }
4070 /* method model#MVirtualTypeProp#init for (self: Object, MClassDef, String, MVisibility) */
4071 void VIRTUAL_model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
4072 model__MVirtualTypeProp__init(self, p0, p1, p2); /* Direct call model#MVirtualTypeProp#init on <self:Object(MVirtualTypeProp)>*/
4073 RET_LABEL:;
4074 }
4075 /* method model#MVirtualTypeProp#mvirtualtype for (self: MVirtualTypeProp): MVirtualType */
4076 val* model__MVirtualTypeProp__mvirtualtype(val* self) {
4077 val* var /* : MVirtualType */;
4078 val* var1 /* : MVirtualType */;
4079 var1 = self->attrs[COLOR_model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <self:MVirtualTypeProp> */
4080 if (unlikely(var1 == NULL)) {
4081 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
4082 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1858);
4083 show_backtrace(1);
4084 }
4085 var = var1;
4086 RET_LABEL:;
4087 return var;
4088 }
4089 /* method model#MVirtualTypeProp#mvirtualtype for (self: Object): MVirtualType */
4090 val* VIRTUAL_model__MVirtualTypeProp__mvirtualtype(val* self) {
4091 val* var /* : MVirtualType */;
4092 val* var1 /* : MVirtualType */;
4093 val* var3 /* : MVirtualType */;
4094 { /* Inline model#MVirtualTypeProp#mvirtualtype (self) on <self:Object(MVirtualTypeProp)> */
4095 var3 = self->attrs[COLOR_model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <self:Object(MVirtualTypeProp)> */
4096 if (unlikely(var3 == NULL)) {
4097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
4098 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1858);
4099 show_backtrace(1);
4100 }
4101 var1 = var3;
4102 RET_LABEL2:(void)0;
4103 }
4104 var = var1;
4105 RET_LABEL:;
4106 return var;
4107 }
4108 /* method model#MPropDef#location for (self: MPropDef): Location */
4109 val* model__MPropDef__location(val* self) {
4110 val* var /* : Location */;
4111 val* var1 /* : Location */;
4112 var1 = self->attrs[COLOR_model__MPropDef___location].val; /* _location on <self:MPropDef> */
4113 if (unlikely(var1 == NULL)) {
4114 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
4115 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1876);
4116 show_backtrace(1);
4117 }
4118 var = var1;
4119 RET_LABEL:;
4120 return var;
4121 }
4122 /* method model#MPropDef#location for (self: Object): Location */
4123 val* VIRTUAL_model__MPropDef__location(val* self) {
4124 val* var /* : Location */;
4125 val* var1 /* : Location */;
4126 val* var3 /* : Location */;
4127 { /* Inline model#MPropDef#location (self) on <self:Object(MPropDef)> */
4128 var3 = self->attrs[COLOR_model__MPropDef___location].val; /* _location on <self:Object(MPropDef)> */
4129 if (unlikely(var3 == NULL)) {
4130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
4131 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1876);
4132 show_backtrace(1);
4133 }
4134 var1 = var3;
4135 RET_LABEL2:(void)0;
4136 }
4137 var = var1;
4138 RET_LABEL:;
4139 return var;
4140 }
4141 /* method model#MPropDef#location= for (self: MPropDef, Location) */
4142 void model__MPropDef__location_61d(val* self, val* p0) {
4143 self->attrs[COLOR_model__MPropDef___location].val = p0; /* _location on <self:MPropDef> */
4144 RET_LABEL:;
4145 }
4146 /* method model#MPropDef#location= for (self: Object, Location) */
4147 void VIRTUAL_model__MPropDef__location_61d(val* self, val* p0) {
4148 { /* Inline model#MPropDef#location= (self,p0) on <self:Object(MPropDef)> */
4149 self->attrs[COLOR_model__MPropDef___location].val = p0; /* _location on <self:Object(MPropDef)> */
4150 RET_LABEL1:(void)0;
4151 }
4152 RET_LABEL:;
4153 }
4154 /* method model#MPropDef#mclassdef for (self: MPropDef): MClassDef */
4155 val* model__MPropDef__mclassdef(val* self) {
4156 val* var /* : MClassDef */;
4157 val* var1 /* : MClassDef */;
4158 var1 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
4159 if (unlikely(var1 == NULL)) {
4160 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4161 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
4162 show_backtrace(1);
4163 }
4164 var = var1;
4165 RET_LABEL:;
4166 return var;
4167 }
4168 /* method model#MPropDef#mclassdef for (self: Object): MClassDef */
4169 val* VIRTUAL_model__MPropDef__mclassdef(val* self) {
4170 val* var /* : MClassDef */;
4171 val* var1 /* : MClassDef */;
4172 val* var3 /* : MClassDef */;
4173 { /* Inline model#MPropDef#mclassdef (self) on <self:Object(MPropDef)> */
4174 var3 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:Object(MPropDef)> */
4175 if (unlikely(var3 == NULL)) {
4176 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4177 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
4178 show_backtrace(1);
4179 }
4180 var1 = var3;
4181 RET_LABEL2:(void)0;
4182 }
4183 var = var1;
4184 RET_LABEL:;
4185 return var;
4186 }
4187 /* method model#MPropDef#mclassdef= for (self: MPropDef, MClassDef) */
4188 void model__MPropDef__mclassdef_61d(val* self, val* p0) {
4189 self->attrs[COLOR_model__MPropDef___mclassdef].val = p0; /* _mclassdef on <self:MPropDef> */
4190 RET_LABEL:;
4191 }
4192 /* method model#MPropDef#mclassdef= for (self: Object, MClassDef) */
4193 void VIRTUAL_model__MPropDef__mclassdef_61d(val* self, val* p0) {
4194 { /* Inline model#MPropDef#mclassdef= (self,p0) on <self:Object(MPropDef)> */
4195 self->attrs[COLOR_model__MPropDef___mclassdef].val = p0; /* _mclassdef on <self:Object(MPropDef)> */
4196 RET_LABEL1:(void)0;
4197 }
4198 RET_LABEL:;
4199 }
4200 /* method model#MPropDef#mproperty for (self: MPropDef): MProperty */
4201 val* model__MPropDef__mproperty(val* self) {
4202 val* var /* : MProperty */;
4203 val* var1 /* : MProperty */;
4204 var1 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
4205 if (unlikely(var1 == NULL)) {
4206 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4207 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4208 show_backtrace(1);
4209 }
4210 var = var1;
4211 RET_LABEL:;
4212 return var;
4213 }
4214 /* method model#MPropDef#mproperty for (self: Object): MProperty */
4215 val* VIRTUAL_model__MPropDef__mproperty(val* self) {
4216 val* var /* : MProperty */;
4217 val* var1 /* : MProperty */;
4218 val* var3 /* : MProperty */;
4219 { /* Inline model#MPropDef#mproperty (self) on <self:Object(MPropDef)> */
4220 var3 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:Object(MPropDef)> */
4221 if (unlikely(var3 == NULL)) {
4222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4223 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4224 show_backtrace(1);
4225 }
4226 var1 = var3;
4227 RET_LABEL2:(void)0;
4228 }
4229 var = var1;
4230 RET_LABEL:;
4231 return var;
4232 }
4233 /* method model#MPropDef#mproperty= for (self: MPropDef, MProperty) */
4234 void model__MPropDef__mproperty_61d(val* self, val* p0) {
4235 short int var /* : Bool */;
4236 int cltype;
4237 int idtype;
4238 const struct type* type_struct;
4239 const char* var_class_name;
4240 /* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
4241 /* <p0:MProperty> isa MPROPERTY */
4242 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
4243 cltype = type_struct->color;
4244 idtype = type_struct->id;
4245 if(cltype >= p0->type->table_size) {
4246 var = 0;
4247 } else {
4248 var = p0->type->type_table[cltype] == idtype;
4249 }
4250 if (unlikely(!var)) {
4251 var_class_name = p0 == NULL ? "null" : p0->type->name;
4252 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
4253 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4254 show_backtrace(1);
4255 }
4256 self->attrs[COLOR_model__MPropDef___mproperty].val = p0; /* _mproperty on <self:MPropDef> */
4257 RET_LABEL:;
4258 }
4259 /* method model#MPropDef#mproperty= for (self: Object, MProperty) */
4260 void VIRTUAL_model__MPropDef__mproperty_61d(val* self, val* p0) {
4261 short int var /* : Bool */;
4262 int cltype;
4263 int idtype;
4264 const struct type* type_struct;
4265 const char* var_class_name;
4266 { /* Inline model#MPropDef#mproperty= (self,p0) on <self:Object(MPropDef)> */
4267 /* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
4268 /* <p0:MProperty> isa MPROPERTY */
4269 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
4270 cltype = type_struct->color;
4271 idtype = type_struct->id;
4272 if(cltype >= p0->type->table_size) {
4273 var = 0;
4274 } else {
4275 var = p0->type->type_table[cltype] == idtype;
4276 }
4277 if (unlikely(!var)) {
4278 var_class_name = p0 == NULL ? "null" : p0->type->name;
4279 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
4280 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4281 show_backtrace(1);
4282 }
4283 self->attrs[COLOR_model__MPropDef___mproperty].val = p0; /* _mproperty on <self:Object(MPropDef)> */
4284 RET_LABEL1:(void)0;
4285 }
4286 RET_LABEL:;
4287 }
4288 /* method model#MPropDef#init for (self: MPropDef, MClassDef, MProperty, Location) */
4289 void model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
4290 short int var /* : Bool */;
4291 int cltype;
4292 int idtype;
4293 const struct type* type_struct;
4294 const char* var_class_name;
4295 val* var_mclassdef /* var mclassdef: MClassDef */;
4296 val* var_mproperty /* var mproperty: MProperty */;
4297 val* var_location /* var location: Location */;
4298 short int var4 /* : Bool */;
4299 int cltype5;
4300 int idtype6;
4301 const struct type* type_struct7;
4302 const char* var_class_name8;
4303 val* var10 /* : Array[MPropDef] */;
4304 val* var12 /* : Array[MPropDef] */;
4305 val* var13 /* : Array[MPropDef] */;
4306 val* var15 /* : Array[MPropDef] */;
4307 static val* varonce;
4308 val* var16 /* : String */;
4309 char* var17 /* : NativeString */;
4310 long var18 /* : Int */;
4311 val* var19 /* : FlatString */;
4312 val* var20 /* : Array[Object] */;
4313 long var21 /* : Int */;
4314 val* var22 /* : NativeArray[Object] */;
4315 val* var23 /* : String */;
4316 /* Covariant cast for argument 1 (mproperty) <p1:MProperty> isa MPROPERTY */
4317 /* <p1:MProperty> isa MPROPERTY */
4318 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
4319 cltype = type_struct->color;
4320 idtype = type_struct->id;
4321 if(cltype >= p1->type->table_size) {
4322 var = 0;
4323 } else {
4324 var = p1->type->type_table[cltype] == idtype;
4325 }
4326 if (unlikely(!var)) {
4327 var_class_name = p1 == NULL ? "null" : p1->type->name;
4328 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
4329 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1885);
4330 show_backtrace(1);
4331 }
4332 {
4333 { /* Inline model_base#MEntity#init (self) on <self:MPropDef> */
4334 RET_LABEL1:(void)0;
4335 }
4336 }
4337 var_mclassdef = p0;
4338 var_mproperty = p1;
4339 var_location = p2;
4340 {
4341 { /* Inline model#MPropDef#mclassdef= (self,var_mclassdef) on <self:MPropDef> */
4342 self->attrs[COLOR_model__MPropDef___mclassdef].val = var_mclassdef; /* _mclassdef on <self:MPropDef> */
4343 RET_LABEL2:(void)0;
4344 }
4345 }
4346 {
4347 { /* Inline model#MPropDef#mproperty= (self,var_mproperty) on <self:MPropDef> */
4348 /* Covariant cast for argument 0 (mproperty) <var_mproperty:MProperty> isa MPROPERTY */
4349 /* <var_mproperty:MProperty> isa MPROPERTY */
4350 type_struct7 = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
4351 cltype5 = type_struct7->color;
4352 idtype6 = type_struct7->id;
4353 if(cltype5 >= var_mproperty->type->table_size) {
4354 var4 = 0;
4355 } else {
4356 var4 = var_mproperty->type->type_table[cltype5] == idtype6;
4357 }
4358 if (unlikely(!var4)) {
4359 var_class_name8 = var_mproperty == NULL ? "null" : var_mproperty->type->name;
4360 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name8);
4361 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4362 show_backtrace(1);
4363 }
4364 self->attrs[COLOR_model__MPropDef___mproperty].val = var_mproperty; /* _mproperty on <self:MPropDef> */
4365 RET_LABEL3:(void)0;
4366 }
4367 }
4368 {
4369 { /* Inline model#MPropDef#location= (self,var_location) on <self:MPropDef> */
4370 self->attrs[COLOR_model__MPropDef___location].val = var_location; /* _location on <self:MPropDef> */
4371 RET_LABEL9:(void)0;
4372 }
4373 }
4374 {
4375 { /* Inline model#MClassDef#mpropdefs (var_mclassdef) on <var_mclassdef:MClassDef> */
4376 var12 = var_mclassdef->attrs[COLOR_model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_mclassdef:MClassDef> */
4377 if (unlikely(var12 == NULL)) {
4378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
4379 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 574);
4380 show_backtrace(1);
4381 }
4382 var10 = var12;
4383 RET_LABEL11:(void)0;
4384 }
4385 }
4386 {
4387 array__Array__add(var10, self); /* Direct call array#Array#add on <var10:Array[MPropDef]>*/
4388 }
4389 {
4390 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MProperty> */
4391 var15 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MProperty> */
4392 if (unlikely(var15 == NULL)) {
4393 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
4394 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
4395 show_backtrace(1);
4396 }
4397 var13 = var15;
4398 RET_LABEL14:(void)0;
4399 }
4400 }
4401 {
4402 array__Array__add(var13, self); /* Direct call array#Array#add on <var13:Array[MPropDef]>*/
4403 }
4404 if (varonce) {
4405 var16 = varonce;
4406 } else {
4407 var17 = "#";
4408 var18 = 1;
4409 var19 = string__NativeString__to_s_with_length(var17, var18);
4410 var16 = var19;
4411 varonce = var16;
4412 }
4413 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
4414 { /* var20 = array_instance Array[Object] */
4415 var21 = 3;
4416 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
4417 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var_mclassdef;
4418 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var16;
4419 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var_mproperty;
4420 {
4421 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
4422 }
4423 }
4424 {
4425 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
4426 }
4427 {
4428 { /* Inline model#MPropDef#to_s= (self,var23) on <self:MPropDef> */
4429 self->attrs[COLOR_model__MPropDef___to_s].val = var23; /* _to_s on <self:MPropDef> */
4430 RET_LABEL24:(void)0;
4431 }
4432 }
4433 RET_LABEL:;
4434 }
4435 /* method model#MPropDef#init for (self: Object, MClassDef, MProperty, Location) */
4436 void VIRTUAL_model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
4437 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:Object(MPropDef)>*/
4438 RET_LABEL:;
4439 }
4440 /* method model#MPropDef#name for (self: MPropDef): String */
4441 val* model__MPropDef__name(val* self) {
4442 val* var /* : String */;
4443 val* var1 /* : MProperty */;
4444 val* var3 /* : MProperty */;
4445 val* var4 /* : String */;
4446 val* var6 /* : String */;
4447 {
4448 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
4449 var3 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
4450 if (unlikely(var3 == NULL)) {
4451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4452 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4453 show_backtrace(1);
4454 }
4455 var1 = var3;
4456 RET_LABEL2:(void)0;
4457 }
4458 }
4459 {
4460 { /* Inline model#MProperty#name (var1) on <var1:MProperty> */
4461 var6 = var1->attrs[COLOR_model__MProperty___name].val; /* _name on <var1:MProperty> */
4462 if (unlikely(var6 == NULL)) {
4463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4464 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
4465 show_backtrace(1);
4466 }
4467 var4 = var6;
4468 RET_LABEL5:(void)0;
4469 }
4470 }
4471 var = var4;
4472 goto RET_LABEL;
4473 RET_LABEL:;
4474 return var;
4475 }
4476 /* method model#MPropDef#name for (self: Object): String */
4477 val* VIRTUAL_model__MPropDef__name(val* self) {
4478 val* var /* : String */;
4479 val* var1 /* : String */;
4480 var1 = model__MPropDef__name(self);
4481 var = var1;
4482 RET_LABEL:;
4483 return var;
4484 }
4485 /* method model#MPropDef#model for (self: MPropDef): Model */
4486 val* model__MPropDef__model(val* self) {
4487 val* var /* : Model */;
4488 val* var1 /* : MClassDef */;
4489 val* var3 /* : MClassDef */;
4490 val* var4 /* : Model */;
4491 {
4492 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
4493 var3 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
4494 if (unlikely(var3 == NULL)) {
4495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4496 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
4497 show_backtrace(1);
4498 }
4499 var1 = var3;
4500 RET_LABEL2:(void)0;
4501 }
4502 }
4503 {
4504 var4 = model__MClassDef__model(var1);
4505 }
4506 var = var4;
4507 goto RET_LABEL;
4508 RET_LABEL:;
4509 return var;
4510 }
4511 /* method model#MPropDef#model for (self: Object): Model */
4512 val* VIRTUAL_model__MPropDef__model(val* self) {
4513 val* var /* : Model */;
4514 val* var1 /* : Model */;
4515 var1 = model__MPropDef__model(self);
4516 var = var1;
4517 RET_LABEL:;
4518 return var;
4519 }
4520 /* method model#MPropDef#to_s for (self: MPropDef): String */
4521 val* model__MPropDef__to_s(val* self) {
4522 val* var /* : String */;
4523 val* var1 /* : String */;
4524 var1 = self->attrs[COLOR_model__MPropDef___to_s].val; /* _to_s on <self:MPropDef> */
4525 if (unlikely(var1 == NULL)) {
4526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
4527 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1900);
4528 show_backtrace(1);
4529 }
4530 var = var1;
4531 RET_LABEL:;
4532 return var;
4533 }
4534 /* method model#MPropDef#to_s for (self: Object): String */
4535 val* VIRTUAL_model__MPropDef__to_s(val* self) {
4536 val* var /* : String */;
4537 val* var1 /* : String */;
4538 val* var3 /* : String */;
4539 { /* Inline model#MPropDef#to_s (self) on <self:Object(MPropDef)> */
4540 var3 = self->attrs[COLOR_model__MPropDef___to_s].val; /* _to_s on <self:Object(MPropDef)> */
4541 if (unlikely(var3 == NULL)) {
4542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
4543 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1900);
4544 show_backtrace(1);
4545 }
4546 var1 = var3;
4547 RET_LABEL2:(void)0;
4548 }
4549 var = var1;
4550 RET_LABEL:;
4551 return var;
4552 }
4553 /* method model#MPropDef#to_s= for (self: MPropDef, String) */
4554 void model__MPropDef__to_s_61d(val* self, val* p0) {
4555 self->attrs[COLOR_model__MPropDef___to_s].val = p0; /* _to_s on <self:MPropDef> */
4556 RET_LABEL:;
4557 }
4558 /* method model#MPropDef#to_s= for (self: Object, String) */
4559 void VIRTUAL_model__MPropDef__to_s_61d(val* self, val* p0) {
4560 { /* Inline model#MPropDef#to_s= (self,p0) on <self:Object(MPropDef)> */
4561 self->attrs[COLOR_model__MPropDef___to_s].val = p0; /* _to_s on <self:Object(MPropDef)> */
4562 RET_LABEL1:(void)0;
4563 }
4564 RET_LABEL:;
4565 }
4566 /* method model#MPropDef#is_intro for (self: MPropDef): Bool */
4567 short int model__MPropDef__is_intro(val* self) {
4568 short int var /* : Bool */;
4569 val* var1 /* : MProperty */;
4570 val* var3 /* : MProperty */;
4571 val* var4 /* : MPropDef */;
4572 short int var5 /* : Bool */;
4573 short int var6 /* : Bool */;
4574 val* var_other /* var other: nullable Object */;
4575 short int var8 /* : Bool */;
4576 short int var10 /* : Bool */;
4577 {
4578 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
4579 var3 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
4580 if (unlikely(var3 == NULL)) {
4581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4582 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4583 show_backtrace(1);
4584 }
4585 var1 = var3;
4586 RET_LABEL2:(void)0;
4587 }
4588 }
4589 {
4590 var4 = model__MProperty__intro(var1);
4591 }
4592 {
4593 { /* Inline kernel#Object#== (var4,self) on <var4:MPropDef> */
4594 var_other = self;
4595 {
4596 { /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MPropDef> */
4597 var10 = var4 == var_other;
4598 var8 = var10;
4599 goto RET_LABEL9;
4600 RET_LABEL9:(void)0;
4601 }
4602 }
4603 var6 = var8;
4604 goto RET_LABEL7;
4605 RET_LABEL7:(void)0;
4606 }
4607 var5 = var6;
4608 }
4609 var = var5;
4610 goto RET_LABEL;
4611 RET_LABEL:;
4612 return var;
4613 }
4614 /* method model#MPropDef#is_intro for (self: Object): Bool */
4615 short int VIRTUAL_model__MPropDef__is_intro(val* self) {
4616 short int var /* : Bool */;
4617 short int var1 /* : Bool */;
4618 var1 = model__MPropDef__is_intro(self);
4619 var = var1;
4620 RET_LABEL:;
4621 return var;
4622 }
4623 /* method model#MPropDef#lookup_next_definition for (self: MPropDef, MModule, MType): MPropDef */
4624 val* model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
4625 val* var /* : MPropDef */;
4626 val* var_mmodule /* var mmodule: MModule */;
4627 val* var_mtype /* var mtype: MType */;
4628 short int var1 /* : Bool */;
4629 short int var2 /* : Bool */;
4630 val* var3 /* : MProperty */;
4631 val* var5 /* : MProperty */;
4632 val* var6 /* : Array[MPropDef] */;
4633 val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
4634 val* var7 /* : ArrayIterator[nullable Object] */;
4635 val* var_i /* var i: ArrayIterator[MPropDef] */;
4636 short int var8 /* : Bool */;
4637 short int var9 /* : Bool */;
4638 short int var_ /* var : Bool */;
4639 val* var10 /* : nullable Object */;
4640 short int var11 /* : Bool */;
4641 short int var12 /* : Bool */;
4642 val* var_other /* var other: nullable Object */;
4643 short int var14 /* : Bool */;
4644 short int var15 /* : Bool */;
4645 short int var16 /* : Bool */;
4646 short int var17 /* : Bool */;
4647 short int var18 /* : Bool */;
4648 val* var19 /* : nullable Object */;
4649 short int var20 /* : Bool */;
4650 int cltype;
4651 int idtype;
4652 const struct type* type_struct;
4653 const char* var_class_name;
4654 var_mmodule = p0;
4655 var_mtype = p1;
4656 {
4657 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
4658 }
4659 var2 = !var1;
4660 if (unlikely(!var2)) {
4661 PRINT_ERROR("Runtime error: %s", "Assert failed");
4662 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1914);
4663 show_backtrace(1);
4664 }
4665 {
4666 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
4667 var5 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
4668 if (unlikely(var5 == NULL)) {
4669 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4670 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1882);
4671 show_backtrace(1);
4672 }
4673 var3 = var5;
4674 RET_LABEL4:(void)0;
4675 }
4676 }
4677 {
4678 var6 = model__MProperty__lookup_all_definitions(var3, var_mmodule, var_mtype);
4679 }
4680 var_mpropdefs = var6;
4681 {
4682 var7 = array__AbstractArrayRead__iterator(var_mpropdefs);
4683 }
4684 var_i = var7;
4685 for(;;) {
4686 {
4687 var9 = array__ArrayIterator__is_ok(var_i);
4688 }
4689 var_ = var9;
4690 if (var9){
4691 {
4692 var10 = array__ArrayIterator__item(var_i);
4693 }
4694 {
4695 { /* Inline kernel#Object#!= (var10,self) on <var10:nullable Object(MPropDef)> */
4696 var_other = self;
4697 {
4698 var15 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var_other) /* == on <var10:nullable Object(MPropDef)>*/;
4699 var14 = var15;
4700 }
4701 var16 = !var14;
4702 var12 = var16;
4703 goto RET_LABEL13;
4704 RET_LABEL13:(void)0;
4705 }
4706 var11 = var12;
4707 }
4708 var8 = var11;
4709 } else {
4710 var8 = var_;
4711 }
4712 if (!var8) break;
4713 {
4714 array__ArrayIterator__next(var_i); /* Direct call array#ArrayIterator#next on <var_i:ArrayIterator[MPropDef]>*/
4715 }
4716 CONTINUE_label: (void)0;
4717 }
4718 BREAK_label: (void)0;
4719 {
4720 var17 = array__ArrayIterator__is_ok(var_i);
4721 }
4722 if (unlikely(!var17)) {
4723 PRINT_ERROR("Runtime error: %s", "Assert \'has_property\' failed");
4724 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1919);
4725 show_backtrace(1);
4726 }
4727 {
4728 array__ArrayIterator__next(var_i); /* Direct call array#ArrayIterator#next on <var_i:ArrayIterator[MPropDef]>*/
4729 }
4730 {
4731 var18 = array__ArrayIterator__is_ok(var_i);
4732 }
4733 if (unlikely(!var18)) {
4734 PRINT_ERROR("Runtime error: %s", "Assert \'has_next_property\' failed");
4735 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1921);
4736 show_backtrace(1);
4737 }
4738 {
4739 var19 = array__ArrayIterator__item(var_i);
4740 }
4741 /* <var19:nullable Object(MPropDef)> isa MPROPDEF */
4742 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPDEF];
4743 cltype = type_struct->color;
4744 idtype = type_struct->id;
4745 if(cltype >= var19->type->table_size) {
4746 var20 = 0;
4747 } else {
4748 var20 = var19->type->type_table[cltype] == idtype;
4749 }
4750 if (unlikely(!var20)) {
4751 var_class_name = var19 == NULL ? "null" : var19->type->name;
4752 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
4753 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1922);
4754 show_backtrace(1);
4755 }
4756 var = var19;
4757 goto RET_LABEL;
4758 RET_LABEL:;
4759 return var;
4760 }
4761 /* method model#MPropDef#lookup_next_definition for (self: Object, MModule, MType): MPropDef */
4762 val* VIRTUAL_model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
4763 val* var /* : MPropDef */;
4764 val* var1 /* : MPropDef */;
4765 var1 = model__MPropDef__lookup_next_definition(self, p0, p1);
4766 var = var1;
4767 RET_LABEL:;
4768 return var;
4769 }
4770 /* method model#MMethodDef#init for (self: MMethodDef, MClassDef, MMethod, Location) */
4771 void model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
4772 short int var /* : Bool */;
4773 int cltype;
4774 int idtype;
4775 const struct type* type_struct;
4776 const char* var_class_name;
4777 val* var_mclassdef /* var mclassdef: MClassDef */;
4778 val* var_mproperty /* var mproperty: MMethod */;
4779 val* var_location /* var location: Location */;
4780 /* Covariant cast for argument 1 (mproperty) <p1:MMethod> isa MPROPERTY */
4781 /* <p1:MMethod> isa MPROPERTY */
4782 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
4783 cltype = type_struct->color;
4784 idtype = type_struct->id;
4785 if(cltype >= p1->type->table_size) {
4786 var = 0;
4787 } else {
4788 var = p1->type->type_table[cltype] == idtype;
4789 }
4790 if (unlikely(!var)) {
4791 var_class_name = p1 == NULL ? "null" : p1->type->name;
4792 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
4793 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1933);
4794 show_backtrace(1);
4795 }
4796 var_mclassdef = p0;
4797 var_mproperty = p1;
4798 var_location = p2;
4799 {
4800 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:MMethodDef>*/
4801 }
4802 RET_LABEL:;
4803 }
4804 /* method model#MMethodDef#init for (self: Object, MClassDef, MMethod, Location) */
4805 void VIRTUAL_model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
4806 model__MMethodDef__init(self, p0, p1, p2); /* Direct call model#MMethodDef#init on <self:Object(MMethodDef)>*/
4807 RET_LABEL:;
4808 }
4809 /* method model#MMethodDef#msignature for (self: MMethodDef): nullable MSignature */
4810 val* model__MMethodDef__msignature(val* self) {
4811 val* var /* : nullable MSignature */;
4812 val* var1 /* : nullable MSignature */;
4813 var1 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:MMethodDef> */
4814 var = var1;
4815 RET_LABEL:;
4816 return var;
4817 }
4818 /* method model#MMethodDef#msignature for (self: Object): nullable MSignature */
4819 val* VIRTUAL_model__MMethodDef__msignature(val* self) {
4820 val* var /* : nullable MSignature */;
4821 val* var1 /* : nullable MSignature */;
4822 val* var3 /* : nullable MSignature */;
4823 { /* Inline model#MMethodDef#msignature (self) on <self:Object(MMethodDef)> */
4824 var3 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:Object(MMethodDef)> */
4825 var1 = var3;
4826 RET_LABEL2:(void)0;
4827 }
4828 var = var1;
4829 RET_LABEL:;
4830 return var;
4831 }
4832 /* method model#MMethodDef#msignature= for (self: MMethodDef, nullable MSignature) */
4833 void model__MMethodDef__msignature_61d(val* self, val* p0) {
4834 self->attrs[COLOR_model__MMethodDef___msignature].val = p0; /* _msignature on <self:MMethodDef> */
4835 RET_LABEL:;
4836 }
4837 /* method model#MMethodDef#msignature= for (self: Object, nullable MSignature) */
4838 void VIRTUAL_model__MMethodDef__msignature_61d(val* self, val* p0) {
4839 { /* Inline model#MMethodDef#msignature= (self,p0) on <self:Object(MMethodDef)> */
4840 self->attrs[COLOR_model__MMethodDef___msignature].val = p0; /* _msignature on <self:Object(MMethodDef)> */
4841 RET_LABEL1:(void)0;
4842 }
4843 RET_LABEL:;
4844 }
4845 /* method model#MMethodDef#is_abstract for (self: MMethodDef): Bool */
4846 short int model__MMethodDef__is_abstract(val* self) {
4847 short int var /* : Bool */;
4848 short int var1 /* : Bool */;
4849 var1 = self->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on <self:MMethodDef> */
4850 var = var1;
4851 RET_LABEL:;
4852 return var;
4853 }
4854 /* method model#MMethodDef#is_abstract for (self: Object): Bool */
4855 short int VIRTUAL_model__MMethodDef__is_abstract(val* self) {
4856 short int var /* : Bool */;
4857 short int var1 /* : Bool */;
4858 short int var3 /* : Bool */;
4859 { /* Inline model#MMethodDef#is_abstract (self) on <self:Object(MMethodDef)> */
4860 var3 = self->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on <self:Object(MMethodDef)> */
4861 var1 = var3;
4862 RET_LABEL2:(void)0;
4863 }
4864 var = var1;
4865 RET_LABEL:;
4866 return var;
4867 }
4868 /* method model#MMethodDef#is_abstract= for (self: MMethodDef, Bool) */
4869 void model__MMethodDef__is_abstract_61d(val* self, short int p0) {
4870 self->attrs[COLOR_model__MMethodDef___is_abstract].s = p0; /* _is_abstract on <self:MMethodDef> */
4871 RET_LABEL:;
4872 }
4873 /* method model#MMethodDef#is_abstract= for (self: Object, Bool) */
4874 void VIRTUAL_model__MMethodDef__is_abstract_61d(val* self, short int p0) {
4875 { /* Inline model#MMethodDef#is_abstract= (self,p0) on <self:Object(MMethodDef)> */
4876 self->attrs[COLOR_model__MMethodDef___is_abstract].s = p0; /* _is_abstract on <self:Object(MMethodDef)> */
4877 RET_LABEL1:(void)0;
4878 }
4879 RET_LABEL:;
4880 }
4881 /* method model#MMethodDef#is_intern for (self: MMethodDef): Bool */
4882 short int model__MMethodDef__is_intern(val* self) {
4883 short int var /* : Bool */;
4884 short int var1 /* : Bool */;
4885 var1 = self->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <self:MMethodDef> */
4886 var = var1;
4887 RET_LABEL:;
4888 return var;
4889 }
4890 /* method model#MMethodDef#is_intern for (self: Object): Bool */
4891 short int VIRTUAL_model__MMethodDef__is_intern(val* self) {
4892 short int var /* : Bool */;
4893 short int var1 /* : Bool */;
4894 short int var3 /* : Bool */;
4895 { /* Inline model#MMethodDef#is_intern (self) on <self:Object(MMethodDef)> */
4896 var3 = self->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <self:Object(MMethodDef)> */
4897 var1 = var3;
4898 RET_LABEL2:(void)0;
4899 }
4900 var = var1;
4901 RET_LABEL:;
4902 return var;
4903 }
4904 /* method model#MMethodDef#is_intern= for (self: MMethodDef, Bool) */
4905 void model__MMethodDef__is_intern_61d(val* self, short int p0) {
4906 self->attrs[COLOR_model__MMethodDef___is_intern].s = p0; /* _is_intern on <self:MMethodDef> */
4907 RET_LABEL:;
4908 }
4909 /* method model#MMethodDef#is_intern= for (self: Object, Bool) */
4910 void VIRTUAL_model__MMethodDef__is_intern_61d(val* self, short int p0) {
4911 { /* Inline model#MMethodDef#is_intern= (self,p0) on <self:Object(MMethodDef)> */
4912 self->attrs[COLOR_model__MMethodDef___is_intern].s = p0; /* _is_intern on <self:Object(MMethodDef)> */
4913 RET_LABEL1:(void)0;
4914 }
4915 RET_LABEL:;
4916 }
4917 /* method model#MMethodDef#is_extern for (self: MMethodDef): Bool */
4918 short int model__MMethodDef__is_extern(val* self) {
4919 short int var /* : Bool */;
4920 short int var1 /* : Bool */;
4921 var1 = self->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <self:MMethodDef> */
4922 var = var1;
4923 RET_LABEL:;
4924 return var;
4925 }
4926 /* method model#MMethodDef#is_extern for (self: Object): Bool */
4927 short int VIRTUAL_model__MMethodDef__is_extern(val* self) {
4928 short int var /* : Bool */;
4929 short int var1 /* : Bool */;
4930 short int var3 /* : Bool */;
4931 { /* Inline model#MMethodDef#is_extern (self) on <self:Object(MMethodDef)> */
4932 var3 = self->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <self:Object(MMethodDef)> */
4933 var1 = var3;
4934 RET_LABEL2:(void)0;
4935 }
4936 var = var1;
4937 RET_LABEL:;
4938 return var;
4939 }
4940 /* method model#MMethodDef#is_extern= for (self: MMethodDef, Bool) */
4941 void model__MMethodDef__is_extern_61d(val* self, short int p0) {
4942 self->attrs[COLOR_model__MMethodDef___is_extern].s = p0; /* _is_extern on <self:MMethodDef> */
4943 RET_LABEL:;
4944 }
4945 /* method model#MMethodDef#is_extern= for (self: Object, Bool) */
4946 void VIRTUAL_model__MMethodDef__is_extern_61d(val* self, short int p0) {
4947 { /* Inline model#MMethodDef#is_extern= (self,p0) on <self:Object(MMethodDef)> */
4948 self->attrs[COLOR_model__MMethodDef___is_extern].s = p0; /* _is_extern on <self:Object(MMethodDef)> */
4949 RET_LABEL1:(void)0;
4950 }
4951 RET_LABEL:;
4952 }
4953 /* method model#MAttributeDef#init for (self: MAttributeDef, MClassDef, MAttribute, Location) */
4954 void model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
4955 short int var /* : Bool */;
4956 int cltype;
4957 int idtype;
4958 const struct type* type_struct;
4959 const char* var_class_name;
4960 val* var_mclassdef /* var mclassdef: MClassDef */;
4961 val* var_mproperty /* var mproperty: MAttribute */;
4962 val* var_location /* var location: Location */;
4963 /* Covariant cast for argument 1 (mproperty) <p1:MAttribute> isa MPROPERTY */
4964 /* <p1:MAttribute> isa MPROPERTY */
4965 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
4966 cltype = type_struct->color;
4967 idtype = type_struct->id;
4968 if(cltype >= p1->type->table_size) {
4969 var = 0;
4970 } else {
4971 var = p1->type->type_table[cltype] == idtype;
4972 }
4973 if (unlikely(!var)) {
4974 var_class_name = p1 == NULL ? "null" : p1->type->name;
4975 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
4976 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1958);
4977 show_backtrace(1);
4978 }
4979 var_mclassdef = p0;
4980 var_mproperty = p1;
4981 var_location = p2;
4982 {
4983 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:MAttributeDef>*/
4984 }
4985 RET_LABEL:;
4986 }
4987 /* method model#MAttributeDef#init for (self: Object, MClassDef, MAttribute, Location) */
4988 void VIRTUAL_model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
4989 model__MAttributeDef__init(self, p0, p1, p2); /* Direct call model#MAttributeDef#init on <self:Object(MAttributeDef)>*/
4990 RET_LABEL:;
4991 }
4992 /* method model#MAttributeDef#static_mtype for (self: MAttributeDef): nullable MType */
4993 val* model__MAttributeDef__static_mtype(val* self) {
4994 val* var /* : nullable MType */;
4995 val* var1 /* : nullable MType */;
4996 var1 = self->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <self:MAttributeDef> */
4997 var = var1;
4998 RET_LABEL:;
4999 return var;
5000 }
5001 /* method model#MAttributeDef#static_mtype for (self: Object): nullable MType */
5002 val* VIRTUAL_model__MAttributeDef__static_mtype(val* self) {
5003 val* var /* : nullable MType */;
5004 val* var1 /* : nullable MType */;
5005 val* var3 /* : nullable MType */;
5006 { /* Inline model#MAttributeDef#static_mtype (self) on <self:Object(MAttributeDef)> */
5007 var3 = self->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <self:Object(MAttributeDef)> */
5008 var1 = var3;
5009 RET_LABEL2:(void)0;
5010 }
5011 var = var1;
5012 RET_LABEL:;
5013 return var;
5014 }
5015 /* method model#MAttributeDef#static_mtype= for (self: MAttributeDef, nullable MType) */
5016 void model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
5017 self->attrs[COLOR_model__MAttributeDef___static_mtype].val = p0; /* _static_mtype on <self:MAttributeDef> */
5018 RET_LABEL:;
5019 }
5020 /* method model#MAttributeDef#static_mtype= for (self: Object, nullable MType) */
5021 void VIRTUAL_model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
5022 { /* Inline model#MAttributeDef#static_mtype= (self,p0) on <self:Object(MAttributeDef)> */
5023 self->attrs[COLOR_model__MAttributeDef___static_mtype].val = p0; /* _static_mtype on <self:Object(MAttributeDef)> */
5024 RET_LABEL1:(void)0;
5025 }
5026 RET_LABEL:;
5027 }
5028 /* method model#MVirtualTypeDef#init for (self: MVirtualTypeDef, MClassDef, MVirtualTypeProp, Location) */
5029 void model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
5030 short int var /* : Bool */;
5031 int cltype;
5032 int idtype;
5033 const struct type* type_struct;
5034 const char* var_class_name;
5035 val* var_mclassdef /* var mclassdef: MClassDef */;
5036 val* var_mproperty /* var mproperty: MVirtualTypeProp */;
5037 val* var_location /* var location: Location */;
5038 /* Covariant cast for argument 1 (mproperty) <p1:MVirtualTypeProp> isa MPROPERTY */
5039 /* <p1:MVirtualTypeProp> isa MPROPERTY */
5040 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
5041 cltype = type_struct->color;
5042 idtype = type_struct->id;
5043 if(cltype >= p1->type->table_size) {
5044 var = 0;
5045 } else {
5046 var = p1->type->type_table[cltype] == idtype;
5047 }
5048 if (unlikely(!var)) {
5049 var_class_name = p1 == NULL ? "null" : p1->type->name;
5050 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
5051 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1974);
5052 show_backtrace(1);
5053 }
5054 var_mclassdef = p0;
5055 var_mproperty = p1;
5056 var_location = p2;
5057 {
5058 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:MVirtualTypeDef>*/
5059 }
5060 RET_LABEL:;
5061 }
5062 /* method model#MVirtualTypeDef#init for (self: Object, MClassDef, MVirtualTypeProp, Location) */
5063 void VIRTUAL_model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
5064 model__MVirtualTypeDef__init(self, p0, p1, p2); /* Direct call model#MVirtualTypeDef#init on <self:Object(MVirtualTypeDef)>*/
5065 RET_LABEL:;
5066 }
5067 /* method model#MVirtualTypeDef#bound for (self: MVirtualTypeDef): nullable MType */
5068 val* model__MVirtualTypeDef__bound(val* self) {
5069 val* var /* : nullable MType */;
5070 val* var1 /* : nullable MType */;
5071 var1 = self->attrs[COLOR_model__MVirtualTypeDef___bound].val; /* _bound on <self:MVirtualTypeDef> */
5072 var = var1;
5073 RET_LABEL:;
5074 return var;
5075 }
5076 /* method model#MVirtualTypeDef#bound for (self: Object): nullable MType */
5077 val* VIRTUAL_model__MVirtualTypeDef__bound(val* self) {
5078 val* var /* : nullable MType */;
5079 val* var1 /* : nullable MType */;
5080 val* var3 /* : nullable MType */;
5081 { /* Inline model#MVirtualTypeDef#bound (self) on <self:Object(MVirtualTypeDef)> */
5082 var3 = self->attrs[COLOR_model__MVirtualTypeDef___bound].val; /* _bound on <self:Object(MVirtualTypeDef)> */
5083 var1 = var3;
5084 RET_LABEL2:(void)0;
5085 }
5086 var = var1;
5087 RET_LABEL:;
5088 return var;
5089 }
5090 /* method model#MVirtualTypeDef#bound= for (self: MVirtualTypeDef, nullable MType) */
5091 void model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
5092 self->attrs[COLOR_model__MVirtualTypeDef___bound].val = p0; /* _bound on <self:MVirtualTypeDef> */
5093 RET_LABEL:;
5094 }
5095 /* method model#MVirtualTypeDef#bound= for (self: Object, nullable MType) */
5096 void VIRTUAL_model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
5097 { /* Inline model#MVirtualTypeDef#bound= (self,p0) on <self:Object(MVirtualTypeDef)> */
5098 self->attrs[COLOR_model__MVirtualTypeDef___bound].val = p0; /* _bound on <self:Object(MVirtualTypeDef)> */
5099 RET_LABEL1:(void)0;
5100 }
5101 RET_LABEL:;
5102 }
5103 /* method model#MVirtualTypeDef#is_fixed for (self: MVirtualTypeDef): Bool */
5104 short int model__MVirtualTypeDef__is_fixed(val* self) {
5105 short int var /* : Bool */;
5106 short int var1 /* : Bool */;
5107 var1 = self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s; /* _is_fixed on <self:MVirtualTypeDef> */
5108 var = var1;
5109 RET_LABEL:;
5110 return var;
5111 }
5112 /* method model#MVirtualTypeDef#is_fixed for (self: Object): Bool */
5113 short int VIRTUAL_model__MVirtualTypeDef__is_fixed(val* self) {
5114 short int var /* : Bool */;
5115 short int var1 /* : Bool */;
5116 short int var3 /* : Bool */;
5117 { /* Inline model#MVirtualTypeDef#is_fixed (self) on <self:Object(MVirtualTypeDef)> */
5118 var3 = self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s; /* _is_fixed on <self:Object(MVirtualTypeDef)> */
5119 var1 = var3;
5120 RET_LABEL2:(void)0;
5121 }
5122 var = var1;
5123 RET_LABEL:;
5124 return var;
5125 }
5126 /* method model#MVirtualTypeDef#is_fixed= for (self: MVirtualTypeDef, Bool) */
5127 void model__MVirtualTypeDef__is_fixed_61d(val* self, short int p0) {
5128 self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s = p0; /* _is_fixed on <self:MVirtualTypeDef> */
5129 RET_LABEL:;
5130 }
5131 /* method model#MVirtualTypeDef#is_fixed= for (self: Object, Bool) */
5132 void VIRTUAL_model__MVirtualTypeDef__is_fixed_61d(val* self, short int p0) {
5133 { /* Inline model#MVirtualTypeDef#is_fixed= (self,p0) on <self:Object(MVirtualTypeDef)> */
5134 self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s = p0; /* _is_fixed on <self:Object(MVirtualTypeDef)> */
5135 RET_LABEL1:(void)0;
5136 }
5137 RET_LABEL:;
5138 }
5139 /* method model#MClassKind#to_s for (self: MClassKind): String */
5140 val* model__MClassKind__to_s(val* self) {
5141 val* var /* : String */;
5142 val* var1 /* : String */;
5143 var1 = self->attrs[COLOR_model__MClassKind___to_s].val; /* _to_s on <self:MClassKind> */
5144 if (unlikely(var1 == NULL)) {
5145 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
5146 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1997);
5147 show_backtrace(1);
5148 }
5149 var = var1;
5150 RET_LABEL:;
5151 return var;
5152 }
5153 /* method model#MClassKind#to_s for (self: Object): String */
5154 val* VIRTUAL_model__MClassKind__to_s(val* self) {
5155 val* var /* : String */;
5156 val* var1 /* : String */;
5157 val* var3 /* : String */;
5158 { /* Inline model#MClassKind#to_s (self) on <self:Object(MClassKind)> */
5159 var3 = self->attrs[COLOR_model__MClassKind___to_s].val; /* _to_s on <self:Object(MClassKind)> */
5160 if (unlikely(var3 == NULL)) {
5161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
5162 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1997);
5163 show_backtrace(1);
5164 }
5165 var1 = var3;
5166 RET_LABEL2:(void)0;
5167 }
5168 var = var1;
5169 RET_LABEL:;
5170 return var;
5171 }
5172 /* method model#MClassKind#to_s= for (self: MClassKind, String) */
5173 void model__MClassKind__to_s_61d(val* self, val* p0) {
5174 self->attrs[COLOR_model__MClassKind___to_s].val = p0; /* _to_s on <self:MClassKind> */
5175 RET_LABEL:;
5176 }
5177 /* method model#MClassKind#to_s= for (self: Object, String) */
5178 void VIRTUAL_model__MClassKind__to_s_61d(val* self, val* p0) {
5179 { /* Inline model#MClassKind#to_s= (self,p0) on <self:Object(MClassKind)> */
5180 self->attrs[COLOR_model__MClassKind___to_s].val = p0; /* _to_s on <self:Object(MClassKind)> */
5181 RET_LABEL1:(void)0;
5182 }
5183 RET_LABEL:;
5184 }
5185 /* method model#MClassKind#need_init for (self: MClassKind): Bool */
5186 short int model__MClassKind__need_init(val* self) {
5187 short int var /* : Bool */;
5188 short int var1 /* : Bool */;
5189 var1 = self->attrs[COLOR_model__MClassKind___need_init].s; /* _need_init on <self:MClassKind> */
5190 var = var1;
5191 RET_LABEL:;
5192 return var;
5193 }
5194 /* method model#MClassKind#need_init for (self: Object): Bool */
5195 short int VIRTUAL_model__MClassKind__need_init(val* self) {
5196 short int var /* : Bool */;
5197 short int var1 /* : Bool */;
5198 short int var3 /* : Bool */;
5199 { /* Inline model#MClassKind#need_init (self) on <self:Object(MClassKind)> */
5200 var3 = self->attrs[COLOR_model__MClassKind___need_init].s; /* _need_init on <self:Object(MClassKind)> */
5201 var1 = var3;
5202 RET_LABEL2:(void)0;
5203 }
5204 var = var1;
5205 RET_LABEL:;
5206 return var;
5207 }
5208 /* method model#MClassKind#need_init= for (self: MClassKind, Bool) */
5209 void model__MClassKind__need_init_61d(val* self, short int p0) {
5210 self->attrs[COLOR_model__MClassKind___need_init].s = p0; /* _need_init on <self:MClassKind> */
5211 RET_LABEL:;
5212 }
5213 /* method model#MClassKind#need_init= for (self: Object, Bool) */
5214 void VIRTUAL_model__MClassKind__need_init_61d(val* self, short int p0) {
5215 { /* Inline model#MClassKind#need_init= (self,p0) on <self:Object(MClassKind)> */
5216 self->attrs[COLOR_model__MClassKind___need_init].s = p0; /* _need_init on <self:Object(MClassKind)> */
5217 RET_LABEL1:(void)0;
5218 }
5219 RET_LABEL:;
5220 }
5221 /* method model#MClassKind#init for (self: MClassKind, String, Bool) */
5222 void model__MClassKind__init(val* self, val* p0, short int p1) {
5223 val* var_s /* var s: String */;
5224 short int var_need_init /* var need_init: Bool */;
5225 var_s = p0;
5226 var_need_init = p1;
5227 {
5228 { /* Inline model#MClassKind#to_s= (self,var_s) on <self:MClassKind> */
5229 self->attrs[COLOR_model__MClassKind___to_s].val = var_s; /* _to_s on <self:MClassKind> */
5230 RET_LABEL1:(void)0;
5231 }
5232 }
5233 {
5234 { /* Inline model#MClassKind#need_init= (self,var_need_init) on <self:MClassKind> */
5235 self->attrs[COLOR_model__MClassKind___need_init].s = var_need_init; /* _need_init on <self:MClassKind> */
5236 RET_LABEL2:(void)0;
5237 }
5238 }
5239 RET_LABEL:;
5240 }
5241 /* method model#MClassKind#init for (self: Object, String, Bool) */
5242 void VIRTUAL_model__MClassKind__init(val* self, val* p0, short int p1) {
5243 model__MClassKind__init(self, p0, p1); /* Direct call model#MClassKind#init on <self:Object(MClassKind)>*/
5244 RET_LABEL:;
5245 }
5246 /* method model#MClassKind#can_specialize for (self: MClassKind, MClassKind): Bool */
5247 short int model__MClassKind__can_specialize(val* self, val* p0) {
5248 short int var /* : Bool */;
5249 val* var_other /* var other: MClassKind */;
5250 val* var1 /* : MClassKind */;
5251 short int var2 /* : Bool */;
5252 short int var3 /* : Bool */;
5253 val* var_other5 /* var other: nullable Object */;
5254 short int var6 /* : Bool */;
5255 short int var8 /* : Bool */;
5256 short int var9 /* : Bool */;
5257 short int var10 /* : Bool */;
5258 val* var11 /* : MClassKind */;
5259 short int var12 /* : Bool */;
5260 short int var13 /* : Bool */;
5261 short int var15 /* : Bool */;
5262 short int var17 /* : Bool */;
5263 short int var_ /* var : Bool */;
5264 val* var18 /* : MClassKind */;
5265 short int var19 /* : Bool */;
5266 short int var20 /* : Bool */;
5267 short int var22 /* : Bool */;
5268 short int var24 /* : Bool */;
5269 short int var25 /* : Bool */;
5270 val* var26 /* : MClassKind */;
5271 short int var27 /* : Bool */;
5272 short int var28 /* : Bool */;
5273 short int var30 /* : Bool */;
5274 short int var32 /* : Bool */;
5275 short int var33 /* : Bool */;
5276 short int var34 /* : Bool */;
5277 short int var36 /* : Bool */;
5278 short int var38 /* : Bool */;
5279 short int var39 /* : Bool */;
5280 val* var40 /* : MClassKind */;
5281 short int var41 /* : Bool */;
5282 short int var42 /* : Bool */;
5283 short int var44 /* : Bool */;
5284 short int var46 /* : Bool */;
5285 short int var_47 /* var : Bool */;
5286 val* var48 /* : MClassKind */;
5287 short int var49 /* : Bool */;
5288 short int var50 /* : Bool */;
5289 short int var52 /* : Bool */;
5290 short int var54 /* : Bool */;
5291 short int var55 /* : Bool */;
5292 short int var56 /* : Bool */;
5293 var_other = p0;
5294 {
5295 var1 = model__Object__interface_kind(self);
5296 }
5297 {
5298 { /* Inline kernel#Object#== (var_other,var1) on <var_other:MClassKind> */
5299 var_other5 = var1;
5300 {
5301 { /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
5302 var8 = var_other == var_other5;
5303 var6 = var8;
5304 goto RET_LABEL7;
5305 RET_LABEL7:(void)0;
5306 }
5307 }
5308 var3 = var6;
5309 goto RET_LABEL4;
5310 RET_LABEL4:(void)0;
5311 }
5312 var2 = var3;
5313 }
5314 if (var2){
5315 var9 = 1;
5316 var = var9;
5317 goto RET_LABEL;
5318 } else {
5319 }
5320 {
5321 var11 = model__Object__interface_kind(self);
5322 }
5323 {
5324 { /* Inline kernel#Object#== (self,var11) on <self:MClassKind> */
5325 var_other5 = var11;
5326 {
5327 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
5328 var17 = self == var_other5;
5329 var15 = var17;
5330 goto RET_LABEL16;
5331 RET_LABEL16:(void)0;
5332 }
5333 }
5334 var13 = var15;
5335 goto RET_LABEL14;
5336 RET_LABEL14:(void)0;
5337 }
5338 var12 = var13;
5339 }
5340 var_ = var12;
5341 if (var12){
5342 var10 = var_;
5343 } else {
5344 {
5345 var18 = model__Object__enum_kind(self);
5346 }
5347 {
5348 { /* Inline kernel#Object#== (self,var18) on <self:MClassKind> */
5349 var_other5 = var18;
5350 {
5351 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
5352 var24 = self == var_other5;
5353 var22 = var24;
5354 goto RET_LABEL23;
5355 RET_LABEL23:(void)0;
5356 }
5357 }
5358 var20 = var22;
5359 goto RET_LABEL21;
5360 RET_LABEL21:(void)0;
5361 }
5362 var19 = var20;
5363 }
5364 var10 = var19;
5365 }
5366 if (var10){
5367 var25 = 0;
5368 var = var25;
5369 goto RET_LABEL;
5370 } else {
5371 {
5372 var26 = model__Object__extern_kind(self);
5373 }
5374 {
5375 { /* Inline kernel#Object#== (self,var26) on <self:MClassKind> */
5376 var_other5 = var26;
5377 {
5378 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
5379 var32 = self == var_other5;
5380 var30 = var32;
5381 goto RET_LABEL31;
5382 RET_LABEL31:(void)0;
5383 }
5384 }
5385 var28 = var30;
5386 goto RET_LABEL29;
5387 RET_LABEL29:(void)0;
5388 }
5389 var27 = var28;
5390 }
5391 if (var27){
5392 {
5393 { /* Inline kernel#Object#== (self,var_other) on <self:MClassKind> */
5394 var_other5 = var_other;
5395 {
5396 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
5397 var38 = self == var_other5;
5398 var36 = var38;
5399 goto RET_LABEL37;
5400 RET_LABEL37:(void)0;
5401 }
5402 }
5403 var34 = var36;
5404 goto RET_LABEL35;
5405 RET_LABEL35:(void)0;
5406 }
5407 var33 = var34;
5408 }
5409 var = var33;
5410 goto RET_LABEL;
5411 } else {
5412 {
5413 var40 = model__Object__enum_kind(self);
5414 }
5415 {
5416 { /* Inline kernel#Object#== (var_other,var40) on <var_other:MClassKind> */
5417 var_other5 = var40;
5418 {
5419 { /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
5420 var46 = var_other == var_other5;
5421 var44 = var46;
5422 goto RET_LABEL45;
5423 RET_LABEL45:(void)0;
5424 }
5425 }
5426 var42 = var44;
5427 goto RET_LABEL43;
5428 RET_LABEL43:(void)0;
5429 }
5430 var41 = var42;
5431 }
5432 var_47 = var41;
5433 if (var41){
5434 var39 = var_47;
5435 } else {
5436 {
5437 var48 = model__Object__extern_kind(self);
5438 }
5439 {
5440 { /* Inline kernel#Object#== (var_other,var48) on <var_other:MClassKind> */
5441 var_other5 = var48;
5442 {
5443 { /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
5444 var54 = var_other == var_other5;
5445 var52 = var54;
5446 goto RET_LABEL53;
5447 RET_LABEL53:(void)0;
5448 }
5449 }
5450 var50 = var52;
5451 goto RET_LABEL51;
5452 RET_LABEL51:(void)0;
5453 }
5454 var49 = var50;
5455 }
5456 var39 = var49;
5457 }
5458 if (var39){
5459 var55 = 0;
5460 var = var55;
5461 goto RET_LABEL;
5462 } else {
5463 }
5464 }
5465 }
5466 var56 = 1;
5467 var = var56;
5468 goto RET_LABEL;
5469 RET_LABEL:;
5470 return var;
5471 }
5472 /* method model#MClassKind#can_specialize for (self: Object, MClassKind): Bool */
5473 short int VIRTUAL_model__MClassKind__can_specialize(val* self, val* p0) {
5474 short int var /* : Bool */;
5475 short int var1 /* : Bool */;
5476 var1 = model__MClassKind__can_specialize(self, p0);
5477 var = var1;
5478 RET_LABEL:;
5479 return var;
5480 }
5481 /* method model#Object#abstract_kind for (self: Object): MClassKind */
5482 val* model__Object__abstract_kind(val* self) {
5483 val* var /* : MClassKind */;
5484 static val* varonce;
5485 static int varonce_guard;
5486 val* var1 /* : MClassKind */;
5487 val* var2 /* : MClassKind */;
5488 static val* varonce3;
5489 val* var4 /* : String */;
5490 char* var5 /* : NativeString */;
5491 long var6 /* : Int */;
5492 val* var7 /* : FlatString */;
5493 short int var8 /* : Bool */;
5494 if (varonce_guard) {
5495 var1 = varonce;
5496 } else {
5497 var2 = NEW_model__MClassKind(&type_model__MClassKind);
5498 if (varonce3) {
5499 var4 = varonce3;
5500 } else {
5501 var5 = "abstract class";
5502 var6 = 14;
5503 var7 = string__NativeString__to_s_with_length(var5, var6);
5504 var4 = var7;
5505 varonce3 = var4;
5506 }
5507 var8 = 1;
5508 {
5509 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
5510 }
5511 var1 = var2;
5512 varonce = var1;
5513 varonce_guard = 1;
5514 }
5515 var = var1;
5516 goto RET_LABEL;
5517 RET_LABEL:;
5518 return var;
5519 }
5520 /* method model#Object#abstract_kind for (self: Object): MClassKind */
5521 val* VIRTUAL_model__Object__abstract_kind(val* self) {
5522 val* var /* : MClassKind */;
5523 val* var1 /* : MClassKind */;
5524 var1 = model__Object__abstract_kind(self);
5525 var = var1;
5526 RET_LABEL:;
5527 return var;
5528 }
5529 /* method model#Object#concrete_kind for (self: Object): MClassKind */
5530 val* model__Object__concrete_kind(val* self) {
5531 val* var /* : MClassKind */;
5532 static val* varonce;
5533 static int varonce_guard;
5534 val* var1 /* : MClassKind */;
5535 val* var2 /* : MClassKind */;
5536 static val* varonce3;
5537 val* var4 /* : String */;
5538 char* var5 /* : NativeString */;
5539 long var6 /* : Int */;
5540 val* var7 /* : FlatString */;
5541 short int var8 /* : Bool */;
5542 if (varonce_guard) {
5543 var1 = varonce;
5544 } else {
5545 var2 = NEW_model__MClassKind(&type_model__MClassKind);
5546 if (varonce3) {
5547 var4 = varonce3;
5548 } else {
5549 var5 = "class";
5550 var6 = 5;
5551 var7 = string__NativeString__to_s_with_length(var5, var6);
5552 var4 = var7;
5553 varonce3 = var4;
5554 }
5555 var8 = 1;
5556 {
5557 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
5558 }
5559 var1 = var2;
5560 varonce = var1;
5561 varonce_guard = 1;
5562 }
5563 var = var1;
5564 goto RET_LABEL;
5565 RET_LABEL:;
5566 return var;
5567 }
5568 /* method model#Object#concrete_kind for (self: Object): MClassKind */
5569 val* VIRTUAL_model__Object__concrete_kind(val* self) {
5570 val* var /* : MClassKind */;
5571 val* var1 /* : MClassKind */;
5572 var1 = model__Object__concrete_kind(self);
5573 var = var1;
5574 RET_LABEL:;
5575 return var;
5576 }
5577 /* method model#Object#interface_kind for (self: Object): MClassKind */
5578 val* model__Object__interface_kind(val* self) {
5579 val* var /* : MClassKind */;
5580 static val* varonce;
5581 static int varonce_guard;
5582 val* var1 /* : MClassKind */;
5583 val* var2 /* : MClassKind */;
5584 static val* varonce3;
5585 val* var4 /* : String */;
5586 char* var5 /* : NativeString */;
5587 long var6 /* : Int */;
5588 val* var7 /* : FlatString */;
5589 short int var8 /* : Bool */;
5590 if (varonce_guard) {
5591 var1 = varonce;
5592 } else {
5593 var2 = NEW_model__MClassKind(&type_model__MClassKind);
5594 if (varonce3) {
5595 var4 = varonce3;
5596 } else {
5597 var5 = "interface";
5598 var6 = 9;
5599 var7 = string__NativeString__to_s_with_length(var5, var6);
5600 var4 = var7;
5601 varonce3 = var4;
5602 }
5603 var8 = 0;
5604 {
5605 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
5606 }
5607 var1 = var2;
5608 varonce = var1;
5609 varonce_guard = 1;
5610 }
5611 var = var1;
5612 goto RET_LABEL;
5613 RET_LABEL:;
5614 return var;
5615 }
5616 /* method model#Object#interface_kind for (self: Object): MClassKind */
5617 val* VIRTUAL_model__Object__interface_kind(val* self) {
5618 val* var /* : MClassKind */;
5619 val* var1 /* : MClassKind */;
5620 var1 = model__Object__interface_kind(self);
5621 var = var1;
5622 RET_LABEL:;
5623 return var;
5624 }
5625 /* method model#Object#enum_kind for (self: Object): MClassKind */
5626 val* model__Object__enum_kind(val* self) {
5627 val* var /* : MClassKind */;
5628 static val* varonce;
5629 static int varonce_guard;
5630 val* var1 /* : MClassKind */;
5631 val* var2 /* : MClassKind */;
5632 static val* varonce3;
5633 val* var4 /* : String */;
5634 char* var5 /* : NativeString */;
5635 long var6 /* : Int */;
5636 val* var7 /* : FlatString */;
5637 short int var8 /* : Bool */;
5638 if (varonce_guard) {
5639 var1 = varonce;
5640 } else {
5641 var2 = NEW_model__MClassKind(&type_model__MClassKind);
5642 if (varonce3) {
5643 var4 = varonce3;
5644 } else {
5645 var5 = "enum";
5646 var6 = 4;
5647 var7 = string__NativeString__to_s_with_length(var5, var6);
5648 var4 = var7;
5649 varonce3 = var4;
5650 }
5651 var8 = 0;
5652 {
5653 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
5654 }
5655 var1 = var2;
5656 varonce = var1;
5657 varonce_guard = 1;
5658 }
5659 var = var1;
5660 goto RET_LABEL;
5661 RET_LABEL:;
5662 return var;
5663 }
5664 /* method model#Object#enum_kind for (self: Object): MClassKind */
5665 val* VIRTUAL_model__Object__enum_kind(val* self) {
5666 val* var /* : MClassKind */;
5667 val* var1 /* : MClassKind */;
5668 var1 = model__Object__enum_kind(self);
5669 var = var1;
5670 RET_LABEL:;
5671 return var;
5672 }
5673 /* method model#Object#extern_kind for (self: Object): MClassKind */
5674 val* model__Object__extern_kind(val* self) {
5675 val* var /* : MClassKind */;
5676 static val* varonce;
5677 static int varonce_guard;
5678 val* var1 /* : MClassKind */;
5679 val* var2 /* : MClassKind */;
5680 static val* varonce3;
5681 val* var4 /* : String */;
5682 char* var5 /* : NativeString */;
5683 long var6 /* : Int */;
5684 val* var7 /* : FlatString */;
5685 short int var8 /* : Bool */;
5686 if (varonce_guard) {
5687 var1 = varonce;
5688 } else {
5689 var2 = NEW_model__MClassKind(&type_model__MClassKind);
5690 if (varonce3) {
5691 var4 = varonce3;
5692 } else {
5693 var5 = "extern class";
5694 var6 = 12;
5695 var7 = string__NativeString__to_s_with_length(var5, var6);
5696 var4 = var7;
5697 varonce3 = var4;
5698 }
5699 var8 = 0;
5700 {
5701 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
5702 }
5703 var1 = var2;
5704 varonce = var1;
5705 varonce_guard = 1;
5706 }
5707 var = var1;
5708 goto RET_LABEL;
5709 RET_LABEL:;
5710 return var;
5711 }
5712 /* method model#Object#extern_kind for (self: Object): MClassKind */
5713 val* VIRTUAL_model__Object__extern_kind(val* self) {
5714 val* var /* : MClassKind */;
5715 val* var1 /* : MClassKind */;
5716 var1 = model__Object__extern_kind(self);
5717 var = var1;
5718 RET_LABEL:;
5719 return var;
5720 }