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