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