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