nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / c_src / model.sep.2.c
1 #include "model.sep.0.h"
2 /* method model#MParameterType#resolve_for for (self: MParameterType, MType, nullable MClassType, MModule, Bool): MType */
3 val* model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4 val* var /* : MType */;
5 val* var_mtype /* var mtype: MType */;
6 val* var_anchor /* var anchor: nullable MClassType */;
7 val* var_mmodule /* var mmodule: MModule */;
8 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
9 short int var1 /* : Bool */;
10 short int var2 /* : Bool */;
11 short int var3 /* : Bool */;
12 int cltype;
13 int idtype;
14 short int var_ /* var : Bool */;
15 val* var4 /* : MClass */;
16 val* var6 /* : MClass */;
17 val* var7 /* : MClass */;
18 val* var9 /* : MClass */;
19 short int var10 /* : Bool */;
20 short int var11 /* : Bool */;
21 val* var_other /* var other: nullable Object */;
22 short int var13 /* : Bool */;
23 short int var15 /* : Bool */;
24 val* var16 /* : Array[MType] */;
25 val* var18 /* : Array[MType] */;
26 long var19 /* : Int */;
27 long var21 /* : Int */;
28 val* var22 /* : nullable Object */;
29 val* var_res /* var res: MType */;
30 short int var23 /* : Bool */;
31 val* var24 /* : null */;
32 short int var25 /* : Bool */;
33 short int var26 /* : Bool */;
34 val* var_other28 /* var other: nullable Object */;
35 short int var29 /* : Bool */;
36 short int var30 /* : Bool */;
37 short int var31 /* : Bool */;
38 short int var_32 /* var : Bool */;
39 short int var33 /* : Bool */;
40 val* var34 /* : MType */;
41 val* var_r2 /* var r2: MType */;
42 short int var35 /* : Bool */;
43 short int var36 /* : Bool */;
44 int cltype37;
45 int idtype38;
46 short int var_39 /* var : Bool */;
47 val* var40 /* : MClass */;
48 val* var42 /* : MClass */;
49 val* var43 /* : MClassKind */;
50 val* var45 /* : MClassKind */;
51 val* var46 /* : MClassKind */;
52 short int var47 /* : Bool */;
53 short int var48 /* : Bool */;
54 short int var50 /* : Bool */;
55 short int var52 /* : Bool */;
56 short int var53 /* : Bool */;
57 val* var54 /* : null */;
58 short int var55 /* : Bool */;
59 short int var56 /* : Bool */;
60 short int var58 /* : Bool */;
61 short int var59 /* : Bool */;
62 short int var60 /* : Bool */;
63 val* var61 /* : MClass */;
64 val* var63 /* : MClass */;
65 val* var64 /* : MClassType */;
66 val* var66 /* : MClassType */;
67 short int var67 /* : Bool */;
68 val* var68 /* : MType */;
69 val* var_resolved_receiver /* var resolved_receiver: nullable Object */;
70 short int var69 /* : Bool */;
71 int cltype70;
72 int idtype71;
73 val* var72 /* : MType */;
74 val* var74 /* : MType */;
75 short int var75 /* : Bool */;
76 int cltype76;
77 int idtype77;
78 val* var78 /* : MClass */;
79 val* var80 /* : MClass */;
80 val* var81 /* : MClass */;
81 val* var83 /* : MClass */;
82 short int var84 /* : Bool */;
83 short int var85 /* : Bool */;
84 short int var87 /* : Bool */;
85 short int var89 /* : Bool */;
86 val* var90 /* : Array[MType] */;
87 val* var92 /* : Array[MType] */;
88 long var93 /* : Int */;
89 long var95 /* : Int */;
90 val* var96 /* : nullable Object */;
91 short int var97 /* : Bool */;
92 int cltype98;
93 int idtype99;
94 val* var100 /* : MType */;
95 val* var102 /* : MType */;
96 short int var103 /* : Bool */;
97 int cltype104;
98 int idtype105;
99 val* var106 /* : MClass */;
100 val* var108 /* : MClass */;
101 val* var109 /* : MClass */;
102 val* var111 /* : MClass */;
103 short int var112 /* : Bool */;
104 short int var113 /* : Bool */;
105 short int var115 /* : Bool */;
106 short int var117 /* : Bool */;
107 val* var118 /* : Array[MType] */;
108 val* var120 /* : Array[MType] */;
109 long var121 /* : Int */;
110 long var123 /* : Int */;
111 val* var124 /* : nullable Object */;
112 val* var_res125 /* var res: MType */;
113 short int var126 /* : Bool */;
114 val* var127 /* : null */;
115 short int var128 /* : Bool */;
116 short int var129 /* : Bool */;
117 short int var131 /* : Bool */;
118 short int var132 /* : Bool */;
119 short int var133 /* : Bool */;
120 val* var134 /* : null */;
121 short int var135 /* : Bool */;
122 val* var136 /* : MType */;
123 val* var137 /* : MType */;
124 val* var_verbatim_bound /* var verbatim_bound: MType */;
125 val* var138 /* : MType */;
126 val* var_res139 /* var res: MType */;
127 var_mtype = p0;
128 var_anchor = p1;
129 var_mmodule = p2;
130 var_cleanup_virtual = p3;
131 {
132 var1 = model__MParameterType__can_resolve_for(self, var_mtype, var_anchor, var_mmodule);
133 }
134 if (unlikely(!var1)) {
135 PRINT_ERROR("Runtime error: %s", "Assert failed");
136 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1313);
137 show_backtrace(1);
138 }
139 /* <var_mtype:MType> isa MGenericType */
140 cltype = type_model__MGenericType.color;
141 idtype = type_model__MGenericType.id;
142 if(cltype >= var_mtype->type->table_size) {
143 var3 = 0;
144 } else {
145 var3 = var_mtype->type->type_table[cltype] == idtype;
146 }
147 var_ = var3;
148 if (var3){
149 {
150 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MGenericType)> */
151 var6 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MGenericType)> */
152 if (unlikely(var6 == NULL)) {
153 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
154 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
155 show_backtrace(1);
156 }
157 var4 = var6;
158 RET_LABEL5:(void)0;
159 }
160 }
161 {
162 { /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
163 var9 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
164 if (unlikely(var9 == NULL)) {
165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
166 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
167 show_backtrace(1);
168 }
169 var7 = var9;
170 RET_LABEL8:(void)0;
171 }
172 }
173 {
174 { /* Inline kernel#Object#== (var4,var7) on <var4:MClass> */
175 var_other = var7;
176 {
177 { /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MClass> */
178 var15 = var4 == var_other;
179 var13 = var15;
180 goto RET_LABEL14;
181 RET_LABEL14:(void)0;
182 }
183 }
184 var11 = var13;
185 goto RET_LABEL12;
186 RET_LABEL12:(void)0;
187 }
188 var10 = var11;
189 }
190 var2 = var10;
191 } else {
192 var2 = var_;
193 }
194 if (var2){
195 {
196 { /* Inline model#MClassType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
197 var18 = var_mtype->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
198 if (unlikely(var18 == NULL)) {
199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
200 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
201 show_backtrace(1);
202 }
203 var16 = var18;
204 RET_LABEL17:(void)0;
205 }
206 }
207 {
208 { /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
209 var21 = self->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
210 var19 = var21;
211 RET_LABEL20:(void)0;
212 }
213 }
214 {
215 var22 = array__Array___91d_93d(var16, var19);
216 }
217 var_res = var22;
218 var24 = NULL;
219 if (var_anchor == NULL) {
220 var25 = 0; /* is null */
221 } else {
222 var25 = 1; /* arg is null and recv is not */
223 }
224 if (0) {
225 { /* Inline kernel#Object#!= (var_anchor,var24) on <var_anchor:nullable MClassType> */
226 var_other28 = var24;
227 {
228 var30 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other28) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
229 var29 = var30;
230 }
231 var31 = !var29;
232 var26 = var31;
233 goto RET_LABEL27;
234 RET_LABEL27:(void)0;
235 }
236 var25 = var26;
237 }
238 var_32 = var25;
239 if (var25){
240 {
241 var33 = ((short int (*)(val*))(var_res->class->vft[COLOR_model__MType__need_anchor]))(var_res) /* need_anchor on <var_res:MType>*/;
242 }
243 var23 = var33;
244 } else {
245 var23 = var_32;
246 }
247 if (var23){
248 {
249 var34 = ((val* (*)(val*, val*, val*))(var_res->class->vft[COLOR_model__MType__anchor_to]))(var_res, var_mmodule, var_anchor) /* anchor_to on <var_res:MType>*/;
250 }
251 var_r2 = var34;
252 /* <var_r2:MType> isa MClassType */
253 cltype37 = type_model__MClassType.color;
254 idtype38 = type_model__MClassType.id;
255 if(cltype37 >= var_r2->type->table_size) {
256 var36 = 0;
257 } else {
258 var36 = var_r2->type->type_table[cltype37] == idtype38;
259 }
260 var_39 = var36;
261 if (var36){
262 {
263 { /* Inline model#MClassType#mclass (var_r2) on <var_r2:MType(MClassType)> */
264 var42 = var_r2->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_r2:MType(MClassType)> */
265 if (unlikely(var42 == NULL)) {
266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
267 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
268 show_backtrace(1);
269 }
270 var40 = var42;
271 RET_LABEL41:(void)0;
272 }
273 }
274 {
275 { /* Inline model#MClass#kind (var40) on <var40:MClass> */
276 var45 = var40->attrs[COLOR_model__MClass___kind].val; /* _kind on <var40:MClass> */
277 if (unlikely(var45 == NULL)) {
278 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
279 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
280 show_backtrace(1);
281 }
282 var43 = var45;
283 RET_LABEL44:(void)0;
284 }
285 }
286 {
287 var46 = model__Object__enum_kind(self);
288 }
289 {
290 { /* Inline kernel#Object#== (var43,var46) on <var43:MClassKind> */
291 var_other = var46;
292 {
293 { /* Inline kernel#Object#is_same_instance (var43,var_other) on <var43:MClassKind> */
294 var52 = var43 == var_other;
295 var50 = var52;
296 goto RET_LABEL51;
297 RET_LABEL51:(void)0;
298 }
299 }
300 var48 = var50;
301 goto RET_LABEL49;
302 RET_LABEL49:(void)0;
303 }
304 var47 = var48;
305 }
306 var35 = var47;
307 } else {
308 var35 = var_39;
309 }
310 if (var35){
311 var = var_r2;
312 goto RET_LABEL;
313 } else {
314 }
315 } else {
316 }
317 var = var_res;
318 goto RET_LABEL;
319 } else {
320 }
321 {
322 var53 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
323 }
324 if (var53){
325 var54 = NULL;
326 if (var_anchor == NULL) {
327 var55 = 0; /* is null */
328 } else {
329 var55 = 1; /* arg is null and recv is not */
330 }
331 if (0) {
332 { /* Inline kernel#Object#!= (var_anchor,var54) on <var_anchor:nullable MClassType> */
333 var_other28 = var54;
334 {
335 var59 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other28) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
336 var58 = var59;
337 }
338 var60 = !var58;
339 var56 = var60;
340 goto RET_LABEL57;
341 RET_LABEL57:(void)0;
342 }
343 var55 = var56;
344 }
345 if (unlikely(!var55)) {
346 PRINT_ERROR("Runtime error: %s", "Assert failed");
347 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1332);
348 show_backtrace(1);
349 }
350 {
351 { /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType(MClassType)> */
352 var63 = var_anchor->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType(MClassType)> */
353 if (unlikely(var63 == NULL)) {
354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
355 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
356 show_backtrace(1);
357 }
358 var61 = var63;
359 RET_LABEL62:(void)0;
360 }
361 }
362 {
363 { /* Inline model#MClass#mclass_type (var61) on <var61:MClass> */
364 var66 = var61->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var61:MClass> */
365 if (unlikely(var66 == NULL)) {
366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
367 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
368 show_backtrace(1);
369 }
370 var64 = var66;
371 RET_LABEL65:(void)0;
372 }
373 }
374 var67 = 1;
375 {
376 var68 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var64, var_anchor, var_mmodule, var67) /* resolve_for on <var_mtype:MType>*/;
377 }
378 var_resolved_receiver = var68;
379 } else {
380 var_resolved_receiver = var_mtype;
381 }
382 /* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
383 cltype70 = type_model__MNullableType.color;
384 idtype71 = type_model__MNullableType.id;
385 if(cltype70 >= var_resolved_receiver->type->table_size) {
386 var69 = 0;
387 } else {
388 var69 = var_resolved_receiver->type->type_table[cltype70] == idtype71;
389 }
390 if (var69){
391 {
392 { /* Inline model#MNullableType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
393 var74 = var_resolved_receiver->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
394 if (unlikely(var74 == NULL)) {
395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
396 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
397 show_backtrace(1);
398 }
399 var72 = var74;
400 RET_LABEL73:(void)0;
401 }
402 }
403 var_resolved_receiver = var72;
404 } else {
405 }
406 /* <var_resolved_receiver:nullable Object(MType)> isa MParameterType */
407 cltype76 = type_model__MParameterType.color;
408 idtype77 = type_model__MParameterType.id;
409 if(cltype76 >= var_resolved_receiver->type->table_size) {
410 var75 = 0;
411 } else {
412 var75 = var_resolved_receiver->type->type_table[cltype76] == idtype77;
413 }
414 if (var75){
415 {
416 { /* Inline model#MParameterType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
417 var80 = var_resolved_receiver->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MParameterType)> */
418 if (unlikely(var80 == NULL)) {
419 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
420 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
421 show_backtrace(1);
422 }
423 var78 = var80;
424 RET_LABEL79:(void)0;
425 }
426 }
427 if (var_anchor == NULL) {
428 PRINT_ERROR("Runtime error: %s", "Receiver is null");
429 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1339);
430 show_backtrace(1);
431 } else {
432 { /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType> */
433 if (unlikely(var_anchor == NULL)) {
434 PRINT_ERROR("Runtime error: %s", "Receiver is null");
435 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
436 show_backtrace(1);
437 }
438 var83 = var_anchor->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType> */
439 if (unlikely(var83 == NULL)) {
440 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
441 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
442 show_backtrace(1);
443 }
444 var81 = var83;
445 RET_LABEL82:(void)0;
446 }
447 }
448 {
449 { /* Inline kernel#Object#== (var78,var81) on <var78:MClass> */
450 var_other = var81;
451 {
452 { /* Inline kernel#Object#is_same_instance (var78,var_other) on <var78:MClass> */
453 var89 = var78 == var_other;
454 var87 = var89;
455 goto RET_LABEL88;
456 RET_LABEL88:(void)0;
457 }
458 }
459 var85 = var87;
460 goto RET_LABEL86;
461 RET_LABEL86:(void)0;
462 }
463 var84 = var85;
464 }
465 if (unlikely(!var84)) {
466 PRINT_ERROR("Runtime error: %s", "Assert failed");
467 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1339);
468 show_backtrace(1);
469 }
470 if (var_anchor == NULL) {
471 PRINT_ERROR("Runtime error: %s", "Receiver is null");
472 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1340);
473 show_backtrace(1);
474 } else {
475 { /* Inline model#MClassType#arguments (var_anchor) on <var_anchor:nullable MClassType> */
476 if (unlikely(var_anchor == NULL)) {
477 PRINT_ERROR("Runtime error: %s", "Receiver is null");
478 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
479 show_backtrace(1);
480 }
481 var92 = var_anchor->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_anchor:nullable MClassType> */
482 if (unlikely(var92 == NULL)) {
483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
484 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
485 show_backtrace(1);
486 }
487 var90 = var92;
488 RET_LABEL91:(void)0;
489 }
490 }
491 {
492 { /* Inline model#MParameterType#rank (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
493 var95 = var_resolved_receiver->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <var_resolved_receiver:nullable Object(MParameterType)> */
494 var93 = var95;
495 RET_LABEL94:(void)0;
496 }
497 }
498 {
499 var96 = array__Array___91d_93d(var90, var93);
500 }
501 var_resolved_receiver = var96;
502 /* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
503 cltype98 = type_model__MNullableType.color;
504 idtype99 = type_model__MNullableType.id;
505 if(cltype98 >= var_resolved_receiver->type->table_size) {
506 var97 = 0;
507 } else {
508 var97 = var_resolved_receiver->type->type_table[cltype98] == idtype99;
509 }
510 if (var97){
511 {
512 { /* Inline model#MNullableType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
513 var102 = var_resolved_receiver->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
514 if (unlikely(var102 == NULL)) {
515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
516 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
517 show_backtrace(1);
518 }
519 var100 = var102;
520 RET_LABEL101:(void)0;
521 }
522 }
523 var_resolved_receiver = var100;
524 } else {
525 }
526 } else {
527 }
528 /* <var_resolved_receiver:nullable Object(MType)> isa MClassType */
529 cltype104 = type_model__MClassType.color;
530 idtype105 = type_model__MClassType.id;
531 if(cltype104 >= var_resolved_receiver->type->table_size) {
532 var103 = 0;
533 } else {
534 var103 = var_resolved_receiver->type->type_table[cltype104] == idtype105;
535 }
536 if (unlikely(!var103)) {
537 PRINT_ERROR("Runtime error: %s", "Assert failed");
538 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1343);
539 show_backtrace(1);
540 }
541 {
542 { /* Inline model#MClassType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MClassType)> */
543 var108 = var_resolved_receiver->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MClassType)> */
544 if (unlikely(var108 == NULL)) {
545 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
546 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
547 show_backtrace(1);
548 }
549 var106 = var108;
550 RET_LABEL107:(void)0;
551 }
552 }
553 {
554 { /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
555 var111 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
556 if (unlikely(var111 == NULL)) {
557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
558 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
559 show_backtrace(1);
560 }
561 var109 = var111;
562 RET_LABEL110:(void)0;
563 }
564 }
565 {
566 { /* Inline kernel#Object#== (var106,var109) on <var106:MClass> */
567 var_other = var109;
568 {
569 { /* Inline kernel#Object#is_same_instance (var106,var_other) on <var106:MClass> */
570 var117 = var106 == var_other;
571 var115 = var117;
572 goto RET_LABEL116;
573 RET_LABEL116:(void)0;
574 }
575 }
576 var113 = var115;
577 goto RET_LABEL114;
578 RET_LABEL114:(void)0;
579 }
580 var112 = var113;
581 }
582 if (var112){
583 {
584 { /* Inline model#MClassType#arguments (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MClassType)> */
585 var120 = var_resolved_receiver->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_resolved_receiver:nullable Object(MClassType)> */
586 if (unlikely(var120 == NULL)) {
587 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
588 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
589 show_backtrace(1);
590 }
591 var118 = var120;
592 RET_LABEL119:(void)0;
593 }
594 }
595 {
596 { /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
597 var123 = self->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
598 var121 = var123;
599 RET_LABEL122:(void)0;
600 }
601 }
602 {
603 var124 = array__Array___91d_93d(var118, var121);
604 }
605 var_res125 = var124;
606 var = var_res125;
607 goto RET_LABEL;
608 } else {
609 }
610 {
611 var126 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:nullable Object(MClassType)>*/;
612 }
613 if (var126){
614 var127 = NULL;
615 if (var_anchor == NULL) {
616 var128 = 0; /* is null */
617 } else {
618 var128 = 1; /* arg is null and recv is not */
619 }
620 if (0) {
621 { /* Inline kernel#Object#!= (var_anchor,var127) on <var_anchor:nullable MClassType> */
622 var_other28 = var127;
623 {
624 var132 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other28) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
625 var131 = var132;
626 }
627 var133 = !var131;
628 var129 = var133;
629 goto RET_LABEL130;
630 RET_LABEL130:(void)0;
631 }
632 var128 = var129;
633 }
634 if (unlikely(!var128)) {
635 PRINT_ERROR("Runtime error: %s", "Assert failed");
636 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1354);
637 show_backtrace(1);
638 }
639 var134 = NULL;
640 var135 = 0;
641 {
642 var136 = ((val* (*)(val*, val*, val*, val*, short int))(var_resolved_receiver->class->vft[COLOR_model__MType__resolve_for]))(var_resolved_receiver, var_anchor, var134, var_mmodule, var135) /* resolve_for on <var_resolved_receiver:nullable Object(MClassType)>*/;
643 }
644 var_resolved_receiver = var136;
645 } else {
646 }
647 {
648 var137 = model__MParameterType__lookup_bound(self, var_mmodule, var_resolved_receiver);
649 }
650 var_verbatim_bound = var137;
651 {
652 var138 = ((val* (*)(val*, val*, val*, val*, short int))(var_verbatim_bound->class->vft[COLOR_model__MType__resolve_for]))(var_verbatim_bound, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_verbatim_bound:MType>*/;
653 }
654 var_res139 = var138;
655 var = var_res139;
656 goto RET_LABEL;
657 RET_LABEL:;
658 return var;
659 }
660 /* method model#MParameterType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
661 val* VIRTUAL_model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
662 val* var /* : MType */;
663 val* var1 /* : MType */;
664 var1 = model__MParameterType__resolve_for(self, p0, p1, p2, p3);
665 var = var1;
666 RET_LABEL:;
667 return var;
668 }
669 /* method model#MParameterType#can_resolve_for for (self: MParameterType, MType, nullable MClassType, MModule): Bool */
670 short int model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
671 short int var /* : Bool */;
672 val* var_mtype /* var mtype: MType */;
673 val* var_anchor /* var anchor: nullable MClassType */;
674 val* var_mmodule /* var mmodule: MModule */;
675 short int var1 /* : Bool */;
676 val* var2 /* : null */;
677 short int var3 /* : Bool */;
678 short int var4 /* : Bool */;
679 val* var_other /* var other: nullable Object */;
680 short int var6 /* : Bool */;
681 short int var7 /* : Bool */;
682 short int var8 /* : Bool */;
683 val* var9 /* : MType */;
684 val* var10 /* : Set[MClassDef] */;
685 val* var11 /* : MClass */;
686 val* var13 /* : MClass */;
687 val* var14 /* : MClassDef */;
688 val* var16 /* : MClassDef */;
689 short int var17 /* : Bool */;
690 var_mtype = p0;
691 var_anchor = p1;
692 var_mmodule = p2;
693 {
694 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
695 }
696 if (var1){
697 var2 = NULL;
698 if (var_anchor == NULL) {
699 var3 = 0; /* is null */
700 } else {
701 var3 = 1; /* arg is null and recv is not */
702 }
703 if (0) {
704 { /* Inline kernel#Object#!= (var_anchor,var2) on <var_anchor:nullable MClassType> */
705 var_other = var2;
706 {
707 var7 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
708 var6 = var7;
709 }
710 var8 = !var6;
711 var4 = var8;
712 goto RET_LABEL5;
713 RET_LABEL5:(void)0;
714 }
715 var3 = var4;
716 }
717 if (unlikely(!var3)) {
718 PRINT_ERROR("Runtime error: %s", "Assert failed");
719 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1370);
720 show_backtrace(1);
721 }
722 {
723 var9 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
724 }
725 var_mtype = var9;
726 } else {
727 }
728 {
729 var10 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var_mmodule) /* collect_mclassdefs on <var_mtype:MType>*/;
730 }
731 {
732 { /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
733 var13 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
734 if (unlikely(var13 == NULL)) {
735 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
736 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
737 show_backtrace(1);
738 }
739 var11 = var13;
740 RET_LABEL12:(void)0;
741 }
742 }
743 {
744 { /* Inline model#MClass#intro (var11) on <var11:MClass> */
745 var16 = var11->attrs[COLOR_model__MClass___intro].val; /* _intro on <var11:MClass> */
746 if (unlikely(var16 == NULL)) {
747 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
748 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420);
749 show_backtrace(1);
750 }
751 var14 = var16;
752 RET_LABEL15:(void)0;
753 }
754 }
755 {
756 var17 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__Collection__has]))(var10, var14) /* has on <var10:Set[MClassDef]>*/;
757 }
758 var = var17;
759 goto RET_LABEL;
760 RET_LABEL:;
761 return var;
762 }
763 /* method model#MParameterType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
764 short int VIRTUAL_model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
765 short int var /* : Bool */;
766 short int var1 /* : Bool */;
767 var1 = model__MParameterType__can_resolve_for(self, p0, p1, p2);
768 var = var1;
769 RET_LABEL:;
770 return var;
771 }
772 /* method model#MParameterType#init for (self: MParameterType, MClass, Int, String) */
773 void model__MParameterType__init(val* self, val* p0, long p1, val* p2) {
774 val* var_mclass /* var mclass: MClass */;
775 long var_rank /* var rank: Int */;
776 val* var_name /* var name: String */;
777 {
778 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MParameterType>*/;
779 }
780 var_mclass = p0;
781 var_rank = p1;
782 var_name = p2;
783 {
784 { /* Inline model#MParameterType#mclass= (self,var_mclass) on <self:MParameterType> */
785 self->attrs[COLOR_model__MParameterType___mclass].val = var_mclass; /* _mclass on <self:MParameterType> */
786 RET_LABEL1:(void)0;
787 }
788 }
789 {
790 { /* Inline model#MParameterType#rank= (self,var_rank) on <self:MParameterType> */
791 self->attrs[COLOR_model__MParameterType___rank].l = var_rank; /* _rank on <self:MParameterType> */
792 RET_LABEL2:(void)0;
793 }
794 }
795 {
796 { /* Inline model#MParameterType#name= (self,var_name) on <self:MParameterType> */
797 self->attrs[COLOR_model__MParameterType___name].val = var_name; /* _name on <self:MParameterType> */
798 RET_LABEL3:(void)0;
799 }
800 }
801 RET_LABEL:;
802 }
803 /* method model#MParameterType#init for (self: Object, MClass, Int, String) */
804 void VIRTUAL_model__MParameterType__init(val* self, val* p0, long p1, val* p2) {
805 model__MParameterType__init(self, p0, p1, p2); /* Direct call model#MParameterType#init on <self:Object(MParameterType)>*/
806 RET_LABEL:;
807 }
808 /* method model#MNullableType#mtype for (self: MNullableType): MType */
809 val* model__MNullableType__mtype(val* self) {
810 val* var /* : MType */;
811 val* var1 /* : MType */;
812 var1 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
813 if (unlikely(var1 == NULL)) {
814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
815 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
816 show_backtrace(1);
817 }
818 var = var1;
819 RET_LABEL:;
820 return var;
821 }
822 /* method model#MNullableType#mtype for (self: Object): MType */
823 val* VIRTUAL_model__MNullableType__mtype(val* self) {
824 val* var /* : MType */;
825 val* var1 /* : MType */;
826 val* var3 /* : MType */;
827 { /* Inline model#MNullableType#mtype (self) on <self:Object(MNullableType)> */
828 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:Object(MNullableType)> */
829 if (unlikely(var3 == NULL)) {
830 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
831 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
832 show_backtrace(1);
833 }
834 var1 = var3;
835 RET_LABEL2:(void)0;
836 }
837 var = var1;
838 RET_LABEL:;
839 return var;
840 }
841 /* method model#MNullableType#mtype= for (self: MNullableType, MType) */
842 void model__MNullableType__mtype_61d(val* self, val* p0) {
843 self->attrs[COLOR_model__MNullableType___mtype].val = p0; /* _mtype on <self:MNullableType> */
844 RET_LABEL:;
845 }
846 /* method model#MNullableType#mtype= for (self: Object, MType) */
847 void VIRTUAL_model__MNullableType__mtype_61d(val* self, val* p0) {
848 { /* Inline model#MNullableType#mtype= (self,p0) on <self:Object(MNullableType)> */
849 self->attrs[COLOR_model__MNullableType___mtype].val = p0; /* _mtype on <self:Object(MNullableType)> */
850 RET_LABEL1:(void)0;
851 }
852 RET_LABEL:;
853 }
854 /* method model#MNullableType#model for (self: MNullableType): Model */
855 val* model__MNullableType__model(val* self) {
856 val* var /* : Model */;
857 val* var1 /* : MType */;
858 val* var3 /* : MType */;
859 val* var4 /* : Model */;
860 {
861 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
862 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
863 if (unlikely(var3 == NULL)) {
864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
865 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
866 show_backtrace(1);
867 }
868 var1 = var3;
869 RET_LABEL2:(void)0;
870 }
871 }
872 {
873 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MEntity__model]))(var1) /* model on <var1:MType>*/;
874 }
875 var = var4;
876 goto RET_LABEL;
877 RET_LABEL:;
878 return var;
879 }
880 /* method model#MNullableType#model for (self: Object): Model */
881 val* VIRTUAL_model__MNullableType__model(val* self) {
882 val* var /* : Model */;
883 val* var1 /* : Model */;
884 var1 = model__MNullableType__model(self);
885 var = var1;
886 RET_LABEL:;
887 return var;
888 }
889 /* method model#MNullableType#init for (self: MNullableType, MType) */
890 void model__MNullableType__init(val* self, val* p0) {
891 val* var_mtype /* var mtype: MType */;
892 static val* varonce;
893 val* var /* : String */;
894 char* var2 /* : NativeString */;
895 long var3 /* : Int */;
896 val* var4 /* : FlatString */;
897 val* var5 /* : Array[Object] */;
898 long var6 /* : Int */;
899 val* var7 /* : NativeArray[Object] */;
900 val* var8 /* : String */;
901 {
902 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MNullableType>*/;
903 }
904 var_mtype = p0;
905 {
906 { /* Inline model#MNullableType#mtype= (self,var_mtype) on <self:MNullableType> */
907 self->attrs[COLOR_model__MNullableType___mtype].val = var_mtype; /* _mtype on <self:MNullableType> */
908 RET_LABEL1:(void)0;
909 }
910 }
911 if (varonce) {
912 var = varonce;
913 } else {
914 var2 = "nullable ";
915 var3 = 9;
916 var4 = string__NativeString__to_s_with_length(var2, var3);
917 var = var4;
918 varonce = var;
919 }
920 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
921 { /* var5 = array_instance Array[Object] */
922 var6 = 2;
923 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
924 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
925 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var_mtype;
926 {
927 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
928 }
929 }
930 {
931 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
932 }
933 {
934 { /* Inline model#MNullableType#to_s= (self,var8) on <self:MNullableType> */
935 self->attrs[COLOR_model__MNullableType___to_s].val = var8; /* _to_s on <self:MNullableType> */
936 RET_LABEL9:(void)0;
937 }
938 }
939 RET_LABEL:;
940 }
941 /* method model#MNullableType#init for (self: Object, MType) */
942 void VIRTUAL_model__MNullableType__init(val* self, val* p0) {
943 model__MNullableType__init(self, p0); /* Direct call model#MNullableType#init on <self:Object(MNullableType)>*/
944 RET_LABEL:;
945 }
946 /* method model#MNullableType#to_s for (self: MNullableType): String */
947 val* model__MNullableType__to_s(val* self) {
948 val* var /* : String */;
949 val* var1 /* : String */;
950 var1 = self->attrs[COLOR_model__MNullableType___to_s].val; /* _to_s on <self:MNullableType> */
951 if (unlikely(var1 == NULL)) {
952 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
953 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1399);
954 show_backtrace(1);
955 }
956 var = var1;
957 RET_LABEL:;
958 return var;
959 }
960 /* method model#MNullableType#to_s for (self: Object): String */
961 val* VIRTUAL_model__MNullableType__to_s(val* self) {
962 val* var /* : String */;
963 val* var1 /* : String */;
964 val* var3 /* : String */;
965 { /* Inline model#MNullableType#to_s (self) on <self:Object(MNullableType)> */
966 var3 = self->attrs[COLOR_model__MNullableType___to_s].val; /* _to_s on <self:Object(MNullableType)> */
967 if (unlikely(var3 == NULL)) {
968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
969 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1399);
970 show_backtrace(1);
971 }
972 var1 = var3;
973 RET_LABEL2:(void)0;
974 }
975 var = var1;
976 RET_LABEL:;
977 return var;
978 }
979 /* method model#MNullableType#to_s= for (self: MNullableType, String) */
980 void model__MNullableType__to_s_61d(val* self, val* p0) {
981 self->attrs[COLOR_model__MNullableType___to_s].val = p0; /* _to_s on <self:MNullableType> */
982 RET_LABEL:;
983 }
984 /* method model#MNullableType#to_s= for (self: Object, String) */
985 void VIRTUAL_model__MNullableType__to_s_61d(val* self, val* p0) {
986 { /* Inline model#MNullableType#to_s= (self,p0) on <self:Object(MNullableType)> */
987 self->attrs[COLOR_model__MNullableType___to_s].val = p0; /* _to_s on <self:Object(MNullableType)> */
988 RET_LABEL1:(void)0;
989 }
990 RET_LABEL:;
991 }
992 /* method model#MNullableType#need_anchor for (self: MNullableType): Bool */
993 short int model__MNullableType__need_anchor(val* self) {
994 short int var /* : Bool */;
995 val* var1 /* : MType */;
996 val* var3 /* : MType */;
997 short int var4 /* : Bool */;
998 {
999 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1000 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1001 if (unlikely(var3 == NULL)) {
1002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1003 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1004 show_backtrace(1);
1005 }
1006 var1 = var3;
1007 RET_LABEL2:(void)0;
1008 }
1009 }
1010 {
1011 var4 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
1012 }
1013 var = var4;
1014 goto RET_LABEL;
1015 RET_LABEL:;
1016 return var;
1017 }
1018 /* method model#MNullableType#need_anchor for (self: Object): Bool */
1019 short int VIRTUAL_model__MNullableType__need_anchor(val* self) {
1020 short int var /* : Bool */;
1021 short int var1 /* : Bool */;
1022 var1 = model__MNullableType__need_anchor(self);
1023 var = var1;
1024 RET_LABEL:;
1025 return var;
1026 }
1027 /* method model#MNullableType#as_nullable for (self: MNullableType): MType */
1028 val* model__MNullableType__as_nullable(val* self) {
1029 val* var /* : MType */;
1030 var = self;
1031 goto RET_LABEL;
1032 RET_LABEL:;
1033 return var;
1034 }
1035 /* method model#MNullableType#as_nullable for (self: Object): MType */
1036 val* VIRTUAL_model__MNullableType__as_nullable(val* self) {
1037 val* var /* : MType */;
1038 val* var1 /* : MType */;
1039 var1 = model__MNullableType__as_nullable(self);
1040 var = var1;
1041 RET_LABEL:;
1042 return var;
1043 }
1044 /* method model#MNullableType#as_notnullable for (self: MNullableType): MType */
1045 val* model__MNullableType__as_notnullable(val* self) {
1046 val* var /* : MType */;
1047 val* var1 /* : MType */;
1048 val* var3 /* : MType */;
1049 {
1050 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1051 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1052 if (unlikely(var3 == NULL)) {
1053 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1054 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1055 show_backtrace(1);
1056 }
1057 var1 = var3;
1058 RET_LABEL2:(void)0;
1059 }
1060 }
1061 var = var1;
1062 goto RET_LABEL;
1063 RET_LABEL:;
1064 return var;
1065 }
1066 /* method model#MNullableType#as_notnullable for (self: Object): MType */
1067 val* VIRTUAL_model__MNullableType__as_notnullable(val* self) {
1068 val* var /* : MType */;
1069 val* var1 /* : MType */;
1070 var1 = model__MNullableType__as_notnullable(self);
1071 var = var1;
1072 RET_LABEL:;
1073 return var;
1074 }
1075 /* method model#MNullableType#resolve_for for (self: MNullableType, MType, nullable MClassType, MModule, Bool): MType */
1076 val* model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1077 val* var /* : MType */;
1078 val* var_mtype /* var mtype: MType */;
1079 val* var_anchor /* var anchor: nullable MClassType */;
1080 val* var_mmodule /* var mmodule: MModule */;
1081 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
1082 val* var1 /* : MType */;
1083 val* var3 /* : MType */;
1084 val* var4 /* : MType */;
1085 val* var_res /* var res: MType */;
1086 val* var5 /* : MType */;
1087 var_mtype = p0;
1088 var_anchor = p1;
1089 var_mmodule = p2;
1090 var_cleanup_virtual = p3;
1091 {
1092 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1093 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1094 if (unlikely(var3 == NULL)) {
1095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1096 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1097 show_backtrace(1);
1098 }
1099 var1 = var3;
1100 RET_LABEL2:(void)0;
1101 }
1102 }
1103 {
1104 var4 = ((val* (*)(val*, val*, val*, val*, short int))(var1->class->vft[COLOR_model__MType__resolve_for]))(var1, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var1:MType>*/;
1105 }
1106 var_res = var4;
1107 {
1108 var5 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
1109 }
1110 var = var5;
1111 goto RET_LABEL;
1112 RET_LABEL:;
1113 return var;
1114 }
1115 /* method model#MNullableType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
1116 val* VIRTUAL_model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1117 val* var /* : MType */;
1118 val* var1 /* : MType */;
1119 var1 = model__MNullableType__resolve_for(self, p0, p1, p2, p3);
1120 var = var1;
1121 RET_LABEL:;
1122 return var;
1123 }
1124 /* method model#MNullableType#can_resolve_for for (self: MNullableType, MType, nullable MClassType, MModule): Bool */
1125 short int model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
1126 short int var /* : Bool */;
1127 val* var_mtype /* var mtype: MType */;
1128 val* var_anchor /* var anchor: nullable MClassType */;
1129 val* var_mmodule /* var mmodule: MModule */;
1130 val* var1 /* : MType */;
1131 val* var3 /* : MType */;
1132 short int var4 /* : Bool */;
1133 var_mtype = p0;
1134 var_anchor = p1;
1135 var_mmodule = p2;
1136 {
1137 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1138 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1139 if (unlikely(var3 == NULL)) {
1140 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1141 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1142 show_backtrace(1);
1143 }
1144 var1 = var3;
1145 RET_LABEL2:(void)0;
1146 }
1147 }
1148 {
1149 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>*/;
1150 }
1151 var = var4;
1152 goto RET_LABEL;
1153 RET_LABEL:;
1154 return var;
1155 }
1156 /* method model#MNullableType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
1157 short int VIRTUAL_model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
1158 short int var /* : Bool */;
1159 short int var1 /* : Bool */;
1160 var1 = model__MNullableType__can_resolve_for(self, p0, p1, p2);
1161 var = var1;
1162 RET_LABEL:;
1163 return var;
1164 }
1165 /* method model#MNullableType#length for (self: MNullableType): Int */
1166 long model__MNullableType__length(val* self) {
1167 long var /* : Int */;
1168 val* var1 /* : MType */;
1169 val* var3 /* : MType */;
1170 long var4 /* : Int */;
1171 {
1172 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1173 var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1174 if (unlikely(var3 == NULL)) {
1175 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1176 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1177 show_backtrace(1);
1178 }
1179 var1 = var3;
1180 RET_LABEL2:(void)0;
1181 }
1182 }
1183 {
1184 var4 = ((long (*)(val*))(var1->class->vft[COLOR_model__MType__length]))(var1) /* length on <var1:MType>*/;
1185 }
1186 var = var4;
1187 goto RET_LABEL;
1188 RET_LABEL:;
1189 return var;
1190 }
1191 /* method model#MNullableType#length for (self: Object): Int */
1192 long VIRTUAL_model__MNullableType__length(val* self) {
1193 long var /* : Int */;
1194 long var1 /* : Int */;
1195 var1 = model__MNullableType__length(self);
1196 var = var1;
1197 RET_LABEL:;
1198 return var;
1199 }
1200 /* method model#MNullableType#collect_mclassdefs for (self: MNullableType, MModule): Set[MClassDef] */
1201 val* model__MNullableType__collect_mclassdefs(val* self, val* p0) {
1202 val* var /* : Set[MClassDef] */;
1203 val* var_mmodule /* var mmodule: MModule */;
1204 short int var1 /* : Bool */;
1205 short int var2 /* : Bool */;
1206 val* var3 /* : MType */;
1207 val* var5 /* : MType */;
1208 val* var6 /* : Set[MClassDef] */;
1209 var_mmodule = p0;
1210 {
1211 var1 = model__MNullableType__need_anchor(self);
1212 }
1213 var2 = !var1;
1214 if (unlikely(!var2)) {
1215 PRINT_ERROR("Runtime error: %s", "Assert failed");
1216 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1421);
1217 show_backtrace(1);
1218 }
1219 {
1220 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1221 var5 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1222 if (unlikely(var5 == NULL)) {
1223 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1224 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1225 show_backtrace(1);
1226 }
1227 var3 = var5;
1228 RET_LABEL4:(void)0;
1229 }
1230 }
1231 {
1232 var6 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclassdefs]))(var3, var_mmodule) /* collect_mclassdefs on <var3:MType>*/;
1233 }
1234 var = var6;
1235 goto RET_LABEL;
1236 RET_LABEL:;
1237 return var;
1238 }
1239 /* method model#MNullableType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
1240 val* VIRTUAL_model__MNullableType__collect_mclassdefs(val* self, val* p0) {
1241 val* var /* : Set[MClassDef] */;
1242 val* var1 /* : Set[MClassDef] */;
1243 var1 = model__MNullableType__collect_mclassdefs(self, p0);
1244 var = var1;
1245 RET_LABEL:;
1246 return var;
1247 }
1248 /* method model#MNullableType#collect_mclasses for (self: MNullableType, MModule): Set[MClass] */
1249 val* model__MNullableType__collect_mclasses(val* self, val* p0) {
1250 val* var /* : Set[MClass] */;
1251 val* var_mmodule /* var mmodule: MModule */;
1252 short int var1 /* : Bool */;
1253 short int var2 /* : Bool */;
1254 val* var3 /* : MType */;
1255 val* var5 /* : MType */;
1256 val* var6 /* : Set[MClass] */;
1257 var_mmodule = p0;
1258 {
1259 var1 = model__MNullableType__need_anchor(self);
1260 }
1261 var2 = !var1;
1262 if (unlikely(!var2)) {
1263 PRINT_ERROR("Runtime error: %s", "Assert failed");
1264 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1427);
1265 show_backtrace(1);
1266 }
1267 {
1268 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1269 var5 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1270 if (unlikely(var5 == NULL)) {
1271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1272 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1273 show_backtrace(1);
1274 }
1275 var3 = var5;
1276 RET_LABEL4:(void)0;
1277 }
1278 }
1279 {
1280 var6 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclasses]))(var3, var_mmodule) /* collect_mclasses on <var3:MType>*/;
1281 }
1282 var = var6;
1283 goto RET_LABEL;
1284 RET_LABEL:;
1285 return var;
1286 }
1287 /* method model#MNullableType#collect_mclasses for (self: Object, MModule): Set[MClass] */
1288 val* VIRTUAL_model__MNullableType__collect_mclasses(val* self, val* p0) {
1289 val* var /* : Set[MClass] */;
1290 val* var1 /* : Set[MClass] */;
1291 var1 = model__MNullableType__collect_mclasses(self, p0);
1292 var = var1;
1293 RET_LABEL:;
1294 return var;
1295 }
1296 /* method model#MNullableType#collect_mtypes for (self: MNullableType, MModule): Set[MClassType] */
1297 val* model__MNullableType__collect_mtypes(val* self, val* p0) {
1298 val* var /* : Set[MClassType] */;
1299 val* var_mmodule /* var mmodule: MModule */;
1300 short int var1 /* : Bool */;
1301 short int var2 /* : Bool */;
1302 val* var3 /* : MType */;
1303 val* var5 /* : MType */;
1304 val* var6 /* : Set[MClassType] */;
1305 var_mmodule = p0;
1306 {
1307 var1 = model__MNullableType__need_anchor(self);
1308 }
1309 var2 = !var1;
1310 if (unlikely(!var2)) {
1311 PRINT_ERROR("Runtime error: %s", "Assert failed");
1312 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1433);
1313 show_backtrace(1);
1314 }
1315 {
1316 { /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
1317 var5 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
1318 if (unlikely(var5 == NULL)) {
1319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1320 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
1321 show_backtrace(1);
1322 }
1323 var3 = var5;
1324 RET_LABEL4:(void)0;
1325 }
1326 }
1327 {
1328 var6 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mtypes]))(var3, var_mmodule) /* collect_mtypes on <var3:MType>*/;
1329 }
1330 var = var6;
1331 goto RET_LABEL;
1332 RET_LABEL:;
1333 return var;
1334 }
1335 /* method model#MNullableType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
1336 val* VIRTUAL_model__MNullableType__collect_mtypes(val* self, val* p0) {
1337 val* var /* : Set[MClassType] */;
1338 val* var1 /* : Set[MClassType] */;
1339 var1 = model__MNullableType__collect_mtypes(self, p0);
1340 var = var1;
1341 RET_LABEL:;
1342 return var;
1343 }
1344 /* method model#MNullType#model for (self: MNullType): Model */
1345 val* model__MNullType__model(val* self) {
1346 val* var /* : Model */;
1347 val* var1 /* : Model */;
1348 var1 = self->attrs[COLOR_model__MNullType___model].val; /* _model on <self:MNullType> */
1349 if (unlikely(var1 == NULL)) {
1350 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
1351 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1443);
1352 show_backtrace(1);
1353 }
1354 var = var1;
1355 RET_LABEL:;
1356 return var;
1357 }
1358 /* method model#MNullType#model for (self: Object): Model */
1359 val* VIRTUAL_model__MNullType__model(val* self) {
1360 val* var /* : Model */;
1361 val* var1 /* : Model */;
1362 val* var3 /* : Model */;
1363 { /* Inline model#MNullType#model (self) on <self:Object(MNullType)> */
1364 var3 = self->attrs[COLOR_model__MNullType___model].val; /* _model on <self:Object(MNullType)> */
1365 if (unlikely(var3 == NULL)) {
1366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
1367 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1443);
1368 show_backtrace(1);
1369 }
1370 var1 = var3;
1371 RET_LABEL2:(void)0;
1372 }
1373 var = var1;
1374 RET_LABEL:;
1375 return var;
1376 }
1377 /* method model#MNullType#model= for (self: MNullType, Model) */
1378 void model__MNullType__model_61d(val* self, val* p0) {
1379 self->attrs[COLOR_model__MNullType___model].val = p0; /* _model on <self:MNullType> */
1380 RET_LABEL:;
1381 }
1382 /* method model#MNullType#model= for (self: Object, Model) */
1383 void VIRTUAL_model__MNullType__model_61d(val* self, val* p0) {
1384 { /* Inline model#MNullType#model= (self,p0) on <self:Object(MNullType)> */
1385 self->attrs[COLOR_model__MNullType___model].val = p0; /* _model on <self:Object(MNullType)> */
1386 RET_LABEL1:(void)0;
1387 }
1388 RET_LABEL:;
1389 }
1390 /* method model#MNullType#init for (self: MNullType, Model) */
1391 void model__MNullType__init(val* self, val* p0) {
1392 val* var_model /* var model: Model */;
1393 {
1394 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MNullType>*/;
1395 }
1396 var_model = p0;
1397 {
1398 { /* Inline model#MNullType#model= (self,var_model) on <self:MNullType> */
1399 self->attrs[COLOR_model__MNullType___model].val = var_model; /* _model on <self:MNullType> */
1400 RET_LABEL1:(void)0;
1401 }
1402 }
1403 RET_LABEL:;
1404 }
1405 /* method model#MNullType#init for (self: Object, Model) */
1406 void VIRTUAL_model__MNullType__init(val* self, val* p0) {
1407 model__MNullType__init(self, p0); /* Direct call model#MNullType#init on <self:Object(MNullType)>*/
1408 RET_LABEL:;
1409 }
1410 /* method model#MNullType#to_s for (self: MNullType): String */
1411 val* model__MNullType__to_s(val* self) {
1412 val* var /* : String */;
1413 static val* varonce;
1414 val* var1 /* : String */;
1415 char* var2 /* : NativeString */;
1416 long var3 /* : Int */;
1417 val* var4 /* : FlatString */;
1418 if (varonce) {
1419 var1 = varonce;
1420 } else {
1421 var2 = "null";
1422 var3 = 4;
1423 var4 = string__NativeString__to_s_with_length(var2, var3);
1424 var1 = var4;
1425 varonce = var1;
1426 }
1427 var = var1;
1428 goto RET_LABEL;
1429 RET_LABEL:;
1430 return var;
1431 }
1432 /* method model#MNullType#to_s for (self: Object): String */
1433 val* VIRTUAL_model__MNullType__to_s(val* self) {
1434 val* var /* : String */;
1435 val* var1 /* : String */;
1436 var1 = model__MNullType__to_s(self);
1437 var = var1;
1438 RET_LABEL:;
1439 return var;
1440 }
1441 /* method model#MNullType#as_nullable for (self: MNullType): MType */
1442 val* model__MNullType__as_nullable(val* self) {
1443 val* var /* : MType */;
1444 var = self;
1445 goto RET_LABEL;
1446 RET_LABEL:;
1447 return var;
1448 }
1449 /* method model#MNullType#as_nullable for (self: Object): MType */
1450 val* VIRTUAL_model__MNullType__as_nullable(val* self) {
1451 val* var /* : MType */;
1452 val* var1 /* : MType */;
1453 var1 = model__MNullType__as_nullable(self);
1454 var = var1;
1455 RET_LABEL:;
1456 return var;
1457 }
1458 /* method model#MNullType#need_anchor for (self: MNullType): Bool */
1459 short int model__MNullType__need_anchor(val* self) {
1460 short int var /* : Bool */;
1461 short int var1 /* : Bool */;
1462 var1 = 0;
1463 var = var1;
1464 goto RET_LABEL;
1465 RET_LABEL:;
1466 return var;
1467 }
1468 /* method model#MNullType#need_anchor for (self: Object): Bool */
1469 short int VIRTUAL_model__MNullType__need_anchor(val* self) {
1470 short int var /* : Bool */;
1471 short int var1 /* : Bool */;
1472 var1 = model__MNullType__need_anchor(self);
1473 var = var1;
1474 RET_LABEL:;
1475 return var;
1476 }
1477 /* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
1478 val* model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1479 val* var /* : MType */;
1480 val* var_mtype /* var mtype: MType */;
1481 val* var_anchor /* var anchor: nullable MClassType */;
1482 val* var_mmodule /* var mmodule: MModule */;
1483 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
1484 var_mtype = p0;
1485 var_anchor = p1;
1486 var_mmodule = p2;
1487 var_cleanup_virtual = p3;
1488 var = self;
1489 goto RET_LABEL;
1490 RET_LABEL:;
1491 return var;
1492 }
1493 /* method model#MNullType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
1494 val* VIRTUAL_model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
1495 val* var /* : MType */;
1496 val* var1 /* : MType */;
1497 var1 = model__MNullType__resolve_for(self, p0, p1, p2, p3);
1498 var = var1;
1499 RET_LABEL:;
1500 return var;
1501 }
1502 /* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
1503 short int model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
1504 short int var /* : Bool */;
1505 val* var_mtype /* var mtype: MType */;
1506 val* var_anchor /* var anchor: nullable MClassType */;
1507 val* var_mmodule /* var mmodule: MModule */;
1508 short int var1 /* : Bool */;
1509 var_mtype = p0;
1510 var_anchor = p1;
1511 var_mmodule = p2;
1512 var1 = 1;
1513 var = var1;
1514 goto RET_LABEL;
1515 RET_LABEL:;
1516 return var;
1517 }
1518 /* method model#MNullType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
1519 short int VIRTUAL_model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
1520 short int var /* : Bool */;
1521 short int var1 /* : Bool */;
1522 var1 = model__MNullType__can_resolve_for(self, p0, p1, p2);
1523 var = var1;
1524 RET_LABEL:;
1525 return var;
1526 }
1527 /* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
1528 val* model__MNullType__collect_mclassdefs(val* self, val* p0) {
1529 val* var /* : Set[MClassDef] */;
1530 val* var_mmodule /* var mmodule: MModule */;
1531 val* var1 /* : HashSet[MClassDef] */;
1532 var_mmodule = p0;
1533 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
1534 {
1535 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:HashSet[MClassDef]>*/;
1536 }
1537 var = var1;
1538 goto RET_LABEL;
1539 RET_LABEL:;
1540 return var;
1541 }
1542 /* method model#MNullType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
1543 val* VIRTUAL_model__MNullType__collect_mclassdefs(val* self, val* p0) {
1544 val* var /* : Set[MClassDef] */;
1545 val* var1 /* : Set[MClassDef] */;
1546 var1 = model__MNullType__collect_mclassdefs(self, p0);
1547 var = var1;
1548 RET_LABEL:;
1549 return var;
1550 }
1551 /* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
1552 val* model__MNullType__collect_mclasses(val* self, val* p0) {
1553 val* var /* : Set[MClass] */;
1554 val* var_mmodule /* var mmodule: MModule */;
1555 val* var1 /* : HashSet[MClass] */;
1556 var_mmodule = p0;
1557 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
1558 {
1559 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
1560 }
1561 var = var1;
1562 goto RET_LABEL;
1563 RET_LABEL:;
1564 return var;
1565 }
1566 /* method model#MNullType#collect_mclasses for (self: Object, MModule): Set[MClass] */
1567 val* VIRTUAL_model__MNullType__collect_mclasses(val* self, val* p0) {
1568 val* var /* : Set[MClass] */;
1569 val* var1 /* : Set[MClass] */;
1570 var1 = model__MNullType__collect_mclasses(self, p0);
1571 var = var1;
1572 RET_LABEL:;
1573 return var;
1574 }
1575 /* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
1576 val* model__MNullType__collect_mtypes(val* self, val* p0) {
1577 val* var /* : Set[MClassType] */;
1578 val* var_mmodule /* var mmodule: MModule */;
1579 val* var1 /* : HashSet[MClassType] */;
1580 var_mmodule = p0;
1581 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
1582 {
1583 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:HashSet[MClassType]>*/;
1584 }
1585 var = var1;
1586 goto RET_LABEL;
1587 RET_LABEL:;
1588 return var;
1589 }
1590 /* method model#MNullType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
1591 val* VIRTUAL_model__MNullType__collect_mtypes(val* self, val* p0) {
1592 val* var /* : Set[MClassType] */;
1593 val* var1 /* : Set[MClassType] */;
1594 var1 = model__MNullType__collect_mtypes(self, p0);
1595 var = var1;
1596 RET_LABEL:;
1597 return var;
1598 }
1599 /* method model#MSignature#mparameters for (self: MSignature): Array[MParameter] */
1600 val* model__MSignature__mparameters(val* self) {
1601 val* var /* : Array[MParameter] */;
1602 val* var1 /* : Array[MParameter] */;
1603 var1 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
1604 if (unlikely(var1 == NULL)) {
1605 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1606 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
1607 show_backtrace(1);
1608 }
1609 var = var1;
1610 RET_LABEL:;
1611 return var;
1612 }
1613 /* method model#MSignature#mparameters for (self: Object): Array[MParameter] */
1614 val* VIRTUAL_model__MSignature__mparameters(val* self) {
1615 val* var /* : Array[MParameter] */;
1616 val* var1 /* : Array[MParameter] */;
1617 val* var3 /* : Array[MParameter] */;
1618 { /* Inline model#MSignature#mparameters (self) on <self:Object(MSignature)> */
1619 var3 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:Object(MSignature)> */
1620 if (unlikely(var3 == NULL)) {
1621 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1622 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
1623 show_backtrace(1);
1624 }
1625 var1 = var3;
1626 RET_LABEL2:(void)0;
1627 }
1628 var = var1;
1629 RET_LABEL:;
1630 return var;
1631 }
1632 /* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
1633 void model__MSignature__mparameters_61d(val* self, val* p0) {
1634 self->attrs[COLOR_model__MSignature___mparameters].val = p0; /* _mparameters on <self:MSignature> */
1635 RET_LABEL:;
1636 }
1637 /* method model#MSignature#mparameters= for (self: Object, Array[MParameter]) */
1638 void VIRTUAL_model__MSignature__mparameters_61d(val* self, val* p0) {
1639 { /* Inline model#MSignature#mparameters= (self,p0) on <self:Object(MSignature)> */
1640 self->attrs[COLOR_model__MSignature___mparameters].val = p0; /* _mparameters on <self:Object(MSignature)> */
1641 RET_LABEL1:(void)0;
1642 }
1643 RET_LABEL:;
1644 }
1645 /* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
1646 val* model__MSignature__return_mtype(val* self) {
1647 val* var /* : nullable MType */;
1648 val* var1 /* : nullable MType */;
1649 var1 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
1650 var = var1;
1651 RET_LABEL:;
1652 return var;
1653 }
1654 /* method model#MSignature#return_mtype for (self: Object): nullable MType */
1655 val* VIRTUAL_model__MSignature__return_mtype(val* self) {
1656 val* var /* : nullable MType */;
1657 val* var1 /* : nullable MType */;
1658 val* var3 /* : nullable MType */;
1659 { /* Inline model#MSignature#return_mtype (self) on <self:Object(MSignature)> */
1660 var3 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:Object(MSignature)> */
1661 var1 = var3;
1662 RET_LABEL2:(void)0;
1663 }
1664 var = var1;
1665 RET_LABEL:;
1666 return var;
1667 }
1668 /* method model#MSignature#return_mtype= for (self: MSignature, nullable MType) */
1669 void model__MSignature__return_mtype_61d(val* self, val* p0) {
1670 self->attrs[COLOR_model__MSignature___return_mtype].val = p0; /* _return_mtype on <self:MSignature> */
1671 RET_LABEL:;
1672 }
1673 /* method model#MSignature#return_mtype= for (self: Object, nullable MType) */
1674 void VIRTUAL_model__MSignature__return_mtype_61d(val* self, val* p0) {
1675 { /* Inline model#MSignature#return_mtype= (self,p0) on <self:Object(MSignature)> */
1676 self->attrs[COLOR_model__MSignature___return_mtype].val = p0; /* _return_mtype on <self:Object(MSignature)> */
1677 RET_LABEL1:(void)0;
1678 }
1679 RET_LABEL:;
1680 }
1681 /* method model#MSignature#length for (self: MSignature): Int */
1682 long model__MSignature__length(val* self) {
1683 long var /* : Int */;
1684 long var1 /* : Int */;
1685 long var_res /* var res: Int */;
1686 val* var2 /* : nullable MType */;
1687 val* var4 /* : nullable MType */;
1688 val* var_t /* var t: nullable MType */;
1689 val* var5 /* : null */;
1690 short int var6 /* : Bool */;
1691 short int var7 /* : Bool */;
1692 val* var_other /* var other: nullable Object */;
1693 short int var9 /* : Bool */;
1694 short int var10 /* : Bool */;
1695 short int var11 /* : Bool */;
1696 long var12 /* : Int */;
1697 long var13 /* : Int */;
1698 short int var15 /* : Bool */;
1699 int cltype;
1700 int idtype;
1701 const char* var_class_name;
1702 long var16 /* : Int */;
1703 val* var17 /* : Array[MParameter] */;
1704 val* var19 /* : Array[MParameter] */;
1705 val* var_ /* var : Array[MParameter] */;
1706 val* var20 /* : ArrayIterator[nullable Object] */;
1707 val* var_21 /* var : ArrayIterator[MParameter] */;
1708 short int var22 /* : Bool */;
1709 val* var23 /* : nullable Object */;
1710 val* var_p /* var p: MParameter */;
1711 val* var24 /* : MType */;
1712 val* var26 /* : MType */;
1713 long var27 /* : Int */;
1714 long var28 /* : Int */;
1715 short int var30 /* : Bool */;
1716 int cltype31;
1717 int idtype32;
1718 const char* var_class_name33;
1719 long var34 /* : Int */;
1720 var1 = 1;
1721 var_res = var1;
1722 {
1723 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
1724 var4 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
1725 var2 = var4;
1726 RET_LABEL3:(void)0;
1727 }
1728 }
1729 var_t = var2;
1730 var5 = NULL;
1731 if (var_t == NULL) {
1732 var6 = 0; /* is null */
1733 } else {
1734 var6 = 1; /* arg is null and recv is not */
1735 }
1736 if (0) {
1737 { /* Inline kernel#Object#!= (var_t,var5) on <var_t:nullable MType> */
1738 var_other = var5;
1739 {
1740 var10 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___61d_61d]))(var_t, var_other) /* == on <var_t:nullable MType(MType)>*/;
1741 var9 = var10;
1742 }
1743 var11 = !var9;
1744 var7 = var11;
1745 goto RET_LABEL8;
1746 RET_LABEL8:(void)0;
1747 }
1748 var6 = var7;
1749 }
1750 if (var6){
1751 {
1752 var12 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__length]))(var_t) /* length on <var_t:nullable MType(MType)>*/;
1753 }
1754 {
1755 { /* Inline kernel#Int#+ (var_res,var12) on <var_res:Int> */
1756 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
1757 /* <var12:Int> isa OTHER */
1758 var15 = 1; /* easy <var12:Int> isa OTHER*/
1759 if (unlikely(!var15)) {
1760 var_class_name = type_kernel__Int.name;
1761 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1762 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1763 show_backtrace(1);
1764 }
1765 var16 = var_res + var12;
1766 var13 = var16;
1767 goto RET_LABEL14;
1768 RET_LABEL14:(void)0;
1769 }
1770 }
1771 var_res = var13;
1772 } else {
1773 }
1774 {
1775 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
1776 var19 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
1777 if (unlikely(var19 == NULL)) {
1778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1779 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
1780 show_backtrace(1);
1781 }
1782 var17 = var19;
1783 RET_LABEL18:(void)0;
1784 }
1785 }
1786 var_ = var17;
1787 {
1788 var20 = array__AbstractArrayRead__iterator(var_);
1789 }
1790 var_21 = var20;
1791 for(;;) {
1792 {
1793 var22 = array__ArrayIterator__is_ok(var_21);
1794 }
1795 if (var22){
1796 {
1797 var23 = array__ArrayIterator__item(var_21);
1798 }
1799 var_p = var23;
1800 {
1801 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
1802 var26 = var_p->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
1803 if (unlikely(var26 == NULL)) {
1804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1805 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
1806 show_backtrace(1);
1807 }
1808 var24 = var26;
1809 RET_LABEL25:(void)0;
1810 }
1811 }
1812 {
1813 var27 = ((long (*)(val*))(var24->class->vft[COLOR_model__MType__length]))(var24) /* length on <var24:MType>*/;
1814 }
1815 {
1816 { /* Inline kernel#Int#+ (var_res,var27) on <var_res:Int> */
1817 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
1818 /* <var27:Int> isa OTHER */
1819 var30 = 1; /* easy <var27:Int> isa OTHER*/
1820 if (unlikely(!var30)) {
1821 var_class_name33 = type_kernel__Int.name;
1822 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
1823 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1824 show_backtrace(1);
1825 }
1826 var34 = var_res + var27;
1827 var28 = var34;
1828 goto RET_LABEL29;
1829 RET_LABEL29:(void)0;
1830 }
1831 }
1832 var_res = var28;
1833 {
1834 array__ArrayIterator__next(var_21); /* Direct call array#ArrayIterator#next on <var_21:ArrayIterator[MParameter]>*/
1835 }
1836 } else {
1837 goto BREAK_label;
1838 }
1839 }
1840 BREAK_label: (void)0;
1841 {
1842 { /* Inline abstract_collection#Iterator#finish (var_21) on <var_21:ArrayIterator[MParameter]> */
1843 RET_LABEL35:(void)0;
1844 }
1845 }
1846 var = var_res;
1847 goto RET_LABEL;
1848 RET_LABEL:;
1849 return var;
1850 }
1851 /* method model#MSignature#length for (self: Object): Int */
1852 long VIRTUAL_model__MSignature__length(val* self) {
1853 long var /* : Int */;
1854 long var1 /* : Int */;
1855 var1 = model__MSignature__length(self);
1856 var = var1;
1857 RET_LABEL:;
1858 return var;
1859 }
1860 /* method model#MSignature#init for (self: MSignature, Array[MParameter], nullable MType) */
1861 void model__MSignature__init(val* self, val* p0, val* p1) {
1862 val* var_mparameters /* var mparameters: Array[MParameter] */;
1863 val* var_return_mtype /* var return_mtype: nullable MType */;
1864 long var /* : Int */;
1865 long var1 /* : Int */;
1866 long var3 /* : Int */;
1867 long var_vararg_rank /* var vararg_rank: Int */;
1868 long var4 /* : Int */;
1869 long var_i /* var i: Int */;
1870 long var5 /* : Int */;
1871 long var7 /* : Int */;
1872 long var_ /* var : Int */;
1873 short int var8 /* : Bool */;
1874 short int var10 /* : Bool */;
1875 int cltype;
1876 int idtype;
1877 const char* var_class_name;
1878 short int var11 /* : Bool */;
1879 val* var12 /* : nullable Object */;
1880 val* var_parameter /* var parameter: MParameter */;
1881 short int var13 /* : Bool */;
1882 short int var15 /* : Bool */;
1883 long var16 /* : Int */;
1884 long var17 /* : Int */;
1885 long var19 /* : Int */;
1886 short int var20 /* : Bool */;
1887 short int var21 /* : Bool */;
1888 short int var23 /* : Bool */;
1889 long var24 /* : Int */;
1890 long var25 /* : Int */;
1891 {
1892 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MSignature>*/;
1893 }
1894 var_mparameters = p0;
1895 var_return_mtype = p1;
1896 var = 1;
1897 {
1898 { /* Inline kernel#Int#unary - (var) on <var:Int> */
1899 var3 = -var;
1900 var1 = var3;
1901 goto RET_LABEL2;
1902 RET_LABEL2:(void)0;
1903 }
1904 }
1905 var_vararg_rank = var1;
1906 var4 = 0;
1907 var_i = var4;
1908 {
1909 { /* Inline array#AbstractArrayRead#length (var_mparameters) on <var_mparameters:Array[MParameter]> */
1910 var7 = var_mparameters->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_mparameters:Array[MParameter]> */
1911 var5 = var7;
1912 RET_LABEL6:(void)0;
1913 }
1914 }
1915 var_ = var5;
1916 for(;;) {
1917 {
1918 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
1919 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
1920 /* <var_:Int> isa OTHER */
1921 var10 = 1; /* easy <var_:Int> isa OTHER*/
1922 if (unlikely(!var10)) {
1923 var_class_name = type_kernel__Int.name;
1924 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1925 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
1926 show_backtrace(1);
1927 }
1928 var11 = var_i < var_;
1929 var8 = var11;
1930 goto RET_LABEL9;
1931 RET_LABEL9:(void)0;
1932 }
1933 }
1934 if (var8){
1935 {
1936 var12 = array__Array___91d_93d(var_mparameters, var_i);
1937 }
1938 var_parameter = var12;
1939 {
1940 { /* Inline model#MParameter#is_vararg (var_parameter) on <var_parameter:MParameter> */
1941 var15 = var_parameter->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <var_parameter:MParameter> */
1942 var13 = var15;
1943 RET_LABEL14:(void)0;
1944 }
1945 }
1946 if (var13){
1947 var16 = 1;
1948 {
1949 { /* Inline kernel#Int#unary - (var16) on <var16:Int> */
1950 var19 = -var16;
1951 var17 = var19;
1952 goto RET_LABEL18;
1953 RET_LABEL18:(void)0;
1954 }
1955 }
1956 {
1957 { /* Inline kernel#Int#== (var_vararg_rank,var17) on <var_vararg_rank:Int> */
1958 var23 = var_vararg_rank == var17;
1959 var21 = var23;
1960 goto RET_LABEL22;
1961 RET_LABEL22:(void)0;
1962 }
1963 var20 = var21;
1964 }
1965 if (unlikely(!var20)) {
1966 PRINT_ERROR("Runtime error: %s", "Assert failed");
1967 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1501);
1968 show_backtrace(1);
1969 }
1970 var_vararg_rank = var_i;
1971 } else {
1972 }
1973 var24 = 1;
1974 {
1975 var25 = kernel__Int__successor(var_i, var24);
1976 }
1977 var_i = var25;
1978 } else {
1979 goto BREAK_label;
1980 }
1981 }
1982 BREAK_label: (void)0;
1983 {
1984 { /* Inline model#MSignature#mparameters= (self,var_mparameters) on <self:MSignature> */
1985 self->attrs[COLOR_model__MSignature___mparameters].val = var_mparameters; /* _mparameters on <self:MSignature> */
1986 RET_LABEL26:(void)0;
1987 }
1988 }
1989 {
1990 { /* Inline model#MSignature#return_mtype= (self,var_return_mtype) on <self:MSignature> */
1991 self->attrs[COLOR_model__MSignature___return_mtype].val = var_return_mtype; /* _return_mtype on <self:MSignature> */
1992 RET_LABEL27:(void)0;
1993 }
1994 }
1995 {
1996 { /* Inline model#MSignature#vararg_rank= (self,var_vararg_rank) on <self:MSignature> */
1997 self->attrs[COLOR_model__MSignature___vararg_rank].l = var_vararg_rank; /* _vararg_rank on <self:MSignature> */
1998 RET_LABEL28:(void)0;
1999 }
2000 }
2001 RET_LABEL:;
2002 }
2003 /* method model#MSignature#init for (self: Object, Array[MParameter], nullable MType) */
2004 void VIRTUAL_model__MSignature__init(val* self, val* p0, val* p1) {
2005 model__MSignature__init(self, p0, p1); /* Direct call model#MSignature#init on <self:Object(MSignature)>*/
2006 RET_LABEL:;
2007 }
2008 /* method model#MSignature#vararg_rank for (self: MSignature): Int */
2009 long model__MSignature__vararg_rank(val* self) {
2010 long var /* : Int */;
2011 long var1 /* : Int */;
2012 var1 = self->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <self:MSignature> */
2013 var = var1;
2014 RET_LABEL:;
2015 return var;
2016 }
2017 /* method model#MSignature#vararg_rank for (self: Object): Int */
2018 long VIRTUAL_model__MSignature__vararg_rank(val* self) {
2019 long var /* : Int */;
2020 long var1 /* : Int */;
2021 long var3 /* : Int */;
2022 { /* Inline model#MSignature#vararg_rank (self) on <self:Object(MSignature)> */
2023 var3 = self->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <self:Object(MSignature)> */
2024 var1 = var3;
2025 RET_LABEL2:(void)0;
2026 }
2027 var = var1;
2028 RET_LABEL:;
2029 return var;
2030 }
2031 /* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
2032 void model__MSignature__vararg_rank_61d(val* self, long p0) {
2033 self->attrs[COLOR_model__MSignature___vararg_rank].l = p0; /* _vararg_rank on <self:MSignature> */
2034 RET_LABEL:;
2035 }
2036 /* method model#MSignature#vararg_rank= for (self: Object, Int) */
2037 void VIRTUAL_model__MSignature__vararg_rank_61d(val* self, long p0) {
2038 { /* Inline model#MSignature#vararg_rank= (self,p0) on <self:Object(MSignature)> */
2039 self->attrs[COLOR_model__MSignature___vararg_rank].l = p0; /* _vararg_rank on <self:Object(MSignature)> */
2040 RET_LABEL1:(void)0;
2041 }
2042 RET_LABEL:;
2043 }
2044 /* method model#MSignature#arity for (self: MSignature): Int */
2045 long model__MSignature__arity(val* self) {
2046 long var /* : Int */;
2047 val* var1 /* : Array[MParameter] */;
2048 val* var3 /* : Array[MParameter] */;
2049 long var4 /* : Int */;
2050 long var6 /* : Int */;
2051 {
2052 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
2053 var3 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
2054 if (unlikely(var3 == NULL)) {
2055 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2056 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2057 show_backtrace(1);
2058 }
2059 var1 = var3;
2060 RET_LABEL2:(void)0;
2061 }
2062 }
2063 {
2064 { /* Inline array#AbstractArrayRead#length (var1) on <var1:Array[MParameter]> */
2065 var6 = var1->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var1:Array[MParameter]> */
2066 var4 = var6;
2067 RET_LABEL5:(void)0;
2068 }
2069 }
2070 var = var4;
2071 goto RET_LABEL;
2072 RET_LABEL:;
2073 return var;
2074 }
2075 /* method model#MSignature#arity for (self: Object): Int */
2076 long VIRTUAL_model__MSignature__arity(val* self) {
2077 long var /* : Int */;
2078 long var1 /* : Int */;
2079 var1 = model__MSignature__arity(self);
2080 var = var1;
2081 RET_LABEL:;
2082 return var;
2083 }
2084 /* method model#MSignature#to_s for (self: MSignature): String */
2085 val* model__MSignature__to_s(val* self) {
2086 val* var /* : String */;
2087 val* var1 /* : FlatBuffer */;
2088 val* var_b /* var b: FlatBuffer */;
2089 val* var2 /* : Array[MParameter] */;
2090 val* var4 /* : Array[MParameter] */;
2091 short int var5 /* : Bool */;
2092 short int var6 /* : Bool */;
2093 static val* varonce;
2094 val* var7 /* : String */;
2095 char* var8 /* : NativeString */;
2096 long var9 /* : Int */;
2097 val* var10 /* : FlatString */;
2098 long var11 /* : Int */;
2099 long var_i /* var i: Int */;
2100 val* var12 /* : Array[MParameter] */;
2101 val* var14 /* : Array[MParameter] */;
2102 long var15 /* : Int */;
2103 long var17 /* : Int */;
2104 long var_ /* var : Int */;
2105 short int var18 /* : Bool */;
2106 short int var20 /* : Bool */;
2107 int cltype;
2108 int idtype;
2109 const char* var_class_name;
2110 short int var21 /* : Bool */;
2111 val* var22 /* : Array[MParameter] */;
2112 val* var24 /* : Array[MParameter] */;
2113 val* var25 /* : nullable Object */;
2114 val* var_mparameter /* var mparameter: MParameter */;
2115 long var26 /* : Int */;
2116 short int var27 /* : Bool */;
2117 short int var29 /* : Bool */;
2118 int cltype30;
2119 int idtype31;
2120 const char* var_class_name32;
2121 short int var33 /* : Bool */;
2122 static val* varonce34;
2123 val* var35 /* : String */;
2124 char* var36 /* : NativeString */;
2125 long var37 /* : Int */;
2126 val* var38 /* : FlatString */;
2127 val* var39 /* : String */;
2128 val* var41 /* : String */;
2129 static val* varonce42;
2130 val* var43 /* : String */;
2131 char* var44 /* : NativeString */;
2132 long var45 /* : Int */;
2133 val* var46 /* : FlatString */;
2134 val* var47 /* : MType */;
2135 val* var49 /* : MType */;
2136 val* var50 /* : String */;
2137 short int var51 /* : Bool */;
2138 short int var53 /* : Bool */;
2139 static val* varonce54;
2140 val* var55 /* : String */;
2141 char* var56 /* : NativeString */;
2142 long var57 /* : Int */;
2143 val* var58 /* : FlatString */;
2144 long var59 /* : Int */;
2145 long var60 /* : Int */;
2146 static val* varonce61;
2147 val* var62 /* : String */;
2148 char* var63 /* : NativeString */;
2149 long var64 /* : Int */;
2150 val* var65 /* : FlatString */;
2151 val* var66 /* : nullable MType */;
2152 val* var68 /* : nullable MType */;
2153 val* var_ret /* var ret: nullable MType */;
2154 val* var69 /* : null */;
2155 short int var70 /* : Bool */;
2156 short int var71 /* : Bool */;
2157 val* var_other /* var other: nullable Object */;
2158 short int var73 /* : Bool */;
2159 short int var74 /* : Bool */;
2160 short int var75 /* : Bool */;
2161 static val* varonce76;
2162 val* var77 /* : String */;
2163 char* var78 /* : NativeString */;
2164 long var79 /* : Int */;
2165 val* var80 /* : FlatString */;
2166 val* var81 /* : String */;
2167 val* var82 /* : String */;
2168 var1 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
2169 {
2170 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:FlatBuffer>*/;
2171 }
2172 var_b = var1;
2173 {
2174 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
2175 var4 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
2176 if (unlikely(var4 == NULL)) {
2177 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2178 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2179 show_backtrace(1);
2180 }
2181 var2 = var4;
2182 RET_LABEL3:(void)0;
2183 }
2184 }
2185 {
2186 var5 = array__AbstractArrayRead__is_empty(var2);
2187 }
2188 var6 = !var5;
2189 if (var6){
2190 if (varonce) {
2191 var7 = varonce;
2192 } else {
2193 var8 = "(";
2194 var9 = 1;
2195 var10 = string__NativeString__to_s_with_length(var8, var9);
2196 var7 = var10;
2197 varonce = var7;
2198 }
2199 {
2200 string__FlatBuffer__append(var_b, var7); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2201 }
2202 var11 = 0;
2203 var_i = var11;
2204 {
2205 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
2206 var14 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
2207 if (unlikely(var14 == NULL)) {
2208 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2209 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2210 show_backtrace(1);
2211 }
2212 var12 = var14;
2213 RET_LABEL13:(void)0;
2214 }
2215 }
2216 {
2217 { /* Inline array#AbstractArrayRead#length (var12) on <var12:Array[MParameter]> */
2218 var17 = var12->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var12:Array[MParameter]> */
2219 var15 = var17;
2220 RET_LABEL16:(void)0;
2221 }
2222 }
2223 var_ = var15;
2224 for(;;) {
2225 {
2226 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
2227 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
2228 /* <var_:Int> isa OTHER */
2229 var20 = 1; /* easy <var_:Int> isa OTHER*/
2230 if (unlikely(!var20)) {
2231 var_class_name = type_kernel__Int.name;
2232 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2233 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
2234 show_backtrace(1);
2235 }
2236 var21 = var_i < var_;
2237 var18 = var21;
2238 goto RET_LABEL19;
2239 RET_LABEL19:(void)0;
2240 }
2241 }
2242 if (var18){
2243 {
2244 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
2245 var24 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
2246 if (unlikely(var24 == NULL)) {
2247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2248 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2249 show_backtrace(1);
2250 }
2251 var22 = var24;
2252 RET_LABEL23:(void)0;
2253 }
2254 }
2255 {
2256 var25 = array__Array___91d_93d(var22, var_i);
2257 }
2258 var_mparameter = var25;
2259 var26 = 0;
2260 {
2261 { /* Inline kernel#Int#> (var_i,var26) on <var_i:Int> */
2262 /* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
2263 /* <var26:Int> isa OTHER */
2264 var29 = 1; /* easy <var26:Int> isa OTHER*/
2265 if (unlikely(!var29)) {
2266 var_class_name32 = type_kernel__Int.name;
2267 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
2268 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
2269 show_backtrace(1);
2270 }
2271 var33 = var_i > var26;
2272 var27 = var33;
2273 goto RET_LABEL28;
2274 RET_LABEL28:(void)0;
2275 }
2276 }
2277 if (var27){
2278 if (varonce34) {
2279 var35 = varonce34;
2280 } else {
2281 var36 = ", ";
2282 var37 = 2;
2283 var38 = string__NativeString__to_s_with_length(var36, var37);
2284 var35 = var38;
2285 varonce34 = var35;
2286 }
2287 {
2288 string__FlatBuffer__append(var_b, var35); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2289 }
2290 } else {
2291 }
2292 {
2293 { /* Inline model#MParameter#name (var_mparameter) on <var_mparameter:MParameter> */
2294 var41 = var_mparameter->attrs[COLOR_model__MParameter___name].val; /* _name on <var_mparameter:MParameter> */
2295 if (unlikely(var41 == NULL)) {
2296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2297 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
2298 show_backtrace(1);
2299 }
2300 var39 = var41;
2301 RET_LABEL40:(void)0;
2302 }
2303 }
2304 {
2305 string__FlatBuffer__append(var_b, var39); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2306 }
2307 if (varonce42) {
2308 var43 = varonce42;
2309 } else {
2310 var44 = ": ";
2311 var45 = 2;
2312 var46 = string__NativeString__to_s_with_length(var44, var45);
2313 var43 = var46;
2314 varonce42 = var43;
2315 }
2316 {
2317 string__FlatBuffer__append(var_b, var43); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2318 }
2319 {
2320 { /* Inline model#MParameter#mtype (var_mparameter) on <var_mparameter:MParameter> */
2321 var49 = var_mparameter->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_mparameter:MParameter> */
2322 if (unlikely(var49 == NULL)) {
2323 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2324 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2325 show_backtrace(1);
2326 }
2327 var47 = var49;
2328 RET_LABEL48:(void)0;
2329 }
2330 }
2331 {
2332 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:MType>*/;
2333 }
2334 {
2335 string__FlatBuffer__append(var_b, var50); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2336 }
2337 {
2338 { /* Inline model#MParameter#is_vararg (var_mparameter) on <var_mparameter:MParameter> */
2339 var53 = var_mparameter->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <var_mparameter:MParameter> */
2340 var51 = var53;
2341 RET_LABEL52:(void)0;
2342 }
2343 }
2344 if (var51){
2345 if (varonce54) {
2346 var55 = varonce54;
2347 } else {
2348 var56 = "...";
2349 var57 = 3;
2350 var58 = string__NativeString__to_s_with_length(var56, var57);
2351 var55 = var58;
2352 varonce54 = var55;
2353 }
2354 {
2355 string__FlatBuffer__append(var_b, var55); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2356 }
2357 } else {
2358 }
2359 var59 = 1;
2360 {
2361 var60 = kernel__Int__successor(var_i, var59);
2362 }
2363 var_i = var60;
2364 } else {
2365 goto BREAK_label;
2366 }
2367 }
2368 BREAK_label: (void)0;
2369 if (varonce61) {
2370 var62 = varonce61;
2371 } else {
2372 var63 = ")";
2373 var64 = 1;
2374 var65 = string__NativeString__to_s_with_length(var63, var64);
2375 var62 = var65;
2376 varonce61 = var62;
2377 }
2378 {
2379 string__FlatBuffer__append(var_b, var62); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2380 }
2381 } else {
2382 }
2383 {
2384 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
2385 var68 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
2386 var66 = var68;
2387 RET_LABEL67:(void)0;
2388 }
2389 }
2390 var_ret = var66;
2391 var69 = NULL;
2392 if (var_ret == NULL) {
2393 var70 = 0; /* is null */
2394 } else {
2395 var70 = 1; /* arg is null and recv is not */
2396 }
2397 if (0) {
2398 { /* Inline kernel#Object#!= (var_ret,var69) on <var_ret:nullable MType> */
2399 var_other = var69;
2400 {
2401 var74 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
2402 var73 = var74;
2403 }
2404 var75 = !var73;
2405 var71 = var75;
2406 goto RET_LABEL72;
2407 RET_LABEL72:(void)0;
2408 }
2409 var70 = var71;
2410 }
2411 if (var70){
2412 if (varonce76) {
2413 var77 = varonce76;
2414 } else {
2415 var78 = ": ";
2416 var79 = 2;
2417 var80 = string__NativeString__to_s_with_length(var78, var79);
2418 var77 = var80;
2419 varonce76 = var77;
2420 }
2421 {
2422 string__FlatBuffer__append(var_b, var77); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2423 }
2424 {
2425 var81 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__Object__to_s]))(var_ret) /* to_s on <var_ret:nullable MType(MType)>*/;
2426 }
2427 {
2428 string__FlatBuffer__append(var_b, var81); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
2429 }
2430 } else {
2431 }
2432 {
2433 var82 = string__FlatBuffer__to_s(var_b);
2434 }
2435 var = var82;
2436 goto RET_LABEL;
2437 RET_LABEL:;
2438 return var;
2439 }
2440 /* method model#MSignature#to_s for (self: Object): String */
2441 val* VIRTUAL_model__MSignature__to_s(val* self) {
2442 val* var /* : String */;
2443 val* var1 /* : String */;
2444 var1 = model__MSignature__to_s(self);
2445 var = var1;
2446 RET_LABEL:;
2447 return var;
2448 }
2449 /* method model#MSignature#resolve_for for (self: MSignature, MType, nullable MClassType, MModule, Bool): MSignature */
2450 val* model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
2451 val* var /* : MSignature */;
2452 val* var_mtype /* var mtype: MType */;
2453 val* var_anchor /* var anchor: nullable MClassType */;
2454 val* var_mmodule /* var mmodule: MModule */;
2455 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
2456 val* var1 /* : Array[MParameter] */;
2457 val* var_params /* var params: Array[MParameter] */;
2458 val* var2 /* : Array[MParameter] */;
2459 val* var4 /* : Array[MParameter] */;
2460 val* var_ /* var : Array[MParameter] */;
2461 val* var5 /* : ArrayIterator[nullable Object] */;
2462 val* var_6 /* var : ArrayIterator[MParameter] */;
2463 short int var7 /* : Bool */;
2464 val* var8 /* : nullable Object */;
2465 val* var_p /* var p: MParameter */;
2466 val* var9 /* : MParameter */;
2467 val* var11 /* : nullable MType */;
2468 val* var13 /* : nullable MType */;
2469 val* var_ret /* var ret: nullable MType */;
2470 val* var14 /* : null */;
2471 short int var15 /* : Bool */;
2472 short int var16 /* : Bool */;
2473 val* var_other /* var other: nullable Object */;
2474 short int var18 /* : Bool */;
2475 short int var19 /* : Bool */;
2476 short int var20 /* : Bool */;
2477 val* var21 /* : MType */;
2478 val* var22 /* : MSignature */;
2479 val* var_res /* var res: MSignature */;
2480 var_mtype = p0;
2481 var_anchor = p1;
2482 var_mmodule = p2;
2483 var_cleanup_virtual = p3;
2484 var1 = NEW_array__Array(&type_array__Arraymodel__MParameter);
2485 {
2486 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:Array[MParameter]>*/;
2487 }
2488 var_params = var1;
2489 {
2490 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
2491 var4 = self->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
2492 if (unlikely(var4 == NULL)) {
2493 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2494 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2495 show_backtrace(1);
2496 }
2497 var2 = var4;
2498 RET_LABEL3:(void)0;
2499 }
2500 }
2501 var_ = var2;
2502 {
2503 var5 = array__AbstractArrayRead__iterator(var_);
2504 }
2505 var_6 = var5;
2506 for(;;) {
2507 {
2508 var7 = array__ArrayIterator__is_ok(var_6);
2509 }
2510 if (var7){
2511 {
2512 var8 = array__ArrayIterator__item(var_6);
2513 }
2514 var_p = var8;
2515 {
2516 var9 = model__MParameter__resolve_for(var_p, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual);
2517 }
2518 {
2519 array__Array__add(var_params, var9); /* Direct call array#Array#add on <var_params:Array[MParameter]>*/
2520 }
2521 {
2522 array__ArrayIterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[MParameter]>*/
2523 }
2524 } else {
2525 goto BREAK_label;
2526 }
2527 }
2528 BREAK_label: (void)0;
2529 {
2530 { /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[MParameter]> */
2531 RET_LABEL10:(void)0;
2532 }
2533 }
2534 {
2535 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
2536 var13 = self->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
2537 var11 = var13;
2538 RET_LABEL12:(void)0;
2539 }
2540 }
2541 var_ret = var11;
2542 var14 = NULL;
2543 if (var_ret == NULL) {
2544 var15 = 0; /* is null */
2545 } else {
2546 var15 = 1; /* arg is null and recv is not */
2547 }
2548 if (0) {
2549 { /* Inline kernel#Object#!= (var_ret,var14) on <var_ret:nullable MType> */
2550 var_other = var14;
2551 {
2552 var19 = ((short int (*)(val*, val*))(var_ret->class->vft[COLOR_kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
2553 var18 = var19;
2554 }
2555 var20 = !var18;
2556 var16 = var20;
2557 goto RET_LABEL17;
2558 RET_LABEL17:(void)0;
2559 }
2560 var15 = var16;
2561 }
2562 if (var15){
2563 {
2564 var21 = ((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)>*/;
2565 }
2566 var_ret = var21;
2567 } else {
2568 }
2569 var22 = NEW_model__MSignature(&type_model__MSignature);
2570 {
2571 model__MSignature__init(var22, var_params, var_ret); /* Direct call model#MSignature#init on <var22:MSignature>*/
2572 }
2573 var_res = var22;
2574 var = var_res;
2575 goto RET_LABEL;
2576 RET_LABEL:;
2577 return var;
2578 }
2579 /* method model#MSignature#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
2580 val* VIRTUAL_model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
2581 val* var /* : MType */;
2582 val* var1 /* : MSignature */;
2583 var1 = model__MSignature__resolve_for(self, p0, p1, p2, p3);
2584 var = var1;
2585 RET_LABEL:;
2586 return var;
2587 }
2588 /* method model#MParameter#name for (self: MParameter): String */
2589 val* model__MParameter__name(val* self) {
2590 val* var /* : String */;
2591 val* var1 /* : String */;
2592 var1 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
2593 if (unlikely(var1 == NULL)) {
2594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2595 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
2596 show_backtrace(1);
2597 }
2598 var = var1;
2599 RET_LABEL:;
2600 return var;
2601 }
2602 /* method model#MParameter#name for (self: Object): String */
2603 val* VIRTUAL_model__MParameter__name(val* self) {
2604 val* var /* : String */;
2605 val* var1 /* : String */;
2606 val* var3 /* : String */;
2607 { /* Inline model#MParameter#name (self) on <self:Object(MParameter)> */
2608 var3 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:Object(MParameter)> */
2609 if (unlikely(var3 == NULL)) {
2610 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2611 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
2612 show_backtrace(1);
2613 }
2614 var1 = var3;
2615 RET_LABEL2:(void)0;
2616 }
2617 var = var1;
2618 RET_LABEL:;
2619 return var;
2620 }
2621 /* method model#MParameter#name= for (self: MParameter, String) */
2622 void model__MParameter__name_61d(val* self, val* p0) {
2623 self->attrs[COLOR_model__MParameter___name].val = p0; /* _name on <self:MParameter> */
2624 RET_LABEL:;
2625 }
2626 /* method model#MParameter#name= for (self: Object, String) */
2627 void VIRTUAL_model__MParameter__name_61d(val* self, val* p0) {
2628 { /* Inline model#MParameter#name= (self,p0) on <self:Object(MParameter)> */
2629 self->attrs[COLOR_model__MParameter___name].val = p0; /* _name on <self:Object(MParameter)> */
2630 RET_LABEL1:(void)0;
2631 }
2632 RET_LABEL:;
2633 }
2634 /* method model#MParameter#mtype for (self: MParameter): MType */
2635 val* model__MParameter__mtype(val* self) {
2636 val* var /* : MType */;
2637 val* var1 /* : MType */;
2638 var1 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
2639 if (unlikely(var1 == NULL)) {
2640 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2641 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2642 show_backtrace(1);
2643 }
2644 var = var1;
2645 RET_LABEL:;
2646 return var;
2647 }
2648 /* method model#MParameter#mtype for (self: Object): MType */
2649 val* VIRTUAL_model__MParameter__mtype(val* self) {
2650 val* var /* : MType */;
2651 val* var1 /* : MType */;
2652 val* var3 /* : MType */;
2653 { /* Inline model#MParameter#mtype (self) on <self:Object(MParameter)> */
2654 var3 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:Object(MParameter)> */
2655 if (unlikely(var3 == NULL)) {
2656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2657 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2658 show_backtrace(1);
2659 }
2660 var1 = var3;
2661 RET_LABEL2:(void)0;
2662 }
2663 var = var1;
2664 RET_LABEL:;
2665 return var;
2666 }
2667 /* method model#MParameter#mtype= for (self: MParameter, MType) */
2668 void model__MParameter__mtype_61d(val* self, val* p0) {
2669 self->attrs[COLOR_model__MParameter___mtype].val = p0; /* _mtype on <self:MParameter> */
2670 RET_LABEL:;
2671 }
2672 /* method model#MParameter#mtype= for (self: Object, MType) */
2673 void VIRTUAL_model__MParameter__mtype_61d(val* self, val* p0) {
2674 { /* Inline model#MParameter#mtype= (self,p0) on <self:Object(MParameter)> */
2675 self->attrs[COLOR_model__MParameter___mtype].val = p0; /* _mtype on <self:Object(MParameter)> */
2676 RET_LABEL1:(void)0;
2677 }
2678 RET_LABEL:;
2679 }
2680 /* method model#MParameter#is_vararg for (self: MParameter): Bool */
2681 short int model__MParameter__is_vararg(val* self) {
2682 short int var /* : Bool */;
2683 short int var1 /* : Bool */;
2684 var1 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
2685 var = var1;
2686 RET_LABEL:;
2687 return var;
2688 }
2689 /* method model#MParameter#is_vararg for (self: Object): Bool */
2690 short int VIRTUAL_model__MParameter__is_vararg(val* self) {
2691 short int var /* : Bool */;
2692 short int var1 /* : Bool */;
2693 short int var3 /* : Bool */;
2694 { /* Inline model#MParameter#is_vararg (self) on <self:Object(MParameter)> */
2695 var3 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:Object(MParameter)> */
2696 var1 = var3;
2697 RET_LABEL2:(void)0;
2698 }
2699 var = var1;
2700 RET_LABEL:;
2701 return var;
2702 }
2703 /* method model#MParameter#is_vararg= for (self: MParameter, Bool) */
2704 void model__MParameter__is_vararg_61d(val* self, short int p0) {
2705 self->attrs[COLOR_model__MParameter___is_vararg].s = p0; /* _is_vararg on <self:MParameter> */
2706 RET_LABEL:;
2707 }
2708 /* method model#MParameter#is_vararg= for (self: Object, Bool) */
2709 void VIRTUAL_model__MParameter__is_vararg_61d(val* self, short int p0) {
2710 { /* Inline model#MParameter#is_vararg= (self,p0) on <self:Object(MParameter)> */
2711 self->attrs[COLOR_model__MParameter___is_vararg].s = p0; /* _is_vararg on <self:Object(MParameter)> */
2712 RET_LABEL1:(void)0;
2713 }
2714 RET_LABEL:;
2715 }
2716 /* method model#MParameter#init for (self: MParameter, String, MType, Bool) */
2717 void model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
2718 val* var_name /* var name: String */;
2719 val* var_mtype /* var mtype: MType */;
2720 short int var_is_vararg /* var is_vararg: Bool */;
2721 {
2722 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MParameter>*/;
2723 }
2724 var_name = p0;
2725 var_mtype = p1;
2726 var_is_vararg = p2;
2727 {
2728 { /* Inline model#MParameter#name= (self,var_name) on <self:MParameter> */
2729 self->attrs[COLOR_model__MParameter___name].val = var_name; /* _name on <self:MParameter> */
2730 RET_LABEL1:(void)0;
2731 }
2732 }
2733 {
2734 { /* Inline model#MParameter#mtype= (self,var_mtype) on <self:MParameter> */
2735 self->attrs[COLOR_model__MParameter___mtype].val = var_mtype; /* _mtype on <self:MParameter> */
2736 RET_LABEL2:(void)0;
2737 }
2738 }
2739 {
2740 { /* Inline model#MParameter#is_vararg= (self,var_is_vararg) on <self:MParameter> */
2741 self->attrs[COLOR_model__MParameter___is_vararg].s = var_is_vararg; /* _is_vararg on <self:MParameter> */
2742 RET_LABEL3:(void)0;
2743 }
2744 }
2745 RET_LABEL:;
2746 }
2747 /* method model#MParameter#init for (self: Object, String, MType, Bool) */
2748 void VIRTUAL_model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
2749 model__MParameter__init(self, p0, p1, p2); /* Direct call model#MParameter#init on <self:Object(MParameter)>*/
2750 RET_LABEL:;
2751 }
2752 /* method model#MParameter#to_s for (self: MParameter): String */
2753 val* model__MParameter__to_s(val* self) {
2754 val* var /* : String */;
2755 short int var1 /* : Bool */;
2756 short int var3 /* : Bool */;
2757 val* var4 /* : String */;
2758 val* var6 /* : String */;
2759 static val* varonce;
2760 val* var7 /* : String */;
2761 char* var8 /* : NativeString */;
2762 long var9 /* : Int */;
2763 val* var10 /* : FlatString */;
2764 val* var11 /* : MType */;
2765 val* var13 /* : MType */;
2766 static val* varonce14;
2767 val* var15 /* : String */;
2768 char* var16 /* : NativeString */;
2769 long var17 /* : Int */;
2770 val* var18 /* : FlatString */;
2771 val* var19 /* : Array[Object] */;
2772 long var20 /* : Int */;
2773 val* var21 /* : NativeArray[Object] */;
2774 val* var22 /* : String */;
2775 val* var23 /* : String */;
2776 val* var25 /* : String */;
2777 static val* varonce26;
2778 val* var27 /* : String */;
2779 char* var28 /* : NativeString */;
2780 long var29 /* : Int */;
2781 val* var30 /* : FlatString */;
2782 val* var31 /* : MType */;
2783 val* var33 /* : MType */;
2784 val* var34 /* : Array[Object] */;
2785 long var35 /* : Int */;
2786 val* var36 /* : NativeArray[Object] */;
2787 val* var37 /* : String */;
2788 {
2789 { /* Inline model#MParameter#is_vararg (self) on <self:MParameter> */
2790 var3 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
2791 var1 = var3;
2792 RET_LABEL2:(void)0;
2793 }
2794 }
2795 if (var1){
2796 {
2797 { /* Inline model#MParameter#name (self) on <self:MParameter> */
2798 var6 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
2799 if (unlikely(var6 == NULL)) {
2800 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2801 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
2802 show_backtrace(1);
2803 }
2804 var4 = var6;
2805 RET_LABEL5:(void)0;
2806 }
2807 }
2808 if (varonce) {
2809 var7 = varonce;
2810 } else {
2811 var8 = ": ";
2812 var9 = 2;
2813 var10 = string__NativeString__to_s_with_length(var8, var9);
2814 var7 = var10;
2815 varonce = var7;
2816 }
2817 {
2818 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
2819 var13 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
2820 if (unlikely(var13 == NULL)) {
2821 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2822 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2823 show_backtrace(1);
2824 }
2825 var11 = var13;
2826 RET_LABEL12:(void)0;
2827 }
2828 }
2829 if (varonce14) {
2830 var15 = varonce14;
2831 } else {
2832 var16 = "...";
2833 var17 = 3;
2834 var18 = string__NativeString__to_s_with_length(var16, var17);
2835 var15 = var18;
2836 varonce14 = var15;
2837 }
2838 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
2839 { /* var19 = array_instance Array[Object] */
2840 var20 = 4;
2841 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
2842 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var4;
2843 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var7;
2844 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var11;
2845 ((struct instance_array__NativeArray*)var21)->values[3] = (val*) var15;
2846 {
2847 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
2848 }
2849 }
2850 {
2851 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
2852 }
2853 var = var22;
2854 goto RET_LABEL;
2855 } else {
2856 {
2857 { /* Inline model#MParameter#name (self) on <self:MParameter> */
2858 var25 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
2859 if (unlikely(var25 == NULL)) {
2860 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2861 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
2862 show_backtrace(1);
2863 }
2864 var23 = var25;
2865 RET_LABEL24:(void)0;
2866 }
2867 }
2868 if (varonce26) {
2869 var27 = varonce26;
2870 } else {
2871 var28 = ": ";
2872 var29 = 2;
2873 var30 = string__NativeString__to_s_with_length(var28, var29);
2874 var27 = var30;
2875 varonce26 = var27;
2876 }
2877 {
2878 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
2879 var33 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
2880 if (unlikely(var33 == NULL)) {
2881 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2882 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2883 show_backtrace(1);
2884 }
2885 var31 = var33;
2886 RET_LABEL32:(void)0;
2887 }
2888 }
2889 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
2890 { /* var34 = array_instance Array[Object] */
2891 var35 = 3;
2892 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
2893 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var23;
2894 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var27;
2895 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var31;
2896 {
2897 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
2898 }
2899 }
2900 {
2901 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
2902 }
2903 var = var37;
2904 goto RET_LABEL;
2905 }
2906 RET_LABEL:;
2907 return var;
2908 }
2909 /* method model#MParameter#to_s for (self: Object): String */
2910 val* VIRTUAL_model__MParameter__to_s(val* self) {
2911 val* var /* : String */;
2912 val* var1 /* : String */;
2913 var1 = model__MParameter__to_s(self);
2914 var = var1;
2915 RET_LABEL:;
2916 return var;
2917 }
2918 /* method model#MParameter#resolve_for for (self: MParameter, MType, nullable MClassType, MModule, Bool): MParameter */
2919 val* model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
2920 val* var /* : MParameter */;
2921 val* var_mtype /* var mtype: MType */;
2922 val* var_anchor /* var anchor: nullable MClassType */;
2923 val* var_mmodule /* var mmodule: MModule */;
2924 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
2925 val* var1 /* : MType */;
2926 val* var3 /* : MType */;
2927 short int var4 /* : Bool */;
2928 short int var5 /* : Bool */;
2929 val* var6 /* : MType */;
2930 val* var8 /* : MType */;
2931 val* var9 /* : MType */;
2932 val* var_newtype /* var newtype: MType */;
2933 val* var10 /* : MParameter */;
2934 val* var11 /* : String */;
2935 val* var13 /* : String */;
2936 short int var14 /* : Bool */;
2937 short int var16 /* : Bool */;
2938 val* var_res /* var res: MParameter */;
2939 var_mtype = p0;
2940 var_anchor = p1;
2941 var_mmodule = p2;
2942 var_cleanup_virtual = p3;
2943 {
2944 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
2945 var3 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
2946 if (unlikely(var3 == NULL)) {
2947 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2948 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2949 show_backtrace(1);
2950 }
2951 var1 = var3;
2952 RET_LABEL2:(void)0;
2953 }
2954 }
2955 {
2956 var4 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
2957 }
2958 var5 = !var4;
2959 if (var5){
2960 var = self;
2961 goto RET_LABEL;
2962 } else {
2963 }
2964 {
2965 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
2966 var8 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
2967 if (unlikely(var8 == NULL)) {
2968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2969 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
2970 show_backtrace(1);
2971 }
2972 var6 = var8;
2973 RET_LABEL7:(void)0;
2974 }
2975 }
2976 {
2977 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>*/;
2978 }
2979 var_newtype = var9;
2980 var10 = NEW_model__MParameter(&type_model__MParameter);
2981 {
2982 { /* Inline model#MParameter#name (self) on <self:MParameter> */
2983 var13 = self->attrs[COLOR_model__MParameter___name].val; /* _name on <self:MParameter> */
2984 if (unlikely(var13 == NULL)) {
2985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2986 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
2987 show_backtrace(1);
2988 }
2989 var11 = var13;
2990 RET_LABEL12:(void)0;
2991 }
2992 }
2993 {
2994 { /* Inline model#MParameter#is_vararg (self) on <self:MParameter> */
2995 var16 = self->attrs[COLOR_model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
2996 var14 = var16;
2997 RET_LABEL15:(void)0;
2998 }
2999 }
3000 {
3001 model__MParameter__init(var10, var11, var_newtype, var14); /* Direct call model#MParameter#init on <var10:MParameter>*/
3002 }
3003 var_res = var10;
3004 var = var_res;
3005 goto RET_LABEL;
3006 RET_LABEL:;
3007 return var;
3008 }
3009 /* method model#MParameter#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MParameter */
3010 val* VIRTUAL_model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3011 val* var /* : MParameter */;
3012 val* var1 /* : MParameter */;
3013 var1 = model__MParameter__resolve_for(self, p0, p1, p2, p3);
3014 var = var1;
3015 RET_LABEL:;
3016 return var;
3017 }
3018 /* method model#MParameter#model for (self: MParameter): Model */
3019 val* model__MParameter__model(val* self) {
3020 val* var /* : Model */;
3021 val* var1 /* : MType */;
3022 val* var3 /* : MType */;
3023 val* var4 /* : Model */;
3024 {
3025 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
3026 var3 = self->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
3027 if (unlikely(var3 == NULL)) {
3028 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3029 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
3030 show_backtrace(1);
3031 }
3032 var1 = var3;
3033 RET_LABEL2:(void)0;
3034 }
3035 }
3036 {
3037 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MEntity__model]))(var1) /* model on <var1:MType>*/;
3038 }
3039 var = var4;
3040 goto RET_LABEL;
3041 RET_LABEL:;
3042 return var;
3043 }
3044 /* method model#MParameter#model for (self: Object): Model */
3045 val* VIRTUAL_model__MParameter__model(val* self) {
3046 val* var /* : Model */;
3047 val* var1 /* : Model */;
3048 var1 = model__MParameter__model(self);
3049 var = var1;
3050 RET_LABEL:;
3051 return var;
3052 }
3053 /* method model#MProperty#intro_mclassdef for (self: MProperty): MClassDef */
3054 val* model__MProperty__intro_mclassdef(val* self) {
3055 val* var /* : MClassDef */;
3056 val* var1 /* : MClassDef */;
3057 var1 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
3058 if (unlikely(var1 == NULL)) {
3059 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
3060 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
3061 show_backtrace(1);
3062 }
3063 var = var1;
3064 RET_LABEL:;
3065 return var;
3066 }
3067 /* method model#MProperty#intro_mclassdef for (self: Object): MClassDef */
3068 val* VIRTUAL_model__MProperty__intro_mclassdef(val* self) {
3069 val* var /* : MClassDef */;
3070 val* var1 /* : MClassDef */;
3071 val* var3 /* : MClassDef */;
3072 { /* Inline model#MProperty#intro_mclassdef (self) on <self:Object(MProperty)> */
3073 var3 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:Object(MProperty)> */
3074 if (unlikely(var3 == NULL)) {
3075 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
3076 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
3077 show_backtrace(1);
3078 }
3079 var1 = var3;
3080 RET_LABEL2:(void)0;
3081 }
3082 var = var1;
3083 RET_LABEL:;
3084 return var;
3085 }
3086 /* method model#MProperty#intro_mclassdef= for (self: MProperty, MClassDef) */
3087 void model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
3088 self->attrs[COLOR_model__MProperty___intro_mclassdef].val = p0; /* _intro_mclassdef on <self:MProperty> */
3089 RET_LABEL:;
3090 }
3091 /* method model#MProperty#intro_mclassdef= for (self: Object, MClassDef) */
3092 void VIRTUAL_model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
3093 { /* Inline model#MProperty#intro_mclassdef= (self,p0) on <self:Object(MProperty)> */
3094 self->attrs[COLOR_model__MProperty___intro_mclassdef].val = p0; /* _intro_mclassdef on <self:Object(MProperty)> */
3095 RET_LABEL1:(void)0;
3096 }
3097 RET_LABEL:;
3098 }
3099 /* method model#MProperty#name for (self: MProperty): String */
3100 val* model__MProperty__name(val* self) {
3101 val* var /* : String */;
3102 val* var1 /* : String */;
3103 var1 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:MProperty> */
3104 if (unlikely(var1 == NULL)) {
3105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3106 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
3107 show_backtrace(1);
3108 }
3109 var = var1;
3110 RET_LABEL:;
3111 return var;
3112 }
3113 /* method model#MProperty#name for (self: Object): String */
3114 val* VIRTUAL_model__MProperty__name(val* self) {
3115 val* var /* : String */;
3116 val* var1 /* : String */;
3117 val* var3 /* : String */;
3118 { /* Inline model#MProperty#name (self) on <self:Object(MProperty)> */
3119 var3 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:Object(MProperty)> */
3120 if (unlikely(var3 == NULL)) {
3121 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3122 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
3123 show_backtrace(1);
3124 }
3125 var1 = var3;
3126 RET_LABEL2:(void)0;
3127 }
3128 var = var1;
3129 RET_LABEL:;
3130 return var;
3131 }
3132 /* method model#MProperty#name= for (self: MProperty, String) */
3133 void model__MProperty__name_61d(val* self, val* p0) {
3134 self->attrs[COLOR_model__MProperty___name].val = p0; /* _name on <self:MProperty> */
3135 RET_LABEL:;
3136 }
3137 /* method model#MProperty#name= for (self: Object, String) */
3138 void VIRTUAL_model__MProperty__name_61d(val* self, val* p0) {
3139 { /* Inline model#MProperty#name= (self,p0) on <self:Object(MProperty)> */
3140 self->attrs[COLOR_model__MProperty___name].val = p0; /* _name on <self:Object(MProperty)> */
3141 RET_LABEL1:(void)0;
3142 }
3143 RET_LABEL:;
3144 }
3145 /* method model#MProperty#full_name for (self: MProperty): String */
3146 val* model__MProperty__full_name(val* self) {
3147 val* var /* : String */;
3148 val* var1 /* : MClassDef */;
3149 val* var3 /* : MClassDef */;
3150 val* var4 /* : MModule */;
3151 val* var6 /* : MModule */;
3152 val* var7 /* : String */;
3153 static val* varonce;
3154 val* var8 /* : String */;
3155 char* var9 /* : NativeString */;
3156 long var10 /* : Int */;
3157 val* var11 /* : FlatString */;
3158 val* var12 /* : MClassDef */;
3159 val* var14 /* : MClassDef */;
3160 val* var15 /* : MClass */;
3161 val* var17 /* : MClass */;
3162 val* var18 /* : String */;
3163 val* var20 /* : String */;
3164 static val* varonce21;
3165 val* var22 /* : String */;
3166 char* var23 /* : NativeString */;
3167 long var24 /* : Int */;
3168 val* var25 /* : FlatString */;
3169 val* var26 /* : String */;
3170 val* var28 /* : String */;
3171 val* var29 /* : Array[Object] */;
3172 long var30 /* : Int */;
3173 val* var31 /* : NativeArray[Object] */;
3174 val* var32 /* : String */;
3175 {
3176 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
3177 var3 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
3178 if (unlikely(var3 == NULL)) {
3179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
3180 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
3181 show_backtrace(1);
3182 }
3183 var1 = var3;
3184 RET_LABEL2:(void)0;
3185 }
3186 }
3187 {
3188 { /* Inline model#MClassDef#mmodule (var1) on <var1:MClassDef> */
3189 var6 = var1->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var1:MClassDef> */
3190 if (unlikely(var6 == NULL)) {
3191 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3192 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3193 show_backtrace(1);
3194 }
3195 var4 = var6;
3196 RET_LABEL5:(void)0;
3197 }
3198 }
3199 {
3200 var7 = mmodule__MModule__full_name(var4);
3201 }
3202 if (varonce) {
3203 var8 = varonce;
3204 } else {
3205 var9 = "::";
3206 var10 = 2;
3207 var11 = string__NativeString__to_s_with_length(var9, var10);
3208 var8 = var11;
3209 varonce = var8;
3210 }
3211 {
3212 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
3213 var14 = self->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
3214 if (unlikely(var14 == NULL)) {
3215 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
3216 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
3217 show_backtrace(1);
3218 }
3219 var12 = var14;
3220 RET_LABEL13:(void)0;
3221 }
3222 }
3223 {
3224 { /* Inline model#MClassDef#mclass (var12) on <var12:MClassDef> */
3225 var17 = var12->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var12:MClassDef> */
3226 if (unlikely(var17 == NULL)) {
3227 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3228 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
3229 show_backtrace(1);
3230 }
3231 var15 = var17;
3232 RET_LABEL16:(void)0;
3233 }
3234 }
3235 {
3236 { /* Inline model#MClass#name (var15) on <var15:MClass> */
3237 var20 = var15->attrs[COLOR_model__MClass___name].val; /* _name on <var15:MClass> */
3238 if (unlikely(var20 == NULL)) {
3239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3240 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
3241 show_backtrace(1);
3242 }
3243 var18 = var20;
3244 RET_LABEL19:(void)0;
3245 }
3246 }
3247 if (varonce21) {
3248 var22 = varonce21;
3249 } else {
3250 var23 = "::";
3251 var24 = 2;
3252 var25 = string__NativeString__to_s_with_length(var23, var24);
3253 var22 = var25;
3254 varonce21 = var22;
3255 }
3256 {
3257 { /* Inline model#MProperty#name (self) on <self:MProperty> */
3258 var28 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:MProperty> */
3259 if (unlikely(var28 == NULL)) {
3260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3261 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
3262 show_backtrace(1);
3263 }
3264 var26 = var28;
3265 RET_LABEL27:(void)0;
3266 }
3267 }
3268 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
3269 { /* var29 = array_instance Array[Object] */
3270 var30 = 5;
3271 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
3272 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var7;
3273 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var8;
3274 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var18;
3275 ((struct instance_array__NativeArray*)var31)->values[3] = (val*) var22;
3276 ((struct instance_array__NativeArray*)var31)->values[4] = (val*) var26;
3277 {
3278 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
3279 }
3280 }
3281 {
3282 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
3283 }
3284 var = var32;
3285 goto RET_LABEL;
3286 RET_LABEL:;
3287 return var;
3288 }
3289 /* method model#MProperty#full_name for (self: Object): String */
3290 val* VIRTUAL_model__MProperty__full_name(val* self) {
3291 val* var /* : String */;
3292 val* var1 /* : String */;
3293 var1 = model__MProperty__full_name(self);
3294 var = var1;
3295 RET_LABEL:;
3296 return var;
3297 }
3298 /* method model#MProperty#visibility for (self: MProperty): MVisibility */
3299 val* model__MProperty__visibility(val* self) {
3300 val* var /* : MVisibility */;
3301 val* var1 /* : MVisibility */;
3302 var1 = self->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <self:MProperty> */
3303 if (unlikely(var1 == NULL)) {
3304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3305 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3306 show_backtrace(1);
3307 }
3308 var = var1;
3309 RET_LABEL:;
3310 return var;
3311 }
3312 /* method model#MProperty#visibility for (self: Object): MVisibility */
3313 val* VIRTUAL_model__MProperty__visibility(val* self) {
3314 val* var /* : MVisibility */;
3315 val* var1 /* : MVisibility */;
3316 val* var3 /* : MVisibility */;
3317 { /* Inline model#MProperty#visibility (self) on <self:Object(MProperty)> */
3318 var3 = self->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <self:Object(MProperty)> */
3319 if (unlikely(var3 == NULL)) {
3320 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3321 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3322 show_backtrace(1);
3323 }
3324 var1 = var3;
3325 RET_LABEL2:(void)0;
3326 }
3327 var = var1;
3328 RET_LABEL:;
3329 return var;
3330 }
3331 /* method model#MProperty#visibility= for (self: MProperty, MVisibility) */
3332 void model__MProperty__visibility_61d(val* self, val* p0) {
3333 self->attrs[COLOR_model__MProperty___visibility].val = p0; /* _visibility on <self:MProperty> */
3334 RET_LABEL:;
3335 }
3336 /* method model#MProperty#visibility= for (self: Object, MVisibility) */
3337 void VIRTUAL_model__MProperty__visibility_61d(val* self, val* p0) {
3338 { /* Inline model#MProperty#visibility= (self,p0) on <self:Object(MProperty)> */
3339 self->attrs[COLOR_model__MProperty___visibility].val = p0; /* _visibility on <self:Object(MProperty)> */
3340 RET_LABEL1:(void)0;
3341 }
3342 RET_LABEL:;
3343 }
3344 /* method model#MProperty#init for (self: MProperty, MClassDef, String, MVisibility) */
3345 void model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
3346 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
3347 val* var_name /* var name: String */;
3348 val* var_visibility /* var visibility: MVisibility */;
3349 val* var /* : Array[MProperty] */;
3350 val* var5 /* : Array[MProperty] */;
3351 val* var6 /* : MModule */;
3352 val* var8 /* : MModule */;
3353 val* var9 /* : Model */;
3354 val* var11 /* : Model */;
3355 val* var_model /* var model: Model */;
3356 val* var12 /* : MultiHashMap[String, MProperty] */;
3357 val* var14 /* : MultiHashMap[String, MProperty] */;
3358 val* var15 /* : Array[MProperty] */;
3359 val* var17 /* : Array[MProperty] */;
3360 {
3361 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MProperty>*/;
3362 }
3363 var_intro_mclassdef = p0;
3364 var_name = p1;
3365 var_visibility = p2;
3366 {
3367 { /* Inline model#MProperty#intro_mclassdef= (self,var_intro_mclassdef) on <self:MProperty> */
3368 self->attrs[COLOR_model__MProperty___intro_mclassdef].val = var_intro_mclassdef; /* _intro_mclassdef on <self:MProperty> */
3369 RET_LABEL1:(void)0;
3370 }
3371 }
3372 {
3373 { /* Inline model#MProperty#name= (self,var_name) on <self:MProperty> */
3374 self->attrs[COLOR_model__MProperty___name].val = var_name; /* _name on <self:MProperty> */
3375 RET_LABEL2:(void)0;
3376 }
3377 }
3378 {
3379 { /* Inline model#MProperty#visibility= (self,var_visibility) on <self:MProperty> */
3380 self->attrs[COLOR_model__MProperty___visibility].val = var_visibility; /* _visibility on <self:MProperty> */
3381 RET_LABEL3:(void)0;
3382 }
3383 }
3384 {
3385 { /* Inline model#MClassDef#intro_mproperties (var_intro_mclassdef) on <var_intro_mclassdef:MClassDef> */
3386 var5 = var_intro_mclassdef->attrs[COLOR_model__MClassDef___intro_mproperties].val; /* _intro_mproperties on <var_intro_mclassdef:MClassDef> */
3387 if (unlikely(var5 == NULL)) {
3388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mproperties");
3389 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 588);
3390 show_backtrace(1);
3391 }
3392 var = var5;
3393 RET_LABEL4:(void)0;
3394 }
3395 }
3396 {
3397 array__Array__add(var, self); /* Direct call array#Array#add on <var:Array[MProperty]>*/
3398 }
3399 {
3400 { /* Inline model#MClassDef#mmodule (var_intro_mclassdef) on <var_intro_mclassdef:MClassDef> */
3401 var8 = var_intro_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_intro_mclassdef:MClassDef> */
3402 if (unlikely(var8 == NULL)) {
3403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3404 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3405 show_backtrace(1);
3406 }
3407 var6 = var8;
3408 RET_LABEL7:(void)0;
3409 }
3410 }
3411 {
3412 { /* Inline mmodule#MModule#model (var6) on <var6:MModule> */
3413 var11 = var6->attrs[COLOR_mmodule__MModule___model].val; /* _model on <var6:MModule> */
3414 if (unlikely(var11 == NULL)) {
3415 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
3416 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 72);
3417 show_backtrace(1);
3418 }
3419 var9 = var11;
3420 RET_LABEL10:(void)0;
3421 }
3422 }
3423 var_model = var9;
3424 {
3425 { /* Inline model#Model#mproperties_by_name (var_model) on <var_model:Model> */
3426 var14 = var_model->attrs[COLOR_model__Model___mproperties_by_name].val; /* _mproperties_by_name on <var_model:Model> */
3427 if (unlikely(var14 == NULL)) {
3428 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperties_by_name");
3429 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 84);
3430 show_backtrace(1);
3431 }
3432 var12 = var14;
3433 RET_LABEL13:(void)0;
3434 }
3435 }
3436 {
3437 more_collections__MultiHashMap__add_one(var12, var_name, self); /* Direct call more_collections#MultiHashMap#add_one on <var12:MultiHashMap[String, MProperty]>*/
3438 }
3439 {
3440 { /* Inline model#Model#mproperties (var_model) on <var_model:Model> */
3441 var17 = var_model->attrs[COLOR_model__Model___mproperties].val; /* _mproperties on <var_model:Model> */
3442 if (unlikely(var17 == NULL)) {
3443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperties");
3444 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 37);
3445 show_backtrace(1);
3446 }
3447 var15 = var17;
3448 RET_LABEL16:(void)0;
3449 }
3450 }
3451 {
3452 array__Array__add(var15, self); /* Direct call array#Array#add on <var15:Array[MProperty]>*/
3453 }
3454 RET_LABEL:;
3455 }
3456 /* method model#MProperty#init for (self: Object, MClassDef, String, MVisibility) */
3457 void VIRTUAL_model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
3458 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:Object(MProperty)>*/
3459 RET_LABEL:;
3460 }
3461 /* method model#MProperty#mpropdefs for (self: MProperty): Array[MPropDef] */
3462 val* model__MProperty__mpropdefs(val* self) {
3463 val* var /* : Array[MPropDef] */;
3464 val* var1 /* : Array[MPropDef] */;
3465 var1 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
3466 if (unlikely(var1 == NULL)) {
3467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3468 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
3469 show_backtrace(1);
3470 }
3471 var = var1;
3472 RET_LABEL:;
3473 return var;
3474 }
3475 /* method model#MProperty#mpropdefs for (self: Object): Array[MPropDef] */
3476 val* VIRTUAL_model__MProperty__mpropdefs(val* self) {
3477 val* var /* : Array[MPropDef] */;
3478 val* var1 /* : Array[MPropDef] */;
3479 val* var3 /* : Array[MPropDef] */;
3480 { /* Inline model#MProperty#mpropdefs (self) on <self:Object(MProperty)> */
3481 var3 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:Object(MProperty)> */
3482 if (unlikely(var3 == NULL)) {
3483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3484 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
3485 show_backtrace(1);
3486 }
3487 var1 = var3;
3488 RET_LABEL2:(void)0;
3489 }
3490 var = var1;
3491 RET_LABEL:;
3492 return var;
3493 }
3494 /* method model#MProperty#intro for (self: MProperty): MPropDef */
3495 val* model__MProperty__intro(val* self) {
3496 val* var /* : MPropDef */;
3497 val* var1 /* : MPropDef */;
3498 var1 = self->attrs[COLOR_model__MProperty___intro].val; /* _intro on <self:MProperty> */
3499 if (unlikely(var1 == NULL)) {
3500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3501 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3502 show_backtrace(1);
3503 }
3504 var = var1;
3505 RET_LABEL:;
3506 return var;
3507 }
3508 /* method model#MProperty#intro for (self: Object): MPropDef */
3509 val* VIRTUAL_model__MProperty__intro(val* self) {
3510 val* var /* : MPropDef */;
3511 val* var1 /* : MPropDef */;
3512 val* var3 /* : MPropDef */;
3513 { /* Inline model#MProperty#intro (self) on <self:Object(MProperty)> */
3514 var3 = self->attrs[COLOR_model__MProperty___intro].val; /* _intro on <self:Object(MProperty)> */
3515 if (unlikely(var3 == NULL)) {
3516 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3517 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3518 show_backtrace(1);
3519 }
3520 var1 = var3;
3521 RET_LABEL2:(void)0;
3522 }
3523 var = var1;
3524 RET_LABEL:;
3525 return var;
3526 }
3527 /* method model#MProperty#intro= for (self: MProperty, MPropDef) */
3528 void model__MProperty__intro_61d(val* self, val* p0) {
3529 short int var /* : Bool */;
3530 int cltype;
3531 int idtype;
3532 const struct type* type_struct;
3533 const char* var_class_name;
3534 /* Covariant cast for argument 0 (intro) <p0:MPropDef> isa MPROPDEF */
3535 /* <p0:MPropDef> isa MPROPDEF */
3536 type_struct = self->type->resolution_table->types[COLOR_model__MProperty_VTMPROPDEF];
3537 cltype = type_struct->color;
3538 idtype = type_struct->id;
3539 if(cltype >= p0->type->table_size) {
3540 var = 0;
3541 } else {
3542 var = p0->type->type_table[cltype] == idtype;
3543 }
3544 if (unlikely(!var)) {
3545 var_class_name = p0 == NULL ? "null" : p0->type->name;
3546 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
3547 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3548 show_backtrace(1);
3549 }
3550 self->attrs[COLOR_model__MProperty___intro].val = p0; /* _intro on <self:MProperty> */
3551 RET_LABEL:;
3552 }
3553 /* method model#MProperty#intro= for (self: Object, MPropDef) */
3554 void VIRTUAL_model__MProperty__intro_61d(val* self, val* p0) {
3555 short int var /* : Bool */;
3556 int cltype;
3557 int idtype;
3558 const struct type* type_struct;
3559 const char* var_class_name;
3560 { /* Inline model#MProperty#intro= (self,p0) on <self:Object(MProperty)> */
3561 /* Covariant cast for argument 0 (intro) <p0:MPropDef> isa MPROPDEF */
3562 /* <p0:MPropDef> isa MPROPDEF */
3563 type_struct = self->type->resolution_table->types[COLOR_model__MProperty_VTMPROPDEF];
3564 cltype = type_struct->color;
3565 idtype = type_struct->id;
3566 if(cltype >= p0->type->table_size) {
3567 var = 0;
3568 } else {
3569 var = p0->type->type_table[cltype] == idtype;
3570 }
3571 if (unlikely(!var)) {
3572 var_class_name = p0 == NULL ? "null" : p0->type->name;
3573 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
3574 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3575 show_backtrace(1);
3576 }
3577 self->attrs[COLOR_model__MProperty___intro].val = p0; /* _intro on <self:Object(MProperty)> */
3578 RET_LABEL1:(void)0;
3579 }
3580 RET_LABEL:;
3581 }
3582 /* method model#MProperty#model for (self: MProperty): Model */
3583 val* model__MProperty__model(val* self) {
3584 val* var /* : Model */;
3585 val* var1 /* : MPropDef */;
3586 val* var3 /* : MPropDef */;
3587 val* var4 /* : Model */;
3588 {
3589 { /* Inline model#MProperty#intro (self) on <self:MProperty> */
3590 var3 = self->attrs[COLOR_model__MProperty___intro].val; /* _intro on <self:MProperty> */
3591 if (unlikely(var3 == NULL)) {
3592 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3593 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3594 show_backtrace(1);
3595 }
3596 var1 = var3;
3597 RET_LABEL2:(void)0;
3598 }
3599 }
3600 {
3601 var4 = model__MPropDef__model(var1);
3602 }
3603 var = var4;
3604 goto RET_LABEL;
3605 RET_LABEL:;
3606 return var;
3607 }
3608 /* method model#MProperty#model for (self: Object): Model */
3609 val* VIRTUAL_model__MProperty__model(val* self) {
3610 val* var /* : Model */;
3611 val* var1 /* : Model */;
3612 var1 = model__MProperty__model(self);
3613 var = var1;
3614 RET_LABEL:;
3615 return var;
3616 }
3617 /* method model#MProperty#to_s for (self: MProperty): String */
3618 val* model__MProperty__to_s(val* self) {
3619 val* var /* : String */;
3620 val* var1 /* : String */;
3621 val* var3 /* : String */;
3622 {
3623 { /* Inline model#MProperty#name (self) on <self:MProperty> */
3624 var3 = self->attrs[COLOR_model__MProperty___name].val; /* _name on <self:MProperty> */
3625 if (unlikely(var3 == NULL)) {
3626 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3627 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
3628 show_backtrace(1);
3629 }
3630 var1 = var3;
3631 RET_LABEL2:(void)0;
3632 }
3633 }
3634 var = var1;
3635 goto RET_LABEL;
3636 RET_LABEL:;
3637 return var;
3638 }
3639 /* method model#MProperty#to_s for (self: Object): String */
3640 val* VIRTUAL_model__MProperty__to_s(val* self) {
3641 val* var /* : String */;
3642 val* var1 /* : String */;
3643 var1 = model__MProperty__to_s(self);
3644 var = var1;
3645 RET_LABEL:;
3646 return var;
3647 }
3648 /* method model#MProperty#lookup_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
3649 val* model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
3650 val* var /* : Array[MPropDef] */;
3651 val* var_mmodule /* var mmodule: MModule */;
3652 val* var_mtype /* var mtype: MType */;
3653 short int var1 /* : Bool */;
3654 short int var2 /* : Bool */;
3655 val* var3 /* : MType */;
3656 val* var4 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3657 val* var6 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3658 val* var7 /* : nullable Object */;
3659 val* var_cache /* var cache: nullable Array[MPropDef] */;
3660 val* var8 /* : null */;
3661 short int var9 /* : Bool */;
3662 short int var10 /* : Bool */;
3663 val* var_other /* var other: nullable Object */;
3664 short int var12 /* : Bool */;
3665 short int var13 /* : Bool */;
3666 short int var14 /* : Bool */;
3667 val* var15 /* : Array[MPropDef] */;
3668 val* var_candidates /* var candidates: Array[MPropDef] */;
3669 val* var16 /* : Array[MPropDef] */;
3670 val* var18 /* : Array[MPropDef] */;
3671 val* var_ /* var : Array[MPropDef] */;
3672 val* var19 /* : ArrayIterator[nullable Object] */;
3673 val* var_20 /* var : ArrayIterator[MPropDef] */;
3674 short int var21 /* : Bool */;
3675 val* var22 /* : nullable Object */;
3676 val* var_mpropdef /* var mpropdef: MPropDef */;
3677 val* var23 /* : POSetElement[MModule] */;
3678 val* var25 /* : POSetElement[MModule] */;
3679 val* var26 /* : MClassDef */;
3680 val* var28 /* : MClassDef */;
3681 val* var29 /* : MModule */;
3682 val* var31 /* : MModule */;
3683 short int var32 /* : Bool */;
3684 short int var33 /* : Bool */;
3685 val* var34 /* : null */;
3686 val* var35 /* : MClassDef */;
3687 val* var37 /* : MClassDef */;
3688 val* var38 /* : MClassType */;
3689 val* var40 /* : MClassType */;
3690 short int var41 /* : Bool */;
3691 short int var42 /* : Bool */;
3692 long var45 /* : Int */;
3693 long var47 /* : Int */;
3694 long var48 /* : Int */;
3695 short int var49 /* : Bool */;
3696 short int var51 /* : Bool */;
3697 int cltype;
3698 int idtype;
3699 const char* var_class_name;
3700 short int var52 /* : Bool */;
3701 val* var53 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3702 val* var55 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3703 val* var56 /* : Array[MPropDef] */;
3704 var_mmodule = p0;
3705 var_mtype = p1;
3706 {
3707 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
3708 }
3709 var2 = !var1;
3710 if (unlikely(!var2)) {
3711 PRINT_ERROR("Runtime error: %s", "Assert failed");
3712 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1668);
3713 show_backtrace(1);
3714 }
3715 {
3716 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
3717 }
3718 var_mtype = var3;
3719 {
3720 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:MProperty> */
3721 var6 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
3722 if (unlikely(var6 == NULL)) {
3723 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
3724 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1695);
3725 show_backtrace(1);
3726 }
3727 var4 = var6;
3728 RET_LABEL5:(void)0;
3729 }
3730 }
3731 {
3732 var7 = more_collections__HashMap2___91d_93d(var4, var_mmodule, var_mtype);
3733 }
3734 var_cache = var7;
3735 var8 = NULL;
3736 if (var_cache == NULL) {
3737 var9 = 0; /* is null */
3738 } else {
3739 var9 = 1; /* arg is null and recv is not */
3740 }
3741 if (0) {
3742 { /* Inline kernel#Object#!= (var_cache,var8) on <var_cache:nullable Array[MPropDef]> */
3743 var_other = var8;
3744 {
3745 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])>*/;
3746 var12 = var13;
3747 }
3748 var14 = !var12;
3749 var10 = var14;
3750 goto RET_LABEL11;
3751 RET_LABEL11:(void)0;
3752 }
3753 var9 = var10;
3754 }
3755 if (var9){
3756 var = var_cache;
3757 goto RET_LABEL;
3758 } else {
3759 }
3760 var15 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
3761 {
3762 ((void (*)(val*))(var15->class->vft[COLOR_kernel__Object__init]))(var15) /* init on <var15:Array[MPropDef]>*/;
3763 }
3764 var_candidates = var15;
3765 {
3766 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
3767 var18 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
3768 if (unlikely(var18 == NULL)) {
3769 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
3770 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
3771 show_backtrace(1);
3772 }
3773 var16 = var18;
3774 RET_LABEL17:(void)0;
3775 }
3776 }
3777 var_ = var16;
3778 {
3779 var19 = array__AbstractArrayRead__iterator(var_);
3780 }
3781 var_20 = var19;
3782 for(;;) {
3783 {
3784 var21 = array__ArrayIterator__is_ok(var_20);
3785 }
3786 if (var21){
3787 {
3788 var22 = array__ArrayIterator__item(var_20);
3789 }
3790 var_mpropdef = var22;
3791 {
3792 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
3793 var25 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
3794 if (unlikely(var25 == NULL)) {
3795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
3796 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
3797 show_backtrace(1);
3798 }
3799 var23 = var25;
3800 RET_LABEL24:(void)0;
3801 }
3802 }
3803 {
3804 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
3805 var28 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
3806 if (unlikely(var28 == NULL)) {
3807 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3808 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
3809 show_backtrace(1);
3810 }
3811 var26 = var28;
3812 RET_LABEL27:(void)0;
3813 }
3814 }
3815 {
3816 { /* Inline model#MClassDef#mmodule (var26) on <var26:MClassDef> */
3817 var31 = var26->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var26:MClassDef> */
3818 if (unlikely(var31 == NULL)) {
3819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3820 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3821 show_backtrace(1);
3822 }
3823 var29 = var31;
3824 RET_LABEL30:(void)0;
3825 }
3826 }
3827 {
3828 var32 = poset__POSetElement___60d_61d(var23, var29);
3829 }
3830 var33 = !var32;
3831 if (var33){
3832 goto BREAK_label;
3833 } else {
3834 }
3835 var34 = NULL;
3836 {
3837 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
3838 var37 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
3839 if (unlikely(var37 == NULL)) {
3840 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3841 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
3842 show_backtrace(1);
3843 }
3844 var35 = var37;
3845 RET_LABEL36:(void)0;
3846 }
3847 }
3848 {
3849 { /* Inline model#MClassDef#bound_mtype (var35) on <var35:MClassDef> */
3850 var40 = var35->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var35:MClassDef> */
3851 if (unlikely(var40 == NULL)) {
3852 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3853 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
3854 show_backtrace(1);
3855 }
3856 var38 = var40;
3857 RET_LABEL39:(void)0;
3858 }
3859 }
3860 {
3861 var41 = model__MType__is_subtype(var_mtype, var_mmodule, var34, var38);
3862 }
3863 var42 = !var41;
3864 if (var42){
3865 goto BREAK_label;
3866 } else {
3867 }
3868 {
3869 array__Array__add(var_candidates, var_mpropdef); /* Direct call array#Array#add on <var_candidates:Array[MPropDef]>*/
3870 }
3871 BREAK_label: (void)0;
3872 {
3873 array__ArrayIterator__next(var_20); /* Direct call array#ArrayIterator#next on <var_20:ArrayIterator[MPropDef]>*/
3874 }
3875 } else {
3876 goto BREAK_label43;
3877 }
3878 }
3879 BREAK_label43: (void)0;
3880 {
3881 { /* Inline abstract_collection#Iterator#finish (var_20) on <var_20:ArrayIterator[MPropDef]> */
3882 RET_LABEL44:(void)0;
3883 }
3884 }
3885 {
3886 { /* Inline array#AbstractArrayRead#length (var_candidates) on <var_candidates:Array[MPropDef]> */
3887 var47 = var_candidates->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
3888 var45 = var47;
3889 RET_LABEL46:(void)0;
3890 }
3891 }
3892 var48 = 1;
3893 {
3894 { /* Inline kernel#Int#<= (var45,var48) on <var45:Int> */
3895 /* Covariant cast for argument 0 (i) <var48:Int> isa OTHER */
3896 /* <var48:Int> isa OTHER */
3897 var51 = 1; /* easy <var48:Int> isa OTHER*/
3898 if (unlikely(!var51)) {
3899 var_class_name = type_kernel__Int.name;
3900 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3901 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
3902 show_backtrace(1);
3903 }
3904 var52 = var45 <= var48;
3905 var49 = var52;
3906 goto RET_LABEL50;
3907 RET_LABEL50:(void)0;
3908 }
3909 }
3910 if (var49){
3911 {
3912 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:MProperty> */
3913 var55 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
3914 if (unlikely(var55 == NULL)) {
3915 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
3916 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1695);
3917 show_backtrace(1);
3918 }
3919 var53 = var55;
3920 RET_LABEL54:(void)0;
3921 }
3922 }
3923 {
3924 more_collections__HashMap2___91d_93d_61d(var53, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var53:HashMap2[MModule, MType, Array[MPropDef]]>*/
3925 }
3926 var = var_candidates;
3927 goto RET_LABEL;
3928 } else {
3929 }
3930 {
3931 var56 = model__MProperty__select_most_specific(self, var_mmodule, var_candidates);
3932 }
3933 var = var56;
3934 goto RET_LABEL;
3935 RET_LABEL:;
3936 return var;
3937 }
3938 /* method model#MProperty#lookup_definitions for (self: Object, MModule, MType): Array[MPropDef] */
3939 val* VIRTUAL_model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
3940 val* var /* : Array[MPropDef] */;
3941 val* var1 /* : Array[MPropDef] */;
3942 var1 = model__MProperty__lookup_definitions(self, p0, p1);
3943 var = var1;
3944 RET_LABEL:;
3945 return var;
3946 }
3947 /* method model#MProperty#lookup_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
3948 val* model__MProperty__lookup_definitions_cache(val* self) {
3949 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3950 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3951 var1 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
3952 if (unlikely(var1 == NULL)) {
3953 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
3954 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1695);
3955 show_backtrace(1);
3956 }
3957 var = var1;
3958 RET_LABEL:;
3959 return var;
3960 }
3961 /* method model#MProperty#lookup_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
3962 val* VIRTUAL_model__MProperty__lookup_definitions_cache(val* self) {
3963 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3964 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3965 val* var3 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
3966 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:Object(MProperty)> */
3967 var3 = self->attrs[COLOR_model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:Object(MProperty)> */
3968 if (unlikely(var3 == NULL)) {
3969 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
3970 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1695);
3971 show_backtrace(1);
3972 }
3973 var1 = var3;
3974 RET_LABEL2:(void)0;
3975 }
3976 var = var1;
3977 RET_LABEL:;
3978 return var;
3979 }
3980 /* method model#MProperty#lookup_super_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
3981 val* model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
3982 val* var /* : Array[MPropDef] */;
3983 val* var_mmodule /* var mmodule: MModule */;
3984 val* var_mtype /* var mtype: MType */;
3985 short int var1 /* : Bool */;
3986 short int var2 /* : Bool */;
3987 val* var3 /* : MType */;
3988 val* var4 /* : Array[MPropDef] */;
3989 val* var_candidates /* var candidates: Array[MPropDef] */;
3990 val* var5 /* : Array[MPropDef] */;
3991 val* var7 /* : Array[MPropDef] */;
3992 val* var_ /* var : Array[MPropDef] */;
3993 val* var8 /* : ArrayIterator[nullable Object] */;
3994 val* var_9 /* var : ArrayIterator[MPropDef] */;
3995 short int var10 /* : Bool */;
3996 val* var11 /* : nullable Object */;
3997 val* var_mpropdef /* var mpropdef: MPropDef */;
3998 val* var12 /* : POSetElement[MModule] */;
3999 val* var14 /* : POSetElement[MModule] */;
4000 val* var15 /* : MClassDef */;
4001 val* var17 /* : MClassDef */;
4002 val* var18 /* : MModule */;
4003 val* var20 /* : MModule */;
4004 short int var21 /* : Bool */;
4005 short int var22 /* : Bool */;
4006 val* var23 /* : null */;
4007 val* var24 /* : MClassDef */;
4008 val* var26 /* : MClassDef */;
4009 val* var27 /* : MClassType */;
4010 val* var29 /* : MClassType */;
4011 short int var30 /* : Bool */;
4012 short int var31 /* : Bool */;
4013 short int var32 /* : Bool */;
4014 val* var33 /* : MClassDef */;
4015 val* var35 /* : MClassDef */;
4016 val* var36 /* : MClassType */;
4017 val* var38 /* : MClassType */;
4018 short int var39 /* : Bool */;
4019 short int var40 /* : Bool */;
4020 val* var_other /* var other: nullable Object */;
4021 short int var42 /* : Bool */;
4022 short int var44 /* : Bool */;
4023 short int var_45 /* var : Bool */;
4024 val* var46 /* : MClassDef */;
4025 val* var48 /* : MClassDef */;
4026 val* var49 /* : MModule */;
4027 val* var51 /* : MModule */;
4028 short int var52 /* : Bool */;
4029 short int var53 /* : Bool */;
4030 short int var55 /* : Bool */;
4031 short int var57 /* : Bool */;
4032 long var60 /* : Int */;
4033 long var62 /* : Int */;
4034 long var63 /* : Int */;
4035 short int var64 /* : Bool */;
4036 short int var66 /* : Bool */;
4037 int cltype;
4038 int idtype;
4039 const char* var_class_name;
4040 short int var67 /* : Bool */;
4041 val* var68 /* : Array[MPropDef] */;
4042 var_mmodule = p0;
4043 var_mtype = p1;
4044 {
4045 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
4046 }
4047 var2 = !var1;
4048 if (unlikely(!var2)) {
4049 PRINT_ERROR("Runtime error: %s", "Assert failed");
4050 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1707);
4051 show_backtrace(1);
4052 }
4053 {
4054 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
4055 }
4056 var_mtype = var3;
4057 var4 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
4058 {
4059 ((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on <var4:Array[MPropDef]>*/;
4060 }
4061 var_candidates = var4;
4062 {
4063 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
4064 var7 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
4065 if (unlikely(var7 == NULL)) {
4066 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
4067 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
4068 show_backtrace(1);
4069 }
4070 var5 = var7;
4071 RET_LABEL6:(void)0;
4072 }
4073 }
4074 var_ = var5;
4075 {
4076 var8 = array__AbstractArrayRead__iterator(var_);
4077 }
4078 var_9 = var8;
4079 for(;;) {
4080 {
4081 var10 = array__ArrayIterator__is_ok(var_9);
4082 }
4083 if (var10){
4084 {
4085 var11 = array__ArrayIterator__item(var_9);
4086 }
4087 var_mpropdef = var11;
4088 {
4089 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
4090 var14 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
4091 if (unlikely(var14 == NULL)) {
4092 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
4093 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
4094 show_backtrace(1);
4095 }
4096 var12 = var14;
4097 RET_LABEL13:(void)0;
4098 }
4099 }
4100 {
4101 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
4102 var17 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
4103 if (unlikely(var17 == NULL)) {
4104 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4105 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4106 show_backtrace(1);
4107 }
4108 var15 = var17;
4109 RET_LABEL16:(void)0;
4110 }
4111 }
4112 {
4113 { /* Inline model#MClassDef#mmodule (var15) on <var15:MClassDef> */
4114 var20 = var15->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var15:MClassDef> */
4115 if (unlikely(var20 == NULL)) {
4116 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4117 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
4118 show_backtrace(1);
4119 }
4120 var18 = var20;
4121 RET_LABEL19:(void)0;
4122 }
4123 }
4124 {
4125 var21 = poset__POSetElement___60d_61d(var12, var18);
4126 }
4127 var22 = !var21;
4128 if (var22){
4129 goto BREAK_label;
4130 } else {
4131 }
4132 var23 = NULL;
4133 {
4134 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
4135 var26 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
4136 if (unlikely(var26 == NULL)) {
4137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4138 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4139 show_backtrace(1);
4140 }
4141 var24 = var26;
4142 RET_LABEL25:(void)0;
4143 }
4144 }
4145 {
4146 { /* Inline model#MClassDef#bound_mtype (var24) on <var24:MClassDef> */
4147 var29 = var24->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var24:MClassDef> */
4148 if (unlikely(var29 == NULL)) {
4149 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4150 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4151 show_backtrace(1);
4152 }
4153 var27 = var29;
4154 RET_LABEL28:(void)0;
4155 }
4156 }
4157 {
4158 var30 = model__MType__is_subtype(var_mtype, var_mmodule, var23, var27);
4159 }
4160 var31 = !var30;
4161 if (var31){
4162 goto BREAK_label;
4163 } else {
4164 }
4165 {
4166 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
4167 var35 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
4168 if (unlikely(var35 == NULL)) {
4169 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4170 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4171 show_backtrace(1);
4172 }
4173 var33 = var35;
4174 RET_LABEL34:(void)0;
4175 }
4176 }
4177 {
4178 { /* Inline model#MClassDef#bound_mtype (var33) on <var33:MClassDef> */
4179 var38 = var33->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var33:MClassDef> */
4180 if (unlikely(var38 == NULL)) {
4181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4182 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4183 show_backtrace(1);
4184 }
4185 var36 = var38;
4186 RET_LABEL37:(void)0;
4187 }
4188 }
4189 {
4190 { /* Inline kernel#Object#== (var_mtype,var36) on <var_mtype:MType> */
4191 var_other = var36;
4192 {
4193 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:MType> */
4194 var44 = var_mtype == var_other;
4195 var42 = var44;
4196 goto RET_LABEL43;
4197 RET_LABEL43:(void)0;
4198 }
4199 }
4200 var40 = var42;
4201 goto RET_LABEL41;
4202 RET_LABEL41:(void)0;
4203 }
4204 var39 = var40;
4205 }
4206 var_45 = var39;
4207 if (var39){
4208 {
4209 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
4210 var48 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
4211 if (unlikely(var48 == NULL)) {
4212 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4213 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4214 show_backtrace(1);
4215 }
4216 var46 = var48;
4217 RET_LABEL47:(void)0;
4218 }
4219 }
4220 {
4221 { /* Inline model#MClassDef#mmodule (var46) on <var46:MClassDef> */
4222 var51 = var46->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var46:MClassDef> */
4223 if (unlikely(var51 == NULL)) {
4224 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4225 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
4226 show_backtrace(1);
4227 }
4228 var49 = var51;
4229 RET_LABEL50:(void)0;
4230 }
4231 }
4232 {
4233 { /* Inline kernel#Object#== (var_mmodule,var49) on <var_mmodule:MModule> */
4234 var_other = var49;
4235 {
4236 { /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on <var_mmodule:MModule> */
4237 var57 = var_mmodule == var_other;
4238 var55 = var57;
4239 goto RET_LABEL56;
4240 RET_LABEL56:(void)0;
4241 }
4242 }
4243 var53 = var55;
4244 goto RET_LABEL54;
4245 RET_LABEL54:(void)0;
4246 }
4247 var52 = var53;
4248 }
4249 var32 = var52;
4250 } else {
4251 var32 = var_45;
4252 }
4253 if (var32){
4254 goto BREAK_label;
4255 } else {
4256 }
4257 {
4258 array__Array__add(var_candidates, var_mpropdef); /* Direct call array#Array#add on <var_candidates:Array[MPropDef]>*/
4259 }
4260 BREAK_label: (void)0;
4261 {
4262 array__ArrayIterator__next(var_9); /* Direct call array#ArrayIterator#next on <var_9:ArrayIterator[MPropDef]>*/
4263 }
4264 } else {
4265 goto BREAK_label58;
4266 }
4267 }
4268 BREAK_label58: (void)0;
4269 {
4270 { /* Inline abstract_collection#Iterator#finish (var_9) on <var_9:ArrayIterator[MPropDef]> */
4271 RET_LABEL59:(void)0;
4272 }
4273 }
4274 {
4275 { /* Inline array#AbstractArrayRead#length (var_candidates) on <var_candidates:Array[MPropDef]> */
4276 var62 = var_candidates->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
4277 var60 = var62;
4278 RET_LABEL61:(void)0;
4279 }
4280 }
4281 var63 = 1;
4282 {
4283 { /* Inline kernel#Int#<= (var60,var63) on <var60:Int> */
4284 /* Covariant cast for argument 0 (i) <var63:Int> isa OTHER */
4285 /* <var63:Int> isa OTHER */
4286 var66 = 1; /* easy <var63:Int> isa OTHER*/
4287 if (unlikely(!var66)) {
4288 var_class_name = type_kernel__Int.name;
4289 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4290 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
4291 show_backtrace(1);
4292 }
4293 var67 = var60 <= var63;
4294 var64 = var67;
4295 goto RET_LABEL65;
4296 RET_LABEL65:(void)0;
4297 }
4298 }
4299 if (var64){
4300 var = var_candidates;
4301 goto RET_LABEL;
4302 } else {
4303 }
4304 {
4305 var68 = model__MProperty__select_most_specific(self, var_mmodule, var_candidates);
4306 }
4307 var = var68;
4308 goto RET_LABEL;
4309 RET_LABEL:;
4310 return var;
4311 }
4312 /* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
4313 val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
4314 val* var /* : Array[MPropDef] */;
4315 val* var1 /* : Array[MPropDef] */;
4316 var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
4317 var = var1;
4318 RET_LABEL:;
4319 return var;
4320 }
4321 /* method model#MProperty#select_most_specific for (self: MProperty, MModule, Array[MPropDef]): Array[MPropDef] */
4322 val* model__MProperty__select_most_specific(val* self, val* p0, val* p1) {
4323 val* var /* : Array[MPropDef] */;
4324 short int var1 /* : Bool */;
4325 int cltype;
4326 int idtype;
4327 const struct type* type_struct;
4328 const char* var_class_name;
4329 val* var_mmodule /* var mmodule: MModule */;
4330 val* var_candidates /* var candidates: Array[MPropDef] */;
4331 val* var2 /* : Array[MPropDef] */;
4332 val* var_res /* var res: Array[MPropDef] */;
4333 val* var_ /* var : Array[MPropDef] */;
4334 val* var3 /* : ArrayIterator[nullable Object] */;
4335 val* var_4 /* var : ArrayIterator[MPropDef] */;
4336 short int var5 /* : Bool */;
4337 val* var6 /* : nullable Object */;
4338 val* var_pd1 /* var pd1: MPropDef */;
4339 val* var7 /* : MClassDef */;
4340 val* var9 /* : MClassDef */;
4341 val* var_cd1 /* var cd1: MClassDef */;
4342 val* var10 /* : MClass */;
4343 val* var12 /* : MClass */;
4344 val* var_c1 /* var c1: MClass */;
4345 short int var13 /* : Bool */;
4346 short int var_keep /* var keep: Bool */;
4347 val* var_14 /* var : Array[MPropDef] */;
4348 val* var15 /* : ArrayIterator[nullable Object] */;
4349 val* var_16 /* var : ArrayIterator[MPropDef] */;
4350 short int var17 /* : Bool */;
4351 val* var18 /* : nullable Object */;
4352 val* var_pd2 /* var pd2: MPropDef */;
4353 short int var19 /* : Bool */;
4354 short int var20 /* : Bool */;
4355 val* var_other /* var other: nullable Object */;
4356 short int var22 /* : Bool */;
4357 short int var24 /* : Bool */;
4358 val* var25 /* : MClassDef */;
4359 val* var27 /* : MClassDef */;
4360 val* var_cd2 /* var cd2: MClassDef */;
4361 val* var28 /* : MClass */;
4362 val* var30 /* : MClass */;
4363 val* var_c2 /* var c2: MClass */;
4364 val* var31 /* : MClassType */;
4365 val* var33 /* : MClassType */;
4366 val* var34 /* : MClassType */;
4367 val* var36 /* : MClassType */;
4368 short int var37 /* : Bool */;
4369 short int var38 /* : Bool */;
4370 short int var40 /* : Bool */;
4371 short int var42 /* : Bool */;
4372 val* var43 /* : MModule */;
4373 val* var45 /* : MModule */;
4374 val* var46 /* : POSetElement[MModule] */;
4375 val* var48 /* : POSetElement[MModule] */;
4376 val* var49 /* : MModule */;
4377 val* var51 /* : MModule */;
4378 short int var52 /* : Bool */;
4379 short int var53 /* : Bool */;
4380 short int var55 /* : Bool */;
4381 val* var56 /* : MClassType */;
4382 val* var58 /* : MClassType */;
4383 val* var59 /* : null */;
4384 val* var60 /* : MClassType */;
4385 val* var62 /* : MClassType */;
4386 short int var63 /* : Bool */;
4387 short int var_64 /* var : Bool */;
4388 val* var65 /* : MClassType */;
4389 val* var67 /* : MClassType */;
4390 val* var68 /* : MClassType */;
4391 val* var70 /* : MClassType */;
4392 short int var71 /* : Bool */;
4393 short int var72 /* : Bool */;
4394 val* var_other74 /* var other: nullable Object */;
4395 short int var75 /* : Bool */;
4396 short int var76 /* : Bool */;
4397 short int var77 /* : Bool */;
4398 short int var78 /* : Bool */;
4399 short int var82 /* : Bool */;
4400 static val* varonce;
4401 val* var83 /* : String */;
4402 char* var84 /* : NativeString */;
4403 long var85 /* : Int */;
4404 val* var86 /* : FlatString */;
4405 static val* varonce87;
4406 val* var88 /* : String */;
4407 char* var89 /* : NativeString */;
4408 long var90 /* : Int */;
4409 val* var91 /* : FlatString */;
4410 val* var92 /* : String */;
4411 val* var93 /* : Array[Object] */;
4412 long var94 /* : Int */;
4413 val* var95 /* : NativeArray[Object] */;
4414 val* var96 /* : String */;
4415 /* Covariant cast for argument 1 (candidates) <p1:Array[MPropDef]> isa Array[MPROPDEF] */
4416 /* <p1:Array[MPropDef]> isa Array[MPROPDEF] */
4417 type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
4418 cltype = type_struct->color;
4419 idtype = type_struct->id;
4420 if(cltype >= p1->type->table_size) {
4421 var1 = 0;
4422 } else {
4423 var1 = p1->type->type_table[cltype] == idtype;
4424 }
4425 if (unlikely(!var1)) {
4426 var_class_name = p1 == NULL ? "null" : p1->type->name;
4427 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
4428 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1729);
4429 show_backtrace(1);
4430 }
4431 var_mmodule = p0;
4432 var_candidates = p1;
4433 var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
4434 {
4435 ((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:Array[MPropDef]>*/;
4436 }
4437 var_res = var2;
4438 var_ = var_candidates;
4439 {
4440 var3 = array__AbstractArrayRead__iterator(var_);
4441 }
4442 var_4 = var3;
4443 for(;;) {
4444 {
4445 var5 = array__ArrayIterator__is_ok(var_4);
4446 }
4447 if (var5){
4448 {
4449 var6 = array__ArrayIterator__item(var_4);
4450 }
4451 var_pd1 = var6;
4452 {
4453 { /* Inline model#MPropDef#mclassdef (var_pd1) on <var_pd1:MPropDef> */
4454 var9 = var_pd1->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd1:MPropDef> */
4455 if (unlikely(var9 == NULL)) {
4456 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4457 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4458 show_backtrace(1);
4459 }
4460 var7 = var9;
4461 RET_LABEL8:(void)0;
4462 }
4463 }
4464 var_cd1 = var7;
4465 {
4466 { /* Inline model#MClassDef#mclass (var_cd1) on <var_cd1:MClassDef> */
4467 var12 = var_cd1->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_cd1:MClassDef> */
4468 if (unlikely(var12 == NULL)) {
4469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4470 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
4471 show_backtrace(1);
4472 }
4473 var10 = var12;
4474 RET_LABEL11:(void)0;
4475 }
4476 }
4477 var_c1 = var10;
4478 var13 = 1;
4479 var_keep = var13;
4480 var_14 = var_candidates;
4481 {
4482 var15 = array__AbstractArrayRead__iterator(var_14);
4483 }
4484 var_16 = var15;
4485 for(;;) {
4486 {
4487 var17 = array__ArrayIterator__is_ok(var_16);
4488 }
4489 if (var17){
4490 {
4491 var18 = array__ArrayIterator__item(var_16);
4492 }
4493 var_pd2 = var18;
4494 {
4495 { /* Inline kernel#Object#== (var_pd2,var_pd1) on <var_pd2:MPropDef> */
4496 var_other = var_pd1;
4497 {
4498 { /* Inline kernel#Object#is_same_instance (var_pd2,var_other) on <var_pd2:MPropDef> */
4499 var24 = var_pd2 == var_other;
4500 var22 = var24;
4501 goto RET_LABEL23;
4502 RET_LABEL23:(void)0;
4503 }
4504 }
4505 var20 = var22;
4506 goto RET_LABEL21;
4507 RET_LABEL21:(void)0;
4508 }
4509 var19 = var20;
4510 }
4511 if (var19){
4512 goto BREAK_label;
4513 } else {
4514 }
4515 {
4516 { /* Inline model#MPropDef#mclassdef (var_pd2) on <var_pd2:MPropDef> */
4517 var27 = var_pd2->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd2:MPropDef> */
4518 if (unlikely(var27 == NULL)) {
4519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4520 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4521 show_backtrace(1);
4522 }
4523 var25 = var27;
4524 RET_LABEL26:(void)0;
4525 }
4526 }
4527 var_cd2 = var25;
4528 {
4529 { /* Inline model#MClassDef#mclass (var_cd2) on <var_cd2:MClassDef> */
4530 var30 = var_cd2->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_cd2:MClassDef> */
4531 if (unlikely(var30 == NULL)) {
4532 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4533 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
4534 show_backtrace(1);
4535 }
4536 var28 = var30;
4537 RET_LABEL29:(void)0;
4538 }
4539 }
4540 var_c2 = var28;
4541 {
4542 { /* Inline model#MClass#mclass_type (var_c2) on <var_c2:MClass> */
4543 var33 = var_c2->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_c2:MClass> */
4544 if (unlikely(var33 == NULL)) {
4545 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
4546 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
4547 show_backtrace(1);
4548 }
4549 var31 = var33;
4550 RET_LABEL32:(void)0;
4551 }
4552 }
4553 {
4554 { /* Inline model#MClass#mclass_type (var_c1) on <var_c1:MClass> */
4555 var36 = var_c1->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_c1:MClass> */
4556 if (unlikely(var36 == NULL)) {
4557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
4558 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
4559 show_backtrace(1);
4560 }
4561 var34 = var36;
4562 RET_LABEL35:(void)0;
4563 }
4564 }
4565 {
4566 { /* Inline kernel#Object#== (var31,var34) on <var31:MClassType> */
4567 var_other = var34;
4568 {
4569 { /* Inline kernel#Object#is_same_instance (var31,var_other) on <var31:MClassType> */
4570 var42 = var31 == var_other;
4571 var40 = var42;
4572 goto RET_LABEL41;
4573 RET_LABEL41:(void)0;
4574 }
4575 }
4576 var38 = var40;
4577 goto RET_LABEL39;
4578 RET_LABEL39:(void)0;
4579 }
4580 var37 = var38;
4581 }
4582 if (var37){
4583 {
4584 { /* Inline model#MClassDef#mmodule (var_cd2) on <var_cd2:MClassDef> */
4585 var45 = var_cd2->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_cd2:MClassDef> */
4586 if (unlikely(var45 == NULL)) {
4587 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4588 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
4589 show_backtrace(1);
4590 }
4591 var43 = var45;
4592 RET_LABEL44:(void)0;
4593 }
4594 }
4595 {
4596 { /* Inline mmodule#MModule#in_importation (var43) on <var43:MModule> */
4597 var48 = var43->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var43:MModule> */
4598 if (unlikely(var48 == NULL)) {
4599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
4600 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
4601 show_backtrace(1);
4602 }
4603 var46 = var48;
4604 RET_LABEL47:(void)0;
4605 }
4606 }
4607 {
4608 { /* Inline model#MClassDef#mmodule (var_cd1) on <var_cd1:MClassDef> */
4609 var51 = var_cd1->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_cd1:MClassDef> */
4610 if (unlikely(var51 == NULL)) {
4611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4612 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
4613 show_backtrace(1);
4614 }
4615 var49 = var51;
4616 RET_LABEL50:(void)0;
4617 }
4618 }
4619 {
4620 var52 = poset__POSetElement___60d(var46, var49);
4621 }
4622 if (var52){
4623 var53 = 0;
4624 var_keep = var53;
4625 goto BREAK_label54;
4626 } else {
4627 }
4628 } else {
4629 {
4630 { /* Inline model#MClassDef#bound_mtype (var_cd2) on <var_cd2:MClassDef> */
4631 var58 = var_cd2->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
4632 if (unlikely(var58 == NULL)) {
4633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4634 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4635 show_backtrace(1);
4636 }
4637 var56 = var58;
4638 RET_LABEL57:(void)0;
4639 }
4640 }
4641 var59 = NULL;
4642 {
4643 { /* Inline model#MClassDef#bound_mtype (var_cd1) on <var_cd1:MClassDef> */
4644 var62 = var_cd1->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
4645 if (unlikely(var62 == NULL)) {
4646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4647 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4648 show_backtrace(1);
4649 }
4650 var60 = var62;
4651 RET_LABEL61:(void)0;
4652 }
4653 }
4654 {
4655 var63 = model__MType__is_subtype(var56, var_mmodule, var59, var60);
4656 }
4657 var_64 = var63;
4658 if (var63){
4659 {
4660 { /* Inline model#MClassDef#bound_mtype (var_cd2) on <var_cd2:MClassDef> */
4661 var67 = var_cd2->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
4662 if (unlikely(var67 == NULL)) {
4663 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4664 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4665 show_backtrace(1);
4666 }
4667 var65 = var67;
4668 RET_LABEL66:(void)0;
4669 }
4670 }
4671 {
4672 { /* Inline model#MClassDef#bound_mtype (var_cd1) on <var_cd1:MClassDef> */
4673 var70 = var_cd1->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
4674 if (unlikely(var70 == NULL)) {
4675 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4676 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4677 show_backtrace(1);
4678 }
4679 var68 = var70;
4680 RET_LABEL69:(void)0;
4681 }
4682 }
4683 {
4684 { /* Inline kernel#Object#!= (var65,var68) on <var65:MClassType> */
4685 var_other74 = var68;
4686 {
4687 var76 = ((short int (*)(val*, val*))(var65->class->vft[COLOR_kernel__Object___61d_61d]))(var65, var_other74) /* == on <var65:MClassType>*/;
4688 var75 = var76;
4689 }
4690 var77 = !var75;
4691 var72 = var77;
4692 goto RET_LABEL73;
4693 RET_LABEL73:(void)0;
4694 }
4695 var71 = var72;
4696 }
4697 var55 = var71;
4698 } else {
4699 var55 = var_64;
4700 }
4701 if (var55){
4702 var78 = 0;
4703 var_keep = var78;
4704 goto BREAK_label54;
4705 } else {
4706 }
4707 }
4708 BREAK_label: (void)0;
4709 {
4710 array__ArrayIterator__next(var_16); /* Direct call array#ArrayIterator#next on <var_16:ArrayIterator[MPropDef]>*/
4711 }
4712 } else {
4713 goto BREAK_label54;
4714 }
4715 }
4716 BREAK_label54: (void)0;
4717 {
4718 { /* Inline abstract_collection#Iterator#finish (var_16) on <var_16:ArrayIterator[MPropDef]> */
4719 RET_LABEL79:(void)0;
4720 }
4721 }
4722 if (var_keep){
4723 {
4724 array__Array__add(var_res, var_pd1); /* Direct call array#Array#add on <var_res:Array[MPropDef]>*/
4725 }
4726 } else {
4727 }
4728 {
4729 array__ArrayIterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[MPropDef]>*/
4730 }
4731 } else {
4732 goto BREAK_label80;
4733 }
4734 }
4735 BREAK_label80: (void)0;
4736 {
4737 { /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:ArrayIterator[MPropDef]> */
4738 RET_LABEL81:(void)0;
4739 }
4740 }
4741 {
4742 var82 = array__AbstractArrayRead__is_empty(var_res);
4743 }
4744 if (var82){
4745 if (varonce) {
4746 var83 = varonce;
4747 } else {
4748 var84 = "All lost! ";
4749 var85 = 10;
4750 var86 = string__NativeString__to_s_with_length(var84, var85);
4751 var83 = var86;
4752 varonce = var83;
4753 }
4754 if (varonce87) {
4755 var88 = varonce87;
4756 } else {
4757 var89 = ", ";
4758 var90 = 2;
4759 var91 = string__NativeString__to_s_with_length(var89, var90);
4760 var88 = var91;
4761 varonce87 = var88;
4762 }
4763 {
4764 var92 = string__Collection__join(var_candidates, var88);
4765 }
4766 var93 = NEW_array__Array(&type_array__Arraykernel__Object);
4767 { /* var93 = array_instance Array[Object] */
4768 var94 = 2;
4769 var95 = NEW_array__NativeArray(var94, &type_array__NativeArraykernel__Object);
4770 ((struct instance_array__NativeArray*)var95)->values[0] = (val*) var83;
4771 ((struct instance_array__NativeArray*)var95)->values[1] = (val*) var92;
4772 {
4773 ((void (*)(val*, val*, long))(var93->class->vft[COLOR_array__Array__with_native]))(var93, var95, var94) /* with_native on <var93:Array[Object]>*/;
4774 }
4775 }
4776 {
4777 var96 = ((val* (*)(val*))(var93->class->vft[COLOR_string__Object__to_s]))(var93) /* to_s on <var93:Array[Object]>*/;
4778 }
4779 {
4780 file__Object__print(self, var96); /* Direct call file#Object#print on <self:MProperty>*/
4781 }
4782 } else {
4783 }
4784 var = var_res;
4785 goto RET_LABEL;
4786 RET_LABEL:;
4787 return var;
4788 }
4789 /* method model#MProperty#select_most_specific for (self: Object, MModule, Array[MPropDef]): Array[MPropDef] */
4790 val* VIRTUAL_model__MProperty__select_most_specific(val* self, val* p0, val* p1) {
4791 val* var /* : Array[MPropDef] */;
4792 val* var1 /* : Array[MPropDef] */;
4793 var1 = model__MProperty__select_most_specific(self, p0, p1);
4794 var = var1;
4795 RET_LABEL:;
4796 return var;
4797 }
4798 /* method model#MProperty#lookup_first_definition for (self: MProperty, MModule, MType): MPropDef */
4799 val* model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
4800 val* var /* : MPropDef */;
4801 val* var_mmodule /* var mmodule: MModule */;
4802 val* var_mtype /* var mtype: MType */;
4803 short int var1 /* : Bool */;
4804 val* var2 /* : Array[MPropDef] */;
4805 val* var3 /* : nullable Object */;
4806 var_mmodule = p0;
4807 var_mtype = p1;
4808 {
4809 var1 = model__MType__has_mproperty(var_mtype, var_mmodule, self);
4810 }
4811 if (unlikely(!var1)) {
4812 PRINT_ERROR("Runtime error: %s", "Assert failed");
4813 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1776);
4814 show_backtrace(1);
4815 }
4816 {
4817 var2 = model__MProperty__lookup_all_definitions(self, var_mmodule, var_mtype);
4818 }
4819 {
4820 var3 = abstract_collection__SequenceRead__first(var2);
4821 }
4822 var = var3;
4823 goto RET_LABEL;
4824 RET_LABEL:;
4825 return var;
4826 }
4827 /* method model#MProperty#lookup_first_definition for (self: Object, MModule, MType): MPropDef */
4828 val* VIRTUAL_model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
4829 val* var /* : MPropDef */;
4830 val* var1 /* : MPropDef */;
4831 var1 = model__MProperty__lookup_first_definition(self, p0, p1);
4832 var = var1;
4833 RET_LABEL:;
4834 return var;
4835 }
4836 /* method model#MProperty#lookup_all_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
4837 val* model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
4838 val* var /* : Array[MPropDef] */;
4839 val* var_mmodule /* var mmodule: MModule */;
4840 val* var_mtype /* var mtype: MType */;
4841 short int var1 /* : Bool */;
4842 short int var2 /* : Bool */;
4843 val* var3 /* : MType */;
4844 val* var4 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
4845 val* var6 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
4846 val* var7 /* : nullable Object */;
4847 val* var_cache /* var cache: nullable Array[MPropDef] */;
4848 val* var8 /* : null */;
4849 short int var9 /* : Bool */;
4850 short int var10 /* : Bool */;
4851 val* var_other /* var other: nullable Object */;
4852 short int var12 /* : Bool */;
4853 short int var13 /* : Bool */;
4854 short int var14 /* : Bool */;
4855 val* var15 /* : Array[MPropDef] */;
4856 val* var_candidates /* var candidates: Array[MPropDef] */;
4857 val* var16 /* : Array[MPropDef] */;
4858 val* var18 /* : Array[MPropDef] */;
4859 val* var_ /* var : Array[MPropDef] */;
4860 val* var19 /* : ArrayIterator[nullable Object] */;
4861 val* var_20 /* var : ArrayIterator[MPropDef] */;
4862 short int var21 /* : Bool */;
4863 val* var22 /* : nullable Object */;
4864 val* var_mpropdef /* var mpropdef: MPropDef */;
4865 val* var23 /* : POSetElement[MModule] */;
4866 val* var25 /* : POSetElement[MModule] */;
4867 val* var26 /* : MClassDef */;
4868 val* var28 /* : MClassDef */;
4869 val* var29 /* : MModule */;
4870 val* var31 /* : MModule */;
4871 short int var32 /* : Bool */;
4872 short int var33 /* : Bool */;
4873 val* var34 /* : null */;
4874 val* var35 /* : MClassDef */;
4875 val* var37 /* : MClassDef */;
4876 val* var38 /* : MClassType */;
4877 val* var40 /* : MClassType */;
4878 short int var41 /* : Bool */;
4879 short int var42 /* : Bool */;
4880 long var45 /* : Int */;
4881 long var47 /* : Int */;
4882 long var48 /* : Int */;
4883 short int var49 /* : Bool */;
4884 short int var51 /* : Bool */;
4885 int cltype;
4886 int idtype;
4887 const char* var_class_name;
4888 short int var52 /* : Bool */;
4889 val* var53 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
4890 val* var55 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
4891 val* var56 /* : Array[nullable Object] */;
4892 val* var57 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
4893 val* var59 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
4894 var_mmodule = p0;
4895 var_mtype = p1;
4896 {
4897 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
4898 }
4899 var2 = !var1;
4900 if (unlikely(!var2)) {
4901 PRINT_ERROR("Runtime error: %s", "Assert failed");
4902 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1784);
4903 show_backtrace(1);
4904 }
4905 {
4906 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
4907 }
4908 var_mtype = var3;
4909 {
4910 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
4911 var6 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
4912 if (unlikely(var6 == NULL)) {
4913 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
4914 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1813);
4915 show_backtrace(1);
4916 }
4917 var4 = var6;
4918 RET_LABEL5:(void)0;
4919 }
4920 }
4921 {
4922 var7 = more_collections__HashMap2___91d_93d(var4, var_mmodule, var_mtype);
4923 }
4924 var_cache = var7;
4925 var8 = NULL;
4926 if (var_cache == NULL) {
4927 var9 = 0; /* is null */
4928 } else {
4929 var9 = 1; /* arg is null and recv is not */
4930 }
4931 if (0) {
4932 { /* Inline kernel#Object#!= (var_cache,var8) on <var_cache:nullable Array[MPropDef]> */
4933 var_other = var8;
4934 {
4935 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])>*/;
4936 var12 = var13;
4937 }
4938 var14 = !var12;
4939 var10 = var14;
4940 goto RET_LABEL11;
4941 RET_LABEL11:(void)0;
4942 }
4943 var9 = var10;
4944 }
4945 if (var9){
4946 var = var_cache;
4947 goto RET_LABEL;
4948 } else {
4949 }
4950 var15 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
4951 {
4952 ((void (*)(val*))(var15->class->vft[COLOR_kernel__Object__init]))(var15) /* init on <var15:Array[MPropDef]>*/;
4953 }
4954 var_candidates = var15;
4955 {
4956 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
4957 var18 = self->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
4958 if (unlikely(var18 == NULL)) {
4959 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
4960 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
4961 show_backtrace(1);
4962 }
4963 var16 = var18;
4964 RET_LABEL17:(void)0;
4965 }
4966 }
4967 var_ = var16;
4968 {
4969 var19 = array__AbstractArrayRead__iterator(var_);
4970 }
4971 var_20 = var19;
4972 for(;;) {
4973 {
4974 var21 = array__ArrayIterator__is_ok(var_20);
4975 }
4976 if (var21){
4977 {
4978 var22 = array__ArrayIterator__item(var_20);
4979 }
4980 var_mpropdef = var22;
4981 {
4982 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
4983 var25 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
4984 if (unlikely(var25 == NULL)) {
4985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
4986 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
4987 show_backtrace(1);
4988 }
4989 var23 = var25;
4990 RET_LABEL24:(void)0;
4991 }
4992 }
4993 {
4994 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
4995 var28 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
4996 if (unlikely(var28 == NULL)) {
4997 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4998 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4999 show_backtrace(1);
5000 }
5001 var26 = var28;
5002 RET_LABEL27:(void)0;
5003 }
5004 }
5005 {
5006 { /* Inline model#MClassDef#mmodule (var26) on <var26:MClassDef> */
5007 var31 = var26->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var26:MClassDef> */
5008 if (unlikely(var31 == NULL)) {
5009 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5010 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
5011 show_backtrace(1);
5012 }
5013 var29 = var31;
5014 RET_LABEL30:(void)0;
5015 }
5016 }
5017 {
5018 var32 = poset__POSetElement___60d_61d(var23, var29);
5019 }
5020 var33 = !var32;
5021 if (var33){
5022 goto BREAK_label;
5023 } else {
5024 }
5025 var34 = NULL;
5026 {
5027 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
5028 var37 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
5029 if (unlikely(var37 == NULL)) {
5030 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5031 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5032 show_backtrace(1);
5033 }
5034 var35 = var37;
5035 RET_LABEL36:(void)0;
5036 }
5037 }
5038 {
5039 { /* Inline model#MClassDef#bound_mtype (var35) on <var35:MClassDef> */
5040 var40 = var35->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var35:MClassDef> */
5041 if (unlikely(var40 == NULL)) {
5042 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5043 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
5044 show_backtrace(1);
5045 }
5046 var38 = var40;
5047 RET_LABEL39:(void)0;
5048 }
5049 }
5050 {
5051 var41 = model__MType__is_subtype(var_mtype, var_mmodule, var34, var38);
5052 }
5053 var42 = !var41;
5054 if (var42){
5055 goto BREAK_label;
5056 } else {
5057 }
5058 {
5059 array__Array__add(var_candidates, var_mpropdef); /* Direct call array#Array#add on <var_candidates:Array[MPropDef]>*/
5060 }
5061 BREAK_label: (void)0;
5062 {
5063 array__ArrayIterator__next(var_20); /* Direct call array#ArrayIterator#next on <var_20:ArrayIterator[MPropDef]>*/
5064 }
5065 } else {
5066 goto BREAK_label43;
5067 }
5068 }
5069 BREAK_label43: (void)0;
5070 {
5071 { /* Inline abstract_collection#Iterator#finish (var_20) on <var_20:ArrayIterator[MPropDef]> */
5072 RET_LABEL44:(void)0;
5073 }
5074 }
5075 {
5076 { /* Inline array#AbstractArrayRead#length (var_candidates) on <var_candidates:Array[MPropDef]> */
5077 var47 = var_candidates->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
5078 var45 = var47;
5079 RET_LABEL46:(void)0;
5080 }
5081 }
5082 var48 = 1;
5083 {
5084 { /* Inline kernel#Int#<= (var45,var48) on <var45:Int> */
5085 /* Covariant cast for argument 0 (i) <var48:Int> isa OTHER */
5086 /* <var48:Int> isa OTHER */
5087 var51 = 1; /* easy <var48:Int> isa OTHER*/
5088 if (unlikely(!var51)) {
5089 var_class_name = type_kernel__Int.name;
5090 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5091 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
5092 show_backtrace(1);
5093 }
5094 var52 = var45 <= var48;
5095 var49 = var52;
5096 goto RET_LABEL50;
5097 RET_LABEL50:(void)0;
5098 }
5099 }
5100 if (var49){
5101 {
5102 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
5103 var55 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
5104 if (unlikely(var55 == NULL)) {
5105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
5106 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1813);
5107 show_backtrace(1);
5108 }
5109 var53 = var55;
5110 RET_LABEL54:(void)0;
5111 }
5112 }
5113 {
5114 more_collections__HashMap2___91d_93d_61d(var53, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var53:HashMap2[MModule, MType, Array[MPropDef]]>*/
5115 }
5116 var = var_candidates;
5117 goto RET_LABEL;
5118 } else {
5119 }
5120 {
5121 model__MModule__linearize_mpropdefs(var_mmodule, var_candidates); /* Direct call model#MModule#linearize_mpropdefs on <var_mmodule:MModule>*/
5122 }
5123 {
5124 var56 = array__AbstractArrayRead__reversed(var_candidates);
5125 }
5126 var_candidates = var56;
5127 {
5128 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
5129 var59 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
5130 if (unlikely(var59 == NULL)) {
5131 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
5132 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1813);
5133 show_backtrace(1);
5134 }
5135 var57 = var59;
5136 RET_LABEL58:(void)0;
5137 }
5138 }
5139 {
5140 more_collections__HashMap2___91d_93d_61d(var57, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var57:HashMap2[MModule, MType, Array[MPropDef]]>*/
5141 }
5142 var = var_candidates;
5143 goto RET_LABEL;
5144 RET_LABEL:;
5145 return var;
5146 }
5147 /* method model#MProperty#lookup_all_definitions for (self: Object, MModule, MType): Array[MPropDef] */
5148 val* VIRTUAL_model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
5149 val* var /* : Array[MPropDef] */;
5150 val* var1 /* : Array[MPropDef] */;
5151 var1 = model__MProperty__lookup_all_definitions(self, p0, p1);
5152 var = var1;
5153 RET_LABEL:;
5154 return var;
5155 }
5156 /* method model#MProperty#lookup_all_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
5157 val* model__MProperty__lookup_all_definitions_cache(val* self) {
5158 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
5159 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
5160 var1 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
5161 if (unlikely(var1 == NULL)) {
5162 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
5163 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1813);
5164 show_backtrace(1);
5165 }
5166 var = var1;
5167 RET_LABEL:;
5168 return var;
5169 }
5170 /* method model#MProperty#lookup_all_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
5171 val* VIRTUAL_model__MProperty__lookup_all_definitions_cache(val* self) {
5172 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
5173 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
5174 val* var3 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
5175 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:Object(MProperty)> */
5176 var3 = self->attrs[COLOR_model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:Object(MProperty)> */
5177 if (unlikely(var3 == NULL)) {
5178 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
5179 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1813);
5180 show_backtrace(1);
5181 }
5182 var1 = var3;
5183 RET_LABEL2:(void)0;
5184 }
5185 var = var1;
5186 RET_LABEL:;
5187 return var;
5188 }
5189 /* method model#MMethod#init for (self: MMethod, MClassDef, String, MVisibility) */
5190 void model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
5191 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
5192 val* var_name /* var name: String */;
5193 val* var_visibility /* var visibility: MVisibility */;
5194 var_intro_mclassdef = p0;
5195 var_name = p1;
5196 var_visibility = p2;
5197 {
5198 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:MMethod>*/
5199 }
5200 RET_LABEL:;
5201 }
5202 /* method model#MMethod#init for (self: Object, MClassDef, String, MVisibility) */
5203 void VIRTUAL_model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
5204 model__MMethod__init(self, p0, p1, p2); /* Direct call model#MMethod#init on <self:Object(MMethod)>*/
5205 RET_LABEL:;
5206 }
5207 /* method model#MMethod#is_toplevel for (self: MMethod): Bool */
5208 short int model__MMethod__is_toplevel(val* self) {
5209 short int var /* : Bool */;
5210 short int var1 /* : Bool */;
5211 var1 = self->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <self:MMethod> */
5212 var = var1;
5213 RET_LABEL:;
5214 return var;
5215 }
5216 /* method model#MMethod#is_toplevel for (self: Object): Bool */
5217 short int VIRTUAL_model__MMethod__is_toplevel(val* self) {
5218 short int var /* : Bool */;
5219 short int var1 /* : Bool */;
5220 short int var3 /* : Bool */;
5221 { /* Inline model#MMethod#is_toplevel (self) on <self:Object(MMethod)> */
5222 var3 = self->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <self:Object(MMethod)> */
5223 var1 = var3;
5224 RET_LABEL2:(void)0;
5225 }
5226 var = var1;
5227 RET_LABEL:;
5228 return var;
5229 }
5230 /* method model#MMethod#is_toplevel= for (self: MMethod, Bool) */
5231 void model__MMethod__is_toplevel_61d(val* self, short int p0) {
5232 self->attrs[COLOR_model__MMethod___is_toplevel].s = p0; /* _is_toplevel on <self:MMethod> */
5233 RET_LABEL:;
5234 }
5235 /* method model#MMethod#is_toplevel= for (self: Object, Bool) */
5236 void VIRTUAL_model__MMethod__is_toplevel_61d(val* self, short int p0) {
5237 { /* Inline model#MMethod#is_toplevel= (self,p0) on <self:Object(MMethod)> */
5238 self->attrs[COLOR_model__MMethod___is_toplevel].s = p0; /* _is_toplevel on <self:Object(MMethod)> */
5239 RET_LABEL1:(void)0;
5240 }
5241 RET_LABEL:;
5242 }
5243 /* method model#MMethod#is_init for (self: MMethod): Bool */
5244 short int model__MMethod__is_init(val* self) {
5245 short int var /* : Bool */;
5246 short int var1 /* : Bool */;
5247 var1 = self->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <self:MMethod> */
5248 var = var1;
5249 RET_LABEL:;
5250 return var;
5251 }
5252 /* method model#MMethod#is_init for (self: Object): Bool */
5253 short int VIRTUAL_model__MMethod__is_init(val* self) {
5254 short int var /* : Bool */;
5255 short int var1 /* : Bool */;
5256 short int var3 /* : Bool */;
5257 { /* Inline model#MMethod#is_init (self) on <self:Object(MMethod)> */
5258 var3 = self->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <self:Object(MMethod)> */
5259 var1 = var3;
5260 RET_LABEL2:(void)0;
5261 }
5262 var = var1;
5263 RET_LABEL:;
5264 return var;
5265 }
5266 /* method model#MMethod#is_init= for (self: MMethod, Bool) */
5267 void model__MMethod__is_init_61d(val* self, short int p0) {
5268 self->attrs[COLOR_model__MMethod___is_init].s = p0; /* _is_init on <self:MMethod> */
5269 RET_LABEL:;
5270 }
5271 /* method model#MMethod#is_init= for (self: Object, Bool) */
5272 void VIRTUAL_model__MMethod__is_init_61d(val* self, short int p0) {
5273 { /* Inline model#MMethod#is_init= (self,p0) on <self:Object(MMethod)> */
5274 self->attrs[COLOR_model__MMethod___is_init].s = p0; /* _is_init on <self:Object(MMethod)> */
5275 RET_LABEL1:(void)0;
5276 }
5277 RET_LABEL:;
5278 }
5279 /* method model#MMethod#is_root_init for (self: MMethod): Bool */
5280 short int model__MMethod__is_root_init(val* self) {
5281 short int var /* : Bool */;
5282 short int var1 /* : Bool */;
5283 var1 = self->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <self:MMethod> */
5284 var = var1;
5285 RET_LABEL:;
5286 return var;
5287 }
5288 /* method model#MMethod#is_root_init for (self: Object): Bool */
5289 short int VIRTUAL_model__MMethod__is_root_init(val* self) {
5290 short int var /* : Bool */;
5291 short int var1 /* : Bool */;
5292 short int var3 /* : Bool */;
5293 { /* Inline model#MMethod#is_root_init (self) on <self:Object(MMethod)> */
5294 var3 = self->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <self:Object(MMethod)> */
5295 var1 = var3;
5296 RET_LABEL2:(void)0;
5297 }
5298 var = var1;
5299 RET_LABEL:;
5300 return var;
5301 }
5302 /* method model#MMethod#is_root_init= for (self: MMethod, Bool) */
5303 void model__MMethod__is_root_init_61d(val* self, short int p0) {
5304 self->attrs[COLOR_model__MMethod___is_root_init].s = p0; /* _is_root_init on <self:MMethod> */
5305 RET_LABEL:;
5306 }
5307 /* method model#MMethod#is_root_init= for (self: Object, Bool) */
5308 void VIRTUAL_model__MMethod__is_root_init_61d(val* self, short int p0) {
5309 { /* Inline model#MMethod#is_root_init= (self,p0) on <self:Object(MMethod)> */
5310 self->attrs[COLOR_model__MMethod___is_root_init].s = p0; /* _is_root_init on <self:Object(MMethod)> */
5311 RET_LABEL1:(void)0;
5312 }
5313 RET_LABEL:;
5314 }
5315 /* method model#MMethod#is_new for (self: MMethod): Bool */
5316 short int model__MMethod__is_new(val* self) {
5317 short int var /* : Bool */;
5318 short int var1 /* : Bool */;
5319 var1 = self->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <self:MMethod> */
5320 var = var1;
5321 RET_LABEL:;
5322 return var;
5323 }
5324 /* method model#MMethod#is_new for (self: Object): Bool */
5325 short int VIRTUAL_model__MMethod__is_new(val* self) {
5326 short int var /* : Bool */;
5327 short int var1 /* : Bool */;
5328 short int var3 /* : Bool */;
5329 { /* Inline model#MMethod#is_new (self) on <self:Object(MMethod)> */
5330 var3 = self->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <self:Object(MMethod)> */
5331 var1 = var3;
5332 RET_LABEL2:(void)0;
5333 }
5334 var = var1;
5335 RET_LABEL:;
5336 return var;
5337 }
5338 /* method model#MMethod#is_new= for (self: MMethod, Bool) */
5339 void model__MMethod__is_new_61d(val* self, short int p0) {
5340 self->attrs[COLOR_model__MMethod___is_new].s = p0; /* _is_new on <self:MMethod> */
5341 RET_LABEL:;
5342 }
5343 /* method model#MMethod#is_new= for (self: Object, Bool) */
5344 void VIRTUAL_model__MMethod__is_new_61d(val* self, short int p0) {
5345 { /* Inline model#MMethod#is_new= (self,p0) on <self:Object(MMethod)> */
5346 self->attrs[COLOR_model__MMethod___is_new].s = p0; /* _is_new on <self:Object(MMethod)> */
5347 RET_LABEL1:(void)0;
5348 }
5349 RET_LABEL:;
5350 }
5351 /* method model#MMethod#is_init_for for (self: MMethod, MClass): Bool */
5352 short int model__MMethod__is_init_for(val* self, val* p0) {
5353 short int var /* : Bool */;
5354 val* var_mclass /* var mclass: MClass */;
5355 short int var1 /* : Bool */;
5356 short int var3 /* : Bool */;
5357 var_mclass = p0;
5358 {
5359 { /* Inline model#MMethod#is_init (self) on <self:MMethod> */
5360 var3 = self->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <self:MMethod> */
5361 var1 = var3;
5362 RET_LABEL2:(void)0;
5363 }
5364 }
5365 var = var1;
5366 goto RET_LABEL;
5367 RET_LABEL:;
5368 return var;
5369 }
5370 /* method model#MMethod#is_init_for for (self: Object, MClass): Bool */
5371 short int VIRTUAL_model__MMethod__is_init_for(val* self, val* p0) {
5372 short int var /* : Bool */;
5373 short int var1 /* : Bool */;
5374 var1 = model__MMethod__is_init_for(self, p0);
5375 var = var1;
5376 RET_LABEL:;
5377 return var;
5378 }
5379 /* method model#MAttribute#init for (self: MAttribute, MClassDef, String, MVisibility) */
5380 void model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
5381 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
5382 val* var_name /* var name: String */;
5383 val* var_visibility /* var visibility: MVisibility */;
5384 var_intro_mclassdef = p0;
5385 var_name = p1;
5386 var_visibility = p2;
5387 {
5388 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:MAttribute>*/
5389 }
5390 RET_LABEL:;
5391 }
5392 /* method model#MAttribute#init for (self: Object, MClassDef, String, MVisibility) */
5393 void VIRTUAL_model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
5394 model__MAttribute__init(self, p0, p1, p2); /* Direct call model#MAttribute#init on <self:Object(MAttribute)>*/
5395 RET_LABEL:;
5396 }
5397 /* method model#MVirtualTypeProp#init for (self: MVirtualTypeProp, MClassDef, String, MVisibility) */
5398 void model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
5399 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
5400 val* var_name /* var name: String */;
5401 val* var_visibility /* var visibility: MVisibility */;
5402 var_intro_mclassdef = p0;
5403 var_name = p1;
5404 var_visibility = p2;
5405 {
5406 model__MProperty__init(self, p0, p1, p2); /* Direct call model#MProperty#init on <self:MVirtualTypeProp>*/
5407 }
5408 RET_LABEL:;
5409 }
5410 /* method model#MVirtualTypeProp#init for (self: Object, MClassDef, String, MVisibility) */
5411 void VIRTUAL_model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
5412 model__MVirtualTypeProp__init(self, p0, p1, p2); /* Direct call model#MVirtualTypeProp#init on <self:Object(MVirtualTypeProp)>*/
5413 RET_LABEL:;
5414 }
5415 /* method model#MVirtualTypeProp#mvirtualtype for (self: MVirtualTypeProp): MVirtualType */
5416 val* model__MVirtualTypeProp__mvirtualtype(val* self) {
5417 val* var /* : MVirtualType */;
5418 val* var1 /* : MVirtualType */;
5419 var1 = self->attrs[COLOR_model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <self:MVirtualTypeProp> */
5420 if (unlikely(var1 == NULL)) {
5421 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
5422 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1874);
5423 show_backtrace(1);
5424 }
5425 var = var1;
5426 RET_LABEL:;
5427 return var;
5428 }
5429 /* method model#MVirtualTypeProp#mvirtualtype for (self: Object): MVirtualType */
5430 val* VIRTUAL_model__MVirtualTypeProp__mvirtualtype(val* self) {
5431 val* var /* : MVirtualType */;
5432 val* var1 /* : MVirtualType */;
5433 val* var3 /* : MVirtualType */;
5434 { /* Inline model#MVirtualTypeProp#mvirtualtype (self) on <self:Object(MVirtualTypeProp)> */
5435 var3 = self->attrs[COLOR_model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <self:Object(MVirtualTypeProp)> */
5436 if (unlikely(var3 == NULL)) {
5437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
5438 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1874);
5439 show_backtrace(1);
5440 }
5441 var1 = var3;
5442 RET_LABEL2:(void)0;
5443 }
5444 var = var1;
5445 RET_LABEL:;
5446 return var;
5447 }
5448 /* method model#MPropDef#location for (self: MPropDef): Location */
5449 val* model__MPropDef__location(val* self) {
5450 val* var /* : Location */;
5451 val* var1 /* : Location */;
5452 var1 = self->attrs[COLOR_model__MPropDef___location].val; /* _location on <self:MPropDef> */
5453 if (unlikely(var1 == NULL)) {
5454 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
5455 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1892);
5456 show_backtrace(1);
5457 }
5458 var = var1;
5459 RET_LABEL:;
5460 return var;
5461 }
5462 /* method model#MPropDef#location for (self: Object): Location */
5463 val* VIRTUAL_model__MPropDef__location(val* self) {
5464 val* var /* : Location */;
5465 val* var1 /* : Location */;
5466 val* var3 /* : Location */;
5467 { /* Inline model#MPropDef#location (self) on <self:Object(MPropDef)> */
5468 var3 = self->attrs[COLOR_model__MPropDef___location].val; /* _location on <self:Object(MPropDef)> */
5469 if (unlikely(var3 == NULL)) {
5470 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
5471 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1892);
5472 show_backtrace(1);
5473 }
5474 var1 = var3;
5475 RET_LABEL2:(void)0;
5476 }
5477 var = var1;
5478 RET_LABEL:;
5479 return var;
5480 }
5481 /* method model#MPropDef#location= for (self: MPropDef, Location) */
5482 void model__MPropDef__location_61d(val* self, val* p0) {
5483 self->attrs[COLOR_model__MPropDef___location].val = p0; /* _location on <self:MPropDef> */
5484 RET_LABEL:;
5485 }
5486 /* method model#MPropDef#location= for (self: Object, Location) */
5487 void VIRTUAL_model__MPropDef__location_61d(val* self, val* p0) {
5488 { /* Inline model#MPropDef#location= (self,p0) on <self:Object(MPropDef)> */
5489 self->attrs[COLOR_model__MPropDef___location].val = p0; /* _location on <self:Object(MPropDef)> */
5490 RET_LABEL1:(void)0;
5491 }
5492 RET_LABEL:;
5493 }
5494 /* method model#MPropDef#mclassdef for (self: MPropDef): MClassDef */
5495 val* model__MPropDef__mclassdef(val* self) {
5496 val* var /* : MClassDef */;
5497 val* var1 /* : MClassDef */;
5498 var1 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
5499 if (unlikely(var1 == NULL)) {
5500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5501 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5502 show_backtrace(1);
5503 }
5504 var = var1;
5505 RET_LABEL:;
5506 return var;
5507 }
5508 /* method model#MPropDef#mclassdef for (self: Object): MClassDef */
5509 val* VIRTUAL_model__MPropDef__mclassdef(val* self) {
5510 val* var /* : MClassDef */;
5511 val* var1 /* : MClassDef */;
5512 val* var3 /* : MClassDef */;
5513 { /* Inline model#MPropDef#mclassdef (self) on <self:Object(MPropDef)> */
5514 var3 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:Object(MPropDef)> */
5515 if (unlikely(var3 == NULL)) {
5516 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5517 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5518 show_backtrace(1);
5519 }
5520 var1 = var3;
5521 RET_LABEL2:(void)0;
5522 }
5523 var = var1;
5524 RET_LABEL:;
5525 return var;
5526 }
5527 /* method model#MPropDef#mclassdef= for (self: MPropDef, MClassDef) */
5528 void model__MPropDef__mclassdef_61d(val* self, val* p0) {
5529 self->attrs[COLOR_model__MPropDef___mclassdef].val = p0; /* _mclassdef on <self:MPropDef> */
5530 RET_LABEL:;
5531 }
5532 /* method model#MPropDef#mclassdef= for (self: Object, MClassDef) */
5533 void VIRTUAL_model__MPropDef__mclassdef_61d(val* self, val* p0) {
5534 { /* Inline model#MPropDef#mclassdef= (self,p0) on <self:Object(MPropDef)> */
5535 self->attrs[COLOR_model__MPropDef___mclassdef].val = p0; /* _mclassdef on <self:Object(MPropDef)> */
5536 RET_LABEL1:(void)0;
5537 }
5538 RET_LABEL:;
5539 }
5540 /* method model#MPropDef#mproperty for (self: MPropDef): MProperty */
5541 val* model__MPropDef__mproperty(val* self) {
5542 val* var /* : MProperty */;
5543 val* var1 /* : MProperty */;
5544 var1 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
5545 if (unlikely(var1 == NULL)) {
5546 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5547 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5548 show_backtrace(1);
5549 }
5550 var = var1;
5551 RET_LABEL:;
5552 return var;
5553 }
5554 /* method model#MPropDef#mproperty for (self: Object): MProperty */
5555 val* VIRTUAL_model__MPropDef__mproperty(val* self) {
5556 val* var /* : MProperty */;
5557 val* var1 /* : MProperty */;
5558 val* var3 /* : MProperty */;
5559 { /* Inline model#MPropDef#mproperty (self) on <self:Object(MPropDef)> */
5560 var3 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:Object(MPropDef)> */
5561 if (unlikely(var3 == NULL)) {
5562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5563 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5564 show_backtrace(1);
5565 }
5566 var1 = var3;
5567 RET_LABEL2:(void)0;
5568 }
5569 var = var1;
5570 RET_LABEL:;
5571 return var;
5572 }
5573 /* method model#MPropDef#mproperty= for (self: MPropDef, MProperty) */
5574 void model__MPropDef__mproperty_61d(val* self, val* p0) {
5575 short int var /* : Bool */;
5576 int cltype;
5577 int idtype;
5578 const struct type* type_struct;
5579 const char* var_class_name;
5580 /* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
5581 /* <p0:MProperty> isa MPROPERTY */
5582 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
5583 cltype = type_struct->color;
5584 idtype = type_struct->id;
5585 if(cltype >= p0->type->table_size) {
5586 var = 0;
5587 } else {
5588 var = p0->type->type_table[cltype] == idtype;
5589 }
5590 if (unlikely(!var)) {
5591 var_class_name = p0 == NULL ? "null" : p0->type->name;
5592 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
5593 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5594 show_backtrace(1);
5595 }
5596 self->attrs[COLOR_model__MPropDef___mproperty].val = p0; /* _mproperty on <self:MPropDef> */
5597 RET_LABEL:;
5598 }
5599 /* method model#MPropDef#mproperty= for (self: Object, MProperty) */
5600 void VIRTUAL_model__MPropDef__mproperty_61d(val* self, val* p0) {
5601 short int var /* : Bool */;
5602 int cltype;
5603 int idtype;
5604 const struct type* type_struct;
5605 const char* var_class_name;
5606 { /* Inline model#MPropDef#mproperty= (self,p0) on <self:Object(MPropDef)> */
5607 /* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
5608 /* <p0:MProperty> isa MPROPERTY */
5609 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
5610 cltype = type_struct->color;
5611 idtype = type_struct->id;
5612 if(cltype >= p0->type->table_size) {
5613 var = 0;
5614 } else {
5615 var = p0->type->type_table[cltype] == idtype;
5616 }
5617 if (unlikely(!var)) {
5618 var_class_name = p0 == NULL ? "null" : p0->type->name;
5619 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
5620 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5621 show_backtrace(1);
5622 }
5623 self->attrs[COLOR_model__MPropDef___mproperty].val = p0; /* _mproperty on <self:Object(MPropDef)> */
5624 RET_LABEL1:(void)0;
5625 }
5626 RET_LABEL:;
5627 }
5628 /* method model#MPropDef#init for (self: MPropDef, MClassDef, MProperty, Location) */
5629 void model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
5630 short int var /* : Bool */;
5631 int cltype;
5632 int idtype;
5633 const struct type* type_struct;
5634 const char* var_class_name;
5635 val* var_mclassdef /* var mclassdef: MClassDef */;
5636 val* var_mproperty /* var mproperty: MProperty */;
5637 val* var_location /* var location: Location */;
5638 short int var3 /* : Bool */;
5639 int cltype4;
5640 int idtype5;
5641 const struct type* type_struct6;
5642 const char* var_class_name7;
5643 val* var9 /* : Array[MPropDef] */;
5644 val* var11 /* : Array[MPropDef] */;
5645 val* var12 /* : Array[MPropDef] */;
5646 val* var14 /* : Array[MPropDef] */;
5647 val* var15 /* : MClassDef */;
5648 val* var17 /* : MClassDef */;
5649 short int var18 /* : Bool */;
5650 short int var19 /* : Bool */;
5651 val* var_other /* var other: nullable Object */;
5652 short int var21 /* : Bool */;
5653 short int var23 /* : Bool */;
5654 short int var24 /* : Bool */;
5655 short int var25 /* : Bool */;
5656 short int var27 /* : Bool */;
5657 int cltype28;
5658 int idtype29;
5659 const struct type* type_struct30;
5660 const char* var_class_name31;
5661 static val* varonce;
5662 val* var32 /* : String */;
5663 char* var33 /* : NativeString */;
5664 long var34 /* : Int */;
5665 val* var35 /* : FlatString */;
5666 val* var36 /* : Array[Object] */;
5667 long var37 /* : Int */;
5668 val* var38 /* : NativeArray[Object] */;
5669 val* var39 /* : String */;
5670 /* Covariant cast for argument 1 (mproperty) <p1:MProperty> isa MPROPERTY */
5671 /* <p1:MProperty> isa MPROPERTY */
5672 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
5673 cltype = type_struct->color;
5674 idtype = type_struct->id;
5675 if(cltype >= p1->type->table_size) {
5676 var = 0;
5677 } else {
5678 var = p1->type->type_table[cltype] == idtype;
5679 }
5680 if (unlikely(!var)) {
5681 var_class_name = p1 == NULL ? "null" : p1->type->name;
5682 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
5683 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1901);
5684 show_backtrace(1);
5685 }
5686 {
5687 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MPropDef>*/;
5688 }
5689 var_mclassdef = p0;
5690 var_mproperty = p1;
5691 var_location = p2;
5692 {
5693 { /* Inline model#MPropDef#mclassdef= (self,var_mclassdef) on <self:MPropDef> */
5694 self->attrs[COLOR_model__MPropDef___mclassdef].val = var_mclassdef; /* _mclassdef on <self:MPropDef> */
5695 RET_LABEL1:(void)0;
5696 }
5697 }
5698 {
5699 { /* Inline model#MPropDef#mproperty= (self,var_mproperty) on <self:MPropDef> */
5700 /* Covariant cast for argument 0 (mproperty) <var_mproperty:MProperty> isa MPROPERTY */
5701 /* <var_mproperty:MProperty> isa MPROPERTY */
5702 type_struct6 = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
5703 cltype4 = type_struct6->color;
5704 idtype5 = type_struct6->id;
5705 if(cltype4 >= var_mproperty->type->table_size) {
5706 var3 = 0;
5707 } else {
5708 var3 = var_mproperty->type->type_table[cltype4] == idtype5;
5709 }
5710 if (unlikely(!var3)) {
5711 var_class_name7 = var_mproperty == NULL ? "null" : var_mproperty->type->name;
5712 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name7);
5713 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5714 show_backtrace(1);
5715 }
5716 self->attrs[COLOR_model__MPropDef___mproperty].val = var_mproperty; /* _mproperty on <self:MPropDef> */
5717 RET_LABEL2:(void)0;
5718 }
5719 }
5720 {
5721 { /* Inline model#MPropDef#location= (self,var_location) on <self:MPropDef> */
5722 self->attrs[COLOR_model__MPropDef___location].val = var_location; /* _location on <self:MPropDef> */
5723 RET_LABEL8:(void)0;
5724 }
5725 }
5726 {
5727 { /* Inline model#MClassDef#mpropdefs (var_mclassdef) on <var_mclassdef:MClassDef> */
5728 var11 = var_mclassdef->attrs[COLOR_model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_mclassdef:MClassDef> */
5729 if (unlikely(var11 == NULL)) {
5730 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
5731 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 591);
5732 show_backtrace(1);
5733 }
5734 var9 = var11;
5735 RET_LABEL10:(void)0;
5736 }
5737 }
5738 {
5739 array__Array__add(var9, self); /* Direct call array#Array#add on <var9:Array[MPropDef]>*/
5740 }
5741 {
5742 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MProperty> */
5743 var14 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MProperty> */
5744 if (unlikely(var14 == NULL)) {
5745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
5746 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
5747 show_backtrace(1);
5748 }
5749 var12 = var14;
5750 RET_LABEL13:(void)0;
5751 }
5752 }
5753 {
5754 array__Array__add(var12, self); /* Direct call array#Array#add on <var12:Array[MPropDef]>*/
5755 }
5756 {
5757 { /* Inline model#MProperty#intro_mclassdef (var_mproperty) on <var_mproperty:MProperty> */
5758 var17 = var_mproperty->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mproperty:MProperty> */
5759 if (unlikely(var17 == NULL)) {
5760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
5761 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
5762 show_backtrace(1);
5763 }
5764 var15 = var17;
5765 RET_LABEL16:(void)0;
5766 }
5767 }
5768 {
5769 { /* Inline kernel#Object#== (var15,var_mclassdef) on <var15:MClassDef> */
5770 var_other = var_mclassdef;
5771 {
5772 { /* Inline kernel#Object#is_same_instance (var15,var_other) on <var15:MClassDef> */
5773 var23 = var15 == var_other;
5774 var21 = var23;
5775 goto RET_LABEL22;
5776 RET_LABEL22:(void)0;
5777 }
5778 }
5779 var19 = var21;
5780 goto RET_LABEL20;
5781 RET_LABEL20:(void)0;
5782 }
5783 var18 = var19;
5784 }
5785 if (var18){
5786 var24 = var_mproperty->attrs[COLOR_model__MProperty___intro].val != NULL; /* _intro on <var_mproperty:MProperty> */
5787 var25 = !var24;
5788 if (unlikely(!var25)) {
5789 PRINT_ERROR("Runtime error: %s", "Assert failed");
5790 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1909);
5791 show_backtrace(1);
5792 }
5793 {
5794 { /* Inline model#MProperty#intro= (var_mproperty,self) on <var_mproperty:MProperty> */
5795 /* Covariant cast for argument 0 (intro) <self:MPropDef> isa MPROPDEF */
5796 /* <self:MPropDef> isa MPROPDEF */
5797 type_struct30 = var_mproperty->type->resolution_table->types[COLOR_model__MProperty_VTMPROPDEF];
5798 cltype28 = type_struct30->color;
5799 idtype29 = type_struct30->id;
5800 if(cltype28 >= self->type->table_size) {
5801 var27 = 0;
5802 } else {
5803 var27 = self->type->type_table[cltype28] == idtype29;
5804 }
5805 if (unlikely(!var27)) {
5806 var_class_name31 = self == NULL ? "null" : self->type->name;
5807 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name31);
5808 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
5809 show_backtrace(1);
5810 }
5811 var_mproperty->attrs[COLOR_model__MProperty___intro].val = self; /* _intro on <var_mproperty:MProperty> */
5812 RET_LABEL26:(void)0;
5813 }
5814 }
5815 } else {
5816 }
5817 if (varonce) {
5818 var32 = varonce;
5819 } else {
5820 var33 = "#";
5821 var34 = 1;
5822 var35 = string__NativeString__to_s_with_length(var33, var34);
5823 var32 = var35;
5824 varonce = var32;
5825 }
5826 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
5827 { /* var36 = array_instance Array[Object] */
5828 var37 = 3;
5829 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
5830 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var_mclassdef;
5831 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var32;
5832 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var_mproperty;
5833 {
5834 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
5835 }
5836 }
5837 {
5838 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
5839 }
5840 {
5841 { /* Inline model#MPropDef#to_s= (self,var39) on <self:MPropDef> */
5842 self->attrs[COLOR_model__MPropDef___to_s].val = var39; /* _to_s on <self:MPropDef> */
5843 RET_LABEL40:(void)0;
5844 }
5845 }
5846 RET_LABEL:;
5847 }
5848 /* method model#MPropDef#init for (self: Object, MClassDef, MProperty, Location) */
5849 void VIRTUAL_model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
5850 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:Object(MPropDef)>*/
5851 RET_LABEL:;
5852 }
5853 /* method model#MPropDef#name for (self: MPropDef): String */
5854 val* model__MPropDef__name(val* self) {
5855 val* var /* : String */;
5856 val* var1 /* : MProperty */;
5857 val* var3 /* : MProperty */;
5858 val* var4 /* : String */;
5859 val* var6 /* : String */;
5860 {
5861 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
5862 var3 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
5863 if (unlikely(var3 == NULL)) {
5864 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5865 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5866 show_backtrace(1);
5867 }
5868 var1 = var3;
5869 RET_LABEL2:(void)0;
5870 }
5871 }
5872 {
5873 { /* Inline model#MProperty#name (var1) on <var1:MProperty> */
5874 var6 = var1->attrs[COLOR_model__MProperty___name].val; /* _name on <var1:MProperty> */
5875 if (unlikely(var6 == NULL)) {
5876 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5877 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
5878 show_backtrace(1);
5879 }
5880 var4 = var6;
5881 RET_LABEL5:(void)0;
5882 }
5883 }
5884 var = var4;
5885 goto RET_LABEL;
5886 RET_LABEL:;
5887 return var;
5888 }
5889 /* method model#MPropDef#name for (self: Object): String */
5890 val* VIRTUAL_model__MPropDef__name(val* self) {
5891 val* var /* : String */;
5892 val* var1 /* : String */;
5893 var1 = model__MPropDef__name(self);
5894 var = var1;
5895 RET_LABEL:;
5896 return var;
5897 }
5898 /* method model#MPropDef#model for (self: MPropDef): Model */
5899 val* model__MPropDef__model(val* self) {
5900 val* var /* : Model */;
5901 val* var1 /* : MClassDef */;
5902 val* var3 /* : MClassDef */;
5903 val* var4 /* : Model */;
5904 {
5905 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
5906 var3 = self->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
5907 if (unlikely(var3 == NULL)) {
5908 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5909 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5910 show_backtrace(1);
5911 }
5912 var1 = var3;
5913 RET_LABEL2:(void)0;
5914 }
5915 }
5916 {
5917 var4 = model__MClassDef__model(var1);
5918 }
5919 var = var4;
5920 goto RET_LABEL;
5921 RET_LABEL:;
5922 return var;
5923 }
5924 /* method model#MPropDef#model for (self: Object): Model */
5925 val* VIRTUAL_model__MPropDef__model(val* self) {
5926 val* var /* : Model */;
5927 val* var1 /* : Model */;
5928 var1 = model__MPropDef__model(self);
5929 var = var1;
5930 RET_LABEL:;
5931 return var;
5932 }
5933 /* method model#MPropDef#to_s for (self: MPropDef): String */
5934 val* model__MPropDef__to_s(val* self) {
5935 val* var /* : String */;
5936 val* var1 /* : String */;
5937 var1 = self->attrs[COLOR_model__MPropDef___to_s].val; /* _to_s on <self:MPropDef> */
5938 if (unlikely(var1 == NULL)) {
5939 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
5940 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1920);
5941 show_backtrace(1);
5942 }
5943 var = var1;
5944 RET_LABEL:;
5945 return var;
5946 }
5947 /* method model#MPropDef#to_s for (self: Object): String */
5948 val* VIRTUAL_model__MPropDef__to_s(val* self) {
5949 val* var /* : String */;
5950 val* var1 /* : String */;
5951 val* var3 /* : String */;
5952 { /* Inline model#MPropDef#to_s (self) on <self:Object(MPropDef)> */
5953 var3 = self->attrs[COLOR_model__MPropDef___to_s].val; /* _to_s on <self:Object(MPropDef)> */
5954 if (unlikely(var3 == NULL)) {
5955 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
5956 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1920);
5957 show_backtrace(1);
5958 }
5959 var1 = var3;
5960 RET_LABEL2:(void)0;
5961 }
5962 var = var1;
5963 RET_LABEL:;
5964 return var;
5965 }
5966 /* method model#MPropDef#to_s= for (self: MPropDef, String) */
5967 void model__MPropDef__to_s_61d(val* self, val* p0) {
5968 self->attrs[COLOR_model__MPropDef___to_s].val = p0; /* _to_s on <self:MPropDef> */
5969 RET_LABEL:;
5970 }
5971 /* method model#MPropDef#to_s= for (self: Object, String) */
5972 void VIRTUAL_model__MPropDef__to_s_61d(val* self, val* p0) {
5973 { /* Inline model#MPropDef#to_s= (self,p0) on <self:Object(MPropDef)> */
5974 self->attrs[COLOR_model__MPropDef___to_s].val = p0; /* _to_s on <self:Object(MPropDef)> */
5975 RET_LABEL1:(void)0;
5976 }
5977 RET_LABEL:;
5978 }
5979 /* method model#MPropDef#is_intro for (self: MPropDef): Bool */
5980 short int model__MPropDef__is_intro(val* self) {
5981 short int var /* : Bool */;
5982 val* var1 /* : MProperty */;
5983 val* var3 /* : MProperty */;
5984 val* var4 /* : MPropDef */;
5985 val* var6 /* : MPropDef */;
5986 short int var7 /* : Bool */;
5987 short int var8 /* : Bool */;
5988 val* var_other /* var other: nullable Object */;
5989 short int var10 /* : Bool */;
5990 short int var12 /* : Bool */;
5991 {
5992 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
5993 var3 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
5994 if (unlikely(var3 == NULL)) {
5995 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5996 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5997 show_backtrace(1);
5998 }
5999 var1 = var3;
6000 RET_LABEL2:(void)0;
6001 }
6002 }
6003 {
6004 { /* Inline model#MProperty#intro (var1) on <var1:MProperty> */
6005 var6 = var1->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var1:MProperty> */
6006 if (unlikely(var6 == NULL)) {
6007 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6008 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
6009 show_backtrace(1);
6010 }
6011 var4 = var6;
6012 RET_LABEL5:(void)0;
6013 }
6014 }
6015 {
6016 { /* Inline kernel#Object#== (var4,self) on <var4:MPropDef> */
6017 var_other = self;
6018 {
6019 { /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MPropDef> */
6020 var12 = var4 == var_other;
6021 var10 = var12;
6022 goto RET_LABEL11;
6023 RET_LABEL11:(void)0;
6024 }
6025 }
6026 var8 = var10;
6027 goto RET_LABEL9;
6028 RET_LABEL9:(void)0;
6029 }
6030 var7 = var8;
6031 }
6032 var = var7;
6033 goto RET_LABEL;
6034 RET_LABEL:;
6035 return var;
6036 }
6037 /* method model#MPropDef#is_intro for (self: Object): Bool */
6038 short int VIRTUAL_model__MPropDef__is_intro(val* self) {
6039 short int var /* : Bool */;
6040 short int var1 /* : Bool */;
6041 var1 = model__MPropDef__is_intro(self);
6042 var = var1;
6043 RET_LABEL:;
6044 return var;
6045 }
6046 /* method model#MPropDef#lookup_next_definition for (self: MPropDef, MModule, MType): MPropDef */
6047 val* model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
6048 val* var /* : MPropDef */;
6049 val* var_mmodule /* var mmodule: MModule */;
6050 val* var_mtype /* var mtype: MType */;
6051 short int var1 /* : Bool */;
6052 short int var2 /* : Bool */;
6053 val* var3 /* : MProperty */;
6054 val* var5 /* : MProperty */;
6055 val* var6 /* : Array[MPropDef] */;
6056 val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
6057 val* var7 /* : ArrayIterator[nullable Object] */;
6058 val* var_i /* var i: ArrayIterator[MPropDef] */;
6059 short int var8 /* : Bool */;
6060 short int var9 /* : Bool */;
6061 short int var_ /* var : Bool */;
6062 val* var10 /* : nullable Object */;
6063 short int var11 /* : Bool */;
6064 short int var12 /* : Bool */;
6065 val* var_other /* var other: nullable Object */;
6066 short int var14 /* : Bool */;
6067 short int var15 /* : Bool */;
6068 short int var16 /* : Bool */;
6069 short int var17 /* : Bool */;
6070 short int var18 /* : Bool */;
6071 val* var19 /* : nullable Object */;
6072 short int var20 /* : Bool */;
6073 int cltype;
6074 int idtype;
6075 const struct type* type_struct;
6076 const char* var_class_name;
6077 var_mmodule = p0;
6078 var_mtype = p1;
6079 {
6080 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
6081 }
6082 var2 = !var1;
6083 if (unlikely(!var2)) {
6084 PRINT_ERROR("Runtime error: %s", "Assert failed");
6085 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1934);
6086 show_backtrace(1);
6087 }
6088 {
6089 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
6090 var5 = self->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
6091 if (unlikely(var5 == NULL)) {
6092 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
6093 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
6094 show_backtrace(1);
6095 }
6096 var3 = var5;
6097 RET_LABEL4:(void)0;
6098 }
6099 }
6100 {
6101 var6 = model__MProperty__lookup_all_definitions(var3, var_mmodule, var_mtype);
6102 }
6103 var_mpropdefs = var6;
6104 {
6105 var7 = array__AbstractArrayRead__iterator(var_mpropdefs);
6106 }
6107 var_i = var7;
6108 for(;;) {
6109 {
6110 var9 = array__ArrayIterator__is_ok(var_i);
6111 }
6112 var_ = var9;
6113 if (var9){
6114 {
6115 var10 = array__ArrayIterator__item(var_i);
6116 }
6117 {
6118 { /* Inline kernel#Object#!= (var10,self) on <var10:nullable Object(MPropDef)> */
6119 var_other = self;
6120 {
6121 var15 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var_other) /* == on <var10:nullable Object(MPropDef)>*/;
6122 var14 = var15;
6123 }
6124 var16 = !var14;
6125 var12 = var16;
6126 goto RET_LABEL13;
6127 RET_LABEL13:(void)0;
6128 }
6129 var11 = var12;
6130 }
6131 var8 = var11;
6132 } else {
6133 var8 = var_;
6134 }
6135 if (var8){
6136 {
6137 array__ArrayIterator__next(var_i); /* Direct call array#ArrayIterator#next on <var_i:ArrayIterator[MPropDef]>*/
6138 }
6139 } else {
6140 goto BREAK_label;
6141 }
6142 }
6143 BREAK_label: (void)0;
6144 {
6145 var17 = array__ArrayIterator__is_ok(var_i);
6146 }
6147 if (unlikely(!var17)) {
6148 PRINT_ERROR("Runtime error: %s", "Assert \'has_property\' failed");
6149 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1939);
6150 show_backtrace(1);
6151 }
6152 {
6153 array__ArrayIterator__next(var_i); /* Direct call array#ArrayIterator#next on <var_i:ArrayIterator[MPropDef]>*/
6154 }
6155 {
6156 var18 = array__ArrayIterator__is_ok(var_i);
6157 }
6158 if (unlikely(!var18)) {
6159 PRINT_ERROR("Runtime error: %s", "Assert \'has_next_property\' failed");
6160 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1941);
6161 show_backtrace(1);
6162 }
6163 {
6164 var19 = array__ArrayIterator__item(var_i);
6165 }
6166 /* <var19:nullable Object(MPropDef)> isa MPROPDEF */
6167 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPDEF];
6168 cltype = type_struct->color;
6169 idtype = type_struct->id;
6170 if(cltype >= var19->type->table_size) {
6171 var20 = 0;
6172 } else {
6173 var20 = var19->type->type_table[cltype] == idtype;
6174 }
6175 if (unlikely(!var20)) {
6176 var_class_name = var19 == NULL ? "null" : var19->type->name;
6177 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
6178 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1942);
6179 show_backtrace(1);
6180 }
6181 var = var19;
6182 goto RET_LABEL;
6183 RET_LABEL:;
6184 return var;
6185 }
6186 /* method model#MPropDef#lookup_next_definition for (self: Object, MModule, MType): MPropDef */
6187 val* VIRTUAL_model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
6188 val* var /* : MPropDef */;
6189 val* var1 /* : MPropDef */;
6190 var1 = model__MPropDef__lookup_next_definition(self, p0, p1);
6191 var = var1;
6192 RET_LABEL:;
6193 return var;
6194 }
6195 /* method model#MMethodDef#init for (self: MMethodDef, MClassDef, MMethod, Location) */
6196 void model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
6197 short int var /* : Bool */;
6198 int cltype;
6199 int idtype;
6200 const struct type* type_struct;
6201 const char* var_class_name;
6202 val* var_mclassdef /* var mclassdef: MClassDef */;
6203 val* var_mproperty /* var mproperty: MMethod */;
6204 val* var_location /* var location: Location */;
6205 /* Covariant cast for argument 1 (mproperty) <p1:MMethod> isa MPROPERTY */
6206 /* <p1:MMethod> isa MPROPERTY */
6207 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
6208 cltype = type_struct->color;
6209 idtype = type_struct->id;
6210 if(cltype >= p1->type->table_size) {
6211 var = 0;
6212 } else {
6213 var = p1->type->type_table[cltype] == idtype;
6214 }
6215 if (unlikely(!var)) {
6216 var_class_name = p1 == NULL ? "null" : p1->type->name;
6217 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
6218 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1953);
6219 show_backtrace(1);
6220 }
6221 var_mclassdef = p0;
6222 var_mproperty = p1;
6223 var_location = p2;
6224 {
6225 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:MMethodDef>*/
6226 }
6227 RET_LABEL:;
6228 }
6229 /* method model#MMethodDef#init for (self: Object, MClassDef, MMethod, Location) */
6230 void VIRTUAL_model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
6231 model__MMethodDef__init(self, p0, p1, p2); /* Direct call model#MMethodDef#init on <self:Object(MMethodDef)>*/
6232 RET_LABEL:;
6233 }
6234 /* method model#MMethodDef#msignature for (self: MMethodDef): nullable MSignature */
6235 val* model__MMethodDef__msignature(val* self) {
6236 val* var /* : nullable MSignature */;
6237 val* var1 /* : nullable MSignature */;
6238 var1 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:MMethodDef> */
6239 var = var1;
6240 RET_LABEL:;
6241 return var;
6242 }
6243 /* method model#MMethodDef#msignature for (self: Object): nullable MSignature */
6244 val* VIRTUAL_model__MMethodDef__msignature(val* self) {
6245 val* var /* : nullable MSignature */;
6246 val* var1 /* : nullable MSignature */;
6247 val* var3 /* : nullable MSignature */;
6248 { /* Inline model#MMethodDef#msignature (self) on <self:Object(MMethodDef)> */
6249 var3 = self->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <self:Object(MMethodDef)> */
6250 var1 = var3;
6251 RET_LABEL2:(void)0;
6252 }
6253 var = var1;
6254 RET_LABEL:;
6255 return var;
6256 }
6257 /* method model#MMethodDef#msignature= for (self: MMethodDef, nullable MSignature) */
6258 void model__MMethodDef__msignature_61d(val* self, val* p0) {
6259 self->attrs[COLOR_model__MMethodDef___msignature].val = p0; /* _msignature on <self:MMethodDef> */
6260 RET_LABEL:;
6261 }
6262 /* method model#MMethodDef#msignature= for (self: Object, nullable MSignature) */
6263 void VIRTUAL_model__MMethodDef__msignature_61d(val* self, val* p0) {
6264 { /* Inline model#MMethodDef#msignature= (self,p0) on <self:Object(MMethodDef)> */
6265 self->attrs[COLOR_model__MMethodDef___msignature].val = p0; /* _msignature on <self:Object(MMethodDef)> */
6266 RET_LABEL1:(void)0;
6267 }
6268 RET_LABEL:;
6269 }
6270 /* method model#MMethodDef#new_msignature for (self: MMethodDef): nullable MSignature */
6271 val* model__MMethodDef__new_msignature(val* self) {
6272 val* var /* : nullable MSignature */;
6273 val* var1 /* : nullable MSignature */;
6274 var1 = self->attrs[COLOR_model__MMethodDef___new_msignature].val; /* _new_msignature on <self:MMethodDef> */
6275 var = var1;
6276 RET_LABEL:;
6277 return var;
6278 }
6279 /* method model#MMethodDef#new_msignature for (self: Object): nullable MSignature */
6280 val* VIRTUAL_model__MMethodDef__new_msignature(val* self) {
6281 val* var /* : nullable MSignature */;
6282 val* var1 /* : nullable MSignature */;
6283 val* var3 /* : nullable MSignature */;
6284 { /* Inline model#MMethodDef#new_msignature (self) on <self:Object(MMethodDef)> */
6285 var3 = self->attrs[COLOR_model__MMethodDef___new_msignature].val; /* _new_msignature on <self:Object(MMethodDef)> */
6286 var1 = var3;
6287 RET_LABEL2:(void)0;
6288 }
6289 var = var1;
6290 RET_LABEL:;
6291 return var;
6292 }
6293 /* method model#MMethodDef#new_msignature= for (self: MMethodDef, nullable MSignature) */
6294 void model__MMethodDef__new_msignature_61d(val* self, val* p0) {
6295 self->attrs[COLOR_model__MMethodDef___new_msignature].val = p0; /* _new_msignature on <self:MMethodDef> */
6296 RET_LABEL:;
6297 }
6298 /* method model#MMethodDef#new_msignature= for (self: Object, nullable MSignature) */
6299 void VIRTUAL_model__MMethodDef__new_msignature_61d(val* self, val* p0) {
6300 { /* Inline model#MMethodDef#new_msignature= (self,p0) on <self:Object(MMethodDef)> */
6301 self->attrs[COLOR_model__MMethodDef___new_msignature].val = p0; /* _new_msignature on <self:Object(MMethodDef)> */
6302 RET_LABEL1:(void)0;
6303 }
6304 RET_LABEL:;
6305 }
6306 /* method model#MMethodDef#initializers for (self: MMethodDef): Array[MProperty] */
6307 val* model__MMethodDef__initializers(val* self) {
6308 val* var /* : Array[MProperty] */;
6309 val* var1 /* : Array[MProperty] */;
6310 var1 = self->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <self:MMethodDef> */
6311 if (unlikely(var1 == NULL)) {
6312 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
6313 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
6314 show_backtrace(1);
6315 }
6316 var = var1;
6317 RET_LABEL:;
6318 return var;
6319 }
6320 /* method model#MMethodDef#initializers for (self: Object): Array[MProperty] */
6321 val* VIRTUAL_model__MMethodDef__initializers(val* self) {
6322 val* var /* : Array[MProperty] */;
6323 val* var1 /* : Array[MProperty] */;
6324 val* var3 /* : Array[MProperty] */;
6325 { /* Inline model#MMethodDef#initializers (self) on <self:Object(MMethodDef)> */
6326 var3 = self->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <self:Object(MMethodDef)> */
6327 if (unlikely(var3 == NULL)) {
6328 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
6329 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
6330 show_backtrace(1);
6331 }
6332 var1 = var3;
6333 RET_LABEL2:(void)0;
6334 }
6335 var = var1;
6336 RET_LABEL:;
6337 return var;
6338 }
6339 /* method model#MMethodDef#is_abstract for (self: MMethodDef): Bool */
6340 short int model__MMethodDef__is_abstract(val* self) {
6341 short int var /* : Bool */;
6342 short int var1 /* : Bool */;
6343 var1 = self->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on <self:MMethodDef> */
6344 var = var1;
6345 RET_LABEL:;
6346 return var;
6347 }
6348 /* method model#MMethodDef#is_abstract for (self: Object): Bool */
6349 short int VIRTUAL_model__MMethodDef__is_abstract(val* self) {
6350 short int var /* : Bool */;
6351 short int var1 /* : Bool */;
6352 short int var3 /* : Bool */;
6353 { /* Inline model#MMethodDef#is_abstract (self) on <self:Object(MMethodDef)> */
6354 var3 = self->attrs[COLOR_model__MMethodDef___is_abstract].s; /* _is_abstract on <self:Object(MMethodDef)> */
6355 var1 = var3;
6356 RET_LABEL2:(void)0;
6357 }
6358 var = var1;
6359 RET_LABEL:;
6360 return var;
6361 }
6362 /* method model#MMethodDef#is_abstract= for (self: MMethodDef, Bool) */
6363 void model__MMethodDef__is_abstract_61d(val* self, short int p0) {
6364 self->attrs[COLOR_model__MMethodDef___is_abstract].s = p0; /* _is_abstract on <self:MMethodDef> */
6365 RET_LABEL:;
6366 }
6367 /* method model#MMethodDef#is_abstract= for (self: Object, Bool) */
6368 void VIRTUAL_model__MMethodDef__is_abstract_61d(val* self, short int p0) {
6369 { /* Inline model#MMethodDef#is_abstract= (self,p0) on <self:Object(MMethodDef)> */
6370 self->attrs[COLOR_model__MMethodDef___is_abstract].s = p0; /* _is_abstract on <self:Object(MMethodDef)> */
6371 RET_LABEL1:(void)0;
6372 }
6373 RET_LABEL:;
6374 }
6375 /* method model#MMethodDef#is_intern for (self: MMethodDef): Bool */
6376 short int model__MMethodDef__is_intern(val* self) {
6377 short int var /* : Bool */;
6378 short int var1 /* : Bool */;
6379 var1 = self->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <self:MMethodDef> */
6380 var = var1;
6381 RET_LABEL:;
6382 return var;
6383 }
6384 /* method model#MMethodDef#is_intern for (self: Object): Bool */
6385 short int VIRTUAL_model__MMethodDef__is_intern(val* self) {
6386 short int var /* : Bool */;
6387 short int var1 /* : Bool */;
6388 short int var3 /* : Bool */;
6389 { /* Inline model#MMethodDef#is_intern (self) on <self:Object(MMethodDef)> */
6390 var3 = self->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <self:Object(MMethodDef)> */
6391 var1 = var3;
6392 RET_LABEL2:(void)0;
6393 }
6394 var = var1;
6395 RET_LABEL:;
6396 return var;
6397 }
6398 /* method model#MMethodDef#is_intern= for (self: MMethodDef, Bool) */
6399 void model__MMethodDef__is_intern_61d(val* self, short int p0) {
6400 self->attrs[COLOR_model__MMethodDef___is_intern].s = p0; /* _is_intern on <self:MMethodDef> */
6401 RET_LABEL:;
6402 }
6403 /* method model#MMethodDef#is_intern= for (self: Object, Bool) */
6404 void VIRTUAL_model__MMethodDef__is_intern_61d(val* self, short int p0) {
6405 { /* Inline model#MMethodDef#is_intern= (self,p0) on <self:Object(MMethodDef)> */
6406 self->attrs[COLOR_model__MMethodDef___is_intern].s = p0; /* _is_intern on <self:Object(MMethodDef)> */
6407 RET_LABEL1:(void)0;
6408 }
6409 RET_LABEL:;
6410 }
6411 /* method model#MMethodDef#is_extern for (self: MMethodDef): Bool */
6412 short int model__MMethodDef__is_extern(val* self) {
6413 short int var /* : Bool */;
6414 short int var1 /* : Bool */;
6415 var1 = self->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <self:MMethodDef> */
6416 var = var1;
6417 RET_LABEL:;
6418 return var;
6419 }
6420 /* method model#MMethodDef#is_extern for (self: Object): Bool */
6421 short int VIRTUAL_model__MMethodDef__is_extern(val* self) {
6422 short int var /* : Bool */;
6423 short int var1 /* : Bool */;
6424 short int var3 /* : Bool */;
6425 { /* Inline model#MMethodDef#is_extern (self) on <self:Object(MMethodDef)> */
6426 var3 = self->attrs[COLOR_model__MMethodDef___is_extern].s; /* _is_extern on <self:Object(MMethodDef)> */
6427 var1 = var3;
6428 RET_LABEL2:(void)0;
6429 }
6430 var = var1;
6431 RET_LABEL:;
6432 return var;
6433 }
6434 /* method model#MMethodDef#is_extern= for (self: MMethodDef, Bool) */
6435 void model__MMethodDef__is_extern_61d(val* self, short int p0) {
6436 self->attrs[COLOR_model__MMethodDef___is_extern].s = p0; /* _is_extern on <self:MMethodDef> */
6437 RET_LABEL:;
6438 }
6439 /* method model#MMethodDef#is_extern= for (self: Object, Bool) */
6440 void VIRTUAL_model__MMethodDef__is_extern_61d(val* self, short int p0) {
6441 { /* Inline model#MMethodDef#is_extern= (self,p0) on <self:Object(MMethodDef)> */
6442 self->attrs[COLOR_model__MMethodDef___is_extern].s = p0; /* _is_extern on <self:Object(MMethodDef)> */
6443 RET_LABEL1:(void)0;
6444 }
6445 RET_LABEL:;
6446 }
6447 /* method model#MMethodDef#constant_value for (self: MMethodDef): nullable Object */
6448 val* model__MMethodDef__constant_value(val* self) {
6449 val* var /* : nullable Object */;
6450 val* var1 /* : nullable Object */;
6451 var1 = self->attrs[COLOR_model__MMethodDef___constant_value].val; /* _constant_value on <self:MMethodDef> */
6452 var = var1;
6453 RET_LABEL:;
6454 return var;
6455 }
6456 /* method model#MMethodDef#constant_value for (self: Object): nullable Object */
6457 val* VIRTUAL_model__MMethodDef__constant_value(val* self) {
6458 val* var /* : nullable Object */;
6459 val* var1 /* : nullable Object */;
6460 val* var3 /* : nullable Object */;
6461 { /* Inline model#MMethodDef#constant_value (self) on <self:Object(MMethodDef)> */
6462 var3 = self->attrs[COLOR_model__MMethodDef___constant_value].val; /* _constant_value on <self:Object(MMethodDef)> */
6463 var1 = var3;
6464 RET_LABEL2:(void)0;
6465 }
6466 var = var1;
6467 RET_LABEL:;
6468 return var;
6469 }
6470 /* method model#MMethodDef#constant_value= for (self: MMethodDef, nullable Object) */
6471 void model__MMethodDef__constant_value_61d(val* self, val* p0) {
6472 self->attrs[COLOR_model__MMethodDef___constant_value].val = p0; /* _constant_value on <self:MMethodDef> */
6473 RET_LABEL:;
6474 }
6475 /* method model#MMethodDef#constant_value= for (self: Object, nullable Object) */
6476 void VIRTUAL_model__MMethodDef__constant_value_61d(val* self, val* p0) {
6477 { /* Inline model#MMethodDef#constant_value= (self,p0) on <self:Object(MMethodDef)> */
6478 self->attrs[COLOR_model__MMethodDef___constant_value].val = p0; /* _constant_value on <self:Object(MMethodDef)> */
6479 RET_LABEL1:(void)0;
6480 }
6481 RET_LABEL:;
6482 }
6483 /* method model#MAttributeDef#init for (self: MAttributeDef, MClassDef, MAttribute, Location) */
6484 void model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
6485 short int var /* : Bool */;
6486 int cltype;
6487 int idtype;
6488 const struct type* type_struct;
6489 const char* var_class_name;
6490 val* var_mclassdef /* var mclassdef: MClassDef */;
6491 val* var_mproperty /* var mproperty: MAttribute */;
6492 val* var_location /* var location: Location */;
6493 /* Covariant cast for argument 1 (mproperty) <p1:MAttribute> isa MPROPERTY */
6494 /* <p1:MAttribute> isa MPROPERTY */
6495 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
6496 cltype = type_struct->color;
6497 idtype = type_struct->id;
6498 if(cltype >= p1->type->table_size) {
6499 var = 0;
6500 } else {
6501 var = p1->type->type_table[cltype] == idtype;
6502 }
6503 if (unlikely(!var)) {
6504 var_class_name = p1 == NULL ? "null" : p1->type->name;
6505 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
6506 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 2001);
6507 show_backtrace(1);
6508 }
6509 var_mclassdef = p0;
6510 var_mproperty = p1;
6511 var_location = p2;
6512 {
6513 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:MAttributeDef>*/
6514 }
6515 RET_LABEL:;
6516 }
6517 /* method model#MAttributeDef#init for (self: Object, MClassDef, MAttribute, Location) */
6518 void VIRTUAL_model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
6519 model__MAttributeDef__init(self, p0, p1, p2); /* Direct call model#MAttributeDef#init on <self:Object(MAttributeDef)>*/
6520 RET_LABEL:;
6521 }
6522 /* method model#MAttributeDef#static_mtype for (self: MAttributeDef): nullable MType */
6523 val* model__MAttributeDef__static_mtype(val* self) {
6524 val* var /* : nullable MType */;
6525 val* var1 /* : nullable MType */;
6526 var1 = self->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <self:MAttributeDef> */
6527 var = var1;
6528 RET_LABEL:;
6529 return var;
6530 }
6531 /* method model#MAttributeDef#static_mtype for (self: Object): nullable MType */
6532 val* VIRTUAL_model__MAttributeDef__static_mtype(val* self) {
6533 val* var /* : nullable MType */;
6534 val* var1 /* : nullable MType */;
6535 val* var3 /* : nullable MType */;
6536 { /* Inline model#MAttributeDef#static_mtype (self) on <self:Object(MAttributeDef)> */
6537 var3 = self->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <self:Object(MAttributeDef)> */
6538 var1 = var3;
6539 RET_LABEL2:(void)0;
6540 }
6541 var = var1;
6542 RET_LABEL:;
6543 return var;
6544 }
6545 /* method model#MAttributeDef#static_mtype= for (self: MAttributeDef, nullable MType) */
6546 void model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
6547 self->attrs[COLOR_model__MAttributeDef___static_mtype].val = p0; /* _static_mtype on <self:MAttributeDef> */
6548 RET_LABEL:;
6549 }
6550 /* method model#MAttributeDef#static_mtype= for (self: Object, nullable MType) */
6551 void VIRTUAL_model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
6552 { /* Inline model#MAttributeDef#static_mtype= (self,p0) on <self:Object(MAttributeDef)> */
6553 self->attrs[COLOR_model__MAttributeDef___static_mtype].val = p0; /* _static_mtype on <self:Object(MAttributeDef)> */
6554 RET_LABEL1:(void)0;
6555 }
6556 RET_LABEL:;
6557 }
6558 /* method model#MVirtualTypeDef#init for (self: MVirtualTypeDef, MClassDef, MVirtualTypeProp, Location) */
6559 void model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
6560 short int var /* : Bool */;
6561 int cltype;
6562 int idtype;
6563 const struct type* type_struct;
6564 const char* var_class_name;
6565 val* var_mclassdef /* var mclassdef: MClassDef */;
6566 val* var_mproperty /* var mproperty: MVirtualTypeProp */;
6567 val* var_location /* var location: Location */;
6568 /* Covariant cast for argument 1 (mproperty) <p1:MVirtualTypeProp> isa MPROPERTY */
6569 /* <p1:MVirtualTypeProp> isa MPROPERTY */
6570 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
6571 cltype = type_struct->color;
6572 idtype = type_struct->id;
6573 if(cltype >= p1->type->table_size) {
6574 var = 0;
6575 } else {
6576 var = p1->type->type_table[cltype] == idtype;
6577 }
6578 if (unlikely(!var)) {
6579 var_class_name = p1 == NULL ? "null" : p1->type->name;
6580 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
6581 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 2017);
6582 show_backtrace(1);
6583 }
6584 var_mclassdef = p0;
6585 var_mproperty = p1;
6586 var_location = p2;
6587 {
6588 model__MPropDef__init(self, p0, p1, p2); /* Direct call model#MPropDef#init on <self:MVirtualTypeDef>*/
6589 }
6590 RET_LABEL:;
6591 }
6592 /* method model#MVirtualTypeDef#init for (self: Object, MClassDef, MVirtualTypeProp, Location) */
6593 void VIRTUAL_model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
6594 model__MVirtualTypeDef__init(self, p0, p1, p2); /* Direct call model#MVirtualTypeDef#init on <self:Object(MVirtualTypeDef)>*/
6595 RET_LABEL:;
6596 }
6597 /* method model#MVirtualTypeDef#bound for (self: MVirtualTypeDef): nullable MType */
6598 val* model__MVirtualTypeDef__bound(val* self) {
6599 val* var /* : nullable MType */;
6600 val* var1 /* : nullable MType */;
6601 var1 = self->attrs[COLOR_model__MVirtualTypeDef___bound].val; /* _bound on <self:MVirtualTypeDef> */
6602 var = var1;
6603 RET_LABEL:;
6604 return var;
6605 }
6606 /* method model#MVirtualTypeDef#bound for (self: Object): nullable MType */
6607 val* VIRTUAL_model__MVirtualTypeDef__bound(val* self) {
6608 val* var /* : nullable MType */;
6609 val* var1 /* : nullable MType */;
6610 val* var3 /* : nullable MType */;
6611 { /* Inline model#MVirtualTypeDef#bound (self) on <self:Object(MVirtualTypeDef)> */
6612 var3 = self->attrs[COLOR_model__MVirtualTypeDef___bound].val; /* _bound on <self:Object(MVirtualTypeDef)> */
6613 var1 = var3;
6614 RET_LABEL2:(void)0;
6615 }
6616 var = var1;
6617 RET_LABEL:;
6618 return var;
6619 }
6620 /* method model#MVirtualTypeDef#bound= for (self: MVirtualTypeDef, nullable MType) */
6621 void model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
6622 self->attrs[COLOR_model__MVirtualTypeDef___bound].val = p0; /* _bound on <self:MVirtualTypeDef> */
6623 RET_LABEL:;
6624 }
6625 /* method model#MVirtualTypeDef#bound= for (self: Object, nullable MType) */
6626 void VIRTUAL_model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
6627 { /* Inline model#MVirtualTypeDef#bound= (self,p0) on <self:Object(MVirtualTypeDef)> */
6628 self->attrs[COLOR_model__MVirtualTypeDef___bound].val = p0; /* _bound on <self:Object(MVirtualTypeDef)> */
6629 RET_LABEL1:(void)0;
6630 }
6631 RET_LABEL:;
6632 }
6633 /* method model#MVirtualTypeDef#is_fixed for (self: MVirtualTypeDef): Bool */
6634 short int model__MVirtualTypeDef__is_fixed(val* self) {
6635 short int var /* : Bool */;
6636 short int var1 /* : Bool */;
6637 var1 = self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s; /* _is_fixed on <self:MVirtualTypeDef> */
6638 var = var1;
6639 RET_LABEL:;
6640 return var;
6641 }
6642 /* method model#MVirtualTypeDef#is_fixed for (self: Object): Bool */
6643 short int VIRTUAL_model__MVirtualTypeDef__is_fixed(val* self) {
6644 short int var /* : Bool */;
6645 short int var1 /* : Bool */;
6646 short int var3 /* : Bool */;
6647 { /* Inline model#MVirtualTypeDef#is_fixed (self) on <self:Object(MVirtualTypeDef)> */
6648 var3 = self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s; /* _is_fixed on <self:Object(MVirtualTypeDef)> */
6649 var1 = var3;
6650 RET_LABEL2:(void)0;
6651 }
6652 var = var1;
6653 RET_LABEL:;
6654 return var;
6655 }
6656 /* method model#MVirtualTypeDef#is_fixed= for (self: MVirtualTypeDef, Bool) */
6657 void model__MVirtualTypeDef__is_fixed_61d(val* self, short int p0) {
6658 self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s = p0; /* _is_fixed on <self:MVirtualTypeDef> */
6659 RET_LABEL:;
6660 }
6661 /* method model#MVirtualTypeDef#is_fixed= for (self: Object, Bool) */
6662 void VIRTUAL_model__MVirtualTypeDef__is_fixed_61d(val* self, short int p0) {
6663 { /* Inline model#MVirtualTypeDef#is_fixed= (self,p0) on <self:Object(MVirtualTypeDef)> */
6664 self->attrs[COLOR_model__MVirtualTypeDef___is_fixed].s = p0; /* _is_fixed on <self:Object(MVirtualTypeDef)> */
6665 RET_LABEL1:(void)0;
6666 }
6667 RET_LABEL:;
6668 }
6669 /* method model#MClassKind#to_s for (self: MClassKind): String */
6670 val* model__MClassKind__to_s(val* self) {
6671 val* var /* : String */;
6672 val* var1 /* : String */;
6673 var1 = self->attrs[COLOR_model__MClassKind___to_s].val; /* _to_s on <self:MClassKind> */
6674 if (unlikely(var1 == NULL)) {
6675 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
6676 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 2040);
6677 show_backtrace(1);
6678 }
6679 var = var1;
6680 RET_LABEL:;
6681 return var;
6682 }
6683 /* method model#MClassKind#to_s for (self: Object): String */
6684 val* VIRTUAL_model__MClassKind__to_s(val* self) {
6685 val* var /* : String */;
6686 val* var1 /* : String */;
6687 val* var3 /* : String */;
6688 { /* Inline model#MClassKind#to_s (self) on <self:Object(MClassKind)> */
6689 var3 = self->attrs[COLOR_model__MClassKind___to_s].val; /* _to_s on <self:Object(MClassKind)> */
6690 if (unlikely(var3 == NULL)) {
6691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
6692 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 2040);
6693 show_backtrace(1);
6694 }
6695 var1 = var3;
6696 RET_LABEL2:(void)0;
6697 }
6698 var = var1;
6699 RET_LABEL:;
6700 return var;
6701 }
6702 /* method model#MClassKind#to_s= for (self: MClassKind, String) */
6703 void model__MClassKind__to_s_61d(val* self, val* p0) {
6704 self->attrs[COLOR_model__MClassKind___to_s].val = p0; /* _to_s on <self:MClassKind> */
6705 RET_LABEL:;
6706 }
6707 /* method model#MClassKind#to_s= for (self: Object, String) */
6708 void VIRTUAL_model__MClassKind__to_s_61d(val* self, val* p0) {
6709 { /* Inline model#MClassKind#to_s= (self,p0) on <self:Object(MClassKind)> */
6710 self->attrs[COLOR_model__MClassKind___to_s].val = p0; /* _to_s on <self:Object(MClassKind)> */
6711 RET_LABEL1:(void)0;
6712 }
6713 RET_LABEL:;
6714 }
6715 /* method model#MClassKind#need_init for (self: MClassKind): Bool */
6716 short int model__MClassKind__need_init(val* self) {
6717 short int var /* : Bool */;
6718 short int var1 /* : Bool */;
6719 var1 = self->attrs[COLOR_model__MClassKind___need_init].s; /* _need_init on <self:MClassKind> */
6720 var = var1;
6721 RET_LABEL:;
6722 return var;
6723 }
6724 /* method model#MClassKind#need_init for (self: Object): Bool */
6725 short int VIRTUAL_model__MClassKind__need_init(val* self) {
6726 short int var /* : Bool */;
6727 short int var1 /* : Bool */;
6728 short int var3 /* : Bool */;
6729 { /* Inline model#MClassKind#need_init (self) on <self:Object(MClassKind)> */
6730 var3 = self->attrs[COLOR_model__MClassKind___need_init].s; /* _need_init on <self:Object(MClassKind)> */
6731 var1 = var3;
6732 RET_LABEL2:(void)0;
6733 }
6734 var = var1;
6735 RET_LABEL:;
6736 return var;
6737 }
6738 /* method model#MClassKind#need_init= for (self: MClassKind, Bool) */
6739 void model__MClassKind__need_init_61d(val* self, short int p0) {
6740 self->attrs[COLOR_model__MClassKind___need_init].s = p0; /* _need_init on <self:MClassKind> */
6741 RET_LABEL:;
6742 }
6743 /* method model#MClassKind#need_init= for (self: Object, Bool) */
6744 void VIRTUAL_model__MClassKind__need_init_61d(val* self, short int p0) {
6745 { /* Inline model#MClassKind#need_init= (self,p0) on <self:Object(MClassKind)> */
6746 self->attrs[COLOR_model__MClassKind___need_init].s = p0; /* _need_init on <self:Object(MClassKind)> */
6747 RET_LABEL1:(void)0;
6748 }
6749 RET_LABEL:;
6750 }
6751 /* method model#MClassKind#init for (self: MClassKind, String, Bool) */
6752 void model__MClassKind__init(val* self, val* p0, short int p1) {
6753 val* var_s /* var s: String */;
6754 short int var_need_init /* var need_init: Bool */;
6755 var_s = p0;
6756 var_need_init = p1;
6757 {
6758 { /* Inline model#MClassKind#to_s= (self,var_s) on <self:MClassKind> */
6759 self->attrs[COLOR_model__MClassKind___to_s].val = var_s; /* _to_s on <self:MClassKind> */
6760 RET_LABEL1:(void)0;
6761 }
6762 }
6763 {
6764 { /* Inline model#MClassKind#need_init= (self,var_need_init) on <self:MClassKind> */
6765 self->attrs[COLOR_model__MClassKind___need_init].s = var_need_init; /* _need_init on <self:MClassKind> */
6766 RET_LABEL2:(void)0;
6767 }
6768 }
6769 RET_LABEL:;
6770 }
6771 /* method model#MClassKind#init for (self: Object, String, Bool) */
6772 void VIRTUAL_model__MClassKind__init(val* self, val* p0, short int p1) {
6773 model__MClassKind__init(self, p0, p1); /* Direct call model#MClassKind#init on <self:Object(MClassKind)>*/
6774 RET_LABEL:;
6775 }
6776 /* method model#MClassKind#can_specialize for (self: MClassKind, MClassKind): Bool */
6777 short int model__MClassKind__can_specialize(val* self, val* p0) {
6778 short int var /* : Bool */;
6779 val* var_other /* var other: MClassKind */;
6780 val* var1 /* : MClassKind */;
6781 short int var2 /* : Bool */;
6782 short int var3 /* : Bool */;
6783 val* var_other5 /* var other: nullable Object */;
6784 short int var6 /* : Bool */;
6785 short int var8 /* : Bool */;
6786 short int var9 /* : Bool */;
6787 short int var10 /* : Bool */;
6788 val* var11 /* : MClassKind */;
6789 short int var12 /* : Bool */;
6790 short int var13 /* : Bool */;
6791 short int var15 /* : Bool */;
6792 short int var17 /* : Bool */;
6793 short int var_ /* var : Bool */;
6794 val* var18 /* : MClassKind */;
6795 short int var19 /* : Bool */;
6796 short int var20 /* : Bool */;
6797 short int var22 /* : Bool */;
6798 short int var24 /* : Bool */;
6799 short int var25 /* : Bool */;
6800 val* var26 /* : MClassKind */;
6801 short int var27 /* : Bool */;
6802 short int var28 /* : Bool */;
6803 short int var30 /* : Bool */;
6804 short int var32 /* : Bool */;
6805 short int var33 /* : Bool */;
6806 short int var34 /* : Bool */;
6807 short int var36 /* : Bool */;
6808 short int var38 /* : Bool */;
6809 short int var39 /* : Bool */;
6810 val* var40 /* : MClassKind */;
6811 short int var41 /* : Bool */;
6812 short int var42 /* : Bool */;
6813 short int var44 /* : Bool */;
6814 short int var46 /* : Bool */;
6815 short int var_47 /* var : Bool */;
6816 val* var48 /* : MClassKind */;
6817 short int var49 /* : Bool */;
6818 short int var50 /* : Bool */;
6819 short int var52 /* : Bool */;
6820 short int var54 /* : Bool */;
6821 short int var55 /* : Bool */;
6822 short int var56 /* : Bool */;
6823 var_other = p0;
6824 {
6825 var1 = model__Object__interface_kind(self);
6826 }
6827 {
6828 { /* Inline kernel#Object#== (var_other,var1) on <var_other:MClassKind> */
6829 var_other5 = var1;
6830 {
6831 { /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
6832 var8 = var_other == var_other5;
6833 var6 = var8;
6834 goto RET_LABEL7;
6835 RET_LABEL7:(void)0;
6836 }
6837 }
6838 var3 = var6;
6839 goto RET_LABEL4;
6840 RET_LABEL4:(void)0;
6841 }
6842 var2 = var3;
6843 }
6844 if (var2){
6845 var9 = 1;
6846 var = var9;
6847 goto RET_LABEL;
6848 } else {
6849 }
6850 {
6851 var11 = model__Object__interface_kind(self);
6852 }
6853 {
6854 { /* Inline kernel#Object#== (self,var11) on <self:MClassKind> */
6855 var_other5 = var11;
6856 {
6857 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
6858 var17 = self == var_other5;
6859 var15 = var17;
6860 goto RET_LABEL16;
6861 RET_LABEL16:(void)0;
6862 }
6863 }
6864 var13 = var15;
6865 goto RET_LABEL14;
6866 RET_LABEL14:(void)0;
6867 }
6868 var12 = var13;
6869 }
6870 var_ = var12;
6871 if (var12){
6872 var10 = var_;
6873 } else {
6874 {
6875 var18 = model__Object__enum_kind(self);
6876 }
6877 {
6878 { /* Inline kernel#Object#== (self,var18) on <self:MClassKind> */
6879 var_other5 = var18;
6880 {
6881 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
6882 var24 = self == var_other5;
6883 var22 = var24;
6884 goto RET_LABEL23;
6885 RET_LABEL23:(void)0;
6886 }
6887 }
6888 var20 = var22;
6889 goto RET_LABEL21;
6890 RET_LABEL21:(void)0;
6891 }
6892 var19 = var20;
6893 }
6894 var10 = var19;
6895 }
6896 if (var10){
6897 var25 = 0;
6898 var = var25;
6899 goto RET_LABEL;
6900 } else {
6901 {
6902 var26 = model__Object__extern_kind(self);
6903 }
6904 {
6905 { /* Inline kernel#Object#== (self,var26) on <self:MClassKind> */
6906 var_other5 = var26;
6907 {
6908 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
6909 var32 = self == var_other5;
6910 var30 = var32;
6911 goto RET_LABEL31;
6912 RET_LABEL31:(void)0;
6913 }
6914 }
6915 var28 = var30;
6916 goto RET_LABEL29;
6917 RET_LABEL29:(void)0;
6918 }
6919 var27 = var28;
6920 }
6921 if (var27){
6922 {
6923 { /* Inline kernel#Object#== (self,var_other) on <self:MClassKind> */
6924 var_other5 = var_other;
6925 {
6926 { /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
6927 var38 = self == var_other5;
6928 var36 = var38;
6929 goto RET_LABEL37;
6930 RET_LABEL37:(void)0;
6931 }
6932 }
6933 var34 = var36;
6934 goto RET_LABEL35;
6935 RET_LABEL35:(void)0;
6936 }
6937 var33 = var34;
6938 }
6939 var = var33;
6940 goto RET_LABEL;
6941 } else {
6942 {
6943 var40 = model__Object__enum_kind(self);
6944 }
6945 {
6946 { /* Inline kernel#Object#== (var_other,var40) on <var_other:MClassKind> */
6947 var_other5 = var40;
6948 {
6949 { /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
6950 var46 = var_other == var_other5;
6951 var44 = var46;
6952 goto RET_LABEL45;
6953 RET_LABEL45:(void)0;
6954 }
6955 }
6956 var42 = var44;
6957 goto RET_LABEL43;
6958 RET_LABEL43:(void)0;
6959 }
6960 var41 = var42;
6961 }
6962 var_47 = var41;
6963 if (var41){
6964 var39 = var_47;
6965 } else {
6966 {
6967 var48 = model__Object__extern_kind(self);
6968 }
6969 {
6970 { /* Inline kernel#Object#== (var_other,var48) on <var_other:MClassKind> */
6971 var_other5 = var48;
6972 {
6973 { /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
6974 var54 = var_other == var_other5;
6975 var52 = var54;
6976 goto RET_LABEL53;
6977 RET_LABEL53:(void)0;
6978 }
6979 }
6980 var50 = var52;
6981 goto RET_LABEL51;
6982 RET_LABEL51:(void)0;
6983 }
6984 var49 = var50;
6985 }
6986 var39 = var49;
6987 }
6988 if (var39){
6989 var55 = 0;
6990 var = var55;
6991 goto RET_LABEL;
6992 } else {
6993 }
6994 }
6995 }
6996 var56 = 1;
6997 var = var56;
6998 goto RET_LABEL;
6999 RET_LABEL:;
7000 return var;
7001 }
7002 /* method model#MClassKind#can_specialize for (self: Object, MClassKind): Bool */
7003 short int VIRTUAL_model__MClassKind__can_specialize(val* self, val* p0) {
7004 short int var /* : Bool */;
7005 short int var1 /* : Bool */;
7006 var1 = model__MClassKind__can_specialize(self, p0);
7007 var = var1;
7008 RET_LABEL:;
7009 return var;
7010 }
7011 /* method model#Object#abstract_kind for (self: Object): MClassKind */
7012 val* model__Object__abstract_kind(val* self) {
7013 val* var /* : MClassKind */;
7014 static val* varonce;
7015 static int varonce_guard;
7016 val* var1 /* : MClassKind */;
7017 val* var2 /* : MClassKind */;
7018 static val* varonce3;
7019 val* var4 /* : String */;
7020 char* var5 /* : NativeString */;
7021 long var6 /* : Int */;
7022 val* var7 /* : FlatString */;
7023 short int var8 /* : Bool */;
7024 if (varonce_guard) {
7025 var1 = varonce;
7026 } else {
7027 var2 = NEW_model__MClassKind(&type_model__MClassKind);
7028 if (varonce3) {
7029 var4 = varonce3;
7030 } else {
7031 var5 = "abstract class";
7032 var6 = 14;
7033 var7 = string__NativeString__to_s_with_length(var5, var6);
7034 var4 = var7;
7035 varonce3 = var4;
7036 }
7037 var8 = 1;
7038 {
7039 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
7040 }
7041 var1 = var2;
7042 varonce = var1;
7043 varonce_guard = 1;
7044 }
7045 var = var1;
7046 goto RET_LABEL;
7047 RET_LABEL:;
7048 return var;
7049 }
7050 /* method model#Object#abstract_kind for (self: Object): MClassKind */
7051 val* VIRTUAL_model__Object__abstract_kind(val* self) {
7052 val* var /* : MClassKind */;
7053 val* var1 /* : MClassKind */;
7054 var1 = model__Object__abstract_kind(self);
7055 var = var1;
7056 RET_LABEL:;
7057 return var;
7058 }
7059 /* method model#Object#concrete_kind for (self: Object): MClassKind */
7060 val* model__Object__concrete_kind(val* self) {
7061 val* var /* : MClassKind */;
7062 static val* varonce;
7063 static int varonce_guard;
7064 val* var1 /* : MClassKind */;
7065 val* var2 /* : MClassKind */;
7066 static val* varonce3;
7067 val* var4 /* : String */;
7068 char* var5 /* : NativeString */;
7069 long var6 /* : Int */;
7070 val* var7 /* : FlatString */;
7071 short int var8 /* : Bool */;
7072 if (varonce_guard) {
7073 var1 = varonce;
7074 } else {
7075 var2 = NEW_model__MClassKind(&type_model__MClassKind);
7076 if (varonce3) {
7077 var4 = varonce3;
7078 } else {
7079 var5 = "class";
7080 var6 = 5;
7081 var7 = string__NativeString__to_s_with_length(var5, var6);
7082 var4 = var7;
7083 varonce3 = var4;
7084 }
7085 var8 = 1;
7086 {
7087 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
7088 }
7089 var1 = var2;
7090 varonce = var1;
7091 varonce_guard = 1;
7092 }
7093 var = var1;
7094 goto RET_LABEL;
7095 RET_LABEL:;
7096 return var;
7097 }
7098 /* method model#Object#concrete_kind for (self: Object): MClassKind */
7099 val* VIRTUAL_model__Object__concrete_kind(val* self) {
7100 val* var /* : MClassKind */;
7101 val* var1 /* : MClassKind */;
7102 var1 = model__Object__concrete_kind(self);
7103 var = var1;
7104 RET_LABEL:;
7105 return var;
7106 }
7107 /* method model#Object#interface_kind for (self: Object): MClassKind */
7108 val* model__Object__interface_kind(val* self) {
7109 val* var /* : MClassKind */;
7110 static val* varonce;
7111 static int varonce_guard;
7112 val* var1 /* : MClassKind */;
7113 val* var2 /* : MClassKind */;
7114 static val* varonce3;
7115 val* var4 /* : String */;
7116 char* var5 /* : NativeString */;
7117 long var6 /* : Int */;
7118 val* var7 /* : FlatString */;
7119 short int var8 /* : Bool */;
7120 if (varonce_guard) {
7121 var1 = varonce;
7122 } else {
7123 var2 = NEW_model__MClassKind(&type_model__MClassKind);
7124 if (varonce3) {
7125 var4 = varonce3;
7126 } else {
7127 var5 = "interface";
7128 var6 = 9;
7129 var7 = string__NativeString__to_s_with_length(var5, var6);
7130 var4 = var7;
7131 varonce3 = var4;
7132 }
7133 var8 = 0;
7134 {
7135 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
7136 }
7137 var1 = var2;
7138 varonce = var1;
7139 varonce_guard = 1;
7140 }
7141 var = var1;
7142 goto RET_LABEL;
7143 RET_LABEL:;
7144 return var;
7145 }
7146 /* method model#Object#interface_kind for (self: Object): MClassKind */
7147 val* VIRTUAL_model__Object__interface_kind(val* self) {
7148 val* var /* : MClassKind */;
7149 val* var1 /* : MClassKind */;
7150 var1 = model__Object__interface_kind(self);
7151 var = var1;
7152 RET_LABEL:;
7153 return var;
7154 }
7155 /* method model#Object#enum_kind for (self: Object): MClassKind */
7156 val* model__Object__enum_kind(val* self) {
7157 val* var /* : MClassKind */;
7158 static val* varonce;
7159 static int varonce_guard;
7160 val* var1 /* : MClassKind */;
7161 val* var2 /* : MClassKind */;
7162 static val* varonce3;
7163 val* var4 /* : String */;
7164 char* var5 /* : NativeString */;
7165 long var6 /* : Int */;
7166 val* var7 /* : FlatString */;
7167 short int var8 /* : Bool */;
7168 if (varonce_guard) {
7169 var1 = varonce;
7170 } else {
7171 var2 = NEW_model__MClassKind(&type_model__MClassKind);
7172 if (varonce3) {
7173 var4 = varonce3;
7174 } else {
7175 var5 = "enum";
7176 var6 = 4;
7177 var7 = string__NativeString__to_s_with_length(var5, var6);
7178 var4 = var7;
7179 varonce3 = var4;
7180 }
7181 var8 = 0;
7182 {
7183 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
7184 }
7185 var1 = var2;
7186 varonce = var1;
7187 varonce_guard = 1;
7188 }
7189 var = var1;
7190 goto RET_LABEL;
7191 RET_LABEL:;
7192 return var;
7193 }
7194 /* method model#Object#enum_kind for (self: Object): MClassKind */
7195 val* VIRTUAL_model__Object__enum_kind(val* self) {
7196 val* var /* : MClassKind */;
7197 val* var1 /* : MClassKind */;
7198 var1 = model__Object__enum_kind(self);
7199 var = var1;
7200 RET_LABEL:;
7201 return var;
7202 }
7203 /* method model#Object#extern_kind for (self: Object): MClassKind */
7204 val* model__Object__extern_kind(val* self) {
7205 val* var /* : MClassKind */;
7206 static val* varonce;
7207 static int varonce_guard;
7208 val* var1 /* : MClassKind */;
7209 val* var2 /* : MClassKind */;
7210 static val* varonce3;
7211 val* var4 /* : String */;
7212 char* var5 /* : NativeString */;
7213 long var6 /* : Int */;
7214 val* var7 /* : FlatString */;
7215 short int var8 /* : Bool */;
7216 if (varonce_guard) {
7217 var1 = varonce;
7218 } else {
7219 var2 = NEW_model__MClassKind(&type_model__MClassKind);
7220 if (varonce3) {
7221 var4 = varonce3;
7222 } else {
7223 var5 = "extern class";
7224 var6 = 12;
7225 var7 = string__NativeString__to_s_with_length(var5, var6);
7226 var4 = var7;
7227 varonce3 = var4;
7228 }
7229 var8 = 0;
7230 {
7231 model__MClassKind__init(var2, var4, var8); /* Direct call model#MClassKind#init on <var2:MClassKind>*/
7232 }
7233 var1 = var2;
7234 varonce = var1;
7235 varonce_guard = 1;
7236 }
7237 var = var1;
7238 goto RET_LABEL;
7239 RET_LABEL:;
7240 return var;
7241 }
7242 /* method model#Object#extern_kind for (self: Object): MClassKind */
7243 val* VIRTUAL_model__Object__extern_kind(val* self) {
7244 val* var /* : MClassKind */;
7245 val* var1 /* : MClassKind */;
7246 var1 = model__Object__extern_kind(self);
7247 var = var1;
7248 RET_LABEL:;
7249 return var;
7250 }