typing: `new`-fatories are like top-level methods
[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___modelize_class_phase].val; /* _modelize_class_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelize_class_phase");
9 PRINT_ERROR(" (%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 val* var3 /* : Phase */;
21 { /* Inline modelize_class#ToolContext#modelize_class_phase (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_modelize_class__ToolContext___modelize_class_phase].val; /* _modelize_class_phase on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelize_class_phase");
25 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 23);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method modelize_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* var2 /* : ToolContext */;
40 val* var3 /* : ModelBuilder */;
41 var_nmodule = p0;
42 {
43 { /* Inline phase#Phase#toolcontext (self) on <self:ModelizeClassPhase> */
44 var2 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:ModelizeClassPhase> */
45 if (unlikely(var2 == NULL)) {
46 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
47 PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
48 show_backtrace(1);
49 }
50 var = var2;
51 RET_LABEL1:(void)0;
52 }
53 }
54 {
55 var3 = modelbuilder__ToolContext__modelbuilder(var);
56 }
57 {
58 modelize_class__ModelBuilder__build_classes(var3, var_nmodule); /* Direct call modelize_class#ModelBuilder#build_classes on <var3:ModelBuilder>*/
59 }
60 RET_LABEL:;
61 }
62 /* method modelize_class#ModelizeClassPhase#process_nmodule for (self: Object, AModule) */
63 void VIRTUAL_modelize_class__ModelizeClassPhase__process_nmodule(val* self, val* p0) {
64 modelize_class__ModelizeClassPhase__process_nmodule(self, p0); /* Direct call modelize_class#ModelizeClassPhase#process_nmodule on <self:Object(ModelizeClassPhase)>*/
65 RET_LABEL:;
66 }
67 /* method modelize_class#ModelBuilder#build_a_mclass for (self: ModelBuilder, AModule, AClassdef) */
68 void modelize_class__ModelBuilder__build_a_mclass(val* self, val* p0, val* p1) {
69 val* var_nmodule /* var nmodule: AModule */;
70 val* var_nclassdef /* var nclassdef: AClassdef */;
71 val* var /* : nullable MModule */;
72 val* var2 /* : nullable MModule */;
73 val* var_mmodule /* var mmodule: MModule */;
74 long var3 /* : Int */;
75 long var_arity /* var arity: Int */;
76 short int var4 /* : Bool */;
77 int cltype;
78 int idtype;
79 val* var5 /* : nullable TClassid */;
80 val* var6 /* : String */;
81 val* var_name /* var name: String */;
82 val* var7 /* : AClasskind */;
83 val* var_nkind /* var nkind: nullable AClasskind */;
84 val* var8 /* : MClassKind */;
85 val* var_mkind /* var mkind: MClassKind */;
86 val* var9 /* : AVisibility */;
87 val* var_nvisibility /* var nvisibility: nullable AVisibility */;
88 val* var10 /* : MVisibility */;
89 val* var_mvisibility /* var mvisibility: nullable MVisibility */;
90 val* var11 /* : ANodes[AFormaldef] */;
91 val* var13 /* : ANodes[AFormaldef] */;
92 long var14 /* : Int */;
93 val* var15 /* : MVisibility */;
94 short int var16 /* : Bool */;
95 short int var17 /* : Bool */;
96 val* var_other /* var other: nullable Object */;
97 short int var19 /* : Bool */;
98 short int var21 /* : Bool */;
99 static val* varonce;
100 val* var22 /* : String */;
101 char* var23 /* : NativeString */;
102 long var24 /* : Int */;
103 val* var25 /* : FlatString */;
104 val* var26 /* : MVisibility */;
105 short int var27 /* : Bool */;
106 short int var28 /* : Bool */;
107 short int var30 /* : Bool */;
108 short int var32 /* : Bool */;
109 static val* varonce33;
110 val* var34 /* : String */;
111 char* var35 /* : NativeString */;
112 long var36 /* : Int */;
113 val* var37 /* : FlatString */;
114 short int var38 /* : Bool */;
115 int cltype39;
116 int idtype40;
117 static val* varonce41;
118 val* var42 /* : String */;
119 char* var43 /* : NativeString */;
120 long var44 /* : Int */;
121 val* var45 /* : FlatString */;
122 val* var46 /* : null */;
123 val* var47 /* : MClassKind */;
124 val* var48 /* : null */;
125 val* var49 /* : MVisibility */;
126 short int var50 /* : Bool */;
127 int cltype51;
128 int idtype52;
129 static val* varonce53;
130 val* var54 /* : String */;
131 char* var55 /* : NativeString */;
132 long var56 /* : Int */;
133 val* var57 /* : FlatString */;
134 val* var58 /* : null */;
135 val* var59 /* : MClassKind */;
136 val* var60 /* : null */;
137 val* var61 /* : MVisibility */;
138 val* var62 /* : nullable MClass */;
139 val* var_mclass /* var mclass: nullable MClass */;
140 val* var63 /* : null */;
141 short int var64 /* : Bool */;
142 short int var65 /* : Bool */;
143 short int var67 /* : Bool */;
144 short int var69 /* : Bool */;
145 short int var70 /* : Bool */;
146 short int var71 /* : Bool */;
147 int cltype72;
148 int idtype73;
149 short int var_ /* var : Bool */;
150 val* var74 /* : nullable TKwredef */;
151 val* var75 /* : null */;
152 short int var76 /* : Bool */;
153 short int var77 /* : Bool */;
154 val* var_other79 /* var other: nullable Object */;
155 short int var80 /* : Bool */;
156 short int var81 /* : Bool */;
157 short int var82 /* : Bool */;
158 static val* varonce83;
159 val* var84 /* : String */;
160 char* var85 /* : NativeString */;
161 long var86 /* : Int */;
162 val* var87 /* : FlatString */;
163 static val* varonce88;
164 val* var89 /* : String */;
165 char* var90 /* : NativeString */;
166 long var91 /* : Int */;
167 val* var92 /* : FlatString */;
168 val* var93 /* : Array[Object] */;
169 long var94 /* : Int */;
170 val* var95 /* : NativeArray[Object] */;
171 val* var96 /* : String */;
172 val* var97 /* : MClass */;
173 short int var98 /* : Bool */;
174 short int var99 /* : Bool */;
175 int cltype100;
176 int idtype101;
177 short int var_102 /* var : Bool */;
178 val* var103 /* : Map[MClass, AClassdef] */;
179 val* var105 /* : Map[MClass, AClassdef] */;
180 short int var106 /* : Bool */;
181 static val* varonce107;
182 val* var108 /* : String */;
183 char* var109 /* : NativeString */;
184 long var110 /* : Int */;
185 val* var111 /* : FlatString */;
186 static val* varonce112;
187 val* var113 /* : String */;
188 char* var114 /* : NativeString */;
189 long var115 /* : Int */;
190 val* var116 /* : FlatString */;
191 val* var117 /* : Map[MClass, AClassdef] */;
192 val* var119 /* : Map[MClass, AClassdef] */;
193 val* var120 /* : nullable Object */;
194 val* var121 /* : Location */;
195 long var122 /* : Int */;
196 long var124 /* : Int */;
197 static val* varonce125;
198 val* var126 /* : String */;
199 char* var127 /* : NativeString */;
200 long var128 /* : Int */;
201 val* var129 /* : FlatString */;
202 val* var130 /* : Array[Object] */;
203 long var131 /* : Int */;
204 val* var132 /* : NativeArray[Object] */;
205 val* var133 /* : Object */;
206 val* var134 /* : String */;
207 short int var135 /* : Bool */;
208 short int var136 /* : Bool */;
209 int cltype137;
210 int idtype138;
211 short int var_139 /* var : Bool */;
212 val* var140 /* : nullable TKwredef */;
213 val* var141 /* : null */;
214 short int var142 /* : Bool */;
215 short int var143 /* : Bool */;
216 short int var145 /* : Bool */;
217 short int var147 /* : Bool */;
218 static val* varonce148;
219 val* var149 /* : String */;
220 char* var150 /* : NativeString */;
221 long var151 /* : Int */;
222 val* var152 /* : FlatString */;
223 static val* varonce153;
224 val* var154 /* : String */;
225 char* var155 /* : NativeString */;
226 long var156 /* : Int */;
227 val* var157 /* : FlatString */;
228 val* var158 /* : Array[Object] */;
229 long var159 /* : Int */;
230 val* var160 /* : NativeArray[Object] */;
231 val* var161 /* : String */;
232 long var162 /* : Int */;
233 long var164 /* : Int */;
234 short int var165 /* : Bool */;
235 short int var166 /* : Bool */;
236 short int var168 /* : Bool */;
237 short int var169 /* : Bool */;
238 static val* varonce170;
239 val* var171 /* : String */;
240 char* var172 /* : NativeString */;
241 long var173 /* : Int */;
242 val* var174 /* : FlatString */;
243 static val* varonce175;
244 val* var176 /* : String */;
245 char* var177 /* : NativeString */;
246 long var178 /* : Int */;
247 val* var179 /* : FlatString */;
248 long var180 /* : Int */;
249 long var182 /* : Int */;
250 static val* varonce183;
251 val* var184 /* : String */;
252 char* var185 /* : NativeString */;
253 long var186 /* : Int */;
254 val* var187 /* : FlatString */;
255 val* var188 /* : Array[Object] */;
256 long var189 /* : Int */;
257 val* var190 /* : NativeArray[Object] */;
258 val* var191 /* : Object */;
259 val* var192 /* : Object */;
260 val* var193 /* : String */;
261 short int var194 /* : Bool */;
262 short int var195 /* : Bool */;
263 val* var196 /* : null */;
264 short int var197 /* : Bool */;
265 short int var198 /* : Bool */;
266 short int var200 /* : Bool */;
267 short int var201 /* : Bool */;
268 short int var202 /* : Bool */;
269 short int var_203 /* var : Bool */;
270 val* var204 /* : MClassKind */;
271 short int var205 /* : Bool */;
272 short int var206 /* : Bool */;
273 short int var208 /* : Bool */;
274 short int var209 /* : Bool */;
275 short int var210 /* : Bool */;
276 short int var_211 /* var : Bool */;
277 val* var212 /* : MClassKind */;
278 val* var214 /* : MClassKind */;
279 short int var215 /* : Bool */;
280 short int var216 /* : Bool */;
281 short int var218 /* : Bool */;
282 short int var219 /* : Bool */;
283 short int var220 /* : Bool */;
284 static val* varonce221;
285 val* var222 /* : String */;
286 char* var223 /* : NativeString */;
287 long var224 /* : Int */;
288 val* var225 /* : FlatString */;
289 val* var226 /* : MClassKind */;
290 val* var228 /* : MClassKind */;
291 static val* varonce229;
292 val* var230 /* : String */;
293 char* var231 /* : NativeString */;
294 long var232 /* : Int */;
295 val* var233 /* : FlatString */;
296 val* var234 /* : Array[Object] */;
297 long var235 /* : Int */;
298 val* var236 /* : NativeArray[Object] */;
299 val* var237 /* : String */;
300 short int var238 /* : Bool */;
301 short int var239 /* : Bool */;
302 val* var240 /* : null */;
303 short int var241 /* : Bool */;
304 short int var242 /* : Bool */;
305 short int var244 /* : Bool */;
306 short int var245 /* : Bool */;
307 short int var246 /* : Bool */;
308 short int var_247 /* var : Bool */;
309 val* var248 /* : MVisibility */;
310 short int var249 /* : Bool */;
311 short int var250 /* : Bool */;
312 short int var252 /* : Bool */;
313 short int var253 /* : Bool */;
314 short int var254 /* : Bool */;
315 short int var_255 /* var : Bool */;
316 val* var256 /* : MVisibility */;
317 val* var258 /* : MVisibility */;
318 short int var259 /* : Bool */;
319 short int var260 /* : Bool */;
320 short int var262 /* : Bool */;
321 short int var263 /* : Bool */;
322 short int var264 /* : Bool */;
323 static val* varonce265;
324 val* var266 /* : String */;
325 char* var267 /* : NativeString */;
326 long var268 /* : Int */;
327 val* var269 /* : FlatString */;
328 val* var270 /* : MVisibility */;
329 val* var272 /* : MVisibility */;
330 static val* varonce273;
331 val* var274 /* : String */;
332 char* var275 /* : NativeString */;
333 long var276 /* : Int */;
334 val* var277 /* : FlatString */;
335 val* var278 /* : Array[Object] */;
336 long var279 /* : Int */;
337 val* var280 /* : NativeArray[Object] */;
338 val* var281 /* : String */;
339 val* var283 /* : Map[MClass, AClassdef] */;
340 val* var285 /* : Map[MClass, AClassdef] */;
341 short int var286 /* : Bool */;
342 short int var287 /* : Bool */;
343 val* var288 /* : Map[MClass, AClassdef] */;
344 val* var290 /* : Map[MClass, AClassdef] */;
345 val* var291 /* : Array[AClassdef] */;
346 long var292 /* : Int */;
347 val* var_293 /* var : Array[AClassdef] */;
348 val* var295 /* : Map[MClass, AClassdef] */;
349 val* var297 /* : Map[MClass, AClassdef] */;
350 val* var298 /* : nullable Object */;
351 val* var299 /* : nullable Array[AClassdef] */;
352 val* var301 /* : nullable Array[AClassdef] */;
353 var_nmodule = p0;
354 var_nclassdef = p1;
355 {
356 { /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
357 var2 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
358 var = var2;
359 RET_LABEL1:(void)0;
360 }
361 }
362 if (unlikely(var == NULL)) {
363 PRINT_ERROR("Runtime error: %s", "Cast failed");
364 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 39);
365 show_backtrace(1);
366 }
367 var_mmodule = var;
368 var3 = 0;
369 var_arity = var3;
370 /* <var_nclassdef:AClassdef> isa AStdClassdef */
371 cltype = type_parser_nodes__AStdClassdef.color;
372 idtype = type_parser_nodes__AStdClassdef.id;
373 if(cltype >= var_nclassdef->type->table_size) {
374 var4 = 0;
375 } else {
376 var4 = var_nclassdef->type->type_table[cltype] == idtype;
377 }
378 if (var4){
379 {
380 var5 = parser_nodes__AStdClassdef__n_id(var_nclassdef);
381 }
382 if (var5 == NULL) {
383 PRINT_ERROR("Runtime error: %s", "Receiver is null");
384 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 48);
385 show_backtrace(1);
386 } else {
387 var6 = lexer_work__Token__text(var5);
388 }
389 var_name = var6;
390 {
391 var7 = parser_nodes__AStdClassdef__n_classkind(var_nclassdef);
392 }
393 var_nkind = var7;
394 {
395 var8 = ((val* (*)(val*))(var_nkind->class->vft[COLOR_modelize_class__AClasskind__mkind]))(var_nkind) /* mkind on <var_nkind:nullable AClasskind(AClasskind)>*/;
396 }
397 var_mkind = var8;
398 {
399 var9 = parser_nodes__AStdClassdef__n_visibility(var_nclassdef);
400 }
401 var_nvisibility = var9;
402 {
403 var10 = ((val* (*)(val*))(var_nvisibility->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
404 }
405 var_mvisibility = var10;
406 {
407 { /* Inline parser_nodes#AStdClassdef#n_formaldefs (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
408 var13 = var_nclassdef->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <var_nclassdef:AClassdef(AStdClassdef)> */
409 if (unlikely(var13 == NULL)) {
410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
411 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 824);
412 show_backtrace(1);
413 }
414 var11 = var13;
415 RET_LABEL12:(void)0;
416 }
417 }
418 {
419 var14 = parser_nodes__ANodes__length(var11);
420 }
421 var_arity = var14;
422 {
423 var15 = model_base__Object__protected_visibility(self);
424 }
425 {
426 { /* Inline kernel#Object#== (var_mvisibility,var15) on <var_mvisibility:nullable MVisibility(MVisibility)> */
427 var_other = var15;
428 {
429 { /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other) on <var_mvisibility:nullable MVisibility(MVisibility)> */
430 var21 = var_mvisibility == var_other;
431 var19 = var21;
432 goto RET_LABEL20;
433 RET_LABEL20:(void)0;
434 }
435 }
436 var17 = var19;
437 goto RET_LABEL18;
438 RET_LABEL18:(void)0;
439 }
440 var16 = var17;
441 }
442 if (var16){
443 if (varonce) {
444 var22 = varonce;
445 } else {
446 var23 = "Error: only properties can be protected.";
447 var24 = 40;
448 var25 = string__NativeString__to_s_with_length(var23, var24);
449 var22 = var25;
450 varonce = var22;
451 }
452 {
453 modelbuilder__ModelBuilder__error(self, var_nvisibility, var22); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
454 }
455 goto RET_LABEL;
456 } else {
457 {
458 var26 = model_base__Object__intrude_visibility(self);
459 }
460 {
461 { /* Inline kernel#Object#== (var_mvisibility,var26) on <var_mvisibility:nullable MVisibility(MVisibility)> */
462 var_other = var26;
463 {
464 { /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other) on <var_mvisibility:nullable MVisibility(MVisibility)> */
465 var32 = var_mvisibility == var_other;
466 var30 = var32;
467 goto RET_LABEL31;
468 RET_LABEL31:(void)0;
469 }
470 }
471 var28 = var30;
472 goto RET_LABEL29;
473 RET_LABEL29:(void)0;
474 }
475 var27 = var28;
476 }
477 if (var27){
478 if (varonce33) {
479 var34 = varonce33;
480 } else {
481 var35 = "Error: intrude is not a legal visibility for classes.";
482 var36 = 53;
483 var37 = string__NativeString__to_s_with_length(var35, var36);
484 var34 = var37;
485 varonce33 = var34;
486 }
487 {
488 modelbuilder__ModelBuilder__error(self, var_nvisibility, var34); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
489 }
490 goto RET_LABEL;
491 } else {
492 }
493 }
494 } else {
495 /* <var_nclassdef:AClassdef> isa ATopClassdef */
496 cltype39 = type_parser_nodes__ATopClassdef.color;
497 idtype40 = type_parser_nodes__ATopClassdef.id;
498 if(cltype39 >= var_nclassdef->type->table_size) {
499 var38 = 0;
500 } else {
501 var38 = var_nclassdef->type->type_table[cltype39] == idtype40;
502 }
503 if (var38){
504 if (varonce41) {
505 var42 = varonce41;
506 } else {
507 var43 = "Object";
508 var44 = 6;
509 var45 = string__NativeString__to_s_with_length(var43, var44);
510 var42 = var45;
511 varonce41 = var42;
512 }
513 var_name = var42;
514 var46 = NULL;
515 var_nkind = var46;
516 {
517 var47 = model__Object__interface_kind(self);
518 }
519 var_mkind = var47;
520 var48 = NULL;
521 var_nvisibility = var48;
522 {
523 var49 = model_base__Object__public_visibility(self);
524 }
525 var_mvisibility = var49;
526 } else {
527 /* <var_nclassdef:AClassdef> isa AMainClassdef */
528 cltype51 = type_parser_nodes__AMainClassdef.color;
529 idtype52 = type_parser_nodes__AMainClassdef.id;
530 if(cltype51 >= var_nclassdef->type->table_size) {
531 var50 = 0;
532 } else {
533 var50 = var_nclassdef->type->type_table[cltype51] == idtype52;
534 }
535 if (var50){
536 if (varonce53) {
537 var54 = varonce53;
538 } else {
539 var55 = "Sys";
540 var56 = 3;
541 var57 = string__NativeString__to_s_with_length(var55, var56);
542 var54 = var57;
543 varonce53 = var54;
544 }
545 var_name = var54;
546 var58 = NULL;
547 var_nkind = var58;
548 {
549 var59 = model__Object__concrete_kind(self);
550 }
551 var_mkind = var59;
552 var60 = NULL;
553 var_nvisibility = var60;
554 {
555 var61 = model_base__Object__public_visibility(self);
556 }
557 var_mvisibility = var61;
558 } else {
559 PRINT_ERROR("Runtime error: %s", "Aborted");
560 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 74);
561 show_backtrace(1);
562 }
563 }
564 }
565 {
566 var62 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_nclassdef, var_mmodule, var_name);
567 }
568 var_mclass = var62;
569 var63 = NULL;
570 if (var_mclass == NULL) {
571 var64 = 1; /* is null */
572 } else {
573 var64 = 0; /* arg is null but recv is not */
574 }
575 if (0) {
576 { /* Inline kernel#Object#== (var_mclass,var63) on <var_mclass:nullable MClass> */
577 var_other = var63;
578 {
579 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
580 var69 = var_mclass == var_other;
581 var67 = var69;
582 goto RET_LABEL68;
583 RET_LABEL68:(void)0;
584 }
585 }
586 var65 = var67;
587 goto RET_LABEL66;
588 RET_LABEL66:(void)0;
589 }
590 var64 = var65;
591 }
592 if (var64){
593 /* <var_nclassdef:AClassdef> isa AStdClassdef */
594 cltype72 = type_parser_nodes__AStdClassdef.color;
595 idtype73 = type_parser_nodes__AStdClassdef.id;
596 if(cltype72 >= var_nclassdef->type->table_size) {
597 var71 = 0;
598 } else {
599 var71 = var_nclassdef->type->type_table[cltype72] == idtype73;
600 }
601 var_ = var71;
602 if (var71){
603 {
604 var74 = parser_nodes__AStdClassdef__n_kwredef(var_nclassdef);
605 }
606 var75 = NULL;
607 if (var74 == NULL) {
608 var76 = 0; /* is null */
609 } else {
610 var76 = 1; /* arg is null and recv is not */
611 }
612 if (0) {
613 { /* Inline kernel#Object#!= (var74,var75) on <var74:nullable TKwredef> */
614 var_other79 = var75;
615 {
616 var81 = ((short int (*)(val*, val*))(var74->class->vft[COLOR_kernel__Object___61d_61d]))(var74, var_other79) /* == on <var74:nullable TKwredef(TKwredef)>*/;
617 var80 = var81;
618 }
619 var82 = !var80;
620 var77 = var82;
621 goto RET_LABEL78;
622 RET_LABEL78:(void)0;
623 }
624 var76 = var77;
625 }
626 var70 = var76;
627 } else {
628 var70 = var_;
629 }
630 if (var70){
631 if (varonce83) {
632 var84 = varonce83;
633 } else {
634 var85 = "Redef error: No imported class ";
635 var86 = 31;
636 var87 = string__NativeString__to_s_with_length(var85, var86);
637 var84 = var87;
638 varonce83 = var84;
639 }
640 if (varonce88) {
641 var89 = varonce88;
642 } else {
643 var90 = " to refine.";
644 var91 = 11;
645 var92 = string__NativeString__to_s_with_length(var90, var91);
646 var89 = var92;
647 varonce88 = var89;
648 }
649 var93 = NEW_array__Array(&type_array__Arraykernel__Object);
650 { /* var93 = array_instance Array[Object] */
651 var94 = 3;
652 var95 = NEW_array__NativeArray(var94, &type_array__NativeArraykernel__Object);
653 ((struct instance_array__NativeArray*)var95)->values[0] = (val*) var84;
654 ((struct instance_array__NativeArray*)var95)->values[1] = (val*) var_name;
655 ((struct instance_array__NativeArray*)var95)->values[2] = (val*) var89;
656 {
657 ((void (*)(val*, val*, long))(var93->class->vft[COLOR_array__Array__with_native]))(var93, var95, var94) /* with_native on <var93:Array[Object]>*/;
658 }
659 }
660 {
661 var96 = ((val* (*)(val*))(var93->class->vft[COLOR_string__Object__to_s]))(var93) /* to_s on <var93:Array[Object]>*/;
662 }
663 {
664 modelbuilder__ModelBuilder__error(self, var_nclassdef, var96); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
665 }
666 goto RET_LABEL;
667 } else {
668 }
669 var97 = NEW_model__MClass(&type_model__MClass);
670 {
671 model__MClass__init(var97, var_mmodule, var_name, var_arity, var_mkind, var_mvisibility); /* Direct call model#MClass#init on <var97:MClass>*/
672 }
673 var_mclass = var97;
674 } else {
675 /* <var_nclassdef:AClassdef> isa AStdClassdef */
676 cltype100 = type_parser_nodes__AStdClassdef.color;
677 idtype101 = type_parser_nodes__AStdClassdef.id;
678 if(cltype100 >= var_nclassdef->type->table_size) {
679 var99 = 0;
680 } else {
681 var99 = var_nclassdef->type->type_table[cltype100] == idtype101;
682 }
683 var_102 = var99;
684 if (var99){
685 {
686 { /* Inline modelize_class#AModule#mclass2nclassdef (var_nmodule) on <var_nmodule:AModule> */
687 var105 = var_nmodule->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <var_nmodule:AModule> */
688 if (unlikely(var105 == NULL)) {
689 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
690 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
691 show_backtrace(1);
692 }
693 var103 = var105;
694 RET_LABEL104:(void)0;
695 }
696 }
697 {
698 var106 = abstract_collection__MapRead__has_key(var103, var_mclass);
699 }
700 var98 = var106;
701 } else {
702 var98 = var_102;
703 }
704 if (var98){
705 if (varonce107) {
706 var108 = varonce107;
707 } else {
708 var109 = "Error: A class ";
709 var110 = 15;
710 var111 = string__NativeString__to_s_with_length(var109, var110);
711 var108 = var111;
712 varonce107 = var108;
713 }
714 if (varonce112) {
715 var113 = varonce112;
716 } else {
717 var114 = " is already defined at line ";
718 var115 = 28;
719 var116 = string__NativeString__to_s_with_length(var114, var115);
720 var113 = var116;
721 varonce112 = var113;
722 }
723 {
724 { /* Inline modelize_class#AModule#mclass2nclassdef (var_nmodule) on <var_nmodule:AModule> */
725 var119 = var_nmodule->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <var_nmodule:AModule> */
726 if (unlikely(var119 == NULL)) {
727 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
728 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
729 show_backtrace(1);
730 }
731 var117 = var119;
732 RET_LABEL118:(void)0;
733 }
734 }
735 {
736 var120 = ((val* (*)(val*, val*))(var117->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var117, var_mclass) /* [] on <var117:Map[MClass, AClassdef]>*/;
737 }
738 {
739 var121 = parser_nodes__ANode__location(var120);
740 }
741 {
742 { /* Inline location#Location#line_start (var121) on <var121:Location> */
743 var124 = var121->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var121:Location> */
744 var122 = var124;
745 RET_LABEL123:(void)0;
746 }
747 }
748 if (varonce125) {
749 var126 = varonce125;
750 } else {
751 var127 = ".";
752 var128 = 1;
753 var129 = string__NativeString__to_s_with_length(var127, var128);
754 var126 = var129;
755 varonce125 = var126;
756 }
757 var130 = NEW_array__Array(&type_array__Arraykernel__Object);
758 { /* var130 = array_instance Array[Object] */
759 var131 = 5;
760 var132 = NEW_array__NativeArray(var131, &type_array__NativeArraykernel__Object);
761 ((struct instance_array__NativeArray*)var132)->values[0] = (val*) var108;
762 ((struct instance_array__NativeArray*)var132)->values[1] = (val*) var_name;
763 ((struct instance_array__NativeArray*)var132)->values[2] = (val*) var113;
764 var133 = BOX_kernel__Int(var122); /* autobox from Int to Object */
765 ((struct instance_array__NativeArray*)var132)->values[3] = (val*) var133;
766 ((struct instance_array__NativeArray*)var132)->values[4] = (val*) var126;
767 {
768 ((void (*)(val*, val*, long))(var130->class->vft[COLOR_array__Array__with_native]))(var130, var132, var131) /* with_native on <var130:Array[Object]>*/;
769 }
770 }
771 {
772 var134 = ((val* (*)(val*))(var130->class->vft[COLOR_string__Object__to_s]))(var130) /* to_s on <var130:Array[Object]>*/;
773 }
774 {
775 modelbuilder__ModelBuilder__error(self, var_nclassdef, var134); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
776 }
777 goto RET_LABEL;
778 } else {
779 /* <var_nclassdef:AClassdef> isa AStdClassdef */
780 cltype137 = type_parser_nodes__AStdClassdef.color;
781 idtype138 = type_parser_nodes__AStdClassdef.id;
782 if(cltype137 >= var_nclassdef->type->table_size) {
783 var136 = 0;
784 } else {
785 var136 = var_nclassdef->type->type_table[cltype137] == idtype138;
786 }
787 var_139 = var136;
788 if (var136){
789 {
790 var140 = parser_nodes__AStdClassdef__n_kwredef(var_nclassdef);
791 }
792 var141 = NULL;
793 if (var140 == NULL) {
794 var142 = 1; /* is null */
795 } else {
796 var142 = 0; /* arg is null but recv is not */
797 }
798 if (0) {
799 { /* Inline kernel#Object#== (var140,var141) on <var140:nullable TKwredef> */
800 var_other = var141;
801 {
802 { /* Inline kernel#Object#is_same_instance (var140,var_other) on <var140:nullable TKwredef(TKwredef)> */
803 var147 = var140 == var_other;
804 var145 = var147;
805 goto RET_LABEL146;
806 RET_LABEL146:(void)0;
807 }
808 }
809 var143 = var145;
810 goto RET_LABEL144;
811 RET_LABEL144:(void)0;
812 }
813 var142 = var143;
814 }
815 var135 = var142;
816 } else {
817 var135 = var_139;
818 }
819 if (var135){
820 if (varonce148) {
821 var149 = varonce148;
822 } else {
823 var150 = "Redef error: ";
824 var151 = 13;
825 var152 = string__NativeString__to_s_with_length(var150, var151);
826 var149 = var152;
827 varonce148 = var149;
828 }
829 if (varonce153) {
830 var154 = varonce153;
831 } else {
832 var155 = " is an imported class. Add the redef keyword to refine it.";
833 var156 = 58;
834 var157 = string__NativeString__to_s_with_length(var155, var156);
835 var154 = var157;
836 varonce153 = var154;
837 }
838 var158 = NEW_array__Array(&type_array__Arraykernel__Object);
839 { /* var158 = array_instance Array[Object] */
840 var159 = 3;
841 var160 = NEW_array__NativeArray(var159, &type_array__NativeArraykernel__Object);
842 ((struct instance_array__NativeArray*)var160)->values[0] = (val*) var149;
843 ((struct instance_array__NativeArray*)var160)->values[1] = (val*) var_name;
844 ((struct instance_array__NativeArray*)var160)->values[2] = (val*) var154;
845 {
846 ((void (*)(val*, val*, long))(var158->class->vft[COLOR_array__Array__with_native]))(var158, var160, var159) /* with_native on <var158:Array[Object]>*/;
847 }
848 }
849 {
850 var161 = ((val* (*)(val*))(var158->class->vft[COLOR_string__Object__to_s]))(var158) /* to_s on <var158:Array[Object]>*/;
851 }
852 {
853 modelbuilder__ModelBuilder__error(self, var_nclassdef, var161); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
854 }
855 goto RET_LABEL;
856 } else {
857 {
858 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
859 var164 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
860 var162 = var164;
861 RET_LABEL163:(void)0;
862 }
863 }
864 {
865 { /* Inline kernel#Int#!= (var162,var_arity) on <var162:Int> */
866 var168 = var162 == var_arity;
867 var169 = !var168;
868 var166 = var169;
869 goto RET_LABEL167;
870 RET_LABEL167:(void)0;
871 }
872 var165 = var166;
873 }
874 if (var165){
875 if (varonce170) {
876 var171 = varonce170;
877 } else {
878 var172 = "Redef error: Formal parameter arity missmatch; got ";
879 var173 = 51;
880 var174 = string__NativeString__to_s_with_length(var172, var173);
881 var171 = var174;
882 varonce170 = var171;
883 }
884 if (varonce175) {
885 var176 = varonce175;
886 } else {
887 var177 = ", expected ";
888 var178 = 11;
889 var179 = string__NativeString__to_s_with_length(var177, var178);
890 var176 = var179;
891 varonce175 = var176;
892 }
893 {
894 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
895 var182 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
896 var180 = var182;
897 RET_LABEL181:(void)0;
898 }
899 }
900 if (varonce183) {
901 var184 = varonce183;
902 } else {
903 var185 = ".";
904 var186 = 1;
905 var187 = string__NativeString__to_s_with_length(var185, var186);
906 var184 = var187;
907 varonce183 = var184;
908 }
909 var188 = NEW_array__Array(&type_array__Arraykernel__Object);
910 { /* var188 = array_instance Array[Object] */
911 var189 = 5;
912 var190 = NEW_array__NativeArray(var189, &type_array__NativeArraykernel__Object);
913 ((struct instance_array__NativeArray*)var190)->values[0] = (val*) var171;
914 var191 = BOX_kernel__Int(var_arity); /* autobox from Int to Object */
915 ((struct instance_array__NativeArray*)var190)->values[1] = (val*) var191;
916 ((struct instance_array__NativeArray*)var190)->values[2] = (val*) var176;
917 var192 = BOX_kernel__Int(var180); /* autobox from Int to Object */
918 ((struct instance_array__NativeArray*)var190)->values[3] = (val*) var192;
919 ((struct instance_array__NativeArray*)var190)->values[4] = (val*) var184;
920 {
921 ((void (*)(val*, val*, long))(var188->class->vft[COLOR_array__Array__with_native]))(var188, var190, var189) /* with_native on <var188:Array[Object]>*/;
922 }
923 }
924 {
925 var193 = ((val* (*)(val*))(var188->class->vft[COLOR_string__Object__to_s]))(var188) /* to_s on <var188:Array[Object]>*/;
926 }
927 {
928 modelbuilder__ModelBuilder__error(self, var_nclassdef, var193); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
929 }
930 goto RET_LABEL;
931 } else {
932 var196 = NULL;
933 if (var_nkind == NULL) {
934 var197 = 0; /* is null */
935 } else {
936 var197 = 1; /* arg is null and recv is not */
937 }
938 if (0) {
939 { /* Inline kernel#Object#!= (var_nkind,var196) on <var_nkind:nullable AClasskind> */
940 var_other79 = var196;
941 {
942 var201 = ((short int (*)(val*, val*))(var_nkind->class->vft[COLOR_kernel__Object___61d_61d]))(var_nkind, var_other79) /* == on <var_nkind:nullable AClasskind(AClasskind)>*/;
943 var200 = var201;
944 }
945 var202 = !var200;
946 var198 = var202;
947 goto RET_LABEL199;
948 RET_LABEL199:(void)0;
949 }
950 var197 = var198;
951 }
952 var_203 = var197;
953 if (var197){
954 {
955 var204 = model__Object__concrete_kind(self);
956 }
957 {
958 { /* Inline kernel#Object#!= (var_mkind,var204) on <var_mkind:MClassKind> */
959 var_other79 = var204;
960 {
961 var209 = ((short int (*)(val*, val*))(var_mkind->class->vft[COLOR_kernel__Object___61d_61d]))(var_mkind, var_other79) /* == on <var_mkind:MClassKind>*/;
962 var208 = var209;
963 }
964 var210 = !var208;
965 var206 = var210;
966 goto RET_LABEL207;
967 RET_LABEL207:(void)0;
968 }
969 var205 = var206;
970 }
971 var195 = var205;
972 } else {
973 var195 = var_203;
974 }
975 var_211 = var195;
976 if (var195){
977 {
978 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:nullable MClass(MClass)> */
979 var214 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:nullable MClass(MClass)> */
980 if (unlikely(var214 == NULL)) {
981 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
982 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
983 show_backtrace(1);
984 }
985 var212 = var214;
986 RET_LABEL213:(void)0;
987 }
988 }
989 {
990 { /* Inline kernel#Object#!= (var212,var_mkind) on <var212:MClassKind> */
991 var_other79 = var_mkind;
992 {
993 var219 = ((short int (*)(val*, val*))(var212->class->vft[COLOR_kernel__Object___61d_61d]))(var212, var_other79) /* == on <var212:MClassKind>*/;
994 var218 = var219;
995 }
996 var220 = !var218;
997 var216 = var220;
998 goto RET_LABEL217;
999 RET_LABEL217:(void)0;
1000 }
1001 var215 = var216;
1002 }
1003 var194 = var215;
1004 } else {
1005 var194 = var_211;
1006 }
1007 if (var194){
1008 if (varonce221) {
1009 var222 = varonce221;
1010 } else {
1011 var223 = "Error: refinement changed the kind from a ";
1012 var224 = 42;
1013 var225 = string__NativeString__to_s_with_length(var223, var224);
1014 var222 = var225;
1015 varonce221 = var222;
1016 }
1017 {
1018 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1019 var228 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:nullable MClass(MClass)> */
1020 if (unlikely(var228 == NULL)) {
1021 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
1022 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
1023 show_backtrace(1);
1024 }
1025 var226 = var228;
1026 RET_LABEL227:(void)0;
1027 }
1028 }
1029 if (varonce229) {
1030 var230 = varonce229;
1031 } else {
1032 var231 = " to a ";
1033 var232 = 6;
1034 var233 = string__NativeString__to_s_with_length(var231, var232);
1035 var230 = var233;
1036 varonce229 = var230;
1037 }
1038 var234 = NEW_array__Array(&type_array__Arraykernel__Object);
1039 { /* var234 = array_instance Array[Object] */
1040 var235 = 4;
1041 var236 = NEW_array__NativeArray(var235, &type_array__NativeArraykernel__Object);
1042 ((struct instance_array__NativeArray*)var236)->values[0] = (val*) var222;
1043 ((struct instance_array__NativeArray*)var236)->values[1] = (val*) var226;
1044 ((struct instance_array__NativeArray*)var236)->values[2] = (val*) var230;
1045 ((struct instance_array__NativeArray*)var236)->values[3] = (val*) var_mkind;
1046 {
1047 ((void (*)(val*, val*, long))(var234->class->vft[COLOR_array__Array__with_native]))(var234, var236, var235) /* with_native on <var234:Array[Object]>*/;
1048 }
1049 }
1050 {
1051 var237 = ((val* (*)(val*))(var234->class->vft[COLOR_string__Object__to_s]))(var234) /* to_s on <var234:Array[Object]>*/;
1052 }
1053 {
1054 modelbuilder__ModelBuilder__error(self, var_nkind, var237); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
1055 }
1056 } else {
1057 var240 = NULL;
1058 if (var_nvisibility == NULL) {
1059 var241 = 0; /* is null */
1060 } else {
1061 var241 = 1; /* arg is null and recv is not */
1062 }
1063 if (0) {
1064 { /* Inline kernel#Object#!= (var_nvisibility,var240) on <var_nvisibility:nullable AVisibility> */
1065 var_other79 = var240;
1066 {
1067 var245 = ((short int (*)(val*, val*))(var_nvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_nvisibility, var_other79) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
1068 var244 = var245;
1069 }
1070 var246 = !var244;
1071 var242 = var246;
1072 goto RET_LABEL243;
1073 RET_LABEL243:(void)0;
1074 }
1075 var241 = var242;
1076 }
1077 var_247 = var241;
1078 if (var241){
1079 {
1080 var248 = model_base__Object__public_visibility(self);
1081 }
1082 {
1083 { /* Inline kernel#Object#!= (var_mvisibility,var248) on <var_mvisibility:nullable MVisibility(MVisibility)> */
1084 var_other79 = var248;
1085 {
1086 var253 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var_other79) /* == on <var_mvisibility:nullable MVisibility(MVisibility)>*/;
1087 var252 = var253;
1088 }
1089 var254 = !var252;
1090 var250 = var254;
1091 goto RET_LABEL251;
1092 RET_LABEL251:(void)0;
1093 }
1094 var249 = var250;
1095 }
1096 var239 = var249;
1097 } else {
1098 var239 = var_247;
1099 }
1100 var_255 = var239;
1101 if (var239){
1102 {
1103 { /* Inline model#MClass#visibility (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1104 var258 = var_mclass->attrs[COLOR_model__MClass___visibility].val; /* _visibility on <var_mclass:nullable MClass(MClass)> */
1105 if (unlikely(var258 == NULL)) {
1106 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
1107 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 359);
1108 show_backtrace(1);
1109 }
1110 var256 = var258;
1111 RET_LABEL257:(void)0;
1112 }
1113 }
1114 {
1115 { /* Inline kernel#Object#!= (var256,var_mvisibility) on <var256:MVisibility> */
1116 var_other79 = var_mvisibility;
1117 {
1118 var263 = ((short int (*)(val*, val*))(var256->class->vft[COLOR_kernel__Object___61d_61d]))(var256, var_other79) /* == on <var256:MVisibility>*/;
1119 var262 = var263;
1120 }
1121 var264 = !var262;
1122 var260 = var264;
1123 goto RET_LABEL261;
1124 RET_LABEL261:(void)0;
1125 }
1126 var259 = var260;
1127 }
1128 var238 = var259;
1129 } else {
1130 var238 = var_255;
1131 }
1132 if (var238){
1133 if (varonce265) {
1134 var266 = varonce265;
1135 } else {
1136 var267 = "Error: refinement changed the visibility from a ";
1137 var268 = 48;
1138 var269 = string__NativeString__to_s_with_length(var267, var268);
1139 var266 = var269;
1140 varonce265 = var266;
1141 }
1142 {
1143 { /* Inline model#MClass#visibility (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1144 var272 = var_mclass->attrs[COLOR_model__MClass___visibility].val; /* _visibility on <var_mclass:nullable MClass(MClass)> */
1145 if (unlikely(var272 == NULL)) {
1146 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
1147 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 359);
1148 show_backtrace(1);
1149 }
1150 var270 = var272;
1151 RET_LABEL271:(void)0;
1152 }
1153 }
1154 if (varonce273) {
1155 var274 = varonce273;
1156 } else {
1157 var275 = " to a ";
1158 var276 = 6;
1159 var277 = string__NativeString__to_s_with_length(var275, var276);
1160 var274 = var277;
1161 varonce273 = var274;
1162 }
1163 var278 = NEW_array__Array(&type_array__Arraykernel__Object);
1164 { /* var278 = array_instance Array[Object] */
1165 var279 = 4;
1166 var280 = NEW_array__NativeArray(var279, &type_array__NativeArraykernel__Object);
1167 ((struct instance_array__NativeArray*)var280)->values[0] = (val*) var266;
1168 ((struct instance_array__NativeArray*)var280)->values[1] = (val*) var270;
1169 ((struct instance_array__NativeArray*)var280)->values[2] = (val*) var274;
1170 ((struct instance_array__NativeArray*)var280)->values[3] = (val*) var_mvisibility;
1171 {
1172 ((void (*)(val*, val*, long))(var278->class->vft[COLOR_array__Array__with_native]))(var278, var280, var279) /* with_native on <var278:Array[Object]>*/;
1173 }
1174 }
1175 {
1176 var281 = ((val* (*)(val*))(var278->class->vft[COLOR_string__Object__to_s]))(var278) /* to_s on <var278:Array[Object]>*/;
1177 }
1178 {
1179 modelbuilder__ModelBuilder__error(self, var_nvisibility, var281); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
1180 }
1181 } else {
1182 }
1183 }
1184 }
1185 }
1186 }
1187 }
1188 {
1189 { /* Inline modelize_class#AClassdef#mclass= (var_nclassdef,var_mclass) on <var_nclassdef:AClassdef> */
1190 var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclass].val = var_mclass; /* _mclass on <var_nclassdef:AClassdef> */
1191 RET_LABEL282:(void)0;
1192 }
1193 }
1194 {
1195 { /* Inline modelize_class#AModule#mclass2nclassdef (var_nmodule) on <var_nmodule:AModule> */
1196 var285 = var_nmodule->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <var_nmodule:AModule> */
1197 if (unlikely(var285 == NULL)) {
1198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
1199 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
1200 show_backtrace(1);
1201 }
1202 var283 = var285;
1203 RET_LABEL284:(void)0;
1204 }
1205 }
1206 {
1207 var286 = abstract_collection__MapRead__has_key(var283, var_mclass);
1208 }
1209 var287 = !var286;
1210 if (var287){
1211 {
1212 { /* Inline modelize_class#AModule#mclass2nclassdef (var_nmodule) on <var_nmodule:AModule> */
1213 var290 = var_nmodule->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <var_nmodule:AModule> */
1214 if (unlikely(var290 == NULL)) {
1215 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
1216 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
1217 show_backtrace(1);
1218 }
1219 var288 = var290;
1220 RET_LABEL289:(void)0;
1221 }
1222 }
1223 {
1224 ((void (*)(val*, val*, val*))(var288->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var288, var_mclass, var_nclassdef) /* []= on <var288:Map[MClass, AClassdef]>*/;
1225 }
1226 var291 = NEW_array__Array(&type_array__Arrayparser_nodes__AClassdef);
1227 var292 = 1;
1228 {
1229 array__Array__with_capacity(var291, var292); /* Direct call array#Array#with_capacity on <var291:Array[AClassdef]>*/
1230 }
1231 var_293 = var291;
1232 {
1233 array__AbstractArray__push(var_293, var_nclassdef); /* Direct call array#AbstractArray#push on <var_293:Array[AClassdef]>*/
1234 }
1235 {
1236 { /* Inline modelize_class#AClassdef#all_defs= (var_nclassdef,var_293) on <var_nclassdef:AClassdef> */
1237 var_nclassdef->attrs[COLOR_modelize_class__AClassdef___all_defs].val = var_293; /* _all_defs on <var_nclassdef:AClassdef> */
1238 RET_LABEL294:(void)0;
1239 }
1240 }
1241 } else {
1242 {
1243 { /* Inline modelize_class#AModule#mclass2nclassdef (var_nmodule) on <var_nmodule:AModule> */
1244 var297 = var_nmodule->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <var_nmodule:AModule> */
1245 if (unlikely(var297 == NULL)) {
1246 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
1247 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
1248 show_backtrace(1);
1249 }
1250 var295 = var297;
1251 RET_LABEL296:(void)0;
1252 }
1253 }
1254 {
1255 var298 = ((val* (*)(val*, val*))(var295->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var295, var_mclass) /* [] on <var295:Map[MClass, AClassdef]>*/;
1256 }
1257 {
1258 { /* Inline modelize_class#AClassdef#all_defs (var298) on <var298:nullable Object(AClassdef)> */
1259 var301 = var298->attrs[COLOR_modelize_class__AClassdef___all_defs].val; /* _all_defs on <var298:nullable Object(AClassdef)> */
1260 var299 = var301;
1261 RET_LABEL300:(void)0;
1262 }
1263 }
1264 if (var299 == NULL) {
1265 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1266 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 104);
1267 show_backtrace(1);
1268 } else {
1269 array__Array__add(var299, var_nclassdef); /* Direct call array#Array#add on <var299:nullable Array[AClassdef]>*/
1270 }
1271 }
1272 RET_LABEL:;
1273 }
1274 /* method modelize_class#ModelBuilder#build_a_mclass for (self: Object, AModule, AClassdef) */
1275 void VIRTUAL_modelize_class__ModelBuilder__build_a_mclass(val* self, val* p0, val* p1) {
1276 modelize_class__ModelBuilder__build_a_mclass(self, p0, p1); /* Direct call modelize_class#ModelBuilder#build_a_mclass on <self:Object(ModelBuilder)>*/
1277 RET_LABEL:;
1278 }
1279 /* method modelize_class#ModelBuilder#build_a_mclassdef for (self: ModelBuilder, AModule, AClassdef) */
1280 void modelize_class__ModelBuilder__build_a_mclassdef(val* self, val* p0, val* p1) {
1281 val* var_nmodule /* var nmodule: AModule */;
1282 val* var_nclassdef /* var nclassdef: AClassdef */;
1283 val* var /* : nullable MModule */;
1284 val* var2 /* : nullable MModule */;
1285 val* var_mmodule /* var mmodule: MModule */;
1286 static val* varonce;
1287 val* var3 /* : String */;
1288 char* var4 /* : NativeString */;
1289 long var5 /* : Int */;
1290 val* var6 /* : FlatString */;
1291 val* var7 /* : nullable MClass */;
1292 val* var_objectclass /* var objectclass: nullable MClass */;
1293 val* var8 /* : nullable MClass */;
1294 val* var10 /* : nullable MClass */;
1295 val* var_mclass /* var mclass: nullable MClass */;
1296 val* var11 /* : null */;
1297 short int var12 /* : Bool */;
1298 short int var13 /* : Bool */;
1299 val* var_other /* var other: nullable Object */;
1300 short int var15 /* : Bool */;
1301 short int var17 /* : Bool */;
1302 val* var18 /* : Map[MClass, AClassdef] */;
1303 val* var20 /* : Map[MClass, AClassdef] */;
1304 val* var21 /* : nullable Object */;
1305 val* var_other_nclassdef /* var other_nclassdef: AClassdef */;
1306 short int var22 /* : Bool */;
1307 short int var23 /* : Bool */;
1308 val* var_other25 /* var other: nullable Object */;
1309 short int var26 /* : Bool */;
1310 short int var27 /* : Bool */;
1311 short int var28 /* : Bool */;
1312 short int var29 /* : Bool */;
1313 int cltype;
1314 int idtype;
1315 short int var30 /* : Bool */;
1316 val* var31 /* : nullable MClassDef */;
1317 val* var33 /* : nullable MClassDef */;
1318 val* var35 /* : Array[String] */;
1319 val* var_names /* var names: Array[String] */;
1320 val* var36 /* : Array[MType] */;
1321 val* var_bounds /* var bounds: Array[MType] */;
1322 short int var37 /* : Bool */;
1323 short int var38 /* : Bool */;
1324 int cltype39;
1325 int idtype40;
1326 short int var_ /* var : Bool */;
1327 long var41 /* : Int */;
1328 long var43 /* : Int */;
1329 long var44 /* : Int */;
1330 short int var45 /* : Bool */;
1331 short int var47 /* : Bool */;
1332 int cltype48;
1333 int idtype49;
1334 const char* var_class_name;
1335 short int var50 /* : Bool */;
1336 val* var51 /* : Range[Int] */;
1337 long var52 /* : Int */;
1338 long var53 /* : Int */;
1339 long var55 /* : Int */;
1340 val* var56 /* : Discrete */;
1341 val* var57 /* : Discrete */;
1342 val* var58 /* : Iterator[Discrete] */;
1343 short int var59 /* : Bool */;
1344 val* var60 /* : nullable Object */;
1345 long var_i /* var i: Int */;
1346 long var61 /* : Int */;
1347 val* var62 /* : ANodes[AFormaldef] */;
1348 val* var64 /* : ANodes[AFormaldef] */;
1349 val* var65 /* : ANode */;
1350 val* var_nfd /* var nfd: AFormaldef */;
1351 val* var66 /* : TClassid */;
1352 val* var67 /* : String */;
1353 val* var_ptname /* var ptname: String */;
1354 short int var68 /* : Bool */;
1355 static val* varonce69;
1356 val* var70 /* : String */;
1357 char* var71 /* : NativeString */;
1358 long var72 /* : Int */;
1359 val* var73 /* : FlatString */;
1360 static val* varonce74;
1361 val* var75 /* : String */;
1362 char* var76 /* : NativeString */;
1363 long var77 /* : Int */;
1364 val* var78 /* : FlatString */;
1365 val* var79 /* : Array[Object] */;
1366 long var80 /* : Int */;
1367 val* var81 /* : NativeArray[Object] */;
1368 val* var82 /* : String */;
1369 val* var83 /* : SequenceRead[Char] */;
1370 val* var85 /* : SequenceRead[Char] */;
1371 val* var86 /* : Iterator[nullable Object] */;
1372 short int var87 /* : Bool */;
1373 val* var88 /* : nullable Object */;
1374 char var_c /* var c: Char */;
1375 char var89 /* : Char */;
1376 short int var90 /* : Bool */;
1377 char var91 /* : Char */;
1378 short int var92 /* : Bool */;
1379 short int var94 /* : Bool */;
1380 int cltype95;
1381 int idtype96;
1382 const char* var_class_name97;
1383 short int var98 /* : Bool */;
1384 short int var_99 /* var : Bool */;
1385 char var100 /* : Char */;
1386 short int var101 /* : Bool */;
1387 short int var103 /* : Bool */;
1388 int cltype104;
1389 int idtype105;
1390 const char* var_class_name106;
1391 short int var107 /* : Bool */;
1392 static val* varonce108;
1393 val* var109 /* : String */;
1394 char* var110 /* : NativeString */;
1395 long var111 /* : Int */;
1396 val* var112 /* : FlatString */;
1397 val* var113 /* : Array[Object] */;
1398 long var114 /* : Int */;
1399 val* var115 /* : NativeArray[Object] */;
1400 val* var116 /* : String */;
1401 val* var117 /* : MClassType */;
1402 val* var119 /* : MClassType */;
1403 val* var120 /* : Array[MType] */;
1404 val* var122 /* : Array[MType] */;
1405 val* var123 /* : nullable Object */;
1406 short int var124 /* : Bool */;
1407 int cltype125;
1408 int idtype126;
1409 const char* var_class_name127;
1410 val* var130 /* : Range[Int] */;
1411 long var131 /* : Int */;
1412 long var132 /* : Int */;
1413 long var134 /* : Int */;
1414 val* var135 /* : Discrete */;
1415 val* var136 /* : Discrete */;
1416 val* var137 /* : Iterator[Discrete] */;
1417 short int var138 /* : Bool */;
1418 val* var139 /* : nullable Object */;
1419 long var_i140 /* var i: Int */;
1420 long var141 /* : Int */;
1421 val* var142 /* : ANodes[AFormaldef] */;
1422 val* var144 /* : ANodes[AFormaldef] */;
1423 val* var145 /* : ANode */;
1424 val* var_nfd146 /* var nfd: AFormaldef */;
1425 val* var147 /* : nullable AType */;
1426 val* var_nfdt /* var nfdt: nullable AType */;
1427 val* var148 /* : null */;
1428 short int var149 /* : Bool */;
1429 short int var150 /* : Bool */;
1430 short int var152 /* : Bool */;
1431 short int var153 /* : Bool */;
1432 short int var154 /* : Bool */;
1433 val* var155 /* : null */;
1434 short int var156 /* : Bool */;
1435 val* var157 /* : nullable MType */;
1436 val* var_bound /* var bound: nullable MType */;
1437 val* var158 /* : null */;
1438 short int var159 /* : Bool */;
1439 short int var160 /* : Bool */;
1440 short int var162 /* : Bool */;
1441 short int var164 /* : Bool */;
1442 short int var165 /* : Bool */;
1443 static val* varonce166;
1444 val* var167 /* : String */;
1445 char* var168 /* : NativeString */;
1446 long var169 /* : Int */;
1447 val* var170 /* : FlatString */;
1448 val* var171 /* : nullable Object */;
1449 static val* varonce172;
1450 val* var173 /* : String */;
1451 char* var174 /* : NativeString */;
1452 long var175 /* : Int */;
1453 val* var176 /* : FlatString */;
1454 val* var177 /* : Array[Object] */;
1455 long var178 /* : Int */;
1456 val* var179 /* : NativeArray[Object] */;
1457 val* var180 /* : String */;
1458 short int var182 /* : Bool */;
1459 short int var183 /* : Bool */;
1460 int cltype184;
1461 int idtype185;
1462 short int var_186 /* var : Bool */;
1463 val* var187 /* : MClass */;
1464 val* var189 /* : MClass */;
1465 val* var190 /* : MClassKind */;
1466 val* var192 /* : MClassKind */;
1467 val* var193 /* : MClassKind */;
1468 short int var194 /* : Bool */;
1469 short int var195 /* : Bool */;
1470 short int var197 /* : Bool */;
1471 short int var199 /* : Bool */;
1472 static val* varonce200;
1473 val* var201 /* : String */;
1474 char* var202 /* : NativeString */;
1475 long var203 /* : Int */;
1476 val* var204 /* : FlatString */;
1477 static val* varonce205;
1478 val* var206 /* : String */;
1479 char* var207 /* : NativeString */;
1480 long var208 /* : Int */;
1481 val* var209 /* : FlatString */;
1482 val* var210 /* : Array[Object] */;
1483 long var211 /* : Int */;
1484 val* var212 /* : NativeArray[Object] */;
1485 val* var213 /* : String */;
1486 val* var214 /* : Array[MClassDef] */;
1487 val* var216 /* : Array[MClassDef] */;
1488 short int var217 /* : Bool */;
1489 val* var218 /* : MClassType */;
1490 val* var220 /* : MClassType */;
1491 val* var221 /* : MType */;
1492 val* var_bound222 /* var bound: MType */;
1493 val* var224 /* : MClassDef */;
1494 val* var225 /* : MClassType */;
1495 val* var227 /* : MClassType */;
1496 val* var228 /* : Array[MType] */;
1497 val* var230 /* : Array[MType] */;
1498 val* var231 /* : nullable Object */;
1499 val* var_bound232 /* var bound: MType */;
1500 val* var235 /* : MClassType */;
1501 val* var_bound_mtype /* var bound_mtype: MClassType */;
1502 val* var236 /* : MClassDef */;
1503 val* var237 /* : Location */;
1504 val* var_mclassdef /* var mclassdef: MClassDef */;
1505 val* var239 /* : HashMap[MClassDef, AClassdef] */;
1506 val* var241 /* : HashMap[MClassDef, AClassdef] */;
1507 short int var242 /* : Bool */;
1508 int cltype243;
1509 int idtype244;
1510 val* var245 /* : nullable ADoc */;
1511 val* var_ndoc /* var ndoc: nullable ADoc */;
1512 val* var246 /* : null */;
1513 short int var247 /* : Bool */;
1514 short int var248 /* : Bool */;
1515 short int var250 /* : Bool */;
1516 short int var251 /* : Bool */;
1517 short int var252 /* : Bool */;
1518 val* var253 /* : MDoc */;
1519 val* var_mdoc /* var mdoc: MDoc */;
1520 short int var256 /* : Bool */;
1521 val* var257 /* : ToolContext */;
1522 val* var259 /* : ToolContext */;
1523 static val* varonce260;
1524 val* var261 /* : String */;
1525 char* var262 /* : NativeString */;
1526 long var263 /* : Int */;
1527 val* var264 /* : FlatString */;
1528 val* var265 /* : MClassKind */;
1529 val* var267 /* : MClassKind */;
1530 static val* varonce268;
1531 val* var269 /* : String */;
1532 char* var270 /* : NativeString */;
1533 long var271 /* : Int */;
1534 val* var272 /* : FlatString */;
1535 val* var273 /* : String */;
1536 val* var274 /* : Array[Object] */;
1537 long var275 /* : Int */;
1538 val* var276 /* : NativeArray[Object] */;
1539 val* var277 /* : String */;
1540 long var278 /* : Int */;
1541 val* var279 /* : ToolContext */;
1542 val* var281 /* : ToolContext */;
1543 static val* varonce282;
1544 val* var283 /* : String */;
1545 char* var284 /* : NativeString */;
1546 long var285 /* : Int */;
1547 val* var286 /* : FlatString */;
1548 val* var287 /* : MClassKind */;
1549 val* var289 /* : MClassKind */;
1550 static val* varonce290;
1551 val* var291 /* : String */;
1552 char* var292 /* : NativeString */;
1553 long var293 /* : Int */;
1554 val* var294 /* : FlatString */;
1555 val* var295 /* : String */;
1556 val* var296 /* : Array[Object] */;
1557 long var297 /* : Int */;
1558 val* var298 /* : NativeArray[Object] */;
1559 val* var299 /* : String */;
1560 long var300 /* : Int */;
1561 var_nmodule = p0;
1562 var_nclassdef = p1;
1563 {
1564 { /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
1565 var2 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
1566 var = var2;
1567 RET_LABEL1:(void)0;
1568 }
1569 }
1570 if (unlikely(var == NULL)) {
1571 PRINT_ERROR("Runtime error: %s", "Cast failed");
1572 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 111);
1573 show_backtrace(1);
1574 }
1575 var_mmodule = var;
1576 if (varonce) {
1577 var3 = varonce;
1578 } else {
1579 var4 = "Object";
1580 var5 = 6;
1581 var6 = string__NativeString__to_s_with_length(var4, var5);
1582 var3 = var6;
1583 varonce = var3;
1584 }
1585 {
1586 var7 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_nmodule, var_mmodule, var3);
1587 }
1588 var_objectclass = var7;
1589 {
1590 { /* Inline modelize_class#AClassdef#mclass (var_nclassdef) on <var_nclassdef:AClassdef> */
1591 var10 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclass].val; /* _mclass on <var_nclassdef:AClassdef> */
1592 var8 = var10;
1593 RET_LABEL9:(void)0;
1594 }
1595 }
1596 var_mclass = var8;
1597 var11 = NULL;
1598 if (var_mclass == NULL) {
1599 var12 = 1; /* is null */
1600 } else {
1601 var12 = 0; /* arg is null but recv is not */
1602 }
1603 if (0) {
1604 { /* Inline kernel#Object#== (var_mclass,var11) on <var_mclass:nullable MClass> */
1605 var_other = var11;
1606 {
1607 { /* Inline kernel#Object#is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
1608 var17 = var_mclass == var_other;
1609 var15 = var17;
1610 goto RET_LABEL16;
1611 RET_LABEL16:(void)0;
1612 }
1613 }
1614 var13 = var15;
1615 goto RET_LABEL14;
1616 RET_LABEL14:(void)0;
1617 }
1618 var12 = var13;
1619 }
1620 if (var12){
1621 goto RET_LABEL;
1622 } else {
1623 }
1624 {
1625 { /* Inline modelize_class#AModule#mclass2nclassdef (var_nmodule) on <var_nmodule:AModule> */
1626 var20 = var_nmodule->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <var_nmodule:AModule> */
1627 if (unlikely(var20 == NULL)) {
1628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
1629 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
1630 show_backtrace(1);
1631 }
1632 var18 = var20;
1633 RET_LABEL19:(void)0;
1634 }
1635 }
1636 {
1637 var21 = ((val* (*)(val*, val*))(var18->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var18, var_mclass) /* [] on <var18:Map[MClass, AClassdef]>*/;
1638 }
1639 var_other_nclassdef = var21;
1640 {
1641 { /* Inline kernel#Object#!= (var_other_nclassdef,var_nclassdef) on <var_other_nclassdef:AClassdef> */
1642 var_other25 = var_nclassdef;
1643 {
1644 var27 = ((short int (*)(val*, val*))(var_other_nclassdef->class->vft[COLOR_kernel__Object___61d_61d]))(var_other_nclassdef, var_other25) /* == on <var_other_nclassdef:AClassdef>*/;
1645 var26 = var27;
1646 }
1647 var28 = !var26;
1648 var23 = var28;
1649 goto RET_LABEL24;
1650 RET_LABEL24:(void)0;
1651 }
1652 var22 = var23;
1653 }
1654 if (var22){
1655 /* <var_nclassdef:AClassdef> isa AStdClassdef */
1656 cltype = type_parser_nodes__AStdClassdef.color;
1657 idtype = type_parser_nodes__AStdClassdef.id;
1658 if(cltype >= var_nclassdef->type->table_size) {
1659 var29 = 0;
1660 } else {
1661 var29 = var_nclassdef->type->type_table[cltype] == idtype;
1662 }
1663 var30 = !var29;
1664 if (unlikely(!var30)) {
1665 PRINT_ERROR("Runtime error: %s", "Assert failed");
1666 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 119);
1667 show_backtrace(1);
1668 }
1669 {
1670 { /* Inline modelize_class#AClassdef#mclassdef (var_other_nclassdef) on <var_other_nclassdef:AClassdef> */
1671 var33 = var_other_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_other_nclassdef:AClassdef> */
1672 var31 = var33;
1673 RET_LABEL32:(void)0;
1674 }
1675 }
1676 {
1677 { /* Inline modelize_class#AClassdef#mclassdef= (var_nclassdef,var31) on <var_nclassdef:AClassdef> */
1678 var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val = var31; /* _mclassdef on <var_nclassdef:AClassdef> */
1679 RET_LABEL34:(void)0;
1680 }
1681 }
1682 goto RET_LABEL;
1683 } else {
1684 }
1685 var35 = NEW_array__Array(&type_array__Arraystring__String);
1686 {
1687 array__Array__init(var35); /* Direct call array#Array#init on <var35:Array[String]>*/
1688 }
1689 var_names = var35;
1690 var36 = NEW_array__Array(&type_array__Arraymodel__MType);
1691 {
1692 array__Array__init(var36); /* Direct call array#Array#init on <var36:Array[MType]>*/
1693 }
1694 var_bounds = var36;
1695 /* <var_nclassdef:AClassdef> isa AStdClassdef */
1696 cltype39 = type_parser_nodes__AStdClassdef.color;
1697 idtype40 = type_parser_nodes__AStdClassdef.id;
1698 if(cltype39 >= var_nclassdef->type->table_size) {
1699 var38 = 0;
1700 } else {
1701 var38 = var_nclassdef->type->type_table[cltype39] == idtype40;
1702 }
1703 var_ = var38;
1704 if (var38){
1705 {
1706 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1707 var43 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
1708 var41 = var43;
1709 RET_LABEL42:(void)0;
1710 }
1711 }
1712 var44 = 0;
1713 {
1714 { /* Inline kernel#Int#> (var41,var44) on <var41:Int> */
1715 /* Covariant cast for argument 0 (i) <var44:Int> isa OTHER */
1716 /* <var44:Int> isa OTHER */
1717 var47 = 1; /* easy <var44:Int> isa OTHER*/
1718 if (unlikely(!var47)) {
1719 var_class_name = type_kernel__Int.name;
1720 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1721 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
1722 show_backtrace(1);
1723 }
1724 var50 = var41 > var44;
1725 var45 = var50;
1726 goto RET_LABEL46;
1727 RET_LABEL46:(void)0;
1728 }
1729 }
1730 var37 = var45;
1731 } else {
1732 var37 = var_;
1733 }
1734 if (var37){
1735 var51 = NEW_range__Range(&type_range__Rangekernel__Int);
1736 var52 = 0;
1737 {
1738 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1739 var55 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
1740 var53 = var55;
1741 RET_LABEL54:(void)0;
1742 }
1743 }
1744 {
1745 var56 = BOX_kernel__Int(var52); /* autobox from Int to Discrete */
1746 var57 = BOX_kernel__Int(var53); /* autobox from Int to Discrete */
1747 range__Range__without_last(var51, var56, var57); /* Direct call range#Range#without_last on <var51:Range[Int]>*/
1748 }
1749 {
1750 var58 = range__Range__iterator(var51);
1751 }
1752 for(;;) {
1753 {
1754 var59 = ((short int (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var58) /* is_ok on <var58:Iterator[Discrete]>*/;
1755 }
1756 if(!var59) break;
1757 {
1758 var60 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__item]))(var58) /* item on <var58:Iterator[Discrete]>*/;
1759 }
1760 var61 = ((struct instance_kernel__Int*)var60)->value; /* autounbox from nullable Object to Int */;
1761 var_i = var61;
1762 {
1763 { /* Inline parser_nodes#AStdClassdef#n_formaldefs (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
1764 var64 = var_nclassdef->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <var_nclassdef:AClassdef(AStdClassdef)> */
1765 if (unlikely(var64 == NULL)) {
1766 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
1767 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 824);
1768 show_backtrace(1);
1769 }
1770 var62 = var64;
1771 RET_LABEL63:(void)0;
1772 }
1773 }
1774 {
1775 var65 = parser_nodes__ANodes___91d_93d(var62, var_i);
1776 }
1777 var_nfd = var65;
1778 {
1779 var66 = parser_nodes__AFormaldef__n_id(var_nfd);
1780 }
1781 {
1782 var67 = lexer_work__Token__text(var66);
1783 }
1784 var_ptname = var67;
1785 {
1786 var68 = array__AbstractArrayRead__has(var_names, var_ptname);
1787 }
1788 if (var68){
1789 if (varonce69) {
1790 var70 = varonce69;
1791 } else {
1792 var71 = "Error: A formal parameter type `";
1793 var72 = 32;
1794 var73 = string__NativeString__to_s_with_length(var71, var72);
1795 var70 = var73;
1796 varonce69 = var70;
1797 }
1798 if (varonce74) {
1799 var75 = varonce74;
1800 } else {
1801 var76 = "\' already exists";
1802 var77 = 16;
1803 var78 = string__NativeString__to_s_with_length(var76, var77);
1804 var75 = var78;
1805 varonce74 = var75;
1806 }
1807 var79 = NEW_array__Array(&type_array__Arraykernel__Object);
1808 { /* var79 = array_instance Array[Object] */
1809 var80 = 3;
1810 var81 = NEW_array__NativeArray(var80, &type_array__NativeArraykernel__Object);
1811 ((struct instance_array__NativeArray*)var81)->values[0] = (val*) var70;
1812 ((struct instance_array__NativeArray*)var81)->values[1] = (val*) var_ptname;
1813 ((struct instance_array__NativeArray*)var81)->values[2] = (val*) var75;
1814 {
1815 ((void (*)(val*, val*, long))(var79->class->vft[COLOR_array__Array__with_native]))(var79, var81, var80) /* with_native on <var79:Array[Object]>*/;
1816 }
1817 }
1818 {
1819 var82 = ((val* (*)(val*))(var79->class->vft[COLOR_string__Object__to_s]))(var79) /* to_s on <var79:Array[Object]>*/;
1820 }
1821 {
1822 modelbuilder__ModelBuilder__error(self, var_nfd, var82); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
1823 }
1824 goto RET_LABEL;
1825 } else {
1826 }
1827 {
1828 { /* Inline string#FlatString#chars (var_ptname) on <var_ptname:String> */
1829 var85 = var_ptname->attrs[COLOR_string__FlatString___chars].val; /* _chars on <var_ptname:String> */
1830 if (unlikely(var85 == NULL)) {
1831 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _chars");
1832 PRINT_ERROR(" (%s:%d)\n", "lib/standard/string.nit", 746);
1833 show_backtrace(1);
1834 }
1835 var83 = var85;
1836 RET_LABEL84:(void)0;
1837 }
1838 }
1839 {
1840 var86 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_collection__Collection__iterator]))(var83) /* iterator on <var83:SequenceRead[Char]>*/;
1841 }
1842 for(;;) {
1843 {
1844 var87 = ((short int (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var86) /* is_ok on <var86:Iterator[nullable Object]>*/;
1845 }
1846 if(!var87) break;
1847 {
1848 var88 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__item]))(var86) /* item on <var86:Iterator[nullable Object]>*/;
1849 }
1850 var89 = ((struct instance_kernel__Char*)var88)->value; /* autounbox from nullable Object to Char */;
1851 var_c = var89;
1852 var91 = 'a';
1853 {
1854 { /* Inline kernel#Char#>= (var_c,var91) on <var_c:Char> */
1855 /* Covariant cast for argument 0 (i) <var91:Char> isa OTHER */
1856 /* <var91:Char> isa OTHER */
1857 var94 = 1; /* easy <var91:Char> isa OTHER*/
1858 if (unlikely(!var94)) {
1859 var_class_name97 = type_kernel__Char.name;
1860 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name97);
1861 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 501);
1862 show_backtrace(1);
1863 }
1864 var98 = var_c >= var91;
1865 var92 = var98;
1866 goto RET_LABEL93;
1867 RET_LABEL93:(void)0;
1868 }
1869 }
1870 var_99 = var92;
1871 if (var92){
1872 var100 = 'z';
1873 {
1874 { /* Inline kernel#Char#<= (var_c,var100) on <var_c:Char> */
1875 /* Covariant cast for argument 0 (i) <var100:Char> isa OTHER */
1876 /* <var100:Char> isa OTHER */
1877 var103 = 1; /* easy <var100:Char> isa OTHER*/
1878 if (unlikely(!var103)) {
1879 var_class_name106 = type_kernel__Char.name;
1880 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name106);
1881 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 499);
1882 show_backtrace(1);
1883 }
1884 var107 = var_c <= var100;
1885 var101 = var107;
1886 goto RET_LABEL102;
1887 RET_LABEL102:(void)0;
1888 }
1889 }
1890 var90 = var101;
1891 } else {
1892 var90 = var_99;
1893 }
1894 if (var90){
1895 if (varonce108) {
1896 var109 = varonce108;
1897 } else {
1898 var110 = "Warning: lowercase in the formal parameter type ";
1899 var111 = 48;
1900 var112 = string__NativeString__to_s_with_length(var110, var111);
1901 var109 = var112;
1902 varonce108 = var109;
1903 }
1904 var113 = NEW_array__Array(&type_array__Arraykernel__Object);
1905 { /* var113 = array_instance Array[Object] */
1906 var114 = 2;
1907 var115 = NEW_array__NativeArray(var114, &type_array__NativeArraykernel__Object);
1908 ((struct instance_array__NativeArray*)var115)->values[0] = (val*) var109;
1909 ((struct instance_array__NativeArray*)var115)->values[1] = (val*) var_ptname;
1910 {
1911 ((void (*)(val*, val*, long))(var113->class->vft[COLOR_array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
1912 }
1913 }
1914 {
1915 var116 = ((val* (*)(val*))(var113->class->vft[COLOR_string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
1916 }
1917 {
1918 modelbuilder__ModelBuilder__warning(self, var_nfd, var116); /* Direct call modelbuilder#ModelBuilder#warning on <self:ModelBuilder>*/
1919 }
1920 goto BREAK_label;
1921 } else {
1922 }
1923 CONTINUE_label: (void)0;
1924 {
1925 ((void (*)(val*))(var86->class->vft[COLOR_abstract_collection__Iterator__next]))(var86) /* next on <var86:Iterator[nullable Object]>*/;
1926 }
1927 }
1928 BREAK_label: (void)0;
1929 {
1930 array__Array__add(var_names, var_ptname); /* Direct call array#Array#add on <var_names:Array[String]>*/
1931 }
1932 {
1933 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1934 var119 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
1935 if (unlikely(var119 == NULL)) {
1936 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
1937 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
1938 show_backtrace(1);
1939 }
1940 var117 = var119;
1941 RET_LABEL118:(void)0;
1942 }
1943 }
1944 {
1945 { /* Inline model#MClassType#arguments (var117) on <var117:MClassType> */
1946 var122 = var117->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var117:MClassType> */
1947 if (unlikely(var122 == NULL)) {
1948 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
1949 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
1950 show_backtrace(1);
1951 }
1952 var120 = var122;
1953 RET_LABEL121:(void)0;
1954 }
1955 }
1956 {
1957 var123 = array__Array___91d_93d(var120, var_i);
1958 }
1959 /* <var123:nullable Object(MType)> isa MParameterType */
1960 cltype125 = type_model__MParameterType.color;
1961 idtype126 = type_model__MParameterType.id;
1962 if(cltype125 >= var123->type->table_size) {
1963 var124 = 0;
1964 } else {
1965 var124 = var123->type->type_table[cltype125] == idtype126;
1966 }
1967 if (unlikely(!var124)) {
1968 var_class_name127 = var123 == NULL ? "null" : var123->type->name;
1969 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name127);
1970 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 140);
1971 show_backtrace(1);
1972 }
1973 {
1974 { /* Inline modelize_class#AFormaldef#mtype= (var_nfd,var123) on <var_nfd:AFormaldef> */
1975 var_nfd->attrs[COLOR_modelize_class__AFormaldef___mtype].val = var123; /* _mtype on <var_nfd:AFormaldef> */
1976 RET_LABEL128:(void)0;
1977 }
1978 }
1979 CONTINUE_label129: (void)0;
1980 {
1981 ((void (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__next]))(var58) /* next on <var58:Iterator[Discrete]>*/;
1982 }
1983 }
1984 BREAK_label129: (void)0;
1985 var130 = NEW_range__Range(&type_range__Rangekernel__Int);
1986 var131 = 0;
1987 {
1988 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
1989 var134 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
1990 var132 = var134;
1991 RET_LABEL133:(void)0;
1992 }
1993 }
1994 {
1995 var135 = BOX_kernel__Int(var131); /* autobox from Int to Discrete */
1996 var136 = BOX_kernel__Int(var132); /* autobox from Int to Discrete */
1997 range__Range__without_last(var130, var135, var136); /* Direct call range#Range#without_last on <var130:Range[Int]>*/
1998 }
1999 {
2000 var137 = range__Range__iterator(var130);
2001 }
2002 for(;;) {
2003 {
2004 var138 = ((short int (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var137) /* is_ok on <var137:Iterator[Discrete]>*/;
2005 }
2006 if(!var138) break;
2007 {
2008 var139 = ((val* (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__item]))(var137) /* item on <var137:Iterator[Discrete]>*/;
2009 }
2010 var141 = ((struct instance_kernel__Int*)var139)->value; /* autounbox from nullable Object to Int */;
2011 var_i140 = var141;
2012 {
2013 { /* Inline parser_nodes#AStdClassdef#n_formaldefs (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
2014 var144 = var_nclassdef->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <var_nclassdef:AClassdef(AStdClassdef)> */
2015 if (unlikely(var144 == NULL)) {
2016 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
2017 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 824);
2018 show_backtrace(1);
2019 }
2020 var142 = var144;
2021 RET_LABEL143:(void)0;
2022 }
2023 }
2024 {
2025 var145 = parser_nodes__ANodes___91d_93d(var142, var_i140);
2026 }
2027 var_nfd146 = var145;
2028 {
2029 var147 = parser_nodes__AFormaldef__n_type(var_nfd146);
2030 }
2031 var_nfdt = var147;
2032 var148 = NULL;
2033 if (var_nfdt == NULL) {
2034 var149 = 0; /* is null */
2035 } else {
2036 var149 = 1; /* arg is null and recv is not */
2037 }
2038 if (0) {
2039 { /* Inline kernel#Object#!= (var_nfdt,var148) on <var_nfdt:nullable AType> */
2040 var_other25 = var148;
2041 {
2042 var153 = ((short int (*)(val*, val*))(var_nfdt->class->vft[COLOR_kernel__Object___61d_61d]))(var_nfdt, var_other25) /* == on <var_nfdt:nullable AType(AType)>*/;
2043 var152 = var153;
2044 }
2045 var154 = !var152;
2046 var150 = var154;
2047 goto RET_LABEL151;
2048 RET_LABEL151:(void)0;
2049 }
2050 var149 = var150;
2051 }
2052 if (var149){
2053 var155 = NULL;
2054 var156 = 0;
2055 {
2056 var157 = modelize_class__ModelBuilder__resolve_mtype_unchecked(self, var_mmodule, var155, var_nfdt, var156);
2057 }
2058 var_bound = var157;
2059 var158 = NULL;
2060 if (var_bound == NULL) {
2061 var159 = 1; /* is null */
2062 } else {
2063 var159 = 0; /* arg is null but recv is not */
2064 }
2065 if (0) {
2066 { /* Inline kernel#Object#== (var_bound,var158) on <var_bound:nullable MType> */
2067 var_other = var158;
2068 {
2069 { /* Inline kernel#Object#is_same_instance (var_bound,var_other) on <var_bound:nullable MType(MType)> */
2070 var164 = var_bound == var_other;
2071 var162 = var164;
2072 goto RET_LABEL163;
2073 RET_LABEL163:(void)0;
2074 }
2075 }
2076 var160 = var162;
2077 goto RET_LABEL161;
2078 RET_LABEL161:(void)0;
2079 }
2080 var159 = var160;
2081 }
2082 if (var159){
2083 goto RET_LABEL;
2084 } else {
2085 }
2086 {
2087 var165 = ((short int (*)(val*))(var_bound->class->vft[COLOR_model__MType__need_anchor]))(var_bound) /* need_anchor on <var_bound:nullable MType(MType)>*/;
2088 }
2089 if (var165){
2090 if (varonce166) {
2091 var167 = varonce166;
2092 } else {
2093 var168 = "Error: Formal parameter type `";
2094 var169 = 30;
2095 var170 = string__NativeString__to_s_with_length(var168, var169);
2096 var167 = var170;
2097 varonce166 = var167;
2098 }
2099 {
2100 var171 = array__Array___91d_93d(var_names, var_i140);
2101 }
2102 if (varonce172) {
2103 var173 = varonce172;
2104 } else {
2105 var174 = "\' bounded with a formal parameter type";
2106 var175 = 38;
2107 var176 = string__NativeString__to_s_with_length(var174, var175);
2108 var173 = var176;
2109 varonce172 = var173;
2110 }
2111 var177 = NEW_array__Array(&type_array__Arraykernel__Object);
2112 { /* var177 = array_instance Array[Object] */
2113 var178 = 3;
2114 var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object);
2115 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var167;
2116 ((struct instance_array__NativeArray*)var179)->values[1] = (val*) var171;
2117 ((struct instance_array__NativeArray*)var179)->values[2] = (val*) var173;
2118 {
2119 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[Object]>*/;
2120 }
2121 }
2122 {
2123 var180 = ((val* (*)(val*))(var177->class->vft[COLOR_string__Object__to_s]))(var177) /* to_s on <var177:Array[Object]>*/;
2124 }
2125 {
2126 modelbuilder__ModelBuilder__error(self, var_nfd146, var180); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
2127 }
2128 } else {
2129 {
2130 array__Array__add(var_bounds, var_bound); /* Direct call array#Array#add on <var_bounds:Array[MType]>*/
2131 }
2132 {
2133 { /* Inline modelize_class#AFormaldef#bound= (var_nfd146,var_bound) on <var_nfd146:AFormaldef> */
2134 var_nfd146->attrs[COLOR_modelize_class__AFormaldef___bound].val = var_bound; /* _bound on <var_nfd146:AFormaldef> */
2135 RET_LABEL181:(void)0;
2136 }
2137 }
2138 }
2139 /* <var_bound:nullable MType(MType)> isa MClassType */
2140 cltype184 = type_model__MClassType.color;
2141 idtype185 = type_model__MClassType.id;
2142 if(cltype184 >= var_bound->type->table_size) {
2143 var183 = 0;
2144 } else {
2145 var183 = var_bound->type->type_table[cltype184] == idtype185;
2146 }
2147 var_186 = var183;
2148 if (var183){
2149 {
2150 { /* Inline model#MClassType#mclass (var_bound) on <var_bound:nullable MType(MClassType)> */
2151 var189 = var_bound->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_bound:nullable MType(MClassType)> */
2152 if (unlikely(var189 == NULL)) {
2153 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2154 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
2155 show_backtrace(1);
2156 }
2157 var187 = var189;
2158 RET_LABEL188:(void)0;
2159 }
2160 }
2161 {
2162 { /* Inline model#MClass#kind (var187) on <var187:MClass> */
2163 var192 = var187->attrs[COLOR_model__MClass___kind].val; /* _kind on <var187:MClass> */
2164 if (unlikely(var192 == NULL)) {
2165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2166 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
2167 show_backtrace(1);
2168 }
2169 var190 = var192;
2170 RET_LABEL191:(void)0;
2171 }
2172 }
2173 {
2174 var193 = model__Object__enum_kind(self);
2175 }
2176 {
2177 { /* Inline kernel#Object#== (var190,var193) on <var190:MClassKind> */
2178 var_other = var193;
2179 {
2180 { /* Inline kernel#Object#is_same_instance (var190,var_other) on <var190:MClassKind> */
2181 var199 = var190 == var_other;
2182 var197 = var199;
2183 goto RET_LABEL198;
2184 RET_LABEL198:(void)0;
2185 }
2186 }
2187 var195 = var197;
2188 goto RET_LABEL196;
2189 RET_LABEL196:(void)0;
2190 }
2191 var194 = var195;
2192 }
2193 var182 = var194;
2194 } else {
2195 var182 = var_186;
2196 }
2197 if (var182){
2198 if (varonce200) {
2199 var201 = varonce200;
2200 } else {
2201 var202 = "Warning: Useless formal parameter type since `";
2202 var203 = 46;
2203 var204 = string__NativeString__to_s_with_length(var202, var203);
2204 var201 = var204;
2205 varonce200 = var201;
2206 }
2207 if (varonce205) {
2208 var206 = varonce205;
2209 } else {
2210 var207 = "` cannnot have subclasses.";
2211 var208 = 26;
2212 var209 = string__NativeString__to_s_with_length(var207, var208);
2213 var206 = var209;
2214 varonce205 = var206;
2215 }
2216 var210 = NEW_array__Array(&type_array__Arraykernel__Object);
2217 { /* var210 = array_instance Array[Object] */
2218 var211 = 3;
2219 var212 = NEW_array__NativeArray(var211, &type_array__NativeArraykernel__Object);
2220 ((struct instance_array__NativeArray*)var212)->values[0] = (val*) var201;
2221 ((struct instance_array__NativeArray*)var212)->values[1] = (val*) var_bound;
2222 ((struct instance_array__NativeArray*)var212)->values[2] = (val*) var206;
2223 {
2224 ((void (*)(val*, val*, long))(var210->class->vft[COLOR_array__Array__with_native]))(var210, var212, var211) /* with_native on <var210:Array[Object]>*/;
2225 }
2226 }
2227 {
2228 var213 = ((val* (*)(val*))(var210->class->vft[COLOR_string__Object__to_s]))(var210) /* to_s on <var210:Array[Object]>*/;
2229 }
2230 {
2231 modelbuilder__ModelBuilder__warning(self, var_nfdt, var213); /* Direct call modelbuilder#ModelBuilder#warning on <self:ModelBuilder>*/
2232 }
2233 } else {
2234 }
2235 } else {
2236 {
2237 { /* Inline model#MClass#mclassdefs (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2238 var216 = var_mclass->attrs[COLOR_model__MClass___mclassdefs].val; /* _mclassdefs on <var_mclass:nullable MClass(MClass)> */
2239 if (unlikely(var216 == NULL)) {
2240 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdefs");
2241 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 392);
2242 show_backtrace(1);
2243 }
2244 var214 = var216;
2245 RET_LABEL215:(void)0;
2246 }
2247 }
2248 {
2249 var217 = array__AbstractArrayRead__is_empty(var214);
2250 }
2251 if (var217){
2252 if (var_objectclass == NULL) {
2253 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2254 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 162);
2255 show_backtrace(1);
2256 } else {
2257 { /* Inline model#MClass#mclass_type (var_objectclass) on <var_objectclass:nullable MClass> */
2258 if (unlikely(var_objectclass == NULL)) {
2259 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2260 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
2261 show_backtrace(1);
2262 }
2263 var220 = var_objectclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_objectclass:nullable MClass> */
2264 if (unlikely(var220 == NULL)) {
2265 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2266 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
2267 show_backtrace(1);
2268 }
2269 var218 = var220;
2270 RET_LABEL219:(void)0;
2271 }
2272 }
2273 {
2274 var221 = model__MType__as_nullable(var218);
2275 }
2276 var_bound222 = var221;
2277 {
2278 array__Array__add(var_bounds, var_bound222); /* Direct call array#Array#add on <var_bounds:Array[MType]>*/
2279 }
2280 {
2281 { /* Inline modelize_class#AFormaldef#bound= (var_nfd146,var_bound222) on <var_nfd146:AFormaldef> */
2282 var_nfd146->attrs[COLOR_modelize_class__AFormaldef___bound].val = var_bound222; /* _bound on <var_nfd146:AFormaldef> */
2283 RET_LABEL223:(void)0;
2284 }
2285 }
2286 } else {
2287 {
2288 var224 = model__MClass__intro(var_mclass);
2289 }
2290 {
2291 { /* Inline model#MClassDef#bound_mtype (var224) on <var224:MClassDef> */
2292 var227 = var224->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var224:MClassDef> */
2293 if (unlikely(var227 == NULL)) {
2294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2295 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
2296 show_backtrace(1);
2297 }
2298 var225 = var227;
2299 RET_LABEL226:(void)0;
2300 }
2301 }
2302 {
2303 { /* Inline model#MClassType#arguments (var225) on <var225:MClassType> */
2304 var230 = var225->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var225:MClassType> */
2305 if (unlikely(var230 == NULL)) {
2306 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
2307 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
2308 show_backtrace(1);
2309 }
2310 var228 = var230;
2311 RET_LABEL229:(void)0;
2312 }
2313 }
2314 {
2315 var231 = array__Array___91d_93d(var228, var_i140);
2316 }
2317 var_bound232 = var231;
2318 {
2319 array__Array__add(var_bounds, var_bound232); /* Direct call array#Array#add on <var_bounds:Array[MType]>*/
2320 }
2321 {
2322 { /* Inline modelize_class#AFormaldef#bound= (var_nfd146,var_bound232) on <var_nfd146:AFormaldef> */
2323 var_nfd146->attrs[COLOR_modelize_class__AFormaldef___bound].val = var_bound232; /* _bound on <var_nfd146:AFormaldef> */
2324 RET_LABEL233:(void)0;
2325 }
2326 }
2327 }
2328 }
2329 CONTINUE_label234: (void)0;
2330 {
2331 ((void (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__next]))(var137) /* next on <var137:Iterator[Discrete]>*/;
2332 }
2333 }
2334 BREAK_label234: (void)0;
2335 } else {
2336 }
2337 {
2338 var235 = model__MClass__get_mtype(var_mclass, var_bounds);
2339 }
2340 var_bound_mtype = var235;
2341 var236 = NEW_model__MClassDef(&type_model__MClassDef);
2342 {
2343 var237 = parser_nodes__ANode__location(var_nclassdef);
2344 }
2345 {
2346 model__MClassDef__init(var236, var_mmodule, var_bound_mtype, var237, var_names); /* Direct call model#MClassDef#init on <var236:MClassDef>*/
2347 }
2348 var_mclassdef = var236;
2349 {
2350 { /* Inline modelize_class#AClassdef#mclassdef= (var_nclassdef,var_mclassdef) on <var_nclassdef:AClassdef> */
2351 var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val = var_mclassdef; /* _mclassdef on <var_nclassdef:AClassdef> */
2352 RET_LABEL238:(void)0;
2353 }
2354 }
2355 {
2356 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:ModelBuilder> */
2357 var241 = self->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
2358 if (unlikely(var241 == NULL)) {
2359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
2360 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 399);
2361 show_backtrace(1);
2362 }
2363 var239 = var241;
2364 RET_LABEL240:(void)0;
2365 }
2366 }
2367 {
2368 hash_collection__HashMap___91d_93d_61d(var239, var_mclassdef, var_nclassdef); /* Direct call hash_collection#HashMap#[]= on <var239:HashMap[MClassDef, AClassdef]>*/
2369 }
2370 /* <var_nclassdef:AClassdef> isa AStdClassdef */
2371 cltype243 = type_parser_nodes__AStdClassdef.color;
2372 idtype244 = type_parser_nodes__AStdClassdef.id;
2373 if(cltype243 >= var_nclassdef->type->table_size) {
2374 var242 = 0;
2375 } else {
2376 var242 = var_nclassdef->type->type_table[cltype243] == idtype244;
2377 }
2378 if (var242){
2379 {
2380 var245 = parser_nodes__AStdClassdef__n_doc(var_nclassdef);
2381 }
2382 var_ndoc = var245;
2383 var246 = NULL;
2384 if (var_ndoc == NULL) {
2385 var247 = 0; /* is null */
2386 } else {
2387 var247 = 1; /* arg is null and recv is not */
2388 }
2389 if (0) {
2390 { /* Inline kernel#Object#!= (var_ndoc,var246) on <var_ndoc:nullable ADoc> */
2391 var_other25 = var246;
2392 {
2393 var251 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other25) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
2394 var250 = var251;
2395 }
2396 var252 = !var250;
2397 var248 = var252;
2398 goto RET_LABEL249;
2399 RET_LABEL249:(void)0;
2400 }
2401 var247 = var248;
2402 }
2403 if (var247){
2404 {
2405 var253 = modelbuilder__ADoc__to_mdoc(var_ndoc);
2406 }
2407 var_mdoc = var253;
2408 {
2409 { /* Inline mdoc#MEntity#mdoc= (var_mclassdef,var_mdoc) on <var_mclassdef:MClassDef> */
2410 var_mclassdef->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mclassdef:MClassDef> */
2411 RET_LABEL254:(void)0;
2412 }
2413 }
2414 {
2415 { /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mclassdef) on <var_mdoc:MDoc> */
2416 var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mclassdef; /* _original_mentity on <var_mdoc:MDoc> */
2417 RET_LABEL255:(void)0;
2418 }
2419 }
2420 } else {
2421 }
2422 } else {
2423 }
2424 {
2425 var256 = model__MClassDef__is_intro(var_mclassdef);
2426 }
2427 if (var256){
2428 {
2429 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
2430 var259 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
2431 if (unlikely(var259 == NULL)) {
2432 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2433 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
2434 show_backtrace(1);
2435 }
2436 var257 = var259;
2437 RET_LABEL258:(void)0;
2438 }
2439 }
2440 if (varonce260) {
2441 var261 = varonce260;
2442 } else {
2443 var262 = " introduces new ";
2444 var263 = 16;
2445 var264 = string__NativeString__to_s_with_length(var262, var263);
2446 var261 = var264;
2447 varonce260 = var261;
2448 }
2449 {
2450 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2451 var267 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:nullable MClass(MClass)> */
2452 if (unlikely(var267 == NULL)) {
2453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2454 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
2455 show_backtrace(1);
2456 }
2457 var265 = var267;
2458 RET_LABEL266:(void)0;
2459 }
2460 }
2461 if (varonce268) {
2462 var269 = varonce268;
2463 } else {
2464 var270 = " ";
2465 var271 = 1;
2466 var272 = string__NativeString__to_s_with_length(var270, var271);
2467 var269 = var272;
2468 varonce268 = var269;
2469 }
2470 {
2471 var273 = model__MClass__full_name(var_mclass);
2472 }
2473 var274 = NEW_array__Array(&type_array__Arraykernel__Object);
2474 { /* var274 = array_instance Array[Object] */
2475 var275 = 5;
2476 var276 = NEW_array__NativeArray(var275, &type_array__NativeArraykernel__Object);
2477 ((struct instance_array__NativeArray*)var276)->values[0] = (val*) var_mclassdef;
2478 ((struct instance_array__NativeArray*)var276)->values[1] = (val*) var261;
2479 ((struct instance_array__NativeArray*)var276)->values[2] = (val*) var265;
2480 ((struct instance_array__NativeArray*)var276)->values[3] = (val*) var269;
2481 ((struct instance_array__NativeArray*)var276)->values[4] = (val*) var273;
2482 {
2483 ((void (*)(val*, val*, long))(var274->class->vft[COLOR_array__Array__with_native]))(var274, var276, var275) /* with_native on <var274:Array[Object]>*/;
2484 }
2485 }
2486 {
2487 var277 = ((val* (*)(val*))(var274->class->vft[COLOR_string__Object__to_s]))(var274) /* to_s on <var274:Array[Object]>*/;
2488 }
2489 var278 = 3;
2490 {
2491 toolcontext__ToolContext__info(var257, var277, var278); /* Direct call toolcontext#ToolContext#info on <var257:ToolContext>*/
2492 }
2493 } else {
2494 {
2495 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
2496 var281 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
2497 if (unlikely(var281 == NULL)) {
2498 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2499 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
2500 show_backtrace(1);
2501 }
2502 var279 = var281;
2503 RET_LABEL280:(void)0;
2504 }
2505 }
2506 if (varonce282) {
2507 var283 = varonce282;
2508 } else {
2509 var284 = " refine ";
2510 var285 = 8;
2511 var286 = string__NativeString__to_s_with_length(var284, var285);
2512 var283 = var286;
2513 varonce282 = var283;
2514 }
2515 {
2516 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2517 var289 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:nullable MClass(MClass)> */
2518 if (unlikely(var289 == NULL)) {
2519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2520 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
2521 show_backtrace(1);
2522 }
2523 var287 = var289;
2524 RET_LABEL288:(void)0;
2525 }
2526 }
2527 if (varonce290) {
2528 var291 = varonce290;
2529 } else {
2530 var292 = " ";
2531 var293 = 1;
2532 var294 = string__NativeString__to_s_with_length(var292, var293);
2533 var291 = var294;
2534 varonce290 = var291;
2535 }
2536 {
2537 var295 = model__MClass__full_name(var_mclass);
2538 }
2539 var296 = NEW_array__Array(&type_array__Arraykernel__Object);
2540 { /* var296 = array_instance Array[Object] */
2541 var297 = 5;
2542 var298 = NEW_array__NativeArray(var297, &type_array__NativeArraykernel__Object);
2543 ((struct instance_array__NativeArray*)var298)->values[0] = (val*) var_mclassdef;
2544 ((struct instance_array__NativeArray*)var298)->values[1] = (val*) var283;
2545 ((struct instance_array__NativeArray*)var298)->values[2] = (val*) var287;
2546 ((struct instance_array__NativeArray*)var298)->values[3] = (val*) var291;
2547 ((struct instance_array__NativeArray*)var298)->values[4] = (val*) var295;
2548 {
2549 ((void (*)(val*, val*, long))(var296->class->vft[COLOR_array__Array__with_native]))(var296, var298, var297) /* with_native on <var296:Array[Object]>*/;
2550 }
2551 }
2552 {
2553 var299 = ((val* (*)(val*))(var296->class->vft[COLOR_string__Object__to_s]))(var296) /* to_s on <var296:Array[Object]>*/;
2554 }
2555 var300 = 3;
2556 {
2557 toolcontext__ToolContext__info(var279, var299, var300); /* Direct call toolcontext#ToolContext#info on <var279:ToolContext>*/
2558 }
2559 }
2560 RET_LABEL:;
2561 }
2562 /* method modelize_class#ModelBuilder#build_a_mclassdef for (self: Object, AModule, AClassdef) */
2563 void VIRTUAL_modelize_class__ModelBuilder__build_a_mclassdef(val* self, val* p0, val* p1) {
2564 modelize_class__ModelBuilder__build_a_mclassdef(self, p0, p1); /* Direct call modelize_class#ModelBuilder#build_a_mclassdef on <self:Object(ModelBuilder)>*/
2565 RET_LABEL:;
2566 }
2567 /* method modelize_class#ModelBuilder#collect_a_mclassdef_inheritance for (self: ModelBuilder, AModule, AClassdef) */
2568 void modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(val* self, val* p0, val* p1) {
2569 val* var_nmodule /* var nmodule: AModule */;
2570 val* var_nclassdef /* var nclassdef: AClassdef */;
2571 val* var /* : nullable MModule */;
2572 val* var2 /* : nullable MModule */;
2573 val* var_mmodule /* var mmodule: MModule */;
2574 static val* varonce;
2575 val* var3 /* : String */;
2576 char* var4 /* : NativeString */;
2577 long var5 /* : Int */;
2578 val* var6 /* : FlatString */;
2579 val* var7 /* : nullable MClass */;
2580 val* var_objectclass /* var objectclass: nullable MClass */;
2581 static val* varonce8;
2582 val* var9 /* : String */;
2583 char* var10 /* : NativeString */;
2584 long var11 /* : Int */;
2585 val* var12 /* : FlatString */;
2586 val* var13 /* : nullable MClass */;
2587 val* var_pointerclass /* var pointerclass: nullable MClass */;
2588 val* var14 /* : nullable MClass */;
2589 val* var16 /* : nullable MClass */;
2590 val* var_mclass /* var mclass: MClass */;
2591 val* var17 /* : nullable MClassDef */;
2592 val* var19 /* : nullable MClassDef */;
2593 val* var_mclassdef /* var mclassdef: MClassDef */;
2594 short int var20 /* : Bool */;
2595 short int var_specobject /* var specobject: Bool */;
2596 short int var21 /* : Bool */;
2597 short int var_specpointer /* var specpointer: Bool */;
2598 val* var22 /* : Array[MClassType] */;
2599 val* var_supertypes /* var supertypes: Array[MClassType] */;
2600 short int var23 /* : Bool */;
2601 int cltype;
2602 int idtype;
2603 val* var24 /* : ANodes[ASuperclass] */;
2604 val* var26 /* : ANodes[ASuperclass] */;
2605 val* var27 /* : Iterator[ANode] */;
2606 short int var28 /* : Bool */;
2607 val* var29 /* : nullable Object */;
2608 val* var_nsc /* var nsc: ASuperclass */;
2609 short int var30 /* : Bool */;
2610 val* var31 /* : AType */;
2611 val* var_ntype /* var ntype: AType */;
2612 short int var32 /* : Bool */;
2613 val* var33 /* : nullable MType */;
2614 val* var_mtype /* var mtype: nullable MType */;
2615 val* var34 /* : null */;
2616 short int var35 /* : Bool */;
2617 short int var36 /* : Bool */;
2618 val* var_other /* var other: nullable Object */;
2619 short int var38 /* : Bool */;
2620 short int var40 /* : Bool */;
2621 short int var41 /* : Bool */;
2622 int cltype42;
2623 int idtype43;
2624 short int var44 /* : Bool */;
2625 static val* varonce45;
2626 val* var46 /* : String */;
2627 char* var47 /* : NativeString */;
2628 long var48 /* : Int */;
2629 val* var49 /* : FlatString */;
2630 val* var50 /* : MClassKind */;
2631 val* var52 /* : MClassKind */;
2632 val* var53 /* : MClass */;
2633 val* var55 /* : MClass */;
2634 val* var56 /* : MClassKind */;
2635 val* var58 /* : MClassKind */;
2636 short int var59 /* : Bool */;
2637 short int var60 /* : Bool */;
2638 static val* varonce61;
2639 val* var62 /* : String */;
2640 char* var63 /* : NativeString */;
2641 long var64 /* : Int */;
2642 val* var65 /* : FlatString */;
2643 val* var66 /* : MClassKind */;
2644 val* var68 /* : MClassKind */;
2645 static val* varonce69;
2646 val* var70 /* : String */;
2647 char* var71 /* : NativeString */;
2648 long var72 /* : Int */;
2649 val* var73 /* : FlatString */;
2650 static val* varonce74;
2651 val* var75 /* : String */;
2652 char* var76 /* : NativeString */;
2653 long var77 /* : Int */;
2654 val* var78 /* : FlatString */;
2655 val* var79 /* : MClass */;
2656 val* var81 /* : MClass */;
2657 val* var82 /* : MClassKind */;
2658 val* var84 /* : MClassKind */;
2659 static val* varonce85;
2660 val* var86 /* : String */;
2661 char* var87 /* : NativeString */;
2662 long var88 /* : Int */;
2663 val* var89 /* : FlatString */;
2664 val* var90 /* : MClass */;
2665 val* var92 /* : MClass */;
2666 val* var93 /* : Array[Object] */;
2667 long var94 /* : Int */;
2668 val* var95 /* : NativeArray[Object] */;
2669 val* var96 /* : String */;
2670 val* var97 /* : MClass */;
2671 val* var99 /* : MClass */;
2672 val* var100 /* : MClassKind */;
2673 val* var102 /* : MClassKind */;
2674 val* var103 /* : MClassKind */;
2675 short int var104 /* : Bool */;
2676 short int var105 /* : Bool */;
2677 short int var107 /* : Bool */;
2678 short int var109 /* : Bool */;
2679 short int var110 /* : Bool */;
2680 short int var111 /* : Bool */;
2681 short int var112 /* : Bool */;
2682 short int var_ /* var : Bool */;
2683 val* var113 /* : null */;
2684 short int var114 /* : Bool */;
2685 short int var115 /* : Bool */;
2686 val* var_other117 /* var other: nullable Object */;
2687 short int var118 /* : Bool */;
2688 short int var119 /* : Bool */;
2689 short int var120 /* : Bool */;
2690 short int var121 /* : Bool */;
2691 val* var122 /* : MClassKind */;
2692 val* var124 /* : MClassKind */;
2693 val* var125 /* : MClassKind */;
2694 short int var126 /* : Bool */;
2695 short int var127 /* : Bool */;
2696 short int var129 /* : Bool */;
2697 short int var131 /* : Bool */;
2698 short int var_132 /* var : Bool */;
2699 val* var133 /* : String */;
2700 val* var135 /* : String */;
2701 static val* varonce136;
2702 val* var137 /* : String */;
2703 char* var138 /* : NativeString */;
2704 long var139 /* : Int */;
2705 val* var140 /* : FlatString */;
2706 short int var141 /* : Bool */;
2707 short int var142 /* : Bool */;
2708 short int var144 /* : Bool */;
2709 short int var145 /* : Bool */;
2710 short int var146 /* : Bool */;
2711 val* var147 /* : MClassType */;
2712 val* var149 /* : MClassType */;
2713 short int var150 /* : Bool */;
2714 short int var_151 /* var : Bool */;
2715 val* var152 /* : String */;
2716 val* var154 /* : String */;
2717 static val* varonce155;
2718 val* var156 /* : String */;
2719 char* var157 /* : NativeString */;
2720 long var158 /* : Int */;
2721 val* var159 /* : FlatString */;
2722 short int var160 /* : Bool */;
2723 short int var161 /* : Bool */;
2724 short int var163 /* : Bool */;
2725 short int var164 /* : Bool */;
2726 short int var165 /* : Bool */;
2727 val* var166 /* : MClassType */;
2728 val* var168 /* : MClassType */;
2729 short int var169 /* : Bool */;
2730 short int var170 /* : Bool */;
2731 val* var171 /* : ToolContext */;
2732 val* var173 /* : ToolContext */;
2733 static val* varonce174;
2734 val* var175 /* : String */;
2735 char* var176 /* : NativeString */;
2736 long var177 /* : Int */;
2737 val* var178 /* : FlatString */;
2738 static val* varonce179;
2739 val* var180 /* : String */;
2740 char* var181 /* : NativeString */;
2741 long var182 /* : Int */;
2742 val* var183 /* : FlatString */;
2743 val* var184 /* : String */;
2744 val* var185 /* : Array[Object] */;
2745 long var186 /* : Int */;
2746 val* var187 /* : NativeArray[Object] */;
2747 val* var188 /* : String */;
2748 long var189 /* : Int */;
2749 var_nmodule = p0;
2750 var_nclassdef = p1;
2751 {
2752 { /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
2753 var2 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
2754 var = var2;
2755 RET_LABEL1:(void)0;
2756 }
2757 }
2758 if (unlikely(var == NULL)) {
2759 PRINT_ERROR("Runtime error: %s", "Cast failed");
2760 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 198);
2761 show_backtrace(1);
2762 }
2763 var_mmodule = var;
2764 if (varonce) {
2765 var3 = varonce;
2766 } else {
2767 var4 = "Object";
2768 var5 = 6;
2769 var6 = string__NativeString__to_s_with_length(var4, var5);
2770 var3 = var6;
2771 varonce = var3;
2772 }
2773 {
2774 var7 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_nmodule, var_mmodule, var3);
2775 }
2776 var_objectclass = var7;
2777 if (varonce8) {
2778 var9 = varonce8;
2779 } else {
2780 var10 = "Pointer";
2781 var11 = 7;
2782 var12 = string__NativeString__to_s_with_length(var10, var11);
2783 var9 = var12;
2784 varonce8 = var9;
2785 }
2786 {
2787 var13 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_nmodule, var_mmodule, var9);
2788 }
2789 var_pointerclass = var13;
2790 {
2791 { /* Inline modelize_class#AClassdef#mclass (var_nclassdef) on <var_nclassdef:AClassdef> */
2792 var16 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclass].val; /* _mclass on <var_nclassdef:AClassdef> */
2793 var14 = var16;
2794 RET_LABEL15:(void)0;
2795 }
2796 }
2797 if (unlikely(var14 == NULL)) {
2798 PRINT_ERROR("Runtime error: %s", "Cast failed");
2799 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 201);
2800 show_backtrace(1);
2801 }
2802 var_mclass = var14;
2803 {
2804 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef> */
2805 var19 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef> */
2806 var17 = var19;
2807 RET_LABEL18:(void)0;
2808 }
2809 }
2810 if (unlikely(var17 == NULL)) {
2811 PRINT_ERROR("Runtime error: %s", "Cast failed");
2812 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 202);
2813 show_backtrace(1);
2814 }
2815 var_mclassdef = var17;
2816 var20 = 1;
2817 var_specobject = var20;
2818 var21 = 1;
2819 var_specpointer = var21;
2820 var22 = NEW_array__Array(&type_array__Arraymodel__MClassType);
2821 {
2822 array__Array__init(var22); /* Direct call array#Array#init on <var22:Array[MClassType]>*/
2823 }
2824 var_supertypes = var22;
2825 /* <var_nclassdef:AClassdef> isa AStdClassdef */
2826 cltype = type_parser_nodes__AStdClassdef.color;
2827 idtype = type_parser_nodes__AStdClassdef.id;
2828 if(cltype >= var_nclassdef->type->table_size) {
2829 var23 = 0;
2830 } else {
2831 var23 = var_nclassdef->type->type_table[cltype] == idtype;
2832 }
2833 if (var23){
2834 {
2835 { /* Inline parser_nodes#AStdClassdef#n_superclasses (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
2836 var26 = var_nclassdef->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <var_nclassdef:AClassdef(AStdClassdef)> */
2837 if (unlikely(var26 == NULL)) {
2838 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_superclasses");
2839 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 828);
2840 show_backtrace(1);
2841 }
2842 var24 = var26;
2843 RET_LABEL25:(void)0;
2844 }
2845 }
2846 {
2847 var27 = parser_nodes__ANodes__iterator(var24);
2848 }
2849 for(;;) {
2850 {
2851 var28 = ((short int (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var27) /* is_ok on <var27:Iterator[ANode]>*/;
2852 }
2853 if(!var28) break;
2854 {
2855 var29 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__item]))(var27) /* item on <var27:Iterator[ANode]>*/;
2856 }
2857 var_nsc = var29;
2858 var30 = 0;
2859 var_specobject = var30;
2860 {
2861 var31 = parser_nodes__ASuperclass__n_type(var_nsc);
2862 }
2863 var_ntype = var31;
2864 var32 = 0;
2865 {
2866 var33 = modelize_class__ModelBuilder__resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_ntype, var32);
2867 }
2868 var_mtype = var33;
2869 var34 = NULL;
2870 if (var_mtype == NULL) {
2871 var35 = 1; /* is null */
2872 } else {
2873 var35 = 0; /* arg is null but recv is not */
2874 }
2875 if (0) {
2876 { /* Inline kernel#Object#== (var_mtype,var34) on <var_mtype:nullable MType> */
2877 var_other = var34;
2878 {
2879 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
2880 var40 = var_mtype == var_other;
2881 var38 = var40;
2882 goto RET_LABEL39;
2883 RET_LABEL39:(void)0;
2884 }
2885 }
2886 var36 = var38;
2887 goto RET_LABEL37;
2888 RET_LABEL37:(void)0;
2889 }
2890 var35 = var36;
2891 }
2892 if (var35){
2893 goto CONTINUE_label;
2894 } else {
2895 }
2896 /* <var_mtype:nullable MType(MType)> isa MClassType */
2897 cltype42 = type_model__MClassType.color;
2898 idtype43 = type_model__MClassType.id;
2899 if(cltype42 >= var_mtype->type->table_size) {
2900 var41 = 0;
2901 } else {
2902 var41 = var_mtype->type->type_table[cltype42] == idtype43;
2903 }
2904 var44 = !var41;
2905 if (var44){
2906 if (varonce45) {
2907 var46 = varonce45;
2908 } else {
2909 var47 = "Error: supertypes cannot be a formal type";
2910 var48 = 41;
2911 var49 = string__NativeString__to_s_with_length(var47, var48);
2912 var46 = var49;
2913 varonce45 = var46;
2914 }
2915 {
2916 modelbuilder__ModelBuilder__error(self, var_ntype, var46); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
2917 }
2918 goto RET_LABEL;
2919 } else {
2920 }
2921 {
2922 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
2923 var52 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:MClass> */
2924 if (unlikely(var52 == NULL)) {
2925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2926 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
2927 show_backtrace(1);
2928 }
2929 var50 = var52;
2930 RET_LABEL51:(void)0;
2931 }
2932 }
2933 {
2934 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MType(MClassType)> */
2935 var55 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MClassType)> */
2936 if (unlikely(var55 == NULL)) {
2937 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2938 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
2939 show_backtrace(1);
2940 }
2941 var53 = var55;
2942 RET_LABEL54:(void)0;
2943 }
2944 }
2945 {
2946 { /* Inline model#MClass#kind (var53) on <var53:MClass> */
2947 var58 = var53->attrs[COLOR_model__MClass___kind].val; /* _kind on <var53:MClass> */
2948 if (unlikely(var58 == NULL)) {
2949 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2950 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
2951 show_backtrace(1);
2952 }
2953 var56 = var58;
2954 RET_LABEL57:(void)0;
2955 }
2956 }
2957 {
2958 var59 = model__MClassKind__can_specialize(var50, var56);
2959 }
2960 var60 = !var59;
2961 if (var60){
2962 if (varonce61) {
2963 var62 = varonce61;
2964 } else {
2965 var63 = "Error: ";
2966 var64 = 7;
2967 var65 = string__NativeString__to_s_with_length(var63, var64);
2968 var62 = var65;
2969 varonce61 = var62;
2970 }
2971 {
2972 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
2973 var68 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:MClass> */
2974 if (unlikely(var68 == NULL)) {
2975 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2976 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
2977 show_backtrace(1);
2978 }
2979 var66 = var68;
2980 RET_LABEL67:(void)0;
2981 }
2982 }
2983 if (varonce69) {
2984 var70 = varonce69;
2985 } else {
2986 var71 = " ";
2987 var72 = 1;
2988 var73 = string__NativeString__to_s_with_length(var71, var72);
2989 var70 = var73;
2990 varonce69 = var70;
2991 }
2992 if (varonce74) {
2993 var75 = varonce74;
2994 } else {
2995 var76 = " cannot specialize ";
2996 var77 = 19;
2997 var78 = string__NativeString__to_s_with_length(var76, var77);
2998 var75 = var78;
2999 varonce74 = var75;
3000 }
3001 {
3002 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MType(MClassType)> */
3003 var81 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MClassType)> */
3004 if (unlikely(var81 == NULL)) {
3005 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3006 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
3007 show_backtrace(1);
3008 }
3009 var79 = var81;
3010 RET_LABEL80:(void)0;
3011 }
3012 }
3013 {
3014 { /* Inline model#MClass#kind (var79) on <var79:MClass> */
3015 var84 = var79->attrs[COLOR_model__MClass___kind].val; /* _kind on <var79:MClass> */
3016 if (unlikely(var84 == NULL)) {
3017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3018 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
3019 show_backtrace(1);
3020 }
3021 var82 = var84;
3022 RET_LABEL83:(void)0;
3023 }
3024 }
3025 if (varonce85) {
3026 var86 = varonce85;
3027 } else {
3028 var87 = " ";
3029 var88 = 1;
3030 var89 = string__NativeString__to_s_with_length(var87, var88);
3031 var86 = var89;
3032 varonce85 = var86;
3033 }
3034 {
3035 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MType(MClassType)> */
3036 var92 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MClassType)> */
3037 if (unlikely(var92 == NULL)) {
3038 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3039 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
3040 show_backtrace(1);
3041 }
3042 var90 = var92;
3043 RET_LABEL91:(void)0;
3044 }
3045 }
3046 var93 = NEW_array__Array(&type_array__Arraykernel__Object);
3047 { /* var93 = array_instance Array[Object] */
3048 var94 = 8;
3049 var95 = NEW_array__NativeArray(var94, &type_array__NativeArraykernel__Object);
3050 ((struct instance_array__NativeArray*)var95)->values[0] = (val*) var62;
3051 ((struct instance_array__NativeArray*)var95)->values[1] = (val*) var66;
3052 ((struct instance_array__NativeArray*)var95)->values[2] = (val*) var70;
3053 ((struct instance_array__NativeArray*)var95)->values[3] = (val*) var_mclass;
3054 ((struct instance_array__NativeArray*)var95)->values[4] = (val*) var75;
3055 ((struct instance_array__NativeArray*)var95)->values[5] = (val*) var82;
3056 ((struct instance_array__NativeArray*)var95)->values[6] = (val*) var86;
3057 ((struct instance_array__NativeArray*)var95)->values[7] = (val*) var90;
3058 {
3059 ((void (*)(val*, val*, long))(var93->class->vft[COLOR_array__Array__with_native]))(var93, var95, var94) /* with_native on <var93:Array[Object]>*/;
3060 }
3061 }
3062 {
3063 var96 = ((val* (*)(val*))(var93->class->vft[COLOR_string__Object__to_s]))(var93) /* to_s on <var93:Array[Object]>*/;
3064 }
3065 {
3066 modelbuilder__ModelBuilder__error(self, var_ntype, var96); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
3067 }
3068 } else {
3069 }
3070 {
3071 array__Array__add(var_supertypes, var_mtype); /* Direct call array#Array#add on <var_supertypes:Array[MClassType]>*/
3072 }
3073 {
3074 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MType(MClassType)> */
3075 var99 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MClassType)> */
3076 if (unlikely(var99 == NULL)) {
3077 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3078 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
3079 show_backtrace(1);
3080 }
3081 var97 = var99;
3082 RET_LABEL98:(void)0;
3083 }
3084 }
3085 {
3086 { /* Inline model#MClass#kind (var97) on <var97:MClass> */
3087 var102 = var97->attrs[COLOR_model__MClass___kind].val; /* _kind on <var97:MClass> */
3088 if (unlikely(var102 == NULL)) {
3089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3090 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
3091 show_backtrace(1);
3092 }
3093 var100 = var102;
3094 RET_LABEL101:(void)0;
3095 }
3096 }
3097 {
3098 var103 = model__Object__extern_kind(self);
3099 }
3100 {
3101 { /* Inline kernel#Object#== (var100,var103) on <var100:MClassKind> */
3102 var_other = var103;
3103 {
3104 { /* Inline kernel#Object#is_same_instance (var100,var_other) on <var100:MClassKind> */
3105 var109 = var100 == var_other;
3106 var107 = var109;
3107 goto RET_LABEL108;
3108 RET_LABEL108:(void)0;
3109 }
3110 }
3111 var105 = var107;
3112 goto RET_LABEL106;
3113 RET_LABEL106:(void)0;
3114 }
3115 var104 = var105;
3116 }
3117 if (var104){
3118 var110 = 0;
3119 var_specpointer = var110;
3120 } else {
3121 }
3122 CONTINUE_label: (void)0;
3123 {
3124 ((void (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__next]))(var27) /* next on <var27:Iterator[ANode]>*/;
3125 }
3126 }
3127 BREAK_label: (void)0;
3128 } else {
3129 }
3130 {
3131 var112 = model__MClassDef__is_intro(var_mclassdef);
3132 }
3133 var_ = var112;
3134 if (var112){
3135 var113 = NULL;
3136 if (var_objectclass == NULL) {
3137 var114 = 0; /* is null */
3138 } else {
3139 var114 = 1; /* arg is null and recv is not */
3140 }
3141 if (0) {
3142 { /* Inline kernel#Object#!= (var_objectclass,var113) on <var_objectclass:nullable MClass> */
3143 var_other117 = var113;
3144 {
3145 var119 = ((short int (*)(val*, val*))(var_objectclass->class->vft[COLOR_kernel__Object___61d_61d]))(var_objectclass, var_other117) /* == on <var_objectclass:nullable MClass(MClass)>*/;
3146 var118 = var119;
3147 }
3148 var120 = !var118;
3149 var115 = var120;
3150 goto RET_LABEL116;
3151 RET_LABEL116:(void)0;
3152 }
3153 var114 = var115;
3154 }
3155 var111 = var114;
3156 } else {
3157 var111 = var_;
3158 }
3159 if (var111){
3160 {
3161 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
3162 var124 = var_mclass->attrs[COLOR_model__MClass___kind].val; /* _kind on <var_mclass:MClass> */
3163 if (unlikely(var124 == NULL)) {
3164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3165 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
3166 show_backtrace(1);
3167 }
3168 var122 = var124;
3169 RET_LABEL123:(void)0;
3170 }
3171 }
3172 {
3173 var125 = model__Object__extern_kind(self);
3174 }
3175 {
3176 { /* Inline kernel#Object#== (var122,var125) on <var122:MClassKind> */
3177 var_other = var125;
3178 {
3179 { /* Inline kernel#Object#is_same_instance (var122,var_other) on <var122:MClassKind> */
3180 var131 = var122 == var_other;
3181 var129 = var131;
3182 goto RET_LABEL130;
3183 RET_LABEL130:(void)0;
3184 }
3185 }
3186 var127 = var129;
3187 goto RET_LABEL128;
3188 RET_LABEL128:(void)0;
3189 }
3190 var126 = var127;
3191 }
3192 var_132 = var126;
3193 if (var126){
3194 {
3195 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
3196 var135 = var_mclass->attrs[COLOR_model__MClass___name].val; /* _name on <var_mclass:MClass> */
3197 if (unlikely(var135 == NULL)) {
3198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3199 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
3200 show_backtrace(1);
3201 }
3202 var133 = var135;
3203 RET_LABEL134:(void)0;
3204 }
3205 }
3206 if (varonce136) {
3207 var137 = varonce136;
3208 } else {
3209 var138 = "Pointer";
3210 var139 = 7;
3211 var140 = string__NativeString__to_s_with_length(var138, var139);
3212 var137 = var140;
3213 varonce136 = var137;
3214 }
3215 {
3216 { /* Inline kernel#Object#!= (var133,var137) on <var133:String> */
3217 var_other117 = var137;
3218 {
3219 var145 = ((short int (*)(val*, val*))(var133->class->vft[COLOR_kernel__Object___61d_61d]))(var133, var_other117) /* == on <var133:String>*/;
3220 var144 = var145;
3221 }
3222 var146 = !var144;
3223 var142 = var146;
3224 goto RET_LABEL143;
3225 RET_LABEL143:(void)0;
3226 }
3227 var141 = var142;
3228 }
3229 var121 = var141;
3230 } else {
3231 var121 = var_132;
3232 }
3233 if (var121){
3234 if (var_specpointer){
3235 if (var_pointerclass == NULL) {
3236 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3237 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 234);
3238 show_backtrace(1);
3239 } else {
3240 { /* Inline model#MClass#mclass_type (var_pointerclass) on <var_pointerclass:nullable MClass> */
3241 if (unlikely(var_pointerclass == NULL)) {
3242 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3243 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
3244 show_backtrace(1);
3245 }
3246 var149 = var_pointerclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_pointerclass:nullable MClass> */
3247 if (unlikely(var149 == NULL)) {
3248 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
3249 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
3250 show_backtrace(1);
3251 }
3252 var147 = var149;
3253 RET_LABEL148:(void)0;
3254 }
3255 }
3256 {
3257 array__Array__add(var_supertypes, var147); /* Direct call array#Array#add on <var_supertypes:Array[MClassType]>*/
3258 }
3259 } else {
3260 }
3261 } else {
3262 var_151 = var_specobject;
3263 if (var_specobject){
3264 {
3265 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
3266 var154 = var_mclass->attrs[COLOR_model__MClass___name].val; /* _name on <var_mclass:MClass> */
3267 if (unlikely(var154 == NULL)) {
3268 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3269 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
3270 show_backtrace(1);
3271 }
3272 var152 = var154;
3273 RET_LABEL153:(void)0;
3274 }
3275 }
3276 if (varonce155) {
3277 var156 = varonce155;
3278 } else {
3279 var157 = "Object";
3280 var158 = 6;
3281 var159 = string__NativeString__to_s_with_length(var157, var158);
3282 var156 = var159;
3283 varonce155 = var156;
3284 }
3285 {
3286 { /* Inline kernel#Object#!= (var152,var156) on <var152:String> */
3287 var_other117 = var156;
3288 {
3289 var164 = ((short int (*)(val*, val*))(var152->class->vft[COLOR_kernel__Object___61d_61d]))(var152, var_other117) /* == on <var152:String>*/;
3290 var163 = var164;
3291 }
3292 var165 = !var163;
3293 var161 = var165;
3294 goto RET_LABEL162;
3295 RET_LABEL162:(void)0;
3296 }
3297 var160 = var161;
3298 }
3299 var150 = var160;
3300 } else {
3301 var150 = var_151;
3302 }
3303 if (var150){
3304 {
3305 { /* Inline model#MClass#mclass_type (var_objectclass) on <var_objectclass:nullable MClass(MClass)> */
3306 var168 = var_objectclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_objectclass:nullable MClass(MClass)> */
3307 if (unlikely(var168 == NULL)) {
3308 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
3309 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
3310 show_backtrace(1);
3311 }
3312 var166 = var168;
3313 RET_LABEL167:(void)0;
3314 }
3315 }
3316 {
3317 array__Array__add(var_supertypes, var166); /* Direct call array#Array#add on <var_supertypes:Array[MClassType]>*/
3318 }
3319 } else {
3320 }
3321 }
3322 } else {
3323 }
3324 {
3325 model__MClassDef__set_supertypes(var_mclassdef, var_supertypes); /* Direct call model#MClassDef#set_supertypes on <var_mclassdef:MClassDef>*/
3326 }
3327 {
3328 var169 = array__AbstractArrayRead__is_empty(var_supertypes);
3329 }
3330 var170 = !var169;
3331 if (var170){
3332 {
3333 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3334 var173 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3335 if (unlikely(var173 == NULL)) {
3336 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3337 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
3338 show_backtrace(1);
3339 }
3340 var171 = var173;
3341 RET_LABEL172:(void)0;
3342 }
3343 }
3344 if (varonce174) {
3345 var175 = varonce174;
3346 } else {
3347 var176 = " new super-types: ";
3348 var177 = 18;
3349 var178 = string__NativeString__to_s_with_length(var176, var177);
3350 var175 = var178;
3351 varonce174 = var175;
3352 }
3353 if (varonce179) {
3354 var180 = varonce179;
3355 } else {
3356 var181 = ", ";
3357 var182 = 2;
3358 var183 = string__NativeString__to_s_with_length(var181, var182);
3359 var180 = var183;
3360 varonce179 = var180;
3361 }
3362 {
3363 var184 = string__Collection__join(var_supertypes, var180);
3364 }
3365 var185 = NEW_array__Array(&type_array__Arraykernel__Object);
3366 { /* var185 = array_instance Array[Object] */
3367 var186 = 3;
3368 var187 = NEW_array__NativeArray(var186, &type_array__NativeArraykernel__Object);
3369 ((struct instance_array__NativeArray*)var187)->values[0] = (val*) var_mclassdef;
3370 ((struct instance_array__NativeArray*)var187)->values[1] = (val*) var175;
3371 ((struct instance_array__NativeArray*)var187)->values[2] = (val*) var184;
3372 {
3373 ((void (*)(val*, val*, long))(var185->class->vft[COLOR_array__Array__with_native]))(var185, var187, var186) /* with_native on <var185:Array[Object]>*/;
3374 }
3375 }
3376 {
3377 var188 = ((val* (*)(val*))(var185->class->vft[COLOR_string__Object__to_s]))(var185) /* to_s on <var185:Array[Object]>*/;
3378 }
3379 var189 = 3;
3380 {
3381 toolcontext__ToolContext__info(var171, var188, var189); /* Direct call toolcontext#ToolContext#info on <var171:ToolContext>*/
3382 }
3383 } else {
3384 }
3385 RET_LABEL:;
3386 }
3387 /* method modelize_class#ModelBuilder#collect_a_mclassdef_inheritance for (self: Object, AModule, AClassdef) */
3388 void VIRTUAL_modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(val* self, val* p0, val* p1) {
3389 modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(self, p0, p1); /* Direct call modelize_class#ModelBuilder#collect_a_mclassdef_inheritance on <self:Object(ModelBuilder)>*/
3390 RET_LABEL:;
3391 }
3392 /* method modelize_class#ModelBuilder#check_supertypes for (self: ModelBuilder, AModule, AClassdef) */
3393 void modelize_class__ModelBuilder__check_supertypes(val* self, val* p0, val* p1) {
3394 val* var_nmodule /* var nmodule: AModule */;
3395 val* var_nclassdef /* var nclassdef: AClassdef */;
3396 val* var /* : nullable MModule */;
3397 val* var2 /* : nullable MModule */;
3398 val* var_mmodule /* var mmodule: MModule */;
3399 static val* varonce;
3400 val* var3 /* : String */;
3401 char* var4 /* : NativeString */;
3402 long var5 /* : Int */;
3403 val* var6 /* : FlatString */;
3404 val* var7 /* : nullable MClass */;
3405 val* var_objectclass /* var objectclass: nullable MClass */;
3406 val* var8 /* : nullable MClass */;
3407 val* var10 /* : nullable MClass */;
3408 val* var_mclass /* var mclass: MClass */;
3409 val* var11 /* : nullable MClassDef */;
3410 val* var13 /* : nullable MClassDef */;
3411 val* var_mclassdef /* var mclassdef: MClassDef */;
3412 val* var14 /* : Array[MClassType] */;
3413 val* var16 /* : Array[MClassType] */;
3414 val* var17 /* : ArrayIterator[nullable Object] */;
3415 short int var18 /* : Bool */;
3416 val* var19 /* : nullable Object */;
3417 val* var_s /* var s: MClassType */;
3418 val* var20 /* : MClassType */;
3419 val* var22 /* : MClassType */;
3420 val* var23 /* : MClassType */;
3421 val* var25 /* : MClassType */;
3422 short int var26 /* : Bool */;
3423 static val* varonce27;
3424 val* var28 /* : String */;
3425 char* var29 /* : NativeString */;
3426 long var30 /* : Int */;
3427 val* var31 /* : FlatString */;
3428 static val* varonce32;
3429 val* var33 /* : String */;
3430 char* var34 /* : NativeString */;
3431 long var35 /* : Int */;
3432 val* var36 /* : FlatString */;
3433 val* var37 /* : Array[Object] */;
3434 long var38 /* : Int */;
3435 val* var39 /* : NativeArray[Object] */;
3436 val* var40 /* : String */;
3437 var_nmodule = p0;
3438 var_nclassdef = p1;
3439 {
3440 { /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
3441 var2 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
3442 var = var2;
3443 RET_LABEL1:(void)0;
3444 }
3445 }
3446 if (unlikely(var == NULL)) {
3447 PRINT_ERROR("Runtime error: %s", "Cast failed");
3448 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 248);
3449 show_backtrace(1);
3450 }
3451 var_mmodule = var;
3452 if (varonce) {
3453 var3 = varonce;
3454 } else {
3455 var4 = "Object";
3456 var5 = 6;
3457 var6 = string__NativeString__to_s_with_length(var4, var5);
3458 var3 = var6;
3459 varonce = var3;
3460 }
3461 {
3462 var7 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_nmodule, var_mmodule, var3);
3463 }
3464 var_objectclass = var7;
3465 {
3466 { /* Inline modelize_class#AClassdef#mclass (var_nclassdef) on <var_nclassdef:AClassdef> */
3467 var10 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclass].val; /* _mclass on <var_nclassdef:AClassdef> */
3468 var8 = var10;
3469 RET_LABEL9:(void)0;
3470 }
3471 }
3472 if (unlikely(var8 == NULL)) {
3473 PRINT_ERROR("Runtime error: %s", "Cast failed");
3474 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 250);
3475 show_backtrace(1);
3476 }
3477 var_mclass = var8;
3478 {
3479 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef> */
3480 var13 = var_nclassdef->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef> */
3481 var11 = var13;
3482 RET_LABEL12:(void)0;
3483 }
3484 }
3485 if (unlikely(var11 == NULL)) {
3486 PRINT_ERROR("Runtime error: %s", "Cast failed");
3487 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 251);
3488 show_backtrace(1);
3489 }
3490 var_mclassdef = var11;
3491 {
3492 { /* Inline model#MClassDef#supertypes (var_mclassdef) on <var_mclassdef:MClassDef> */
3493 var16 = var_mclassdef->attrs[COLOR_model__MClassDef___supertypes].val; /* _supertypes on <var_mclassdef:MClassDef> */
3494 if (unlikely(var16 == NULL)) {
3495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes");
3496 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 517);
3497 show_backtrace(1);
3498 }
3499 var14 = var16;
3500 RET_LABEL15:(void)0;
3501 }
3502 }
3503 {
3504 var17 = array__AbstractArrayRead__iterator(var14);
3505 }
3506 for(;;) {
3507 {
3508 var18 = array__ArrayIterator__is_ok(var17);
3509 }
3510 if(!var18) break;
3511 {
3512 var19 = array__ArrayIterator__item(var17);
3513 }
3514 var_s = var19;
3515 {
3516 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
3517 var22 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
3518 if (unlikely(var22 == NULL)) {
3519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3520 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3521 show_backtrace(1);
3522 }
3523 var20 = var22;
3524 RET_LABEL21:(void)0;
3525 }
3526 }
3527 {
3528 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
3529 var25 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
3530 if (unlikely(var25 == NULL)) {
3531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3532 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3533 show_backtrace(1);
3534 }
3535 var23 = var25;
3536 RET_LABEL24:(void)0;
3537 }
3538 }
3539 {
3540 var26 = model__MType__is_subtype(var_s, var_mmodule, var20, var23);
3541 }
3542 if (var26){
3543 if (varonce27) {
3544 var28 = varonce27;
3545 } else {
3546 var29 = "Error: Inheritance loop for class ";
3547 var30 = 34;
3548 var31 = string__NativeString__to_s_with_length(var29, var30);
3549 var28 = var31;
3550 varonce27 = var28;
3551 }
3552 if (varonce32) {
3553 var33 = varonce32;
3554 } else {
3555 var34 = " with type ";
3556 var35 = 11;
3557 var36 = string__NativeString__to_s_with_length(var34, var35);
3558 var33 = var36;
3559 varonce32 = var33;
3560 }
3561 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
3562 { /* var37 = array_instance Array[Object] */
3563 var38 = 4;
3564 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
3565 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var28;
3566 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_mclass;
3567 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var33;
3568 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var_s;
3569 {
3570 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
3571 }
3572 }
3573 {
3574 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
3575 }
3576 {
3577 modelbuilder__ModelBuilder__error(self, var_nclassdef, var40); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
3578 }
3579 } else {
3580 }
3581 CONTINUE_label: (void)0;
3582 {
3583 array__ArrayIterator__next(var17); /* Direct call array#ArrayIterator#next on <var17:ArrayIterator[nullable Object]>*/
3584 }
3585 }
3586 BREAK_label: (void)0;
3587 RET_LABEL:;
3588 }
3589 /* method modelize_class#ModelBuilder#check_supertypes for (self: Object, AModule, AClassdef) */
3590 void VIRTUAL_modelize_class__ModelBuilder__check_supertypes(val* self, val* p0, val* p1) {
3591 modelize_class__ModelBuilder__check_supertypes(self, p0, p1); /* Direct call modelize_class#ModelBuilder#check_supertypes on <self:Object(ModelBuilder)>*/
3592 RET_LABEL:;
3593 }
3594 /* method modelize_class#ModelBuilder#build_classes for (self: ModelBuilder, AModule) */
3595 void modelize_class__ModelBuilder__build_classes(val* self, val* p0) {
3596 val* var_nmodule /* var nmodule: AModule */;
3597 val* var /* : ToolContext */;
3598 val* var2 /* : ToolContext */;
3599 long var3 /* : Int */;
3600 long var5 /* : Int */;
3601 long var_errcount /* var errcount: Int */;
3602 short int var6 /* : Bool */;
3603 short int var8 /* : Bool */;
3604 short int var9 /* : Bool */;
3605 val* var11 /* : nullable MModule */;
3606 val* var13 /* : nullable MModule */;
3607 val* var_mmodule /* var mmodule: MModule */;
3608 val* var14 /* : POSetElement[MModule] */;
3609 val* var16 /* : POSetElement[MModule] */;
3610 val* var17 /* : Collection[Object] */;
3611 val* var18 /* : Iterator[nullable Object] */;
3612 short int var19 /* : Bool */;
3613 val* var20 /* : nullable Object */;
3614 val* var_imp /* var imp: MModule */;
3615 val* var21 /* : HashMap[MModule, AModule] */;
3616 val* var23 /* : HashMap[MModule, AModule] */;
3617 short int var24 /* : Bool */;
3618 short int var25 /* : Bool */;
3619 val* var26 /* : HashMap[MModule, AModule] */;
3620 val* var28 /* : HashMap[MModule, AModule] */;
3621 val* var29 /* : nullable Object */;
3622 val* var30 /* : ToolContext */;
3623 val* var32 /* : ToolContext */;
3624 long var33 /* : Int */;
3625 long var35 /* : Int */;
3626 short int var36 /* : Bool */;
3627 short int var37 /* : Bool */;
3628 short int var39 /* : Bool */;
3629 short int var40 /* : Bool */;
3630 val* var41 /* : ANodes[AClassdef] */;
3631 val* var43 /* : ANodes[AClassdef] */;
3632 val* var44 /* : Iterator[ANode] */;
3633 short int var45 /* : Bool */;
3634 val* var46 /* : nullable Object */;
3635 val* var_nclassdef /* var nclassdef: AClassdef */;
3636 val* var48 /* : ToolContext */;
3637 val* var50 /* : ToolContext */;
3638 long var51 /* : Int */;
3639 long var53 /* : Int */;
3640 short int var54 /* : Bool */;
3641 short int var55 /* : Bool */;
3642 short int var57 /* : Bool */;
3643 short int var58 /* : Bool */;
3644 val* var59 /* : ANodes[AClassdef] */;
3645 val* var61 /* : ANodes[AClassdef] */;
3646 val* var62 /* : Iterator[ANode] */;
3647 short int var63 /* : Bool */;
3648 val* var64 /* : nullable Object */;
3649 val* var_nclassdef65 /* var nclassdef: AClassdef */;
3650 val* var67 /* : ToolContext */;
3651 val* var69 /* : ToolContext */;
3652 long var70 /* : Int */;
3653 long var72 /* : Int */;
3654 short int var73 /* : Bool */;
3655 short int var74 /* : Bool */;
3656 short int var76 /* : Bool */;
3657 short int var77 /* : Bool */;
3658 val* var78 /* : ANodes[AClassdef] */;
3659 val* var80 /* : ANodes[AClassdef] */;
3660 val* var81 /* : Iterator[ANode] */;
3661 short int var82 /* : Bool */;
3662 val* var83 /* : nullable Object */;
3663 val* var_nclassdef84 /* var nclassdef: AClassdef */;
3664 val* var86 /* : ToolContext */;
3665 val* var88 /* : ToolContext */;
3666 long var89 /* : Int */;
3667 long var91 /* : Int */;
3668 short int var92 /* : Bool */;
3669 short int var93 /* : Bool */;
3670 short int var95 /* : Bool */;
3671 short int var96 /* : Bool */;
3672 val* var97 /* : Array[MClassDef] */;
3673 val* var99 /* : Array[MClassDef] */;
3674 val* var100 /* : ArrayIterator[nullable Object] */;
3675 short int var101 /* : Bool */;
3676 val* var102 /* : nullable Object */;
3677 val* var_mclassdef /* var mclassdef: MClassDef */;
3678 val* var104 /* : ToolContext */;
3679 val* var106 /* : ToolContext */;
3680 long var107 /* : Int */;
3681 long var109 /* : Int */;
3682 short int var110 /* : Bool */;
3683 short int var111 /* : Bool */;
3684 short int var113 /* : Bool */;
3685 short int var114 /* : Bool */;
3686 val* var115 /* : ANodes[AClassdef] */;
3687 val* var117 /* : ANodes[AClassdef] */;
3688 val* var118 /* : Iterator[ANode] */;
3689 short int var119 /* : Bool */;
3690 val* var120 /* : nullable Object */;
3691 val* var_nclassdef121 /* var nclassdef: AClassdef */;
3692 val* var123 /* : ToolContext */;
3693 val* var125 /* : ToolContext */;
3694 long var126 /* : Int */;
3695 long var128 /* : Int */;
3696 short int var129 /* : Bool */;
3697 short int var130 /* : Bool */;
3698 short int var132 /* : Bool */;
3699 short int var133 /* : Bool */;
3700 val* var134 /* : ANodes[AClassdef] */;
3701 val* var136 /* : ANodes[AClassdef] */;
3702 val* var137 /* : Iterator[ANode] */;
3703 short int var138 /* : Bool */;
3704 val* var139 /* : nullable Object */;
3705 val* var_nclassdef140 /* var nclassdef: AClassdef */;
3706 short int var141 /* : Bool */;
3707 int cltype;
3708 int idtype;
3709 val* var142 /* : nullable MClassDef */;
3710 val* var144 /* : nullable MClassDef */;
3711 val* var_mclassdef145 /* var mclassdef: nullable MClassDef */;
3712 val* var146 /* : ANodes[AFormaldef] */;
3713 val* var148 /* : ANodes[AFormaldef] */;
3714 val* var149 /* : Iterator[ANode] */;
3715 short int var150 /* : Bool */;
3716 val* var151 /* : nullable Object */;
3717 val* var_nfd /* var nfd: AFormaldef */;
3718 val* var152 /* : nullable AType */;
3719 val* var_nfdt /* var nfdt: nullable AType */;
3720 short int var153 /* : Bool */;
3721 val* var154 /* : null */;
3722 short int var155 /* : Bool */;
3723 short int var156 /* : Bool */;
3724 val* var_other /* var other: nullable Object */;
3725 short int var158 /* : Bool */;
3726 short int var159 /* : Bool */;
3727 short int var160 /* : Bool */;
3728 short int var_ /* var : Bool */;
3729 val* var161 /* : nullable MType */;
3730 val* var163 /* : nullable MType */;
3731 val* var164 /* : null */;
3732 short int var165 /* : Bool */;
3733 short int var166 /* : Bool */;
3734 short int var168 /* : Bool */;
3735 short int var169 /* : Bool */;
3736 short int var170 /* : Bool */;
3737 val* var171 /* : nullable MType */;
3738 val* var_bound /* var bound: nullable MType */;
3739 val* var172 /* : null */;
3740 short int var173 /* : Bool */;
3741 short int var174 /* : Bool */;
3742 val* var_other176 /* var other: nullable Object */;
3743 short int var177 /* : Bool */;
3744 short int var179 /* : Bool */;
3745 val* var181 /* : ANodes[ASuperclass] */;
3746 val* var183 /* : ANodes[ASuperclass] */;
3747 val* var184 /* : Iterator[ANode] */;
3748 short int var185 /* : Bool */;
3749 val* var186 /* : nullable Object */;
3750 val* var_nsc /* var nsc: ASuperclass */;
3751 val* var187 /* : AType */;
3752 val* var_ntype /* var ntype: AType */;
3753 val* var188 /* : nullable MType */;
3754 val* var190 /* : nullable MType */;
3755 val* var191 /* : null */;
3756 short int var192 /* : Bool */;
3757 short int var193 /* : Bool */;
3758 short int var195 /* : Bool */;
3759 short int var196 /* : Bool */;
3760 short int var197 /* : Bool */;
3761 val* var198 /* : nullable MType */;
3762 val* var_mtype /* var mtype: nullable MType */;
3763 val* var199 /* : null */;
3764 short int var200 /* : Bool */;
3765 short int var201 /* : Bool */;
3766 short int var203 /* : Bool */;
3767 short int var205 /* : Bool */;
3768 val* var208 /* : ToolContext */;
3769 val* var210 /* : ToolContext */;
3770 long var211 /* : Int */;
3771 long var213 /* : Int */;
3772 short int var214 /* : Bool */;
3773 short int var215 /* : Bool */;
3774 short int var217 /* : Bool */;
3775 short int var218 /* : Bool */;
3776 val* var219 /* : ANodes[AClassdef] */;
3777 val* var221 /* : ANodes[AClassdef] */;
3778 val* var222 /* : Iterator[ANode] */;
3779 short int var223 /* : Bool */;
3780 val* var224 /* : nullable Object */;
3781 val* var_nclassdef225 /* var nclassdef: AClassdef */;
3782 val* var226 /* : nullable MClassDef */;
3783 val* var228 /* : nullable MClassDef */;
3784 val* var_mclassdef229 /* var mclassdef: MClassDef */;
3785 val* var230 /* : HashMap[MClass, MClassType] */;
3786 val* var_superclasses /* var superclasses: HashMap[MClass, MClassType] */;
3787 val* var231 /* : nullable POSetElement[MClassDef] */;
3788 val* var233 /* : nullable POSetElement[MClassDef] */;
3789 val* var234 /* : Collection[Object] */;
3790 val* var235 /* : Iterator[nullable Object] */;
3791 short int var236 /* : Bool */;
3792 val* var237 /* : nullable Object */;
3793 val* var_scd /* var scd: MClassDef */;
3794 val* var238 /* : Array[MClassType] */;
3795 val* var240 /* : Array[MClassType] */;
3796 val* var241 /* : ArrayIterator[nullable Object] */;
3797 short int var242 /* : Bool */;
3798 val* var243 /* : nullable Object */;
3799 val* var_st /* var st: MClassType */;
3800 val* var244 /* : MClass */;
3801 val* var246 /* : MClass */;
3802 short int var247 /* : Bool */;
3803 short int var248 /* : Bool */;
3804 val* var249 /* : MClass */;
3805 val* var251 /* : MClass */;
3806 val* var252 /* : MClass */;
3807 val* var254 /* : MClass */;
3808 val* var255 /* : nullable Object */;
3809 short int var256 /* : Bool */;
3810 short int var257 /* : Bool */;
3811 short int var259 /* : Bool */;
3812 short int var260 /* : Bool */;
3813 short int var261 /* : Bool */;
3814 val* var262 /* : MClass */;
3815 val* var264 /* : MClass */;
3816 val* var265 /* : nullable Object */;
3817 val* var266 /* : MClass */;
3818 val* var268 /* : MClass */;
3819 val* var269 /* : MClassType */;
3820 val* var271 /* : MClassType */;
3821 val* var272 /* : MClassType */;
3822 val* var274 /* : MClassType */;
3823 short int var275 /* : Bool */;
3824 val* var276 /* : MType */;
3825 val* var_st1 /* var st1: MClassType */;
3826 val* var277 /* : MClass */;
3827 val* var279 /* : MClass */;
3828 val* var280 /* : MClassType */;
3829 val* var282 /* : MClassType */;
3830 val* var283 /* : MClassType */;
3831 val* var285 /* : MClassType */;
3832 short int var286 /* : Bool */;
3833 val* var287 /* : MType */;
3834 val* var_st2 /* var st2: MClassType */;
3835 short int var288 /* : Bool */;
3836 short int var289 /* : Bool */;
3837 short int var291 /* : Bool */;
3838 short int var292 /* : Bool */;
3839 short int var293 /* : Bool */;
3840 static val* varonce;
3841 val* var294 /* : String */;
3842 char* var295 /* : NativeString */;
3843 long var296 /* : Int */;
3844 val* var297 /* : FlatString */;
3845 val* var298 /* : MClass */;
3846 val* var300 /* : MClass */;
3847 static val* varonce301;
3848 val* var302 /* : String */;
3849 char* var303 /* : NativeString */;
3850 long var304 /* : Int */;
3851 val* var305 /* : FlatString */;
3852 static val* varonce306;
3853 val* var307 /* : String */;
3854 char* var308 /* : NativeString */;
3855 long var309 /* : Int */;
3856 val* var310 /* : FlatString */;
3857 val* var311 /* : Array[Object] */;
3858 long var312 /* : Int */;
3859 val* var313 /* : NativeArray[Object] */;
3860 val* var314 /* : String */;
3861 val* var318 /* : ToolContext */;
3862 val* var320 /* : ToolContext */;
3863 long var321 /* : Int */;
3864 long var323 /* : Int */;
3865 short int var324 /* : Bool */;
3866 short int var325 /* : Bool */;
3867 short int var327 /* : Bool */;
3868 short int var328 /* : Bool */;
3869 val* var329 /* : ANodes[AClassdef] */;
3870 val* var331 /* : ANodes[AClassdef] */;
3871 val* var332 /* : Iterator[ANode] */;
3872 short int var333 /* : Bool */;
3873 val* var334 /* : nullable Object */;
3874 val* var_nclassdef335 /* var nclassdef: AClassdef */;
3875 short int var336 /* : Bool */;
3876 int cltype337;
3877 int idtype338;
3878 short int var339 /* : Bool */;
3879 val* var341 /* : nullable MClassDef */;
3880 val* var343 /* : nullable MClassDef */;
3881 val* var_mclassdef344 /* var mclassdef: MClassDef */;
3882 val* var345 /* : Array[MClass] */;
3883 val* var_parents /* var parents: Array[MClass] */;
3884 val* var346 /* : nullable POSetElement[MClassDef] */;
3885 val* var348 /* : nullable POSetElement[MClassDef] */;
3886 val* var349 /* : Collection[Object] */;
3887 val* var350 /* : Iterator[nullable Object] */;
3888 short int var351 /* : Bool */;
3889 val* var352 /* : nullable Object */;
3890 val* var_sup /* var sup: MClassDef */;
3891 val* var353 /* : MClass */;
3892 val* var355 /* : MClass */;
3893 val* var357 /* : ArrayMap[MClass, AType] */;
3894 val* var_seen_parents /* var seen_parents: ArrayMap[MClass, AType] */;
3895 static val* varonce358;
3896 val* var359 /* : String */;
3897 char* var360 /* : NativeString */;
3898 long var361 /* : Int */;
3899 val* var362 /* : FlatString */;
3900 val* var363 /* : nullable MClass */;
3901 val* var_objectclass /* var objectclass: nullable MClass */;
3902 val* var364 /* : ANodes[ASuperclass] */;
3903 val* var366 /* : ANodes[ASuperclass] */;
3904 val* var367 /* : Iterator[ANode] */;
3905 short int var368 /* : Bool */;
3906 val* var369 /* : nullable Object */;
3907 val* var_nsc370 /* var nsc: ASuperclass */;
3908 val* var371 /* : AType */;
3909 val* var_ntype372 /* var ntype: AType */;
3910 val* var373 /* : nullable MType */;
3911 val* var375 /* : nullable MType */;
3912 val* var_mtype376 /* var mtype: nullable MType */;
3913 val* var377 /* : null */;
3914 short int var378 /* : Bool */;
3915 short int var379 /* : Bool */;
3916 short int var381 /* : Bool */;
3917 short int var383 /* : Bool */;
3918 short int var385 /* : Bool */;
3919 int cltype386;
3920 int idtype387;
3921 val* var388 /* : MClass */;
3922 val* var390 /* : MClass */;
3923 val* var_sc /* var sc: MClass */;
3924 short int var391 /* : Bool */;
3925 short int var392 /* : Bool */;
3926 short int var393 /* : Bool */;
3927 short int var_394 /* var : Bool */;
3928 short int var395 /* : Bool */;
3929 short int var396 /* : Bool */;
3930 short int var398 /* : Bool */;
3931 short int var400 /* : Bool */;
3932 short int var401 /* : Bool */;
3933 val* var402 /* : Location */;
3934 val* var403 /* : nullable SourceFile */;
3935 val* var405 /* : nullable SourceFile */;
3936 val* var406 /* : null */;
3937 short int var407 /* : Bool */;
3938 short int var408 /* : Bool */;
3939 short int var410 /* : Bool */;
3940 short int var411 /* : Bool */;
3941 short int var412 /* : Bool */;
3942 short int var_413 /* var : Bool */;
3943 val* var414 /* : Location */;
3944 val* var415 /* : nullable SourceFile */;
3945 val* var417 /* : nullable SourceFile */;
3946 val* var418 /* : String */;
3947 val* var420 /* : String */;
3948 short int var421 /* : Bool */;
3949 short int var422 /* : Bool */;
3950 static val* varonce423;
3951 val* var424 /* : String */;
3952 char* var425 /* : NativeString */;
3953 long var426 /* : Int */;
3954 val* var427 /* : FlatString */;
3955 static val* varonce428;
3956 val* var429 /* : String */;
3957 char* var430 /* : NativeString */;
3958 long var431 /* : Int */;
3959 val* var432 /* : FlatString */;
3960 val* var433 /* : MClass */;
3961 val* var435 /* : MClass */;
3962 static val* varonce436;
3963 val* var437 /* : String */;
3964 char* var438 /* : NativeString */;
3965 long var439 /* : Int */;
3966 val* var440 /* : FlatString */;
3967 val* var441 /* : Array[Object] */;
3968 long var442 /* : Int */;
3969 val* var443 /* : NativeArray[Object] */;
3970 val* var444 /* : String */;
3971 short int var445 /* : Bool */;
3972 short int var446 /* : Bool */;
3973 static val* varonce447;
3974 val* var448 /* : String */;
3975 char* var449 /* : NativeString */;
3976 long var450 /* : Int */;
3977 val* var451 /* : FlatString */;
3978 static val* varonce452;
3979 val* var453 /* : String */;
3980 char* var454 /* : NativeString */;
3981 long var455 /* : Int */;
3982 val* var456 /* : FlatString */;
3983 val* var457 /* : MClass */;
3984 val* var459 /* : MClass */;
3985 static val* varonce460;
3986 val* var461 /* : String */;
3987 char* var462 /* : NativeString */;
3988 long var463 /* : Int */;
3989 val* var464 /* : FlatString */;
3990 val* var465 /* : Array[Object] */;
3991 long var466 /* : Int */;
3992 val* var467 /* : NativeArray[Object] */;
3993 val* var468 /* : String */;
3994 var_nmodule = p0;
3995 {
3996 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3997 var2 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3998 if (unlikely(var2 == NULL)) {
3999 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4000 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4001 show_backtrace(1);
4002 }
4003 var = var2;
4004 RET_LABEL1:(void)0;
4005 }
4006 }
4007 {
4008 { /* Inline toolcontext#ToolContext#error_count (var) on <var:ToolContext> */
4009 var5 = var->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var:ToolContext> */
4010 var3 = var5;
4011 RET_LABEL4:(void)0;
4012 }
4013 }
4014 var_errcount = var3;
4015 {
4016 { /* Inline modelize_class#AModule#build_classes_is_done (var_nmodule) on <var_nmodule:AModule> */
4017 var8 = var_nmodule->attrs[COLOR_modelize_class__AModule___build_classes_is_done].s; /* _build_classes_is_done on <var_nmodule:AModule> */
4018 var6 = var8;
4019 RET_LABEL7:(void)0;
4020 }
4021 }
4022 if (var6){
4023 goto RET_LABEL;
4024 } else {
4025 }
4026 var9 = 1;
4027 {
4028 { /* Inline modelize_class#AModule#build_classes_is_done= (var_nmodule,var9) on <var_nmodule:AModule> */
4029 var_nmodule->attrs[COLOR_modelize_class__AModule___build_classes_is_done].s = var9; /* _build_classes_is_done on <var_nmodule:AModule> */
4030 RET_LABEL10:(void)0;
4031 }
4032 }
4033 {
4034 { /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
4035 var13 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
4036 var11 = var13;
4037 RET_LABEL12:(void)0;
4038 }
4039 }
4040 if (unlikely(var11 == NULL)) {
4041 PRINT_ERROR("Runtime error: %s", "Cast failed");
4042 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 268);
4043 show_backtrace(1);
4044 }
4045 var_mmodule = var11;
4046 {
4047 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
4048 var16 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
4049 if (unlikely(var16 == NULL)) {
4050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
4051 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
4052 show_backtrace(1);
4053 }
4054 var14 = var16;
4055 RET_LABEL15:(void)0;
4056 }
4057 }
4058 {
4059 var17 = poset__POSetElement__direct_greaters(var14);
4060 }
4061 {
4062 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Collection__iterator]))(var17) /* iterator on <var17:Collection[Object](Collection[MModule])>*/;
4063 }
4064 for(;;) {
4065 {
4066 var19 = ((short int (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var18) /* is_ok on <var18:Iterator[nullable Object]>*/;
4067 }
4068 if(!var19) break;
4069 {
4070 var20 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__item]))(var18) /* item on <var18:Iterator[nullable Object]>*/;
4071 }
4072 var_imp = var20;
4073 {
4074 { /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
4075 var23 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
4076 if (unlikely(var23 == NULL)) {
4077 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
4078 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 697);
4079 show_backtrace(1);
4080 }
4081 var21 = var23;
4082 RET_LABEL22:(void)0;
4083 }
4084 }
4085 {
4086 var24 = abstract_collection__MapRead__has_key(var21, var_imp);
4087 }
4088 var25 = !var24;
4089 if (var25){
4090 goto CONTINUE_label;
4091 } else {
4092 }
4093 {
4094 { /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
4095 var28 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
4096 if (unlikely(var28 == NULL)) {
4097 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
4098 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 697);
4099 show_backtrace(1);
4100 }
4101 var26 = var28;
4102 RET_LABEL27:(void)0;
4103 }
4104 }
4105 {
4106 var29 = hash_collection__HashMap___91d_93d(var26, var_imp);
4107 }
4108 {
4109 modelize_class__ModelBuilder__build_classes(self, var29); /* Direct call modelize_class#ModelBuilder#build_classes on <self:ModelBuilder>*/
4110 }
4111 CONTINUE_label: (void)0;
4112 {
4113 ((void (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__next]))(var18) /* next on <var18:Iterator[nullable Object]>*/;
4114 }
4115 }
4116 BREAK_label: (void)0;
4117 {
4118 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4119 var32 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4120 if (unlikely(var32 == NULL)) {
4121 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4122 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4123 show_backtrace(1);
4124 }
4125 var30 = var32;
4126 RET_LABEL31:(void)0;
4127 }
4128 }
4129 {
4130 { /* Inline toolcontext#ToolContext#error_count (var30) on <var30:ToolContext> */
4131 var35 = var30->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var30:ToolContext> */
4132 var33 = var35;
4133 RET_LABEL34:(void)0;
4134 }
4135 }
4136 {
4137 { /* Inline kernel#Int#!= (var_errcount,var33) on <var_errcount:Int> */
4138 var39 = var_errcount == var33;
4139 var40 = !var39;
4140 var37 = var40;
4141 goto RET_LABEL38;
4142 RET_LABEL38:(void)0;
4143 }
4144 var36 = var37;
4145 }
4146 if (var36){
4147 goto RET_LABEL;
4148 } else {
4149 }
4150 {
4151 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
4152 var43 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
4153 if (unlikely(var43 == NULL)) {
4154 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
4155 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
4156 show_backtrace(1);
4157 }
4158 var41 = var43;
4159 RET_LABEL42:(void)0;
4160 }
4161 }
4162 {
4163 var44 = parser_nodes__ANodes__iterator(var41);
4164 }
4165 for(;;) {
4166 {
4167 var45 = ((short int (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var44) /* is_ok on <var44:Iterator[ANode]>*/;
4168 }
4169 if(!var45) break;
4170 {
4171 var46 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__item]))(var44) /* item on <var44:Iterator[ANode]>*/;
4172 }
4173 var_nclassdef = var46;
4174 {
4175 modelize_class__ModelBuilder__build_a_mclass(self, var_nmodule, var_nclassdef); /* Direct call modelize_class#ModelBuilder#build_a_mclass on <self:ModelBuilder>*/
4176 }
4177 CONTINUE_label47: (void)0;
4178 {
4179 ((void (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__next]))(var44) /* next on <var44:Iterator[ANode]>*/;
4180 }
4181 }
4182 BREAK_label47: (void)0;
4183 {
4184 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4185 var50 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4186 if (unlikely(var50 == NULL)) {
4187 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4188 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4189 show_backtrace(1);
4190 }
4191 var48 = var50;
4192 RET_LABEL49:(void)0;
4193 }
4194 }
4195 {
4196 { /* Inline toolcontext#ToolContext#error_count (var48) on <var48:ToolContext> */
4197 var53 = var48->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var48:ToolContext> */
4198 var51 = var53;
4199 RET_LABEL52:(void)0;
4200 }
4201 }
4202 {
4203 { /* Inline kernel#Int#!= (var_errcount,var51) on <var_errcount:Int> */
4204 var57 = var_errcount == var51;
4205 var58 = !var57;
4206 var55 = var58;
4207 goto RET_LABEL56;
4208 RET_LABEL56:(void)0;
4209 }
4210 var54 = var55;
4211 }
4212 if (var54){
4213 goto RET_LABEL;
4214 } else {
4215 }
4216 {
4217 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
4218 var61 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
4219 if (unlikely(var61 == NULL)) {
4220 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
4221 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
4222 show_backtrace(1);
4223 }
4224 var59 = var61;
4225 RET_LABEL60:(void)0;
4226 }
4227 }
4228 {
4229 var62 = parser_nodes__ANodes__iterator(var59);
4230 }
4231 for(;;) {
4232 {
4233 var63 = ((short int (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var62) /* is_ok on <var62:Iterator[ANode]>*/;
4234 }
4235 if(!var63) break;
4236 {
4237 var64 = ((val* (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__item]))(var62) /* item on <var62:Iterator[ANode]>*/;
4238 }
4239 var_nclassdef65 = var64;
4240 {
4241 modelize_class__ModelBuilder__build_a_mclassdef(self, var_nmodule, var_nclassdef65); /* Direct call modelize_class#ModelBuilder#build_a_mclassdef on <self:ModelBuilder>*/
4242 }
4243 CONTINUE_label66: (void)0;
4244 {
4245 ((void (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__next]))(var62) /* next on <var62:Iterator[ANode]>*/;
4246 }
4247 }
4248 BREAK_label66: (void)0;
4249 {
4250 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4251 var69 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4252 if (unlikely(var69 == NULL)) {
4253 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4254 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4255 show_backtrace(1);
4256 }
4257 var67 = var69;
4258 RET_LABEL68:(void)0;
4259 }
4260 }
4261 {
4262 { /* Inline toolcontext#ToolContext#error_count (var67) on <var67:ToolContext> */
4263 var72 = var67->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var67:ToolContext> */
4264 var70 = var72;
4265 RET_LABEL71:(void)0;
4266 }
4267 }
4268 {
4269 { /* Inline kernel#Int#!= (var_errcount,var70) on <var_errcount:Int> */
4270 var76 = var_errcount == var70;
4271 var77 = !var76;
4272 var74 = var77;
4273 goto RET_LABEL75;
4274 RET_LABEL75:(void)0;
4275 }
4276 var73 = var74;
4277 }
4278 if (var73){
4279 goto RET_LABEL;
4280 } else {
4281 }
4282 {
4283 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
4284 var80 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
4285 if (unlikely(var80 == NULL)) {
4286 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
4287 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
4288 show_backtrace(1);
4289 }
4290 var78 = var80;
4291 RET_LABEL79:(void)0;
4292 }
4293 }
4294 {
4295 var81 = parser_nodes__ANodes__iterator(var78);
4296 }
4297 for(;;) {
4298 {
4299 var82 = ((short int (*)(val*))(var81->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var81) /* is_ok on <var81:Iterator[ANode]>*/;
4300 }
4301 if(!var82) break;
4302 {
4303 var83 = ((val* (*)(val*))(var81->class->vft[COLOR_abstract_collection__Iterator__item]))(var81) /* item on <var81:Iterator[ANode]>*/;
4304 }
4305 var_nclassdef84 = var83;
4306 {
4307 modelize_class__ModelBuilder__collect_a_mclassdef_inheritance(self, var_nmodule, var_nclassdef84); /* Direct call modelize_class#ModelBuilder#collect_a_mclassdef_inheritance on <self:ModelBuilder>*/
4308 }
4309 CONTINUE_label85: (void)0;
4310 {
4311 ((void (*)(val*))(var81->class->vft[COLOR_abstract_collection__Iterator__next]))(var81) /* next on <var81:Iterator[ANode]>*/;
4312 }
4313 }
4314 BREAK_label85: (void)0;
4315 {
4316 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4317 var88 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4318 if (unlikely(var88 == NULL)) {
4319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4320 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4321 show_backtrace(1);
4322 }
4323 var86 = var88;
4324 RET_LABEL87:(void)0;
4325 }
4326 }
4327 {
4328 { /* Inline toolcontext#ToolContext#error_count (var86) on <var86:ToolContext> */
4329 var91 = var86->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var86:ToolContext> */
4330 var89 = var91;
4331 RET_LABEL90:(void)0;
4332 }
4333 }
4334 {
4335 { /* Inline kernel#Int#!= (var_errcount,var89) on <var_errcount:Int> */
4336 var95 = var_errcount == var89;
4337 var96 = !var95;
4338 var93 = var96;
4339 goto RET_LABEL94;
4340 RET_LABEL94:(void)0;
4341 }
4342 var92 = var93;
4343 }
4344 if (var92){
4345 goto RET_LABEL;
4346 } else {
4347 }
4348 {
4349 { /* Inline model#MModule#mclassdefs (var_mmodule) on <var_mmodule:MModule> */
4350 var99 = var_mmodule->attrs[COLOR_model__MModule___mclassdefs].val; /* _mclassdefs on <var_mmodule:MModule> */
4351 if (unlikely(var99 == NULL)) {
4352 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdefs");
4353 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 141);
4354 show_backtrace(1);
4355 }
4356 var97 = var99;
4357 RET_LABEL98:(void)0;
4358 }
4359 }
4360 {
4361 var100 = array__AbstractArrayRead__iterator(var97);
4362 }
4363 for(;;) {
4364 {
4365 var101 = array__ArrayIterator__is_ok(var100);
4366 }
4367 if(!var101) break;
4368 {
4369 var102 = array__ArrayIterator__item(var100);
4370 }
4371 var_mclassdef = var102;
4372 {
4373 model__MClassDef__add_in_hierarchy(var_mclassdef); /* Direct call model#MClassDef#add_in_hierarchy on <var_mclassdef:MClassDef>*/
4374 }
4375 CONTINUE_label103: (void)0;
4376 {
4377 array__ArrayIterator__next(var100); /* Direct call array#ArrayIterator#next on <var100:ArrayIterator[nullable Object]>*/
4378 }
4379 }
4380 BREAK_label103: (void)0;
4381 {
4382 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4383 var106 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4384 if (unlikely(var106 == NULL)) {
4385 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4386 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4387 show_backtrace(1);
4388 }
4389 var104 = var106;
4390 RET_LABEL105:(void)0;
4391 }
4392 }
4393 {
4394 { /* Inline toolcontext#ToolContext#error_count (var104) on <var104:ToolContext> */
4395 var109 = var104->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var104:ToolContext> */
4396 var107 = var109;
4397 RET_LABEL108:(void)0;
4398 }
4399 }
4400 {
4401 { /* Inline kernel#Int#!= (var_errcount,var107) on <var_errcount:Int> */
4402 var113 = var_errcount == var107;
4403 var114 = !var113;
4404 var111 = var114;
4405 goto RET_LABEL112;
4406 RET_LABEL112:(void)0;
4407 }
4408 var110 = var111;
4409 }
4410 if (var110){
4411 goto RET_LABEL;
4412 } else {
4413 }
4414 {
4415 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
4416 var117 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
4417 if (unlikely(var117 == NULL)) {
4418 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
4419 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
4420 show_backtrace(1);
4421 }
4422 var115 = var117;
4423 RET_LABEL116:(void)0;
4424 }
4425 }
4426 {
4427 var118 = parser_nodes__ANodes__iterator(var115);
4428 }
4429 for(;;) {
4430 {
4431 var119 = ((short int (*)(val*))(var118->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var118) /* is_ok on <var118:Iterator[ANode]>*/;
4432 }
4433 if(!var119) break;
4434 {
4435 var120 = ((val* (*)(val*))(var118->class->vft[COLOR_abstract_collection__Iterator__item]))(var118) /* item on <var118:Iterator[ANode]>*/;
4436 }
4437 var_nclassdef121 = var120;
4438 {
4439 modelize_class__ModelBuilder__check_supertypes(self, var_nmodule, var_nclassdef121); /* Direct call modelize_class#ModelBuilder#check_supertypes on <self:ModelBuilder>*/
4440 }
4441 CONTINUE_label122: (void)0;
4442 {
4443 ((void (*)(val*))(var118->class->vft[COLOR_abstract_collection__Iterator__next]))(var118) /* next on <var118:Iterator[ANode]>*/;
4444 }
4445 }
4446 BREAK_label122: (void)0;
4447 {
4448 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4449 var125 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4450 if (unlikely(var125 == NULL)) {
4451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4452 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4453 show_backtrace(1);
4454 }
4455 var123 = var125;
4456 RET_LABEL124:(void)0;
4457 }
4458 }
4459 {
4460 { /* Inline toolcontext#ToolContext#error_count (var123) on <var123:ToolContext> */
4461 var128 = var123->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var123:ToolContext> */
4462 var126 = var128;
4463 RET_LABEL127:(void)0;
4464 }
4465 }
4466 {
4467 { /* Inline kernel#Int#!= (var_errcount,var126) on <var_errcount:Int> */
4468 var132 = var_errcount == var126;
4469 var133 = !var132;
4470 var130 = var133;
4471 goto RET_LABEL131;
4472 RET_LABEL131:(void)0;
4473 }
4474 var129 = var130;
4475 }
4476 if (var129){
4477 goto RET_LABEL;
4478 } else {
4479 }
4480 {
4481 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
4482 var136 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
4483 if (unlikely(var136 == NULL)) {
4484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
4485 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
4486 show_backtrace(1);
4487 }
4488 var134 = var136;
4489 RET_LABEL135:(void)0;
4490 }
4491 }
4492 {
4493 var137 = parser_nodes__ANodes__iterator(var134);
4494 }
4495 for(;;) {
4496 {
4497 var138 = ((short int (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var137) /* is_ok on <var137:Iterator[ANode]>*/;
4498 }
4499 if(!var138) break;
4500 {
4501 var139 = ((val* (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__item]))(var137) /* item on <var137:Iterator[ANode]>*/;
4502 }
4503 var_nclassdef140 = var139;
4504 /* <var_nclassdef140:AClassdef> isa AStdClassdef */
4505 cltype = type_parser_nodes__AStdClassdef.color;
4506 idtype = type_parser_nodes__AStdClassdef.id;
4507 if(cltype >= var_nclassdef140->type->table_size) {
4508 var141 = 0;
4509 } else {
4510 var141 = var_nclassdef140->type->type_table[cltype] == idtype;
4511 }
4512 if (var141){
4513 {
4514 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef140) on <var_nclassdef140:AClassdef(AStdClassdef)> */
4515 var144 = var_nclassdef140->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef140:AClassdef(AStdClassdef)> */
4516 var142 = var144;
4517 RET_LABEL143:(void)0;
4518 }
4519 }
4520 var_mclassdef145 = var142;
4521 {
4522 { /* Inline parser_nodes#AStdClassdef#n_formaldefs (var_nclassdef140) on <var_nclassdef140:AClassdef(AStdClassdef)> */
4523 var148 = var_nclassdef140->attrs[COLOR_parser_nodes__AStdClassdef___n_formaldefs].val; /* _n_formaldefs on <var_nclassdef140:AClassdef(AStdClassdef)> */
4524 if (unlikely(var148 == NULL)) {
4525 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_formaldefs");
4526 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 824);
4527 show_backtrace(1);
4528 }
4529 var146 = var148;
4530 RET_LABEL147:(void)0;
4531 }
4532 }
4533 {
4534 var149 = parser_nodes__ANodes__iterator(var146);
4535 }
4536 for(;;) {
4537 {
4538 var150 = ((short int (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var149) /* is_ok on <var149:Iterator[ANode]>*/;
4539 }
4540 if(!var150) break;
4541 {
4542 var151 = ((val* (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__item]))(var149) /* item on <var149:Iterator[ANode]>*/;
4543 }
4544 var_nfd = var151;
4545 {
4546 var152 = parser_nodes__AFormaldef__n_type(var_nfd);
4547 }
4548 var_nfdt = var152;
4549 var154 = NULL;
4550 if (var_nfdt == NULL) {
4551 var155 = 0; /* is null */
4552 } else {
4553 var155 = 1; /* arg is null and recv is not */
4554 }
4555 if (0) {
4556 { /* Inline kernel#Object#!= (var_nfdt,var154) on <var_nfdt:nullable AType> */
4557 var_other = var154;
4558 {
4559 var159 = ((short int (*)(val*, val*))(var_nfdt->class->vft[COLOR_kernel__Object___61d_61d]))(var_nfdt, var_other) /* == on <var_nfdt:nullable AType(AType)>*/;
4560 var158 = var159;
4561 }
4562 var160 = !var158;
4563 var156 = var160;
4564 goto RET_LABEL157;
4565 RET_LABEL157:(void)0;
4566 }
4567 var155 = var156;
4568 }
4569 var_ = var155;
4570 if (var155){
4571 {
4572 { /* Inline modelize_class#AType#mtype (var_nfdt) on <var_nfdt:nullable AType(AType)> */
4573 var163 = var_nfdt->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <var_nfdt:nullable AType(AType)> */
4574 var161 = var163;
4575 RET_LABEL162:(void)0;
4576 }
4577 }
4578 var164 = NULL;
4579 if (var161 == NULL) {
4580 var165 = 0; /* is null */
4581 } else {
4582 var165 = 1; /* arg is null and recv is not */
4583 }
4584 if (0) {
4585 { /* Inline kernel#Object#!= (var161,var164) on <var161:nullable MType> */
4586 var_other = var164;
4587 {
4588 var169 = ((short int (*)(val*, val*))(var161->class->vft[COLOR_kernel__Object___61d_61d]))(var161, var_other) /* == on <var161:nullable MType(MType)>*/;
4589 var168 = var169;
4590 }
4591 var170 = !var168;
4592 var166 = var170;
4593 goto RET_LABEL167;
4594 RET_LABEL167:(void)0;
4595 }
4596 var165 = var166;
4597 }
4598 var153 = var165;
4599 } else {
4600 var153 = var_;
4601 }
4602 if (var153){
4603 {
4604 var171 = modelize_class__ModelBuilder__resolve_mtype(self, var_mmodule, var_mclassdef145, var_nfdt);
4605 }
4606 var_bound = var171;
4607 var172 = NULL;
4608 if (var_bound == NULL) {
4609 var173 = 1; /* is null */
4610 } else {
4611 var173 = 0; /* arg is null but recv is not */
4612 }
4613 if (0) {
4614 { /* Inline kernel#Object#== (var_bound,var172) on <var_bound:nullable MType> */
4615 var_other176 = var172;
4616 {
4617 { /* Inline kernel#Object#is_same_instance (var_bound,var_other176) on <var_bound:nullable MType(MType)> */
4618 var179 = var_bound == var_other176;
4619 var177 = var179;
4620 goto RET_LABEL178;
4621 RET_LABEL178:(void)0;
4622 }
4623 }
4624 var174 = var177;
4625 goto RET_LABEL175;
4626 RET_LABEL175:(void)0;
4627 }
4628 var173 = var174;
4629 }
4630 if (var173){
4631 goto RET_LABEL;
4632 } else {
4633 }
4634 } else {
4635 }
4636 CONTINUE_label180: (void)0;
4637 {
4638 ((void (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__next]))(var149) /* next on <var149:Iterator[ANode]>*/;
4639 }
4640 }
4641 BREAK_label180: (void)0;
4642 {
4643 { /* Inline parser_nodes#AStdClassdef#n_superclasses (var_nclassdef140) on <var_nclassdef140:AClassdef(AStdClassdef)> */
4644 var183 = var_nclassdef140->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <var_nclassdef140:AClassdef(AStdClassdef)> */
4645 if (unlikely(var183 == NULL)) {
4646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_superclasses");
4647 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 828);
4648 show_backtrace(1);
4649 }
4650 var181 = var183;
4651 RET_LABEL182:(void)0;
4652 }
4653 }
4654 {
4655 var184 = parser_nodes__ANodes__iterator(var181);
4656 }
4657 for(;;) {
4658 {
4659 var185 = ((short int (*)(val*))(var184->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var184) /* is_ok on <var184:Iterator[ANode]>*/;
4660 }
4661 if(!var185) break;
4662 {
4663 var186 = ((val* (*)(val*))(var184->class->vft[COLOR_abstract_collection__Iterator__item]))(var184) /* item on <var184:Iterator[ANode]>*/;
4664 }
4665 var_nsc = var186;
4666 {
4667 var187 = parser_nodes__ASuperclass__n_type(var_nsc);
4668 }
4669 var_ntype = var187;
4670 {
4671 { /* Inline modelize_class#AType#mtype (var_ntype) on <var_ntype:AType> */
4672 var190 = var_ntype->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <var_ntype:AType> */
4673 var188 = var190;
4674 RET_LABEL189:(void)0;
4675 }
4676 }
4677 var191 = NULL;
4678 if (var188 == NULL) {
4679 var192 = 0; /* is null */
4680 } else {
4681 var192 = 1; /* arg is null and recv is not */
4682 }
4683 if (0) {
4684 { /* Inline kernel#Object#!= (var188,var191) on <var188:nullable MType> */
4685 var_other = var191;
4686 {
4687 var196 = ((short int (*)(val*, val*))(var188->class->vft[COLOR_kernel__Object___61d_61d]))(var188, var_other) /* == on <var188:nullable MType(MType)>*/;
4688 var195 = var196;
4689 }
4690 var197 = !var195;
4691 var193 = var197;
4692 goto RET_LABEL194;
4693 RET_LABEL194:(void)0;
4694 }
4695 var192 = var193;
4696 }
4697 if (var192){
4698 {
4699 var198 = modelize_class__ModelBuilder__resolve_mtype(self, var_mmodule, var_mclassdef145, var_ntype);
4700 }
4701 var_mtype = var198;
4702 var199 = NULL;
4703 if (var_mtype == NULL) {
4704 var200 = 1; /* is null */
4705 } else {
4706 var200 = 0; /* arg is null but recv is not */
4707 }
4708 if (0) {
4709 { /* Inline kernel#Object#== (var_mtype,var199) on <var_mtype:nullable MType> */
4710 var_other176 = var199;
4711 {
4712 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other176) on <var_mtype:nullable MType(MType)> */
4713 var205 = var_mtype == var_other176;
4714 var203 = var205;
4715 goto RET_LABEL204;
4716 RET_LABEL204:(void)0;
4717 }
4718 }
4719 var201 = var203;
4720 goto RET_LABEL202;
4721 RET_LABEL202:(void)0;
4722 }
4723 var200 = var201;
4724 }
4725 if (var200){
4726 goto RET_LABEL;
4727 } else {
4728 }
4729 } else {
4730 }
4731 CONTINUE_label206: (void)0;
4732 {
4733 ((void (*)(val*))(var184->class->vft[COLOR_abstract_collection__Iterator__next]))(var184) /* next on <var184:Iterator[ANode]>*/;
4734 }
4735 }
4736 BREAK_label206: (void)0;
4737 } else {
4738 }
4739 CONTINUE_label207: (void)0;
4740 {
4741 ((void (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__next]))(var137) /* next on <var137:Iterator[ANode]>*/;
4742 }
4743 }
4744 BREAK_label207: (void)0;
4745 {
4746 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
4747 var210 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
4748 if (unlikely(var210 == NULL)) {
4749 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4750 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
4751 show_backtrace(1);
4752 }
4753 var208 = var210;
4754 RET_LABEL209:(void)0;
4755 }
4756 }
4757 {
4758 { /* Inline toolcontext#ToolContext#error_count (var208) on <var208:ToolContext> */
4759 var213 = var208->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var208:ToolContext> */
4760 var211 = var213;
4761 RET_LABEL212:(void)0;
4762 }
4763 }
4764 {
4765 { /* Inline kernel#Int#!= (var_errcount,var211) on <var_errcount:Int> */
4766 var217 = var_errcount == var211;
4767 var218 = !var217;
4768 var215 = var218;
4769 goto RET_LABEL216;
4770 RET_LABEL216:(void)0;
4771 }
4772 var214 = var215;
4773 }
4774 if (var214){
4775 goto RET_LABEL;
4776 } else {
4777 }
4778 {
4779 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
4780 var221 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
4781 if (unlikely(var221 == NULL)) {
4782 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
4783 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
4784 show_backtrace(1);
4785 }
4786 var219 = var221;
4787 RET_LABEL220:(void)0;
4788 }
4789 }
4790 {
4791 var222 = parser_nodes__ANodes__iterator(var219);
4792 }
4793 for(;;) {
4794 {
4795 var223 = ((short int (*)(val*))(var222->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var222) /* is_ok on <var222:Iterator[ANode]>*/;
4796 }
4797 if(!var223) break;
4798 {
4799 var224 = ((val* (*)(val*))(var222->class->vft[COLOR_abstract_collection__Iterator__item]))(var222) /* item on <var222:Iterator[ANode]>*/;
4800 }
4801 var_nclassdef225 = var224;
4802 {
4803 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef225) on <var_nclassdef225:AClassdef> */
4804 var228 = var_nclassdef225->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef225:AClassdef> */
4805 var226 = var228;
4806 RET_LABEL227:(void)0;
4807 }
4808 }
4809 if (unlikely(var226 == NULL)) {
4810 PRINT_ERROR("Runtime error: %s", "Cast failed");
4811 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 339);
4812 show_backtrace(1);
4813 }
4814 var_mclassdef229 = var226;
4815 var230 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassmodel__MClassType);
4816 {
4817 hash_collection__HashMap__init(var230); /* Direct call hash_collection#HashMap#init on <var230:HashMap[MClass, MClassType]>*/
4818 }
4819 var_superclasses = var230;
4820 {
4821 { /* Inline model#MClassDef#in_hierarchy (var_mclassdef229) on <var_mclassdef229:MClassDef> */
4822 var233 = var_mclassdef229->attrs[COLOR_model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef229:MClassDef> */
4823 var231 = var233;
4824 RET_LABEL232:(void)0;
4825 }
4826 }
4827 if (var231 == NULL) {
4828 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4829 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 341);
4830 show_backtrace(1);
4831 } else {
4832 var234 = poset__POSetElement__greaters(var231);
4833 }
4834 {
4835 var235 = ((val* (*)(val*))(var234->class->vft[COLOR_abstract_collection__Collection__iterator]))(var234) /* iterator on <var234:Collection[Object](Collection[MClassDef])>*/;
4836 }
4837 for(;;) {
4838 {
4839 var236 = ((short int (*)(val*))(var235->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var235) /* is_ok on <var235:Iterator[nullable Object]>*/;
4840 }
4841 if(!var236) break;
4842 {
4843 var237 = ((val* (*)(val*))(var235->class->vft[COLOR_abstract_collection__Iterator__item]))(var235) /* item on <var235:Iterator[nullable Object]>*/;
4844 }
4845 var_scd = var237;
4846 {
4847 { /* Inline model#MClassDef#supertypes (var_scd) on <var_scd:MClassDef> */
4848 var240 = var_scd->attrs[COLOR_model__MClassDef___supertypes].val; /* _supertypes on <var_scd:MClassDef> */
4849 if (unlikely(var240 == NULL)) {
4850 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _supertypes");
4851 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 517);
4852 show_backtrace(1);
4853 }
4854 var238 = var240;
4855 RET_LABEL239:(void)0;
4856 }
4857 }
4858 {
4859 var241 = array__AbstractArrayRead__iterator(var238);
4860 }
4861 for(;;) {
4862 {
4863 var242 = array__ArrayIterator__is_ok(var241);
4864 }
4865 if(!var242) break;
4866 {
4867 var243 = array__ArrayIterator__item(var241);
4868 }
4869 var_st = var243;
4870 {
4871 { /* Inline model#MClassType#mclass (var_st) on <var_st:MClassType> */
4872 var246 = var_st->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_st:MClassType> */
4873 if (unlikely(var246 == NULL)) {
4874 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4875 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
4876 show_backtrace(1);
4877 }
4878 var244 = var246;
4879 RET_LABEL245:(void)0;
4880 }
4881 }
4882 {
4883 var247 = abstract_collection__MapRead__has_key(var_superclasses, var244);
4884 }
4885 var248 = !var247;
4886 if (var248){
4887 {
4888 { /* Inline model#MClassType#mclass (var_st) on <var_st:MClassType> */
4889 var251 = var_st->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_st:MClassType> */
4890 if (unlikely(var251 == NULL)) {
4891 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4892 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
4893 show_backtrace(1);
4894 }
4895 var249 = var251;
4896 RET_LABEL250:(void)0;
4897 }
4898 }
4899 {
4900 hash_collection__HashMap___91d_93d_61d(var_superclasses, var249, var_st); /* Direct call hash_collection#HashMap#[]= on <var_superclasses:HashMap[MClass, MClassType]>*/
4901 }
4902 } else {
4903 {
4904 { /* Inline model#MClassType#mclass (var_st) on <var_st:MClassType> */
4905 var254 = var_st->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_st:MClassType> */
4906 if (unlikely(var254 == NULL)) {
4907 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4908 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
4909 show_backtrace(1);
4910 }
4911 var252 = var254;
4912 RET_LABEL253:(void)0;
4913 }
4914 }
4915 {
4916 var255 = hash_collection__HashMap___91d_93d(var_superclasses, var252);
4917 }
4918 {
4919 { /* Inline kernel#Object#!= (var255,var_st) on <var255:nullable Object(MClassType)> */
4920 var_other = var_st;
4921 {
4922 var260 = ((short int (*)(val*, val*))(var255->class->vft[COLOR_kernel__Object___61d_61d]))(var255, var_other) /* == on <var255:nullable Object(MClassType)>*/;
4923 var259 = var260;
4924 }
4925 var261 = !var259;
4926 var257 = var261;
4927 goto RET_LABEL258;
4928 RET_LABEL258:(void)0;
4929 }
4930 var256 = var257;
4931 }
4932 if (var256){
4933 {
4934 { /* Inline model#MClassType#mclass (var_st) on <var_st:MClassType> */
4935 var264 = var_st->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_st:MClassType> */
4936 if (unlikely(var264 == NULL)) {
4937 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4938 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
4939 show_backtrace(1);
4940 }
4941 var262 = var264;
4942 RET_LABEL263:(void)0;
4943 }
4944 }
4945 {
4946 var265 = hash_collection__HashMap___91d_93d(var_superclasses, var262);
4947 }
4948 {
4949 { /* Inline model#MClassDef#mclass (var_mclassdef229) on <var_mclassdef229:MClassDef> */
4950 var268 = var_mclassdef229->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef229:MClassDef> */
4951 if (unlikely(var268 == NULL)) {
4952 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4953 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
4954 show_backtrace(1);
4955 }
4956 var266 = var268;
4957 RET_LABEL267:(void)0;
4958 }
4959 }
4960 {
4961 { /* Inline model#MClass#mclass_type (var266) on <var266:MClass> */
4962 var271 = var266->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var266:MClass> */
4963 if (unlikely(var271 == NULL)) {
4964 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
4965 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
4966 show_backtrace(1);
4967 }
4968 var269 = var271;
4969 RET_LABEL270:(void)0;
4970 }
4971 }
4972 {
4973 { /* Inline model#MClassDef#bound_mtype (var_mclassdef229) on <var_mclassdef229:MClassDef> */
4974 var274 = var_mclassdef229->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef229:MClassDef> */
4975 if (unlikely(var274 == NULL)) {
4976 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4977 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
4978 show_backtrace(1);
4979 }
4980 var272 = var274;
4981 RET_LABEL273:(void)0;
4982 }
4983 }
4984 var275 = 0;
4985 {
4986 var276 = ((val* (*)(val*, val*, val*, val*, short int))(var265->class->vft[COLOR_model__MType__resolve_for]))(var265, var269, var272, var_mmodule, var275) /* resolve_for on <var265:nullable Object(MClassType)>*/;
4987 }
4988 var_st1 = var276;
4989 {
4990 { /* Inline model#MClassDef#mclass (var_mclassdef229) on <var_mclassdef229:MClassDef> */
4991 var279 = var_mclassdef229->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef229:MClassDef> */
4992 if (unlikely(var279 == NULL)) {
4993 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4994 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
4995 show_backtrace(1);
4996 }
4997 var277 = var279;
4998 RET_LABEL278:(void)0;
4999 }
5000 }
5001 {
5002 { /* Inline model#MClass#mclass_type (var277) on <var277:MClass> */
5003 var282 = var277->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var277:MClass> */
5004 if (unlikely(var282 == NULL)) {
5005 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
5006 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
5007 show_backtrace(1);
5008 }
5009 var280 = var282;
5010 RET_LABEL281:(void)0;
5011 }
5012 }
5013 {
5014 { /* Inline model#MClassDef#bound_mtype (var_mclassdef229) on <var_mclassdef229:MClassDef> */
5015 var285 = var_mclassdef229->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef229:MClassDef> */
5016 if (unlikely(var285 == NULL)) {
5017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5018 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
5019 show_backtrace(1);
5020 }
5021 var283 = var285;
5022 RET_LABEL284:(void)0;
5023 }
5024 }
5025 var286 = 0;
5026 {
5027 var287 = ((val* (*)(val*, val*, val*, val*, short int))(var_st->class->vft[COLOR_model__MType__resolve_for]))(var_st, var280, var283, var_mmodule, var286) /* resolve_for on <var_st:MClassType>*/;
5028 }
5029 var_st2 = var287;
5030 {
5031 { /* Inline kernel#Object#!= (var_st1,var_st2) on <var_st1:MClassType> */
5032 var_other = var_st2;
5033 {
5034 var292 = ((short int (*)(val*, val*))(var_st1->class->vft[COLOR_kernel__Object___61d_61d]))(var_st1, var_other) /* == on <var_st1:MClassType>*/;
5035 var291 = var292;
5036 }
5037 var293 = !var291;
5038 var289 = var293;
5039 goto RET_LABEL290;
5040 RET_LABEL290:(void)0;
5041 }
5042 var288 = var289;
5043 }
5044 if (var288){
5045 if (varonce) {
5046 var294 = varonce;
5047 } else {
5048 var295 = "Error: Incompatibles ancestors for ";
5049 var296 = 35;
5050 var297 = string__NativeString__to_s_with_length(var295, var296);
5051 var294 = var297;
5052 varonce = var294;
5053 }
5054 {
5055 { /* Inline model#MClassDef#mclass (var_mclassdef229) on <var_mclassdef229:MClassDef> */
5056 var300 = var_mclassdef229->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef229:MClassDef> */
5057 if (unlikely(var300 == NULL)) {
5058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5059 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
5060 show_backtrace(1);
5061 }
5062 var298 = var300;
5063 RET_LABEL299:(void)0;
5064 }
5065 }
5066 if (varonce301) {
5067 var302 = varonce301;
5068 } else {
5069 var303 = ": ";
5070 var304 = 2;
5071 var305 = string__NativeString__to_s_with_length(var303, var304);
5072 var302 = var305;
5073 varonce301 = var302;
5074 }
5075 if (varonce306) {
5076 var307 = varonce306;
5077 } else {
5078 var308 = ", ";
5079 var309 = 2;
5080 var310 = string__NativeString__to_s_with_length(var308, var309);
5081 var307 = var310;
5082 varonce306 = var307;
5083 }
5084 var311 = NEW_array__Array(&type_array__Arraykernel__Object);
5085 { /* var311 = array_instance Array[Object] */
5086 var312 = 6;
5087 var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object);
5088 ((struct instance_array__NativeArray*)var313)->values[0] = (val*) var294;
5089 ((struct instance_array__NativeArray*)var313)->values[1] = (val*) var298;
5090 ((struct instance_array__NativeArray*)var313)->values[2] = (val*) var302;
5091 ((struct instance_array__NativeArray*)var313)->values[3] = (val*) var_st1;
5092 ((struct instance_array__NativeArray*)var313)->values[4] = (val*) var307;
5093 ((struct instance_array__NativeArray*)var313)->values[5] = (val*) var_st2;
5094 {
5095 ((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on <var311:Array[Object]>*/;
5096 }
5097 }
5098 {
5099 var314 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on <var311:Array[Object]>*/;
5100 }
5101 {
5102 modelbuilder__ModelBuilder__error(self, var_nclassdef225, var314); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
5103 }
5104 } else {
5105 }
5106 } else {
5107 }
5108 }
5109 CONTINUE_label315: (void)0;
5110 {
5111 array__ArrayIterator__next(var241); /* Direct call array#ArrayIterator#next on <var241:ArrayIterator[nullable Object]>*/
5112 }
5113 }
5114 BREAK_label315: (void)0;
5115 CONTINUE_label316: (void)0;
5116 {
5117 ((void (*)(val*))(var235->class->vft[COLOR_abstract_collection__Iterator__next]))(var235) /* next on <var235:Iterator[nullable Object]>*/;
5118 }
5119 }
5120 BREAK_label316: (void)0;
5121 CONTINUE_label317: (void)0;
5122 {
5123 ((void (*)(val*))(var222->class->vft[COLOR_abstract_collection__Iterator__next]))(var222) /* next on <var222:Iterator[ANode]>*/;
5124 }
5125 }
5126 BREAK_label317: (void)0;
5127 {
5128 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
5129 var320 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
5130 if (unlikely(var320 == NULL)) {
5131 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5132 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
5133 show_backtrace(1);
5134 }
5135 var318 = var320;
5136 RET_LABEL319:(void)0;
5137 }
5138 }
5139 {
5140 { /* Inline toolcontext#ToolContext#error_count (var318) on <var318:ToolContext> */
5141 var323 = var318->attrs[COLOR_toolcontext__ToolContext___error_count].l; /* _error_count on <var318:ToolContext> */
5142 var321 = var323;
5143 RET_LABEL322:(void)0;
5144 }
5145 }
5146 {
5147 { /* Inline kernel#Int#!= (var_errcount,var321) on <var_errcount:Int> */
5148 var327 = var_errcount == var321;
5149 var328 = !var327;
5150 var325 = var328;
5151 goto RET_LABEL326;
5152 RET_LABEL326:(void)0;
5153 }
5154 var324 = var325;
5155 }
5156 if (var324){
5157 goto RET_LABEL;
5158 } else {
5159 }
5160 {
5161 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
5162 var331 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
5163 if (unlikely(var331 == NULL)) {
5164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
5165 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 699);
5166 show_backtrace(1);
5167 }
5168 var329 = var331;
5169 RET_LABEL330:(void)0;
5170 }
5171 }
5172 {
5173 var332 = parser_nodes__ANodes__iterator(var329);
5174 }
5175 for(;;) {
5176 {
5177 var333 = ((short int (*)(val*))(var332->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var332) /* is_ok on <var332:Iterator[ANode]>*/;
5178 }
5179 if(!var333) break;
5180 {
5181 var334 = ((val* (*)(val*))(var332->class->vft[COLOR_abstract_collection__Iterator__item]))(var332) /* item on <var332:Iterator[ANode]>*/;
5182 }
5183 var_nclassdef335 = var334;
5184 /* <var_nclassdef335:AClassdef> isa AStdClassdef */
5185 cltype337 = type_parser_nodes__AStdClassdef.color;
5186 idtype338 = type_parser_nodes__AStdClassdef.id;
5187 if(cltype337 >= var_nclassdef335->type->table_size) {
5188 var336 = 0;
5189 } else {
5190 var336 = var_nclassdef335->type->type_table[cltype337] == idtype338;
5191 }
5192 var339 = !var336;
5193 if (var339){
5194 goto CONTINUE_label340;
5195 } else {
5196 }
5197 {
5198 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef335) on <var_nclassdef335:AClassdef(AStdClassdef)> */
5199 var343 = var_nclassdef335->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef335:AClassdef(AStdClassdef)> */
5200 var341 = var343;
5201 RET_LABEL342:(void)0;
5202 }
5203 }
5204 if (unlikely(var341 == NULL)) {
5205 PRINT_ERROR("Runtime error: %s", "Cast failed");
5206 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 363);
5207 show_backtrace(1);
5208 }
5209 var_mclassdef344 = var341;
5210 var345 = NEW_array__Array(&type_array__Arraymodel__MClass);
5211 {
5212 array__Array__init(var345); /* Direct call array#Array#init on <var345:Array[MClass]>*/
5213 }
5214 var_parents = var345;
5215 {
5216 { /* Inline model#MClassDef#in_hierarchy (var_mclassdef344) on <var_mclassdef344:MClassDef> */
5217 var348 = var_mclassdef344->attrs[COLOR_model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef344:MClassDef> */
5218 var346 = var348;
5219 RET_LABEL347:(void)0;
5220 }
5221 }
5222 if (var346 == NULL) {
5223 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5224 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 368);
5225 show_backtrace(1);
5226 } else {
5227 var349 = poset__POSetElement__direct_greaters(var346);
5228 }
5229 {
5230 var350 = ((val* (*)(val*))(var349->class->vft[COLOR_abstract_collection__Collection__iterator]))(var349) /* iterator on <var349:Collection[Object](Collection[MClassDef])>*/;
5231 }
5232 for(;;) {
5233 {
5234 var351 = ((short int (*)(val*))(var350->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var350) /* is_ok on <var350:Iterator[nullable Object]>*/;
5235 }
5236 if(!var351) break;
5237 {
5238 var352 = ((val* (*)(val*))(var350->class->vft[COLOR_abstract_collection__Iterator__item]))(var350) /* item on <var350:Iterator[nullable Object]>*/;
5239 }
5240 var_sup = var352;
5241 {
5242 { /* Inline model#MClassDef#mclass (var_sup) on <var_sup:MClassDef> */
5243 var355 = var_sup->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_sup:MClassDef> */
5244 if (unlikely(var355 == NULL)) {
5245 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5246 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
5247 show_backtrace(1);
5248 }
5249 var353 = var355;
5250 RET_LABEL354:(void)0;
5251 }
5252 }
5253 {
5254 array__Array__add(var_parents, var353); /* Direct call array#Array#add on <var_parents:Array[MClass]>*/
5255 }
5256 CONTINUE_label356: (void)0;
5257 {
5258 ((void (*)(val*))(var350->class->vft[COLOR_abstract_collection__Iterator__next]))(var350) /* next on <var350:Iterator[nullable Object]>*/;
5259 }
5260 }
5261 BREAK_label356: (void)0;
5262 var357 = NEW_array__ArrayMap(&type_array__ArrayMapmodel__MClassparser_nodes__AType);
5263 {
5264 array__ArrayMap__init(var357); /* Direct call array#ArrayMap#init on <var357:ArrayMap[MClass, AType]>*/
5265 }
5266 var_seen_parents = var357;
5267 if (varonce358) {
5268 var359 = varonce358;
5269 } else {
5270 var360 = "Object";
5271 var361 = 6;
5272 var362 = string__NativeString__to_s_with_length(var360, var361);
5273 var359 = var362;
5274 varonce358 = var359;
5275 }
5276 {
5277 var363 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_nmodule, var_mmodule, var359);
5278 }
5279 var_objectclass = var363;
5280 {
5281 { /* Inline parser_nodes#AStdClassdef#n_superclasses (var_nclassdef335) on <var_nclassdef335:AClassdef(AStdClassdef)> */
5282 var366 = var_nclassdef335->attrs[COLOR_parser_nodes__AStdClassdef___n_superclasses].val; /* _n_superclasses on <var_nclassdef335:AClassdef(AStdClassdef)> */
5283 if (unlikely(var366 == NULL)) {
5284 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_superclasses");
5285 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 828);
5286 show_backtrace(1);
5287 }
5288 var364 = var366;
5289 RET_LABEL365:(void)0;
5290 }
5291 }
5292 {
5293 var367 = parser_nodes__ANodes__iterator(var364);
5294 }
5295 for(;;) {
5296 {
5297 var368 = ((short int (*)(val*))(var367->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var367) /* is_ok on <var367:Iterator[ANode]>*/;
5298 }
5299 if(!var368) break;
5300 {
5301 var369 = ((val* (*)(val*))(var367->class->vft[COLOR_abstract_collection__Iterator__item]))(var367) /* item on <var367:Iterator[ANode]>*/;
5302 }
5303 var_nsc370 = var369;
5304 {
5305 var371 = parser_nodes__ASuperclass__n_type(var_nsc370);
5306 }
5307 var_ntype372 = var371;
5308 {
5309 { /* Inline modelize_class#AType#mtype (var_ntype372) on <var_ntype372:AType> */
5310 var375 = var_ntype372->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <var_ntype372:AType> */
5311 var373 = var375;
5312 RET_LABEL374:(void)0;
5313 }
5314 }
5315 var_mtype376 = var373;
5316 var377 = NULL;
5317 if (var_mtype376 == NULL) {
5318 var378 = 1; /* is null */
5319 } else {
5320 var378 = 0; /* arg is null but recv is not */
5321 }
5322 if (0) {
5323 { /* Inline kernel#Object#== (var_mtype376,var377) on <var_mtype376:nullable MType> */
5324 var_other176 = var377;
5325 {
5326 { /* Inline kernel#Object#is_same_instance (var_mtype376,var_other176) on <var_mtype376:nullable MType(MType)> */
5327 var383 = var_mtype376 == var_other176;
5328 var381 = var383;
5329 goto RET_LABEL382;
5330 RET_LABEL382:(void)0;
5331 }
5332 }
5333 var379 = var381;
5334 goto RET_LABEL380;
5335 RET_LABEL380:(void)0;
5336 }
5337 var378 = var379;
5338 }
5339 if (var378){
5340 goto CONTINUE_label384;
5341 } else {
5342 }
5343 /* <var_mtype376:nullable MType(MType)> isa MClassType */
5344 cltype386 = type_model__MClassType.color;
5345 idtype387 = type_model__MClassType.id;
5346 if(cltype386 >= var_mtype376->type->table_size) {
5347 var385 = 0;
5348 } else {
5349 var385 = var_mtype376->type->type_table[cltype386] == idtype387;
5350 }
5351 if (unlikely(!var385)) {
5352 PRINT_ERROR("Runtime error: %s", "Assert failed");
5353 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 383);
5354 show_backtrace(1);
5355 }
5356 {
5357 { /* Inline model#MClassType#mclass (var_mtype376) on <var_mtype376:nullable MType(MClassType)> */
5358 var390 = var_mtype376->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype376:nullable MType(MClassType)> */
5359 if (unlikely(var390 == NULL)) {
5360 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5361 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
5362 show_backtrace(1);
5363 }
5364 var388 = var390;
5365 RET_LABEL389:(void)0;
5366 }
5367 }
5368 var_sc = var388;
5369 {
5370 var392 = array__AbstractArrayRead__has(var_parents, var_sc);
5371 }
5372 var393 = !var392;
5373 var_394 = var393;
5374 if (var393){
5375 var391 = var_394;
5376 } else {
5377 {
5378 { /* Inline kernel#Object#== (var_sc,var_objectclass) on <var_sc:MClass> */
5379 var_other176 = var_objectclass;
5380 {
5381 { /* Inline kernel#Object#is_same_instance (var_sc,var_other176) on <var_sc:MClass> */
5382 var400 = var_sc == var_other176;
5383 var398 = var400;
5384 goto RET_LABEL399;
5385 RET_LABEL399:(void)0;
5386 }
5387 }
5388 var396 = var398;
5389 goto RET_LABEL397;
5390 RET_LABEL397:(void)0;
5391 }
5392 var395 = var396;
5393 }
5394 var391 = var395;
5395 }
5396 if (var391){
5397 {
5398 var402 = parser_nodes__ANode__location(var_ntype372);
5399 }
5400 {
5401 { /* Inline location#Location#file (var402) on <var402:Location> */
5402 var405 = var402->attrs[COLOR_location__Location___file].val; /* _file on <var402:Location> */
5403 var403 = var405;
5404 RET_LABEL404:(void)0;
5405 }
5406 }
5407 var406 = NULL;
5408 if (var403 == NULL) {
5409 var407 = 0; /* is null */
5410 } else {
5411 var407 = 1; /* arg is null and recv is not */
5412 }
5413 if (0) {
5414 { /* Inline kernel#Object#!= (var403,var406) on <var403:nullable SourceFile> */
5415 var_other = var406;
5416 {
5417 var411 = ((short int (*)(val*, val*))(var403->class->vft[COLOR_kernel__Object___61d_61d]))(var403, var_other) /* == on <var403:nullable SourceFile(SourceFile)>*/;
5418 var410 = var411;
5419 }
5420 var412 = !var410;
5421 var408 = var412;
5422 goto RET_LABEL409;
5423 RET_LABEL409:(void)0;
5424 }
5425 var407 = var408;
5426 }
5427 var_413 = var407;
5428 if (var407){
5429 {
5430 var414 = parser_nodes__ANode__location(var_ntype372);
5431 }
5432 {
5433 { /* Inline location#Location#file (var414) on <var414:Location> */
5434 var417 = var414->attrs[COLOR_location__Location___file].val; /* _file on <var414:Location> */
5435 var415 = var417;
5436 RET_LABEL416:(void)0;
5437 }
5438 }
5439 if (var415 == NULL) {
5440 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5441 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 387);
5442 show_backtrace(1);
5443 } else {
5444 { /* Inline location#SourceFile#filename (var415) on <var415:nullable SourceFile> */
5445 if (unlikely(var415 == NULL)) {
5446 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5447 PRINT_ERROR(" (%s:%d)\n", "src/location.nit", 22);
5448 show_backtrace(1);
5449 }
5450 var420 = var415->attrs[COLOR_location__SourceFile___filename].val; /* _filename on <var415:nullable SourceFile> */
5451 if (unlikely(var420 == NULL)) {
5452 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
5453 PRINT_ERROR(" (%s:%d)\n", "src/location.nit", 22);
5454 show_backtrace(1);
5455 }
5456 var418 = var420;
5457 RET_LABEL419:(void)0;
5458 }
5459 }
5460 {
5461 var421 = string__Text__is_empty(var418);
5462 }
5463 var422 = !var421;
5464 var401 = var422;
5465 } else {
5466 var401 = var_413;
5467 }
5468 if (var401){
5469 if (varonce423) {
5470 var424 = varonce423;
5471 } else {
5472 var425 = "Warning: superfluous super-class ";
5473 var426 = 33;
5474 var427 = string__NativeString__to_s_with_length(var425, var426);
5475 var424 = var427;
5476 varonce423 = var424;
5477 }
5478 if (varonce428) {
5479 var429 = varonce428;
5480 } else {
5481 var430 = " in class ";
5482 var431 = 10;
5483 var432 = string__NativeString__to_s_with_length(var430, var431);
5484 var429 = var432;
5485 varonce428 = var429;
5486 }
5487 {
5488 { /* Inline model#MClassDef#mclass (var_mclassdef344) on <var_mclassdef344:MClassDef> */
5489 var435 = var_mclassdef344->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef344:MClassDef> */
5490 if (unlikely(var435 == NULL)) {
5491 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5492 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
5493 show_backtrace(1);
5494 }
5495 var433 = var435;
5496 RET_LABEL434:(void)0;
5497 }
5498 }
5499 if (varonce436) {
5500 var437 = varonce436;
5501 } else {
5502 var438 = ".";
5503 var439 = 1;
5504 var440 = string__NativeString__to_s_with_length(var438, var439);
5505 var437 = var440;
5506 varonce436 = var437;
5507 }
5508 var441 = NEW_array__Array(&type_array__Arraykernel__Object);
5509 { /* var441 = array_instance Array[Object] */
5510 var442 = 5;
5511 var443 = NEW_array__NativeArray(var442, &type_array__NativeArraykernel__Object);
5512 ((struct instance_array__NativeArray*)var443)->values[0] = (val*) var424;
5513 ((struct instance_array__NativeArray*)var443)->values[1] = (val*) var_mtype376;
5514 ((struct instance_array__NativeArray*)var443)->values[2] = (val*) var429;
5515 ((struct instance_array__NativeArray*)var443)->values[3] = (val*) var433;
5516 ((struct instance_array__NativeArray*)var443)->values[4] = (val*) var437;
5517 {
5518 ((void (*)(val*, val*, long))(var441->class->vft[COLOR_array__Array__with_native]))(var441, var443, var442) /* with_native on <var441:Array[Object]>*/;
5519 }
5520 }
5521 {
5522 var444 = ((val* (*)(val*))(var441->class->vft[COLOR_string__Object__to_s]))(var441) /* to_s on <var441:Array[Object]>*/;
5523 }
5524 {
5525 modelbuilder__ModelBuilder__warning(self, var_ntype372, var444); /* Direct call modelbuilder#ModelBuilder#warning on <self:ModelBuilder>*/
5526 }
5527 } else {
5528 }
5529 } else {
5530 {
5531 var445 = abstract_collection__MapRead__has_key(var_seen_parents, var_sc);
5532 }
5533 var446 = !var445;
5534 if (var446){
5535 {
5536 array__ArrayMap___91d_93d_61d(var_seen_parents, var_sc, var_ntype372); /* Direct call array#ArrayMap#[]= on <var_seen_parents:ArrayMap[MClass, AType]>*/
5537 }
5538 } else {
5539 if (varonce447) {
5540 var448 = varonce447;
5541 } else {
5542 var449 = "Warning: duplicated super-class ";
5543 var450 = 32;
5544 var451 = string__NativeString__to_s_with_length(var449, var450);
5545 var448 = var451;
5546 varonce447 = var448;
5547 }
5548 if (varonce452) {
5549 var453 = varonce452;
5550 } else {
5551 var454 = " in class ";
5552 var455 = 10;
5553 var456 = string__NativeString__to_s_with_length(var454, var455);
5554 var453 = var456;
5555 varonce452 = var453;
5556 }
5557 {
5558 { /* Inline model#MClassDef#mclass (var_mclassdef344) on <var_mclassdef344:MClassDef> */
5559 var459 = var_mclassdef344->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef344:MClassDef> */
5560 if (unlikely(var459 == NULL)) {
5561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5562 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
5563 show_backtrace(1);
5564 }
5565 var457 = var459;
5566 RET_LABEL458:(void)0;
5567 }
5568 }
5569 if (varonce460) {
5570 var461 = varonce460;
5571 } else {
5572 var462 = ".";
5573 var463 = 1;
5574 var464 = string__NativeString__to_s_with_length(var462, var463);
5575 var461 = var464;
5576 varonce460 = var461;
5577 }
5578 var465 = NEW_array__Array(&type_array__Arraykernel__Object);
5579 { /* var465 = array_instance Array[Object] */
5580 var466 = 5;
5581 var467 = NEW_array__NativeArray(var466, &type_array__NativeArraykernel__Object);
5582 ((struct instance_array__NativeArray*)var467)->values[0] = (val*) var448;
5583 ((struct instance_array__NativeArray*)var467)->values[1] = (val*) var_mtype376;
5584 ((struct instance_array__NativeArray*)var467)->values[2] = (val*) var453;
5585 ((struct instance_array__NativeArray*)var467)->values[3] = (val*) var457;
5586 ((struct instance_array__NativeArray*)var467)->values[4] = (val*) var461;
5587 {
5588 ((void (*)(val*, val*, long))(var465->class->vft[COLOR_array__Array__with_native]))(var465, var467, var466) /* with_native on <var465:Array[Object]>*/;
5589 }
5590 }
5591 {
5592 var468 = ((val* (*)(val*))(var465->class->vft[COLOR_string__Object__to_s]))(var465) /* to_s on <var465:Array[Object]>*/;
5593 }
5594 {
5595 modelbuilder__ModelBuilder__warning(self, var_ntype372, var468); /* Direct call modelbuilder#ModelBuilder#warning on <self:ModelBuilder>*/
5596 }
5597 }
5598 }
5599 CONTINUE_label384: (void)0;
5600 {
5601 ((void (*)(val*))(var367->class->vft[COLOR_abstract_collection__Iterator__next]))(var367) /* next on <var367:Iterator[ANode]>*/;
5602 }
5603 }
5604 BREAK_label384: (void)0;
5605 CONTINUE_label340: (void)0;
5606 {
5607 ((void (*)(val*))(var332->class->vft[COLOR_abstract_collection__Iterator__next]))(var332) /* next on <var332:Iterator[ANode]>*/;
5608 }
5609 }
5610 BREAK_label340: (void)0;
5611 RET_LABEL:;
5612 }
5613 /* method modelize_class#ModelBuilder#build_classes for (self: Object, AModule) */
5614 void VIRTUAL_modelize_class__ModelBuilder__build_classes(val* self, val* p0) {
5615 modelize_class__ModelBuilder__build_classes(self, p0); /* Direct call modelize_class#ModelBuilder#build_classes on <self:Object(ModelBuilder)>*/
5616 RET_LABEL:;
5617 }
5618 /* method modelize_class#ModelBuilder#mclassdef2nclassdef for (self: ModelBuilder): HashMap[MClassDef, AClassdef] */
5619 val* modelize_class__ModelBuilder__mclassdef2nclassdef(val* self) {
5620 val* var /* : HashMap[MClassDef, AClassdef] */;
5621 val* var1 /* : HashMap[MClassDef, AClassdef] */;
5622 var1 = self->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
5623 if (unlikely(var1 == NULL)) {
5624 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
5625 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 399);
5626 show_backtrace(1);
5627 }
5628 var = var1;
5629 RET_LABEL:;
5630 return var;
5631 }
5632 /* method modelize_class#ModelBuilder#mclassdef2nclassdef for (self: Object): HashMap[MClassDef, AClassdef] */
5633 val* VIRTUAL_modelize_class__ModelBuilder__mclassdef2nclassdef(val* self) {
5634 val* var /* : HashMap[MClassDef, AClassdef] */;
5635 val* var1 /* : HashMap[MClassDef, AClassdef] */;
5636 val* var3 /* : HashMap[MClassDef, AClassdef] */;
5637 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:Object(ModelBuilder)> */
5638 var3 = self->attrs[COLOR_modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:Object(ModelBuilder)> */
5639 if (unlikely(var3 == NULL)) {
5640 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
5641 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 399);
5642 show_backtrace(1);
5643 }
5644 var1 = var3;
5645 RET_LABEL2:(void)0;
5646 }
5647 var = var1;
5648 RET_LABEL:;
5649 return var;
5650 }
5651 /* method modelize_class#ModelBuilder#resolve_mtype_unchecked for (self: ModelBuilder, MModule, nullable MClassDef, AType, Bool): nullable MType */
5652 val* modelize_class__ModelBuilder__resolve_mtype_unchecked(val* self, val* p0, val* p1, val* p2, short int p3) {
5653 val* var /* : nullable MType */;
5654 val* var_mmodule /* var mmodule: MModule */;
5655 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
5656 val* var_ntype /* var ntype: AType */;
5657 short int var_with_virtual /* var with_virtual: Bool */;
5658 val* var1 /* : TClassid */;
5659 val* var2 /* : String */;
5660 val* var_name /* var name: String */;
5661 short int var3 /* : Bool */;
5662 val* var4 /* : null */;
5663 short int var5 /* : Bool */;
5664 short int var6 /* : Bool */;
5665 val* var_other /* var other: nullable Object */;
5666 short int var8 /* : Bool */;
5667 short int var9 /* : Bool */;
5668 short int var10 /* : Bool */;
5669 short int var_ /* var : Bool */;
5670 val* var11 /* : nullable MProperty */;
5671 short int var12 /* : Bool */;
5672 int cltype;
5673 int idtype;
5674 const char* var_class_name;
5675 val* var_prop /* var prop: nullable MVirtualTypeProp */;
5676 val* var13 /* : null */;
5677 short int var14 /* : Bool */;
5678 short int var15 /* : Bool */;
5679 short int var17 /* : Bool */;
5680 short int var18 /* : Bool */;
5681 short int var19 /* : Bool */;
5682 val* var20 /* : ANodes[AType] */;
5683 val* var22 /* : ANodes[AType] */;
5684 short int var23 /* : Bool */;
5685 short int var24 /* : Bool */;
5686 static val* varonce;
5687 val* var25 /* : String */;
5688 char* var26 /* : NativeString */;
5689 long var27 /* : Int */;
5690 val* var28 /* : FlatString */;
5691 static val* varonce29;
5692 val* var30 /* : String */;
5693 char* var31 /* : NativeString */;
5694 long var32 /* : Int */;
5695 val* var33 /* : FlatString */;
5696 val* var34 /* : Array[Object] */;
5697 long var35 /* : Int */;
5698 val* var36 /* : NativeArray[Object] */;
5699 val* var37 /* : String */;
5700 val* var38 /* : MVirtualType */;
5701 val* var40 /* : MVirtualType */;
5702 val* var_res /* var res: MType */;
5703 val* var41 /* : nullable TKwnullable */;
5704 val* var42 /* : null */;
5705 short int var43 /* : Bool */;
5706 short int var44 /* : Bool */;
5707 short int var46 /* : Bool */;
5708 short int var47 /* : Bool */;
5709 short int var48 /* : Bool */;
5710 val* var49 /* : MType */;
5711 short int var51 /* : Bool */;
5712 val* var52 /* : null */;
5713 short int var53 /* : Bool */;
5714 short int var54 /* : Bool */;
5715 short int var56 /* : Bool */;
5716 short int var57 /* : Bool */;
5717 short int var58 /* : Bool */;
5718 short int var_59 /* var : Bool */;
5719 val* var60 /* : Array[String] */;
5720 val* var62 /* : Array[String] */;
5721 short int var63 /* : Bool */;
5722 val* var64 /* : ANodes[AType] */;
5723 val* var66 /* : ANodes[AType] */;
5724 short int var67 /* : Bool */;
5725 short int var68 /* : Bool */;
5726 static val* varonce69;
5727 val* var70 /* : String */;
5728 char* var71 /* : NativeString */;
5729 long var72 /* : Int */;
5730 val* var73 /* : FlatString */;
5731 static val* varonce74;
5732 val* var75 /* : String */;
5733 char* var76 /* : NativeString */;
5734 long var77 /* : Int */;
5735 val* var78 /* : FlatString */;
5736 val* var79 /* : Array[Object] */;
5737 long var80 /* : Int */;
5738 val* var81 /* : NativeArray[Object] */;
5739 val* var82 /* : String */;
5740 val* var83 /* : Range[Int] */;
5741 long var84 /* : Int */;
5742 val* var85 /* : Array[String] */;
5743 val* var87 /* : Array[String] */;
5744 long var88 /* : Int */;
5745 val* var89 /* : Discrete */;
5746 val* var90 /* : Discrete */;
5747 val* var91 /* : Iterator[Discrete] */;
5748 short int var92 /* : Bool */;
5749 val* var93 /* : nullable Object */;
5750 long var_i /* var i: Int */;
5751 long var94 /* : Int */;
5752 val* var95 /* : Array[String] */;
5753 val* var97 /* : Array[String] */;
5754 val* var98 /* : nullable Object */;
5755 short int var99 /* : Bool */;
5756 short int var100 /* : Bool */;
5757 val* var101 /* : MClass */;
5758 val* var103 /* : MClass */;
5759 val* var104 /* : MClassType */;
5760 val* var106 /* : MClassType */;
5761 val* var107 /* : Array[MType] */;
5762 val* var109 /* : Array[MType] */;
5763 val* var110 /* : nullable Object */;
5764 val* var111 /* : nullable TKwnullable */;
5765 val* var112 /* : null */;
5766 short int var113 /* : Bool */;
5767 short int var114 /* : Bool */;
5768 short int var116 /* : Bool */;
5769 short int var117 /* : Bool */;
5770 short int var118 /* : Bool */;
5771 val* var119 /* : MType */;
5772 val* var121 /* : nullable MClass */;
5773 val* var_mclass /* var mclass: nullable MClass */;
5774 val* var122 /* : null */;
5775 short int var123 /* : Bool */;
5776 short int var124 /* : Bool */;
5777 short int var126 /* : Bool */;
5778 short int var127 /* : Bool */;
5779 short int var128 /* : Bool */;
5780 val* var129 /* : ANodes[AType] */;
5781 val* var131 /* : ANodes[AType] */;
5782 long var132 /* : Int */;
5783 long var_arity /* var arity: Int */;
5784 long var133 /* : Int */;
5785 long var135 /* : Int */;
5786 short int var136 /* : Bool */;
5787 short int var137 /* : Bool */;
5788 short int var139 /* : Bool */;
5789 short int var140 /* : Bool */;
5790 long var141 /* : Int */;
5791 short int var142 /* : Bool */;
5792 short int var143 /* : Bool */;
5793 short int var145 /* : Bool */;
5794 static val* varonce146;
5795 val* var147 /* : String */;
5796 char* var148 /* : NativeString */;
5797 long var149 /* : Int */;
5798 val* var150 /* : FlatString */;
5799 static val* varonce151;
5800 val* var152 /* : String */;
5801 char* var153 /* : NativeString */;
5802 long var154 /* : Int */;
5803 val* var155 /* : FlatString */;
5804 val* var156 /* : Array[Object] */;
5805 long var157 /* : Int */;
5806 val* var158 /* : NativeArray[Object] */;
5807 val* var159 /* : String */;
5808 long var160 /* : Int */;
5809 long var162 /* : Int */;
5810 long var163 /* : Int */;
5811 short int var164 /* : Bool */;
5812 short int var165 /* : Bool */;
5813 short int var167 /* : Bool */;
5814 static val* varonce168;
5815 val* var169 /* : String */;
5816 char* var170 /* : NativeString */;
5817 long var171 /* : Int */;
5818 val* var172 /* : FlatString */;
5819 static val* varonce173;
5820 val* var174 /* : String */;
5821 char* var175 /* : NativeString */;
5822 long var176 /* : Int */;
5823 val* var177 /* : FlatString */;
5824 val* var178 /* : Array[Object] */;
5825 long var179 /* : Int */;
5826 val* var180 /* : NativeArray[Object] */;
5827 val* var181 /* : String */;
5828 static val* varonce182;
5829 val* var183 /* : String */;
5830 char* var184 /* : NativeString */;
5831 long var185 /* : Int */;
5832 val* var186 /* : FlatString */;
5833 static val* varonce187;
5834 val* var188 /* : String */;
5835 char* var189 /* : NativeString */;
5836 long var190 /* : Int */;
5837 val* var191 /* : FlatString */;
5838 long var192 /* : Int */;
5839 long var194 /* : Int */;
5840 static val* varonce195;
5841 val* var196 /* : String */;
5842 char* var197 /* : NativeString */;
5843 long var198 /* : Int */;
5844 val* var199 /* : FlatString */;
5845 static val* varonce200;
5846 val* var201 /* : String */;
5847 char* var202 /* : NativeString */;
5848 long var203 /* : Int */;
5849 val* var204 /* : FlatString */;
5850 val* var205 /* : Array[Object] */;
5851 long var206 /* : Int */;
5852 val* var207 /* : NativeArray[Object] */;
5853 val* var208 /* : Object */;
5854 val* var209 /* : Object */;
5855 val* var210 /* : String */;
5856 val* var211 /* : null */;
5857 long var212 /* : Int */;
5858 short int var213 /* : Bool */;
5859 short int var214 /* : Bool */;
5860 short int var216 /* : Bool */;
5861 val* var217 /* : MClassType */;
5862 val* var219 /* : MClassType */;
5863 val* var220 /* : nullable TKwnullable */;
5864 val* var221 /* : null */;
5865 short int var222 /* : Bool */;
5866 short int var223 /* : Bool */;
5867 short int var225 /* : Bool */;
5868 short int var226 /* : Bool */;
5869 short int var227 /* : Bool */;
5870 val* var228 /* : MType */;
5871 val* var230 /* : Array[MType] */;
5872 val* var_mtypes /* var mtypes: Array[MType] */;
5873 val* var231 /* : ANodes[AType] */;
5874 val* var233 /* : ANodes[AType] */;
5875 val* var234 /* : Iterator[ANode] */;
5876 short int var235 /* : Bool */;
5877 val* var236 /* : nullable Object */;
5878 val* var_nt /* var nt: AType */;
5879 val* var237 /* : nullable MType */;
5880 val* var_mt /* var mt: nullable MType */;
5881 val* var238 /* : null */;
5882 short int var239 /* : Bool */;
5883 short int var240 /* : Bool */;
5884 val* var_other242 /* var other: nullable Object */;
5885 short int var243 /* : Bool */;
5886 short int var245 /* : Bool */;
5887 val* var246 /* : null */;
5888 val* var248 /* : MClassType */;
5889 val* var249 /* : nullable TKwnullable */;
5890 val* var250 /* : null */;
5891 short int var251 /* : Bool */;
5892 short int var252 /* : Bool */;
5893 short int var254 /* : Bool */;
5894 short int var255 /* : Bool */;
5895 short int var256 /* : Bool */;
5896 val* var257 /* : MType */;
5897 static val* varonce259;
5898 val* var260 /* : String */;
5899 char* var261 /* : NativeString */;
5900 long var262 /* : Int */;
5901 val* var263 /* : FlatString */;
5902 static val* varonce264;
5903 val* var265 /* : String */;
5904 char* var266 /* : NativeString */;
5905 long var267 /* : Int */;
5906 val* var268 /* : FlatString */;
5907 static val* varonce269;
5908 val* var270 /* : String */;
5909 char* var271 /* : NativeString */;
5910 long var272 /* : Int */;
5911 val* var273 /* : FlatString */;
5912 val* var274 /* : Array[Object] */;
5913 long var275 /* : Int */;
5914 val* var276 /* : NativeArray[Object] */;
5915 val* var277 /* : String */;
5916 val* var278 /* : null */;
5917 var_mmodule = p0;
5918 var_mclassdef = p1;
5919 var_ntype = p2;
5920 var_with_virtual = p3;
5921 {
5922 var1 = parser_nodes__AType__n_id(var_ntype);
5923 }
5924 {
5925 var2 = lexer_work__Token__text(var1);
5926 }
5927 var_name = var2;
5928 var4 = NULL;
5929 if (var_mclassdef == NULL) {
5930 var5 = 0; /* is null */
5931 } else {
5932 var5 = 1; /* arg is null and recv is not */
5933 }
5934 if (0) {
5935 { /* Inline kernel#Object#!= (var_mclassdef,var4) on <var_mclassdef:nullable MClassDef> */
5936 var_other = var4;
5937 {
5938 var9 = ((short int (*)(val*, val*))(var_mclassdef->class->vft[COLOR_kernel__Object___61d_61d]))(var_mclassdef, var_other) /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
5939 var8 = var9;
5940 }
5941 var10 = !var8;
5942 var6 = var10;
5943 goto RET_LABEL7;
5944 RET_LABEL7:(void)0;
5945 }
5946 var5 = var6;
5947 }
5948 var_ = var5;
5949 if (var5){
5950 var3 = var_with_virtual;
5951 } else {
5952 var3 = var_;
5953 }
5954 if (var3){
5955 {
5956 var11 = modelbuilder__ModelBuilder__try_get_mproperty_by_name(self, var_ntype, var_mclassdef, var_name);
5957 }
5958 /* <var11:nullable MProperty> isa nullable MVirtualTypeProp */
5959 cltype = type_nullable_model__MVirtualTypeProp.color;
5960 idtype = type_nullable_model__MVirtualTypeProp.id;
5961 if(var11 == NULL) {
5962 var12 = 1;
5963 } else {
5964 if(cltype >= var11->type->table_size) {
5965 var12 = 0;
5966 } else {
5967 var12 = var11->type->type_table[cltype] == idtype;
5968 }
5969 }
5970 if (unlikely(!var12)) {
5971 var_class_name = var11 == NULL ? "null" : var11->type->name;
5972 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MVirtualTypeProp", var_class_name);
5973 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 414);
5974 show_backtrace(1);
5975 }
5976 var_prop = var11;
5977 var13 = NULL;
5978 if (var_prop == NULL) {
5979 var14 = 0; /* is null */
5980 } else {
5981 var14 = 1; /* arg is null and recv is not */
5982 }
5983 if (0) {
5984 { /* Inline kernel#Object#!= (var_prop,var13) on <var_prop:nullable MVirtualTypeProp> */
5985 var_other = var13;
5986 {
5987 var18 = ((short int (*)(val*, val*))(var_prop->class->vft[COLOR_kernel__Object___61d_61d]))(var_prop, var_other) /* == on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)>*/;
5988 var17 = var18;
5989 }
5990 var19 = !var17;
5991 var15 = var19;
5992 goto RET_LABEL16;
5993 RET_LABEL16:(void)0;
5994 }
5995 var14 = var15;
5996 }
5997 if (var14){
5998 {
5999 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
6000 var22 = var_ntype->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
6001 if (unlikely(var22 == NULL)) {
6002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
6003 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1397);
6004 show_backtrace(1);
6005 }
6006 var20 = var22;
6007 RET_LABEL21:(void)0;
6008 }
6009 }
6010 {
6011 var23 = parser_nodes__ANodes__is_empty(var20);
6012 }
6013 var24 = !var23;
6014 if (var24){
6015 if (varonce) {
6016 var25 = varonce;
6017 } else {
6018 var26 = "Type error: formal type ";
6019 var27 = 24;
6020 var28 = string__NativeString__to_s_with_length(var26, var27);
6021 var25 = var28;
6022 varonce = var25;
6023 }
6024 if (varonce29) {
6025 var30 = varonce29;
6026 } else {
6027 var31 = " cannot have formal parameters.";
6028 var32 = 31;
6029 var33 = string__NativeString__to_s_with_length(var31, var32);
6030 var30 = var33;
6031 varonce29 = var30;
6032 }
6033 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
6034 { /* var34 = array_instance Array[Object] */
6035 var35 = 3;
6036 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
6037 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var25;
6038 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_name;
6039 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var30;
6040 {
6041 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
6042 }
6043 }
6044 {
6045 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
6046 }
6047 {
6048 modelbuilder__ModelBuilder__error(self, var_ntype, var37); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
6049 }
6050 } else {
6051 }
6052 {
6053 { /* Inline model#MVirtualTypeProp#mvirtualtype (var_prop) on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)> */
6054 var40 = var_prop->attrs[COLOR_model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)> */
6055 if (unlikely(var40 == NULL)) {
6056 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
6057 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1858);
6058 show_backtrace(1);
6059 }
6060 var38 = var40;
6061 RET_LABEL39:(void)0;
6062 }
6063 }
6064 var_res = var38;
6065 {
6066 var41 = parser_nodes__AType__n_kwnullable(var_ntype);
6067 }
6068 var42 = NULL;
6069 if (var41 == NULL) {
6070 var43 = 0; /* is null */
6071 } else {
6072 var43 = 1; /* arg is null and recv is not */
6073 }
6074 if (0) {
6075 { /* Inline kernel#Object#!= (var41,var42) on <var41:nullable TKwnullable> */
6076 var_other = var42;
6077 {
6078 var47 = ((short int (*)(val*, val*))(var41->class->vft[COLOR_kernel__Object___61d_61d]))(var41, var_other) /* == on <var41:nullable TKwnullable(TKwnullable)>*/;
6079 var46 = var47;
6080 }
6081 var48 = !var46;
6082 var44 = var48;
6083 goto RET_LABEL45;
6084 RET_LABEL45:(void)0;
6085 }
6086 var43 = var44;
6087 }
6088 if (var43){
6089 {
6090 var49 = model__MType__as_nullable(var_res);
6091 }
6092 var_res = var49;
6093 } else {
6094 }
6095 {
6096 { /* Inline modelize_class#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
6097 var_ntype->attrs[COLOR_modelize_class__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
6098 RET_LABEL50:(void)0;
6099 }
6100 }
6101 var = var_res;
6102 goto RET_LABEL;
6103 } else {
6104 }
6105 } else {
6106 }
6107 var52 = NULL;
6108 if (var_mclassdef == NULL) {
6109 var53 = 0; /* is null */
6110 } else {
6111 var53 = 1; /* arg is null and recv is not */
6112 }
6113 if (0) {
6114 { /* Inline kernel#Object#!= (var_mclassdef,var52) on <var_mclassdef:nullable MClassDef> */
6115 var_other = var52;
6116 {
6117 var57 = ((short int (*)(val*, val*))(var_mclassdef->class->vft[COLOR_kernel__Object___61d_61d]))(var_mclassdef, var_other) /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
6118 var56 = var57;
6119 }
6120 var58 = !var56;
6121 var54 = var58;
6122 goto RET_LABEL55;
6123 RET_LABEL55:(void)0;
6124 }
6125 var53 = var54;
6126 }
6127 var_59 = var53;
6128 if (var53){
6129 {
6130 { /* Inline model#MClassDef#parameter_names (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
6131 var62 = var_mclassdef->attrs[COLOR_model__MClassDef___parameter_names].val; /* _parameter_names on <var_mclassdef:nullable MClassDef(MClassDef)> */
6132 if (unlikely(var62 == NULL)) {
6133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parameter_names");
6134 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 489);
6135 show_backtrace(1);
6136 }
6137 var60 = var62;
6138 RET_LABEL61:(void)0;
6139 }
6140 }
6141 {
6142 var63 = array__AbstractArrayRead__has(var60, var_name);
6143 }
6144 var51 = var63;
6145 } else {
6146 var51 = var_59;
6147 }
6148 if (var51){
6149 {
6150 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
6151 var66 = var_ntype->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
6152 if (unlikely(var66 == NULL)) {
6153 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
6154 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1397);
6155 show_backtrace(1);
6156 }
6157 var64 = var66;
6158 RET_LABEL65:(void)0;
6159 }
6160 }
6161 {
6162 var67 = parser_nodes__ANodes__is_empty(var64);
6163 }
6164 var68 = !var67;
6165 if (var68){
6166 if (varonce69) {
6167 var70 = varonce69;
6168 } else {
6169 var71 = "Type error: formal type ";
6170 var72 = 24;
6171 var73 = string__NativeString__to_s_with_length(var71, var72);
6172 var70 = var73;
6173 varonce69 = var70;
6174 }
6175 if (varonce74) {
6176 var75 = varonce74;
6177 } else {
6178 var76 = " cannot have formal parameters.";
6179 var77 = 31;
6180 var78 = string__NativeString__to_s_with_length(var76, var77);
6181 var75 = var78;
6182 varonce74 = var75;
6183 }
6184 var79 = NEW_array__Array(&type_array__Arraykernel__Object);
6185 { /* var79 = array_instance Array[Object] */
6186 var80 = 3;
6187 var81 = NEW_array__NativeArray(var80, &type_array__NativeArraykernel__Object);
6188 ((struct instance_array__NativeArray*)var81)->values[0] = (val*) var70;
6189 ((struct instance_array__NativeArray*)var81)->values[1] = (val*) var_name;
6190 ((struct instance_array__NativeArray*)var81)->values[2] = (val*) var75;
6191 {
6192 ((void (*)(val*, val*, long))(var79->class->vft[COLOR_array__Array__with_native]))(var79, var81, var80) /* with_native on <var79:Array[Object]>*/;
6193 }
6194 }
6195 {
6196 var82 = ((val* (*)(val*))(var79->class->vft[COLOR_string__Object__to_s]))(var79) /* to_s on <var79:Array[Object]>*/;
6197 }
6198 {
6199 modelbuilder__ModelBuilder__error(self, var_ntype, var82); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
6200 }
6201 } else {
6202 }
6203 var83 = NEW_range__Range(&type_range__Rangekernel__Int);
6204 var84 = 0;
6205 {
6206 { /* Inline model#MClassDef#parameter_names (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
6207 var87 = var_mclassdef->attrs[COLOR_model__MClassDef___parameter_names].val; /* _parameter_names on <var_mclassdef:nullable MClassDef(MClassDef)> */
6208 if (unlikely(var87 == NULL)) {
6209 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parameter_names");
6210 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 489);
6211 show_backtrace(1);
6212 }
6213 var85 = var87;
6214 RET_LABEL86:(void)0;
6215 }
6216 }
6217 {
6218 var88 = array__AbstractArrayRead__length(var85);
6219 }
6220 {
6221 var89 = BOX_kernel__Int(var84); /* autobox from Int to Discrete */
6222 var90 = BOX_kernel__Int(var88); /* autobox from Int to Discrete */
6223 range__Range__without_last(var83, var89, var90); /* Direct call range#Range#without_last on <var83:Range[Int]>*/
6224 }
6225 {
6226 var91 = range__Range__iterator(var83);
6227 }
6228 for(;;) {
6229 {
6230 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[Discrete]>*/;
6231 }
6232 if(!var92) break;
6233 {
6234 var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on <var91:Iterator[Discrete]>*/;
6235 }
6236 var94 = ((struct instance_kernel__Int*)var93)->value; /* autounbox from nullable Object to Int */;
6237 var_i = var94;
6238 {
6239 { /* Inline model#MClassDef#parameter_names (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
6240 var97 = var_mclassdef->attrs[COLOR_model__MClassDef___parameter_names].val; /* _parameter_names on <var_mclassdef:nullable MClassDef(MClassDef)> */
6241 if (unlikely(var97 == NULL)) {
6242 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parameter_names");
6243 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 489);
6244 show_backtrace(1);
6245 }
6246 var95 = var97;
6247 RET_LABEL96:(void)0;
6248 }
6249 }
6250 {
6251 var98 = array__Array___91d_93d(var95, var_i);
6252 }
6253 {
6254 var100 = string__FlatString___61d_61d(var98, var_name);
6255 var99 = var100;
6256 }
6257 if (var99){
6258 {
6259 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
6260 var103 = var_mclassdef->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:nullable MClassDef(MClassDef)> */
6261 if (unlikely(var103 == NULL)) {
6262 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6263 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
6264 show_backtrace(1);
6265 }
6266 var101 = var103;
6267 RET_LABEL102:(void)0;
6268 }
6269 }
6270 {
6271 { /* Inline model#MClass#mclass_type (var101) on <var101:MClass> */
6272 var106 = var101->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var101:MClass> */
6273 if (unlikely(var106 == NULL)) {
6274 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
6275 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
6276 show_backtrace(1);
6277 }
6278 var104 = var106;
6279 RET_LABEL105:(void)0;
6280 }
6281 }
6282 {
6283 { /* Inline model#MClassType#arguments (var104) on <var104:MClassType> */
6284 var109 = var104->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var104:MClassType> */
6285 if (unlikely(var109 == NULL)) {
6286 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
6287 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
6288 show_backtrace(1);
6289 }
6290 var107 = var109;
6291 RET_LABEL108:(void)0;
6292 }
6293 }
6294 {
6295 var110 = array__Array___91d_93d(var107, var_i);
6296 }
6297 var_res = var110;
6298 {
6299 var111 = parser_nodes__AType__n_kwnullable(var_ntype);
6300 }
6301 var112 = NULL;
6302 if (var111 == NULL) {
6303 var113 = 0; /* is null */
6304 } else {
6305 var113 = 1; /* arg is null and recv is not */
6306 }
6307 if (0) {
6308 { /* Inline kernel#Object#!= (var111,var112) on <var111:nullable TKwnullable> */
6309 var_other = var112;
6310 {
6311 var117 = ((short int (*)(val*, val*))(var111->class->vft[COLOR_kernel__Object___61d_61d]))(var111, var_other) /* == on <var111:nullable TKwnullable(TKwnullable)>*/;
6312 var116 = var117;
6313 }
6314 var118 = !var116;
6315 var114 = var118;
6316 goto RET_LABEL115;
6317 RET_LABEL115:(void)0;
6318 }
6319 var113 = var114;
6320 }
6321 if (var113){
6322 {
6323 var119 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
6324 }
6325 var_res = var119;
6326 } else {
6327 }
6328 {
6329 { /* Inline modelize_class#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
6330 var_ntype->attrs[COLOR_modelize_class__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
6331 RET_LABEL120:(void)0;
6332 }
6333 }
6334 var = var_res;
6335 goto RET_LABEL;
6336 } else {
6337 }
6338 CONTINUE_label: (void)0;
6339 {
6340 ((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on <var91:Iterator[Discrete]>*/;
6341 }
6342 }
6343 BREAK_label: (void)0;
6344 PRINT_ERROR("Runtime error: %s", "Aborted");
6345 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 439);
6346 show_backtrace(1);
6347 } else {
6348 }
6349 {
6350 var121 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, var_ntype, var_mmodule, var_name);
6351 }
6352 var_mclass = var121;
6353 var122 = NULL;
6354 if (var_mclass == NULL) {
6355 var123 = 0; /* is null */
6356 } else {
6357 var123 = 1; /* arg is null and recv is not */
6358 }
6359 if (0) {
6360 { /* Inline kernel#Object#!= (var_mclass,var122) on <var_mclass:nullable MClass> */
6361 var_other = var122;
6362 {
6363 var127 = ((short int (*)(val*, val*))(var_mclass->class->vft[COLOR_kernel__Object___61d_61d]))(var_mclass, var_other) /* == on <var_mclass:nullable MClass(MClass)>*/;
6364 var126 = var127;
6365 }
6366 var128 = !var126;
6367 var124 = var128;
6368 goto RET_LABEL125;
6369 RET_LABEL125:(void)0;
6370 }
6371 var123 = var124;
6372 }
6373 if (var123){
6374 {
6375 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
6376 var131 = var_ntype->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
6377 if (unlikely(var131 == NULL)) {
6378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
6379 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1397);
6380 show_backtrace(1);
6381 }
6382 var129 = var131;
6383 RET_LABEL130:(void)0;
6384 }
6385 }
6386 {
6387 var132 = parser_nodes__ANodes__length(var129);
6388 }
6389 var_arity = var132;
6390 {
6391 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
6392 var135 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
6393 var133 = var135;
6394 RET_LABEL134:(void)0;
6395 }
6396 }
6397 {
6398 { /* Inline kernel#Int#!= (var_arity,var133) on <var_arity:Int> */
6399 var139 = var_arity == var133;
6400 var140 = !var139;
6401 var137 = var140;
6402 goto RET_LABEL138;
6403 RET_LABEL138:(void)0;
6404 }
6405 var136 = var137;
6406 }
6407 if (var136){
6408 var141 = 0;
6409 {
6410 { /* Inline kernel#Int#== (var_arity,var141) on <var_arity:Int> */
6411 var145 = var_arity == var141;
6412 var143 = var145;
6413 goto RET_LABEL144;
6414 RET_LABEL144:(void)0;
6415 }
6416 var142 = var143;
6417 }
6418 if (var142){
6419 if (varonce146) {
6420 var147 = varonce146;
6421 } else {
6422 var148 = "Type error: \'";
6423 var149 = 13;
6424 var150 = string__NativeString__to_s_with_length(var148, var149);
6425 var147 = var150;
6426 varonce146 = var147;
6427 }
6428 if (varonce151) {
6429 var152 = varonce151;
6430 } else {
6431 var153 = "\' is a generic class.";
6432 var154 = 21;
6433 var155 = string__NativeString__to_s_with_length(var153, var154);
6434 var152 = var155;
6435 varonce151 = var152;
6436 }
6437 var156 = NEW_array__Array(&type_array__Arraykernel__Object);
6438 { /* var156 = array_instance Array[Object] */
6439 var157 = 3;
6440 var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object);
6441 ((struct instance_array__NativeArray*)var158)->values[0] = (val*) var147;
6442 ((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_name;
6443 ((struct instance_array__NativeArray*)var158)->values[2] = (val*) var152;
6444 {
6445 ((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on <var156:Array[Object]>*/;
6446 }
6447 }
6448 {
6449 var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on <var156:Array[Object]>*/;
6450 }
6451 {
6452 modelbuilder__ModelBuilder__error(self, var_ntype, var159); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
6453 }
6454 } else {
6455 {
6456 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
6457 var162 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
6458 var160 = var162;
6459 RET_LABEL161:(void)0;
6460 }
6461 }
6462 var163 = 0;
6463 {
6464 { /* Inline kernel#Int#== (var160,var163) on <var160:Int> */
6465 var167 = var160 == var163;
6466 var165 = var167;
6467 goto RET_LABEL166;
6468 RET_LABEL166:(void)0;
6469 }
6470 var164 = var165;
6471 }
6472 if (var164){
6473 if (varonce168) {
6474 var169 = varonce168;
6475 } else {
6476 var170 = "Type error: \'";
6477 var171 = 13;
6478 var172 = string__NativeString__to_s_with_length(var170, var171);
6479 var169 = var172;
6480 varonce168 = var169;
6481 }
6482 if (varonce173) {
6483 var174 = varonce173;
6484 } else {
6485 var175 = "\' is not a generic class.";
6486 var176 = 25;
6487 var177 = string__NativeString__to_s_with_length(var175, var176);
6488 var174 = var177;
6489 varonce173 = var174;
6490 }
6491 var178 = NEW_array__Array(&type_array__Arraykernel__Object);
6492 { /* var178 = array_instance Array[Object] */
6493 var179 = 3;
6494 var180 = NEW_array__NativeArray(var179, &type_array__NativeArraykernel__Object);
6495 ((struct instance_array__NativeArray*)var180)->values[0] = (val*) var169;
6496 ((struct instance_array__NativeArray*)var180)->values[1] = (val*) var_name;
6497 ((struct instance_array__NativeArray*)var180)->values[2] = (val*) var174;
6498 {
6499 ((void (*)(val*, val*, long))(var178->class->vft[COLOR_array__Array__with_native]))(var178, var180, var179) /* with_native on <var178:Array[Object]>*/;
6500 }
6501 }
6502 {
6503 var181 = ((val* (*)(val*))(var178->class->vft[COLOR_string__Object__to_s]))(var178) /* to_s on <var178:Array[Object]>*/;
6504 }
6505 {
6506 modelbuilder__ModelBuilder__error(self, var_ntype, var181); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
6507 }
6508 } else {
6509 if (varonce182) {
6510 var183 = varonce182;
6511 } else {
6512 var184 = "Type error: \'";
6513 var185 = 13;
6514 var186 = string__NativeString__to_s_with_length(var184, var185);
6515 var183 = var186;
6516 varonce182 = var183;
6517 }
6518 if (varonce187) {
6519 var188 = varonce187;
6520 } else {
6521 var189 = "\' has ";
6522 var190 = 6;
6523 var191 = string__NativeString__to_s_with_length(var189, var190);
6524 var188 = var191;
6525 varonce187 = var188;
6526 }
6527 {
6528 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
6529 var194 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
6530 var192 = var194;
6531 RET_LABEL193:(void)0;
6532 }
6533 }
6534 if (varonce195) {
6535 var196 = varonce195;
6536 } else {
6537 var197 = " parameters (";
6538 var198 = 13;
6539 var199 = string__NativeString__to_s_with_length(var197, var198);
6540 var196 = var199;
6541 varonce195 = var196;
6542 }
6543 if (varonce200) {
6544 var201 = varonce200;
6545 } else {
6546 var202 = " are provided).";
6547 var203 = 15;
6548 var204 = string__NativeString__to_s_with_length(var202, var203);
6549 var201 = var204;
6550 varonce200 = var201;
6551 }
6552 var205 = NEW_array__Array(&type_array__Arraykernel__Object);
6553 { /* var205 = array_instance Array[Object] */
6554 var206 = 7;
6555 var207 = NEW_array__NativeArray(var206, &type_array__NativeArraykernel__Object);
6556 ((struct instance_array__NativeArray*)var207)->values[0] = (val*) var183;
6557 ((struct instance_array__NativeArray*)var207)->values[1] = (val*) var_name;
6558 ((struct instance_array__NativeArray*)var207)->values[2] = (val*) var188;
6559 var208 = BOX_kernel__Int(var192); /* autobox from Int to Object */
6560 ((struct instance_array__NativeArray*)var207)->values[3] = (val*) var208;
6561 ((struct instance_array__NativeArray*)var207)->values[4] = (val*) var196;
6562 var209 = BOX_kernel__Int(var_arity); /* autobox from Int to Object */
6563 ((struct instance_array__NativeArray*)var207)->values[5] = (val*) var209;
6564 ((struct instance_array__NativeArray*)var207)->values[6] = (val*) var201;
6565 {
6566 ((void (*)(val*, val*, long))(var205->class->vft[COLOR_array__Array__with_native]))(var205, var207, var206) /* with_native on <var205:Array[Object]>*/;
6567 }
6568 }
6569 {
6570 var210 = ((val* (*)(val*))(var205->class->vft[COLOR_string__Object__to_s]))(var205) /* to_s on <var205:Array[Object]>*/;
6571 }
6572 {
6573 modelbuilder__ModelBuilder__error(self, var_ntype, var210); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
6574 }
6575 }
6576 }
6577 var211 = NULL;
6578 var = var211;
6579 goto RET_LABEL;
6580 } else {
6581 }
6582 var212 = 0;
6583 {
6584 { /* Inline kernel#Int#== (var_arity,var212) on <var_arity:Int> */
6585 var216 = var_arity == var212;
6586 var214 = var216;
6587 goto RET_LABEL215;
6588 RET_LABEL215:(void)0;
6589 }
6590 var213 = var214;
6591 }
6592 if (var213){
6593 {
6594 { /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
6595 var219 = var_mclass->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
6596 if (unlikely(var219 == NULL)) {
6597 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
6598 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 417);
6599 show_backtrace(1);
6600 }
6601 var217 = var219;
6602 RET_LABEL218:(void)0;
6603 }
6604 }
6605 var_res = var217;
6606 {
6607 var220 = parser_nodes__AType__n_kwnullable(var_ntype);
6608 }
6609 var221 = NULL;
6610 if (var220 == NULL) {
6611 var222 = 0; /* is null */
6612 } else {
6613 var222 = 1; /* arg is null and recv is not */
6614 }
6615 if (0) {
6616 { /* Inline kernel#Object#!= (var220,var221) on <var220:nullable TKwnullable> */
6617 var_other = var221;
6618 {
6619 var226 = ((short int (*)(val*, val*))(var220->class->vft[COLOR_kernel__Object___61d_61d]))(var220, var_other) /* == on <var220:nullable TKwnullable(TKwnullable)>*/;
6620 var225 = var226;
6621 }
6622 var227 = !var225;
6623 var223 = var227;
6624 goto RET_LABEL224;
6625 RET_LABEL224:(void)0;
6626 }
6627 var222 = var223;
6628 }
6629 if (var222){
6630 {
6631 var228 = model__MType__as_nullable(var_res);
6632 }
6633 var_res = var228;
6634 } else {
6635 }
6636 {
6637 { /* Inline modelize_class#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
6638 var_ntype->attrs[COLOR_modelize_class__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
6639 RET_LABEL229:(void)0;
6640 }
6641 }
6642 var = var_res;
6643 goto RET_LABEL;
6644 } else {
6645 var230 = NEW_array__Array(&type_array__Arraymodel__MType);
6646 {
6647 array__Array__init(var230); /* Direct call array#Array#init on <var230:Array[MType]>*/
6648 }
6649 var_mtypes = var230;
6650 {
6651 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
6652 var233 = var_ntype->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
6653 if (unlikely(var233 == NULL)) {
6654 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
6655 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1397);
6656 show_backtrace(1);
6657 }
6658 var231 = var233;
6659 RET_LABEL232:(void)0;
6660 }
6661 }
6662 {
6663 var234 = parser_nodes__ANodes__iterator(var231);
6664 }
6665 for(;;) {
6666 {
6667 var235 = ((short int (*)(val*))(var234->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var234) /* is_ok on <var234:Iterator[ANode]>*/;
6668 }
6669 if(!var235) break;
6670 {
6671 var236 = ((val* (*)(val*))(var234->class->vft[COLOR_abstract_collection__Iterator__item]))(var234) /* item on <var234:Iterator[ANode]>*/;
6672 }
6673 var_nt = var236;
6674 {
6675 var237 = modelize_class__ModelBuilder__resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_nt, var_with_virtual);
6676 }
6677 var_mt = var237;
6678 var238 = NULL;
6679 if (var_mt == NULL) {
6680 var239 = 1; /* is null */
6681 } else {
6682 var239 = 0; /* arg is null but recv is not */
6683 }
6684 if (0) {
6685 { /* Inline kernel#Object#== (var_mt,var238) on <var_mt:nullable MType> */
6686 var_other242 = var238;
6687 {
6688 { /* Inline kernel#Object#is_same_instance (var_mt,var_other242) on <var_mt:nullable MType(MType)> */
6689 var245 = var_mt == var_other242;
6690 var243 = var245;
6691 goto RET_LABEL244;
6692 RET_LABEL244:(void)0;
6693 }
6694 }
6695 var240 = var243;
6696 goto RET_LABEL241;
6697 RET_LABEL241:(void)0;
6698 }
6699 var239 = var240;
6700 }
6701 if (var239){
6702 var246 = NULL;
6703 var = var246;
6704 goto RET_LABEL;
6705 } else {
6706 }
6707 {
6708 array__Array__add(var_mtypes, var_mt); /* Direct call array#Array#add on <var_mtypes:Array[MType]>*/
6709 }
6710 CONTINUE_label247: (void)0;
6711 {
6712 ((void (*)(val*))(var234->class->vft[COLOR_abstract_collection__Iterator__next]))(var234) /* next on <var234:Iterator[ANode]>*/;
6713 }
6714 }
6715 BREAK_label247: (void)0;
6716 {
6717 var248 = model__MClass__get_mtype(var_mclass, var_mtypes);
6718 }
6719 var_res = var248;
6720 {
6721 var249 = parser_nodes__AType__n_kwnullable(var_ntype);
6722 }
6723 var250 = NULL;
6724 if (var249 == NULL) {
6725 var251 = 0; /* is null */
6726 } else {
6727 var251 = 1; /* arg is null and recv is not */
6728 }
6729 if (0) {
6730 { /* Inline kernel#Object#!= (var249,var250) on <var249:nullable TKwnullable> */
6731 var_other = var250;
6732 {
6733 var255 = ((short int (*)(val*, val*))(var249->class->vft[COLOR_kernel__Object___61d_61d]))(var249, var_other) /* == on <var249:nullable TKwnullable(TKwnullable)>*/;
6734 var254 = var255;
6735 }
6736 var256 = !var254;
6737 var252 = var256;
6738 goto RET_LABEL253;
6739 RET_LABEL253:(void)0;
6740 }
6741 var251 = var252;
6742 }
6743 if (var251){
6744 {
6745 var257 = model__MType__as_nullable(var_res);
6746 }
6747 var_res = var257;
6748 } else {
6749 }
6750 {
6751 { /* Inline modelize_class#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
6752 var_ntype->attrs[COLOR_modelize_class__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
6753 RET_LABEL258:(void)0;
6754 }
6755 }
6756 var = var_res;
6757 goto RET_LABEL;
6758 }
6759 } else {
6760 }
6761 if (varonce259) {
6762 var260 = varonce259;
6763 } else {
6764 var261 = "Type error: class ";
6765 var262 = 18;
6766 var263 = string__NativeString__to_s_with_length(var261, var262);
6767 var260 = var263;
6768 varonce259 = var260;
6769 }
6770 if (varonce264) {
6771 var265 = varonce264;
6772 } else {
6773 var266 = " not found in module ";
6774 var267 = 21;
6775 var268 = string__NativeString__to_s_with_length(var266, var267);
6776 var265 = var268;
6777 varonce264 = var265;
6778 }
6779 if (varonce269) {
6780 var270 = varonce269;
6781 } else {
6782 var271 = ".";
6783 var272 = 1;
6784 var273 = string__NativeString__to_s_with_length(var271, var272);
6785 var270 = var273;
6786 varonce269 = var270;
6787 }
6788 var274 = NEW_array__Array(&type_array__Arraykernel__Object);
6789 { /* var274 = array_instance Array[Object] */
6790 var275 = 5;
6791 var276 = NEW_array__NativeArray(var275, &type_array__NativeArraykernel__Object);
6792 ((struct instance_array__NativeArray*)var276)->values[0] = (val*) var260;
6793 ((struct instance_array__NativeArray*)var276)->values[1] = (val*) var_name;
6794 ((struct instance_array__NativeArray*)var276)->values[2] = (val*) var265;
6795 ((struct instance_array__NativeArray*)var276)->values[3] = (val*) var_mmodule;
6796 ((struct instance_array__NativeArray*)var276)->values[4] = (val*) var270;
6797 {
6798 ((void (*)(val*, val*, long))(var274->class->vft[COLOR_array__Array__with_native]))(var274, var276, var275) /* with_native on <var274:Array[Object]>*/;
6799 }
6800 }
6801 {
6802 var277 = ((val* (*)(val*))(var274->class->vft[COLOR_string__Object__to_s]))(var274) /* to_s on <var274:Array[Object]>*/;
6803 }
6804 {
6805 modelbuilder__ModelBuilder__error(self, var_ntype, var277); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
6806 }
6807 var278 = NULL;
6808 var = var278;
6809 goto RET_LABEL;
6810 RET_LABEL:;
6811 return var;
6812 }
6813 /* method modelize_class#ModelBuilder#resolve_mtype_unchecked for (self: Object, MModule, nullable MClassDef, AType, Bool): nullable MType */
6814 val* VIRTUAL_modelize_class__ModelBuilder__resolve_mtype_unchecked(val* self, val* p0, val* p1, val* p2, short int p3) {
6815 val* var /* : nullable MType */;
6816 val* var1 /* : nullable MType */;
6817 var1 = modelize_class__ModelBuilder__resolve_mtype_unchecked(self, p0, p1, p2, p3);
6818 var = var1;
6819 RET_LABEL:;
6820 return var;
6821 }
6822 /* method modelize_class#ModelBuilder#resolve_mtype for (self: ModelBuilder, MModule, nullable MClassDef, AType): nullable MType */
6823 val* modelize_class__ModelBuilder__resolve_mtype(val* self, val* p0, val* p1, val* p2) {
6824 val* var /* : nullable MType */;
6825 val* var_mmodule /* var mmodule: MModule */;
6826 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
6827 val* var_ntype /* var ntype: AType */;
6828 val* var1 /* : nullable MType */;
6829 val* var3 /* : nullable MType */;
6830 val* var_mtype /* var mtype: nullable MType */;
6831 val* var4 /* : null */;
6832 short int var5 /* : Bool */;
6833 short int var6 /* : Bool */;
6834 val* var_other /* var other: nullable Object */;
6835 short int var8 /* : Bool */;
6836 short int var10 /* : Bool */;
6837 short int var11 /* : Bool */;
6838 val* var12 /* : nullable MType */;
6839 val* var13 /* : null */;
6840 short int var14 /* : Bool */;
6841 short int var15 /* : Bool */;
6842 short int var17 /* : Bool */;
6843 short int var19 /* : Bool */;
6844 val* var20 /* : null */;
6845 short int var21 /* : Bool */;
6846 short int var23 /* : Bool */;
6847 short int var24 /* : Bool */;
6848 int cltype;
6849 int idtype;
6850 val* var25 /* : MClass */;
6851 val* var27 /* : MClass */;
6852 val* var_mclass /* var mclass: MClass */;
6853 val* var28 /* : Range[Int] */;
6854 long var29 /* : Int */;
6855 long var30 /* : Int */;
6856 long var32 /* : Int */;
6857 val* var33 /* : Discrete */;
6858 val* var34 /* : Discrete */;
6859 val* var35 /* : Iterator[Discrete] */;
6860 short int var36 /* : Bool */;
6861 val* var37 /* : nullable Object */;
6862 long var_i /* var i: Int */;
6863 long var38 /* : Int */;
6864 val* var39 /* : MClassDef */;
6865 val* var40 /* : MClassType */;
6866 val* var42 /* : MClassType */;
6867 val* var43 /* : Array[MType] */;
6868 val* var45 /* : Array[MType] */;
6869 val* var46 /* : nullable Object */;
6870 val* var_bound /* var bound: MType */;
6871 val* var47 /* : ANodes[AType] */;
6872 val* var49 /* : ANodes[AType] */;
6873 val* var50 /* : ANode */;
6874 val* var_nt /* var nt: AType */;
6875 val* var51 /* : nullable MType */;
6876 val* var_mt /* var mt: nullable MType */;
6877 val* var52 /* : null */;
6878 short int var53 /* : Bool */;
6879 short int var54 /* : Bool */;
6880 short int var56 /* : Bool */;
6881 short int var58 /* : Bool */;
6882 val* var59 /* : null */;
6883 val* var60 /* : null */;
6884 short int var61 /* : Bool */;
6885 short int var62 /* : Bool */;
6886 val* var_other64 /* var other: nullable Object */;
6887 short int var65 /* : Bool */;
6888 short int var66 /* : Bool */;
6889 short int var67 /* : Bool */;
6890 val* var68 /* : MClassType */;
6891 val* var70 /* : MClassType */;
6892 val* var_anchor /* var anchor: nullable Object */;
6893 val* var71 /* : null */;
6894 short int var72 /* : Bool */;
6895 short int var73 /* : Bool */;
6896 static val* varonce;
6897 val* var74 /* : String */;
6898 char* var75 /* : NativeString */;
6899 long var76 /* : Int */;
6900 val* var77 /* : FlatString */;
6901 static val* varonce78;
6902 val* var79 /* : String */;
6903 char* var80 /* : NativeString */;
6904 long var81 /* : Int */;
6905 val* var82 /* : FlatString */;
6906 val* var83 /* : Array[Object] */;
6907 long var84 /* : Int */;
6908 val* var85 /* : NativeArray[Object] */;
6909 val* var86 /* : String */;
6910 val* var87 /* : null */;
6911 short int var88 /* : Bool */;
6912 var_mmodule = p0;
6913 var_mclassdef = p1;
6914 var_ntype = p2;
6915 {
6916 { /* Inline modelize_class#AType#mtype (var_ntype) on <var_ntype:AType> */
6917 var3 = var_ntype->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <var_ntype:AType> */
6918 var1 = var3;
6919 RET_LABEL2:(void)0;
6920 }
6921 }
6922 var_mtype = var1;
6923 var4 = NULL;
6924 if (var_mtype == NULL) {
6925 var5 = 1; /* is null */
6926 } else {
6927 var5 = 0; /* arg is null but recv is not */
6928 }
6929 if (0) {
6930 { /* Inline kernel#Object#== (var_mtype,var4) on <var_mtype:nullable MType> */
6931 var_other = var4;
6932 {
6933 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
6934 var10 = var_mtype == var_other;
6935 var8 = var10;
6936 goto RET_LABEL9;
6937 RET_LABEL9:(void)0;
6938 }
6939 }
6940 var6 = var8;
6941 goto RET_LABEL7;
6942 RET_LABEL7:(void)0;
6943 }
6944 var5 = var6;
6945 }
6946 if (var5){
6947 var11 = 1;
6948 {
6949 var12 = modelize_class__ModelBuilder__resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_ntype, var11);
6950 }
6951 var_mtype = var12;
6952 } else {
6953 }
6954 var13 = NULL;
6955 if (var_mtype == NULL) {
6956 var14 = 1; /* is null */
6957 } else {
6958 var14 = 0; /* arg is null but recv is not */
6959 }
6960 if (0) {
6961 { /* Inline kernel#Object#== (var_mtype,var13) on <var_mtype:nullable MType> */
6962 var_other = var13;
6963 {
6964 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
6965 var19 = var_mtype == var_other;
6966 var17 = var19;
6967 goto RET_LABEL18;
6968 RET_LABEL18:(void)0;
6969 }
6970 }
6971 var15 = var17;
6972 goto RET_LABEL16;
6973 RET_LABEL16:(void)0;
6974 }
6975 var14 = var15;
6976 }
6977 if (var14){
6978 var20 = NULL;
6979 var = var20;
6980 goto RET_LABEL;
6981 } else {
6982 }
6983 {
6984 { /* Inline modelize_class#AType#checked_mtype (var_ntype) on <var_ntype:AType> */
6985 var23 = var_ntype->attrs[COLOR_modelize_class__AType___checked_mtype].s; /* _checked_mtype on <var_ntype:AType> */
6986 var21 = var23;
6987 RET_LABEL22:(void)0;
6988 }
6989 }
6990 if (var21){
6991 var = var_mtype;
6992 goto RET_LABEL;
6993 } else {
6994 }
6995 /* <var_mtype:nullable MType(MType)> isa MGenericType */
6996 cltype = type_model__MGenericType.color;
6997 idtype = type_model__MGenericType.id;
6998 if(cltype >= var_mtype->type->table_size) {
6999 var24 = 0;
7000 } else {
7001 var24 = var_mtype->type->type_table[cltype] == idtype;
7002 }
7003 if (var24){
7004 {
7005 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:nullable MType(MGenericType)> */
7006 var27 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MGenericType)> */
7007 if (unlikely(var27 == NULL)) {
7008 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
7009 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
7010 show_backtrace(1);
7011 }
7012 var25 = var27;
7013 RET_LABEL26:(void)0;
7014 }
7015 }
7016 var_mclass = var25;
7017 var28 = NEW_range__Range(&type_range__Rangekernel__Int);
7018 var29 = 0;
7019 {
7020 { /* Inline model#MClass#arity (var_mclass) on <var_mclass:MClass> */
7021 var32 = var_mclass->attrs[COLOR_model__MClass___arity].l; /* _arity on <var_mclass:MClass> */
7022 var30 = var32;
7023 RET_LABEL31:(void)0;
7024 }
7025 }
7026 {
7027 var33 = BOX_kernel__Int(var29); /* autobox from Int to Discrete */
7028 var34 = BOX_kernel__Int(var30); /* autobox from Int to Discrete */
7029 range__Range__without_last(var28, var33, var34); /* Direct call range#Range#without_last on <var28:Range[Int]>*/
7030 }
7031 {
7032 var35 = range__Range__iterator(var28);
7033 }
7034 for(;;) {
7035 {
7036 var36 = ((short int (*)(val*))(var35->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var35) /* is_ok on <var35:Iterator[Discrete]>*/;
7037 }
7038 if(!var36) break;
7039 {
7040 var37 = ((val* (*)(val*))(var35->class->vft[COLOR_abstract_collection__Iterator__item]))(var35) /* item on <var35:Iterator[Discrete]>*/;
7041 }
7042 var38 = ((struct instance_kernel__Int*)var37)->value; /* autounbox from nullable Object to Int */;
7043 var_i = var38;
7044 {
7045 var39 = model__MClass__intro(var_mclass);
7046 }
7047 {
7048 { /* Inline model#MClassDef#bound_mtype (var39) on <var39:MClassDef> */
7049 var42 = var39->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var39:MClassDef> */
7050 if (unlikely(var42 == NULL)) {
7051 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7052 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
7053 show_backtrace(1);
7054 }
7055 var40 = var42;
7056 RET_LABEL41:(void)0;
7057 }
7058 }
7059 {
7060 { /* Inline model#MClassType#arguments (var40) on <var40:MClassType> */
7061 var45 = var40->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var40:MClassType> */
7062 if (unlikely(var45 == NULL)) {
7063 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
7064 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
7065 show_backtrace(1);
7066 }
7067 var43 = var45;
7068 RET_LABEL44:(void)0;
7069 }
7070 }
7071 {
7072 var46 = array__Array___91d_93d(var43, var_i);
7073 }
7074 var_bound = var46;
7075 {
7076 { /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
7077 var49 = var_ntype->attrs[COLOR_parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
7078 if (unlikely(var49 == NULL)) {
7079 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
7080 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 1397);
7081 show_backtrace(1);
7082 }
7083 var47 = var49;
7084 RET_LABEL48:(void)0;
7085 }
7086 }
7087 {
7088 var50 = parser_nodes__ANodes___91d_93d(var47, var_i);
7089 }
7090 var_nt = var50;
7091 {
7092 var51 = modelize_class__ModelBuilder__resolve_mtype(self, var_mmodule, var_mclassdef, var_nt);
7093 }
7094 var_mt = var51;
7095 var52 = NULL;
7096 if (var_mt == NULL) {
7097 var53 = 1; /* is null */
7098 } else {
7099 var53 = 0; /* arg is null but recv is not */
7100 }
7101 if (0) {
7102 { /* Inline kernel#Object#== (var_mt,var52) on <var_mt:nullable MType> */
7103 var_other = var52;
7104 {
7105 { /* Inline kernel#Object#is_same_instance (var_mt,var_other) on <var_mt:nullable MType(MType)> */
7106 var58 = var_mt == var_other;
7107 var56 = var58;
7108 goto RET_LABEL57;
7109 RET_LABEL57:(void)0;
7110 }
7111 }
7112 var54 = var56;
7113 goto RET_LABEL55;
7114 RET_LABEL55:(void)0;
7115 }
7116 var53 = var54;
7117 }
7118 if (var53){
7119 var59 = NULL;
7120 var = var59;
7121 goto RET_LABEL;
7122 } else {
7123 }
7124 var60 = NULL;
7125 if (var_mclassdef == NULL) {
7126 var61 = 0; /* is null */
7127 } else {
7128 var61 = 1; /* arg is null and recv is not */
7129 }
7130 if (0) {
7131 { /* Inline kernel#Object#!= (var_mclassdef,var60) on <var_mclassdef:nullable MClassDef> */
7132 var_other64 = var60;
7133 {
7134 var66 = ((short int (*)(val*, val*))(var_mclassdef->class->vft[COLOR_kernel__Object___61d_61d]))(var_mclassdef, var_other64) /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/;
7135 var65 = var66;
7136 }
7137 var67 = !var65;
7138 var62 = var67;
7139 goto RET_LABEL63;
7140 RET_LABEL63:(void)0;
7141 }
7142 var61 = var62;
7143 }
7144 if (var61){
7145 {
7146 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
7147 var70 = var_mclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:nullable MClassDef(MClassDef)> */
7148 if (unlikely(var70 == NULL)) {
7149 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7150 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
7151 show_backtrace(1);
7152 }
7153 var68 = var70;
7154 RET_LABEL69:(void)0;
7155 }
7156 }
7157 var_anchor = var68;
7158 } else {
7159 var71 = NULL;
7160 var_anchor = var71;
7161 }
7162 {
7163 var72 = model__MType__is_subtype(var_mt, var_mmodule, var_anchor, var_bound);
7164 }
7165 var73 = !var72;
7166 if (var73){
7167 if (varonce) {
7168 var74 = varonce;
7169 } else {
7170 var75 = "Type error: expected ";
7171 var76 = 21;
7172 var77 = string__NativeString__to_s_with_length(var75, var76);
7173 var74 = var77;
7174 varonce = var74;
7175 }
7176 if (varonce78) {
7177 var79 = varonce78;
7178 } else {
7179 var80 = ", got ";
7180 var81 = 6;
7181 var82 = string__NativeString__to_s_with_length(var80, var81);
7182 var79 = var82;
7183 varonce78 = var79;
7184 }
7185 var83 = NEW_array__Array(&type_array__Arraykernel__Object);
7186 { /* var83 = array_instance Array[Object] */
7187 var84 = 4;
7188 var85 = NEW_array__NativeArray(var84, &type_array__NativeArraykernel__Object);
7189 ((struct instance_array__NativeArray*)var85)->values[0] = (val*) var74;
7190 ((struct instance_array__NativeArray*)var85)->values[1] = (val*) var_bound;
7191 ((struct instance_array__NativeArray*)var85)->values[2] = (val*) var79;
7192 ((struct instance_array__NativeArray*)var85)->values[3] = (val*) var_mt;
7193 {
7194 ((void (*)(val*, val*, long))(var83->class->vft[COLOR_array__Array__with_native]))(var83, var85, var84) /* with_native on <var83:Array[Object]>*/;
7195 }
7196 }
7197 {
7198 var86 = ((val* (*)(val*))(var83->class->vft[COLOR_string__Object__to_s]))(var83) /* to_s on <var83:Array[Object]>*/;
7199 }
7200 {
7201 modelbuilder__ModelBuilder__error(self, var_nt, var86); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
7202 }
7203 var87 = NULL;
7204 var = var87;
7205 goto RET_LABEL;
7206 } else {
7207 }
7208 CONTINUE_label: (void)0;
7209 {
7210 ((void (*)(val*))(var35->class->vft[COLOR_abstract_collection__Iterator__next]))(var35) /* next on <var35:Iterator[Discrete]>*/;
7211 }
7212 }
7213 BREAK_label: (void)0;
7214 } else {
7215 }
7216 var88 = 1;
7217 {
7218 { /* Inline modelize_class#AType#checked_mtype= (var_ntype,var88) on <var_ntype:AType> */
7219 var_ntype->attrs[COLOR_modelize_class__AType___checked_mtype].s = var88; /* _checked_mtype on <var_ntype:AType> */
7220 RET_LABEL89:(void)0;
7221 }
7222 }
7223 var = var_mtype;
7224 goto RET_LABEL;
7225 RET_LABEL:;
7226 return var;
7227 }
7228 /* method modelize_class#ModelBuilder#resolve_mtype for (self: Object, MModule, nullable MClassDef, AType): nullable MType */
7229 val* VIRTUAL_modelize_class__ModelBuilder__resolve_mtype(val* self, val* p0, val* p1, val* p2) {
7230 val* var /* : nullable MType */;
7231 val* var1 /* : nullable MType */;
7232 var1 = modelize_class__ModelBuilder__resolve_mtype(self, p0, p1, p2);
7233 var = var1;
7234 RET_LABEL:;
7235 return var;
7236 }
7237 /* method modelize_class#AModule#build_classes_is_done for (self: AModule): Bool */
7238 short int modelize_class__AModule__build_classes_is_done(val* self) {
7239 short int var /* : Bool */;
7240 short int var1 /* : Bool */;
7241 var1 = self->attrs[COLOR_modelize_class__AModule___build_classes_is_done].s; /* _build_classes_is_done on <self:AModule> */
7242 var = var1;
7243 RET_LABEL:;
7244 return var;
7245 }
7246 /* method modelize_class#AModule#build_classes_is_done for (self: Object): Bool */
7247 short int VIRTUAL_modelize_class__AModule__build_classes_is_done(val* self) {
7248 short int var /* : Bool */;
7249 short int var1 /* : Bool */;
7250 short int var3 /* : Bool */;
7251 { /* Inline modelize_class#AModule#build_classes_is_done (self) on <self:Object(AModule)> */
7252 var3 = self->attrs[COLOR_modelize_class__AModule___build_classes_is_done].s; /* _build_classes_is_done on <self:Object(AModule)> */
7253 var1 = var3;
7254 RET_LABEL2:(void)0;
7255 }
7256 var = var1;
7257 RET_LABEL:;
7258 return var;
7259 }
7260 /* method modelize_class#AModule#build_classes_is_done= for (self: AModule, Bool) */
7261 void modelize_class__AModule__build_classes_is_done_61d(val* self, short int p0) {
7262 self->attrs[COLOR_modelize_class__AModule___build_classes_is_done].s = p0; /* _build_classes_is_done on <self:AModule> */
7263 RET_LABEL:;
7264 }
7265 /* method modelize_class#AModule#build_classes_is_done= for (self: Object, Bool) */
7266 void VIRTUAL_modelize_class__AModule__build_classes_is_done_61d(val* self, short int p0) {
7267 { /* Inline modelize_class#AModule#build_classes_is_done= (self,p0) on <self:Object(AModule)> */
7268 self->attrs[COLOR_modelize_class__AModule___build_classes_is_done].s = p0; /* _build_classes_is_done on <self:Object(AModule)> */
7269 RET_LABEL1:(void)0;
7270 }
7271 RET_LABEL:;
7272 }
7273 /* method modelize_class#AModule#mclass2nclassdef for (self: AModule): Map[MClass, AClassdef] */
7274 val* modelize_class__AModule__mclass2nclassdef(val* self) {
7275 val* var /* : Map[MClass, AClassdef] */;
7276 val* var1 /* : Map[MClass, AClassdef] */;
7277 var1 = self->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <self:AModule> */
7278 if (unlikely(var1 == NULL)) {
7279 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
7280 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
7281 show_backtrace(1);
7282 }
7283 var = var1;
7284 RET_LABEL:;
7285 return var;
7286 }
7287 /* method modelize_class#AModule#mclass2nclassdef for (self: Object): Map[MClass, AClassdef] */
7288 val* VIRTUAL_modelize_class__AModule__mclass2nclassdef(val* self) {
7289 val* var /* : Map[MClass, AClassdef] */;
7290 val* var1 /* : Map[MClass, AClassdef] */;
7291 val* var3 /* : Map[MClass, AClassdef] */;
7292 { /* Inline modelize_class#AModule#mclass2nclassdef (self) on <self:Object(AModule)> */
7293 var3 = self->attrs[COLOR_modelize_class__AModule___mclass2nclassdef].val; /* _mclass2nclassdef on <self:Object(AModule)> */
7294 if (unlikely(var3 == NULL)) {
7295 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass2nclassdef");
7296 PRINT_ERROR(" (%s:%d)\n", "src/modelize_class.nit", 515);
7297 show_backtrace(1);
7298 }
7299 var1 = var3;
7300 RET_LABEL2:(void)0;
7301 }
7302 var = var1;
7303 RET_LABEL:;
7304 return var;
7305 }
7306 /* method modelize_class#AClassdef#mclass for (self: AClassdef): nullable MClass */
7307 val* modelize_class__AClassdef__mclass(val* self) {
7308 val* var /* : nullable MClass */;
7309 val* var1 /* : nullable MClass */;
7310 var1 = self->attrs[COLOR_modelize_class__AClassdef___mclass].val; /* _mclass on <self:AClassdef> */
7311 var = var1;
7312 RET_LABEL:;
7313 return var;
7314 }
7315 /* method modelize_class#AClassdef#mclass for (self: Object): nullable MClass */
7316 val* VIRTUAL_modelize_class__AClassdef__mclass(val* self) {
7317 val* var /* : nullable MClass */;
7318 val* var1 /* : nullable MClass */;
7319 val* var3 /* : nullable MClass */;
7320 { /* Inline modelize_class#AClassdef#mclass (self) on <self:Object(AClassdef)> */
7321 var3 = self->attrs[COLOR_modelize_class__AClassdef___mclass].val; /* _mclass on <self:Object(AClassdef)> */
7322 var1 = var3;
7323 RET_LABEL2:(void)0;
7324 }
7325 var = var1;
7326 RET_LABEL:;
7327 return var;
7328 }
7329 /* method modelize_class#AClassdef#mclass= for (self: AClassdef, nullable MClass) */
7330 void modelize_class__AClassdef__mclass_61d(val* self, val* p0) {
7331 self->attrs[COLOR_modelize_class__AClassdef___mclass].val = p0; /* _mclass on <self:AClassdef> */
7332 RET_LABEL:;
7333 }
7334 /* method modelize_class#AClassdef#mclass= for (self: Object, nullable MClass) */
7335 void VIRTUAL_modelize_class__AClassdef__mclass_61d(val* self, val* p0) {
7336 { /* Inline modelize_class#AClassdef#mclass= (self,p0) on <self:Object(AClassdef)> */
7337 self->attrs[COLOR_modelize_class__AClassdef___mclass].val = p0; /* _mclass on <self:Object(AClassdef)> */
7338 RET_LABEL1:(void)0;
7339 }
7340 RET_LABEL:;
7341 }
7342 /* method modelize_class#AClassdef#mclassdef for (self: AClassdef): nullable MClassDef */
7343 val* modelize_class__AClassdef__mclassdef(val* self) {
7344 val* var /* : nullable MClassDef */;
7345 val* var1 /* : nullable MClassDef */;
7346 var1 = self->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <self:AClassdef> */
7347 var = var1;
7348 RET_LABEL:;
7349 return var;
7350 }
7351 /* method modelize_class#AClassdef#mclassdef for (self: Object): nullable MClassDef */
7352 val* VIRTUAL_modelize_class__AClassdef__mclassdef(val* self) {
7353 val* var /* : nullable MClassDef */;
7354 val* var1 /* : nullable MClassDef */;
7355 val* var3 /* : nullable MClassDef */;
7356 { /* Inline modelize_class#AClassdef#mclassdef (self) on <self:Object(AClassdef)> */
7357 var3 = self->attrs[COLOR_modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <self:Object(AClassdef)> */
7358 var1 = var3;
7359 RET_LABEL2:(void)0;
7360 }
7361 var = var1;
7362 RET_LABEL:;
7363 return var;
7364 }
7365 /* method modelize_class#AClassdef#mclassdef= for (self: AClassdef, nullable MClassDef) */
7366 void modelize_class__AClassdef__mclassdef_61d(val* self, val* p0) {
7367 self->attrs[COLOR_modelize_class__AClassdef___mclassdef].val = p0; /* _mclassdef on <self:AClassdef> */
7368 RET_LABEL:;
7369 }
7370 /* method modelize_class#AClassdef#mclassdef= for (self: Object, nullable MClassDef) */
7371 void VIRTUAL_modelize_class__AClassdef__mclassdef_61d(val* self, val* p0) {
7372 { /* Inline modelize_class#AClassdef#mclassdef= (self,p0) on <self:Object(AClassdef)> */
7373 self->attrs[COLOR_modelize_class__AClassdef___mclassdef].val = p0; /* _mclassdef on <self:Object(AClassdef)> */
7374 RET_LABEL1:(void)0;
7375 }
7376 RET_LABEL:;
7377 }
7378 /* method modelize_class#AClassdef#all_defs for (self: AClassdef): nullable Array[AClassdef] */
7379 val* modelize_class__AClassdef__all_defs(val* self) {
7380 val* var /* : nullable Array[AClassdef] */;
7381 val* var1 /* : nullable Array[AClassdef] */;
7382 var1 = self->attrs[COLOR_modelize_class__AClassdef___all_defs].val; /* _all_defs on <self:AClassdef> */
7383 var = var1;
7384 RET_LABEL:;
7385 return var;
7386 }
7387 /* method modelize_class#AClassdef#all_defs for (self: Object): nullable Array[AClassdef] */
7388 val* VIRTUAL_modelize_class__AClassdef__all_defs(val* self) {
7389 val* var /* : nullable Array[AClassdef] */;
7390 val* var1 /* : nullable Array[AClassdef] */;
7391 val* var3 /* : nullable Array[AClassdef] */;
7392 { /* Inline modelize_class#AClassdef#all_defs (self) on <self:Object(AClassdef)> */
7393 var3 = self->attrs[COLOR_modelize_class__AClassdef___all_defs].val; /* _all_defs on <self:Object(AClassdef)> */
7394 var1 = var3;
7395 RET_LABEL2:(void)0;
7396 }
7397 var = var1;
7398 RET_LABEL:;
7399 return var;
7400 }
7401 /* method modelize_class#AClassdef#all_defs= for (self: AClassdef, nullable Array[AClassdef]) */
7402 void modelize_class__AClassdef__all_defs_61d(val* self, val* p0) {
7403 self->attrs[COLOR_modelize_class__AClassdef___all_defs].val = p0; /* _all_defs on <self:AClassdef> */
7404 RET_LABEL:;
7405 }
7406 /* method modelize_class#AClassdef#all_defs= for (self: Object, nullable Array[AClassdef]) */
7407 void VIRTUAL_modelize_class__AClassdef__all_defs_61d(val* self, val* p0) {
7408 { /* Inline modelize_class#AClassdef#all_defs= (self,p0) on <self:Object(AClassdef)> */
7409 self->attrs[COLOR_modelize_class__AClassdef___all_defs].val = p0; /* _all_defs on <self:Object(AClassdef)> */
7410 RET_LABEL1:(void)0;
7411 }
7412 RET_LABEL:;
7413 }
7414 /* method modelize_class#AConcreteClasskind#mkind for (self: AConcreteClasskind): MClassKind */
7415 val* modelize_class__AConcreteClasskind__mkind(val* self) {
7416 val* var /* : MClassKind */;
7417 val* var1 /* : MClassKind */;
7418 {
7419 var1 = model__Object__concrete_kind(self);
7420 }
7421 var = var1;
7422 goto RET_LABEL;
7423 RET_LABEL:;
7424 return var;
7425 }
7426 /* method modelize_class#AConcreteClasskind#mkind for (self: Object): MClassKind */
7427 val* VIRTUAL_modelize_class__AConcreteClasskind__mkind(val* self) {
7428 val* var /* : MClassKind */;
7429 val* var1 /* : MClassKind */;
7430 var1 = modelize_class__AConcreteClasskind__mkind(self);
7431 var = var1;
7432 RET_LABEL:;
7433 return var;
7434 }
7435 /* method modelize_class#AAbstractClasskind#mkind for (self: AAbstractClasskind): MClassKind */
7436 val* modelize_class__AAbstractClasskind__mkind(val* self) {
7437 val* var /* : MClassKind */;
7438 val* var1 /* : MClassKind */;
7439 {
7440 var1 = model__Object__abstract_kind(self);
7441 }
7442 var = var1;
7443 goto RET_LABEL;
7444 RET_LABEL:;
7445 return var;
7446 }
7447 /* method modelize_class#AAbstractClasskind#mkind for (self: Object): MClassKind */
7448 val* VIRTUAL_modelize_class__AAbstractClasskind__mkind(val* self) {
7449 val* var /* : MClassKind */;
7450 val* var1 /* : MClassKind */;
7451 var1 = modelize_class__AAbstractClasskind__mkind(self);
7452 var = var1;
7453 RET_LABEL:;
7454 return var;
7455 }
7456 /* method modelize_class#AInterfaceClasskind#mkind for (self: AInterfaceClasskind): MClassKind */
7457 val* modelize_class__AInterfaceClasskind__mkind(val* self) {
7458 val* var /* : MClassKind */;
7459 val* var1 /* : MClassKind */;
7460 {
7461 var1 = model__Object__interface_kind(self);
7462 }
7463 var = var1;
7464 goto RET_LABEL;
7465 RET_LABEL:;
7466 return var;
7467 }
7468 /* method modelize_class#AInterfaceClasskind#mkind for (self: Object): MClassKind */
7469 val* VIRTUAL_modelize_class__AInterfaceClasskind__mkind(val* self) {
7470 val* var /* : MClassKind */;
7471 val* var1 /* : MClassKind */;
7472 var1 = modelize_class__AInterfaceClasskind__mkind(self);
7473 var = var1;
7474 RET_LABEL:;
7475 return var;
7476 }
7477 /* method modelize_class#AEnumClasskind#mkind for (self: AEnumClasskind): MClassKind */
7478 val* modelize_class__AEnumClasskind__mkind(val* self) {
7479 val* var /* : MClassKind */;
7480 val* var1 /* : MClassKind */;
7481 {
7482 var1 = model__Object__enum_kind(self);
7483 }
7484 var = var1;
7485 goto RET_LABEL;
7486 RET_LABEL:;
7487 return var;
7488 }
7489 /* method modelize_class#AEnumClasskind#mkind for (self: Object): MClassKind */
7490 val* VIRTUAL_modelize_class__AEnumClasskind__mkind(val* self) {
7491 val* var /* : MClassKind */;
7492 val* var1 /* : MClassKind */;
7493 var1 = modelize_class__AEnumClasskind__mkind(self);
7494 var = var1;
7495 RET_LABEL:;
7496 return var;
7497 }
7498 /* method modelize_class#AExternClasskind#mkind for (self: AExternClasskind): MClassKind */
7499 val* modelize_class__AExternClasskind__mkind(val* self) {
7500 val* var /* : MClassKind */;
7501 val* var1 /* : MClassKind */;
7502 {
7503 var1 = model__Object__extern_kind(self);
7504 }
7505 var = var1;
7506 goto RET_LABEL;
7507 RET_LABEL:;
7508 return var;
7509 }
7510 /* method modelize_class#AExternClasskind#mkind for (self: Object): MClassKind */
7511 val* VIRTUAL_modelize_class__AExternClasskind__mkind(val* self) {
7512 val* var /* : MClassKind */;
7513 val* var1 /* : MClassKind */;
7514 var1 = modelize_class__AExternClasskind__mkind(self);
7515 var = var1;
7516 RET_LABEL:;
7517 return var;
7518 }
7519 /* method modelize_class#AFormaldef#mtype= for (self: AFormaldef, nullable MParameterType) */
7520 void modelize_class__AFormaldef__mtype_61d(val* self, val* p0) {
7521 self->attrs[COLOR_modelize_class__AFormaldef___mtype].val = p0; /* _mtype on <self:AFormaldef> */
7522 RET_LABEL:;
7523 }
7524 /* method modelize_class#AFormaldef#mtype= for (self: Object, nullable MParameterType) */
7525 void VIRTUAL_modelize_class__AFormaldef__mtype_61d(val* self, val* p0) {
7526 { /* Inline modelize_class#AFormaldef#mtype= (self,p0) on <self:Object(AFormaldef)> */
7527 self->attrs[COLOR_modelize_class__AFormaldef___mtype].val = p0; /* _mtype on <self:Object(AFormaldef)> */
7528 RET_LABEL1:(void)0;
7529 }
7530 RET_LABEL:;
7531 }
7532 /* method modelize_class#AFormaldef#bound= for (self: AFormaldef, nullable MType) */
7533 void modelize_class__AFormaldef__bound_61d(val* self, val* p0) {
7534 self->attrs[COLOR_modelize_class__AFormaldef___bound].val = p0; /* _bound on <self:AFormaldef> */
7535 RET_LABEL:;
7536 }
7537 /* method modelize_class#AFormaldef#bound= for (self: Object, nullable MType) */
7538 void VIRTUAL_modelize_class__AFormaldef__bound_61d(val* self, val* p0) {
7539 { /* Inline modelize_class#AFormaldef#bound= (self,p0) on <self:Object(AFormaldef)> */
7540 self->attrs[COLOR_modelize_class__AFormaldef___bound].val = p0; /* _bound on <self:Object(AFormaldef)> */
7541 RET_LABEL1:(void)0;
7542 }
7543 RET_LABEL:;
7544 }
7545 /* method modelize_class#AType#mtype for (self: AType): nullable MType */
7546 val* modelize_class__AType__mtype(val* self) {
7547 val* var /* : nullable MType */;
7548 val* var1 /* : nullable MType */;
7549 var1 = self->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <self:AType> */
7550 var = var1;
7551 RET_LABEL:;
7552 return var;
7553 }
7554 /* method modelize_class#AType#mtype for (self: Object): nullable MType */
7555 val* VIRTUAL_modelize_class__AType__mtype(val* self) {
7556 val* var /* : nullable MType */;
7557 val* var1 /* : nullable MType */;
7558 val* var3 /* : nullable MType */;
7559 { /* Inline modelize_class#AType#mtype (self) on <self:Object(AType)> */
7560 var3 = self->attrs[COLOR_modelize_class__AType___mtype].val; /* _mtype on <self:Object(AType)> */
7561 var1 = var3;
7562 RET_LABEL2:(void)0;
7563 }
7564 var = var1;
7565 RET_LABEL:;
7566 return var;
7567 }
7568 /* method modelize_class#AType#mtype= for (self: AType, nullable MType) */
7569 void modelize_class__AType__mtype_61d(val* self, val* p0) {
7570 self->attrs[COLOR_modelize_class__AType___mtype].val = p0; /* _mtype on <self:AType> */
7571 RET_LABEL:;
7572 }
7573 /* method modelize_class#AType#mtype= for (self: Object, nullable MType) */
7574 void VIRTUAL_modelize_class__AType__mtype_61d(val* self, val* p0) {
7575 { /* Inline modelize_class#AType#mtype= (self,p0) on <self:Object(AType)> */
7576 self->attrs[COLOR_modelize_class__AType___mtype].val = p0; /* _mtype on <self:Object(AType)> */
7577 RET_LABEL1:(void)0;
7578 }
7579 RET_LABEL:;
7580 }
7581 /* method modelize_class#AType#checked_mtype for (self: AType): Bool */
7582 short int modelize_class__AType__checked_mtype(val* self) {
7583 short int var /* : Bool */;
7584 short int var1 /* : Bool */;
7585 var1 = self->attrs[COLOR_modelize_class__AType___checked_mtype].s; /* _checked_mtype on <self:AType> */
7586 var = var1;
7587 RET_LABEL:;
7588 return var;
7589 }
7590 /* method modelize_class#AType#checked_mtype for (self: Object): Bool */
7591 short int VIRTUAL_modelize_class__AType__checked_mtype(val* self) {
7592 short int var /* : Bool */;
7593 short int var1 /* : Bool */;
7594 short int var3 /* : Bool */;
7595 { /* Inline modelize_class#AType#checked_mtype (self) on <self:Object(AType)> */
7596 var3 = self->attrs[COLOR_modelize_class__AType___checked_mtype].s; /* _checked_mtype on <self:Object(AType)> */
7597 var1 = var3;
7598 RET_LABEL2:(void)0;
7599 }
7600 var = var1;
7601 RET_LABEL:;
7602 return var;
7603 }
7604 /* method modelize_class#AType#checked_mtype= for (self: AType, Bool) */
7605 void modelize_class__AType__checked_mtype_61d(val* self, short int p0) {
7606 self->attrs[COLOR_modelize_class__AType___checked_mtype].s = p0; /* _checked_mtype on <self:AType> */
7607 RET_LABEL:;
7608 }
7609 /* method modelize_class#AType#checked_mtype= for (self: Object, Bool) */
7610 void VIRTUAL_modelize_class__AType__checked_mtype_61d(val* self, short int p0) {
7611 { /* Inline modelize_class#AType#checked_mtype= (self,p0) on <self:Object(AType)> */
7612 self->attrs[COLOR_modelize_class__AType___checked_mtype].s = p0; /* _checked_mtype on <self:Object(AType)> */
7613 RET_LABEL1:(void)0;
7614 }
7615 RET_LABEL:;
7616 }