nitdoc: remove unused plugin "Copy to Clipboard"
[nit.git] / c_src / modelize_class.sep.1.c
1 #include "modelize_class.sep.0.h"
2 /* method modelize_class#ToolContext#modelize_class_phase for (self: ToolContext): Phase */
3 val* modelize_class__ToolContext__modelize_class_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_modelize_class__ToolContext___64dmodelize_class_phase].val; /* @modelize_class_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelize_class_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 23);
10 exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method modelize_class#ToolContext#modelize_class_phase for (self: Object): Phase */
17 val* VIRTUAL_modelize_class__ToolContext__modelize_class_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = modelize_class__ToolContext__modelize_class_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method modelize_class#ToolContext#modelize_class_phase= for (self: ToolContext, Phase) */
26 void modelize_class__ToolContext__modelize_class_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_modelize_class__ToolContext___64dmodelize_class_phase].val = p0; /* @modelize_class_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method modelize_class#ToolContext#modelize_class_phase= for (self: Object, Phase) */
31 void VIRTUAL_modelize_class__ToolContext__modelize_class_phase_61d(val* self, val* p0) {
32 modelize_class__ToolContext__modelize_class_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method modelize_class#ModelizeClassPhase#process_nmodule for (self: ModelizeClassPhase, AModule) */
36 void modelize_class__ModelizeClassPhase__process_nmodule(val* self, val* p0) {
37 val* var_nmodule /* var nmodule: AModule */;
38 val* var /* : ToolContext */;
39 val* var1 /* : ModelBuilder */;
40 var_nmodule = p0;
41 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:ModelizeClassPhase>*/;
42 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var) /* modelbuilder on <var:ToolContext>*/;
43 ((void (*)(val*, val*))(var1->class->vft[COLOR_modelize_class__ModelBuilder__build_classes]))(var1, var_nmodule) /* build_classes on <var1:ModelBuilder>*/;
44 RET_LABEL:;
45 }
46 /* method modelize_class#ModelizeClassPhase#process_nmodule for (self: Object, AModule) */
47 void VIRTUAL_modelize_class__ModelizeClassPhase__process_nmodule(val* self, val* p0) {
48 modelize_class__ModelizeClassPhase__process_nmodule(self, p0);
49 RET_LABEL:;
50 }
51 /* method modelize_class#ModelBuilder#build_a_mclass for (self: ModelBuilder, AModule, AClassdef) */
52 void modelize_class__ModelBuilder__build_a_mclass(val* self, val* p0, val* p1) {
53 val* var_nmodule /* var nmodule: AModule */;
54 val* var_nclassdef /* var nclassdef: AClassdef */;
55 val* var /* : nullable MModule */;
56 val* var_mmodule /* var mmodule: MModule */;
57 long var1 /* : Int */;
58 long var_arity /* var arity: Int */;
59 short int var2 /* : Bool */;
60 int cltype;
61 int idtype;
62 val* var3 /* : nullable TClassid */;
63 val* var4 /* : String */;
64 val* var_name /* var name: String */;
65 val* var5 /* : AClasskind */;
66 val* var_nkind /* var nkind: nullable AClasskind */;
67 val* var6 /* : MClassKind */;
68 val* var_mkind /* var mkind: MClassKind */;
69 val* var7 /* : AVisibility */;
70 val* var_nvisibility /* var nvisibility: nullable AVisibility */;
71 val* var8 /* : MVisibility */;
72 val* var_mvisibility /* var mvisibility: nullable MVisibility */;
73 val* var9 /* : ANodes[AFormaldef] */;
74 long var10 /* : Int */;
75 val* var11 /* : MVisibility */;
76 short int var12 /* : Bool */;
77 static val* varonce;
78 val* var13 /* : String */;
79 char* var14 /* : NativeString */;
80 long var15 /* : Int */;
81 val* var16 /* : String */;
82 val* var17 /* : MVisibility */;
83 short int var18 /* : Bool */;
84 static val* varonce19;
85 val* var20 /* : String */;
86 char* var21 /* : NativeString */;
87 long var22 /* : Int */;
88 val* var23 /* : String */;
89 short int var24 /* : Bool */;
90 int cltype25;
91 int idtype26;
92 static val* varonce27;
93 val* var28 /* : String */;
94 char* var29 /* : NativeString */;
95 long var30 /* : Int */;
96 val* var31 /* : String */;
97 val* var32 /* : null */;
98 val* var33 /* : MClassKind */;
99 val* var34 /* : null */;
100 val* var35 /* : MVisibility */;
101 short int var36 /* : Bool */;
102 int cltype37;
103 int idtype38;
104 static val* varonce39;
105 val* var40 /* : String */;
106 char* var41 /* : NativeString */;
107 long var42 /* : Int */;
108 val* var43 /* : String */;
109 val* var44 /* : null */;
110 val* var45 /* : MClassKind */;
111 val* var46 /* : null */;
112 val* var47 /* : MVisibility */;
113 val* var48 /* : nullable MClass */;
114 val* var_mclass /* var mclass: nullable MClass */;
115 val* var49 /* : null */;
116 short int var50 /* : Bool */;
117 short int var51 /* : Bool */;
118 short int var52 /* : Bool */;
119 int cltype53;
120 int idtype54;
121 short int var_ /* var : Bool */;
122 val* var55 /* : nullable TKwredef */;
123 val* var56 /* : null */;
124 short int var57 /* : Bool */;
125 static val* varonce58;
126 val* var59 /* : String */;
127 char* var60 /* : NativeString */;
128 long var61 /* : Int */;
129 val* var62 /* : String */;
130 static val* varonce63;
131 val* var64 /* : String */;
132 char* var65 /* : NativeString */;
133 long var66 /* : Int */;
134 val* var67 /* : String */;
135 val* var68 /* : Array[Object] */;
136 long var69 /* : Int */;
137 val* var70 /* : NativeArray[Object] */;
138 val* var71 /* : String */;
139 val* var72 /* : MClass */;
140 short int var73 /* : Bool */;
141 short int var74 /* : Bool */;
142 int cltype75;
143 int idtype76;
144 short int var_77 /* var : Bool */;
145 val* var78 /* : Map[MClass, AClassdef] */;
146 short int var79 /* : Bool */;
147 static val* varonce80;
148 val* var81 /* : String */;
149 char* var82 /* : NativeString */;
150 long var83 /* : Int */;
151 val* var84 /* : String */;
152 static val* varonce85;
153 val* var86 /* : String */;
154 char* var87 /* : NativeString */;
155 long var88 /* : Int */;
156 val* var89 /* : String */;
157 val* var90 /* : Map[MClass, AClassdef] */;
158 val* var91 /* : nullable Object */;
159 val* var92 /* : Location */;
160 long var93 /* : Int */;
161 static val* varonce94;
162 val* var95 /* : String */;
163 char* var96 /* : NativeString */;
164 long var97 /* : Int */;
165 val* var98 /* : String */;
166 val* var99 /* : Array[Object] */;
167 long var100 /* : Int */;
168 val* var101 /* : NativeArray[Object] */;
169 val* var102 /* : Object */;
170 val* var103 /* : String */;
171 short int var104 /* : Bool */;
172 short int var105 /* : Bool */;
173 int cltype106;
174 int idtype107;
175 short int var_108 /* var : Bool */;
176 val* var109 /* : nullable TKwredef */;
177 val* var110 /* : null */;
178 short int var111 /* : Bool */;
179 static val* varonce112;
180 val* var113 /* : String */;
181 char* var114 /* : NativeString */;
182 long var115 /* : Int */;
183 val* var116 /* : String */;
184 static val* varonce117;
185 val* var118 /* : String */;
186 char* var119 /* : NativeString */;
187 long var120 /* : Int */;
188 val* var121 /* : String */;
189 val* var122 /* : Array[Object] */;
190 long var123 /* : Int */;
191 val* var124 /* : NativeArray[Object] */;
192 val* var125 /* : String */;
193 long var126 /* : Int */;
194 short int var127 /* : Bool */;
195 short int var129 /* : Bool */;
196 short int var130 /* : Bool */;
197 static val* varonce131;
198 val* var132 /* : String */;
199 char* var133 /* : NativeString */;
200 long var134 /* : Int */;
201 val* var135 /* : String */;
202 static val* varonce136;
203 val* var137 /* : String */;
204 char* var138 /* : NativeString */;
205 long var139 /* : Int */;
206 val* var140 /* : String */;
207 long var141 /* : Int */;
208 static val* varonce142;
209 val* var143 /* : String */;
210 char* var144 /* : NativeString */;
211 long var145 /* : Int */;
212 val* var146 /* : String */;
213 val* var147 /* : Array[Object] */;
214 long var148 /* : Int */;
215 val* var149 /* : NativeArray[Object] */;
216 val* var150 /* : Object */;
217 val* var151 /* : Object */;
218 val* var152 /* : String */;
219 short int var153 /* : Bool */;
220 short int var154 /* : Bool */;
221 val* var155 /* : null */;
222 short int var156 /* : Bool */;
223 short int var_157 /* var : Bool */;
224 val* var158 /* : MClassKind */;
225 short int var159 /* : Bool */;
226 short int var_160 /* var : Bool */;
227 val* var161 /* : MClassKind */;
228 short int var162 /* : Bool */;
229 static val* varonce163;
230 val* var164 /* : String */;
231 char* var165 /* : NativeString */;
232 long var166 /* : Int */;
233 val* var167 /* : String */;
234 val* var168 /* : MClassKind */;
235 static val* varonce169;
236 val* var170 /* : String */;
237 char* var171 /* : NativeString */;
238 long var172 /* : Int */;
239 val* var173 /* : String */;
240 val* var174 /* : Array[Object] */;
241 long var175 /* : Int */;
242 val* var176 /* : NativeArray[Object] */;
243 val* var177 /* : String */;
244 short int var178 /* : Bool */;
245 short int var179 /* : Bool */;
246 val* var180 /* : null */;
247 short int var181 /* : Bool */;
248 short int var_182 /* var : Bool */;
249 val* var183 /* : MVisibility */;
250 short int var184 /* : Bool */;
251 short int var_185 /* var : Bool */;
252 val* var186 /* : MVisibility */;
253 short int var187 /* : Bool */;
254 static val* varonce188;
255 val* var189 /* : String */;
256 char* var190 /* : NativeString */;
257 long var191 /* : Int */;
258 val* var192 /* : String */;
259 val* var193 /* : MVisibility */;
260 static val* varonce194;
261 val* var195 /* : String */;
262 char* var196 /* : NativeString */;
263 long var197 /* : Int */;
264 val* var198 /* : String */;
265 val* var199 /* : Array[Object] */;
266 long var200 /* : Int */;
267 val* var201 /* : NativeArray[Object] */;
268 val* var202 /* : String */;
269 val* var203 /* : Map[MClass, AClassdef] */;
270 var_nmodule = p0;
271 var_nclassdef = p1;
272 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
273 if (var == NULL) {
274 fprintf(stderr, "Runtime error: %s", "Cast failed");
275 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 39);
276 exit(1);
277 }
278 var_mmodule = var;
279 var1 = 0;
280 var_arity = var1;
281 /* <var_nclassdef:AClassdef> isa AStdClassdef */
282 cltype = type_parser_nodes__AStdClassdef.color;
283 idtype = type_parser_nodes__AStdClassdef.id;
284 if(cltype >= var_nclassdef->type->table_size) {
285 var2 = 0;
286 } else {
287 var2 = var_nclassdef->type->type_table[cltype] == idtype;
288 }
289 if (var2){
290 var3 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_id]))(var_nclassdef) /* n_id on <var_nclassdef:AClassdef(AStdClassdef)>*/;
291 if (var3 == NULL) {
292 fprintf(stderr, "Runtime error: %s", "Reciever is null");
293 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 48);
294 exit(1);
295 } else {
296 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_parser_nodes__Token__text]))(var3) /* text on <var3:nullable TClassid>*/;
297 }
298 var_name = var4;
299 var5 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_classkind]))(var_nclassdef) /* n_classkind on <var_nclassdef:AClassdef(AStdClassdef)>*/;
300 var_nkind = var5;
301 var6 = ((val* (*)(val*))(var_nkind->class->vft[COLOR_modelize_class__AClasskind__mkind]))(var_nkind) /* mkind on <var_nkind:nullable AClasskind(AClasskind)>*/;
302 var_mkind = var6;
303 var7 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_visibility]))(var_nclassdef) /* n_visibility on <var_nclassdef:AClassdef(AStdClassdef)>*/;
304 var_nvisibility = var7;
305 var8 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
306 var_mvisibility = var8;
307 var9 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_formaldefs]))(var_nclassdef) /* n_formaldefs on <var_nclassdef:AClassdef(AStdClassdef)>*/;
308 var10 = ((long (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__length]))(var9) /* length on <var9:ANodes[AFormaldef]>*/;
309 var_arity = var10;
310 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:ModelBuilder>*/;
311 var12 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var11) /* == on <var_mvisibility:nullable MVisibility(MVisibility)>*/;
312 if (var12){
313 if (varonce) {
314 var13 = varonce;
315 } else {
316 var14 = "Error: only properties can be protected.";
317 var15 = 40;
318 var16 = string__NativeString__to_s_with_length(var14, var15);
319 var13 = var16;
320 varonce = var13;
321 }
322 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nvisibility, var13) /* error on <self:ModelBuilder>*/;
323 goto RET_LABEL;
324 } else {
325 var17 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:ModelBuilder>*/;
326 var18 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var17) /* == on <var_mvisibility:nullable MVisibility(MVisibility)>*/;
327 if (var18){
328 if (varonce19) {
329 var20 = varonce19;
330 } else {
331 var21 = "Error: intrude is not a legal visibility for classes.";
332 var22 = 53;
333 var23 = string__NativeString__to_s_with_length(var21, var22);
334 var20 = var23;
335 varonce19 = var20;
336 }
337 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nvisibility, var20) /* error on <self:ModelBuilder>*/;
338 goto RET_LABEL;
339 } else {
340 }
341 }
342 } else {
343 /* <var_nclassdef:AClassdef> isa ATopClassdef */
344 cltype25 = type_parser_nodes__ATopClassdef.color;
345 idtype26 = type_parser_nodes__ATopClassdef.id;
346 if(cltype25 >= var_nclassdef->type->table_size) {
347 var24 = 0;
348 } else {
349 var24 = var_nclassdef->type->type_table[cltype25] == idtype26;
350 }
351 if (var24){
352 if (varonce27) {
353 var28 = varonce27;
354 } else {
355 var29 = "Object";
356 var30 = 6;
357 var31 = string__NativeString__to_s_with_length(var29, var30);
358 var28 = var31;
359 varonce27 = var28;
360 }
361 var_name = var28;
362 var32 = NULL;
363 var_nkind = var32;
364 var33 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:ModelBuilder>*/;
365 var_mkind = var33;
366 var34 = NULL;
367 var_nvisibility = var34;
368 var35 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:ModelBuilder>*/;
369 var_mvisibility = var35;
370 } else {
371 /* <var_nclassdef:AClassdef> isa AMainClassdef */
372 cltype37 = type_parser_nodes__AMainClassdef.color;
373 idtype38 = type_parser_nodes__AMainClassdef.id;
374 if(cltype37 >= var_nclassdef->type->table_size) {
375 var36 = 0;
376 } else {
377 var36 = var_nclassdef->type->type_table[cltype37] == idtype38;
378 }
379 if (var36){
380 if (varonce39) {
381 var40 = varonce39;
382 } else {
383 var41 = "Sys";
384 var42 = 3;
385 var43 = string__NativeString__to_s_with_length(var41, var42);
386 var40 = var43;
387 varonce39 = var40;
388 }
389 var_name = var40;
390 var44 = NULL;
391 var_nkind = var44;
392 var45 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__concrete_kind]))(self) /* concrete_kind on <self:ModelBuilder>*/;
393 var_mkind = var45;
394 var46 = NULL;
395 var_nvisibility = var46;
396 var47 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:ModelBuilder>*/;
397 var_mvisibility = var47;
398 } else {
399 fprintf(stderr, "Runtime error: %s", "Aborted");
400 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 74);
401 exit(1);
402 }
403 }
404 }
405 var48 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_nclassdef, var_mmodule, var_name) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
406 var_mclass = var48;
407 var49 = NULL;
408 if (var_mclass == NULL) {
409 var50 = 1; /* is null */
410 } else {
411 var50 = 0; /* arg is null but recv is not */
412 }
413 if (var50){
414 /* <var_nclassdef:AClassdef> isa AStdClassdef */
415 cltype53 = type_parser_nodes__AStdClassdef.color;
416 idtype54 = type_parser_nodes__AStdClassdef.id;
417 if(cltype53 >= var_nclassdef->type->table_size) {
418 var52 = 0;
419 } else {
420 var52 = var_nclassdef->type->type_table[cltype53] == idtype54;
421 }
422 var_ = var52;
423 if (var52){
424 var55 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_kwredef]))(var_nclassdef) /* n_kwredef on <var_nclassdef:AClassdef(AStdClassdef)>*/;
425 var56 = NULL;
426 if (var55 == NULL) {
427 var57 = 0; /* is null */
428 } else {
429 var57 = 1; /* arg is null and recv is not */
430 }
431 var51 = var57;
432 } else {
433 var51 = var_;
434 }
435 if (var51){
436 if (varonce58) {
437 var59 = varonce58;
438 } else {
439 var60 = "Redef error: No imported class ";
440 var61 = 31;
441 var62 = string__NativeString__to_s_with_length(var60, var61);
442 var59 = var62;
443 varonce58 = var59;
444 }
445 if (varonce63) {
446 var64 = varonce63;
447 } else {
448 var65 = " to refine.";
449 var66 = 11;
450 var67 = string__NativeString__to_s_with_length(var65, var66);
451 var64 = var67;
452 varonce63 = var64;
453 }
454 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
455 { /* var68 = array_instance Array[Object] */
456 var69 = 3;
457 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
458 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var59;
459 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var_name;
460 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var64;
461 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
462 CHECK_NEW_array__Array(var68);
463 }
464 var71 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
465 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var71) /* error on <self:ModelBuilder>*/;
466 goto RET_LABEL;
467 } else {
468 }
469 var72 = NEW_model__MClass(&type_model__MClass);
470 ((void (*)(val*, val*, val*, long, val*, val*))(var72->class->vft[COLOR_model__MClass__init]))(var72, var_mmodule, var_name, var_arity, var_mkind, var_mvisibility) /* init on <var72:MClass>*/;
471 CHECK_NEW_model__MClass(var72);
472 var_mclass = var72;
473 } else {
474 /* <var_nclassdef:AClassdef> isa AStdClassdef */
475 cltype75 = type_parser_nodes__AStdClassdef.color;
476 idtype76 = type_parser_nodes__AStdClassdef.id;
477 if(cltype75 >= var_nclassdef->type->table_size) {
478 var74 = 0;
479 } else {
480 var74 = var_nclassdef->type->type_table[cltype75] == idtype76;
481 }
482 var_77 = var74;
483 if (var74){
484 var78 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelize_class__AModule__mclass2nclassdef]))(var_nmodule) /* mclass2nclassdef on <var_nmodule:AModule>*/;
485 var79 = ((short int (*)(val*, val*))(var78->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var78, var_mclass) /* has_key on <var78:Map[MClass, AClassdef]>*/;
486 var73 = var79;
487 } else {
488 var73 = var_77;
489 }
490 if (var73){
491 if (varonce80) {
492 var81 = varonce80;
493 } else {
494 var82 = "Error: A class ";
495 var83 = 15;
496 var84 = string__NativeString__to_s_with_length(var82, var83);
497 var81 = var84;
498 varonce80 = var81;
499 }
500 if (varonce85) {
501 var86 = varonce85;
502 } else {
503 var87 = " is already defined at line ";
504 var88 = 28;
505 var89 = string__NativeString__to_s_with_length(var87, var88);
506 var86 = var89;
507 varonce85 = var86;
508 }
509 var90 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelize_class__AModule__mclass2nclassdef]))(var_nmodule) /* mclass2nclassdef on <var_nmodule:AModule>*/;
510 var91 = ((val* (*)(val*, val*))(var90->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var90, var_mclass) /* [] on <var90:Map[MClass, AClassdef]>*/;
511 var92 = ((val* (*)(val*))(var91->class->vft[COLOR_parser_nodes__ANode__location]))(var91) /* location on <var91:nullable Object(AClassdef)>*/;
512 var93 = ((long (*)(val*))(var92->class->vft[COLOR_location__Location__line_start]))(var92) /* line_start on <var92:Location>*/;
513 if (varonce94) {
514 var95 = varonce94;
515 } else {
516 var96 = ".";
517 var97 = 1;
518 var98 = string__NativeString__to_s_with_length(var96, var97);
519 var95 = var98;
520 varonce94 = var95;
521 }
522 var99 = NEW_array__Array(&type_array__Arraykernel__Object);
523 { /* var99 = array_instance Array[Object] */
524 var100 = 5;
525 var101 = NEW_array__NativeArray(var100, &type_array__NativeArraykernel__Object);
526 ((struct instance_array__NativeArray*)var101)->values[0] = (val*) var81;
527 ((struct instance_array__NativeArray*)var101)->values[1] = (val*) var_name;
528 ((struct instance_array__NativeArray*)var101)->values[2] = (val*) var86;
529 var102 = BOX_kernel__Int(var93); /* autobox from Int to Object */
530 ((struct instance_array__NativeArray*)var101)->values[3] = (val*) var102;
531 ((struct instance_array__NativeArray*)var101)->values[4] = (val*) var95;
532 ((void (*)(val*, val*, long))(var99->class->vft[COLOR_array__Array__with_native]))(var99, var101, var100) /* with_native on <var99:Array[Object]>*/;
533 CHECK_NEW_array__Array(var99);
534 }
535 var103 = ((val* (*)(val*))(var99->class->vft[COLOR_string__Object__to_s]))(var99) /* to_s on <var99:Array[Object]>*/;
536 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var103) /* error on <self:ModelBuilder>*/;
537 goto RET_LABEL;
538 } else {
539 /* <var_nclassdef:AClassdef> isa AStdClassdef */
540 cltype106 = type_parser_nodes__AStdClassdef.color;
541 idtype107 = type_parser_nodes__AStdClassdef.id;
542 if(cltype106 >= var_nclassdef->type->table_size) {
543 var105 = 0;
544 } else {
545 var105 = var_nclassdef->type->type_table[cltype106] == idtype107;
546 }
547 var_108 = var105;
548 if (var105){
549 var109 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_kwredef]))(var_nclassdef) /* n_kwredef on <var_nclassdef:AClassdef(AStdClassdef)>*/;
550 var110 = NULL;
551 if (var109 == NULL) {
552 var111 = 1; /* is null */
553 } else {
554 var111 = 0; /* arg is null but recv is not */
555 }
556 var104 = var111;
557 } else {
558 var104 = var_108;
559 }
560 if (var104){
561 if (varonce112) {
562 var113 = varonce112;
563 } else {
564 var114 = "Redef error: ";
565 var115 = 13;
566 var116 = string__NativeString__to_s_with_length(var114, var115);
567 var113 = var116;
568 varonce112 = var113;
569 }
570 if (varonce117) {
571 var118 = varonce117;
572 } else {
573 var119 = " is an imported class. Add the redef keyword to refine it.";
574 var120 = 58;
575 var121 = string__NativeString__to_s_with_length(var119, var120);
576 var118 = var121;
577 varonce117 = var118;
578 }
579 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
580 { /* var122 = array_instance Array[Object] */
581 var123 = 3;
582 var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object);
583 ((struct instance_array__NativeArray*)var124)->values[0] = (val*) var113;
584 ((struct instance_array__NativeArray*)var124)->values[1] = (val*) var_name;
585 ((struct instance_array__NativeArray*)var124)->values[2] = (val*) var118;
586 ((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on <var122:Array[Object]>*/;
587 CHECK_NEW_array__Array(var122);
588 }
589 var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on <var122:Array[Object]>*/;
590 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var125) /* error on <self:ModelBuilder>*/;
591 goto RET_LABEL;
592 } else {
593 var126 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
594 { /* Inline kernel#Int#!= (var126,var_arity) */
595 var129 = var126 == var_arity;
596 var130 = !var129;
597 var127 = var130;
598 goto RET_LABEL128;
599 RET_LABEL128:(void)0;
600 }
601 if (var127){
602 if (varonce131) {
603 var132 = varonce131;
604 } else {
605 var133 = "Redef error: Formal parameter arity missmatch; got ";
606 var134 = 51;
607 var135 = string__NativeString__to_s_with_length(var133, var134);
608 var132 = var135;
609 varonce131 = var132;
610 }
611 if (varonce136) {
612 var137 = varonce136;
613 } else {
614 var138 = ", expected ";
615 var139 = 11;
616 var140 = string__NativeString__to_s_with_length(var138, var139);
617 var137 = var140;
618 varonce136 = var137;
619 }
620 var141 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
621 if (varonce142) {
622 var143 = varonce142;
623 } else {
624 var144 = ".";
625 var145 = 1;
626 var146 = string__NativeString__to_s_with_length(var144, var145);
627 var143 = var146;
628 varonce142 = var143;
629 }
630 var147 = NEW_array__Array(&type_array__Arraykernel__Object);
631 { /* var147 = array_instance Array[Object] */
632 var148 = 5;
633 var149 = NEW_array__NativeArray(var148, &type_array__NativeArraykernel__Object);
634 ((struct instance_array__NativeArray*)var149)->values[0] = (val*) var132;
635 var150 = BOX_kernel__Int(var_arity); /* autobox from Int to Object */
636 ((struct instance_array__NativeArray*)var149)->values[1] = (val*) var150;
637 ((struct instance_array__NativeArray*)var149)->values[2] = (val*) var137;
638 var151 = BOX_kernel__Int(var141); /* autobox from Int to Object */
639 ((struct instance_array__NativeArray*)var149)->values[3] = (val*) var151;
640 ((struct instance_array__NativeArray*)var149)->values[4] = (val*) var143;
641 ((void (*)(val*, val*, long))(var147->class->vft[COLOR_array__Array__with_native]))(var147, var149, var148) /* with_native on <var147:Array[Object]>*/;
642 CHECK_NEW_array__Array(var147);
643 }
644 var152 = ((val* (*)(val*))(var147->class->vft[COLOR_string__Object__to_s]))(var147) /* to_s on <var147:Array[Object]>*/;
645 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var152) /* error on <self:ModelBuilder>*/;
646 goto RET_LABEL;
647 } else {
648 var155 = NULL;
649 if (var_nkind == NULL) {
650 var156 = 0; /* is null */
651 } else {
652 var156 = 1; /* arg is null and recv is not */
653 }
654 var_157 = var156;
655 if (var156){
656 var158 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__concrete_kind]))(self) /* concrete_kind on <self:ModelBuilder>*/;
657 var159 = ((short int (*)(val*, val*))(var_mkind->class->vft[COLOR_kernel__Object___33d_61d]))(var_mkind, var158) /* != on <var_mkind:MClassKind>*/;
658 var154 = var159;
659 } else {
660 var154 = var_157;
661 }
662 var_160 = var154;
663 if (var154){
664 var161 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:nullable MClass(MClass)>*/;
665 var162 = ((short int (*)(val*, val*))(var161->class->vft[COLOR_kernel__Object___33d_61d]))(var161, var_mkind) /* != on <var161:MClassKind>*/;
666 var153 = var162;
667 } else {
668 var153 = var_160;
669 }
670 if (var153){
671 if (varonce163) {
672 var164 = varonce163;
673 } else {
674 var165 = "Error: refinement changed the kind from a ";
675 var166 = 42;
676 var167 = string__NativeString__to_s_with_length(var165, var166);
677 var164 = var167;
678 varonce163 = var164;
679 }
680 var168 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:nullable MClass(MClass)>*/;
681 if (varonce169) {
682 var170 = varonce169;
683 } else {
684 var171 = " to a ";
685 var172 = 6;
686 var173 = string__NativeString__to_s_with_length(var171, var172);
687 var170 = var173;
688 varonce169 = var170;
689 }
690 var174 = NEW_array__Array(&type_array__Arraykernel__Object);
691 { /* var174 = array_instance Array[Object] */
692 var175 = 4;
693 var176 = NEW_array__NativeArray(var175, &type_array__NativeArraykernel__Object);
694 ((struct instance_array__NativeArray*)var176)->values[0] = (val*) var164;
695 ((struct instance_array__NativeArray*)var176)->values[1] = (val*) var168;
696 ((struct instance_array__NativeArray*)var176)->values[2] = (val*) var170;
697 ((struct instance_array__NativeArray*)var176)->values[3] = (val*) var_mkind;
698 ((void (*)(val*, val*, long))(var174->class->vft[COLOR_array__Array__with_native]))(var174, var176, var175) /* with_native on <var174:Array[Object]>*/;
699 CHECK_NEW_array__Array(var174);
700 }
701 var177 = ((val* (*)(val*))(var174->class->vft[COLOR_string__Object__to_s]))(var174) /* to_s on <var174:Array[Object]>*/;
702 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nkind, var177) /* error on <self:ModelBuilder>*/;
703 } else {
704 var180 = NULL;
705 if (var_nvisibility == NULL) {
706 var181 = 0; /* is null */
707 } else {
708 var181 = 1; /* arg is null and recv is not */
709 }
710 var_182 = var181;
711 if (var181){
712 var183 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:ModelBuilder>*/;
713 var184 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___33d_61d]))(var_mvisibility, var183) /* != on <var_mvisibility:nullable MVisibility(MVisibility)>*/;
714 var179 = var184;
715 } else {
716 var179 = var_182;
717 }
718 var_185 = var179;
719 if (var179){
720 var186 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__visibility]))(var_mclass) /* visibility on <var_mclass:nullable MClass(MClass)>*/;
721 var187 = ((short int (*)(val*, val*))(var186->class->vft[COLOR_kernel__Object___33d_61d]))(var186, var_mvisibility) /* != on <var186:MVisibility>*/;
722 var178 = var187;
723 } else {
724 var178 = var_185;
725 }
726 if (var178){
727 if (varonce188) {
728 var189 = varonce188;
729 } else {
730 var190 = "Error: refinement changed the visibility from a ";
731 var191 = 48;
732 var192 = string__NativeString__to_s_with_length(var190, var191);
733 var189 = var192;
734 varonce188 = var189;
735 }
736 var193 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__visibility]))(var_mclass) /* visibility on <var_mclass:nullable MClass(MClass)>*/;
737 if (varonce194) {
738 var195 = varonce194;
739 } else {
740 var196 = " to a ";
741 var197 = 6;
742 var198 = string__NativeString__to_s_with_length(var196, var197);
743 var195 = var198;
744 varonce194 = var195;
745 }
746 var199 = NEW_array__Array(&type_array__Arraykernel__Object);
747 { /* var199 = array_instance Array[Object] */
748 var200 = 4;
749 var201 = NEW_array__NativeArray(var200, &type_array__NativeArraykernel__Object);
750 ((struct instance_array__NativeArray*)var201)->values[0] = (val*) var189;
751 ((struct instance_array__NativeArray*)var201)->values[1] = (val*) var193;
752 ((struct instance_array__NativeArray*)var201)->values[2] = (val*) var195;
753 ((struct instance_array__NativeArray*)var201)->values[3] = (val*) var_mvisibility;
754 ((void (*)(val*, val*, long))(var199->class->vft[COLOR_array__Array__with_native]))(var199, var201, var200) /* with_native on <var199:Array[Object]>*/;
755 CHECK_NEW_array__Array(var199);
756 }
757 var202 = ((val* (*)(val*))(var199->class->vft[COLOR_string__Object__to_s]))(var199) /* to_s on <var199:Array[Object]>*/;
758 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nvisibility, var202) /* error on <self:ModelBuilder>*/;
759 } else {
760 }
761 }
762 }
763 }
764 }
765 }
766 ((void (*)(val*, val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclass_61d]))(var_nclassdef, var_mclass) /* mclass= on <var_nclassdef:AClassdef>*/;
767 var203 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelize_class__AModule__mclass2nclassdef]))(var_nmodule) /* mclass2nclassdef on <var_nmodule:AModule>*/;
768 ((void (*)(val*, val*, val*))(var203->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var203, var_mclass, var_nclassdef) /* []= on <var203:Map[MClass, AClassdef]>*/;
769 RET_LABEL:;
770 }
771 /* method modelize_class#ModelBuilder#build_a_mclass for (self: Object, AModule, AClassdef) */
772 void VIRTUAL_modelize_class__ModelBuilder__build_a_mclass(val* self, val* p0, val* p1) {
773 modelize_class__ModelBuilder__build_a_mclass(self, p0, p1);
774 RET_LABEL:;
775 }
776 /* method modelize_class#ModelBuilder#build_a_mclassdef for (self: ModelBuilder, AModule, AClassdef) */
777 void modelize_class__ModelBuilder__build_a_mclassdef(val* self, val* p0, val* p1) {
778 val* var_nmodule /* var nmodule: AModule */;
779 val* var_nclassdef /* var nclassdef: AClassdef */;
780 val* var /* : nullable MModule */;
781 val* var_mmodule /* var mmodule: MModule */;
782 static val* varonce;
783 val* var1 /* : String */;
784 char* var2 /* : NativeString */;
785 long var3 /* : Int */;
786 val* var4 /* : String */;
787 val* var5 /* : nullable MClass */;
788 val* var_objectclass /* var objectclass: nullable MClass */;
789 val* var6 /* : nullable MClass */;
790 val* var_mclass /* var mclass: nullable MClass */;
791 val* var7 /* : null */;
792 short int var8 /* : Bool */;
793 val* var9 /* : Array[String] */;
794 val* var_names /* var names: Array[String] */;
795 val* var10 /* : Array[MType] */;
796 val* var_bounds /* var bounds: Array[MType] */;
797 short int var11 /* : Bool */;
798 short int var12 /* : Bool */;
799 int cltype;
800 int idtype;
801 short int var_ /* var : Bool */;
802 long var13 /* : Int */;
803 long var14 /* : Int */;
804 short int var15 /* : Bool */;
805 short int var17 /* : Bool */;
806 int cltype18;
807 int idtype19;
808 const char* var_class_name;
809 short int var20 /* : Bool */;
810 val* var21 /* : Range[Int] */;
811 long var22 /* : Int */;
812 long var23 /* : Int */;
813 val* var24 /* : Discrete */;
814 val* var25 /* : Discrete */;
815 val* var26 /* : Iterator[nullable Object] */;
816 short int var27 /* : Bool */;
817 val* var28 /* : nullable Object */;
818 long var_i /* var i: Int */;
819 long var29 /* : Int */;
820 val* var30 /* : ANodes[AFormaldef] */;
821 val* var31 /* : nullable Object */;
822 val* var_nfd /* var nfd: AFormaldef */;
823 val* var32 /* : TClassid */;
824 val* var33 /* : String */;
825 val* var_ptname /* var ptname: String */;
826 short int var34 /* : Bool */;
827 static val* varonce35;
828 val* var36 /* : String */;
829 char* var37 /* : NativeString */;
830 long var38 /* : Int */;
831 val* var39 /* : String */;
832 static val* varonce40;
833 val* var41 /* : String */;
834 char* var42 /* : NativeString */;
835 long var43 /* : Int */;
836 val* var44 /* : String */;
837 val* var45 /* : Array[Object] */;
838 long var46 /* : Int */;
839 val* var47 /* : NativeArray[Object] */;
840 val* var48 /* : String */;
841 val* var49 /* : Iterator[nullable Object] */;
842 short int var50 /* : Bool */;
843 val* var51 /* : nullable Object */;
844 char var_c /* var c: Char */;
845 char var52 /* : Char */;
846 short int var53 /* : Bool */;
847 char var54 /* : Char */;
848 short int var55 /* : Bool */;
849 short int var57 /* : Bool */;
850 int cltype58;
851 int idtype59;
852 const char* var_class_name60;
853 short int var61 /* : Bool */;
854 short int var_62 /* var : Bool */;
855 char var63 /* : Char */;
856 short int var64 /* : Bool */;
857 short int var66 /* : Bool */;
858 int cltype67;
859 int idtype68;
860 const char* var_class_name69;
861 short int var70 /* : Bool */;
862 static val* varonce71;
863 val* var72 /* : String */;
864 char* var73 /* : NativeString */;
865 long var74 /* : Int */;
866 val* var75 /* : String */;
867 val* var76 /* : Array[Object] */;
868 long var77 /* : Int */;
869 val* var78 /* : NativeArray[Object] */;
870 val* var79 /* : String */;
871 val* var80 /* : MClassType */;
872 val* var81 /* : Array[MType] */;
873 val* var82 /* : nullable Object */;
874 short int var83 /* : Bool */;
875 int cltype84;
876 int idtype85;
877 const char* var_class_name86;
878 val* var88 /* : Range[Int] */;
879 long var89 /* : Int */;
880 long var90 /* : Int */;
881 val* var91 /* : Discrete */;
882 val* var92 /* : Discrete */;
883 val* var93 /* : Iterator[nullable Object] */;
884 short int var94 /* : Bool */;
885 val* var95 /* : nullable Object */;
886 long var_i96 /* var i: Int */;
887 long var97 /* : Int */;
888 val* var98 /* : ANodes[AFormaldef] */;
889 val* var99 /* : nullable Object */;
890 val* var_nfd100 /* var nfd: AFormaldef */;
891 val* var101 /* : nullable AType */;
892 val* var_nfdt /* var nfdt: nullable AType */;
893 val* var102 /* : null */;
894 short int var103 /* : Bool */;
895 short int var104 /* : Bool */;
896 val* var105 /* : nullable MType */;
897 val* var_bound /* var bound: nullable MType */;
898 val* var106 /* : null */;
899 short int var107 /* : Bool */;
900 short int var108 /* : Bool */;
901 static val* varonce109;
902 val* var110 /* : String */;
903 char* var111 /* : NativeString */;
904 long var112 /* : Int */;
905 val* var113 /* : String */;
906 val* var114 /* : nullable Object */;
907 static val* varonce115;
908 val* var116 /* : String */;
909 char* var117 /* : NativeString */;
910 long var118 /* : Int */;
911 val* var119 /* : String */;
912 val* var120 /* : Array[Object] */;
913 long var121 /* : Int */;
914 val* var122 /* : NativeArray[Object] */;
915 val* var123 /* : String */;
916 val* var124 /* : Array[MClassDef] */;
917 short int var125 /* : Bool */;
918 val* var126 /* : MClassType */;
919 val* var127 /* : MType */;
920 val* var_bound128 /* var bound: MType */;
921 val* var129 /* : MClassDef */;
922 val* var130 /* : MClassType */;
923 val* var131 /* : Array[MType] */;
924 val* var132 /* : nullable Object */;
925 val* var_bound133 /* var bound: MType */;
926 val* var135 /* : MClassType */;
927 val* var_bound_mtype /* var bound_mtype: MClassType */;
928 val* var136 /* : MClassDef */;
929 val* var137 /* : Location */;
930 val* var_mclassdef /* var mclassdef: MClassDef */;
931 val* var138 /* : HashMap[MClassDef, AClassdef] */;
932 short int var139 /* : Bool */;
933 val* var140 /* : ToolContext */;
934 static val* varonce141;
935 val* var142 /* : String */;
936 char* var143 /* : NativeString */;
937 long var144 /* : Int */;
938 val* var145 /* : String */;
939 val* var146 /* : MClassKind */;
940 static val* varonce147;
941 val* var148 /* : String */;
942 char* var149 /* : NativeString */;
943 long var150 /* : Int */;
944 val* var151 /* : String */;
945 val* var152 /* : String */;
946 val* var153 /* : Array[Object] */;
947 long var154 /* : Int */;
948 val* var155 /* : NativeArray[Object] */;
949 val* var156 /* : String */;
950 long var157 /* : Int */;
951 val* var158 /* : ToolContext */;
952 static val* varonce159;
953 val* var160 /* : String */;
954 char* var161 /* : NativeString */;
955 long var162 /* : Int */;
956 val* var163 /* : String */;
957 val* var164 /* : MClassKind */;
958 static val* varonce165;
959 val* var166 /* : String */;
960 char* var167 /* : NativeString */;
961 long var168 /* : Int */;
962 val* var169 /* : String */;
963 val* var170 /* : String */;
964 val* var171 /* : Array[Object] */;
965 long var172 /* : Int */;
966 val* var173 /* : NativeArray[Object] */;
967 val* var174 /* : String */;
968 long var175 /* : Int */;
969 var_nmodule = p0;
970 var_nclassdef = p1;
971 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
972 if (var == NULL) {
973 fprintf(stderr, "Runtime error: %s", "Cast failed");
974 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 106);
975 exit(1);
976 }
977 var_mmodule = var;
978 if (varonce) {
979 var1 = varonce;
980 } else {
981 var2 = "Object";
982 var3 = 6;
983 var4 = string__NativeString__to_s_with_length(var2, var3);
984 var1 = var4;
985 varonce = var1;
986 }
987 var5 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_nmodule, var_mmodule, var1) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
988 var_objectclass = var5;
989 var6 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclass]))(var_nclassdef) /* mclass on <var_nclassdef:AClassdef>*/;
990 var_mclass = var6;
991 var7 = NULL;
992 if (var_mclass == NULL) {
993 var8 = 1; /* is null */
994 } else {
995 var8 = 0; /* arg is null but recv is not */
996 }
997 if (var8){
998 goto RET_LABEL;
999 } else {
1000 }
1001 var9 = NEW_array__Array(&type_array__Arraystring__String);
1002 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[String]>*/;
1003 CHECK_NEW_array__Array(var9);
1004 var_names = var9;
1005 var10 = NEW_array__Array(&type_array__Arraymodel__MType);
1006 ((void (*)(val*))(var10->class->vft[COLOR_array__Array__init]))(var10) /* init on <var10:Array[MType]>*/;
1007 CHECK_NEW_array__Array(var10);
1008 var_bounds = var10;
1009 /* <var_nclassdef:AClassdef> isa AStdClassdef */
1010 cltype = type_parser_nodes__AStdClassdef.color;
1011 idtype = type_parser_nodes__AStdClassdef.id;
1012 if(cltype >= var_nclassdef->type->table_size) {
1013 var12 = 0;
1014 } else {
1015 var12 = var_nclassdef->type->type_table[cltype] == idtype;
1016 }
1017 var_ = var12;
1018 if (var12){
1019 var13 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
1020 var14 = 0;
1021 { /* Inline kernel#Int#> (var13,var14) */
1022 /* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
1023 /* <var14:Int> isa OTHER */
1024 var17 = 1; /* easy <var14:Int> isa OTHER*/
1025 if (!var17) {
1026 var_class_name = type_kernel__Int.name;
1027 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1028 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1029 exit(1);
1030 }
1031 var20 = var13 > var14;
1032 var15 = var20;
1033 goto RET_LABEL16;
1034 RET_LABEL16:(void)0;
1035 }
1036 var11 = var15;
1037 } else {
1038 var11 = var_;
1039 }
1040 if (var11){
1041 var21 = NEW_range__Range(&type_range__Rangekernel__Int);
1042 var22 = 0;
1043 var23 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
1044 var24 = BOX_kernel__Int(var22); /* autobox from Int to Discrete */
1045 var25 = BOX_kernel__Int(var23); /* autobox from Int to Discrete */
1046 ((void (*)(val*, val*, val*))(var21->class->vft[COLOR_range__Range__without_last]))(var21, var24, var25) /* without_last on <var21:Range[Int]>*/;
1047 CHECK_NEW_range__Range(var21);
1048 var26 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_collection__Collection__iterator]))(var21) /* iterator on <var21:Range[Int]>*/;
1049 for(;;) {
1050 var27 = ((short int (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var26) /* is_ok on <var26:Iterator[nullable Object]>*/;
1051 if(!var27) break;
1052 var28 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__item]))(var26) /* item on <var26:Iterator[nullable Object]>*/;
1053 var29 = ((struct instance_kernel__Int*)var28)->value; /* autounbox from nullable Object to Int */;
1054 var_i = var29;
1055 var30 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_formaldefs]))(var_nclassdef) /* n_formaldefs on <var_nclassdef:AClassdef(AStdClassdef)>*/;
1056 var31 = ((val* (*)(val*, long))(var30->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var30, var_i) /* [] on <var30:ANodes[AFormaldef]>*/;
1057 var_nfd = var31;
1058 var32 = ((val* (*)(val*))(var_nfd->class->vft[COLOR_parser_nodes__AFormaldef__n_id]))(var_nfd) /* n_id on <var_nfd:AFormaldef>*/;
1059 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_parser_nodes__Token__text]))(var32) /* text on <var32:TClassid>*/;
1060 var_ptname = var33;
1061 var34 = ((short int (*)(val*, val*))(var_names->class->vft[COLOR_abstract_collection__Collection__has]))(var_names, var_ptname) /* has on <var_names:Array[String]>*/;
1062 if (var34){
1063 if (varonce35) {
1064 var36 = varonce35;
1065 } else {
1066 var37 = "Error: A formal parameter type `";
1067 var38 = 32;
1068 var39 = string__NativeString__to_s_with_length(var37, var38);
1069 var36 = var39;
1070 varonce35 = var36;
1071 }
1072 if (varonce40) {
1073 var41 = varonce40;
1074 } else {
1075 var42 = "\' already exists";
1076 var43 = 16;
1077 var44 = string__NativeString__to_s_with_length(var42, var43);
1078 var41 = var44;
1079 varonce40 = var41;
1080 }
1081 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
1082 { /* var45 = array_instance Array[Object] */
1083 var46 = 3;
1084 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
1085 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var36;
1086 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var_ptname;
1087 ((struct instance_array__NativeArray*)var47)->values[2] = (val*) var41;
1088 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
1089 CHECK_NEW_array__Array(var45);
1090 }
1091 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
1092 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nfd, var48) /* error on <self:ModelBuilder>*/;
1093 goto RET_LABEL;
1094 } else {
1095 }
1096 var49 = ((val* (*)(val*))(var_ptname->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_ptname) /* iterator on <var_ptname:String>*/;
1097 for(;;) {
1098 var50 = ((short int (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var49) /* is_ok on <var49:Iterator[nullable Object]>*/;
1099 if(!var50) break;
1100 var51 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__item]))(var49) /* item on <var49:Iterator[nullable Object]>*/;
1101 var52 = ((struct instance_kernel__Char*)var51)->value; /* autounbox from nullable Object to Char */;
1102 var_c = var52;
1103 var54 = 'a';
1104 { /* Inline kernel#Char#>= (var_c,var54) */
1105 /* Covariant cast for argument 0 (i) <var54:Char> isa OTHER */
1106 /* <var54:Char> isa OTHER */
1107 var57 = 1; /* easy <var54:Char> isa OTHER*/
1108 if (!var57) {
1109 var_class_name60 = type_kernel__Char.name;
1110 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60);
1111 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 438);
1112 exit(1);
1113 }
1114 var61 = var_c >= var54;
1115 var55 = var61;
1116 goto RET_LABEL56;
1117 RET_LABEL56:(void)0;
1118 }
1119 var_62 = var55;
1120 if (var55){
1121 var63 = 'z';
1122 { /* Inline kernel#Char#<= (var_c,var63) */
1123 /* Covariant cast for argument 0 (i) <var63:Char> isa OTHER */
1124 /* <var63:Char> isa OTHER */
1125 var66 = 1; /* easy <var63:Char> isa OTHER*/
1126 if (!var66) {
1127 var_class_name69 = type_kernel__Char.name;
1128 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name69);
1129 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 436);
1130 exit(1);
1131 }
1132 var70 = var_c <= var63;
1133 var64 = var70;
1134 goto RET_LABEL65;
1135 RET_LABEL65:(void)0;
1136 }
1137 var53 = var64;
1138 } else {
1139 var53 = var_62;
1140 }
1141 if (var53){
1142 if (varonce71) {
1143 var72 = varonce71;
1144 } else {
1145 var73 = "Warning: lowercase in the formal parameter type ";
1146 var74 = 48;
1147 var75 = string__NativeString__to_s_with_length(var73, var74);
1148 var72 = var75;
1149 varonce71 = var72;
1150 }
1151 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
1152 { /* var76 = array_instance Array[Object] */
1153 var77 = 2;
1154 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
1155 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var72;
1156 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var_ptname;
1157 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
1158 CHECK_NEW_array__Array(var76);
1159 }
1160 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
1161 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(self, var_nfd, var79) /* warning on <self:ModelBuilder>*/;
1162 goto BREAK_label;
1163 } else {
1164 }
1165 CONTINUE_label: (void)0;
1166 ((void (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__next]))(var49) /* next on <var49:Iterator[nullable Object]>*/;
1167 }
1168 BREAK_label: (void)0;
1169 ((void (*)(val*, val*))(var_names->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_names, var_ptname) /* add on <var_names:Array[String]>*/;
1170 var80 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
1171 var81 = ((val* (*)(val*))(var80->class->vft[COLOR_model__MClassType__arguments]))(var80) /* arguments on <var80:MClassType>*/;
1172 var82 = ((val* (*)(val*, long))(var81->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var81, var_i) /* [] on <var81:Array[MType]>*/;
1173 /* <var82:nullable Object(MType)> isa MParameterType */
1174 cltype84 = type_model__MParameterType.color;
1175 idtype85 = type_model__MParameterType.id;
1176 if(cltype84 >= var82->type->table_size) {
1177 var83 = 0;
1178 } else {
1179 var83 = var82->type->type_table[cltype84] == idtype85;
1180 }
1181 if (!var83) {
1182 var_class_name86 = var82 == NULL ? "null" : var82->type->name;
1183 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name86);
1184 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 128);
1185 exit(1);
1186 }
1187 ((void (*)(val*, val*))(var_nfd->class->vft[COLOR_modelize_class__AFormaldef__mtype_61d]))(var_nfd, var82) /* mtype= on <var_nfd:AFormaldef>*/;
1188 CONTINUE_label87: (void)0;
1189 ((void (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__next]))(var26) /* next on <var26:Iterator[nullable Object]>*/;
1190 }
1191 BREAK_label87: (void)0;
1192 var88 = NEW_range__Range(&type_range__Rangekernel__Int);
1193 var89 = 0;
1194 var90 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
1195 var91 = BOX_kernel__Int(var89); /* autobox from Int to Discrete */
1196 var92 = BOX_kernel__Int(var90); /* autobox from Int to Discrete */
1197 ((void (*)(val*, val*, val*))(var88->class->vft[COLOR_range__Range__without_last]))(var88, var91, var92) /* without_last on <var88:Range[Int]>*/;
1198 CHECK_NEW_range__Range(var88);
1199 var93 = ((val* (*)(val*))(var88->class->vft[COLOR_abstract_collection__Collection__iterator]))(var88) /* iterator on <var88:Range[Int]>*/;
1200 for(;;) {
1201 var94 = ((short int (*)(val*))(var93->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var93) /* is_ok on <var93:Iterator[nullable Object]>*/;
1202 if(!var94) break;
1203 var95 = ((val* (*)(val*))(var93->class->vft[COLOR_abstract_collection__Iterator__item]))(var93) /* item on <var93:Iterator[nullable Object]>*/;
1204 var97 = ((struct instance_kernel__Int*)var95)->value; /* autounbox from nullable Object to Int */;
1205 var_i96 = var97;
1206 var98 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_formaldefs]))(var_nclassdef) /* n_formaldefs on <var_nclassdef:AClassdef(AStdClassdef)>*/;
1207 var99 = ((val* (*)(val*, long))(var98->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var98, var_i96) /* [] on <var98:ANodes[AFormaldef]>*/;
1208 var_nfd100 = var99;
1209 var101 = ((val* (*)(val*))(var_nfd100->class->vft[COLOR_parser_nodes__AFormaldef__n_type]))(var_nfd100) /* n_type on <var_nfd100:AFormaldef>*/;
1210 var_nfdt = var101;
1211 var102 = NULL;
1212 if (var_nfdt == NULL) {
1213 var103 = 0; /* is null */
1214 } else {
1215 var103 = 1; /* arg is null and recv is not */
1216 }
1217 if (var103){
1218 var104 = 0;
1219 var105 = ((val* (*)(val*, val*, val*, short int))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype_unchecked]))(self, var_nclassdef, var_nfdt, var104) /* resolve_mtype_unchecked on <self:ModelBuilder>*/;
1220 var_bound = var105;
1221 var106 = NULL;
1222 if (var_bound == NULL) {
1223 var107 = 1; /* is null */
1224 } else {
1225 var107 = 0; /* arg is null but recv is not */
1226 }
1227 if (var107){
1228 goto RET_LABEL;
1229 } else {
1230 }
1231 var108 = ((short int (*)(val*))(var_bound->class->vft[COLOR_model__MType__need_anchor]))(var_bound) /* need_anchor on <var_bound:nullable MType(MType)>*/;
1232 if (var108){
1233 if (varonce109) {
1234 var110 = varonce109;
1235 } else {
1236 var111 = "Error: Formal parameter type `";
1237 var112 = 30;
1238 var113 = string__NativeString__to_s_with_length(var111, var112);
1239 var110 = var113;
1240 varonce109 = var110;
1241 }
1242 var114 = ((val* (*)(val*, long))(var_names->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_names, var_i96) /* [] on <var_names:Array[String]>*/;
1243 if (varonce115) {
1244 var116 = varonce115;
1245 } else {
1246 var117 = "\' bounded with a formal parameter type";
1247 var118 = 38;
1248 var119 = string__NativeString__to_s_with_length(var117, var118);
1249 var116 = var119;
1250 varonce115 = var116;
1251 }
1252 var120 = NEW_array__Array(&type_array__Arraykernel__Object);
1253 { /* var120 = array_instance Array[Object] */
1254 var121 = 3;
1255 var122 = NEW_array__NativeArray(var121, &type_array__NativeArraykernel__Object);
1256 ((struct instance_array__NativeArray*)var122)->values[0] = (val*) var110;
1257 ((struct instance_array__NativeArray*)var122)->values[1] = (val*) var114;
1258 ((struct instance_array__NativeArray*)var122)->values[2] = (val*) var116;
1259 ((void (*)(val*, val*, long))(var120->class->vft[COLOR_array__Array__with_native]))(var120, var122, var121) /* with_native on <var120:Array[Object]>*/;
1260 CHECK_NEW_array__Array(var120);
1261 }
1262 var123 = ((val* (*)(val*))(var120->class->vft[COLOR_string__Object__to_s]))(var120) /* to_s on <var120:Array[Object]>*/;
1263 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nfd100, var123) /* error on <self:ModelBuilder>*/;
1264 } else {
1265 ((void (*)(val*, val*))(var_bounds->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_bounds, var_bound) /* add on <var_bounds:Array[MType]>*/;
1266 ((void (*)(val*, val*))(var_nfd100->class->vft[COLOR_modelize_class__AFormaldef__bound_61d]))(var_nfd100, var_bound) /* bound= on <var_nfd100:AFormaldef>*/;
1267 }
1268 } else {
1269 var124 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclassdefs]))(var_mclass) /* mclassdefs on <var_mclass:nullable MClass(MClass)>*/;
1270 var125 = ((short int (*)(val*))(var124->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var124) /* is_empty on <var124:Array[MClassDef]>*/;
1271 if (var125){
1272 if (var_objectclass == NULL) {
1273 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1274 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 147);
1275 exit(1);
1276 } else {
1277 var126 = ((val* (*)(val*))(var_objectclass->class->vft[COLOR_model__MClass__mclass_type]))(var_objectclass) /* mclass_type on <var_objectclass:nullable MClass>*/;
1278 }
1279 var127 = ((val* (*)(val*))(var126->class->vft[COLOR_model__MType__as_nullable]))(var126) /* as_nullable on <var126:MClassType>*/;
1280 var_bound128 = var127;
1281 ((void (*)(val*, val*))(var_bounds->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_bounds, var_bound128) /* add on <var_bounds:Array[MType]>*/;
1282 ((void (*)(val*, val*))(var_nfd100->class->vft[COLOR_modelize_class__AFormaldef__bound_61d]))(var_nfd100, var_bound128) /* bound= on <var_nfd100:AFormaldef>*/;
1283 } else {
1284 var129 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on <var_mclass:nullable MClass(MClass)>*/;
1285 var130 = ((val* (*)(val*))(var129->class->vft[COLOR_model__MClassDef__bound_mtype]))(var129) /* bound_mtype on <var129:MClassDef>*/;
1286 var131 = ((val* (*)(val*))(var130->class->vft[COLOR_model__MClassType__arguments]))(var130) /* arguments on <var130:MClassType>*/;
1287 var132 = ((val* (*)(val*, long))(var131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var131, var_i96) /* [] on <var131:Array[MType]>*/;
1288 var_bound133 = var132;
1289 ((void (*)(val*, val*))(var_bounds->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_bounds, var_bound133) /* add on <var_bounds:Array[MType]>*/;
1290 ((void (*)(val*, val*))(var_nfd100->class->vft[COLOR_modelize_class__AFormaldef__bound_61d]))(var_nfd100, var_bound133) /* bound= on <var_nfd100:AFormaldef>*/;
1291 }
1292 }
1293 CONTINUE_label134: (void)0;
1294 ((void (*)(val*))(var93->class->vft[COLOR_abstract_collection__Iterator__next]))(var93) /* next on <var93:Iterator[nullable Object]>*/;
1295 }
1296 BREAK_label134: (void)0;
1297 } else {
1298 }
1299 var135 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var_bounds) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
1300 var_bound_mtype = var135;
1301 var136 = NEW_model__MClassDef(&type_model__MClassDef);
1302 var137 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:AClassdef>*/;
1303 ((void (*)(val*, val*, val*, val*, val*))(var136->class->vft[COLOR_model__MClassDef__init]))(var136, var_mmodule, var_bound_mtype, var137, var_names) /* init on <var136:MClassDef>*/;
1304 CHECK_NEW_model__MClassDef(var136);
1305 var_mclassdef = var136;
1306 ((void (*)(val*, val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef_61d]))(var_nclassdef, var_mclassdef) /* mclassdef= on <var_nclassdef:AClassdef>*/;
1307 var138 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(self) /* mclassdef2nclassdef on <self:ModelBuilder>*/;
1308 ((void (*)(val*, val*, val*))(var138->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var138, var_mclassdef, var_nclassdef) /* []= on <var138:HashMap[MClassDef, AClassdef]>*/;
1309 var139 = ((short int (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__is_intro]))(var_mclassdef) /* is_intro on <var_mclassdef:MClassDef>*/;
1310 if (var139){
1311 var140 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1312 if (varonce141) {
1313 var142 = varonce141;
1314 } else {
1315 var143 = " introduces new ";
1316 var144 = 16;
1317 var145 = string__NativeString__to_s_with_length(var143, var144);
1318 var142 = var145;
1319 varonce141 = var142;
1320 }
1321 var146 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:nullable MClass(MClass)>*/;
1322 if (varonce147) {
1323 var148 = varonce147;
1324 } else {
1325 var149 = " ";
1326 var150 = 1;
1327 var151 = string__NativeString__to_s_with_length(var149, var150);
1328 var148 = var151;
1329 varonce147 = var148;
1330 }
1331 var152 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__full_name]))(var_mclass) /* full_name on <var_mclass:nullable MClass(MClass)>*/;
1332 var153 = NEW_array__Array(&type_array__Arraykernel__Object);
1333 { /* var153 = array_instance Array[Object] */
1334 var154 = 5;
1335 var155 = NEW_array__NativeArray(var154, &type_array__NativeArraykernel__Object);
1336 ((struct instance_array__NativeArray*)var155)->values[0] = (val*) var_mclassdef;
1337 ((struct instance_array__NativeArray*)var155)->values[1] = (val*) var142;
1338 ((struct instance_array__NativeArray*)var155)->values[2] = (val*) var146;
1339 ((struct instance_array__NativeArray*)var155)->values[3] = (val*) var148;
1340 ((struct instance_array__NativeArray*)var155)->values[4] = (val*) var152;
1341 ((void (*)(val*, val*, long))(var153->class->vft[COLOR_array__Array__with_native]))(var153, var155, var154) /* with_native on <var153:Array[Object]>*/;
1342 CHECK_NEW_array__Array(var153);
1343 }
1344 var156 = ((val* (*)(val*))(var153->class->vft[COLOR_string__Object__to_s]))(var153) /* to_s on <var153:Array[Object]>*/;
1345 var157 = 3;
1346 ((void (*)(val*, val*, long))(var140->class->vft[COLOR_toolcontext__ToolContext__info]))(var140, var156, var157) /* info on <var140:ToolContext>*/;
1347 } else {
1348 var158 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1349 if (varonce159) {
1350 var160 = varonce159;
1351 } else {
1352 var161 = " refine ";
1353 var162 = 8;
1354 var163 = string__NativeString__to_s_with_length(var161, var162);
1355 var160 = var163;
1356 varonce159 = var160;
1357 }
1358 var164 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:nullable MClass(MClass)>*/;
1359 if (varonce165) {
1360 var166 = varonce165;
1361 } else {
1362 var167 = " ";
1363 var168 = 1;
1364 var169 = string__NativeString__to_s_with_length(var167, var168);
1365 var166 = var169;
1366 varonce165 = var166;
1367 }
1368 var170 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__full_name]))(var_mclass) /* full_name on <var_mclass:nullable MClass(MClass)>*/;
1369 var171 = NEW_array__Array(&type_array__Arraykernel__Object);
1370 { /* var171 = array_instance Array[Object] */
1371 var172 = 5;
1372 var173 = NEW_array__NativeArray(var172, &type_array__NativeArraykernel__Object);
1373 ((struct instance_array__NativeArray*)var173)->values[0] = (val*) var_mclassdef;
1374 ((struct instance_array__NativeArray*)var173)->values[1] = (val*) var160;
1375 ((struct instance_array__NativeArray*)var173)->values[2] = (val*) var164;
1376 ((struct instance_array__NativeArray*)var173)->values[3] = (val*) var166;
1377 ((struct instance_array__NativeArray*)var173)->values[4] = (val*) var170;
1378 ((void (*)(val*, val*, long))(var171->class->vft[COLOR_array__Array__with_native]))(var171, var173, var172) /* with_native on <var171:Array[Object]>*/;
1379 CHECK_NEW_array__Array(var171);
1380 }
1381 var174 = ((val* (*)(val*))(var171->class->vft[COLOR_string__Object__to_s]))(var171) /* to_s on <var171:Array[Object]>*/;
1382 var175 = 3;
1383 ((void (*)(val*, val*, long))(var158->class->vft[COLOR_toolcontext__ToolContext__info]))(var158, var174, var175) /* info on <var158:ToolContext>*/;
1384 }
1385 RET_LABEL:;
1386 }
1387 /* method modelize_class#ModelBuilder#build_a_mclassdef for (self: Object, AModule, AClassdef) */
1388 void VIRTUAL_modelize_class__ModelBuilder__build_a_mclassdef(val* self, val* p0, val* p1) {
1389 modelize_class__ModelBuilder__build_a_mclassdef(self, p0, p1);
1390 RET_LABEL:;
1391 }
1392 /* method modelize_class#ModelBuilder#collect_a_mclassdef_inheritance for (self: ModelBuilder, AModule, AClassdef) */
1393 void modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(val* self, val* p0, val* p1) {
1394 val* var_nmodule /* var nmodule: AModule */;
1395 val* var_nclassdef /* var nclassdef: AClassdef */;
1396 val* var /* : nullable MModule */;
1397 val* var_mmodule /* var mmodule: MModule */;
1398 static val* varonce;
1399 val* var1 /* : String */;
1400 char* var2 /* : NativeString */;
1401 long var3 /* : Int */;
1402 val* var4 /* : String */;
1403 val* var5 /* : nullable MClass */;
1404 val* var_objectclass /* var objectclass: nullable MClass */;
1405 static val* varonce6;
1406 val* var7 /* : String */;
1407 char* var8 /* : NativeString */;
1408 long var9 /* : Int */;
1409 val* var10 /* : String */;
1410 val* var11 /* : nullable MClass */;
1411 val* var_pointerclass /* var pointerclass: nullable MClass */;
1412 val* var12 /* : nullable MClass */;
1413 val* var_mclass /* var mclass: MClass */;
1414 val* var13 /* : nullable MClassDef */;
1415 val* var_mclassdef /* var mclassdef: MClassDef */;
1416 short int var14 /* : Bool */;
1417 short int var_specobject /* var specobject: Bool */;
1418 val* var15 /* : Array[MClassType] */;
1419 val* var_supertypes /* var supertypes: Array[MClassType] */;
1420 short int var16 /* : Bool */;
1421 int cltype;
1422 int idtype;
1423 val* var17 /* : ANodes[ASuperclass] */;
1424 val* var18 /* : Iterator[nullable Object] */;
1425 short int var19 /* : Bool */;
1426 val* var20 /* : nullable Object */;
1427 val* var_nsc /* var nsc: ASuperclass */;
1428 short int var21 /* : Bool */;
1429 val* var22 /* : AType */;
1430 val* var_ntype /* var ntype: AType */;
1431 short int var23 /* : Bool */;
1432 val* var24 /* : nullable MType */;
1433 val* var_mtype /* var mtype: nullable MType */;
1434 val* var25 /* : null */;
1435 short int var26 /* : Bool */;
1436 short int var27 /* : Bool */;
1437 int cltype28;
1438 int idtype29;
1439 short int var30 /* : Bool */;
1440 static val* varonce31;
1441 val* var32 /* : String */;
1442 char* var33 /* : NativeString */;
1443 long var34 /* : Int */;
1444 val* var35 /* : String */;
1445 short int var36 /* : Bool */;
1446 short int var_ /* var : Bool */;
1447 short int var37 /* : Bool */;
1448 val* var38 /* : MClassKind */;
1449 val* var39 /* : MClassKind */;
1450 short int var40 /* : Bool */;
1451 val* var41 /* : String */;
1452 static val* varonce42;
1453 val* var43 /* : String */;
1454 char* var44 /* : NativeString */;
1455 long var45 /* : Int */;
1456 val* var46 /* : String */;
1457 short int var47 /* : Bool */;
1458 val* var48 /* : MClassType */;
1459 val* var49 /* : MClassType */;
1460 short int var50 /* : Bool */;
1461 val* var51 /* : String */;
1462 static val* varonce52;
1463 val* var53 /* : String */;
1464 char* var54 /* : NativeString */;
1465 long var55 /* : Int */;
1466 val* var56 /* : String */;
1467 short int var57 /* : Bool */;
1468 short int var_58 /* var : Bool */;
1469 val* var59 /* : null */;
1470 short int var60 /* : Bool */;
1471 val* var61 /* : MClassType */;
1472 short int var62 /* : Bool */;
1473 short int var63 /* : Bool */;
1474 val* var64 /* : ToolContext */;
1475 static val* varonce65;
1476 val* var66 /* : String */;
1477 char* var67 /* : NativeString */;
1478 long var68 /* : Int */;
1479 val* var69 /* : String */;
1480 static val* varonce70;
1481 val* var71 /* : String */;
1482 char* var72 /* : NativeString */;
1483 long var73 /* : Int */;
1484 val* var74 /* : String */;
1485 val* var75 /* : String */;
1486 val* var76 /* : Array[Object] */;
1487 long var77 /* : Int */;
1488 val* var78 /* : NativeArray[Object] */;
1489 val* var79 /* : String */;
1490 long var80 /* : Int */;
1491 var_nmodule = p0;
1492 var_nclassdef = p1;
1493 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
1494 if (var == NULL) {
1495 fprintf(stderr, "Runtime error: %s", "Cast failed");
1496 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 174);
1497 exit(1);
1498 }
1499 var_mmodule = var;
1500 if (varonce) {
1501 var1 = varonce;
1502 } else {
1503 var2 = "Object";
1504 var3 = 6;
1505 var4 = string__NativeString__to_s_with_length(var2, var3);
1506 var1 = var4;
1507 varonce = var1;
1508 }
1509 var5 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_nmodule, var_mmodule, var1) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
1510 var_objectclass = var5;
1511 if (varonce6) {
1512 var7 = varonce6;
1513 } else {
1514 var8 = "Pointer";
1515 var9 = 7;
1516 var10 = string__NativeString__to_s_with_length(var8, var9);
1517 var7 = var10;
1518 varonce6 = var7;
1519 }
1520 var11 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_nmodule, var_mmodule, var7) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
1521 var_pointerclass = var11;
1522 var12 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclass]))(var_nclassdef) /* mclass on <var_nclassdef:AClassdef>*/;
1523 if (var12 == NULL) {
1524 fprintf(stderr, "Runtime error: %s", "Cast failed");
1525 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 177);
1526 exit(1);
1527 }
1528 var_mclass = var12;
1529 var13 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
1530 if (var13 == NULL) {
1531 fprintf(stderr, "Runtime error: %s", "Cast failed");
1532 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 178);
1533 exit(1);
1534 }
1535 var_mclassdef = var13;
1536 var14 = 1;
1537 var_specobject = var14;
1538 var15 = NEW_array__Array(&type_array__Arraymodel__MClassType);
1539 ((void (*)(val*))(var15->class->vft[COLOR_array__Array__init]))(var15) /* init on <var15:Array[MClassType]>*/;
1540 CHECK_NEW_array__Array(var15);
1541 var_supertypes = var15;
1542 /* <var_nclassdef:AClassdef> isa AStdClassdef */
1543 cltype = type_parser_nodes__AStdClassdef.color;
1544 idtype = type_parser_nodes__AStdClassdef.id;
1545 if(cltype >= var_nclassdef->type->table_size) {
1546 var16 = 0;
1547 } else {
1548 var16 = var_nclassdef->type->type_table[cltype] == idtype;
1549 }
1550 if (var16){
1551 var17 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AStdClassdef__n_superclasses]))(var_nclassdef) /* n_superclasses on <var_nclassdef:AClassdef(AStdClassdef)>*/;
1552 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Collection__iterator]))(var17) /* iterator on <var17:ANodes[ASuperclass]>*/;
1553 for(;;) {
1554 var19 = ((short int (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var18) /* is_ok on <var18:Iterator[nullable Object]>*/;
1555 if(!var19) break;
1556 var20 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__item]))(var18) /* item on <var18:Iterator[nullable Object]>*/;
1557 var_nsc = var20;
1558 var21 = 0;
1559 var_specobject = var21;
1560 var22 = ((val* (*)(val*))(var_nsc->class->vft[COLOR_parser_nodes__ASuperclass__n_type]))(var_nsc) /* n_type on <var_nsc:ASuperclass>*/;
1561 var_ntype = var22;
1562 var23 = 0;
1563 var24 = ((val* (*)(val*, val*, val*, short int))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype_unchecked]))(self, var_nclassdef, var_ntype, var23) /* resolve_mtype_unchecked on <self:ModelBuilder>*/;
1564 var_mtype = var24;
1565 var25 = NULL;
1566 if (var_mtype == NULL) {
1567 var26 = 1; /* is null */
1568 } else {
1569 var26 = 0; /* arg is null but recv is not */
1570 }
1571 if (var26){
1572 goto CONTINUE_label;
1573 } else {
1574 }
1575 /* <var_mtype:nullable MType(MType)> isa MClassType */
1576 cltype28 = type_model__MClassType.color;
1577 idtype29 = type_model__MClassType.id;
1578 if(cltype28 >= var_mtype->type->table_size) {
1579 var27 = 0;
1580 } else {
1581 var27 = var_mtype->type->type_table[cltype28] == idtype29;
1582 }
1583 var30 = !var27;
1584 if (var30){
1585 if (varonce31) {
1586 var32 = varonce31;
1587 } else {
1588 var33 = "Error: supertypes cannot be a formal type";
1589 var34 = 41;
1590 var35 = string__NativeString__to_s_with_length(var33, var34);
1591 var32 = var35;
1592 varonce31 = var32;
1593 }
1594 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var32) /* error on <self:ModelBuilder>*/;
1595 goto RET_LABEL;
1596 } else {
1597 }
1598 ((void (*)(val*, val*))(var_supertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supertypes, var_mtype) /* add on <var_supertypes:Array[MClassType]>*/;
1599 CONTINUE_label: (void)0;
1600 ((void (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__next]))(var18) /* next on <var18:Iterator[nullable Object]>*/;
1601 }
1602 BREAK_label: (void)0;
1603 } else {
1604 }
1605 var_ = var_specobject;
1606 if (var_specobject){
1607 var37 = ((short int (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__is_intro]))(var_mclassdef) /* is_intro on <var_mclassdef:MClassDef>*/;
1608 var36 = var37;
1609 } else {
1610 var36 = var_;
1611 }
1612 if (var36){
1613 var38 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
1614 var39 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:ModelBuilder>*/;
1615 var40 = ((short int (*)(val*, val*))(var38->class->vft[COLOR_kernel__Object___61d_61d]))(var38, var39) /* == on <var38:MClassKind>*/;
1616 if (var40){
1617 var41 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__name]))(var_mclass) /* name on <var_mclass:MClass>*/;
1618 if (varonce42) {
1619 var43 = varonce42;
1620 } else {
1621 var44 = "Pointer";
1622 var45 = 7;
1623 var46 = string__NativeString__to_s_with_length(var44, var45);
1624 var43 = var46;
1625 varonce42 = var43;
1626 }
1627 var47 = ((short int (*)(val*, val*))(var41->class->vft[COLOR_kernel__Object___61d_61d]))(var41, var43) /* == on <var41:String>*/;
1628 if (var47){
1629 if (var_objectclass == NULL) {
1630 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1631 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 199);
1632 exit(1);
1633 } else {
1634 var48 = ((val* (*)(val*))(var_objectclass->class->vft[COLOR_model__MClass__mclass_type]))(var_objectclass) /* mclass_type on <var_objectclass:nullable MClass>*/;
1635 }
1636 ((void (*)(val*, val*))(var_supertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supertypes, var48) /* add on <var_supertypes:Array[MClassType]>*/;
1637 } else {
1638 if (var_pointerclass == NULL) {
1639 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1640 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 201);
1641 exit(1);
1642 } else {
1643 var49 = ((val* (*)(val*))(var_pointerclass->class->vft[COLOR_model__MClass__mclass_type]))(var_pointerclass) /* mclass_type on <var_pointerclass:nullable MClass>*/;
1644 }
1645 ((void (*)(val*, val*))(var_supertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supertypes, var49) /* add on <var_supertypes:Array[MClassType]>*/;
1646 }
1647 } else {
1648 var51 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__name]))(var_mclass) /* name on <var_mclass:MClass>*/;
1649 if (varonce52) {
1650 var53 = varonce52;
1651 } else {
1652 var54 = "Object";
1653 var55 = 6;
1654 var56 = string__NativeString__to_s_with_length(var54, var55);
1655 var53 = var56;
1656 varonce52 = var53;
1657 }
1658 var57 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_kernel__Object___33d_61d]))(var51, var53) /* != on <var51:String>*/;
1659 var_58 = var57;
1660 if (var57){
1661 var59 = NULL;
1662 if (var_objectclass == NULL) {
1663 var60 = 0; /* is null */
1664 } else {
1665 var60 = 1; /* arg is null and recv is not */
1666 }
1667 var50 = var60;
1668 } else {
1669 var50 = var_58;
1670 }
1671 if (var50){
1672 var61 = ((val* (*)(val*))(var_objectclass->class->vft[COLOR_model__MClass__mclass_type]))(var_objectclass) /* mclass_type on <var_objectclass:nullable MClass(MClass)>*/;
1673 ((void (*)(val*, val*))(var_supertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supertypes, var61) /* add on <var_supertypes:Array[MClassType]>*/;
1674 } else {
1675 }
1676 }
1677 } else {
1678 }
1679 ((void (*)(val*, val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__set_supertypes]))(var_mclassdef, var_supertypes) /* set_supertypes on <var_mclassdef:MClassDef>*/;
1680 var62 = ((short int (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_supertypes) /* is_empty on <var_supertypes:Array[MClassType]>*/;
1681 var63 = !var62;
1682 if (var63){
1683 var64 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1684 if (varonce65) {
1685 var66 = varonce65;
1686 } else {
1687 var67 = " new super-types: ";
1688 var68 = 18;
1689 var69 = string__NativeString__to_s_with_length(var67, var68);
1690 var66 = var69;
1691 varonce65 = var66;
1692 }
1693 if (varonce70) {
1694 var71 = varonce70;
1695 } else {
1696 var72 = ", ";
1697 var73 = 2;
1698 var74 = string__NativeString__to_s_with_length(var72, var73);
1699 var71 = var74;
1700 varonce70 = var71;
1701 }
1702 var75 = ((val* (*)(val*, val*))(var_supertypes->class->vft[COLOR_string__Collection__join]))(var_supertypes, var71) /* join on <var_supertypes:Array[MClassType]>*/;
1703 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
1704 { /* var76 = array_instance Array[Object] */
1705 var77 = 3;
1706 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
1707 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_mclassdef;
1708 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var66;
1709 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var75;
1710 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
1711 CHECK_NEW_array__Array(var76);
1712 }
1713 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
1714 var80 = 3;
1715 ((void (*)(val*, val*, long))(var64->class->vft[COLOR_toolcontext__ToolContext__info]))(var64, var79, var80) /* info on <var64:ToolContext>*/;
1716 } else {
1717 }
1718 RET_LABEL:;
1719 }
1720 /* method modelize_class#ModelBuilder#collect_a_mclassdef_inheritance for (self: Object, AModule, AClassdef) */
1721 void VIRTUAL_modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(val* self, val* p0, val* p1) {
1722 modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(self, p0, p1);
1723 RET_LABEL:;
1724 }
1725 /* method modelize_class#ModelBuilder#check_supertypes for (self: ModelBuilder, AModule, AClassdef) */
1726 void modelize_class__ModelBuilder__check_supertypes(val* self, val* p0, val* p1) {
1727 val* var_nmodule /* var nmodule: AModule */;
1728 val* var_nclassdef /* var nclassdef: AClassdef */;
1729 val* var /* : nullable MModule */;
1730 val* var_mmodule /* var mmodule: MModule */;
1731 static val* varonce;
1732 val* var1 /* : String */;
1733 char* var2 /* : NativeString */;
1734 long var3 /* : Int */;
1735 val* var4 /* : String */;
1736 val* var5 /* : nullable MClass */;
1737 val* var_objectclass /* var objectclass: nullable MClass */;
1738 val* var6 /* : nullable MClass */;
1739 val* var_mclass /* var mclass: MClass */;
1740 val* var7 /* : nullable MClassDef */;
1741 val* var_mclassdef /* var mclassdef: MClassDef */;
1742 val* var8 /* : Array[MClassType] */;
1743 val* var9 /* : Iterator[nullable Object] */;
1744 short int var10 /* : Bool */;
1745 val* var11 /* : nullable Object */;
1746 val* var_s /* var s: MClassType */;
1747 val* var12 /* : MClassType */;
1748 val* var13 /* : MClassType */;
1749 short int var14 /* : Bool */;
1750 static val* varonce15;
1751 val* var16 /* : String */;
1752 char* var17 /* : NativeString */;
1753 long var18 /* : Int */;
1754 val* var19 /* : String */;
1755 static val* varonce20;
1756 val* var21 /* : String */;
1757 char* var22 /* : NativeString */;
1758 long var23 /* : Int */;
1759 val* var24 /* : String */;
1760 val* var25 /* : Array[Object] */;
1761 long var26 /* : Int */;
1762 val* var27 /* : NativeArray[Object] */;
1763 val* var28 /* : String */;
1764 var_nmodule = p0;
1765 var_nclassdef = p1;
1766 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
1767 if (var == NULL) {
1768 fprintf(stderr, "Runtime error: %s", "Cast failed");
1769 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 215);
1770 exit(1);
1771 }
1772 var_mmodule = var;
1773 if (varonce) {
1774 var1 = varonce;
1775 } else {
1776 var2 = "Object";
1777 var3 = 6;
1778 var4 = string__NativeString__to_s_with_length(var2, var3);
1779 var1 = var4;
1780 varonce = var1;
1781 }
1782 var5 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_nmodule, var_mmodule, var1) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
1783 var_objectclass = var5;
1784 var6 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclass]))(var_nclassdef) /* mclass on <var_nclassdef:AClassdef>*/;
1785 if (var6 == NULL) {
1786 fprintf(stderr, "Runtime error: %s", "Cast failed");
1787 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 217);
1788 exit(1);
1789 }
1790 var_mclass = var6;
1791 var7 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
1792 if (var7 == NULL) {
1793 fprintf(stderr, "Runtime error: %s", "Cast failed");
1794 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 218);
1795 exit(1);
1796 }
1797 var_mclassdef = var7;
1798 var8 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__supertypes]))(var_mclassdef) /* supertypes on <var_mclassdef:MClassDef>*/;
1799 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Array[MClassType]>*/;
1800 for(;;) {
1801 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
1802 if(!var10) break;
1803 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
1804 var_s = var11;
1805 var12 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef) /* bound_mtype on <var_mclassdef:MClassDef>*/;
1806 var13 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef) /* bound_mtype on <var_mclassdef:MClassDef>*/;
1807 var14 = ((short int (*)(val*, val*, val*, val*))(var_s->class->vft[COLOR_model__MType__is_subtype]))(var_s, var_mmodule, var12, var13) /* is_subtype on <var_s:MClassType>*/;
1808 if (var14){
1809 if (varonce15) {
1810 var16 = varonce15;
1811 } else {
1812 var17 = "Error: Inheritance loop for class ";
1813 var18 = 34;
1814 var19 = string__NativeString__to_s_with_length(var17, var18);
1815 var16 = var19;
1816 varonce15 = var16;
1817 }
1818 if (varonce20) {
1819 var21 = varonce20;
1820 } else {
1821 var22 = " with type ";
1822 var23 = 11;
1823 var24 = string__NativeString__to_s_with_length(var22, var23);
1824 var21 = var24;
1825 varonce20 = var21;
1826 }
1827 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
1828 { /* var25 = array_instance Array[Object] */
1829 var26 = 4;
1830 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
1831 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var16;
1832 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var_mclass;
1833 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var21;
1834 ((struct instance_array__NativeArray*)var27)->values[3] = (val*) var_s;
1835 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
1836 CHECK_NEW_array__Array(var25);
1837 }
1838 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
1839 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var28) /* error on <self:ModelBuilder>*/;
1840 } else {
1841 }
1842 CONTINUE_label: (void)0;
1843 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
1844 }
1845 BREAK_label: (void)0;
1846 RET_LABEL:;
1847 }
1848 /* method modelize_class#ModelBuilder#check_supertypes for (self: Object, AModule, AClassdef) */
1849 void VIRTUAL_modelize_class__ModelBuilder__check_supertypes(val* self, val* p0, val* p1) {
1850 modelize_class__ModelBuilder__check_supertypes(self, p0, p1);
1851 RET_LABEL:;
1852 }
1853 /* method modelize_class#ModelBuilder#build_classes for (self: ModelBuilder, AModule) */
1854 void modelize_class__ModelBuilder__build_classes(val* self, val* p0) {
1855 val* var_nmodule /* var nmodule: AModule */;
1856 val* var /* : ToolContext */;
1857 long var1 /* : Int */;
1858 long var_errcount /* var errcount: Int */;
1859 short int var2 /* : Bool */;
1860 short int var3 /* : Bool */;
1861 val* var4 /* : nullable MModule */;
1862 val* var_mmodule /* var mmodule: MModule */;
1863 val* var5 /* : POSetElement[MModule] */;
1864 val* var6 /* : Collection[Object] */;
1865 val* var7 /* : Iterator[nullable Object] */;
1866 short int var8 /* : Bool */;
1867 val* var9 /* : nullable Object */;
1868 val* var_imp /* var imp: MModule */;
1869 val* var10 /* : HashMap[MModule, AModule] */;
1870 val* var11 /* : nullable Object */;
1871 val* var12 /* : ToolContext */;
1872 long var13 /* : Int */;
1873 short int var14 /* : Bool */;
1874 short int var16 /* : Bool */;
1875 short int var17 /* : Bool */;
1876 val* var18 /* : ANodes[AClassdef] */;
1877 val* var19 /* : Iterator[nullable Object] */;
1878 short int var20 /* : Bool */;
1879 val* var21 /* : nullable Object */;
1880 val* var_nclassdef /* var nclassdef: AClassdef */;
1881 val* var23 /* : ToolContext */;
1882 long var24 /* : Int */;
1883 short int var25 /* : Bool */;
1884 short int var27 /* : Bool */;
1885 short int var28 /* : Bool */;
1886 val* var29 /* : ANodes[AClassdef] */;
1887 val* var30 /* : Iterator[nullable Object] */;
1888 short int var31 /* : Bool */;
1889 val* var32 /* : nullable Object */;
1890 val* var_nclassdef33 /* var nclassdef: AClassdef */;
1891 val* var35 /* : ToolContext */;
1892 long var36 /* : Int */;
1893 short int var37 /* : Bool */;
1894 short int var39 /* : Bool */;
1895 short int var40 /* : Bool */;
1896 val* var41 /* : ANodes[AClassdef] */;
1897 val* var42 /* : Iterator[nullable Object] */;
1898 short int var43 /* : Bool */;
1899 val* var44 /* : nullable Object */;
1900 val* var_nclassdef45 /* var nclassdef: AClassdef */;
1901 val* var47 /* : ToolContext */;
1902 long var48 /* : Int */;
1903 short int var49 /* : Bool */;
1904 short int var51 /* : Bool */;
1905 short int var52 /* : Bool */;
1906 val* var53 /* : ANodes[AClassdef] */;
1907 val* var54 /* : Iterator[nullable Object] */;
1908 short int var55 /* : Bool */;
1909 val* var56 /* : nullable Object */;
1910 val* var_nclassdef57 /* var nclassdef: AClassdef */;
1911 val* var58 /* : nullable MClassDef */;
1912 val* var_mclassdef /* var mclassdef: MClassDef */;
1913 val* var60 /* : ToolContext */;
1914 long var61 /* : Int */;
1915 short int var62 /* : Bool */;
1916 short int var64 /* : Bool */;
1917 short int var65 /* : Bool */;
1918 val* var66 /* : ANodes[AClassdef] */;
1919 val* var67 /* : Iterator[nullable Object] */;
1920 short int var68 /* : Bool */;
1921 val* var69 /* : nullable Object */;
1922 val* var_nclassdef70 /* var nclassdef: AClassdef */;
1923 val* var72 /* : ToolContext */;
1924 long var73 /* : Int */;
1925 short int var74 /* : Bool */;
1926 short int var76 /* : Bool */;
1927 short int var77 /* : Bool */;
1928 val* var78 /* : ANodes[AClassdef] */;
1929 val* var79 /* : Iterator[nullable Object] */;
1930 short int var80 /* : Bool */;
1931 val* var81 /* : nullable Object */;
1932 val* var_nclassdef82 /* var nclassdef: AClassdef */;
1933 short int var83 /* : Bool */;
1934 int cltype;
1935 int idtype;
1936 val* var84 /* : ANodes[AFormaldef] */;
1937 val* var85 /* : Iterator[nullable Object] */;
1938 short int var86 /* : Bool */;
1939 val* var87 /* : nullable Object */;
1940 val* var_nfd /* var nfd: AFormaldef */;
1941 val* var88 /* : nullable AType */;
1942 val* var_nfdt /* var nfdt: nullable AType */;
1943 short int var89 /* : Bool */;
1944 val* var90 /* : null */;
1945 short int var91 /* : Bool */;
1946 short int var_ /* var : Bool */;
1947 val* var92 /* : nullable MType */;
1948 val* var93 /* : null */;
1949 short int var94 /* : Bool */;
1950 val* var95 /* : nullable MType */;
1951 val* var_bound /* var bound: nullable MType */;
1952 val* var96 /* : null */;
1953 short int var97 /* : Bool */;
1954 val* var99 /* : ANodes[ASuperclass] */;
1955 val* var100 /* : Iterator[nullable Object] */;
1956 short int var101 /* : Bool */;
1957 val* var102 /* : nullable Object */;
1958 val* var_nsc /* var nsc: ASuperclass */;
1959 val* var103 /* : AType */;
1960 val* var_ntype /* var ntype: AType */;
1961 val* var104 /* : nullable MType */;
1962 val* var105 /* : null */;
1963 short int var106 /* : Bool */;
1964 val* var107 /* : nullable MType */;
1965 val* var_mtype /* var mtype: nullable MType */;
1966 val* var108 /* : null */;
1967 short int var109 /* : Bool */;
1968 val* var112 /* : ToolContext */;
1969 long var113 /* : Int */;
1970 short int var114 /* : Bool */;
1971 short int var116 /* : Bool */;
1972 short int var117 /* : Bool */;
1973 val* var118 /* : ANodes[AClassdef] */;
1974 val* var119 /* : Iterator[nullable Object] */;
1975 short int var120 /* : Bool */;
1976 val* var121 /* : nullable Object */;
1977 val* var_nclassdef122 /* var nclassdef: AClassdef */;
1978 val* var123 /* : nullable MClassDef */;
1979 val* var_mclassdef124 /* var mclassdef: MClassDef */;
1980 val* var125 /* : HashMap[MClass, MClassType] */;
1981 val* var_superclasses /* var superclasses: HashMap[MClass, MClassType] */;
1982 val* var126 /* : nullable POSetElement[MClassDef] */;
1983 val* var127 /* : Collection[Object] */;
1984 val* var128 /* : Iterator[nullable Object] */;
1985 short int var129 /* : Bool */;
1986 val* var130 /* : nullable Object */;
1987 val* var_scd /* var scd: MClassDef */;
1988 val* var131 /* : Array[MClassType] */;
1989 val* var132 /* : Iterator[nullable Object] */;
1990 short int var133 /* : Bool */;
1991 val* var134 /* : nullable Object */;
1992 val* var_st /* var st: MClassType */;
1993 val* var135 /* : MClass */;
1994 short int var136 /* : Bool */;
1995 short int var137 /* : Bool */;
1996 val* var138 /* : MClass */;
1997 val* var139 /* : MClass */;
1998 val* var140 /* : nullable Object */;
1999 short int var141 /* : Bool */;
2000 val* var142 /* : MClass */;
2001 val* var143 /* : nullable Object */;
2002 val* var144 /* : MClass */;
2003 val* var145 /* : MClassType */;
2004 val* var146 /* : MClassType */;
2005 short int var147 /* : Bool */;
2006 val* var148 /* : MType */;
2007 val* var_st1 /* var st1: MClassType */;
2008 val* var149 /* : MClass */;
2009 val* var150 /* : MClassType */;
2010 val* var151 /* : MClassType */;
2011 short int var152 /* : Bool */;
2012 val* var153 /* : MType */;
2013 val* var_st2 /* var st2: MClassType */;
2014 short int var154 /* : Bool */;
2015 static val* varonce;
2016 val* var155 /* : String */;
2017 char* var156 /* : NativeString */;
2018 long var157 /* : Int */;
2019 val* var158 /* : String */;
2020 val* var159 /* : MClass */;
2021 static val* varonce160;
2022 val* var161 /* : String */;
2023 char* var162 /* : NativeString */;
2024 long var163 /* : Int */;
2025 val* var164 /* : String */;
2026 static val* varonce165;
2027 val* var166 /* : String */;
2028 char* var167 /* : NativeString */;
2029 long var168 /* : Int */;
2030 val* var169 /* : String */;
2031 val* var170 /* : Array[Object] */;
2032 long var171 /* : Int */;
2033 val* var172 /* : NativeArray[Object] */;
2034 val* var173 /* : String */;
2035 val* var177 /* : ToolContext */;
2036 long var178 /* : Int */;
2037 short int var179 /* : Bool */;
2038 short int var181 /* : Bool */;
2039 short int var182 /* : Bool */;
2040 val* var183 /* : ANodes[AClassdef] */;
2041 val* var184 /* : Iterator[nullable Object] */;
2042 short int var185 /* : Bool */;
2043 val* var186 /* : nullable Object */;
2044 val* var_nclassdef187 /* var nclassdef: AClassdef */;
2045 short int var188 /* : Bool */;
2046 int cltype189;
2047 int idtype190;
2048 short int var191 /* : Bool */;
2049 val* var193 /* : nullable MClassDef */;
2050 val* var_mclassdef194 /* var mclassdef: MClassDef */;
2051 val* var195 /* : Array[MClass] */;
2052 val* var_parents /* var parents: Array[MClass] */;
2053 val* var196 /* : nullable POSetElement[MClassDef] */;
2054 val* var197 /* : Collection[Object] */;
2055 val* var198 /* : Iterator[nullable Object] */;
2056 short int var199 /* : Bool */;
2057 val* var200 /* : nullable Object */;
2058 val* var_sup /* var sup: MClassDef */;
2059 val* var201 /* : MClass */;
2060 val* var203 /* : ArrayMap[MClass, AType] */;
2061 val* var_seen_parents /* var seen_parents: ArrayMap[MClass, AType] */;
2062 static val* varonce204;
2063 val* var205 /* : String */;
2064 char* var206 /* : NativeString */;
2065 long var207 /* : Int */;
2066 val* var208 /* : String */;
2067 val* var209 /* : nullable MClass */;
2068 val* var_objectclass /* var objectclass: nullable MClass */;
2069 val* var210 /* : ANodes[ASuperclass] */;
2070 val* var211 /* : Iterator[nullable Object] */;
2071 short int var212 /* : Bool */;
2072 val* var213 /* : nullable Object */;
2073 val* var_nsc214 /* var nsc: ASuperclass */;
2074 val* var215 /* : AType */;
2075 val* var_ntype216 /* var ntype: AType */;
2076 val* var217 /* : nullable MType */;
2077 val* var_mtype218 /* var mtype: nullable MType */;
2078 val* var219 /* : null */;
2079 short int var220 /* : Bool */;
2080 short int var222 /* : Bool */;
2081 int cltype223;
2082 int idtype224;
2083 val* var225 /* : MClass */;
2084 val* var_sc /* var sc: MClass */;
2085 short int var226 /* : Bool */;
2086 short int var227 /* : Bool */;
2087 short int var228 /* : Bool */;
2088 short int var_229 /* var : Bool */;
2089 short int var230 /* : Bool */;
2090 static val* varonce231;
2091 val* var232 /* : String */;
2092 char* var233 /* : NativeString */;
2093 long var234 /* : Int */;
2094 val* var235 /* : String */;
2095 static val* varonce236;
2096 val* var237 /* : String */;
2097 char* var238 /* : NativeString */;
2098 long var239 /* : Int */;
2099 val* var240 /* : String */;
2100 val* var241 /* : MClass */;
2101 static val* varonce242;
2102 val* var243 /* : String */;
2103 char* var244 /* : NativeString */;
2104 long var245 /* : Int */;
2105 val* var246 /* : String */;
2106 val* var247 /* : Array[Object] */;
2107 long var248 /* : Int */;
2108 val* var249 /* : NativeArray[Object] */;
2109 val* var250 /* : String */;
2110 short int var251 /* : Bool */;
2111 short int var252 /* : Bool */;
2112 static val* varonce253;
2113 val* var254 /* : String */;
2114 char* var255 /* : NativeString */;
2115 long var256 /* : Int */;
2116 val* var257 /* : String */;
2117 static val* varonce258;
2118 val* var259 /* : String */;
2119 char* var260 /* : NativeString */;
2120 long var261 /* : Int */;
2121 val* var262 /* : String */;
2122 val* var263 /* : MClass */;
2123 static val* varonce264;
2124 val* var265 /* : String */;
2125 char* var266 /* : NativeString */;
2126 long var267 /* : Int */;
2127 val* var268 /* : String */;
2128 val* var269 /* : Array[Object] */;
2129 long var270 /* : Int */;
2130 val* var271 /* : NativeArray[Object] */;
2131 val* var272 /* : String */;
2132 var_nmodule = p0;
2133 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2134 var1 = ((long (*)(val*))(var->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var) /* error_count on <var:ToolContext>*/;
2135 var_errcount = var1;
2136 var2 = ((short int (*)(val*))(var_nmodule->class->vft[COLOR_modelize_class__AModule__build_classes_is_done]))(var_nmodule) /* build_classes_is_done on <var_nmodule:AModule>*/;
2137 if (var2){
2138 goto RET_LABEL;
2139 } else {
2140 }
2141 var3 = 1;
2142 ((void (*)(val*, short int))(var_nmodule->class->vft[COLOR_modelize_class__AModule__build_classes_is_done_61d]))(var_nmodule, var3) /* build_classes_is_done= on <var_nmodule:AModule>*/;
2143 var4 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
2144 if (var4 == NULL) {
2145 fprintf(stderr, "Runtime error: %s", "Cast failed");
2146 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 235);
2147 exit(1);
2148 }
2149 var_mmodule = var4;
2150 var5 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
2151 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var5) /* direct_greaters on <var5:POSetElement[MModule]>*/;
2152 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Collection[Object](Collection[MModule])>*/;
2153 for(;;) {
2154 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
2155 if(!var8) break;
2156 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
2157 var_imp = var9;
2158 var10 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
2159 var11 = ((val* (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var10, var_imp) /* [] on <var10:HashMap[MModule, AModule]>*/;
2160 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__build_classes]))(self, var11) /* build_classes on <self:ModelBuilder>*/;
2161 CONTINUE_label: (void)0;
2162 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
2163 }
2164 BREAK_label: (void)0;
2165 var12 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2166 var13 = ((long (*)(val*))(var12->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var12) /* error_count on <var12:ToolContext>*/;
2167 { /* Inline kernel#Int#!= (var_errcount,var13) */
2168 var16 = var_errcount == var13;
2169 var17 = !var16;
2170 var14 = var17;
2171 goto RET_LABEL15;
2172 RET_LABEL15:(void)0;
2173 }
2174 if (var14){
2175 goto RET_LABEL;
2176 } else {
2177 }
2178 var18 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2179 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:ANodes[AClassdef]>*/;
2180 for(;;) {
2181 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
2182 if(!var20) break;
2183 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
2184 var_nclassdef = var21;
2185 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__build_a_mclass]))(self, var_nmodule, var_nclassdef) /* build_a_mclass on <self:ModelBuilder>*/;
2186 CONTINUE_label22: (void)0;
2187 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
2188 }
2189 BREAK_label22: (void)0;
2190 var23 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2191 var24 = ((long (*)(val*))(var23->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var23) /* error_count on <var23:ToolContext>*/;
2192 { /* Inline kernel#Int#!= (var_errcount,var24) */
2193 var27 = var_errcount == var24;
2194 var28 = !var27;
2195 var25 = var28;
2196 goto RET_LABEL26;
2197 RET_LABEL26:(void)0;
2198 }
2199 if (var25){
2200 goto RET_LABEL;
2201 } else {
2202 }
2203 var29 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2204 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_abstract_collection__Collection__iterator]))(var29) /* iterator on <var29:ANodes[AClassdef]>*/;
2205 for(;;) {
2206 var31 = ((short int (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var30) /* is_ok on <var30:Iterator[nullable Object]>*/;
2207 if(!var31) break;
2208 var32 = ((val* (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__item]))(var30) /* item on <var30:Iterator[nullable Object]>*/;
2209 var_nclassdef33 = var32;
2210 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__build_a_mclassdef]))(self, var_nmodule, var_nclassdef33) /* build_a_mclassdef on <self:ModelBuilder>*/;
2211 CONTINUE_label34: (void)0;
2212 ((void (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__next]))(var30) /* next on <var30:Iterator[nullable Object]>*/;
2213 }
2214 BREAK_label34: (void)0;
2215 var35 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2216 var36 = ((long (*)(val*))(var35->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var35) /* error_count on <var35:ToolContext>*/;
2217 { /* Inline kernel#Int#!= (var_errcount,var36) */
2218 var39 = var_errcount == var36;
2219 var40 = !var39;
2220 var37 = var40;
2221 goto RET_LABEL38;
2222 RET_LABEL38:(void)0;
2223 }
2224 if (var37){
2225 goto RET_LABEL;
2226 } else {
2227 }
2228 var41 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2229 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__Collection__iterator]))(var41) /* iterator on <var41:ANodes[AClassdef]>*/;
2230 for(;;) {
2231 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
2232 if(!var43) break;
2233 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
2234 var_nclassdef45 = var44;
2235 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__collect_a_mclassdef_inheritance]))(self, var_nmodule, var_nclassdef45) /* collect_a_mclassdef_inheritance on <self:ModelBuilder>*/;
2236 CONTINUE_label46: (void)0;
2237 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
2238 }
2239 BREAK_label46: (void)0;
2240 var47 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2241 var48 = ((long (*)(val*))(var47->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var47) /* error_count on <var47:ToolContext>*/;
2242 { /* Inline kernel#Int#!= (var_errcount,var48) */
2243 var51 = var_errcount == var48;
2244 var52 = !var51;
2245 var49 = var52;
2246 goto RET_LABEL50;
2247 RET_LABEL50:(void)0;
2248 }
2249 if (var49){
2250 goto RET_LABEL;
2251 } else {
2252 }
2253 var53 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2254 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_abstract_collection__Collection__iterator]))(var53) /* iterator on <var53:ANodes[AClassdef]>*/;
2255 for(;;) {
2256 var55 = ((short int (*)(val*))(var54->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var54) /* is_ok on <var54:Iterator[nullable Object]>*/;
2257 if(!var55) break;
2258 var56 = ((val* (*)(val*))(var54->class->vft[COLOR_abstract_collection__Iterator__item]))(var54) /* item on <var54:Iterator[nullable Object]>*/;
2259 var_nclassdef57 = var56;
2260 var58 = ((val* (*)(val*))(var_nclassdef57->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef57) /* mclassdef on <var_nclassdef57:AClassdef>*/;
2261 if (var58 == NULL) {
2262 fprintf(stderr, "Runtime error: %s", "Cast failed");
2263 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 266);
2264 exit(1);
2265 }
2266 var_mclassdef = var58;
2267 ((void (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__add_in_hierarchy]))(var_mclassdef) /* add_in_hierarchy on <var_mclassdef:MClassDef>*/;
2268 CONTINUE_label59: (void)0;
2269 ((void (*)(val*))(var54->class->vft[COLOR_abstract_collection__Iterator__next]))(var54) /* next on <var54:Iterator[nullable Object]>*/;
2270 }
2271 BREAK_label59: (void)0;
2272 var60 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2273 var61 = ((long (*)(val*))(var60->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var60) /* error_count on <var60:ToolContext>*/;
2274 { /* Inline kernel#Int#!= (var_errcount,var61) */
2275 var64 = var_errcount == var61;
2276 var65 = !var64;
2277 var62 = var65;
2278 goto RET_LABEL63;
2279 RET_LABEL63:(void)0;
2280 }
2281 if (var62){
2282 goto RET_LABEL;
2283 } else {
2284 }
2285 var66 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2286 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:ANodes[AClassdef]>*/;
2287 for(;;) {
2288 var68 = ((short int (*)(val*))(var67->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var67) /* is_ok on <var67:Iterator[nullable Object]>*/;
2289 if(!var68) break;
2290 var69 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Iterator__item]))(var67) /* item on <var67:Iterator[nullable Object]>*/;
2291 var_nclassdef70 = var69;
2292 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__check_supertypes]))(self, var_nmodule, var_nclassdef70) /* check_supertypes on <self:ModelBuilder>*/;
2293 CONTINUE_label71: (void)0;
2294 ((void (*)(val*))(var67->class->vft[COLOR_abstract_collection__Iterator__next]))(var67) /* next on <var67:Iterator[nullable Object]>*/;
2295 }
2296 BREAK_label71: (void)0;
2297 var72 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2298 var73 = ((long (*)(val*))(var72->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var72) /* error_count on <var72:ToolContext>*/;
2299 { /* Inline kernel#Int#!= (var_errcount,var73) */
2300 var76 = var_errcount == var73;
2301 var77 = !var76;
2302 var74 = var77;
2303 goto RET_LABEL75;
2304 RET_LABEL75:(void)0;
2305 }
2306 if (var74){
2307 goto RET_LABEL;
2308 } else {
2309 }
2310 var78 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2311 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_collection__Collection__iterator]))(var78) /* iterator on <var78:ANodes[AClassdef]>*/;
2312 for(;;) {
2313 var80 = ((short int (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var79) /* is_ok on <var79:Iterator[nullable Object]>*/;
2314 if(!var80) break;
2315 var81 = ((val* (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__item]))(var79) /* item on <var79:Iterator[nullable Object]>*/;
2316 var_nclassdef82 = var81;
2317 /* <var_nclassdef82:AClassdef> isa AStdClassdef */
2318 cltype = type_parser_nodes__AStdClassdef.color;
2319 idtype = type_parser_nodes__AStdClassdef.id;
2320 if(cltype >= var_nclassdef82->type->table_size) {
2321 var83 = 0;
2322 } else {
2323 var83 = var_nclassdef82->type->type_table[cltype] == idtype;
2324 }
2325 if (var83){
2326 var84 = ((val* (*)(val*))(var_nclassdef82->class->vft[COLOR_parser_nodes__AStdClassdef__n_formaldefs]))(var_nclassdef82) /* n_formaldefs on <var_nclassdef82:AClassdef(AStdClassdef)>*/;
2327 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_abstract_collection__Collection__iterator]))(var84) /* iterator on <var84:ANodes[AFormaldef]>*/;
2328 for(;;) {
2329 var86 = ((short int (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var85) /* is_ok on <var85:Iterator[nullable Object]>*/;
2330 if(!var86) break;
2331 var87 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__item]))(var85) /* item on <var85:Iterator[nullable Object]>*/;
2332 var_nfd = var87;
2333 var88 = ((val* (*)(val*))(var_nfd->class->vft[COLOR_parser_nodes__AFormaldef__n_type]))(var_nfd) /* n_type on <var_nfd:AFormaldef>*/;
2334 var_nfdt = var88;
2335 var90 = NULL;
2336 if (var_nfdt == NULL) {
2337 var91 = 0; /* is null */
2338 } else {
2339 var91 = 1; /* arg is null and recv is not */
2340 }
2341 var_ = var91;
2342 if (var91){
2343 var92 = ((val* (*)(val*))(var_nfdt->class->vft[COLOR_modelize_class__AType__mtype]))(var_nfdt) /* mtype on <var_nfdt:nullable AType(AType)>*/;
2344 var93 = NULL;
2345 if (var92 == NULL) {
2346 var94 = 0; /* is null */
2347 } else {
2348 var94 = 1; /* arg is null and recv is not */
2349 }
2350 var89 = var94;
2351 } else {
2352 var89 = var_;
2353 }
2354 if (var89){
2355 var95 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(self, var_nclassdef82, var_nfdt) /* resolve_mtype on <self:ModelBuilder>*/;
2356 var_bound = var95;
2357 var96 = NULL;
2358 if (var_bound == NULL) {
2359 var97 = 1; /* is null */
2360 } else {
2361 var97 = 0; /* arg is null but recv is not */
2362 }
2363 if (var97){
2364 goto RET_LABEL;
2365 } else {
2366 }
2367 } else {
2368 }
2369 CONTINUE_label98: (void)0;
2370 ((void (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__next]))(var85) /* next on <var85:Iterator[nullable Object]>*/;
2371 }
2372 BREAK_label98: (void)0;
2373 var99 = ((val* (*)(val*))(var_nclassdef82->class->vft[COLOR_parser_nodes__AStdClassdef__n_superclasses]))(var_nclassdef82) /* n_superclasses on <var_nclassdef82:AClassdef(AStdClassdef)>*/;
2374 var100 = ((val* (*)(val*))(var99->class->vft[COLOR_abstract_collection__Collection__iterator]))(var99) /* iterator on <var99:ANodes[ASuperclass]>*/;
2375 for(;;) {
2376 var101 = ((short int (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var100) /* is_ok on <var100:Iterator[nullable Object]>*/;
2377 if(!var101) break;
2378 var102 = ((val* (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__item]))(var100) /* item on <var100:Iterator[nullable Object]>*/;
2379 var_nsc = var102;
2380 var103 = ((val* (*)(val*))(var_nsc->class->vft[COLOR_parser_nodes__ASuperclass__n_type]))(var_nsc) /* n_type on <var_nsc:ASuperclass>*/;
2381 var_ntype = var103;
2382 var104 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_modelize_class__AType__mtype]))(var_ntype) /* mtype on <var_ntype:AType>*/;
2383 var105 = NULL;
2384 if (var104 == NULL) {
2385 var106 = 0; /* is null */
2386 } else {
2387 var106 = 1; /* arg is null and recv is not */
2388 }
2389 if (var106){
2390 var107 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(self, var_nclassdef82, var_ntype) /* resolve_mtype on <self:ModelBuilder>*/;
2391 var_mtype = var107;
2392 var108 = NULL;
2393 if (var_mtype == NULL) {
2394 var109 = 1; /* is null */
2395 } else {
2396 var109 = 0; /* arg is null but recv is not */
2397 }
2398 if (var109){
2399 goto RET_LABEL;
2400 } else {
2401 }
2402 } else {
2403 }
2404 CONTINUE_label110: (void)0;
2405 ((void (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__next]))(var100) /* next on <var100:Iterator[nullable Object]>*/;
2406 }
2407 BREAK_label110: (void)0;
2408 } else {
2409 }
2410 CONTINUE_label111: (void)0;
2411 ((void (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__next]))(var79) /* next on <var79:Iterator[nullable Object]>*/;
2412 }
2413 BREAK_label111: (void)0;
2414 var112 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2415 var113 = ((long (*)(val*))(var112->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var112) /* error_count on <var112:ToolContext>*/;
2416 { /* Inline kernel#Int#!= (var_errcount,var113) */
2417 var116 = var_errcount == var113;
2418 var117 = !var116;
2419 var114 = var117;
2420 goto RET_LABEL115;
2421 RET_LABEL115:(void)0;
2422 }
2423 if (var114){
2424 goto RET_LABEL;
2425 } else {
2426 }
2427 var118 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2428 var119 = ((val* (*)(val*))(var118->class->vft[COLOR_abstract_collection__Collection__iterator]))(var118) /* iterator on <var118:ANodes[AClassdef]>*/;
2429 for(;;) {
2430 var120 = ((short int (*)(val*))(var119->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var119) /* is_ok on <var119:Iterator[nullable Object]>*/;
2431 if(!var120) break;
2432 var121 = ((val* (*)(val*))(var119->class->vft[COLOR_abstract_collection__Iterator__item]))(var119) /* item on <var119:Iterator[nullable Object]>*/;
2433 var_nclassdef122 = var121;
2434 var123 = ((val* (*)(val*))(var_nclassdef122->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef122) /* mclassdef on <var_nclassdef122:AClassdef>*/;
2435 if (var123 == NULL) {
2436 fprintf(stderr, "Runtime error: %s", "Cast failed");
2437 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 305);
2438 exit(1);
2439 }
2440 var_mclassdef124 = var123;
2441 var125 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassmodel__MClassType);
2442 ((void (*)(val*))(var125->class->vft[COLOR_hash_collection__HashMap__init]))(var125) /* init on <var125:HashMap[MClass, MClassType]>*/;
2443 CHECK_NEW_hash_collection__HashMap(var125);
2444 var_superclasses = var125;
2445 var126 = ((val* (*)(val*))(var_mclassdef124->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef124) /* in_hierarchy on <var_mclassdef124:MClassDef>*/;
2446 if (var126 == NULL) {
2447 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2448 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 307);
2449 exit(1);
2450 } else {
2451 var127 = ((val* (*)(val*))(var126->class->vft[COLOR_poset__POSetElement__greaters]))(var126) /* greaters on <var126:nullable POSetElement[MClassDef]>*/;
2452 }
2453 var128 = ((val* (*)(val*))(var127->class->vft[COLOR_abstract_collection__Collection__iterator]))(var127) /* iterator on <var127:Collection[Object](Collection[MClassDef])>*/;
2454 for(;;) {
2455 var129 = ((short int (*)(val*))(var128->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var128) /* is_ok on <var128:Iterator[nullable Object]>*/;
2456 if(!var129) break;
2457 var130 = ((val* (*)(val*))(var128->class->vft[COLOR_abstract_collection__Iterator__item]))(var128) /* item on <var128:Iterator[nullable Object]>*/;
2458 var_scd = var130;
2459 var131 = ((val* (*)(val*))(var_scd->class->vft[COLOR_model__MClassDef__supertypes]))(var_scd) /* supertypes on <var_scd:MClassDef>*/;
2460 var132 = ((val* (*)(val*))(var131->class->vft[COLOR_abstract_collection__Collection__iterator]))(var131) /* iterator on <var131:Array[MClassType]>*/;
2461 for(;;) {
2462 var133 = ((short int (*)(val*))(var132->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var132) /* is_ok on <var132:Iterator[nullable Object]>*/;
2463 if(!var133) break;
2464 var134 = ((val* (*)(val*))(var132->class->vft[COLOR_abstract_collection__Iterator__item]))(var132) /* item on <var132:Iterator[nullable Object]>*/;
2465 var_st = var134;
2466 var135 = ((val* (*)(val*))(var_st->class->vft[COLOR_model__MClassType__mclass]))(var_st) /* mclass on <var_st:MClassType>*/;
2467 var136 = ((short int (*)(val*, val*))(var_superclasses->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_superclasses, var135) /* has_key on <var_superclasses:HashMap[MClass, MClassType]>*/;
2468 var137 = !var136;
2469 if (var137){
2470 var138 = ((val* (*)(val*))(var_st->class->vft[COLOR_model__MClassType__mclass]))(var_st) /* mclass on <var_st:MClassType>*/;
2471 ((void (*)(val*, val*, val*))(var_superclasses->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_superclasses, var138, var_st) /* []= on <var_superclasses:HashMap[MClass, MClassType]>*/;
2472 } else {
2473 var139 = ((val* (*)(val*))(var_st->class->vft[COLOR_model__MClassType__mclass]))(var_st) /* mclass on <var_st:MClassType>*/;
2474 var140 = ((val* (*)(val*, val*))(var_superclasses->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_superclasses, var139) /* [] on <var_superclasses:HashMap[MClass, MClassType]>*/;
2475 var141 = ((short int (*)(val*, val*))(var140->class->vft[COLOR_kernel__Object___33d_61d]))(var140, var_st) /* != on <var140:nullable Object(MClassType)>*/;
2476 if (var141){
2477 var142 = ((val* (*)(val*))(var_st->class->vft[COLOR_model__MClassType__mclass]))(var_st) /* mclass on <var_st:MClassType>*/;
2478 var143 = ((val* (*)(val*, val*))(var_superclasses->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_superclasses, var142) /* [] on <var_superclasses:HashMap[MClass, MClassType]>*/;
2479 var144 = ((val* (*)(val*))(var_mclassdef124->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef124) /* mclass on <var_mclassdef124:MClassDef>*/;
2480 var145 = ((val* (*)(val*))(var144->class->vft[COLOR_model__MClass__mclass_type]))(var144) /* mclass_type on <var144:MClass>*/;
2481 var146 = ((val* (*)(val*))(var_mclassdef124->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef124) /* bound_mtype on <var_mclassdef124:MClassDef>*/;
2482 var147 = 0;
2483 var148 = ((val* (*)(val*, val*, val*, val*, short int))(var143->class->vft[COLOR_model__MType__resolve_for]))(var143, var145, var146, var_mmodule, var147) /* resolve_for on <var143:nullable Object(MClassType)>*/;
2484 var_st1 = var148;
2485 var149 = ((val* (*)(val*))(var_mclassdef124->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef124) /* mclass on <var_mclassdef124:MClassDef>*/;
2486 var150 = ((val* (*)(val*))(var149->class->vft[COLOR_model__MClass__mclass_type]))(var149) /* mclass_type on <var149:MClass>*/;
2487 var151 = ((val* (*)(val*))(var_mclassdef124->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef124) /* bound_mtype on <var_mclassdef124:MClassDef>*/;
2488 var152 = 0;
2489 var153 = ((val* (*)(val*, val*, val*, val*, short int))(var_st->class->vft[COLOR_model__MType__resolve_for]))(var_st, var150, var151, var_mmodule, var152) /* resolve_for on <var_st:MClassType>*/;
2490 var_st2 = var153;
2491 var154 = ((short int (*)(val*, val*))(var_st1->class->vft[COLOR_kernel__Object___33d_61d]))(var_st1, var_st2) /* != on <var_st1:MClassType>*/;
2492 if (var154){
2493 if (varonce) {
2494 var155 = varonce;
2495 } else {
2496 var156 = "Error: Incompatibles ancestors for ";
2497 var157 = 35;
2498 var158 = string__NativeString__to_s_with_length(var156, var157);
2499 var155 = var158;
2500 varonce = var155;
2501 }
2502 var159 = ((val* (*)(val*))(var_mclassdef124->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef124) /* mclass on <var_mclassdef124:MClassDef>*/;
2503 if (varonce160) {
2504 var161 = varonce160;
2505 } else {
2506 var162 = ": ";
2507 var163 = 2;
2508 var164 = string__NativeString__to_s_with_length(var162, var163);
2509 var161 = var164;
2510 varonce160 = var161;
2511 }
2512 if (varonce165) {
2513 var166 = varonce165;
2514 } else {
2515 var167 = ", ";
2516 var168 = 2;
2517 var169 = string__NativeString__to_s_with_length(var167, var168);
2518 var166 = var169;
2519 varonce165 = var166;
2520 }
2521 var170 = NEW_array__Array(&type_array__Arraykernel__Object);
2522 { /* var170 = array_instance Array[Object] */
2523 var171 = 6;
2524 var172 = NEW_array__NativeArray(var171, &type_array__NativeArraykernel__Object);
2525 ((struct instance_array__NativeArray*)var172)->values[0] = (val*) var155;
2526 ((struct instance_array__NativeArray*)var172)->values[1] = (val*) var159;
2527 ((struct instance_array__NativeArray*)var172)->values[2] = (val*) var161;
2528 ((struct instance_array__NativeArray*)var172)->values[3] = (val*) var_st1;
2529 ((struct instance_array__NativeArray*)var172)->values[4] = (val*) var166;
2530 ((struct instance_array__NativeArray*)var172)->values[5] = (val*) var_st2;
2531 ((void (*)(val*, val*, long))(var170->class->vft[COLOR_array__Array__with_native]))(var170, var172, var171) /* with_native on <var170:Array[Object]>*/;
2532 CHECK_NEW_array__Array(var170);
2533 }
2534 var173 = ((val* (*)(val*))(var170->class->vft[COLOR_string__Object__to_s]))(var170) /* to_s on <var170:Array[Object]>*/;
2535 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef122, var173) /* error on <self:ModelBuilder>*/;
2536 } else {
2537 }
2538 } else {
2539 }
2540 }
2541 CONTINUE_label174: (void)0;
2542 ((void (*)(val*))(var132->class->vft[COLOR_abstract_collection__Iterator__next]))(var132) /* next on <var132:Iterator[nullable Object]>*/;
2543 }
2544 BREAK_label174: (void)0;
2545 CONTINUE_label175: (void)0;
2546 ((void (*)(val*))(var128->class->vft[COLOR_abstract_collection__Iterator__next]))(var128) /* next on <var128:Iterator[nullable Object]>*/;
2547 }
2548 BREAK_label175: (void)0;
2549 CONTINUE_label176: (void)0;
2550 ((void (*)(val*))(var119->class->vft[COLOR_abstract_collection__Iterator__next]))(var119) /* next on <var119:Iterator[nullable Object]>*/;
2551 }
2552 BREAK_label176: (void)0;
2553 var177 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2554 var178 = ((long (*)(val*))(var177->class->vft[COLOR_toolcontext__ToolContext__error_count]))(var177) /* error_count on <var177:ToolContext>*/;
2555 { /* Inline kernel#Int#!= (var_errcount,var178) */
2556 var181 = var_errcount == var178;
2557 var182 = !var181;
2558 var179 = var182;
2559 goto RET_LABEL180;
2560 RET_LABEL180:(void)0;
2561 }
2562 if (var179){
2563 goto RET_LABEL;
2564 } else {
2565 }
2566 var183 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_classdefs]))(var_nmodule) /* n_classdefs on <var_nmodule:AModule>*/;
2567 var184 = ((val* (*)(val*))(var183->class->vft[COLOR_abstract_collection__Collection__iterator]))(var183) /* iterator on <var183:ANodes[AClassdef]>*/;
2568 for(;;) {
2569 var185 = ((short int (*)(val*))(var184->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var184) /* is_ok on <var184:Iterator[nullable Object]>*/;
2570 if(!var185) break;
2571 var186 = ((val* (*)(val*))(var184->class->vft[COLOR_abstract_collection__Iterator__item]))(var184) /* item on <var184:Iterator[nullable Object]>*/;
2572 var_nclassdef187 = var186;
2573 /* <var_nclassdef187:AClassdef> isa AStdClassdef */
2574 cltype189 = type_parser_nodes__AStdClassdef.color;
2575 idtype190 = type_parser_nodes__AStdClassdef.id;
2576 if(cltype189 >= var_nclassdef187->type->table_size) {
2577 var188 = 0;
2578 } else {
2579 var188 = var_nclassdef187->type->type_table[cltype189] == idtype190;
2580 }
2581 var191 = !var188;
2582 if (var191){
2583 goto CONTINUE_label192;
2584 } else {
2585 }
2586 var193 = ((val* (*)(val*))(var_nclassdef187->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef187) /* mclassdef on <var_nclassdef187:AClassdef(AStdClassdef)>*/;
2587 if (var193 == NULL) {
2588 fprintf(stderr, "Runtime error: %s", "Cast failed");
2589 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 329);
2590 exit(1);
2591 }
2592 var_mclassdef194 = var193;
2593 var195 = NEW_array__Array(&type_array__Arraymodel__MClass);
2594 ((void (*)(val*))(var195->class->vft[COLOR_array__Array__init]))(var195) /* init on <var195:Array[MClass]>*/;
2595 CHECK_NEW_array__Array(var195);
2596 var_parents = var195;
2597 var196 = ((val* (*)(val*))(var_mclassdef194->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef194) /* in_hierarchy on <var_mclassdef194:MClassDef>*/;
2598 if (var196 == NULL) {
2599 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2600 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 334);
2601 exit(1);
2602 } else {
2603 var197 = ((val* (*)(val*))(var196->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var196) /* direct_greaters on <var196:nullable POSetElement[MClassDef]>*/;
2604 }
2605 var198 = ((val* (*)(val*))(var197->class->vft[COLOR_abstract_collection__Collection__iterator]))(var197) /* iterator on <var197:Collection[Object](Collection[MClassDef])>*/;
2606 for(;;) {
2607 var199 = ((short int (*)(val*))(var198->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var198) /* is_ok on <var198:Iterator[nullable Object]>*/;
2608 if(!var199) break;
2609 var200 = ((val* (*)(val*))(var198->class->vft[COLOR_abstract_collection__Iterator__item]))(var198) /* item on <var198:Iterator[nullable Object]>*/;
2610 var_sup = var200;
2611 var201 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassDef__mclass]))(var_sup) /* mclass on <var_sup:MClassDef>*/;
2612 ((void (*)(val*, val*))(var_parents->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_parents, var201) /* add on <var_parents:Array[MClass]>*/;
2613 CONTINUE_label202: (void)0;
2614 ((void (*)(val*))(var198->class->vft[COLOR_abstract_collection__Iterator__next]))(var198) /* next on <var198:Iterator[nullable Object]>*/;
2615 }
2616 BREAK_label202: (void)0;
2617 var203 = NEW_array__ArrayMap(&type_array__ArrayMapmodel__MClassparser_nodes__AType);
2618 ((void (*)(val*))(var203->class->vft[COLOR_array__ArrayMap__init]))(var203) /* init on <var203:ArrayMap[MClass, AType]>*/;
2619 CHECK_NEW_array__ArrayMap(var203);
2620 var_seen_parents = var203;
2621 if (varonce204) {
2622 var205 = varonce204;
2623 } else {
2624 var206 = "Object";
2625 var207 = 6;
2626 var208 = string__NativeString__to_s_with_length(var206, var207);
2627 var205 = var208;
2628 varonce204 = var205;
2629 }
2630 var209 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_nmodule, var_mmodule, var205) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
2631 var_objectclass = var209;
2632 var210 = ((val* (*)(val*))(var_nclassdef187->class->vft[COLOR_parser_nodes__AStdClassdef__n_superclasses]))(var_nclassdef187) /* n_superclasses on <var_nclassdef187:AClassdef(AStdClassdef)>*/;
2633 var211 = ((val* (*)(val*))(var210->class->vft[COLOR_abstract_collection__Collection__iterator]))(var210) /* iterator on <var210:ANodes[ASuperclass]>*/;
2634 for(;;) {
2635 var212 = ((short int (*)(val*))(var211->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var211) /* is_ok on <var211:Iterator[nullable Object]>*/;
2636 if(!var212) break;
2637 var213 = ((val* (*)(val*))(var211->class->vft[COLOR_abstract_collection__Iterator__item]))(var211) /* item on <var211:Iterator[nullable Object]>*/;
2638 var_nsc214 = var213;
2639 var215 = ((val* (*)(val*))(var_nsc214->class->vft[COLOR_parser_nodes__ASuperclass__n_type]))(var_nsc214) /* n_type on <var_nsc214:ASuperclass>*/;
2640 var_ntype216 = var215;
2641 var217 = ((val* (*)(val*))(var_ntype216->class->vft[COLOR_modelize_class__AType__mtype]))(var_ntype216) /* mtype on <var_ntype216:AType>*/;
2642 var_mtype218 = var217;
2643 var219 = NULL;
2644 if (var_mtype218 == NULL) {
2645 var220 = 1; /* is null */
2646 } else {
2647 var220 = 0; /* arg is null but recv is not */
2648 }
2649 if (var220){
2650 goto CONTINUE_label221;
2651 } else {
2652 }
2653 /* <var_mtype218:nullable MType(MType)> isa MClassType */
2654 cltype223 = type_model__MClassType.color;
2655 idtype224 = type_model__MClassType.id;
2656 if(cltype223 >= var_mtype218->type->table_size) {
2657 var222 = 0;
2658 } else {
2659 var222 = var_mtype218->type->type_table[cltype223] == idtype224;
2660 }
2661 if (!var222) {
2662 fprintf(stderr, "Runtime error: %s", "Assert failed");
2663 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 349);
2664 exit(1);
2665 }
2666 var225 = ((val* (*)(val*))(var_mtype218->class->vft[COLOR_model__MClassType__mclass]))(var_mtype218) /* mclass on <var_mtype218:nullable MType(MClassType)>*/;
2667 var_sc = var225;
2668 var227 = ((short int (*)(val*, val*))(var_parents->class->vft[COLOR_abstract_collection__Collection__has]))(var_parents, var_sc) /* has on <var_parents:Array[MClass]>*/;
2669 var228 = !var227;
2670 var_229 = var228;
2671 if (var228){
2672 var226 = var_229;
2673 } else {
2674 var230 = ((short int (*)(val*, val*))(var_sc->class->vft[COLOR_kernel__Object___61d_61d]))(var_sc, var_objectclass) /* == on <var_sc:MClass>*/;
2675 var226 = var230;
2676 }
2677 if (var226){
2678 if (varonce231) {
2679 var232 = varonce231;
2680 } else {
2681 var233 = "Warning: superfluous super-class ";
2682 var234 = 33;
2683 var235 = string__NativeString__to_s_with_length(var233, var234);
2684 var232 = var235;
2685 varonce231 = var232;
2686 }
2687 if (varonce236) {
2688 var237 = varonce236;
2689 } else {
2690 var238 = " in class ";
2691 var239 = 10;
2692 var240 = string__NativeString__to_s_with_length(var238, var239);
2693 var237 = var240;
2694 varonce236 = var237;
2695 }
2696 var241 = ((val* (*)(val*))(var_mclassdef194->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef194) /* mclass on <var_mclassdef194:MClassDef>*/;
2697 if (varonce242) {
2698 var243 = varonce242;
2699 } else {
2700 var244 = ".";
2701 var245 = 1;
2702 var246 = string__NativeString__to_s_with_length(var244, var245);
2703 var243 = var246;
2704 varonce242 = var243;
2705 }
2706 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
2707 { /* var247 = array_instance Array[Object] */
2708 var248 = 5;
2709 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
2710 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var232;
2711 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var_mtype218;
2712 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var237;
2713 ((struct instance_array__NativeArray*)var249)->values[3] = (val*) var241;
2714 ((struct instance_array__NativeArray*)var249)->values[4] = (val*) var243;
2715 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
2716 CHECK_NEW_array__Array(var247);
2717 }
2718 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
2719 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(self, var_ntype216, var250) /* warning on <self:ModelBuilder>*/;
2720 } else {
2721 var251 = ((short int (*)(val*, val*))(var_seen_parents->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_seen_parents, var_sc) /* has_key on <var_seen_parents:ArrayMap[MClass, AType]>*/;
2722 var252 = !var251;
2723 if (var252){
2724 ((void (*)(val*, val*, val*))(var_seen_parents->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_seen_parents, var_sc, var_ntype216) /* []= on <var_seen_parents:ArrayMap[MClass, AType]>*/;
2725 } else {
2726 if (varonce253) {
2727 var254 = varonce253;
2728 } else {
2729 var255 = "Warning: duplicated super-class ";
2730 var256 = 32;
2731 var257 = string__NativeString__to_s_with_length(var255, var256);
2732 var254 = var257;
2733 varonce253 = var254;
2734 }
2735 if (varonce258) {
2736 var259 = varonce258;
2737 } else {
2738 var260 = " in class ";
2739 var261 = 10;
2740 var262 = string__NativeString__to_s_with_length(var260, var261);
2741 var259 = var262;
2742 varonce258 = var259;
2743 }
2744 var263 = ((val* (*)(val*))(var_mclassdef194->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef194) /* mclass on <var_mclassdef194:MClassDef>*/;
2745 if (varonce264) {
2746 var265 = varonce264;
2747 } else {
2748 var266 = ".";
2749 var267 = 1;
2750 var268 = string__NativeString__to_s_with_length(var266, var267);
2751 var265 = var268;
2752 varonce264 = var265;
2753 }
2754 var269 = NEW_array__Array(&type_array__Arraykernel__Object);
2755 { /* var269 = array_instance Array[Object] */
2756 var270 = 5;
2757 var271 = NEW_array__NativeArray(var270, &type_array__NativeArraykernel__Object);
2758 ((struct instance_array__NativeArray*)var271)->values[0] = (val*) var254;
2759 ((struct instance_array__NativeArray*)var271)->values[1] = (val*) var_mtype218;
2760 ((struct instance_array__NativeArray*)var271)->values[2] = (val*) var259;
2761 ((struct instance_array__NativeArray*)var271)->values[3] = (val*) var263;
2762 ((struct instance_array__NativeArray*)var271)->values[4] = (val*) var265;
2763 ((void (*)(val*, val*, long))(var269->class->vft[COLOR_array__Array__with_native]))(var269, var271, var270) /* with_native on <var269:Array[Object]>*/;
2764 CHECK_NEW_array__Array(var269);
2765 }
2766 var272 = ((val* (*)(val*))(var269->class->vft[COLOR_string__Object__to_s]))(var269) /* to_s on <var269:Array[Object]>*/;
2767 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(self, var_ntype216, var272) /* warning on <self:ModelBuilder>*/;
2768 }
2769 }
2770 CONTINUE_label221: (void)0;
2771 ((void (*)(val*))(var211->class->vft[COLOR_abstract_collection__Iterator__next]))(var211) /* next on <var211:Iterator[nullable Object]>*/;
2772 }
2773 BREAK_label221: (void)0;
2774 CONTINUE_label192: (void)0;
2775 ((void (*)(val*))(var184->class->vft[COLOR_abstract_collection__Iterator__next]))(var184) /* next on <var184:Iterator[nullable Object]>*/;
2776 }
2777 BREAK_label192: (void)0;
2778 RET_LABEL:;
2779 }
2780 /* method modelize_class#ModelBuilder#build_classes for (self: Object, AModule) */
2781 void VIRTUAL_modelize_class__ModelBuilder__build_classes(val* self, val* p0) {
2782 modelize_class__ModelBuilder__build_classes(self, p0);
2783 RET_LABEL:;
2784 }
2785 /* method modelize_class#ModelBuilder#mclassdef2nclassdef for (self: ModelBuilder): HashMap[MClassDef, AClassdef] */
2786 val* modelize_class__ModelBuilder__mclassdef2nclassdef(val* self) {
2787 val* var /* : HashMap[MClassDef, AClassdef] */;
2788 val* var1 /* : HashMap[MClassDef, AClassdef] */;
2789 var1 = self->attrs[COLOR_modelize_class__ModelBuilder___64dmclassdef2nclassdef].val; /* @mclassdef2nclassdef on <self:ModelBuilder> */
2790 if (var1 == NULL) {
2791 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef2nclassdef");
2792 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 362);
2793 exit(1);
2794 }
2795 var = var1;
2796 RET_LABEL:;
2797 return var;
2798 }
2799 /* method modelize_class#ModelBuilder#mclassdef2nclassdef for (self: Object): HashMap[MClassDef, AClassdef] */
2800 val* VIRTUAL_modelize_class__ModelBuilder__mclassdef2nclassdef(val* self) {
2801 val* var /* : HashMap[MClassDef, AClassdef] */;
2802 val* var1 /* : HashMap[MClassDef, AClassdef] */;
2803 var1 = modelize_class__ModelBuilder__mclassdef2nclassdef(self);
2804 var = var1;
2805 RET_LABEL:;
2806 return var;
2807 }
2808 /* method modelize_class#ModelBuilder#mclassdef2nclassdef= for (self: ModelBuilder, HashMap[MClassDef, AClassdef]) */
2809 void modelize_class__ModelBuilder__mclassdef2nclassdef_61d(val* self, val* p0) {
2810 self->attrs[COLOR_modelize_class__ModelBuilder___64dmclassdef2nclassdef].val = p0; /* @mclassdef2nclassdef on <self:ModelBuilder> */
2811 RET_LABEL:;
2812 }
2813 /* method modelize_class#ModelBuilder#mclassdef2nclassdef= for (self: Object, HashMap[MClassDef, AClassdef]) */
2814 void VIRTUAL_modelize_class__ModelBuilder__mclassdef2nclassdef_61d(val* self, val* p0) {
2815 modelize_class__ModelBuilder__mclassdef2nclassdef_61d(self, p0);
2816 RET_LABEL:;
2817 }
2818 /* method modelize_class#ModelBuilder#resolve_mtype_unchecked for (self: ModelBuilder, AClassdef, AType, Bool): nullable MType */
2819 val* modelize_class__ModelBuilder__resolve_mtype_unchecked(val* self, val* p0, val* p1, short int p2) {
2820 val* var /* : nullable MType */;
2821 val* var_nclassdef /* var nclassdef: AClassdef */;
2822 val* var_ntype /* var ntype: AType */;
2823 short int var_with_virtual /* var with_virtual: Bool */;
2824 val* var1 /* : TClassid */;
2825 val* var2 /* : String */;
2826 val* var_name /* var name: String */;
2827 val* var3 /* : nullable MClassDef */;
2828 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
2829 val* var4 /* : nullable ANode */;
2830 short int var5 /* : Bool */;
2831 int cltype;
2832 int idtype;
2833 const char* var_class_name;
2834 val* var6 /* : nullable MModule */;
2835 val* var_mmodule /* var mmodule: MModule */;
2836 short int var7 /* : Bool */;
2837 val* var8 /* : null */;
2838 short int var9 /* : Bool */;
2839 val* var10 /* : nullable MProperty */;
2840 short int var11 /* : Bool */;
2841 int cltype12;
2842 int idtype13;
2843 const char* var_class_name14;
2844 val* var_prop /* var prop: nullable MVirtualTypeProp */;
2845 val* var15 /* : null */;
2846 short int var16 /* : Bool */;
2847 val* var17 /* : ANodes[AType] */;
2848 short int var18 /* : Bool */;
2849 short int var19 /* : Bool */;
2850 static val* varonce;
2851 val* var20 /* : String */;
2852 char* var21 /* : NativeString */;
2853 long var22 /* : Int */;
2854 val* var23 /* : String */;
2855 static val* varonce24;
2856 val* var25 /* : String */;
2857 char* var26 /* : NativeString */;
2858 long var27 /* : Int */;
2859 val* var28 /* : String */;
2860 val* var29 /* : Array[Object] */;
2861 long var30 /* : Int */;
2862 val* var31 /* : NativeArray[Object] */;
2863 val* var32 /* : String */;
2864 val* var33 /* : MVirtualType */;
2865 val* var_res /* var res: MType */;
2866 val* var34 /* : nullable TKwnullable */;
2867 val* var35 /* : null */;
2868 short int var36 /* : Bool */;
2869 val* var37 /* : MType */;
2870 short int var38 /* : Bool */;
2871 val* var39 /* : null */;
2872 short int var40 /* : Bool */;
2873 short int var_ /* var : Bool */;
2874 val* var41 /* : Array[String] */;
2875 short int var42 /* : Bool */;
2876 val* var43 /* : ANodes[AType] */;
2877 short int var44 /* : Bool */;
2878 short int var45 /* : Bool */;
2879 static val* varonce46;
2880 val* var47 /* : String */;
2881 char* var48 /* : NativeString */;
2882 long var49 /* : Int */;
2883 val* var50 /* : String */;
2884 static val* varonce51;
2885 val* var52 /* : String */;
2886 char* var53 /* : NativeString */;
2887 long var54 /* : Int */;
2888 val* var55 /* : String */;
2889 val* var56 /* : Array[Object] */;
2890 long var57 /* : Int */;
2891 val* var58 /* : NativeArray[Object] */;
2892 val* var59 /* : String */;
2893 val* var60 /* : Range[Int] */;
2894 long var61 /* : Int */;
2895 val* var62 /* : Array[String] */;
2896 long var63 /* : Int */;
2897 val* var64 /* : Discrete */;
2898 val* var65 /* : Discrete */;
2899 val* var66 /* : Iterator[nullable Object] */;
2900 short int var67 /* : Bool */;
2901 val* var68 /* : nullable Object */;
2902 long var_i /* var i: Int */;
2903 long var69 /* : Int */;
2904 val* var70 /* : Array[String] */;
2905 val* var71 /* : nullable Object */;
2906 short int var72 /* : Bool */;
2907 val* var73 /* : MClass */;
2908 val* var74 /* : MClassType */;
2909 val* var75 /* : Array[MType] */;
2910 val* var76 /* : nullable Object */;
2911 val* var77 /* : nullable TKwnullable */;
2912 val* var78 /* : null */;
2913 short int var79 /* : Bool */;
2914 val* var80 /* : MType */;
2915 val* var81 /* : nullable MClass */;
2916 val* var_mclass /* var mclass: nullable MClass */;
2917 val* var82 /* : null */;
2918 short int var83 /* : Bool */;
2919 val* var84 /* : ANodes[AType] */;
2920 long var85 /* : Int */;
2921 long var_arity /* var arity: Int */;
2922 long var86 /* : Int */;
2923 short int var87 /* : Bool */;
2924 short int var89 /* : Bool */;
2925 short int var90 /* : Bool */;
2926 long var91 /* : Int */;
2927 short int var92 /* : Bool */;
2928 short int var94 /* : Bool */;
2929 static val* varonce95;
2930 val* var96 /* : String */;
2931 char* var97 /* : NativeString */;
2932 long var98 /* : Int */;
2933 val* var99 /* : String */;
2934 static val* varonce100;
2935 val* var101 /* : String */;
2936 char* var102 /* : NativeString */;
2937 long var103 /* : Int */;
2938 val* var104 /* : String */;
2939 val* var105 /* : Array[Object] */;
2940 long var106 /* : Int */;
2941 val* var107 /* : NativeArray[Object] */;
2942 val* var108 /* : String */;
2943 long var109 /* : Int */;
2944 long var110 /* : Int */;
2945 short int var111 /* : Bool */;
2946 short int var113 /* : Bool */;
2947 static val* varonce114;
2948 val* var115 /* : String */;
2949 char* var116 /* : NativeString */;
2950 long var117 /* : Int */;
2951 val* var118 /* : String */;
2952 static val* varonce119;
2953 val* var120 /* : String */;
2954 char* var121 /* : NativeString */;
2955 long var122 /* : Int */;
2956 val* var123 /* : String */;
2957 val* var124 /* : Array[Object] */;
2958 long var125 /* : Int */;
2959 val* var126 /* : NativeArray[Object] */;
2960 val* var127 /* : String */;
2961 static val* varonce128;
2962 val* var129 /* : String */;
2963 char* var130 /* : NativeString */;
2964 long var131 /* : Int */;
2965 val* var132 /* : String */;
2966 static val* varonce133;
2967 val* var134 /* : String */;
2968 char* var135 /* : NativeString */;
2969 long var136 /* : Int */;
2970 val* var137 /* : String */;
2971 long var138 /* : Int */;
2972 static val* varonce139;
2973 val* var140 /* : String */;
2974 char* var141 /* : NativeString */;
2975 long var142 /* : Int */;
2976 val* var143 /* : String */;
2977 static val* varonce144;
2978 val* var145 /* : String */;
2979 char* var146 /* : NativeString */;
2980 long var147 /* : Int */;
2981 val* var148 /* : String */;
2982 val* var149 /* : Array[Object] */;
2983 long var150 /* : Int */;
2984 val* var151 /* : NativeArray[Object] */;
2985 val* var152 /* : Object */;
2986 val* var153 /* : Object */;
2987 val* var154 /* : String */;
2988 val* var155 /* : null */;
2989 long var156 /* : Int */;
2990 short int var157 /* : Bool */;
2991 short int var159 /* : Bool */;
2992 val* var160 /* : MClassType */;
2993 val* var161 /* : nullable TKwnullable */;
2994 val* var162 /* : null */;
2995 short int var163 /* : Bool */;
2996 val* var164 /* : MType */;
2997 val* var165 /* : Array[MType] */;
2998 val* var_mtypes /* var mtypes: Array[MType] */;
2999 val* var166 /* : ANodes[AType] */;
3000 val* var167 /* : Iterator[nullable Object] */;
3001 short int var168 /* : Bool */;
3002 val* var169 /* : nullable Object */;
3003 val* var_nt /* var nt: AType */;
3004 val* var170 /* : nullable MType */;
3005 val* var_mt /* var mt: nullable MType */;
3006 val* var171 /* : null */;
3007 short int var172 /* : Bool */;
3008 val* var173 /* : null */;
3009 val* var175 /* : MClassType */;
3010 val* var176 /* : nullable TKwnullable */;
3011 val* var177 /* : null */;
3012 short int var178 /* : Bool */;
3013 val* var179 /* : MType */;
3014 static val* varonce180;
3015 val* var181 /* : String */;
3016 char* var182 /* : NativeString */;
3017 long var183 /* : Int */;
3018 val* var184 /* : String */;
3019 static val* varonce185;
3020 val* var186 /* : String */;
3021 char* var187 /* : NativeString */;
3022 long var188 /* : Int */;
3023 val* var189 /* : String */;
3024 static val* varonce190;
3025 val* var191 /* : String */;
3026 char* var192 /* : NativeString */;
3027 long var193 /* : Int */;
3028 val* var194 /* : String */;
3029 val* var195 /* : Array[Object] */;
3030 long var196 /* : Int */;
3031 val* var197 /* : NativeArray[Object] */;
3032 val* var198 /* : String */;
3033 val* var199 /* : null */;
3034 var_nclassdef = p0;
3035 var_ntype = p1;
3036 var_with_virtual = p2;
3037 var1 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_id]))(var_ntype) /* n_id on <var_ntype:AType>*/;
3038 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:TClassid>*/;
3039 var_name = var2;
3040 var3 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
3041 var_mclassdef = var3;
3042 var4 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__parent]))(var_nclassdef) /* parent on <var_nclassdef:AClassdef>*/;
3043 /* <var4:nullable ANode> isa AModule */
3044 cltype = type_parser_nodes__AModule.color;
3045 idtype = type_parser_nodes__AModule.id;
3046 if(var4 == NULL) {
3047 var5 = 0;
3048 } else {
3049 if(cltype >= var4->type->table_size) {
3050 var5 = 0;
3051 } else {
3052 var5 = var4->type->type_table[cltype] == idtype;
3053 }
3054 }
3055 if (!var5) {
3056 var_class_name = var4 == NULL ? "null" : var4->type->name;
3057 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name);
3058 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 375);
3059 exit(1);
3060 }
3061 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var4) /* mmodule on <var4:nullable ANode(AModule)>*/;
3062 if (var6 == NULL) {
3063 fprintf(stderr, "Runtime error: %s", "Cast failed");
3064 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 375);
3065 exit(1);
3066 }
3067 var_mmodule = var6;
3068 var8 = NULL;
3069 if (var_mclassdef == NULL) {
3070 var9 = 0; /* is null */
3071 } else {
3072 var9 = 1; /* arg is null and recv is not */
3073 }
3074 if (!var9) {
3075 var7 = 0;
3076 } else {
3077 var7 = var_with_virtual;
3078 }
3079 if (var7){
3080 var10 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(self, var_ntype, var_mclassdef, var_name) /* try_get_mproperty_by_name on <self:ModelBuilder>*/;
3081 /* <var10:nullable MProperty> isa nullable MVirtualTypeProp */
3082 cltype12 = type_nullable_model__MVirtualTypeProp.color;
3083 idtype13 = type_nullable_model__MVirtualTypeProp.id;
3084 if(var10 == NULL) {
3085 var11 = 1;
3086 } else {
3087 if(cltype12 >= var10->type->table_size) {
3088 var11 = 0;
3089 } else {
3090 var11 = var10->type->type_table[cltype12] == idtype13;
3091 }
3092 }
3093 if (!var11) {
3094 var_class_name14 = var10 == NULL ? "null" : var10->type->name;
3095 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MVirtualTypeProp", var_class_name14);
3096 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 380);
3097 exit(1);
3098 }
3099 var_prop = var10;
3100 var15 = NULL;
3101 if (var_prop == NULL) {
3102 var16 = 0; /* is null */
3103 } else {
3104 var16 = 1; /* arg is null and recv is not */
3105 }
3106 if (var16){
3107 var17 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_types]))(var_ntype) /* n_types on <var_ntype:AType>*/;
3108 var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var17) /* is_empty on <var17:ANodes[AType]>*/;
3109 var19 = !var18;
3110 if (var19){
3111 if (varonce) {
3112 var20 = varonce;
3113 } else {
3114 var21 = "Type error: formal type ";
3115 var22 = 24;
3116 var23 = string__NativeString__to_s_with_length(var21, var22);
3117 var20 = var23;
3118 varonce = var20;
3119 }
3120 if (varonce24) {
3121 var25 = varonce24;
3122 } else {
3123 var26 = " cannot have formal parameters.";
3124 var27 = 31;
3125 var28 = string__NativeString__to_s_with_length(var26, var27);
3126 var25 = var28;
3127 varonce24 = var25;
3128 }
3129 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
3130 { /* var29 = array_instance Array[Object] */
3131 var30 = 3;
3132 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
3133 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var20;
3134 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var_name;
3135 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
3136 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
3137 CHECK_NEW_array__Array(var29);
3138 }
3139 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
3140 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var32) /* error on <self:ModelBuilder>*/;
3141 } else {
3142 }
3143 var33 = ((val* (*)(val*))(var_prop->class->vft[COLOR_model__MVirtualTypeProp__mvirtualtype]))(var_prop) /* mvirtualtype on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)>*/;
3144 var_res = var33;
3145 var34 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_kwnullable]))(var_ntype) /* n_kwnullable on <var_ntype:AType>*/;
3146 var35 = NULL;
3147 if (var34 == NULL) {
3148 var36 = 0; /* is null */
3149 } else {
3150 var36 = 1; /* arg is null and recv is not */
3151 }
3152 if (var36){
3153 var37 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType(MVirtualType)>*/;
3154 var_res = var37;
3155 } else {
3156 }
3157 ((void (*)(val*, val*))(var_ntype->class->vft[COLOR_modelize_class__AType__mtype_61d]))(var_ntype, var_res) /* mtype= on <var_ntype:AType>*/;
3158 var = var_res;
3159 goto RET_LABEL;
3160 } else {
3161 }
3162 } else {
3163 }
3164 var39 = NULL;
3165 if (var_mclassdef == NULL) {
3166 var40 = 0; /* is null */
3167 } else {
3168 var40 = 1; /* arg is null and recv is not */
3169 }
3170 var_ = var40;
3171 if (var40){
3172 var41 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__parameter_names]))(var_mclassdef) /* parameter_names on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
3173 var42 = ((short int (*)(val*, val*))(var41->class->vft[COLOR_abstract_collection__Collection__has]))(var41, var_name) /* has on <var41:Array[String]>*/;
3174 var38 = var42;
3175 } else {
3176 var38 = var_;
3177 }
3178 if (var38){
3179 var43 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_types]))(var_ntype) /* n_types on <var_ntype:AType>*/;
3180 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var43) /* is_empty on <var43:ANodes[AType]>*/;
3181 var45 = !var44;
3182 if (var45){
3183 if (varonce46) {
3184 var47 = varonce46;
3185 } else {
3186 var48 = "Type error: formal type ";
3187 var49 = 24;
3188 var50 = string__NativeString__to_s_with_length(var48, var49);
3189 var47 = var50;
3190 varonce46 = var47;
3191 }
3192 if (varonce51) {
3193 var52 = varonce51;
3194 } else {
3195 var53 = " cannot have formal parameters.";
3196 var54 = 31;
3197 var55 = string__NativeString__to_s_with_length(var53, var54);
3198 var52 = var55;
3199 varonce51 = var52;
3200 }
3201 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
3202 { /* var56 = array_instance Array[Object] */
3203 var57 = 3;
3204 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
3205 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var47;
3206 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var_name;
3207 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var52;
3208 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
3209 CHECK_NEW_array__Array(var56);
3210 }
3211 var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
3212 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var59) /* error on <self:ModelBuilder>*/;
3213 } else {
3214 }
3215 var60 = NEW_range__Range(&type_range__Rangekernel__Int);
3216 var61 = 0;
3217 var62 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__parameter_names]))(var_mclassdef) /* parameter_names on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
3218 var63 = ((long (*)(val*))(var62->class->vft[COLOR_abstract_collection__Collection__length]))(var62) /* length on <var62:Array[String]>*/;
3219 var64 = BOX_kernel__Int(var61); /* autobox from Int to Discrete */
3220 var65 = BOX_kernel__Int(var63); /* autobox from Int to Discrete */
3221 ((void (*)(val*, val*, val*))(var60->class->vft[COLOR_range__Range__without_last]))(var60, var64, var65) /* without_last on <var60:Range[Int]>*/;
3222 CHECK_NEW_range__Range(var60);
3223 var66 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__Collection__iterator]))(var60) /* iterator on <var60:Range[Int]>*/;
3224 for(;;) {
3225 var67 = ((short int (*)(val*))(var66->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var66) /* is_ok on <var66:Iterator[nullable Object]>*/;
3226 if(!var67) break;
3227 var68 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Iterator__item]))(var66) /* item on <var66:Iterator[nullable Object]>*/;
3228 var69 = ((struct instance_kernel__Int*)var68)->value; /* autounbox from nullable Object to Int */;
3229 var_i = var69;
3230 var70 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__parameter_names]))(var_mclassdef) /* parameter_names on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
3231 var71 = ((val* (*)(val*, long))(var70->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var70, var_i) /* [] on <var70:Array[String]>*/;
3232 var72 = ((short int (*)(val*, val*))(var71->class->vft[COLOR_kernel__Object___61d_61d]))(var71, var_name) /* == on <var71:nullable Object(String)>*/;
3233 if (var72){
3234 var73 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
3235 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_model__MClass__mclass_type]))(var73) /* mclass_type on <var73:MClass>*/;
3236 var75 = ((val* (*)(val*))(var74->class->vft[COLOR_model__MClassType__arguments]))(var74) /* arguments on <var74:MClassType>*/;
3237 var76 = ((val* (*)(val*, long))(var75->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var75, var_i) /* [] on <var75:Array[MType]>*/;
3238 var_res = var76;
3239 var77 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_kwnullable]))(var_ntype) /* n_kwnullable on <var_ntype:AType>*/;
3240 var78 = NULL;
3241 if (var77 == NULL) {
3242 var79 = 0; /* is null */
3243 } else {
3244 var79 = 1; /* arg is null and recv is not */
3245 }
3246 if (var79){
3247 var80 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
3248 var_res = var80;
3249 } else {
3250 }
3251 ((void (*)(val*, val*))(var_ntype->class->vft[COLOR_modelize_class__AType__mtype_61d]))(var_ntype, var_res) /* mtype= on <var_ntype:AType>*/;
3252 var = var_res;
3253 goto RET_LABEL;
3254 } else {
3255 }
3256 CONTINUE_label: (void)0;
3257 ((void (*)(val*))(var66->class->vft[COLOR_abstract_collection__Iterator__next]))(var66) /* next on <var66:Iterator[nullable Object]>*/;
3258 }
3259 BREAK_label: (void)0;
3260 fprintf(stderr, "Runtime error: %s", "Aborted");
3261 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 405);
3262 exit(1);
3263 } else {
3264 }
3265 var81 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mclass_by_name]))(self, var_ntype, var_mmodule, var_name) /* try_get_mclass_by_name on <self:ModelBuilder>*/;
3266 var_mclass = var81;
3267 var82 = NULL;
3268 if (var_mclass == NULL) {
3269 var83 = 0; /* is null */
3270 } else {
3271 var83 = 1; /* arg is null and recv is not */
3272 }
3273 if (var83){
3274 var84 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_types]))(var_ntype) /* n_types on <var_ntype:AType>*/;
3275 var85 = ((long (*)(val*))(var84->class->vft[COLOR_abstract_collection__Collection__length]))(var84) /* length on <var84:ANodes[AType]>*/;
3276 var_arity = var85;
3277 var86 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
3278 { /* Inline kernel#Int#!= (var_arity,var86) */
3279 var89 = var_arity == var86;
3280 var90 = !var89;
3281 var87 = var90;
3282 goto RET_LABEL88;
3283 RET_LABEL88:(void)0;
3284 }
3285 if (var87){
3286 var91 = 0;
3287 { /* Inline kernel#Int#== (var_arity,var91) */
3288 var94 = var_arity == var91;
3289 var92 = var94;
3290 goto RET_LABEL93;
3291 RET_LABEL93:(void)0;
3292 }
3293 if (var92){
3294 if (varonce95) {
3295 var96 = varonce95;
3296 } else {
3297 var97 = "Type error: \'";
3298 var98 = 13;
3299 var99 = string__NativeString__to_s_with_length(var97, var98);
3300 var96 = var99;
3301 varonce95 = var96;
3302 }
3303 if (varonce100) {
3304 var101 = varonce100;
3305 } else {
3306 var102 = "\' is a generic class.";
3307 var103 = 21;
3308 var104 = string__NativeString__to_s_with_length(var102, var103);
3309 var101 = var104;
3310 varonce100 = var101;
3311 }
3312 var105 = NEW_array__Array(&type_array__Arraykernel__Object);
3313 { /* var105 = array_instance Array[Object] */
3314 var106 = 3;
3315 var107 = NEW_array__NativeArray(var106, &type_array__NativeArraykernel__Object);
3316 ((struct instance_array__NativeArray*)var107)->values[0] = (val*) var96;
3317 ((struct instance_array__NativeArray*)var107)->values[1] = (val*) var_name;
3318 ((struct instance_array__NativeArray*)var107)->values[2] = (val*) var101;
3319 ((void (*)(val*, val*, long))(var105->class->vft[COLOR_array__Array__with_native]))(var105, var107, var106) /* with_native on <var105:Array[Object]>*/;
3320 CHECK_NEW_array__Array(var105);
3321 }
3322 var108 = ((val* (*)(val*))(var105->class->vft[COLOR_string__Object__to_s]))(var105) /* to_s on <var105:Array[Object]>*/;
3323 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var108) /* error on <self:ModelBuilder>*/;
3324 } else {
3325 var109 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
3326 var110 = 0;
3327 { /* Inline kernel#Int#== (var109,var110) */
3328 var113 = var109 == var110;
3329 var111 = var113;
3330 goto RET_LABEL112;
3331 RET_LABEL112:(void)0;
3332 }
3333 if (var111){
3334 if (varonce114) {
3335 var115 = varonce114;
3336 } else {
3337 var116 = "Type error: \'";
3338 var117 = 13;
3339 var118 = string__NativeString__to_s_with_length(var116, var117);
3340 var115 = var118;
3341 varonce114 = var115;
3342 }
3343 if (varonce119) {
3344 var120 = varonce119;
3345 } else {
3346 var121 = "\' is not a generic class.";
3347 var122 = 25;
3348 var123 = string__NativeString__to_s_with_length(var121, var122);
3349 var120 = var123;
3350 varonce119 = var120;
3351 }
3352 var124 = NEW_array__Array(&type_array__Arraykernel__Object);
3353 { /* var124 = array_instance Array[Object] */
3354 var125 = 3;
3355 var126 = NEW_array__NativeArray(var125, &type_array__NativeArraykernel__Object);
3356 ((struct instance_array__NativeArray*)var126)->values[0] = (val*) var115;
3357 ((struct instance_array__NativeArray*)var126)->values[1] = (val*) var_name;
3358 ((struct instance_array__NativeArray*)var126)->values[2] = (val*) var120;
3359 ((void (*)(val*, val*, long))(var124->class->vft[COLOR_array__Array__with_native]))(var124, var126, var125) /* with_native on <var124:Array[Object]>*/;
3360 CHECK_NEW_array__Array(var124);
3361 }
3362 var127 = ((val* (*)(val*))(var124->class->vft[COLOR_string__Object__to_s]))(var124) /* to_s on <var124:Array[Object]>*/;
3363 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var127) /* error on <self:ModelBuilder>*/;
3364 } else {
3365 if (varonce128) {
3366 var129 = varonce128;
3367 } else {
3368 var130 = "Type error: \'";
3369 var131 = 13;
3370 var132 = string__NativeString__to_s_with_length(var130, var131);
3371 var129 = var132;
3372 varonce128 = var129;
3373 }
3374 if (varonce133) {
3375 var134 = varonce133;
3376 } else {
3377 var135 = "\' has ";
3378 var136 = 6;
3379 var137 = string__NativeString__to_s_with_length(var135, var136);
3380 var134 = var137;
3381 varonce133 = var134;
3382 }
3383 var138 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:nullable MClass(MClass)>*/;
3384 if (varonce139) {
3385 var140 = varonce139;
3386 } else {
3387 var141 = " parameters (";
3388 var142 = 13;
3389 var143 = string__NativeString__to_s_with_length(var141, var142);
3390 var140 = var143;
3391 varonce139 = var140;
3392 }
3393 if (varonce144) {
3394 var145 = varonce144;
3395 } else {
3396 var146 = " are provided).";
3397 var147 = 15;
3398 var148 = string__NativeString__to_s_with_length(var146, var147);
3399 var145 = var148;
3400 varonce144 = var145;
3401 }
3402 var149 = NEW_array__Array(&type_array__Arraykernel__Object);
3403 { /* var149 = array_instance Array[Object] */
3404 var150 = 7;
3405 var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
3406 ((struct instance_array__NativeArray*)var151)->values[0] = (val*) var129;
3407 ((struct instance_array__NativeArray*)var151)->values[1] = (val*) var_name;
3408 ((struct instance_array__NativeArray*)var151)->values[2] = (val*) var134;
3409 var152 = BOX_kernel__Int(var138); /* autobox from Int to Object */
3410 ((struct instance_array__NativeArray*)var151)->values[3] = (val*) var152;
3411 ((struct instance_array__NativeArray*)var151)->values[4] = (val*) var140;
3412 var153 = BOX_kernel__Int(var_arity); /* autobox from Int to Object */
3413 ((struct instance_array__NativeArray*)var151)->values[5] = (val*) var153;
3414 ((struct instance_array__NativeArray*)var151)->values[6] = (val*) var145;
3415 ((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
3416 CHECK_NEW_array__Array(var149);
3417 }
3418 var154 = ((val* (*)(val*))(var149->class->vft[COLOR_string__Object__to_s]))(var149) /* to_s on <var149:Array[Object]>*/;
3419 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var154) /* error on <self:ModelBuilder>*/;
3420 }
3421 }
3422 var155 = NULL;
3423 var = var155;
3424 goto RET_LABEL;
3425 } else {
3426 }
3427 var156 = 0;
3428 { /* Inline kernel#Int#== (var_arity,var156) */
3429 var159 = var_arity == var156;
3430 var157 = var159;
3431 goto RET_LABEL158;
3432 RET_LABEL158:(void)0;
3433 }
3434 if (var157){
3435 var160 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:nullable MClass(MClass)>*/;
3436 var_res = var160;
3437 var161 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_kwnullable]))(var_ntype) /* n_kwnullable on <var_ntype:AType>*/;
3438 var162 = NULL;
3439 if (var161 == NULL) {
3440 var163 = 0; /* is null */
3441 } else {
3442 var163 = 1; /* arg is null and recv is not */
3443 }
3444 if (var163){
3445 var164 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType(MClassType)>*/;
3446 var_res = var164;
3447 } else {
3448 }
3449 ((void (*)(val*, val*))(var_ntype->class->vft[COLOR_modelize_class__AType__mtype_61d]))(var_ntype, var_res) /* mtype= on <var_ntype:AType>*/;
3450 var = var_res;
3451 goto RET_LABEL;
3452 } else {
3453 var165 = NEW_array__Array(&type_array__Arraymodel__MType);
3454 ((void (*)(val*))(var165->class->vft[COLOR_array__Array__init]))(var165) /* init on <var165:Array[MType]>*/;
3455 CHECK_NEW_array__Array(var165);
3456 var_mtypes = var165;
3457 var166 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_types]))(var_ntype) /* n_types on <var_ntype:AType>*/;
3458 var167 = ((val* (*)(val*))(var166->class->vft[COLOR_abstract_collection__Collection__iterator]))(var166) /* iterator on <var166:ANodes[AType]>*/;
3459 for(;;) {
3460 var168 = ((short int (*)(val*))(var167->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var167) /* is_ok on <var167:Iterator[nullable Object]>*/;
3461 if(!var168) break;
3462 var169 = ((val* (*)(val*))(var167->class->vft[COLOR_abstract_collection__Iterator__item]))(var167) /* item on <var167:Iterator[nullable Object]>*/;
3463 var_nt = var169;
3464 var170 = ((val* (*)(val*, val*, val*, short int))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype_unchecked]))(self, var_nclassdef, var_nt, var_with_virtual) /* resolve_mtype_unchecked on <self:ModelBuilder>*/;
3465 var_mt = var170;
3466 var171 = NULL;
3467 if (var_mt == NULL) {
3468 var172 = 1; /* is null */
3469 } else {
3470 var172 = 0; /* arg is null but recv is not */
3471 }
3472 if (var172){
3473 var173 = NULL;
3474 var = var173;
3475 goto RET_LABEL;
3476 } else {
3477 }
3478 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var_mt) /* add on <var_mtypes:Array[MType]>*/;
3479 CONTINUE_label174: (void)0;
3480 ((void (*)(val*))(var167->class->vft[COLOR_abstract_collection__Iterator__next]))(var167) /* next on <var167:Iterator[nullable Object]>*/;
3481 }
3482 BREAK_label174: (void)0;
3483 var175 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__get_mtype]))(var_mclass, var_mtypes) /* get_mtype on <var_mclass:nullable MClass(MClass)>*/;
3484 var_res = var175;
3485 var176 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_kwnullable]))(var_ntype) /* n_kwnullable on <var_ntype:AType>*/;
3486 var177 = NULL;
3487 if (var176 == NULL) {
3488 var178 = 0; /* is null */
3489 } else {
3490 var178 = 1; /* arg is null and recv is not */
3491 }
3492 if (var178){
3493 var179 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType(MClassType)>*/;
3494 var_res = var179;
3495 } else {
3496 }
3497 ((void (*)(val*, val*))(var_ntype->class->vft[COLOR_modelize_class__AType__mtype_61d]))(var_ntype, var_res) /* mtype= on <var_ntype:AType>*/;
3498 var = var_res;
3499 goto RET_LABEL;
3500 }
3501 } else {
3502 }
3503 if (varonce180) {
3504 var181 = varonce180;
3505 } else {
3506 var182 = "Type error: class ";
3507 var183 = 18;
3508 var184 = string__NativeString__to_s_with_length(var182, var183);
3509 var181 = var184;
3510 varonce180 = var181;
3511 }
3512 if (varonce185) {
3513 var186 = varonce185;
3514 } else {
3515 var187 = " not found in module ";
3516 var188 = 21;
3517 var189 = string__NativeString__to_s_with_length(var187, var188);
3518 var186 = var189;
3519 varonce185 = var186;
3520 }
3521 if (varonce190) {
3522 var191 = varonce190;
3523 } else {
3524 var192 = ".";
3525 var193 = 1;
3526 var194 = string__NativeString__to_s_with_length(var192, var193);
3527 var191 = var194;
3528 varonce190 = var191;
3529 }
3530 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
3531 { /* var195 = array_instance Array[Object] */
3532 var196 = 5;
3533 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
3534 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var181;
3535 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var_name;
3536 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var186;
3537 ((struct instance_array__NativeArray*)var197)->values[3] = (val*) var_mmodule;
3538 ((struct instance_array__NativeArray*)var197)->values[4] = (val*) var191;
3539 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
3540 CHECK_NEW_array__Array(var195);
3541 }
3542 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
3543 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_ntype, var198) /* error on <self:ModelBuilder>*/;
3544 var199 = NULL;
3545 var = var199;
3546 goto RET_LABEL;
3547 RET_LABEL:;
3548 return var;
3549 }
3550 /* method modelize_class#ModelBuilder#resolve_mtype_unchecked for (self: Object, AClassdef, AType, Bool): nullable MType */
3551 val* VIRTUAL_modelize_class__ModelBuilder__resolve_mtype_unchecked(val* self, val* p0, val* p1, short int p2) {
3552 val* var /* : nullable MType */;
3553 val* var1 /* : nullable MType */;
3554 var1 = modelize_class__ModelBuilder__resolve_mtype_unchecked(self, p0, p1, p2);
3555 var = var1;
3556 RET_LABEL:;
3557 return var;
3558 }
3559 /* method modelize_class#ModelBuilder#resolve_mtype for (self: ModelBuilder, AClassdef, AType): nullable MType */
3560 val* modelize_class__ModelBuilder__resolve_mtype(val* self, val* p0, val* p1) {
3561 val* var /* : nullable MType */;
3562 val* var_nclassdef /* var nclassdef: AClassdef */;
3563 val* var_ntype /* var ntype: AType */;
3564 val* var1 /* : nullable MType */;
3565 val* var_mtype /* var mtype: nullable MType */;
3566 val* var2 /* : null */;
3567 short int var3 /* : Bool */;
3568 short int var4 /* : Bool */;
3569 val* var5 /* : nullable MType */;
3570 val* var6 /* : null */;
3571 short int var7 /* : Bool */;
3572 val* var8 /* : null */;
3573 short int var9 /* : Bool */;
3574 short int var10 /* : Bool */;
3575 int cltype;
3576 int idtype;
3577 val* var11 /* : nullable ANode */;
3578 short int var12 /* : Bool */;
3579 int cltype13;
3580 int idtype14;
3581 const char* var_class_name;
3582 val* var15 /* : nullable MModule */;
3583 val* var_mmodule /* var mmodule: MModule */;
3584 val* var16 /* : nullable MClassDef */;
3585 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
3586 val* var17 /* : MClass */;
3587 val* var_mclass /* var mclass: MClass */;
3588 val* var18 /* : Range[Int] */;
3589 long var19 /* : Int */;
3590 long var20 /* : Int */;
3591 val* var21 /* : Discrete */;
3592 val* var22 /* : Discrete */;
3593 val* var23 /* : Iterator[nullable Object] */;
3594 short int var24 /* : Bool */;
3595 val* var25 /* : nullable Object */;
3596 long var_i /* var i: Int */;
3597 long var26 /* : Int */;
3598 val* var27 /* : MClassDef */;
3599 val* var28 /* : MClassType */;
3600 val* var29 /* : Array[MType] */;
3601 val* var30 /* : nullable Object */;
3602 val* var_bound /* var bound: MType */;
3603 val* var31 /* : ANodes[AType] */;
3604 val* var32 /* : nullable Object */;
3605 val* var_nt /* var nt: AType */;
3606 val* var33 /* : nullable MType */;
3607 val* var_mt /* var mt: nullable MType */;
3608 val* var34 /* : null */;
3609 short int var35 /* : Bool */;
3610 val* var36 /* : null */;
3611 val* var37 /* : MClassType */;
3612 short int var38 /* : Bool */;
3613 short int var39 /* : Bool */;
3614 static val* varonce;
3615 val* var40 /* : String */;
3616 char* var41 /* : NativeString */;
3617 long var42 /* : Int */;
3618 val* var43 /* : String */;
3619 static val* varonce44;
3620 val* var45 /* : String */;
3621 char* var46 /* : NativeString */;
3622 long var47 /* : Int */;
3623 val* var48 /* : String */;
3624 val* var49 /* : Array[Object] */;
3625 long var50 /* : Int */;
3626 val* var51 /* : NativeArray[Object] */;
3627 val* var52 /* : String */;
3628 val* var53 /* : null */;
3629 short int var54 /* : Bool */;
3630 var_nclassdef = p0;
3631 var_ntype = p1;
3632 var1 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_modelize_class__AType__mtype]))(var_ntype) /* mtype on <var_ntype:AType>*/;
3633 var_mtype = var1;
3634 var2 = NULL;
3635 if (var_mtype == NULL) {
3636 var3 = 1; /* is null */
3637 } else {
3638 var3 = 0; /* arg is null but recv is not */
3639 }
3640 if (var3){
3641 var4 = 1;
3642 var5 = ((val* (*)(val*, val*, val*, short int))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype_unchecked]))(self, var_nclassdef, var_ntype, var4) /* resolve_mtype_unchecked on <self:ModelBuilder>*/;
3643 var_mtype = var5;
3644 } else {
3645 }
3646 var6 = NULL;
3647 if (var_mtype == NULL) {
3648 var7 = 1; /* is null */
3649 } else {
3650 var7 = 0; /* arg is null but recv is not */
3651 }
3652 if (var7){
3653 var8 = NULL;
3654 var = var8;
3655 goto RET_LABEL;
3656 } else {
3657 }
3658 var9 = ((short int (*)(val*))(var_ntype->class->vft[COLOR_modelize_class__AType__checked_mtype]))(var_ntype) /* checked_mtype on <var_ntype:AType>*/;
3659 if (var9){
3660 var = var_mtype;
3661 goto RET_LABEL;
3662 } else {
3663 }
3664 /* <var_mtype:nullable MType(MType)> isa MGenericType */
3665 cltype = type_model__MGenericType.color;
3666 idtype = type_model__MGenericType.id;
3667 if(cltype >= var_mtype->type->table_size) {
3668 var10 = 0;
3669 } else {
3670 var10 = var_mtype->type->type_table[cltype] == idtype;
3671 }
3672 if (var10){
3673 var11 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__parent]))(var_nclassdef) /* parent on <var_nclassdef:AClassdef>*/;
3674 /* <var11:nullable ANode> isa AModule */
3675 cltype13 = type_parser_nodes__AModule.color;
3676 idtype14 = type_parser_nodes__AModule.id;
3677 if(var11 == NULL) {
3678 var12 = 0;
3679 } else {
3680 if(cltype13 >= var11->type->table_size) {
3681 var12 = 0;
3682 } else {
3683 var12 = var11->type->type_table[cltype13] == idtype14;
3684 }
3685 }
3686 if (!var12) {
3687 var_class_name = var11 == NULL ? "null" : var11->type->name;
3688 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name);
3689 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 459);
3690 exit(1);
3691 }
3692 var15 = ((val* (*)(val*))(var11->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var11) /* mmodule on <var11:nullable ANode(AModule)>*/;
3693 if (var15 == NULL) {
3694 fprintf(stderr, "Runtime error: %s", "Cast failed");
3695 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 459);
3696 exit(1);
3697 }
3698 var_mmodule = var15;
3699 var16 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
3700 var_mclassdef = var16;
3701 var17 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:nullable MType(MGenericType)>*/;
3702 var_mclass = var17;
3703 var18 = NEW_range__Range(&type_range__Rangekernel__Int);
3704 var19 = 0;
3705 var20 = ((long (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__arity]))(var_mclass) /* arity on <var_mclass:MClass>*/;
3706 var21 = BOX_kernel__Int(var19); /* autobox from Int to Discrete */
3707 var22 = BOX_kernel__Int(var20); /* autobox from Int to Discrete */
3708 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_range__Range__without_last]))(var18, var21, var22) /* without_last on <var18:Range[Int]>*/;
3709 CHECK_NEW_range__Range(var18);
3710 var23 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Range[Int]>*/;
3711 for(;;) {
3712 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
3713 if(!var24) break;
3714 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
3715 var26 = ((struct instance_kernel__Int*)var25)->value; /* autounbox from nullable Object to Int */;
3716 var_i = var26;
3717 var27 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on <var_mclass:MClass>*/;
3718 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClassDef__bound_mtype]))(var27) /* bound_mtype on <var27:MClassDef>*/;
3719 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_model__MClassType__arguments]))(var28) /* arguments on <var28:MClassType>*/;
3720 var30 = ((val* (*)(val*, long))(var29->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var29, var_i) /* [] on <var29:Array[MType]>*/;
3721 var_bound = var30;
3722 var31 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_parser_nodes__AType__n_types]))(var_ntype) /* n_types on <var_ntype:AType>*/;
3723 var32 = ((val* (*)(val*, long))(var31->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var31, var_i) /* [] on <var31:ANodes[AType]>*/;
3724 var_nt = var32;
3725 var33 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelize_class__ModelBuilder__resolve_mtype]))(self, var_nclassdef, var_nt) /* resolve_mtype on <self:ModelBuilder>*/;
3726 var_mt = var33;
3727 var34 = NULL;
3728 if (var_mt == NULL) {
3729 var35 = 1; /* is null */
3730 } else {
3731 var35 = 0; /* arg is null but recv is not */
3732 }
3733 if (var35){
3734 var36 = NULL;
3735 var = var36;
3736 goto RET_LABEL;
3737 } else {
3738 }
3739 if (var_mclassdef == NULL) {
3740 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3741 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 467);
3742 exit(1);
3743 } else {
3744 var37 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef) /* bound_mtype on <var_mclassdef:nullable MClassDef>*/;
3745 }
3746 var38 = ((short int (*)(val*, val*, val*, val*))(var_mt->class->vft[COLOR_model__MType__is_subtype]))(var_mt, var_mmodule, var37, var_bound) /* is_subtype on <var_mt:nullable MType(MType)>*/;
3747 var39 = !var38;
3748 if (var39){
3749 if (varonce) {
3750 var40 = varonce;
3751 } else {
3752 var41 = "Type error: expected ";
3753 var42 = 21;
3754 var43 = string__NativeString__to_s_with_length(var41, var42);
3755 var40 = var43;
3756 varonce = var40;
3757 }
3758 if (varonce44) {
3759 var45 = varonce44;
3760 } else {
3761 var46 = ", got ";
3762 var47 = 6;
3763 var48 = string__NativeString__to_s_with_length(var46, var47);
3764 var45 = var48;
3765 varonce44 = var45;
3766 }
3767 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
3768 { /* var49 = array_instance Array[Object] */
3769 var50 = 4;
3770 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
3771 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var40;
3772 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var_bound;
3773 ((struct instance_array__NativeArray*)var51)->values[2] = (val*) var45;
3774 ((struct instance_array__NativeArray*)var51)->values[3] = (val*) var_mt;
3775 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
3776 CHECK_NEW_array__Array(var49);
3777 }
3778 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
3779 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nt, var52) /* error on <self:ModelBuilder>*/;
3780 var53 = NULL;
3781 var = var53;
3782 goto RET_LABEL;
3783 } else {
3784 }
3785 CONTINUE_label: (void)0;
3786 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
3787 }
3788 BREAK_label: (void)0;
3789 } else {
3790 }
3791 var54 = 1;
3792 ((void (*)(val*, short int))(var_ntype->class->vft[COLOR_modelize_class__AType__checked_mtype_61d]))(var_ntype, var54) /* checked_mtype= on <var_ntype:AType>*/;
3793 var = var_mtype;
3794 goto RET_LABEL;
3795 RET_LABEL:;
3796 return var;
3797 }
3798 /* method modelize_class#ModelBuilder#resolve_mtype for (self: Object, AClassdef, AType): nullable MType */
3799 val* VIRTUAL_modelize_class__ModelBuilder__resolve_mtype(val* self, val* p0, val* p1) {
3800 val* var /* : nullable MType */;
3801 val* var1 /* : nullable MType */;
3802 var1 = modelize_class__ModelBuilder__resolve_mtype(self, p0, p1);
3803 var = var1;
3804 RET_LABEL:;
3805 return var;
3806 }
3807 /* method modelize_class#AModule#build_classes_is_done for (self: AModule): Bool */
3808 short int modelize_class__AModule__build_classes_is_done(val* self) {
3809 short int var /* : Bool */;
3810 short int var1 /* : Bool */;
3811 var1 = self->attrs[COLOR_modelize_class__AModule___64dbuild_classes_is_done].s; /* @build_classes_is_done on <self:AModule> */
3812 var = var1;
3813 RET_LABEL:;
3814 return var;
3815 }
3816 /* method modelize_class#AModule#build_classes_is_done for (self: Object): Bool */
3817 short int VIRTUAL_modelize_class__AModule__build_classes_is_done(val* self) {
3818 short int var /* : Bool */;
3819 short int var1 /* : Bool */;
3820 var1 = modelize_class__AModule__build_classes_is_done(self);
3821 var = var1;
3822 RET_LABEL:;
3823 return var;
3824 }
3825 /* method modelize_class#AModule#build_classes_is_done= for (self: AModule, Bool) */
3826 void modelize_class__AModule__build_classes_is_done_61d(val* self, short int p0) {
3827 self->attrs[COLOR_modelize_class__AModule___64dbuild_classes_is_done].s = p0; /* @build_classes_is_done on <self:AModule> */
3828 RET_LABEL:;
3829 }
3830 /* method modelize_class#AModule#build_classes_is_done= for (self: Object, Bool) */
3831 void VIRTUAL_modelize_class__AModule__build_classes_is_done_61d(val* self, short int p0) {
3832 modelize_class__AModule__build_classes_is_done_61d(self, p0);
3833 RET_LABEL:;
3834 }
3835 /* method modelize_class#AModule#mclass2nclassdef for (self: AModule): Map[MClass, AClassdef] */
3836 val* modelize_class__AModule__mclass2nclassdef(val* self) {
3837 val* var /* : Map[MClass, AClassdef] */;
3838 val* var1 /* : Map[MClass, AClassdef] */;
3839 var1 = self->attrs[COLOR_modelize_class__AModule___64dmclass2nclassdef].val; /* @mclass2nclassdef on <self:AModule> */
3840 if (var1 == NULL) {
3841 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass2nclassdef");
3842 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 482);
3843 exit(1);
3844 }
3845 var = var1;
3846 RET_LABEL:;
3847 return var;
3848 }
3849 /* method modelize_class#AModule#mclass2nclassdef for (self: Object): Map[MClass, AClassdef] */
3850 val* VIRTUAL_modelize_class__AModule__mclass2nclassdef(val* self) {
3851 val* var /* : Map[MClass, AClassdef] */;
3852 val* var1 /* : Map[MClass, AClassdef] */;
3853 var1 = modelize_class__AModule__mclass2nclassdef(self);
3854 var = var1;
3855 RET_LABEL:;
3856 return var;
3857 }
3858 /* method modelize_class#AModule#mclass2nclassdef= for (self: AModule, Map[MClass, AClassdef]) */
3859 void modelize_class__AModule__mclass2nclassdef_61d(val* self, val* p0) {
3860 self->attrs[COLOR_modelize_class__AModule___64dmclass2nclassdef].val = p0; /* @mclass2nclassdef on <self:AModule> */
3861 RET_LABEL:;
3862 }
3863 /* method modelize_class#AModule#mclass2nclassdef= for (self: Object, Map[MClass, AClassdef]) */
3864 void VIRTUAL_modelize_class__AModule__mclass2nclassdef_61d(val* self, val* p0) {
3865 modelize_class__AModule__mclass2nclassdef_61d(self, p0);
3866 RET_LABEL:;
3867 }
3868 /* method modelize_class#AClassdef#mclass for (self: AClassdef): nullable MClass */
3869 val* modelize_class__AClassdef__mclass(val* self) {
3870 val* var /* : nullable MClass */;
3871 val* var1 /* : nullable MClass */;
3872 var1 = self->attrs[COLOR_modelize_class__AClassdef___64dmclass].val; /* @mclass on <self:AClassdef> */
3873 var = var1;
3874 RET_LABEL:;
3875 return var;
3876 }
3877 /* method modelize_class#AClassdef#mclass for (self: Object): nullable MClass */
3878 val* VIRTUAL_modelize_class__AClassdef__mclass(val* self) {
3879 val* var /* : nullable MClass */;
3880 val* var1 /* : nullable MClass */;
3881 var1 = modelize_class__AClassdef__mclass(self);
3882 var = var1;
3883 RET_LABEL:;
3884 return var;
3885 }
3886 /* method modelize_class#AClassdef#mclass= for (self: AClassdef, nullable MClass) */
3887 void modelize_class__AClassdef__mclass_61d(val* self, val* p0) {
3888 self->attrs[COLOR_modelize_class__AClassdef___64dmclass].val = p0; /* @mclass on <self:AClassdef> */
3889 RET_LABEL:;
3890 }
3891 /* method modelize_class#AClassdef#mclass= for (self: Object, nullable MClass) */
3892 void VIRTUAL_modelize_class__AClassdef__mclass_61d(val* self, val* p0) {
3893 modelize_class__AClassdef__mclass_61d(self, p0);
3894 RET_LABEL:;
3895 }
3896 /* method modelize_class#AClassdef#mclassdef for (self: AClassdef): nullable MClassDef */
3897 val* modelize_class__AClassdef__mclassdef(val* self) {
3898 val* var /* : nullable MClassDef */;
3899 val* var1 /* : nullable MClassDef */;
3900 var1 = self->attrs[COLOR_modelize_class__AClassdef___64dmclassdef].val; /* @mclassdef on <self:AClassdef> */
3901 var = var1;
3902 RET_LABEL:;
3903 return var;
3904 }
3905 /* method modelize_class#AClassdef#mclassdef for (self: Object): nullable MClassDef */
3906 val* VIRTUAL_modelize_class__AClassdef__mclassdef(val* self) {
3907 val* var /* : nullable MClassDef */;
3908 val* var1 /* : nullable MClassDef */;
3909 var1 = modelize_class__AClassdef__mclassdef(self);
3910 var = var1;
3911 RET_LABEL:;
3912 return var;
3913 }
3914 /* method modelize_class#AClassdef#mclassdef= for (self: AClassdef, nullable MClassDef) */
3915 void modelize_class__AClassdef__mclassdef_61d(val* self, val* p0) {
3916 self->attrs[COLOR_modelize_class__AClassdef___64dmclassdef].val = p0; /* @mclassdef on <self:AClassdef> */
3917 RET_LABEL:;
3918 }
3919 /* method modelize_class#AClassdef#mclassdef= for (self: Object, nullable MClassDef) */
3920 void VIRTUAL_modelize_class__AClassdef__mclassdef_61d(val* self, val* p0) {
3921 modelize_class__AClassdef__mclassdef_61d(self, p0);
3922 RET_LABEL:;
3923 }
3924 /* method modelize_class#AClasskind#mkind for (self: AClasskind): MClassKind */
3925 val* modelize_class__AClasskind__mkind(val* self) {
3926 val* var /* : MClassKind */;
3927 const char* var_class_name;
3928 var_class_name = self == NULL ? "null" : self->type->name;
3929 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "mkind", var_class_name);
3930 fprintf(stderr, " (%s:%d)\n", "src/modelize_class.nit", 495);
3931 exit(1);
3932 RET_LABEL:;
3933 return var;
3934 }
3935 /* method modelize_class#AClasskind#mkind for (self: Object): MClassKind */
3936 val* VIRTUAL_modelize_class__AClasskind__mkind(val* self) {
3937 val* var /* : MClassKind */;
3938 val* var1 /* : MClassKind */;
3939 var1 = modelize_class__AClasskind__mkind(self);
3940 var = var1;
3941 RET_LABEL:;
3942 return var;
3943 }
3944 /* method modelize_class#AConcreteClasskind#mkind for (self: AConcreteClasskind): MClassKind */
3945 val* modelize_class__AConcreteClasskind__mkind(val* self) {
3946 val* var /* : MClassKind */;
3947 val* var1 /* : MClassKind */;
3948 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__concrete_kind]))(self) /* concrete_kind on <self:AConcreteClasskind>*/;
3949 var = var1;
3950 goto RET_LABEL;
3951 RET_LABEL:;
3952 return var;
3953 }
3954 /* method modelize_class#AConcreteClasskind#mkind for (self: Object): MClassKind */
3955 val* VIRTUAL_modelize_class__AConcreteClasskind__mkind(val* self) {
3956 val* var /* : MClassKind */;
3957 val* var1 /* : MClassKind */;
3958 var1 = modelize_class__AConcreteClasskind__mkind(self);
3959 var = var1;
3960 RET_LABEL:;
3961 return var;
3962 }
3963 /* method modelize_class#AAbstractClasskind#mkind for (self: AAbstractClasskind): MClassKind */
3964 val* modelize_class__AAbstractClasskind__mkind(val* self) {
3965 val* var /* : MClassKind */;
3966 val* var1 /* : MClassKind */;
3967 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__abstract_kind]))(self) /* abstract_kind on <self:AAbstractClasskind>*/;
3968 var = var1;
3969 goto RET_LABEL;
3970 RET_LABEL:;
3971 return var;
3972 }
3973 /* method modelize_class#AAbstractClasskind#mkind for (self: Object): MClassKind */
3974 val* VIRTUAL_modelize_class__AAbstractClasskind__mkind(val* self) {
3975 val* var /* : MClassKind */;
3976 val* var1 /* : MClassKind */;
3977 var1 = modelize_class__AAbstractClasskind__mkind(self);
3978 var = var1;
3979 RET_LABEL:;
3980 return var;
3981 }
3982 /* method modelize_class#AInterfaceClasskind#mkind for (self: AInterfaceClasskind): MClassKind */
3983 val* modelize_class__AInterfaceClasskind__mkind(val* self) {
3984 val* var /* : MClassKind */;
3985 val* var1 /* : MClassKind */;
3986 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:AInterfaceClasskind>*/;
3987 var = var1;
3988 goto RET_LABEL;
3989 RET_LABEL:;
3990 return var;
3991 }
3992 /* method modelize_class#AInterfaceClasskind#mkind for (self: Object): MClassKind */
3993 val* VIRTUAL_modelize_class__AInterfaceClasskind__mkind(val* self) {
3994 val* var /* : MClassKind */;
3995 val* var1 /* : MClassKind */;
3996 var1 = modelize_class__AInterfaceClasskind__mkind(self);
3997 var = var1;
3998 RET_LABEL:;
3999 return var;
4000 }
4001 /* method modelize_class#AEnumClasskind#mkind for (self: AEnumClasskind): MClassKind */
4002 val* modelize_class__AEnumClasskind__mkind(val* self) {
4003 val* var /* : MClassKind */;
4004 val* var1 /* : MClassKind */;
4005 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:AEnumClasskind>*/;
4006 var = var1;
4007 goto RET_LABEL;
4008 RET_LABEL:;
4009 return var;
4010 }
4011 /* method modelize_class#AEnumClasskind#mkind for (self: Object): MClassKind */
4012 val* VIRTUAL_modelize_class__AEnumClasskind__mkind(val* self) {
4013 val* var /* : MClassKind */;
4014 val* var1 /* : MClassKind */;
4015 var1 = modelize_class__AEnumClasskind__mkind(self);
4016 var = var1;
4017 RET_LABEL:;
4018 return var;
4019 }
4020 /* method modelize_class#AExternClasskind#mkind for (self: AExternClasskind): MClassKind */
4021 val* modelize_class__AExternClasskind__mkind(val* self) {
4022 val* var /* : MClassKind */;
4023 val* var1 /* : MClassKind */;
4024 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:AExternClasskind>*/;
4025 var = var1;
4026 goto RET_LABEL;
4027 RET_LABEL:;
4028 return var;
4029 }
4030 /* method modelize_class#AExternClasskind#mkind for (self: Object): MClassKind */
4031 val* VIRTUAL_modelize_class__AExternClasskind__mkind(val* self) {
4032 val* var /* : MClassKind */;
4033 val* var1 /* : MClassKind */;
4034 var1 = modelize_class__AExternClasskind__mkind(self);
4035 var = var1;
4036 RET_LABEL:;
4037 return var;
4038 }
4039 /* method modelize_class#AFormaldef#mtype for (self: AFormaldef): nullable MParameterType */
4040 val* modelize_class__AFormaldef__mtype(val* self) {
4041 val* var /* : nullable MParameterType */;
4042 val* var1 /* : nullable MParameterType */;
4043 var1 = self->attrs[COLOR_modelize_class__AFormaldef___64dmtype].val; /* @mtype on <self:AFormaldef> */
4044 var = var1;
4045 RET_LABEL:;
4046 return var;
4047 }
4048 /* method modelize_class#AFormaldef#mtype for (self: Object): nullable MParameterType */
4049 val* VIRTUAL_modelize_class__AFormaldef__mtype(val* self) {
4050 val* var /* : nullable MParameterType */;
4051 val* var1 /* : nullable MParameterType */;
4052 var1 = modelize_class__AFormaldef__mtype(self);
4053 var = var1;
4054 RET_LABEL:;
4055 return var;
4056 }
4057 /* method modelize_class#AFormaldef#mtype= for (self: AFormaldef, nullable MParameterType) */
4058 void modelize_class__AFormaldef__mtype_61d(val* self, val* p0) {
4059 self->attrs[COLOR_modelize_class__AFormaldef___64dmtype].val = p0; /* @mtype on <self:AFormaldef> */
4060 RET_LABEL:;
4061 }
4062 /* method modelize_class#AFormaldef#mtype= for (self: Object, nullable MParameterType) */
4063 void VIRTUAL_modelize_class__AFormaldef__mtype_61d(val* self, val* p0) {
4064 modelize_class__AFormaldef__mtype_61d(self, p0);
4065 RET_LABEL:;
4066 }
4067 /* method modelize_class#AFormaldef#bound for (self: AFormaldef): nullable MType */
4068 val* modelize_class__AFormaldef__bound(val* self) {
4069 val* var /* : nullable MType */;
4070 val* var1 /* : nullable MType */;
4071 var1 = self->attrs[COLOR_modelize_class__AFormaldef___64dbound].val; /* @bound on <self:AFormaldef> */
4072 var = var1;
4073 RET_LABEL:;
4074 return var;
4075 }
4076 /* method modelize_class#AFormaldef#bound for (self: Object): nullable MType */
4077 val* VIRTUAL_modelize_class__AFormaldef__bound(val* self) {
4078 val* var /* : nullable MType */;
4079 val* var1 /* : nullable MType */;
4080 var1 = modelize_class__AFormaldef__bound(self);
4081 var = var1;
4082 RET_LABEL:;
4083 return var;
4084 }
4085 /* method modelize_class#AFormaldef#bound= for (self: AFormaldef, nullable MType) */
4086 void modelize_class__AFormaldef__bound_61d(val* self, val* p0) {
4087 self->attrs[COLOR_modelize_class__AFormaldef___64dbound].val = p0; /* @bound on <self:AFormaldef> */
4088 RET_LABEL:;
4089 }
4090 /* method modelize_class#AFormaldef#bound= for (self: Object, nullable MType) */
4091 void VIRTUAL_modelize_class__AFormaldef__bound_61d(val* self, val* p0) {
4092 modelize_class__AFormaldef__bound_61d(self, p0);
4093 RET_LABEL:;
4094 }
4095 /* method modelize_class#AType#mtype for (self: AType): nullable MType */
4096 val* modelize_class__AType__mtype(val* self) {
4097 val* var /* : nullable MType */;
4098 val* var1 /* : nullable MType */;
4099 var1 = self->attrs[COLOR_modelize_class__AType___64dmtype].val; /* @mtype on <self:AType> */
4100 var = var1;
4101 RET_LABEL:;
4102 return var;
4103 }
4104 /* method modelize_class#AType#mtype for (self: Object): nullable MType */
4105 val* VIRTUAL_modelize_class__AType__mtype(val* self) {
4106 val* var /* : nullable MType */;
4107 val* var1 /* : nullable MType */;
4108 var1 = modelize_class__AType__mtype(self);
4109 var = var1;
4110 RET_LABEL:;
4111 return var;
4112 }
4113 /* method modelize_class#AType#mtype= for (self: AType, nullable MType) */
4114 void modelize_class__AType__mtype_61d(val* self, val* p0) {
4115 self->attrs[COLOR_modelize_class__AType___64dmtype].val = p0; /* @mtype on <self:AType> */
4116 RET_LABEL:;
4117 }
4118 /* method modelize_class#AType#mtype= for (self: Object, nullable MType) */
4119 void VIRTUAL_modelize_class__AType__mtype_61d(val* self, val* p0) {
4120 modelize_class__AType__mtype_61d(self, p0);
4121 RET_LABEL:;
4122 }
4123 /* method modelize_class#AType#checked_mtype for (self: AType): Bool */
4124 short int modelize_class__AType__checked_mtype(val* self) {
4125 short int var /* : Bool */;
4126 short int var1 /* : Bool */;
4127 var1 = self->attrs[COLOR_modelize_class__AType___64dchecked_mtype].s; /* @checked_mtype on <self:AType> */
4128 var = var1;
4129 RET_LABEL:;
4130 return var;
4131 }
4132 /* method modelize_class#AType#checked_mtype for (self: Object): Bool */
4133 short int VIRTUAL_modelize_class__AType__checked_mtype(val* self) {
4134 short int var /* : Bool */;
4135 short int var1 /* : Bool */;
4136 var1 = modelize_class__AType__checked_mtype(self);
4137 var = var1;
4138 RET_LABEL:;
4139 return var;
4140 }
4141 /* method modelize_class#AType#checked_mtype= for (self: AType, Bool) */
4142 void modelize_class__AType__checked_mtype_61d(val* self, short int p0) {
4143 self->attrs[COLOR_modelize_class__AType___64dchecked_mtype].s = p0; /* @checked_mtype on <self:AType> */
4144 RET_LABEL:;
4145 }
4146 /* method modelize_class#AType#checked_mtype= for (self: Object, Bool) */
4147 void VIRTUAL_modelize_class__AType__checked_mtype_61d(val* self, short int p0) {
4148 modelize_class__AType__checked_mtype_61d(self, p0);
4149 RET_LABEL:;
4150 }