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