update NOTICE
[nit.git] / c_src / modelize_property.sep.1.c
1 #include "modelize_property.sep.0.h"
2 /* method modelize_property#ToolContext#modelize_property_phase for (self: ToolContext): Phase */
3 val* modelize_property__ToolContext__modelize_property_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_modelize_property__ToolContext___modelize_property_phase].val; /* _modelize_property_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelize_property_phase");
9 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 24);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method modelize_property#ToolContext#modelize_property_phase for (self: Object): Phase */
17 val* VIRTUAL_modelize_property__ToolContext__modelize_property_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 val* var3 /* : Phase */;
21 { /* Inline modelize_property#ToolContext#modelize_property_phase (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_modelize_property__ToolContext___modelize_property_phase].val; /* _modelize_property_phase on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelize_property_phase");
25 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 24);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method modelize_property#ModelizePropertyPhase#process_nmodule for (self: ModelizePropertyPhase, AModule) */
36 void modelize_property__ModelizePropertyPhase__process_nmodule(val* self, val* p0) {
37 val* var_nmodule /* var nmodule: AModule */;
38 val* var /* : ANodes[AClassdef] */;
39 val* var2 /* : ANodes[AClassdef] */;
40 val* var_ /* var : ANodes[AClassdef] */;
41 val* var3 /* : Iterator[ANode] */;
42 val* var_4 /* var : Iterator[AClassdef] */;
43 short int var5 /* : Bool */;
44 val* var6 /* : nullable Object */;
45 val* var_nclassdef /* var nclassdef: AClassdef */;
46 val* var7 /* : nullable Array[AClassdef] */;
47 val* var9 /* : nullable Array[AClassdef] */;
48 val* var10 /* : null */;
49 short int var11 /* : Bool */;
50 short int var12 /* : Bool */;
51 val* var13 /* : ToolContext */;
52 val* var15 /* : ToolContext */;
53 val* var16 /* : ModelBuilder */;
54 var_nmodule = p0;
55 {
56 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
57 var2 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
58 if (unlikely(var2 == NULL)) {
59 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
60 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 859);
61 show_backtrace(1);
62 }
63 var = var2;
64 RET_LABEL1:(void)0;
65 }
66 }
67 var_ = var;
68 {
69 var3 = parser_nodes__ANodes__iterator(var_);
70 }
71 var_4 = var3;
72 for(;;) {
73 {
74 var5 = ((short int (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_4) /* is_ok on <var_4:Iterator[AClassdef]>*/;
75 }
76 if (var5){
77 {
78 var6 = ((val* (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__item]))(var_4) /* item on <var_4:Iterator[AClassdef]>*/;
79 }
80 var_nclassdef = var6;
81 {
82 { /* Inline modelize_class#AClassdef#all_defs (var_nclassdef) on <var_nclassdef:AClassdef> */
83 var9 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___all_defs].val; /* _all_defs on <var_nclassdef:AClassdef> */
84 var7 = var9;
85 RET_LABEL8:(void)0;
86 }
87 }
88 var10 = NULL;
89 if (var7 == NULL) {
90 var11 = 1; /* is null */
91 } else {
92 var11 = 0; /* arg is null but recv is not */
93 }
94 if (0) {
95 var12 = array__Array___61d_61d(var7, var10);
96 var11 = var12;
97 }
98 if (var11){
99 goto BREAK_label;
100 } else {
101 }
102 {
103 { /* Inline phase#Phase#toolcontext (self) on <self:ModelizePropertyPhase> */
104 var15 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:ModelizePropertyPhase> */
105 if (unlikely(var15 == NULL)) {
106 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
107 PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162);
108 show_backtrace(1);
109 }
110 var13 = var15;
111 RET_LABEL14:(void)0;
112 }
113 }
114 {
115 var16 = modelbuilder__ToolContext__modelbuilder(var13);
116 }
117 {
118 modelize_property__ModelBuilder__build_properties(var16, var_nclassdef); /* Direct call modelize_property#ModelBuilder#build_properties on <var16:ModelBuilder>*/
119 }
120 BREAK_label: (void)0;
121 {
122 ((void (*)(val*))(var_4->class->vft[COLOR_abstract_collection__Iterator__next]))(var_4) /* next on <var_4:Iterator[AClassdef]>*/;
123 }
124 } else {
125 goto BREAK_label17;
126 }
127 }
128 BREAK_label17: (void)0;
129 {
130 { /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:Iterator[AClassdef]> */
131 RET_LABEL18:(void)0;
132 }
133 }
134 RET_LABEL:;
135 }
136 /* method modelize_property#ModelizePropertyPhase#process_nmodule for (self: Object, AModule) */
137 void VIRTUAL_modelize_property__ModelizePropertyPhase__process_nmodule(val* self, val* p0) {
138 modelize_property__ModelizePropertyPhase__process_nmodule(self, p0); /* Direct call modelize_property#ModelizePropertyPhase#process_nmodule on <self:Object(ModelizePropertyPhase)>*/
139 RET_LABEL:;
140 }
141 /* method modelize_property#ModelBuilder#mpropdef2npropdef for (self: ModelBuilder): HashMap[MPropDef, APropdef] */
142 val* modelize_property__ModelBuilder__mpropdef2npropdef(val* self) {
143 val* var /* : HashMap[MPropDef, APropdef] */;
144 val* var1 /* : HashMap[MPropDef, APropdef] */;
145 var1 = self->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <self:ModelBuilder> */
146 if (unlikely(var1 == NULL)) {
147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
148 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
149 show_backtrace(1);
150 }
151 var = var1;
152 RET_LABEL:;
153 return var;
154 }
155 /* method modelize_property#ModelBuilder#mpropdef2npropdef for (self: Object): HashMap[MPropDef, APropdef] */
156 val* VIRTUAL_modelize_property__ModelBuilder__mpropdef2npropdef(val* self) {
157 val* var /* : HashMap[MPropDef, APropdef] */;
158 val* var1 /* : HashMap[MPropDef, APropdef] */;
159 val* var3 /* : HashMap[MPropDef, APropdef] */;
160 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (self) on <self:Object(ModelBuilder)> */
161 var3 = self->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <self:Object(ModelBuilder)> */
162 if (unlikely(var3 == NULL)) {
163 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
164 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
165 show_backtrace(1);
166 }
167 var1 = var3;
168 RET_LABEL2:(void)0;
169 }
170 var = var1;
171 RET_LABEL:;
172 return var;
173 }
174 /* method modelize_property#ModelBuilder#build_properties for (self: ModelBuilder, AClassdef) */
175 void modelize_property__ModelBuilder__build_properties(val* self, val* p0) {
176 val* var_nclassdef /* var nclassdef: AClassdef */;
177 short int var /* : Bool */;
178 short int var2 /* : Bool */;
179 short int var3 /* : Bool */;
180 val* var5 /* : nullable MClassDef */;
181 val* var7 /* : nullable MClassDef */;
182 val* var_mclassdef /* var mclassdef: MClassDef */;
183 val* var8 /* : nullable POSetElement[MClassDef] */;
184 val* var10 /* : nullable POSetElement[MClassDef] */;
185 val* var11 /* : null */;
186 short int var12 /* : Bool */;
187 short int var13 /* : Bool */;
188 val* var_other /* var other: nullable Object */;
189 short int var15 /* : Bool */;
190 short int var17 /* : Bool */;
191 val* var18 /* : nullable POSetElement[MClassDef] */;
192 val* var20 /* : nullable POSetElement[MClassDef] */;
193 val* var21 /* : Collection[Object] */;
194 val* var_ /* var : Collection[MClassDef] */;
195 val* var22 /* : Iterator[nullable Object] */;
196 val* var_23 /* var : Iterator[MClassDef] */;
197 short int var24 /* : Bool */;
198 val* var25 /* : nullable Object */;
199 val* var_superclassdef /* var superclassdef: MClassDef */;
200 val* var26 /* : HashMap[MClassDef, AClassdef] */;
201 val* var28 /* : HashMap[MClassDef, AClassdef] */;
202 short int var29 /* : Bool */;
203 short int var30 /* : Bool */;
204 val* var31 /* : HashMap[MClassDef, AClassdef] */;
205 val* var33 /* : HashMap[MClassDef, AClassdef] */;
206 val* var34 /* : nullable Object */;
207 val* var37 /* : nullable Array[AClassdef] */;
208 val* var39 /* : nullable Array[AClassdef] */;
209 val* var_40 /* var : nullable Array[AClassdef] */;
210 val* var41 /* : ArrayIterator[nullable Object] */;
211 val* var_42 /* var : ArrayIterator[AClassdef] */;
212 short int var43 /* : Bool */;
213 val* var44 /* : nullable Object */;
214 val* var_nclassdef2 /* var nclassdef2: AClassdef */;
215 val* var45 /* : ANodes[APropdef] */;
216 val* var47 /* : ANodes[APropdef] */;
217 val* var_48 /* var : ANodes[APropdef] */;
218 val* var49 /* : Iterator[ANode] */;
219 val* var_50 /* var : Iterator[APropdef] */;
220 short int var51 /* : Bool */;
221 val* var52 /* : nullable Object */;
222 val* var_npropdef /* var npropdef: APropdef */;
223 val* var55 /* : ANodes[APropdef] */;
224 val* var57 /* : ANodes[APropdef] */;
225 val* var_58 /* var : ANodes[APropdef] */;
226 val* var59 /* : Iterator[ANode] */;
227 val* var_60 /* var : Iterator[APropdef] */;
228 short int var61 /* : Bool */;
229 val* var62 /* : nullable Object */;
230 val* var_npropdef63 /* var npropdef: APropdef */;
231 val* var66 /* : ANodes[APropdef] */;
232 val* var68 /* : ANodes[APropdef] */;
233 val* var_69 /* var : ANodes[APropdef] */;
234 val* var70 /* : Iterator[ANode] */;
235 val* var_71 /* var : Iterator[APropdef] */;
236 short int var72 /* : Bool */;
237 val* var73 /* : nullable Object */;
238 val* var_npropdef74 /* var npropdef: APropdef */;
239 var_nclassdef = p0;
240 {
241 { /* Inline modelize_property#AClassdef#build_properties_is_done (var_nclassdef) on <var_nclassdef:AClassdef> */
242 var2 = var_nclassdef->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <var_nclassdef:AClassdef> */
243 var = var2;
244 RET_LABEL1:(void)0;
245 }
246 }
247 if (var){
248 goto RET_LABEL;
249 } else {
250 }
251 var3 = 1;
252 {
253 { /* Inline modelize_property#AClassdef#build_properties_is_done= (var_nclassdef,var3) on <var_nclassdef:AClassdef> */
254 var_nclassdef->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s = var3; /* _build_properties_is_done on <var_nclassdef:AClassdef> */
255 RET_LABEL4:(void)0;
256 }
257 }
258 {
259 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef> */
260 var7 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef> */
261 var5 = var7;
262 RET_LABEL6:(void)0;
263 }
264 }
265 if (unlikely(var5 == NULL)) {
266 PRINT_ERROR("Runtime error: %s", "Cast failed");
267 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 50);
268 show_backtrace(1);
269 }
270 var_mclassdef = var5;
271 {
272 { /* Inline model#MClassDef#in_hierarchy (var_mclassdef) on <var_mclassdef:MClassDef> */
273 var10 = var_mclassdef->attrs[COLOR_model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef:MClassDef> */
274 var8 = var10;
275 RET_LABEL9:(void)0;
276 }
277 }
278 var11 = NULL;
279 if (var8 == NULL) {
280 var12 = 1; /* is null */
281 } else {
282 var12 = 0; /* arg is null but recv is not */
283 }
284 if (0) {
285 { /* Inline kernel#Object#== (var8,var11) on <var8:nullable POSetElement[MClassDef]> */
286 var_other = var11;
287 {
288 { /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable POSetElement[MClassDef](POSetElement[MClassDef])> */
289 var17 = var8 == var_other;
290 var15 = var17;
291 goto RET_LABEL16;
292 RET_LABEL16:(void)0;
293 }
294 }
295 var13 = var15;
296 goto RET_LABEL14;
297 RET_LABEL14:(void)0;
298 }
299 var12 = var13;
300 }
301 if (var12){
302 goto RET_LABEL;
303 } else {
304 }
305 {
306 { /* Inline model#MClassDef#in_hierarchy (var_mclassdef) on <var_mclassdef:MClassDef> */
307 var20 = var_mclassdef->attrs[COLOR_model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef:MClassDef> */
308 var18 = var20;
309 RET_LABEL19:(void)0;
310 }
311 }
312 if (var18 == NULL) {
313 PRINT_ERROR("Runtime error: %s", "Receiver is null");
314 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 52);
315 show_backtrace(1);
316 } else {
317 var21 = poset__POSetElement__direct_greaters(var18);
318 }
319 var_ = var21;
320 {
321 var22 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[MClassDef]>*/;
322 }
323 var_23 = var22;
324 for(;;) {
325 {
326 var24 = ((short int (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_23) /* is_ok on <var_23:Iterator[MClassDef]>*/;
327 }
328 if (var24){
329 {
330 var25 = ((val* (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Iterator__item]))(var_23) /* item on <var_23:Iterator[MClassDef]>*/;
331 }
332 var_superclassdef = var25;
333 {
334 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:ModelBuilder> */
335 var28 = self->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
336 if (unlikely(var28 == NULL)) {
337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
338 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410);
339 show_backtrace(1);
340 }
341 var26 = var28;
342 RET_LABEL27:(void)0;
343 }
344 }
345 {
346 var29 = abstract_collection__MapRead__has_key(var26, var_superclassdef);
347 }
348 var30 = !var29;
349 if (var30){
350 goto BREAK_label;
351 } else {
352 }
353 {
354 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:ModelBuilder> */
355 var33 = self->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
356 if (unlikely(var33 == NULL)) {
357 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
358 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_class.nit", 410);
359 show_backtrace(1);
360 }
361 var31 = var33;
362 RET_LABEL32:(void)0;
363 }
364 }
365 {
366 var34 = hash_collection__HashMap___91d_93d(var31, var_superclassdef);
367 }
368 {
369 modelize_property__ModelBuilder__build_properties(self, var34); /* Direct call modelize_property#ModelBuilder#build_properties on <self:ModelBuilder>*/
370 }
371 BREAK_label: (void)0;
372 {
373 ((void (*)(val*))(var_23->class->vft[COLOR_abstract_collection__Iterator__next]))(var_23) /* next on <var_23:Iterator[MClassDef]>*/;
374 }
375 } else {
376 goto BREAK_label35;
377 }
378 }
379 BREAK_label35: (void)0;
380 {
381 { /* Inline abstract_collection#Iterator#finish (var_23) on <var_23:Iterator[MClassDef]> */
382 RET_LABEL36:(void)0;
383 }
384 }
385 {
386 { /* Inline modelize_class#AClassdef#all_defs (var_nclassdef) on <var_nclassdef:AClassdef> */
387 var39 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___all_defs].val; /* _all_defs on <var_nclassdef:AClassdef> */
388 var37 = var39;
389 RET_LABEL38:(void)0;
390 }
391 }
392 var_40 = var37;
393 if (var_40 == NULL) {
394 PRINT_ERROR("Runtime error: %s", "Receiver is null");
395 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 57);
396 show_backtrace(1);
397 } else {
398 var41 = array__AbstractArrayRead__iterator(var_40);
399 }
400 var_42 = var41;
401 for(;;) {
402 {
403 var43 = array__ArrayIterator__is_ok(var_42);
404 }
405 if (var43){
406 {
407 var44 = array__ArrayIterator__item(var_42);
408 }
409 var_nclassdef2 = var44;
410 {
411 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
412 var47 = var_nclassdef2->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
413 if (unlikely(var47 == NULL)) {
414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
415 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
416 show_backtrace(1);
417 }
418 var45 = var47;
419 RET_LABEL46:(void)0;
420 }
421 }
422 var_48 = var45;
423 {
424 var49 = parser_nodes__ANodes__iterator(var_48);
425 }
426 var_50 = var49;
427 for(;;) {
428 {
429 var51 = ((short int (*)(val*))(var_50->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_50) /* is_ok on <var_50:Iterator[APropdef]>*/;
430 }
431 if (var51){
432 {
433 var52 = ((val* (*)(val*))(var_50->class->vft[COLOR_abstract_collection__Iterator__item]))(var_50) /* item on <var_50:Iterator[APropdef]>*/;
434 }
435 var_npropdef = var52;
436 {
437 ((void (*)(val*, val*, val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__build_property]))(var_npropdef, self, var_mclassdef) /* build_property on <var_npropdef:APropdef>*/;
438 }
439 {
440 ((void (*)(val*))(var_50->class->vft[COLOR_abstract_collection__Iterator__next]))(var_50) /* next on <var_50:Iterator[APropdef]>*/;
441 }
442 } else {
443 goto BREAK_label53;
444 }
445 }
446 BREAK_label53: (void)0;
447 {
448 { /* Inline abstract_collection#Iterator#finish (var_50) on <var_50:Iterator[APropdef]> */
449 RET_LABEL54:(void)0;
450 }
451 }
452 {
453 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
454 var57 = var_nclassdef2->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
455 if (unlikely(var57 == NULL)) {
456 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
457 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
458 show_backtrace(1);
459 }
460 var55 = var57;
461 RET_LABEL56:(void)0;
462 }
463 }
464 var_58 = var55;
465 {
466 var59 = parser_nodes__ANodes__iterator(var_58);
467 }
468 var_60 = var59;
469 for(;;) {
470 {
471 var61 = ((short int (*)(val*))(var_60->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_60) /* is_ok on <var_60:Iterator[APropdef]>*/;
472 }
473 if (var61){
474 {
475 var62 = ((val* (*)(val*))(var_60->class->vft[COLOR_abstract_collection__Iterator__item]))(var_60) /* item on <var_60:Iterator[APropdef]>*/;
476 }
477 var_npropdef63 = var62;
478 {
479 ((void (*)(val*, val*))(var_npropdef63->class->vft[COLOR_modelize_property__APropdef__build_signature]))(var_npropdef63, self) /* build_signature on <var_npropdef63:APropdef>*/;
480 }
481 {
482 ((void (*)(val*))(var_60->class->vft[COLOR_abstract_collection__Iterator__next]))(var_60) /* next on <var_60:Iterator[APropdef]>*/;
483 }
484 } else {
485 goto BREAK_label64;
486 }
487 }
488 BREAK_label64: (void)0;
489 {
490 { /* Inline abstract_collection#Iterator#finish (var_60) on <var_60:Iterator[APropdef]> */
491 RET_LABEL65:(void)0;
492 }
493 }
494 {
495 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
496 var68 = var_nclassdef2->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
497 if (unlikely(var68 == NULL)) {
498 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
499 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
500 show_backtrace(1);
501 }
502 var66 = var68;
503 RET_LABEL67:(void)0;
504 }
505 }
506 var_69 = var66;
507 {
508 var70 = parser_nodes__ANodes__iterator(var_69);
509 }
510 var_71 = var70;
511 for(;;) {
512 {
513 var72 = ((short int (*)(val*))(var_71->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_71) /* is_ok on <var_71:Iterator[APropdef]>*/;
514 }
515 if (var72){
516 {
517 var73 = ((val* (*)(val*))(var_71->class->vft[COLOR_abstract_collection__Iterator__item]))(var_71) /* item on <var_71:Iterator[APropdef]>*/;
518 }
519 var_npropdef74 = var73;
520 {
521 ((void (*)(val*, val*))(var_npropdef74->class->vft[COLOR_modelize_property__APropdef__check_signature]))(var_npropdef74, self) /* check_signature on <var_npropdef74:APropdef>*/;
522 }
523 {
524 ((void (*)(val*))(var_71->class->vft[COLOR_abstract_collection__Iterator__next]))(var_71) /* next on <var_71:Iterator[APropdef]>*/;
525 }
526 } else {
527 goto BREAK_label75;
528 }
529 }
530 BREAK_label75: (void)0;
531 {
532 { /* Inline abstract_collection#Iterator#finish (var_71) on <var_71:Iterator[APropdef]> */
533 RET_LABEL76:(void)0;
534 }
535 }
536 {
537 array__ArrayIterator__next(var_42); /* Direct call array#ArrayIterator#next on <var_42:ArrayIterator[AClassdef]>*/
538 }
539 } else {
540 goto BREAK_label77;
541 }
542 }
543 BREAK_label77: (void)0;
544 {
545 { /* Inline abstract_collection#Iterator#finish (var_42) on <var_42:ArrayIterator[AClassdef]> */
546 RET_LABEL78:(void)0;
547 }
548 }
549 {
550 modelize_property__ModelBuilder__process_default_constructors(self, var_nclassdef); /* Direct call modelize_property#ModelBuilder#process_default_constructors on <self:ModelBuilder>*/
551 }
552 RET_LABEL:;
553 }
554 /* method modelize_property#ModelBuilder#build_properties for (self: Object, AClassdef) */
555 void VIRTUAL_modelize_property__ModelBuilder__build_properties(val* self, val* p0) {
556 modelize_property__ModelBuilder__build_properties(self, p0); /* Direct call modelize_property#ModelBuilder#build_properties on <self:Object(ModelBuilder)>*/
557 RET_LABEL:;
558 }
559 /* method modelize_property#ModelBuilder#the_root_init_mmethod for (self: ModelBuilder): nullable MMethod */
560 val* modelize_property__ModelBuilder__the_root_init_mmethod(val* self) {
561 val* var /* : nullable MMethod */;
562 val* var1 /* : nullable MMethod */;
563 var1 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
564 var = var1;
565 RET_LABEL:;
566 return var;
567 }
568 /* method modelize_property#ModelBuilder#the_root_init_mmethod for (self: Object): nullable MMethod */
569 val* VIRTUAL_modelize_property__ModelBuilder__the_root_init_mmethod(val* self) {
570 val* var /* : nullable MMethod */;
571 val* var1 /* : nullable MMethod */;
572 val* var3 /* : nullable MMethod */;
573 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:Object(ModelBuilder)> */
574 var3 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:Object(ModelBuilder)> */
575 var1 = var3;
576 RET_LABEL2:(void)0;
577 }
578 var = var1;
579 RET_LABEL:;
580 return var;
581 }
582 /* method modelize_property#ModelBuilder#the_root_init_mmethod= for (self: ModelBuilder, nullable MMethod) */
583 void modelize_property__ModelBuilder__the_root_init_mmethod_61d(val* self, val* p0) {
584 self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val = p0; /* _the_root_init_mmethod on <self:ModelBuilder> */
585 RET_LABEL:;
586 }
587 /* method modelize_property#ModelBuilder#the_root_init_mmethod= for (self: Object, nullable MMethod) */
588 void VIRTUAL_modelize_property__ModelBuilder__the_root_init_mmethod_61d(val* self, val* p0) {
589 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod= (self,p0) on <self:Object(ModelBuilder)> */
590 self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val = p0; /* _the_root_init_mmethod on <self:Object(ModelBuilder)> */
591 RET_LABEL1:(void)0;
592 }
593 RET_LABEL:;
594 }
595 /* method modelize_property#ModelBuilder#process_default_constructors for (self: ModelBuilder, AClassdef) */
596 void modelize_property__ModelBuilder__process_default_constructors(val* self, val* p0) {
597 val* var_nclassdef /* var nclassdef: AClassdef */;
598 val* var /* : nullable MClassDef */;
599 val* var2 /* : nullable MClassDef */;
600 val* var_mclassdef /* var mclassdef: MClassDef */;
601 short int var3 /* : Bool */;
602 short int var4 /* : Bool */;
603 short int var5 /* : Bool */;
604 val* var6 /* : MClass */;
605 val* var8 /* : MClass */;
606 val* var9 /* : String */;
607 val* var11 /* : String */;
608 static val* varonce;
609 val* var12 /* : String */;
610 char* var13 /* : NativeString */;
611 long var14 /* : Int */;
612 val* var15 /* : FlatString */;
613 short int var16 /* : Bool */;
614 short int var17 /* : Bool */;
615 short int var_ /* var : Bool */;
616 val* var18 /* : nullable MMethod */;
617 val* var20 /* : nullable MMethod */;
618 val* var21 /* : null */;
619 short int var22 /* : Bool */;
620 short int var23 /* : Bool */;
621 val* var_other /* var other: nullable Object */;
622 short int var25 /* : Bool */;
623 short int var27 /* : Bool */;
624 val* var28 /* : MMethod */;
625 static val* varonce29;
626 val* var30 /* : String */;
627 char* var31 /* : NativeString */;
628 long var32 /* : Int */;
629 val* var33 /* : FlatString */;
630 val* var34 /* : MClass */;
631 val* var36 /* : MClass */;
632 val* var37 /* : MVisibility */;
633 val* var39 /* : MVisibility */;
634 val* var_mprop /* var mprop: MMethod */;
635 short int var40 /* : Bool */;
636 val* var42 /* : MMethodDef */;
637 val* var43 /* : Location */;
638 val* var45 /* : Location */;
639 val* var_mpropdef /* var mpropdef: MMethodDef */;
640 val* var46 /* : Array[MParameter] */;
641 val* var_mparameters /* var mparameters: Array[MParameter] */;
642 val* var47 /* : MSignature */;
643 val* var48 /* : null */;
644 val* var_msignature /* var msignature: MSignature */;
645 short int var51 /* : Bool */;
646 val* var54 /* : ToolContext */;
647 val* var56 /* : ToolContext */;
648 static val* varonce57;
649 val* var58 /* : String */;
650 char* var59 /* : NativeString */;
651 long var60 /* : Int */;
652 val* var61 /* : FlatString */;
653 val* var62 /* : Array[Object] */;
654 long var63 /* : Int */;
655 val* var64 /* : NativeArray[Object] */;
656 val* var65 /* : String */;
657 long var66 /* : Int */;
658 val* var68 /* : MClass */;
659 val* var70 /* : MClass */;
660 val* var71 /* : MClassKind */;
661 val* var73 /* : MClassKind */;
662 short int var74 /* : Bool */;
663 short int var76 /* : Bool */;
664 short int var77 /* : Bool */;
665 val* var78 /* : null */;
666 val* var_defined_init /* var defined_init: nullable MMethodDef */;
667 val* var79 /* : Array[MPropDef] */;
668 val* var81 /* : Array[MPropDef] */;
669 val* var_82 /* var : Array[MPropDef] */;
670 val* var83 /* : ArrayIterator[nullable Object] */;
671 val* var_84 /* var : ArrayIterator[MPropDef] */;
672 short int var85 /* : Bool */;
673 val* var86 /* : nullable Object */;
674 val* var_mpropdef87 /* var mpropdef: MPropDef */;
675 short int var88 /* : Bool */;
676 int cltype;
677 int idtype;
678 short int var89 /* : Bool */;
679 val* var90 /* : MProperty */;
680 val* var92 /* : MProperty */;
681 short int var93 /* : Bool */;
682 short int var95 /* : Bool */;
683 short int var96 /* : Bool */;
684 val* var97 /* : MProperty */;
685 val* var99 /* : MProperty */;
686 short int var100 /* : Bool */;
687 short int var102 /* : Bool */;
688 val* var103 /* : null */;
689 short int var104 /* : Bool */;
690 short int var105 /* : Bool */;
691 short int var107 /* : Bool */;
692 short int var109 /* : Bool */;
693 val* var110 /* : MProperty */;
694 val* var112 /* : MProperty */;
695 val* var113 /* : String */;
696 val* var115 /* : String */;
697 static val* varonce116;
698 val* var117 /* : String */;
699 char* var118 /* : NativeString */;
700 long var119 /* : Int */;
701 val* var120 /* : FlatString */;
702 short int var121 /* : Bool */;
703 short int var122 /* : Bool */;
704 short int var125 /* : Bool */;
705 int cltype126;
706 int idtype127;
707 short int var128 /* : Bool */;
708 val* var129 /* : Array[MParameter] */;
709 val* var_mparameters130 /* var mparameters: Array[MParameter] */;
710 val* var131 /* : Array[MProperty] */;
711 val* var_initializers /* var initializers: Array[MProperty] */;
712 val* var132 /* : ANodes[APropdef] */;
713 val* var134 /* : ANodes[APropdef] */;
714 val* var_135 /* var : ANodes[APropdef] */;
715 val* var136 /* : Iterator[ANode] */;
716 val* var_137 /* var : Iterator[APropdef] */;
717 short int var138 /* : Bool */;
718 val* var139 /* : nullable Object */;
719 val* var_npropdef /* var npropdef: APropdef */;
720 short int var140 /* : Bool */;
721 int cltype141;
722 int idtype142;
723 val* var143 /* : nullable MPropDef */;
724 val* var145 /* : nullable MPropDef */;
725 val* var146 /* : null */;
726 short int var147 /* : Bool */;
727 short int var148 /* : Bool */;
728 short int var150 /* : Bool */;
729 short int var152 /* : Bool */;
730 static val* varonce153;
731 val* var154 /* : String */;
732 char* var155 /* : NativeString */;
733 long var156 /* : Int */;
734 val* var157 /* : FlatString */;
735 val* var158 /* : nullable AAnnotation */;
736 val* var_at /* var at: nullable AAnnotation */;
737 val* var159 /* : null */;
738 short int var160 /* : Bool */;
739 short int var161 /* : Bool */;
740 short int var163 /* : Bool */;
741 short int var165 /* : Bool */;
742 val* var167 /* : nullable MPropDef */;
743 val* var169 /* : nullable MPropDef */;
744 val* var170 /* : nullable MSignature */;
745 val* var172 /* : nullable MSignature */;
746 val* var_sig /* var sig: nullable MSignature */;
747 val* var173 /* : null */;
748 short int var174 /* : Bool */;
749 short int var175 /* : Bool */;
750 short int var177 /* : Bool */;
751 short int var179 /* : Bool */;
752 val* var180 /* : nullable MPropDef */;
753 val* var182 /* : nullable MPropDef */;
754 short int var183 /* : Bool */;
755 short int var184 /* : Bool */;
756 static val* varonce185;
757 val* var186 /* : String */;
758 char* var187 /* : NativeString */;
759 long var188 /* : Int */;
760 val* var189 /* : FlatString */;
761 val* var190 /* : Array[MParameter] */;
762 val* var192 /* : Array[MParameter] */;
763 val* var_193 /* var : Array[MParameter] */;
764 val* var194 /* : ArrayIterator[nullable Object] */;
765 val* var_195 /* var : ArrayIterator[MParameter] */;
766 short int var196 /* : Bool */;
767 val* var197 /* : nullable Object */;
768 val* var_param /* var param: MParameter */;
769 val* var198 /* : MType */;
770 val* var200 /* : MType */;
771 val* var_ret_type /* var ret_type: MType */;
772 val* var201 /* : MParameter */;
773 val* var202 /* : String */;
774 val* var204 /* : String */;
775 short int var205 /* : Bool */;
776 val* var_mparameter /* var mparameter: MParameter */;
777 val* var208 /* : nullable MPropDef */;
778 val* var210 /* : nullable MPropDef */;
779 val* var211 /* : MProperty */;
780 val* var213 /* : MProperty */;
781 short int var214 /* : Bool */;
782 int cltype215;
783 int idtype216;
784 val* var217 /* : nullable MPropDef */;
785 val* var219 /* : nullable MPropDef */;
786 val* var220 /* : null */;
787 short int var221 /* : Bool */;
788 short int var222 /* : Bool */;
789 short int var224 /* : Bool */;
790 short int var226 /* : Bool */;
791 short int var227 /* : Bool */;
792 short int var229 /* : Bool */;
793 static val* varonce230;
794 val* var231 /* : String */;
795 char* var232 /* : NativeString */;
796 long var233 /* : Int */;
797 val* var234 /* : FlatString */;
798 val* var235 /* : nullable AAnnotation */;
799 val* var_atautoinit /* var atautoinit: nullable AAnnotation */;
800 val* var236 /* : null */;
801 short int var237 /* : Bool */;
802 short int var238 /* : Bool */;
803 val* var_other240 /* var other: nullable Object */;
804 short int var241 /* : Bool */;
805 short int var242 /* : Bool */;
806 short int var243 /* : Bool */;
807 val* var244 /* : nullable MMethodDef */;
808 val* var246 /* : nullable MMethodDef */;
809 val* var247 /* : MProperty */;
810 val* var249 /* : MProperty */;
811 short int var250 /* : Bool */;
812 short int var252 /* : Bool */;
813 val* var253 /* : nullable MPropDef */;
814 val* var255 /* : nullable MPropDef */;
815 val* var256 /* : MProperty */;
816 val* var258 /* : MProperty */;
817 val* var259 /* : String */;
818 val* var261 /* : String */;
819 long var262 /* : Int */;
820 val* var263 /* : Text */;
821 val* var_paramname /* var paramname: String */;
822 val* var264 /* : nullable MPropDef */;
823 val* var266 /* : nullable MPropDef */;
824 val* var267 /* : nullable MType */;
825 val* var269 /* : nullable MType */;
826 val* var_ret_type270 /* var ret_type: nullable MType */;
827 val* var271 /* : null */;
828 short int var272 /* : Bool */;
829 short int var273 /* : Bool */;
830 short int var275 /* : Bool */;
831 short int var277 /* : Bool */;
832 val* var278 /* : MParameter */;
833 short int var279 /* : Bool */;
834 val* var_mparameter280 /* var mparameter: MParameter */;
835 val* var281 /* : nullable MMethodDef */;
836 val* var283 /* : nullable MMethodDef */;
837 val* var_msetter /* var msetter: nullable MMethodDef */;
838 val* var284 /* : null */;
839 short int var285 /* : Bool */;
840 short int var286 /* : Bool */;
841 short int var288 /* : Bool */;
842 short int var290 /* : Bool */;
843 val* var291 /* : nullable MPropDef */;
844 val* var293 /* : nullable MPropDef */;
845 val* var294 /* : MProperty */;
846 val* var296 /* : MProperty */;
847 val* var297 /* : MProperty */;
848 val* var299 /* : MProperty */;
849 val* var302 /* : nullable MMethod */;
850 val* var304 /* : nullable MMethod */;
851 val* var305 /* : null */;
852 short int var306 /* : Bool */;
853 short int var307 /* : Bool */;
854 short int var309 /* : Bool */;
855 short int var311 /* : Bool */;
856 val* var312 /* : nullable MMethod */;
857 val* var314 /* : nullable MMethod */;
858 val* var315 /* : MModule */;
859 val* var317 /* : MModule */;
860 val* var318 /* : MClassType */;
861 val* var320 /* : MClassType */;
862 val* var321 /* : Array[MPropDef] */;
863 val* var_spropdefs /* var spropdefs: Array[MMethodDef] */;
864 short int var322 /* : Bool */;
865 val* var323 /* : ToolContext */;
866 val* var325 /* : ToolContext */;
867 val* var326 /* : Location */;
868 val* var328 /* : Location */;
869 static val* varonce329;
870 val* var330 /* : String */;
871 char* var331 /* : NativeString */;
872 long var332 /* : Int */;
873 val* var333 /* : FlatString */;
874 static val* varonce334;
875 val* var335 /* : String */;
876 char* var336 /* : NativeString */;
877 long var337 /* : Int */;
878 val* var338 /* : FlatString */;
879 val* var339 /* : nullable MMethod */;
880 val* var341 /* : nullable MMethod */;
881 val* var342 /* : MClassDef */;
882 val* var344 /* : MClassDef */;
883 static val* varonce345;
884 val* var346 /* : String */;
885 char* var347 /* : NativeString */;
886 long var348 /* : Int */;
887 val* var349 /* : FlatString */;
888 val* var350 /* : Array[Object] */;
889 long var351 /* : Int */;
890 val* var352 /* : NativeArray[Object] */;
891 val* var353 /* : String */;
892 val* var354 /* : nullable Object */;
893 val* var_longest /* var longest: MMethodDef */;
894 long var355 /* : Int */;
895 long var357 /* : Int */;
896 long var358 /* : Int */;
897 short int var359 /* : Bool */;
898 short int var361 /* : Bool */;
899 int cltype362;
900 int idtype363;
901 const char* var_class_name;
902 short int var364 /* : Bool */;
903 val* var_365 /* var : Array[MMethodDef] */;
904 val* var366 /* : ArrayIterator[nullable Object] */;
905 val* var_367 /* var : ArrayIterator[MMethodDef] */;
906 short int var368 /* : Bool */;
907 val* var369 /* : nullable Object */;
908 val* var_spd /* var spd: MMethodDef */;
909 val* var370 /* : Array[MProperty] */;
910 val* var372 /* : Array[MProperty] */;
911 long var373 /* : Int */;
912 long var375 /* : Int */;
913 val* var376 /* : Array[MProperty] */;
914 val* var378 /* : Array[MProperty] */;
915 long var379 /* : Int */;
916 long var381 /* : Int */;
917 short int var382 /* : Bool */;
918 short int var384 /* : Bool */;
919 int cltype385;
920 int idtype386;
921 const char* var_class_name387;
922 short int var388 /* : Bool */;
923 val* var_391 /* var : Array[MMethodDef] */;
924 val* var392 /* : ArrayIterator[nullable Object] */;
925 val* var_393 /* var : ArrayIterator[MMethodDef] */;
926 short int var394 /* : Bool */;
927 val* var395 /* : nullable Object */;
928 val* var_spd396 /* var spd: MMethodDef */;
929 long var397 /* : Int */;
930 long var_i /* var i: Int */;
931 val* var398 /* : Array[MProperty] */;
932 val* var400 /* : Array[MProperty] */;
933 val* var_401 /* var : Array[MProperty] */;
934 val* var402 /* : ArrayIterator[nullable Object] */;
935 val* var_403 /* var : ArrayIterator[MProperty] */;
936 short int var404 /* : Bool */;
937 val* var405 /* : nullable Object */;
938 val* var_p /* var p: MProperty */;
939 val* var406 /* : Array[MProperty] */;
940 val* var408 /* : Array[MProperty] */;
941 val* var409 /* : nullable Object */;
942 short int var410 /* : Bool */;
943 short int var411 /* : Bool */;
944 short int var413 /* : Bool */;
945 short int var414 /* : Bool */;
946 short int var415 /* : Bool */;
947 static val* varonce416;
948 val* var417 /* : String */;
949 char* var418 /* : NativeString */;
950 long var419 /* : Int */;
951 val* var420 /* : FlatString */;
952 static val* varonce421;
953 val* var422 /* : String */;
954 char* var423 /* : NativeString */;
955 long var424 /* : Int */;
956 val* var425 /* : FlatString */;
957 val* var426 /* : Array[MProperty] */;
958 val* var428 /* : Array[MProperty] */;
959 static val* varonce429;
960 val* var430 /* : String */;
961 char* var431 /* : NativeString */;
962 long var432 /* : Int */;
963 val* var433 /* : FlatString */;
964 val* var434 /* : String */;
965 static val* varonce435;
966 val* var436 /* : String */;
967 char* var437 /* : NativeString */;
968 long var438 /* : Int */;
969 val* var439 /* : FlatString */;
970 static val* varonce440;
971 val* var441 /* : String */;
972 char* var442 /* : NativeString */;
973 long var443 /* : Int */;
974 val* var444 /* : FlatString */;
975 val* var445 /* : Array[MProperty] */;
976 val* var447 /* : Array[MProperty] */;
977 static val* varonce448;
978 val* var449 /* : String */;
979 char* var450 /* : NativeString */;
980 long var451 /* : Int */;
981 val* var452 /* : FlatString */;
982 val* var453 /* : String */;
983 static val* varonce454;
984 val* var455 /* : String */;
985 char* var456 /* : NativeString */;
986 long var457 /* : Int */;
987 val* var458 /* : FlatString */;
988 val* var459 /* : Array[Object] */;
989 long var460 /* : Int */;
990 val* var461 /* : NativeArray[Object] */;
991 val* var462 /* : String */;
992 long var463 /* : Int */;
993 long var464 /* : Int */;
994 short int var466 /* : Bool */;
995 int cltype467;
996 int idtype468;
997 const char* var_class_name469;
998 long var470 /* : Int */;
999 short int var475 /* : Bool */;
1000 short int var476 /* : Bool */;
1001 long var477 /* : Int */;
1002 long var479 /* : Int */;
1003 long var480 /* : Int */;
1004 short int var481 /* : Bool */;
1005 short int var482 /* : Bool */;
1006 short int var484 /* : Bool */;
1007 short int var_485 /* var : Bool */;
1008 short int var486 /* : Bool */;
1009 short int var_487 /* var : Bool */;
1010 val* var488 /* : null */;
1011 short int var489 /* : Bool */;
1012 short int var490 /* : Bool */;
1013 short int var492 /* : Bool */;
1014 short int var494 /* : Bool */;
1015 val* var495 /* : ToolContext */;
1016 val* var497 /* : ToolContext */;
1017 static val* varonce498;
1018 val* var499 /* : String */;
1019 char* var500 /* : NativeString */;
1020 long var501 /* : Int */;
1021 val* var502 /* : FlatString */;
1022 val* var503 /* : Array[Object] */;
1023 long var504 /* : Int */;
1024 val* var505 /* : NativeArray[Object] */;
1025 val* var506 /* : String */;
1026 long var507 /* : Int */;
1027 val* var508 /* : MClass */;
1028 val* var510 /* : MClass */;
1029 val* var512 /* : Array[MProperty] */;
1030 val* var514 /* : Array[MProperty] */;
1031 long var515 /* : Int */;
1032 long var517 /* : Int */;
1033 long var518 /* : Int */;
1034 short int var519 /* : Bool */;
1035 short int var521 /* : Bool */;
1036 int cltype522;
1037 int idtype523;
1038 const char* var_class_name524;
1039 short int var525 /* : Bool */;
1040 val* var526 /* : nullable MSignature */;
1041 val* var528 /* : nullable MSignature */;
1042 val* var529 /* : Array[MParameter] */;
1043 val* var531 /* : Array[MParameter] */;
1044 val* var532 /* : Array[MProperty] */;
1045 val* var534 /* : Array[MProperty] */;
1046 val* var535 /* : null */;
1047 short int var536 /* : Bool */;
1048 short int var537 /* : Bool */;
1049 short int var539 /* : Bool */;
1050 short int var540 /* : Bool */;
1051 short int var541 /* : Bool */;
1052 val* var542 /* : Array[MProperty] */;
1053 val* var544 /* : Array[MProperty] */;
1054 val* var545 /* : MSignature */;
1055 val* var546 /* : null */;
1056 val* var_msignature547 /* var msignature: MSignature */;
1057 val* var549 /* : ToolContext */;
1058 val* var551 /* : ToolContext */;
1059 static val* varonce552;
1060 val* var553 /* : String */;
1061 char* var554 /* : NativeString */;
1062 long var555 /* : Int */;
1063 val* var556 /* : FlatString */;
1064 val* var557 /* : Array[Object] */;
1065 long var558 /* : Int */;
1066 val* var559 /* : NativeArray[Object] */;
1067 val* var560 /* : String */;
1068 long var561 /* : Int */;
1069 val* var562 /* : MClass */;
1070 val* var564 /* : MClass */;
1071 val* var566 /* : nullable MMethod */;
1072 val* var568 /* : nullable MMethod */;
1073 val* var_mprop569 /* var mprop: MMethod */;
1074 val* var570 /* : MMethodDef */;
1075 val* var571 /* : Location */;
1076 val* var573 /* : Location */;
1077 val* var_mpropdef574 /* var mpropdef: MMethodDef */;
1078 short int var575 /* : Bool */;
1079 val* var577 /* : Array[MProperty] */;
1080 val* var579 /* : Array[MProperty] */;
1081 val* var580 /* : MSignature */;
1082 val* var581 /* : null */;
1083 val* var_msignature582 /* var msignature: MSignature */;
1084 val* var584 /* : MSignature */;
1085 val* var585 /* : Array[MParameter] */;
1086 val* var586 /* : null */;
1087 val* var589 /* : ToolContext */;
1088 val* var591 /* : ToolContext */;
1089 static val* varonce592;
1090 val* var593 /* : String */;
1091 char* var594 /* : NativeString */;
1092 long var595 /* : Int */;
1093 val* var596 /* : FlatString */;
1094 val* var597 /* : Array[Object] */;
1095 long var598 /* : Int */;
1096 val* var599 /* : NativeArray[Object] */;
1097 val* var600 /* : String */;
1098 long var601 /* : Int */;
1099 val* var602 /* : MClass */;
1100 val* var604 /* : MClass */;
1101 var_nclassdef = p0;
1102 {
1103 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef> */
1104 var2 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef> */
1105 var = var2;
1106 RET_LABEL1:(void)0;
1107 }
1108 }
1109 if (unlikely(var == NULL)) {
1110 PRINT_ERROR("Runtime error: %s", "Cast failed");
1111 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 80);
1112 show_backtrace(1);
1113 }
1114 var_mclassdef = var;
1115 {
1116 var3 = model__MClassDef__is_intro(var_mclassdef);
1117 }
1118 var4 = !var3;
1119 if (var4){
1120 goto RET_LABEL;
1121 } else {
1122 }
1123 {
1124 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
1125 var8 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
1126 if (unlikely(var8 == NULL)) {
1127 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1128 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
1129 show_backtrace(1);
1130 }
1131 var6 = var8;
1132 RET_LABEL7:(void)0;
1133 }
1134 }
1135 {
1136 { /* Inline model#MClass#name (var6) on <var6:MClass> */
1137 var11 = var6->attrs[COLOR_model__MClass___name].val; /* _name on <var6:MClass> */
1138 if (unlikely(var11 == NULL)) {
1139 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1140 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
1141 show_backtrace(1);
1142 }
1143 var9 = var11;
1144 RET_LABEL10:(void)0;
1145 }
1146 }
1147 if (varonce) {
1148 var12 = varonce;
1149 } else {
1150 var13 = "Object";
1151 var14 = 6;
1152 var15 = string__NativeString__to_s_with_length(var13, var14);
1153 var12 = var15;
1154 varonce = var12;
1155 }
1156 {
1157 var17 = string__FlatString___61d_61d(var9, var12);
1158 var16 = var17;
1159 }
1160 var_ = var16;
1161 if (var16){
1162 {
1163 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
1164 var20 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
1165 var18 = var20;
1166 RET_LABEL19:(void)0;
1167 }
1168 }
1169 var21 = NULL;
1170 if (var18 == NULL) {
1171 var22 = 1; /* is null */
1172 } else {
1173 var22 = 0; /* arg is null but recv is not */
1174 }
1175 if (0) {
1176 { /* Inline kernel#Object#== (var18,var21) on <var18:nullable MMethod> */
1177 var_other = var21;
1178 {
1179 { /* Inline kernel#Object#is_same_instance (var18,var_other) on <var18:nullable MMethod(MMethod)> */
1180 var27 = var18 == var_other;
1181 var25 = var27;
1182 goto RET_LABEL26;
1183 RET_LABEL26:(void)0;
1184 }
1185 }
1186 var23 = var25;
1187 goto RET_LABEL24;
1188 RET_LABEL24:(void)0;
1189 }
1190 var22 = var23;
1191 }
1192 var5 = var22;
1193 } else {
1194 var5 = var_;
1195 }
1196 if (var5){
1197 var28 = NEW_model__MMethod(&type_model__MMethod);
1198 if (varonce29) {
1199 var30 = varonce29;
1200 } else {
1201 var31 = "init";
1202 var32 = 4;
1203 var33 = string__NativeString__to_s_with_length(var31, var32);
1204 var30 = var33;
1205 varonce29 = var30;
1206 }
1207 {
1208 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
1209 var36 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
1210 if (unlikely(var36 == NULL)) {
1211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1212 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
1213 show_backtrace(1);
1214 }
1215 var34 = var36;
1216 RET_LABEL35:(void)0;
1217 }
1218 }
1219 {
1220 { /* Inline model#MClass#visibility (var34) on <var34:MClass> */
1221 var39 = var34->attrs[COLOR_model__MClass___visibility].val; /* _visibility on <var34:MClass> */
1222 if (unlikely(var39 == NULL)) {
1223 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
1224 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 375);
1225 show_backtrace(1);
1226 }
1227 var37 = var39;
1228 RET_LABEL38:(void)0;
1229 }
1230 }
1231 {
1232 model__MMethod__init(var28, var_mclassdef, var30, var37); /* Direct call model#MMethod#init on <var28:MMethod>*/
1233 }
1234 var_mprop = var28;
1235 var40 = 1;
1236 {
1237 { /* Inline model#MMethod#is_root_init= (var_mprop,var40) on <var_mprop:MMethod> */
1238 var_mprop->attrs[COLOR_model__MMethod___is_root_init].s = var40; /* _is_root_init on <var_mprop:MMethod> */
1239 RET_LABEL41:(void)0;
1240 }
1241 }
1242 var42 = NEW_model__MMethodDef(&type_model__MMethodDef);
1243 {
1244 { /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef> */
1245 var45 = var_nclassdef->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef> */
1246 if (unlikely(var45 == NULL)) {
1247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1248 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1249 show_backtrace(1);
1250 }
1251 var43 = var45;
1252 RET_LABEL44:(void)0;
1253 }
1254 }
1255 {
1256 model__MMethodDef__init(var42, var_mclassdef, var_mprop, var43); /* Direct call model#MMethodDef#init on <var42:MMethodDef>*/
1257 }
1258 var_mpropdef = var42;
1259 var46 = NEW_array__Array(&type_array__Arraymodel__MParameter);
1260 {
1261 ((void (*)(val*))(var46->class->vft[COLOR_kernel__Object__init]))(var46) /* init on <var46:Array[MParameter]>*/;
1262 }
1263 var_mparameters = var46;
1264 var47 = NEW_model__MSignature(&type_model__MSignature);
1265 var48 = NULL;
1266 {
1267 model__MSignature__init(var47, var_mparameters, var48); /* Direct call model#MSignature#init on <var47:MSignature>*/
1268 }
1269 var_msignature = var47;
1270 {
1271 { /* Inline model#MMethodDef#msignature= (var_mpropdef,var_msignature) on <var_mpropdef:MMethodDef> */
1272 var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val = var_msignature; /* _msignature on <var_mpropdef:MMethodDef> */
1273 RET_LABEL49:(void)0;
1274 }
1275 }
1276 {
1277 { /* Inline model#MMethodDef#new_msignature= (var_mpropdef,var_msignature) on <var_mpropdef:MMethodDef> */
1278 var_mpropdef->attrs[COLOR_model__MMethodDef___new_msignature].val = var_msignature; /* _new_msignature on <var_mpropdef:MMethodDef> */
1279 RET_LABEL50:(void)0;
1280 }
1281 }
1282 var51 = 1;
1283 {
1284 { /* Inline model#MMethod#is_init= (var_mprop,var51) on <var_mprop:MMethod> */
1285 var_mprop->attrs[COLOR_model__MMethod___is_init].s = var51; /* _is_init on <var_mprop:MMethod> */
1286 RET_LABEL52:(void)0;
1287 }
1288 }
1289 {
1290 { /* Inline modelize_property#AClassdef#mfree_init= (var_nclassdef,var_mpropdef) on <var_nclassdef:AClassdef> */
1291 var_nclassdef->attrs[COLOR_modelize_property__AClassdef___mfree_init].val = var_mpropdef; /* _mfree_init on <var_nclassdef:AClassdef> */
1292 RET_LABEL53:(void)0;
1293 }
1294 }
1295 {
1296 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1297 var56 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1298 if (unlikely(var56 == NULL)) {
1299 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1300 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1301 show_backtrace(1);
1302 }
1303 var54 = var56;
1304 RET_LABEL55:(void)0;
1305 }
1306 }
1307 if (varonce57) {
1308 var58 = varonce57;
1309 } else {
1310 var59 = " gets a free empty constructor ";
1311 var60 = 31;
1312 var61 = string__NativeString__to_s_with_length(var59, var60);
1313 var58 = var61;
1314 varonce57 = var58;
1315 }
1316 var62 = NEW_array__Array(&type_array__Arraykernel__Object);
1317 { /* var62 = array_instance Array[Object] */
1318 var63 = 4;
1319 var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object);
1320 ((struct instance_array__NativeArray*)var64)->values[0] = (val*) var_mclassdef;
1321 ((struct instance_array__NativeArray*)var64)->values[1] = (val*) var58;
1322 ((struct instance_array__NativeArray*)var64)->values[2] = (val*) var_mpropdef;
1323 ((struct instance_array__NativeArray*)var64)->values[3] = (val*) var_msignature;
1324 {
1325 ((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on <var62:Array[Object]>*/;
1326 }
1327 }
1328 {
1329 var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on <var62:Array[Object]>*/;
1330 }
1331 var66 = 3;
1332 {
1333 toolcontext__ToolContext__info(var54, var65, var66); /* Direct call toolcontext#ToolContext#info on <var54:ToolContext>*/
1334 }
1335 {
1336 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod= (self,var_mprop) on <self:ModelBuilder> */
1337 self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val = var_mprop; /* _the_root_init_mmethod on <self:ModelBuilder> */
1338 RET_LABEL67:(void)0;
1339 }
1340 }
1341 goto RET_LABEL;
1342 } else {
1343 }
1344 {
1345 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
1346 var70 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
1347 if (unlikely(var70 == NULL)) {
1348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1349 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
1350 show_backtrace(1);
1351 }
1352 var68 = var70;
1353 RET_LABEL69:(void)0;
1354 }
1355 }
1356 {
1357 { /* Inline model#MClass#kind (var68) on <var68:MClass> */
1358 var73 = var68->attrs[COLOR_model__MClass___kind].val; /* _kind on <var68:MClass> */
1359 if (unlikely(var73 == NULL)) {
1360 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
1361 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
1362 show_backtrace(1);
1363 }
1364 var71 = var73;
1365 RET_LABEL72:(void)0;
1366 }
1367 }
1368 {
1369 { /* Inline model#MClassKind#need_init (var71) on <var71:MClassKind> */
1370 var76 = var71->attrs[COLOR_model__MClassKind___need_init].s; /* _need_init on <var71:MClassKind> */
1371 var74 = var76;
1372 RET_LABEL75:(void)0;
1373 }
1374 }
1375 var77 = !var74;
1376 if (var77){
1377 goto RET_LABEL;
1378 } else {
1379 }
1380 var78 = NULL;
1381 var_defined_init = var78;
1382 {
1383 { /* Inline model#MClassDef#mpropdefs (var_mclassdef) on <var_mclassdef:MClassDef> */
1384 var81 = var_mclassdef->attrs[COLOR_model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_mclassdef:MClassDef> */
1385 if (unlikely(var81 == NULL)) {
1386 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
1387 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 591);
1388 show_backtrace(1);
1389 }
1390 var79 = var81;
1391 RET_LABEL80:(void)0;
1392 }
1393 }
1394 var_82 = var79;
1395 {
1396 var83 = array__AbstractArrayRead__iterator(var_82);
1397 }
1398 var_84 = var83;
1399 for(;;) {
1400 {
1401 var85 = array__ArrayIterator__is_ok(var_84);
1402 }
1403 if (var85){
1404 {
1405 var86 = array__ArrayIterator__item(var_84);
1406 }
1407 var_mpropdef87 = var86;
1408 /* <var_mpropdef87:MPropDef> isa MMethodDef */
1409 cltype = type_model__MMethodDef.color;
1410 idtype = type_model__MMethodDef.id;
1411 if(cltype >= var_mpropdef87->type->table_size) {
1412 var88 = 0;
1413 } else {
1414 var88 = var_mpropdef87->type->type_table[cltype] == idtype;
1415 }
1416 var89 = !var88;
1417 if (var89){
1418 goto BREAK_label;
1419 } else {
1420 }
1421 {
1422 { /* Inline model#MPropDef#mproperty (var_mpropdef87) on <var_mpropdef87:MPropDef(MMethodDef)> */
1423 var92 = var_mpropdef87->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef87:MPropDef(MMethodDef)> */
1424 if (unlikely(var92 == NULL)) {
1425 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1426 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1427 show_backtrace(1);
1428 }
1429 var90 = var92;
1430 RET_LABEL91:(void)0;
1431 }
1432 }
1433 {
1434 { /* Inline model#MMethod#is_init (var90) on <var90:MProperty(MMethod)> */
1435 var95 = var90->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var90:MProperty(MMethod)> */
1436 var93 = var95;
1437 RET_LABEL94:(void)0;
1438 }
1439 }
1440 var96 = !var93;
1441 if (var96){
1442 goto BREAK_label;
1443 } else {
1444 }
1445 {
1446 { /* Inline model#MPropDef#mproperty (var_mpropdef87) on <var_mpropdef87:MPropDef(MMethodDef)> */
1447 var99 = var_mpropdef87->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef87:MPropDef(MMethodDef)> */
1448 if (unlikely(var99 == NULL)) {
1449 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1450 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1451 show_backtrace(1);
1452 }
1453 var97 = var99;
1454 RET_LABEL98:(void)0;
1455 }
1456 }
1457 {
1458 { /* Inline model#MMethod#is_root_init (var97) on <var97:MProperty(MMethod)> */
1459 var102 = var97->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var97:MProperty(MMethod)> */
1460 var100 = var102;
1461 RET_LABEL101:(void)0;
1462 }
1463 }
1464 if (var100){
1465 var103 = NULL;
1466 if (var_defined_init == NULL) {
1467 var104 = 1; /* is null */
1468 } else {
1469 var104 = 0; /* arg is null but recv is not */
1470 }
1471 if (0) {
1472 { /* Inline kernel#Object#== (var_defined_init,var103) on <var_defined_init:nullable MMethodDef> */
1473 var_other = var103;
1474 {
1475 { /* Inline kernel#Object#is_same_instance (var_defined_init,var_other) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
1476 var109 = var_defined_init == var_other;
1477 var107 = var109;
1478 goto RET_LABEL108;
1479 RET_LABEL108:(void)0;
1480 }
1481 }
1482 var105 = var107;
1483 goto RET_LABEL106;
1484 RET_LABEL106:(void)0;
1485 }
1486 var104 = var105;
1487 }
1488 if (unlikely(!var104)) {
1489 PRINT_ERROR("Runtime error: %s", "Assert failed");
1490 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 111);
1491 show_backtrace(1);
1492 }
1493 var_defined_init = var_mpropdef87;
1494 } else {
1495 {
1496 { /* Inline model#MPropDef#mproperty (var_mpropdef87) on <var_mpropdef87:MPropDef(MMethodDef)> */
1497 var112 = var_mpropdef87->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef87:MPropDef(MMethodDef)> */
1498 if (unlikely(var112 == NULL)) {
1499 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1500 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1501 show_backtrace(1);
1502 }
1503 var110 = var112;
1504 RET_LABEL111:(void)0;
1505 }
1506 }
1507 {
1508 { /* Inline model#MProperty#name (var110) on <var110:MProperty(MMethod)> */
1509 var115 = var110->attrs[COLOR_model__MProperty___name].val; /* _name on <var110:MProperty(MMethod)> */
1510 if (unlikely(var115 == NULL)) {
1511 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1512 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
1513 show_backtrace(1);
1514 }
1515 var113 = var115;
1516 RET_LABEL114:(void)0;
1517 }
1518 }
1519 if (varonce116) {
1520 var117 = varonce116;
1521 } else {
1522 var118 = "init";
1523 var119 = 4;
1524 var120 = string__NativeString__to_s_with_length(var118, var119);
1525 var117 = var120;
1526 varonce116 = var117;
1527 }
1528 {
1529 var122 = string__FlatString___61d_61d(var113, var117);
1530 var121 = var122;
1531 }
1532 if (var121){
1533 goto RET_LABEL;
1534 } else {
1535 }
1536 }
1537 BREAK_label: (void)0;
1538 {
1539 array__ArrayIterator__next(var_84); /* Direct call array#ArrayIterator#next on <var_84:ArrayIterator[MPropDef]>*/
1540 }
1541 } else {
1542 goto BREAK_label123;
1543 }
1544 }
1545 BREAK_label123: (void)0;
1546 {
1547 { /* Inline abstract_collection#Iterator#finish (var_84) on <var_84:ArrayIterator[MPropDef]> */
1548 RET_LABEL124:(void)0;
1549 }
1550 }
1551 /* <var_nclassdef:AClassdef> isa AStdClassdef */
1552 cltype126 = type_parser_nodes__AStdClassdef.color;
1553 idtype127 = type_parser_nodes__AStdClassdef.id;
1554 if(cltype126 >= var_nclassdef->type->table_size) {
1555 var125 = 0;
1556 } else {
1557 var125 = var_nclassdef->type->type_table[cltype126] == idtype127;
1558 }
1559 var128 = !var125;
1560 if (var128){
1561 goto RET_LABEL;
1562 } else {
1563 }
1564 var129 = NEW_array__Array(&type_array__Arraymodel__MParameter);
1565 {
1566 ((void (*)(val*))(var129->class->vft[COLOR_kernel__Object__init]))(var129) /* init on <var129:Array[MParameter]>*/;
1567 }
1568 var_mparameters130 = var129;
1569 var131 = NEW_array__Array(&type_array__Arraymodel__MProperty);
1570 {
1571 ((void (*)(val*))(var131->class->vft[COLOR_kernel__Object__init]))(var131) /* init on <var131:Array[MProperty]>*/;
1572 }
1573 var_initializers = var131;
1574 {
1575 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
1576 var134 = var_nclassdef->attrs[COLOR_parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef:AClassdef(AStdClassdef)> */
1577 if (unlikely(var134 == NULL)) {
1578 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
1579 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 929);
1580 show_backtrace(1);
1581 }
1582 var132 = var134;
1583 RET_LABEL133:(void)0;
1584 }
1585 }
1586 var_135 = var132;
1587 {
1588 var136 = parser_nodes__ANodes__iterator(var_135);
1589 }
1590 var_137 = var136;
1591 for(;;) {
1592 {
1593 var138 = ((short int (*)(val*))(var_137->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_137) /* is_ok on <var_137:Iterator[APropdef]>*/;
1594 }
1595 if (var138){
1596 {
1597 var139 = ((val* (*)(val*))(var_137->class->vft[COLOR_abstract_collection__Iterator__item]))(var_137) /* item on <var_137:Iterator[APropdef]>*/;
1598 }
1599 var_npropdef = var139;
1600 /* <var_npropdef:APropdef> isa AMethPropdef */
1601 cltype141 = type_parser_nodes__AMethPropdef.color;
1602 idtype142 = type_parser_nodes__AMethPropdef.id;
1603 if(cltype141 >= var_npropdef->type->table_size) {
1604 var140 = 0;
1605 } else {
1606 var140 = var_npropdef->type->type_table[cltype141] == idtype142;
1607 }
1608 if (var140){
1609 {
1610 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
1611 var145 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
1612 var143 = var145;
1613 RET_LABEL144:(void)0;
1614 }
1615 }
1616 var146 = NULL;
1617 if (var143 == NULL) {
1618 var147 = 1; /* is null */
1619 } else {
1620 var147 = 0; /* arg is null but recv is not */
1621 }
1622 if (0) {
1623 { /* Inline kernel#Object#== (var143,var146) on <var143:nullable MPropDef(nullable MMethodDef)> */
1624 var_other = var146;
1625 {
1626 { /* Inline kernel#Object#is_same_instance (var143,var_other) on <var143:nullable MMethodDef(MMethodDef)> */
1627 var152 = var143 == var_other;
1628 var150 = var152;
1629 goto RET_LABEL151;
1630 RET_LABEL151:(void)0;
1631 }
1632 }
1633 var148 = var150;
1634 goto RET_LABEL149;
1635 RET_LABEL149:(void)0;
1636 }
1637 var147 = var148;
1638 }
1639 if (var147){
1640 goto RET_LABEL;
1641 } else {
1642 }
1643 if (varonce153) {
1644 var154 = varonce153;
1645 } else {
1646 var155 = "autoinit";
1647 var156 = 8;
1648 var157 = string__NativeString__to_s_with_length(var155, var156);
1649 var154 = var157;
1650 varonce153 = var154;
1651 }
1652 {
1653 var158 = annotation__Prod__get_single_annotation(var_npropdef, var154, self);
1654 }
1655 var_at = var158;
1656 var159 = NULL;
1657 if (var_at == NULL) {
1658 var160 = 1; /* is null */
1659 } else {
1660 var160 = 0; /* arg is null but recv is not */
1661 }
1662 if (0) {
1663 { /* Inline kernel#Object#== (var_at,var159) on <var_at:nullable AAnnotation> */
1664 var_other = var159;
1665 {
1666 { /* Inline kernel#Object#is_same_instance (var_at,var_other) on <var_at:nullable AAnnotation(AAnnotation)> */
1667 var165 = var_at == var_other;
1668 var163 = var165;
1669 goto RET_LABEL164;
1670 RET_LABEL164:(void)0;
1671 }
1672 }
1673 var161 = var163;
1674 goto RET_LABEL162;
1675 RET_LABEL162:(void)0;
1676 }
1677 var160 = var161;
1678 }
1679 if (var160){
1680 goto BREAK_label166;
1681 } else {
1682 }
1683 {
1684 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
1685 var169 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
1686 var167 = var169;
1687 RET_LABEL168:(void)0;
1688 }
1689 }
1690 if (var167 == NULL) {
1691 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1692 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 130);
1693 show_backtrace(1);
1694 } else {
1695 { /* Inline model#MMethodDef#msignature (var167) on <var167:nullable MPropDef(nullable MMethodDef)> */
1696 if (unlikely(var167 == NULL)) {
1697 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1698 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1958);
1699 show_backtrace(1);
1700 }
1701 var172 = var167->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var167:nullable MPropDef(nullable MMethodDef)> */
1702 var170 = var172;
1703 RET_LABEL171:(void)0;
1704 }
1705 }
1706 var_sig = var170;
1707 var173 = NULL;
1708 if (var_sig == NULL) {
1709 var174 = 1; /* is null */
1710 } else {
1711 var174 = 0; /* arg is null but recv is not */
1712 }
1713 if (0) {
1714 { /* Inline kernel#Object#== (var_sig,var173) on <var_sig:nullable MSignature> */
1715 var_other = var173;
1716 {
1717 { /* Inline kernel#Object#is_same_instance (var_sig,var_other) on <var_sig:nullable MSignature(MSignature)> */
1718 var179 = var_sig == var_other;
1719 var177 = var179;
1720 goto RET_LABEL178;
1721 RET_LABEL178:(void)0;
1722 }
1723 }
1724 var175 = var177;
1725 goto RET_LABEL176;
1726 RET_LABEL176:(void)0;
1727 }
1728 var174 = var175;
1729 }
1730 if (var174){
1731 goto BREAK_label166;
1732 } else {
1733 }
1734 {
1735 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
1736 var182 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
1737 var180 = var182;
1738 RET_LABEL181:(void)0;
1739 }
1740 }
1741 if (var180 == NULL) {
1742 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1743 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 133);
1744 show_backtrace(1);
1745 } else {
1746 var183 = model__MPropDef__is_intro(var180);
1747 }
1748 var184 = !var183;
1749 if (var184){
1750 if (varonce185) {
1751 var186 = varonce185;
1752 } else {
1753 var187 = "Error: `autoinit` cannot be set on redefinitions";
1754 var188 = 48;
1755 var189 = string__NativeString__to_s_with_length(var187, var188);
1756 var186 = var189;
1757 varonce185 = var186;
1758 }
1759 {
1760 modelbuilder__ModelBuilder__error(self, var_at, var186); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
1761 }
1762 goto BREAK_label166;
1763 } else {
1764 }
1765 {
1766 { /* Inline model#MSignature#mparameters (var_sig) on <var_sig:nullable MSignature(MSignature)> */
1767 var192 = var_sig->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_sig:nullable MSignature(MSignature)> */
1768 if (unlikely(var192 == NULL)) {
1769 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1770 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
1771 show_backtrace(1);
1772 }
1773 var190 = var192;
1774 RET_LABEL191:(void)0;
1775 }
1776 }
1777 var_193 = var190;
1778 {
1779 var194 = array__AbstractArrayRead__iterator(var_193);
1780 }
1781 var_195 = var194;
1782 for(;;) {
1783 {
1784 var196 = array__ArrayIterator__is_ok(var_195);
1785 }
1786 if (var196){
1787 {
1788 var197 = array__ArrayIterator__item(var_195);
1789 }
1790 var_param = var197;
1791 {
1792 { /* Inline model#MParameter#mtype (var_param) on <var_param:MParameter> */
1793 var200 = var_param->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_param:MParameter> */
1794 if (unlikely(var200 == NULL)) {
1795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1796 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
1797 show_backtrace(1);
1798 }
1799 var198 = var200;
1800 RET_LABEL199:(void)0;
1801 }
1802 }
1803 var_ret_type = var198;
1804 var201 = NEW_model__MParameter(&type_model__MParameter);
1805 {
1806 { /* Inline model#MParameter#name (var_param) on <var_param:MParameter> */
1807 var204 = var_param->attrs[COLOR_model__MParameter___name].val; /* _name on <var_param:MParameter> */
1808 if (unlikely(var204 == NULL)) {
1809 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1810 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1562);
1811 show_backtrace(1);
1812 }
1813 var202 = var204;
1814 RET_LABEL203:(void)0;
1815 }
1816 }
1817 var205 = 0;
1818 {
1819 model__MParameter__init(var201, var202, var_ret_type, var205); /* Direct call model#MParameter#init on <var201:MParameter>*/
1820 }
1821 var_mparameter = var201;
1822 {
1823 array__Array__add(var_mparameters130, var_mparameter); /* Direct call array#Array#add on <var_mparameters130:Array[MParameter]>*/
1824 }
1825 {
1826 array__ArrayIterator__next(var_195); /* Direct call array#ArrayIterator#next on <var_195:ArrayIterator[MParameter]>*/
1827 }
1828 } else {
1829 goto BREAK_label206;
1830 }
1831 }
1832 BREAK_label206: (void)0;
1833 {
1834 { /* Inline abstract_collection#Iterator#finish (var_195) on <var_195:ArrayIterator[MParameter]> */
1835 RET_LABEL207:(void)0;
1836 }
1837 }
1838 {
1839 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
1840 var210 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
1841 var208 = var210;
1842 RET_LABEL209:(void)0;
1843 }
1844 }
1845 if (var208 == NULL) {
1846 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1847 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 143);
1848 show_backtrace(1);
1849 } else {
1850 { /* Inline model#MPropDef#mproperty (var208) on <var208:nullable MPropDef(nullable MMethodDef)> */
1851 if (unlikely(var208 == NULL)) {
1852 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1853 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1854 show_backtrace(1);
1855 }
1856 var213 = var208->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var208:nullable MPropDef(nullable MMethodDef)> */
1857 if (unlikely(var213 == NULL)) {
1858 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1859 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1860 show_backtrace(1);
1861 }
1862 var211 = var213;
1863 RET_LABEL212:(void)0;
1864 }
1865 }
1866 {
1867 array__Array__add(var_initializers, var211); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
1868 }
1869 } else {
1870 }
1871 /* <var_npropdef:APropdef> isa AAttrPropdef */
1872 cltype215 = type_parser_nodes__AAttrPropdef.color;
1873 idtype216 = type_parser_nodes__AAttrPropdef.id;
1874 if(cltype215 >= var_npropdef->type->table_size) {
1875 var214 = 0;
1876 } else {
1877 var214 = var_npropdef->type->type_table[cltype215] == idtype216;
1878 }
1879 if (var214){
1880 {
1881 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
1882 var219 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
1883 var217 = var219;
1884 RET_LABEL218:(void)0;
1885 }
1886 }
1887 var220 = NULL;
1888 if (var217 == NULL) {
1889 var221 = 1; /* is null */
1890 } else {
1891 var221 = 0; /* arg is null but recv is not */
1892 }
1893 if (0) {
1894 { /* Inline kernel#Object#== (var217,var220) on <var217:nullable MPropDef(nullable MAttributeDef)> */
1895 var_other = var220;
1896 {
1897 { /* Inline kernel#Object#is_same_instance (var217,var_other) on <var217:nullable MAttributeDef(MAttributeDef)> */
1898 var226 = var217 == var_other;
1899 var224 = var226;
1900 goto RET_LABEL225;
1901 RET_LABEL225:(void)0;
1902 }
1903 }
1904 var222 = var224;
1905 goto RET_LABEL223;
1906 RET_LABEL223:(void)0;
1907 }
1908 var221 = var222;
1909 }
1910 if (var221){
1911 goto RET_LABEL;
1912 } else {
1913 }
1914 {
1915 { /* Inline modelize_property#AAttrPropdef#noinit (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
1916 var229 = var_npropdef->attrs[COLOR_modelize_property__AAttrPropdef___noinit].s; /* _noinit on <var_npropdef:APropdef(AAttrPropdef)> */
1917 var227 = var229;
1918 RET_LABEL228:(void)0;
1919 }
1920 }
1921 if (var227){
1922 goto BREAK_label166;
1923 } else {
1924 }
1925 if (varonce230) {
1926 var231 = varonce230;
1927 } else {
1928 var232 = "autoinit";
1929 var233 = 8;
1930 var234 = string__NativeString__to_s_with_length(var232, var233);
1931 var231 = var234;
1932 varonce230 = var231;
1933 }
1934 {
1935 var235 = annotation__Prod__get_single_annotation(var_npropdef, var231, self);
1936 }
1937 var_atautoinit = var235;
1938 var236 = NULL;
1939 if (var_atautoinit == NULL) {
1940 var237 = 0; /* is null */
1941 } else {
1942 var237 = 1; /* arg is null and recv is not */
1943 }
1944 if (0) {
1945 { /* Inline kernel#Object#!= (var_atautoinit,var236) on <var_atautoinit:nullable AAnnotation> */
1946 var_other240 = var236;
1947 {
1948 var242 = ((short int (*)(val*, val*))(var_atautoinit->class->vft[COLOR_kernel__Object___61d_61d]))(var_atautoinit, var_other240) /* == on <var_atautoinit:nullable AAnnotation(AAnnotation)>*/;
1949 var241 = var242;
1950 }
1951 var243 = !var241;
1952 var238 = var243;
1953 goto RET_LABEL239;
1954 RET_LABEL239:(void)0;
1955 }
1956 var237 = var238;
1957 }
1958 if (var237){
1959 {
1960 { /* Inline modelize_property#AAttrPropdef#mreadpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
1961 var246 = var_npropdef->attrs[COLOR_modelize_property__AAttrPropdef___mreadpropdef].val; /* _mreadpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
1962 var244 = var246;
1963 RET_LABEL245:(void)0;
1964 }
1965 }
1966 if (var244 == NULL) {
1967 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1968 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 152);
1969 show_backtrace(1);
1970 } else {
1971 { /* Inline model#MPropDef#mproperty (var244) on <var244:nullable MMethodDef> */
1972 if (unlikely(var244 == NULL)) {
1973 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1974 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1975 show_backtrace(1);
1976 }
1977 var249 = var244->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var244:nullable MMethodDef> */
1978 if (unlikely(var249 == NULL)) {
1979 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1980 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
1981 show_backtrace(1);
1982 }
1983 var247 = var249;
1984 RET_LABEL248:(void)0;
1985 }
1986 }
1987 {
1988 array__Array__add(var_initializers, var247); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
1989 }
1990 goto BREAK_label166;
1991 } else {
1992 }
1993 {
1994 { /* Inline modelize_property#AAttrPropdef#has_value (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
1995 var252 = var_npropdef->attrs[COLOR_modelize_property__AAttrPropdef___has_value].s; /* _has_value on <var_npropdef:APropdef(AAttrPropdef)> */
1996 var250 = var252;
1997 RET_LABEL251:(void)0;
1998 }
1999 }
2000 if (var250){
2001 goto BREAK_label166;
2002 } else {
2003 }
2004 {
2005 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
2006 var255 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
2007 var253 = var255;
2008 RET_LABEL254:(void)0;
2009 }
2010 }
2011 if (var253 == NULL) {
2012 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2013 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 156);
2014 show_backtrace(1);
2015 } else {
2016 { /* Inline model#MPropDef#mproperty (var253) on <var253:nullable MPropDef(nullable MAttributeDef)> */
2017 if (unlikely(var253 == NULL)) {
2018 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2019 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
2020 show_backtrace(1);
2021 }
2022 var258 = var253->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var253:nullable MPropDef(nullable MAttributeDef)> */
2023 if (unlikely(var258 == NULL)) {
2024 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2025 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
2026 show_backtrace(1);
2027 }
2028 var256 = var258;
2029 RET_LABEL257:(void)0;
2030 }
2031 }
2032 {
2033 { /* Inline model#MProperty#name (var256) on <var256:MProperty(MAttribute)> */
2034 var261 = var256->attrs[COLOR_model__MProperty___name].val; /* _name on <var256:MProperty(MAttribute)> */
2035 if (unlikely(var261 == NULL)) {
2036 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2037 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2038 show_backtrace(1);
2039 }
2040 var259 = var261;
2041 RET_LABEL260:(void)0;
2042 }
2043 }
2044 var262 = 1;
2045 {
2046 var263 = string__Text__substring_from(var259, var262);
2047 }
2048 var_paramname = var263;
2049 {
2050 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
2051 var266 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
2052 var264 = var266;
2053 RET_LABEL265:(void)0;
2054 }
2055 }
2056 if (var264 == NULL) {
2057 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2058 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 157);
2059 show_backtrace(1);
2060 } else {
2061 { /* Inline model#MAttributeDef#static_mtype (var264) on <var264:nullable MPropDef(nullable MAttributeDef)> */
2062 if (unlikely(var264 == NULL)) {
2063 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2064 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 2006);
2065 show_backtrace(1);
2066 }
2067 var269 = var264->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var264:nullable MPropDef(nullable MAttributeDef)> */
2068 var267 = var269;
2069 RET_LABEL268:(void)0;
2070 }
2071 }
2072 var_ret_type270 = var267;
2073 var271 = NULL;
2074 if (var_ret_type270 == NULL) {
2075 var272 = 1; /* is null */
2076 } else {
2077 var272 = 0; /* arg is null but recv is not */
2078 }
2079 if (0) {
2080 { /* Inline kernel#Object#== (var_ret_type270,var271) on <var_ret_type270:nullable MType> */
2081 var_other = var271;
2082 {
2083 { /* Inline kernel#Object#is_same_instance (var_ret_type270,var_other) on <var_ret_type270:nullable MType(MType)> */
2084 var277 = var_ret_type270 == var_other;
2085 var275 = var277;
2086 goto RET_LABEL276;
2087 RET_LABEL276:(void)0;
2088 }
2089 }
2090 var273 = var275;
2091 goto RET_LABEL274;
2092 RET_LABEL274:(void)0;
2093 }
2094 var272 = var273;
2095 }
2096 if (var272){
2097 goto RET_LABEL;
2098 } else {
2099 }
2100 var278 = NEW_model__MParameter(&type_model__MParameter);
2101 var279 = 0;
2102 {
2103 model__MParameter__init(var278, var_paramname, var_ret_type270, var279); /* Direct call model#MParameter#init on <var278:MParameter>*/
2104 }
2105 var_mparameter280 = var278;
2106 {
2107 array__Array__add(var_mparameters130, var_mparameter280); /* Direct call array#Array#add on <var_mparameters130:Array[MParameter]>*/
2108 }
2109 {
2110 { /* Inline modelize_property#AAttrPropdef#mwritepropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
2111 var283 = var_npropdef->attrs[COLOR_modelize_property__AAttrPropdef___mwritepropdef].val; /* _mwritepropdef on <var_npropdef:APropdef(AAttrPropdef)> */
2112 var281 = var283;
2113 RET_LABEL282:(void)0;
2114 }
2115 }
2116 var_msetter = var281;
2117 var284 = NULL;
2118 if (var_msetter == NULL) {
2119 var285 = 1; /* is null */
2120 } else {
2121 var285 = 0; /* arg is null but recv is not */
2122 }
2123 if (0) {
2124 { /* Inline kernel#Object#== (var_msetter,var284) on <var_msetter:nullable MMethodDef> */
2125 var_other = var284;
2126 {
2127 { /* Inline kernel#Object#is_same_instance (var_msetter,var_other) on <var_msetter:nullable MMethodDef(MMethodDef)> */
2128 var290 = var_msetter == var_other;
2129 var288 = var290;
2130 goto RET_LABEL289;
2131 RET_LABEL289:(void)0;
2132 }
2133 }
2134 var286 = var288;
2135 goto RET_LABEL287;
2136 RET_LABEL287:(void)0;
2137 }
2138 var285 = var286;
2139 }
2140 if (var285){
2141 {
2142 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
2143 var293 = var_npropdef->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
2144 var291 = var293;
2145 RET_LABEL292:(void)0;
2146 }
2147 }
2148 if (var291 == NULL) {
2149 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2150 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 164);
2151 show_backtrace(1);
2152 } else {
2153 { /* Inline model#MPropDef#mproperty (var291) on <var291:nullable MPropDef(nullable MAttributeDef)> */
2154 if (unlikely(var291 == NULL)) {
2155 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2156 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
2157 show_backtrace(1);
2158 }
2159 var296 = var291->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var291:nullable MPropDef(nullable MAttributeDef)> */
2160 if (unlikely(var296 == NULL)) {
2161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2162 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
2163 show_backtrace(1);
2164 }
2165 var294 = var296;
2166 RET_LABEL295:(void)0;
2167 }
2168 }
2169 {
2170 array__Array__add(var_initializers, var294); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
2171 }
2172 } else {
2173 {
2174 { /* Inline model#MPropDef#mproperty (var_msetter) on <var_msetter:nullable MMethodDef(MMethodDef)> */
2175 var299 = var_msetter->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_msetter:nullable MMethodDef(MMethodDef)> */
2176 if (unlikely(var299 == NULL)) {
2177 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2178 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
2179 show_backtrace(1);
2180 }
2181 var297 = var299;
2182 RET_LABEL298:(void)0;
2183 }
2184 }
2185 {
2186 array__Array__add(var_initializers, var297); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
2187 }
2188 }
2189 } else {
2190 }
2191 BREAK_label166: (void)0;
2192 {
2193 ((void (*)(val*))(var_137->class->vft[COLOR_abstract_collection__Iterator__next]))(var_137) /* next on <var_137:Iterator[APropdef]>*/;
2194 }
2195 } else {
2196 goto BREAK_label300;
2197 }
2198 }
2199 BREAK_label300: (void)0;
2200 {
2201 { /* Inline abstract_collection#Iterator#finish (var_137) on <var_137:Iterator[APropdef]> */
2202 RET_LABEL301:(void)0;
2203 }
2204 }
2205 {
2206 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
2207 var304 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
2208 var302 = var304;
2209 RET_LABEL303:(void)0;
2210 }
2211 }
2212 var305 = NULL;
2213 if (var302 == NULL) {
2214 var306 = 1; /* is null */
2215 } else {
2216 var306 = 0; /* arg is null but recv is not */
2217 }
2218 if (0) {
2219 { /* Inline kernel#Object#== (var302,var305) on <var302:nullable MMethod> */
2220 var_other = var305;
2221 {
2222 { /* Inline kernel#Object#is_same_instance (var302,var_other) on <var302:nullable MMethod(MMethod)> */
2223 var311 = var302 == var_other;
2224 var309 = var311;
2225 goto RET_LABEL310;
2226 RET_LABEL310:(void)0;
2227 }
2228 }
2229 var307 = var309;
2230 goto RET_LABEL308;
2231 RET_LABEL308:(void)0;
2232 }
2233 var306 = var307;
2234 }
2235 if (var306){
2236 goto RET_LABEL;
2237 } else {
2238 }
2239 {
2240 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
2241 var314 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
2242 var312 = var314;
2243 RET_LABEL313:(void)0;
2244 }
2245 }
2246 {
2247 { /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
2248 var317 = var_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
2249 if (unlikely(var317 == NULL)) {
2250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2251 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
2252 show_backtrace(1);
2253 }
2254 var315 = var317;
2255 RET_LABEL316:(void)0;
2256 }
2257 }
2258 {
2259 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
2260 var320 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
2261 if (unlikely(var320 == NULL)) {
2262 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2263 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
2264 show_backtrace(1);
2265 }
2266 var318 = var320;
2267 RET_LABEL319:(void)0;
2268 }
2269 }
2270 if (var312 == NULL) {
2271 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2272 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 175);
2273 show_backtrace(1);
2274 } else {
2275 var321 = model__MProperty__lookup_super_definitions(var312, var315, var318);
2276 }
2277 var_spropdefs = var321;
2278 {
2279 var322 = array__AbstractArrayRead__is_empty(var_spropdefs);
2280 }
2281 if (var322){
2282 {
2283 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
2284 var325 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
2285 if (unlikely(var325 == NULL)) {
2286 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2287 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
2288 show_backtrace(1);
2289 }
2290 var323 = var325;
2291 RET_LABEL324:(void)0;
2292 }
2293 }
2294 {
2295 { /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
2296 var328 = var_nclassdef->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
2297 if (unlikely(var328 == NULL)) {
2298 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
2299 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
2300 show_backtrace(1);
2301 }
2302 var326 = var328;
2303 RET_LABEL327:(void)0;
2304 }
2305 }
2306 if (varonce329) {
2307 var330 = varonce329;
2308 } else {
2309 var331 = "Fatal error: ";
2310 var332 = 13;
2311 var333 = string__NativeString__to_s_with_length(var331, var332);
2312 var330 = var333;
2313 varonce329 = var330;
2314 }
2315 if (varonce334) {
2316 var335 = varonce334;
2317 } else {
2318 var336 = " does not specialize ";
2319 var337 = 21;
2320 var338 = string__NativeString__to_s_with_length(var336, var337);
2321 var335 = var338;
2322 varonce334 = var335;
2323 }
2324 {
2325 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
2326 var341 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
2327 var339 = var341;
2328 RET_LABEL340:(void)0;
2329 }
2330 }
2331 if (var339 == NULL) {
2332 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2333 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 177);
2334 show_backtrace(1);
2335 } else {
2336 { /* Inline model#MProperty#intro_mclassdef (var339) on <var339:nullable MMethod> */
2337 if (unlikely(var339 == NULL)) {
2338 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2339 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
2340 show_backtrace(1);
2341 }
2342 var344 = var339->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var339:nullable MMethod> */
2343 if (unlikely(var344 == NULL)) {
2344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
2345 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
2346 show_backtrace(1);
2347 }
2348 var342 = var344;
2349 RET_LABEL343:(void)0;
2350 }
2351 }
2352 if (varonce345) {
2353 var346 = varonce345;
2354 } else {
2355 var347 = ". Possible duplication of the root class `Object`?";
2356 var348 = 50;
2357 var349 = string__NativeString__to_s_with_length(var347, var348);
2358 var346 = var349;
2359 varonce345 = var346;
2360 }
2361 var350 = NEW_array__Array(&type_array__Arraykernel__Object);
2362 { /* var350 = array_instance Array[Object] */
2363 var351 = 5;
2364 var352 = NEW_array__NativeArray(var351, &type_array__NativeArraykernel__Object);
2365 ((struct instance_array__NativeArray*)var352)->values[0] = (val*) var330;
2366 ((struct instance_array__NativeArray*)var352)->values[1] = (val*) var_mclassdef;
2367 ((struct instance_array__NativeArray*)var352)->values[2] = (val*) var335;
2368 ((struct instance_array__NativeArray*)var352)->values[3] = (val*) var342;
2369 ((struct instance_array__NativeArray*)var352)->values[4] = (val*) var346;
2370 {
2371 ((void (*)(val*, val*, long))(var350->class->vft[COLOR_array__Array__with_native]))(var350, var352, var351) /* with_native on <var350:Array[Object]>*/;
2372 }
2373 }
2374 {
2375 var353 = ((val* (*)(val*))(var350->class->vft[COLOR_string__Object__to_s]))(var350) /* to_s on <var350:Array[Object]>*/;
2376 }
2377 {
2378 toolcontext__ToolContext__fatal_error(var323, var326, var353); /* Direct call toolcontext#ToolContext#fatal_error on <var323:ToolContext>*/
2379 }
2380 } else {
2381 }
2382 {
2383 var354 = abstract_collection__SequenceRead__first(var_spropdefs);
2384 }
2385 var_longest = var354;
2386 {
2387 { /* Inline array#AbstractArrayRead#length (var_spropdefs) on <var_spropdefs:Array[MMethodDef]> */
2388 var357 = var_spropdefs->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_spropdefs:Array[MMethodDef]> */
2389 var355 = var357;
2390 RET_LABEL356:(void)0;
2391 }
2392 }
2393 var358 = 1;
2394 {
2395 { /* Inline kernel#Int#> (var355,var358) on <var355:Int> */
2396 /* Covariant cast for argument 0 (i) <var358:Int> isa OTHER */
2397 /* <var358:Int> isa OTHER */
2398 var361 = 1; /* easy <var358:Int> isa OTHER*/
2399 if (unlikely(!var361)) {
2400 var_class_name = type_kernel__Int.name;
2401 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2402 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
2403 show_backtrace(1);
2404 }
2405 var364 = var355 > var358;
2406 var359 = var364;
2407 goto RET_LABEL360;
2408 RET_LABEL360:(void)0;
2409 }
2410 }
2411 if (var359){
2412 var_365 = var_spropdefs;
2413 {
2414 var366 = array__AbstractArrayRead__iterator(var_365);
2415 }
2416 var_367 = var366;
2417 for(;;) {
2418 {
2419 var368 = array__ArrayIterator__is_ok(var_367);
2420 }
2421 if (var368){
2422 {
2423 var369 = array__ArrayIterator__item(var_367);
2424 }
2425 var_spd = var369;
2426 {
2427 { /* Inline model#MMethodDef#initializers (var_spd) on <var_spd:MMethodDef> */
2428 var372 = var_spd->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_spd:MMethodDef> */
2429 if (unlikely(var372 == NULL)) {
2430 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2431 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2432 show_backtrace(1);
2433 }
2434 var370 = var372;
2435 RET_LABEL371:(void)0;
2436 }
2437 }
2438 {
2439 { /* Inline array#AbstractArrayRead#length (var370) on <var370:Array[MProperty]> */
2440 var375 = var370->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var370:Array[MProperty]> */
2441 var373 = var375;
2442 RET_LABEL374:(void)0;
2443 }
2444 }
2445 {
2446 { /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
2447 var378 = var_longest->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
2448 if (unlikely(var378 == NULL)) {
2449 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2450 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2451 show_backtrace(1);
2452 }
2453 var376 = var378;
2454 RET_LABEL377:(void)0;
2455 }
2456 }
2457 {
2458 { /* Inline array#AbstractArrayRead#length (var376) on <var376:Array[MProperty]> */
2459 var381 = var376->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var376:Array[MProperty]> */
2460 var379 = var381;
2461 RET_LABEL380:(void)0;
2462 }
2463 }
2464 {
2465 { /* Inline kernel#Int#> (var373,var379) on <var373:Int> */
2466 /* Covariant cast for argument 0 (i) <var379:Int> isa OTHER */
2467 /* <var379:Int> isa OTHER */
2468 var384 = 1; /* easy <var379:Int> isa OTHER*/
2469 if (unlikely(!var384)) {
2470 var_class_name387 = type_kernel__Int.name;
2471 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name387);
2472 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
2473 show_backtrace(1);
2474 }
2475 var388 = var373 > var379;
2476 var382 = var388;
2477 goto RET_LABEL383;
2478 RET_LABEL383:(void)0;
2479 }
2480 }
2481 if (var382){
2482 var_longest = var_spd;
2483 } else {
2484 }
2485 {
2486 array__ArrayIterator__next(var_367); /* Direct call array#ArrayIterator#next on <var_367:ArrayIterator[MMethodDef]>*/
2487 }
2488 } else {
2489 goto BREAK_label389;
2490 }
2491 }
2492 BREAK_label389: (void)0;
2493 {
2494 { /* Inline abstract_collection#Iterator#finish (var_367) on <var_367:ArrayIterator[MMethodDef]> */
2495 RET_LABEL390:(void)0;
2496 }
2497 }
2498 var_391 = var_spropdefs;
2499 {
2500 var392 = array__AbstractArrayRead__iterator(var_391);
2501 }
2502 var_393 = var392;
2503 for(;;) {
2504 {
2505 var394 = array__ArrayIterator__is_ok(var_393);
2506 }
2507 if (var394){
2508 {
2509 var395 = array__ArrayIterator__item(var_393);
2510 }
2511 var_spd396 = var395;
2512 var397 = 0;
2513 var_i = var397;
2514 {
2515 { /* Inline model#MMethodDef#initializers (var_spd396) on <var_spd396:MMethodDef> */
2516 var400 = var_spd396->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_spd396:MMethodDef> */
2517 if (unlikely(var400 == NULL)) {
2518 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2519 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2520 show_backtrace(1);
2521 }
2522 var398 = var400;
2523 RET_LABEL399:(void)0;
2524 }
2525 }
2526 var_401 = var398;
2527 {
2528 var402 = array__AbstractArrayRead__iterator(var_401);
2529 }
2530 var_403 = var402;
2531 for(;;) {
2532 {
2533 var404 = array__ArrayIterator__is_ok(var_403);
2534 }
2535 if (var404){
2536 {
2537 var405 = array__ArrayIterator__item(var_403);
2538 }
2539 var_p = var405;
2540 {
2541 { /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
2542 var408 = var_longest->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
2543 if (unlikely(var408 == NULL)) {
2544 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2545 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2546 show_backtrace(1);
2547 }
2548 var406 = var408;
2549 RET_LABEL407:(void)0;
2550 }
2551 }
2552 {
2553 var409 = array__Array___91d_93d(var406, var_i);
2554 }
2555 {
2556 { /* Inline kernel#Object#!= (var_p,var409) on <var_p:MProperty> */
2557 var_other240 = var409;
2558 {
2559 var414 = ((short int (*)(val*, val*))(var_p->class->vft[COLOR_kernel__Object___61d_61d]))(var_p, var_other240) /* == on <var_p:MProperty>*/;
2560 var413 = var414;
2561 }
2562 var415 = !var413;
2563 var411 = var415;
2564 goto RET_LABEL412;
2565 RET_LABEL412:(void)0;
2566 }
2567 var410 = var411;
2568 }
2569 if (var410){
2570 if (varonce416) {
2571 var417 = varonce416;
2572 } else {
2573 var418 = "Error: conflict for inherited inits ";
2574 var419 = 36;
2575 var420 = string__NativeString__to_s_with_length(var418, var419);
2576 var417 = var420;
2577 varonce416 = var417;
2578 }
2579 if (varonce421) {
2580 var422 = varonce421;
2581 } else {
2582 var423 = "(";
2583 var424 = 1;
2584 var425 = string__NativeString__to_s_with_length(var423, var424);
2585 var422 = var425;
2586 varonce421 = var422;
2587 }
2588 {
2589 { /* Inline model#MMethodDef#initializers (var_spd396) on <var_spd396:MMethodDef> */
2590 var428 = var_spd396->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_spd396:MMethodDef> */
2591 if (unlikely(var428 == NULL)) {
2592 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2593 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2594 show_backtrace(1);
2595 }
2596 var426 = var428;
2597 RET_LABEL427:(void)0;
2598 }
2599 }
2600 if (varonce429) {
2601 var430 = varonce429;
2602 } else {
2603 var431 = ", ";
2604 var432 = 2;
2605 var433 = string__NativeString__to_s_with_length(var431, var432);
2606 var430 = var433;
2607 varonce429 = var430;
2608 }
2609 {
2610 var434 = string__Collection__join(var426, var430);
2611 }
2612 if (varonce435) {
2613 var436 = varonce435;
2614 } else {
2615 var437 = ") and ";
2616 var438 = 6;
2617 var439 = string__NativeString__to_s_with_length(var437, var438);
2618 var436 = var439;
2619 varonce435 = var436;
2620 }
2621 if (varonce440) {
2622 var441 = varonce440;
2623 } else {
2624 var442 = "(";
2625 var443 = 1;
2626 var444 = string__NativeString__to_s_with_length(var442, var443);
2627 var441 = var444;
2628 varonce440 = var441;
2629 }
2630 {
2631 { /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
2632 var447 = var_longest->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
2633 if (unlikely(var447 == NULL)) {
2634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2635 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2636 show_backtrace(1);
2637 }
2638 var445 = var447;
2639 RET_LABEL446:(void)0;
2640 }
2641 }
2642 if (varonce448) {
2643 var449 = varonce448;
2644 } else {
2645 var450 = ", ";
2646 var451 = 2;
2647 var452 = string__NativeString__to_s_with_length(var450, var451);
2648 var449 = var452;
2649 varonce448 = var449;
2650 }
2651 {
2652 var453 = string__Collection__join(var445, var449);
2653 }
2654 if (varonce454) {
2655 var455 = varonce454;
2656 } else {
2657 var456 = ")";
2658 var457 = 1;
2659 var458 = string__NativeString__to_s_with_length(var456, var457);
2660 var455 = var458;
2661 varonce454 = var455;
2662 }
2663 var459 = NEW_array__Array(&type_array__Arraykernel__Object);
2664 { /* var459 = array_instance Array[Object] */
2665 var460 = 9;
2666 var461 = NEW_array__NativeArray(var460, &type_array__NativeArraykernel__Object);
2667 ((struct instance_array__NativeArray*)var461)->values[0] = (val*) var417;
2668 ((struct instance_array__NativeArray*)var461)->values[1] = (val*) var_spd396;
2669 ((struct instance_array__NativeArray*)var461)->values[2] = (val*) var422;
2670 ((struct instance_array__NativeArray*)var461)->values[3] = (val*) var434;
2671 ((struct instance_array__NativeArray*)var461)->values[4] = (val*) var436;
2672 ((struct instance_array__NativeArray*)var461)->values[5] = (val*) var_longest;
2673 ((struct instance_array__NativeArray*)var461)->values[6] = (val*) var441;
2674 ((struct instance_array__NativeArray*)var461)->values[7] = (val*) var453;
2675 ((struct instance_array__NativeArray*)var461)->values[8] = (val*) var455;
2676 {
2677 ((void (*)(val*, val*, long))(var459->class->vft[COLOR_array__Array__with_native]))(var459, var461, var460) /* with_native on <var459:Array[Object]>*/;
2678 }
2679 }
2680 {
2681 var462 = ((val* (*)(val*))(var459->class->vft[COLOR_string__Object__to_s]))(var459) /* to_s on <var459:Array[Object]>*/;
2682 }
2683 {
2684 modelbuilder__ModelBuilder__error(self, var_nclassdef, var462); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
2685 }
2686 goto RET_LABEL;
2687 } else {
2688 }
2689 var463 = 1;
2690 {
2691 { /* Inline kernel#Int#+ (var_i,var463) on <var_i:Int> */
2692 /* Covariant cast for argument 0 (i) <var463:Int> isa OTHER */
2693 /* <var463:Int> isa OTHER */
2694 var466 = 1; /* easy <var463:Int> isa OTHER*/
2695 if (unlikely(!var466)) {
2696 var_class_name469 = type_kernel__Int.name;
2697 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name469);
2698 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
2699 show_backtrace(1);
2700 }
2701 var470 = var_i + var463;
2702 var464 = var470;
2703 goto RET_LABEL465;
2704 RET_LABEL465:(void)0;
2705 }
2706 }
2707 var_i = var464;
2708 {
2709 array__ArrayIterator__next(var_403); /* Direct call array#ArrayIterator#next on <var_403:ArrayIterator[MProperty]>*/
2710 }
2711 } else {
2712 goto BREAK_label471;
2713 }
2714 }
2715 BREAK_label471: (void)0;
2716 {
2717 { /* Inline abstract_collection#Iterator#finish (var_403) on <var_403:ArrayIterator[MProperty]> */
2718 RET_LABEL472:(void)0;
2719 }
2720 }
2721 {
2722 array__ArrayIterator__next(var_393); /* Direct call array#ArrayIterator#next on <var_393:ArrayIterator[MMethodDef]>*/
2723 }
2724 } else {
2725 goto BREAK_label473;
2726 }
2727 }
2728 BREAK_label473: (void)0;
2729 {
2730 { /* Inline abstract_collection#Iterator#finish (var_393) on <var_393:ArrayIterator[MMethodDef]> */
2731 RET_LABEL474:(void)0;
2732 }
2733 }
2734 } else {
2735 }
2736 {
2737 { /* Inline array#AbstractArrayRead#length (var_spropdefs) on <var_spropdefs:Array[MMethodDef]> */
2738 var479 = var_spropdefs->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_spropdefs:Array[MMethodDef]> */
2739 var477 = var479;
2740 RET_LABEL478:(void)0;
2741 }
2742 }
2743 var480 = 1;
2744 {
2745 { /* Inline kernel#Int#== (var477,var480) on <var477:Int> */
2746 var484 = var477 == var480;
2747 var482 = var484;
2748 goto RET_LABEL483;
2749 RET_LABEL483:(void)0;
2750 }
2751 var481 = var482;
2752 }
2753 var_485 = var481;
2754 if (var481){
2755 {
2756 var486 = array__AbstractArrayRead__is_empty(var_mparameters130);
2757 }
2758 var476 = var486;
2759 } else {
2760 var476 = var_485;
2761 }
2762 var_487 = var476;
2763 if (var476){
2764 var488 = NULL;
2765 if (var_defined_init == NULL) {
2766 var489 = 1; /* is null */
2767 } else {
2768 var489 = 0; /* arg is null but recv is not */
2769 }
2770 if (0) {
2771 { /* Inline kernel#Object#== (var_defined_init,var488) on <var_defined_init:nullable MMethodDef> */
2772 var_other = var488;
2773 {
2774 { /* Inline kernel#Object#is_same_instance (var_defined_init,var_other) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
2775 var494 = var_defined_init == var_other;
2776 var492 = var494;
2777 goto RET_LABEL493;
2778 RET_LABEL493:(void)0;
2779 }
2780 }
2781 var490 = var492;
2782 goto RET_LABEL491;
2783 RET_LABEL491:(void)0;
2784 }
2785 var489 = var490;
2786 }
2787 var475 = var489;
2788 } else {
2789 var475 = var_487;
2790 }
2791 if (var475){
2792 {
2793 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
2794 var497 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
2795 if (unlikely(var497 == NULL)) {
2796 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2797 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
2798 show_backtrace(1);
2799 }
2800 var495 = var497;
2801 RET_LABEL496:(void)0;
2802 }
2803 }
2804 if (varonce498) {
2805 var499 = varonce498;
2806 } else {
2807 var500 = " inherits the basic constructor ";
2808 var501 = 32;
2809 var502 = string__NativeString__to_s_with_length(var500, var501);
2810 var499 = var502;
2811 varonce498 = var499;
2812 }
2813 var503 = NEW_array__Array(&type_array__Arraykernel__Object);
2814 { /* var503 = array_instance Array[Object] */
2815 var504 = 3;
2816 var505 = NEW_array__NativeArray(var504, &type_array__NativeArraykernel__Object);
2817 ((struct instance_array__NativeArray*)var505)->values[0] = (val*) var_mclassdef;
2818 ((struct instance_array__NativeArray*)var505)->values[1] = (val*) var499;
2819 ((struct instance_array__NativeArray*)var505)->values[2] = (val*) var_longest;
2820 {
2821 ((void (*)(val*, val*, long))(var503->class->vft[COLOR_array__Array__with_native]))(var503, var505, var504) /* with_native on <var503:Array[Object]>*/;
2822 }
2823 }
2824 {
2825 var506 = ((val* (*)(val*))(var503->class->vft[COLOR_string__Object__to_s]))(var503) /* to_s on <var503:Array[Object]>*/;
2826 }
2827 var507 = 3;
2828 {
2829 toolcontext__ToolContext__info(var495, var506, var507); /* Direct call toolcontext#ToolContext#info on <var495:ToolContext>*/
2830 }
2831 {
2832 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
2833 var510 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
2834 if (unlikely(var510 == NULL)) {
2835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2836 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
2837 show_backtrace(1);
2838 }
2839 var508 = var510;
2840 RET_LABEL509:(void)0;
2841 }
2842 }
2843 {
2844 { /* Inline modelize_property#MClass#root_init= (var508,var_longest) on <var508:MClass> */
2845 var508->attrs[COLOR_modelize_property__MClass___root_init].val = var_longest; /* _root_init on <var508:MClass> */
2846 RET_LABEL511:(void)0;
2847 }
2848 }
2849 goto RET_LABEL;
2850 } else {
2851 }
2852 {
2853 { /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
2854 var514 = var_longest->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
2855 if (unlikely(var514 == NULL)) {
2856 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2857 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2858 show_backtrace(1);
2859 }
2860 var512 = var514;
2861 RET_LABEL513:(void)0;
2862 }
2863 }
2864 {
2865 { /* Inline array#AbstractArrayRead#length (var512) on <var512:Array[MProperty]> */
2866 var517 = var512->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var512:Array[MProperty]> */
2867 var515 = var517;
2868 RET_LABEL516:(void)0;
2869 }
2870 }
2871 var518 = 0;
2872 {
2873 { /* Inline kernel#Int#> (var515,var518) on <var515:Int> */
2874 /* Covariant cast for argument 0 (i) <var518:Int> isa OTHER */
2875 /* <var518:Int> isa OTHER */
2876 var521 = 1; /* easy <var518:Int> isa OTHER*/
2877 if (unlikely(!var521)) {
2878 var_class_name524 = type_kernel__Int.name;
2879 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name524);
2880 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
2881 show_backtrace(1);
2882 }
2883 var525 = var515 > var518;
2884 var519 = var525;
2885 goto RET_LABEL520;
2886 RET_LABEL520:(void)0;
2887 }
2888 }
2889 if (var519){
2890 {
2891 { /* Inline model#MMethodDef#new_msignature (var_longest) on <var_longest:MMethodDef> */
2892 var528 = var_longest->attrs[COLOR_model__MMethodDef___new_msignature].val; /* _new_msignature on <var_longest:MMethodDef> */
2893 var526 = var528;
2894 RET_LABEL527:(void)0;
2895 }
2896 }
2897 if (var526 == NULL) {
2898 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2899 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 211);
2900 show_backtrace(1);
2901 } else {
2902 { /* Inline model#MSignature#mparameters (var526) on <var526:nullable MSignature> */
2903 if (unlikely(var526 == NULL)) {
2904 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2905 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2906 show_backtrace(1);
2907 }
2908 var531 = var526->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var526:nullable MSignature> */
2909 if (unlikely(var531 == NULL)) {
2910 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2911 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
2912 show_backtrace(1);
2913 }
2914 var529 = var531;
2915 RET_LABEL530:(void)0;
2916 }
2917 }
2918 {
2919 abstract_collection__Sequence__prepend(var_mparameters130, var529); /* Direct call abstract_collection#Sequence#prepend on <var_mparameters130:Array[MParameter]>*/
2920 }
2921 {
2922 { /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
2923 var534 = var_longest->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
2924 if (unlikely(var534 == NULL)) {
2925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2926 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2927 show_backtrace(1);
2928 }
2929 var532 = var534;
2930 RET_LABEL533:(void)0;
2931 }
2932 }
2933 {
2934 abstract_collection__Sequence__prepend(var_initializers, var532); /* Direct call abstract_collection#Sequence#prepend on <var_initializers:Array[MProperty]>*/
2935 }
2936 } else {
2937 }
2938 var535 = NULL;
2939 if (var_defined_init == NULL) {
2940 var536 = 0; /* is null */
2941 } else {
2942 var536 = 1; /* arg is null and recv is not */
2943 }
2944 if (0) {
2945 { /* Inline kernel#Object#!= (var_defined_init,var535) on <var_defined_init:nullable MMethodDef> */
2946 var_other240 = var535;
2947 {
2948 var540 = ((short int (*)(val*, val*))(var_defined_init->class->vft[COLOR_kernel__Object___61d_61d]))(var_defined_init, var_other240) /* == on <var_defined_init:nullable MMethodDef(MMethodDef)>*/;
2949 var539 = var540;
2950 }
2951 var541 = !var539;
2952 var537 = var541;
2953 goto RET_LABEL538;
2954 RET_LABEL538:(void)0;
2955 }
2956 var536 = var537;
2957 }
2958 if (var536){
2959 {
2960 { /* Inline model#MMethodDef#initializers (var_defined_init) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
2961 var544 = var_defined_init->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_defined_init:nullable MMethodDef(MMethodDef)> */
2962 if (unlikely(var544 == NULL)) {
2963 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
2964 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
2965 show_backtrace(1);
2966 }
2967 var542 = var544;
2968 RET_LABEL543:(void)0;
2969 }
2970 }
2971 {
2972 abstract_collection__SimpleCollection__add_all(var542, var_initializers); /* Direct call abstract_collection#SimpleCollection#add_all on <var542:Array[MProperty]>*/
2973 }
2974 var545 = NEW_model__MSignature(&type_model__MSignature);
2975 var546 = NULL;
2976 {
2977 model__MSignature__init(var545, var_mparameters130, var546); /* Direct call model#MSignature#init on <var545:MSignature>*/
2978 }
2979 var_msignature547 = var545;
2980 {
2981 { /* Inline model#MMethodDef#new_msignature= (var_defined_init,var_msignature547) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
2982 var_defined_init->attrs[COLOR_model__MMethodDef___new_msignature].val = var_msignature547; /* _new_msignature on <var_defined_init:nullable MMethodDef(MMethodDef)> */
2983 RET_LABEL548:(void)0;
2984 }
2985 }
2986 {
2987 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
2988 var551 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
2989 if (unlikely(var551 == NULL)) {
2990 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2991 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
2992 show_backtrace(1);
2993 }
2994 var549 = var551;
2995 RET_LABEL550:(void)0;
2996 }
2997 }
2998 if (varonce552) {
2999 var553 = varonce552;
3000 } else {
3001 var554 = " extends its basic constructor signature to ";
3002 var555 = 44;
3003 var556 = string__NativeString__to_s_with_length(var554, var555);
3004 var553 = var556;
3005 varonce552 = var553;
3006 }
3007 var557 = NEW_array__Array(&type_array__Arraykernel__Object);
3008 { /* var557 = array_instance Array[Object] */
3009 var558 = 4;
3010 var559 = NEW_array__NativeArray(var558, &type_array__NativeArraykernel__Object);
3011 ((struct instance_array__NativeArray*)var559)->values[0] = (val*) var_mclassdef;
3012 ((struct instance_array__NativeArray*)var559)->values[1] = (val*) var553;
3013 ((struct instance_array__NativeArray*)var559)->values[2] = (val*) var_defined_init;
3014 ((struct instance_array__NativeArray*)var559)->values[3] = (val*) var_msignature547;
3015 {
3016 ((void (*)(val*, val*, long))(var557->class->vft[COLOR_array__Array__with_native]))(var557, var559, var558) /* with_native on <var557:Array[Object]>*/;
3017 }
3018 }
3019 {
3020 var560 = ((val* (*)(val*))(var557->class->vft[COLOR_string__Object__to_s]))(var557) /* to_s on <var557:Array[Object]>*/;
3021 }
3022 var561 = 3;
3023 {
3024 toolcontext__ToolContext__info(var549, var560, var561); /* Direct call toolcontext#ToolContext#info on <var549:ToolContext>*/
3025 }
3026 {
3027 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
3028 var564 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
3029 if (unlikely(var564 == NULL)) {
3030 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3031 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
3032 show_backtrace(1);
3033 }
3034 var562 = var564;
3035 RET_LABEL563:(void)0;
3036 }
3037 }
3038 {
3039 { /* Inline modelize_property#MClass#root_init= (var562,var_defined_init) on <var562:MClass> */
3040 var562->attrs[COLOR_modelize_property__MClass___root_init].val = var_defined_init; /* _root_init on <var562:MClass> */
3041 RET_LABEL565:(void)0;
3042 }
3043 }
3044 goto RET_LABEL;
3045 } else {
3046 }
3047 {
3048 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
3049 var568 = self->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
3050 var566 = var568;
3051 RET_LABEL567:(void)0;
3052 }
3053 }
3054 if (unlikely(var566 == NULL)) {
3055 PRINT_ERROR("Runtime error: %s", "Cast failed");
3056 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 226);
3057 show_backtrace(1);
3058 }
3059 var_mprop569 = var566;
3060 var570 = NEW_model__MMethodDef(&type_model__MMethodDef);
3061 {
3062 { /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
3063 var573 = var_nclassdef->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
3064 if (unlikely(var573 == NULL)) {
3065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
3066 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
3067 show_backtrace(1);
3068 }
3069 var571 = var573;
3070 RET_LABEL572:(void)0;
3071 }
3072 }
3073 {
3074 model__MMethodDef__init(var570, var_mclassdef, var_mprop569, var571); /* Direct call model#MMethodDef#init on <var570:MMethodDef>*/
3075 }
3076 var_mpropdef574 = var570;
3077 var575 = 1;
3078 {
3079 { /* Inline modelize_property#MPropDef#has_supercall= (var_mpropdef574,var575) on <var_mpropdef574:MMethodDef> */
3080 var_mpropdef574->attrs[COLOR_modelize_property__MPropDef___has_supercall].s = var575; /* _has_supercall on <var_mpropdef574:MMethodDef> */
3081 RET_LABEL576:(void)0;
3082 }
3083 }
3084 {
3085 { /* Inline model#MMethodDef#initializers (var_mpropdef574) on <var_mpropdef574:MMethodDef> */
3086 var579 = var_mpropdef574->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_mpropdef574:MMethodDef> */
3087 if (unlikely(var579 == NULL)) {
3088 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
3089 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
3090 show_backtrace(1);
3091 }
3092 var577 = var579;
3093 RET_LABEL578:(void)0;
3094 }
3095 }
3096 {
3097 abstract_collection__SimpleCollection__add_all(var577, var_initializers); /* Direct call abstract_collection#SimpleCollection#add_all on <var577:Array[MProperty]>*/
3098 }
3099 var580 = NEW_model__MSignature(&type_model__MSignature);
3100 var581 = NULL;
3101 {
3102 model__MSignature__init(var580, var_mparameters130, var581); /* Direct call model#MSignature#init on <var580:MSignature>*/
3103 }
3104 var_msignature582 = var580;
3105 {
3106 { /* Inline model#MMethodDef#new_msignature= (var_mpropdef574,var_msignature582) on <var_mpropdef574:MMethodDef> */
3107 var_mpropdef574->attrs[COLOR_model__MMethodDef___new_msignature].val = var_msignature582; /* _new_msignature on <var_mpropdef574:MMethodDef> */
3108 RET_LABEL583:(void)0;
3109 }
3110 }
3111 var584 = NEW_model__MSignature(&type_model__MSignature);
3112 var585 = NEW_array__Array(&type_array__Arraymodel__MParameter);
3113 {
3114 ((void (*)(val*))(var585->class->vft[COLOR_kernel__Object__init]))(var585) /* init on <var585:Array[MParameter]>*/;
3115 }
3116 var586 = NULL;
3117 {
3118 model__MSignature__init(var584, var585, var586); /* Direct call model#MSignature#init on <var584:MSignature>*/
3119 }
3120 {
3121 { /* Inline model#MMethodDef#msignature= (var_mpropdef574,var584) on <var_mpropdef574:MMethodDef> */
3122 var_mpropdef574->attrs[COLOR_model__MMethodDef___msignature].val = var584; /* _msignature on <var_mpropdef574:MMethodDef> */
3123 RET_LABEL587:(void)0;
3124 }
3125 }
3126 {
3127 { /* Inline modelize_property#AClassdef#mfree_init= (var_nclassdef,var_mpropdef574) on <var_nclassdef:AClassdef(AStdClassdef)> */
3128 var_nclassdef->attrs[COLOR_modelize_property__AClassdef___mfree_init].val = var_mpropdef574; /* _mfree_init on <var_nclassdef:AClassdef(AStdClassdef)> */
3129 RET_LABEL588:(void)0;
3130 }
3131 }
3132 {
3133 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3134 var591 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3135 if (unlikely(var591 == NULL)) {
3136 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3137 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
3138 show_backtrace(1);
3139 }
3140 var589 = var591;
3141 RET_LABEL590:(void)0;
3142 }
3143 }
3144 if (varonce592) {
3145 var593 = varonce592;
3146 } else {
3147 var594 = " gets a free constructor for attributes ";
3148 var595 = 40;
3149 var596 = string__NativeString__to_s_with_length(var594, var595);
3150 var593 = var596;
3151 varonce592 = var593;
3152 }
3153 var597 = NEW_array__Array(&type_array__Arraykernel__Object);
3154 { /* var597 = array_instance Array[Object] */
3155 var598 = 4;
3156 var599 = NEW_array__NativeArray(var598, &type_array__NativeArraykernel__Object);
3157 ((struct instance_array__NativeArray*)var599)->values[0] = (val*) var_mclassdef;
3158 ((struct instance_array__NativeArray*)var599)->values[1] = (val*) var593;
3159 ((struct instance_array__NativeArray*)var599)->values[2] = (val*) var_mpropdef574;
3160 ((struct instance_array__NativeArray*)var599)->values[3] = (val*) var_msignature582;
3161 {
3162 ((void (*)(val*, val*, long))(var597->class->vft[COLOR_array__Array__with_native]))(var597, var599, var598) /* with_native on <var597:Array[Object]>*/;
3163 }
3164 }
3165 {
3166 var600 = ((val* (*)(val*))(var597->class->vft[COLOR_string__Object__to_s]))(var597) /* to_s on <var597:Array[Object]>*/;
3167 }
3168 var601 = 3;
3169 {
3170 toolcontext__ToolContext__info(var589, var600, var601); /* Direct call toolcontext#ToolContext#info on <var589:ToolContext>*/
3171 }
3172 {
3173 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
3174 var604 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
3175 if (unlikely(var604 == NULL)) {
3176 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3177 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
3178 show_backtrace(1);
3179 }
3180 var602 = var604;
3181 RET_LABEL603:(void)0;
3182 }
3183 }
3184 {
3185 { /* Inline modelize_property#MClass#root_init= (var602,var_mpropdef574) on <var602:MClass> */
3186 var602->attrs[COLOR_modelize_property__MClass___root_init].val = var_mpropdef574; /* _root_init on <var602:MClass> */
3187 RET_LABEL605:(void)0;
3188 }
3189 }
3190 RET_LABEL:;
3191 }
3192 /* method modelize_property#ModelBuilder#process_default_constructors for (self: Object, AClassdef) */
3193 void VIRTUAL_modelize_property__ModelBuilder__process_default_constructors(val* self, val* p0) {
3194 modelize_property__ModelBuilder__process_default_constructors(self, p0); /* Direct call modelize_property#ModelBuilder#process_default_constructors on <self:Object(ModelBuilder)>*/
3195 RET_LABEL:;
3196 }
3197 /* method modelize_property#ModelBuilder#check_visibility for (self: ModelBuilder, ANode, MType, MPropDef) */
3198 void modelize_property__ModelBuilder__check_visibility(val* self, val* p0, val* p1, val* p2) {
3199 val* var_node /* var node: ANode */;
3200 val* var_mtype /* var mtype: MType */;
3201 val* var_mpropdef /* var mpropdef: MPropDef */;
3202 val* var /* : MClassDef */;
3203 val* var2 /* : MClassDef */;
3204 val* var3 /* : MModule */;
3205 val* var5 /* : MModule */;
3206 val* var_mmodule /* var mmodule: MModule */;
3207 val* var6 /* : MProperty */;
3208 val* var8 /* : MProperty */;
3209 val* var_mproperty /* var mproperty: MProperty */;
3210 val* var9 /* : null */;
3211 val* var_vis_type /* var vis_type: nullable MVisibility */;
3212 val* var10 /* : null */;
3213 val* var_mmodule_type /* var mmodule_type: nullable MModule */;
3214 val* var11 /* : MType */;
3215 short int var12 /* : Bool */;
3216 int cltype;
3217 int idtype;
3218 val* var13 /* : MClass */;
3219 val* var15 /* : MClass */;
3220 val* var16 /* : MVisibility */;
3221 val* var18 /* : MVisibility */;
3222 val* var19 /* : MClass */;
3223 val* var21 /* : MClass */;
3224 val* var22 /* : MClassDef */;
3225 val* var24 /* : MClassDef */;
3226 val* var25 /* : MModule */;
3227 val* var27 /* : MModule */;
3228 short int var28 /* : Bool */;
3229 int cltype29;
3230 int idtype30;
3231 val* var31 /* : MProperty */;
3232 val* var33 /* : MProperty */;
3233 val* var34 /* : MVisibility */;
3234 val* var36 /* : MVisibility */;
3235 val* var37 /* : MProperty */;
3236 val* var39 /* : MProperty */;
3237 val* var40 /* : MClassDef */;
3238 val* var42 /* : MClassDef */;
3239 val* var43 /* : MModule */;
3240 val* var45 /* : MModule */;
3241 short int var46 /* : Bool */;
3242 int cltype47;
3243 int idtype48;
3244 static val* varonce;
3245 val* var49 /* : String */;
3246 char* var50 /* : NativeString */;
3247 long var51 /* : Int */;
3248 val* var52 /* : FlatString */;
3249 val* var53 /* : Array[Object] */;
3250 long var54 /* : Int */;
3251 val* var55 /* : NativeArray[Object] */;
3252 val* var56 /* : String */;
3253 val* var57 /* : null */;
3254 short int var58 /* : Bool */;
3255 short int var59 /* : Bool */;
3256 val* var_other /* var other: nullable Object */;
3257 short int var61 /* : Bool */;
3258 short int var62 /* : Bool */;
3259 short int var63 /* : Bool */;
3260 val* var64 /* : null */;
3261 short int var65 /* : Bool */;
3262 short int var66 /* : Bool */;
3263 short int var68 /* : Bool */;
3264 short int var69 /* : Bool */;
3265 short int var70 /* : Bool */;
3266 val* var71 /* : MVisibility */;
3267 val* var_vis_module_type /* var vis_module_type: MVisibility */;
3268 val* var72 /* : MVisibility */;
3269 val* var74 /* : MVisibility */;
3270 short int var75 /* : Bool */;
3271 static val* varonce76;
3272 val* var77 /* : String */;
3273 char* var78 /* : NativeString */;
3274 long var79 /* : Int */;
3275 val* var80 /* : FlatString */;
3276 val* var81 /* : MVisibility */;
3277 val* var83 /* : MVisibility */;
3278 static val* varonce84;
3279 val* var85 /* : String */;
3280 char* var86 /* : NativeString */;
3281 long var87 /* : Int */;
3282 val* var88 /* : FlatString */;
3283 static val* varonce89;
3284 val* var90 /* : String */;
3285 char* var91 /* : NativeString */;
3286 long var92 /* : Int */;
3287 val* var93 /* : FlatString */;
3288 static val* varonce94;
3289 val* var95 /* : String */;
3290 char* var96 /* : NativeString */;
3291 long var97 /* : Int */;
3292 val* var98 /* : FlatString */;
3293 static val* varonce99;
3294 val* var100 /* : String */;
3295 char* var101 /* : NativeString */;
3296 long var102 /* : Int */;
3297 val* var103 /* : FlatString */;
3298 val* var104 /* : Array[Object] */;
3299 long var105 /* : Int */;
3300 val* var106 /* : NativeArray[Object] */;
3301 val* var107 /* : String */;
3302 val* var108 /* : MVisibility */;
3303 val* var110 /* : MVisibility */;
3304 short int var111 /* : Bool */;
3305 static val* varonce112;
3306 val* var113 /* : String */;
3307 char* var114 /* : NativeString */;
3308 long var115 /* : Int */;
3309 val* var116 /* : FlatString */;
3310 val* var117 /* : MVisibility */;
3311 val* var119 /* : MVisibility */;
3312 static val* varonce120;
3313 val* var121 /* : String */;
3314 char* var122 /* : NativeString */;
3315 long var123 /* : Int */;
3316 val* var124 /* : FlatString */;
3317 static val* varonce125;
3318 val* var126 /* : String */;
3319 char* var127 /* : NativeString */;
3320 long var128 /* : Int */;
3321 val* var129 /* : FlatString */;
3322 static val* varonce130;
3323 val* var131 /* : String */;
3324 char* var132 /* : NativeString */;
3325 long var133 /* : Int */;
3326 val* var134 /* : FlatString */;
3327 static val* varonce135;
3328 val* var136 /* : String */;
3329 char* var137 /* : NativeString */;
3330 long var138 /* : Int */;
3331 val* var139 /* : FlatString */;
3332 static val* varonce140;
3333 val* var141 /* : String */;
3334 char* var142 /* : NativeString */;
3335 long var143 /* : Int */;
3336 val* var144 /* : FlatString */;
3337 val* var145 /* : Array[Object] */;
3338 long var146 /* : Int */;
3339 val* var147 /* : NativeArray[Object] */;
3340 val* var148 /* : String */;
3341 short int var149 /* : Bool */;
3342 int cltype150;
3343 int idtype151;
3344 val* var152 /* : ANodes[AType] */;
3345 val* var154 /* : ANodes[AType] */;
3346 val* var_ /* var : ANodes[AType] */;
3347 val* var155 /* : Iterator[ANode] */;
3348 val* var_156 /* var : Iterator[AType] */;
3349 short int var157 /* : Bool */;
3350 val* var158 /* : nullable Object */;
3351 val* var_a /* var a: AType */;
3352 val* var159 /* : nullable MType */;
3353 val* var161 /* : nullable MType */;
3354 val* var_t /* var t: nullable MType */;
3355 val* var162 /* : null */;
3356 short int var163 /* : Bool */;
3357 short int var164 /* : Bool */;
3358 val* var_other166 /* var other: nullable Object */;
3359 short int var167 /* : Bool */;
3360 short int var169 /* : Bool */;
3361 short int var172 /* : Bool */;
3362 int cltype173;
3363 int idtype174;
3364 val* var175 /* : Array[MType] */;
3365 val* var177 /* : Array[MType] */;
3366 val* var_178 /* var : Array[MType] */;
3367 val* var179 /* : ArrayIterator[nullable Object] */;
3368 val* var_180 /* var : ArrayIterator[MType] */;
3369 short int var181 /* : Bool */;
3370 val* var182 /* : nullable Object */;
3371 val* var_t183 /* var t: MType */;
3372 var_node = p0;
3373 var_mtype = p1;
3374 var_mpropdef = p2;
3375 {
3376 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
3377 var2 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
3378 if (unlikely(var2 == NULL)) {
3379 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3380 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
3381 show_backtrace(1);
3382 }
3383 var = var2;
3384 RET_LABEL1:(void)0;
3385 }
3386 }
3387 {
3388 { /* Inline model#MClassDef#mmodule (var) on <var:MClassDef> */
3389 var5 = var->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var:MClassDef> */
3390 if (unlikely(var5 == NULL)) {
3391 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3392 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3393 show_backtrace(1);
3394 }
3395 var3 = var5;
3396 RET_LABEL4:(void)0;
3397 }
3398 }
3399 var_mmodule = var3;
3400 {
3401 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
3402 var8 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
3403 if (unlikely(var8 == NULL)) {
3404 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3405 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
3406 show_backtrace(1);
3407 }
3408 var6 = var8;
3409 RET_LABEL7:(void)0;
3410 }
3411 }
3412 var_mproperty = var6;
3413 var9 = NULL;
3414 var_vis_type = var9;
3415 var10 = NULL;
3416 var_mmodule_type = var10;
3417 {
3418 var11 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
3419 }
3420 var_mtype = var11;
3421 /* <var_mtype:MType> isa MClassType */
3422 cltype = type_model__MClassType.color;
3423 idtype = type_model__MClassType.id;
3424 if(cltype >= var_mtype->type->table_size) {
3425 var12 = 0;
3426 } else {
3427 var12 = var_mtype->type->type_table[cltype] == idtype;
3428 }
3429 if (var12){
3430 {
3431 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3432 var15 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3433 if (unlikely(var15 == NULL)) {
3434 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3435 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
3436 show_backtrace(1);
3437 }
3438 var13 = var15;
3439 RET_LABEL14:(void)0;
3440 }
3441 }
3442 {
3443 { /* Inline model#MClass#visibility (var13) on <var13:MClass> */
3444 var18 = var13->attrs[COLOR_model__MClass___visibility].val; /* _visibility on <var13:MClass> */
3445 if (unlikely(var18 == NULL)) {
3446 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3447 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 375);
3448 show_backtrace(1);
3449 }
3450 var16 = var18;
3451 RET_LABEL17:(void)0;
3452 }
3453 }
3454 var_vis_type = var16;
3455 {
3456 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3457 var21 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3458 if (unlikely(var21 == NULL)) {
3459 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3460 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
3461 show_backtrace(1);
3462 }
3463 var19 = var21;
3464 RET_LABEL20:(void)0;
3465 }
3466 }
3467 {
3468 { /* Inline model#MClass#intro (var19) on <var19:MClass> */
3469 var24 = var19->attrs[COLOR_model__MClass___intro].val; /* _intro on <var19:MClass> */
3470 if (unlikely(var24 == NULL)) {
3471 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3472 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420);
3473 show_backtrace(1);
3474 }
3475 var22 = var24;
3476 RET_LABEL23:(void)0;
3477 }
3478 }
3479 {
3480 { /* Inline model#MClassDef#mmodule (var22) on <var22:MClassDef> */
3481 var27 = var22->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var22:MClassDef> */
3482 if (unlikely(var27 == NULL)) {
3483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3484 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3485 show_backtrace(1);
3486 }
3487 var25 = var27;
3488 RET_LABEL26:(void)0;
3489 }
3490 }
3491 var_mmodule_type = var25;
3492 } else {
3493 /* <var_mtype:MType> isa MVirtualType */
3494 cltype29 = type_model__MVirtualType.color;
3495 idtype30 = type_model__MVirtualType.id;
3496 if(cltype29 >= var_mtype->type->table_size) {
3497 var28 = 0;
3498 } else {
3499 var28 = var_mtype->type->type_table[cltype29] == idtype30;
3500 }
3501 if (var28){
3502 {
3503 { /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
3504 var33 = var_mtype->attrs[COLOR_model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
3505 if (unlikely(var33 == NULL)) {
3506 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3507 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1152);
3508 show_backtrace(1);
3509 }
3510 var31 = var33;
3511 RET_LABEL32:(void)0;
3512 }
3513 }
3514 {
3515 { /* Inline model#MProperty#visibility (var31) on <var31:MProperty> */
3516 var36 = var31->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var31:MProperty> */
3517 if (unlikely(var36 == NULL)) {
3518 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3519 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3520 show_backtrace(1);
3521 }
3522 var34 = var36;
3523 RET_LABEL35:(void)0;
3524 }
3525 }
3526 var_vis_type = var34;
3527 {
3528 { /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
3529 var39 = var_mtype->attrs[COLOR_model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
3530 if (unlikely(var39 == NULL)) {
3531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3532 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1152);
3533 show_backtrace(1);
3534 }
3535 var37 = var39;
3536 RET_LABEL38:(void)0;
3537 }
3538 }
3539 {
3540 { /* Inline model#MProperty#intro_mclassdef (var37) on <var37:MProperty> */
3541 var42 = var37->attrs[COLOR_model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var37:MProperty> */
3542 if (unlikely(var42 == NULL)) {
3543 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
3544 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1615);
3545 show_backtrace(1);
3546 }
3547 var40 = var42;
3548 RET_LABEL41:(void)0;
3549 }
3550 }
3551 {
3552 { /* Inline model#MClassDef#mmodule (var40) on <var40:MClassDef> */
3553 var45 = var40->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var40:MClassDef> */
3554 if (unlikely(var45 == NULL)) {
3555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3556 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3557 show_backtrace(1);
3558 }
3559 var43 = var45;
3560 RET_LABEL44:(void)0;
3561 }
3562 }
3563 var_mmodule_type = var43;
3564 } else {
3565 /* <var_mtype:MType> isa MParameterType */
3566 cltype47 = type_model__MParameterType.color;
3567 idtype48 = type_model__MParameterType.id;
3568 if(cltype47 >= var_mtype->type->table_size) {
3569 var46 = 0;
3570 } else {
3571 var46 = var_mtype->type->type_table[cltype47] == idtype48;
3572 }
3573 if (var46){
3574 } else {
3575 if (varonce) {
3576 var49 = varonce;
3577 } else {
3578 var50 = "Unexpected type ";
3579 var51 = 16;
3580 var52 = string__NativeString__to_s_with_length(var50, var51);
3581 var49 = var52;
3582 varonce = var49;
3583 }
3584 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
3585 { /* var53 = array_instance Array[Object] */
3586 var54 = 2;
3587 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
3588 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var49;
3589 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_mtype;
3590 {
3591 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
3592 }
3593 }
3594 {
3595 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
3596 }
3597 {
3598 parser_nodes__ANode__debug(var_node, var56); /* Direct call parser_nodes#ANode#debug on <var_node:ANode>*/
3599 }
3600 PRINT_ERROR("Runtime error: %s", "Aborted");
3601 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 259);
3602 show_backtrace(1);
3603 }
3604 }
3605 }
3606 var57 = NULL;
3607 if (var_vis_type == NULL) {
3608 var58 = 0; /* is null */
3609 } else {
3610 var58 = 1; /* arg is null and recv is not */
3611 }
3612 if (0) {
3613 { /* Inline kernel#Object#!= (var_vis_type,var57) on <var_vis_type:nullable MVisibility> */
3614 var_other = var57;
3615 {
3616 var62 = ((short int (*)(val*, val*))(var_vis_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_vis_type, var_other) /* == on <var_vis_type:nullable MVisibility(MVisibility)>*/;
3617 var61 = var62;
3618 }
3619 var63 = !var61;
3620 var59 = var63;
3621 goto RET_LABEL60;
3622 RET_LABEL60:(void)0;
3623 }
3624 var58 = var59;
3625 }
3626 if (var58){
3627 var64 = NULL;
3628 if (var_mmodule_type == NULL) {
3629 var65 = 0; /* is null */
3630 } else {
3631 var65 = 1; /* arg is null and recv is not */
3632 }
3633 if (0) {
3634 { /* Inline kernel#Object#!= (var_mmodule_type,var64) on <var_mmodule_type:nullable MModule> */
3635 var_other = var64;
3636 {
3637 var69 = ((short int (*)(val*, val*))(var_mmodule_type->class->vft[COLOR_kernel__Object___61d_61d]))(var_mmodule_type, var_other) /* == on <var_mmodule_type:nullable MModule(MModule)>*/;
3638 var68 = var69;
3639 }
3640 var70 = !var68;
3641 var66 = var70;
3642 goto RET_LABEL67;
3643 RET_LABEL67:(void)0;
3644 }
3645 var65 = var66;
3646 }
3647 if (unlikely(!var65)) {
3648 PRINT_ERROR("Runtime error: %s", "Assert failed");
3649 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 263);
3650 show_backtrace(1);
3651 }
3652 {
3653 var71 = mmodule__MModule__visibility_for(var_mmodule, var_mmodule_type);
3654 }
3655 var_vis_module_type = var71;
3656 {
3657 { /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
3658 var74 = var_mproperty->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
3659 if (unlikely(var74 == NULL)) {
3660 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3661 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3662 show_backtrace(1);
3663 }
3664 var72 = var74;
3665 RET_LABEL73:(void)0;
3666 }
3667 }
3668 {
3669 var75 = kernel__Comparable___62d(var72, var_vis_type);
3670 }
3671 if (var75){
3672 if (varonce76) {
3673 var77 = varonce76;
3674 } else {
3675 var78 = "Error: The ";
3676 var79 = 11;
3677 var80 = string__NativeString__to_s_with_length(var78, var79);
3678 var77 = var80;
3679 varonce76 = var77;
3680 }
3681 {
3682 { /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
3683 var83 = var_mproperty->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
3684 if (unlikely(var83 == NULL)) {
3685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3686 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3687 show_backtrace(1);
3688 }
3689 var81 = var83;
3690 RET_LABEL82:(void)0;
3691 }
3692 }
3693 if (varonce84) {
3694 var85 = varonce84;
3695 } else {
3696 var86 = " property `";
3697 var87 = 11;
3698 var88 = string__NativeString__to_s_with_length(var86, var87);
3699 var85 = var88;
3700 varonce84 = var85;
3701 }
3702 if (varonce89) {
3703 var90 = varonce89;
3704 } else {
3705 var91 = "` cannot contain the ";
3706 var92 = 21;
3707 var93 = string__NativeString__to_s_with_length(var91, var92);
3708 var90 = var93;
3709 varonce89 = var90;
3710 }
3711 if (varonce94) {
3712 var95 = varonce94;
3713 } else {
3714 var96 = " type `";
3715 var97 = 7;
3716 var98 = string__NativeString__to_s_with_length(var96, var97);
3717 var95 = var98;
3718 varonce94 = var95;
3719 }
3720 if (varonce99) {
3721 var100 = varonce99;
3722 } else {
3723 var101 = "`";
3724 var102 = 1;
3725 var103 = string__NativeString__to_s_with_length(var101, var102);
3726 var100 = var103;
3727 varonce99 = var100;
3728 }
3729 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
3730 { /* var104 = array_instance Array[Object] */
3731 var105 = 9;
3732 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
3733 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var77;
3734 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var81;
3735 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var85;
3736 ((struct instance_array__NativeArray*)var106)->values[3] = (val*) var_mproperty;
3737 ((struct instance_array__NativeArray*)var106)->values[4] = (val*) var90;
3738 ((struct instance_array__NativeArray*)var106)->values[5] = (val*) var_vis_type;
3739 ((struct instance_array__NativeArray*)var106)->values[6] = (val*) var95;
3740 ((struct instance_array__NativeArray*)var106)->values[7] = (val*) var_mtype;
3741 ((struct instance_array__NativeArray*)var106)->values[8] = (val*) var100;
3742 {
3743 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
3744 }
3745 }
3746 {
3747 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
3748 }
3749 {
3750 modelbuilder__ModelBuilder__error(self, var_node, var107); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
3751 }
3752 goto RET_LABEL;
3753 } else {
3754 {
3755 { /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
3756 var110 = var_mproperty->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
3757 if (unlikely(var110 == NULL)) {
3758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3759 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3760 show_backtrace(1);
3761 }
3762 var108 = var110;
3763 RET_LABEL109:(void)0;
3764 }
3765 }
3766 {
3767 var111 = kernel__Comparable___62d(var108, var_vis_module_type);
3768 }
3769 if (var111){
3770 if (varonce112) {
3771 var113 = varonce112;
3772 } else {
3773 var114 = "Error: The ";
3774 var115 = 11;
3775 var116 = string__NativeString__to_s_with_length(var114, var115);
3776 var113 = var116;
3777 varonce112 = var113;
3778 }
3779 {
3780 { /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
3781 var119 = var_mproperty->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
3782 if (unlikely(var119 == NULL)) {
3783 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
3784 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
3785 show_backtrace(1);
3786 }
3787 var117 = var119;
3788 RET_LABEL118:(void)0;
3789 }
3790 }
3791 if (varonce120) {
3792 var121 = varonce120;
3793 } else {
3794 var122 = " property `";
3795 var123 = 11;
3796 var124 = string__NativeString__to_s_with_length(var122, var123);
3797 var121 = var124;
3798 varonce120 = var121;
3799 }
3800 if (varonce125) {
3801 var126 = varonce125;
3802 } else {
3803 var127 = "` cannot contain the type `";
3804 var128 = 27;
3805 var129 = string__NativeString__to_s_with_length(var127, var128);
3806 var126 = var129;
3807 varonce125 = var126;
3808 }
3809 if (varonce130) {
3810 var131 = varonce130;
3811 } else {
3812 var132 = "` from the ";
3813 var133 = 11;
3814 var134 = string__NativeString__to_s_with_length(var132, var133);
3815 var131 = var134;
3816 varonce130 = var131;
3817 }
3818 if (varonce135) {
3819 var136 = varonce135;
3820 } else {
3821 var137 = " module `";
3822 var138 = 9;
3823 var139 = string__NativeString__to_s_with_length(var137, var138);
3824 var136 = var139;
3825 varonce135 = var136;
3826 }
3827 if (varonce140) {
3828 var141 = varonce140;
3829 } else {
3830 var142 = "`";
3831 var143 = 1;
3832 var144 = string__NativeString__to_s_with_length(var142, var143);
3833 var141 = var144;
3834 varonce140 = var141;
3835 }
3836 var145 = NEW_array__Array(&type_array__Arraykernel__Object);
3837 { /* var145 = array_instance Array[Object] */
3838 var146 = 11;
3839 var147 = NEW_array__NativeArray(var146, &type_array__NativeArraykernel__Object);
3840 ((struct instance_array__NativeArray*)var147)->values[0] = (val*) var113;
3841 ((struct instance_array__NativeArray*)var147)->values[1] = (val*) var117;
3842 ((struct instance_array__NativeArray*)var147)->values[2] = (val*) var121;
3843 ((struct instance_array__NativeArray*)var147)->values[3] = (val*) var_mproperty;
3844 ((struct instance_array__NativeArray*)var147)->values[4] = (val*) var126;
3845 ((struct instance_array__NativeArray*)var147)->values[5] = (val*) var_mtype;
3846 ((struct instance_array__NativeArray*)var147)->values[6] = (val*) var131;
3847 ((struct instance_array__NativeArray*)var147)->values[7] = (val*) var_vis_module_type;
3848 ((struct instance_array__NativeArray*)var147)->values[8] = (val*) var136;
3849 ((struct instance_array__NativeArray*)var147)->values[9] = (val*) var_mmodule_type;
3850 ((struct instance_array__NativeArray*)var147)->values[10] = (val*) var141;
3851 {
3852 ((void (*)(val*, val*, long))(var145->class->vft[COLOR_array__Array__with_native]))(var145, var147, var146) /* with_native on <var145:Array[Object]>*/;
3853 }
3854 }
3855 {
3856 var148 = ((val* (*)(val*))(var145->class->vft[COLOR_string__Object__to_s]))(var145) /* to_s on <var145:Array[Object]>*/;
3857 }
3858 {
3859 modelbuilder__ModelBuilder__error(self, var_node, var148); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
3860 }
3861 goto RET_LABEL;
3862 } else {
3863 }
3864 }
3865 } else {
3866 }
3867 /* <var_node:ANode> isa AType */
3868 cltype150 = type_parser_nodes__AType.color;
3869 idtype151 = type_parser_nodes__AType.id;
3870 if(cltype150 >= var_node->type->table_size) {
3871 var149 = 0;
3872 } else {
3873 var149 = var_node->type->type_table[cltype150] == idtype151;
3874 }
3875 if (var149){
3876 {
3877 { /* Inline parser_nodes#AType#n_types (var_node) on <var_node:ANode(AType)> */
3878 var154 = var_node->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <var_node:ANode(AType)> */
3879 if (unlikely(var154 == NULL)) {
3880 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
3881 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1300);
3882 show_backtrace(1);
3883 }
3884 var152 = var154;
3885 RET_LABEL153:(void)0;
3886 }
3887 }
3888 var_ = var152;
3889 {
3890 var155 = parser_nodes__ANodes__iterator(var_);
3891 }
3892 var_156 = var155;
3893 for(;;) {
3894 {
3895 var157 = ((short int (*)(val*))(var_156->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_156) /* is_ok on <var_156:Iterator[AType]>*/;
3896 }
3897 if (var157){
3898 {
3899 var158 = ((val* (*)(val*))(var_156->class->vft[COLOR_abstract_collection__Iterator__item]))(var_156) /* item on <var_156:Iterator[AType]>*/;
3900 }
3901 var_a = var158;
3902 {
3903 { /* Inline modelize_class#AType#mtype (var_a) on <var_a:AType> */
3904 var161 = var_a->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <var_a:AType> */
3905 var159 = var161;
3906 RET_LABEL160:(void)0;
3907 }
3908 }
3909 var_t = var159;
3910 var162 = NULL;
3911 if (var_t == NULL) {
3912 var163 = 1; /* is null */
3913 } else {
3914 var163 = 0; /* arg is null but recv is not */
3915 }
3916 if (0) {
3917 { /* Inline kernel#Object#== (var_t,var162) on <var_t:nullable MType> */
3918 var_other166 = var162;
3919 {
3920 { /* Inline kernel#Object#is_same_instance (var_t,var_other166) on <var_t:nullable MType(MType)> */
3921 var169 = var_t == var_other166;
3922 var167 = var169;
3923 goto RET_LABEL168;
3924 RET_LABEL168:(void)0;
3925 }
3926 }
3927 var164 = var167;
3928 goto RET_LABEL165;
3929 RET_LABEL165:(void)0;
3930 }
3931 var163 = var164;
3932 }
3933 if (var163){
3934 goto BREAK_label;
3935 } else {
3936 }
3937 {
3938 modelize_property__ModelBuilder__check_visibility(self, var_a, var_t, var_mpropdef); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:ModelBuilder>*/
3939 }
3940 BREAK_label: (void)0;
3941 {
3942 ((void (*)(val*))(var_156->class->vft[COLOR_abstract_collection__Iterator__next]))(var_156) /* next on <var_156:Iterator[AType]>*/;
3943 }
3944 } else {
3945 goto BREAK_label170;
3946 }
3947 }
3948 BREAK_label170: (void)0;
3949 {
3950 { /* Inline abstract_collection#Iterator#finish (var_156) on <var_156:Iterator[AType]> */
3951 RET_LABEL171:(void)0;
3952 }
3953 }
3954 } else {
3955 /* <var_mtype:MType> isa MGenericType */
3956 cltype173 = type_model__MGenericType.color;
3957 idtype174 = type_model__MGenericType.id;
3958 if(cltype173 >= var_mtype->type->table_size) {
3959 var172 = 0;
3960 } else {
3961 var172 = var_mtype->type->type_table[cltype173] == idtype174;
3962 }
3963 if (var172){
3964 {
3965 { /* Inline model#MClassType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
3966 var177 = var_mtype->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
3967 if (unlikely(var177 == NULL)) {
3968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
3969 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
3970 show_backtrace(1);
3971 }
3972 var175 = var177;
3973 RET_LABEL176:(void)0;
3974 }
3975 }
3976 var_178 = var175;
3977 {
3978 var179 = array__AbstractArrayRead__iterator(var_178);
3979 }
3980 var_180 = var179;
3981 for(;;) {
3982 {
3983 var181 = array__ArrayIterator__is_ok(var_180);
3984 }
3985 if (var181){
3986 {
3987 var182 = array__ArrayIterator__item(var_180);
3988 }
3989 var_t183 = var182;
3990 {
3991 modelize_property__ModelBuilder__check_visibility(self, var_node, var_t183, var_mpropdef); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:ModelBuilder>*/
3992 }
3993 {
3994 array__ArrayIterator__next(var_180); /* Direct call array#ArrayIterator#next on <var_180:ArrayIterator[MType]>*/
3995 }
3996 } else {
3997 goto BREAK_label184;
3998 }
3999 }
4000 BREAK_label184: (void)0;
4001 {
4002 { /* Inline abstract_collection#Iterator#finish (var_180) on <var_180:ArrayIterator[MType]> */
4003 RET_LABEL185:(void)0;
4004 }
4005 }
4006 } else {
4007 }
4008 }
4009 RET_LABEL:;
4010 }
4011 /* method modelize_property#ModelBuilder#check_visibility for (self: Object, ANode, MType, MPropDef) */
4012 void VIRTUAL_modelize_property__ModelBuilder__check_visibility(val* self, val* p0, val* p1, val* p2) {
4013 modelize_property__ModelBuilder__check_visibility(self, p0, p1, p2); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:Object(ModelBuilder)>*/
4014 RET_LABEL:;
4015 }
4016 /* method modelize_property#MPropDef#has_supercall for (self: MPropDef): Bool */
4017 short int modelize_property__MPropDef__has_supercall(val* self) {
4018 short int var /* : Bool */;
4019 short int var1 /* : Bool */;
4020 var1 = self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <self:MPropDef> */
4021 var = var1;
4022 RET_LABEL:;
4023 return var;
4024 }
4025 /* method modelize_property#MPropDef#has_supercall for (self: Object): Bool */
4026 short int VIRTUAL_modelize_property__MPropDef__has_supercall(val* self) {
4027 short int var /* : Bool */;
4028 short int var1 /* : Bool */;
4029 short int var3 /* : Bool */;
4030 { /* Inline modelize_property#MPropDef#has_supercall (self) on <self:Object(MPropDef)> */
4031 var3 = self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <self:Object(MPropDef)> */
4032 var1 = var3;
4033 RET_LABEL2:(void)0;
4034 }
4035 var = var1;
4036 RET_LABEL:;
4037 return var;
4038 }
4039 /* method modelize_property#MPropDef#has_supercall= for (self: MPropDef, Bool) */
4040 void modelize_property__MPropDef__has_supercall_61d(val* self, short int p0) {
4041 self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s = p0; /* _has_supercall on <self:MPropDef> */
4042 RET_LABEL:;
4043 }
4044 /* method modelize_property#MPropDef#has_supercall= for (self: Object, Bool) */
4045 void VIRTUAL_modelize_property__MPropDef__has_supercall_61d(val* self, short int p0) {
4046 { /* Inline modelize_property#MPropDef#has_supercall= (self,p0) on <self:Object(MPropDef)> */
4047 self->attrs[COLOR_modelize_property__MPropDef___has_supercall].s = p0; /* _has_supercall on <self:Object(MPropDef)> */
4048 RET_LABEL1:(void)0;
4049 }
4050 RET_LABEL:;
4051 }
4052 /* method modelize_property#AClassdef#build_properties_is_done for (self: AClassdef): Bool */
4053 short int modelize_property__AClassdef__build_properties_is_done(val* self) {
4054 short int var /* : Bool */;
4055 short int var1 /* : Bool */;
4056 var1 = self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <self:AClassdef> */
4057 var = var1;
4058 RET_LABEL:;
4059 return var;
4060 }
4061 /* method modelize_property#AClassdef#build_properties_is_done for (self: Object): Bool */
4062 short int VIRTUAL_modelize_property__AClassdef__build_properties_is_done(val* self) {
4063 short int var /* : Bool */;
4064 short int var1 /* : Bool */;
4065 short int var3 /* : Bool */;
4066 { /* Inline modelize_property#AClassdef#build_properties_is_done (self) on <self:Object(AClassdef)> */
4067 var3 = self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <self:Object(AClassdef)> */
4068 var1 = var3;
4069 RET_LABEL2:(void)0;
4070 }
4071 var = var1;
4072 RET_LABEL:;
4073 return var;
4074 }
4075 /* method modelize_property#AClassdef#build_properties_is_done= for (self: AClassdef, Bool) */
4076 void modelize_property__AClassdef__build_properties_is_done_61d(val* self, short int p0) {
4077 self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s = p0; /* _build_properties_is_done on <self:AClassdef> */
4078 RET_LABEL:;
4079 }
4080 /* method modelize_property#AClassdef#build_properties_is_done= for (self: Object, Bool) */
4081 void VIRTUAL_modelize_property__AClassdef__build_properties_is_done_61d(val* self, short int p0) {
4082 { /* Inline modelize_property#AClassdef#build_properties_is_done= (self,p0) on <self:Object(AClassdef)> */
4083 self->attrs[COLOR_modelize_property__AClassdef___build_properties_is_done].s = p0; /* _build_properties_is_done on <self:Object(AClassdef)> */
4084 RET_LABEL1:(void)0;
4085 }
4086 RET_LABEL:;
4087 }
4088 /* method modelize_property#AClassdef#mfree_init for (self: AClassdef): nullable MMethodDef */
4089 val* modelize_property__AClassdef__mfree_init(val* self) {
4090 val* var /* : nullable MMethodDef */;
4091 val* var1 /* : nullable MMethodDef */;
4092 var1 = self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <self:AClassdef> */
4093 var = var1;
4094 RET_LABEL:;
4095 return var;
4096 }
4097 /* method modelize_property#AClassdef#mfree_init for (self: Object): nullable MMethodDef */
4098 val* VIRTUAL_modelize_property__AClassdef__mfree_init(val* self) {
4099 val* var /* : nullable MMethodDef */;
4100 val* var1 /* : nullable MMethodDef */;
4101 val* var3 /* : nullable MMethodDef */;
4102 { /* Inline modelize_property#AClassdef#mfree_init (self) on <self:Object(AClassdef)> */
4103 var3 = self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <self:Object(AClassdef)> */
4104 var1 = var3;
4105 RET_LABEL2:(void)0;
4106 }
4107 var = var1;
4108 RET_LABEL:;
4109 return var;
4110 }
4111 /* method modelize_property#AClassdef#mfree_init= for (self: AClassdef, nullable MMethodDef) */
4112 void modelize_property__AClassdef__mfree_init_61d(val* self, val* p0) {
4113 self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val = p0; /* _mfree_init on <self:AClassdef> */
4114 RET_LABEL:;
4115 }
4116 /* method modelize_property#AClassdef#mfree_init= for (self: Object, nullable MMethodDef) */
4117 void VIRTUAL_modelize_property__AClassdef__mfree_init_61d(val* self, val* p0) {
4118 { /* Inline modelize_property#AClassdef#mfree_init= (self,p0) on <self:Object(AClassdef)> */
4119 self->attrs[COLOR_modelize_property__AClassdef___mfree_init].val = p0; /* _mfree_init on <self:Object(AClassdef)> */
4120 RET_LABEL1:(void)0;
4121 }
4122 RET_LABEL:;
4123 }
4124 /* method modelize_property#MClass#root_init for (self: MClass): nullable MMethodDef */
4125 val* modelize_property__MClass__root_init(val* self) {
4126 val* var /* : nullable MMethodDef */;
4127 val* var1 /* : nullable MMethodDef */;
4128 var1 = self->attrs[COLOR_modelize_property__MClass___root_init].val; /* _root_init on <self:MClass> */
4129 var = var1;
4130 RET_LABEL:;
4131 return var;
4132 }
4133 /* method modelize_property#MClass#root_init for (self: Object): nullable MMethodDef */
4134 val* VIRTUAL_modelize_property__MClass__root_init(val* self) {
4135 val* var /* : nullable MMethodDef */;
4136 val* var1 /* : nullable MMethodDef */;
4137 val* var3 /* : nullable MMethodDef */;
4138 { /* Inline modelize_property#MClass#root_init (self) on <self:Object(MClass)> */
4139 var3 = self->attrs[COLOR_modelize_property__MClass___root_init].val; /* _root_init on <self:Object(MClass)> */
4140 var1 = var3;
4141 RET_LABEL2:(void)0;
4142 }
4143 var = var1;
4144 RET_LABEL:;
4145 return var;
4146 }
4147 /* method modelize_property#MClass#root_init= for (self: MClass, nullable MMethodDef) */
4148 void modelize_property__MClass__root_init_61d(val* self, val* p0) {
4149 self->attrs[COLOR_modelize_property__MClass___root_init].val = p0; /* _root_init on <self:MClass> */
4150 RET_LABEL:;
4151 }
4152 /* method modelize_property#MClass#root_init= for (self: Object, nullable MMethodDef) */
4153 void VIRTUAL_modelize_property__MClass__root_init_61d(val* self, val* p0) {
4154 { /* Inline modelize_property#MClass#root_init= (self,p0) on <self:Object(MClass)> */
4155 self->attrs[COLOR_modelize_property__MClass___root_init].val = p0; /* _root_init on <self:Object(MClass)> */
4156 RET_LABEL1:(void)0;
4157 }
4158 RET_LABEL:;
4159 }
4160 /* method modelize_property#MClassDef#mprop2npropdef for (self: MClassDef): Map[MProperty, APropdef] */
4161 val* modelize_property__MClassDef__mprop2npropdef(val* self) {
4162 val* var /* : Map[MProperty, APropdef] */;
4163 val* var1 /* : Map[MProperty, APropdef] */;
4164 var1 = self->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <self:MClassDef> */
4165 if (unlikely(var1 == NULL)) {
4166 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
4167 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
4168 show_backtrace(1);
4169 }
4170 var = var1;
4171 RET_LABEL:;
4172 return var;
4173 }
4174 /* method modelize_property#MClassDef#mprop2npropdef for (self: Object): Map[MProperty, APropdef] */
4175 val* VIRTUAL_modelize_property__MClassDef__mprop2npropdef(val* self) {
4176 val* var /* : Map[MProperty, APropdef] */;
4177 val* var1 /* : Map[MProperty, APropdef] */;
4178 val* var3 /* : Map[MProperty, APropdef] */;
4179 { /* Inline modelize_property#MClassDef#mprop2npropdef (self) on <self:Object(MClassDef)> */
4180 var3 = self->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <self:Object(MClassDef)> */
4181 if (unlikely(var3 == NULL)) {
4182 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
4183 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
4184 show_backtrace(1);
4185 }
4186 var1 = var3;
4187 RET_LABEL2:(void)0;
4188 }
4189 var = var1;
4190 RET_LABEL:;
4191 return var;
4192 }
4193 /* method modelize_property#APropdef#mpropdef for (self: APropdef): nullable MPropDef */
4194 val* modelize_property__APropdef__mpropdef(val* self) {
4195 val* var /* : nullable MPropDef */;
4196 val* var1 /* : nullable MPropDef */;
4197 var1 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:APropdef> */
4198 var = var1;
4199 RET_LABEL:;
4200 return var;
4201 }
4202 /* method modelize_property#APropdef#mpropdef for (self: Object): nullable MPropDef */
4203 val* VIRTUAL_modelize_property__APropdef__mpropdef(val* self) {
4204 val* var /* : nullable MPropDef */;
4205 val* var1 /* : nullable MPropDef */;
4206 val* var3 /* : nullable MPropDef */;
4207 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:Object(APropdef)> */
4208 var3 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:Object(APropdef)> */
4209 var1 = var3;
4210 RET_LABEL2:(void)0;
4211 }
4212 var = var1;
4213 RET_LABEL:;
4214 return var;
4215 }
4216 /* method modelize_property#APropdef#mpropdef= for (self: APropdef, nullable MPropDef) */
4217 void modelize_property__APropdef__mpropdef_61d(val* self, val* p0) {
4218 short int var /* : Bool */;
4219 int cltype;
4220 int idtype;
4221 const struct type* type_struct;
4222 const char* var_class_name;
4223 /* Covariant cast for argument 0 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
4224 /* <p0:nullable MPropDef> isa nullable MPROPDEF */
4225 type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
4226 cltype = type_struct->color;
4227 idtype = type_struct->id;
4228 if(p0 == NULL) {
4229 var = 1;
4230 } else {
4231 if(cltype >= p0->type->table_size) {
4232 var = 0;
4233 } else {
4234 var = p0->type->type_table[cltype] == idtype;
4235 }
4236 }
4237 if (unlikely(!var)) {
4238 var_class_name = p0 == NULL ? "null" : p0->type->name;
4239 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
4240 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 319);
4241 show_backtrace(1);
4242 }
4243 self->attrs[COLOR_modelize_property__APropdef___mpropdef].val = p0; /* _mpropdef on <self:APropdef> */
4244 RET_LABEL:;
4245 }
4246 /* method modelize_property#APropdef#mpropdef= for (self: Object, nullable MPropDef) */
4247 void VIRTUAL_modelize_property__APropdef__mpropdef_61d(val* self, val* p0) {
4248 short int var /* : Bool */;
4249 int cltype;
4250 int idtype;
4251 const struct type* type_struct;
4252 const char* var_class_name;
4253 { /* Inline modelize_property#APropdef#mpropdef= (self,p0) on <self:Object(APropdef)> */
4254 /* Covariant cast for argument 0 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
4255 /* <p0:nullable MPropDef> isa nullable MPROPDEF */
4256 type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
4257 cltype = type_struct->color;
4258 idtype = type_struct->id;
4259 if(p0 == NULL) {
4260 var = 1;
4261 } else {
4262 if(cltype >= p0->type->table_size) {
4263 var = 0;
4264 } else {
4265 var = p0->type->type_table[cltype] == idtype;
4266 }
4267 }
4268 if (unlikely(!var)) {
4269 var_class_name = p0 == NULL ? "null" : p0->type->name;
4270 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
4271 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 319);
4272 show_backtrace(1);
4273 }
4274 self->attrs[COLOR_modelize_property__APropdef___mpropdef].val = p0; /* _mpropdef on <self:Object(APropdef)> */
4275 RET_LABEL1:(void)0;
4276 }
4277 RET_LABEL:;
4278 }
4279 /* method modelize_property#APropdef#new_property_visibility for (self: APropdef, ModelBuilder, MClassDef, nullable AVisibility): MVisibility */
4280 val* modelize_property__APropdef__new_property_visibility(val* self, val* p0, val* p1, val* p2) {
4281 val* var /* : MVisibility */;
4282 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4283 val* var_mclassdef /* var mclassdef: MClassDef */;
4284 val* var_nvisibility /* var nvisibility: nullable AVisibility */;
4285 val* var1 /* : MVisibility */;
4286 val* var_mvisibility /* var mvisibility: MVisibility */;
4287 val* var2 /* : null */;
4288 short int var3 /* : Bool */;
4289 short int var4 /* : Bool */;
4290 val* var_other /* var other: nullable Object */;
4291 short int var6 /* : Bool */;
4292 short int var7 /* : Bool */;
4293 short int var8 /* : Bool */;
4294 val* var9 /* : MVisibility */;
4295 val* var10 /* : MVisibility */;
4296 short int var11 /* : Bool */;
4297 short int var12 /* : Bool */;
4298 val* var_other14 /* var other: nullable Object */;
4299 short int var15 /* : Bool */;
4300 short int var17 /* : Bool */;
4301 static val* varonce;
4302 val* var18 /* : String */;
4303 char* var19 /* : NativeString */;
4304 long var20 /* : Int */;
4305 val* var21 /* : FlatString */;
4306 val* var22 /* : MVisibility */;
4307 val* var23 /* : MClass */;
4308 val* var25 /* : MClass */;
4309 val* var26 /* : MVisibility */;
4310 val* var28 /* : MVisibility */;
4311 val* var29 /* : MVisibility */;
4312 short int var30 /* : Bool */;
4313 short int var31 /* : Bool */;
4314 short int var33 /* : Bool */;
4315 short int var35 /* : Bool */;
4316 val* var36 /* : MVisibility */;
4317 short int var37 /* : Bool */;
4318 short int var38 /* : Bool */;
4319 short int var40 /* : Bool */;
4320 short int var42 /* : Bool */;
4321 val* var43 /* : null */;
4322 short int var44 /* : Bool */;
4323 short int var45 /* : Bool */;
4324 short int var47 /* : Bool */;
4325 short int var48 /* : Bool */;
4326 short int var49 /* : Bool */;
4327 static val* varonce50;
4328 val* var51 /* : String */;
4329 char* var52 /* : NativeString */;
4330 long var53 /* : Int */;
4331 val* var54 /* : FlatString */;
4332 val* var55 /* : MVisibility */;
4333 short int var56 /* : Bool */;
4334 short int var57 /* : Bool */;
4335 short int var59 /* : Bool */;
4336 short int var61 /* : Bool */;
4337 val* var62 /* : null */;
4338 short int var63 /* : Bool */;
4339 short int var64 /* : Bool */;
4340 short int var66 /* : Bool */;
4341 short int var67 /* : Bool */;
4342 short int var68 /* : Bool */;
4343 static val* varonce69;
4344 val* var70 /* : String */;
4345 char* var71 /* : NativeString */;
4346 long var72 /* : Int */;
4347 val* var73 /* : FlatString */;
4348 static val* varonce74;
4349 val* var75 /* : String */;
4350 char* var76 /* : NativeString */;
4351 long var77 /* : Int */;
4352 val* var78 /* : FlatString */;
4353 val* var79 /* : MVisibility */;
4354 var_modelbuilder = p0;
4355 var_mclassdef = p1;
4356 var_nvisibility = p2;
4357 {
4358 var1 = model_base__Object__public_visibility(self);
4359 }
4360 var_mvisibility = var1;
4361 var2 = NULL;
4362 if (var_nvisibility == NULL) {
4363 var3 = 0; /* is null */
4364 } else {
4365 var3 = 1; /* arg is null and recv is not */
4366 }
4367 if (0) {
4368 { /* Inline kernel#Object#!= (var_nvisibility,var2) on <var_nvisibility:nullable AVisibility> */
4369 var_other = var2;
4370 {
4371 var7 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
4372 var6 = var7;
4373 }
4374 var8 = !var6;
4375 var4 = var8;
4376 goto RET_LABEL5;
4377 RET_LABEL5:(void)0;
4378 }
4379 var3 = var4;
4380 }
4381 if (var3){
4382 {
4383 var9 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
4384 }
4385 var_mvisibility = var9;
4386 {
4387 var10 = model_base__Object__intrude_visibility(self);
4388 }
4389 {
4390 { /* Inline kernel#Object#== (var_mvisibility,var10) on <var_mvisibility:MVisibility> */
4391 var_other14 = var10;
4392 {
4393 { /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other14) on <var_mvisibility:MVisibility> */
4394 var17 = var_mvisibility == var_other14;
4395 var15 = var17;
4396 goto RET_LABEL16;
4397 RET_LABEL16:(void)0;
4398 }
4399 }
4400 var12 = var15;
4401 goto RET_LABEL13;
4402 RET_LABEL13:(void)0;
4403 }
4404 var11 = var12;
4405 }
4406 if (var11){
4407 if (varonce) {
4408 var18 = varonce;
4409 } else {
4410 var19 = "Error: intrude is not a legal visibility for properties.";
4411 var20 = 56;
4412 var21 = string__NativeString__to_s_with_length(var19, var20);
4413 var18 = var21;
4414 varonce = var18;
4415 }
4416 {
4417 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nvisibility, var18); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
4418 }
4419 {
4420 var22 = model_base__Object__public_visibility(self);
4421 }
4422 var_mvisibility = var22;
4423 } else {
4424 }
4425 } else {
4426 }
4427 {
4428 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
4429 var25 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
4430 if (unlikely(var25 == NULL)) {
4431 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4432 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
4433 show_backtrace(1);
4434 }
4435 var23 = var25;
4436 RET_LABEL24:(void)0;
4437 }
4438 }
4439 {
4440 { /* Inline model#MClass#visibility (var23) on <var23:MClass> */
4441 var28 = var23->attrs[COLOR_model__MClass___visibility].val; /* _visibility on <var23:MClass> */
4442 if (unlikely(var28 == NULL)) {
4443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
4444 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 375);
4445 show_backtrace(1);
4446 }
4447 var26 = var28;
4448 RET_LABEL27:(void)0;
4449 }
4450 }
4451 {
4452 var29 = model_base__Object__private_visibility(self);
4453 }
4454 {
4455 { /* Inline kernel#Object#== (var26,var29) on <var26:MVisibility> */
4456 var_other14 = var29;
4457 {
4458 { /* Inline kernel#Object#is_same_instance (var26,var_other14) on <var26:MVisibility> */
4459 var35 = var26 == var_other14;
4460 var33 = var35;
4461 goto RET_LABEL34;
4462 RET_LABEL34:(void)0;
4463 }
4464 }
4465 var31 = var33;
4466 goto RET_LABEL32;
4467 RET_LABEL32:(void)0;
4468 }
4469 var30 = var31;
4470 }
4471 if (var30){
4472 {
4473 var36 = model_base__Object__protected_visibility(self);
4474 }
4475 {
4476 { /* Inline kernel#Object#== (var_mvisibility,var36) on <var_mvisibility:MVisibility> */
4477 var_other14 = var36;
4478 {
4479 { /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other14) on <var_mvisibility:MVisibility> */
4480 var42 = var_mvisibility == var_other14;
4481 var40 = var42;
4482 goto RET_LABEL41;
4483 RET_LABEL41:(void)0;
4484 }
4485 }
4486 var38 = var40;
4487 goto RET_LABEL39;
4488 RET_LABEL39:(void)0;
4489 }
4490 var37 = var38;
4491 }
4492 if (var37){
4493 var43 = NULL;
4494 if (var_nvisibility == NULL) {
4495 var44 = 0; /* is null */
4496 } else {
4497 var44 = 1; /* arg is null and recv is not */
4498 }
4499 if (0) {
4500 { /* Inline kernel#Object#!= (var_nvisibility,var43) on <var_nvisibility:nullable AVisibility> */
4501 var_other = var43;
4502 {
4503 var48 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
4504 var47 = var48;
4505 }
4506 var49 = !var47;
4507 var45 = var49;
4508 goto RET_LABEL46;
4509 RET_LABEL46:(void)0;
4510 }
4511 var44 = var45;
4512 }
4513 if (unlikely(!var44)) {
4514 PRINT_ERROR("Runtime error: %s", "Assert failed");
4515 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 337);
4516 show_backtrace(1);
4517 }
4518 if (varonce50) {
4519 var51 = varonce50;
4520 } else {
4521 var52 = "Error: The only legal visibility for properties in a private class is private.";
4522 var53 = 78;
4523 var54 = string__NativeString__to_s_with_length(var52, var53);
4524 var51 = var54;
4525 varonce50 = var51;
4526 }
4527 {
4528 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nvisibility, var51); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
4529 }
4530 } else {
4531 {
4532 var55 = model_base__Object__private_visibility(self);
4533 }
4534 {
4535 { /* Inline kernel#Object#== (var_mvisibility,var55) on <var_mvisibility:MVisibility> */
4536 var_other14 = var55;
4537 {
4538 { /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other14) on <var_mvisibility:MVisibility> */
4539 var61 = var_mvisibility == var_other14;
4540 var59 = var61;
4541 goto RET_LABEL60;
4542 RET_LABEL60:(void)0;
4543 }
4544 }
4545 var57 = var59;
4546 goto RET_LABEL58;
4547 RET_LABEL58:(void)0;
4548 }
4549 var56 = var57;
4550 }
4551 if (var56){
4552 var62 = NULL;
4553 if (var_nvisibility == NULL) {
4554 var63 = 0; /* is null */
4555 } else {
4556 var63 = 1; /* arg is null and recv is not */
4557 }
4558 if (0) {
4559 { /* Inline kernel#Object#!= (var_nvisibility,var62) on <var_nvisibility:nullable AVisibility> */
4560 var_other = var62;
4561 {
4562 var67 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
4563 var66 = var67;
4564 }
4565 var68 = !var66;
4566 var64 = var68;
4567 goto RET_LABEL65;
4568 RET_LABEL65:(void)0;
4569 }
4570 var63 = var64;
4571 }
4572 if (unlikely(!var63)) {
4573 PRINT_ERROR("Runtime error: %s", "Assert failed");
4574 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 340);
4575 show_backtrace(1);
4576 }
4577 if (varonce69) {
4578 var70 = varonce69;
4579 } else {
4580 var71 = "useless-visibility";
4581 var72 = 18;
4582 var73 = string__NativeString__to_s_with_length(var71, var72);
4583 var70 = var73;
4584 varonce69 = var70;
4585 }
4586 if (varonce74) {
4587 var75 = varonce74;
4588 } else {
4589 var76 = "Warning: private is superfluous since the only legal visibility for properties in a private class is private.";
4590 var77 = 109;
4591 var78 = string__NativeString__to_s_with_length(var76, var77);
4592 var75 = var78;
4593 varonce74 = var75;
4594 }
4595 {
4596 modelbuilder__ModelBuilder__advice(var_modelbuilder, var_nvisibility, var70, var75); /* Direct call modelbuilder#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
4597 }
4598 } else {
4599 }
4600 }
4601 {
4602 var79 = model_base__Object__private_visibility(self);
4603 }
4604 var_mvisibility = var79;
4605 } else {
4606 }
4607 var = var_mvisibility;
4608 goto RET_LABEL;
4609 RET_LABEL:;
4610 return var;
4611 }
4612 /* method modelize_property#APropdef#new_property_visibility for (self: Object, ModelBuilder, MClassDef, nullable AVisibility): MVisibility */
4613 val* VIRTUAL_modelize_property__APropdef__new_property_visibility(val* self, val* p0, val* p1, val* p2) {
4614 val* var /* : MVisibility */;
4615 val* var1 /* : MVisibility */;
4616 var1 = modelize_property__APropdef__new_property_visibility(self, p0, p1, p2);
4617 var = var1;
4618 RET_LABEL:;
4619 return var;
4620 }
4621 /* method modelize_property#APropdef#set_doc for (self: APropdef, MPropDef, ModelBuilder) */
4622 void modelize_property__APropdef__set_doc(val* self, val* p0, val* p1) {
4623 val* var_mpropdef /* var mpropdef: MPropDef */;
4624 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4625 val* var /* : nullable ADoc */;
4626 val* var2 /* : nullable ADoc */;
4627 val* var_ndoc /* var ndoc: nullable ADoc */;
4628 val* var3 /* : null */;
4629 short int var4 /* : Bool */;
4630 short int var5 /* : Bool */;
4631 val* var_other /* var other: nullable Object */;
4632 short int var7 /* : Bool */;
4633 short int var8 /* : Bool */;
4634 short int var9 /* : Bool */;
4635 val* var10 /* : MDoc */;
4636 val* var_mdoc /* var mdoc: MDoc */;
4637 short int var13 /* : Bool */;
4638 short int var14 /* : Bool */;
4639 short int var_ /* var : Bool */;
4640 val* var15 /* : MProperty */;
4641 val* var17 /* : MProperty */;
4642 val* var18 /* : MVisibility */;
4643 val* var20 /* : MVisibility */;
4644 val* var21 /* : MVisibility */;
4645 short int var22 /* : Bool */;
4646 static val* varonce;
4647 val* var23 /* : String */;
4648 char* var24 /* : NativeString */;
4649 long var25 /* : Int */;
4650 val* var26 /* : FlatString */;
4651 static val* varonce27;
4652 val* var28 /* : String */;
4653 char* var29 /* : NativeString */;
4654 long var30 /* : Int */;
4655 val* var31 /* : FlatString */;
4656 val* var32 /* : MProperty */;
4657 val* var34 /* : MProperty */;
4658 static val* varonce35;
4659 val* var36 /* : String */;
4660 char* var37 /* : NativeString */;
4661 long var38 /* : Int */;
4662 val* var39 /* : FlatString */;
4663 val* var40 /* : Array[Object] */;
4664 long var41 /* : Int */;
4665 val* var42 /* : NativeArray[Object] */;
4666 val* var43 /* : String */;
4667 static val* varonce44;
4668 val* var45 /* : String */;
4669 char* var46 /* : NativeString */;
4670 long var47 /* : Int */;
4671 val* var48 /* : FlatString */;
4672 val* var49 /* : nullable AAnnotation */;
4673 val* var_at_deprecated /* var at_deprecated: nullable AAnnotation */;
4674 val* var50 /* : null */;
4675 short int var51 /* : Bool */;
4676 short int var52 /* : Bool */;
4677 short int var54 /* : Bool */;
4678 short int var55 /* : Bool */;
4679 short int var56 /* : Bool */;
4680 short int var57 /* : Bool */;
4681 short int var58 /* : Bool */;
4682 static val* varonce59;
4683 val* var60 /* : String */;
4684 char* var61 /* : NativeString */;
4685 long var62 /* : Int */;
4686 val* var63 /* : FlatString */;
4687 val* var64 /* : MDeprecationInfo */;
4688 val* var_info /* var info: MDeprecationInfo */;
4689 val* var65 /* : nullable ADoc */;
4690 val* var67 /* : nullable ADoc */;
4691 val* var68 /* : null */;
4692 short int var69 /* : Bool */;
4693 short int var70 /* : Bool */;
4694 short int var72 /* : Bool */;
4695 short int var73 /* : Bool */;
4696 short int var74 /* : Bool */;
4697 val* var75 /* : MDoc */;
4698 val* var77 /* : MProperty */;
4699 val* var79 /* : MProperty */;
4700 var_mpropdef = p0;
4701 var_modelbuilder = p1;
4702 {
4703 { /* Inline parser_nodes#APropdef#n_doc (self) on <self:APropdef> */
4704 var2 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:APropdef> */
4705 var = var2;
4706 RET_LABEL1:(void)0;
4707 }
4708 }
4709 var_ndoc = var;
4710 var3 = NULL;
4711 if (var_ndoc == NULL) {
4712 var4 = 0; /* is null */
4713 } else {
4714 var4 = 1; /* arg is null and recv is not */
4715 }
4716 if (0) {
4717 { /* Inline kernel#Object#!= (var_ndoc,var3) on <var_ndoc:nullable ADoc> */
4718 var_other = var3;
4719 {
4720 var8 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
4721 var7 = var8;
4722 }
4723 var9 = !var7;
4724 var5 = var9;
4725 goto RET_LABEL6;
4726 RET_LABEL6:(void)0;
4727 }
4728 var4 = var5;
4729 }
4730 if (var4){
4731 {
4732 var10 = modelbuilder__ADoc__to_mdoc(var_ndoc);
4733 }
4734 var_mdoc = var10;
4735 {
4736 { /* Inline mdoc#MEntity#mdoc= (var_mpropdef,var_mdoc) on <var_mpropdef:MPropDef> */
4737 var_mpropdef->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mpropdef:MPropDef> */
4738 RET_LABEL11:(void)0;
4739 }
4740 }
4741 {
4742 { /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mpropdef) on <var_mdoc:MDoc> */
4743 var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mpropdef; /* _original_mentity on <var_mdoc:MDoc> */
4744 RET_LABEL12:(void)0;
4745 }
4746 }
4747 } else {
4748 {
4749 var14 = model__MPropDef__is_intro(var_mpropdef);
4750 }
4751 var_ = var14;
4752 if (var14){
4753 {
4754 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
4755 var17 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
4756 if (unlikely(var17 == NULL)) {
4757 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4758 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
4759 show_backtrace(1);
4760 }
4761 var15 = var17;
4762 RET_LABEL16:(void)0;
4763 }
4764 }
4765 {
4766 { /* Inline model#MProperty#visibility (var15) on <var15:MProperty> */
4767 var20 = var15->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var15:MProperty> */
4768 if (unlikely(var20 == NULL)) {
4769 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
4770 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
4771 show_backtrace(1);
4772 }
4773 var18 = var20;
4774 RET_LABEL19:(void)0;
4775 }
4776 }
4777 {
4778 var21 = model_base__Object__protected_visibility(self);
4779 }
4780 {
4781 var22 = kernel__Comparable___62d_61d(var18, var21);
4782 }
4783 var13 = var22;
4784 } else {
4785 var13 = var_;
4786 }
4787 if (var13){
4788 if (varonce) {
4789 var23 = varonce;
4790 } else {
4791 var24 = "missing-doc";
4792 var25 = 11;
4793 var26 = string__NativeString__to_s_with_length(var24, var25);
4794 var23 = var26;
4795 varonce = var23;
4796 }
4797 if (varonce27) {
4798 var28 = varonce27;
4799 } else {
4800 var29 = "Documentation warning: Undocumented property `";
4801 var30 = 46;
4802 var31 = string__NativeString__to_s_with_length(var29, var30);
4803 var28 = var31;
4804 varonce27 = var28;
4805 }
4806 {
4807 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
4808 var34 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
4809 if (unlikely(var34 == NULL)) {
4810 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4811 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
4812 show_backtrace(1);
4813 }
4814 var32 = var34;
4815 RET_LABEL33:(void)0;
4816 }
4817 }
4818 if (varonce35) {
4819 var36 = varonce35;
4820 } else {
4821 var37 = "`";
4822 var38 = 1;
4823 var39 = string__NativeString__to_s_with_length(var37, var38);
4824 var36 = var39;
4825 varonce35 = var36;
4826 }
4827 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
4828 { /* var40 = array_instance Array[Object] */
4829 var41 = 3;
4830 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
4831 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var28;
4832 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var32;
4833 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36;
4834 {
4835 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
4836 }
4837 }
4838 {
4839 var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
4840 }
4841 {
4842 modelbuilder__ModelBuilder__advice(var_modelbuilder, self, var23, var43); /* Direct call modelbuilder#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
4843 }
4844 } else {
4845 }
4846 }
4847 if (varonce44) {
4848 var45 = varonce44;
4849 } else {
4850 var46 = "deprecated";
4851 var47 = 10;
4852 var48 = string__NativeString__to_s_with_length(var46, var47);
4853 var45 = var48;
4854 varonce44 = var45;
4855 }
4856 {
4857 var49 = annotation__Prod__get_single_annotation(self, var45, var_modelbuilder);
4858 }
4859 var_at_deprecated = var49;
4860 var50 = NULL;
4861 if (var_at_deprecated == NULL) {
4862 var51 = 0; /* is null */
4863 } else {
4864 var51 = 1; /* arg is null and recv is not */
4865 }
4866 if (0) {
4867 { /* Inline kernel#Object#!= (var_at_deprecated,var50) on <var_at_deprecated:nullable AAnnotation> */
4868 var_other = var50;
4869 {
4870 var55 = ((short int (*)(val*, val*))(var_at_deprecated->class->vft[COLOR_kernel__Object___61d_61d]))(var_at_deprecated, var_other) /* == on <var_at_deprecated:nullable AAnnotation(AAnnotation)>*/;
4871 var54 = var55;
4872 }
4873 var56 = !var54;
4874 var52 = var56;
4875 goto RET_LABEL53;
4876 RET_LABEL53:(void)0;
4877 }
4878 var51 = var52;
4879 }
4880 if (var51){
4881 {
4882 var57 = model__MPropDef__is_intro(var_mpropdef);
4883 }
4884 var58 = !var57;
4885 if (var58){
4886 if (varonce59) {
4887 var60 = varonce59;
4888 } else {
4889 var61 = "Error: method redefinition cannot be deprecated.";
4890 var62 = 48;
4891 var63 = string__NativeString__to_s_with_length(var61, var62);
4892 var60 = var63;
4893 varonce59 = var60;
4894 }
4895 {
4896 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var60); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
4897 }
4898 } else {
4899 var64 = NEW_mdoc__MDeprecationInfo(&type_mdoc__MDeprecationInfo);
4900 {
4901 ((void (*)(val*))(var64->class->vft[COLOR_kernel__Object__init]))(var64) /* init on <var64:MDeprecationInfo>*/;
4902 }
4903 var_info = var64;
4904 {
4905 { /* Inline parser_nodes#AAnnotation#n_doc (var_at_deprecated) on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
4906 var67 = var_at_deprecated->attrs[COLOR_parser_nodes__AAnnotation___n_doc].val; /* _n_doc on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
4907 var65 = var67;
4908 RET_LABEL66:(void)0;
4909 }
4910 }
4911 var_ndoc = var65;
4912 var68 = NULL;
4913 if (var_ndoc == NULL) {
4914 var69 = 0; /* is null */
4915 } else {
4916 var69 = 1; /* arg is null and recv is not */
4917 }
4918 if (0) {
4919 { /* Inline kernel#Object#!= (var_ndoc,var68) on <var_ndoc:nullable ADoc> */
4920 var_other = var68;
4921 {
4922 var73 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
4923 var72 = var73;
4924 }
4925 var74 = !var72;
4926 var70 = var74;
4927 goto RET_LABEL71;
4928 RET_LABEL71:(void)0;
4929 }
4930 var69 = var70;
4931 }
4932 if (var69){
4933 {
4934 var75 = modelbuilder__ADoc__to_mdoc(var_ndoc);
4935 }
4936 {
4937 { /* Inline mdoc#MDeprecationInfo#mdoc= (var_info,var75) on <var_info:MDeprecationInfo> */
4938 var_info->attrs[COLOR_mdoc__MDeprecationInfo___mdoc].val = var75; /* _mdoc on <var_info:MDeprecationInfo> */
4939 RET_LABEL76:(void)0;
4940 }
4941 }
4942 } else {
4943 }
4944 {
4945 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
4946 var79 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
4947 if (unlikely(var79 == NULL)) {
4948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4949 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
4950 show_backtrace(1);
4951 }
4952 var77 = var79;
4953 RET_LABEL78:(void)0;
4954 }
4955 }
4956 {
4957 { /* Inline mdoc#MEntity#deprecation= (var77,var_info) on <var77:MProperty> */
4958 var77->attrs[COLOR_mdoc__MEntity___deprecation].val = var_info; /* _deprecation on <var77:MProperty> */
4959 RET_LABEL80:(void)0;
4960 }
4961 }
4962 }
4963 } else {
4964 }
4965 RET_LABEL:;
4966 }
4967 /* method modelize_property#APropdef#set_doc for (self: Object, MPropDef, ModelBuilder) */
4968 void VIRTUAL_modelize_property__APropdef__set_doc(val* self, val* p0, val* p1) {
4969 modelize_property__APropdef__set_doc(self, p0, p1); /* Direct call modelize_property#APropdef#set_doc on <self:Object(APropdef)>*/
4970 RET_LABEL:;
4971 }
4972 /* method modelize_property#APropdef#check_redef_property_visibility for (self: APropdef, ModelBuilder, nullable AVisibility, MProperty) */
4973 void modelize_property__APropdef__check_redef_property_visibility(val* self, val* p0, val* p1, val* p2) {
4974 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4975 val* var_nvisibility /* var nvisibility: nullable AVisibility */;
4976 val* var_mprop /* var mprop: MProperty */;
4977 val* var /* : null */;
4978 short int var1 /* : Bool */;
4979 short int var2 /* : Bool */;
4980 val* var_other /* var other: nullable Object */;
4981 short int var4 /* : Bool */;
4982 short int var6 /* : Bool */;
4983 val* var7 /* : MVisibility */;
4984 val* var_mvisibility /* var mvisibility: MVisibility */;
4985 short int var8 /* : Bool */;
4986 val* var9 /* : MVisibility */;
4987 val* var11 /* : MVisibility */;
4988 short int var12 /* : Bool */;
4989 short int var13 /* : Bool */;
4990 val* var_other15 /* var other: nullable Object */;
4991 short int var16 /* : Bool */;
4992 short int var17 /* : Bool */;
4993 short int var18 /* : Bool */;
4994 short int var_ /* var : Bool */;
4995 val* var19 /* : MVisibility */;
4996 short int var20 /* : Bool */;
4997 short int var21 /* : Bool */;
4998 short int var23 /* : Bool */;
4999 short int var24 /* : Bool */;
5000 short int var25 /* : Bool */;
5001 static val* varonce;
5002 val* var26 /* : String */;
5003 char* var27 /* : NativeString */;
5004 long var28 /* : Int */;
5005 val* var29 /* : FlatString */;
5006 val* var30 /* : MVisibility */;
5007 val* var32 /* : MVisibility */;
5008 static val* varonce33;
5009 val* var34 /* : String */;
5010 char* var35 /* : NativeString */;
5011 long var36 /* : Int */;
5012 val* var37 /* : FlatString */;
5013 val* var38 /* : Array[Object] */;
5014 long var39 /* : Int */;
5015 val* var40 /* : NativeArray[Object] */;
5016 val* var41 /* : String */;
5017 var_modelbuilder = p0;
5018 var_nvisibility = p1;
5019 var_mprop = p2;
5020 var = NULL;
5021 if (var_nvisibility == NULL) {
5022 var1 = 1; /* is null */
5023 } else {
5024 var1 = 0; /* arg is null but recv is not */
5025 }
5026 if (0) {
5027 { /* Inline kernel#Object#== (var_nvisibility,var) on <var_nvisibility:nullable AVisibility> */
5028 var_other = var;
5029 {
5030 { /* Inline kernel#Object#is_same_instance (var_nvisibility,var_other) on <var_nvisibility:nullable AVisibility(AVisibility)> */
5031 var6 = var_nvisibility == var_other;
5032 var4 = var6;
5033 goto RET_LABEL5;
5034 RET_LABEL5:(void)0;
5035 }
5036 }
5037 var2 = var4;
5038 goto RET_LABEL3;
5039 RET_LABEL3:(void)0;
5040 }
5041 var1 = var2;
5042 }
5043 if (var1){
5044 goto RET_LABEL;
5045 } else {
5046 }
5047 {
5048 var7 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
5049 }
5050 var_mvisibility = var7;
5051 {
5052 { /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
5053 var11 = var_mprop->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
5054 if (unlikely(var11 == NULL)) {
5055 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
5056 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
5057 show_backtrace(1);
5058 }
5059 var9 = var11;
5060 RET_LABEL10:(void)0;
5061 }
5062 }
5063 {
5064 { /* Inline kernel#Object#!= (var_mvisibility,var9) on <var_mvisibility:MVisibility> */
5065 var_other15 = var9;
5066 {
5067 var17 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var_other15) /* == on <var_mvisibility:MVisibility>*/;
5068 var16 = var17;
5069 }
5070 var18 = !var16;
5071 var13 = var18;
5072 goto RET_LABEL14;
5073 RET_LABEL14:(void)0;
5074 }
5075 var12 = var13;
5076 }
5077 var_ = var12;
5078 if (var12){
5079 {
5080 var19 = model_base__Object__public_visibility(self);
5081 }
5082 {
5083 { /* Inline kernel#Object#!= (var_mvisibility,var19) on <var_mvisibility:MVisibility> */
5084 var_other15 = var19;
5085 {
5086 var24 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var_other15) /* == on <var_mvisibility:MVisibility>*/;
5087 var23 = var24;
5088 }
5089 var25 = !var23;
5090 var21 = var25;
5091 goto RET_LABEL22;
5092 RET_LABEL22:(void)0;
5093 }
5094 var20 = var21;
5095 }
5096 var8 = var20;
5097 } else {
5098 var8 = var_;
5099 }
5100 if (var8){
5101 if (varonce) {
5102 var26 = varonce;
5103 } else {
5104 var27 = "Error: redefinition changed the visibility from a ";
5105 var28 = 50;
5106 var29 = string__NativeString__to_s_with_length(var27, var28);
5107 var26 = var29;
5108 varonce = var26;
5109 }
5110 {
5111 { /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
5112 var32 = var_mprop->attrs[COLOR_model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
5113 if (unlikely(var32 == NULL)) {
5114 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
5115 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1630);
5116 show_backtrace(1);
5117 }
5118 var30 = var32;
5119 RET_LABEL31:(void)0;
5120 }
5121 }
5122 if (varonce33) {
5123 var34 = varonce33;
5124 } else {
5125 var35 = " to a ";
5126 var36 = 6;
5127 var37 = string__NativeString__to_s_with_length(var35, var36);
5128 var34 = var37;
5129 varonce33 = var34;
5130 }
5131 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
5132 { /* var38 = array_instance Array[Object] */
5133 var39 = 4;
5134 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
5135 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var26;
5136 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var30;
5137 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34;
5138 ((struct instance_array__NativeArray*)var40)->values[3] = (val*) var_mvisibility;
5139 {
5140 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
5141 }
5142 }
5143 {
5144 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
5145 }
5146 {
5147 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nvisibility, var41); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
5148 }
5149 } else {
5150 }
5151 RET_LABEL:;
5152 }
5153 /* method modelize_property#APropdef#check_redef_property_visibility for (self: Object, ModelBuilder, nullable AVisibility, MProperty) */
5154 void VIRTUAL_modelize_property__APropdef__check_redef_property_visibility(val* self, val* p0, val* p1, val* p2) {
5155 modelize_property__APropdef__check_redef_property_visibility(self, p0, p1, p2); /* Direct call modelize_property#APropdef#check_redef_property_visibility on <self:Object(APropdef)>*/
5156 RET_LABEL:;
5157 }
5158 /* method modelize_property#APropdef#check_redef_keyword for (self: APropdef, ModelBuilder, MClassDef, nullable Token, Bool, MProperty): Bool */
5159 short int modelize_property__APropdef__check_redef_keyword(val* self, val* p0, val* p1, val* p2, short int p3, val* p4) {
5160 short int var /* : Bool */;
5161 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
5162 val* var_mclassdef /* var mclassdef: MClassDef */;
5163 val* var_kwredef /* var kwredef: nullable Token */;
5164 short int var_need_redef /* var need_redef: Bool */;
5165 val* var_mprop /* var mprop: MProperty */;
5166 val* var1 /* : Map[MProperty, APropdef] */;
5167 val* var3 /* : Map[MProperty, APropdef] */;
5168 short int var4 /* : Bool */;
5169 static val* varonce;
5170 val* var5 /* : String */;
5171 char* var6 /* : NativeString */;
5172 long var7 /* : Int */;
5173 val* var8 /* : FlatString */;
5174 static val* varonce9;
5175 val* var10 /* : String */;
5176 char* var11 /* : NativeString */;
5177 long var12 /* : Int */;
5178 val* var13 /* : FlatString */;
5179 val* var14 /* : MClass */;
5180 val* var16 /* : MClass */;
5181 static val* varonce17;
5182 val* var18 /* : String */;
5183 char* var19 /* : NativeString */;
5184 long var20 /* : Int */;
5185 val* var21 /* : FlatString */;
5186 val* var22 /* : Map[MProperty, APropdef] */;
5187 val* var24 /* : Map[MProperty, APropdef] */;
5188 val* var25 /* : nullable Object */;
5189 val* var26 /* : Location */;
5190 val* var28 /* : Location */;
5191 long var29 /* : Int */;
5192 long var31 /* : Int */;
5193 static val* varonce32;
5194 val* var33 /* : String */;
5195 char* var34 /* : NativeString */;
5196 long var35 /* : Int */;
5197 val* var36 /* : FlatString */;
5198 val* var37 /* : Array[Object] */;
5199 long var38 /* : Int */;
5200 val* var39 /* : NativeArray[Object] */;
5201 val* var40 /* : Object */;
5202 val* var41 /* : String */;
5203 short int var42 /* : Bool */;
5204 short int var43 /* : Bool */;
5205 short int var44 /* : Bool */;
5206 int cltype;
5207 int idtype;
5208 short int var_ /* var : Bool */;
5209 short int var45 /* : Bool */;
5210 short int var47 /* : Bool */;
5211 val* var48 /* : nullable ANode */;
5212 val* var50 /* : nullable ANode */;
5213 short int var51 /* : Bool */;
5214 int cltype52;
5215 int idtype53;
5216 short int var54 /* : Bool */;
5217 short int var55 /* : Bool */;
5218 short int var57 /* : Bool */;
5219 short int var58 /* : Bool */;
5220 short int var59 /* : Bool */;
5221 short int var61 /* : Bool */;
5222 static val* varonce62;
5223 val* var63 /* : String */;
5224 char* var64 /* : NativeString */;
5225 long var65 /* : Int */;
5226 val* var66 /* : FlatString */;
5227 static val* varonce67;
5228 val* var68 /* : String */;
5229 char* var69 /* : NativeString */;
5230 long var70 /* : Int */;
5231 val* var71 /* : FlatString */;
5232 val* var72 /* : Array[Object] */;
5233 long var73 /* : Int */;
5234 val* var74 /* : NativeArray[Object] */;
5235 val* var75 /* : String */;
5236 static val* varonce76;
5237 val* var77 /* : String */;
5238 char* var78 /* : NativeString */;
5239 long var79 /* : Int */;
5240 val* var80 /* : FlatString */;
5241 static val* varonce81;
5242 val* var82 /* : String */;
5243 char* var83 /* : NativeString */;
5244 long var84 /* : Int */;
5245 val* var85 /* : FlatString */;
5246 val* var86 /* : Array[Object] */;
5247 long var87 /* : Int */;
5248 val* var88 /* : NativeArray[Object] */;
5249 val* var89 /* : String */;
5250 short int var90 /* : Bool */;
5251 val* var91 /* : null */;
5252 short int var92 /* : Bool */;
5253 short int var93 /* : Bool */;
5254 val* var_other /* var other: nullable Object */;
5255 short int var95 /* : Bool */;
5256 short int var97 /* : Bool */;
5257 static val* varonce98;
5258 val* var99 /* : String */;
5259 char* var100 /* : NativeString */;
5260 long var101 /* : Int */;
5261 val* var102 /* : FlatString */;
5262 val* var103 /* : MClass */;
5263 val* var105 /* : MClass */;
5264 static val* varonce106;
5265 val* var107 /* : String */;
5266 char* var108 /* : NativeString */;
5267 long var109 /* : Int */;
5268 val* var110 /* : FlatString */;
5269 val* var111 /* : String */;
5270 val* var113 /* : String */;
5271 static val* varonce114;
5272 val* var115 /* : String */;
5273 char* var116 /* : NativeString */;
5274 long var117 /* : Int */;
5275 val* var118 /* : FlatString */;
5276 val* var119 /* : Array[Object] */;
5277 long var120 /* : Int */;
5278 val* var121 /* : NativeArray[Object] */;
5279 val* var122 /* : String */;
5280 short int var123 /* : Bool */;
5281 short int var124 /* : Bool */;
5282 static val* varonce125;
5283 val* var126 /* : String */;
5284 char* var127 /* : NativeString */;
5285 long var128 /* : Int */;
5286 val* var129 /* : FlatString */;
5287 val* var130 /* : MClass */;
5288 val* var132 /* : MClass */;
5289 static val* varonce133;
5290 val* var134 /* : String */;
5291 char* var135 /* : NativeString */;
5292 long var136 /* : Int */;
5293 val* var137 /* : FlatString */;
5294 val* var138 /* : String */;
5295 val* var140 /* : String */;
5296 static val* varonce141;
5297 val* var142 /* : String */;
5298 char* var143 /* : NativeString */;
5299 long var144 /* : Int */;
5300 val* var145 /* : FlatString */;
5301 val* var146 /* : Array[Object] */;
5302 long var147 /* : Int */;
5303 val* var148 /* : NativeArray[Object] */;
5304 val* var149 /* : String */;
5305 short int var150 /* : Bool */;
5306 short int var151 /* : Bool */;
5307 var_modelbuilder = p0;
5308 var_mclassdef = p1;
5309 var_kwredef = p2;
5310 var_need_redef = p3;
5311 var_mprop = p4;
5312 {
5313 { /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
5314 var3 = var_mclassdef->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
5315 if (unlikely(var3 == NULL)) {
5316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
5317 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
5318 show_backtrace(1);
5319 }
5320 var1 = var3;
5321 RET_LABEL2:(void)0;
5322 }
5323 }
5324 {
5325 var4 = abstract_collection__MapRead__has_key(var1, var_mprop);
5326 }
5327 if (var4){
5328 if (varonce) {
5329 var5 = varonce;
5330 } else {
5331 var6 = "Error: A property ";
5332 var7 = 18;
5333 var8 = string__NativeString__to_s_with_length(var6, var7);
5334 var5 = var8;
5335 varonce = var5;
5336 }
5337 if (varonce9) {
5338 var10 = varonce9;
5339 } else {
5340 var11 = " is already defined in class ";
5341 var12 = 29;
5342 var13 = string__NativeString__to_s_with_length(var11, var12);
5343 var10 = var13;
5344 varonce9 = var10;
5345 }
5346 {
5347 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
5348 var16 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
5349 if (unlikely(var16 == NULL)) {
5350 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5351 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
5352 show_backtrace(1);
5353 }
5354 var14 = var16;
5355 RET_LABEL15:(void)0;
5356 }
5357 }
5358 if (varonce17) {
5359 var18 = varonce17;
5360 } else {
5361 var19 = " at line ";
5362 var20 = 9;
5363 var21 = string__NativeString__to_s_with_length(var19, var20);
5364 var18 = var21;
5365 varonce17 = var18;
5366 }
5367 {
5368 { /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
5369 var24 = var_mclassdef->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
5370 if (unlikely(var24 == NULL)) {
5371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
5372 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
5373 show_backtrace(1);
5374 }
5375 var22 = var24;
5376 RET_LABEL23:(void)0;
5377 }
5378 }
5379 {
5380 var25 = ((val* (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var22, var_mprop) /* [] on <var22:Map[MProperty, APropdef]>*/;
5381 }
5382 {
5383 { /* Inline parser_nodes#ANode#location (var25) on <var25:nullable Object(APropdef)> */
5384 var28 = var25->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var25:nullable Object(APropdef)> */
5385 if (unlikely(var28 == NULL)) {
5386 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
5387 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
5388 show_backtrace(1);
5389 }
5390 var26 = var28;
5391 RET_LABEL27:(void)0;
5392 }
5393 }
5394 {
5395 { /* Inline location#Location#line_start (var26) on <var26:Location> */
5396 var31 = var26->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var26:Location> */
5397 var29 = var31;
5398 RET_LABEL30:(void)0;
5399 }
5400 }
5401 if (varonce32) {
5402 var33 = varonce32;
5403 } else {
5404 var34 = ".";
5405 var35 = 1;
5406 var36 = string__NativeString__to_s_with_length(var34, var35);
5407 var33 = var36;
5408 varonce32 = var33;
5409 }
5410 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
5411 { /* var37 = array_instance Array[Object] */
5412 var38 = 7;
5413 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
5414 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var5;
5415 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_mprop;
5416 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var10;
5417 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var14;
5418 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var18;
5419 var40 = BOX_kernel__Int(var29); /* autobox from Int to Object */
5420 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var40;
5421 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var33;
5422 {
5423 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
5424 }
5425 }
5426 {
5427 var41 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
5428 }
5429 {
5430 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var41); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
5431 }
5432 var42 = 0;
5433 var = var42;
5434 goto RET_LABEL;
5435 } else {
5436 }
5437 /* <var_mprop:MProperty> isa MMethod */
5438 cltype = type_model__MMethod.color;
5439 idtype = type_model__MMethod.id;
5440 if(cltype >= var_mprop->type->table_size) {
5441 var44 = 0;
5442 } else {
5443 var44 = var_mprop->type->type_table[cltype] == idtype;
5444 }
5445 var_ = var44;
5446 if (var44){
5447 {
5448 { /* Inline model#MMethod#is_toplevel (var_mprop) on <var_mprop:MProperty(MMethod)> */
5449 var47 = var_mprop->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mprop:MProperty(MMethod)> */
5450 var45 = var47;
5451 RET_LABEL46:(void)0;
5452 }
5453 }
5454 {
5455 { /* Inline parser_nodes#ANode#parent (self) on <self:APropdef> */
5456 var50 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:APropdef> */
5457 var48 = var50;
5458 RET_LABEL49:(void)0;
5459 }
5460 }
5461 /* <var48:nullable ANode> isa ATopClassdef */
5462 cltype52 = type_parser_nodes__ATopClassdef.color;
5463 idtype53 = type_parser_nodes__ATopClassdef.id;
5464 if(var48 == NULL) {
5465 var51 = 0;
5466 } else {
5467 if(cltype52 >= var48->type->table_size) {
5468 var51 = 0;
5469 } else {
5470 var51 = var48->type->type_table[cltype52] == idtype53;
5471 }
5472 }
5473 {
5474 { /* Inline kernel#Bool#!= (var45,var51) on <var45:Bool> */
5475 var57 = var45 == var51;
5476 var58 = !var57;
5477 var55 = var58;
5478 goto RET_LABEL56;
5479 RET_LABEL56:(void)0;
5480 }
5481 var54 = var55;
5482 }
5483 var43 = var54;
5484 } else {
5485 var43 = var_;
5486 }
5487 if (var43){
5488 {
5489 { /* Inline model#MMethod#is_toplevel (var_mprop) on <var_mprop:MProperty(MMethod)> */
5490 var61 = var_mprop->attrs[COLOR_model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mprop:MProperty(MMethod)> */
5491 var59 = var61;
5492 RET_LABEL60:(void)0;
5493 }
5494 }
5495 if (var59){
5496 if (varonce62) {
5497 var63 = varonce62;
5498 } else {
5499 var64 = "Error: ";
5500 var65 = 7;
5501 var66 = string__NativeString__to_s_with_length(var64, var65);
5502 var63 = var66;
5503 varonce62 = var63;
5504 }
5505 if (varonce67) {
5506 var68 = varonce67;
5507 } else {
5508 var69 = " is a top level method.";
5509 var70 = 23;
5510 var71 = string__NativeString__to_s_with_length(var69, var70);
5511 var68 = var71;
5512 varonce67 = var68;
5513 }
5514 var72 = NEW_array__Array(&type_array__Arraykernel__Object);
5515 { /* var72 = array_instance Array[Object] */
5516 var73 = 3;
5517 var74 = NEW_array__NativeArray(var73, &type_array__NativeArraykernel__Object);
5518 ((struct instance_array__NativeArray*)var74)->values[0] = (val*) var63;
5519 ((struct instance_array__NativeArray*)var74)->values[1] = (val*) var_mprop;
5520 ((struct instance_array__NativeArray*)var74)->values[2] = (val*) var68;
5521 {
5522 ((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Object]>*/;
5523 }
5524 }
5525 {
5526 var75 = ((val* (*)(val*))(var72->class->vft[COLOR_string__Object__to_s]))(var72) /* to_s on <var72:Array[Object]>*/;
5527 }
5528 {
5529 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var75); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
5530 }
5531 } else {
5532 if (varonce76) {
5533 var77 = varonce76;
5534 } else {
5535 var78 = "Error: ";
5536 var79 = 7;
5537 var80 = string__NativeString__to_s_with_length(var78, var79);
5538 var77 = var80;
5539 varonce76 = var77;
5540 }
5541 if (varonce81) {
5542 var82 = varonce81;
5543 } else {
5544 var83 = " is not a top level method.";
5545 var84 = 27;
5546 var85 = string__NativeString__to_s_with_length(var83, var84);
5547 var82 = var85;
5548 varonce81 = var82;
5549 }
5550 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
5551 { /* var86 = array_instance Array[Object] */
5552 var87 = 3;
5553 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
5554 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var77;
5555 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var_mprop;
5556 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var82;
5557 {
5558 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
5559 }
5560 }
5561 {
5562 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
5563 }
5564 {
5565 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var89); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
5566 }
5567 }
5568 var90 = 0;
5569 var = var90;
5570 goto RET_LABEL;
5571 } else {
5572 }
5573 var91 = NULL;
5574 if (var_kwredef == NULL) {
5575 var92 = 1; /* is null */
5576 } else {
5577 var92 = 0; /* arg is null but recv is not */
5578 }
5579 if (0) {
5580 { /* Inline kernel#Object#== (var_kwredef,var91) on <var_kwredef:nullable Token> */
5581 var_other = var91;
5582 {
5583 { /* Inline kernel#Object#is_same_instance (var_kwredef,var_other) on <var_kwredef:nullable Token(Token)> */
5584 var97 = var_kwredef == var_other;
5585 var95 = var97;
5586 goto RET_LABEL96;
5587 RET_LABEL96:(void)0;
5588 }
5589 }
5590 var93 = var95;
5591 goto RET_LABEL94;
5592 RET_LABEL94:(void)0;
5593 }
5594 var92 = var93;
5595 }
5596 if (var92){
5597 if (var_need_redef){
5598 if (varonce98) {
5599 var99 = varonce98;
5600 } else {
5601 var100 = "Redef error: ";
5602 var101 = 13;
5603 var102 = string__NativeString__to_s_with_length(var100, var101);
5604 var99 = var102;
5605 varonce98 = var99;
5606 }
5607 {
5608 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
5609 var105 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
5610 if (unlikely(var105 == NULL)) {
5611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5612 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
5613 show_backtrace(1);
5614 }
5615 var103 = var105;
5616 RET_LABEL104:(void)0;
5617 }
5618 }
5619 if (varonce106) {
5620 var107 = varonce106;
5621 } else {
5622 var108 = "::";
5623 var109 = 2;
5624 var110 = string__NativeString__to_s_with_length(var108, var109);
5625 var107 = var110;
5626 varonce106 = var107;
5627 }
5628 {
5629 { /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
5630 var113 = var_mprop->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
5631 if (unlikely(var113 == NULL)) {
5632 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5633 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
5634 show_backtrace(1);
5635 }
5636 var111 = var113;
5637 RET_LABEL112:(void)0;
5638 }
5639 }
5640 if (varonce114) {
5641 var115 = varonce114;
5642 } else {
5643 var116 = " is an inherited property. To redefine it, add the redef keyword.";
5644 var117 = 65;
5645 var118 = string__NativeString__to_s_with_length(var116, var117);
5646 var115 = var118;
5647 varonce114 = var115;
5648 }
5649 var119 = NEW_array__Array(&type_array__Arraykernel__Object);
5650 { /* var119 = array_instance Array[Object] */
5651 var120 = 5;
5652 var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object);
5653 ((struct instance_array__NativeArray*)var121)->values[0] = (val*) var99;
5654 ((struct instance_array__NativeArray*)var121)->values[1] = (val*) var103;
5655 ((struct instance_array__NativeArray*)var121)->values[2] = (val*) var107;
5656 ((struct instance_array__NativeArray*)var121)->values[3] = (val*) var111;
5657 ((struct instance_array__NativeArray*)var121)->values[4] = (val*) var115;
5658 {
5659 ((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on <var119:Array[Object]>*/;
5660 }
5661 }
5662 {
5663 var122 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
5664 }
5665 {
5666 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var122); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
5667 }
5668 var123 = 0;
5669 var = var123;
5670 goto RET_LABEL;
5671 } else {
5672 }
5673 } else {
5674 var124 = !var_need_redef;
5675 if (var124){
5676 if (varonce125) {
5677 var126 = varonce125;
5678 } else {
5679 var127 = "Error: No property ";
5680 var128 = 19;
5681 var129 = string__NativeString__to_s_with_length(var127, var128);
5682 var126 = var129;
5683 varonce125 = var126;
5684 }
5685 {
5686 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
5687 var132 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
5688 if (unlikely(var132 == NULL)) {
5689 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5690 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
5691 show_backtrace(1);
5692 }
5693 var130 = var132;
5694 RET_LABEL131:(void)0;
5695 }
5696 }
5697 if (varonce133) {
5698 var134 = varonce133;
5699 } else {
5700 var135 = "::";
5701 var136 = 2;
5702 var137 = string__NativeString__to_s_with_length(var135, var136);
5703 var134 = var137;
5704 varonce133 = var134;
5705 }
5706 {
5707 { /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
5708 var140 = var_mprop->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
5709 if (unlikely(var140 == NULL)) {
5710 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5711 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
5712 show_backtrace(1);
5713 }
5714 var138 = var140;
5715 RET_LABEL139:(void)0;
5716 }
5717 }
5718 if (varonce141) {
5719 var142 = varonce141;
5720 } else {
5721 var143 = " is inherited. Remove the redef keyword to define a new property.";
5722 var144 = 65;
5723 var145 = string__NativeString__to_s_with_length(var143, var144);
5724 var142 = var145;
5725 varonce141 = var142;
5726 }
5727 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
5728 { /* var146 = array_instance Array[Object] */
5729 var147 = 5;
5730 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
5731 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var126;
5732 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var130;
5733 ((struct instance_array__NativeArray*)var148)->values[2] = (val*) var134;
5734 ((struct instance_array__NativeArray*)var148)->values[3] = (val*) var138;
5735 ((struct instance_array__NativeArray*)var148)->values[4] = (val*) var142;
5736 {
5737 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
5738 }
5739 }
5740 {
5741 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
5742 }
5743 {
5744 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var149); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
5745 }
5746 var150 = 0;
5747 var = var150;
5748 goto RET_LABEL;
5749 } else {
5750 }
5751 }
5752 var151 = 1;
5753 var = var151;
5754 goto RET_LABEL;
5755 RET_LABEL:;
5756 return var;
5757 }
5758 /* method modelize_property#APropdef#check_redef_keyword for (self: Object, ModelBuilder, MClassDef, nullable Token, Bool, MProperty): Bool */
5759 short int VIRTUAL_modelize_property__APropdef__check_redef_keyword(val* self, val* p0, val* p1, val* p2, short int p3, val* p4) {
5760 short int var /* : Bool */;
5761 short int var1 /* : Bool */;
5762 var1 = modelize_property__APropdef__check_redef_keyword(self, p0, p1, p2, p3, p4);
5763 var = var1;
5764 RET_LABEL:;
5765 return var;
5766 }
5767 /* method modelize_property#ASignature#is_visited= for (self: ASignature, Bool) */
5768 void modelize_property__ASignature__is_visited_61d(val* self, short int p0) {
5769 self->attrs[COLOR_modelize_property__ASignature___is_visited].s = p0; /* _is_visited on <self:ASignature> */
5770 RET_LABEL:;
5771 }
5772 /* method modelize_property#ASignature#is_visited= for (self: Object, Bool) */
5773 void VIRTUAL_modelize_property__ASignature__is_visited_61d(val* self, short int p0) {
5774 { /* Inline modelize_property#ASignature#is_visited= (self,p0) on <self:Object(ASignature)> */
5775 self->attrs[COLOR_modelize_property__ASignature___is_visited].s = p0; /* _is_visited on <self:Object(ASignature)> */
5776 RET_LABEL1:(void)0;
5777 }
5778 RET_LABEL:;
5779 }
5780 /* method modelize_property#ASignature#param_names for (self: ASignature): Array[String] */
5781 val* modelize_property__ASignature__param_names(val* self) {
5782 val* var /* : Array[String] */;
5783 val* var1 /* : Array[String] */;
5784 var1 = self->attrs[COLOR_modelize_property__ASignature___param_names].val; /* _param_names on <self:ASignature> */
5785 if (unlikely(var1 == NULL)) {
5786 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
5787 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 415);
5788 show_backtrace(1);
5789 }
5790 var = var1;
5791 RET_LABEL:;
5792 return var;
5793 }
5794 /* method modelize_property#ASignature#param_names for (self: Object): Array[String] */
5795 val* VIRTUAL_modelize_property__ASignature__param_names(val* self) {
5796 val* var /* : Array[String] */;
5797 val* var1 /* : Array[String] */;
5798 val* var3 /* : Array[String] */;
5799 { /* Inline modelize_property#ASignature#param_names (self) on <self:Object(ASignature)> */
5800 var3 = self->attrs[COLOR_modelize_property__ASignature___param_names].val; /* _param_names on <self:Object(ASignature)> */
5801 if (unlikely(var3 == NULL)) {
5802 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
5803 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 415);
5804 show_backtrace(1);
5805 }
5806 var1 = var3;
5807 RET_LABEL2:(void)0;
5808 }
5809 var = var1;
5810 RET_LABEL:;
5811 return var;
5812 }
5813 /* method modelize_property#ASignature#param_types for (self: ASignature): Array[MType] */
5814 val* modelize_property__ASignature__param_types(val* self) {
5815 val* var /* : Array[MType] */;
5816 val* var1 /* : Array[MType] */;
5817 var1 = self->attrs[COLOR_modelize_property__ASignature___param_types].val; /* _param_types on <self:ASignature> */
5818 if (unlikely(var1 == NULL)) {
5819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
5820 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 418);
5821 show_backtrace(1);
5822 }
5823 var = var1;
5824 RET_LABEL:;
5825 return var;
5826 }
5827 /* method modelize_property#ASignature#param_types for (self: Object): Array[MType] */
5828 val* VIRTUAL_modelize_property__ASignature__param_types(val* self) {
5829 val* var /* : Array[MType] */;
5830 val* var1 /* : Array[MType] */;
5831 val* var3 /* : Array[MType] */;
5832 { /* Inline modelize_property#ASignature#param_types (self) on <self:Object(ASignature)> */
5833 var3 = self->attrs[COLOR_modelize_property__ASignature___param_types].val; /* _param_types on <self:Object(ASignature)> */
5834 if (unlikely(var3 == NULL)) {
5835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
5836 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 418);
5837 show_backtrace(1);
5838 }
5839 var1 = var3;
5840 RET_LABEL2:(void)0;
5841 }
5842 var = var1;
5843 RET_LABEL:;
5844 return var;
5845 }
5846 /* method modelize_property#ASignature#vararg_rank for (self: ASignature): Int */
5847 long modelize_property__ASignature__vararg_rank(val* self) {
5848 long var /* : Int */;
5849 long var1 /* : Int */;
5850 var1 = self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
5851 var = var1;
5852 RET_LABEL:;
5853 return var;
5854 }
5855 /* method modelize_property#ASignature#vararg_rank for (self: Object): Int */
5856 long VIRTUAL_modelize_property__ASignature__vararg_rank(val* self) {
5857 long var /* : Int */;
5858 long var1 /* : Int */;
5859 long var3 /* : Int */;
5860 { /* Inline modelize_property#ASignature#vararg_rank (self) on <self:Object(ASignature)> */
5861 var3 = self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:Object(ASignature)> */
5862 var1 = var3;
5863 RET_LABEL2:(void)0;
5864 }
5865 var = var1;
5866 RET_LABEL:;
5867 return var;
5868 }
5869 /* method modelize_property#ASignature#vararg_rank= for (self: ASignature, Int) */
5870 void modelize_property__ASignature__vararg_rank_61d(val* self, long p0) {
5871 self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l = p0; /* _vararg_rank on <self:ASignature> */
5872 RET_LABEL:;
5873 }
5874 /* method modelize_property#ASignature#vararg_rank= for (self: Object, Int) */
5875 void VIRTUAL_modelize_property__ASignature__vararg_rank_61d(val* self, long p0) {
5876 { /* Inline modelize_property#ASignature#vararg_rank= (self,p0) on <self:Object(ASignature)> */
5877 self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l = p0; /* _vararg_rank on <self:Object(ASignature)> */
5878 RET_LABEL1:(void)0;
5879 }
5880 RET_LABEL:;
5881 }
5882 /* method modelize_property#ASignature#ret_type for (self: ASignature): nullable MType */
5883 val* modelize_property__ASignature__ret_type(val* self) {
5884 val* var /* : nullable MType */;
5885 val* var1 /* : nullable MType */;
5886 var1 = self->attrs[COLOR_modelize_property__ASignature___ret_type].val; /* _ret_type on <self:ASignature> */
5887 var = var1;
5888 RET_LABEL:;
5889 return var;
5890 }
5891 /* method modelize_property#ASignature#ret_type for (self: Object): nullable MType */
5892 val* VIRTUAL_modelize_property__ASignature__ret_type(val* self) {
5893 val* var /* : nullable MType */;
5894 val* var1 /* : nullable MType */;
5895 val* var3 /* : nullable MType */;
5896 { /* Inline modelize_property#ASignature#ret_type (self) on <self:Object(ASignature)> */
5897 var3 = self->attrs[COLOR_modelize_property__ASignature___ret_type].val; /* _ret_type on <self:Object(ASignature)> */
5898 var1 = var3;
5899 RET_LABEL2:(void)0;
5900 }
5901 var = var1;
5902 RET_LABEL:;
5903 return var;
5904 }
5905 /* method modelize_property#ASignature#ret_type= for (self: ASignature, nullable MType) */
5906 void modelize_property__ASignature__ret_type_61d(val* self, val* p0) {
5907 self->attrs[COLOR_modelize_property__ASignature___ret_type].val = p0; /* _ret_type on <self:ASignature> */
5908 RET_LABEL:;
5909 }
5910 /* method modelize_property#ASignature#ret_type= for (self: Object, nullable MType) */
5911 void VIRTUAL_modelize_property__ASignature__ret_type_61d(val* self, val* p0) {
5912 { /* Inline modelize_property#ASignature#ret_type= (self,p0) on <self:Object(ASignature)> */
5913 self->attrs[COLOR_modelize_property__ASignature___ret_type].val = p0; /* _ret_type on <self:Object(ASignature)> */
5914 RET_LABEL1:(void)0;
5915 }
5916 RET_LABEL:;
5917 }
5918 /* method modelize_property#ASignature#visit_signature for (self: ASignature, ModelBuilder, MClassDef): Bool */
5919 short int modelize_property__ASignature__visit_signature(val* self, val* p0, val* p1) {
5920 short int var /* : Bool */;
5921 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
5922 val* var_mclassdef /* var mclassdef: MClassDef */;
5923 val* var1 /* : MModule */;
5924 val* var3 /* : MModule */;
5925 val* var_mmodule /* var mmodule: MModule */;
5926 val* var4 /* : Array[String] */;
5927 val* var6 /* : Array[String] */;
5928 val* var_param_names /* var param_names: Array[String] */;
5929 val* var7 /* : Array[MType] */;
5930 val* var9 /* : Array[MType] */;
5931 val* var_param_types /* var param_types: Array[MType] */;
5932 val* var10 /* : ANodes[AParam] */;
5933 val* var12 /* : ANodes[AParam] */;
5934 val* var_ /* var : ANodes[AParam] */;
5935 val* var13 /* : Iterator[ANode] */;
5936 val* var_14 /* var : Iterator[AParam] */;
5937 short int var15 /* : Bool */;
5938 val* var16 /* : nullable Object */;
5939 val* var_np /* var np: AParam */;
5940 val* var17 /* : TId */;
5941 val* var19 /* : TId */;
5942 val* var20 /* : String */;
5943 val* var21 /* : nullable AType */;
5944 val* var23 /* : nullable AType */;
5945 val* var_ntype /* var ntype: nullable AType */;
5946 val* var24 /* : null */;
5947 short int var25 /* : Bool */;
5948 short int var26 /* : Bool */;
5949 val* var_other /* var other: nullable Object */;
5950 short int var28 /* : Bool */;
5951 short int var29 /* : Bool */;
5952 short int var30 /* : Bool */;
5953 val* var31 /* : nullable MType */;
5954 val* var_mtype /* var mtype: nullable MType */;
5955 val* var32 /* : null */;
5956 short int var33 /* : Bool */;
5957 short int var34 /* : Bool */;
5958 val* var_other36 /* var other: nullable Object */;
5959 short int var37 /* : Bool */;
5960 short int var39 /* : Bool */;
5961 short int var40 /* : Bool */;
5962 long var41 /* : Int */;
5963 long var_i /* var i: Int */;
5964 long var42 /* : Int */;
5965 long var44 /* : Int */;
5966 long var45 /* : Int */;
5967 long var47 /* : Int */;
5968 long var48 /* : Int */;
5969 short int var50 /* : Bool */;
5970 int cltype;
5971 int idtype;
5972 const char* var_class_name;
5973 long var51 /* : Int */;
5974 long var_52 /* var : Int */;
5975 short int var53 /* : Bool */;
5976 short int var55 /* : Bool */;
5977 int cltype56;
5978 int idtype57;
5979 const char* var_class_name58;
5980 short int var59 /* : Bool */;
5981 long var60 /* : Int */;
5982 long var61 /* : Int */;
5983 val* var62 /* : nullable TDotdotdot */;
5984 val* var64 /* : nullable TDotdotdot */;
5985 val* var65 /* : null */;
5986 short int var66 /* : Bool */;
5987 short int var67 /* : Bool */;
5988 short int var69 /* : Bool */;
5989 short int var70 /* : Bool */;
5990 short int var71 /* : Bool */;
5991 long var72 /* : Int */;
5992 long var74 /* : Int */;
5993 long var75 /* : Int */;
5994 long var76 /* : Int */;
5995 long var78 /* : Int */;
5996 short int var79 /* : Bool */;
5997 short int var80 /* : Bool */;
5998 short int var82 /* : Bool */;
5999 short int var83 /* : Bool */;
6000 static val* varonce;
6001 val* var84 /* : String */;
6002 char* var85 /* : NativeString */;
6003 long var86 /* : Int */;
6004 val* var87 /* : FlatString */;
6005 long var88 /* : Int */;
6006 long var90 /* : Int */;
6007 val* var91 /* : nullable Object */;
6008 static val* varonce92;
6009 val* var93 /* : String */;
6010 char* var94 /* : NativeString */;
6011 long var95 /* : Int */;
6012 val* var96 /* : FlatString */;
6013 val* var97 /* : Array[Object] */;
6014 long var98 /* : Int */;
6015 val* var99 /* : NativeArray[Object] */;
6016 val* var100 /* : String */;
6017 short int var101 /* : Bool */;
6018 long var102 /* : Int */;
6019 long var104 /* : Int */;
6020 long var105 /* : Int */;
6021 long var106 /* : Int */;
6022 short int var108 /* : Bool */;
6023 int cltype109;
6024 int idtype110;
6025 const char* var_class_name111;
6026 long var112 /* : Int */;
6027 val* var116 /* : nullable AType */;
6028 val* var118 /* : nullable AType */;
6029 val* var_ntype119 /* var ntype: nullable AType */;
6030 val* var120 /* : null */;
6031 short int var121 /* : Bool */;
6032 short int var122 /* : Bool */;
6033 short int var124 /* : Bool */;
6034 short int var125 /* : Bool */;
6035 short int var126 /* : Bool */;
6036 val* var127 /* : nullable MType */;
6037 val* var129 /* : nullable MType */;
6038 val* var131 /* : nullable MType */;
6039 val* var132 /* : null */;
6040 short int var133 /* : Bool */;
6041 short int var134 /* : Bool */;
6042 short int var136 /* : Bool */;
6043 short int var138 /* : Bool */;
6044 short int var139 /* : Bool */;
6045 short int var140 /* : Bool */;
6046 short int var142 /* : Bool */;
6047 var_modelbuilder = p0;
6048 var_mclassdef = p1;
6049 {
6050 { /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
6051 var3 = var_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
6052 if (unlikely(var3 == NULL)) {
6053 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6054 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
6055 show_backtrace(1);
6056 }
6057 var1 = var3;
6058 RET_LABEL2:(void)0;
6059 }
6060 }
6061 var_mmodule = var1;
6062 {
6063 { /* Inline modelize_property#ASignature#param_names (self) on <self:ASignature> */
6064 var6 = self->attrs[COLOR_modelize_property__ASignature___param_names].val; /* _param_names on <self:ASignature> */
6065 if (unlikely(var6 == NULL)) {
6066 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
6067 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 415);
6068 show_backtrace(1);
6069 }
6070 var4 = var6;
6071 RET_LABEL5:(void)0;
6072 }
6073 }
6074 var_param_names = var4;
6075 {
6076 { /* Inline modelize_property#ASignature#param_types (self) on <self:ASignature> */
6077 var9 = self->attrs[COLOR_modelize_property__ASignature___param_types].val; /* _param_types on <self:ASignature> */
6078 if (unlikely(var9 == NULL)) {
6079 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
6080 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 418);
6081 show_backtrace(1);
6082 }
6083 var7 = var9;
6084 RET_LABEL8:(void)0;
6085 }
6086 }
6087 var_param_types = var7;
6088 {
6089 { /* Inline parser_nodes#ASignature#n_params (self) on <self:ASignature> */
6090 var12 = self->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
6091 if (unlikely(var12 == NULL)) {
6092 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
6093 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
6094 show_backtrace(1);
6095 }
6096 var10 = var12;
6097 RET_LABEL11:(void)0;
6098 }
6099 }
6100 var_ = var10;
6101 {
6102 var13 = parser_nodes__ANodes__iterator(var_);
6103 }
6104 var_14 = var13;
6105 for(;;) {
6106 {
6107 var15 = ((short int (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:Iterator[AParam]>*/;
6108 }
6109 if (var15){
6110 {
6111 var16 = ((val* (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__item]))(var_14) /* item on <var_14:Iterator[AParam]>*/;
6112 }
6113 var_np = var16;
6114 {
6115 { /* Inline parser_nodes#AParam#n_id (var_np) on <var_np:AParam> */
6116 var19 = var_np->attrs[COLOR_parser_nodes__AParam___n_id].val; /* _n_id on <var_np:AParam> */
6117 if (unlikely(var19 == NULL)) {
6118 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
6119 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1287);
6120 show_backtrace(1);
6121 }
6122 var17 = var19;
6123 RET_LABEL18:(void)0;
6124 }
6125 }
6126 {
6127 var20 = lexer_work__Token__text(var17);
6128 }
6129 {
6130 array__Array__add(var_param_names, var20); /* Direct call array#Array#add on <var_param_names:Array[String]>*/
6131 }
6132 {
6133 { /* Inline parser_nodes#AParam#n_type (var_np) on <var_np:AParam> */
6134 var23 = var_np->attrs[COLOR_parser_nodes__AParam___n_type].val; /* _n_type on <var_np:AParam> */
6135 var21 = var23;
6136 RET_LABEL22:(void)0;
6137 }
6138 }
6139 var_ntype = var21;
6140 var24 = NULL;
6141 if (var_ntype == NULL) {
6142 var25 = 0; /* is null */
6143 } else {
6144 var25 = 1; /* arg is null and recv is not */
6145 }
6146 if (0) {
6147 { /* Inline kernel#Object#!= (var_ntype,var24) on <var_ntype:nullable AType> */
6148 var_other = var24;
6149 {
6150 var29 = ((short int (*)(val*, val*))(var_ntype->class->vft[COLOR_kernel__Object___61d_61d]))(var_ntype, var_other) /* == on <var_ntype:nullable AType(AType)>*/;
6151 var28 = var29;
6152 }
6153 var30 = !var28;
6154 var26 = var30;
6155 goto RET_LABEL27;
6156 RET_LABEL27:(void)0;
6157 }
6158 var25 = var26;
6159 }
6160 if (var25){
6161 {
6162 var31 = modelize_class__ModelBuilder__resolve_mtype(var_modelbuilder, var_mmodule, var_mclassdef, var_ntype);
6163 }
6164 var_mtype = var31;
6165 var32 = NULL;
6166 if (var_mtype == NULL) {
6167 var33 = 1; /* is null */
6168 } else {
6169 var33 = 0; /* arg is null but recv is not */
6170 }
6171 if (0) {
6172 { /* Inline kernel#Object#== (var_mtype,var32) on <var_mtype:nullable MType> */
6173 var_other36 = var32;
6174 {
6175 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other36) on <var_mtype:nullable MType(MType)> */
6176 var39 = var_mtype == var_other36;
6177 var37 = var39;
6178 goto RET_LABEL38;
6179 RET_LABEL38:(void)0;
6180 }
6181 }
6182 var34 = var37;
6183 goto RET_LABEL35;
6184 RET_LABEL35:(void)0;
6185 }
6186 var33 = var34;
6187 }
6188 if (var33){
6189 var40 = 0;
6190 var = var40;
6191 goto RET_LABEL;
6192 } else {
6193 }
6194 var41 = 0;
6195 var_i = var41;
6196 {
6197 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
6198 var44 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
6199 var42 = var44;
6200 RET_LABEL43:(void)0;
6201 }
6202 }
6203 {
6204 { /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
6205 var47 = var_param_types->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
6206 var45 = var47;
6207 RET_LABEL46:(void)0;
6208 }
6209 }
6210 {
6211 { /* Inline kernel#Int#- (var42,var45) on <var42:Int> */
6212 /* Covariant cast for argument 0 (i) <var45:Int> isa OTHER */
6213 /* <var45:Int> isa OTHER */
6214 var50 = 1; /* easy <var45:Int> isa OTHER*/
6215 if (unlikely(!var50)) {
6216 var_class_name = type_kernel__Int.name;
6217 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6218 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
6219 show_backtrace(1);
6220 }
6221 var51 = var42 - var45;
6222 var48 = var51;
6223 goto RET_LABEL49;
6224 RET_LABEL49:(void)0;
6225 }
6226 }
6227 var_52 = var48;
6228 for(;;) {
6229 {
6230 { /* Inline kernel#Int#< (var_i,var_52) on <var_i:Int> */
6231 /* Covariant cast for argument 0 (i) <var_52:Int> isa OTHER */
6232 /* <var_52:Int> isa OTHER */
6233 var55 = 1; /* easy <var_52:Int> isa OTHER*/
6234 if (unlikely(!var55)) {
6235 var_class_name58 = type_kernel__Int.name;
6236 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
6237 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
6238 show_backtrace(1);
6239 }
6240 var59 = var_i < var_52;
6241 var53 = var59;
6242 goto RET_LABEL54;
6243 RET_LABEL54:(void)0;
6244 }
6245 }
6246 if (var53){
6247 {
6248 array__Array__add(var_param_types, var_mtype); /* Direct call array#Array#add on <var_param_types:Array[MType]>*/
6249 }
6250 var60 = 1;
6251 {
6252 var61 = kernel__Int__successor(var_i, var60);
6253 }
6254 var_i = var61;
6255 } else {
6256 goto BREAK_label;
6257 }
6258 }
6259 BREAK_label: (void)0;
6260 {
6261 { /* Inline parser_nodes#AParam#n_dotdotdot (var_np) on <var_np:AParam> */
6262 var64 = var_np->attrs[COLOR_parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <var_np:AParam> */
6263 var62 = var64;
6264 RET_LABEL63:(void)0;
6265 }
6266 }
6267 var65 = NULL;
6268 if (var62 == NULL) {
6269 var66 = 0; /* is null */
6270 } else {
6271 var66 = 1; /* arg is null and recv is not */
6272 }
6273 if (0) {
6274 { /* Inline kernel#Object#!= (var62,var65) on <var62:nullable TDotdotdot> */
6275 var_other = var65;
6276 {
6277 var70 = ((short int (*)(val*, val*))(var62->class->vft[COLOR_kernel__Object___61d_61d]))(var62, var_other) /* == on <var62:nullable TDotdotdot(TDotdotdot)>*/;
6278 var69 = var70;
6279 }
6280 var71 = !var69;
6281 var67 = var71;
6282 goto RET_LABEL68;
6283 RET_LABEL68:(void)0;
6284 }
6285 var66 = var67;
6286 }
6287 if (var66){
6288 {
6289 { /* Inline modelize_property#ASignature#vararg_rank (self) on <self:ASignature> */
6290 var74 = self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
6291 var72 = var74;
6292 RET_LABEL73:(void)0;
6293 }
6294 }
6295 var75 = 1;
6296 {
6297 { /* Inline kernel#Int#unary - (var75) on <var75:Int> */
6298 var78 = -var75;
6299 var76 = var78;
6300 goto RET_LABEL77;
6301 RET_LABEL77:(void)0;
6302 }
6303 }
6304 {
6305 { /* Inline kernel#Int#!= (var72,var76) on <var72:Int> */
6306 var82 = var72 == var76;
6307 var83 = !var82;
6308 var80 = var83;
6309 goto RET_LABEL81;
6310 RET_LABEL81:(void)0;
6311 }
6312 var79 = var80;
6313 }
6314 if (var79){
6315 if (varonce) {
6316 var84 = varonce;
6317 } else {
6318 var85 = "Error: ";
6319 var86 = 7;
6320 var87 = string__NativeString__to_s_with_length(var85, var86);
6321 var84 = var87;
6322 varonce = var84;
6323 }
6324 {
6325 { /* Inline modelize_property#ASignature#vararg_rank (self) on <self:ASignature> */
6326 var90 = self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
6327 var88 = var90;
6328 RET_LABEL89:(void)0;
6329 }
6330 }
6331 {
6332 var91 = array__Array___91d_93d(var_param_names, var88);
6333 }
6334 if (varonce92) {
6335 var93 = varonce92;
6336 } else {
6337 var94 = " is already a vararg";
6338 var95 = 20;
6339 var96 = string__NativeString__to_s_with_length(var94, var95);
6340 var93 = var96;
6341 varonce92 = var93;
6342 }
6343 var97 = NEW_array__Array(&type_array__Arraykernel__Object);
6344 { /* var97 = array_instance Array[Object] */
6345 var98 = 3;
6346 var99 = NEW_array__NativeArray(var98, &type_array__NativeArraykernel__Object);
6347 ((struct instance_array__NativeArray*)var99)->values[0] = (val*) var84;
6348 ((struct instance_array__NativeArray*)var99)->values[1] = (val*) var91;
6349 ((struct instance_array__NativeArray*)var99)->values[2] = (val*) var93;
6350 {
6351 ((void (*)(val*, val*, long))(var97->class->vft[COLOR_array__Array__with_native]))(var97, var99, var98) /* with_native on <var97:Array[Object]>*/;
6352 }
6353 }
6354 {
6355 var100 = ((val* (*)(val*))(var97->class->vft[COLOR_string__Object__to_s]))(var97) /* to_s on <var97:Array[Object]>*/;
6356 }
6357 {
6358 modelbuilder__ModelBuilder__error(var_modelbuilder, var_np, var100); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
6359 }
6360 var101 = 0;
6361 var = var101;
6362 goto RET_LABEL;
6363 } else {
6364 {
6365 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
6366 var104 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
6367 var102 = var104;
6368 RET_LABEL103:(void)0;
6369 }
6370 }
6371 var105 = 1;
6372 {
6373 { /* Inline kernel#Int#- (var102,var105) on <var102:Int> */
6374 /* Covariant cast for argument 0 (i) <var105:Int> isa OTHER */
6375 /* <var105:Int> isa OTHER */
6376 var108 = 1; /* easy <var105:Int> isa OTHER*/
6377 if (unlikely(!var108)) {
6378 var_class_name111 = type_kernel__Int.name;
6379 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name111);
6380 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
6381 show_backtrace(1);
6382 }
6383 var112 = var102 - var105;
6384 var106 = var112;
6385 goto RET_LABEL107;
6386 RET_LABEL107:(void)0;
6387 }
6388 }
6389 {
6390 { /* Inline modelize_property#ASignature#vararg_rank= (self,var106) on <self:ASignature> */
6391 self->attrs[COLOR_modelize_property__ASignature___vararg_rank].l = var106; /* _vararg_rank on <self:ASignature> */
6392 RET_LABEL113:(void)0;
6393 }
6394 }
6395 }
6396 } else {
6397 }
6398 } else {
6399 }
6400 {
6401 ((void (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__next]))(var_14) /* next on <var_14:Iterator[AParam]>*/;
6402 }
6403 } else {
6404 goto BREAK_label114;
6405 }
6406 }
6407 BREAK_label114: (void)0;
6408 {
6409 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:Iterator[AParam]> */
6410 RET_LABEL115:(void)0;
6411 }
6412 }
6413 {
6414 { /* Inline parser_nodes#ASignature#n_type (self) on <self:ASignature> */
6415 var118 = self->attrs[COLOR_parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
6416 var116 = var118;
6417 RET_LABEL117:(void)0;
6418 }
6419 }
6420 var_ntype119 = var116;
6421 var120 = NULL;
6422 if (var_ntype119 == NULL) {
6423 var121 = 0; /* is null */
6424 } else {
6425 var121 = 1; /* arg is null and recv is not */
6426 }
6427 if (0) {
6428 { /* Inline kernel#Object#!= (var_ntype119,var120) on <var_ntype119:nullable AType> */
6429 var_other = var120;
6430 {
6431 var125 = ((short int (*)(val*, val*))(var_ntype119->class->vft[COLOR_kernel__Object___61d_61d]))(var_ntype119, var_other) /* == on <var_ntype119:nullable AType(AType)>*/;
6432 var124 = var125;
6433 }
6434 var126 = !var124;
6435 var122 = var126;
6436 goto RET_LABEL123;
6437 RET_LABEL123:(void)0;
6438 }
6439 var121 = var122;
6440 }
6441 if (var121){
6442 {
6443 var127 = modelize_class__ModelBuilder__resolve_mtype(var_modelbuilder, var_mmodule, var_mclassdef, var_ntype119);
6444 }
6445 {
6446 { /* Inline modelize_property#ASignature#ret_type= (self,var127) on <self:ASignature> */
6447 self->attrs[COLOR_modelize_property__ASignature___ret_type].val = var127; /* _ret_type on <self:ASignature> */
6448 RET_LABEL128:(void)0;
6449 }
6450 }
6451 {
6452 { /* Inline modelize_property#ASignature#ret_type (self) on <self:ASignature> */
6453 var131 = self->attrs[COLOR_modelize_property__ASignature___ret_type].val; /* _ret_type on <self:ASignature> */
6454 var129 = var131;
6455 RET_LABEL130:(void)0;
6456 }
6457 }
6458 var132 = NULL;
6459 if (var129 == NULL) {
6460 var133 = 1; /* is null */
6461 } else {
6462 var133 = 0; /* arg is null but recv is not */
6463 }
6464 if (0) {
6465 { /* Inline kernel#Object#== (var129,var132) on <var129:nullable MType> */
6466 var_other36 = var132;
6467 {
6468 { /* Inline kernel#Object#is_same_instance (var129,var_other36) on <var129:nullable MType(MType)> */
6469 var138 = var129 == var_other36;
6470 var136 = var138;
6471 goto RET_LABEL137;
6472 RET_LABEL137:(void)0;
6473 }
6474 }
6475 var134 = var136;
6476 goto RET_LABEL135;
6477 RET_LABEL135:(void)0;
6478 }
6479 var133 = var134;
6480 }
6481 if (var133){
6482 var139 = 0;
6483 var = var139;
6484 goto RET_LABEL;
6485 } else {
6486 }
6487 } else {
6488 }
6489 var140 = 1;
6490 {
6491 { /* Inline modelize_property#ASignature#is_visited= (self,var140) on <self:ASignature> */
6492 self->attrs[COLOR_modelize_property__ASignature___is_visited].s = var140; /* _is_visited on <self:ASignature> */
6493 RET_LABEL141:(void)0;
6494 }
6495 }
6496 var142 = 1;
6497 var = var142;
6498 goto RET_LABEL;
6499 RET_LABEL:;
6500 return var;
6501 }
6502 /* method modelize_property#ASignature#visit_signature for (self: Object, ModelBuilder, MClassDef): Bool */
6503 short int VIRTUAL_modelize_property__ASignature__visit_signature(val* self, val* p0, val* p1) {
6504 short int var /* : Bool */;
6505 short int var1 /* : Bool */;
6506 var1 = modelize_property__ASignature__visit_signature(self, p0, p1);
6507 var = var1;
6508 RET_LABEL:;
6509 return var;
6510 }
6511 /* method modelize_property#AParam#mparameter= for (self: AParam, nullable MParameter) */
6512 void modelize_property__AParam__mparameter_61d(val* self, val* p0) {
6513 self->attrs[COLOR_modelize_property__AParam___mparameter].val = p0; /* _mparameter on <self:AParam> */
6514 RET_LABEL:;
6515 }
6516 /* method modelize_property#AParam#mparameter= for (self: Object, nullable MParameter) */
6517 void VIRTUAL_modelize_property__AParam__mparameter_61d(val* self, val* p0) {
6518 { /* Inline modelize_property#AParam#mparameter= (self,p0) on <self:Object(AParam)> */
6519 self->attrs[COLOR_modelize_property__AParam___mparameter].val = p0; /* _mparameter on <self:Object(AParam)> */
6520 RET_LABEL1:(void)0;
6521 }
6522 RET_LABEL:;
6523 }
6524 /* method modelize_property#AMethPropdef#look_like_a_root_init for (self: AMethPropdef, ModelBuilder): Bool */
6525 short int modelize_property__AMethPropdef__look_like_a_root_init(val* self, val* p0) {
6526 short int var /* : Bool */;
6527 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6528 val* var1 /* : nullable TKwinit */;
6529 val* var3 /* : nullable TKwinit */;
6530 val* var4 /* : null */;
6531 short int var5 /* : Bool */;
6532 short int var6 /* : Bool */;
6533 val* var_other /* var other: nullable Object */;
6534 short int var8 /* : Bool */;
6535 short int var10 /* : Bool */;
6536 short int var11 /* : Bool */;
6537 val* var12 /* : nullable AMethid */;
6538 val* var14 /* : nullable AMethid */;
6539 val* var15 /* : null */;
6540 short int var16 /* : Bool */;
6541 short int var17 /* : Bool */;
6542 val* var_other19 /* var other: nullable Object */;
6543 short int var20 /* : Bool */;
6544 short int var21 /* : Bool */;
6545 short int var22 /* : Bool */;
6546 short int var23 /* : Bool */;
6547 val* var24 /* : nullable ASignature */;
6548 val* var26 /* : nullable ASignature */;
6549 val* var27 /* : ANodes[AParam] */;
6550 val* var29 /* : ANodes[AParam] */;
6551 long var30 /* : Int */;
6552 long var31 /* : Int */;
6553 short int var32 /* : Bool */;
6554 short int var34 /* : Bool */;
6555 int cltype;
6556 int idtype;
6557 const char* var_class_name;
6558 short int var35 /* : Bool */;
6559 short int var36 /* : Bool */;
6560 val* var37 /* : nullable AVisibility */;
6561 val* var39 /* : nullable AVisibility */;
6562 short int var40 /* : Bool */;
6563 int cltype41;
6564 int idtype42;
6565 short int var43 /* : Bool */;
6566 short int var44 /* : Bool */;
6567 static val* varonce;
6568 val* var45 /* : String */;
6569 char* var46 /* : NativeString */;
6570 long var47 /* : Int */;
6571 val* var48 /* : FlatString */;
6572 val* var49 /* : nullable AAnnotation */;
6573 val* var50 /* : null */;
6574 short int var51 /* : Bool */;
6575 short int var52 /* : Bool */;
6576 short int var54 /* : Bool */;
6577 short int var55 /* : Bool */;
6578 short int var56 /* : Bool */;
6579 short int var57 /* : Bool */;
6580 val* var58 /* : nullable ANode */;
6581 val* var60 /* : nullable ANode */;
6582 val* var61 /* : nullable ANode */;
6583 val* var63 /* : nullable ANode */;
6584 short int var64 /* : Bool */;
6585 int cltype65;
6586 int idtype66;
6587 const char* var_class_name67;
6588 val* var_amod /* var amod: AModule */;
6589 val* var68 /* : nullable AModuledecl */;
6590 val* var70 /* : nullable AModuledecl */;
6591 val* var_amoddecl /* var amoddecl: nullable AModuledecl */;
6592 val* var71 /* : null */;
6593 short int var72 /* : Bool */;
6594 short int var73 /* : Bool */;
6595 short int var75 /* : Bool */;
6596 short int var76 /* : Bool */;
6597 short int var77 /* : Bool */;
6598 static val* varonce78;
6599 val* var79 /* : String */;
6600 char* var80 /* : NativeString */;
6601 long var81 /* : Int */;
6602 val* var82 /* : FlatString */;
6603 val* var83 /* : nullable AAnnotation */;
6604 val* var_old /* var old: nullable AAnnotation */;
6605 val* var84 /* : null */;
6606 short int var85 /* : Bool */;
6607 short int var86 /* : Bool */;
6608 short int var88 /* : Bool */;
6609 short int var89 /* : Bool */;
6610 short int var90 /* : Bool */;
6611 short int var91 /* : Bool */;
6612 short int var92 /* : Bool */;
6613 var_modelbuilder = p0;
6614 {
6615 { /* Inline parser_nodes#AMethPropdef#n_kwinit (self) on <self:AMethPropdef> */
6616 var3 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwinit].val; /* _n_kwinit on <self:AMethPropdef> */
6617 var1 = var3;
6618 RET_LABEL2:(void)0;
6619 }
6620 }
6621 var4 = NULL;
6622 if (var1 == NULL) {
6623 var5 = 1; /* is null */
6624 } else {
6625 var5 = 0; /* arg is null but recv is not */
6626 }
6627 if (0) {
6628 { /* Inline kernel#Object#== (var1,var4) on <var1:nullable TKwinit> */
6629 var_other = var4;
6630 {
6631 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable TKwinit(TKwinit)> */
6632 var10 = var1 == var_other;
6633 var8 = var10;
6634 goto RET_LABEL9;
6635 RET_LABEL9:(void)0;
6636 }
6637 }
6638 var6 = var8;
6639 goto RET_LABEL7;
6640 RET_LABEL7:(void)0;
6641 }
6642 var5 = var6;
6643 }
6644 if (var5){
6645 var11 = 0;
6646 var = var11;
6647 goto RET_LABEL;
6648 } else {
6649 }
6650 {
6651 { /* Inline parser_nodes#AMethPropdef#n_methid (self) on <self:AMethPropdef> */
6652 var14 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
6653 var12 = var14;
6654 RET_LABEL13:(void)0;
6655 }
6656 }
6657 var15 = NULL;
6658 if (var12 == NULL) {
6659 var16 = 0; /* is null */
6660 } else {
6661 var16 = 1; /* arg is null and recv is not */
6662 }
6663 if (0) {
6664 { /* Inline kernel#Object#!= (var12,var15) on <var12:nullable AMethid> */
6665 var_other19 = var15;
6666 {
6667 var21 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_other19) /* == on <var12:nullable AMethid(AMethid)>*/;
6668 var20 = var21;
6669 }
6670 var22 = !var20;
6671 var17 = var22;
6672 goto RET_LABEL18;
6673 RET_LABEL18:(void)0;
6674 }
6675 var16 = var17;
6676 }
6677 if (var16){
6678 var23 = 0;
6679 var = var23;
6680 goto RET_LABEL;
6681 } else {
6682 }
6683 {
6684 { /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
6685 var26 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
6686 var24 = var26;
6687 RET_LABEL25:(void)0;
6688 }
6689 }
6690 if (var24 == NULL) {
6691 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6692 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 500);
6693 show_backtrace(1);
6694 } else {
6695 { /* Inline parser_nodes#ASignature#n_params (var24) on <var24:nullable ASignature> */
6696 if (unlikely(var24 == NULL)) {
6697 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6698 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
6699 show_backtrace(1);
6700 }
6701 var29 = var24->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var24:nullable ASignature> */
6702 if (unlikely(var29 == NULL)) {
6703 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
6704 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
6705 show_backtrace(1);
6706 }
6707 var27 = var29;
6708 RET_LABEL28:(void)0;
6709 }
6710 }
6711 {
6712 var30 = parser_nodes__ANodes__length(var27);
6713 }
6714 var31 = 0;
6715 {
6716 { /* Inline kernel#Int#> (var30,var31) on <var30:Int> */
6717 /* Covariant cast for argument 0 (i) <var31:Int> isa OTHER */
6718 /* <var31:Int> isa OTHER */
6719 var34 = 1; /* easy <var31:Int> isa OTHER*/
6720 if (unlikely(!var34)) {
6721 var_class_name = type_kernel__Int.name;
6722 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6723 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
6724 show_backtrace(1);
6725 }
6726 var35 = var30 > var31;
6727 var32 = var35;
6728 goto RET_LABEL33;
6729 RET_LABEL33:(void)0;
6730 }
6731 }
6732 if (var32){
6733 var36 = 0;
6734 var = var36;
6735 goto RET_LABEL;
6736 } else {
6737 }
6738 {
6739 { /* Inline parser_nodes#APropdef#n_visibility (self) on <self:AMethPropdef> */
6740 var39 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
6741 var37 = var39;
6742 RET_LABEL38:(void)0;
6743 }
6744 }
6745 /* <var37:nullable AVisibility> isa APublicVisibility */
6746 cltype41 = type_parser_nodes__APublicVisibility.color;
6747 idtype42 = type_parser_nodes__APublicVisibility.id;
6748 if(var37 == NULL) {
6749 var40 = 0;
6750 } else {
6751 if(cltype41 >= var37->type->table_size) {
6752 var40 = 0;
6753 } else {
6754 var40 = var37->type->type_table[cltype41] == idtype42;
6755 }
6756 }
6757 var43 = !var40;
6758 if (var43){
6759 var44 = 0;
6760 var = var44;
6761 goto RET_LABEL;
6762 } else {
6763 }
6764 if (varonce) {
6765 var45 = varonce;
6766 } else {
6767 var46 = "old_style_init";
6768 var47 = 14;
6769 var48 = string__NativeString__to_s_with_length(var46, var47);
6770 var45 = var48;
6771 varonce = var45;
6772 }
6773 {
6774 var49 = annotation__Prod__get_single_annotation(self, var45, var_modelbuilder);
6775 }
6776 var50 = NULL;
6777 if (var49 == NULL) {
6778 var51 = 0; /* is null */
6779 } else {
6780 var51 = 1; /* arg is null and recv is not */
6781 }
6782 if (0) {
6783 { /* Inline kernel#Object#!= (var49,var50) on <var49:nullable AAnnotation> */
6784 var_other19 = var50;
6785 {
6786 var55 = ((short int (*)(val*, val*))(var49->class->vft[COLOR_kernel__Object___61d_61d]))(var49, var_other19) /* == on <var49:nullable AAnnotation(AAnnotation)>*/;
6787 var54 = var55;
6788 }
6789 var56 = !var54;
6790 var52 = var56;
6791 goto RET_LABEL53;
6792 RET_LABEL53:(void)0;
6793 }
6794 var51 = var52;
6795 }
6796 if (var51){
6797 var57 = 0;
6798 var = var57;
6799 goto RET_LABEL;
6800 } else {
6801 }
6802 {
6803 { /* Inline parser_nodes#ANode#parent (self) on <self:AMethPropdef> */
6804 var60 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:AMethPropdef> */
6805 var58 = var60;
6806 RET_LABEL59:(void)0;
6807 }
6808 }
6809 if (var58 == NULL) {
6810 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6811 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 506);
6812 show_backtrace(1);
6813 } else {
6814 { /* Inline parser_nodes#ANode#parent (var58) on <var58:nullable ANode> */
6815 if (unlikely(var58 == NULL)) {
6816 PRINT_ERROR("Runtime error: %s", "Receiver is null");
6817 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 36);
6818 show_backtrace(1);
6819 }
6820 var63 = var58->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <var58:nullable ANode> */
6821 var61 = var63;
6822 RET_LABEL62:(void)0;
6823 }
6824 }
6825 /* <var61:nullable ANode> isa AModule */
6826 cltype65 = type_parser_nodes__AModule.color;
6827 idtype66 = type_parser_nodes__AModule.id;
6828 if(var61 == NULL) {
6829 var64 = 0;
6830 } else {
6831 if(cltype65 >= var61->type->table_size) {
6832 var64 = 0;
6833 } else {
6834 var64 = var61->type->type_table[cltype65] == idtype66;
6835 }
6836 }
6837 if (unlikely(!var64)) {
6838 var_class_name67 = var61 == NULL ? "null" : var61->type->name;
6839 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name67);
6840 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 506);
6841 show_backtrace(1);
6842 }
6843 var_amod = var61;
6844 {
6845 { /* Inline parser_nodes#AModule#n_moduledecl (var_amod) on <var_amod:AModule> */
6846 var70 = var_amod->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <var_amod:AModule> */
6847 var68 = var70;
6848 RET_LABEL69:(void)0;
6849 }
6850 }
6851 var_amoddecl = var68;
6852 var71 = NULL;
6853 if (var_amoddecl == NULL) {
6854 var72 = 0; /* is null */
6855 } else {
6856 var72 = 1; /* arg is null and recv is not */
6857 }
6858 if (0) {
6859 { /* Inline kernel#Object#!= (var_amoddecl,var71) on <var_amoddecl:nullable AModuledecl> */
6860 var_other19 = var71;
6861 {
6862 var76 = ((short int (*)(val*, val*))(var_amoddecl->class->vft[COLOR_kernel__Object___61d_61d]))(var_amoddecl, var_other19) /* == on <var_amoddecl:nullable AModuledecl(AModuledecl)>*/;
6863 var75 = var76;
6864 }
6865 var77 = !var75;
6866 var73 = var77;
6867 goto RET_LABEL74;
6868 RET_LABEL74:(void)0;
6869 }
6870 var72 = var73;
6871 }
6872 if (var72){
6873 if (varonce78) {
6874 var79 = varonce78;
6875 } else {
6876 var80 = "old_style_init";
6877 var81 = 14;
6878 var82 = string__NativeString__to_s_with_length(var80, var81);
6879 var79 = var82;
6880 varonce78 = var79;
6881 }
6882 {
6883 var83 = annotation__Prod__get_single_annotation(var_amoddecl, var79, var_modelbuilder);
6884 }
6885 var_old = var83;
6886 var84 = NULL;
6887 if (var_old == NULL) {
6888 var85 = 0; /* is null */
6889 } else {
6890 var85 = 1; /* arg is null and recv is not */
6891 }
6892 if (0) {
6893 { /* Inline kernel#Object#!= (var_old,var84) on <var_old:nullable AAnnotation> */
6894 var_other19 = var84;
6895 {
6896 var89 = ((short int (*)(val*, val*))(var_old->class->vft[COLOR_kernel__Object___61d_61d]))(var_old, var_other19) /* == on <var_old:nullable AAnnotation(AAnnotation)>*/;
6897 var88 = var89;
6898 }
6899 var90 = !var88;
6900 var86 = var90;
6901 goto RET_LABEL87;
6902 RET_LABEL87:(void)0;
6903 }
6904 var85 = var86;
6905 }
6906 if (var85){
6907 var91 = 0;
6908 var = var91;
6909 goto RET_LABEL;
6910 } else {
6911 }
6912 } else {
6913 }
6914 var92 = 1;
6915 var = var92;
6916 goto RET_LABEL;
6917 RET_LABEL:;
6918 return var;
6919 }
6920 /* method modelize_property#AMethPropdef#look_like_a_root_init for (self: Object, ModelBuilder): Bool */
6921 short int VIRTUAL_modelize_property__AMethPropdef__look_like_a_root_init(val* self, val* p0) {
6922 short int var /* : Bool */;
6923 short int var1 /* : Bool */;
6924 var1 = modelize_property__AMethPropdef__look_like_a_root_init(self, p0);
6925 var = var1;
6926 RET_LABEL:;
6927 return var;
6928 }
6929 /* method modelize_property#AMethPropdef#build_property for (self: AMethPropdef, ModelBuilder, MClassDef) */
6930 void modelize_property__AMethPropdef__build_property(val* self, val* p0, val* p1) {
6931 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6932 val* var_mclassdef /* var mclassdef: MClassDef */;
6933 val* var /* : nullable TKwinit */;
6934 val* var2 /* : nullable TKwinit */;
6935 val* var_n_kwinit /* var n_kwinit: nullable TKwinit */;
6936 val* var3 /* : nullable TKwnew */;
6937 val* var5 /* : nullable TKwnew */;
6938 val* var_n_kwnew /* var n_kwnew: nullable TKwnew */;
6939 short int var6 /* : Bool */;
6940 val* var7 /* : null */;
6941 short int var8 /* : Bool */;
6942 short int var9 /* : Bool */;
6943 val* var_other /* var other: nullable Object */;
6944 short int var11 /* : Bool */;
6945 short int var12 /* : Bool */;
6946 short int var13 /* : Bool */;
6947 short int var_ /* var : Bool */;
6948 val* var14 /* : null */;
6949 short int var15 /* : Bool */;
6950 short int var16 /* : Bool */;
6951 short int var18 /* : Bool */;
6952 short int var19 /* : Bool */;
6953 short int var20 /* : Bool */;
6954 short int var_is_init /* var is_init: Bool */;
6955 val* var21 /* : nullable AMethid */;
6956 val* var23 /* : nullable AMethid */;
6957 val* var_amethodid /* var amethodid: nullable AMethid */;
6958 val* var24 /* : null */;
6959 short int var25 /* : Bool */;
6960 short int var26 /* : Bool */;
6961 val* var_other28 /* var other: nullable Object */;
6962 short int var29 /* : Bool */;
6963 short int var31 /* : Bool */;
6964 short int var32 /* : Bool */;
6965 static val* varonce;
6966 val* var33 /* : String */;
6967 char* var34 /* : NativeString */;
6968 long var35 /* : Int */;
6969 val* var36 /* : FlatString */;
6970 val* var_name /* var name: String */;
6971 val* var_name_node /* var name_node: ANode */;
6972 val* var37 /* : null */;
6973 short int var38 /* : Bool */;
6974 short int var39 /* : Bool */;
6975 short int var41 /* : Bool */;
6976 short int var42 /* : Bool */;
6977 short int var43 /* : Bool */;
6978 static val* varonce44;
6979 val* var45 /* : String */;
6980 char* var46 /* : NativeString */;
6981 long var47 /* : Int */;
6982 val* var48 /* : FlatString */;
6983 val* var49 /* : null */;
6984 short int var50 /* : Bool */;
6985 short int var51 /* : Bool */;
6986 short int var53 /* : Bool */;
6987 short int var54 /* : Bool */;
6988 short int var55 /* : Bool */;
6989 static val* varonce56;
6990 val* var57 /* : String */;
6991 char* var58 /* : NativeString */;
6992 long var59 /* : Int */;
6993 val* var60 /* : FlatString */;
6994 short int var61 /* : Bool */;
6995 int cltype;
6996 int idtype;
6997 val* var62 /* : TId */;
6998 val* var64 /* : TId */;
6999 val* var65 /* : String */;
7000 val* var66 /* : String */;
7001 short int var67 /* : Bool */;
7002 static val* varonce68;
7003 val* var69 /* : String */;
7004 char* var70 /* : NativeString */;
7005 long var71 /* : Int */;
7006 val* var72 /* : FlatString */;
7007 short int var73 /* : Bool */;
7008 short int var74 /* : Bool */;
7009 short int var_75 /* var : Bool */;
7010 val* var76 /* : nullable ASignature */;
7011 val* var78 /* : nullable ASignature */;
7012 val* var79 /* : ANodes[AParam] */;
7013 val* var81 /* : ANodes[AParam] */;
7014 long var82 /* : Int */;
7015 long var83 /* : Int */;
7016 short int var84 /* : Bool */;
7017 short int var85 /* : Bool */;
7018 short int var87 /* : Bool */;
7019 static val* varonce88;
7020 val* var89 /* : String */;
7021 char* var90 /* : NativeString */;
7022 long var91 /* : Int */;
7023 val* var92 /* : FlatString */;
7024 val* var93 /* : null */;
7025 val* var_mprop /* var mprop: nullable MMethod */;
7026 short int var94 /* : Bool */;
7027 short int var95 /* : Bool */;
7028 short int var_96 /* var : Bool */;
7029 val* var97 /* : nullable TKwredef */;
7030 val* var99 /* : nullable TKwredef */;
7031 val* var100 /* : null */;
7032 short int var101 /* : Bool */;
7033 short int var102 /* : Bool */;
7034 short int var104 /* : Bool */;
7035 short int var105 /* : Bool */;
7036 short int var106 /* : Bool */;
7037 val* var107 /* : nullable MProperty */;
7038 short int var108 /* : Bool */;
7039 int cltype109;
7040 int idtype110;
7041 const char* var_class_name;
7042 short int var111 /* : Bool */;
7043 val* var112 /* : null */;
7044 short int var113 /* : Bool */;
7045 short int var114 /* : Bool */;
7046 short int var116 /* : Bool */;
7047 short int var118 /* : Bool */;
7048 short int var_119 /* var : Bool */;
7049 short int var120 /* : Bool */;
7050 val* var121 /* : nullable MMethod */;
7051 val* var123 /* : nullable MMethod */;
7052 val* var124 /* : nullable AExpr */;
7053 val* var126 /* : nullable AExpr */;
7054 val* var_nb /* var nb: nullable AExpr */;
7055 short int var127 /* : Bool */;
7056 short int var128 /* : Bool */;
7057 short int var129 /* : Bool */;
7058 int cltype130;
7059 int idtype131;
7060 short int var_132 /* var : Bool */;
7061 val* var133 /* : ANodes[AExpr] */;
7062 val* var135 /* : ANodes[AExpr] */;
7063 short int var136 /* : Bool */;
7064 short int var_137 /* var : Bool */;
7065 val* var138 /* : nullable ADoc */;
7066 val* var140 /* : nullable ADoc */;
7067 val* var141 /* : null */;
7068 short int var142 /* : Bool */;
7069 short int var143 /* : Bool */;
7070 short int var145 /* : Bool */;
7071 short int var147 /* : Bool */;
7072 static val* varonce148;
7073 val* var149 /* : String */;
7074 char* var150 /* : NativeString */;
7075 long var151 /* : Int */;
7076 val* var152 /* : FlatString */;
7077 static val* varonce153;
7078 val* var154 /* : String */;
7079 char* var155 /* : NativeString */;
7080 long var156 /* : Int */;
7081 val* var157 /* : FlatString */;
7082 val* var158 /* : Array[Object] */;
7083 long var159 /* : Int */;
7084 val* var160 /* : NativeArray[Object] */;
7085 val* var161 /* : String */;
7086 val* var162 /* : null */;
7087 short int var163 /* : Bool */;
7088 short int var164 /* : Bool */;
7089 short int var166 /* : Bool */;
7090 short int var168 /* : Bool */;
7091 val* var169 /* : nullable AVisibility */;
7092 val* var171 /* : nullable AVisibility */;
7093 val* var172 /* : MVisibility */;
7094 val* var_mvisibility /* var mvisibility: MVisibility */;
7095 val* var173 /* : MMethod */;
7096 short int var174 /* : Bool */;
7097 short int var175 /* : Bool */;
7098 short int var_176 /* var : Bool */;
7099 val* var177 /* : nullable MMethod */;
7100 val* var179 /* : nullable MMethod */;
7101 val* var180 /* : null */;
7102 short int var181 /* : Bool */;
7103 short int var182 /* : Bool */;
7104 short int var184 /* : Bool */;
7105 short int var186 /* : Bool */;
7106 short int var188 /* : Bool */;
7107 val* var191 /* : null */;
7108 short int var192 /* : Bool */;
7109 short int var193 /* : Bool */;
7110 short int var195 /* : Bool */;
7111 short int var196 /* : Bool */;
7112 short int var197 /* : Bool */;
7113 val* var199 /* : nullable ANode */;
7114 val* var201 /* : nullable ANode */;
7115 short int var202 /* : Bool */;
7116 int cltype203;
7117 int idtype204;
7118 short int var205 /* : Bool */;
7119 val* var207 /* : nullable TKwredef */;
7120 val* var209 /* : nullable TKwredef */;
7121 short int var210 /* : Bool */;
7122 short int var211 /* : Bool */;
7123 short int var212 /* : Bool */;
7124 short int var213 /* : Bool */;
7125 short int var214 /* : Bool */;
7126 short int var216 /* : Bool */;
7127 short int var217 /* : Bool */;
7128 short int var_218 /* var : Bool */;
7129 val* var219 /* : nullable TKwredef */;
7130 val* var221 /* : nullable TKwredef */;
7131 short int var222 /* : Bool */;
7132 int cltype223;
7133 int idtype224;
7134 short int var225 /* : Bool */;
7135 short int var226 /* : Bool */;
7136 short int var227 /* : Bool */;
7137 val* var228 /* : nullable AVisibility */;
7138 val* var230 /* : nullable AVisibility */;
7139 val* var231 /* : Map[MProperty, APropdef] */;
7140 val* var233 /* : Map[MProperty, APropdef] */;
7141 val* var234 /* : MMethodDef */;
7142 val* var235 /* : Location */;
7143 val* var237 /* : Location */;
7144 val* var_mpropdef /* var mpropdef: MMethodDef */;
7145 short int var238 /* : Bool */;
7146 int cltype239;
7147 int idtype240;
7148 const struct type* type_struct;
7149 const char* var_class_name241;
7150 short int var243 /* : Bool */;
7151 int cltype244;
7152 int idtype245;
7153 const struct type* type_struct246;
7154 const char* var_class_name247;
7155 val* var248 /* : HashMap[MPropDef, APropdef] */;
7156 val* var250 /* : HashMap[MPropDef, APropdef] */;
7157 short int var251 /* : Bool */;
7158 val* var252 /* : ToolContext */;
7159 val* var254 /* : ToolContext */;
7160 static val* varonce255;
7161 val* var256 /* : String */;
7162 char* var257 /* : NativeString */;
7163 long var258 /* : Int */;
7164 val* var259 /* : FlatString */;
7165 val* var260 /* : String */;
7166 val* var261 /* : Array[Object] */;
7167 long var262 /* : Int */;
7168 val* var263 /* : NativeArray[Object] */;
7169 val* var264 /* : String */;
7170 long var265 /* : Int */;
7171 val* var266 /* : ToolContext */;
7172 val* var268 /* : ToolContext */;
7173 static val* varonce269;
7174 val* var270 /* : String */;
7175 char* var271 /* : NativeString */;
7176 long var272 /* : Int */;
7177 val* var273 /* : FlatString */;
7178 val* var274 /* : String */;
7179 val* var275 /* : Array[Object] */;
7180 long var276 /* : Int */;
7181 val* var277 /* : NativeArray[Object] */;
7182 val* var278 /* : String */;
7183 long var279 /* : Int */;
7184 var_modelbuilder = p0;
7185 var_mclassdef = p1;
7186 {
7187 { /* Inline parser_nodes#AMethPropdef#n_kwinit (self) on <self:AMethPropdef> */
7188 var2 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwinit].val; /* _n_kwinit on <self:AMethPropdef> */
7189 var = var2;
7190 RET_LABEL1:(void)0;
7191 }
7192 }
7193 var_n_kwinit = var;
7194 {
7195 { /* Inline parser_nodes#AMethPropdef#n_kwnew (self) on <self:AMethPropdef> */
7196 var5 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_kwnew].val; /* _n_kwnew on <self:AMethPropdef> */
7197 var3 = var5;
7198 RET_LABEL4:(void)0;
7199 }
7200 }
7201 var_n_kwnew = var3;
7202 var7 = NULL;
7203 if (var_n_kwinit == NULL) {
7204 var8 = 0; /* is null */
7205 } else {
7206 var8 = 1; /* arg is null and recv is not */
7207 }
7208 if (0) {
7209 { /* Inline kernel#Object#!= (var_n_kwinit,var7) on <var_n_kwinit:nullable TKwinit> */
7210 var_other = var7;
7211 {
7212 var12 = ((short int (*)(val*, val*))(var_n_kwinit->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwinit, var_other) /* == on <var_n_kwinit:nullable TKwinit(TKwinit)>*/;
7213 var11 = var12;
7214 }
7215 var13 = !var11;
7216 var9 = var13;
7217 goto RET_LABEL10;
7218 RET_LABEL10:(void)0;
7219 }
7220 var8 = var9;
7221 }
7222 var_ = var8;
7223 if (var8){
7224 var6 = var_;
7225 } else {
7226 var14 = NULL;
7227 if (var_n_kwnew == NULL) {
7228 var15 = 0; /* is null */
7229 } else {
7230 var15 = 1; /* arg is null and recv is not */
7231 }
7232 if (0) {
7233 { /* Inline kernel#Object#!= (var_n_kwnew,var14) on <var_n_kwnew:nullable TKwnew> */
7234 var_other = var14;
7235 {
7236 var19 = ((short int (*)(val*, val*))(var_n_kwnew->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
7237 var18 = var19;
7238 }
7239 var20 = !var18;
7240 var16 = var20;
7241 goto RET_LABEL17;
7242 RET_LABEL17:(void)0;
7243 }
7244 var15 = var16;
7245 }
7246 var6 = var15;
7247 }
7248 var_is_init = var6;
7249 {
7250 { /* Inline parser_nodes#AMethPropdef#n_methid (self) on <self:AMethPropdef> */
7251 var23 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
7252 var21 = var23;
7253 RET_LABEL22:(void)0;
7254 }
7255 }
7256 var_amethodid = var21;
7257 var24 = NULL;
7258 if (var_amethodid == NULL) {
7259 var25 = 1; /* is null */
7260 } else {
7261 var25 = 0; /* arg is null but recv is not */
7262 }
7263 if (0) {
7264 { /* Inline kernel#Object#== (var_amethodid,var24) on <var_amethodid:nullable AMethid> */
7265 var_other28 = var24;
7266 {
7267 { /* Inline kernel#Object#is_same_instance (var_amethodid,var_other28) on <var_amethodid:nullable AMethid(AMethid)> */
7268 var31 = var_amethodid == var_other28;
7269 var29 = var31;
7270 goto RET_LABEL30;
7271 RET_LABEL30:(void)0;
7272 }
7273 }
7274 var26 = var29;
7275 goto RET_LABEL27;
7276 RET_LABEL27:(void)0;
7277 }
7278 var25 = var26;
7279 }
7280 if (var25){
7281 var32 = !var_is_init;
7282 if (var32){
7283 if (varonce) {
7284 var33 = varonce;
7285 } else {
7286 var34 = "main";
7287 var35 = 4;
7288 var36 = string__NativeString__to_s_with_length(var34, var35);
7289 var33 = var36;
7290 varonce = var33;
7291 }
7292 var_name = var33;
7293 var_name_node = self;
7294 } else {
7295 var37 = NULL;
7296 if (var_n_kwinit == NULL) {
7297 var38 = 0; /* is null */
7298 } else {
7299 var38 = 1; /* arg is null and recv is not */
7300 }
7301 if (0) {
7302 { /* Inline kernel#Object#!= (var_n_kwinit,var37) on <var_n_kwinit:nullable TKwinit> */
7303 var_other = var37;
7304 {
7305 var42 = ((short int (*)(val*, val*))(var_n_kwinit->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwinit, var_other) /* == on <var_n_kwinit:nullable TKwinit(TKwinit)>*/;
7306 var41 = var42;
7307 }
7308 var43 = !var41;
7309 var39 = var43;
7310 goto RET_LABEL40;
7311 RET_LABEL40:(void)0;
7312 }
7313 var38 = var39;
7314 }
7315 if (var38){
7316 if (varonce44) {
7317 var45 = varonce44;
7318 } else {
7319 var46 = "init";
7320 var47 = 4;
7321 var48 = string__NativeString__to_s_with_length(var46, var47);
7322 var45 = var48;
7323 varonce44 = var45;
7324 }
7325 var_name = var45;
7326 var_name_node = var_n_kwinit;
7327 } else {
7328 var49 = NULL;
7329 if (var_n_kwnew == NULL) {
7330 var50 = 0; /* is null */
7331 } else {
7332 var50 = 1; /* arg is null and recv is not */
7333 }
7334 if (0) {
7335 { /* Inline kernel#Object#!= (var_n_kwnew,var49) on <var_n_kwnew:nullable TKwnew> */
7336 var_other = var49;
7337 {
7338 var54 = ((short int (*)(val*, val*))(var_n_kwnew->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
7339 var53 = var54;
7340 }
7341 var55 = !var53;
7342 var51 = var55;
7343 goto RET_LABEL52;
7344 RET_LABEL52:(void)0;
7345 }
7346 var50 = var51;
7347 }
7348 if (var50){
7349 if (varonce56) {
7350 var57 = varonce56;
7351 } else {
7352 var58 = "new";
7353 var59 = 3;
7354 var60 = string__NativeString__to_s_with_length(var58, var59);
7355 var57 = var60;
7356 varonce56 = var57;
7357 }
7358 var_name = var57;
7359 var_name_node = var_n_kwnew;
7360 } else {
7361 PRINT_ERROR("Runtime error: %s", "Aborted");
7362 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 535);
7363 show_backtrace(1);
7364 }
7365 }
7366 }
7367 } else {
7368 /* <var_amethodid:nullable AMethid(AMethid)> isa AIdMethid */
7369 cltype = type_parser_nodes__AIdMethid.color;
7370 idtype = type_parser_nodes__AIdMethid.id;
7371 if(cltype >= var_amethodid->type->table_size) {
7372 var61 = 0;
7373 } else {
7374 var61 = var_amethodid->type->type_table[cltype] == idtype;
7375 }
7376 if (var61){
7377 {
7378 { /* Inline parser_nodes#AIdMethid#n_id (var_amethodid) on <var_amethodid:nullable AMethid(AIdMethid)> */
7379 var64 = var_amethodid->attrs[COLOR_parser_nodes__AIdMethid___n_id].val; /* _n_id on <var_amethodid:nullable AMethid(AIdMethid)> */
7380 if (unlikely(var64 == NULL)) {
7381 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
7382 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1160);
7383 show_backtrace(1);
7384 }
7385 var62 = var64;
7386 RET_LABEL63:(void)0;
7387 }
7388 }
7389 {
7390 var65 = lexer_work__Token__text(var62);
7391 }
7392 var_name = var65;
7393 var_name_node = var_amethodid;
7394 } else {
7395 {
7396 var66 = parser_work__Prod__collect_text(var_amethodid);
7397 }
7398 var_name = var66;
7399 var_name_node = var_amethodid;
7400 if (varonce68) {
7401 var69 = varonce68;
7402 } else {
7403 var70 = "-";
7404 var71 = 1;
7405 var72 = string__NativeString__to_s_with_length(var70, var71);
7406 var69 = var72;
7407 varonce68 = var69;
7408 }
7409 {
7410 var74 = string__FlatString___61d_61d(var_name, var69);
7411 var73 = var74;
7412 }
7413 var_75 = var73;
7414 if (var73){
7415 {
7416 { /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
7417 var78 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
7418 var76 = var78;
7419 RET_LABEL77:(void)0;
7420 }
7421 }
7422 if (var76 == NULL) {
7423 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7424 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 545);
7425 show_backtrace(1);
7426 } else {
7427 { /* Inline parser_nodes#ASignature#n_params (var76) on <var76:nullable ASignature> */
7428 if (unlikely(var76 == NULL)) {
7429 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7430 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7431 show_backtrace(1);
7432 }
7433 var81 = var76->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var76:nullable ASignature> */
7434 if (unlikely(var81 == NULL)) {
7435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
7436 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
7437 show_backtrace(1);
7438 }
7439 var79 = var81;
7440 RET_LABEL80:(void)0;
7441 }
7442 }
7443 {
7444 var82 = parser_nodes__ANodes__length(var79);
7445 }
7446 var83 = 0;
7447 {
7448 { /* Inline kernel#Int#== (var82,var83) on <var82:Int> */
7449 var87 = var82 == var83;
7450 var85 = var87;
7451 goto RET_LABEL86;
7452 RET_LABEL86:(void)0;
7453 }
7454 var84 = var85;
7455 }
7456 var67 = var84;
7457 } else {
7458 var67 = var_75;
7459 }
7460 if (var67){
7461 if (varonce88) {
7462 var89 = varonce88;
7463 } else {
7464 var90 = "unary -";
7465 var91 = 7;
7466 var92 = string__NativeString__to_s_with_length(var90, var91);
7467 var89 = var92;
7468 varonce88 = var89;
7469 }
7470 var_name = var89;
7471 } else {
7472 }
7473 }
7474 }
7475 var93 = NULL;
7476 var_mprop = var93;
7477 var95 = !var_is_init;
7478 var_96 = var95;
7479 if (var95){
7480 var94 = var_96;
7481 } else {
7482 {
7483 { /* Inline parser_nodes#APropdef#n_kwredef (self) on <self:AMethPropdef> */
7484 var99 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
7485 var97 = var99;
7486 RET_LABEL98:(void)0;
7487 }
7488 }
7489 var100 = NULL;
7490 if (var97 == NULL) {
7491 var101 = 0; /* is null */
7492 } else {
7493 var101 = 1; /* arg is null and recv is not */
7494 }
7495 if (0) {
7496 { /* Inline kernel#Object#!= (var97,var100) on <var97:nullable TKwredef> */
7497 var_other = var100;
7498 {
7499 var105 = ((short int (*)(val*, val*))(var97->class->vft[COLOR_kernel__Object___61d_61d]))(var97, var_other) /* == on <var97:nullable TKwredef(TKwredef)>*/;
7500 var104 = var105;
7501 }
7502 var106 = !var104;
7503 var102 = var106;
7504 goto RET_LABEL103;
7505 RET_LABEL103:(void)0;
7506 }
7507 var101 = var102;
7508 }
7509 var94 = var101;
7510 }
7511 if (var94){
7512 {
7513 var107 = modelbuilder__ModelBuilder__try_get_mproperty_by_name(var_modelbuilder, var_name_node, var_mclassdef, var_name);
7514 }
7515 /* <var107:nullable MProperty> isa nullable MMethod */
7516 cltype109 = type_nullable_model__MMethod.color;
7517 idtype110 = type_nullable_model__MMethod.id;
7518 if(var107 == NULL) {
7519 var108 = 1;
7520 } else {
7521 if(cltype109 >= var107->type->table_size) {
7522 var108 = 0;
7523 } else {
7524 var108 = var107->type->type_table[cltype109] == idtype110;
7525 }
7526 }
7527 if (unlikely(!var108)) {
7528 var_class_name = var107 == NULL ? "null" : var107->type->name;
7529 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
7530 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 551);
7531 show_backtrace(1);
7532 }
7533 var_mprop = var107;
7534 } else {
7535 }
7536 var112 = NULL;
7537 if (var_mprop == NULL) {
7538 var113 = 1; /* is null */
7539 } else {
7540 var113 = 0; /* arg is null but recv is not */
7541 }
7542 if (0) {
7543 { /* Inline kernel#Object#== (var_mprop,var112) on <var_mprop:nullable MMethod> */
7544 var_other28 = var112;
7545 {
7546 { /* Inline kernel#Object#is_same_instance (var_mprop,var_other28) on <var_mprop:nullable MMethod(MMethod)> */
7547 var118 = var_mprop == var_other28;
7548 var116 = var118;
7549 goto RET_LABEL117;
7550 RET_LABEL117:(void)0;
7551 }
7552 }
7553 var114 = var116;
7554 goto RET_LABEL115;
7555 RET_LABEL115:(void)0;
7556 }
7557 var113 = var114;
7558 }
7559 var_119 = var113;
7560 if (var113){
7561 {
7562 var120 = modelize_property__AMethPropdef__look_like_a_root_init(self, var_modelbuilder);
7563 }
7564 var111 = var120;
7565 } else {
7566 var111 = var_119;
7567 }
7568 if (var111){
7569 {
7570 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
7571 var123 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
7572 var121 = var123;
7573 RET_LABEL122:(void)0;
7574 }
7575 }
7576 var_mprop = var121;
7577 {
7578 { /* Inline parser_nodes#AMethPropdef#n_block (self) on <self:AMethPropdef> */
7579 var126 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
7580 var124 = var126;
7581 RET_LABEL125:(void)0;
7582 }
7583 }
7584 var_nb = var124;
7585 /* <var_nb:nullable AExpr> isa ABlockExpr */
7586 cltype130 = type_parser_nodes__ABlockExpr.color;
7587 idtype131 = type_parser_nodes__ABlockExpr.id;
7588 if(var_nb == NULL) {
7589 var129 = 0;
7590 } else {
7591 if(cltype130 >= var_nb->type->table_size) {
7592 var129 = 0;
7593 } else {
7594 var129 = var_nb->type->type_table[cltype130] == idtype131;
7595 }
7596 }
7597 var_132 = var129;
7598 if (var129){
7599 {
7600 { /* Inline parser_nodes#ABlockExpr#n_expr (var_nb) on <var_nb:nullable AExpr(ABlockExpr)> */
7601 var135 = var_nb->attrs[COLOR_parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <var_nb:nullable AExpr(ABlockExpr)> */
7602 if (unlikely(var135 == NULL)) {
7603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
7604 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1321);
7605 show_backtrace(1);
7606 }
7607 var133 = var135;
7608 RET_LABEL134:(void)0;
7609 }
7610 }
7611 {
7612 var136 = parser_nodes__ANodes__is_empty(var133);
7613 }
7614 var128 = var136;
7615 } else {
7616 var128 = var_132;
7617 }
7618 var_137 = var128;
7619 if (var128){
7620 {
7621 { /* Inline parser_nodes#APropdef#n_doc (self) on <self:AMethPropdef> */
7622 var140 = self->attrs[COLOR_parser_nodes__APropdef___n_doc].val; /* _n_doc on <self:AMethPropdef> */
7623 var138 = var140;
7624 RET_LABEL139:(void)0;
7625 }
7626 }
7627 var141 = NULL;
7628 if (var138 == NULL) {
7629 var142 = 1; /* is null */
7630 } else {
7631 var142 = 0; /* arg is null but recv is not */
7632 }
7633 if (0) {
7634 { /* Inline kernel#Object#== (var138,var141) on <var138:nullable ADoc> */
7635 var_other28 = var141;
7636 {
7637 { /* Inline kernel#Object#is_same_instance (var138,var_other28) on <var138:nullable ADoc(ADoc)> */
7638 var147 = var138 == var_other28;
7639 var145 = var147;
7640 goto RET_LABEL146;
7641 RET_LABEL146:(void)0;
7642 }
7643 }
7644 var143 = var145;
7645 goto RET_LABEL144;
7646 RET_LABEL144:(void)0;
7647 }
7648 var142 = var143;
7649 }
7650 var127 = var142;
7651 } else {
7652 var127 = var_137;
7653 }
7654 if (var127){
7655 if (varonce148) {
7656 var149 = varonce148;
7657 } else {
7658 var150 = "useless-init";
7659 var151 = 12;
7660 var152 = string__NativeString__to_s_with_length(var150, var151);
7661 var149 = var152;
7662 varonce148 = var149;
7663 }
7664 if (varonce153) {
7665 var154 = varonce153;
7666 } else {
7667 var155 = "Warning: useless empty init in ";
7668 var156 = 31;
7669 var157 = string__NativeString__to_s_with_length(var155, var156);
7670 var154 = var157;
7671 varonce153 = var154;
7672 }
7673 var158 = NEW_array__Array(&type_array__Arraykernel__Object);
7674 { /* var158 = array_instance Array[Object] */
7675 var159 = 2;
7676 var160 = NEW_array__NativeArray(var159, &type_array__NativeArraykernel__Object);
7677 ((struct instance_array__NativeArray*)var160)->values[0] = (val*) var154;
7678 ((struct instance_array__NativeArray*)var160)->values[1] = (val*) var_mclassdef;
7679 {
7680 ((void (*)(val*, val*, long))(var158->class->vft[COLOR_array__Array__with_native]))(var158, var160, var159) /* with_native on <var158:Array[Object]>*/;
7681 }
7682 }
7683 {
7684 var161 = ((val* (*)(val*))(var158->class->vft[COLOR_string__Object__to_s]))(var158) /* to_s on <var158:Array[Object]>*/;
7685 }
7686 {
7687 modelbuilder__ModelBuilder__advice(var_modelbuilder, self, var149, var161); /* Direct call modelbuilder#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
7688 }
7689 } else {
7690 }
7691 } else {
7692 }
7693 var162 = NULL;
7694 if (var_mprop == NULL) {
7695 var163 = 1; /* is null */
7696 } else {
7697 var163 = 0; /* arg is null but recv is not */
7698 }
7699 if (0) {
7700 { /* Inline kernel#Object#== (var_mprop,var162) on <var_mprop:nullable MMethod> */
7701 var_other28 = var162;
7702 {
7703 { /* Inline kernel#Object#is_same_instance (var_mprop,var_other28) on <var_mprop:nullable MMethod(MMethod)> */
7704 var168 = var_mprop == var_other28;
7705 var166 = var168;
7706 goto RET_LABEL167;
7707 RET_LABEL167:(void)0;
7708 }
7709 }
7710 var164 = var166;
7711 goto RET_LABEL165;
7712 RET_LABEL165:(void)0;
7713 }
7714 var163 = var164;
7715 }
7716 if (var163){
7717 {
7718 { /* Inline parser_nodes#APropdef#n_visibility (self) on <self:AMethPropdef> */
7719 var171 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
7720 var169 = var171;
7721 RET_LABEL170:(void)0;
7722 }
7723 }
7724 {
7725 var172 = modelize_property__APropdef__new_property_visibility(self, var_modelbuilder, var_mclassdef, var169);
7726 }
7727 var_mvisibility = var172;
7728 var173 = NEW_model__MMethod(&type_model__MMethod);
7729 {
7730 model__MMethod__init(var173, var_mclassdef, var_name, var_mvisibility); /* Direct call model#MMethod#init on <var173:MMethod>*/
7731 }
7732 var_mprop = var173;
7733 {
7734 var175 = modelize_property__AMethPropdef__look_like_a_root_init(self, var_modelbuilder);
7735 }
7736 var_176 = var175;
7737 if (var175){
7738 {
7739 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
7740 var179 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
7741 var177 = var179;
7742 RET_LABEL178:(void)0;
7743 }
7744 }
7745 var180 = NULL;
7746 if (var177 == NULL) {
7747 var181 = 1; /* is null */
7748 } else {
7749 var181 = 0; /* arg is null but recv is not */
7750 }
7751 if (0) {
7752 { /* Inline kernel#Object#== (var177,var180) on <var177:nullable MMethod> */
7753 var_other28 = var180;
7754 {
7755 { /* Inline kernel#Object#is_same_instance (var177,var_other28) on <var177:nullable MMethod(MMethod)> */
7756 var186 = var177 == var_other28;
7757 var184 = var186;
7758 goto RET_LABEL185;
7759 RET_LABEL185:(void)0;
7760 }
7761 }
7762 var182 = var184;
7763 goto RET_LABEL183;
7764 RET_LABEL183:(void)0;
7765 }
7766 var181 = var182;
7767 }
7768 var174 = var181;
7769 } else {
7770 var174 = var_176;
7771 }
7772 if (var174){
7773 {
7774 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod= (var_modelbuilder,var_mprop) on <var_modelbuilder:ModelBuilder> */
7775 var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___the_root_init_mmethod].val = var_mprop; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
7776 RET_LABEL187:(void)0;
7777 }
7778 }
7779 var188 = 1;
7780 {
7781 { /* Inline model#MMethod#is_root_init= (var_mprop,var188) on <var_mprop:nullable MMethod(MMethod)> */
7782 var_mprop->attrs[COLOR_model__MMethod___is_root_init].s = var188; /* _is_root_init on <var_mprop:nullable MMethod(MMethod)> */
7783 RET_LABEL189:(void)0;
7784 }
7785 }
7786 } else {
7787 }
7788 {
7789 { /* Inline model#MMethod#is_init= (var_mprop,var_is_init) on <var_mprop:nullable MMethod(MMethod)> */
7790 var_mprop->attrs[COLOR_model__MMethod___is_init].s = var_is_init; /* _is_init on <var_mprop:nullable MMethod(MMethod)> */
7791 RET_LABEL190:(void)0;
7792 }
7793 }
7794 var191 = NULL;
7795 if (var_n_kwnew == NULL) {
7796 var192 = 0; /* is null */
7797 } else {
7798 var192 = 1; /* arg is null and recv is not */
7799 }
7800 if (0) {
7801 { /* Inline kernel#Object#!= (var_n_kwnew,var191) on <var_n_kwnew:nullable TKwnew> */
7802 var_other = var191;
7803 {
7804 var196 = ((short int (*)(val*, val*))(var_n_kwnew->class->vft[COLOR_kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
7805 var195 = var196;
7806 }
7807 var197 = !var195;
7808 var193 = var197;
7809 goto RET_LABEL194;
7810 RET_LABEL194:(void)0;
7811 }
7812 var192 = var193;
7813 }
7814 {
7815 { /* Inline model#MMethod#is_new= (var_mprop,var192) on <var_mprop:nullable MMethod(MMethod)> */
7816 var_mprop->attrs[COLOR_model__MMethod___is_new].s = var192; /* _is_new on <var_mprop:nullable MMethod(MMethod)> */
7817 RET_LABEL198:(void)0;
7818 }
7819 }
7820 {
7821 { /* Inline parser_nodes#ANode#parent (self) on <self:AMethPropdef> */
7822 var201 = self->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <self:AMethPropdef> */
7823 var199 = var201;
7824 RET_LABEL200:(void)0;
7825 }
7826 }
7827 /* <var199:nullable ANode> isa ATopClassdef */
7828 cltype203 = type_parser_nodes__ATopClassdef.color;
7829 idtype204 = type_parser_nodes__ATopClassdef.id;
7830 if(var199 == NULL) {
7831 var202 = 0;
7832 } else {
7833 if(cltype203 >= var199->type->table_size) {
7834 var202 = 0;
7835 } else {
7836 var202 = var199->type->type_table[cltype203] == idtype204;
7837 }
7838 }
7839 if (var202){
7840 var205 = 1;
7841 {
7842 { /* Inline model#MMethod#is_toplevel= (var_mprop,var205) on <var_mprop:nullable MMethod(MMethod)> */
7843 var_mprop->attrs[COLOR_model__MMethod___is_toplevel].s = var205; /* _is_toplevel on <var_mprop:nullable MMethod(MMethod)> */
7844 RET_LABEL206:(void)0;
7845 }
7846 }
7847 } else {
7848 }
7849 {
7850 { /* Inline parser_nodes#APropdef#n_kwredef (self) on <self:AMethPropdef> */
7851 var209 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
7852 var207 = var209;
7853 RET_LABEL208:(void)0;
7854 }
7855 }
7856 var210 = 0;
7857 {
7858 var211 = modelize_property__APropdef__check_redef_keyword(self, var_modelbuilder, var_mclassdef, var207, var210, var_mprop);
7859 }
7860 var212 = !var211;
7861 if (var212){
7862 goto RET_LABEL;
7863 } else {
7864 }
7865 } else {
7866 {
7867 { /* Inline model#MMethod#is_root_init (var_mprop) on <var_mprop:nullable MMethod(MMethod)> */
7868 var216 = var_mprop->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var_mprop:nullable MMethod(MMethod)> */
7869 var214 = var216;
7870 RET_LABEL215:(void)0;
7871 }
7872 }
7873 var217 = !var214;
7874 var_218 = var217;
7875 if (var217){
7876 {
7877 { /* Inline parser_nodes#APropdef#n_kwredef (self) on <self:AMethPropdef> */
7878 var221 = self->attrs[COLOR_parser_nodes__APropdef___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
7879 var219 = var221;
7880 RET_LABEL220:(void)0;
7881 }
7882 }
7883 /* <self:AMethPropdef> isa AMainMethPropdef */
7884 cltype223 = type_parser_nodes__AMainMethPropdef.color;
7885 idtype224 = type_parser_nodes__AMainMethPropdef.id;
7886 if(cltype223 >= self->type->table_size) {
7887 var222 = 0;
7888 } else {
7889 var222 = self->type->type_table[cltype223] == idtype224;
7890 }
7891 var225 = !var222;
7892 {
7893 var226 = modelize_property__APropdef__check_redef_keyword(self, var_modelbuilder, var_mclassdef, var219, var225, var_mprop);
7894 }
7895 var227 = !var226;
7896 var213 = var227;
7897 } else {
7898 var213 = var_218;
7899 }
7900 if (var213){
7901 goto RET_LABEL;
7902 } else {
7903 }
7904 {
7905 { /* Inline parser_nodes#APropdef#n_visibility (self) on <self:AMethPropdef> */
7906 var230 = self->attrs[COLOR_parser_nodes__APropdef___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
7907 var228 = var230;
7908 RET_LABEL229:(void)0;
7909 }
7910 }
7911 {
7912 modelize_property__APropdef__check_redef_property_visibility(self, var_modelbuilder, var228, var_mprop); /* Direct call modelize_property#APropdef#check_redef_property_visibility on <self:AMethPropdef>*/
7913 }
7914 }
7915 {
7916 { /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
7917 var233 = var_mclassdef->attrs[COLOR_modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
7918 if (unlikely(var233 == NULL)) {
7919 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
7920 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 310);
7921 show_backtrace(1);
7922 }
7923 var231 = var233;
7924 RET_LABEL232:(void)0;
7925 }
7926 }
7927 {
7928 ((void (*)(val*, val*, val*))(var231->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var231, var_mprop, self) /* []= on <var231:Map[MProperty, APropdef]>*/;
7929 }
7930 var234 = NEW_model__MMethodDef(&type_model__MMethodDef);
7931 {
7932 { /* Inline parser_nodes#ANode#location (self) on <self:AMethPropdef> */
7933 var237 = self->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <self:AMethPropdef> */
7934 if (unlikely(var237 == NULL)) {
7935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
7936 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
7937 show_backtrace(1);
7938 }
7939 var235 = var237;
7940 RET_LABEL236:(void)0;
7941 }
7942 }
7943 {
7944 model__MMethodDef__init(var234, var_mclassdef, var_mprop, var235); /* Direct call model#MMethodDef#init on <var234:MMethodDef>*/
7945 }
7946 var_mpropdef = var234;
7947 {
7948 modelize_property__APropdef__set_doc(self, var_mpropdef, var_modelbuilder); /* Direct call modelize_property#APropdef#set_doc on <self:AMethPropdef>*/
7949 }
7950 /* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
7951 type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
7952 cltype239 = type_struct->color;
7953 idtype240 = type_struct->id;
7954 if(cltype239 >= var_mpropdef->type->table_size) {
7955 var238 = 0;
7956 } else {
7957 var238 = var_mpropdef->type->type_table[cltype239] == idtype240;
7958 }
7959 if (unlikely(!var238)) {
7960 var_class_name241 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
7961 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name241);
7962 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 580);
7963 show_backtrace(1);
7964 }
7965 {
7966 { /* Inline modelize_property#APropdef#mpropdef= (self,var_mpropdef) on <self:AMethPropdef> */
7967 /* Covariant cast for argument 0 (mpropdef) <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
7968 /* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
7969 type_struct246 = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
7970 cltype244 = type_struct246->color;
7971 idtype245 = type_struct246->id;
7972 if(cltype244 >= var_mpropdef->type->table_size) {
7973 var243 = 0;
7974 } else {
7975 var243 = var_mpropdef->type->type_table[cltype244] == idtype245;
7976 }
7977 if (unlikely(!var243)) {
7978 var_class_name247 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
7979 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name247);
7980 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 319);
7981 show_backtrace(1);
7982 }
7983 self->attrs[COLOR_modelize_property__APropdef___mpropdef].val = var_mpropdef; /* _mpropdef on <self:AMethPropdef> */
7984 RET_LABEL242:(void)0;
7985 }
7986 }
7987 {
7988 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
7989 var250 = var_modelbuilder->attrs[COLOR_modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
7990 if (unlikely(var250 == NULL)) {
7991 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
7992 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 39);
7993 show_backtrace(1);
7994 }
7995 var248 = var250;
7996 RET_LABEL249:(void)0;
7997 }
7998 }
7999 {
8000 hash_collection__HashMap___91d_93d_61d(var248, var_mpropdef, self); /* Direct call hash_collection#HashMap#[]= on <var248:HashMap[MPropDef, APropdef]>*/
8001 }
8002 {
8003 var251 = model__MPropDef__is_intro(var_mpropdef);
8004 }
8005 if (var251){
8006 {
8007 { /* Inline modelbuilder#ModelBuilder#toolcontext (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
8008 var254 = var_modelbuilder->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var_modelbuilder:ModelBuilder> */
8009 if (unlikely(var254 == NULL)) {
8010 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8011 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
8012 show_backtrace(1);
8013 }
8014 var252 = var254;
8015 RET_LABEL253:(void)0;
8016 }
8017 }
8018 if (varonce255) {
8019 var256 = varonce255;
8020 } else {
8021 var257 = " introduces new method ";
8022 var258 = 23;
8023 var259 = string__NativeString__to_s_with_length(var257, var258);
8024 var256 = var259;
8025 varonce255 = var256;
8026 }
8027 {
8028 var260 = model__MProperty__full_name(var_mprop);
8029 }
8030 var261 = NEW_array__Array(&type_array__Arraykernel__Object);
8031 { /* var261 = array_instance Array[Object] */
8032 var262 = 3;
8033 var263 = NEW_array__NativeArray(var262, &type_array__NativeArraykernel__Object);
8034 ((struct instance_array__NativeArray*)var263)->values[0] = (val*) var_mpropdef;
8035 ((struct instance_array__NativeArray*)var263)->values[1] = (val*) var256;
8036 ((struct instance_array__NativeArray*)var263)->values[2] = (val*) var260;
8037 {
8038 ((void (*)(val*, val*, long))(var261->class->vft[COLOR_array__Array__with_native]))(var261, var263, var262) /* with_native on <var261:Array[Object]>*/;
8039 }
8040 }
8041 {
8042 var264 = ((val* (*)(val*))(var261->class->vft[COLOR_string__Object__to_s]))(var261) /* to_s on <var261:Array[Object]>*/;
8043 }
8044 var265 = 3;
8045 {
8046 toolcontext__ToolContext__info(var252, var264, var265); /* Direct call toolcontext#ToolContext#info on <var252:ToolContext>*/
8047 }
8048 } else {
8049 {
8050 { /* Inline modelbuilder#ModelBuilder#toolcontext (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
8051 var268 = var_modelbuilder->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var_modelbuilder:ModelBuilder> */
8052 if (unlikely(var268 == NULL)) {
8053 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8054 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
8055 show_backtrace(1);
8056 }
8057 var266 = var268;
8058 RET_LABEL267:(void)0;
8059 }
8060 }
8061 if (varonce269) {
8062 var270 = varonce269;
8063 } else {
8064 var271 = " redefines method ";
8065 var272 = 18;
8066 var273 = string__NativeString__to_s_with_length(var271, var272);
8067 var270 = var273;
8068 varonce269 = var270;
8069 }
8070 {
8071 var274 = model__MProperty__full_name(var_mprop);
8072 }
8073 var275 = NEW_array__Array(&type_array__Arraykernel__Object);
8074 { /* var275 = array_instance Array[Object] */
8075 var276 = 3;
8076 var277 = NEW_array__NativeArray(var276, &type_array__NativeArraykernel__Object);
8077 ((struct instance_array__NativeArray*)var277)->values[0] = (val*) var_mpropdef;
8078 ((struct instance_array__NativeArray*)var277)->values[1] = (val*) var270;
8079 ((struct instance_array__NativeArray*)var277)->values[2] = (val*) var274;
8080 {
8081 ((void (*)(val*, val*, long))(var275->class->vft[COLOR_array__Array__with_native]))(var275, var277, var276) /* with_native on <var275:Array[Object]>*/;
8082 }
8083 }
8084 {
8085 var278 = ((val* (*)(val*))(var275->class->vft[COLOR_string__Object__to_s]))(var275) /* to_s on <var275:Array[Object]>*/;
8086 }
8087 var279 = 3;
8088 {
8089 toolcontext__ToolContext__info(var266, var278, var279); /* Direct call toolcontext#ToolContext#info on <var266:ToolContext>*/
8090 }
8091 }
8092 RET_LABEL:;
8093 }
8094 /* method modelize_property#AMethPropdef#build_property for (self: Object, ModelBuilder, MClassDef) */
8095 void VIRTUAL_modelize_property__AMethPropdef__build_property(val* self, val* p0, val* p1) {
8096 modelize_property__AMethPropdef__build_property(self, p0, p1); /* Direct call modelize_property#AMethPropdef#build_property on <self:Object(AMethPropdef)>*/
8097 RET_LABEL:;
8098 }
8099 /* method modelize_property#AMethPropdef#build_signature for (self: AMethPropdef, ModelBuilder) */
8100 void modelize_property__AMethPropdef__build_signature(val* self, val* p0) {
8101 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
8102 val* var /* : nullable MPropDef */;
8103 val* var2 /* : nullable MPropDef */;
8104 val* var_mpropdef /* var mpropdef: nullable MMethodDef */;
8105 val* var3 /* : null */;
8106 short int var4 /* : Bool */;
8107 short int var5 /* : Bool */;
8108 val* var_other /* var other: nullable Object */;
8109 short int var7 /* : Bool */;
8110 short int var9 /* : Bool */;
8111 val* var10 /* : MClassDef */;
8112 val* var12 /* : MClassDef */;
8113 val* var_mclassdef /* var mclassdef: MClassDef */;
8114 val* var13 /* : MModule */;
8115 val* var15 /* : MModule */;
8116 val* var_mmodule /* var mmodule: MModule */;
8117 val* var16 /* : nullable ASignature */;
8118 val* var18 /* : nullable ASignature */;
8119 val* var_nsig /* var nsig: nullable ASignature */;
8120 short int var19 /* : Bool */;
8121 val* var20 /* : MProperty */;
8122 val* var22 /* : MProperty */;
8123 short int var23 /* : Bool */;
8124 short int var25 /* : Bool */;
8125 short int var_ /* var : Bool */;
8126 short int var26 /* : Bool */;
8127 short int var27 /* : Bool */;
8128 val* var28 /* : MClass */;
8129 val* var30 /* : MClass */;
8130 val* var31 /* : nullable MMethodDef */;
8131 val* var33 /* : nullable MMethodDef */;
8132 val* var_root_init /* var root_init: nullable MMethodDef */;
8133 val* var34 /* : null */;
8134 short int var35 /* : Bool */;
8135 short int var36 /* : Bool */;
8136 val* var_other38 /* var other: nullable Object */;
8137 short int var39 /* : Bool */;
8138 short int var40 /* : Bool */;
8139 short int var41 /* : Bool */;
8140 val* var42 /* : nullable MSignature */;
8141 val* var44 /* : nullable MSignature */;
8142 val* var46 /* : Array[MProperty] */;
8143 val* var48 /* : Array[MProperty] */;
8144 short int var49 /* : Bool */;
8145 val* var50 /* : Array[MProperty] */;
8146 val* var52 /* : Array[MProperty] */;
8147 val* var53 /* : Array[MProperty] */;
8148 val* var55 /* : Array[MProperty] */;
8149 val* var56 /* : Array[String] */;
8150 val* var_param_names /* var param_names: Array[String] */;
8151 val* var57 /* : Array[MType] */;
8152 val* var_param_types /* var param_types: Array[MType] */;
8153 long var58 /* : Int */;
8154 long var59 /* : Int */;
8155 long var61 /* : Int */;
8156 long var_vararg_rank /* var vararg_rank: Int */;
8157 val* var62 /* : null */;
8158 val* var_ret_type /* var ret_type: nullable MType */;
8159 val* var63 /* : null */;
8160 short int var64 /* : Bool */;
8161 short int var65 /* : Bool */;
8162 short int var67 /* : Bool */;
8163 short int var68 /* : Bool */;
8164 short int var69 /* : Bool */;
8165 short int var70 /* : Bool */;
8166 short int var71 /* : Bool */;
8167 val* var72 /* : Array[String] */;
8168 val* var74 /* : Array[String] */;
8169 val* var75 /* : Array[MType] */;
8170 val* var77 /* : Array[MType] */;
8171 long var78 /* : Int */;
8172 long var80 /* : Int */;
8173 val* var81 /* : nullable MType */;
8174 val* var83 /* : nullable MType */;
8175 val* var84 /* : null */;
8176 val* var_msignature /* var msignature: nullable MSignature */;
8177 short int var85 /* : Bool */;
8178 short int var86 /* : Bool */;
8179 val* var87 /* : MProperty */;
8180 val* var89 /* : MProperty */;
8181 val* var90 /* : MPropDef */;
8182 val* var92 /* : MPropDef */;
8183 val* var93 /* : nullable MSignature */;
8184 val* var95 /* : nullable MSignature */;
8185 val* var96 /* : null */;
8186 short int var97 /* : Bool */;
8187 short int var98 /* : Bool */;
8188 short int var100 /* : Bool */;
8189 short int var102 /* : Bool */;
8190 long var103 /* : Int */;
8191 long var105 /* : Int */;
8192 long var106 /* : Int */;
8193 short int var107 /* : Bool */;
8194 short int var108 /* : Bool */;
8195 short int var110 /* : Bool */;
8196 short int var111 /* : Bool */;
8197 val* var112 /* : null */;
8198 short int var113 /* : Bool */;
8199 short int var114 /* : Bool */;
8200 short int var116 /* : Bool */;
8201 short int var117 /* : Bool */;
8202 short int var118 /* : Bool */;
8203 val* var_node /* var node: ANode */;
8204 static val* varonce;
8205 val* var119 /* : String */;
8206 char* var120 /* : NativeString */;
8207 long var121 /* : Int */;
8208 val* var122 /* : FlatString */;
8209 static val* varonce123;
8210 val* var124 /* : String */;
8211 char* var125 /* : NativeString */;
8212 long var126 /* : Int */;
8213 val* var127 /* : FlatString */;
8214 val* var128 /* : MProperty */;
8215 val* var130 /* : MProperty */;
8216 val* var131 /* : MPropDef */;
8217 val* var133 /* : MPropDef */;
8218 static val* varonce134;
8219 val* var135 /* : String */;
8220 char* var136 /* : NativeString */;
8221 long var137 /* : Int */;
8222 val* var138 /* : FlatString */;
8223 long var139 /* : Int */;
8224 long var141 /* : Int */;
8225 static val* varonce142;
8226 val* var143 /* : String */;
8227 char* var144 /* : NativeString */;
8228 long var145 /* : Int */;
8229 val* var146 /* : FlatString */;
8230 long var147 /* : Int */;
8231 static val* varonce148;
8232 val* var149 /* : String */;
8233 char* var150 /* : NativeString */;
8234 long var151 /* : Int */;
8235 val* var152 /* : FlatString */;
8236 val* var153 /* : Array[Object] */;
8237 long var154 /* : Int */;
8238 val* var155 /* : NativeArray[Object] */;
8239 val* var156 /* : Object */;
8240 val* var157 /* : Object */;
8241 val* var158 /* : String */;
8242 short int var159 /* : Bool */;
8243 val* var160 /* : MProperty */;
8244 val* var162 /* : MProperty */;
8245 short int var163 /* : Bool */;
8246 short int var165 /* : Bool */;
8247 short int var_166 /* var : Bool */;
8248 val* var167 /* : MProperty */;
8249 val* var169 /* : MProperty */;
8250 short int var170 /* : Bool */;
8251 short int var172 /* : Bool */;
8252 short int var173 /* : Bool */;
8253 val* var174 /* : Array[MClassType] */;
8254 val* var176 /* : Array[MClassType] */;
8255 val* var_177 /* var : Array[MClassType] */;
8256 val* var178 /* : ArrayIterator[nullable Object] */;
8257 val* var_179 /* var : ArrayIterator[MClassType] */;
8258 short int var180 /* : Bool */;
8259 val* var181 /* : nullable Object */;
8260 val* var_msupertype /* var msupertype: MClassType */;
8261 val* var182 /* : MClassType */;
8262 val* var184 /* : MClassType */;
8263 val* var185 /* : MClassType */;
8264 val* var186 /* : MProperty */;
8265 val* var188 /* : MProperty */;
8266 val* var189 /* : String */;
8267 val* var191 /* : String */;
8268 val* var192 /* : nullable MProperty */;
8269 val* var_candidate /* var candidate: nullable MProperty */;
8270 val* var193 /* : null */;
8271 short int var194 /* : Bool */;
8272 short int var195 /* : Bool */;
8273 short int var197 /* : Bool */;
8274 short int var198 /* : Bool */;
8275 short int var199 /* : Bool */;
8276 val* var200 /* : null */;
8277 short int var201 /* : Bool */;
8278 short int var202 /* : Bool */;
8279 short int var204 /* : Bool */;
8280 short int var206 /* : Bool */;
8281 val* var207 /* : MPropDef */;
8282 val* var209 /* : MPropDef */;
8283 short int var210 /* : Bool */;
8284 int cltype;
8285 int idtype;
8286 const char* var_class_name;
8287 val* var211 /* : nullable MSignature */;
8288 val* var213 /* : nullable MSignature */;
8289 short int var215 /* : Bool */;
8290 short int var216 /* : Bool */;
8291 short int var217 /* : Bool */;
8292 val* var218 /* : null */;
8293 short int var219 /* : Bool */;
8294 short int var220 /* : Bool */;
8295 short int var222 /* : Bool */;
8296 short int var223 /* : Bool */;
8297 short int var224 /* : Bool */;
8298 short int var_225 /* var : Bool */;
8299 long var226 /* : Int */;
8300 long var228 /* : Int */;
8301 long var229 /* : Int */;
8302 long var231 /* : Int */;
8303 short int var232 /* : Bool */;
8304 short int var233 /* : Bool */;
8305 short int var235 /* : Bool */;
8306 short int var236 /* : Bool */;
8307 short int var_237 /* var : Bool */;
8308 long var238 /* : Int */;
8309 long var240 /* : Int */;
8310 long var241 /* : Int */;
8311 short int var242 /* : Bool */;
8312 short int var243 /* : Bool */;
8313 short int var245 /* : Bool */;
8314 short int var_246 /* var : Bool */;
8315 long var247 /* : Int */;
8316 long var249 /* : Int */;
8317 long var250 /* : Int */;
8318 short int var251 /* : Bool */;
8319 short int var252 /* : Bool */;
8320 short int var254 /* : Bool */;
8321 val* var255 /* : Array[MType] */;
8322 val* var256 /* : Array[MParameter] */;
8323 val* var258 /* : Array[MParameter] */;
8324 val* var_259 /* var : Array[MParameter] */;
8325 val* var260 /* : ArrayIterator[nullable Object] */;
8326 val* var_261 /* var : ArrayIterator[MParameter] */;
8327 short int var262 /* : Bool */;
8328 val* var263 /* : nullable Object */;
8329 val* var_mparameter /* var mparameter: MParameter */;
8330 val* var264 /* : MType */;
8331 val* var266 /* : MType */;
8332 long var269 /* : Int */;
8333 long var271 /* : Int */;
8334 short int var272 /* : Bool */;
8335 val* var273 /* : null */;
8336 short int var274 /* : Bool */;
8337 short int var275 /* : Bool */;
8338 short int var277 /* : Bool */;
8339 short int var278 /* : Bool */;
8340 short int var279 /* : Bool */;
8341 short int var_280 /* var : Bool */;
8342 val* var281 /* : null */;
8343 short int var282 /* : Bool */;
8344 short int var283 /* : Bool */;
8345 short int var285 /* : Bool */;
8346 short int var287 /* : Bool */;
8347 val* var288 /* : nullable MType */;
8348 val* var290 /* : nullable MType */;
8349 long var291 /* : Int */;
8350 long var293 /* : Int */;
8351 long var294 /* : Int */;
8352 long var296 /* : Int */;
8353 short int var297 /* : Bool */;
8354 short int var298 /* : Bool */;
8355 short int var300 /* : Bool */;
8356 short int var301 /* : Bool */;
8357 val* var302 /* : ANodes[AParam] */;
8358 val* var304 /* : ANodes[AParam] */;
8359 long var305 /* : Int */;
8360 long var307 /* : Int */;
8361 val* var308 /* : ANode */;
8362 static val* varonce309;
8363 val* var310 /* : String */;
8364 char* var311 /* : NativeString */;
8365 long var312 /* : Int */;
8366 val* var313 /* : FlatString */;
8367 long var314 /* : Int */;
8368 long var316 /* : Int */;
8369 val* var317 /* : nullable Object */;
8370 static val* varonce318;
8371 val* var319 /* : String */;
8372 char* var320 /* : NativeString */;
8373 long var321 /* : Int */;
8374 val* var322 /* : FlatString */;
8375 val* var323 /* : Array[Object] */;
8376 long var324 /* : Int */;
8377 val* var325 /* : NativeArray[Object] */;
8378 val* var326 /* : String */;
8379 val* var327 /* : Array[MParameter] */;
8380 val* var_mparameters /* var mparameters: Array[MParameter] */;
8381 long var328 /* : Int */;
8382 long var_i /* var i: Int */;
8383 long var329 /* : Int */;
8384 long var331 /* : Int */;
8385 long var_332 /* var : Int */;
8386 short int var333 /* : Bool */;
8387 short int var335 /* : Bool */;
8388 int cltype336;
8389 int idtype337;
8390 const char* var_class_name338;
8391 short int var339 /* : Bool */;
8392 val* var340 /* : MParameter */;
8393 val* var341 /* : nullable Object */;
8394 val* var342 /* : nullable Object */;
8395 short int var343 /* : Bool */;
8396 short int var344 /* : Bool */;
8397 short int var346 /* : Bool */;
8398 val* var_mparameter347 /* var mparameter: MParameter */;
8399 val* var348 /* : null */;
8400 short int var349 /* : Bool */;
8401 short int var350 /* : Bool */;
8402 short int var352 /* : Bool */;
8403 short int var353 /* : Bool */;
8404 short int var354 /* : Bool */;
8405 val* var355 /* : ANodes[AParam] */;
8406 val* var357 /* : ANodes[AParam] */;
8407 val* var358 /* : ANode */;
8408 long var360 /* : Int */;
8409 long var361 /* : Int */;
8410 short int var363 /* : Bool */;
8411 val* var364 /* : null */;
8412 short int var365 /* : Bool */;
8413 short int var366 /* : Bool */;
8414 short int var368 /* : Bool */;
8415 short int var370 /* : Bool */;
8416 short int var_371 /* var : Bool */;
8417 val* var372 /* : MProperty */;
8418 val* var374 /* : MProperty */;
8419 short int var375 /* : Bool */;
8420 short int var377 /* : Bool */;
8421 val* var378 /* : MClass */;
8422 val* var380 /* : MClass */;
8423 val* var381 /* : MClassType */;
8424 val* var383 /* : MClassType */;
8425 val* var384 /* : MSignature */;
8426 static val* varonce386;
8427 val* var387 /* : String */;
8428 char* var388 /* : NativeString */;
8429 long var389 /* : Int */;
8430 val* var390 /* : FlatString */;
8431 val* var391 /* : nullable AAnnotation */;
8432 val* var392 /* : null */;
8433 short int var393 /* : Bool */;
8434 short int var394 /* : Bool */;
8435 short int var396 /* : Bool */;
8436 short int var397 /* : Bool */;
8437 short int var398 /* : Bool */;
8438 static val* varonce400;
8439 val* var401 /* : String */;
8440 char* var402 /* : NativeString */;
8441 long var403 /* : Int */;
8442 val* var404 /* : FlatString */;
8443 val* var405 /* : nullable AAnnotation */;
8444 val* var406 /* : null */;
8445 short int var407 /* : Bool */;
8446 short int var408 /* : Bool */;
8447 short int var410 /* : Bool */;
8448 short int var411 /* : Bool */;
8449 short int var412 /* : Bool */;
8450 short int var414 /* : Bool */;
8451 val* var415 /* : nullable AExternCodeBlock */;
8452 val* var417 /* : nullable AExternCodeBlock */;
8453 val* var418 /* : null */;
8454 short int var419 /* : Bool */;
8455 short int var420 /* : Bool */;
8456 short int var422 /* : Bool */;
8457 short int var423 /* : Bool */;
8458 short int var424 /* : Bool */;
8459 short int var_425 /* var : Bool */;
8460 static val* varonce426;
8461 val* var427 /* : String */;
8462 char* var428 /* : NativeString */;
8463 long var429 /* : Int */;
8464 val* var430 /* : FlatString */;
8465 val* var431 /* : nullable AAnnotation */;
8466 val* var432 /* : null */;
8467 short int var433 /* : Bool */;
8468 short int var434 /* : Bool */;
8469 short int var436 /* : Bool */;
8470 short int var437 /* : Bool */;
8471 short int var438 /* : Bool */;
8472 var_modelbuilder = p0;
8473 {
8474 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
8475 var2 = self->attrs[COLOR_modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
8476 var = var2;
8477 RET_LABEL1:(void)0;
8478 }
8479 }
8480 var_mpropdef = var;
8481 var3 = NULL;
8482 if (var_mpropdef == NULL) {
8483 var4 = 1; /* is null */
8484 } else {
8485 var4 = 0; /* arg is null but recv is not */
8486 }
8487 if (0) {
8488 { /* Inline kernel#Object#== (var_mpropdef,var3) on <var_mpropdef:nullable MMethodDef> */
8489 var_other = var3;
8490 {
8491 { /* Inline kernel#Object#is_same_instance (var_mpropdef,var_other) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8492 var9 = var_mpropdef == var_other;
8493 var7 = var9;
8494 goto RET_LABEL8;
8495 RET_LABEL8:(void)0;
8496 }
8497 }
8498 var5 = var7;
8499 goto RET_LABEL6;
8500 RET_LABEL6:(void)0;
8501 }
8502 var4 = var5;
8503 }
8504 if (var4){
8505 goto RET_LABEL;
8506 } else {
8507 }
8508 {
8509 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8510 var12 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8511 if (unlikely(var12 == NULL)) {
8512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8513 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
8514 show_backtrace(1);
8515 }
8516 var10 = var12;
8517 RET_LABEL11:(void)0;
8518 }
8519 }
8520 var_mclassdef = var10;
8521 {
8522 { /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
8523 var15 = var_mclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
8524 if (unlikely(var15 == NULL)) {
8525 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8526 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
8527 show_backtrace(1);
8528 }
8529 var13 = var15;
8530 RET_LABEL14:(void)0;
8531 }
8532 }
8533 var_mmodule = var13;
8534 {
8535 { /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
8536 var18 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
8537 var16 = var18;
8538 RET_LABEL17:(void)0;
8539 }
8540 }
8541 var_nsig = var16;
8542 {
8543 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8544 var22 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8545 if (unlikely(var22 == NULL)) {
8546 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8547 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8548 show_backtrace(1);
8549 }
8550 var20 = var22;
8551 RET_LABEL21:(void)0;
8552 }
8553 }
8554 {
8555 { /* Inline model#MMethod#is_root_init (var20) on <var20:MProperty(MMethod)> */
8556 var25 = var20->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var20:MProperty(MMethod)> */
8557 var23 = var25;
8558 RET_LABEL24:(void)0;
8559 }
8560 }
8561 var_ = var23;
8562 if (var23){
8563 {
8564 var26 = model__MClassDef__is_intro(var_mclassdef);
8565 }
8566 var27 = !var26;
8567 var19 = var27;
8568 } else {
8569 var19 = var_;
8570 }
8571 if (var19){
8572 {
8573 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
8574 var30 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
8575 if (unlikely(var30 == NULL)) {
8576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8577 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
8578 show_backtrace(1);
8579 }
8580 var28 = var30;
8581 RET_LABEL29:(void)0;
8582 }
8583 }
8584 {
8585 { /* Inline modelize_property#MClass#root_init (var28) on <var28:MClass> */
8586 var33 = var28->attrs[COLOR_modelize_property__MClass___root_init].val; /* _root_init on <var28:MClass> */
8587 var31 = var33;
8588 RET_LABEL32:(void)0;
8589 }
8590 }
8591 var_root_init = var31;
8592 var34 = NULL;
8593 if (var_root_init == NULL) {
8594 var35 = 0; /* is null */
8595 } else {
8596 var35 = 1; /* arg is null and recv is not */
8597 }
8598 if (0) {
8599 { /* Inline kernel#Object#!= (var_root_init,var34) on <var_root_init:nullable MMethodDef> */
8600 var_other38 = var34;
8601 {
8602 var40 = ((short int (*)(val*, val*))(var_root_init->class->vft[COLOR_kernel__Object___61d_61d]))(var_root_init, var_other38) /* == on <var_root_init:nullable MMethodDef(MMethodDef)>*/;
8603 var39 = var40;
8604 }
8605 var41 = !var39;
8606 var36 = var41;
8607 goto RET_LABEL37;
8608 RET_LABEL37:(void)0;
8609 }
8610 var35 = var36;
8611 }
8612 if (var35){
8613 {
8614 { /* Inline model#MMethodDef#new_msignature (var_root_init) on <var_root_init:nullable MMethodDef(MMethodDef)> */
8615 var44 = var_root_init->attrs[COLOR_model__MMethodDef___new_msignature].val; /* _new_msignature on <var_root_init:nullable MMethodDef(MMethodDef)> */
8616 var42 = var44;
8617 RET_LABEL43:(void)0;
8618 }
8619 }
8620 {
8621 { /* Inline model#MMethodDef#new_msignature= (var_mpropdef,var42) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8622 var_mpropdef->attrs[COLOR_model__MMethodDef___new_msignature].val = var42; /* _new_msignature on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8623 RET_LABEL45:(void)0;
8624 }
8625 }
8626 {
8627 { /* Inline model#MMethodDef#initializers (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8628 var48 = var_mpropdef->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8629 if (unlikely(var48 == NULL)) {
8630 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
8631 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
8632 show_backtrace(1);
8633 }
8634 var46 = var48;
8635 RET_LABEL47:(void)0;
8636 }
8637 }
8638 {
8639 var49 = array__AbstractArrayRead__is_empty(var46);
8640 }
8641 if (unlikely(!var49)) {
8642 PRINT_ERROR("Runtime error: %s", "Assert failed");
8643 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 602);
8644 show_backtrace(1);
8645 }
8646 {
8647 { /* Inline model#MMethodDef#initializers (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8648 var52 = var_mpropdef->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8649 if (unlikely(var52 == NULL)) {
8650 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
8651 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
8652 show_backtrace(1);
8653 }
8654 var50 = var52;
8655 RET_LABEL51:(void)0;
8656 }
8657 }
8658 {
8659 { /* Inline model#MMethodDef#initializers (var_root_init) on <var_root_init:nullable MMethodDef(MMethodDef)> */
8660 var55 = var_root_init->attrs[COLOR_model__MMethodDef___initializers].val; /* _initializers on <var_root_init:nullable MMethodDef(MMethodDef)> */
8661 if (unlikely(var55 == NULL)) {
8662 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
8663 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1967);
8664 show_backtrace(1);
8665 }
8666 var53 = var55;
8667 RET_LABEL54:(void)0;
8668 }
8669 }
8670 {
8671 abstract_collection__SimpleCollection__add_all(var50, var53); /* Direct call abstract_collection#SimpleCollection#add_all on <var50:Array[MProperty]>*/
8672 }
8673 } else {
8674 }
8675 } else {
8676 }
8677 var56 = NEW_array__Array(&type_array__Arraystring__String);
8678 {
8679 ((void (*)(val*))(var56->class->vft[COLOR_kernel__Object__init]))(var56) /* init on <var56:Array[String]>*/;
8680 }
8681 var_param_names = var56;
8682 var57 = NEW_array__Array(&type_array__Arraymodel__MType);
8683 {
8684 ((void (*)(val*))(var57->class->vft[COLOR_kernel__Object__init]))(var57) /* init on <var57:Array[MType]>*/;
8685 }
8686 var_param_types = var57;
8687 var58 = 1;
8688 {
8689 { /* Inline kernel#Int#unary - (var58) on <var58:Int> */
8690 var61 = -var58;
8691 var59 = var61;
8692 goto RET_LABEL60;
8693 RET_LABEL60:(void)0;
8694 }
8695 }
8696 var_vararg_rank = var59;
8697 var62 = NULL;
8698 var_ret_type = var62;
8699 var63 = NULL;
8700 if (var_nsig == NULL) {
8701 var64 = 0; /* is null */
8702 } else {
8703 var64 = 1; /* arg is null and recv is not */
8704 }
8705 if (0) {
8706 { /* Inline kernel#Object#!= (var_nsig,var63) on <var_nsig:nullable ASignature> */
8707 var_other38 = var63;
8708 {
8709 var68 = ((short int (*)(val*, val*))(var_nsig->class->vft[COLOR_kernel__Object___61d_61d]))(var_nsig, var_other38) /* == on <var_nsig:nullable ASignature(ASignature)>*/;
8710 var67 = var68;
8711 }
8712 var69 = !var67;
8713 var65 = var69;
8714 goto RET_LABEL66;
8715 RET_LABEL66:(void)0;
8716 }
8717 var64 = var65;
8718 }
8719 if (var64){
8720 {
8721 var70 = modelize_property__ASignature__visit_signature(var_nsig, var_modelbuilder, var_mclassdef);
8722 }
8723 var71 = !var70;
8724 if (var71){
8725 goto RET_LABEL;
8726 } else {
8727 }
8728 {
8729 { /* Inline modelize_property#ASignature#param_names (var_nsig) on <var_nsig:nullable ASignature(ASignature)> */
8730 var74 = var_nsig->attrs[COLOR_modelize_property__ASignature___param_names].val; /* _param_names on <var_nsig:nullable ASignature(ASignature)> */
8731 if (unlikely(var74 == NULL)) {
8732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
8733 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 415);
8734 show_backtrace(1);
8735 }
8736 var72 = var74;
8737 RET_LABEL73:(void)0;
8738 }
8739 }
8740 var_param_names = var72;
8741 {
8742 { /* Inline modelize_property#ASignature#param_types (var_nsig) on <var_nsig:nullable ASignature(ASignature)> */
8743 var77 = var_nsig->attrs[COLOR_modelize_property__ASignature___param_types].val; /* _param_types on <var_nsig:nullable ASignature(ASignature)> */
8744 if (unlikely(var77 == NULL)) {
8745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
8746 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 418);
8747 show_backtrace(1);
8748 }
8749 var75 = var77;
8750 RET_LABEL76:(void)0;
8751 }
8752 }
8753 var_param_types = var75;
8754 {
8755 { /* Inline modelize_property#ASignature#vararg_rank (var_nsig) on <var_nsig:nullable ASignature(ASignature)> */
8756 var80 = var_nsig->attrs[COLOR_modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <var_nsig:nullable ASignature(ASignature)> */
8757 var78 = var80;
8758 RET_LABEL79:(void)0;
8759 }
8760 }
8761 var_vararg_rank = var78;
8762 {
8763 { /* Inline modelize_property#ASignature#ret_type (var_nsig) on <var_nsig:nullable ASignature(ASignature)> */
8764 var83 = var_nsig->attrs[COLOR_modelize_property__ASignature___ret_type].val; /* _ret_type on <var_nsig:nullable ASignature(ASignature)> */
8765 var81 = var83;
8766 RET_LABEL82:(void)0;
8767 }
8768 }
8769 var_ret_type = var81;
8770 } else {
8771 }
8772 var84 = NULL;
8773 var_msignature = var84;
8774 {
8775 var85 = model__MPropDef__is_intro(var_mpropdef);
8776 }
8777 var86 = !var85;
8778 if (var86){
8779 {
8780 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8781 var89 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8782 if (unlikely(var89 == NULL)) {
8783 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8784 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8785 show_backtrace(1);
8786 }
8787 var87 = var89;
8788 RET_LABEL88:(void)0;
8789 }
8790 }
8791 {
8792 { /* Inline model#MProperty#intro (var87) on <var87:MProperty(MMethod)> */
8793 var92 = var87->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var87:MProperty(MMethod)> */
8794 if (unlikely(var92 == NULL)) {
8795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
8796 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
8797 show_backtrace(1);
8798 }
8799 var90 = var92;
8800 RET_LABEL91:(void)0;
8801 }
8802 }
8803 {
8804 { /* Inline model#MMethodDef#msignature (var90) on <var90:MPropDef(MMethodDef)> */
8805 var95 = var90->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var90:MPropDef(MMethodDef)> */
8806 var93 = var95;
8807 RET_LABEL94:(void)0;
8808 }
8809 }
8810 var_msignature = var93;
8811 var96 = NULL;
8812 if (var_msignature == NULL) {
8813 var97 = 1; /* is null */
8814 } else {
8815 var97 = 0; /* arg is null but recv is not */
8816 }
8817 if (0) {
8818 { /* Inline kernel#Object#== (var_msignature,var96) on <var_msignature:nullable MSignature> */
8819 var_other = var96;
8820 {
8821 { /* Inline kernel#Object#is_same_instance (var_msignature,var_other) on <var_msignature:nullable MSignature(MSignature)> */
8822 var102 = var_msignature == var_other;
8823 var100 = var102;
8824 goto RET_LABEL101;
8825 RET_LABEL101:(void)0;
8826 }
8827 }
8828 var98 = var100;
8829 goto RET_LABEL99;
8830 RET_LABEL99:(void)0;
8831 }
8832 var97 = var98;
8833 }
8834 if (var97){
8835 goto RET_LABEL;
8836 } else {
8837 }
8838 {
8839 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
8840 var105 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
8841 var103 = var105;
8842 RET_LABEL104:(void)0;
8843 }
8844 }
8845 {
8846 var106 = model__MSignature__arity(var_msignature);
8847 }
8848 {
8849 { /* Inline kernel#Int#!= (var103,var106) on <var103:Int> */
8850 var110 = var103 == var106;
8851 var111 = !var110;
8852 var108 = var111;
8853 goto RET_LABEL109;
8854 RET_LABEL109:(void)0;
8855 }
8856 var107 = var108;
8857 }
8858 if (var107){
8859 var112 = NULL;
8860 if (var_nsig == NULL) {
8861 var113 = 0; /* is null */
8862 } else {
8863 var113 = 1; /* arg is null and recv is not */
8864 }
8865 if (0) {
8866 { /* Inline kernel#Object#!= (var_nsig,var112) on <var_nsig:nullable ASignature> */
8867 var_other38 = var112;
8868 {
8869 var117 = ((short int (*)(val*, val*))(var_nsig->class->vft[COLOR_kernel__Object___61d_61d]))(var_nsig, var_other38) /* == on <var_nsig:nullable ASignature(ASignature)>*/;
8870 var116 = var117;
8871 }
8872 var118 = !var116;
8873 var114 = var118;
8874 goto RET_LABEL115;
8875 RET_LABEL115:(void)0;
8876 }
8877 var113 = var114;
8878 }
8879 if (var113){
8880 var_node = var_nsig;
8881 } else {
8882 var_node = self;
8883 }
8884 if (varonce) {
8885 var119 = varonce;
8886 } else {
8887 var120 = "Redef error: ";
8888 var121 = 13;
8889 var122 = string__NativeString__to_s_with_length(var120, var121);
8890 var119 = var122;
8891 varonce = var119;
8892 }
8893 if (varonce123) {
8894 var124 = varonce123;
8895 } else {
8896 var125 = " redefines ";
8897 var126 = 11;
8898 var127 = string__NativeString__to_s_with_length(var125, var126);
8899 var124 = var127;
8900 varonce123 = var124;
8901 }
8902 {
8903 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8904 var130 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8905 if (unlikely(var130 == NULL)) {
8906 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8907 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
8908 show_backtrace(1);
8909 }
8910 var128 = var130;
8911 RET_LABEL129:(void)0;
8912 }
8913 }
8914 {
8915 { /* Inline model#MProperty#intro (var128) on <var128:MProperty(MMethod)> */
8916 var133 = var128->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var128:MProperty(MMethod)> */
8917 if (unlikely(var133 == NULL)) {
8918 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
8919 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
8920 show_backtrace(1);
8921 }
8922 var131 = var133;
8923 RET_LABEL132:(void)0;
8924 }
8925 }
8926 if (varonce134) {
8927 var135 = varonce134;
8928 } else {
8929 var136 = " with ";
8930 var137 = 6;
8931 var138 = string__NativeString__to_s_with_length(var136, var137);
8932 var135 = var138;
8933 varonce134 = var135;
8934 }
8935 {
8936 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
8937 var141 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
8938 var139 = var141;
8939 RET_LABEL140:(void)0;
8940 }
8941 }
8942 if (varonce142) {
8943 var143 = varonce142;
8944 } else {
8945 var144 = " parameter(s), ";
8946 var145 = 15;
8947 var146 = string__NativeString__to_s_with_length(var144, var145);
8948 var143 = var146;
8949 varonce142 = var143;
8950 }
8951 {
8952 var147 = model__MSignature__arity(var_msignature);
8953 }
8954 if (varonce148) {
8955 var149 = varonce148;
8956 } else {
8957 var150 = " expected. Signature is ";
8958 var151 = 24;
8959 var152 = string__NativeString__to_s_with_length(var150, var151);
8960 var149 = var152;
8961 varonce148 = var149;
8962 }
8963 var153 = NEW_array__Array(&type_array__Arraykernel__Object);
8964 { /* var153 = array_instance Array[Object] */
8965 var154 = 11;
8966 var155 = NEW_array__NativeArray(var154, &type_array__NativeArraykernel__Object);
8967 ((struct instance_array__NativeArray*)var155)->values[0] = (val*) var119;
8968 ((struct instance_array__NativeArray*)var155)->values[1] = (val*) var_mpropdef;
8969 ((struct instance_array__NativeArray*)var155)->values[2] = (val*) var124;
8970 ((struct instance_array__NativeArray*)var155)->values[3] = (val*) var131;
8971 ((struct instance_array__NativeArray*)var155)->values[4] = (val*) var135;
8972 var156 = BOX_kernel__Int(var139); /* autobox from Int to Object */
8973 ((struct instance_array__NativeArray*)var155)->values[5] = (val*) var156;
8974 ((struct instance_array__NativeArray*)var155)->values[6] = (val*) var143;
8975 var157 = BOX_kernel__Int(var147); /* autobox from Int to Object */
8976 ((struct instance_array__NativeArray*)var155)->values[7] = (val*) var157;
8977 ((struct instance_array__NativeArray*)var155)->values[8] = (val*) var149;
8978 ((struct instance_array__NativeArray*)var155)->values[9] = (val*) var_mpropdef;
8979 ((struct instance_array__NativeArray*)var155)->values[10] = (val*) var_msignature;
8980 {
8981 ((void (*)(val*, val*, long))(var153->class->vft[COLOR_array__Array__with_native]))(var153, var155, var154) /* with_native on <var153:Array[Object]>*/;
8982 }
8983 }
8984 {
8985 var158 = ((val* (*)(val*))(var153->class->vft[COLOR_string__Object__to_s]))(var153) /* to_s on <var153:Array[Object]>*/;
8986 }
8987 {
8988 modelbuilder__ModelBuilder__error(var_modelbuilder, var_node, var158); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
8989 }
8990 goto RET_LABEL;
8991 } else {
8992 }
8993 } else {
8994 {
8995 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8996 var162 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
8997 if (unlikely(var162 == NULL)) {
8998 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8999 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
9000 show_backtrace(1);
9001 }
9002 var160 = var162;
9003 RET_LABEL161:(void)0;
9004 }
9005 }
9006 {
9007 { /* Inline model#MMethod#is_init (var160) on <var160:MProperty(MMethod)> */
9008 var165 = var160->attrs[COLOR_model__MMethod___is_init].s; /* _is_init on <var160:MProperty(MMethod)> */
9009 var163 = var165;
9010 RET_LABEL164:(void)0;
9011 }
9012 }
9013 var_166 = var163;
9014 if (var163){
9015 {
9016 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9017 var169 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9018 if (unlikely(var169 == NULL)) {
9019 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
9020 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
9021 show_backtrace(1);
9022 }
9023 var167 = var169;
9024 RET_LABEL168:(void)0;
9025 }
9026 }
9027 {
9028 { /* Inline model#MMethod#is_new (var167) on <var167:MProperty(MMethod)> */
9029 var172 = var167->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <var167:MProperty(MMethod)> */
9030 var170 = var172;
9031 RET_LABEL171:(void)0;
9032 }
9033 }
9034 var173 = !var170;
9035 var159 = var173;
9036 } else {
9037 var159 = var_166;
9038 }
9039 if (var159){
9040 {
9041 { /* Inline model#MClassDef#supertypes (var_mclassdef) on <var_mclassdef:MClassDef> */
9042 var176 = var_mclassdef->attrs[COLOR_model__MClassDef___supertypes].val; /* _supertypes on <var_mclassdef:MClassDef> */
9043 if (unlikely(var176 == NULL)) {
9044 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes");
9045 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 534);
9046 show_backtrace(1);
9047 }
9048 var174 = var176;
9049 RET_LABEL175:(void)0;
9050 }
9051 }
9052 var_177 = var174;
9053 {
9054 var178 = array__AbstractArrayRead__iterator(var_177);
9055 }
9056 var_179 = var178;
9057 for(;;) {
9058 {
9059 var180 = array__ArrayIterator__is_ok(var_179);
9060 }
9061 if (var180){
9062 {
9063 var181 = array__ArrayIterator__item(var_179);
9064 }
9065 var_msupertype = var181;
9066 {
9067 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
9068 var184 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
9069 if (unlikely(var184 == NULL)) {
9070 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
9071 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
9072 show_backtrace(1);
9073 }
9074 var182 = var184;
9075 RET_LABEL183:(void)0;
9076 }
9077 }
9078 {
9079 var185 = model__MClassType__anchor_to(var_msupertype, var_mmodule, var182);
9080 }
9081 var_msupertype = var185;
9082 {
9083 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9084 var188 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9085 if (unlikely(var188 == NULL)) {
9086 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
9087 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
9088 show_backtrace(1);
9089 }
9090 var186 = var188;
9091 RET_LABEL187:(void)0;
9092 }
9093 }
9094 {
9095 { /* Inline model#MProperty#name (var186) on <var186:MProperty(MMethod)> */
9096 var191 = var186->attrs[COLOR_model__MProperty___name].val; /* _name on <var186:MProperty(MMethod)> */
9097 if (unlikely(var191 == NULL)) {
9098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
9099 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
9100 show_backtrace(1);
9101 }
9102 var189 = var191;
9103 RET_LABEL190:(void)0;
9104 }
9105 }
9106 {
9107 var192 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2(var_modelbuilder, self, var_mmodule, var_msupertype, var189);
9108 }
9109 var_candidate = var192;
9110 var193 = NULL;
9111 if (var_candidate == NULL) {
9112 var194 = 0; /* is null */
9113 } else {
9114 var194 = 1; /* arg is null and recv is not */
9115 }
9116 if (0) {
9117 { /* Inline kernel#Object#!= (var_candidate,var193) on <var_candidate:nullable MProperty> */
9118 var_other38 = var193;
9119 {
9120 var198 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_candidate, var_other38) /* == on <var_candidate:nullable MProperty(MProperty)>*/;
9121 var197 = var198;
9122 }
9123 var199 = !var197;
9124 var195 = var199;
9125 goto RET_LABEL196;
9126 RET_LABEL196:(void)0;
9127 }
9128 var194 = var195;
9129 }
9130 if (var194){
9131 var200 = NULL;
9132 if (var_msignature == NULL) {
9133 var201 = 1; /* is null */
9134 } else {
9135 var201 = 0; /* arg is null but recv is not */
9136 }
9137 if (0) {
9138 { /* Inline kernel#Object#== (var_msignature,var200) on <var_msignature:nullable MSignature> */
9139 var_other = var200;
9140 {
9141 { /* Inline kernel#Object#is_same_instance (var_msignature,var_other) on <var_msignature:nullable MSignature(MSignature)> */
9142 var206 = var_msignature == var_other;
9143 var204 = var206;
9144 goto RET_LABEL205;
9145 RET_LABEL205:(void)0;
9146 }
9147 }
9148 var202 = var204;
9149 goto RET_LABEL203;
9150 RET_LABEL203:(void)0;
9151 }
9152 var201 = var202;
9153 }
9154 if (var201){
9155 {
9156 { /* Inline model#MProperty#intro (var_candidate) on <var_candidate:nullable MProperty(MProperty)> */
9157 var209 = var_candidate->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_candidate:nullable MProperty(MProperty)> */
9158 if (unlikely(var209 == NULL)) {
9159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
9160 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
9161 show_backtrace(1);
9162 }
9163 var207 = var209;
9164 RET_LABEL208:(void)0;
9165 }
9166 }
9167 /* <var207:MPropDef> isa MMethodDef */
9168 cltype = type_model__MMethodDef.color;
9169 idtype = type_model__MMethodDef.id;
9170 if(cltype >= var207->type->table_size) {
9171 var210 = 0;
9172 } else {
9173 var210 = var207->type->type_table[cltype] == idtype;
9174 }
9175 if (unlikely(!var210)) {
9176 var_class_name = var207 == NULL ? "null" : var207->type->name;
9177 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name);
9178 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 641);
9179 show_backtrace(1);
9180 }
9181 {
9182 { /* Inline model#MMethodDef#msignature (var207) on <var207:MPropDef(MMethodDef)> */
9183 var213 = var207->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var207:MPropDef(MMethodDef)> */
9184 var211 = var213;
9185 RET_LABEL212:(void)0;
9186 }
9187 }
9188 var_msignature = var211;
9189 } else {
9190 }
9191 } else {
9192 }
9193 {
9194 array__ArrayIterator__next(var_179); /* Direct call array#ArrayIterator#next on <var_179:ArrayIterator[MClassType]>*/
9195 }
9196 } else {
9197 goto BREAK_label;
9198 }
9199 }
9200 BREAK_label: (void)0;
9201 {
9202 { /* Inline abstract_collection#Iterator#finish (var_179) on <var_179:ArrayIterator[MClassType]> */
9203 RET_LABEL214:(void)0;
9204 }
9205 }
9206 } else {
9207 }
9208 }
9209 var218 = NULL;
9210 if (var_msignature == NULL) {
9211 var219 = 0; /* is null */
9212 } else {
9213 var219 = 1; /* arg is null and recv is not */
9214 }
9215 if (0) {
9216 { /* Inline kernel#Object#!= (var_msignature,var218) on <var_msignature:nullable MSignature> */
9217 var_other38 = var218;
9218 {
9219 var223 = ((short int (*)(val*, val*))(var_msignature->class->vft[COLOR_kernel__Object___61d_61d]))(var_msignature, var_other38) /* == on <var_msignature:nullable MSignature(MSignature)>*/;
9220 var222 = var223;
9221 }
9222 var224 = !var222;
9223 var220 = var224;
9224 goto RET_LABEL221;
9225 RET_LABEL221:(void)0;
9226 }
9227 var219 = var220;
9228 }
9229 var_225 = var219;
9230 if (var219){
9231 {
9232 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
9233 var228 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
9234 var226 = var228;
9235 RET_LABEL227:(void)0;
9236 }
9237 }
9238 {
9239 { /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
9240 var231 = var_param_types->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
9241 var229 = var231;
9242 RET_LABEL230:(void)0;
9243 }
9244 }
9245 {
9246 { /* Inline kernel#Int#!= (var226,var229) on <var226:Int> */
9247 var235 = var226 == var229;
9248 var236 = !var235;
9249 var233 = var236;
9250 goto RET_LABEL234;
9251 RET_LABEL234:(void)0;
9252 }
9253 var232 = var233;
9254 }
9255 var217 = var232;
9256 } else {
9257 var217 = var_225;
9258 }
9259 var_237 = var217;
9260 if (var217){
9261 {
9262 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
9263 var240 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
9264 var238 = var240;
9265 RET_LABEL239:(void)0;
9266 }
9267 }
9268 {
9269 var241 = model__MSignature__arity(var_msignature);
9270 }
9271 {
9272 { /* Inline kernel#Int#== (var238,var241) on <var238:Int> */
9273 var245 = var238 == var241;
9274 var243 = var245;
9275 goto RET_LABEL244;
9276 RET_LABEL244:(void)0;
9277 }
9278 var242 = var243;
9279 }
9280 var216 = var242;
9281 } else {
9282 var216 = var_237;
9283 }
9284 var_246 = var216;
9285 if (var216){
9286 {
9287 { /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
9288 var249 = var_param_types->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
9289 var247 = var249;
9290 RET_LABEL248:(void)0;
9291 }
9292 }
9293 var250 = 0;
9294 {
9295 { /* Inline kernel#Int#== (var247,var250) on <var247:Int> */
9296 var254 = var247 == var250;
9297 var252 = var254;
9298 goto RET_LABEL253;
9299 RET_LABEL253:(void)0;
9300 }
9301 var251 = var252;
9302 }
9303 var215 = var251;
9304 } else {
9305 var215 = var_246;
9306 }
9307 if (var215){
9308 var255 = NEW_array__Array(&type_array__Arraymodel__MType);
9309 {
9310 ((void (*)(val*))(var255->class->vft[COLOR_kernel__Object__init]))(var255) /* init on <var255:Array[MType]>*/;
9311 }
9312 var_param_types = var255;
9313 {
9314 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
9315 var258 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:nullable MSignature(MSignature)> */
9316 if (unlikely(var258 == NULL)) {
9317 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
9318 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
9319 show_backtrace(1);
9320 }
9321 var256 = var258;
9322 RET_LABEL257:(void)0;
9323 }
9324 }
9325 var_259 = var256;
9326 {
9327 var260 = array__AbstractArrayRead__iterator(var_259);
9328 }
9329 var_261 = var260;
9330 for(;;) {
9331 {
9332 var262 = array__ArrayIterator__is_ok(var_261);
9333 }
9334 if (var262){
9335 {
9336 var263 = array__ArrayIterator__item(var_261);
9337 }
9338 var_mparameter = var263;
9339 {
9340 { /* Inline model#MParameter#mtype (var_mparameter) on <var_mparameter:MParameter> */
9341 var266 = var_mparameter->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var_mparameter:MParameter> */
9342 if (unlikely(var266 == NULL)) {
9343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
9344 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
9345 show_backtrace(1);
9346 }
9347 var264 = var266;
9348 RET_LABEL265:(void)0;
9349 }
9350 }
9351 {
9352 array__Array__add(var_param_types, var264); /* Direct call array#Array#add on <var_param_types:Array[MType]>*/
9353 }
9354 {
9355 array__ArrayIterator__next(var_261); /* Direct call array#ArrayIterator#next on <var_261:ArrayIterator[MParameter]>*/
9356 }
9357 } else {
9358 goto BREAK_label267;
9359 }
9360 }
9361 BREAK_label267: (void)0;
9362 {
9363 { /* Inline abstract_collection#Iterator#finish (var_261) on <var_261:ArrayIterator[MParameter]> */
9364 RET_LABEL268:(void)0;
9365 }
9366 }
9367 {
9368 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
9369 var271 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:nullable MSignature(MSignature)> */
9370 var269 = var271;
9371 RET_LABEL270:(void)0;
9372 }
9373 }
9374 var_vararg_rank = var269;
9375 } else {
9376 }
9377 var273 = NULL;
9378 if (var_msignature == NULL) {
9379 var274 = 0; /* is null */
9380 } else {
9381 var274 = 1; /* arg is null and recv is not */
9382 }
9383 if (0) {
9384 { /* Inline kernel#Object#!= (var_msignature,var273) on <var_msignature:nullable MSignature> */
9385 var_other38 = var273;
9386 {
9387 var278 = ((short int (*)(val*, val*))(var_msignature->class->vft[COLOR_kernel__Object___61d_61d]))(var_msignature, var_other38) /* == on <var_msignature:nullable MSignature(MSignature)>*/;
9388 var277 = var278;
9389 }
9390 var279 = !var277;
9391 var275 = var279;
9392 goto RET_LABEL276;
9393 RET_LABEL276:(void)0;
9394 }
9395 var274 = var275;
9396 }
9397 var_280 = var274;
9398 if (var274){
9399 var281 = NULL;
9400 if (var_ret_type == NULL) {
9401 var282 = 1; /* is null */
9402 } else {
9403 var282 = 0; /* arg is null but recv is not */
9404 }
9405 if (0) {
9406 { /* Inline kernel#Object#== (var_ret_type,var281) on <var_ret_type:nullable MType> */
9407 var_other = var281;
9408 {
9409 { /* Inline kernel#Object#is_same_instance (var_ret_type,var_other) on <var_ret_type:nullable MType(MType)> */
9410 var287 = var_ret_type == var_other;
9411 var285 = var287;
9412 goto RET_LABEL286;
9413 RET_LABEL286:(void)0;
9414 }
9415 }
9416 var283 = var285;
9417 goto RET_LABEL284;
9418 RET_LABEL284:(void)0;
9419 }
9420 var282 = var283;
9421 }
9422 var272 = var282;
9423 } else {
9424 var272 = var_280;
9425 }
9426 if (var272){
9427 {
9428 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
9429 var290 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:nullable MSignature(MSignature)> */
9430 var288 = var290;
9431 RET_LABEL289:(void)0;
9432 }
9433 }
9434 var_ret_type = var288;
9435 } else {
9436 }
9437 {
9438 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
9439 var293 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
9440 var291 = var293;
9441 RET_LABEL292:(void)0;
9442 }
9443 }
9444 {
9445 { /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
9446 var296 = var_param_types->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
9447 var294 = var296;
9448 RET_LABEL295:(void)0;
9449 }
9450 }
9451 {
9452 { /* Inline kernel#Int#!= (var291,var294) on <var291:Int> */
9453 var300 = var291 == var294;
9454 var301 = !var300;
9455 var298 = var301;
9456 goto RET_LABEL299;
9457 RET_LABEL299:(void)0;
9458 }
9459 var297 = var298;
9460 }
9461 if (var297){
9462 if (var_nsig == NULL) {
9463 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9464 PRINT_ERROR(" (%s:%d)\n", "modelize/modelize_property.nit", 663);
9465 show_backtrace(1);
9466 } else {
9467 { /* Inline parser_nodes#ASignature#n_params (var_nsig) on <var_nsig:nullable ASignature> */
9468 if (unlikely(var_nsig == NULL)) {
9469 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9470 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
9471 show_backtrace(1);
9472 }
9473 var304 = var_nsig->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var_nsig:nullable ASignature> */
9474 if (unlikely(var304 == NULL)) {
9475 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
9476 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
9477 show_backtrace(1);
9478 }
9479 var302 = var304;
9480 RET_LABEL303:(void)0;
9481 }
9482 }
9483 {
9484 { /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
9485 var307 = var_param_types->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
9486 var305 = var307;
9487 RET_LABEL306:(void)0;
9488 }
9489 }
9490 {
9491 var308 = parser_nodes__ANodes___91d_93d(var302, var305);
9492 }
9493 if (varonce309) {
9494 var310 = varonce309;
9495 } else {
9496 var311 = "Error: Untyped parameter `";
9497 var312 = 26;
9498 var313 = string__NativeString__to_s_with_length(var311, var312);
9499 var310 = var313;
9500 varonce309 = var310;
9501 }
9502 {
9503 { /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
9504 var316 = var_param_types->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
9505 var314 = var316;
9506 RET_LABEL315:(void)0;
9507 }
9508 }
9509 {
9510 var317 = array__Array___91d_93d(var_param_names, var314);
9511 }
9512 if (varonce318) {
9513 var319 = varonce318;
9514 } else {
9515 var320 = "\'.";
9516 var321 = 2;
9517 var322 = string__NativeString__to_s_with_length(var320, var321);
9518 var319 = var322;
9519 varonce318 = var319;
9520 }
9521 var323 = NEW_array__Array(&type_array__Arraykernel__Object);
9522 { /* var323 = array_instance Array[Object] */
9523 var324 = 3;
9524 var325 = NEW_array__NativeArray(var324, &type_array__NativeArraykernel__Object);
9525 ((struct instance_array__NativeArray*)var325)->values[0] = (val*) var310;
9526 ((struct instance_array__NativeArray*)var325)->values[1] = (val*) var317;
9527 ((struct instance_array__NativeArray*)var325)->values[2] = (val*) var319;
9528 {
9529 ((void (*)(val*, val*, long))(var323->class->vft[COLOR_array__Array__with_native]))(var323, var325, var324) /* with_native on <var323:Array[Object]>*/;
9530 }
9531 }
9532 {
9533 var326 = ((val* (*)(val*))(var323->class->vft[COLOR_string__Object__to_s]))(var323) /* to_s on <var323:Array[Object]>*/;
9534 }
9535 {
9536 modelbuilder__ModelBuilder__error(var_modelbuilder, var308, var326); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
9537 }
9538 goto RET_LABEL;
9539 } else {
9540 }
9541 var327 = NEW_array__Array(&type_array__Arraymodel__MParameter);
9542 {
9543 ((void (*)(val*))(var327->class->vft[COLOR_kernel__Object__init]))(var327) /* init on <var327:Array[MParameter]>*/;
9544 }
9545 var_mparameters = var327;
9546 var328 = 0;
9547 var_i = var328;
9548 {
9549 { /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
9550 var331 = var_param_names->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
9551 var329 = var331;
9552 RET_LABEL330:(void)0;
9553 }
9554 }
9555 var_332 = var329;
9556 for(;;) {
9557 {
9558 { /* Inline kernel#Int#< (var_i,var_332) on <var_i:Int> */
9559 /* Covariant cast for argument 0 (i) <var_332:Int> isa OTHER */
9560 /* <var_332:Int> isa OTHER */
9561 var335 = 1; /* easy <var_332:Int> isa OTHER*/
9562 if (unlikely(!var335)) {
9563 var_class_name338 = type_kernel__Int.name;
9564 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name338);
9565 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
9566 show_backtrace(1);
9567 }
9568 var339 = var_i < var_332;
9569 var333 = var339;
9570 goto RET_LABEL334;
9571 RET_LABEL334:(void)0;
9572 }
9573 }
9574 if (var333){
9575 var340 = NEW_model__MParameter(&type_model__MParameter);
9576 {
9577 var341 = array__Array___91d_93d(var_param_names, var_i);
9578 }
9579 {
9580 var342 = array__Array___91d_93d(var_param_types, var_i);
9581 }
9582 {
9583 { /* Inline kernel#Int#== (var_i,var_vararg_rank) on <var_i:Int> */
9584 var346 = var_i == var_vararg_rank;
9585 var344 = var346;
9586 goto RET_LABEL345;
9587 RET_LABEL345:(void)0;
9588 }
9589 var343 = var344;
9590 }
9591 {
9592 model__MParameter__init(var340, var341, var342, var343); /* Direct call model#MParameter#init on <var340:MParameter>*/
9593 }
9594 var_mparameter347 = var340;
9595 var348 = NULL;
9596 if (var_nsig == NULL) {
9597 var349 = 0; /* is null */
9598 } else {
9599 var349 = 1; /* arg is null and recv is not */
9600 }
9601 if (0) {
9602 { /* Inline kernel#Object#!= (var_nsig,var348) on <var_nsig:nullable ASignature> */
9603 var_other38 = var348;
9604 {
9605 var353 = ((short int (*)(val*, val*))(var_nsig->class->vft[COLOR_kernel__Object___61d_61d]))(var_nsig, var_other38) /* == on <var_nsig:nullable ASignature(ASignature)>*/;
9606 var352 = var353;
9607 }
9608 var354 = !var352;
9609 var350 = var354;
9610 goto RET_LABEL351;
9611 RET_LABEL351:(void)0;
9612 }
9613 var349 = var350;
9614 }
9615 if (var349){
9616 {
9617 { /* Inline parser_nodes#ASignature#n_params (var_nsig) on <var_nsig:nullable ASignature(ASignature)> */
9618 var357 = var_nsig->attrs[COLOR_parser_nodes__ASignature___n_params].val; /* _n_params on <var_nsig:nullable ASignature(ASignature)> */
9619 if (unlikely(var357 == NULL)) {
9620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
9621 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1279);
9622 show_backtrace(1);
9623 }
9624 var355 = var357;
9625 RET_LABEL356:(void)0;
9626 }
9627 }
9628 {
9629 var358 = parser_nodes__ANodes___91d_93d(var355, var_i);
9630 }
9631 {
9632 { /* Inline modelize_property#AParam#mparameter= (var358,var_mparameter347) on <var358:ANode(AParam)> */
9633 var358->attrs[COLOR_modelize_property__AParam___mparameter].val = var_mparameter347; /* _mparameter on <var358:ANode(AParam)> */
9634 RET_LABEL359:(void)0;
9635 }
9636 }
9637 } else {
9638 }
9639 {
9640 array__Array__add(var_mparameters, var_mparameter347); /* Direct call array#Array#add on <var_mparameters:Array[MParameter]>*/
9641 }
9642 var360 = 1;
9643 {
9644 var361 = kernel__Int__successor(var_i, var360);
9645 }
9646 var_i = var361;
9647 } else {
9648 goto BREAK_label362;
9649 }
9650 }
9651 BREAK_label362: (void)0;
9652 var364 = NULL;
9653 if (var_ret_type == NULL) {
9654 var365 = 1; /* is null */
9655 } else {
9656 var365 = 0; /* arg is null but recv is not */
9657 }
9658 if (0) {
9659 { /* Inline kernel#Object#== (var_ret_type,var364) on <var_ret_type:nullable MType> */
9660 var_other = var364;
9661 {
9662 { /* Inline kernel#Object#is_same_instance (var_ret_type,var_other) on <var_ret_type:nullable MType(MType)> */
9663 var370 = var_ret_type == var_other;
9664 var368 = var370;
9665 goto RET_LABEL369;
9666 RET_LABEL369:(void)0;
9667 }
9668 }
9669 var366 = var368;
9670 goto RET_LABEL367;
9671 RET_LABEL367:(void)0;
9672 }
9673 var365 = var366;
9674 }
9675 var_371 = var365;
9676 if (var365){
9677 {
9678 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9679 var374 = var_mpropdef->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9680 if (unlikely(var374 == NULL)) {
9681 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
9682 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
9683 show_backtrace(1);
9684 }
9685 var372 = var374;
9686 RET_LABEL373:(void)0;
9687 }
9688 }
9689 {
9690 { /* Inline model#MMethod#is_new (var372) on <var372:MProperty(MMethod)> */
9691 var377 = var372->attrs[COLOR_model__MMethod___is_new].s; /* _is_new on <var372:MProperty(MMethod)> */
9692 var375 = var377;
9693 RET_LABEL376:(void)0;
9694 }
9695 }
9696 var363 = var375;
9697 } else {
9698 var363 = var_371;
9699 }
9700 if (var363){
9701 {
9702 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
9703 var380 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
9704 if (unlikely(var380 == NULL)) {
9705 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9706 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
9707 show_backtrace(1);
9708 }
9709 var378 = var380;
9710 RET_LABEL379:(void)0;
9711 }
9712 }
9713 {
9714 { /* Inline model#MClass#mclass_type (var378) on <var378:MClass> */
9715 var383 = var378->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var378:MClass> */
9716 if (unlikely(var383 == NULL)) {
9717 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
9718 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
9719 show_backtrace(1);
9720 }
9721 var381 = var383;
9722 RET_LABEL382:(void)0;
9723 }
9724 }
9725 var_ret_type = var381;
9726 } else {
9727 }
9728 var384 = NEW_model__MSignature(&type_model__MSignature);
9729 {
9730 model__MSignature__init(var384, var_mparameters, var_ret_type); /* Direct call model#MSignature#init on <var384:MSignature>*/
9731 }
9732 var_msignature = var384;
9733 {
9734 { /* Inline model#MMethodDef#msignature= (var_mpropdef,var_msignature) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9735 var_mpropdef->attrs[COLOR_model__MMethodDef___msignature].val = var_msignature; /* _msignature on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9736 RET_LABEL385:(void)0;
9737 }
9738 }
9739 if (varonce386) {
9740 var387 = varonce386;
9741 } else {
9742 var388 = "abstract";
9743 var389 = 8;
9744 var390 = string__NativeString__to_s_with_length(var388, var389);
9745 var387 = var390;
9746 varonce386 = var387;
9747 }
9748 {
9749 var391 = annotation__Prod__get_single_annotation(self, var387, var_modelbuilder);
9750 }
9751 var392 = NULL;
9752 if (var391 == NULL) {
9753 var393 = 0; /* is null */
9754 } else {
9755 var393 = 1; /* arg is null and recv is not */
9756 }
9757 if (0) {
9758 { /* Inline kernel#Object#!= (var391,var392) on <var391:nullable AAnnotation> */
9759 var_other38 = var392;
9760 {
9761 var397 = ((short int (*)(val*, val*))(var391->class->vft[COLOR_kernel__Object___61d_61d]))(var391, var_other38) /* == on <var391:nullable AAnnotation(AAnnotation)>*/;
9762 var396 = var397;
9763 }
9764 var398 = !var396;
9765 var394 = var398;
9766 goto RET_LABEL395;
9767 RET_LABEL395:(void)0;
9768 }
9769 var393 = var394;
9770 }
9771 {
9772 { /* Inline model#MMethodDef#is_abstract= (var_mpropdef,var393) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9773 var_mpropdef->attrs[COLOR_model__MMethodDef___is_abstract].s = var393; /* _is_abstract on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9774 RET_LABEL399:(void)0;
9775 }
9776 }
9777 if (varonce400) {
9778 var401 = varonce400;
9779 } else {
9780 var402 = "intern";
9781 var403 = 6;
9782 var404 = string__NativeString__to_s_with_length(var402, var403);
9783 var401 = var404;
9784 varonce400 = var401;
9785 }
9786 {
9787 var405 = annotation__Prod__get_single_annotation(self, var401, var_modelbuilder);
9788 }
9789 var406 = NULL;
9790 if (var405 == NULL) {
9791 var407 = 0; /* is null */
9792 } else {
9793 var407 = 1; /* arg is null and recv is not */
9794 }
9795 if (0) {
9796 { /* Inline kernel#Object#!= (var405,var406) on <var405:nullable AAnnotation> */
9797 var_other38 = var406;
9798 {
9799 var411 = ((short int (*)(val*, val*))(var405->class->vft[COLOR_kernel__Object___61d_61d]))(var405, var_other38) /* == on <var405:nullable AAnnotation(AAnnotation)>*/;
9800 var410 = var411;
9801 }
9802 var412 = !var410;
9803 var408 = var412;
9804 goto RET_LABEL409;
9805 RET_LABEL409:(void)0;
9806 }
9807 var407 = var408;
9808 }
9809 {
9810 { /* Inline model#MMethodDef#is_intern= (var_mpropdef,var407) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9811 var_mpropdef->attrs[COLOR_model__MMethodDef___is_intern].s = var407; /* _is_intern on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9812 RET_LABEL413:(void)0;
9813 }
9814 }
9815 {
9816 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
9817 var417 = self->attrs[COLOR_parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
9818 var415 = var417;
9819 RET_LABEL416:(void)0;
9820 }
9821 }
9822 var418 = NULL;
9823 if (var415 == NULL) {
9824 var419 = 0; /* is null */
9825 } else {
9826 var419 = 1; /* arg is null and recv is not */
9827 }
9828 if (0) {
9829 { /* Inline kernel#Object#!= (var415,var418) on <var415:nullable AExternCodeBlock> */
9830 var_other38 = var418;
9831 {
9832 var423 = ((short int (*)(val*, val*))(var415->class->vft[COLOR_kernel__Object___61d_61d]))(var415, var_other38) /* == on <var415:nullable AExternCodeBlock(AExternCodeBlock)>*/;
9833 var422 = var423;
9834 }
9835 var424 = !var422;
9836 var420 = var424;
9837 goto RET_LABEL421;
9838 RET_LABEL421:(void)0;
9839 }
9840 var419 = var420;
9841 }
9842 var_425 = var419;
9843 if (var419){
9844 var414 = var_425;
9845 } else {
9846 if (varonce426) {
9847 var427 = varonce426;
9848 } else {
9849 var428 = "extern";
9850 var429 = 6;
9851 var430 = string__NativeString__to_s_with_length(var428, var429);
9852 var427 = var430;
9853 varonce426 = var427;
9854 }
9855 {
9856 var431 = annotation__Prod__get_single_annotation(self, var427, var_modelbuilder);
9857 }
9858 var432 = NULL;
9859 if (var431 == NULL) {
9860 var433 = 0; /* is null */
9861 } else {
9862 var433 = 1; /* arg is null and recv is not */
9863 }
9864 if (0) {
9865 { /* Inline kernel#Object#!= (var431,var432) on <var431:nullable AAnnotation> */
9866 var_other38 = var432;
9867 {
9868 var437 = ((short int (*)(val*, val*))(var431->class->vft[COLOR_kernel__Object___61d_61d]))(var431, var_other38) /* == on <var431:nullable AAnnotation(AAnnotation)>*/;
9869 var436 = var437;
9870 }
9871 var438 = !var436;
9872 var434 = var438;
9873 goto RET_LABEL435;
9874 RET_LABEL435:(void)0;
9875 }
9876 var433 = var434;
9877 }
9878 var414 = var433;
9879 }
9880 {
9881 { /* Inline model#MMethodDef#is_extern= (var_mpropdef,var414) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9882 var_mpropdef->attrs[COLOR_model__MMethodDef___is_extern].s = var414; /* _is_extern on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9883 RET_LABEL439:(void)0;
9884 }
9885 }
9886 RET_LABEL:;
9887 }
9888 /* method modelize_property#AMethPropdef#build_signature for (self: Object, ModelBuilder) */
9889 void VIRTUAL_modelize_property__AMethPropdef__build_signature(val* self, val* p0) {
9890 modelize_property__AMethPropdef__build_signature(self, p0); /* Direct call modelize_property#AMethPropdef#build_signature on <self:Object(AMethPropdef)>*/
9891 RET_LABEL:;
9892 }