c_src: update for new ffi syntax
[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___64dmodelize_property_phase].val; /* @modelize_property_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelize_property_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 23);
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 var1 = modelize_property__ToolContext__modelize_property_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method modelize_property#ToolContext#modelize_property_phase= for (self: ToolContext, Phase) */
26 void modelize_property__ToolContext__modelize_property_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_modelize_property__ToolContext___64dmodelize_property_phase].val = p0; /* @modelize_property_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method modelize_property#ToolContext#modelize_property_phase= for (self: Object, Phase) */
31 void VIRTUAL_modelize_property__ToolContext__modelize_property_phase_61d(val* self, val* p0) {
32 modelize_property__ToolContext__modelize_property_phase_61d(self, p0);
33 RET_LABEL:;
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* var1 /* : Iterator[nullable Object] */;
40 short int var2 /* : Bool */;
41 val* var3 /* : nullable Object */;
42 val* var_nclassdef /* var nclassdef: AClassdef */;
43 val* var4 /* : ToolContext */;
44 val* var5 /* : ModelBuilder */;
45 var_nmodule = p0;
46 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
47 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:ANodes[AClassdef]>*/;
48 for(;;) {
49 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
50 if(!var2) break;
51 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
52 var_nclassdef = var3;
53 var4 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:ModelizePropertyPhase>*/;
54 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var4) /* modelbuilder on <var4:ToolContext>*/;
55 ((void (*)(val*, val*))(var5->class->vft[COLOR_modelize_property__ModelBuilder__build_properties]))(var5, var_nclassdef) /* build_properties on <var5:ModelBuilder>*/;
56 CONTINUE_label: (void)0;
57 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
58 }
59 BREAK_label: (void)0;
60 RET_LABEL:;
61 }
62 /* method modelize_property#ModelizePropertyPhase#process_nmodule for (self: Object, AModule) */
63 void VIRTUAL_modelize_property__ModelizePropertyPhase__process_nmodule(val* self, val* p0) {
64 modelize_property__ModelizePropertyPhase__process_nmodule(self, p0);
65 RET_LABEL:;
66 }
67 /* method modelize_property#ModelBuilder#mpropdef2npropdef for (self: ModelBuilder): HashMap[MPropDef, APropdef] */
68 val* modelize_property__ModelBuilder__mpropdef2npropdef(val* self) {
69 val* var /* : HashMap[MPropDef, APropdef] */;
70 val* var1 /* : HashMap[MPropDef, APropdef] */;
71 var1 = self->attrs[COLOR_modelize_property__ModelBuilder___64dmpropdef2npropdef].val; /* @mpropdef2npropdef on <self:ModelBuilder> */
72 if (var1 == NULL) {
73 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef2npropdef");
74 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 37);
75 show_backtrace(1);
76 }
77 var = var1;
78 RET_LABEL:;
79 return var;
80 }
81 /* method modelize_property#ModelBuilder#mpropdef2npropdef for (self: Object): HashMap[MPropDef, APropdef] */
82 val* VIRTUAL_modelize_property__ModelBuilder__mpropdef2npropdef(val* self) {
83 val* var /* : HashMap[MPropDef, APropdef] */;
84 val* var1 /* : HashMap[MPropDef, APropdef] */;
85 var1 = modelize_property__ModelBuilder__mpropdef2npropdef(self);
86 var = var1;
87 RET_LABEL:;
88 return var;
89 }
90 /* method modelize_property#ModelBuilder#mpropdef2npropdef= for (self: ModelBuilder, HashMap[MPropDef, APropdef]) */
91 void modelize_property__ModelBuilder__mpropdef2npropdef_61d(val* self, val* p0) {
92 self->attrs[COLOR_modelize_property__ModelBuilder___64dmpropdef2npropdef].val = p0; /* @mpropdef2npropdef on <self:ModelBuilder> */
93 RET_LABEL:;
94 }
95 /* method modelize_property#ModelBuilder#mpropdef2npropdef= for (self: Object, HashMap[MPropDef, APropdef]) */
96 void VIRTUAL_modelize_property__ModelBuilder__mpropdef2npropdef_61d(val* self, val* p0) {
97 modelize_property__ModelBuilder__mpropdef2npropdef_61d(self, p0);
98 RET_LABEL:;
99 }
100 /* method modelize_property#ModelBuilder#build_properties for (self: ModelBuilder, AClassdef) */
101 void modelize_property__ModelBuilder__build_properties(val* self, val* p0) {
102 val* var_nclassdef /* var nclassdef: AClassdef */;
103 short int var /* : Bool */;
104 short int var1 /* : Bool */;
105 val* var2 /* : nullable MClassDef */;
106 val* var_mclassdef /* var mclassdef: MClassDef */;
107 val* var3 /* : nullable POSetElement[MClassDef] */;
108 val* var4 /* : null */;
109 short int var5 /* : Bool */;
110 val* var6 /* : nullable POSetElement[MClassDef] */;
111 val* var7 /* : Collection[Object] */;
112 val* var8 /* : Iterator[nullable Object] */;
113 short int var9 /* : Bool */;
114 val* var10 /* : nullable Object */;
115 val* var_superclassdef /* var superclassdef: MClassDef */;
116 val* var11 /* : HashMap[MClassDef, AClassdef] */;
117 val* var12 /* : nullable Object */;
118 val* var13 /* : ANodes[APropdef] */;
119 val* var14 /* : Iterator[nullable Object] */;
120 short int var15 /* : Bool */;
121 val* var16 /* : nullable Object */;
122 val* var_npropdef /* var npropdef: APropdef */;
123 val* var18 /* : ANodes[APropdef] */;
124 val* var19 /* : Iterator[nullable Object] */;
125 short int var20 /* : Bool */;
126 val* var21 /* : nullable Object */;
127 val* var_npropdef22 /* var npropdef: APropdef */;
128 val* var24 /* : ANodes[APropdef] */;
129 val* var25 /* : Iterator[nullable Object] */;
130 short int var26 /* : Bool */;
131 val* var27 /* : nullable Object */;
132 val* var_npropdef28 /* var npropdef: APropdef */;
133 var_nclassdef = p0;
134 var = ((short int (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__build_properties_is_done]))(var_nclassdef) /* build_properties_is_done on <var_nclassdef:AClassdef>*/;
135 if (var){
136 goto RET_LABEL;
137 } else {
138 }
139 var1 = 1;
140 ((void (*)(val*, short int))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__build_properties_is_done_61d]))(var_nclassdef, var1) /* build_properties_is_done= on <var_nclassdef:AClassdef>*/;
141 var2 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
142 if (var2 == NULL) {
143 fprintf(stderr, "Runtime error: %s", "Cast failed");
144 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 48);
145 show_backtrace(1);
146 }
147 var_mclassdef = var2;
148 var3 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
149 var4 = NULL;
150 if (var3 == NULL) {
151 var5 = 1; /* is null */
152 } else {
153 var5 = 0; /* arg is null but recv is not */
154 }
155 if (var5){
156 goto RET_LABEL;
157 } else {
158 }
159 var6 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
160 if (var6 == NULL) {
161 fprintf(stderr, "Runtime error: %s", "Reciever is null");
162 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 50);
163 show_backtrace(1);
164 } else {
165 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var6) /* direct_greaters on <var6:nullable POSetElement[MClassDef]>*/;
166 }
167 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:Collection[Object](Collection[MClassDef])>*/;
168 for(;;) {
169 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
170 if(!var9) break;
171 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
172 var_superclassdef = var10;
173 var11 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(self) /* mclassdef2nclassdef on <self:ModelBuilder>*/;
174 var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_superclassdef) /* [] on <var11:HashMap[MClassDef, AClassdef]>*/;
175 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__ModelBuilder__build_properties]))(self, var12) /* build_properties on <self:ModelBuilder>*/;
176 CONTINUE_label: (void)0;
177 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
178 }
179 BREAK_label: (void)0;
180 var13 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
181 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Collection__iterator]))(var13) /* iterator on <var13:ANodes[APropdef]>*/;
182 for(;;) {
183 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
184 if(!var15) break;
185 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
186 var_npropdef = var16;
187 ((void (*)(val*, val*, val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__build_property]))(var_npropdef, self, var_nclassdef) /* build_property on <var_npropdef:APropdef>*/;
188 CONTINUE_label17: (void)0;
189 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
190 }
191 BREAK_label17: (void)0;
192 var18 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
193 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:ANodes[APropdef]>*/;
194 for(;;) {
195 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
196 if(!var20) break;
197 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
198 var_npropdef22 = var21;
199 ((void (*)(val*, val*, val*))(var_npropdef22->class->vft[COLOR_modelize_property__APropdef__build_signature]))(var_npropdef22, self, var_nclassdef) /* build_signature on <var_npropdef22:APropdef>*/;
200 CONTINUE_label23: (void)0;
201 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
202 }
203 BREAK_label23: (void)0;
204 var24 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
205 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Collection__iterator]))(var24) /* iterator on <var24:ANodes[APropdef]>*/;
206 for(;;) {
207 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
208 if(!var26) break;
209 var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on <var25:Iterator[nullable Object]>*/;
210 var_npropdef28 = var27;
211 ((void (*)(val*, val*, val*))(var_npropdef28->class->vft[COLOR_modelize_property__APropdef__check_signature]))(var_npropdef28, self, var_nclassdef) /* check_signature on <var_npropdef28:APropdef>*/;
212 CONTINUE_label29: (void)0;
213 ((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on <var25:Iterator[nullable Object]>*/;
214 }
215 BREAK_label29: (void)0;
216 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__ModelBuilder__process_default_constructors]))(self, var_nclassdef) /* process_default_constructors on <self:ModelBuilder>*/;
217 RET_LABEL:;
218 }
219 /* method modelize_property#ModelBuilder#build_properties for (self: Object, AClassdef) */
220 void VIRTUAL_modelize_property__ModelBuilder__build_properties(val* self, val* p0) {
221 modelize_property__ModelBuilder__build_properties(self, p0);
222 RET_LABEL:;
223 }
224 /* method modelize_property#ModelBuilder#process_default_constructors for (self: ModelBuilder, AClassdef) */
225 void modelize_property__ModelBuilder__process_default_constructors(val* self, val* p0) {
226 val* var_nclassdef /* var nclassdef: AClassdef */;
227 val* var /* : nullable MClassDef */;
228 val* var_mclassdef /* var mclassdef: MClassDef */;
229 short int var1 /* : Bool */;
230 short int var2 /* : Bool */;
231 val* var3 /* : MClass */;
232 val* var4 /* : MClassKind */;
233 short int var5 /* : Bool */;
234 short int var6 /* : Bool */;
235 val* var7 /* : Array[MPropDef] */;
236 val* var8 /* : Iterator[nullable Object] */;
237 short int var9 /* : Bool */;
238 val* var10 /* : nullable Object */;
239 val* var_mpropdef /* var mpropdef: MPropDef */;
240 short int var11 /* : Bool */;
241 int cltype;
242 int idtype;
243 short int var12 /* : Bool */;
244 val* var13 /* : MProperty */;
245 short int var14 /* : Bool */;
246 short int var15 /* : Bool */;
247 int cltype16;
248 int idtype17;
249 short int var18 /* : Bool */;
250 val* var19 /* : nullable MClassDef */;
251 val* var20 /* : MModule */;
252 val* var_mmodule /* var mmodule: MModule */;
253 val* var21 /* : Array[MMethod] */;
254 val* var_combine /* var combine: Array[MMethod] */;
255 val* var22 /* : null */;
256 val* var_inhc /* var inhc: nullable MClass */;
257 val* var23 /* : Array[MClassType] */;
258 val* var24 /* : Iterator[nullable Object] */;
259 short int var25 /* : Bool */;
260 val* var26 /* : nullable Object */;
261 val* var_st /* var st: MClassType */;
262 val* var27 /* : MClass */;
263 val* var_c /* var c: MClass */;
264 val* var28 /* : MClassKind */;
265 short int var29 /* : Bool */;
266 short int var30 /* : Bool */;
267 val* var32 /* : nullable MClassDef */;
268 val* var33 /* : MClassType */;
269 val* var34 /* : MType */;
270 static val* varonce;
271 val* var35 /* : String */;
272 char* var36 /* : NativeString */;
273 long var37 /* : Int */;
274 val* var38 /* : String */;
275 val* var39 /* : nullable MProperty */;
276 short int var40 /* : Bool */;
277 int cltype41;
278 int idtype42;
279 const char* var_class_name;
280 val* var_candidate /* var candidate: nullable MMethod */;
281 short int var43 /* : Bool */;
282 val* var44 /* : null */;
283 short int var45 /* : Bool */;
284 short int var_ /* var : Bool */;
285 val* var46 /* : MPropDef */;
286 val* var47 /* : nullable MSignature */;
287 long var48 /* : Int */;
288 long var49 /* : Int */;
289 short int var50 /* : Bool */;
290 short int var52 /* : Bool */;
291 val* var53 /* : nullable MClass */;
292 val* var_inhc2 /* var inhc2: nullable MClass */;
293 val* var54 /* : null */;
294 short int var55 /* : Bool */;
295 short int var56 /* : Bool */;
296 val* var57 /* : null */;
297 short int var58 /* : Bool */;
298 static val* varonce59;
299 val* var60 /* : String */;
300 char* var61 /* : NativeString */;
301 long var62 /* : Int */;
302 val* var63 /* : String */;
303 static val* varonce64;
304 val* var65 /* : String */;
305 char* var66 /* : NativeString */;
306 long var67 /* : Int */;
307 val* var68 /* : String */;
308 val* var69 /* : Array[Object] */;
309 long var70 /* : Int */;
310 val* var71 /* : NativeArray[Object] */;
311 val* var72 /* : String */;
312 short int var73 /* : Bool */;
313 short int var74 /* : Bool */;
314 short int var_75 /* var : Bool */;
315 val* var76 /* : null */;
316 short int var77 /* : Bool */;
317 val* var78 /* : ToolContext */;
318 static val* varonce79;
319 val* var80 /* : String */;
320 char* var81 /* : NativeString */;
321 long var82 /* : Int */;
322 val* var83 /* : String */;
323 val* var84 /* : Array[Object] */;
324 long var85 /* : Int */;
325 val* var86 /* : NativeArray[Object] */;
326 val* var87 /* : String */;
327 long var88 /* : Int */;
328 val* var89 /* : MClass */;
329 short int var90 /* : Bool */;
330 short int var91 /* : Bool */;
331 short int var92 /* : Bool */;
332 short int var_93 /* var : Bool */;
333 val* var94 /* : null */;
334 short int var95 /* : Bool */;
335 static val* varonce96;
336 val* var97 /* : String */;
337 char* var98 /* : NativeString */;
338 long var99 /* : Int */;
339 val* var100 /* : String */;
340 static val* varonce101;
341 val* var102 /* : String */;
342 char* var103 /* : NativeString */;
343 long var104 /* : Int */;
344 val* var105 /* : String */;
345 val* var106 /* : String */;
346 static val* varonce107;
347 val* var108 /* : String */;
348 char* var109 /* : NativeString */;
349 long var110 /* : Int */;
350 val* var111 /* : String */;
351 val* var112 /* : Array[Object] */;
352 long var113 /* : Int */;
353 val* var114 /* : NativeArray[Object] */;
354 val* var115 /* : String */;
355 short int var116 /* : Bool */;
356 short int var117 /* : Bool */;
357 val* var118 /* : MMethod */;
358 static val* varonce119;
359 val* var120 /* : String */;
360 char* var121 /* : NativeString */;
361 long var122 /* : Int */;
362 val* var123 /* : String */;
363 val* var124 /* : MClass */;
364 val* var125 /* : MVisibility */;
365 val* var_mprop /* var mprop: MMethod */;
366 val* var126 /* : MMethodDef */;
367 val* var127 /* : Location */;
368 val* var_mpropdef128 /* var mpropdef: MMethodDef */;
369 val* var129 /* : Array[MParameter] */;
370 val* var_mparameters /* var mparameters: Array[MParameter] */;
371 val* var130 /* : MSignature */;
372 val* var131 /* : null */;
373 val* var_msignature /* var msignature: MSignature */;
374 short int var132 /* : Bool */;
375 val* var133 /* : ToolContext */;
376 static val* varonce134;
377 val* var135 /* : String */;
378 char* var136 /* : NativeString */;
379 long var137 /* : Int */;
380 val* var138 /* : String */;
381 val* var139 /* : Array[Object] */;
382 long var140 /* : Int */;
383 val* var141 /* : NativeArray[Object] */;
384 val* var142 /* : String */;
385 long var143 /* : Int */;
386 val* var144 /* : Array[MParameter] */;
387 val* var_mparameters145 /* var mparameters: Array[MParameter] */;
388 val* var146 /* : ANodes[APropdef] */;
389 val* var147 /* : Iterator[nullable Object] */;
390 short int var148 /* : Bool */;
391 val* var149 /* : nullable Object */;
392 val* var_npropdef /* var npropdef: APropdef */;
393 short int var150 /* : Bool */;
394 short int var151 /* : Bool */;
395 int cltype152;
396 int idtype153;
397 short int var_154 /* var : Bool */;
398 val* var155 /* : nullable AExpr */;
399 val* var156 /* : null */;
400 short int var157 /* : Bool */;
401 val* var158 /* : nullable MPropDef */;
402 val* var159 /* : null */;
403 short int var160 /* : Bool */;
404 val* var161 /* : nullable MPropDef */;
405 val* var162 /* : MProperty */;
406 val* var163 /* : String */;
407 long var164 /* : Int */;
408 val* var165 /* : String */;
409 val* var_paramname /* var paramname: String */;
410 val* var166 /* : nullable MPropDef */;
411 val* var167 /* : nullable MType */;
412 val* var_ret_type /* var ret_type: nullable MType */;
413 val* var168 /* : null */;
414 short int var169 /* : Bool */;
415 val* var170 /* : MParameter */;
416 short int var171 /* : Bool */;
417 val* var_mparameter /* var mparameter: MParameter */;
418 val* var173 /* : MMethod */;
419 static val* varonce174;
420 val* var175 /* : String */;
421 char* var176 /* : NativeString */;
422 long var177 /* : Int */;
423 val* var178 /* : String */;
424 val* var179 /* : MClass */;
425 val* var180 /* : MVisibility */;
426 val* var_mprop181 /* var mprop: MMethod */;
427 val* var182 /* : MMethodDef */;
428 val* var183 /* : Location */;
429 val* var_mpropdef184 /* var mpropdef: MMethodDef */;
430 val* var185 /* : MSignature */;
431 val* var186 /* : null */;
432 val* var_msignature187 /* var msignature: MSignature */;
433 short int var188 /* : Bool */;
434 val* var189 /* : ToolContext */;
435 static val* varonce190;
436 val* var191 /* : String */;
437 char* var192 /* : NativeString */;
438 long var193 /* : Int */;
439 val* var194 /* : String */;
440 val* var195 /* : Array[Object] */;
441 long var196 /* : Int */;
442 val* var197 /* : NativeArray[Object] */;
443 val* var198 /* : String */;
444 long var199 /* : Int */;
445 var_nclassdef = p0;
446 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
447 if (var == NULL) {
448 fprintf(stderr, "Runtime error: %s", "Cast failed");
449 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 70);
450 show_backtrace(1);
451 }
452 var_mclassdef = var;
453 var1 = ((short int (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__is_intro]))(var_mclassdef) /* is_intro on <var_mclassdef:MClassDef>*/;
454 var2 = !var1;
455 if (var2){
456 goto RET_LABEL;
457 } else {
458 }
459 var3 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
460 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClass__kind]))(var3) /* kind on <var3:MClass>*/;
461 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_model__MClassKind__need_init]))(var4) /* need_init on <var4:MClassKind>*/;
462 var6 = !var5;
463 if (var6){
464 goto RET_LABEL;
465 } else {
466 }
467 var7 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
468 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:Array[MPropDef]>*/;
469 for(;;) {
470 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
471 if(!var9) break;
472 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
473 var_mpropdef = var10;
474 /* <var_mpropdef:MPropDef> isa MMethodDef */
475 cltype = type_model__MMethodDef.color;
476 idtype = type_model__MMethodDef.id;
477 if(cltype >= var_mpropdef->type->table_size) {
478 var11 = 0;
479 } else {
480 var11 = var_mpropdef->type->type_table[cltype] == idtype;
481 }
482 var12 = !var11;
483 if (var12){
484 goto CONTINUE_label;
485 } else {
486 }
487 var13 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:MPropDef(MMethodDef)>*/;
488 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_model__MMethod__is_init]))(var13) /* is_init on <var13:MProperty(MMethod)>*/;
489 if (var14){
490 goto RET_LABEL;
491 } else {
492 }
493 CONTINUE_label: (void)0;
494 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
495 }
496 BREAK_label: (void)0;
497 /* <var_nclassdef:AClassdef> isa AStdClassdef */
498 cltype16 = type_parser_nodes__AStdClassdef.color;
499 idtype17 = type_parser_nodes__AStdClassdef.id;
500 if(cltype16 >= var_nclassdef->type->table_size) {
501 var15 = 0;
502 } else {
503 var15 = var_nclassdef->type->type_table[cltype16] == idtype17;
504 }
505 var18 = !var15;
506 if (var18){
507 goto RET_LABEL;
508 } else {
509 }
510 var19 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef(AStdClassdef)>*/;
511 if (var19 == NULL) {
512 fprintf(stderr, "Runtime error: %s", "Reciever is null");
513 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 86);
514 show_backtrace(1);
515 } else {
516 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MClassDef__mmodule]))(var19) /* mmodule on <var19:nullable MClassDef>*/;
517 }
518 var_mmodule = var20;
519 var21 = NEW_array__Array(&type_array__Arraymodel__MMethod);
520 ((void (*)(val*))(var21->class->vft[COLOR_array__Array__init]))(var21) /* init on <var21:Array[MMethod]>*/;
521 var_combine = var21;
522 var22 = NULL;
523 var_inhc = var22;
524 var23 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__supertypes]))(var_mclassdef) /* supertypes on <var_mclassdef:MClassDef>*/;
525 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Collection__iterator]))(var23) /* iterator on <var23:Array[MClassType]>*/;
526 for(;;) {
527 var25 = ((short int (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var24) /* is_ok on <var24:Iterator[nullable Object]>*/;
528 if(!var25) break;
529 var26 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__item]))(var24) /* item on <var24:Iterator[nullable Object]>*/;
530 var_st = var26;
531 var27 = ((val* (*)(val*))(var_st->class->vft[COLOR_model__MClassType__mclass]))(var_st) /* mclass on <var_st:MClassType>*/;
532 var_c = var27;
533 var28 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__kind]))(var_c) /* kind on <var_c:MClass>*/;
534 var29 = ((short int (*)(val*))(var28->class->vft[COLOR_model__MClassKind__need_init]))(var28) /* need_init on <var28:MClassKind>*/;
535 var30 = !var29;
536 if (var30){
537 goto CONTINUE_label31;
538 } else {
539 }
540 var32 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef(AStdClassdef)>*/;
541 if (var32 == NULL) {
542 fprintf(stderr, "Runtime error: %s", "Reciever is null");
543 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 93);
544 show_backtrace(1);
545 } else {
546 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_model__MClassDef__bound_mtype]))(var32) /* bound_mtype on <var32:nullable MClassDef>*/;
547 }
548 var34 = ((val* (*)(val*, val*, val*))(var_st->class->vft[COLOR_model__MType__anchor_to]))(var_st, var_mmodule, var33) /* anchor_to on <var_st:MClassType>*/;
549 var_st = var34;
550 if (varonce) {
551 var35 = varonce;
552 } else {
553 var36 = "init";
554 var37 = 4;
555 var38 = string__NativeString__to_s_with_length(var36, var37);
556 var35 = var38;
557 varonce = var35;
558 }
559 var39 = ((val* (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2]))(self, var_nclassdef, var_mmodule, var_st, var35) /* try_get_mproperty_by_name2 on <self:ModelBuilder>*/;
560 /* <var39:nullable MProperty> isa nullable MMethod */
561 cltype41 = type_nullable_model__MMethod.color;
562 idtype42 = type_nullable_model__MMethod.id;
563 if(var39 == NULL) {
564 var40 = 1;
565 } else {
566 if(cltype41 >= var39->type->table_size) {
567 var40 = 0;
568 } else {
569 var40 = var39->type->type_table[cltype41] == idtype42;
570 }
571 }
572 if (!var40) {
573 var_class_name = var39 == NULL ? "null" : var39->type->name;
574 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
575 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 94);
576 show_backtrace(1);
577 }
578 var_candidate = var39;
579 var44 = NULL;
580 if (var_candidate == NULL) {
581 var45 = 0; /* is null */
582 } else {
583 var45 = 1; /* arg is null and recv is not */
584 }
585 var_ = var45;
586 if (var45){
587 var46 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__intro]))(var_candidate) /* intro on <var_candidate:nullable MMethod(MMethod)>*/;
588 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_model__MMethodDef__msignature]))(var46) /* msignature on <var46:MPropDef(MMethodDef)>*/;
589 if (var47 == NULL) {
590 fprintf(stderr, "Runtime error: %s", "Reciever is null");
591 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 95);
592 show_backtrace(1);
593 } else {
594 var48 = ((long (*)(val*))(var47->class->vft[COLOR_model__MSignature__arity]))(var47) /* arity on <var47:nullable MSignature>*/;
595 }
596 var49 = 0;
597 { /* Inline kernel#Int#== (var48,var49) */
598 var52 = var48 == var49;
599 var50 = var52;
600 goto RET_LABEL51;
601 RET_LABEL51:(void)0;
602 }
603 var43 = var50;
604 } else {
605 var43 = var_;
606 }
607 if (var43){
608 ((void (*)(val*, val*))(var_combine->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_combine, var_candidate) /* add on <var_combine:Array[MMethod]>*/;
609 goto CONTINUE_label31;
610 } else {
611 }
612 var53 = ((val* (*)(val*))(var_c->class->vft[COLOR_modelize_property__MClass__inherit_init_from]))(var_c) /* inherit_init_from on <var_c:MClass>*/;
613 var_inhc2 = var53;
614 var54 = NULL;
615 if (var_inhc2 == NULL) {
616 var55 = 1; /* is null */
617 } else {
618 var55 = 0; /* arg is null but recv is not */
619 }
620 if (var55){
621 var_inhc2 = var_c;
622 } else {
623 }
624 var56 = ((short int (*)(val*, val*))(var_inhc2->class->vft[COLOR_kernel__Object___61d_61d]))(var_inhc2, var_inhc) /* == on <var_inhc2:nullable MClass(MClass)>*/;
625 if (var56){
626 goto CONTINUE_label31;
627 } else {
628 }
629 var57 = NULL;
630 if (var_inhc == NULL) {
631 var58 = 0; /* is null */
632 } else {
633 var58 = 1; /* arg is null and recv is not */
634 }
635 if (var58){
636 if (varonce59) {
637 var60 = varonce59;
638 } else {
639 var61 = "Error: Cannot provide a defaut constructor: conflict for ";
640 var62 = 57;
641 var63 = string__NativeString__to_s_with_length(var61, var62);
642 var60 = var63;
643 varonce59 = var60;
644 }
645 if (varonce64) {
646 var65 = varonce64;
647 } else {
648 var66 = " and ";
649 var67 = 5;
650 var68 = string__NativeString__to_s_with_length(var66, var67);
651 var65 = var68;
652 varonce64 = var65;
653 }
654 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
655 { /* var69 = array_instance Array[Object] */
656 var70 = 4;
657 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
658 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var60;
659 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var_inhc;
660 ((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65;
661 ((struct instance_array__NativeArray*)var71)->values[3] = (val*) var_c;
662 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
663 }
664 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
665 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var72) /* error on <self:ModelBuilder>*/;
666 } else {
667 var_inhc = var_inhc2;
668 }
669 CONTINUE_label31: (void)0;
670 ((void (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__next]))(var24) /* next on <var24:Iterator[nullable Object]>*/;
671 }
672 BREAK_label31: (void)0;
673 var74 = ((short int (*)(val*))(var_combine->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_combine) /* is_empty on <var_combine:Array[MMethod]>*/;
674 var_75 = var74;
675 if (var74){
676 var76 = NULL;
677 if (var_inhc == NULL) {
678 var77 = 0; /* is null */
679 } else {
680 var77 = 1; /* arg is null and recv is not */
681 }
682 var73 = var77;
683 } else {
684 var73 = var_75;
685 }
686 if (var73){
687 var78 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
688 if (varonce79) {
689 var80 = varonce79;
690 } else {
691 var81 = " inherits all constructors from ";
692 var82 = 32;
693 var83 = string__NativeString__to_s_with_length(var81, var82);
694 var80 = var83;
695 varonce79 = var80;
696 }
697 var84 = NEW_array__Array(&type_array__Arraykernel__Object);
698 { /* var84 = array_instance Array[Object] */
699 var85 = 3;
700 var86 = NEW_array__NativeArray(var85, &type_array__NativeArraykernel__Object);
701 ((struct instance_array__NativeArray*)var86)->values[0] = (val*) var_mclassdef;
702 ((struct instance_array__NativeArray*)var86)->values[1] = (val*) var80;
703 ((struct instance_array__NativeArray*)var86)->values[2] = (val*) var_inhc;
704 ((void (*)(val*, val*, long))(var84->class->vft[COLOR_array__Array__with_native]))(var84, var86, var85) /* with_native on <var84:Array[Object]>*/;
705 }
706 var87 = ((val* (*)(val*))(var84->class->vft[COLOR_string__Object__to_s]))(var84) /* to_s on <var84:Array[Object]>*/;
707 var88 = 3;
708 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_toolcontext__ToolContext__info]))(var78, var87, var88) /* info on <var78:ToolContext>*/;
709 var89 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
710 ((void (*)(val*, val*))(var89->class->vft[COLOR_modelize_property__MClass__inherit_init_from_61d]))(var89, var_inhc) /* inherit_init_from= on <var89:MClass>*/;
711 goto RET_LABEL;
712 } else {
713 }
714 var91 = ((short int (*)(val*))(var_combine->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_combine) /* is_empty on <var_combine:Array[MMethod]>*/;
715 var92 = !var91;
716 var_93 = var92;
717 if (var92){
718 var94 = NULL;
719 if (var_inhc == NULL) {
720 var95 = 0; /* is null */
721 } else {
722 var95 = 1; /* arg is null and recv is not */
723 }
724 var90 = var95;
725 } else {
726 var90 = var_93;
727 }
728 if (var90){
729 if (varonce96) {
730 var97 = varonce96;
731 } else {
732 var98 = "Error: Cannot provide a defaut constructor: conflict for ";
733 var99 = 57;
734 var100 = string__NativeString__to_s_with_length(var98, var99);
735 var97 = var100;
736 varonce96 = var97;
737 }
738 if (varonce101) {
739 var102 = varonce101;
740 } else {
741 var103 = ", ";
742 var104 = 2;
743 var105 = string__NativeString__to_s_with_length(var103, var104);
744 var102 = var105;
745 varonce101 = var102;
746 }
747 var106 = ((val* (*)(val*, val*))(var_combine->class->vft[COLOR_string__Collection__join]))(var_combine, var102) /* join on <var_combine:Array[MMethod]>*/;
748 if (varonce107) {
749 var108 = varonce107;
750 } else {
751 var109 = " and ";
752 var110 = 5;
753 var111 = string__NativeString__to_s_with_length(var109, var110);
754 var108 = var111;
755 varonce107 = var108;
756 }
757 var112 = NEW_array__Array(&type_array__Arraykernel__Object);
758 { /* var112 = array_instance Array[Object] */
759 var113 = 4;
760 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraykernel__Object);
761 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var97;
762 ((struct instance_array__NativeArray*)var114)->values[1] = (val*) var106;
763 ((struct instance_array__NativeArray*)var114)->values[2] = (val*) var108;
764 ((struct instance_array__NativeArray*)var114)->values[3] = (val*) var_inhc;
765 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[Object]>*/;
766 }
767 var115 = ((val* (*)(val*))(var112->class->vft[COLOR_string__Object__to_s]))(var112) /* to_s on <var112:Array[Object]>*/;
768 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var115) /* error on <self:ModelBuilder>*/;
769 goto RET_LABEL;
770 } else {
771 }
772 var116 = ((short int (*)(val*))(var_combine->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_combine) /* is_empty on <var_combine:Array[MMethod]>*/;
773 var117 = !var116;
774 if (var117){
775 ((void (*)(val*, val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__super_inits_61d]))(var_nclassdef, var_combine) /* super_inits= on <var_nclassdef:AClassdef(AStdClassdef)>*/;
776 var118 = NEW_model__MMethod(&type_model__MMethod);
777 if (varonce119) {
778 var120 = varonce119;
779 } else {
780 var121 = "init";
781 var122 = 4;
782 var123 = string__NativeString__to_s_with_length(var121, var122);
783 var120 = var123;
784 varonce119 = var120;
785 }
786 var124 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
787 var125 = ((val* (*)(val*))(var124->class->vft[COLOR_model__MClass__visibility]))(var124) /* visibility on <var124:MClass>*/;
788 ((void (*)(val*, val*, val*, val*))(var118->class->vft[COLOR_model__MMethod__init]))(var118, var_mclassdef, var120, var125) /* init on <var118:MMethod>*/;
789 var_mprop = var118;
790 var126 = NEW_model__MMethodDef(&type_model__MMethodDef);
791 var127 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:AClassdef(AStdClassdef)>*/;
792 ((void (*)(val*, val*, val*, val*))(var126->class->vft[COLOR_model__MMethodDef__init]))(var126, var_mclassdef, var_mprop, var127) /* init on <var126:MMethodDef>*/;
793 var_mpropdef128 = var126;
794 var129 = NEW_array__Array(&type_array__Arraymodel__MParameter);
795 ((void (*)(val*))(var129->class->vft[COLOR_array__Array__init]))(var129) /* init on <var129:Array[MParameter]>*/;
796 var_mparameters = var129;
797 var130 = NEW_model__MSignature(&type_model__MSignature);
798 var131 = NULL;
799 ((void (*)(val*, val*, val*))(var130->class->vft[COLOR_model__MSignature__init]))(var130, var_mparameters, var131) /* init on <var130:MSignature>*/;
800 var_msignature = var130;
801 ((void (*)(val*, val*))(var_mpropdef128->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mpropdef128, var_msignature) /* msignature= on <var_mpropdef128:MMethodDef>*/;
802 var132 = 1;
803 ((void (*)(val*, short int))(var_mprop->class->vft[COLOR_model__MMethod__is_init_61d]))(var_mprop, var132) /* is_init= on <var_mprop:MMethod>*/;
804 ((void (*)(val*, val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mfree_init_61d]))(var_nclassdef, var_mpropdef128) /* mfree_init= on <var_nclassdef:AClassdef(AStdClassdef)>*/;
805 var133 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
806 if (varonce134) {
807 var135 = varonce134;
808 } else {
809 var136 = " gets a free empty constructor ";
810 var137 = 31;
811 var138 = string__NativeString__to_s_with_length(var136, var137);
812 var135 = var138;
813 varonce134 = var135;
814 }
815 var139 = NEW_array__Array(&type_array__Arraykernel__Object);
816 { /* var139 = array_instance Array[Object] */
817 var140 = 4;
818 var141 = NEW_array__NativeArray(var140, &type_array__NativeArraykernel__Object);
819 ((struct instance_array__NativeArray*)var141)->values[0] = (val*) var_mclassdef;
820 ((struct instance_array__NativeArray*)var141)->values[1] = (val*) var135;
821 ((struct instance_array__NativeArray*)var141)->values[2] = (val*) var_mpropdef128;
822 ((struct instance_array__NativeArray*)var141)->values[3] = (val*) var_msignature;
823 ((void (*)(val*, val*, long))(var139->class->vft[COLOR_array__Array__with_native]))(var139, var141, var140) /* with_native on <var139:Array[Object]>*/;
824 }
825 var142 = ((val* (*)(val*))(var139->class->vft[COLOR_string__Object__to_s]))(var139) /* to_s on <var139:Array[Object]>*/;
826 var143 = 3;
827 ((void (*)(val*, val*, long))(var133->class->vft[COLOR_toolcontext__ToolContext__info]))(var133, var142, var143) /* info on <var133:ToolContext>*/;
828 goto RET_LABEL;
829 } else {
830 }
831 var144 = NEW_array__Array(&type_array__Arraymodel__MParameter);
832 ((void (*)(val*))(var144->class->vft[COLOR_array__Array__init]))(var144) /* init on <var144:Array[MParameter]>*/;
833 var_mparameters145 = var144;
834 var146 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef(AStdClassdef)>*/;
835 var147 = ((val* (*)(val*))(var146->class->vft[COLOR_abstract_collection__Collection__iterator]))(var146) /* iterator on <var146:ANodes[APropdef]>*/;
836 for(;;) {
837 var148 = ((short int (*)(val*))(var147->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var147) /* is_ok on <var147:Iterator[nullable Object]>*/;
838 if(!var148) break;
839 var149 = ((val* (*)(val*))(var147->class->vft[COLOR_abstract_collection__Iterator__item]))(var147) /* item on <var147:Iterator[nullable Object]>*/;
840 var_npropdef = var149;
841 /* <var_npropdef:APropdef> isa AAttrPropdef */
842 cltype152 = type_parser_nodes__AAttrPropdef.color;
843 idtype153 = type_parser_nodes__AAttrPropdef.id;
844 if(cltype152 >= var_npropdef->type->table_size) {
845 var151 = 0;
846 } else {
847 var151 = var_npropdef->type->type_table[cltype152] == idtype153;
848 }
849 var_154 = var151;
850 if (var151){
851 var155 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(var_npropdef) /* n_expr on <var_npropdef:APropdef(AAttrPropdef)>*/;
852 var156 = NULL;
853 if (var155 == NULL) {
854 var157 = 1; /* is null */
855 } else {
856 var157 = 0; /* arg is null but recv is not */
857 }
858 var150 = var157;
859 } else {
860 var150 = var_154;
861 }
862 if (var150){
863 var158 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef(AAttrPropdef)>*/;
864 var159 = NULL;
865 if (var158 == NULL) {
866 var160 = 1; /* is null */
867 } else {
868 var160 = 0; /* arg is null but recv is not */
869 }
870 if (var160){
871 goto RET_LABEL;
872 } else {
873 }
874 var161 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef(AAttrPropdef)>*/;
875 if (var161 == NULL) {
876 fprintf(stderr, "Runtime error: %s", "Reciever is null");
877 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 137);
878 show_backtrace(1);
879 } else {
880 var162 = ((val* (*)(val*))(var161->class->vft[COLOR_model__MPropDef__mproperty]))(var161) /* mproperty on <var161:nullable MPropDef(nullable MAttributeDef)>*/;
881 }
882 var163 = ((val* (*)(val*))(var162->class->vft[COLOR_model__MProperty__name]))(var162) /* name on <var162:MProperty(MAttribute)>*/;
883 var164 = 1;
884 var165 = ((val* (*)(val*, long))(var163->class->vft[COLOR_string__AbstractString__substring_from]))(var163, var164) /* substring_from on <var163:String>*/;
885 var_paramname = var165;
886 var166 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef(AAttrPropdef)>*/;
887 if (var166 == NULL) {
888 fprintf(stderr, "Runtime error: %s", "Reciever is null");
889 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 138);
890 show_backtrace(1);
891 } else {
892 var167 = ((val* (*)(val*))(var166->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var166) /* static_mtype on <var166:nullable MPropDef(nullable MAttributeDef)>*/;
893 }
894 var_ret_type = var167;
895 var168 = NULL;
896 if (var_ret_type == NULL) {
897 var169 = 1; /* is null */
898 } else {
899 var169 = 0; /* arg is null but recv is not */
900 }
901 if (var169){
902 goto RET_LABEL;
903 } else {
904 }
905 var170 = NEW_model__MParameter(&type_model__MParameter);
906 var171 = 0;
907 ((void (*)(val*, val*, val*, short int))(var170->class->vft[COLOR_model__MParameter__init]))(var170, var_paramname, var_ret_type, var171) /* init on <var170:MParameter>*/;
908 var_mparameter = var170;
909 ((void (*)(val*, val*))(var_mparameters145->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparameters145, var_mparameter) /* add on <var_mparameters145:Array[MParameter]>*/;
910 } else {
911 }
912 CONTINUE_label172: (void)0;
913 ((void (*)(val*))(var147->class->vft[COLOR_abstract_collection__Iterator__next]))(var147) /* next on <var147:Iterator[nullable Object]>*/;
914 }
915 BREAK_label172: (void)0;
916 var173 = NEW_model__MMethod(&type_model__MMethod);
917 if (varonce174) {
918 var175 = varonce174;
919 } else {
920 var176 = "init";
921 var177 = 4;
922 var178 = string__NativeString__to_s_with_length(var176, var177);
923 var175 = var178;
924 varonce174 = var175;
925 }
926 var179 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
927 var180 = ((val* (*)(val*))(var179->class->vft[COLOR_model__MClass__visibility]))(var179) /* visibility on <var179:MClass>*/;
928 ((void (*)(val*, val*, val*, val*))(var173->class->vft[COLOR_model__MMethod__init]))(var173, var_mclassdef, var175, var180) /* init on <var173:MMethod>*/;
929 var_mprop181 = var173;
930 var182 = NEW_model__MMethodDef(&type_model__MMethodDef);
931 var183 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:AClassdef(AStdClassdef)>*/;
932 ((void (*)(val*, val*, val*, val*))(var182->class->vft[COLOR_model__MMethodDef__init]))(var182, var_mclassdef, var_mprop181, var183) /* init on <var182:MMethodDef>*/;
933 var_mpropdef184 = var182;
934 var185 = NEW_model__MSignature(&type_model__MSignature);
935 var186 = NULL;
936 ((void (*)(val*, val*, val*))(var185->class->vft[COLOR_model__MSignature__init]))(var185, var_mparameters145, var186) /* init on <var185:MSignature>*/;
937 var_msignature187 = var185;
938 ((void (*)(val*, val*))(var_mpropdef184->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mpropdef184, var_msignature187) /* msignature= on <var_mpropdef184:MMethodDef>*/;
939 var188 = 1;
940 ((void (*)(val*, short int))(var_mprop181->class->vft[COLOR_model__MMethod__is_init_61d]))(var_mprop181, var188) /* is_init= on <var_mprop181:MMethod>*/;
941 ((void (*)(val*, val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mfree_init_61d]))(var_nclassdef, var_mpropdef184) /* mfree_init= on <var_nclassdef:AClassdef(AStdClassdef)>*/;
942 var189 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
943 if (varonce190) {
944 var191 = varonce190;
945 } else {
946 var192 = " gets a free constructor for attributes ";
947 var193 = 40;
948 var194 = string__NativeString__to_s_with_length(var192, var193);
949 var191 = var194;
950 varonce190 = var191;
951 }
952 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
953 { /* var195 = array_instance Array[Object] */
954 var196 = 4;
955 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
956 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var_mclassdef;
957 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var191;
958 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var_mpropdef184;
959 ((struct instance_array__NativeArray*)var197)->values[3] = (val*) var_msignature187;
960 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
961 }
962 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
963 var199 = 3;
964 ((void (*)(val*, val*, long))(var189->class->vft[COLOR_toolcontext__ToolContext__info]))(var189, var198, var199) /* info on <var189:ToolContext>*/;
965 RET_LABEL:;
966 }
967 /* method modelize_property#ModelBuilder#process_default_constructors for (self: Object, AClassdef) */
968 void VIRTUAL_modelize_property__ModelBuilder__process_default_constructors(val* self, val* p0) {
969 modelize_property__ModelBuilder__process_default_constructors(self, p0);
970 RET_LABEL:;
971 }
972 /* method modelize_property#MClass#inherit_init_from for (self: MClass): nullable MClass */
973 val* modelize_property__MClass__inherit_init_from(val* self) {
974 val* var /* : nullable MClass */;
975 val* var1 /* : nullable MClass */;
976 var1 = self->attrs[COLOR_modelize_property__MClass___64dinherit_init_from].val; /* @inherit_init_from on <self:MClass> */
977 var = var1;
978 RET_LABEL:;
979 return var;
980 }
981 /* method modelize_property#MClass#inherit_init_from for (self: Object): nullable MClass */
982 val* VIRTUAL_modelize_property__MClass__inherit_init_from(val* self) {
983 val* var /* : nullable MClass */;
984 val* var1 /* : nullable MClass */;
985 var1 = modelize_property__MClass__inherit_init_from(self);
986 var = var1;
987 RET_LABEL:;
988 return var;
989 }
990 /* method modelize_property#MClass#inherit_init_from= for (self: MClass, nullable MClass) */
991 void modelize_property__MClass__inherit_init_from_61d(val* self, val* p0) {
992 self->attrs[COLOR_modelize_property__MClass___64dinherit_init_from].val = p0; /* @inherit_init_from on <self:MClass> */
993 RET_LABEL:;
994 }
995 /* method modelize_property#MClass#inherit_init_from= for (self: Object, nullable MClass) */
996 void VIRTUAL_modelize_property__MClass__inherit_init_from_61d(val* self, val* p0) {
997 modelize_property__MClass__inherit_init_from_61d(self, p0);
998 RET_LABEL:;
999 }
1000 /* method modelize_property#AClassdef#build_properties_is_done for (self: AClassdef): Bool */
1001 short int modelize_property__AClassdef__build_properties_is_done(val* self) {
1002 short int var /* : Bool */;
1003 short int var1 /* : Bool */;
1004 var1 = self->attrs[COLOR_modelize_property__AClassdef___64dbuild_properties_is_done].s; /* @build_properties_is_done on <self:AClassdef> */
1005 var = var1;
1006 RET_LABEL:;
1007 return var;
1008 }
1009 /* method modelize_property#AClassdef#build_properties_is_done for (self: Object): Bool */
1010 short int VIRTUAL_modelize_property__AClassdef__build_properties_is_done(val* self) {
1011 short int var /* : Bool */;
1012 short int var1 /* : Bool */;
1013 var1 = modelize_property__AClassdef__build_properties_is_done(self);
1014 var = var1;
1015 RET_LABEL:;
1016 return var;
1017 }
1018 /* method modelize_property#AClassdef#build_properties_is_done= for (self: AClassdef, Bool) */
1019 void modelize_property__AClassdef__build_properties_is_done_61d(val* self, short int p0) {
1020 self->attrs[COLOR_modelize_property__AClassdef___64dbuild_properties_is_done].s = p0; /* @build_properties_is_done on <self:AClassdef> */
1021 RET_LABEL:;
1022 }
1023 /* method modelize_property#AClassdef#build_properties_is_done= for (self: Object, Bool) */
1024 void VIRTUAL_modelize_property__AClassdef__build_properties_is_done_61d(val* self, short int p0) {
1025 modelize_property__AClassdef__build_properties_is_done_61d(self, p0);
1026 RET_LABEL:;
1027 }
1028 /* method modelize_property#AClassdef#super_inits for (self: AClassdef): nullable Collection[MMethod] */
1029 val* modelize_property__AClassdef__super_inits(val* self) {
1030 val* var /* : nullable Collection[MMethod] */;
1031 val* var1 /* : nullable Collection[MMethod] */;
1032 var1 = self->attrs[COLOR_modelize_property__AClassdef___64dsuper_inits].val; /* @super_inits on <self:AClassdef> */
1033 var = var1;
1034 RET_LABEL:;
1035 return var;
1036 }
1037 /* method modelize_property#AClassdef#super_inits for (self: Object): nullable Collection[MMethod] */
1038 val* VIRTUAL_modelize_property__AClassdef__super_inits(val* self) {
1039 val* var /* : nullable Collection[MMethod] */;
1040 val* var1 /* : nullable Collection[MMethod] */;
1041 var1 = modelize_property__AClassdef__super_inits(self);
1042 var = var1;
1043 RET_LABEL:;
1044 return var;
1045 }
1046 /* method modelize_property#AClassdef#super_inits= for (self: AClassdef, nullable Collection[MMethod]) */
1047 void modelize_property__AClassdef__super_inits_61d(val* self, val* p0) {
1048 self->attrs[COLOR_modelize_property__AClassdef___64dsuper_inits].val = p0; /* @super_inits on <self:AClassdef> */
1049 RET_LABEL:;
1050 }
1051 /* method modelize_property#AClassdef#super_inits= for (self: Object, nullable Collection[MMethod]) */
1052 void VIRTUAL_modelize_property__AClassdef__super_inits_61d(val* self, val* p0) {
1053 modelize_property__AClassdef__super_inits_61d(self, p0);
1054 RET_LABEL:;
1055 }
1056 /* method modelize_property#AClassdef#mfree_init for (self: AClassdef): nullable MMethodDef */
1057 val* modelize_property__AClassdef__mfree_init(val* self) {
1058 val* var /* : nullable MMethodDef */;
1059 val* var1 /* : nullable MMethodDef */;
1060 var1 = self->attrs[COLOR_modelize_property__AClassdef___64dmfree_init].val; /* @mfree_init on <self:AClassdef> */
1061 var = var1;
1062 RET_LABEL:;
1063 return var;
1064 }
1065 /* method modelize_property#AClassdef#mfree_init for (self: Object): nullable MMethodDef */
1066 val* VIRTUAL_modelize_property__AClassdef__mfree_init(val* self) {
1067 val* var /* : nullable MMethodDef */;
1068 val* var1 /* : nullable MMethodDef */;
1069 var1 = modelize_property__AClassdef__mfree_init(self);
1070 var = var1;
1071 RET_LABEL:;
1072 return var;
1073 }
1074 /* method modelize_property#AClassdef#mfree_init= for (self: AClassdef, nullable MMethodDef) */
1075 void modelize_property__AClassdef__mfree_init_61d(val* self, val* p0) {
1076 self->attrs[COLOR_modelize_property__AClassdef___64dmfree_init].val = p0; /* @mfree_init on <self:AClassdef> */
1077 RET_LABEL:;
1078 }
1079 /* method modelize_property#AClassdef#mfree_init= for (self: Object, nullable MMethodDef) */
1080 void VIRTUAL_modelize_property__AClassdef__mfree_init_61d(val* self, val* p0) {
1081 modelize_property__AClassdef__mfree_init_61d(self, p0);
1082 RET_LABEL:;
1083 }
1084 /* method modelize_property#AClassdef#mprop2npropdef for (self: AClassdef): Map[MProperty, APropdef] */
1085 val* modelize_property__AClassdef__mprop2npropdef(val* self) {
1086 val* var /* : Map[MProperty, APropdef] */;
1087 val* var1 /* : Map[MProperty, APropdef] */;
1088 var1 = self->attrs[COLOR_modelize_property__AClassdef___64dmprop2npropdef].val; /* @mprop2npropdef on <self:AClassdef> */
1089 if (var1 == NULL) {
1090 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mprop2npropdef");
1091 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 170);
1092 show_backtrace(1);
1093 }
1094 var = var1;
1095 RET_LABEL:;
1096 return var;
1097 }
1098 /* method modelize_property#AClassdef#mprop2npropdef for (self: Object): Map[MProperty, APropdef] */
1099 val* VIRTUAL_modelize_property__AClassdef__mprop2npropdef(val* self) {
1100 val* var /* : Map[MProperty, APropdef] */;
1101 val* var1 /* : Map[MProperty, APropdef] */;
1102 var1 = modelize_property__AClassdef__mprop2npropdef(self);
1103 var = var1;
1104 RET_LABEL:;
1105 return var;
1106 }
1107 /* method modelize_property#AClassdef#mprop2npropdef= for (self: AClassdef, Map[MProperty, APropdef]) */
1108 void modelize_property__AClassdef__mprop2npropdef_61d(val* self, val* p0) {
1109 self->attrs[COLOR_modelize_property__AClassdef___64dmprop2npropdef].val = p0; /* @mprop2npropdef on <self:AClassdef> */
1110 RET_LABEL:;
1111 }
1112 /* method modelize_property#AClassdef#mprop2npropdef= for (self: Object, Map[MProperty, APropdef]) */
1113 void VIRTUAL_modelize_property__AClassdef__mprop2npropdef_61d(val* self, val* p0) {
1114 modelize_property__AClassdef__mprop2npropdef_61d(self, p0);
1115 RET_LABEL:;
1116 }
1117 /* method modelize_property#Prod#collect_text for (self: Prod): String */
1118 val* modelize_property__Prod__collect_text(val* self) {
1119 val* var /* : String */;
1120 val* var1 /* : TextCollectorVisitor */;
1121 val* var_v /* var v: TextCollectorVisitor */;
1122 val* var2 /* : String */;
1123 static val* varonce;
1124 val* var3 /* : String */;
1125 char* var4 /* : NativeString */;
1126 long var5 /* : Int */;
1127 val* var6 /* : String */;
1128 short int var7 /* : Bool */;
1129 val* var8 /* : String */;
1130 var1 = NEW_modelize_property__TextCollectorVisitor(&type_modelize_property__TextCollectorVisitor);
1131 ((void (*)(val*))(var1->class->vft[COLOR_modelize_property__TextCollectorVisitor__init]))(var1) /* init on <var1:TextCollectorVisitor>*/;
1132 var_v = var1;
1133 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on <var_v:TextCollectorVisitor>*/;
1134 var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_modelize_property__TextCollectorVisitor__text]))(var_v) /* text on <var_v:TextCollectorVisitor>*/;
1135 if (varonce) {
1136 var3 = varonce;
1137 } else {
1138 var4 = "";
1139 var5 = 0;
1140 var6 = string__NativeString__to_s_with_length(var4, var5);
1141 var3 = var6;
1142 varonce = var3;
1143 }
1144 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___33d_61d]))(var2, var3) /* != on <var2:String>*/;
1145 if (!var7) {
1146 fprintf(stderr, "Runtime error: %s", "Assert failed");
1147 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 182);
1148 show_backtrace(1);
1149 }
1150 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_modelize_property__TextCollectorVisitor__text]))(var_v) /* text on <var_v:TextCollectorVisitor>*/;
1151 var = var8;
1152 goto RET_LABEL;
1153 RET_LABEL:;
1154 return var;
1155 }
1156 /* method modelize_property#Prod#collect_text for (self: Object): String */
1157 val* VIRTUAL_modelize_property__Prod__collect_text(val* self) {
1158 val* var /* : String */;
1159 val* var1 /* : String */;
1160 var1 = modelize_property__Prod__collect_text(self);
1161 var = var1;
1162 RET_LABEL:;
1163 return var;
1164 }
1165 /* method modelize_property#TextCollectorVisitor#text for (self: TextCollectorVisitor): String */
1166 val* modelize_property__TextCollectorVisitor__text(val* self) {
1167 val* var /* : String */;
1168 val* var1 /* : String */;
1169 var1 = self->attrs[COLOR_modelize_property__TextCollectorVisitor___64dtext].val; /* @text on <self:TextCollectorVisitor> */
1170 if (var1 == NULL) {
1171 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @text");
1172 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 189);
1173 show_backtrace(1);
1174 }
1175 var = var1;
1176 RET_LABEL:;
1177 return var;
1178 }
1179 /* method modelize_property#TextCollectorVisitor#text for (self: Object): String */
1180 val* VIRTUAL_modelize_property__TextCollectorVisitor__text(val* self) {
1181 val* var /* : String */;
1182 val* var1 /* : String */;
1183 var1 = modelize_property__TextCollectorVisitor__text(self);
1184 var = var1;
1185 RET_LABEL:;
1186 return var;
1187 }
1188 /* method modelize_property#TextCollectorVisitor#text= for (self: TextCollectorVisitor, String) */
1189 void modelize_property__TextCollectorVisitor__text_61d(val* self, val* p0) {
1190 self->attrs[COLOR_modelize_property__TextCollectorVisitor___64dtext].val = p0; /* @text on <self:TextCollectorVisitor> */
1191 RET_LABEL:;
1192 }
1193 /* method modelize_property#TextCollectorVisitor#text= for (self: Object, String) */
1194 void VIRTUAL_modelize_property__TextCollectorVisitor__text_61d(val* self, val* p0) {
1195 modelize_property__TextCollectorVisitor__text_61d(self, p0);
1196 RET_LABEL:;
1197 }
1198 /* method modelize_property#TextCollectorVisitor#visit for (self: TextCollectorVisitor, ANode) */
1199 void modelize_property__TextCollectorVisitor__visit(val* self, val* p0) {
1200 val* var_n /* var n: ANode */;
1201 short int var /* : Bool */;
1202 int cltype;
1203 int idtype;
1204 val* var_ /* var : TextCollectorVisitor */;
1205 val* var1 /* : String */;
1206 val* var2 /* : String */;
1207 val* var3 /* : String */;
1208 var_n = p0;
1209 /* <var_n:ANode> isa Token */
1210 cltype = type_parser_nodes__Token.color;
1211 idtype = type_parser_nodes__Token.id;
1212 if(cltype >= var_n->type->table_size) {
1213 var = 0;
1214 } else {
1215 var = var_n->type->type_table[cltype] == idtype;
1216 }
1217 if (var){
1218 var_ = self;
1219 var1 = ((val* (*)(val*))(var_->class->vft[COLOR_modelize_property__TextCollectorVisitor__text]))(var_) /* text on <var_:TextCollectorVisitor>*/;
1220 var2 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__Token__text]))(var_n) /* text on <var_n:ANode(Token)>*/;
1221 var3 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_string__String___43d]))(var1, var2) /* + on <var1:String>*/;
1222 ((void (*)(val*, val*))(var_->class->vft[COLOR_modelize_property__TextCollectorVisitor__text_61d]))(var_, var3) /* text= on <var_:TextCollectorVisitor>*/;
1223 } else {
1224 }
1225 ((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode>*/;
1226 RET_LABEL:;
1227 }
1228 /* method modelize_property#TextCollectorVisitor#visit for (self: Object, ANode) */
1229 void VIRTUAL_modelize_property__TextCollectorVisitor__visit(val* self, val* p0) {
1230 modelize_property__TextCollectorVisitor__visit(self, p0);
1231 RET_LABEL:;
1232 }
1233 /* method modelize_property#TextCollectorVisitor#init for (self: TextCollectorVisitor) */
1234 void modelize_property__TextCollectorVisitor__init(val* self) {
1235 ((void (*)(val*))(self->class->vft[COLOR_parser_nodes__Visitor__init]))(self) /* init on <self:TextCollectorVisitor>*/;
1236 RET_LABEL:;
1237 }
1238 /* method modelize_property#TextCollectorVisitor#init for (self: Object) */
1239 void VIRTUAL_modelize_property__TextCollectorVisitor__init(val* self) {
1240 modelize_property__TextCollectorVisitor__init(self);
1241 RET_LABEL:;
1242 }
1243 /* method modelize_property#APropdef#mpropdef for (self: APropdef): nullable MPropDef */
1244 val* modelize_property__APropdef__mpropdef(val* self) {
1245 val* var /* : nullable MPropDef */;
1246 val* var1 /* : nullable MPropDef */;
1247 var1 = self->attrs[COLOR_modelize_property__APropdef___64dmpropdef].val; /* @mpropdef on <self:APropdef> */
1248 var = var1;
1249 RET_LABEL:;
1250 return var;
1251 }
1252 /* method modelize_property#APropdef#mpropdef for (self: Object): nullable MPropDef */
1253 val* VIRTUAL_modelize_property__APropdef__mpropdef(val* self) {
1254 val* var /* : nullable MPropDef */;
1255 val* var1 /* : nullable MPropDef */;
1256 var1 = modelize_property__APropdef__mpropdef(self);
1257 var = var1;
1258 RET_LABEL:;
1259 return var;
1260 }
1261 /* method modelize_property#APropdef#mpropdef= for (self: APropdef, nullable MPropDef) */
1262 void modelize_property__APropdef__mpropdef_61d(val* self, val* p0) {
1263 short int var /* : Bool */;
1264 int cltype;
1265 int idtype;
1266 const struct type* type_struct;
1267 const char* var_class_name;
1268 /* Covariant cast for argument 0 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
1269 /* <p0:nullable MPropDef> isa nullable MPROPDEF */
1270 type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
1271 cltype = type_struct->color;
1272 idtype = type_struct->id;
1273 if(p0 == NULL) {
1274 var = 1;
1275 } else {
1276 if(cltype >= p0->type->table_size) {
1277 var = 0;
1278 } else {
1279 var = p0->type->type_table[cltype] == idtype;
1280 }
1281 }
1282 if (!var) {
1283 var_class_name = p0 == NULL ? "null" : p0->type->name;
1284 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
1285 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 201);
1286 show_backtrace(1);
1287 }
1288 self->attrs[COLOR_modelize_property__APropdef___64dmpropdef].val = p0; /* @mpropdef on <self:APropdef> */
1289 RET_LABEL:;
1290 }
1291 /* method modelize_property#APropdef#mpropdef= for (self: Object, nullable MPropDef) */
1292 void VIRTUAL_modelize_property__APropdef__mpropdef_61d(val* self, val* p0) {
1293 modelize_property__APropdef__mpropdef_61d(self, p0);
1294 RET_LABEL:;
1295 }
1296 /* method modelize_property#APropdef#build_property for (self: APropdef, ModelBuilder, AClassdef) */
1297 void modelize_property__APropdef__build_property(val* self, val* p0, val* p1) {
1298 const char* var_class_name;
1299 var_class_name = self == NULL ? "null" : self->type->name;
1300 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "build_property", var_class_name);
1301 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 204);
1302 show_backtrace(1);
1303 RET_LABEL:;
1304 }
1305 /* method modelize_property#APropdef#build_property for (self: Object, ModelBuilder, AClassdef) */
1306 void VIRTUAL_modelize_property__APropdef__build_property(val* self, val* p0, val* p1) {
1307 modelize_property__APropdef__build_property(self, p0, p1);
1308 RET_LABEL:;
1309 }
1310 /* method modelize_property#APropdef#build_signature for (self: APropdef, ModelBuilder, AClassdef) */
1311 void modelize_property__APropdef__build_signature(val* self, val* p0, val* p1) {
1312 const char* var_class_name;
1313 var_class_name = self == NULL ? "null" : self->type->name;
1314 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "build_signature", var_class_name);
1315 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 205);
1316 show_backtrace(1);
1317 RET_LABEL:;
1318 }
1319 /* method modelize_property#APropdef#build_signature for (self: Object, ModelBuilder, AClassdef) */
1320 void VIRTUAL_modelize_property__APropdef__build_signature(val* self, val* p0, val* p1) {
1321 modelize_property__APropdef__build_signature(self, p0, p1);
1322 RET_LABEL:;
1323 }
1324 /* method modelize_property#APropdef#check_signature for (self: APropdef, ModelBuilder, AClassdef) */
1325 void modelize_property__APropdef__check_signature(val* self, val* p0, val* p1) {
1326 const char* var_class_name;
1327 var_class_name = self == NULL ? "null" : self->type->name;
1328 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "check_signature", var_class_name);
1329 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 206);
1330 show_backtrace(1);
1331 RET_LABEL:;
1332 }
1333 /* method modelize_property#APropdef#check_signature for (self: Object, ModelBuilder, AClassdef) */
1334 void VIRTUAL_modelize_property__APropdef__check_signature(val* self, val* p0, val* p1) {
1335 modelize_property__APropdef__check_signature(self, p0, p1);
1336 RET_LABEL:;
1337 }
1338 /* method modelize_property#APropdef#new_property_visibility for (self: APropdef, ModelBuilder, AClassdef, nullable AVisibility): MVisibility */
1339 val* modelize_property__APropdef__new_property_visibility(val* self, val* p0, val* p1, val* p2) {
1340 val* var /* : MVisibility */;
1341 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
1342 val* var_nclassdef /* var nclassdef: AClassdef */;
1343 val* var_nvisibility /* var nvisibility: nullable AVisibility */;
1344 val* var1 /* : MVisibility */;
1345 val* var_mvisibility /* var mvisibility: MVisibility */;
1346 val* var2 /* : null */;
1347 short int var3 /* : Bool */;
1348 val* var4 /* : MVisibility */;
1349 val* var5 /* : MVisibility */;
1350 short int var6 /* : Bool */;
1351 static val* varonce;
1352 val* var7 /* : String */;
1353 char* var8 /* : NativeString */;
1354 long var9 /* : Int */;
1355 val* var10 /* : String */;
1356 val* var11 /* : MVisibility */;
1357 val* var12 /* : nullable MClassDef */;
1358 val* var13 /* : MClass */;
1359 val* var14 /* : MVisibility */;
1360 val* var15 /* : MVisibility */;
1361 short int var16 /* : Bool */;
1362 val* var17 /* : MVisibility */;
1363 short int var18 /* : Bool */;
1364 val* var19 /* : null */;
1365 short int var20 /* : Bool */;
1366 static val* varonce21;
1367 val* var22 /* : String */;
1368 char* var23 /* : NativeString */;
1369 long var24 /* : Int */;
1370 val* var25 /* : String */;
1371 val* var26 /* : MVisibility */;
1372 short int var27 /* : Bool */;
1373 val* var28 /* : null */;
1374 short int var29 /* : Bool */;
1375 val* var30 /* : MVisibility */;
1376 var_modelbuilder = p0;
1377 var_nclassdef = p1;
1378 var_nvisibility = p2;
1379 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:APropdef>*/;
1380 var_mvisibility = var1;
1381 var2 = NULL;
1382 if (var_nvisibility == NULL) {
1383 var3 = 0; /* is null */
1384 } else {
1385 var3 = 1; /* arg is null and recv is not */
1386 }
1387 if (var3){
1388 var4 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
1389 var_mvisibility = var4;
1390 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:APropdef>*/;
1391 var6 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var5) /* == on <var_mvisibility:MVisibility>*/;
1392 if (var6){
1393 if (varonce) {
1394 var7 = varonce;
1395 } else {
1396 var8 = "Error: intrude is not a legal visibility for properties.";
1397 var9 = 56;
1398 var10 = string__NativeString__to_s_with_length(var8, var9);
1399 var7 = var10;
1400 varonce = var7;
1401 }
1402 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nvisibility, var7) /* error on <var_modelbuilder:ModelBuilder>*/;
1403 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:APropdef>*/;
1404 var_mvisibility = var11;
1405 } else {
1406 }
1407 } else {
1408 }
1409 var12 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
1410 if (var12 == NULL) {
1411 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1412 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 217);
1413 show_backtrace(1);
1414 } else {
1415 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:nullable MClassDef>*/;
1416 }
1417 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__visibility]))(var13) /* visibility on <var13:MClass>*/;
1418 var15 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:APropdef>*/;
1419 var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var15) /* == on <var14:MVisibility>*/;
1420 if (var16){
1421 var17 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:APropdef>*/;
1422 var18 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var17) /* == on <var_mvisibility:MVisibility>*/;
1423 if (var18){
1424 var19 = NULL;
1425 if (var_nvisibility == NULL) {
1426 var20 = 0; /* is null */
1427 } else {
1428 var20 = 1; /* arg is null and recv is not */
1429 }
1430 if (!var20) {
1431 fprintf(stderr, "Runtime error: %s", "Assert failed");
1432 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 219);
1433 show_backtrace(1);
1434 }
1435 if (varonce21) {
1436 var22 = varonce21;
1437 } else {
1438 var23 = "Error: The only legal visibility for properties in a private class is private.";
1439 var24 = 78;
1440 var25 = string__NativeString__to_s_with_length(var23, var24);
1441 var22 = var25;
1442 varonce21 = var22;
1443 }
1444 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nvisibility, var22) /* error on <var_modelbuilder:ModelBuilder>*/;
1445 } else {
1446 var26 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:APropdef>*/;
1447 var27 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var26) /* == on <var_mvisibility:MVisibility>*/;
1448 if (var27){
1449 var28 = NULL;
1450 if (var_nvisibility == NULL) {
1451 var29 = 0; /* is null */
1452 } else {
1453 var29 = 1; /* arg is null and recv is not */
1454 }
1455 if (!var29) {
1456 fprintf(stderr, "Runtime error: %s", "Assert failed");
1457 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 222);
1458 show_backtrace(1);
1459 }
1460 } else {
1461 }
1462 }
1463 var30 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:APropdef>*/;
1464 var_mvisibility = var30;
1465 } else {
1466 }
1467 var = var_mvisibility;
1468 goto RET_LABEL;
1469 RET_LABEL:;
1470 return var;
1471 }
1472 /* method modelize_property#APropdef#new_property_visibility for (self: Object, ModelBuilder, AClassdef, nullable AVisibility): MVisibility */
1473 val* VIRTUAL_modelize_property__APropdef__new_property_visibility(val* self, val* p0, val* p1, val* p2) {
1474 val* var /* : MVisibility */;
1475 val* var1 /* : MVisibility */;
1476 var1 = modelize_property__APropdef__new_property_visibility(self, p0, p1, p2);
1477 var = var1;
1478 RET_LABEL:;
1479 return var;
1480 }
1481 /* method modelize_property#APropdef#check_redef_property_visibility for (self: APropdef, ModelBuilder, AClassdef, nullable AVisibility, MProperty) */
1482 void modelize_property__APropdef__check_redef_property_visibility(val* self, val* p0, val* p1, val* p2, val* p3) {
1483 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
1484 val* var_nclassdef /* var nclassdef: AClassdef */;
1485 val* var_nvisibility /* var nvisibility: nullable AVisibility */;
1486 val* var_mprop /* var mprop: MProperty */;
1487 val* var /* : null */;
1488 short int var1 /* : Bool */;
1489 val* var2 /* : MVisibility */;
1490 val* var_mvisibility /* var mvisibility: MVisibility */;
1491 short int var3 /* : Bool */;
1492 val* var4 /* : MVisibility */;
1493 short int var5 /* : Bool */;
1494 short int var_ /* var : Bool */;
1495 val* var6 /* : MVisibility */;
1496 short int var7 /* : Bool */;
1497 static val* varonce;
1498 val* var8 /* : String */;
1499 char* var9 /* : NativeString */;
1500 long var10 /* : Int */;
1501 val* var11 /* : String */;
1502 val* var12 /* : MVisibility */;
1503 static val* varonce13;
1504 val* var14 /* : String */;
1505 char* var15 /* : NativeString */;
1506 long var16 /* : Int */;
1507 val* var17 /* : String */;
1508 val* var18 /* : Array[Object] */;
1509 long var19 /* : Int */;
1510 val* var20 /* : NativeArray[Object] */;
1511 val* var21 /* : String */;
1512 var_modelbuilder = p0;
1513 var_nclassdef = p1;
1514 var_nvisibility = p2;
1515 var_mprop = p3;
1516 var = NULL;
1517 if (var_nvisibility == NULL) {
1518 var1 = 1; /* is null */
1519 } else {
1520 var1 = 0; /* arg is null but recv is not */
1521 }
1522 if (var1){
1523 goto RET_LABEL;
1524 } else {
1525 }
1526 var2 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
1527 var_mvisibility = var2;
1528 var4 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__visibility]))(var_mprop) /* visibility on <var_mprop:MProperty>*/;
1529 var5 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___33d_61d]))(var_mvisibility, var4) /* != on <var_mvisibility:MVisibility>*/;
1530 var_ = var5;
1531 if (var5){
1532 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:APropdef>*/;
1533 var7 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___33d_61d]))(var_mvisibility, var6) /* != on <var_mvisibility:MVisibility>*/;
1534 var3 = var7;
1535 } else {
1536 var3 = var_;
1537 }
1538 if (var3){
1539 if (varonce) {
1540 var8 = varonce;
1541 } else {
1542 var9 = "Error: redefinition changed the visibility from a ";
1543 var10 = 50;
1544 var11 = string__NativeString__to_s_with_length(var9, var10);
1545 var8 = var11;
1546 varonce = var8;
1547 }
1548 var12 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__visibility]))(var_mprop) /* visibility on <var_mprop:MProperty>*/;
1549 if (varonce13) {
1550 var14 = varonce13;
1551 } else {
1552 var15 = " to a ";
1553 var16 = 6;
1554 var17 = string__NativeString__to_s_with_length(var15, var16);
1555 var14 = var17;
1556 varonce13 = var14;
1557 }
1558 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
1559 { /* var18 = array_instance Array[Object] */
1560 var19 = 4;
1561 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
1562 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var8;
1563 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var12;
1564 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
1565 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var_mvisibility;
1566 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
1567 }
1568 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
1569 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nvisibility, var21) /* error on <var_modelbuilder:ModelBuilder>*/;
1570 } else {
1571 }
1572 RET_LABEL:;
1573 }
1574 /* method modelize_property#APropdef#check_redef_property_visibility for (self: Object, ModelBuilder, AClassdef, nullable AVisibility, MProperty) */
1575 void VIRTUAL_modelize_property__APropdef__check_redef_property_visibility(val* self, val* p0, val* p1, val* p2, val* p3) {
1576 modelize_property__APropdef__check_redef_property_visibility(self, p0, p1, p2, p3);
1577 RET_LABEL:;
1578 }
1579 /* method modelize_property#APropdef#check_redef_keyword for (self: APropdef, ModelBuilder, AClassdef, nullable Token, Bool, MProperty): Bool */
1580 short int modelize_property__APropdef__check_redef_keyword(val* self, val* p0, val* p1, val* p2, short int p3, val* p4) {
1581 short int var /* : Bool */;
1582 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
1583 val* var_nclassdef /* var nclassdef: AClassdef */;
1584 val* var_kwredef /* var kwredef: nullable Token */;
1585 short int var_need_redef /* var need_redef: Bool */;
1586 val* var_mprop /* var mprop: MProperty */;
1587 val* var1 /* : Map[MProperty, APropdef] */;
1588 short int var2 /* : Bool */;
1589 static val* varonce;
1590 val* var3 /* : String */;
1591 char* var4 /* : NativeString */;
1592 long var5 /* : Int */;
1593 val* var6 /* : String */;
1594 static val* varonce7;
1595 val* var8 /* : String */;
1596 char* var9 /* : NativeString */;
1597 long var10 /* : Int */;
1598 val* var11 /* : String */;
1599 val* var12 /* : nullable MClassDef */;
1600 val* var13 /* : MClass */;
1601 static val* varonce14;
1602 val* var15 /* : String */;
1603 char* var16 /* : NativeString */;
1604 long var17 /* : Int */;
1605 val* var18 /* : String */;
1606 val* var19 /* : Array[Object] */;
1607 long var20 /* : Int */;
1608 val* var21 /* : NativeArray[Object] */;
1609 val* var22 /* : String */;
1610 short int var23 /* : Bool */;
1611 val* var24 /* : null */;
1612 short int var25 /* : Bool */;
1613 static val* varonce26;
1614 val* var27 /* : String */;
1615 char* var28 /* : NativeString */;
1616 long var29 /* : Int */;
1617 val* var30 /* : String */;
1618 val* var31 /* : nullable MClassDef */;
1619 val* var32 /* : MClass */;
1620 static val* varonce33;
1621 val* var34 /* : String */;
1622 char* var35 /* : NativeString */;
1623 long var36 /* : Int */;
1624 val* var37 /* : String */;
1625 val* var38 /* : String */;
1626 static val* varonce39;
1627 val* var40 /* : String */;
1628 char* var41 /* : NativeString */;
1629 long var42 /* : Int */;
1630 val* var43 /* : String */;
1631 val* var44 /* : Array[Object] */;
1632 long var45 /* : Int */;
1633 val* var46 /* : NativeArray[Object] */;
1634 val* var47 /* : String */;
1635 short int var48 /* : Bool */;
1636 short int var49 /* : Bool */;
1637 static val* varonce50;
1638 val* var51 /* : String */;
1639 char* var52 /* : NativeString */;
1640 long var53 /* : Int */;
1641 val* var54 /* : String */;
1642 val* var55 /* : nullable MClassDef */;
1643 val* var56 /* : MClass */;
1644 static val* varonce57;
1645 val* var58 /* : String */;
1646 char* var59 /* : NativeString */;
1647 long var60 /* : Int */;
1648 val* var61 /* : String */;
1649 val* var62 /* : String */;
1650 static val* varonce63;
1651 val* var64 /* : String */;
1652 char* var65 /* : NativeString */;
1653 long var66 /* : Int */;
1654 val* var67 /* : String */;
1655 val* var68 /* : Array[Object] */;
1656 long var69 /* : Int */;
1657 val* var70 /* : NativeArray[Object] */;
1658 val* var71 /* : String */;
1659 short int var72 /* : Bool */;
1660 short int var73 /* : Bool */;
1661 var_modelbuilder = p0;
1662 var_nclassdef = p1;
1663 var_kwredef = p2;
1664 var_need_redef = p3;
1665 var_mprop = p4;
1666 var1 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
1667 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_mprop) /* has_key on <var1:Map[MProperty, APropdef]>*/;
1668 if (var2){
1669 if (varonce) {
1670 var3 = varonce;
1671 } else {
1672 var4 = "Error: A property ";
1673 var5 = 18;
1674 var6 = string__NativeString__to_s_with_length(var4, var5);
1675 var3 = var6;
1676 varonce = var3;
1677 }
1678 if (varonce7) {
1679 var8 = varonce7;
1680 } else {
1681 var9 = " is already defined in class ";
1682 var10 = 29;
1683 var11 = string__NativeString__to_s_with_length(var9, var10);
1684 var8 = var11;
1685 varonce7 = var8;
1686 }
1687 var12 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
1688 if (var12 == NULL) {
1689 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1690 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 243);
1691 show_backtrace(1);
1692 } else {
1693 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:nullable MClassDef>*/;
1694 }
1695 if (varonce14) {
1696 var15 = varonce14;
1697 } else {
1698 var16 = ".";
1699 var17 = 1;
1700 var18 = string__NativeString__to_s_with_length(var16, var17);
1701 var15 = var18;
1702 varonce14 = var15;
1703 }
1704 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
1705 { /* var19 = array_instance Array[Object] */
1706 var20 = 5;
1707 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
1708 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var3;
1709 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_mprop;
1710 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var8;
1711 ((struct instance_array__NativeArray*)var21)->values[3] = (val*) var13;
1712 ((struct instance_array__NativeArray*)var21)->values[4] = (val*) var15;
1713 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
1714 }
1715 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
1716 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var22) /* error on <var_modelbuilder:ModelBuilder>*/;
1717 var23 = 0;
1718 var = var23;
1719 goto RET_LABEL;
1720 } else {
1721 }
1722 var24 = NULL;
1723 if (var_kwredef == NULL) {
1724 var25 = 1; /* is null */
1725 } else {
1726 var25 = 0; /* arg is null but recv is not */
1727 }
1728 if (var25){
1729 if (var_need_redef){
1730 if (varonce26) {
1731 var27 = varonce26;
1732 } else {
1733 var28 = "Redef error: ";
1734 var29 = 13;
1735 var30 = string__NativeString__to_s_with_length(var28, var29);
1736 var27 = var30;
1737 varonce26 = var27;
1738 }
1739 var31 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
1740 if (var31 == NULL) {
1741 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1742 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 248);
1743 show_backtrace(1);
1744 } else {
1745 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_model__MClassDef__mclass]))(var31) /* mclass on <var31:nullable MClassDef>*/;
1746 }
1747 if (varonce33) {
1748 var34 = varonce33;
1749 } else {
1750 var35 = "::";
1751 var36 = 2;
1752 var37 = string__NativeString__to_s_with_length(var35, var36);
1753 var34 = var37;
1754 varonce33 = var34;
1755 }
1756 var38 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__name]))(var_mprop) /* name on <var_mprop:MProperty>*/;
1757 if (varonce39) {
1758 var40 = varonce39;
1759 } else {
1760 var41 = " is an inherited property. To redefine it, add the redef keyword.";
1761 var42 = 65;
1762 var43 = string__NativeString__to_s_with_length(var41, var42);
1763 var40 = var43;
1764 varonce39 = var40;
1765 }
1766 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
1767 { /* var44 = array_instance Array[Object] */
1768 var45 = 5;
1769 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
1770 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var27;
1771 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var32;
1772 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var34;
1773 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var38;
1774 ((struct instance_array__NativeArray*)var46)->values[4] = (val*) var40;
1775 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
1776 }
1777 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
1778 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var47) /* error on <var_modelbuilder:ModelBuilder>*/;
1779 var48 = 0;
1780 var = var48;
1781 goto RET_LABEL;
1782 } else {
1783 }
1784 } else {
1785 var49 = !var_need_redef;
1786 if (var49){
1787 if (varonce50) {
1788 var51 = varonce50;
1789 } else {
1790 var52 = "Error: No property ";
1791 var53 = 19;
1792 var54 = string__NativeString__to_s_with_length(var52, var53);
1793 var51 = var54;
1794 varonce50 = var51;
1795 }
1796 var55 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
1797 if (var55 == NULL) {
1798 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1799 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 253);
1800 show_backtrace(1);
1801 } else {
1802 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_model__MClassDef__mclass]))(var55) /* mclass on <var55:nullable MClassDef>*/;
1803 }
1804 if (varonce57) {
1805 var58 = varonce57;
1806 } else {
1807 var59 = "::";
1808 var60 = 2;
1809 var61 = string__NativeString__to_s_with_length(var59, var60);
1810 var58 = var61;
1811 varonce57 = var58;
1812 }
1813 var62 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__name]))(var_mprop) /* name on <var_mprop:MProperty>*/;
1814 if (varonce63) {
1815 var64 = varonce63;
1816 } else {
1817 var65 = " is inherited. Remove the redef keyword to define a new property.";
1818 var66 = 65;
1819 var67 = string__NativeString__to_s_with_length(var65, var66);
1820 var64 = var67;
1821 varonce63 = var64;
1822 }
1823 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
1824 { /* var68 = array_instance Array[Object] */
1825 var69 = 5;
1826 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
1827 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var51;
1828 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var56;
1829 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var58;
1830 ((struct instance_array__NativeArray*)var70)->values[3] = (val*) var62;
1831 ((struct instance_array__NativeArray*)var70)->values[4] = (val*) var64;
1832 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
1833 }
1834 var71 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
1835 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var71) /* error on <var_modelbuilder:ModelBuilder>*/;
1836 var72 = 0;
1837 var = var72;
1838 goto RET_LABEL;
1839 } else {
1840 }
1841 }
1842 var73 = 1;
1843 var = var73;
1844 goto RET_LABEL;
1845 RET_LABEL:;
1846 return var;
1847 }
1848 /* method modelize_property#APropdef#check_redef_keyword for (self: Object, ModelBuilder, AClassdef, nullable Token, Bool, MProperty): Bool */
1849 short int VIRTUAL_modelize_property__APropdef__check_redef_keyword(val* self, val* p0, val* p1, val* p2, short int p3, val* p4) {
1850 short int var /* : Bool */;
1851 short int var1 /* : Bool */;
1852 var1 = modelize_property__APropdef__check_redef_keyword(self, p0, p1, p2, p3, p4);
1853 var = var1;
1854 RET_LABEL:;
1855 return var;
1856 }
1857 /* method modelize_property#ASignature#is_visited for (self: ASignature): Bool */
1858 short int modelize_property__ASignature__is_visited(val* self) {
1859 short int var /* : Bool */;
1860 short int var1 /* : Bool */;
1861 var1 = self->attrs[COLOR_modelize_property__ASignature___64dis_visited].s; /* @is_visited on <self:ASignature> */
1862 var = var1;
1863 RET_LABEL:;
1864 return var;
1865 }
1866 /* method modelize_property#ASignature#is_visited for (self: Object): Bool */
1867 short int VIRTUAL_modelize_property__ASignature__is_visited(val* self) {
1868 short int var /* : Bool */;
1869 short int var1 /* : Bool */;
1870 var1 = modelize_property__ASignature__is_visited(self);
1871 var = var1;
1872 RET_LABEL:;
1873 return var;
1874 }
1875 /* method modelize_property#ASignature#is_visited= for (self: ASignature, Bool) */
1876 void modelize_property__ASignature__is_visited_61d(val* self, short int p0) {
1877 self->attrs[COLOR_modelize_property__ASignature___64dis_visited].s = p0; /* @is_visited on <self:ASignature> */
1878 RET_LABEL:;
1879 }
1880 /* method modelize_property#ASignature#is_visited= for (self: Object, Bool) */
1881 void VIRTUAL_modelize_property__ASignature__is_visited_61d(val* self, short int p0) {
1882 modelize_property__ASignature__is_visited_61d(self, p0);
1883 RET_LABEL:;
1884 }
1885 /* method modelize_property#ASignature#param_names for (self: ASignature): Array[String] */
1886 val* modelize_property__ASignature__param_names(val* self) {
1887 val* var /* : Array[String] */;
1888 val* var1 /* : Array[String] */;
1889 var1 = self->attrs[COLOR_modelize_property__ASignature___64dparam_names].val; /* @param_names on <self:ASignature> */
1890 if (var1 == NULL) {
1891 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @param_names");
1892 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 265);
1893 show_backtrace(1);
1894 }
1895 var = var1;
1896 RET_LABEL:;
1897 return var;
1898 }
1899 /* method modelize_property#ASignature#param_names for (self: Object): Array[String] */
1900 val* VIRTUAL_modelize_property__ASignature__param_names(val* self) {
1901 val* var /* : Array[String] */;
1902 val* var1 /* : Array[String] */;
1903 var1 = modelize_property__ASignature__param_names(self);
1904 var = var1;
1905 RET_LABEL:;
1906 return var;
1907 }
1908 /* method modelize_property#ASignature#param_names= for (self: ASignature, Array[String]) */
1909 void modelize_property__ASignature__param_names_61d(val* self, val* p0) {
1910 self->attrs[COLOR_modelize_property__ASignature___64dparam_names].val = p0; /* @param_names on <self:ASignature> */
1911 RET_LABEL:;
1912 }
1913 /* method modelize_property#ASignature#param_names= for (self: Object, Array[String]) */
1914 void VIRTUAL_modelize_property__ASignature__param_names_61d(val* self, val* p0) {
1915 modelize_property__ASignature__param_names_61d(self, p0);
1916 RET_LABEL:;
1917 }
1918 /* method modelize_property#ASignature#param_types for (self: ASignature): Array[MType] */
1919 val* modelize_property__ASignature__param_types(val* self) {
1920 val* var /* : Array[MType] */;
1921 val* var1 /* : Array[MType] */;
1922 var1 = self->attrs[COLOR_modelize_property__ASignature___64dparam_types].val; /* @param_types on <self:ASignature> */
1923 if (var1 == NULL) {
1924 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @param_types");
1925 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 268);
1926 show_backtrace(1);
1927 }
1928 var = var1;
1929 RET_LABEL:;
1930 return var;
1931 }
1932 /* method modelize_property#ASignature#param_types for (self: Object): Array[MType] */
1933 val* VIRTUAL_modelize_property__ASignature__param_types(val* self) {
1934 val* var /* : Array[MType] */;
1935 val* var1 /* : Array[MType] */;
1936 var1 = modelize_property__ASignature__param_types(self);
1937 var = var1;
1938 RET_LABEL:;
1939 return var;
1940 }
1941 /* method modelize_property#ASignature#param_types= for (self: ASignature, Array[MType]) */
1942 void modelize_property__ASignature__param_types_61d(val* self, val* p0) {
1943 self->attrs[COLOR_modelize_property__ASignature___64dparam_types].val = p0; /* @param_types on <self:ASignature> */
1944 RET_LABEL:;
1945 }
1946 /* method modelize_property#ASignature#param_types= for (self: Object, Array[MType]) */
1947 void VIRTUAL_modelize_property__ASignature__param_types_61d(val* self, val* p0) {
1948 modelize_property__ASignature__param_types_61d(self, p0);
1949 RET_LABEL:;
1950 }
1951 /* method modelize_property#ASignature#vararg_rank for (self: ASignature): Int */
1952 long modelize_property__ASignature__vararg_rank(val* self) {
1953 long var /* : Int */;
1954 long var1 /* : Int */;
1955 var1 = self->attrs[COLOR_modelize_property__ASignature___64dvararg_rank].l; /* @vararg_rank on <self:ASignature> */
1956 var = var1;
1957 RET_LABEL:;
1958 return var;
1959 }
1960 /* method modelize_property#ASignature#vararg_rank for (self: Object): Int */
1961 long VIRTUAL_modelize_property__ASignature__vararg_rank(val* self) {
1962 long var /* : Int */;
1963 long var1 /* : Int */;
1964 var1 = modelize_property__ASignature__vararg_rank(self);
1965 var = var1;
1966 RET_LABEL:;
1967 return var;
1968 }
1969 /* method modelize_property#ASignature#vararg_rank= for (self: ASignature, Int) */
1970 void modelize_property__ASignature__vararg_rank_61d(val* self, long p0) {
1971 self->attrs[COLOR_modelize_property__ASignature___64dvararg_rank].l = p0; /* @vararg_rank on <self:ASignature> */
1972 RET_LABEL:;
1973 }
1974 /* method modelize_property#ASignature#vararg_rank= for (self: Object, Int) */
1975 void VIRTUAL_modelize_property__ASignature__vararg_rank_61d(val* self, long p0) {
1976 modelize_property__ASignature__vararg_rank_61d(self, p0);
1977 RET_LABEL:;
1978 }
1979 /* method modelize_property#ASignature#ret_type for (self: ASignature): nullable MType */
1980 val* modelize_property__ASignature__ret_type(val* self) {
1981 val* var /* : nullable MType */;
1982 val* var1 /* : nullable MType */;
1983 var1 = self->attrs[COLOR_modelize_property__ASignature___64dret_type].val; /* @ret_type on <self:ASignature> */
1984 var = var1;
1985 RET_LABEL:;
1986 return var;
1987 }
1988 /* method modelize_property#ASignature#ret_type for (self: Object): nullable MType */
1989 val* VIRTUAL_modelize_property__ASignature__ret_type(val* self) {
1990 val* var /* : nullable MType */;
1991 val* var1 /* : nullable MType */;
1992 var1 = modelize_property__ASignature__ret_type(self);
1993 var = var1;
1994 RET_LABEL:;
1995 return var;
1996 }
1997 /* method modelize_property#ASignature#ret_type= for (self: ASignature, nullable MType) */
1998 void modelize_property__ASignature__ret_type_61d(val* self, val* p0) {
1999 self->attrs[COLOR_modelize_property__ASignature___64dret_type].val = p0; /* @ret_type on <self:ASignature> */
2000 RET_LABEL:;
2001 }
2002 /* method modelize_property#ASignature#ret_type= for (self: Object, nullable MType) */
2003 void VIRTUAL_modelize_property__ASignature__ret_type_61d(val* self, val* p0) {
2004 modelize_property__ASignature__ret_type_61d(self, p0);
2005 RET_LABEL:;
2006 }
2007 /* method modelize_property#ASignature#visit_signature for (self: ASignature, ModelBuilder, AClassdef): Bool */
2008 short int modelize_property__ASignature__visit_signature(val* self, val* p0, val* p1) {
2009 short int var /* : Bool */;
2010 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
2011 val* var_nclassdef /* var nclassdef: AClassdef */;
2012 val* var1 /* : Array[String] */;
2013 val* var_param_names /* var param_names: Array[String] */;
2014 val* var2 /* : Array[MType] */;
2015 val* var_param_types /* var param_types: Array[MType] */;
2016 val* var3 /* : ANodes[AParam] */;
2017 val* var4 /* : Iterator[nullable Object] */;
2018 short int var5 /* : Bool */;
2019 val* var6 /* : nullable Object */;
2020 val* var_np /* var np: AParam */;
2021 val* var7 /* : TId */;
2022 val* var8 /* : String */;
2023 val* var9 /* : nullable AType */;
2024 val* var_ntype /* var ntype: nullable AType */;
2025 val* var10 /* : null */;
2026 short int var11 /* : Bool */;
2027 val* var12 /* : nullable MType */;
2028 val* var_mtype /* var mtype: nullable MType */;
2029 val* var13 /* : null */;
2030 short int var14 /* : Bool */;
2031 short int var15 /* : Bool */;
2032 val* var16 /* : Range[Int] */;
2033 long var17 /* : Int */;
2034 long var18 /* : Int */;
2035 long var19 /* : Int */;
2036 long var20 /* : Int */;
2037 long var22 /* : Int */;
2038 val* var23 /* : Discrete */;
2039 val* var24 /* : Discrete */;
2040 val* var25 /* : Iterator[nullable Object] */;
2041 short int var26 /* : Bool */;
2042 val* var27 /* : nullable Object */;
2043 long var_i /* var i: Int */;
2044 long var28 /* : Int */;
2045 val* var29 /* : nullable TDotdotdot */;
2046 val* var30 /* : null */;
2047 short int var31 /* : Bool */;
2048 long var32 /* : Int */;
2049 long var33 /* : Int */;
2050 long var34 /* : Int */;
2051 long var36 /* : Int */;
2052 short int var37 /* : Bool */;
2053 short int var39 /* : Bool */;
2054 short int var40 /* : Bool */;
2055 static val* varonce;
2056 val* var41 /* : String */;
2057 char* var42 /* : NativeString */;
2058 long var43 /* : Int */;
2059 val* var44 /* : String */;
2060 long var45 /* : Int */;
2061 val* var46 /* : nullable Object */;
2062 static val* varonce47;
2063 val* var48 /* : String */;
2064 char* var49 /* : NativeString */;
2065 long var50 /* : Int */;
2066 val* var51 /* : String */;
2067 val* var52 /* : Array[Object] */;
2068 long var53 /* : Int */;
2069 val* var54 /* : NativeArray[Object] */;
2070 val* var55 /* : String */;
2071 short int var56 /* : Bool */;
2072 long var57 /* : Int */;
2073 long var58 /* : Int */;
2074 long var59 /* : Int */;
2075 long var61 /* : Int */;
2076 val* var63 /* : nullable AType */;
2077 val* var_ntype64 /* var ntype: nullable AType */;
2078 val* var65 /* : null */;
2079 short int var66 /* : Bool */;
2080 val* var67 /* : nullable MType */;
2081 val* var68 /* : nullable MType */;
2082 val* var69 /* : null */;
2083 short int var70 /* : Bool */;
2084 short int var71 /* : Bool */;
2085 short int var72 /* : Bool */;
2086 short int var73 /* : Bool */;
2087 var_modelbuilder = p0;
2088 var_nclassdef = p1;
2089 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_names]))(self) /* param_names on <self:ASignature>*/;
2090 var_param_names = var1;
2091 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_types]))(self) /* param_types on <self:ASignature>*/;
2092 var_param_types = var2;
2093 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASignature__n_params]))(self) /* n_params on <self:ASignature>*/;
2094 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on <var3:ANodes[AParam]>*/;
2095 for(;;) {
2096 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
2097 if(!var5) break;
2098 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
2099 var_np = var6;
2100 var7 = ((val* (*)(val*))(var_np->class->vft[COLOR_parser_nodes__AParam__n_id]))(var_np) /* n_id on <var_np:AParam>*/;
2101 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_parser_nodes__Token__text]))(var7) /* text on <var7:TId>*/;
2102 ((void (*)(val*, val*))(var_param_names->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_param_names, var8) /* add on <var_param_names:Array[String]>*/;
2103 var9 = ((val* (*)(val*))(var_np->class->vft[COLOR_parser_nodes__AParam__n_type]))(var_np) /* n_type on <var_np:AParam>*/;
2104 var_ntype = var9;
2105 var10 = NULL;
2106 if (var_ntype == NULL) {
2107 var11 = 0; /* is null */
2108 } else {
2109 var11 = 1; /* arg is null and recv is not */
2110 }
2111 if (var11){
2112 var12 = ((val* (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var_modelbuilder, var_nclassdef, var_ntype) /* resolve_mtype on <var_modelbuilder:ModelBuilder>*/;
2113 var_mtype = var12;
2114 var13 = NULL;
2115 if (var_mtype == NULL) {
2116 var14 = 1; /* is null */
2117 } else {
2118 var14 = 0; /* arg is null but recv is not */
2119 }
2120 if (var14){
2121 var15 = 0;
2122 var = var15;
2123 goto RET_LABEL;
2124 } else {
2125 }
2126 var16 = NEW_range__Range(&type_range__Rangekernel__Int);
2127 var17 = 0;
2128 var18 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
2129 var19 = ((long (*)(val*))(var_param_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_types) /* length on <var_param_types:Array[MType]>*/;
2130 { /* Inline kernel#Int#- (var18,var19) */
2131 var22 = var18 - var19;
2132 var20 = var22;
2133 goto RET_LABEL21;
2134 RET_LABEL21:(void)0;
2135 }
2136 var23 = BOX_kernel__Int(var17); /* autobox from Int to Discrete */
2137 var24 = BOX_kernel__Int(var20); /* autobox from Int to Discrete */
2138 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_range__Range__without_last]))(var16, var23, var24) /* without_last on <var16:Range[Int]>*/;
2139 var25 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__iterator]))(var16) /* iterator on <var16:Range[Int]>*/;
2140 for(;;) {
2141 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
2142 if(!var26) break;
2143 var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on <var25:Iterator[nullable Object]>*/;
2144 var28 = ((struct instance_kernel__Int*)var27)->value; /* autounbox from nullable Object to Int */;
2145 var_i = var28;
2146 ((void (*)(val*, val*))(var_param_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_param_types, var_mtype) /* add on <var_param_types:Array[MType]>*/;
2147 CONTINUE_label: (void)0;
2148 ((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on <var25:Iterator[nullable Object]>*/;
2149 }
2150 BREAK_label: (void)0;
2151 var29 = ((val* (*)(val*))(var_np->class->vft[COLOR_parser_nodes__AParam__n_dotdotdot]))(var_np) /* n_dotdotdot on <var_np:AParam>*/;
2152 var30 = NULL;
2153 if (var29 == NULL) {
2154 var31 = 0; /* is null */
2155 } else {
2156 var31 = 1; /* arg is null and recv is not */
2157 }
2158 if (var31){
2159 var32 = ((long (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__vararg_rank]))(self) /* vararg_rank on <self:ASignature>*/;
2160 var33 = 1;
2161 { /* Inline kernel#Int#unary - (var33) */
2162 var36 = -var33;
2163 var34 = var36;
2164 goto RET_LABEL35;
2165 RET_LABEL35:(void)0;
2166 }
2167 { /* Inline kernel#Int#!= (var32,var34) */
2168 var39 = var32 == var34;
2169 var40 = !var39;
2170 var37 = var40;
2171 goto RET_LABEL38;
2172 RET_LABEL38:(void)0;
2173 }
2174 if (var37){
2175 if (varonce) {
2176 var41 = varonce;
2177 } else {
2178 var42 = "Error: ";
2179 var43 = 7;
2180 var44 = string__NativeString__to_s_with_length(var42, var43);
2181 var41 = var44;
2182 varonce = var41;
2183 }
2184 var45 = ((long (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__vararg_rank]))(self) /* vararg_rank on <self:ASignature>*/;
2185 var46 = ((val* (*)(val*, long))(var_param_names->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_param_names, var45) /* [] on <var_param_names:Array[String]>*/;
2186 if (varonce47) {
2187 var48 = varonce47;
2188 } else {
2189 var49 = " is already a vararg";
2190 var50 = 20;
2191 var51 = string__NativeString__to_s_with_length(var49, var50);
2192 var48 = var51;
2193 varonce47 = var48;
2194 }
2195 var52 = NEW_array__Array(&type_array__Arraykernel__Object);
2196 { /* var52 = array_instance Array[Object] */
2197 var53 = 3;
2198 var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
2199 ((struct instance_array__NativeArray*)var54)->values[0] = (val*) var41;
2200 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var46;
2201 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var48;
2202 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
2203 }
2204 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
2205 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_np, var55) /* error on <var_modelbuilder:ModelBuilder>*/;
2206 var56 = 0;
2207 var = var56;
2208 goto RET_LABEL;
2209 } else {
2210 var57 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
2211 var58 = 1;
2212 { /* Inline kernel#Int#- (var57,var58) */
2213 var61 = var57 - var58;
2214 var59 = var61;
2215 goto RET_LABEL60;
2216 RET_LABEL60:(void)0;
2217 }
2218 ((void (*)(val*, long))(self->class->vft[COLOR_modelize_property__ASignature__vararg_rank_61d]))(self, var59) /* vararg_rank= on <self:ASignature>*/;
2219 }
2220 } else {
2221 }
2222 } else {
2223 }
2224 CONTINUE_label62: (void)0;
2225 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
2226 }
2227 BREAK_label62: (void)0;
2228 var63 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASignature__n_type]))(self) /* n_type on <self:ASignature>*/;
2229 var_ntype64 = var63;
2230 var65 = NULL;
2231 if (var_ntype64 == NULL) {
2232 var66 = 0; /* is null */
2233 } else {
2234 var66 = 1; /* arg is null and recv is not */
2235 }
2236 if (var66){
2237 var67 = ((val* (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var_modelbuilder, var_nclassdef, var_ntype64) /* resolve_mtype on <var_modelbuilder:ModelBuilder>*/;
2238 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__ASignature__ret_type_61d]))(self, var67) /* ret_type= on <self:ASignature>*/;
2239 var68 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__ret_type]))(self) /* ret_type on <self:ASignature>*/;
2240 var69 = NULL;
2241 if (var68 == NULL) {
2242 var70 = 1; /* is null */
2243 } else {
2244 var70 = 0; /* arg is null but recv is not */
2245 }
2246 if (var70){
2247 var71 = 0;
2248 var = var71;
2249 goto RET_LABEL;
2250 } else {
2251 }
2252 } else {
2253 }
2254 var72 = 1;
2255 ((void (*)(val*, short int))(self->class->vft[COLOR_modelize_property__ASignature__is_visited_61d]))(self, var72) /* is_visited= on <self:ASignature>*/;
2256 var73 = 1;
2257 var = var73;
2258 goto RET_LABEL;
2259 RET_LABEL:;
2260 return var;
2261 }
2262 /* method modelize_property#ASignature#visit_signature for (self: Object, ModelBuilder, AClassdef): Bool */
2263 short int VIRTUAL_modelize_property__ASignature__visit_signature(val* self, val* p0, val* p1) {
2264 short int var /* : Bool */;
2265 short int var1 /* : Bool */;
2266 var1 = modelize_property__ASignature__visit_signature(self, p0, p1);
2267 var = var1;
2268 RET_LABEL:;
2269 return var;
2270 }
2271 /* method modelize_property#ASignature#build_signature for (self: ASignature, ModelBuilder, AClassdef): nullable MSignature */
2272 val* modelize_property__ASignature__build_signature(val* self, val* p0, val* p1) {
2273 val* var /* : nullable MSignature */;
2274 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
2275 val* var_nclassdef /* var nclassdef: AClassdef */;
2276 val* var1 /* : Array[String] */;
2277 long var2 /* : Int */;
2278 val* var3 /* : Array[MType] */;
2279 long var4 /* : Int */;
2280 short int var5 /* : Bool */;
2281 short int var7 /* : Bool */;
2282 short int var8 /* : Bool */;
2283 val* var9 /* : ANodes[AParam] */;
2284 val* var10 /* : Array[MType] */;
2285 long var11 /* : Int */;
2286 val* var12 /* : nullable Object */;
2287 static val* varonce;
2288 val* var13 /* : String */;
2289 char* var14 /* : NativeString */;
2290 long var15 /* : Int */;
2291 val* var16 /* : String */;
2292 val* var17 /* : Array[String] */;
2293 val* var18 /* : Array[MType] */;
2294 long var19 /* : Int */;
2295 val* var20 /* : nullable Object */;
2296 static val* varonce21;
2297 val* var22 /* : String */;
2298 char* var23 /* : NativeString */;
2299 long var24 /* : Int */;
2300 val* var25 /* : String */;
2301 val* var26 /* : Array[Object] */;
2302 long var27 /* : Int */;
2303 val* var28 /* : NativeArray[Object] */;
2304 val* var29 /* : String */;
2305 val* var30 /* : null */;
2306 val* var31 /* : Array[MParameter] */;
2307 val* var_mparameters /* var mparameters: Array[MParameter] */;
2308 val* var32 /* : Range[Int] */;
2309 long var33 /* : Int */;
2310 val* var34 /* : Array[String] */;
2311 long var35 /* : Int */;
2312 val* var36 /* : Discrete */;
2313 val* var37 /* : Discrete */;
2314 val* var38 /* : Iterator[nullable Object] */;
2315 short int var39 /* : Bool */;
2316 val* var40 /* : nullable Object */;
2317 long var_i /* var i: Int */;
2318 long var41 /* : Int */;
2319 val* var42 /* : MParameter */;
2320 val* var43 /* : Array[String] */;
2321 val* var44 /* : nullable Object */;
2322 val* var45 /* : Array[MType] */;
2323 val* var46 /* : nullable Object */;
2324 long var47 /* : Int */;
2325 short int var48 /* : Bool */;
2326 short int var50 /* : Bool */;
2327 val* var_mparameter /* var mparameter: MParameter */;
2328 val* var51 /* : ANodes[AParam] */;
2329 val* var52 /* : nullable Object */;
2330 val* var53 /* : MSignature */;
2331 val* var54 /* : nullable MType */;
2332 val* var_msignature /* var msignature: MSignature */;
2333 var_modelbuilder = p0;
2334 var_nclassdef = p1;
2335 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_names]))(self) /* param_names on <self:ASignature>*/;
2336 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[String]>*/;
2337 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_types]))(self) /* param_types on <self:ASignature>*/;
2338 var4 = ((long (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__length]))(var3) /* length on <var3:Array[MType]>*/;
2339 { /* Inline kernel#Int#!= (var2,var4) */
2340 var7 = var2 == var4;
2341 var8 = !var7;
2342 var5 = var8;
2343 goto RET_LABEL6;
2344 RET_LABEL6:(void)0;
2345 }
2346 if (var5){
2347 var9 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASignature__n_params]))(self) /* n_params on <self:ASignature>*/;
2348 var10 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_types]))(self) /* param_types on <self:ASignature>*/;
2349 var11 = ((long (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__length]))(var10) /* length on <var10:Array[MType]>*/;
2350 var12 = ((val* (*)(val*, long))(var9->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var9, var11) /* [] on <var9:ANodes[AParam]>*/;
2351 if (varonce) {
2352 var13 = varonce;
2353 } else {
2354 var14 = "Error: Untyped parameter `";
2355 var15 = 26;
2356 var16 = string__NativeString__to_s_with_length(var14, var15);
2357 var13 = var16;
2358 varonce = var13;
2359 }
2360 var17 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_names]))(self) /* param_names on <self:ASignature>*/;
2361 var18 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_types]))(self) /* param_types on <self:ASignature>*/;
2362 var19 = ((long (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__length]))(var18) /* length on <var18:Array[MType]>*/;
2363 var20 = ((val* (*)(val*, long))(var17->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var17, var19) /* [] on <var17:Array[String]>*/;
2364 if (varonce21) {
2365 var22 = varonce21;
2366 } else {
2367 var23 = "\'.";
2368 var24 = 2;
2369 var25 = string__NativeString__to_s_with_length(var23, var24);
2370 var22 = var25;
2371 varonce21 = var22;
2372 }
2373 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
2374 { /* var26 = array_instance Array[Object] */
2375 var27 = 3;
2376 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
2377 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var13;
2378 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var20;
2379 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
2380 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
2381 }
2382 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
2383 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var12, var29) /* error on <var_modelbuilder:ModelBuilder>*/;
2384 var30 = NULL;
2385 var = var30;
2386 goto RET_LABEL;
2387 } else {
2388 }
2389 var31 = NEW_array__Array(&type_array__Arraymodel__MParameter);
2390 ((void (*)(val*))(var31->class->vft[COLOR_array__Array__init]))(var31) /* init on <var31:Array[MParameter]>*/;
2391 var_mparameters = var31;
2392 var32 = NEW_range__Range(&type_range__Rangekernel__Int);
2393 var33 = 0;
2394 var34 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_names]))(self) /* param_names on <self:ASignature>*/;
2395 var35 = ((long (*)(val*))(var34->class->vft[COLOR_abstract_collection__Collection__length]))(var34) /* length on <var34:Array[String]>*/;
2396 var36 = BOX_kernel__Int(var33); /* autobox from Int to Discrete */
2397 var37 = BOX_kernel__Int(var35); /* autobox from Int to Discrete */
2398 ((void (*)(val*, val*, val*))(var32->class->vft[COLOR_range__Range__without_last]))(var32, var36, var37) /* without_last on <var32:Range[Int]>*/;
2399 var38 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_collection__Collection__iterator]))(var32) /* iterator on <var32:Range[Int]>*/;
2400 for(;;) {
2401 var39 = ((short int (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var38) /* is_ok on <var38:Iterator[nullable Object]>*/;
2402 if(!var39) break;
2403 var40 = ((val* (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__item]))(var38) /* item on <var38:Iterator[nullable Object]>*/;
2404 var41 = ((struct instance_kernel__Int*)var40)->value; /* autounbox from nullable Object to Int */;
2405 var_i = var41;
2406 var42 = NEW_model__MParameter(&type_model__MParameter);
2407 var43 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_names]))(self) /* param_names on <self:ASignature>*/;
2408 var44 = ((val* (*)(val*, long))(var43->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var43, var_i) /* [] on <var43:Array[String]>*/;
2409 var45 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_types]))(self) /* param_types on <self:ASignature>*/;
2410 var46 = ((val* (*)(val*, long))(var45->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var45, var_i) /* [] on <var45:Array[MType]>*/;
2411 var47 = ((long (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__vararg_rank]))(self) /* vararg_rank on <self:ASignature>*/;
2412 { /* Inline kernel#Int#== (var_i,var47) */
2413 var50 = var_i == var47;
2414 var48 = var50;
2415 goto RET_LABEL49;
2416 RET_LABEL49:(void)0;
2417 }
2418 ((void (*)(val*, val*, val*, short int))(var42->class->vft[COLOR_model__MParameter__init]))(var42, var44, var46, var48) /* init on <var42:MParameter>*/;
2419 var_mparameter = var42;
2420 var51 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASignature__n_params]))(self) /* n_params on <self:ASignature>*/;
2421 var52 = ((val* (*)(val*, long))(var51->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var51, var_i) /* [] on <var51:ANodes[AParam]>*/;
2422 ((void (*)(val*, val*))(var52->class->vft[COLOR_modelize_property__AParam__mparameter_61d]))(var52, var_mparameter) /* mparameter= on <var52:nullable Object(AParam)>*/;
2423 ((void (*)(val*, val*))(var_mparameters->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparameters, var_mparameter) /* add on <var_mparameters:Array[MParameter]>*/;
2424 CONTINUE_label: (void)0;
2425 ((void (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__next]))(var38) /* next on <var38:Iterator[nullable Object]>*/;
2426 }
2427 BREAK_label: (void)0;
2428 var53 = NEW_model__MSignature(&type_model__MSignature);
2429 var54 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__ret_type]))(self) /* ret_type on <self:ASignature>*/;
2430 ((void (*)(val*, val*, val*))(var53->class->vft[COLOR_model__MSignature__init]))(var53, var_mparameters, var54) /* init on <var53:MSignature>*/;
2431 var_msignature = var53;
2432 var = var_msignature;
2433 goto RET_LABEL;
2434 RET_LABEL:;
2435 return var;
2436 }
2437 /* method modelize_property#ASignature#build_signature for (self: Object, ModelBuilder, AClassdef): nullable MSignature */
2438 val* VIRTUAL_modelize_property__ASignature__build_signature(val* self, val* p0, val* p1) {
2439 val* var /* : nullable MSignature */;
2440 val* var1 /* : nullable MSignature */;
2441 var1 = modelize_property__ASignature__build_signature(self, p0, p1);
2442 var = var1;
2443 RET_LABEL:;
2444 return var;
2445 }
2446 /* method modelize_property#AParam#mparameter for (self: AParam): nullable MParameter */
2447 val* modelize_property__AParam__mparameter(val* self) {
2448 val* var /* : nullable MParameter */;
2449 val* var1 /* : nullable MParameter */;
2450 var1 = self->attrs[COLOR_modelize_property__AParam___64dmparameter].val; /* @mparameter on <self:AParam> */
2451 var = var1;
2452 RET_LABEL:;
2453 return var;
2454 }
2455 /* method modelize_property#AParam#mparameter for (self: Object): nullable MParameter */
2456 val* VIRTUAL_modelize_property__AParam__mparameter(val* self) {
2457 val* var /* : nullable MParameter */;
2458 val* var1 /* : nullable MParameter */;
2459 var1 = modelize_property__AParam__mparameter(self);
2460 var = var1;
2461 RET_LABEL:;
2462 return var;
2463 }
2464 /* method modelize_property#AParam#mparameter= for (self: AParam, nullable MParameter) */
2465 void modelize_property__AParam__mparameter_61d(val* self, val* p0) {
2466 self->attrs[COLOR_modelize_property__AParam___64dmparameter].val = p0; /* @mparameter on <self:AParam> */
2467 RET_LABEL:;
2468 }
2469 /* method modelize_property#AParam#mparameter= for (self: Object, nullable MParameter) */
2470 void VIRTUAL_modelize_property__AParam__mparameter_61d(val* self, val* p0) {
2471 modelize_property__AParam__mparameter_61d(self, p0);
2472 RET_LABEL:;
2473 }
2474 /* method modelize_property#AMethPropdef#build_property for (self: AMethPropdef, ModelBuilder, AClassdef) */
2475 void modelize_property__AMethPropdef__build_property(val* self, val* p0, val* p1) {
2476 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
2477 val* var_nclassdef /* var nclassdef: AClassdef */;
2478 short int var /* : Bool */;
2479 int cltype;
2480 int idtype;
2481 short int var_is_init /* var is_init: Bool */;
2482 val* var1 /* : nullable MClassDef */;
2483 val* var_mclassdef /* var mclassdef: MClassDef */;
2484 val* var2 /* : nullable AMethid */;
2485 val* var_amethodid /* var amethodid: nullable AMethid */;
2486 val* var3 /* : null */;
2487 short int var4 /* : Bool */;
2488 short int var5 /* : Bool */;
2489 int cltype6;
2490 int idtype7;
2491 static val* varonce;
2492 val* var8 /* : String */;
2493 char* var9 /* : NativeString */;
2494 long var10 /* : Int */;
2495 val* var11 /* : String */;
2496 val* var_name /* var name: String */;
2497 val* var_name_node /* var name_node: ANode */;
2498 short int var12 /* : Bool */;
2499 int cltype13;
2500 int idtype14;
2501 static val* varonce15;
2502 val* var16 /* : String */;
2503 char* var17 /* : NativeString */;
2504 long var18 /* : Int */;
2505 val* var19 /* : String */;
2506 val* var20 /* : TKwinit */;
2507 short int var21 /* : Bool */;
2508 int cltype22;
2509 int idtype23;
2510 static val* varonce24;
2511 val* var25 /* : String */;
2512 char* var26 /* : NativeString */;
2513 long var27 /* : Int */;
2514 val* var28 /* : String */;
2515 val* var29 /* : TKwnew */;
2516 short int var30 /* : Bool */;
2517 int cltype31;
2518 int idtype32;
2519 val* var33 /* : TId */;
2520 val* var34 /* : String */;
2521 val* var35 /* : String */;
2522 short int var36 /* : Bool */;
2523 static val* varonce37;
2524 val* var38 /* : String */;
2525 char* var39 /* : NativeString */;
2526 long var40 /* : Int */;
2527 val* var41 /* : String */;
2528 short int var42 /* : Bool */;
2529 val* var43 /* : nullable ASignature */;
2530 val* var44 /* : ANodes[AParam] */;
2531 long var45 /* : Int */;
2532 long var46 /* : Int */;
2533 short int var47 /* : Bool */;
2534 short int var49 /* : Bool */;
2535 static val* varonce50;
2536 val* var51 /* : String */;
2537 char* var52 /* : NativeString */;
2538 long var53 /* : Int */;
2539 val* var54 /* : String */;
2540 val* var55 /* : null */;
2541 val* var_mprop /* var mprop: nullable MMethod */;
2542 short int var56 /* : Bool */;
2543 short int var57 /* : Bool */;
2544 short int var_ /* var : Bool */;
2545 val* var58 /* : nullable TKwredef */;
2546 val* var59 /* : null */;
2547 short int var60 /* : Bool */;
2548 val* var61 /* : nullable MProperty */;
2549 short int var62 /* : Bool */;
2550 int cltype63;
2551 int idtype64;
2552 const char* var_class_name;
2553 val* var65 /* : null */;
2554 short int var66 /* : Bool */;
2555 val* var67 /* : nullable AVisibility */;
2556 val* var68 /* : MVisibility */;
2557 val* var_mvisibility /* var mvisibility: MVisibility */;
2558 val* var69 /* : MMethod */;
2559 short int var70 /* : Bool */;
2560 int cltype71;
2561 int idtype72;
2562 val* var73 /* : nullable TKwredef */;
2563 short int var74 /* : Bool */;
2564 short int var75 /* : Bool */;
2565 short int var76 /* : Bool */;
2566 val* var77 /* : nullable TKwredef */;
2567 val* var78 /* : null */;
2568 short int var79 /* : Bool */;
2569 short int var80 /* : Bool */;
2570 int cltype81;
2571 int idtype82;
2572 val* var83 /* : nullable TKwredef */;
2573 short int var84 /* : Bool */;
2574 short int var85 /* : Bool */;
2575 short int var86 /* : Bool */;
2576 val* var87 /* : nullable AVisibility */;
2577 val* var88 /* : Map[MProperty, APropdef] */;
2578 val* var89 /* : MMethodDef */;
2579 val* var90 /* : Location */;
2580 val* var_mpropdef /* var mpropdef: MMethodDef */;
2581 short int var91 /* : Bool */;
2582 int cltype92;
2583 int idtype93;
2584 const struct type* type_struct;
2585 const char* var_class_name94;
2586 val* var95 /* : HashMap[MPropDef, APropdef] */;
2587 short int var96 /* : Bool */;
2588 val* var97 /* : ToolContext */;
2589 static val* varonce98;
2590 val* var99 /* : String */;
2591 char* var100 /* : NativeString */;
2592 long var101 /* : Int */;
2593 val* var102 /* : String */;
2594 val* var103 /* : String */;
2595 val* var104 /* : Array[Object] */;
2596 long var105 /* : Int */;
2597 val* var106 /* : NativeArray[Object] */;
2598 val* var107 /* : String */;
2599 long var108 /* : Int */;
2600 val* var109 /* : ToolContext */;
2601 static val* varonce110;
2602 val* var111 /* : String */;
2603 char* var112 /* : NativeString */;
2604 long var113 /* : Int */;
2605 val* var114 /* : String */;
2606 val* var115 /* : String */;
2607 val* var116 /* : Array[Object] */;
2608 long var117 /* : Int */;
2609 val* var118 /* : NativeArray[Object] */;
2610 val* var119 /* : String */;
2611 long var120 /* : Int */;
2612 var_modelbuilder = p0;
2613 var_nclassdef = p1;
2614 /* <self:AMethPropdef> isa AInitPropdef */
2615 cltype = type_parser_nodes__AInitPropdef.color;
2616 idtype = type_parser_nodes__AInitPropdef.id;
2617 if(cltype >= self->type->table_size) {
2618 var = 0;
2619 } else {
2620 var = self->type->type_table[cltype] == idtype;
2621 }
2622 var_is_init = var;
2623 var1 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
2624 if (var1 == NULL) {
2625 fprintf(stderr, "Runtime error: %s", "Cast failed");
2626 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 343);
2627 show_backtrace(1);
2628 }
2629 var_mclassdef = var1;
2630 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_methid]))(self) /* n_methid on <self:AMethPropdef>*/;
2631 var_amethodid = var2;
2632 var3 = NULL;
2633 if (var_amethodid == NULL) {
2634 var4 = 1; /* is null */
2635 } else {
2636 var4 = 0; /* arg is null but recv is not */
2637 }
2638 if (var4){
2639 /* <self:AMethPropdef> isa AMainMethPropdef */
2640 cltype6 = type_parser_nodes__AMainMethPropdef.color;
2641 idtype7 = type_parser_nodes__AMainMethPropdef.id;
2642 if(cltype6 >= self->type->table_size) {
2643 var5 = 0;
2644 } else {
2645 var5 = self->type->type_table[cltype6] == idtype7;
2646 }
2647 if (var5){
2648 if (varonce) {
2649 var8 = varonce;
2650 } else {
2651 var9 = "main";
2652 var10 = 4;
2653 var11 = string__NativeString__to_s_with_length(var9, var10);
2654 var8 = var11;
2655 varonce = var8;
2656 }
2657 var_name = var8;
2658 var_name_node = self;
2659 } else {
2660 /* <self:AMethPropdef> isa AConcreteInitPropdef */
2661 cltype13 = type_parser_nodes__AConcreteInitPropdef.color;
2662 idtype14 = type_parser_nodes__AConcreteInitPropdef.id;
2663 if(cltype13 >= self->type->table_size) {
2664 var12 = 0;
2665 } else {
2666 var12 = self->type->type_table[cltype13] == idtype14;
2667 }
2668 if (var12){
2669 if (varonce15) {
2670 var16 = varonce15;
2671 } else {
2672 var17 = "init";
2673 var18 = 4;
2674 var19 = string__NativeString__to_s_with_length(var17, var18);
2675 var16 = var19;
2676 varonce15 = var16;
2677 }
2678 var_name = var16;
2679 var20 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AConcreteInitPropdef__n_kwinit]))(self) /* n_kwinit on <self:AMethPropdef(AConcreteInitPropdef)>*/;
2680 var_name_node = var20;
2681 } else {
2682 /* <self:AMethPropdef> isa AExternInitPropdef */
2683 cltype22 = type_parser_nodes__AExternInitPropdef.color;
2684 idtype23 = type_parser_nodes__AExternInitPropdef.id;
2685 if(cltype22 >= self->type->table_size) {
2686 var21 = 0;
2687 } else {
2688 var21 = self->type->type_table[cltype22] == idtype23;
2689 }
2690 if (var21){
2691 if (varonce24) {
2692 var25 = varonce24;
2693 } else {
2694 var26 = "init";
2695 var27 = 4;
2696 var28 = string__NativeString__to_s_with_length(var26, var27);
2697 var25 = var28;
2698 varonce24 = var25;
2699 }
2700 var_name = var25;
2701 var29 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExternInitPropdef__n_kwnew]))(self) /* n_kwnew on <self:AMethPropdef(AExternInitPropdef)>*/;
2702 var_name_node = var29;
2703 } else {
2704 fprintf(stderr, "Runtime error: %s", "Aborted");
2705 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 358);
2706 show_backtrace(1);
2707 }
2708 }
2709 }
2710 } else {
2711 /* <var_amethodid:nullable AMethid(AMethid)> isa AIdMethid */
2712 cltype31 = type_parser_nodes__AIdMethid.color;
2713 idtype32 = type_parser_nodes__AIdMethid.id;
2714 if(cltype31 >= var_amethodid->type->table_size) {
2715 var30 = 0;
2716 } else {
2717 var30 = var_amethodid->type->type_table[cltype31] == idtype32;
2718 }
2719 if (var30){
2720 var33 = ((val* (*)(val*))(var_amethodid->class->vft[COLOR_parser_nodes__AIdMethid__n_id]))(var_amethodid) /* n_id on <var_amethodid:nullable AMethid(AIdMethid)>*/;
2721 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_parser_nodes__Token__text]))(var33) /* text on <var33:TId>*/;
2722 var_name = var34;
2723 var_name_node = var_amethodid;
2724 } else {
2725 var35 = ((val* (*)(val*))(var_amethodid->class->vft[COLOR_modelize_property__Prod__collect_text]))(var_amethodid) /* collect_text on <var_amethodid:nullable AMethid(AMethid)>*/;
2726 var_name = var35;
2727 var_name_node = var_amethodid;
2728 if (varonce37) {
2729 var38 = varonce37;
2730 } else {
2731 var39 = "-";
2732 var40 = 1;
2733 var41 = string__NativeString__to_s_with_length(var39, var40);
2734 var38 = var41;
2735 varonce37 = var38;
2736 }
2737 var42 = ((short int (*)(val*, val*))(var_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_name, var38) /* == on <var_name:String>*/;
2738 if (!var42) {
2739 var36 = 0;
2740 } else {
2741 var43 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AMethPropdef>*/;
2742 if (var43 == NULL) {
2743 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2744 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 368);
2745 show_backtrace(1);
2746 } else {
2747 var44 = ((val* (*)(val*))(var43->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var43) /* n_params on <var43:nullable ASignature>*/;
2748 }
2749 var45 = ((long (*)(val*))(var44->class->vft[COLOR_abstract_collection__Collection__length]))(var44) /* length on <var44:ANodes[AParam]>*/;
2750 var46 = 0;
2751 { /* Inline kernel#Int#== (var45,var46) */
2752 var49 = var45 == var46;
2753 var47 = var49;
2754 goto RET_LABEL48;
2755 RET_LABEL48:(void)0;
2756 }
2757 var36 = var47;
2758 }
2759 if (var36){
2760 if (varonce50) {
2761 var51 = varonce50;
2762 } else {
2763 var52 = "unary -";
2764 var53 = 7;
2765 var54 = string__NativeString__to_s_with_length(var52, var53);
2766 var51 = var54;
2767 varonce50 = var51;
2768 }
2769 var_name = var51;
2770 } else {
2771 }
2772 }
2773 }
2774 var55 = NULL;
2775 var_mprop = var55;
2776 var57 = !var_is_init;
2777 var_ = var57;
2778 if (var57){
2779 var56 = var_;
2780 } else {
2781 var58 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_kwredef]))(self) /* n_kwredef on <self:AMethPropdef>*/;
2782 var59 = NULL;
2783 if (var58 == NULL) {
2784 var60 = 0; /* is null */
2785 } else {
2786 var60 = 1; /* arg is null and recv is not */
2787 }
2788 var56 = var60;
2789 }
2790 if (var56){
2791 var61 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_name_node, var_mclassdef, var_name) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
2792 /* <var61:nullable MProperty> isa nullable MMethod */
2793 cltype63 = type_nullable_model__MMethod.color;
2794 idtype64 = type_nullable_model__MMethod.id;
2795 if(var61 == NULL) {
2796 var62 = 1;
2797 } else {
2798 if(cltype63 >= var61->type->table_size) {
2799 var62 = 0;
2800 } else {
2801 var62 = var61->type->type_table[cltype63] == idtype64;
2802 }
2803 }
2804 if (!var62) {
2805 var_class_name = var61 == NULL ? "null" : var61->type->name;
2806 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
2807 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 374);
2808 show_backtrace(1);
2809 }
2810 var_mprop = var61;
2811 } else {
2812 }
2813 var65 = NULL;
2814 if (var_mprop == NULL) {
2815 var66 = 1; /* is null */
2816 } else {
2817 var66 = 0; /* arg is null but recv is not */
2818 }
2819 if (var66){
2820 var67 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_visibility]))(self) /* n_visibility on <self:AMethPropdef>*/;
2821 var68 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var67) /* new_property_visibility on <self:AMethPropdef>*/;
2822 var_mvisibility = var68;
2823 var69 = NEW_model__MMethod(&type_model__MMethod);
2824 ((void (*)(val*, val*, val*, val*))(var69->class->vft[COLOR_model__MMethod__init]))(var69, var_mclassdef, var_name, var_mvisibility) /* init on <var69:MMethod>*/;
2825 var_mprop = var69;
2826 ((void (*)(val*, short int))(var_mprop->class->vft[COLOR_model__MMethod__is_init_61d]))(var_mprop, var_is_init) /* is_init= on <var_mprop:nullable MMethod(MMethod)>*/;
2827 /* <self:AMethPropdef> isa AExternInitPropdef */
2828 cltype71 = type_parser_nodes__AExternInitPropdef.color;
2829 idtype72 = type_parser_nodes__AExternInitPropdef.id;
2830 if(cltype71 >= self->type->table_size) {
2831 var70 = 0;
2832 } else {
2833 var70 = self->type->type_table[cltype71] == idtype72;
2834 }
2835 ((void (*)(val*, short int))(var_mprop->class->vft[COLOR_model__MMethod__is_new_61d]))(var_mprop, var70) /* is_new= on <var_mprop:nullable MMethod(MMethod)>*/;
2836 var73 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_kwredef]))(self) /* n_kwredef on <self:AMethPropdef>*/;
2837 var74 = 0;
2838 var75 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var73, var74, var_mprop) /* check_redef_keyword on <self:AMethPropdef>*/;
2839 var76 = !var75;
2840 if (var76){
2841 goto RET_LABEL;
2842 } else {
2843 }
2844 } else {
2845 var77 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_kwredef]))(self) /* n_kwredef on <self:AMethPropdef>*/;
2846 var78 = NULL;
2847 if (var77 == NULL) {
2848 var79 = 1; /* is null */
2849 } else {
2850 var79 = 0; /* arg is null but recv is not */
2851 }
2852 if (var79){
2853 /* <self:AMethPropdef> isa AMainMethPropdef */
2854 cltype81 = type_parser_nodes__AMainMethPropdef.color;
2855 idtype82 = type_parser_nodes__AMainMethPropdef.id;
2856 if(cltype81 >= self->type->table_size) {
2857 var80 = 0;
2858 } else {
2859 var80 = self->type->type_table[cltype81] == idtype82;
2860 }
2861 if (var80){
2862 } else {
2863 var83 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_kwredef]))(self) /* n_kwredef on <self:AMethPropdef>*/;
2864 var84 = 1;
2865 var85 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var83, var84, var_mprop) /* check_redef_keyword on <self:AMethPropdef>*/;
2866 var86 = !var85;
2867 if (var86){
2868 goto RET_LABEL;
2869 } else {
2870 }
2871 }
2872 } else {
2873 }
2874 var87 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_visibility]))(self) /* n_visibility on <self:AMethPropdef>*/;
2875 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var87, var_mprop) /* check_redef_property_visibility on <self:AMethPropdef>*/;
2876 }
2877 var88 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
2878 ((void (*)(val*, val*, val*))(var88->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var88, var_mprop, self) /* []= on <var88:Map[MProperty, APropdef]>*/;
2879 var89 = NEW_model__MMethodDef(&type_model__MMethodDef);
2880 var90 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AMethPropdef>*/;
2881 ((void (*)(val*, val*, val*, val*))(var89->class->vft[COLOR_model__MMethodDef__init]))(var89, var_mclassdef, var_mprop, var90) /* init on <var89:MMethodDef>*/;
2882 var_mpropdef = var89;
2883 /* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
2884 type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
2885 cltype92 = type_struct->color;
2886 idtype93 = type_struct->id;
2887 if(cltype92 >= var_mpropdef->type->table_size) {
2888 var91 = 0;
2889 } else {
2890 var91 = var_mpropdef->type->type_table[cltype92] == idtype93;
2891 }
2892 if (!var91) {
2893 var_class_name94 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
2894 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name94);
2895 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 395);
2896 show_backtrace(1);
2897 }
2898 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:AMethPropdef>*/;
2899 var95 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
2900 ((void (*)(val*, val*, val*))(var95->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var95, var_mpropdef, self) /* []= on <var95:HashMap[MPropDef, APropdef]>*/;
2901 var96 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:MMethodDef>*/;
2902 if (var96){
2903 var97 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
2904 if (varonce98) {
2905 var99 = varonce98;
2906 } else {
2907 var100 = " introduces new method ";
2908 var101 = 23;
2909 var102 = string__NativeString__to_s_with_length(var100, var101);
2910 var99 = var102;
2911 varonce98 = var99;
2912 }
2913 var103 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:nullable MMethod(MMethod)>*/;
2914 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
2915 { /* var104 = array_instance Array[Object] */
2916 var105 = 3;
2917 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
2918 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var_mpropdef;
2919 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var99;
2920 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var103;
2921 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
2922 }
2923 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
2924 var108 = 3;
2925 ((void (*)(val*, val*, long))(var97->class->vft[COLOR_toolcontext__ToolContext__info]))(var97, var107, var108) /* info on <var97:ToolContext>*/;
2926 } else {
2927 var109 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
2928 if (varonce110) {
2929 var111 = varonce110;
2930 } else {
2931 var112 = " redefines method ";
2932 var113 = 18;
2933 var114 = string__NativeString__to_s_with_length(var112, var113);
2934 var111 = var114;
2935 varonce110 = var111;
2936 }
2937 var115 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:nullable MMethod(MMethod)>*/;
2938 var116 = NEW_array__Array(&type_array__Arraykernel__Object);
2939 { /* var116 = array_instance Array[Object] */
2940 var117 = 3;
2941 var118 = NEW_array__NativeArray(var117, &type_array__NativeArraykernel__Object);
2942 ((struct instance_array__NativeArray*)var118)->values[0] = (val*) var_mpropdef;
2943 ((struct instance_array__NativeArray*)var118)->values[1] = (val*) var111;
2944 ((struct instance_array__NativeArray*)var118)->values[2] = (val*) var115;
2945 ((void (*)(val*, val*, long))(var116->class->vft[COLOR_array__Array__with_native]))(var116, var118, var117) /* with_native on <var116:Array[Object]>*/;
2946 }
2947 var119 = ((val* (*)(val*))(var116->class->vft[COLOR_string__Object__to_s]))(var116) /* to_s on <var116:Array[Object]>*/;
2948 var120 = 3;
2949 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_toolcontext__ToolContext__info]))(var109, var119, var120) /* info on <var109:ToolContext>*/;
2950 }
2951 RET_LABEL:;
2952 }
2953 /* method modelize_property#AMethPropdef#build_property for (self: Object, ModelBuilder, AClassdef) */
2954 void VIRTUAL_modelize_property__AMethPropdef__build_property(val* self, val* p0, val* p1) {
2955 modelize_property__AMethPropdef__build_property(self, p0, p1);
2956 RET_LABEL:;
2957 }
2958 /* method modelize_property#AMethPropdef#build_signature for (self: AMethPropdef, ModelBuilder, AClassdef) */
2959 void modelize_property__AMethPropdef__build_signature(val* self, val* p0, val* p1) {
2960 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
2961 val* var_nclassdef /* var nclassdef: AClassdef */;
2962 val* var /* : nullable MPropDef */;
2963 val* var_mpropdef /* var mpropdef: nullable MMethodDef */;
2964 val* var1 /* : null */;
2965 short int var2 /* : Bool */;
2966 val* var3 /* : MClassDef */;
2967 val* var4 /* : MModule */;
2968 val* var_mmodule /* var mmodule: MModule */;
2969 val* var5 /* : nullable ASignature */;
2970 val* var_nsig /* var nsig: nullable ASignature */;
2971 val* var6 /* : Array[String] */;
2972 val* var_param_names /* var param_names: Array[String] */;
2973 val* var7 /* : Array[MType] */;
2974 val* var_param_types /* var param_types: Array[MType] */;
2975 long var8 /* : Int */;
2976 long var9 /* : Int */;
2977 long var11 /* : Int */;
2978 long var_vararg_rank /* var vararg_rank: Int */;
2979 val* var12 /* : null */;
2980 val* var_ret_type /* var ret_type: nullable MType */;
2981 val* var13 /* : null */;
2982 short int var14 /* : Bool */;
2983 short int var15 /* : Bool */;
2984 short int var16 /* : Bool */;
2985 val* var17 /* : Array[String] */;
2986 val* var18 /* : Array[MType] */;
2987 long var19 /* : Int */;
2988 val* var20 /* : nullable MType */;
2989 val* var21 /* : null */;
2990 val* var_msignature /* var msignature: nullable MSignature */;
2991 short int var22 /* : Bool */;
2992 short int var23 /* : Bool */;
2993 val* var24 /* : MProperty */;
2994 val* var25 /* : MPropDef */;
2995 val* var26 /* : nullable MSignature */;
2996 val* var27 /* : null */;
2997 short int var28 /* : Bool */;
2998 long var29 /* : Int */;
2999 long var30 /* : Int */;
3000 short int var31 /* : Bool */;
3001 short int var33 /* : Bool */;
3002 short int var34 /* : Bool */;
3003 val* var35 /* : null */;
3004 short int var36 /* : Bool */;
3005 val* var_node /* var node: ANode */;
3006 static val* varonce;
3007 val* var37 /* : String */;
3008 char* var38 /* : NativeString */;
3009 long var39 /* : Int */;
3010 val* var40 /* : String */;
3011 static val* varonce41;
3012 val* var42 /* : String */;
3013 char* var43 /* : NativeString */;
3014 long var44 /* : Int */;
3015 val* var45 /* : String */;
3016 val* var46 /* : MProperty */;
3017 val* var47 /* : MPropDef */;
3018 static val* varonce48;
3019 val* var49 /* : String */;
3020 char* var50 /* : NativeString */;
3021 long var51 /* : Int */;
3022 val* var52 /* : String */;
3023 long var53 /* : Int */;
3024 static val* varonce54;
3025 val* var55 /* : String */;
3026 char* var56 /* : NativeString */;
3027 long var57 /* : Int */;
3028 val* var58 /* : String */;
3029 long var59 /* : Int */;
3030 static val* varonce60;
3031 val* var61 /* : String */;
3032 char* var62 /* : NativeString */;
3033 long var63 /* : Int */;
3034 val* var64 /* : String */;
3035 val* var65 /* : Array[Object] */;
3036 long var66 /* : Int */;
3037 val* var67 /* : NativeArray[Object] */;
3038 val* var68 /* : Object */;
3039 val* var69 /* : Object */;
3040 val* var70 /* : String */;
3041 val* var71 /* : MProperty */;
3042 short int var72 /* : Bool */;
3043 val* var73 /* : nullable MClassDef */;
3044 val* var74 /* : Array[MClassType] */;
3045 val* var75 /* : Iterator[nullable Object] */;
3046 short int var76 /* : Bool */;
3047 val* var77 /* : nullable Object */;
3048 val* var_msupertype /* var msupertype: MClassType */;
3049 val* var78 /* : nullable MClassDef */;
3050 val* var79 /* : MClassType */;
3051 val* var80 /* : MType */;
3052 val* var81 /* : MProperty */;
3053 val* var82 /* : String */;
3054 val* var83 /* : nullable MProperty */;
3055 val* var_candidate /* var candidate: nullable MProperty */;
3056 val* var84 /* : null */;
3057 short int var85 /* : Bool */;
3058 val* var86 /* : null */;
3059 short int var87 /* : Bool */;
3060 val* var88 /* : MPropDef */;
3061 short int var89 /* : Bool */;
3062 int cltype;
3063 int idtype;
3064 const char* var_class_name;
3065 val* var90 /* : nullable MSignature */;
3066 short int var91 /* : Bool */;
3067 short int var92 /* : Bool */;
3068 short int var93 /* : Bool */;
3069 val* var94 /* : null */;
3070 short int var95 /* : Bool */;
3071 short int var_ /* var : Bool */;
3072 long var96 /* : Int */;
3073 long var97 /* : Int */;
3074 short int var98 /* : Bool */;
3075 short int var100 /* : Bool */;
3076 short int var101 /* : Bool */;
3077 short int var_102 /* var : Bool */;
3078 long var103 /* : Int */;
3079 long var104 /* : Int */;
3080 short int var105 /* : Bool */;
3081 short int var107 /* : Bool */;
3082 short int var_108 /* var : Bool */;
3083 long var109 /* : Int */;
3084 long var110 /* : Int */;
3085 short int var111 /* : Bool */;
3086 short int var113 /* : Bool */;
3087 val* var114 /* : Array[MType] */;
3088 val* var115 /* : Array[MParameter] */;
3089 val* var116 /* : Iterator[nullable Object] */;
3090 short int var117 /* : Bool */;
3091 val* var118 /* : nullable Object */;
3092 val* var_mparameter /* var mparameter: MParameter */;
3093 val* var119 /* : MType */;
3094 long var121 /* : Int */;
3095 short int var122 /* : Bool */;
3096 val* var123 /* : null */;
3097 short int var124 /* : Bool */;
3098 short int var_125 /* var : Bool */;
3099 val* var126 /* : null */;
3100 short int var127 /* : Bool */;
3101 val* var128 /* : nullable MType */;
3102 long var129 /* : Int */;
3103 long var130 /* : Int */;
3104 short int var131 /* : Bool */;
3105 short int var133 /* : Bool */;
3106 short int var134 /* : Bool */;
3107 val* var135 /* : ANodes[AParam] */;
3108 long var136 /* : Int */;
3109 val* var137 /* : nullable Object */;
3110 static val* varonce138;
3111 val* var139 /* : String */;
3112 char* var140 /* : NativeString */;
3113 long var141 /* : Int */;
3114 val* var142 /* : String */;
3115 long var143 /* : Int */;
3116 val* var144 /* : nullable Object */;
3117 static val* varonce145;
3118 val* var146 /* : String */;
3119 char* var147 /* : NativeString */;
3120 long var148 /* : Int */;
3121 val* var149 /* : String */;
3122 val* var150 /* : Array[Object] */;
3123 long var151 /* : Int */;
3124 val* var152 /* : NativeArray[Object] */;
3125 val* var153 /* : String */;
3126 val* var154 /* : Array[MParameter] */;
3127 val* var_mparameters /* var mparameters: Array[MParameter] */;
3128 val* var155 /* : Range[Int] */;
3129 long var156 /* : Int */;
3130 long var157 /* : Int */;
3131 val* var158 /* : Discrete */;
3132 val* var159 /* : Discrete */;
3133 val* var160 /* : Iterator[nullable Object] */;
3134 short int var161 /* : Bool */;
3135 val* var162 /* : nullable Object */;
3136 long var_i /* var i: Int */;
3137 long var163 /* : Int */;
3138 val* var164 /* : MParameter */;
3139 val* var165 /* : nullable Object */;
3140 val* var166 /* : nullable Object */;
3141 short int var167 /* : Bool */;
3142 short int var169 /* : Bool */;
3143 val* var_mparameter170 /* var mparameter: MParameter */;
3144 val* var171 /* : null */;
3145 short int var172 /* : Bool */;
3146 val* var173 /* : ANodes[AParam] */;
3147 val* var174 /* : nullable Object */;
3148 val* var176 /* : MSignature */;
3149 short int var177 /* : Bool */;
3150 int cltype178;
3151 int idtype179;
3152 var_modelbuilder = p0;
3153 var_nclassdef = p1;
3154 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AMethPropdef>*/;
3155 var_mpropdef = var;
3156 var1 = NULL;
3157 if (var_mpropdef == NULL) {
3158 var2 = 1; /* is null */
3159 } else {
3160 var2 = 0; /* arg is null but recv is not */
3161 }
3162 if (var2){
3163 goto RET_LABEL;
3164 } else {
3165 }
3166 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3167 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
3168 var_mmodule = var4;
3169 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AMethPropdef>*/;
3170 var_nsig = var5;
3171 var6 = NEW_array__Array(&type_array__Arraystring__String);
3172 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
3173 var_param_names = var6;
3174 var7 = NEW_array__Array(&type_array__Arraymodel__MType);
3175 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[MType]>*/;
3176 var_param_types = var7;
3177 var8 = 1;
3178 { /* Inline kernel#Int#unary - (var8) */
3179 var11 = -var8;
3180 var9 = var11;
3181 goto RET_LABEL10;
3182 RET_LABEL10:(void)0;
3183 }
3184 var_vararg_rank = var9;
3185 var12 = NULL;
3186 var_ret_type = var12;
3187 var13 = NULL;
3188 if (var_nsig == NULL) {
3189 var14 = 0; /* is null */
3190 } else {
3191 var14 = 1; /* arg is null and recv is not */
3192 }
3193 if (var14){
3194 var15 = ((short int (*)(val*, val*, val*))(var_nsig->class->vft[COLOR_modelize_property__ASignature__visit_signature]))(var_nsig, var_modelbuilder, var_nclassdef) /* visit_signature on <var_nsig:nullable ASignature(ASignature)>*/;
3195 var16 = !var15;
3196 if (var16){
3197 goto RET_LABEL;
3198 } else {
3199 }
3200 var17 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_modelize_property__ASignature__param_names]))(var_nsig) /* param_names on <var_nsig:nullable ASignature(ASignature)>*/;
3201 var_param_names = var17;
3202 var18 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_modelize_property__ASignature__param_types]))(var_nsig) /* param_types on <var_nsig:nullable ASignature(ASignature)>*/;
3203 var_param_types = var18;
3204 var19 = ((long (*)(val*))(var_nsig->class->vft[COLOR_modelize_property__ASignature__vararg_rank]))(var_nsig) /* vararg_rank on <var_nsig:nullable ASignature(ASignature)>*/;
3205 var_vararg_rank = var19;
3206 var20 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_modelize_property__ASignature__ret_type]))(var_nsig) /* ret_type on <var_nsig:nullable ASignature(ASignature)>*/;
3207 var_ret_type = var20;
3208 } else {
3209 }
3210 var21 = NULL;
3211 var_msignature = var21;
3212 var22 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3213 var23 = !var22;
3214 if (var23){
3215 var24 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3216 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MProperty__intro]))(var24) /* intro on <var24:MProperty(MMethod)>*/;
3217 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_model__MMethodDef__msignature]))(var25) /* msignature on <var25:MPropDef(MMethodDef)>*/;
3218 var_msignature = var26;
3219 var27 = NULL;
3220 if (var_msignature == NULL) {
3221 var28 = 1; /* is null */
3222 } else {
3223 var28 = 0; /* arg is null but recv is not */
3224 }
3225 if (var28){
3226 goto RET_LABEL;
3227 } else {
3228 }
3229 var29 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
3230 var30 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:nullable MSignature(MSignature)>*/;
3231 { /* Inline kernel#Int#!= (var29,var30) */
3232 var33 = var29 == var30;
3233 var34 = !var33;
3234 var31 = var34;
3235 goto RET_LABEL32;
3236 RET_LABEL32:(void)0;
3237 }
3238 if (var31){
3239 var35 = NULL;
3240 if (var_nsig == NULL) {
3241 var36 = 0; /* is null */
3242 } else {
3243 var36 = 1; /* arg is null and recv is not */
3244 }
3245 if (var36){
3246 var_node = var_nsig;
3247 } else {
3248 var_node = self;
3249 }
3250 if (varonce) {
3251 var37 = varonce;
3252 } else {
3253 var38 = "Redef error: ";
3254 var39 = 13;
3255 var40 = string__NativeString__to_s_with_length(var38, var39);
3256 var37 = var40;
3257 varonce = var37;
3258 }
3259 if (varonce41) {
3260 var42 = varonce41;
3261 } else {
3262 var43 = " redefines ";
3263 var44 = 11;
3264 var45 = string__NativeString__to_s_with_length(var43, var44);
3265 var42 = var45;
3266 varonce41 = var42;
3267 }
3268 var46 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3269 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_model__MProperty__intro]))(var46) /* intro on <var46:MProperty(MMethod)>*/;
3270 if (varonce48) {
3271 var49 = varonce48;
3272 } else {
3273 var50 = " with ";
3274 var51 = 6;
3275 var52 = string__NativeString__to_s_with_length(var50, var51);
3276 var49 = var52;
3277 varonce48 = var49;
3278 }
3279 var53 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
3280 if (varonce54) {
3281 var55 = varonce54;
3282 } else {
3283 var56 = " parameter(s), ";
3284 var57 = 15;
3285 var58 = string__NativeString__to_s_with_length(var56, var57);
3286 var55 = var58;
3287 varonce54 = var55;
3288 }
3289 var59 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:nullable MSignature(MSignature)>*/;
3290 if (varonce60) {
3291 var61 = varonce60;
3292 } else {
3293 var62 = " expected. Signature is ";
3294 var63 = 24;
3295 var64 = string__NativeString__to_s_with_length(var62, var63);
3296 var61 = var64;
3297 varonce60 = var61;
3298 }
3299 var65 = NEW_array__Array(&type_array__Arraykernel__Object);
3300 { /* var65 = array_instance Array[Object] */
3301 var66 = 11;
3302 var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
3303 ((struct instance_array__NativeArray*)var67)->values[0] = (val*) var37;
3304 ((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_mpropdef;
3305 ((struct instance_array__NativeArray*)var67)->values[2] = (val*) var42;
3306 ((struct instance_array__NativeArray*)var67)->values[3] = (val*) var47;
3307 ((struct instance_array__NativeArray*)var67)->values[4] = (val*) var49;
3308 var68 = BOX_kernel__Int(var53); /* autobox from Int to Object */
3309 ((struct instance_array__NativeArray*)var67)->values[5] = (val*) var68;
3310 ((struct instance_array__NativeArray*)var67)->values[6] = (val*) var55;
3311 var69 = BOX_kernel__Int(var59); /* autobox from Int to Object */
3312 ((struct instance_array__NativeArray*)var67)->values[7] = (val*) var69;
3313 ((struct instance_array__NativeArray*)var67)->values[8] = (val*) var61;
3314 ((struct instance_array__NativeArray*)var67)->values[9] = (val*) var_mpropdef;
3315 ((struct instance_array__NativeArray*)var67)->values[10] = (val*) var_msignature;
3316 ((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
3317 }
3318 var70 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
3319 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node, var70) /* error on <var_modelbuilder:ModelBuilder>*/;
3320 goto RET_LABEL;
3321 } else {
3322 }
3323 } else {
3324 var71 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3325 var72 = ((short int (*)(val*))(var71->class->vft[COLOR_model__MMethod__is_init]))(var71) /* is_init on <var71:MProperty(MMethod)>*/;
3326 if (var72){
3327 var73 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
3328 if (var73 == NULL) {
3329 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3330 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 440);
3331 show_backtrace(1);
3332 } else {
3333 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_model__MClassDef__supertypes]))(var73) /* supertypes on <var73:nullable MClassDef>*/;
3334 }
3335 var75 = ((val* (*)(val*))(var74->class->vft[COLOR_abstract_collection__Collection__iterator]))(var74) /* iterator on <var74:Array[MClassType]>*/;
3336 for(;;) {
3337 var76 = ((short int (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var75) /* is_ok on <var75:Iterator[nullable Object]>*/;
3338 if(!var76) break;
3339 var77 = ((val* (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator__item]))(var75) /* item on <var75:Iterator[nullable Object]>*/;
3340 var_msupertype = var77;
3341 var78 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
3342 if (var78 == NULL) {
3343 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3344 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 441);
3345 show_backtrace(1);
3346 } else {
3347 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_model__MClassDef__bound_mtype]))(var78) /* bound_mtype on <var78:nullable MClassDef>*/;
3348 }
3349 var80 = ((val* (*)(val*, val*, val*))(var_msupertype->class->vft[COLOR_model__MType__anchor_to]))(var_msupertype, var_mmodule, var79) /* anchor_to on <var_msupertype:MClassType>*/;
3350 var_msupertype = var80;
3351 var81 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3352 var82 = ((val* (*)(val*))(var81->class->vft[COLOR_model__MProperty__name]))(var81) /* name on <var81:MProperty(MMethod)>*/;
3353 var83 = ((val* (*)(val*, val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2]))(var_modelbuilder, self, var_mmodule, var_msupertype, var82) /* try_get_mproperty_by_name2 on <var_modelbuilder:ModelBuilder>*/;
3354 var_candidate = var83;
3355 var84 = NULL;
3356 if (var_candidate == NULL) {
3357 var85 = 0; /* is null */
3358 } else {
3359 var85 = 1; /* arg is null and recv is not */
3360 }
3361 if (var85){
3362 var86 = NULL;
3363 if (var_msignature == NULL) {
3364 var87 = 1; /* is null */
3365 } else {
3366 var87 = 0; /* arg is null but recv is not */
3367 }
3368 if (var87){
3369 var88 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__intro]))(var_candidate) /* intro on <var_candidate:nullable MProperty(MProperty)>*/;
3370 /* <var88:MPropDef> isa MMethodDef */
3371 cltype = type_model__MMethodDef.color;
3372 idtype = type_model__MMethodDef.id;
3373 if(cltype >= var88->type->table_size) {
3374 var89 = 0;
3375 } else {
3376 var89 = var88->type->type_table[cltype] == idtype;
3377 }
3378 if (!var89) {
3379 var_class_name = var88 == NULL ? "null" : var88->type->name;
3380 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name);
3381 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 445);
3382 show_backtrace(1);
3383 }
3384 var90 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MMethodDef__msignature]))(var88) /* msignature on <var88:MPropDef(MMethodDef)>*/;
3385 var_msignature = var90;
3386 } else {
3387 }
3388 } else {
3389 }
3390 CONTINUE_label: (void)0;
3391 ((void (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator__next]))(var75) /* next on <var75:Iterator[nullable Object]>*/;
3392 }
3393 BREAK_label: (void)0;
3394 } else {
3395 }
3396 }
3397 var94 = NULL;
3398 if (var_msignature == NULL) {
3399 var95 = 0; /* is null */
3400 } else {
3401 var95 = 1; /* arg is null and recv is not */
3402 }
3403 var_ = var95;
3404 if (var95){
3405 var96 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
3406 var97 = ((long (*)(val*))(var_param_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_types) /* length on <var_param_types:Array[MType]>*/;
3407 { /* Inline kernel#Int#!= (var96,var97) */
3408 var100 = var96 == var97;
3409 var101 = !var100;
3410 var98 = var101;
3411 goto RET_LABEL99;
3412 RET_LABEL99:(void)0;
3413 }
3414 var93 = var98;
3415 } else {
3416 var93 = var_;
3417 }
3418 var_102 = var93;
3419 if (var93){
3420 var103 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
3421 var104 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:nullable MSignature(MSignature)>*/;
3422 { /* Inline kernel#Int#== (var103,var104) */
3423 var107 = var103 == var104;
3424 var105 = var107;
3425 goto RET_LABEL106;
3426 RET_LABEL106:(void)0;
3427 }
3428 var92 = var105;
3429 } else {
3430 var92 = var_102;
3431 }
3432 var_108 = var92;
3433 if (var92){
3434 var109 = ((long (*)(val*))(var_param_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_types) /* length on <var_param_types:Array[MType]>*/;
3435 var110 = 0;
3436 { /* Inline kernel#Int#== (var109,var110) */
3437 var113 = var109 == var110;
3438 var111 = var113;
3439 goto RET_LABEL112;
3440 RET_LABEL112:(void)0;
3441 }
3442 var91 = var111;
3443 } else {
3444 var91 = var_108;
3445 }
3446 if (var91){
3447 var114 = NEW_array__Array(&type_array__Arraymodel__MType);
3448 ((void (*)(val*))(var114->class->vft[COLOR_array__Array__init]))(var114) /* init on <var114:Array[MType]>*/;
3449 var_param_types = var114;
3450 var115 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:nullable MSignature(MSignature)>*/;
3451 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_collection__Collection__iterator]))(var115) /* iterator on <var115:Array[MParameter]>*/;
3452 for(;;) {
3453 var117 = ((short int (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var116) /* is_ok on <var116:Iterator[nullable Object]>*/;
3454 if(!var117) break;
3455 var118 = ((val* (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__item]))(var116) /* item on <var116:Iterator[nullable Object]>*/;
3456 var_mparameter = var118;
3457 var119 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__mtype]))(var_mparameter) /* mtype on <var_mparameter:MParameter>*/;
3458 ((void (*)(val*, val*))(var_param_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_param_types, var119) /* add on <var_param_types:Array[MType]>*/;
3459 CONTINUE_label120: (void)0;
3460 ((void (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__next]))(var116) /* next on <var116:Iterator[nullable Object]>*/;
3461 }
3462 BREAK_label120: (void)0;
3463 var121 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:nullable MSignature(MSignature)>*/;
3464 var_vararg_rank = var121;
3465 } else {
3466 }
3467 var123 = NULL;
3468 if (var_msignature == NULL) {
3469 var124 = 0; /* is null */
3470 } else {
3471 var124 = 1; /* arg is null and recv is not */
3472 }
3473 var_125 = var124;
3474 if (var124){
3475 var126 = NULL;
3476 if (var_ret_type == NULL) {
3477 var127 = 1; /* is null */
3478 } else {
3479 var127 = 0; /* arg is null but recv is not */
3480 }
3481 var122 = var127;
3482 } else {
3483 var122 = var_125;
3484 }
3485 if (var122){
3486 var128 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:nullable MSignature(MSignature)>*/;
3487 var_ret_type = var128;
3488 } else {
3489 }
3490 var129 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
3491 var130 = ((long (*)(val*))(var_param_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_types) /* length on <var_param_types:Array[MType]>*/;
3492 { /* Inline kernel#Int#!= (var129,var130) */
3493 var133 = var129 == var130;
3494 var134 = !var133;
3495 var131 = var134;
3496 goto RET_LABEL132;
3497 RET_LABEL132:(void)0;
3498 }
3499 if (var131){
3500 if (var_nsig == NULL) {
3501 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3502 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 467);
3503 show_backtrace(1);
3504 } else {
3505 var135 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var_nsig) /* n_params on <var_nsig:nullable ASignature>*/;
3506 }
3507 var136 = ((long (*)(val*))(var_param_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_types) /* length on <var_param_types:Array[MType]>*/;
3508 var137 = ((val* (*)(val*, long))(var135->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var135, var136) /* [] on <var135:ANodes[AParam]>*/;
3509 if (varonce138) {
3510 var139 = varonce138;
3511 } else {
3512 var140 = "Error: Untyped parameter `";
3513 var141 = 26;
3514 var142 = string__NativeString__to_s_with_length(var140, var141);
3515 var139 = var142;
3516 varonce138 = var139;
3517 }
3518 var143 = ((long (*)(val*))(var_param_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_types) /* length on <var_param_types:Array[MType]>*/;
3519 var144 = ((val* (*)(val*, long))(var_param_names->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_param_names, var143) /* [] on <var_param_names:Array[String]>*/;
3520 if (varonce145) {
3521 var146 = varonce145;
3522 } else {
3523 var147 = "\'.";
3524 var148 = 2;
3525 var149 = string__NativeString__to_s_with_length(var147, var148);
3526 var146 = var149;
3527 varonce145 = var146;
3528 }
3529 var150 = NEW_array__Array(&type_array__Arraykernel__Object);
3530 { /* var150 = array_instance Array[Object] */
3531 var151 = 3;
3532 var152 = NEW_array__NativeArray(var151, &type_array__NativeArraykernel__Object);
3533 ((struct instance_array__NativeArray*)var152)->values[0] = (val*) var139;
3534 ((struct instance_array__NativeArray*)var152)->values[1] = (val*) var144;
3535 ((struct instance_array__NativeArray*)var152)->values[2] = (val*) var146;
3536 ((void (*)(val*, val*, long))(var150->class->vft[COLOR_array__Array__with_native]))(var150, var152, var151) /* with_native on <var150:Array[Object]>*/;
3537 }
3538 var153 = ((val* (*)(val*))(var150->class->vft[COLOR_string__Object__to_s]))(var150) /* to_s on <var150:Array[Object]>*/;
3539 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var137, var153) /* error on <var_modelbuilder:ModelBuilder>*/;
3540 goto RET_LABEL;
3541 } else {
3542 }
3543 var154 = NEW_array__Array(&type_array__Arraymodel__MParameter);
3544 ((void (*)(val*))(var154->class->vft[COLOR_array__Array__init]))(var154) /* init on <var154:Array[MParameter]>*/;
3545 var_mparameters = var154;
3546 var155 = NEW_range__Range(&type_range__Rangekernel__Int);
3547 var156 = 0;
3548 var157 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_param_names) /* length on <var_param_names:Array[String]>*/;
3549 var158 = BOX_kernel__Int(var156); /* autobox from Int to Discrete */
3550 var159 = BOX_kernel__Int(var157); /* autobox from Int to Discrete */
3551 ((void (*)(val*, val*, val*))(var155->class->vft[COLOR_range__Range__without_last]))(var155, var158, var159) /* without_last on <var155:Range[Int]>*/;
3552 var160 = ((val* (*)(val*))(var155->class->vft[COLOR_abstract_collection__Collection__iterator]))(var155) /* iterator on <var155:Range[Int]>*/;
3553 for(;;) {
3554 var161 = ((short int (*)(val*))(var160->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var160) /* is_ok on <var160:Iterator[nullable Object]>*/;
3555 if(!var161) break;
3556 var162 = ((val* (*)(val*))(var160->class->vft[COLOR_abstract_collection__Iterator__item]))(var160) /* item on <var160:Iterator[nullable Object]>*/;
3557 var163 = ((struct instance_kernel__Int*)var162)->value; /* autounbox from nullable Object to Int */;
3558 var_i = var163;
3559 var164 = NEW_model__MParameter(&type_model__MParameter);
3560 var165 = ((val* (*)(val*, long))(var_param_names->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_param_names, var_i) /* [] on <var_param_names:Array[String]>*/;
3561 var166 = ((val* (*)(val*, long))(var_param_types->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_param_types, var_i) /* [] on <var_param_types:Array[MType]>*/;
3562 { /* Inline kernel#Int#== (var_i,var_vararg_rank) */
3563 var169 = var_i == var_vararg_rank;
3564 var167 = var169;
3565 goto RET_LABEL168;
3566 RET_LABEL168:(void)0;
3567 }
3568 ((void (*)(val*, val*, val*, short int))(var164->class->vft[COLOR_model__MParameter__init]))(var164, var165, var166, var167) /* init on <var164:MParameter>*/;
3569 var_mparameter170 = var164;
3570 var171 = NULL;
3571 if (var_nsig == NULL) {
3572 var172 = 0; /* is null */
3573 } else {
3574 var172 = 1; /* arg is null and recv is not */
3575 }
3576 if (var172){
3577 var173 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var_nsig) /* n_params on <var_nsig:nullable ASignature(ASignature)>*/;
3578 var174 = ((val* (*)(val*, long))(var173->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var173, var_i) /* [] on <var173:ANodes[AParam]>*/;
3579 ((void (*)(val*, val*))(var174->class->vft[COLOR_modelize_property__AParam__mparameter_61d]))(var174, var_mparameter170) /* mparameter= on <var174:nullable Object(AParam)>*/;
3580 } else {
3581 }
3582 ((void (*)(val*, val*))(var_mparameters->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparameters, var_mparameter170) /* add on <var_mparameters:Array[MParameter]>*/;
3583 CONTINUE_label175: (void)0;
3584 ((void (*)(val*))(var160->class->vft[COLOR_abstract_collection__Iterator__next]))(var160) /* next on <var160:Iterator[nullable Object]>*/;
3585 }
3586 BREAK_label175: (void)0;
3587 var176 = NEW_model__MSignature(&type_model__MSignature);
3588 ((void (*)(val*, val*, val*))(var176->class->vft[COLOR_model__MSignature__init]))(var176, var_mparameters, var_ret_type) /* init on <var176:MSignature>*/;
3589 var_msignature = var176;
3590 ((void (*)(val*, val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mpropdef, var_msignature) /* msignature= on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3591 /* <self:AMethPropdef> isa ADeferredMethPropdef */
3592 cltype178 = type_parser_nodes__ADeferredMethPropdef.color;
3593 idtype179 = type_parser_nodes__ADeferredMethPropdef.id;
3594 if(cltype178 >= self->type->table_size) {
3595 var177 = 0;
3596 } else {
3597 var177 = self->type->type_table[cltype178] == idtype179;
3598 }
3599 ((void (*)(val*, short int))(var_mpropdef->class->vft[COLOR_model__MMethodDef__is_abstract_61d]))(var_mpropdef, var177) /* is_abstract= on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3600 RET_LABEL:;
3601 }
3602 /* method modelize_property#AMethPropdef#build_signature for (self: Object, ModelBuilder, AClassdef) */
3603 void VIRTUAL_modelize_property__AMethPropdef__build_signature(val* self, val* p0, val* p1) {
3604 modelize_property__AMethPropdef__build_signature(self, p0, p1);
3605 RET_LABEL:;
3606 }
3607 /* method modelize_property#AMethPropdef#check_signature for (self: AMethPropdef, ModelBuilder, AClassdef) */
3608 void modelize_property__AMethPropdef__check_signature(val* self, val* p0, val* p1) {
3609 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3610 val* var_nclassdef /* var nclassdef: AClassdef */;
3611 val* var /* : nullable MPropDef */;
3612 val* var_mpropdef /* var mpropdef: nullable MMethodDef */;
3613 val* var1 /* : null */;
3614 short int var2 /* : Bool */;
3615 val* var3 /* : MClassDef */;
3616 val* var4 /* : MModule */;
3617 val* var_mmodule /* var mmodule: MModule */;
3618 val* var5 /* : nullable ASignature */;
3619 val* var_nsig /* var nsig: nullable ASignature */;
3620 val* var6 /* : nullable MPropDef */;
3621 val* var7 /* : nullable MSignature */;
3622 val* var_mysignature /* var mysignature: nullable MSignature */;
3623 val* var8 /* : null */;
3624 short int var9 /* : Bool */;
3625 short int var10 /* : Bool */;
3626 short int var11 /* : Bool */;
3627 val* var12 /* : MProperty */;
3628 val* var13 /* : MPropDef */;
3629 val* var14 /* : nullable MSignature */;
3630 val* var_msignature /* var msignature: nullable MSignature */;
3631 val* var15 /* : null */;
3632 short int var16 /* : Bool */;
3633 val* var17 /* : nullable MType */;
3634 val* var_precursor_ret_type /* var precursor_ret_type: nullable MType */;
3635 val* var18 /* : nullable MType */;
3636 val* var_ret_type /* var ret_type: nullable MType */;
3637 short int var19 /* : Bool */;
3638 val* var20 /* : null */;
3639 short int var21 /* : Bool */;
3640 short int var_ /* var : Bool */;
3641 val* var22 /* : null */;
3642 short int var23 /* : Bool */;
3643 val* var24 /* : nullable AType */;
3644 static val* varonce;
3645 val* var25 /* : String */;
3646 char* var26 /* : NativeString */;
3647 long var27 /* : Int */;
3648 val* var28 /* : String */;
3649 val* var29 /* : MProperty */;
3650 static val* varonce30;
3651 val* var31 /* : String */;
3652 char* var32 /* : NativeString */;
3653 long var33 /* : Int */;
3654 val* var34 /* : String */;
3655 val* var35 /* : Array[Object] */;
3656 long var36 /* : Int */;
3657 val* var37 /* : NativeArray[Object] */;
3658 val* var38 /* : String */;
3659 long var39 /* : Int */;
3660 long var40 /* : Int */;
3661 short int var41 /* : Bool */;
3662 short int var43 /* : Bool */;
3663 int cltype;
3664 int idtype;
3665 const char* var_class_name;
3666 short int var44 /* : Bool */;
3667 val* var45 /* : Range[Int] */;
3668 long var46 /* : Int */;
3669 long var47 /* : Int */;
3670 val* var48 /* : Discrete */;
3671 val* var49 /* : Discrete */;
3672 val* var50 /* : Iterator[nullable Object] */;
3673 short int var51 /* : Bool */;
3674 val* var52 /* : nullable Object */;
3675 long var_i /* var i: Int */;
3676 long var53 /* : Int */;
3677 val* var54 /* : Array[MParameter] */;
3678 val* var55 /* : nullable Object */;
3679 val* var56 /* : MType */;
3680 val* var_myt /* var myt: MType */;
3681 val* var57 /* : Array[MParameter] */;
3682 val* var58 /* : nullable Object */;
3683 val* var59 /* : MType */;
3684 val* var_prt /* var prt: MType */;
3685 short int var60 /* : Bool */;
3686 val* var61 /* : nullable MClassDef */;
3687 val* var62 /* : MClassType */;
3688 short int var63 /* : Bool */;
3689 short int var64 /* : Bool */;
3690 short int var_65 /* var : Bool */;
3691 val* var66 /* : nullable MClassDef */;
3692 val* var67 /* : MClassType */;
3693 short int var68 /* : Bool */;
3694 short int var69 /* : Bool */;
3695 val* var70 /* : ANodes[AParam] */;
3696 val* var71 /* : nullable Object */;
3697 static val* varonce72;
3698 val* var73 /* : String */;
3699 char* var74 /* : NativeString */;
3700 long var75 /* : Int */;
3701 val* var76 /* : String */;
3702 val* var77 /* : Array[MParameter] */;
3703 val* var78 /* : nullable Object */;
3704 val* var79 /* : String */;
3705 static val* varonce80;
3706 val* var81 /* : String */;
3707 char* var82 /* : NativeString */;
3708 long var83 /* : Int */;
3709 val* var84 /* : String */;
3710 static val* varonce85;
3711 val* var86 /* : String */;
3712 char* var87 /* : NativeString */;
3713 long var88 /* : Int */;
3714 val* var89 /* : String */;
3715 static val* varonce90;
3716 val* var91 /* : String */;
3717 char* var92 /* : NativeString */;
3718 long var93 /* : Int */;
3719 val* var94 /* : String */;
3720 val* var95 /* : Array[Object] */;
3721 long var96 /* : Int */;
3722 val* var97 /* : NativeArray[Object] */;
3723 val* var98 /* : String */;
3724 val* var99 /* : null */;
3725 short int var100 /* : Bool */;
3726 val* var101 /* : null */;
3727 short int var102 /* : Bool */;
3728 val* var103 /* : nullable MClassDef */;
3729 val* var104 /* : MClassType */;
3730 short int var105 /* : Bool */;
3731 short int var106 /* : Bool */;
3732 val* var107 /* : nullable AType */;
3733 static val* varonce108;
3734 val* var109 /* : String */;
3735 char* var110 /* : NativeString */;
3736 long var111 /* : Int */;
3737 val* var112 /* : String */;
3738 static val* varonce113;
3739 val* var114 /* : String */;
3740 char* var115 /* : NativeString */;
3741 long var116 /* : Int */;
3742 val* var117 /* : String */;
3743 static val* varonce118;
3744 val* var119 /* : String */;
3745 char* var120 /* : NativeString */;
3746 long var121 /* : Int */;
3747 val* var122 /* : String */;
3748 val* var123 /* : Array[Object] */;
3749 long var124 /* : Int */;
3750 val* var125 /* : NativeArray[Object] */;
3751 val* var126 /* : String */;
3752 var_modelbuilder = p0;
3753 var_nclassdef = p1;
3754 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AMethPropdef>*/;
3755 var_mpropdef = var;
3756 var1 = NULL;
3757 if (var_mpropdef == NULL) {
3758 var2 = 1; /* is null */
3759 } else {
3760 var2 = 0; /* arg is null but recv is not */
3761 }
3762 if (var2){
3763 goto RET_LABEL;
3764 } else {
3765 }
3766 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3767 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
3768 var_mmodule = var4;
3769 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AMethPropdef>*/;
3770 var_nsig = var5;
3771 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AMethPropdef>*/;
3772 if (var6 == NULL) {
3773 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3774 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 489);
3775 show_backtrace(1);
3776 } else {
3777 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MMethodDef__msignature]))(var6) /* msignature on <var6:nullable MPropDef(nullable MMethodDef)>*/;
3778 }
3779 var_mysignature = var7;
3780 var8 = NULL;
3781 if (var_mysignature == NULL) {
3782 var9 = 1; /* is null */
3783 } else {
3784 var9 = 0; /* arg is null but recv is not */
3785 }
3786 if (var9){
3787 goto RET_LABEL;
3788 } else {
3789 }
3790 var10 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3791 var11 = !var10;
3792 if (var11){
3793 var12 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3794 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MProperty__intro]))(var12) /* intro on <var12:MProperty(MMethod)>*/;
3795 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MMethodDef__msignature]))(var13) /* msignature on <var13:MPropDef(MMethodDef)>*/;
3796 var_msignature = var14;
3797 var15 = NULL;
3798 if (var_msignature == NULL) {
3799 var16 = 1; /* is null */
3800 } else {
3801 var16 = 0; /* arg is null but recv is not */
3802 }
3803 if (var16){
3804 goto RET_LABEL;
3805 } else {
3806 }
3807 var17 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:nullable MSignature(MSignature)>*/;
3808 var_precursor_ret_type = var17;
3809 var18 = ((val* (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_mysignature) /* return_mtype on <var_mysignature:nullable MSignature(MSignature)>*/;
3810 var_ret_type = var18;
3811 var20 = NULL;
3812 if (var_ret_type == NULL) {
3813 var21 = 0; /* is null */
3814 } else {
3815 var21 = 1; /* arg is null and recv is not */
3816 }
3817 var_ = var21;
3818 if (var21){
3819 var22 = NULL;
3820 if (var_precursor_ret_type == NULL) {
3821 var23 = 1; /* is null */
3822 } else {
3823 var23 = 0; /* arg is null but recv is not */
3824 }
3825 var19 = var23;
3826 } else {
3827 var19 = var_;
3828 }
3829 if (var19){
3830 if (var_nsig == NULL) {
3831 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3832 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 501);
3833 show_backtrace(1);
3834 } else {
3835 var24 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_type]))(var_nsig) /* n_type on <var_nsig:nullable ASignature>*/;
3836 }
3837 if (var24 == NULL) {
3838 fprintf(stderr, "Runtime error: %s", "Cast failed");
3839 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 501);
3840 show_backtrace(1);
3841 }
3842 if (varonce) {
3843 var25 = varonce;
3844 } else {
3845 var26 = "Redef Error: ";
3846 var27 = 13;
3847 var28 = string__NativeString__to_s_with_length(var26, var27);
3848 var25 = var28;
3849 varonce = var25;
3850 }
3851 var29 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
3852 if (varonce30) {
3853 var31 = varonce30;
3854 } else {
3855 var32 = " is a procedure, not a function.";
3856 var33 = 32;
3857 var34 = string__NativeString__to_s_with_length(var32, var33);
3858 var31 = var34;
3859 varonce30 = var31;
3860 }
3861 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
3862 { /* var35 = array_instance Array[Object] */
3863 var36 = 3;
3864 var37 = NEW_array__NativeArray(var36, &type_array__NativeArraykernel__Object);
3865 ((struct instance_array__NativeArray*)var37)->values[0] = (val*) var25;
3866 ((struct instance_array__NativeArray*)var37)->values[1] = (val*) var29;
3867 ((struct instance_array__NativeArray*)var37)->values[2] = (val*) var31;
3868 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
3869 }
3870 var38 = ((val* (*)(val*))(var35->class->vft[COLOR_string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
3871 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var24, var38) /* error on <var_modelbuilder:ModelBuilder>*/;
3872 goto RET_LABEL;
3873 } else {
3874 }
3875 var39 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__arity]))(var_mysignature) /* arity on <var_mysignature:nullable MSignature(MSignature)>*/;
3876 var40 = 0;
3877 { /* Inline kernel#Int#> (var39,var40) */
3878 /* Covariant cast for argument 0 (i) <var40:Int> isa OTHER */
3879 /* <var40:Int> isa OTHER */
3880 var43 = 1; /* easy <var40:Int> isa OTHER*/
3881 if (!var43) {
3882 var_class_name = type_kernel__Int.name;
3883 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3884 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
3885 show_backtrace(1);
3886 }
3887 var44 = var39 > var40;
3888 var41 = var44;
3889 goto RET_LABEL42;
3890 RET_LABEL42:(void)0;
3891 }
3892 if (var41){
3893 var45 = NEW_range__Range(&type_range__Rangekernel__Int);
3894 var46 = 0;
3895 var47 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__arity]))(var_mysignature) /* arity on <var_mysignature:nullable MSignature(MSignature)>*/;
3896 var48 = BOX_kernel__Int(var46); /* autobox from Int to Discrete */
3897 var49 = BOX_kernel__Int(var47); /* autobox from Int to Discrete */
3898 ((void (*)(val*, val*, val*))(var45->class->vft[COLOR_range__Range__without_last]))(var45, var48, var49) /* without_last on <var45:Range[Int]>*/;
3899 var50 = ((val* (*)(val*))(var45->class->vft[COLOR_abstract_collection__Collection__iterator]))(var45) /* iterator on <var45:Range[Int]>*/;
3900 for(;;) {
3901 var51 = ((short int (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var50) /* is_ok on <var50:Iterator[nullable Object]>*/;
3902 if(!var51) break;
3903 var52 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__item]))(var50) /* item on <var50:Iterator[nullable Object]>*/;
3904 var53 = ((struct instance_kernel__Int*)var52)->value; /* autounbox from nullable Object to Int */;
3905 var_i = var53;
3906 var54 = ((val* (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__mparameters]))(var_mysignature) /* mparameters on <var_mysignature:nullable MSignature(MSignature)>*/;
3907 var55 = ((val* (*)(val*, long))(var54->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var54, var_i) /* [] on <var54:Array[MParameter]>*/;
3908 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_model__MParameter__mtype]))(var55) /* mtype on <var55:nullable Object(MParameter)>*/;
3909 var_myt = var56;
3910 var57 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:nullable MSignature(MSignature)>*/;
3911 var58 = ((val* (*)(val*, long))(var57->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var57, var_i) /* [] on <var57:Array[MParameter]>*/;
3912 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_model__MParameter__mtype]))(var58) /* mtype on <var58:nullable Object(MParameter)>*/;
3913 var_prt = var59;
3914 var61 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
3915 if (var61 == NULL) {
3916 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3917 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 510);
3918 show_backtrace(1);
3919 } else {
3920 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MClassDef__bound_mtype]))(var61) /* bound_mtype on <var61:nullable MClassDef>*/;
3921 }
3922 var63 = ((short int (*)(val*, val*, val*, val*))(var_myt->class->vft[COLOR_model__MType__is_subtype]))(var_myt, var_mmodule, var62, var_prt) /* is_subtype on <var_myt:MType>*/;
3923 var64 = !var63;
3924 var_65 = var64;
3925 if (var64){
3926 var66 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
3927 if (var66 == NULL) {
3928 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3929 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 511);
3930 show_backtrace(1);
3931 } else {
3932 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_model__MClassDef__bound_mtype]))(var66) /* bound_mtype on <var66:nullable MClassDef>*/;
3933 }
3934 var68 = ((short int (*)(val*, val*, val*, val*))(var_prt->class->vft[COLOR_model__MType__is_subtype]))(var_prt, var_mmodule, var67, var_myt) /* is_subtype on <var_prt:MType>*/;
3935 var69 = !var68;
3936 var60 = var69;
3937 } else {
3938 var60 = var_65;
3939 }
3940 if (var60){
3941 if (var_nsig == NULL) {
3942 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3943 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 512);
3944 show_backtrace(1);
3945 } else {
3946 var70 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var_nsig) /* n_params on <var_nsig:nullable ASignature>*/;
3947 }
3948 var71 = ((val* (*)(val*, long))(var70->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var70, var_i) /* [] on <var70:ANodes[AParam]>*/;
3949 if (varonce72) {
3950 var73 = varonce72;
3951 } else {
3952 var74 = "Redef Error: Wrong type for parameter `";
3953 var75 = 39;
3954 var76 = string__NativeString__to_s_with_length(var74, var75);
3955 var73 = var76;
3956 varonce72 = var73;
3957 }
3958 var77 = ((val* (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__mparameters]))(var_mysignature) /* mparameters on <var_mysignature:nullable MSignature(MSignature)>*/;
3959 var78 = ((val* (*)(val*, long))(var77->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var77, var_i) /* [] on <var77:Array[MParameter]>*/;
3960 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_model__MParameter__name]))(var78) /* name on <var78:nullable Object(MParameter)>*/;
3961 if (varonce80) {
3962 var81 = varonce80;
3963 } else {
3964 var82 = "\'. found ";
3965 var83 = 9;
3966 var84 = string__NativeString__to_s_with_length(var82, var83);
3967 var81 = var84;
3968 varonce80 = var81;
3969 }
3970 if (varonce85) {
3971 var86 = varonce85;
3972 } else {
3973 var87 = ", expected ";
3974 var88 = 11;
3975 var89 = string__NativeString__to_s_with_length(var87, var88);
3976 var86 = var89;
3977 varonce85 = var86;
3978 }
3979 if (varonce90) {
3980 var91 = varonce90;
3981 } else {
3982 var92 = ".";
3983 var93 = 1;
3984 var94 = string__NativeString__to_s_with_length(var92, var93);
3985 var91 = var94;
3986 varonce90 = var91;
3987 }
3988 var95 = NEW_array__Array(&type_array__Arraykernel__Object);
3989 { /* var95 = array_instance Array[Object] */
3990 var96 = 7;
3991 var97 = NEW_array__NativeArray(var96, &type_array__NativeArraykernel__Object);
3992 ((struct instance_array__NativeArray*)var97)->values[0] = (val*) var73;
3993 ((struct instance_array__NativeArray*)var97)->values[1] = (val*) var79;
3994 ((struct instance_array__NativeArray*)var97)->values[2] = (val*) var81;
3995 ((struct instance_array__NativeArray*)var97)->values[3] = (val*) var_myt;
3996 ((struct instance_array__NativeArray*)var97)->values[4] = (val*) var86;
3997 ((struct instance_array__NativeArray*)var97)->values[5] = (val*) var_prt;
3998 ((struct instance_array__NativeArray*)var97)->values[6] = (val*) var91;
3999 ((void (*)(val*, val*, long))(var95->class->vft[COLOR_array__Array__with_native]))(var95, var97, var96) /* with_native on <var95:Array[Object]>*/;
4000 }
4001 var98 = ((val* (*)(val*))(var95->class->vft[COLOR_string__Object__to_s]))(var95) /* to_s on <var95:Array[Object]>*/;
4002 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var71, var98) /* error on <var_modelbuilder:ModelBuilder>*/;
4003 } else {
4004 }
4005 CONTINUE_label: (void)0;
4006 ((void (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__next]))(var50) /* next on <var50:Iterator[nullable Object]>*/;
4007 }
4008 BREAK_label: (void)0;
4009 } else {
4010 }
4011 var99 = NULL;
4012 if (var_precursor_ret_type == NULL) {
4013 var100 = 0; /* is null */
4014 } else {
4015 var100 = 1; /* arg is null and recv is not */
4016 }
4017 if (var100){
4018 var101 = NULL;
4019 if (var_ret_type == NULL) {
4020 var102 = 1; /* is null */
4021 } else {
4022 var102 = 0; /* arg is null but recv is not */
4023 }
4024 if (var102){
4025 var_ret_type = var_precursor_ret_type;
4026 } else {
4027 var103 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
4028 if (var103 == NULL) {
4029 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4030 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 520);
4031 show_backtrace(1);
4032 } else {
4033 var104 = ((val* (*)(val*))(var103->class->vft[COLOR_model__MClassDef__bound_mtype]))(var103) /* bound_mtype on <var103:nullable MClassDef>*/;
4034 }
4035 var105 = ((short int (*)(val*, val*, val*, val*))(var_ret_type->class->vft[COLOR_model__MType__is_subtype]))(var_ret_type, var_mmodule, var104, var_precursor_ret_type) /* is_subtype on <var_ret_type:nullable MType(MType)>*/;
4036 var106 = !var105;
4037 if (var106){
4038 if (var_nsig == NULL) {
4039 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4040 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 521);
4041 show_backtrace(1);
4042 } else {
4043 var107 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_type]))(var_nsig) /* n_type on <var_nsig:nullable ASignature>*/;
4044 }
4045 if (var107 == NULL) {
4046 fprintf(stderr, "Runtime error: %s", "Cast failed");
4047 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 521);
4048 show_backtrace(1);
4049 }
4050 if (varonce108) {
4051 var109 = varonce108;
4052 } else {
4053 var110 = "Redef Error: Wrong return type. found ";
4054 var111 = 38;
4055 var112 = string__NativeString__to_s_with_length(var110, var111);
4056 var109 = var112;
4057 varonce108 = var109;
4058 }
4059 if (varonce113) {
4060 var114 = varonce113;
4061 } else {
4062 var115 = ", expected ";
4063 var116 = 11;
4064 var117 = string__NativeString__to_s_with_length(var115, var116);
4065 var114 = var117;
4066 varonce113 = var114;
4067 }
4068 if (varonce118) {
4069 var119 = varonce118;
4070 } else {
4071 var120 = ".";
4072 var121 = 1;
4073 var122 = string__NativeString__to_s_with_length(var120, var121);
4074 var119 = var122;
4075 varonce118 = var119;
4076 }
4077 var123 = NEW_array__Array(&type_array__Arraykernel__Object);
4078 { /* var123 = array_instance Array[Object] */
4079 var124 = 5;
4080 var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object);
4081 ((struct instance_array__NativeArray*)var125)->values[0] = (val*) var109;
4082 ((struct instance_array__NativeArray*)var125)->values[1] = (val*) var_ret_type;
4083 ((struct instance_array__NativeArray*)var125)->values[2] = (val*) var114;
4084 ((struct instance_array__NativeArray*)var125)->values[3] = (val*) var_precursor_ret_type;
4085 ((struct instance_array__NativeArray*)var125)->values[4] = (val*) var119;
4086 ((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on <var123:Array[Object]>*/;
4087 }
4088 var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on <var123:Array[Object]>*/;
4089 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var107, var126) /* error on <var_modelbuilder:ModelBuilder>*/;
4090 } else {
4091 }
4092 }
4093 } else {
4094 }
4095 } else {
4096 }
4097 RET_LABEL:;
4098 }
4099 /* method modelize_property#AMethPropdef#check_signature for (self: Object, ModelBuilder, AClassdef) */
4100 void VIRTUAL_modelize_property__AMethPropdef__check_signature(val* self, val* p0, val* p1) {
4101 modelize_property__AMethPropdef__check_signature(self, p0, p1);
4102 RET_LABEL:;
4103 }
4104 /* method modelize_property#AAttrPropdef#mreadpropdef for (self: AAttrPropdef): nullable MMethodDef */
4105 val* modelize_property__AAttrPropdef__mreadpropdef(val* self) {
4106 val* var /* : nullable MMethodDef */;
4107 val* var1 /* : nullable MMethodDef */;
4108 var1 = self->attrs[COLOR_modelize_property__AAttrPropdef___64dmreadpropdef].val; /* @mreadpropdef on <self:AAttrPropdef> */
4109 var = var1;
4110 RET_LABEL:;
4111 return var;
4112 }
4113 /* method modelize_property#AAttrPropdef#mreadpropdef for (self: Object): nullable MMethodDef */
4114 val* VIRTUAL_modelize_property__AAttrPropdef__mreadpropdef(val* self) {
4115 val* var /* : nullable MMethodDef */;
4116 val* var1 /* : nullable MMethodDef */;
4117 var1 = modelize_property__AAttrPropdef__mreadpropdef(self);
4118 var = var1;
4119 RET_LABEL:;
4120 return var;
4121 }
4122 /* method modelize_property#AAttrPropdef#mreadpropdef= for (self: AAttrPropdef, nullable MMethodDef) */
4123 void modelize_property__AAttrPropdef__mreadpropdef_61d(val* self, val* p0) {
4124 self->attrs[COLOR_modelize_property__AAttrPropdef___64dmreadpropdef].val = p0; /* @mreadpropdef on <self:AAttrPropdef> */
4125 RET_LABEL:;
4126 }
4127 /* method modelize_property#AAttrPropdef#mreadpropdef= for (self: Object, nullable MMethodDef) */
4128 void VIRTUAL_modelize_property__AAttrPropdef__mreadpropdef_61d(val* self, val* p0) {
4129 modelize_property__AAttrPropdef__mreadpropdef_61d(self, p0);
4130 RET_LABEL:;
4131 }
4132 /* method modelize_property#AAttrPropdef#mwritepropdef for (self: AAttrPropdef): nullable MMethodDef */
4133 val* modelize_property__AAttrPropdef__mwritepropdef(val* self) {
4134 val* var /* : nullable MMethodDef */;
4135 val* var1 /* : nullable MMethodDef */;
4136 var1 = self->attrs[COLOR_modelize_property__AAttrPropdef___64dmwritepropdef].val; /* @mwritepropdef on <self:AAttrPropdef> */
4137 var = var1;
4138 RET_LABEL:;
4139 return var;
4140 }
4141 /* method modelize_property#AAttrPropdef#mwritepropdef for (self: Object): nullable MMethodDef */
4142 val* VIRTUAL_modelize_property__AAttrPropdef__mwritepropdef(val* self) {
4143 val* var /* : nullable MMethodDef */;
4144 val* var1 /* : nullable MMethodDef */;
4145 var1 = modelize_property__AAttrPropdef__mwritepropdef(self);
4146 var = var1;
4147 RET_LABEL:;
4148 return var;
4149 }
4150 /* method modelize_property#AAttrPropdef#mwritepropdef= for (self: AAttrPropdef, nullable MMethodDef) */
4151 void modelize_property__AAttrPropdef__mwritepropdef_61d(val* self, val* p0) {
4152 self->attrs[COLOR_modelize_property__AAttrPropdef___64dmwritepropdef].val = p0; /* @mwritepropdef on <self:AAttrPropdef> */
4153 RET_LABEL:;
4154 }
4155 /* method modelize_property#AAttrPropdef#mwritepropdef= for (self: Object, nullable MMethodDef) */
4156 void VIRTUAL_modelize_property__AAttrPropdef__mwritepropdef_61d(val* self, val* p0) {
4157 modelize_property__AAttrPropdef__mwritepropdef_61d(self, p0);
4158 RET_LABEL:;
4159 }
4160 /* method modelize_property#AAttrPropdef#build_property for (self: AAttrPropdef, ModelBuilder, AClassdef) */
4161 void modelize_property__AAttrPropdef__build_property(val* self, val* p0, val* p1) {
4162 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4163 val* var_nclassdef /* var nclassdef: AClassdef */;
4164 val* var /* : nullable MClassDef */;
4165 val* var_mclassdef /* var mclassdef: MClassDef */;
4166 val* var1 /* : MClass */;
4167 val* var_mclass /* var mclass: MClass */;
4168 val* var2 /* : nullable TAttrid */;
4169 val* var3 /* : null */;
4170 short int var4 /* : Bool */;
4171 val* var5 /* : nullable TAttrid */;
4172 val* var6 /* : String */;
4173 val* var_name /* var name: String */;
4174 val* var7 /* : nullable TId */;
4175 val* var8 /* : String */;
4176 short int var9 /* : Bool */;
4177 val* var10 /* : MClassKind */;
4178 val* var11 /* : MClassKind */;
4179 short int var12 /* : Bool */;
4180 short int var_ /* var : Bool */;
4181 val* var13 /* : MClass */;
4182 val* var14 /* : MClassKind */;
4183 val* var15 /* : MClassKind */;
4184 short int var16 /* : Bool */;
4185 static val* varonce;
4186 val* var17 /* : String */;
4187 char* var18 /* : NativeString */;
4188 long var19 /* : Int */;
4189 val* var20 /* : String */;
4190 static val* varonce21;
4191 val* var22 /* : String */;
4192 char* var23 /* : NativeString */;
4193 long var24 /* : Int */;
4194 val* var25 /* : String */;
4195 static val* varonce26;
4196 val* var27 /* : String */;
4197 char* var28 /* : NativeString */;
4198 long var29 /* : Int */;
4199 val* var30 /* : String */;
4200 val* var31 /* : Array[Object] */;
4201 long var32 /* : Int */;
4202 val* var33 /* : NativeArray[Object] */;
4203 val* var34 /* : String */;
4204 val* var35 /* : MClassKind */;
4205 val* var36 /* : MClassKind */;
4206 short int var37 /* : Bool */;
4207 static val* varonce38;
4208 val* var39 /* : String */;
4209 char* var40 /* : NativeString */;
4210 long var41 /* : Int */;
4211 val* var42 /* : String */;
4212 static val* varonce43;
4213 val* var44 /* : String */;
4214 char* var45 /* : NativeString */;
4215 long var46 /* : Int */;
4216 val* var47 /* : String */;
4217 static val* varonce48;
4218 val* var49 /* : String */;
4219 char* var50 /* : NativeString */;
4220 long var51 /* : Int */;
4221 val* var52 /* : String */;
4222 val* var53 /* : Array[Object] */;
4223 long var54 /* : Int */;
4224 val* var55 /* : NativeArray[Object] */;
4225 val* var56 /* : String */;
4226 val* var57 /* : MClassKind */;
4227 val* var58 /* : MClassKind */;
4228 short int var59 /* : Bool */;
4229 static val* varonce60;
4230 val* var61 /* : String */;
4231 char* var62 /* : NativeString */;
4232 long var63 /* : Int */;
4233 val* var64 /* : String */;
4234 static val* varonce65;
4235 val* var66 /* : String */;
4236 char* var67 /* : NativeString */;
4237 long var68 /* : Int */;
4238 val* var69 /* : String */;
4239 static val* varonce70;
4240 val* var71 /* : String */;
4241 char* var72 /* : NativeString */;
4242 long var73 /* : Int */;
4243 val* var74 /* : String */;
4244 val* var75 /* : Array[Object] */;
4245 long var76 /* : Int */;
4246 val* var77 /* : NativeArray[Object] */;
4247 val* var78 /* : String */;
4248 val* var79 /* : nullable TAttrid */;
4249 val* var_nid /* var nid: nullable TAttrid */;
4250 val* var80 /* : null */;
4251 short int var81 /* : Bool */;
4252 val* var82 /* : nullable MProperty */;
4253 val* var_mprop /* var mprop: nullable MProperty */;
4254 val* var83 /* : null */;
4255 short int var84 /* : Bool */;
4256 val* var85 /* : AVisibility */;
4257 val* var86 /* : MVisibility */;
4258 val* var_mvisibility /* var mvisibility: MVisibility */;
4259 val* var87 /* : MAttribute */;
4260 val* var88 /* : nullable TKwredef */;
4261 short int var89 /* : Bool */;
4262 short int var90 /* : Bool */;
4263 short int var91 /* : Bool */;
4264 short int var92 /* : Bool */;
4265 int cltype;
4266 int idtype;
4267 val* var93 /* : AVisibility */;
4268 val* var94 /* : nullable TKwredef */;
4269 short int var95 /* : Bool */;
4270 short int var96 /* : Bool */;
4271 short int var97 /* : Bool */;
4272 val* var98 /* : Map[MProperty, APropdef] */;
4273 val* var99 /* : MAttributeDef */;
4274 val* var100 /* : Location */;
4275 val* var_mpropdef /* var mpropdef: MAttributeDef */;
4276 short int var101 /* : Bool */;
4277 int cltype102;
4278 int idtype103;
4279 const struct type* type_struct;
4280 const char* var_class_name;
4281 val* var104 /* : HashMap[MPropDef, APropdef] */;
4282 val* var105 /* : nullable AAble */;
4283 val* var_nreadable /* var nreadable: nullable AAble */;
4284 val* var106 /* : null */;
4285 short int var107 /* : Bool */;
4286 long var108 /* : Int */;
4287 val* var109 /* : String */;
4288 val* var_readname /* var readname: String */;
4289 val* var110 /* : nullable MProperty */;
4290 short int var111 /* : Bool */;
4291 int cltype112;
4292 int idtype113;
4293 const char* var_class_name114;
4294 val* var_mreadprop /* var mreadprop: nullable MMethod */;
4295 val* var115 /* : null */;
4296 short int var116 /* : Bool */;
4297 val* var117 /* : nullable AVisibility */;
4298 val* var118 /* : MVisibility */;
4299 val* var_mvisibility119 /* var mvisibility: MVisibility */;
4300 val* var120 /* : MMethod */;
4301 val* var121 /* : nullable TKwredef */;
4302 short int var122 /* : Bool */;
4303 short int var123 /* : Bool */;
4304 short int var124 /* : Bool */;
4305 val* var125 /* : nullable TKwredef */;
4306 short int var126 /* : Bool */;
4307 short int var127 /* : Bool */;
4308 short int var128 /* : Bool */;
4309 val* var129 /* : nullable AVisibility */;
4310 val* var130 /* : Map[MProperty, APropdef] */;
4311 val* var131 /* : MMethodDef */;
4312 val* var132 /* : Location */;
4313 val* var_mreadpropdef /* var mreadpropdef: MMethodDef */;
4314 val* var133 /* : HashMap[MPropDef, APropdef] */;
4315 val* var134 /* : nullable AAble */;
4316 val* var_nwritable /* var nwritable: nullable AAble */;
4317 val* var135 /* : null */;
4318 short int var136 /* : Bool */;
4319 long var137 /* : Int */;
4320 val* var138 /* : String */;
4321 static val* varonce139;
4322 val* var140 /* : String */;
4323 char* var141 /* : NativeString */;
4324 long var142 /* : Int */;
4325 val* var143 /* : String */;
4326 val* var144 /* : String */;
4327 val* var_writename /* var writename: String */;
4328 val* var145 /* : nullable MProperty */;
4329 short int var146 /* : Bool */;
4330 int cltype147;
4331 int idtype148;
4332 const char* var_class_name149;
4333 val* var_mwriteprop /* var mwriteprop: nullable MMethod */;
4334 val* var150 /* : null */;
4335 short int var151 /* : Bool */;
4336 val* var152 /* : nullable AVisibility */;
4337 val* var153 /* : MVisibility */;
4338 val* var_mvisibility154 /* var mvisibility: MVisibility */;
4339 val* var155 /* : MMethod */;
4340 val* var156 /* : nullable TKwredef */;
4341 short int var157 /* : Bool */;
4342 short int var158 /* : Bool */;
4343 short int var159 /* : Bool */;
4344 val* var160 /* : nullable TKwredef */;
4345 short int var161 /* : Bool */;
4346 short int var162 /* : Bool */;
4347 short int var163 /* : Bool */;
4348 val* var164 /* : nullable AVisibility */;
4349 val* var165 /* : Map[MProperty, APropdef] */;
4350 val* var166 /* : MMethodDef */;
4351 val* var167 /* : Location */;
4352 val* var_mwritepropdef /* var mwritepropdef: MMethodDef */;
4353 val* var168 /* : HashMap[MPropDef, APropdef] */;
4354 val* var169 /* : nullable TId */;
4355 val* var_nid2 /* var nid2: TId */;
4356 val* var170 /* : MAttribute */;
4357 static val* varonce171;
4358 val* var172 /* : String */;
4359 char* var173 /* : NativeString */;
4360 long var174 /* : Int */;
4361 val* var175 /* : String */;
4362 val* var176 /* : String */;
4363 val* var177 /* : MVisibility */;
4364 val* var_mprop178 /* var mprop: MAttribute */;
4365 val* var179 /* : MAttributeDef */;
4366 val* var180 /* : Location */;
4367 val* var_mpropdef181 /* var mpropdef: MAttributeDef */;
4368 short int var182 /* : Bool */;
4369 int cltype183;
4370 int idtype184;
4371 const struct type* type_struct185;
4372 const char* var_class_name186;
4373 val* var187 /* : HashMap[MPropDef, APropdef] */;
4374 val* var_readname188 /* var readname: String */;
4375 val* var189 /* : nullable MProperty */;
4376 short int var190 /* : Bool */;
4377 int cltype191;
4378 int idtype192;
4379 const char* var_class_name193;
4380 val* var_mreadprop194 /* var mreadprop: nullable MMethod */;
4381 val* var195 /* : null */;
4382 short int var196 /* : Bool */;
4383 val* var197 /* : AVisibility */;
4384 val* var198 /* : MVisibility */;
4385 val* var_mvisibility199 /* var mvisibility: MVisibility */;
4386 val* var200 /* : MMethod */;
4387 val* var201 /* : nullable TKwredef */;
4388 short int var202 /* : Bool */;
4389 short int var203 /* : Bool */;
4390 short int var204 /* : Bool */;
4391 val* var205 /* : nullable TKwredef */;
4392 short int var206 /* : Bool */;
4393 short int var207 /* : Bool */;
4394 short int var208 /* : Bool */;
4395 val* var209 /* : AVisibility */;
4396 val* var210 /* : Map[MProperty, APropdef] */;
4397 val* var211 /* : MMethodDef */;
4398 val* var212 /* : Location */;
4399 val* var_mreadpropdef213 /* var mreadpropdef: MMethodDef */;
4400 val* var214 /* : HashMap[MPropDef, APropdef] */;
4401 static val* varonce215;
4402 val* var216 /* : String */;
4403 char* var217 /* : NativeString */;
4404 long var218 /* : Int */;
4405 val* var219 /* : String */;
4406 val* var220 /* : String */;
4407 val* var_writename221 /* var writename: String */;
4408 val* var222 /* : nullable AAble */;
4409 val* var_nwritable223 /* var nwritable: nullable AAble */;
4410 val* var224 /* : nullable MProperty */;
4411 short int var225 /* : Bool */;
4412 int cltype226;
4413 int idtype227;
4414 const char* var_class_name228;
4415 val* var_mwriteprop229 /* var mwriteprop: nullable MMethod */;
4416 val* var230 /* : null */;
4417 val* var_nwkwredef /* var nwkwredef: nullable Token */;
4418 val* var231 /* : null */;
4419 short int var232 /* : Bool */;
4420 val* var233 /* : nullable TKwredef */;
4421 val* var234 /* : null */;
4422 short int var235 /* : Bool */;
4423 val* var236 /* : null */;
4424 short int var237 /* : Bool */;
4425 val* var238 /* : nullable AVisibility */;
4426 val* var239 /* : MVisibility */;
4427 val* var_mvisibility240 /* var mvisibility: nullable Object */;
4428 val* var241 /* : MVisibility */;
4429 val* var242 /* : MMethod */;
4430 short int var243 /* : Bool */;
4431 short int var244 /* : Bool */;
4432 short int var245 /* : Bool */;
4433 short int var246 /* : Bool */;
4434 short int var247 /* : Bool */;
4435 short int var248 /* : Bool */;
4436 val* var249 /* : null */;
4437 short int var250 /* : Bool */;
4438 val* var251 /* : nullable AVisibility */;
4439 val* var252 /* : Map[MProperty, APropdef] */;
4440 val* var253 /* : MMethodDef */;
4441 val* var254 /* : Location */;
4442 val* var_mwritepropdef255 /* var mwritepropdef: MMethodDef */;
4443 val* var256 /* : HashMap[MPropDef, APropdef] */;
4444 var_modelbuilder = p0;
4445 var_nclassdef = p1;
4446 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
4447 if (var == NULL) {
4448 fprintf(stderr, "Runtime error: %s", "Cast failed");
4449 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 537);
4450 show_backtrace(1);
4451 }
4452 var_mclassdef = var;
4453 var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
4454 var_mclass = var1;
4455 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
4456 var3 = NULL;
4457 if (var2 == NULL) {
4458 var4 = 0; /* is null */
4459 } else {
4460 var4 = 1; /* arg is null and recv is not */
4461 }
4462 if (var4){
4463 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
4464 if (var5 == NULL) {
4465 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4466 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 542);
4467 show_backtrace(1);
4468 } else {
4469 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_parser_nodes__Token__text]))(var5) /* text on <var5:nullable TAttrid>*/;
4470 }
4471 var_name = var6;
4472 } else {
4473 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
4474 if (var7 == NULL) {
4475 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4476 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 544);
4477 show_backtrace(1);
4478 } else {
4479 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_parser_nodes__Token__text]))(var7) /* text on <var7:nullable TId>*/;
4480 }
4481 var_name = var8;
4482 }
4483 var10 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
4484 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:AAttrPropdef>*/;
4485 var12 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var11) /* == on <var10:MClassKind>*/;
4486 var_ = var12;
4487 if (var12){
4488 var9 = var_;
4489 } else {
4490 var13 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
4491 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__kind]))(var13) /* kind on <var13:MClass>*/;
4492 var15 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:AAttrPropdef>*/;
4493 var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___61d_61d]))(var14, var15) /* == on <var14:MClassKind>*/;
4494 var9 = var16;
4495 }
4496 if (var9){
4497 if (varonce) {
4498 var17 = varonce;
4499 } else {
4500 var18 = "Error: Attempt to define attribute ";
4501 var19 = 35;
4502 var20 = string__NativeString__to_s_with_length(var18, var19);
4503 var17 = var20;
4504 varonce = var17;
4505 }
4506 if (varonce21) {
4507 var22 = varonce21;
4508 } else {
4509 var23 = " in the interface ";
4510 var24 = 18;
4511 var25 = string__NativeString__to_s_with_length(var23, var24);
4512 var22 = var25;
4513 varonce21 = var22;
4514 }
4515 if (varonce26) {
4516 var27 = varonce26;
4517 } else {
4518 var28 = ".";
4519 var29 = 1;
4520 var30 = string__NativeString__to_s_with_length(var28, var29);
4521 var27 = var30;
4522 varonce26 = var27;
4523 }
4524 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
4525 { /* var31 = array_instance Array[Object] */
4526 var32 = 5;
4527 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
4528 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var17;
4529 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var_name;
4530 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var22;
4531 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var_mclass;
4532 ((struct instance_array__NativeArray*)var33)->values[4] = (val*) var27;
4533 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
4534 }
4535 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
4536 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var34) /* error on <var_modelbuilder:ModelBuilder>*/;
4537 } else {
4538 var35 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
4539 var36 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:AAttrPropdef>*/;
4540 var37 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___61d_61d]))(var35, var36) /* == on <var35:MClassKind>*/;
4541 if (var37){
4542 if (varonce38) {
4543 var39 = varonce38;
4544 } else {
4545 var40 = "Error: Attempt to define attribute ";
4546 var41 = 35;
4547 var42 = string__NativeString__to_s_with_length(var40, var41);
4548 var39 = var42;
4549 varonce38 = var39;
4550 }
4551 if (varonce43) {
4552 var44 = varonce43;
4553 } else {
4554 var45 = " in the enum class ";
4555 var46 = 19;
4556 var47 = string__NativeString__to_s_with_length(var45, var46);
4557 var44 = var47;
4558 varonce43 = var44;
4559 }
4560 if (varonce48) {
4561 var49 = varonce48;
4562 } else {
4563 var50 = ".";
4564 var51 = 1;
4565 var52 = string__NativeString__to_s_with_length(var50, var51);
4566 var49 = var52;
4567 varonce48 = var49;
4568 }
4569 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
4570 { /* var53 = array_instance Array[Object] */
4571 var54 = 5;
4572 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
4573 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var39;
4574 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_name;
4575 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var44;
4576 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var_mclass;
4577 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var49;
4578 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
4579 }
4580 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
4581 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var56) /* error on <var_modelbuilder:ModelBuilder>*/;
4582 } else {
4583 var57 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
4584 var58 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:AAttrPropdef>*/;
4585 var59 = ((short int (*)(val*, val*))(var57->class->vft[COLOR_kernel__Object___61d_61d]))(var57, var58) /* == on <var57:MClassKind>*/;
4586 if (var59){
4587 if (varonce60) {
4588 var61 = varonce60;
4589 } else {
4590 var62 = "Error: Attempt to define attribute ";
4591 var63 = 35;
4592 var64 = string__NativeString__to_s_with_length(var62, var63);
4593 var61 = var64;
4594 varonce60 = var61;
4595 }
4596 if (varonce65) {
4597 var66 = varonce65;
4598 } else {
4599 var67 = " in the extern class ";
4600 var68 = 21;
4601 var69 = string__NativeString__to_s_with_length(var67, var68);
4602 var66 = var69;
4603 varonce65 = var66;
4604 }
4605 if (varonce70) {
4606 var71 = varonce70;
4607 } else {
4608 var72 = ".";
4609 var73 = 1;
4610 var74 = string__NativeString__to_s_with_length(var72, var73);
4611 var71 = var74;
4612 varonce70 = var71;
4613 }
4614 var75 = NEW_array__Array(&type_array__Arraykernel__Object);
4615 { /* var75 = array_instance Array[Object] */
4616 var76 = 5;
4617 var77 = NEW_array__NativeArray(var76, &type_array__NativeArraykernel__Object);
4618 ((struct instance_array__NativeArray*)var77)->values[0] = (val*) var61;
4619 ((struct instance_array__NativeArray*)var77)->values[1] = (val*) var_name;
4620 ((struct instance_array__NativeArray*)var77)->values[2] = (val*) var66;
4621 ((struct instance_array__NativeArray*)var77)->values[3] = (val*) var_mclass;
4622 ((struct instance_array__NativeArray*)var77)->values[4] = (val*) var71;
4623 ((void (*)(val*, val*, long))(var75->class->vft[COLOR_array__Array__with_native]))(var75, var77, var76) /* with_native on <var75:Array[Object]>*/;
4624 }
4625 var78 = ((val* (*)(val*))(var75->class->vft[COLOR_string__Object__to_s]))(var75) /* to_s on <var75:Array[Object]>*/;
4626 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var78) /* error on <var_modelbuilder:ModelBuilder>*/;
4627 } else {
4628 }
4629 }
4630 }
4631 var79 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
4632 var_nid = var79;
4633 var80 = NULL;
4634 if (var_nid == NULL) {
4635 var81 = 0; /* is null */
4636 } else {
4637 var81 = 1; /* arg is null and recv is not */
4638 }
4639 if (var81){
4640 var82 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid, var_mclassdef, var_name) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
4641 var_mprop = var82;
4642 var83 = NULL;
4643 if (var_mprop == NULL) {
4644 var84 = 1; /* is null */
4645 } else {
4646 var84 = 0; /* arg is null but recv is not */
4647 }
4648 if (var84){
4649 var85 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
4650 var86 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var85) /* new_property_visibility on <self:AAttrPropdef>*/;
4651 var_mvisibility = var86;
4652 var87 = NEW_model__MAttribute(&type_model__MAttribute);
4653 ((void (*)(val*, val*, val*, val*))(var87->class->vft[COLOR_model__MAttribute__init]))(var87, var_mclassdef, var_name, var_mvisibility) /* init on <var87:MAttribute>*/;
4654 var_mprop = var87;
4655 var88 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
4656 var89 = 0;
4657 var90 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var88, var89, var_mprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
4658 var91 = !var90;
4659 if (var91){
4660 goto RET_LABEL;
4661 } else {
4662 }
4663 } else {
4664 /* <var_mprop:nullable MProperty(MProperty)> isa MAttribute */
4665 cltype = type_model__MAttribute.color;
4666 idtype = type_model__MAttribute.id;
4667 if(cltype >= var_mprop->type->table_size) {
4668 var92 = 0;
4669 } else {
4670 var92 = var_mprop->type->type_table[cltype] == idtype;
4671 }
4672 if (!var92) {
4673 fprintf(stderr, "Runtime error: %s", "Assert failed");
4674 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 564);
4675 show_backtrace(1);
4676 }
4677 var93 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
4678 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var93, var_mprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
4679 var94 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
4680 var95 = 1;
4681 var96 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var94, var95, var_mprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
4682 var97 = !var96;
4683 if (var97){
4684 goto RET_LABEL;
4685 } else {
4686 }
4687 }
4688 var98 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
4689 ((void (*)(val*, val*, val*))(var98->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var98, var_mprop, self) /* []= on <var98:Map[MProperty, APropdef]>*/;
4690 var99 = NEW_model__MAttributeDef(&type_model__MAttributeDef);
4691 var100 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
4692 ((void (*)(val*, val*, val*, val*))(var99->class->vft[COLOR_model__MAttributeDef__init]))(var99, var_mclassdef, var_mprop, var100) /* init on <var99:MAttributeDef>*/;
4693 var_mpropdef = var99;
4694 /* <var_mpropdef:MAttributeDef> isa nullable MPROPDEF */
4695 type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
4696 cltype102 = type_struct->color;
4697 idtype103 = type_struct->id;
4698 if(cltype102 >= var_mpropdef->type->table_size) {
4699 var101 = 0;
4700 } else {
4701 var101 = var_mpropdef->type->type_table[cltype102] == idtype103;
4702 }
4703 if (!var101) {
4704 var_class_name = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
4705 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
4706 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 571);
4707 show_backtrace(1);
4708 }
4709 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:AAttrPropdef>*/;
4710 var104 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4711 ((void (*)(val*, val*, val*))(var104->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var104, var_mpropdef, self) /* []= on <var104:HashMap[MPropDef, APropdef]>*/;
4712 var105 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_readable]))(self) /* n_readable on <self:AAttrPropdef>*/;
4713 var_nreadable = var105;
4714 var106 = NULL;
4715 if (var_nreadable == NULL) {
4716 var107 = 0; /* is null */
4717 } else {
4718 var107 = 1; /* arg is null and recv is not */
4719 }
4720 if (var107){
4721 var108 = 1;
4722 var109 = ((val* (*)(val*, long))(var_name->class->vft[COLOR_string__AbstractString__substring_from]))(var_name, var108) /* substring_from on <var_name:String>*/;
4723 var_readname = var109;
4724 var110 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid, var_mclassdef, var_readname) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
4725 /* <var110:nullable MProperty> isa nullable MMethod */
4726 cltype112 = type_nullable_model__MMethod.color;
4727 idtype113 = type_nullable_model__MMethod.id;
4728 if(var110 == NULL) {
4729 var111 = 1;
4730 } else {
4731 if(cltype112 >= var110->type->table_size) {
4732 var111 = 0;
4733 } else {
4734 var111 = var110->type->type_table[cltype112] == idtype113;
4735 }
4736 }
4737 if (!var111) {
4738 var_class_name114 = var110 == NULL ? "null" : var110->type->name;
4739 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name114);
4740 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 577);
4741 show_backtrace(1);
4742 }
4743 var_mreadprop = var110;
4744 var115 = NULL;
4745 if (var_mreadprop == NULL) {
4746 var116 = 1; /* is null */
4747 } else {
4748 var116 = 0; /* arg is null but recv is not */
4749 }
4750 if (var116){
4751 var117 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nreadable) /* n_visibility on <var_nreadable:nullable AAble(AAble)>*/;
4752 var118 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var117) /* new_property_visibility on <self:AAttrPropdef>*/;
4753 var_mvisibility119 = var118;
4754 var120 = NEW_model__MMethod(&type_model__MMethod);
4755 ((void (*)(val*, val*, val*, val*))(var120->class->vft[COLOR_model__MMethod__init]))(var120, var_mclassdef, var_readname, var_mvisibility119) /* init on <var120:MMethod>*/;
4756 var_mreadprop = var120;
4757 var121 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nreadable) /* n_kwredef on <var_nreadable:nullable AAble(AAble)>*/;
4758 var122 = 0;
4759 var123 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var121, var122, var_mreadprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
4760 var124 = !var123;
4761 if (var124){
4762 goto RET_LABEL;
4763 } else {
4764 }
4765 } else {
4766 var125 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nreadable) /* n_kwredef on <var_nreadable:nullable AAble(AAble)>*/;
4767 var126 = 1;
4768 var127 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var125, var126, var_mreadprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
4769 var128 = !var127;
4770 if (var128){
4771 goto RET_LABEL;
4772 } else {
4773 }
4774 var129 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nreadable) /* n_visibility on <var_nreadable:nullable AAble(AAble)>*/;
4775 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var129, var_mreadprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
4776 }
4777 var130 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
4778 ((void (*)(val*, val*, val*))(var130->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var130, var_mreadprop, self) /* []= on <var130:Map[MProperty, APropdef]>*/;
4779 var131 = NEW_model__MMethodDef(&type_model__MMethodDef);
4780 var132 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
4781 ((void (*)(val*, val*, val*, val*))(var131->class->vft[COLOR_model__MMethodDef__init]))(var131, var_mclassdef, var_mreadprop, var132) /* init on <var131:MMethodDef>*/;
4782 var_mreadpropdef = var131;
4783 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef_61d]))(self, var_mreadpropdef) /* mreadpropdef= on <self:AAttrPropdef>*/;
4784 var133 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4785 ((void (*)(val*, val*, val*))(var133->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var133, var_mreadpropdef, self) /* []= on <var133:HashMap[MPropDef, APropdef]>*/;
4786 } else {
4787 }
4788 var134 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_writable]))(self) /* n_writable on <self:AAttrPropdef>*/;
4789 var_nwritable = var134;
4790 var135 = NULL;
4791 if (var_nwritable == NULL) {
4792 var136 = 0; /* is null */
4793 } else {
4794 var136 = 1; /* arg is null and recv is not */
4795 }
4796 if (var136){
4797 var137 = 1;
4798 var138 = ((val* (*)(val*, long))(var_name->class->vft[COLOR_string__AbstractString__substring_from]))(var_name, var137) /* substring_from on <var_name:String>*/;
4799 if (varonce139) {
4800 var140 = varonce139;
4801 } else {
4802 var141 = "=";
4803 var142 = 1;
4804 var143 = string__NativeString__to_s_with_length(var141, var142);
4805 var140 = var143;
4806 varonce139 = var140;
4807 }
4808 var144 = ((val* (*)(val*, val*))(var138->class->vft[COLOR_string__String___43d]))(var138, var140) /* + on <var138:String>*/;
4809 var_writename = var144;
4810 var145 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid, var_mclassdef, var_writename) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
4811 /* <var145:nullable MProperty> isa nullable MMethod */
4812 cltype147 = type_nullable_model__MMethod.color;
4813 idtype148 = type_nullable_model__MMethod.id;
4814 if(var145 == NULL) {
4815 var146 = 1;
4816 } else {
4817 if(cltype147 >= var145->type->table_size) {
4818 var146 = 0;
4819 } else {
4820 var146 = var145->type->type_table[cltype147] == idtype148;
4821 }
4822 }
4823 if (!var146) {
4824 var_class_name149 = var145 == NULL ? "null" : var145->type->name;
4825 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name149);
4826 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 596);
4827 show_backtrace(1);
4828 }
4829 var_mwriteprop = var145;
4830 var150 = NULL;
4831 if (var_mwriteprop == NULL) {
4832 var151 = 1; /* is null */
4833 } else {
4834 var151 = 0; /* arg is null but recv is not */
4835 }
4836 if (var151){
4837 var152 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable) /* n_visibility on <var_nwritable:nullable AAble(AAble)>*/;
4838 var153 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var152) /* new_property_visibility on <self:AAttrPropdef>*/;
4839 var_mvisibility154 = var153;
4840 var155 = NEW_model__MMethod(&type_model__MMethod);
4841 ((void (*)(val*, val*, val*, val*))(var155->class->vft[COLOR_model__MMethod__init]))(var155, var_mclassdef, var_writename, var_mvisibility154) /* init on <var155:MMethod>*/;
4842 var_mwriteprop = var155;
4843 var156 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable) /* n_kwredef on <var_nwritable:nullable AAble(AAble)>*/;
4844 var157 = 0;
4845 var158 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var156, var157, var_mwriteprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
4846 var159 = !var158;
4847 if (var159){
4848 goto RET_LABEL;
4849 } else {
4850 }
4851 } else {
4852 var160 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable) /* n_kwredef on <var_nwritable:nullable AAble(AAble)>*/;
4853 var161 = 1;
4854 var162 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var160, var161, var_mwriteprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
4855 var163 = !var162;
4856 if (var163){
4857 goto RET_LABEL;
4858 } else {
4859 }
4860 var164 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable) /* n_visibility on <var_nwritable:nullable AAble(AAble)>*/;
4861 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var164, var_mwriteprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
4862 }
4863 var165 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
4864 ((void (*)(val*, val*, val*))(var165->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var165, var_mwriteprop, self) /* []= on <var165:Map[MProperty, APropdef]>*/;
4865 var166 = NEW_model__MMethodDef(&type_model__MMethodDef);
4866 var167 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
4867 ((void (*)(val*, val*, val*, val*))(var166->class->vft[COLOR_model__MMethodDef__init]))(var166, var_mclassdef, var_mwriteprop, var167) /* init on <var166:MMethodDef>*/;
4868 var_mwritepropdef = var166;
4869 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef_61d]))(self, var_mwritepropdef) /* mwritepropdef= on <self:AAttrPropdef>*/;
4870 var168 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4871 ((void (*)(val*, val*, val*))(var168->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var168, var_mwritepropdef, self) /* []= on <var168:HashMap[MPropDef, APropdef]>*/;
4872 } else {
4873 }
4874 } else {
4875 var169 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
4876 if (var169 == NULL) {
4877 fprintf(stderr, "Runtime error: %s", "Cast failed");
4878 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 613);
4879 show_backtrace(1);
4880 }
4881 var_nid2 = var169;
4882 var170 = NEW_model__MAttribute(&type_model__MAttribute);
4883 if (varonce171) {
4884 var172 = varonce171;
4885 } else {
4886 var173 = "@";
4887 var174 = 1;
4888 var175 = string__NativeString__to_s_with_length(var173, var174);
4889 var172 = var175;
4890 varonce171 = var172;
4891 }
4892 var176 = ((val* (*)(val*, val*))(var172->class->vft[COLOR_string__String___43d]))(var172, var_name) /* + on <var172:String>*/;
4893 var177 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__none_visibility]))(self) /* none_visibility on <self:AAttrPropdef>*/;
4894 ((void (*)(val*, val*, val*, val*))(var170->class->vft[COLOR_model__MAttribute__init]))(var170, var_mclassdef, var176, var177) /* init on <var170:MAttribute>*/;
4895 var_mprop178 = var170;
4896 var179 = NEW_model__MAttributeDef(&type_model__MAttributeDef);
4897 var180 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
4898 ((void (*)(val*, val*, val*, val*))(var179->class->vft[COLOR_model__MAttributeDef__init]))(var179, var_mclassdef, var_mprop178, var180) /* init on <var179:MAttributeDef>*/;
4899 var_mpropdef181 = var179;
4900 /* <var_mpropdef181:MAttributeDef> isa nullable MPROPDEF */
4901 type_struct185 = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
4902 cltype183 = type_struct185->color;
4903 idtype184 = type_struct185->id;
4904 if(cltype183 >= var_mpropdef181->type->table_size) {
4905 var182 = 0;
4906 } else {
4907 var182 = var_mpropdef181->type->type_table[cltype183] == idtype184;
4908 }
4909 if (!var182) {
4910 var_class_name186 = var_mpropdef181 == NULL ? "null" : var_mpropdef181->type->name;
4911 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name186);
4912 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 616);
4913 show_backtrace(1);
4914 }
4915 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef181) /* mpropdef= on <self:AAttrPropdef>*/;
4916 var187 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4917 ((void (*)(val*, val*, val*))(var187->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var187, var_mpropdef181, self) /* []= on <var187:HashMap[MPropDef, APropdef]>*/;
4918 var_readname188 = var_name;
4919 var189 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid2, var_mclassdef, var_readname188) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
4920 /* <var189:nullable MProperty> isa nullable MMethod */
4921 cltype191 = type_nullable_model__MMethod.color;
4922 idtype192 = type_nullable_model__MMethod.id;
4923 if(var189 == NULL) {
4924 var190 = 1;
4925 } else {
4926 if(cltype191 >= var189->type->table_size) {
4927 var190 = 0;
4928 } else {
4929 var190 = var189->type->type_table[cltype191] == idtype192;
4930 }
4931 }
4932 if (!var190) {
4933 var_class_name193 = var189 == NULL ? "null" : var189->type->name;
4934 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name193);
4935 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 620);
4936 show_backtrace(1);
4937 }
4938 var_mreadprop194 = var189;
4939 var195 = NULL;
4940 if (var_mreadprop194 == NULL) {
4941 var196 = 1; /* is null */
4942 } else {
4943 var196 = 0; /* arg is null but recv is not */
4944 }
4945 if (var196){
4946 var197 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
4947 var198 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var197) /* new_property_visibility on <self:AAttrPropdef>*/;
4948 var_mvisibility199 = var198;
4949 var200 = NEW_model__MMethod(&type_model__MMethod);
4950 ((void (*)(val*, val*, val*, val*))(var200->class->vft[COLOR_model__MMethod__init]))(var200, var_mclassdef, var_readname188, var_mvisibility199) /* init on <var200:MMethod>*/;
4951 var_mreadprop194 = var200;
4952 var201 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
4953 var202 = 0;
4954 var203 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var201, var202, var_mreadprop194) /* check_redef_keyword on <self:AAttrPropdef>*/;
4955 var204 = !var203;
4956 if (var204){
4957 goto RET_LABEL;
4958 } else {
4959 }
4960 } else {
4961 var205 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
4962 var206 = 1;
4963 var207 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var205, var206, var_mreadprop194) /* check_redef_keyword on <self:AAttrPropdef>*/;
4964 var208 = !var207;
4965 if (var208){
4966 goto RET_LABEL;
4967 } else {
4968 }
4969 var209 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
4970 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var209, var_mreadprop194) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
4971 }
4972 var210 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
4973 ((void (*)(val*, val*, val*))(var210->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var210, var_mreadprop194, self) /* []= on <var210:Map[MProperty, APropdef]>*/;
4974 var211 = NEW_model__MMethodDef(&type_model__MMethodDef);
4975 var212 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
4976 ((void (*)(val*, val*, val*, val*))(var211->class->vft[COLOR_model__MMethodDef__init]))(var211, var_mclassdef, var_mreadprop194, var212) /* init on <var211:MMethodDef>*/;
4977 var_mreadpropdef213 = var211;
4978 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef_61d]))(self, var_mreadpropdef213) /* mreadpropdef= on <self:AAttrPropdef>*/;
4979 var214 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
4980 ((void (*)(val*, val*, val*))(var214->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var214, var_mreadpropdef213, self) /* []= on <var214:HashMap[MPropDef, APropdef]>*/;
4981 if (varonce215) {
4982 var216 = varonce215;
4983 } else {
4984 var217 = "=";
4985 var218 = 1;
4986 var219 = string__NativeString__to_s_with_length(var217, var218);
4987 var216 = var219;
4988 varonce215 = var216;
4989 }
4990 var220 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var216) /* + on <var_name:String>*/;
4991 var_writename221 = var220;
4992 var222 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_writable]))(self) /* n_writable on <self:AAttrPropdef>*/;
4993 var_nwritable223 = var222;
4994 var224 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid2, var_mclassdef, var_writename221) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
4995 /* <var224:nullable MProperty> isa nullable MMethod */
4996 cltype226 = type_nullable_model__MMethod.color;
4997 idtype227 = type_nullable_model__MMethod.id;
4998 if(var224 == NULL) {
4999 var225 = 1;
5000 } else {
5001 if(cltype226 >= var224->type->table_size) {
5002 var225 = 0;
5003 } else {
5004 var225 = var224->type->type_table[cltype226] == idtype227;
5005 }
5006 }
5007 if (!var225) {
5008 var_class_name228 = var224 == NULL ? "null" : var224->type->name;
5009 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name228);
5010 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 637);
5011 show_backtrace(1);
5012 }
5013 var_mwriteprop229 = var224;
5014 var230 = NULL;
5015 var_nwkwredef = var230;
5016 var231 = NULL;
5017 if (var_nwritable223 == NULL) {
5018 var232 = 0; /* is null */
5019 } else {
5020 var232 = 1; /* arg is null and recv is not */
5021 }
5022 if (var232){
5023 var233 = ((val* (*)(val*))(var_nwritable223->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable223) /* n_kwredef on <var_nwritable223:nullable AAble(AAble)>*/;
5024 var_nwkwredef = var233;
5025 } else {
5026 }
5027 var234 = NULL;
5028 if (var_mwriteprop229 == NULL) {
5029 var235 = 1; /* is null */
5030 } else {
5031 var235 = 0; /* arg is null but recv is not */
5032 }
5033 if (var235){
5034 var236 = NULL;
5035 if (var_nwritable223 == NULL) {
5036 var237 = 0; /* is null */
5037 } else {
5038 var237 = 1; /* arg is null and recv is not */
5039 }
5040 if (var237){
5041 var238 = ((val* (*)(val*))(var_nwritable223->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable223) /* n_visibility on <var_nwritable223:nullable AAble(AAble)>*/;
5042 var239 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var238) /* new_property_visibility on <self:AAttrPropdef>*/;
5043 var_mvisibility240 = var239;
5044 } else {
5045 var241 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:AAttrPropdef>*/;
5046 var_mvisibility240 = var241;
5047 }
5048 var242 = NEW_model__MMethod(&type_model__MMethod);
5049 ((void (*)(val*, val*, val*, val*))(var242->class->vft[COLOR_model__MMethod__init]))(var242, var_mclassdef, var_writename221, var_mvisibility240) /* init on <var242:MMethod>*/;
5050 var_mwriteprop229 = var242;
5051 var243 = 0;
5052 var244 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var_nwkwredef, var243, var_mwriteprop229) /* check_redef_keyword on <self:AAttrPropdef>*/;
5053 var245 = !var244;
5054 if (var245){
5055 goto RET_LABEL;
5056 } else {
5057 }
5058 } else {
5059 var246 = 1;
5060 var247 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var_nwkwredef, var246, var_mwriteprop229) /* check_redef_keyword on <self:AAttrPropdef>*/;
5061 var248 = !var247;
5062 if (var248){
5063 goto RET_LABEL;
5064 } else {
5065 }
5066 var249 = NULL;
5067 if (var_nwritable223 == NULL) {
5068 var250 = 0; /* is null */
5069 } else {
5070 var250 = 1; /* arg is null and recv is not */
5071 }
5072 if (var250){
5073 var251 = ((val* (*)(val*))(var_nwritable223->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable223) /* n_visibility on <var_nwritable223:nullable AAble(AAble)>*/;
5074 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var251, var_mwriteprop229) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
5075 } else {
5076 }
5077 }
5078 var252 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
5079 ((void (*)(val*, val*, val*))(var252->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var252, var_mwriteprop229, self) /* []= on <var252:Map[MProperty, APropdef]>*/;
5080 var253 = NEW_model__MMethodDef(&type_model__MMethodDef);
5081 var254 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
5082 ((void (*)(val*, val*, val*, val*))(var253->class->vft[COLOR_model__MMethodDef__init]))(var253, var_mclassdef, var_mwriteprop229, var254) /* init on <var253:MMethodDef>*/;
5083 var_mwritepropdef255 = var253;
5084 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef_61d]))(self, var_mwritepropdef255) /* mwritepropdef= on <self:AAttrPropdef>*/;
5085 var256 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
5086 ((void (*)(val*, val*, val*))(var256->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var256, var_mwritepropdef255, self) /* []= on <var256:HashMap[MPropDef, APropdef]>*/;
5087 }
5088 RET_LABEL:;
5089 }
5090 /* method modelize_property#AAttrPropdef#build_property for (self: Object, ModelBuilder, AClassdef) */
5091 void VIRTUAL_modelize_property__AAttrPropdef__build_property(val* self, val* p0, val* p1) {
5092 modelize_property__AAttrPropdef__build_property(self, p0, p1);
5093 RET_LABEL:;
5094 }
5095 /* method modelize_property#AAttrPropdef#build_signature for (self: AAttrPropdef, ModelBuilder, AClassdef) */
5096 void modelize_property__AAttrPropdef__build_signature(val* self, val* p0, val* p1) {
5097 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
5098 val* var_nclassdef /* var nclassdef: AClassdef */;
5099 val* var /* : nullable MPropDef */;
5100 val* var_mpropdef /* var mpropdef: nullable MAttributeDef */;
5101 val* var1 /* : null */;
5102 short int var2 /* : Bool */;
5103 val* var3 /* : MClassDef */;
5104 val* var4 /* : MModule */;
5105 val* var_mmodule /* var mmodule: MModule */;
5106 val* var5 /* : null */;
5107 val* var_mtype /* var mtype: nullable MType */;
5108 val* var6 /* : nullable AType */;
5109 val* var_ntype /* var ntype: nullable AType */;
5110 val* var7 /* : null */;
5111 short int var8 /* : Bool */;
5112 val* var9 /* : nullable MType */;
5113 val* var10 /* : null */;
5114 short int var11 /* : Bool */;
5115 val* var12 /* : nullable AExpr */;
5116 val* var_nexpr /* var nexpr: nullable AExpr */;
5117 val* var13 /* : null */;
5118 short int var14 /* : Bool */;
5119 val* var15 /* : null */;
5120 short int var16 /* : Bool */;
5121 short int var17 /* : Bool */;
5122 int cltype;
5123 int idtype;
5124 val* var18 /* : AType */;
5125 val* var19 /* : nullable MType */;
5126 short int var20 /* : Bool */;
5127 int cltype21;
5128 int idtype22;
5129 static val* varonce;
5130 val* var23 /* : String */;
5131 char* var24 /* : NativeString */;
5132 long var25 /* : Int */;
5133 val* var26 /* : String */;
5134 val* var27 /* : nullable MClass */;
5135 val* var_cla /* var cla: nullable MClass */;
5136 val* var28 /* : null */;
5137 short int var29 /* : Bool */;
5138 val* var30 /* : MClassType */;
5139 short int var31 /* : Bool */;
5140 int cltype32;
5141 int idtype33;
5142 static val* varonce34;
5143 val* var35 /* : String */;
5144 char* var36 /* : NativeString */;
5145 long var37 /* : Int */;
5146 val* var38 /* : String */;
5147 val* var39 /* : nullable MClass */;
5148 val* var_cla40 /* var cla: nullable MClass */;
5149 val* var41 /* : null */;
5150 short int var42 /* : Bool */;
5151 val* var43 /* : MClassType */;
5152 short int var44 /* : Bool */;
5153 int cltype45;
5154 int idtype46;
5155 static val* varonce47;
5156 val* var48 /* : String */;
5157 char* var49 /* : NativeString */;
5158 long var50 /* : Int */;
5159 val* var51 /* : String */;
5160 val* var52 /* : nullable MClass */;
5161 val* var_cla53 /* var cla: nullable MClass */;
5162 val* var54 /* : null */;
5163 short int var55 /* : Bool */;
5164 val* var56 /* : MClassType */;
5165 short int var57 /* : Bool */;
5166 int cltype58;
5167 int idtype59;
5168 static val* varonce60;
5169 val* var61 /* : String */;
5170 char* var62 /* : NativeString */;
5171 long var63 /* : Int */;
5172 val* var64 /* : String */;
5173 val* var65 /* : nullable MClass */;
5174 val* var_cla66 /* var cla: nullable MClass */;
5175 val* var67 /* : null */;
5176 short int var68 /* : Bool */;
5177 val* var69 /* : MClassType */;
5178 short int var70 /* : Bool */;
5179 int cltype71;
5180 int idtype72;
5181 static val* varonce73;
5182 val* var74 /* : String */;
5183 char* var75 /* : NativeString */;
5184 long var76 /* : Int */;
5185 val* var77 /* : String */;
5186 val* var78 /* : nullable MClass */;
5187 val* var_cla79 /* var cla: nullable MClass */;
5188 val* var80 /* : null */;
5189 short int var81 /* : Bool */;
5190 val* var82 /* : MClassType */;
5191 short int var83 /* : Bool */;
5192 int cltype84;
5193 int idtype85;
5194 static val* varonce86;
5195 val* var87 /* : String */;
5196 char* var88 /* : NativeString */;
5197 long var89 /* : Int */;
5198 val* var90 /* : String */;
5199 val* var91 /* : nullable MClass */;
5200 val* var_cla92 /* var cla: nullable MClass */;
5201 val* var93 /* : null */;
5202 short int var94 /* : Bool */;
5203 val* var95 /* : MClassType */;
5204 static val* varonce96;
5205 val* var97 /* : String */;
5206 char* var98 /* : NativeString */;
5207 long var99 /* : Int */;
5208 val* var100 /* : String */;
5209 static val* varonce101;
5210 val* var102 /* : String */;
5211 char* var103 /* : NativeString */;
5212 long var104 /* : Int */;
5213 val* var105 /* : String */;
5214 val* var106 /* : Array[Object] */;
5215 long var107 /* : Int */;
5216 val* var108 /* : NativeArray[Object] */;
5217 val* var109 /* : String */;
5218 static val* varonce110;
5219 val* var111 /* : String */;
5220 char* var112 /* : NativeString */;
5221 long var113 /* : Int */;
5222 val* var114 /* : String */;
5223 val* var115 /* : Array[Object] */;
5224 long var116 /* : Int */;
5225 val* var117 /* : NativeArray[Object] */;
5226 val* var118 /* : String */;
5227 val* var119 /* : null */;
5228 short int var120 /* : Bool */;
5229 short int var121 /* : Bool */;
5230 int cltype122;
5231 int idtype123;
5232 val* var124 /* : AType */;
5233 val* var125 /* : nullable MType */;
5234 val* var_xmtype /* var xmtype: nullable MType */;
5235 short int var126 /* : Bool */;
5236 short int var127 /* : Bool */;
5237 short int var_ /* var : Bool */;
5238 val* var128 /* : ToolContext */;
5239 val* var129 /* : OptionCount */;
5240 val* var130 /* : nullable Object */;
5241 long var131 /* : Int */;
5242 short int var132 /* : Bool */;
5243 short int var134 /* : Bool */;
5244 int cltype135;
5245 int idtype136;
5246 const char* var_class_name;
5247 long var137 /* : Int */;
5248 short int var138 /* : Bool */;
5249 static val* varonce139;
5250 val* var140 /* : String */;
5251 char* var141 /* : NativeString */;
5252 long var142 /* : Int */;
5253 val* var143 /* : String */;
5254 val* var144 /* : null */;
5255 short int var145 /* : Bool */;
5256 val* var146 /* : nullable MMethodDef */;
5257 val* var_mreadpropdef /* var mreadpropdef: nullable MMethodDef */;
5258 val* var147 /* : null */;
5259 short int var148 /* : Bool */;
5260 val* var149 /* : MSignature */;
5261 val* var150 /* : Array[MParameter] */;
5262 val* var_msignature /* var msignature: MSignature */;
5263 val* var151 /* : nullable MMethodDef */;
5264 val* var_msritepropdef /* var msritepropdef: nullable MMethodDef */;
5265 val* var152 /* : nullable MMethodDef */;
5266 val* var153 /* : null */;
5267 short int var154 /* : Bool */;
5268 val* var155 /* : nullable TAttrid */;
5269 val* var156 /* : null */;
5270 short int var157 /* : Bool */;
5271 val* var158 /* : nullable TAttrid */;
5272 val* var159 /* : String */;
5273 long var160 /* : Int */;
5274 val* var161 /* : String */;
5275 val* var_name /* var name: String */;
5276 val* var162 /* : nullable TId */;
5277 val* var163 /* : String */;
5278 val* var164 /* : MParameter */;
5279 short int var165 /* : Bool */;
5280 val* var_mparameter /* var mparameter: MParameter */;
5281 val* var166 /* : MSignature */;
5282 val* var167 /* : Array[MParameter] */;
5283 long var168 /* : Int */;
5284 val* var_169 /* var : Array[MParameter] */;
5285 val* var170 /* : null */;
5286 val* var_msignature171 /* var msignature: MSignature */;
5287 val* var172 /* : nullable MMethodDef */;
5288 var_modelbuilder = p0;
5289 var_nclassdef = p1;
5290 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
5291 var_mpropdef = var;
5292 var1 = NULL;
5293 if (var_mpropdef == NULL) {
5294 var2 = 1; /* is null */
5295 } else {
5296 var2 = 0; /* arg is null but recv is not */
5297 }
5298 if (var2){
5299 goto RET_LABEL;
5300 } else {
5301 }
5302 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:nullable MAttributeDef(MAttributeDef)>*/;
5303 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
5304 var_mmodule = var4;
5305 var5 = NULL;
5306 var_mtype = var5;
5307 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(self) /* n_type on <self:AAttrPropdef>*/;
5308 var_ntype = var6;
5309 var7 = NULL;
5310 if (var_ntype == NULL) {
5311 var8 = 0; /* is null */
5312 } else {
5313 var8 = 1; /* arg is null and recv is not */
5314 }
5315 if (var8){
5316 var9 = ((val* (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var_modelbuilder, var_nclassdef, var_ntype) /* resolve_mtype on <var_modelbuilder:ModelBuilder>*/;
5317 var_mtype = var9;
5318 var10 = NULL;
5319 if (var_mtype == NULL) {
5320 var11 = 1; /* is null */
5321 } else {
5322 var11 = 0; /* arg is null but recv is not */
5323 }
5324 if (var11){
5325 goto RET_LABEL;
5326 } else {
5327 }
5328 } else {
5329 }
5330 var12 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_expr]))(self) /* n_expr on <self:AAttrPropdef>*/;
5331 var_nexpr = var12;
5332 var13 = NULL;
5333 if (var_mtype == NULL) {
5334 var14 = 1; /* is null */
5335 } else {
5336 var14 = 0; /* arg is null but recv is not */
5337 }
5338 if (var14){
5339 var15 = NULL;
5340 if (var_nexpr == NULL) {
5341 var16 = 0; /* is null */
5342 } else {
5343 var16 = 1; /* arg is null and recv is not */
5344 }
5345 if (var16){
5346 /* <var_nexpr:nullable AExpr(AExpr)> isa ANewExpr */
5347 cltype = type_parser_nodes__ANewExpr.color;
5348 idtype = type_parser_nodes__ANewExpr.id;
5349 if(cltype >= var_nexpr->type->table_size) {
5350 var17 = 0;
5351 } else {
5352 var17 = var_nexpr->type->type_table[cltype] == idtype;
5353 }
5354 if (var17){
5355 var18 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_parser_nodes__ANewExpr__n_type]))(var_nexpr) /* n_type on <var_nexpr:nullable AExpr(ANewExpr)>*/;
5356 var19 = ((val* (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var_modelbuilder, var_nclassdef, var18) /* resolve_mtype on <var_modelbuilder:ModelBuilder>*/;
5357 var_mtype = var19;
5358 } else {
5359 /* <var_nexpr:nullable AExpr(AExpr)> isa AIntExpr */
5360 cltype21 = type_parser_nodes__AIntExpr.color;
5361 idtype22 = type_parser_nodes__AIntExpr.id;
5362 if(cltype21 >= var_nexpr->type->table_size) {
5363 var20 = 0;
5364 } else {
5365 var20 = var_nexpr->type->type_table[cltype21] == idtype22;
5366 }
5367 if (var20){
5368 if (varonce) {
5369 var23 = varonce;
5370 } else {
5371 var24 = "Int";
5372 var25 = 3;
5373 var26 = string__NativeString__to_s_with_length(var24, var25);
5374 var23 = var26;
5375 varonce = var23;
5376 }
5377 var27 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var_modelbuilder, var_nexpr, var_mmodule, var23) /* try_get_mclass_by_name on <var_modelbuilder:ModelBuilder>*/;
5378 var_cla = var27;
5379 var28 = NULL;
5380 if (var_cla == NULL) {
5381 var29 = 0; /* is null */
5382 } else {
5383 var29 = 1; /* arg is null and recv is not */
5384 }
5385 if (var29){
5386 var30 = ((val* (*)(val*))(var_cla->class->vft[COLOR_model__MClass__mclass_type]))(var_cla) /* mclass_type on <var_cla:nullable MClass(MClass)>*/;
5387 var_mtype = var30;
5388 } else {
5389 }
5390 } else {
5391 /* <var_nexpr:nullable AExpr(AExpr)> isa AFloatExpr */
5392 cltype32 = type_parser_nodes__AFloatExpr.color;
5393 idtype33 = type_parser_nodes__AFloatExpr.id;
5394 if(cltype32 >= var_nexpr->type->table_size) {
5395 var31 = 0;
5396 } else {
5397 var31 = var_nexpr->type->type_table[cltype32] == idtype33;
5398 }
5399 if (var31){
5400 if (varonce34) {
5401 var35 = varonce34;
5402 } else {
5403 var36 = "Float";
5404 var37 = 5;
5405 var38 = string__NativeString__to_s_with_length(var36, var37);
5406 var35 = var38;
5407 varonce34 = var35;
5408 }
5409 var39 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var_modelbuilder, var_nexpr, var_mmodule, var35) /* try_get_mclass_by_name on <var_modelbuilder:ModelBuilder>*/;
5410 var_cla40 = var39;
5411 var41 = NULL;
5412 if (var_cla40 == NULL) {
5413 var42 = 0; /* is null */
5414 } else {
5415 var42 = 1; /* arg is null and recv is not */
5416 }
5417 if (var42){
5418 var43 = ((val* (*)(val*))(var_cla40->class->vft[COLOR_model__MClass__mclass_type]))(var_cla40) /* mclass_type on <var_cla40:nullable MClass(MClass)>*/;
5419 var_mtype = var43;
5420 } else {
5421 }
5422 } else {
5423 /* <var_nexpr:nullable AExpr(AExpr)> isa ACharExpr */
5424 cltype45 = type_parser_nodes__ACharExpr.color;
5425 idtype46 = type_parser_nodes__ACharExpr.id;
5426 if(cltype45 >= var_nexpr->type->table_size) {
5427 var44 = 0;
5428 } else {
5429 var44 = var_nexpr->type->type_table[cltype45] == idtype46;
5430 }
5431 if (var44){
5432 if (varonce47) {
5433 var48 = varonce47;
5434 } else {
5435 var49 = "Char";
5436 var50 = 4;
5437 var51 = string__NativeString__to_s_with_length(var49, var50);
5438 var48 = var51;
5439 varonce47 = var48;
5440 }
5441 var52 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var_modelbuilder, var_nexpr, var_mmodule, var48) /* try_get_mclass_by_name on <var_modelbuilder:ModelBuilder>*/;
5442 var_cla53 = var52;
5443 var54 = NULL;
5444 if (var_cla53 == NULL) {
5445 var55 = 0; /* is null */
5446 } else {
5447 var55 = 1; /* arg is null and recv is not */
5448 }
5449 if (var55){
5450 var56 = ((val* (*)(val*))(var_cla53->class->vft[COLOR_model__MClass__mclass_type]))(var_cla53) /* mclass_type on <var_cla53:nullable MClass(MClass)>*/;
5451 var_mtype = var56;
5452 } else {
5453 }
5454 } else {
5455 /* <var_nexpr:nullable AExpr(AExpr)> isa ABoolExpr */
5456 cltype58 = type_parser_nodes__ABoolExpr.color;
5457 idtype59 = type_parser_nodes__ABoolExpr.id;
5458 if(cltype58 >= var_nexpr->type->table_size) {
5459 var57 = 0;
5460 } else {
5461 var57 = var_nexpr->type->type_table[cltype58] == idtype59;
5462 }
5463 if (var57){
5464 if (varonce60) {
5465 var61 = varonce60;
5466 } else {
5467 var62 = "Bool";
5468 var63 = 4;
5469 var64 = string__NativeString__to_s_with_length(var62, var63);
5470 var61 = var64;
5471 varonce60 = var61;
5472 }
5473 var65 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var_modelbuilder, var_nexpr, var_mmodule, var61) /* try_get_mclass_by_name on <var_modelbuilder:ModelBuilder>*/;
5474 var_cla66 = var65;
5475 var67 = NULL;
5476 if (var_cla66 == NULL) {
5477 var68 = 0; /* is null */
5478 } else {
5479 var68 = 1; /* arg is null and recv is not */
5480 }
5481 if (var68){
5482 var69 = ((val* (*)(val*))(var_cla66->class->vft[COLOR_model__MClass__mclass_type]))(var_cla66) /* mclass_type on <var_cla66:nullable MClass(MClass)>*/;
5483 var_mtype = var69;
5484 } else {
5485 }
5486 } else {
5487 /* <var_nexpr:nullable AExpr(AExpr)> isa ASuperstringExpr */
5488 cltype71 = type_parser_nodes__ASuperstringExpr.color;
5489 idtype72 = type_parser_nodes__ASuperstringExpr.id;
5490 if(cltype71 >= var_nexpr->type->table_size) {
5491 var70 = 0;
5492 } else {
5493 var70 = var_nexpr->type->type_table[cltype71] == idtype72;
5494 }
5495 if (var70){
5496 if (varonce73) {
5497 var74 = varonce73;
5498 } else {
5499 var75 = "String";
5500 var76 = 6;
5501 var77 = string__NativeString__to_s_with_length(var75, var76);
5502 var74 = var77;
5503 varonce73 = var74;
5504 }
5505 var78 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var_modelbuilder, var_nexpr, var_mmodule, var74) /* try_get_mclass_by_name on <var_modelbuilder:ModelBuilder>*/;
5506 var_cla79 = var78;
5507 var80 = NULL;
5508 if (var_cla79 == NULL) {
5509 var81 = 0; /* is null */
5510 } else {
5511 var81 = 1; /* arg is null and recv is not */
5512 }
5513 if (var81){
5514 var82 = ((val* (*)(val*))(var_cla79->class->vft[COLOR_model__MClass__mclass_type]))(var_cla79) /* mclass_type on <var_cla79:nullable MClass(MClass)>*/;
5515 var_mtype = var82;
5516 } else {
5517 }
5518 } else {
5519 /* <var_nexpr:nullable AExpr(AExpr)> isa AStringFormExpr */
5520 cltype84 = type_parser_nodes__AStringFormExpr.color;
5521 idtype85 = type_parser_nodes__AStringFormExpr.id;
5522 if(cltype84 >= var_nexpr->type->table_size) {
5523 var83 = 0;
5524 } else {
5525 var83 = var_nexpr->type->type_table[cltype84] == idtype85;
5526 }
5527 if (var83){
5528 if (varonce86) {
5529 var87 = varonce86;
5530 } else {
5531 var88 = "String";
5532 var89 = 6;
5533 var90 = string__NativeString__to_s_with_length(var88, var89);
5534 var87 = var90;
5535 varonce86 = var87;
5536 }
5537 var91 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(var_modelbuilder, var_nexpr, var_mmodule, var87) /* try_get_mclass_by_name on <var_modelbuilder:ModelBuilder>*/;
5538 var_cla92 = var91;
5539 var93 = NULL;
5540 if (var_cla92 == NULL) {
5541 var94 = 0; /* is null */
5542 } else {
5543 var94 = 1; /* arg is null and recv is not */
5544 }
5545 if (var94){
5546 var95 = ((val* (*)(val*))(var_cla92->class->vft[COLOR_model__MClass__mclass_type]))(var_cla92) /* mclass_type on <var_cla92:nullable MClass(MClass)>*/;
5547 var_mtype = var95;
5548 } else {
5549 }
5550 } else {
5551 if (varonce96) {
5552 var97 = varonce96;
5553 } else {
5554 var98 = "Error: Untyped attribute ";
5555 var99 = 25;
5556 var100 = string__NativeString__to_s_with_length(var98, var99);
5557 var97 = var100;
5558 varonce96 = var97;
5559 }
5560 if (varonce101) {
5561 var102 = varonce101;
5562 } else {
5563 var103 = ". Implicit typing allowed only for literals and new.";
5564 var104 = 52;
5565 var105 = string__NativeString__to_s_with_length(var103, var104);
5566 var102 = var105;
5567 varonce101 = var102;
5568 }
5569 var106 = NEW_array__Array(&type_array__Arraykernel__Object);
5570 { /* var106 = array_instance Array[Object] */
5571 var107 = 3;
5572 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
5573 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var97;
5574 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var_mpropdef;
5575 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var102;
5576 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
5577 }
5578 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
5579 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var109) /* error on <var_modelbuilder:ModelBuilder>*/;
5580 }
5581 }
5582 }
5583 }
5584 }
5585 }
5586 }
5587 } else {
5588 if (varonce110) {
5589 var111 = varonce110;
5590 } else {
5591 var112 = "Error: Untyped attribute ";
5592 var113 = 25;
5593 var114 = string__NativeString__to_s_with_length(var112, var113);
5594 var111 = var114;
5595 varonce110 = var111;
5596 }
5597 var115 = NEW_array__Array(&type_array__Arraykernel__Object);
5598 { /* var115 = array_instance Array[Object] */
5599 var116 = 2;
5600 var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
5601 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var111;
5602 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_mpropdef;
5603 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
5604 }
5605 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
5606 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var118) /* error on <var_modelbuilder:ModelBuilder>*/;
5607 }
5608 } else {
5609 var119 = NULL;
5610 if (var_ntype == NULL) {
5611 var120 = 0; /* is null */
5612 } else {
5613 var120 = 1; /* arg is null and recv is not */
5614 }
5615 if (!var120) {
5616 fprintf(stderr, "Runtime error: %s", "Assert failed");
5617 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 707);
5618 show_backtrace(1);
5619 }
5620 /* <var_nexpr:nullable AExpr> isa ANewExpr */
5621 cltype122 = type_parser_nodes__ANewExpr.color;
5622 idtype123 = type_parser_nodes__ANewExpr.id;
5623 if(var_nexpr == NULL) {
5624 var121 = 0;
5625 } else {
5626 if(cltype122 >= var_nexpr->type->table_size) {
5627 var121 = 0;
5628 } else {
5629 var121 = var_nexpr->type->type_table[cltype122] == idtype123;
5630 }
5631 }
5632 if (var121){
5633 var124 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_parser_nodes__ANewExpr__n_type]))(var_nexpr) /* n_type on <var_nexpr:nullable AExpr(ANewExpr)>*/;
5634 var125 = ((val* (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var_modelbuilder, var_nclassdef, var124) /* resolve_mtype on <var_modelbuilder:ModelBuilder>*/;
5635 var_xmtype = var125;
5636 if (var_xmtype == NULL) {
5637 var127 = 0; /* <var_mtype:nullable MType(MType)> cannot be null */
5638 } else {
5639 var127 = ((short int (*)(val*, val*))(var_xmtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_xmtype, var_mtype) /* == on <var_xmtype:nullable MType>*/;
5640 }
5641 var_ = var127;
5642 if (var127){
5643 var128 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
5644 var129 = ((val* (*)(val*))(var128->class->vft[COLOR_toolcontext__ToolContext__opt_warn]))(var128) /* opt_warn on <var128:ToolContext>*/;
5645 var130 = ((val* (*)(val*))(var129->class->vft[COLOR_opts__Option__value]))(var129) /* value on <var129:OptionCount>*/;
5646 var131 = 2;
5647 { /* Inline kernel#Int#>= (var130,var131) */
5648 /* Covariant cast for argument 0 (i) <var131:Int> isa OTHER */
5649 /* <var131:Int> isa OTHER */
5650 var134 = 1; /* easy <var131:Int> isa OTHER*/
5651 if (!var134) {
5652 var_class_name = type_kernel__Int.name;
5653 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5654 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
5655 show_backtrace(1);
5656 }
5657 var137 = ((struct instance_kernel__Int*)var130)->value; /* autounbox from nullable Object to Int */;
5658 var138 = var137 >= var131;
5659 var132 = var138;
5660 goto RET_LABEL133;
5661 RET_LABEL133:(void)0;
5662 }
5663 var126 = var132;
5664 } else {
5665 var126 = var_;
5666 }
5667 if (var126){
5668 if (varonce139) {
5669 var140 = varonce139;
5670 } else {
5671 var141 = "Warning: useless type definition";
5672 var142 = 32;
5673 var143 = string__NativeString__to_s_with_length(var141, var142);
5674 var140 = var143;
5675 varonce139 = var140;
5676 }
5677 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var_modelbuilder, var_ntype, var140) /* warning on <var_modelbuilder:ModelBuilder>*/;
5678 } else {
5679 }
5680 } else {
5681 }
5682 }
5683 var144 = NULL;
5684 if (var_mtype == NULL) {
5685 var145 = 1; /* is null */
5686 } else {
5687 var145 = 0; /* arg is null but recv is not */
5688 }
5689 if (var145){
5690 goto RET_LABEL;
5691 } else {
5692 }
5693 ((void (*)(val*, val*))(var_mpropdef->class->vft[COLOR_model__MAttributeDef__static_mtype_61d]))(var_mpropdef, var_mtype) /* static_mtype= on <var_mpropdef:nullable MAttributeDef(MAttributeDef)>*/;
5694 var146 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef]))(self) /* mreadpropdef on <self:AAttrPropdef>*/;
5695 var_mreadpropdef = var146;
5696 var147 = NULL;
5697 if (var_mreadpropdef == NULL) {
5698 var148 = 0; /* is null */
5699 } else {
5700 var148 = 1; /* arg is null and recv is not */
5701 }
5702 if (var148){
5703 var149 = NEW_model__MSignature(&type_model__MSignature);
5704 var150 = NEW_array__Array(&type_array__Arraymodel__MParameter);
5705 ((void (*)(val*))(var150->class->vft[COLOR_array__Array__init]))(var150) /* init on <var150:Array[MParameter]>*/;
5706 ((void (*)(val*, val*, val*))(var149->class->vft[COLOR_model__MSignature__init]))(var149, var150, var_mtype) /* init on <var149:MSignature>*/;
5707 var_msignature = var149;
5708 ((void (*)(val*, val*))(var_mreadpropdef->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mreadpropdef, var_msignature) /* msignature= on <var_mreadpropdef:nullable MMethodDef(MMethodDef)>*/;
5709 } else {
5710 }
5711 var151 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef]))(self) /* mwritepropdef on <self:AAttrPropdef>*/;
5712 var_msritepropdef = var151;
5713 var152 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef]))(self) /* mwritepropdef on <self:AAttrPropdef>*/;
5714 var153 = NULL;
5715 if (var152 == NULL) {
5716 var154 = 0; /* is null */
5717 } else {
5718 var154 = 1; /* arg is null and recv is not */
5719 }
5720 if (var154){
5721 var155 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
5722 var156 = NULL;
5723 if (var155 == NULL) {
5724 var157 = 0; /* is null */
5725 } else {
5726 var157 = 1; /* arg is null and recv is not */
5727 }
5728 if (var157){
5729 var158 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
5730 if (var158 == NULL) {
5731 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5732 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 730);
5733 show_backtrace(1);
5734 } else {
5735 var159 = ((val* (*)(val*))(var158->class->vft[COLOR_parser_nodes__Token__text]))(var158) /* text on <var158:nullable TAttrid>*/;
5736 }
5737 var160 = 1;
5738 var161 = ((val* (*)(val*, long))(var159->class->vft[COLOR_string__AbstractString__substring_from]))(var159, var160) /* substring_from on <var159:String>*/;
5739 var_name = var161;
5740 } else {
5741 var162 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
5742 if (var162 == NULL) {
5743 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5744 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 732);
5745 show_backtrace(1);
5746 } else {
5747 var163 = ((val* (*)(val*))(var162->class->vft[COLOR_parser_nodes__Token__text]))(var162) /* text on <var162:nullable TId>*/;
5748 }
5749 var_name = var163;
5750 }
5751 var164 = NEW_model__MParameter(&type_model__MParameter);
5752 var165 = 0;
5753 ((void (*)(val*, val*, val*, short int))(var164->class->vft[COLOR_model__MParameter__init]))(var164, var_name, var_mtype, var165) /* init on <var164:MParameter>*/;
5754 var_mparameter = var164;
5755 var166 = NEW_model__MSignature(&type_model__MSignature);
5756 var167 = NEW_array__Array(&type_array__Arraymodel__MParameter);
5757 var168 = 1;
5758 ((void (*)(val*, long))(var167->class->vft[COLOR_array__Array__with_capacity]))(var167, var168) /* with_capacity on <var167:Array[MParameter]>*/;
5759 var_169 = var167;
5760 ((void (*)(val*, val*))(var_169->class->vft[COLOR_abstract_collection__Sequence__push]))(var_169, var_mparameter) /* push on <var_169:Array[MParameter]>*/;
5761 var170 = NULL;
5762 ((void (*)(val*, val*, val*))(var166->class->vft[COLOR_model__MSignature__init]))(var166, var_169, var170) /* init on <var166:MSignature>*/;
5763 var_msignature171 = var166;
5764 var172 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef]))(self) /* mwritepropdef on <self:AAttrPropdef>*/;
5765 if (var172 == NULL) {
5766 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5767 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 736);
5768 show_backtrace(1);
5769 } else {
5770 ((void (*)(val*, val*))(var172->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var172, var_msignature171) /* msignature= on <var172:nullable MMethodDef>*/;
5771 }
5772 } else {
5773 }
5774 RET_LABEL:;
5775 }
5776 /* method modelize_property#AAttrPropdef#build_signature for (self: Object, ModelBuilder, AClassdef) */
5777 void VIRTUAL_modelize_property__AAttrPropdef__build_signature(val* self, val* p0, val* p1) {
5778 modelize_property__AAttrPropdef__build_signature(self, p0, p1);
5779 RET_LABEL:;
5780 }
5781 /* method modelize_property#AAttrPropdef#check_signature for (self: AAttrPropdef, ModelBuilder, AClassdef) */
5782 void modelize_property__AAttrPropdef__check_signature(val* self, val* p0, val* p1) {
5783 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
5784 val* var_nclassdef /* var nclassdef: AClassdef */;
5785 val* var /* : nullable MPropDef */;
5786 val* var_mpropdef /* var mpropdef: nullable MAttributeDef */;
5787 val* var1 /* : null */;
5788 short int var2 /* : Bool */;
5789 val* var3 /* : MClassDef */;
5790 val* var4 /* : MModule */;
5791 val* var_mmodule /* var mmodule: MModule */;
5792 val* var5 /* : nullable AType */;
5793 val* var_ntype /* var ntype: nullable AType */;
5794 val* var6 /* : nullable MPropDef */;
5795 val* var7 /* : nullable MType */;
5796 val* var_mtype /* var mtype: nullable MType */;
5797 val* var8 /* : null */;
5798 short int var9 /* : Bool */;
5799 short int var10 /* : Bool */;
5800 short int var11 /* : Bool */;
5801 val* var12 /* : MProperty */;
5802 val* var13 /* : MPropDef */;
5803 val* var14 /* : nullable MType */;
5804 val* var_precursor_type /* var precursor_type: nullable MType */;
5805 val* var15 /* : null */;
5806 short int var16 /* : Bool */;
5807 short int var17 /* : Bool */;
5808 static val* varonce;
5809 val* var18 /* : String */;
5810 char* var19 /* : NativeString */;
5811 long var20 /* : Int */;
5812 val* var21 /* : String */;
5813 static val* varonce22;
5814 val* var23 /* : String */;
5815 char* var24 /* : NativeString */;
5816 long var25 /* : Int */;
5817 val* var26 /* : String */;
5818 static val* varonce27;
5819 val* var28 /* : String */;
5820 char* var29 /* : NativeString */;
5821 long var30 /* : Int */;
5822 val* var31 /* : String */;
5823 val* var32 /* : Array[Object] */;
5824 long var33 /* : Int */;
5825 val* var34 /* : NativeArray[Object] */;
5826 val* var35 /* : String */;
5827 val* var36 /* : nullable MMethodDef */;
5828 val* var_meth /* var meth: nullable MMethodDef */;
5829 val* var37 /* : null */;
5830 short int var38 /* : Bool */;
5831 val* var39 /* : nullable MMethodDef */;
5832 val* var40 /* : null */;
5833 short int var41 /* : Bool */;
5834 var_modelbuilder = p0;
5835 var_nclassdef = p1;
5836 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
5837 var_mpropdef = var;
5838 var1 = NULL;
5839 if (var_mpropdef == NULL) {
5840 var2 = 1; /* is null */
5841 } else {
5842 var2 = 0; /* arg is null but recv is not */
5843 }
5844 if (var2){
5845 goto RET_LABEL;
5846 } else {
5847 }
5848 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:nullable MAttributeDef(MAttributeDef)>*/;
5849 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
5850 var_mmodule = var4;
5851 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(self) /* n_type on <self:AAttrPropdef>*/;
5852 var_ntype = var5;
5853 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
5854 if (var6 == NULL) {
5855 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5856 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 746);
5857 show_backtrace(1);
5858 } else {
5859 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var6) /* static_mtype on <var6:nullable MPropDef(nullable MAttributeDef)>*/;
5860 }
5861 var_mtype = var7;
5862 var8 = NULL;
5863 if (var_mtype == NULL) {
5864 var9 = 1; /* is null */
5865 } else {
5866 var9 = 0; /* arg is null but recv is not */
5867 }
5868 if (var9){
5869 goto RET_LABEL;
5870 } else {
5871 }
5872 var10 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:nullable MAttributeDef(MAttributeDef)>*/;
5873 var11 = !var10;
5874 if (var11){
5875 var12 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MAttributeDef(MAttributeDef)>*/;
5876 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MProperty__intro]))(var12) /* intro on <var12:MProperty(MAttribute)>*/;
5877 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var13) /* static_mtype on <var13:MPropDef(MAttributeDef)>*/;
5878 var_precursor_type = var14;
5879 var15 = NULL;
5880 if (var_precursor_type == NULL) {
5881 var16 = 1; /* is null */
5882 } else {
5883 var16 = 0; /* arg is null but recv is not */
5884 }
5885 if (var16){
5886 goto RET_LABEL;
5887 } else {
5888 }
5889 var17 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___33d_61d]))(var_mtype, var_precursor_type) /* != on <var_mtype:nullable MType(MType)>*/;
5890 if (var17){
5891 if (var_ntype == NULL) {
5892 fprintf(stderr, "Runtime error: %s", "Cast failed");
5893 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 756);
5894 show_backtrace(1);
5895 }
5896 if (varonce) {
5897 var18 = varonce;
5898 } else {
5899 var19 = "Redef Error: Wrong static type. found ";
5900 var20 = 38;
5901 var21 = string__NativeString__to_s_with_length(var19, var20);
5902 var18 = var21;
5903 varonce = var18;
5904 }
5905 if (varonce22) {
5906 var23 = varonce22;
5907 } else {
5908 var24 = ", expected ";
5909 var25 = 11;
5910 var26 = string__NativeString__to_s_with_length(var24, var25);
5911 var23 = var26;
5912 varonce22 = var23;
5913 }
5914 if (varonce27) {
5915 var28 = varonce27;
5916 } else {
5917 var29 = ".";
5918 var30 = 1;
5919 var31 = string__NativeString__to_s_with_length(var29, var30);
5920 var28 = var31;
5921 varonce27 = var28;
5922 }
5923 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
5924 { /* var32 = array_instance Array[Object] */
5925 var33 = 5;
5926 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
5927 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var18;
5928 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_mtype;
5929 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
5930 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_precursor_type;
5931 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
5932 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
5933 }
5934 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
5935 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_ntype, var35) /* error on <var_modelbuilder:ModelBuilder>*/;
5936 goto RET_LABEL;
5937 } else {
5938 }
5939 } else {
5940 }
5941 var36 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef]))(self) /* mreadpropdef on <self:AAttrPropdef>*/;
5942 var_meth = var36;
5943 var37 = NULL;
5944 if (var_meth == NULL) {
5945 var38 = 0; /* is null */
5946 } else {
5947 var38 = 1; /* arg is null and recv is not */
5948 }
5949 if (var38){
5950 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__check_method_signature]))(self, var_modelbuilder, var_nclassdef, var_meth) /* check_method_signature on <self:AAttrPropdef>*/;
5951 } else {
5952 }
5953 var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef]))(self) /* mwritepropdef on <self:AAttrPropdef>*/;
5954 var_meth = var39;
5955 var40 = NULL;
5956 if (var_meth == NULL) {
5957 var41 = 0; /* is null */
5958 } else {
5959 var41 = 1; /* arg is null and recv is not */
5960 }
5961 if (var41){
5962 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__check_method_signature]))(self, var_modelbuilder, var_nclassdef, var_meth) /* check_method_signature on <self:AAttrPropdef>*/;
5963 } else {
5964 }
5965 RET_LABEL:;
5966 }
5967 /* method modelize_property#AAttrPropdef#check_signature for (self: Object, ModelBuilder, AClassdef) */
5968 void VIRTUAL_modelize_property__AAttrPropdef__check_signature(val* self, val* p0, val* p1) {
5969 modelize_property__AAttrPropdef__check_signature(self, p0, p1);
5970 RET_LABEL:;
5971 }
5972 /* method modelize_property#AAttrPropdef#check_method_signature for (self: AAttrPropdef, ModelBuilder, AClassdef, MMethodDef) */
5973 void modelize_property__AAttrPropdef__check_method_signature(val* self, val* p0, val* p1, val* p2) {
5974 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
5975 val* var_nclassdef /* var nclassdef: AClassdef */;
5976 val* var_mpropdef /* var mpropdef: MMethodDef */;
5977 val* var /* : MClassDef */;
5978 val* var1 /* : MModule */;
5979 val* var_mmodule /* var mmodule: MModule */;
5980 val* var2 /* : nullable AType */;
5981 val* var_nsig /* var nsig: nullable AType */;
5982 val* var3 /* : nullable MSignature */;
5983 val* var_mysignature /* var mysignature: nullable MSignature */;
5984 val* var4 /* : null */;
5985 short int var5 /* : Bool */;
5986 short int var6 /* : Bool */;
5987 short int var7 /* : Bool */;
5988 val* var8 /* : MProperty */;
5989 val* var9 /* : MPropDef */;
5990 val* var10 /* : nullable MSignature */;
5991 val* var_msignature /* var msignature: nullable MSignature */;
5992 val* var11 /* : null */;
5993 short int var12 /* : Bool */;
5994 long var13 /* : Int */;
5995 long var14 /* : Int */;
5996 short int var15 /* : Bool */;
5997 short int var17 /* : Bool */;
5998 short int var18 /* : Bool */;
5999 val* var19 /* : null */;
6000 short int var20 /* : Bool */;
6001 val* var_node /* var node: ANode */;
6002 static val* varonce;
6003 val* var21 /* : String */;
6004 char* var22 /* : NativeString */;
6005 long var23 /* : Int */;
6006 val* var24 /* : String */;
6007 long var25 /* : Int */;
6008 static val* varonce26;
6009 val* var27 /* : String */;
6010 char* var28 /* : NativeString */;
6011 long var29 /* : Int */;
6012 val* var30 /* : String */;
6013 long var31 /* : Int */;
6014 static val* varonce32;
6015 val* var33 /* : String */;
6016 char* var34 /* : NativeString */;
6017 long var35 /* : Int */;
6018 val* var36 /* : String */;
6019 val* var37 /* : Array[Object] */;
6020 long var38 /* : Int */;
6021 val* var39 /* : NativeArray[Object] */;
6022 val* var40 /* : Object */;
6023 val* var41 /* : Object */;
6024 val* var42 /* : String */;
6025 val* var43 /* : nullable MType */;
6026 val* var_precursor_ret_type /* var precursor_ret_type: nullable MType */;
6027 val* var44 /* : nullable MType */;
6028 val* var_ret_type /* var ret_type: nullable MType */;
6029 short int var45 /* : Bool */;
6030 val* var46 /* : null */;
6031 short int var47 /* : Bool */;
6032 short int var_ /* var : Bool */;
6033 val* var48 /* : null */;
6034 short int var49 /* : Bool */;
6035 val* var50 /* : null */;
6036 short int var51 /* : Bool */;
6037 val* var_node52 /* var node: ANode */;
6038 static val* varonce53;
6039 val* var54 /* : String */;
6040 char* var55 /* : NativeString */;
6041 long var56 /* : Int */;
6042 val* var57 /* : String */;
6043 val* var58 /* : MProperty */;
6044 static val* varonce59;
6045 val* var60 /* : String */;
6046 char* var61 /* : NativeString */;
6047 long var62 /* : Int */;
6048 val* var63 /* : String */;
6049 val* var64 /* : Array[Object] */;
6050 long var65 /* : Int */;
6051 val* var66 /* : NativeArray[Object] */;
6052 val* var67 /* : String */;
6053 long var68 /* : Int */;
6054 long var69 /* : Int */;
6055 short int var70 /* : Bool */;
6056 short int var72 /* : Bool */;
6057 int cltype;
6058 int idtype;
6059 const char* var_class_name;
6060 short int var73 /* : Bool */;
6061 val* var74 /* : Range[Int] */;
6062 long var75 /* : Int */;
6063 long var76 /* : Int */;
6064 val* var77 /* : Discrete */;
6065 val* var78 /* : Discrete */;
6066 val* var79 /* : Iterator[nullable Object] */;
6067 short int var80 /* : Bool */;
6068 val* var81 /* : nullable Object */;
6069 long var_i /* var i: Int */;
6070 long var82 /* : Int */;
6071 val* var83 /* : Array[MParameter] */;
6072 val* var84 /* : nullable Object */;
6073 val* var85 /* : MType */;
6074 val* var_myt /* var myt: MType */;
6075 val* var86 /* : Array[MParameter] */;
6076 val* var87 /* : nullable Object */;
6077 val* var88 /* : MType */;
6078 val* var_prt /* var prt: MType */;
6079 short int var89 /* : Bool */;
6080 val* var90 /* : nullable MClassDef */;
6081 val* var91 /* : MClassType */;
6082 short int var92 /* : Bool */;
6083 short int var93 /* : Bool */;
6084 short int var_94 /* var : Bool */;
6085 val* var95 /* : nullable MClassDef */;
6086 val* var96 /* : MClassType */;
6087 short int var97 /* : Bool */;
6088 short int var98 /* : Bool */;
6089 val* var99 /* : null */;
6090 short int var100 /* : Bool */;
6091 val* var_node101 /* var node: ANode */;
6092 static val* varonce102;
6093 val* var103 /* : String */;
6094 char* var104 /* : NativeString */;
6095 long var105 /* : Int */;
6096 val* var106 /* : String */;
6097 val* var107 /* : Array[MParameter] */;
6098 val* var108 /* : nullable Object */;
6099 val* var109 /* : String */;
6100 static val* varonce110;
6101 val* var111 /* : String */;
6102 char* var112 /* : NativeString */;
6103 long var113 /* : Int */;
6104 val* var114 /* : String */;
6105 static val* varonce115;
6106 val* var116 /* : String */;
6107 char* var117 /* : NativeString */;
6108 long var118 /* : Int */;
6109 val* var119 /* : String */;
6110 static val* varonce120;
6111 val* var121 /* : String */;
6112 char* var122 /* : NativeString */;
6113 long var123 /* : Int */;
6114 val* var124 /* : String */;
6115 val* var125 /* : Array[Object] */;
6116 long var126 /* : Int */;
6117 val* var127 /* : NativeArray[Object] */;
6118 val* var128 /* : String */;
6119 val* var129 /* : null */;
6120 short int var130 /* : Bool */;
6121 val* var131 /* : null */;
6122 short int var132 /* : Bool */;
6123 val* var133 /* : nullable MClassDef */;
6124 val* var134 /* : MClassType */;
6125 short int var135 /* : Bool */;
6126 short int var136 /* : Bool */;
6127 val* var137 /* : null */;
6128 short int var138 /* : Bool */;
6129 val* var_node139 /* var node: ANode */;
6130 static val* varonce140;
6131 val* var141 /* : String */;
6132 char* var142 /* : NativeString */;
6133 long var143 /* : Int */;
6134 val* var144 /* : String */;
6135 static val* varonce145;
6136 val* var146 /* : String */;
6137 char* var147 /* : NativeString */;
6138 long var148 /* : Int */;
6139 val* var149 /* : String */;
6140 static val* varonce150;
6141 val* var151 /* : String */;
6142 char* var152 /* : NativeString */;
6143 long var153 /* : Int */;
6144 val* var154 /* : String */;
6145 val* var155 /* : Array[Object] */;
6146 long var156 /* : Int */;
6147 val* var157 /* : NativeArray[Object] */;
6148 val* var158 /* : String */;
6149 var_modelbuilder = p0;
6150 var_nclassdef = p1;
6151 var_mpropdef = p2;
6152 var = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MMethodDef>*/;
6153 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__mmodule]))(var) /* mmodule on <var:MClassDef>*/;
6154 var_mmodule = var1;
6155 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_type]))(self) /* n_type on <self:AAttrPropdef>*/;
6156 var_nsig = var2;
6157 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mpropdef) /* msignature on <var_mpropdef:MMethodDef>*/;
6158 var_mysignature = var3;
6159 var4 = NULL;
6160 if (var_mysignature == NULL) {
6161 var5 = 1; /* is null */
6162 } else {
6163 var5 = 0; /* arg is null but recv is not */
6164 }
6165 if (var5){
6166 goto RET_LABEL;
6167 } else {
6168 }
6169 var6 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:MMethodDef>*/;
6170 var7 = !var6;
6171 if (var7){
6172 var8 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:MMethodDef>*/;
6173 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MProperty__intro]))(var8) /* intro on <var8:MProperty(MMethod)>*/;
6174 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MMethodDef__msignature]))(var9) /* msignature on <var9:MPropDef(MMethodDef)>*/;
6175 var_msignature = var10;
6176 var11 = NULL;
6177 if (var_msignature == NULL) {
6178 var12 = 1; /* is null */
6179 } else {
6180 var12 = 0; /* arg is null but recv is not */
6181 }
6182 if (var12){
6183 goto RET_LABEL;
6184 } else {
6185 }
6186 var13 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__arity]))(var_mysignature) /* arity on <var_mysignature:nullable MSignature(MSignature)>*/;
6187 var14 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:nullable MSignature(MSignature)>*/;
6188 { /* Inline kernel#Int#!= (var13,var14) */
6189 var17 = var13 == var14;
6190 var18 = !var17;
6191 var15 = var18;
6192 goto RET_LABEL16;
6193 RET_LABEL16:(void)0;
6194 }
6195 if (var15){
6196 var19 = NULL;
6197 if (var_nsig == NULL) {
6198 var20 = 0; /* is null */
6199 } else {
6200 var20 = 1; /* arg is null and recv is not */
6201 }
6202 if (var20){
6203 var_node = var_nsig;
6204 } else {
6205 var_node = self;
6206 }
6207 if (varonce) {
6208 var21 = varonce;
6209 } else {
6210 var22 = "Redef Error: ";
6211 var23 = 13;
6212 var24 = string__NativeString__to_s_with_length(var22, var23);
6213 var21 = var24;
6214 varonce = var21;
6215 }
6216 var25 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__arity]))(var_mysignature) /* arity on <var_mysignature:nullable MSignature(MSignature)>*/;
6217 if (varonce26) {
6218 var27 = varonce26;
6219 } else {
6220 var28 = " parameters found, ";
6221 var29 = 19;
6222 var30 = string__NativeString__to_s_with_length(var28, var29);
6223 var27 = var30;
6224 varonce26 = var27;
6225 }
6226 var31 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:nullable MSignature(MSignature)>*/;
6227 if (varonce32) {
6228 var33 = varonce32;
6229 } else {
6230 var34 = " expected. Signature is ";
6231 var35 = 24;
6232 var36 = string__NativeString__to_s_with_length(var34, var35);
6233 var33 = var36;
6234 varonce32 = var33;
6235 }
6236 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
6237 { /* var37 = array_instance Array[Object] */
6238 var38 = 7;
6239 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
6240 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var21;
6241 var40 = BOX_kernel__Int(var25); /* autobox from Int to Object */
6242 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var40;
6243 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var27;
6244 var41 = BOX_kernel__Int(var31); /* autobox from Int to Object */
6245 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var41;
6246 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var33;
6247 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var_mpropdef;
6248 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var_msignature;
6249 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
6250 }
6251 var42 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
6252 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node, var42) /* error on <var_modelbuilder:ModelBuilder>*/;
6253 goto RET_LABEL;
6254 } else {
6255 }
6256 var43 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:nullable MSignature(MSignature)>*/;
6257 var_precursor_ret_type = var43;
6258 var44 = ((val* (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_mysignature) /* return_mtype on <var_mysignature:nullable MSignature(MSignature)>*/;
6259 var_ret_type = var44;
6260 var46 = NULL;
6261 if (var_ret_type == NULL) {
6262 var47 = 0; /* is null */
6263 } else {
6264 var47 = 1; /* arg is null and recv is not */
6265 }
6266 var_ = var47;
6267 if (var47){
6268 var48 = NULL;
6269 if (var_precursor_ret_type == NULL) {
6270 var49 = 1; /* is null */
6271 } else {
6272 var49 = 0; /* arg is null but recv is not */
6273 }
6274 var45 = var49;
6275 } else {
6276 var45 = var_;
6277 }
6278 if (var45){
6279 var50 = NULL;
6280 if (var_nsig == NULL) {
6281 var51 = 0; /* is null */
6282 } else {
6283 var51 = 1; /* arg is null and recv is not */
6284 }
6285 if (var51){
6286 var_node52 = var_nsig;
6287 } else {
6288 var_node52 = self;
6289 }
6290 if (varonce53) {
6291 var54 = varonce53;
6292 } else {
6293 var55 = "Redef Error: ";
6294 var56 = 13;
6295 var57 = string__NativeString__to_s_with_length(var55, var56);
6296 var54 = var57;
6297 varonce53 = var54;
6298 }
6299 var58 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:MMethodDef>*/;
6300 if (varonce59) {
6301 var60 = varonce59;
6302 } else {
6303 var61 = " is a procedure, not a function.";
6304 var62 = 32;
6305 var63 = string__NativeString__to_s_with_length(var61, var62);
6306 var60 = var63;
6307 varonce59 = var60;
6308 }
6309 var64 = NEW_array__Array(&type_array__Arraykernel__Object);
6310 { /* var64 = array_instance Array[Object] */
6311 var65 = 3;
6312 var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object);
6313 ((struct instance_array__NativeArray*)var66)->values[0] = (val*) var54;
6314 ((struct instance_array__NativeArray*)var66)->values[1] = (val*) var58;
6315 ((struct instance_array__NativeArray*)var66)->values[2] = (val*) var60;
6316 ((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
6317 }
6318 var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
6319 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node52, var67) /* error on <var_modelbuilder:ModelBuilder>*/;
6320 goto RET_LABEL;
6321 } else {
6322 }
6323 var68 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__arity]))(var_mysignature) /* arity on <var_mysignature:nullable MSignature(MSignature)>*/;
6324 var69 = 0;
6325 { /* Inline kernel#Int#> (var68,var69) */
6326 /* Covariant cast for argument 0 (i) <var69:Int> isa OTHER */
6327 /* <var69:Int> isa OTHER */
6328 var72 = 1; /* easy <var69:Int> isa OTHER*/
6329 if (!var72) {
6330 var_class_name = type_kernel__Int.name;
6331 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6332 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6333 show_backtrace(1);
6334 }
6335 var73 = var68 > var69;
6336 var70 = var73;
6337 goto RET_LABEL71;
6338 RET_LABEL71:(void)0;
6339 }
6340 if (var70){
6341 var74 = NEW_range__Range(&type_range__Rangekernel__Int);
6342 var75 = 0;
6343 var76 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__arity]))(var_mysignature) /* arity on <var_mysignature:nullable MSignature(MSignature)>*/;
6344 var77 = BOX_kernel__Int(var75); /* autobox from Int to Discrete */
6345 var78 = BOX_kernel__Int(var76); /* autobox from Int to Discrete */
6346 ((void (*)(val*, val*, val*))(var74->class->vft[COLOR_range__Range__without_last]))(var74, var77, var78) /* without_last on <var74:Range[Int]>*/;
6347 var79 = ((val* (*)(val*))(var74->class->vft[COLOR_abstract_collection__Collection__iterator]))(var74) /* iterator on <var74:Range[Int]>*/;
6348 for(;;) {
6349 var80 = ((short int (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var79) /* is_ok on <var79:Iterator[nullable Object]>*/;
6350 if(!var80) break;
6351 var81 = ((val* (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__item]))(var79) /* item on <var79:Iterator[nullable Object]>*/;
6352 var82 = ((struct instance_kernel__Int*)var81)->value; /* autounbox from nullable Object to Int */;
6353 var_i = var82;
6354 var83 = ((val* (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__mparameters]))(var_mysignature) /* mparameters on <var_mysignature:nullable MSignature(MSignature)>*/;
6355 var84 = ((val* (*)(val*, long))(var83->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var83, var_i) /* [] on <var83:Array[MParameter]>*/;
6356 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_model__MParameter__mtype]))(var84) /* mtype on <var84:nullable Object(MParameter)>*/;
6357 var_myt = var85;
6358 var86 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:nullable MSignature(MSignature)>*/;
6359 var87 = ((val* (*)(val*, long))(var86->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var86, var_i) /* [] on <var86:Array[MParameter]>*/;
6360 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MParameter__mtype]))(var87) /* mtype on <var87:nullable Object(MParameter)>*/;
6361 var_prt = var88;
6362 var90 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
6363 if (var90 == NULL) {
6364 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6365 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 801);
6366 show_backtrace(1);
6367 } else {
6368 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_model__MClassDef__bound_mtype]))(var90) /* bound_mtype on <var90:nullable MClassDef>*/;
6369 }
6370 var92 = ((short int (*)(val*, val*, val*, val*))(var_myt->class->vft[COLOR_model__MType__is_subtype]))(var_myt, var_mmodule, var91, var_prt) /* is_subtype on <var_myt:MType>*/;
6371 var93 = !var92;
6372 var_94 = var93;
6373 if (var93){
6374 var95 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
6375 if (var95 == NULL) {
6376 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6377 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 802);
6378 show_backtrace(1);
6379 } else {
6380 var96 = ((val* (*)(val*))(var95->class->vft[COLOR_model__MClassDef__bound_mtype]))(var95) /* bound_mtype on <var95:nullable MClassDef>*/;
6381 }
6382 var97 = ((short int (*)(val*, val*, val*, val*))(var_prt->class->vft[COLOR_model__MType__is_subtype]))(var_prt, var_mmodule, var96, var_myt) /* is_subtype on <var_prt:MType>*/;
6383 var98 = !var97;
6384 var89 = var98;
6385 } else {
6386 var89 = var_94;
6387 }
6388 if (var89){
6389 var99 = NULL;
6390 if (var_nsig == NULL) {
6391 var100 = 0; /* is null */
6392 } else {
6393 var100 = 1; /* arg is null and recv is not */
6394 }
6395 if (var100){
6396 var_node101 = var_nsig;
6397 } else {
6398 var_node101 = self;
6399 }
6400 if (varonce102) {
6401 var103 = varonce102;
6402 } else {
6403 var104 = "Redef Error: Wrong type for parameter `";
6404 var105 = 39;
6405 var106 = string__NativeString__to_s_with_length(var104, var105);
6406 var103 = var106;
6407 varonce102 = var103;
6408 }
6409 var107 = ((val* (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__mparameters]))(var_mysignature) /* mparameters on <var_mysignature:nullable MSignature(MSignature)>*/;
6410 var108 = ((val* (*)(val*, long))(var107->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var107, var_i) /* [] on <var107:Array[MParameter]>*/;
6411 var109 = ((val* (*)(val*))(var108->class->vft[COLOR_model__MParameter__name]))(var108) /* name on <var108:nullable Object(MParameter)>*/;
6412 if (varonce110) {
6413 var111 = varonce110;
6414 } else {
6415 var112 = "\'. found ";
6416 var113 = 9;
6417 var114 = string__NativeString__to_s_with_length(var112, var113);
6418 var111 = var114;
6419 varonce110 = var111;
6420 }
6421 if (varonce115) {
6422 var116 = varonce115;
6423 } else {
6424 var117 = ", expected ";
6425 var118 = 11;
6426 var119 = string__NativeString__to_s_with_length(var117, var118);
6427 var116 = var119;
6428 varonce115 = var116;
6429 }
6430 if (varonce120) {
6431 var121 = varonce120;
6432 } else {
6433 var122 = ".";
6434 var123 = 1;
6435 var124 = string__NativeString__to_s_with_length(var122, var123);
6436 var121 = var124;
6437 varonce120 = var121;
6438 }
6439 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
6440 { /* var125 = array_instance Array[Object] */
6441 var126 = 7;
6442 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
6443 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var103;
6444 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var109;
6445 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var111;
6446 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var_myt;
6447 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var116;
6448 ((struct instance_array__NativeArray*)var127)->values[5] = (val*) var_prt;
6449 ((struct instance_array__NativeArray*)var127)->values[6] = (val*) var121;
6450 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
6451 }
6452 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
6453 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node101, var128) /* error on <var_modelbuilder:ModelBuilder>*/;
6454 } else {
6455 }
6456 CONTINUE_label: (void)0;
6457 ((void (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__next]))(var79) /* next on <var79:Iterator[nullable Object]>*/;
6458 }
6459 BREAK_label: (void)0;
6460 } else {
6461 }
6462 var129 = NULL;
6463 if (var_precursor_ret_type == NULL) {
6464 var130 = 0; /* is null */
6465 } else {
6466 var130 = 1; /* arg is null and recv is not */
6467 }
6468 if (var130){
6469 var131 = NULL;
6470 if (var_ret_type == NULL) {
6471 var132 = 1; /* is null */
6472 } else {
6473 var132 = 0; /* arg is null but recv is not */
6474 }
6475 if (var132){
6476 var_ret_type = var_precursor_ret_type;
6477 } else {
6478 var133 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
6479 if (var133 == NULL) {
6480 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6481 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 813);
6482 show_backtrace(1);
6483 } else {
6484 var134 = ((val* (*)(val*))(var133->class->vft[COLOR_model__MClassDef__bound_mtype]))(var133) /* bound_mtype on <var133:nullable MClassDef>*/;
6485 }
6486 var135 = ((short int (*)(val*, val*, val*, val*))(var_ret_type->class->vft[COLOR_model__MType__is_subtype]))(var_ret_type, var_mmodule, var134, var_precursor_ret_type) /* is_subtype on <var_ret_type:nullable MType(MType)>*/;
6487 var136 = !var135;
6488 if (var136){
6489 var137 = NULL;
6490 if (var_nsig == NULL) {
6491 var138 = 0; /* is null */
6492 } else {
6493 var138 = 1; /* arg is null and recv is not */
6494 }
6495 if (var138){
6496 var_node139 = var_nsig;
6497 } else {
6498 var_node139 = self;
6499 }
6500 if (varonce140) {
6501 var141 = varonce140;
6502 } else {
6503 var142 = "Redef Error: Wrong return type. found ";
6504 var143 = 38;
6505 var144 = string__NativeString__to_s_with_length(var142, var143);
6506 var141 = var144;
6507 varonce140 = var141;
6508 }
6509 if (varonce145) {
6510 var146 = varonce145;
6511 } else {
6512 var147 = ", expected ";
6513 var148 = 11;
6514 var149 = string__NativeString__to_s_with_length(var147, var148);
6515 var146 = var149;
6516 varonce145 = var146;
6517 }
6518 if (varonce150) {
6519 var151 = varonce150;
6520 } else {
6521 var152 = ".";
6522 var153 = 1;
6523 var154 = string__NativeString__to_s_with_length(var152, var153);
6524 var151 = var154;
6525 varonce150 = var151;
6526 }
6527 var155 = NEW_array__Array(&type_array__Arraykernel__Object);
6528 { /* var155 = array_instance Array[Object] */
6529 var156 = 5;
6530 var157 = NEW_array__NativeArray(var156, &type_array__NativeArraykernel__Object);
6531 ((struct instance_array__NativeArray*)var157)->values[0] = (val*) var141;
6532 ((struct instance_array__NativeArray*)var157)->values[1] = (val*) var_ret_type;
6533 ((struct instance_array__NativeArray*)var157)->values[2] = (val*) var146;
6534 ((struct instance_array__NativeArray*)var157)->values[3] = (val*) var_precursor_ret_type;
6535 ((struct instance_array__NativeArray*)var157)->values[4] = (val*) var151;
6536 ((void (*)(val*, val*, long))(var155->class->vft[COLOR_array__Array__with_native]))(var155, var157, var156) /* with_native on <var155:Array[Object]>*/;
6537 }
6538 var158 = ((val* (*)(val*))(var155->class->vft[COLOR_string__Object__to_s]))(var155) /* to_s on <var155:Array[Object]>*/;
6539 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node139, var158) /* error on <var_modelbuilder:ModelBuilder>*/;
6540 } else {
6541 }
6542 }
6543 } else {
6544 }
6545 } else {
6546 }
6547 RET_LABEL:;
6548 }
6549 /* method modelize_property#AAttrPropdef#check_method_signature for (self: Object, ModelBuilder, AClassdef, MMethodDef) */
6550 void VIRTUAL_modelize_property__AAttrPropdef__check_method_signature(val* self, val* p0, val* p1, val* p2) {
6551 modelize_property__AAttrPropdef__check_method_signature(self, p0, p1, p2);
6552 RET_LABEL:;
6553 }
6554 /* method modelize_property#ATypePropdef#build_property for (self: ATypePropdef, ModelBuilder, AClassdef) */
6555 void modelize_property__ATypePropdef__build_property(val* self, val* p0, val* p1) {
6556 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6557 val* var_nclassdef /* var nclassdef: AClassdef */;
6558 val* var /* : nullable MClassDef */;
6559 val* var_mclassdef /* var mclassdef: MClassDef */;
6560 val* var1 /* : TClassid */;
6561 val* var2 /* : String */;
6562 val* var_name /* var name: String */;
6563 val* var3 /* : TClassid */;
6564 val* var4 /* : nullable MProperty */;
6565 val* var_mprop /* var mprop: nullable MProperty */;
6566 val* var5 /* : null */;
6567 short int var6 /* : Bool */;
6568 val* var7 /* : AVisibility */;
6569 val* var8 /* : MVisibility */;
6570 val* var_mvisibility /* var mvisibility: MVisibility */;
6571 val* var9 /* : MVirtualTypeProp */;
6572 val* var10 /* : Iterator[nullable Object] */;
6573 short int var11 /* : Bool */;
6574 val* var12 /* : nullable Object */;
6575 char var_c /* var c: Char */;
6576 char var13 /* : Char */;
6577 short int var14 /* : Bool */;
6578 char var15 /* : Char */;
6579 short int var16 /* : Bool */;
6580 short int var18 /* : Bool */;
6581 int cltype;
6582 int idtype;
6583 const char* var_class_name;
6584 short int var19 /* : Bool */;
6585 short int var_ /* var : Bool */;
6586 char var20 /* : Char */;
6587 short int var21 /* : Bool */;
6588 short int var23 /* : Bool */;
6589 int cltype24;
6590 int idtype25;
6591 const char* var_class_name26;
6592 short int var27 /* : Bool */;
6593 val* var28 /* : TClassid */;
6594 static val* varonce;
6595 val* var29 /* : String */;
6596 char* var30 /* : NativeString */;
6597 long var31 /* : Int */;
6598 val* var32 /* : String */;
6599 val* var33 /* : Array[Object] */;
6600 long var34 /* : Int */;
6601 val* var35 /* : NativeArray[Object] */;
6602 val* var36 /* : String */;
6603 val* var37 /* : nullable TKwredef */;
6604 short int var38 /* : Bool */;
6605 short int var39 /* : Bool */;
6606 short int var40 /* : Bool */;
6607 val* var41 /* : nullable TKwredef */;
6608 short int var42 /* : Bool */;
6609 short int var43 /* : Bool */;
6610 short int var44 /* : Bool */;
6611 short int var45 /* : Bool */;
6612 int cltype46;
6613 int idtype47;
6614 val* var48 /* : AVisibility */;
6615 val* var49 /* : Map[MProperty, APropdef] */;
6616 val* var50 /* : MVirtualTypeDef */;
6617 val* var51 /* : Location */;
6618 val* var_mpropdef /* var mpropdef: MVirtualTypeDef */;
6619 short int var52 /* : Bool */;
6620 int cltype53;
6621 int idtype54;
6622 const struct type* type_struct;
6623 const char* var_class_name55;
6624 var_modelbuilder = p0;
6625 var_nclassdef = p1;
6626 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
6627 if (var == NULL) {
6628 fprintf(stderr, "Runtime error: %s", "Cast failed");
6629 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 828);
6630 show_backtrace(1);
6631 }
6632 var_mclassdef = var;
6633 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_id]))(self) /* n_id on <self:ATypePropdef>*/;
6634 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TClassid>*/;
6635 var_name = var2;
6636 var3 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_id]))(self) /* n_id on <self:ATypePropdef>*/;
6637 var4 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var3, var_mclassdef, var_name) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
6638 var_mprop = var4;
6639 var5 = NULL;
6640 if (var_mprop == NULL) {
6641 var6 = 1; /* is null */
6642 } else {
6643 var6 = 0; /* arg is null but recv is not */
6644 }
6645 if (var6){
6646 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_visibility]))(self) /* n_visibility on <self:ATypePropdef>*/;
6647 var8 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var7) /* new_property_visibility on <self:ATypePropdef>*/;
6648 var_mvisibility = var8;
6649 var9 = NEW_model__MVirtualTypeProp(&type_model__MVirtualTypeProp);
6650 ((void (*)(val*, val*, val*, val*))(var9->class->vft[COLOR_model__MVirtualTypeProp__init]))(var9, var_mclassdef, var_name, var_mvisibility) /* init on <var9:MVirtualTypeProp>*/;
6651 var_mprop = var9;
6652 var10 = ((val* (*)(val*))(var_name->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_name) /* iterator on <var_name:String>*/;
6653 for(;;) {
6654 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
6655 if(!var11) break;
6656 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
6657 var13 = ((struct instance_kernel__Char*)var12)->value; /* autounbox from nullable Object to Char */;
6658 var_c = var13;
6659 var15 = 'a';
6660 { /* Inline kernel#Char#>= (var_c,var15) */
6661 /* Covariant cast for argument 0 (i) <var15:Char> isa OTHER */
6662 /* <var15:Char> isa OTHER */
6663 var18 = 1; /* easy <var15:Char> isa OTHER*/
6664 if (!var18) {
6665 var_class_name = type_kernel__Char.name;
6666 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6667 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
6668 show_backtrace(1);
6669 }
6670 var19 = var_c >= var15;
6671 var16 = var19;
6672 goto RET_LABEL17;
6673 RET_LABEL17:(void)0;
6674 }
6675 var_ = var16;
6676 if (var16){
6677 var20 = 'z';
6678 { /* Inline kernel#Char#<= (var_c,var20) */
6679 /* Covariant cast for argument 0 (i) <var20:Char> isa OTHER */
6680 /* <var20:Char> isa OTHER */
6681 var23 = 1; /* easy <var20:Char> isa OTHER*/
6682 if (!var23) {
6683 var_class_name26 = type_kernel__Char.name;
6684 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
6685 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
6686 show_backtrace(1);
6687 }
6688 var27 = var_c <= var20;
6689 var21 = var27;
6690 goto RET_LABEL22;
6691 RET_LABEL22:(void)0;
6692 }
6693 var14 = var21;
6694 } else {
6695 var14 = var_;
6696 }
6697 if (var14){
6698 var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_id]))(self) /* n_id on <self:ATypePropdef>*/;
6699 if (varonce) {
6700 var29 = varonce;
6701 } else {
6702 var30 = "Warning: lowercase in the virtual type ";
6703 var31 = 39;
6704 var32 = string__NativeString__to_s_with_length(var30, var31);
6705 var29 = var32;
6706 varonce = var29;
6707 }
6708 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
6709 { /* var33 = array_instance Array[Object] */
6710 var34 = 2;
6711 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
6712 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var29;
6713 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var_name;
6714 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
6715 }
6716 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
6717 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var_modelbuilder, var28, var36) /* warning on <var_modelbuilder:ModelBuilder>*/;
6718 goto BREAK_label;
6719 } else {
6720 }
6721 CONTINUE_label: (void)0;
6722 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
6723 }
6724 BREAK_label: (void)0;
6725 var37 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_kwredef]))(self) /* n_kwredef on <self:ATypePropdef>*/;
6726 var38 = 0;
6727 var39 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var37, var38, var_mprop) /* check_redef_keyword on <self:ATypePropdef>*/;
6728 var40 = !var39;
6729 if (var40){
6730 goto RET_LABEL;
6731 } else {
6732 }
6733 } else {
6734 var41 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_kwredef]))(self) /* n_kwredef on <self:ATypePropdef>*/;
6735 var42 = 1;
6736 var43 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var41, var42, var_mprop) /* check_redef_keyword on <self:ATypePropdef>*/;
6737 var44 = !var43;
6738 if (var44){
6739 goto RET_LABEL;
6740 } else {
6741 }
6742 /* <var_mprop:nullable MProperty(MProperty)> isa MVirtualTypeProp */
6743 cltype46 = type_model__MVirtualTypeProp.color;
6744 idtype47 = type_model__MVirtualTypeProp.id;
6745 if(cltype46 >= var_mprop->type->table_size) {
6746 var45 = 0;
6747 } else {
6748 var45 = var_mprop->type->type_table[cltype46] == idtype47;
6749 }
6750 if (!var45) {
6751 fprintf(stderr, "Runtime error: %s", "Assert failed");
6752 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 841);
6753 show_backtrace(1);
6754 }
6755 var48 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_visibility]))(self) /* n_visibility on <self:ATypePropdef>*/;
6756 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var48, var_mprop) /* check_redef_property_visibility on <self:ATypePropdef>*/;
6757 }
6758 var49 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
6759 ((void (*)(val*, val*, val*))(var49->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var49, var_mprop, self) /* []= on <var49:Map[MProperty, APropdef]>*/;
6760 var50 = NEW_model__MVirtualTypeDef(&type_model__MVirtualTypeDef);
6761 var51 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:ATypePropdef>*/;
6762 ((void (*)(val*, val*, val*, val*))(var50->class->vft[COLOR_model__MVirtualTypeDef__init]))(var50, var_mclassdef, var_mprop, var51) /* init on <var50:MVirtualTypeDef>*/;
6763 var_mpropdef = var50;
6764 /* <var_mpropdef:MVirtualTypeDef> isa nullable MPROPDEF */
6765 type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
6766 cltype53 = type_struct->color;
6767 idtype54 = type_struct->id;
6768 if(cltype53 >= var_mpropdef->type->table_size) {
6769 var52 = 0;
6770 } else {
6771 var52 = var_mpropdef->type->type_table[cltype53] == idtype54;
6772 }
6773 if (!var52) {
6774 var_class_name55 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
6775 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name55);
6776 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 847);
6777 show_backtrace(1);
6778 }
6779 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:ATypePropdef>*/;
6780 RET_LABEL:;
6781 }
6782 /* method modelize_property#ATypePropdef#build_property for (self: Object, ModelBuilder, AClassdef) */
6783 void VIRTUAL_modelize_property__ATypePropdef__build_property(val* self, val* p0, val* p1) {
6784 modelize_property__ATypePropdef__build_property(self, p0, p1);
6785 RET_LABEL:;
6786 }
6787 /* method modelize_property#ATypePropdef#build_signature for (self: ATypePropdef, ModelBuilder, AClassdef) */
6788 void modelize_property__ATypePropdef__build_signature(val* self, val* p0, val* p1) {
6789 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6790 val* var_nclassdef /* var nclassdef: AClassdef */;
6791 val* var /* : nullable MPropDef */;
6792 val* var_mpropdef /* var mpropdef: nullable MVirtualTypeDef */;
6793 val* var1 /* : null */;
6794 short int var2 /* : Bool */;
6795 val* var3 /* : MClassDef */;
6796 val* var4 /* : MModule */;
6797 val* var_mmodule /* var mmodule: MModule */;
6798 val* var5 /* : null */;
6799 val* var_mtype /* var mtype: nullable MType */;
6800 val* var6 /* : AType */;
6801 val* var_ntype /* var ntype: AType */;
6802 val* var7 /* : nullable MType */;
6803 val* var8 /* : null */;
6804 short int var9 /* : Bool */;
6805 var_modelbuilder = p0;
6806 var_nclassdef = p1;
6807 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
6808 var_mpropdef = var;
6809 var1 = NULL;
6810 if (var_mpropdef == NULL) {
6811 var2 = 1; /* is null */
6812 } else {
6813 var2 = 0; /* arg is null but recv is not */
6814 }
6815 if (var2){
6816 goto RET_LABEL;
6817 } else {
6818 }
6819 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)>*/;
6820 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__mmodule]))(var3) /* mmodule on <var3:MClassDef>*/;
6821 var_mmodule = var4;
6822 var5 = NULL;
6823 var_mtype = var5;
6824 var6 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_type]))(self) /* n_type on <self:ATypePropdef>*/;
6825 var_ntype = var6;
6826 var7 = ((val* (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(var_modelbuilder, var_nclassdef, var_ntype) /* resolve_mtype on <var_modelbuilder:ModelBuilder>*/;
6827 var_mtype = var7;
6828 var8 = NULL;
6829 if (var_mtype == NULL) {
6830 var9 = 1; /* is null */
6831 } else {
6832 var9 = 0; /* arg is null but recv is not */
6833 }
6834 if (var9){
6835 goto RET_LABEL;
6836 } else {
6837 }
6838 ((void (*)(val*, val*))(var_mpropdef->class->vft[COLOR_model__MVirtualTypeDef__bound_61d]))(var_mpropdef, var_mtype) /* bound= on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)>*/;
6839 RET_LABEL:;
6840 }
6841 /* method modelize_property#ATypePropdef#build_signature for (self: Object, ModelBuilder, AClassdef) */
6842 void VIRTUAL_modelize_property__ATypePropdef__build_signature(val* self, val* p0, val* p1) {
6843 modelize_property__ATypePropdef__build_signature(self, p0, p1);
6844 RET_LABEL:;
6845 }
6846 /* method modelize_property#ATypePropdef#check_signature for (self: ATypePropdef, ModelBuilder, AClassdef) */
6847 void modelize_property__ATypePropdef__check_signature(val* self, val* p0, val* p1) {
6848 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6849 val* var_nclassdef /* var nclassdef: AClassdef */;
6850 val* var /* : nullable MPropDef */;
6851 val* var1 /* : nullable MType */;
6852 val* var_bound /* var bound: nullable MType */;
6853 short int var2 /* : Bool */;
6854 int cltype;
6855 int idtype;
6856 short int var3 /* : Bool */;
6857 val* var4 /* : nullable MClassDef */;
6858 val* var5 /* : MModule */;
6859 val* var_mmodule /* var mmodule: MModule */;
6860 val* var6 /* : nullable MClassDef */;
6861 val* var7 /* : MClassType */;
6862 val* var_anchor /* var anchor: MClassType */;
6863 val* var8 /* : Array[MVirtualType] */;
6864 long var9 /* : Int */;
6865 val* var_ /* var : Array[MVirtualType] */;
6866 val* var10 /* : nullable MPropDef */;
6867 val* var11 /* : MProperty */;
6868 val* var12 /* : MVirtualType */;
6869 val* var_seen /* var seen: Array[MVirtualType] */;
6870 short int var13 /* : Bool */;
6871 static val* varonce;
6872 val* var14 /* : String */;
6873 char* var15 /* : NativeString */;
6874 long var16 /* : Int */;
6875 val* var17 /* : String */;
6876 static val* varonce18;
6877 val* var19 /* : String */;
6878 char* var20 /* : NativeString */;
6879 long var21 /* : Int */;
6880 val* var22 /* : String */;
6881 val* var23 /* : String */;
6882 val* var24 /* : Array[Object] */;
6883 long var25 /* : Int */;
6884 val* var26 /* : NativeArray[Object] */;
6885 val* var27 /* : String */;
6886 val* var28 /* : MType */;
6887 val* var_next /* var next: MType */;
6888 short int var29 /* : Bool */;
6889 int cltype30;
6890 int idtype31;
6891 short int var32 /* : Bool */;
6892 var_modelbuilder = p0;
6893 var_nclassdef = p1;
6894 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
6895 if (var == NULL) {
6896 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6897 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 867);
6898 show_backtrace(1);
6899 } else {
6900 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var) /* bound on <var:nullable MPropDef(nullable MVirtualTypeDef)>*/;
6901 }
6902 var_bound = var1;
6903 /* <var_bound:nullable MType> isa MVirtualType */
6904 cltype = type_model__MVirtualType.color;
6905 idtype = type_model__MVirtualType.id;
6906 if(var_bound == NULL) {
6907 var2 = 0;
6908 } else {
6909 if(cltype >= var_bound->type->table_size) {
6910 var2 = 0;
6911 } else {
6912 var2 = var_bound->type->type_table[cltype] == idtype;
6913 }
6914 }
6915 var3 = !var2;
6916 if (var3){
6917 goto RET_LABEL;
6918 } else {
6919 }
6920 var4 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
6921 if (var4 == NULL) {
6922 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6923 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 872);
6924 show_backtrace(1);
6925 } else {
6926 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MClassDef__mmodule]))(var4) /* mmodule on <var4:nullable MClassDef>*/;
6927 }
6928 var_mmodule = var5;
6929 var6 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
6930 if (var6 == NULL) {
6931 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6932 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 873);
6933 show_backtrace(1);
6934 } else {
6935 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MClassDef__bound_mtype]))(var6) /* bound_mtype on <var6:nullable MClassDef>*/;
6936 }
6937 var_anchor = var7;
6938 var8 = NEW_array__Array(&type_array__Arraymodel__MVirtualType);
6939 var9 = 1;
6940 ((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[MVirtualType]>*/;
6941 var_ = var8;
6942 var10 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
6943 if (var10 == NULL) {
6944 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6945 fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 876);
6946 show_backtrace(1);
6947 } else {
6948 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mproperty]))(var10) /* mproperty on <var10:nullable MPropDef(nullable MVirtualTypeDef)>*/;
6949 }
6950 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MVirtualTypeProp__mvirtualtype]))(var11) /* mvirtualtype on <var11:MProperty(MVirtualTypeProp)>*/;
6951 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var12) /* push on <var_:Array[MVirtualType]>*/;
6952 var_seen = var_;
6953 for(;;) {
6954 var13 = ((short int (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__Collection__has]))(var_seen, var_bound) /* has on <var_seen:Array[MVirtualType]>*/;
6955 if (var13){
6956 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var_bound) /* add on <var_seen:Array[MVirtualType]>*/;
6957 if (varonce) {
6958 var14 = varonce;
6959 } else {
6960 var15 = "Error: circularity of virtual type definition: ";
6961 var16 = 47;
6962 var17 = string__NativeString__to_s_with_length(var15, var16);
6963 var14 = var17;
6964 varonce = var14;
6965 }
6966 if (varonce18) {
6967 var19 = varonce18;
6968 } else {
6969 var20 = " -> ";
6970 var21 = 4;
6971 var22 = string__NativeString__to_s_with_length(var20, var21);
6972 var19 = var22;
6973 varonce18 = var19;
6974 }
6975 var23 = ((val* (*)(val*, val*))(var_seen->class->vft[COLOR_string__Collection__join]))(var_seen, var19) /* join on <var_seen:Array[MVirtualType]>*/;
6976 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
6977 { /* var24 = array_instance Array[Object] */
6978 var25 = 2;
6979 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
6980 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var14;
6981 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var23;
6982 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
6983 }
6984 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
6985 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var27) /* error on <var_modelbuilder:ModelBuilder>*/;
6986 goto RET_LABEL;
6987 } else {
6988 }
6989 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var_bound) /* add on <var_seen:Array[MVirtualType]>*/;
6990 var28 = ((val* (*)(val*, val*, val*))(var_bound->class->vft[COLOR_model__MVirtualType__lookup_bound]))(var_bound, var_mmodule, var_anchor) /* lookup_bound on <var_bound:nullable MType(MVirtualType)>*/;
6991 var_next = var28;
6992 /* <var_next:MType> isa MVirtualType */
6993 cltype30 = type_model__MVirtualType.color;
6994 idtype31 = type_model__MVirtualType.id;
6995 if(cltype30 >= var_next->type->table_size) {
6996 var29 = 0;
6997 } else {
6998 var29 = var_next->type->type_table[cltype30] == idtype31;
6999 }
7000 var32 = !var29;
7001 if (var32){
7002 goto RET_LABEL;
7003 } else {
7004 }
7005 var_bound = var_next;
7006 CONTINUE_label: (void)0;
7007 }
7008 BREAK_label: (void)0;
7009 RET_LABEL:;
7010 }
7011 /* method modelize_property#ATypePropdef#check_signature for (self: Object, ModelBuilder, AClassdef) */
7012 void VIRTUAL_modelize_property__ATypePropdef__check_signature(val* self, val* p0, val* p1) {
7013 modelize_property__ATypePropdef__check_signature(self, p0, p1);
7014 RET_LABEL:;
7015 }