misc/vim: inform the user when no results are found
[nit.git] / c_src / nit__loader.sep.1.c
1 #include "nit__loader.sep.0.h"
2 /* method loader#ToolContext#opt_path for (self: ToolContext): OptionArray */
3 val* nit__loader___ToolContext___opt_path(val* self) {
4 val* var /* : OptionArray */;
5 val* var1 /* : OptionArray */;
6 var1 = self->attrs[COLOR_nit__loader__ToolContext___opt_path].val; /* _opt_path on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 23);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method loader#ToolContext#opt_only_metamodel for (self: ToolContext): OptionBool */
17 val* nit__loader___ToolContext___opt_only_metamodel(val* self) {
18 val* var /* : OptionBool */;
19 val* var1 /* : OptionBool */;
20 var1 = self->attrs[COLOR_nit__loader__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on <self:ToolContext> */
21 if (unlikely(var1 == NULL)) {
22 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel");
23 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 26);
24 show_backtrace(1);
25 }
26 var = var1;
27 RET_LABEL:;
28 return var;
29 }
30 /* method loader#ToolContext#opt_only_parse for (self: ToolContext): OptionBool */
31 val* nit__loader___ToolContext___opt_only_parse(val* self) {
32 val* var /* : OptionBool */;
33 val* var1 /* : OptionBool */;
34 var1 = self->attrs[COLOR_nit__loader__ToolContext___opt_only_parse].val; /* _opt_only_parse on <self:ToolContext> */
35 if (unlikely(var1 == NULL)) {
36 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse");
37 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 29);
38 show_backtrace(1);
39 }
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method loader#ToolContext#init for (self: ToolContext) */
45 void nit__loader___ToolContext___standard__kernel__Object__init(val* self) {
46 val* var /* : OptionContext */;
47 val* var2 /* : OptionContext */;
48 val* var3 /* : OptionArray */;
49 val* var5 /* : OptionArray */;
50 val* var6 /* : OptionBool */;
51 val* var8 /* : OptionBool */;
52 val* var9 /* : OptionBool */;
53 val* var11 /* : OptionBool */;
54 val* var12 /* : Array[Option] */;
55 long var13 /* : Int */;
56 val* var14 /* : NativeArray[Option] */;
57 {
58 ((void (*)(val* self))(self->class->vft[COLOR_nit__loader___ToolContext___standard__kernel__Object__init]))(self) /* init on <self:ToolContext>*/;
59 }
60 {
61 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
62 var2 = self->attrs[COLOR_nit__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
63 if (unlikely(var2 == NULL)) {
64 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
65 PRINT_ERROR(" (%s:%d)\n", FILE_nit__toolcontext, 270);
66 show_backtrace(1);
67 }
68 var = var2;
69 RET_LABEL1:(void)0;
70 }
71 }
72 {
73 { /* Inline loader#ToolContext#opt_path (self) on <self:ToolContext> */
74 var5 = self->attrs[COLOR_nit__loader__ToolContext___opt_path].val; /* _opt_path on <self:ToolContext> */
75 if (unlikely(var5 == NULL)) {
76 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path");
77 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 23);
78 show_backtrace(1);
79 }
80 var3 = var5;
81 RET_LABEL4:(void)0;
82 }
83 }
84 {
85 { /* Inline loader#ToolContext#opt_only_parse (self) on <self:ToolContext> */
86 var8 = self->attrs[COLOR_nit__loader__ToolContext___opt_only_parse].val; /* _opt_only_parse on <self:ToolContext> */
87 if (unlikely(var8 == NULL)) {
88 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse");
89 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 29);
90 show_backtrace(1);
91 }
92 var6 = var8;
93 RET_LABEL7:(void)0;
94 }
95 }
96 {
97 { /* Inline loader#ToolContext#opt_only_metamodel (self) on <self:ToolContext> */
98 var11 = self->attrs[COLOR_nit__loader__ToolContext___opt_only_metamodel].val; /* _opt_only_metamodel on <self:ToolContext> */
99 if (unlikely(var11 == NULL)) {
100 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_metamodel");
101 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 26);
102 show_backtrace(1);
103 }
104 var9 = var11;
105 RET_LABEL10:(void)0;
106 }
107 }
108 var12 = NEW_standard__Array(&type_standard__Array__opts__Option);
109 { /* var12 = array_instance Array[Option] */
110 var13 = 3;
111 var14 = NEW_standard__NativeArray(var13, &type_standard__NativeArray__opts__Option);
112 ((struct instance_standard__NativeArray*)var14)->values[0] = (val*) var3;
113 ((struct instance_standard__NativeArray*)var14)->values[1] = (val*) var6;
114 ((struct instance_standard__NativeArray*)var14)->values[2] = (val*) var9;
115 {
116 ((void (*)(val* self, val* p0, long p1))(var12->class->vft[COLOR_standard__array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Option]>*/;
117 }
118 }
119 {
120 opts___opts__OptionContext___add_option(var, var12); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
121 }
122 RET_LABEL:;
123 }
124 /* method loader#ModelBuilder#init for (self: ModelBuilder) */
125 void nit__loader___ModelBuilder___standard__kernel__Object__init(val* self) {
126 val* var /* : Array[String] */;
127 val* var2 /* : Array[String] */;
128 val* var3 /* : ToolContext */;
129 val* var5 /* : ToolContext */;
130 val* var6 /* : OptionArray */;
131 val* var8 /* : OptionArray */;
132 val* var9 /* : nullable Object */;
133 val* var11 /* : nullable Object */;
134 static val* varonce;
135 val* var12 /* : String */;
136 char* var13 /* : NativeString */;
137 long var14 /* : Int */;
138 val* var15 /* : FlatString */;
139 val* var16 /* : String */;
140 val* var_path_env /* var path_env: String */;
141 short int var17 /* : Bool */;
142 short int var18 /* : Bool */;
143 val* var19 /* : Array[String] */;
144 val* var21 /* : Array[String] */;
145 char var22 /* : Char */;
146 val* var23 /* : Array[String] */;
147 val* var24 /* : Pattern */;
148 val* var25 /* : ToolContext */;
149 val* var27 /* : ToolContext */;
150 val* var28 /* : String */;
151 val* var30 /* : String */;
152 val* var_nit_dir /* var nit_dir: String */;
153 static val* varonce31;
154 val* var32 /* : String */;
155 char* var33 /* : NativeString */;
156 long var34 /* : Int */;
157 val* var35 /* : FlatString */;
158 val* var36 /* : Array[Object] */;
159 long var37 /* : Int */;
160 val* var38 /* : NativeArray[Object] */;
161 val* var39 /* : String */;
162 val* var_libname /* var libname: String */;
163 short int var40 /* : Bool */;
164 val* var41 /* : Array[String] */;
165 val* var43 /* : Array[String] */;
166 {
167 ((void (*)(val* self))(self->class->vft[COLOR_nit__loader___ModelBuilder___standard__kernel__Object__init]))(self) /* init on <self:ModelBuilder>*/;
168 }
169 {
170 { /* Inline loader#ModelBuilder#paths (self) on <self:ModelBuilder> */
171 var2 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
172 if (unlikely(var2 == NULL)) {
173 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
174 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
175 show_backtrace(1);
176 }
177 var = var2;
178 RET_LABEL1:(void)0;
179 }
180 }
181 {
182 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
183 var5 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
184 if (unlikely(var5 == NULL)) {
185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
186 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
187 show_backtrace(1);
188 }
189 var3 = var5;
190 RET_LABEL4:(void)0;
191 }
192 }
193 {
194 { /* Inline loader#ToolContext#opt_path (var3) on <var3:ToolContext> */
195 var8 = var3->attrs[COLOR_nit__loader__ToolContext___opt_path].val; /* _opt_path on <var3:ToolContext> */
196 if (unlikely(var8 == NULL)) {
197 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_path");
198 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 23);
199 show_backtrace(1);
200 }
201 var6 = var8;
202 RET_LABEL7:(void)0;
203 }
204 }
205 {
206 { /* Inline opts#Option#value (var6) on <var6:OptionArray> */
207 var11 = var6->attrs[COLOR_opts__Option___value].val; /* _value on <var6:OptionArray> */
208 var9 = var11;
209 RET_LABEL10:(void)0;
210 }
211 }
212 {
213 standard___standard__Sequence___append(var, var9); /* Direct call abstract_collection#Sequence#append on <var:Array[String]>*/
214 }
215 if (varonce) {
216 var12 = varonce;
217 } else {
218 var13 = "NIT_PATH";
219 var14 = 8;
220 var15 = standard___standard__NativeString___to_s_with_length(var13, var14);
221 var12 = var15;
222 varonce = var12;
223 }
224 {
225 var16 = standard__environ___String___environ(var12);
226 }
227 var_path_env = var16;
228 {
229 var17 = standard___standard__Text___is_empty(var_path_env);
230 }
231 var18 = !var17;
232 if (var18){
233 {
234 { /* Inline loader#ModelBuilder#paths (self) on <self:ModelBuilder> */
235 var21 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
236 if (unlikely(var21 == NULL)) {
237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
238 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
239 show_backtrace(1);
240 }
241 var19 = var21;
242 RET_LABEL20:(void)0;
243 }
244 }
245 var22 = ':';
246 {
247 var24 = BOX_standard__Char(var22); /* autobox from Char to Pattern */
248 var23 = standard__string_search___Text___split_with(var_path_env, var24);
249 }
250 {
251 standard___standard__Sequence___append(var19, var23); /* Direct call abstract_collection#Sequence#append on <var19:Array[String]>*/
252 }
253 } else {
254 }
255 {
256 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
257 var27 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
258 if (unlikely(var27 == NULL)) {
259 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
260 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
261 show_backtrace(1);
262 }
263 var25 = var27;
264 RET_LABEL26:(void)0;
265 }
266 }
267 {
268 { /* Inline toolcontext#ToolContext#nit_dir (var25) on <var25:ToolContext> */
269 var30 = var25->attrs[COLOR_nit__toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <var25:ToolContext> */
270 if (unlikely(var30 == NULL)) {
271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nit_dir");
272 PRINT_ERROR(" (%s:%d)\n", FILE_nit__toolcontext, 452);
273 show_backtrace(1);
274 }
275 var28 = var30;
276 RET_LABEL29:(void)0;
277 }
278 }
279 var_nit_dir = var28;
280 if (varonce31) {
281 var32 = varonce31;
282 } else {
283 var33 = "/lib";
284 var34 = 4;
285 var35 = standard___standard__NativeString___to_s_with_length(var33, var34);
286 var32 = var35;
287 varonce31 = var32;
288 }
289 var36 = NEW_standard__Array(&type_standard__Array__standard__Object);
290 { /* var36 = array_instance Array[Object] */
291 var37 = 2;
292 var38 = NEW_standard__NativeArray(var37, &type_standard__NativeArray__standard__Object);
293 ((struct instance_standard__NativeArray*)var38)->values[0] = (val*) var_nit_dir;
294 ((struct instance_standard__NativeArray*)var38)->values[1] = (val*) var32;
295 {
296 ((void (*)(val* self, val* p0, long p1))(var36->class->vft[COLOR_standard__array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
297 }
298 }
299 {
300 var39 = ((val* (*)(val* self))(var36->class->vft[COLOR_standard__string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
301 }
302 var_libname = var39;
303 {
304 var40 = standard__file___String___file_exists(var_libname);
305 }
306 if (var40){
307 {
308 { /* Inline loader#ModelBuilder#paths (self) on <self:ModelBuilder> */
309 var43 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
310 if (unlikely(var43 == NULL)) {
311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
312 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
313 show_backtrace(1);
314 }
315 var41 = var43;
316 RET_LABEL42:(void)0;
317 }
318 }
319 {
320 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var41, var_libname); /* Direct call array#Array#add on <var41:Array[String]>*/
321 }
322 } else {
323 }
324 RET_LABEL:;
325 }
326 /* method loader#ModelBuilder#parse for (self: ModelBuilder, Sequence[String]): Array[MModule] */
327 val* nit__loader___ModelBuilder___parse(val* self, val* p0) {
328 val* var /* : Array[MModule] */;
329 val* var_modules /* var modules: Sequence[String] */;
330 long var1 /* : Int */;
331 long var3 /* : Int for extern */;
332 long var_time0 /* var time0: Int */;
333 val* var4 /* : ToolContext */;
334 val* var6 /* : ToolContext */;
335 static val* varonce;
336 val* var7 /* : String */;
337 char* var8 /* : NativeString */;
338 long var9 /* : Int */;
339 val* var10 /* : FlatString */;
340 long var11 /* : Int */;
341 val* var12 /* : ArraySet[MModule] */;
342 val* var_mmodules /* var mmodules: ArraySet[MModule] */;
343 val* var_ /* var : Sequence[String] */;
344 val* var13 /* : Iterator[nullable Object] */;
345 val* var_14 /* var : IndexedIterator[String] */;
346 short int var15 /* : Bool */;
347 val* var16 /* : nullable Object */;
348 val* var_a /* var a: String */;
349 val* var17 /* : nullable AModule */;
350 val* var_nmodule /* var nmodule: nullable AModule */;
351 val* var18 /* : null */;
352 short int var19 /* : Bool */;
353 short int var20 /* : Bool */;
354 val* var_other /* var other: nullable Object */;
355 short int var22 /* : Bool */;
356 short int var24 /* : Bool */;
357 val* var25 /* : nullable MModule */;
358 val* var27 /* : nullable MModule */;
359 long var30 /* : Int */;
360 long var32 /* : Int for extern */;
361 long var_time1 /* var time1: Int */;
362 val* var33 /* : ToolContext */;
363 val* var35 /* : ToolContext */;
364 static val* varonce36;
365 val* var37 /* : String */;
366 char* var38 /* : NativeString */;
367 long var39 /* : Int */;
368 val* var40 /* : FlatString */;
369 long var41 /* : Int */;
370 short int var43 /* : Bool */;
371 int cltype;
372 int idtype;
373 const char* var_class_name;
374 long var44 /* : Int */;
375 static val* varonce45;
376 val* var46 /* : String */;
377 char* var47 /* : NativeString */;
378 long var48 /* : Int */;
379 val* var49 /* : FlatString */;
380 val* var50 /* : Array[Object] */;
381 long var51 /* : Int */;
382 val* var52 /* : NativeArray[Object] */;
383 val* var53 /* : Object */;
384 val* var54 /* : String */;
385 long var55 /* : Int */;
386 val* var56 /* : ToolContext */;
387 val* var58 /* : ToolContext */;
388 short int var59 /* : Bool */;
389 val* var60 /* : ToolContext */;
390 val* var62 /* : ToolContext */;
391 val* var63 /* : OptionBool */;
392 val* var65 /* : OptionBool */;
393 val* var66 /* : nullable Object */;
394 val* var68 /* : nullable Object */;
395 short int var69 /* : Bool */;
396 val* var70 /* : ToolContext */;
397 val* var72 /* : ToolContext */;
398 static val* varonce73;
399 val* var74 /* : String */;
400 char* var75 /* : NativeString */;
401 long var76 /* : Int */;
402 val* var77 /* : FlatString */;
403 long var78 /* : Int */;
404 long var79 /* : Int */;
405 val* var81 /* : Array[nullable Object] */;
406 var_modules = p0;
407 {
408 { /* Inline time#Object#get_time (self) on <self:ModelBuilder> */
409 var3 = kernel_Any_Any_get_time_0(self);
410 var1 = var3;
411 goto RET_LABEL2;
412 RET_LABEL2:(void)0;
413 }
414 }
415 var_time0 = var1;
416 {
417 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
418 var6 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
419 if (unlikely(var6 == NULL)) {
420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
421 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
422 show_backtrace(1);
423 }
424 var4 = var6;
425 RET_LABEL5:(void)0;
426 }
427 }
428 if (varonce) {
429 var7 = varonce;
430 } else {
431 var8 = "*** PARSE ***";
432 var9 = 13;
433 var10 = standard___standard__NativeString___to_s_with_length(var8, var9);
434 var7 = var10;
435 varonce = var7;
436 }
437 var11 = 1;
438 {
439 nit___nit__ToolContext___info(var4, var7, var11); /* Direct call toolcontext#ToolContext#info on <var4:ToolContext>*/
440 }
441 var12 = NEW_standard__ArraySet(&type_standard__ArraySet__nit__MModule);
442 {
443 standard___standard__ArraySet___standard__kernel__Object__init(var12); /* Direct call array#ArraySet#init on <var12:ArraySet[MModule]>*/
444 }
445 var_mmodules = var12;
446 var_ = var_modules;
447 {
448 var13 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Sequence[String]>*/;
449 }
450 var_14 = var13;
451 for(;;) {
452 {
453 var15 = ((short int (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:IndexedIterator[String]>*/;
454 }
455 if (var15){
456 {
457 var16 = ((val* (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14) /* item on <var_14:IndexedIterator[String]>*/;
458 }
459 var_a = var16;
460 {
461 var17 = nit__loader___ModelBuilder___load_module(self, var_a);
462 }
463 var_nmodule = var17;
464 var18 = NULL;
465 if (var_nmodule == NULL) {
466 var19 = 1; /* is null */
467 } else {
468 var19 = 0; /* arg is null but recv is not */
469 }
470 if (0) {
471 { /* Inline kernel#Object#== (var_nmodule,var18) on <var_nmodule:nullable AModule> */
472 var_other = var18;
473 {
474 { /* Inline kernel#Object#is_same_instance (var_nmodule,var_other) on <var_nmodule:nullable AModule(AModule)> */
475 var24 = var_nmodule == var_other;
476 var22 = var24;
477 goto RET_LABEL23;
478 RET_LABEL23:(void)0;
479 }
480 }
481 var20 = var22;
482 goto RET_LABEL21;
483 RET_LABEL21:(void)0;
484 }
485 var19 = var20;
486 }
487 if (var19){
488 goto BREAK_label;
489 } else {
490 }
491 {
492 nit__loader___ModelBuilder___build_module_importation(self, var_nmodule); /* Direct call loader#ModelBuilder#build_module_importation on <self:ModelBuilder>*/
493 }
494 {
495 { /* Inline loader#AModule#mmodule (var_nmodule) on <var_nmodule:nullable AModule(AModule)> */
496 var27 = var_nmodule->attrs[COLOR_nit__loader__AModule___mmodule].val; /* _mmodule on <var_nmodule:nullable AModule(AModule)> */
497 var25 = var27;
498 RET_LABEL26:(void)0;
499 }
500 }
501 if (unlikely(var25 == NULL)) {
502 PRINT_ERROR("Runtime error: %s", "Cast failed");
503 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 76);
504 show_backtrace(1);
505 }
506 {
507 standard___standard__ArraySet___standard__abstract_collection__SimpleCollection__add(var_mmodules, var25); /* Direct call array#ArraySet#add on <var_mmodules:ArraySet[MModule]>*/
508 }
509 BREAK_label: (void)0;
510 {
511 ((void (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14) /* next on <var_14:IndexedIterator[String]>*/;
512 }
513 } else {
514 goto BREAK_label28;
515 }
516 }
517 BREAK_label28: (void)0;
518 {
519 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:IndexedIterator[String]> */
520 RET_LABEL29:(void)0;
521 }
522 }
523 {
524 { /* Inline time#Object#get_time (self) on <self:ModelBuilder> */
525 var32 = kernel_Any_Any_get_time_0(self);
526 var30 = var32;
527 goto RET_LABEL31;
528 RET_LABEL31:(void)0;
529 }
530 }
531 var_time1 = var30;
532 {
533 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
534 var35 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
535 if (unlikely(var35 == NULL)) {
536 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
537 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
538 show_backtrace(1);
539 }
540 var33 = var35;
541 RET_LABEL34:(void)0;
542 }
543 }
544 if (varonce36) {
545 var37 = varonce36;
546 } else {
547 var38 = "*** END PARSE: ";
548 var39 = 15;
549 var40 = standard___standard__NativeString___to_s_with_length(var38, var39);
550 var37 = var40;
551 varonce36 = var37;
552 }
553 {
554 { /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
555 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
556 /* <var_time0:Int> isa OTHER */
557 var43 = 1; /* easy <var_time0:Int> isa OTHER*/
558 if (unlikely(!var43)) {
559 var_class_name = type_standard__Int.name;
560 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
561 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
562 show_backtrace(1);
563 }
564 var44 = var_time1 - var_time0;
565 var41 = var44;
566 goto RET_LABEL42;
567 RET_LABEL42:(void)0;
568 }
569 }
570 if (varonce45) {
571 var46 = varonce45;
572 } else {
573 var47 = " ***";
574 var48 = 4;
575 var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
576 var46 = var49;
577 varonce45 = var46;
578 }
579 var50 = NEW_standard__Array(&type_standard__Array__standard__Object);
580 { /* var50 = array_instance Array[Object] */
581 var51 = 3;
582 var52 = NEW_standard__NativeArray(var51, &type_standard__NativeArray__standard__Object);
583 ((struct instance_standard__NativeArray*)var52)->values[0] = (val*) var37;
584 var53 = BOX_standard__Int(var41); /* autobox from Int to Object */
585 ((struct instance_standard__NativeArray*)var52)->values[1] = (val*) var53;
586 ((struct instance_standard__NativeArray*)var52)->values[2] = (val*) var46;
587 {
588 ((void (*)(val* self, val* p0, long p1))(var50->class->vft[COLOR_standard__array__Array__with_native]))(var50, var52, var51) /* with_native on <var50:Array[Object]>*/;
589 }
590 }
591 {
592 var54 = ((val* (*)(val* self))(var50->class->vft[COLOR_standard__string__Object__to_s]))(var50) /* to_s on <var50:Array[Object]>*/;
593 }
594 var55 = 2;
595 {
596 nit___nit__ToolContext___info(var33, var54, var55); /* Direct call toolcontext#ToolContext#info on <var33:ToolContext>*/
597 }
598 {
599 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
600 var58 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
601 if (unlikely(var58 == NULL)) {
602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
603 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
604 show_backtrace(1);
605 }
606 var56 = var58;
607 RET_LABEL57:(void)0;
608 }
609 }
610 {
611 var59 = nit___nit__ToolContext___check_errors(var56);
612 }
613 {
614 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
615 var62 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
616 if (unlikely(var62 == NULL)) {
617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
618 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
619 show_backtrace(1);
620 }
621 var60 = var62;
622 RET_LABEL61:(void)0;
623 }
624 }
625 {
626 { /* Inline loader#ToolContext#opt_only_parse (var60) on <var60:ToolContext> */
627 var65 = var60->attrs[COLOR_nit__loader__ToolContext___opt_only_parse].val; /* _opt_only_parse on <var60:ToolContext> */
628 if (unlikely(var65 == NULL)) {
629 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_only_parse");
630 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 29);
631 show_backtrace(1);
632 }
633 var63 = var65;
634 RET_LABEL64:(void)0;
635 }
636 }
637 {
638 { /* Inline opts#Option#value (var63) on <var63:OptionBool> */
639 var68 = var63->attrs[COLOR_opts__Option___value].val; /* _value on <var63:OptionBool> */
640 var66 = var68;
641 RET_LABEL67:(void)0;
642 }
643 }
644 var69 = ((struct instance_standard__Bool*)var66)->value; /* autounbox from nullable Object to Bool */;
645 if (var69){
646 {
647 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
648 var72 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
649 if (unlikely(var72 == NULL)) {
650 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
651 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
652 show_backtrace(1);
653 }
654 var70 = var72;
655 RET_LABEL71:(void)0;
656 }
657 }
658 if (varonce73) {
659 var74 = varonce73;
660 } else {
661 var75 = "*** ONLY PARSE...";
662 var76 = 17;
663 var77 = standard___standard__NativeString___to_s_with_length(var75, var76);
664 var74 = var77;
665 varonce73 = var74;
666 }
667 var78 = 1;
668 {
669 nit___nit__ToolContext___info(var70, var74, var78); /* Direct call toolcontext#ToolContext#info on <var70:ToolContext>*/
670 }
671 var79 = 0;
672 {
673 { /* Inline kernel#Object#exit (self,var79) on <self:ModelBuilder> */
674 exit(var79);
675 RET_LABEL80:(void)0;
676 }
677 }
678 } else {
679 }
680 {
681 var81 = standard__array___Collection___to_a(var_mmodules);
682 }
683 var = var81;
684 goto RET_LABEL;
685 RET_LABEL:;
686 return var;
687 }
688 /* method loader#ModelBuilder#paths for (self: ModelBuilder): Array[String] */
689 val* nit__loader___ModelBuilder___paths(val* self) {
690 val* var /* : Array[String] */;
691 val* var1 /* : Array[String] */;
692 var1 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
693 if (unlikely(var1 == NULL)) {
694 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
695 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
696 show_backtrace(1);
697 }
698 var = var1;
699 RET_LABEL:;
700 return var;
701 }
702 /* method loader#ModelBuilder#search_mmodule_by_name for (self: ModelBuilder, nullable ANode, nullable MGroup, String): nullable ModulePath */
703 val* nit__loader___ModelBuilder___search_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
704 val* var /* : nullable ModulePath */;
705 val* var_anode /* var anode: nullable ANode */;
706 val* var_mgroup /* var mgroup: nullable MGroup */;
707 val* var_name /* var name: String */;
708 val* var_c /* var c: nullable MGroup */;
709 val* var1 /* : null */;
710 short int var2 /* : Bool */;
711 short int var3 /* : Bool */;
712 val* var_other /* var other: nullable Object */;
713 short int var5 /* : Bool */;
714 short int var6 /* : Bool */;
715 val* var7 /* : nullable String */;
716 val* var9 /* : nullable String */;
717 val* var_dirname /* var dirname: nullable String */;
718 val* var10 /* : null */;
719 short int var11 /* : Bool */;
720 short int var12 /* : Bool */;
721 static val* varonce;
722 val* var13 /* : String */;
723 char* var14 /* : NativeString */;
724 long var15 /* : Int */;
725 val* var16 /* : FlatString */;
726 short int var17 /* : Bool */;
727 static val* varonce18;
728 val* var19 /* : String */;
729 char* var20 /* : NativeString */;
730 long var21 /* : Int */;
731 val* var22 /* : FlatString */;
732 val* var23 /* : String */;
733 val* var24 /* : String */;
734 static val* varonce25;
735 val* var26 /* : String */;
736 char* var27 /* : NativeString */;
737 long var28 /* : Int */;
738 val* var29 /* : FlatString */;
739 val* var30 /* : String */;
740 val* var_try_file /* var try_file: String */;
741 short int var31 /* : Bool */;
742 val* var32 /* : String */;
743 val* var33 /* : nullable ModulePath */;
744 val* var_res /* var res: nullable ModulePath */;
745 val* var34 /* : null */;
746 short int var35 /* : Bool */;
747 short int var36 /* : Bool */;
748 short int var38 /* : Bool */;
749 short int var39 /* : Bool */;
750 static val* varonce40;
751 val* var41 /* : String */;
752 char* var42 /* : NativeString */;
753 long var43 /* : Int */;
754 val* var44 /* : FlatString */;
755 val* var45 /* : String */;
756 val* var46 /* : String */;
757 static val* varonce47;
758 val* var48 /* : String */;
759 char* var49 /* : NativeString */;
760 long var50 /* : Int */;
761 val* var51 /* : FlatString */;
762 val* var52 /* : String */;
763 val* var53 /* : String */;
764 static val* varonce54;
765 val* var55 /* : String */;
766 char* var56 /* : NativeString */;
767 long var57 /* : Int */;
768 val* var58 /* : FlatString */;
769 val* var59 /* : String */;
770 short int var60 /* : Bool */;
771 val* var61 /* : String */;
772 val* var62 /* : nullable ModulePath */;
773 val* var_res63 /* var res: nullable ModulePath */;
774 val* var64 /* : null */;
775 short int var65 /* : Bool */;
776 short int var66 /* : Bool */;
777 short int var68 /* : Bool */;
778 short int var69 /* : Bool */;
779 val* var70 /* : nullable MGroup */;
780 val* var72 /* : nullable MGroup */;
781 val* var73 /* : Array[String] */;
782 val* var75 /* : Array[String] */;
783 val* var_lookpaths /* var lookpaths: Array[String] */;
784 val* var76 /* : null */;
785 short int var77 /* : Bool */;
786 short int var78 /* : Bool */;
787 short int var80 /* : Bool */;
788 short int var81 /* : Bool */;
789 val* var82 /* : MProject */;
790 val* var84 /* : MProject */;
791 val* var85 /* : nullable MGroup */;
792 val* var87 /* : nullable MGroup */;
793 val* var88 /* : nullable String */;
794 val* var90 /* : nullable String */;
795 val* var_dirname91 /* var dirname: nullable String */;
796 val* var92 /* : null */;
797 short int var93 /* : Bool */;
798 short int var94 /* : Bool */;
799 short int var96 /* : Bool */;
800 short int var97 /* : Bool */;
801 static val* varonce98;
802 val* var99 /* : String */;
803 char* var100 /* : NativeString */;
804 long var101 /* : Int */;
805 val* var102 /* : FlatString */;
806 val* var103 /* : String */;
807 val* var104 /* : String */;
808 short int var105 /* : Bool */;
809 short int var106 /* : Bool */;
810 short int var107 /* : Bool */;
811 short int var_ /* var : Bool */;
812 short int var108 /* : Bool */;
813 val* var109 /* : Array[nullable Object] */;
814 val* var110 /* : Location */;
815 val* var111 /* : nullable ModulePath */;
816 val* var_candidate /* var candidate: nullable ModulePath */;
817 val* var112 /* : null */;
818 short int var113 /* : Bool */;
819 short int var114 /* : Bool */;
820 val* var_other116 /* var other: nullable Object */;
821 short int var117 /* : Bool */;
822 short int var119 /* : Bool */;
823 val* var120 /* : null */;
824 short int var121 /* : Bool */;
825 short int var122 /* : Bool */;
826 short int var124 /* : Bool */;
827 short int var125 /* : Bool */;
828 static val* varonce126;
829 val* var127 /* : String */;
830 char* var128 /* : NativeString */;
831 long var129 /* : Int */;
832 val* var130 /* : FlatString */;
833 static val* varonce131;
834 val* var132 /* : String */;
835 char* var133 /* : NativeString */;
836 long var134 /* : Int */;
837 val* var135 /* : FlatString */;
838 val* var136 /* : String */;
839 val* var138 /* : String */;
840 static val* varonce139;
841 val* var140 /* : String */;
842 char* var141 /* : NativeString */;
843 long var142 /* : Int */;
844 val* var143 /* : FlatString */;
845 static val* varonce144;
846 val* var145 /* : String */;
847 char* var146 /* : NativeString */;
848 long var147 /* : Int */;
849 val* var148 /* : FlatString */;
850 val* var149 /* : String */;
851 val* var150 /* : Array[Object] */;
852 long var151 /* : Int */;
853 val* var152 /* : NativeArray[Object] */;
854 val* var153 /* : String */;
855 static val* varonce154;
856 val* var155 /* : String */;
857 char* var156 /* : NativeString */;
858 long var157 /* : Int */;
859 val* var158 /* : FlatString */;
860 static val* varonce159;
861 val* var160 /* : String */;
862 char* var161 /* : NativeString */;
863 long var162 /* : Int */;
864 val* var163 /* : FlatString */;
865 static val* varonce164;
866 val* var165 /* : String */;
867 char* var166 /* : NativeString */;
868 long var167 /* : Int */;
869 val* var168 /* : FlatString */;
870 val* var169 /* : String */;
871 val* var170 /* : Array[Object] */;
872 long var171 /* : Int */;
873 val* var172 /* : NativeArray[Object] */;
874 val* var173 /* : String */;
875 val* var174 /* : null */;
876 var_anode = p0;
877 var_mgroup = p1;
878 var_name = p2;
879 var_c = var_mgroup;
880 for(;;) {
881 var1 = NULL;
882 if (var_c == NULL) {
883 var2 = 0; /* is null */
884 } else {
885 var2 = 1; /* arg is null and recv is not */
886 }
887 if (0) {
888 { /* Inline kernel#Object#!= (var_c,var1) on <var_c:nullable MGroup> */
889 var_other = var1;
890 {
891 var5 = ((short int (*)(val* self, val* p0))(var_c->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_c, var_other) /* == on <var_c:nullable MGroup(MGroup)>*/;
892 }
893 var6 = !var5;
894 var3 = var6;
895 goto RET_LABEL4;
896 RET_LABEL4:(void)0;
897 }
898 var2 = var3;
899 }
900 if (var2){
901 {
902 { /* Inline mproject#MGroup#filepath (var_c) on <var_c:nullable MGroup(MGroup)> */
903 var9 = var_c->attrs[COLOR_nit__mproject__MGroup___filepath].val; /* _filepath on <var_c:nullable MGroup(MGroup)> */
904 var7 = var9;
905 RET_LABEL8:(void)0;
906 }
907 }
908 var_dirname = var7;
909 var10 = NULL;
910 if (var_dirname == NULL) {
911 var11 = 1; /* is null */
912 } else {
913 var11 = 0; /* arg is null but recv is not */
914 }
915 if (0) {
916 var12 = ((short int (*)(val* self, val* p0))(var_dirname->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_dirname, var10) /* == on <var_dirname:nullable String>*/;
917 var11 = var12;
918 }
919 if (var11){
920 goto BREAK_label;
921 } else {
922 }
923 if (varonce) {
924 var13 = varonce;
925 } else {
926 var14 = ".nit";
927 var15 = 4;
928 var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
929 var13 = var16;
930 varonce = var13;
931 }
932 {
933 var17 = standard___standard__Text___has_suffix(var_dirname, var13);
934 }
935 if (var17){
936 goto BREAK_label;
937 } else {
938 }
939 if (varonce18) {
940 var19 = varonce18;
941 } else {
942 var20 = "/";
943 var21 = 1;
944 var22 = standard___standard__NativeString___to_s_with_length(var20, var21);
945 var19 = var22;
946 varonce18 = var19;
947 }
948 {
949 var23 = ((val* (*)(val* self, val* p0))(var_dirname->class->vft[COLOR_standard__string__String___43d]))(var_dirname, var19) /* + on <var_dirname:nullable String(String)>*/;
950 }
951 {
952 var24 = ((val* (*)(val* self, val* p0))(var23->class->vft[COLOR_standard__string__String___43d]))(var23, var_name) /* + on <var23:String>*/;
953 }
954 if (varonce25) {
955 var26 = varonce25;
956 } else {
957 var27 = ".nit";
958 var28 = 4;
959 var29 = standard___standard__NativeString___to_s_with_length(var27, var28);
960 var26 = var29;
961 varonce25 = var26;
962 }
963 {
964 var30 = ((val* (*)(val* self, val* p0))(var24->class->vft[COLOR_standard__string__String___43d]))(var24, var26) /* + on <var24:String>*/;
965 }
966 var_try_file = var30;
967 {
968 var31 = standard__file___String___file_exists(var_try_file);
969 }
970 if (var31){
971 {
972 var32 = standard__file___String___simplify_path(var_try_file);
973 }
974 {
975 var33 = nit__loader___ModelBuilder___identify_file(self, var32);
976 }
977 var_res = var33;
978 var34 = NULL;
979 if (var_res == NULL) {
980 var35 = 0; /* is null */
981 } else {
982 var35 = 1; /* arg is null and recv is not */
983 }
984 if (0) {
985 { /* Inline kernel#Object#!= (var_res,var34) on <var_res:nullable ModulePath> */
986 var_other = var34;
987 {
988 var38 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable ModulePath(ModulePath)>*/;
989 }
990 var39 = !var38;
991 var36 = var39;
992 goto RET_LABEL37;
993 RET_LABEL37:(void)0;
994 }
995 var35 = var36;
996 }
997 if (unlikely(!var35)) {
998 PRINT_ERROR("Runtime error: %s", "Assert failed");
999 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 169);
1000 show_backtrace(1);
1001 }
1002 var = var_res;
1003 goto RET_LABEL;
1004 } else {
1005 }
1006 if (varonce40) {
1007 var41 = varonce40;
1008 } else {
1009 var42 = "/";
1010 var43 = 1;
1011 var44 = standard___standard__NativeString___to_s_with_length(var42, var43);
1012 var41 = var44;
1013 varonce40 = var41;
1014 }
1015 {
1016 var45 = ((val* (*)(val* self, val* p0))(var_dirname->class->vft[COLOR_standard__string__String___43d]))(var_dirname, var41) /* + on <var_dirname:nullable String(String)>*/;
1017 }
1018 {
1019 var46 = ((val* (*)(val* self, val* p0))(var45->class->vft[COLOR_standard__string__String___43d]))(var45, var_name) /* + on <var45:String>*/;
1020 }
1021 if (varonce47) {
1022 var48 = varonce47;
1023 } else {
1024 var49 = "/";
1025 var50 = 1;
1026 var51 = standard___standard__NativeString___to_s_with_length(var49, var50);
1027 var48 = var51;
1028 varonce47 = var48;
1029 }
1030 {
1031 var52 = ((val* (*)(val* self, val* p0))(var46->class->vft[COLOR_standard__string__String___43d]))(var46, var48) /* + on <var46:String>*/;
1032 }
1033 {
1034 var53 = ((val* (*)(val* self, val* p0))(var52->class->vft[COLOR_standard__string__String___43d]))(var52, var_name) /* + on <var52:String>*/;
1035 }
1036 if (varonce54) {
1037 var55 = varonce54;
1038 } else {
1039 var56 = ".nit";
1040 var57 = 4;
1041 var58 = standard___standard__NativeString___to_s_with_length(var56, var57);
1042 var55 = var58;
1043 varonce54 = var55;
1044 }
1045 {
1046 var59 = ((val* (*)(val* self, val* p0))(var53->class->vft[COLOR_standard__string__String___43d]))(var53, var55) /* + on <var53:String>*/;
1047 }
1048 var_try_file = var59;
1049 {
1050 var60 = standard__file___String___file_exists(var_try_file);
1051 }
1052 if (var60){
1053 {
1054 var61 = standard__file___String___simplify_path(var_try_file);
1055 }
1056 {
1057 var62 = nit__loader___ModelBuilder___identify_file(self, var61);
1058 }
1059 var_res63 = var62;
1060 var64 = NULL;
1061 if (var_res63 == NULL) {
1062 var65 = 0; /* is null */
1063 } else {
1064 var65 = 1; /* arg is null and recv is not */
1065 }
1066 if (0) {
1067 { /* Inline kernel#Object#!= (var_res63,var64) on <var_res63:nullable ModulePath> */
1068 var_other = var64;
1069 {
1070 var68 = ((short int (*)(val* self, val* p0))(var_res63->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res63, var_other) /* == on <var_res63:nullable ModulePath(ModulePath)>*/;
1071 }
1072 var69 = !var68;
1073 var66 = var69;
1074 goto RET_LABEL67;
1075 RET_LABEL67:(void)0;
1076 }
1077 var65 = var66;
1078 }
1079 if (unlikely(!var65)) {
1080 PRINT_ERROR("Runtime error: %s", "Assert failed");
1081 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 177);
1082 show_backtrace(1);
1083 }
1084 var = var_res63;
1085 goto RET_LABEL;
1086 } else {
1087 }
1088 {
1089 { /* Inline mproject#MGroup#parent (var_c) on <var_c:nullable MGroup(MGroup)> */
1090 var72 = var_c->attrs[COLOR_nit__mproject__MGroup___parent].val; /* _parent on <var_c:nullable MGroup(MGroup)> */
1091 var70 = var72;
1092 RET_LABEL71:(void)0;
1093 }
1094 }
1095 var_c = var70;
1096 } else {
1097 goto BREAK_label;
1098 }
1099 }
1100 BREAK_label: (void)0;
1101 {
1102 { /* Inline loader#ModelBuilder#paths (self) on <self:ModelBuilder> */
1103 var75 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
1104 if (unlikely(var75 == NULL)) {
1105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
1106 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
1107 show_backtrace(1);
1108 }
1109 var73 = var75;
1110 RET_LABEL74:(void)0;
1111 }
1112 }
1113 var_lookpaths = var73;
1114 var76 = NULL;
1115 if (var_mgroup == NULL) {
1116 var77 = 0; /* is null */
1117 } else {
1118 var77 = 1; /* arg is null and recv is not */
1119 }
1120 if (0) {
1121 { /* Inline kernel#Object#!= (var_mgroup,var76) on <var_mgroup:nullable MGroup> */
1122 var_other = var76;
1123 {
1124 var80 = ((short int (*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on <var_mgroup:nullable MGroup(MGroup)>*/;
1125 }
1126 var81 = !var80;
1127 var78 = var81;
1128 goto RET_LABEL79;
1129 RET_LABEL79:(void)0;
1130 }
1131 var77 = var78;
1132 }
1133 if (var77){
1134 {
1135 { /* Inline mproject#MGroup#mproject (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
1136 var84 = var_mgroup->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var_mgroup:nullable MGroup(MGroup)> */
1137 if (unlikely(var84 == NULL)) {
1138 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
1139 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
1140 show_backtrace(1);
1141 }
1142 var82 = var84;
1143 RET_LABEL83:(void)0;
1144 }
1145 }
1146 {
1147 { /* Inline mproject#MProject#root (var82) on <var82:MProject> */
1148 var87 = var82->attrs[COLOR_nit__mproject__MProject___root].val; /* _root on <var82:MProject> */
1149 var85 = var87;
1150 RET_LABEL86:(void)0;
1151 }
1152 }
1153 if (var85 == NULL) {
1154 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1155 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 190);
1156 show_backtrace(1);
1157 } else {
1158 { /* Inline mproject#MGroup#filepath (var85) on <var85:nullable MGroup> */
1159 if (unlikely(var85 == NULL)) {
1160 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1161 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 93);
1162 show_backtrace(1);
1163 }
1164 var90 = var85->attrs[COLOR_nit__mproject__MGroup___filepath].val; /* _filepath on <var85:nullable MGroup> */
1165 var88 = var90;
1166 RET_LABEL89:(void)0;
1167 }
1168 }
1169 var_dirname91 = var88;
1170 var92 = NULL;
1171 if (var_dirname91 == NULL) {
1172 var93 = 0; /* is null */
1173 } else {
1174 var93 = 1; /* arg is null and recv is not */
1175 }
1176 if (0) {
1177 { /* Inline kernel#Object#!= (var_dirname91,var92) on <var_dirname91:nullable String> */
1178 var_other = var92;
1179 {
1180 var96 = ((short int (*)(val* self, val* p0))(var_dirname91->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_dirname91, var_other) /* == on <var_dirname91:nullable String(String)>*/;
1181 }
1182 var97 = !var96;
1183 var94 = var97;
1184 goto RET_LABEL95;
1185 RET_LABEL95:(void)0;
1186 }
1187 var93 = var94;
1188 }
1189 if (var93){
1190 if (varonce98) {
1191 var99 = varonce98;
1192 } else {
1193 var100 = "..";
1194 var101 = 2;
1195 var102 = standard___standard__NativeString___to_s_with_length(var100, var101);
1196 var99 = var102;
1197 varonce98 = var99;
1198 }
1199 {
1200 var103 = standard__file___String___join_path(var_dirname91, var99);
1201 }
1202 {
1203 var104 = standard__file___String___simplify_path(var103);
1204 }
1205 var_dirname91 = var104;
1206 {
1207 var106 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__has(var_lookpaths, var_dirname91);
1208 }
1209 var107 = !var106;
1210 var_ = var107;
1211 if (var107){
1212 {
1213 var108 = standard__file___String___file_exists(var_dirname91);
1214 }
1215 var105 = var108;
1216 } else {
1217 var105 = var_;
1218 }
1219 if (var105){
1220 {
1221 var109 = standard__array___Collection___to_a(var_lookpaths);
1222 }
1223 var_lookpaths = var109;
1224 {
1225 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_lookpaths, var_dirname91); /* Direct call array#Array#add on <var_lookpaths:Array[String]>*/
1226 }
1227 } else {
1228 }
1229 } else {
1230 }
1231 } else {
1232 }
1233 if (var_anode == NULL) {
1234 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1235 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 200);
1236 show_backtrace(1);
1237 } else {
1238 var110 = ((val* (*)(val* self))(var_anode->class->vft[COLOR_nit__parser_nodes__ANode__hot_location]))(var_anode) /* hot_location on <var_anode:nullable ANode>*/;
1239 }
1240 {
1241 var111 = nit__loader___ModelBuilder___search_module_in_paths(self, var110, var_name, var_lookpaths);
1242 }
1243 var_candidate = var111;
1244 var112 = NULL;
1245 if (var_candidate == NULL) {
1246 var113 = 1; /* is null */
1247 } else {
1248 var113 = 0; /* arg is null but recv is not */
1249 }
1250 if (0) {
1251 { /* Inline kernel#Object#== (var_candidate,var112) on <var_candidate:nullable ModulePath> */
1252 var_other116 = var112;
1253 {
1254 { /* Inline kernel#Object#is_same_instance (var_candidate,var_other116) on <var_candidate:nullable ModulePath(ModulePath)> */
1255 var119 = var_candidate == var_other116;
1256 var117 = var119;
1257 goto RET_LABEL118;
1258 RET_LABEL118:(void)0;
1259 }
1260 }
1261 var114 = var117;
1262 goto RET_LABEL115;
1263 RET_LABEL115:(void)0;
1264 }
1265 var113 = var114;
1266 }
1267 if (var113){
1268 var120 = NULL;
1269 if (var_mgroup == NULL) {
1270 var121 = 0; /* is null */
1271 } else {
1272 var121 = 1; /* arg is null and recv is not */
1273 }
1274 if (0) {
1275 { /* Inline kernel#Object#!= (var_mgroup,var120) on <var_mgroup:nullable MGroup> */
1276 var_other = var120;
1277 {
1278 var124 = ((short int (*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on <var_mgroup:nullable MGroup(MGroup)>*/;
1279 }
1280 var125 = !var124;
1281 var122 = var125;
1282 goto RET_LABEL123;
1283 RET_LABEL123:(void)0;
1284 }
1285 var121 = var122;
1286 }
1287 if (var121){
1288 if (varonce126) {
1289 var127 = varonce126;
1290 } else {
1291 var128 = "Error: cannot find module ";
1292 var129 = 26;
1293 var130 = standard___standard__NativeString___to_s_with_length(var128, var129);
1294 var127 = var130;
1295 varonce126 = var127;
1296 }
1297 if (varonce131) {
1298 var132 = varonce131;
1299 } else {
1300 var133 = " from ";
1301 var134 = 6;
1302 var135 = standard___standard__NativeString___to_s_with_length(var133, var134);
1303 var132 = var135;
1304 varonce131 = var132;
1305 }
1306 {
1307 { /* Inline mproject#MGroup#name (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
1308 var138 = var_mgroup->attrs[COLOR_nit__mproject__MGroup___name].val; /* _name on <var_mgroup:nullable MGroup(MGroup)> */
1309 if (unlikely(var138 == NULL)) {
1310 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1311 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 65);
1312 show_backtrace(1);
1313 }
1314 var136 = var138;
1315 RET_LABEL137:(void)0;
1316 }
1317 }
1318 if (varonce139) {
1319 var140 = varonce139;
1320 } else {
1321 var141 = ". tried ";
1322 var142 = 8;
1323 var143 = standard___standard__NativeString___to_s_with_length(var141, var142);
1324 var140 = var143;
1325 varonce139 = var140;
1326 }
1327 if (varonce144) {
1328 var145 = varonce144;
1329 } else {
1330 var146 = ", ";
1331 var147 = 2;
1332 var148 = standard___standard__NativeString___to_s_with_length(var146, var147);
1333 var145 = var148;
1334 varonce144 = var145;
1335 }
1336 {
1337 var149 = standard__string___Collection___join(var_lookpaths, var145);
1338 }
1339 var150 = NEW_standard__Array(&type_standard__Array__standard__Object);
1340 { /* var150 = array_instance Array[Object] */
1341 var151 = 6;
1342 var152 = NEW_standard__NativeArray(var151, &type_standard__NativeArray__standard__Object);
1343 ((struct instance_standard__NativeArray*)var152)->values[0] = (val*) var127;
1344 ((struct instance_standard__NativeArray*)var152)->values[1] = (val*) var_name;
1345 ((struct instance_standard__NativeArray*)var152)->values[2] = (val*) var132;
1346 ((struct instance_standard__NativeArray*)var152)->values[3] = (val*) var136;
1347 ((struct instance_standard__NativeArray*)var152)->values[4] = (val*) var140;
1348 ((struct instance_standard__NativeArray*)var152)->values[5] = (val*) var149;
1349 {
1350 ((void (*)(val* self, val* p0, long p1))(var150->class->vft[COLOR_standard__array__Array__with_native]))(var150, var152, var151) /* with_native on <var150:Array[Object]>*/;
1351 }
1352 }
1353 {
1354 var153 = ((val* (*)(val* self))(var150->class->vft[COLOR_standard__string__Object__to_s]))(var150) /* to_s on <var150:Array[Object]>*/;
1355 }
1356 {
1357 nit___nit__ModelBuilder___error(self, var_anode, var153); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
1358 }
1359 } else {
1360 if (varonce154) {
1361 var155 = varonce154;
1362 } else {
1363 var156 = "Error: cannot find module ";
1364 var157 = 26;
1365 var158 = standard___standard__NativeString___to_s_with_length(var156, var157);
1366 var155 = var158;
1367 varonce154 = var155;
1368 }
1369 if (varonce159) {
1370 var160 = varonce159;
1371 } else {
1372 var161 = ". tried ";
1373 var162 = 8;
1374 var163 = standard___standard__NativeString___to_s_with_length(var161, var162);
1375 var160 = var163;
1376 varonce159 = var160;
1377 }
1378 if (varonce164) {
1379 var165 = varonce164;
1380 } else {
1381 var166 = ", ";
1382 var167 = 2;
1383 var168 = standard___standard__NativeString___to_s_with_length(var166, var167);
1384 var165 = var168;
1385 varonce164 = var165;
1386 }
1387 {
1388 var169 = standard__string___Collection___join(var_lookpaths, var165);
1389 }
1390 var170 = NEW_standard__Array(&type_standard__Array__standard__Object);
1391 { /* var170 = array_instance Array[Object] */
1392 var171 = 4;
1393 var172 = NEW_standard__NativeArray(var171, &type_standard__NativeArray__standard__Object);
1394 ((struct instance_standard__NativeArray*)var172)->values[0] = (val*) var155;
1395 ((struct instance_standard__NativeArray*)var172)->values[1] = (val*) var_name;
1396 ((struct instance_standard__NativeArray*)var172)->values[2] = (val*) var160;
1397 ((struct instance_standard__NativeArray*)var172)->values[3] = (val*) var169;
1398 {
1399 ((void (*)(val* self, val* p0, long p1))(var170->class->vft[COLOR_standard__array__Array__with_native]))(var170, var172, var171) /* with_native on <var170:Array[Object]>*/;
1400 }
1401 }
1402 {
1403 var173 = ((val* (*)(val* self))(var170->class->vft[COLOR_standard__string__Object__to_s]))(var170) /* to_s on <var170:Array[Object]>*/;
1404 }
1405 {
1406 nit___nit__ModelBuilder___error(self, var_anode, var173); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
1407 }
1408 }
1409 var174 = NULL;
1410 var = var174;
1411 goto RET_LABEL;
1412 } else {
1413 }
1414 var = var_candidate;
1415 goto RET_LABEL;
1416 RET_LABEL:;
1417 return var;
1418 }
1419 /* method loader#ModelBuilder#get_mmodule_by_name for (self: ModelBuilder, nullable ANode, nullable MGroup, String): nullable MModule */
1420 val* nit__loader___ModelBuilder___get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
1421 val* var /* : nullable MModule */;
1422 val* var_anode /* var anode: nullable ANode */;
1423 val* var_mgroup /* var mgroup: nullable MGroup */;
1424 val* var_name /* var name: String */;
1425 val* var1 /* : nullable ModulePath */;
1426 val* var_path /* var path: nullable ModulePath */;
1427 val* var2 /* : null */;
1428 short int var3 /* : Bool */;
1429 short int var4 /* : Bool */;
1430 val* var_other /* var other: nullable Object */;
1431 short int var6 /* : Bool */;
1432 short int var8 /* : Bool */;
1433 val* var9 /* : null */;
1434 val* var10 /* : String */;
1435 val* var12 /* : String */;
1436 val* var13 /* : nullable AModule */;
1437 val* var_res /* var res: nullable AModule */;
1438 val* var14 /* : null */;
1439 short int var15 /* : Bool */;
1440 short int var16 /* : Bool */;
1441 short int var18 /* : Bool */;
1442 short int var20 /* : Bool */;
1443 val* var21 /* : null */;
1444 val* var22 /* : nullable MModule */;
1445 val* var24 /* : nullable MModule */;
1446 var_anode = p0;
1447 var_mgroup = p1;
1448 var_name = p2;
1449 {
1450 var1 = nit__loader___ModelBuilder___search_mmodule_by_name(self, var_anode, var_mgroup, var_name);
1451 }
1452 var_path = var1;
1453 var2 = NULL;
1454 if (var_path == NULL) {
1455 var3 = 1; /* is null */
1456 } else {
1457 var3 = 0; /* arg is null but recv is not */
1458 }
1459 if (0) {
1460 { /* Inline kernel#Object#== (var_path,var2) on <var_path:nullable ModulePath> */
1461 var_other = var2;
1462 {
1463 { /* Inline kernel#Object#is_same_instance (var_path,var_other) on <var_path:nullable ModulePath(ModulePath)> */
1464 var8 = var_path == var_other;
1465 var6 = var8;
1466 goto RET_LABEL7;
1467 RET_LABEL7:(void)0;
1468 }
1469 }
1470 var4 = var6;
1471 goto RET_LABEL5;
1472 RET_LABEL5:(void)0;
1473 }
1474 var3 = var4;
1475 }
1476 if (var3){
1477 var9 = NULL;
1478 var = var9;
1479 goto RET_LABEL;
1480 } else {
1481 }
1482 {
1483 { /* Inline loader#ModulePath#filepath (var_path) on <var_path:nullable ModulePath(ModulePath)> */
1484 var12 = var_path->attrs[COLOR_nit__loader__ModulePath___filepath].val; /* _filepath on <var_path:nullable ModulePath(ModulePath)> */
1485 if (unlikely(var12 == NULL)) {
1486 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath");
1487 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 662);
1488 show_backtrace(1);
1489 }
1490 var10 = var12;
1491 RET_LABEL11:(void)0;
1492 }
1493 }
1494 {
1495 var13 = nit__loader___ModelBuilder___load_module(self, var10);
1496 }
1497 var_res = var13;
1498 var14 = NULL;
1499 if (var_res == NULL) {
1500 var15 = 1; /* is null */
1501 } else {
1502 var15 = 0; /* arg is null but recv is not */
1503 }
1504 if (0) {
1505 { /* Inline kernel#Object#== (var_res,var14) on <var_res:nullable AModule> */
1506 var_other = var14;
1507 {
1508 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable AModule(AModule)> */
1509 var20 = var_res == var_other;
1510 var18 = var20;
1511 goto RET_LABEL19;
1512 RET_LABEL19:(void)0;
1513 }
1514 }
1515 var16 = var18;
1516 goto RET_LABEL17;
1517 RET_LABEL17:(void)0;
1518 }
1519 var15 = var16;
1520 }
1521 if (var15){
1522 var21 = NULL;
1523 var = var21;
1524 goto RET_LABEL;
1525 } else {
1526 }
1527 {
1528 nit__loader___ModelBuilder___build_module_importation(self, var_res); /* Direct call loader#ModelBuilder#build_module_importation on <self:ModelBuilder>*/
1529 }
1530 {
1531 { /* Inline loader#AModule#mmodule (var_res) on <var_res:nullable AModule(AModule)> */
1532 var24 = var_res->attrs[COLOR_nit__loader__AModule___mmodule].val; /* _mmodule on <var_res:nullable AModule(AModule)> */
1533 var22 = var24;
1534 RET_LABEL23:(void)0;
1535 }
1536 }
1537 if (unlikely(var22 == NULL)) {
1538 PRINT_ERROR("Runtime error: %s", "Cast failed");
1539 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 225);
1540 show_backtrace(1);
1541 }
1542 var = var22;
1543 goto RET_LABEL;
1544 RET_LABEL:;
1545 return var;
1546 }
1547 /* method loader#ModelBuilder#search_module_in_paths for (self: ModelBuilder, nullable Location, String, Collection[String]): nullable ModulePath */
1548 val* nit__loader___ModelBuilder___search_module_in_paths(val* self, val* p0, val* p1, val* p2) {
1549 val* var /* : nullable ModulePath */;
1550 val* var_location /* var location: nullable Location */;
1551 val* var_name /* var name: String */;
1552 val* var_lookpaths /* var lookpaths: Collection[String] */;
1553 val* var1 /* : null */;
1554 val* var_candidate /* var candidate: nullable String */;
1555 val* var_ /* var : Collection[String] */;
1556 val* var2 /* : Iterator[nullable Object] */;
1557 val* var_3 /* var : Iterator[String] */;
1558 short int var4 /* : Bool */;
1559 val* var5 /* : nullable Object */;
1560 val* var_dirname /* var dirname: String */;
1561 static val* varonce;
1562 val* var6 /* : String */;
1563 char* var7 /* : NativeString */;
1564 long var8 /* : Int */;
1565 val* var9 /* : FlatString */;
1566 val* var10 /* : String */;
1567 val* var11 /* : String */;
1568 static val* varonce12;
1569 val* var13 /* : String */;
1570 char* var14 /* : NativeString */;
1571 long var15 /* : Int */;
1572 val* var16 /* : FlatString */;
1573 val* var17 /* : String */;
1574 val* var18 /* : String */;
1575 val* var_try_file /* var try_file: String */;
1576 short int var19 /* : Bool */;
1577 val* var20 /* : null */;
1578 short int var21 /* : Bool */;
1579 short int var22 /* : Bool */;
1580 short int var23 /* : Bool */;
1581 val* var_other /* var other: nullable Object */;
1582 short int var25 /* : Bool */;
1583 short int var26 /* : Bool */;
1584 val* var27 /* : String */;
1585 val* var_abs_candidate /* var abs_candidate: String */;
1586 val* var28 /* : String */;
1587 val* var_abs_try_file /* var abs_try_file: String */;
1588 short int var29 /* : Bool */;
1589 short int var31 /* : Bool */;
1590 short int var32 /* : Bool */;
1591 val* var33 /* : ToolContext */;
1592 val* var35 /* : ToolContext */;
1593 static val* varonce36;
1594 val* var37 /* : String */;
1595 char* var38 /* : NativeString */;
1596 long var39 /* : Int */;
1597 val* var40 /* : FlatString */;
1598 static val* varonce41;
1599 val* var42 /* : String */;
1600 char* var43 /* : NativeString */;
1601 long var44 /* : Int */;
1602 val* var45 /* : FlatString */;
1603 static val* varonce46;
1604 val* var47 /* : String */;
1605 char* var48 /* : NativeString */;
1606 long var49 /* : Int */;
1607 val* var50 /* : FlatString */;
1608 val* var51 /* : Array[Object] */;
1609 long var52 /* : Int */;
1610 val* var53 /* : NativeArray[Object] */;
1611 val* var54 /* : String */;
1612 static val* varonce55;
1613 val* var56 /* : String */;
1614 char* var57 /* : NativeString */;
1615 long var58 /* : Int */;
1616 val* var59 /* : FlatString */;
1617 val* var60 /* : String */;
1618 val* var61 /* : String */;
1619 static val* varonce62;
1620 val* var63 /* : String */;
1621 char* var64 /* : NativeString */;
1622 long var65 /* : Int */;
1623 val* var66 /* : FlatString */;
1624 val* var67 /* : String */;
1625 val* var68 /* : String */;
1626 static val* varonce69;
1627 val* var70 /* : String */;
1628 char* var71 /* : NativeString */;
1629 long var72 /* : Int */;
1630 val* var73 /* : FlatString */;
1631 val* var74 /* : String */;
1632 val* var75 /* : String */;
1633 short int var76 /* : Bool */;
1634 val* var77 /* : null */;
1635 short int var78 /* : Bool */;
1636 short int var79 /* : Bool */;
1637 short int var80 /* : Bool */;
1638 short int var82 /* : Bool */;
1639 short int var83 /* : Bool */;
1640 val* var84 /* : String */;
1641 val* var_abs_candidate85 /* var abs_candidate: String */;
1642 val* var86 /* : String */;
1643 val* var_abs_try_file87 /* var abs_try_file: String */;
1644 short int var88 /* : Bool */;
1645 short int var90 /* : Bool */;
1646 short int var91 /* : Bool */;
1647 val* var92 /* : ToolContext */;
1648 val* var94 /* : ToolContext */;
1649 static val* varonce95;
1650 val* var96 /* : String */;
1651 char* var97 /* : NativeString */;
1652 long var98 /* : Int */;
1653 val* var99 /* : FlatString */;
1654 static val* varonce100;
1655 val* var101 /* : String */;
1656 char* var102 /* : NativeString */;
1657 long var103 /* : Int */;
1658 val* var104 /* : FlatString */;
1659 static val* varonce105;
1660 val* var106 /* : String */;
1661 char* var107 /* : NativeString */;
1662 long var108 /* : Int */;
1663 val* var109 /* : FlatString */;
1664 val* var110 /* : Array[Object] */;
1665 long var111 /* : Int */;
1666 val* var112 /* : NativeArray[Object] */;
1667 val* var113 /* : String */;
1668 val* var115 /* : null */;
1669 short int var116 /* : Bool */;
1670 short int var117 /* : Bool */;
1671 val* var118 /* : null */;
1672 val* var119 /* : nullable ModulePath */;
1673 var_location = p0;
1674 var_name = p1;
1675 var_lookpaths = p2;
1676 var1 = NULL;
1677 var_candidate = var1;
1678 var_ = var_lookpaths;
1679 {
1680 var2 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[String]>*/;
1681 }
1682 var_3 = var2;
1683 for(;;) {
1684 {
1685 var4 = ((short int (*)(val* self))(var_3->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on <var_3:Iterator[String]>*/;
1686 }
1687 if (var4){
1688 {
1689 var5 = ((val* (*)(val* self))(var_3->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_3) /* item on <var_3:Iterator[String]>*/;
1690 }
1691 var_dirname = var5;
1692 if (varonce) {
1693 var6 = varonce;
1694 } else {
1695 var7 = "/";
1696 var8 = 1;
1697 var9 = standard___standard__NativeString___to_s_with_length(var7, var8);
1698 var6 = var9;
1699 varonce = var6;
1700 }
1701 {
1702 var10 = ((val* (*)(val* self, val* p0))(var_dirname->class->vft[COLOR_standard__string__String___43d]))(var_dirname, var6) /* + on <var_dirname:String>*/;
1703 }
1704 {
1705 var11 = ((val* (*)(val* self, val* p0))(var10->class->vft[COLOR_standard__string__String___43d]))(var10, var_name) /* + on <var10:String>*/;
1706 }
1707 if (varonce12) {
1708 var13 = varonce12;
1709 } else {
1710 var14 = ".nit";
1711 var15 = 4;
1712 var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
1713 var13 = var16;
1714 varonce12 = var13;
1715 }
1716 {
1717 var17 = ((val* (*)(val* self, val* p0))(var11->class->vft[COLOR_standard__string__String___43d]))(var11, var13) /* + on <var11:String>*/;
1718 }
1719 {
1720 var18 = standard__file___String___simplify_path(var17);
1721 }
1722 var_try_file = var18;
1723 {
1724 var19 = standard__file___String___file_exists(var_try_file);
1725 }
1726 if (var19){
1727 var20 = NULL;
1728 if (var_candidate == NULL) {
1729 var21 = 1; /* is null */
1730 } else {
1731 var21 = 0; /* arg is null but recv is not */
1732 }
1733 if (0) {
1734 var22 = ((short int (*)(val* self, val* p0))(var_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_candidate, var20) /* == on <var_candidate:nullable String>*/;
1735 var21 = var22;
1736 }
1737 if (var21){
1738 var_candidate = var_try_file;
1739 } else {
1740 {
1741 { /* Inline kernel#Object#!= (var_candidate,var_try_file) on <var_candidate:nullable String(String)> */
1742 var_other = var_try_file;
1743 {
1744 var25 = ((short int (*)(val* self, val* p0))(var_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_candidate, var_other) /* == on <var_candidate:nullable String(String)>*/;
1745 }
1746 var26 = !var25;
1747 var23 = var26;
1748 goto RET_LABEL24;
1749 RET_LABEL24:(void)0;
1750 }
1751 }
1752 if (var23){
1753 {
1754 var27 = nit__loader___ModelBuilder___module_absolute_path(self, var_candidate);
1755 }
1756 var_abs_candidate = var27;
1757 {
1758 var28 = nit__loader___ModelBuilder___module_absolute_path(self, var_try_file);
1759 }
1760 var_abs_try_file = var28;
1761 {
1762 { /* Inline kernel#Object#!= (var_abs_candidate,var_abs_try_file) on <var_abs_candidate:String> */
1763 var_other = var_abs_try_file;
1764 {
1765 var31 = ((short int (*)(val* self, val* p0))(var_abs_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_abs_candidate, var_other) /* == on <var_abs_candidate:String>*/;
1766 }
1767 var32 = !var31;
1768 var29 = var32;
1769 goto RET_LABEL30;
1770 RET_LABEL30:(void)0;
1771 }
1772 }
1773 if (var29){
1774 {
1775 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1776 var35 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1777 if (unlikely(var35 == NULL)) {
1778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1779 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1780 show_backtrace(1);
1781 }
1782 var33 = var35;
1783 RET_LABEL34:(void)0;
1784 }
1785 }
1786 if (varonce36) {
1787 var37 = varonce36;
1788 } else {
1789 var38 = "Error: conflicting module file for ";
1790 var39 = 35;
1791 var40 = standard___standard__NativeString___to_s_with_length(var38, var39);
1792 var37 = var40;
1793 varonce36 = var37;
1794 }
1795 if (varonce41) {
1796 var42 = varonce41;
1797 } else {
1798 var43 = ": ";
1799 var44 = 2;
1800 var45 = standard___standard__NativeString___to_s_with_length(var43, var44);
1801 var42 = var45;
1802 varonce41 = var42;
1803 }
1804 if (varonce46) {
1805 var47 = varonce46;
1806 } else {
1807 var48 = " ";
1808 var49 = 1;
1809 var50 = standard___standard__NativeString___to_s_with_length(var48, var49);
1810 var47 = var50;
1811 varonce46 = var47;
1812 }
1813 var51 = NEW_standard__Array(&type_standard__Array__standard__Object);
1814 { /* var51 = array_instance Array[Object] */
1815 var52 = 6;
1816 var53 = NEW_standard__NativeArray(var52, &type_standard__NativeArray__standard__Object);
1817 ((struct instance_standard__NativeArray*)var53)->values[0] = (val*) var37;
1818 ((struct instance_standard__NativeArray*)var53)->values[1] = (val*) var_name;
1819 ((struct instance_standard__NativeArray*)var53)->values[2] = (val*) var42;
1820 ((struct instance_standard__NativeArray*)var53)->values[3] = (val*) var_candidate;
1821 ((struct instance_standard__NativeArray*)var53)->values[4] = (val*) var47;
1822 ((struct instance_standard__NativeArray*)var53)->values[5] = (val*) var_try_file;
1823 {
1824 ((void (*)(val* self, val* p0, long p1))(var51->class->vft[COLOR_standard__array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
1825 }
1826 }
1827 {
1828 var54 = ((val* (*)(val* self))(var51->class->vft[COLOR_standard__string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
1829 }
1830 {
1831 nit___nit__ToolContext___error(var33, var_location, var54); /* Direct call toolcontext#ToolContext#error on <var33:ToolContext>*/
1832 }
1833 } else {
1834 }
1835 } else {
1836 }
1837 }
1838 } else {
1839 }
1840 if (varonce55) {
1841 var56 = varonce55;
1842 } else {
1843 var57 = "/";
1844 var58 = 1;
1845 var59 = standard___standard__NativeString___to_s_with_length(var57, var58);
1846 var56 = var59;
1847 varonce55 = var56;
1848 }
1849 {
1850 var60 = ((val* (*)(val* self, val* p0))(var_dirname->class->vft[COLOR_standard__string__String___43d]))(var_dirname, var56) /* + on <var_dirname:String>*/;
1851 }
1852 {
1853 var61 = ((val* (*)(val* self, val* p0))(var60->class->vft[COLOR_standard__string__String___43d]))(var60, var_name) /* + on <var60:String>*/;
1854 }
1855 if (varonce62) {
1856 var63 = varonce62;
1857 } else {
1858 var64 = "/";
1859 var65 = 1;
1860 var66 = standard___standard__NativeString___to_s_with_length(var64, var65);
1861 var63 = var66;
1862 varonce62 = var63;
1863 }
1864 {
1865 var67 = ((val* (*)(val* self, val* p0))(var61->class->vft[COLOR_standard__string__String___43d]))(var61, var63) /* + on <var61:String>*/;
1866 }
1867 {
1868 var68 = ((val* (*)(val* self, val* p0))(var67->class->vft[COLOR_standard__string__String___43d]))(var67, var_name) /* + on <var67:String>*/;
1869 }
1870 if (varonce69) {
1871 var70 = varonce69;
1872 } else {
1873 var71 = ".nit";
1874 var72 = 4;
1875 var73 = standard___standard__NativeString___to_s_with_length(var71, var72);
1876 var70 = var73;
1877 varonce69 = var70;
1878 }
1879 {
1880 var74 = ((val* (*)(val* self, val* p0))(var68->class->vft[COLOR_standard__string__String___43d]))(var68, var70) /* + on <var68:String>*/;
1881 }
1882 {
1883 var75 = standard__file___String___simplify_path(var74);
1884 }
1885 var_try_file = var75;
1886 {
1887 var76 = standard__file___String___file_exists(var_try_file);
1888 }
1889 if (var76){
1890 var77 = NULL;
1891 if (var_candidate == NULL) {
1892 var78 = 1; /* is null */
1893 } else {
1894 var78 = 0; /* arg is null but recv is not */
1895 }
1896 if (0) {
1897 var79 = ((short int (*)(val* self, val* p0))(var_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_candidate, var77) /* == on <var_candidate:nullable String>*/;
1898 var78 = var79;
1899 }
1900 if (var78){
1901 var_candidate = var_try_file;
1902 } else {
1903 {
1904 { /* Inline kernel#Object#!= (var_candidate,var_try_file) on <var_candidate:nullable String(String)> */
1905 var_other = var_try_file;
1906 {
1907 var82 = ((short int (*)(val* self, val* p0))(var_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_candidate, var_other) /* == on <var_candidate:nullable String(String)>*/;
1908 }
1909 var83 = !var82;
1910 var80 = var83;
1911 goto RET_LABEL81;
1912 RET_LABEL81:(void)0;
1913 }
1914 }
1915 if (var80){
1916 {
1917 var84 = nit__loader___ModelBuilder___module_absolute_path(self, var_candidate);
1918 }
1919 var_abs_candidate85 = var84;
1920 {
1921 var86 = nit__loader___ModelBuilder___module_absolute_path(self, var_try_file);
1922 }
1923 var_abs_try_file87 = var86;
1924 {
1925 { /* Inline kernel#Object#!= (var_abs_candidate85,var_abs_try_file87) on <var_abs_candidate85:String> */
1926 var_other = var_abs_try_file87;
1927 {
1928 var90 = ((short int (*)(val* self, val* p0))(var_abs_candidate85->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_abs_candidate85, var_other) /* == on <var_abs_candidate85:String>*/;
1929 }
1930 var91 = !var90;
1931 var88 = var91;
1932 goto RET_LABEL89;
1933 RET_LABEL89:(void)0;
1934 }
1935 }
1936 if (var88){
1937 {
1938 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1939 var94 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1940 if (unlikely(var94 == NULL)) {
1941 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1942 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
1943 show_backtrace(1);
1944 }
1945 var92 = var94;
1946 RET_LABEL93:(void)0;
1947 }
1948 }
1949 if (varonce95) {
1950 var96 = varonce95;
1951 } else {
1952 var97 = "Error: conflicting module file for ";
1953 var98 = 35;
1954 var99 = standard___standard__NativeString___to_s_with_length(var97, var98);
1955 var96 = var99;
1956 varonce95 = var96;
1957 }
1958 if (varonce100) {
1959 var101 = varonce100;
1960 } else {
1961 var102 = ": ";
1962 var103 = 2;
1963 var104 = standard___standard__NativeString___to_s_with_length(var102, var103);
1964 var101 = var104;
1965 varonce100 = var101;
1966 }
1967 if (varonce105) {
1968 var106 = varonce105;
1969 } else {
1970 var107 = " ";
1971 var108 = 1;
1972 var109 = standard___standard__NativeString___to_s_with_length(var107, var108);
1973 var106 = var109;
1974 varonce105 = var106;
1975 }
1976 var110 = NEW_standard__Array(&type_standard__Array__standard__Object);
1977 { /* var110 = array_instance Array[Object] */
1978 var111 = 6;
1979 var112 = NEW_standard__NativeArray(var111, &type_standard__NativeArray__standard__Object);
1980 ((struct instance_standard__NativeArray*)var112)->values[0] = (val*) var96;
1981 ((struct instance_standard__NativeArray*)var112)->values[1] = (val*) var_name;
1982 ((struct instance_standard__NativeArray*)var112)->values[2] = (val*) var101;
1983 ((struct instance_standard__NativeArray*)var112)->values[3] = (val*) var_candidate;
1984 ((struct instance_standard__NativeArray*)var112)->values[4] = (val*) var106;
1985 ((struct instance_standard__NativeArray*)var112)->values[5] = (val*) var_try_file;
1986 {
1987 ((void (*)(val* self, val* p0, long p1))(var110->class->vft[COLOR_standard__array__Array__with_native]))(var110, var112, var111) /* with_native on <var110:Array[Object]>*/;
1988 }
1989 }
1990 {
1991 var113 = ((val* (*)(val* self))(var110->class->vft[COLOR_standard__string__Object__to_s]))(var110) /* to_s on <var110:Array[Object]>*/;
1992 }
1993 {
1994 nit___nit__ToolContext___error(var92, var_location, var113); /* Direct call toolcontext#ToolContext#error on <var92:ToolContext>*/
1995 }
1996 } else {
1997 }
1998 } else {
1999 }
2000 }
2001 } else {
2002 }
2003 {
2004 ((void (*)(val* self))(var_3->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_3) /* next on <var_3:Iterator[String]>*/;
2005 }
2006 } else {
2007 goto BREAK_label;
2008 }
2009 }
2010 BREAK_label: (void)0;
2011 {
2012 { /* Inline abstract_collection#Iterator#finish (var_3) on <var_3:Iterator[String]> */
2013 RET_LABEL114:(void)0;
2014 }
2015 }
2016 var115 = NULL;
2017 if (var_candidate == NULL) {
2018 var116 = 1; /* is null */
2019 } else {
2020 var116 = 0; /* arg is null but recv is not */
2021 }
2022 if (0) {
2023 var117 = ((short int (*)(val* self, val* p0))(var_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_candidate, var115) /* == on <var_candidate:nullable String>*/;
2024 var116 = var117;
2025 }
2026 if (var116){
2027 var118 = NULL;
2028 var = var118;
2029 goto RET_LABEL;
2030 } else {
2031 }
2032 {
2033 var119 = nit__loader___ModelBuilder___identify_file(self, var_candidate);
2034 }
2035 var = var119;
2036 goto RET_LABEL;
2037 RET_LABEL:;
2038 return var;
2039 }
2040 /* method loader#ModelBuilder#identified_files_by_path for (self: ModelBuilder): HashMap[String, nullable ModulePath] */
2041 val* nit__loader___ModelBuilder___identified_files_by_path(val* self) {
2042 val* var /* : HashMap[String, nullable ModulePath] */;
2043 val* var1 /* : HashMap[String, nullable ModulePath] */;
2044 var1 = self->attrs[COLOR_nit__loader__ModelBuilder___identified_files_by_path].val; /* _identified_files_by_path on <self:ModelBuilder> */
2045 if (unlikely(var1 == NULL)) {
2046 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files_by_path");
2047 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 265);
2048 show_backtrace(1);
2049 }
2050 var = var1;
2051 RET_LABEL:;
2052 return var;
2053 }
2054 /* method loader#ModelBuilder#identified_files for (self: ModelBuilder): Array[ModulePath] */
2055 val* nit__loader___ModelBuilder___identified_files(val* self) {
2056 val* var /* : Array[ModulePath] */;
2057 val* var1 /* : Array[ModulePath] */;
2058 var1 = self->attrs[COLOR_nit__loader__ModelBuilder___identified_files].val; /* _identified_files on <self:ModelBuilder> */
2059 if (unlikely(var1 == NULL)) {
2060 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
2061 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 268);
2062 show_backtrace(1);
2063 }
2064 var = var1;
2065 RET_LABEL:;
2066 return var;
2067 }
2068 /* method loader#ModelBuilder#identify_file for (self: ModelBuilder, String): nullable ModulePath */
2069 val* nit__loader___ModelBuilder___identify_file(val* self, val* p0) {
2070 val* var /* : nullable ModulePath */;
2071 val* var_path /* var path: String */;
2072 val* var1 /* : nullable String */;
2073 static val* varonce;
2074 val* var2 /* : String */;
2075 char* var3 /* : NativeString */;
2076 long var4 /* : Int */;
2077 val* var5 /* : FlatString */;
2078 short int var6 /* : Bool */;
2079 short int var7 /* : Bool */;
2080 val* var_other /* var other: nullable Object */;
2081 short int var9 /* : Bool */;
2082 short int var10 /* : Bool */;
2083 val* var11 /* : String */;
2084 static val* varonce12;
2085 val* var13 /* : String */;
2086 char* var14 /* : NativeString */;
2087 long var15 /* : Int */;
2088 val* var16 /* : FlatString */;
2089 short int var17 /* : Bool */;
2090 val* var18 /* : null */;
2091 val* var19 /* : Array[String] */;
2092 val* var21 /* : Array[String] */;
2093 val* var22 /* : nullable ModulePath */;
2094 val* var_res /* var res: nullable ModulePath */;
2095 val* var23 /* : null */;
2096 short int var24 /* : Bool */;
2097 short int var25 /* : Bool */;
2098 short int var27 /* : Bool */;
2099 short int var28 /* : Bool */;
2100 val* var29 /* : null */;
2101 val* var_candidate /* var candidate: nullable Object */;
2102 short int var30 /* : Bool */;
2103 val* var31 /* : nullable MGroup */;
2104 val* var_mgroup /* var mgroup: nullable MGroup */;
2105 val* var32 /* : null */;
2106 short int var33 /* : Bool */;
2107 short int var34 /* : Bool */;
2108 short int var36 /* : Bool */;
2109 short int var37 /* : Bool */;
2110 val* var38 /* : nullable String */;
2111 val* var40 /* : nullable String */;
2112 val* var41 /* : String */;
2113 val* var43 /* : String */;
2114 static val* varonce44;
2115 val* var45 /* : String */;
2116 char* var46 /* : NativeString */;
2117 long var47 /* : Int */;
2118 val* var48 /* : FlatString */;
2119 val* var49 /* : String */;
2120 val* var50 /* : String */;
2121 val* var_owner_path /* var owner_path: String */;
2122 short int var51 /* : Bool */;
2123 val* var52 /* : null */;
2124 short int var53 /* : Bool */;
2125 short int var54 /* : Bool */;
2126 val* var55 /* : null */;
2127 static val* varonce56;
2128 val* var57 /* : String */;
2129 char* var58 /* : NativeString */;
2130 long var59 /* : Int */;
2131 val* var60 /* : FlatString */;
2132 val* var61 /* : String */;
2133 val* var_pn /* var pn: String */;
2134 val* var62 /* : String */;
2135 val* var_rp /* var rp: String */;
2136 val* var63 /* : HashMap[String, nullable ModulePath] */;
2137 val* var65 /* : HashMap[String, nullable ModulePath] */;
2138 short int var66 /* : Bool */;
2139 val* var67 /* : HashMap[String, nullable ModulePath] */;
2140 val* var69 /* : HashMap[String, nullable ModulePath] */;
2141 val* var70 /* : nullable Object */;
2142 static val* varonce71;
2143 val* var72 /* : String */;
2144 char* var73 /* : NativeString */;
2145 long var74 /* : Int */;
2146 val* var75 /* : FlatString */;
2147 val* var76 /* : String */;
2148 val* var77 /* : String */;
2149 val* var_mgrouppath /* var mgrouppath: String */;
2150 val* var78 /* : nullable MGroup */;
2151 val* var_mgroup79 /* var mgroup: nullable MGroup */;
2152 val* var80 /* : null */;
2153 short int var81 /* : Bool */;
2154 short int var82 /* : Bool */;
2155 val* var_other84 /* var other: nullable Object */;
2156 short int var85 /* : Bool */;
2157 short int var87 /* : Bool */;
2158 val* var88 /* : MProject */;
2159 val* var89 /* : Model */;
2160 val* var91 /* : Model */;
2161 val* var_mproject /* var mproject: MProject */;
2162 val* var92 /* : MGroup */;
2163 val* var93 /* : null */;
2164 val* var96 /* : ToolContext */;
2165 val* var98 /* : ToolContext */;
2166 static val* varonce99;
2167 val* var100 /* : String */;
2168 char* var101 /* : NativeString */;
2169 long var102 /* : Int */;
2170 val* var103 /* : FlatString */;
2171 static val* varonce104;
2172 val* var105 /* : String */;
2173 char* var106 /* : NativeString */;
2174 long var107 /* : Int */;
2175 val* var108 /* : FlatString */;
2176 val* var109 /* : Array[Object] */;
2177 long var110 /* : Int */;
2178 val* var111 /* : NativeArray[Object] */;
2179 val* var112 /* : String */;
2180 long var113 /* : Int */;
2181 val* var114 /* : ModulePath */;
2182 val* var_res115 /* var res: ModulePath */;
2183 val* var116 /* : Array[ModulePath] */;
2184 val* var118 /* : Array[ModulePath] */;
2185 val* var119 /* : HashMap[String, nullable ModulePath] */;
2186 val* var121 /* : HashMap[String, nullable ModulePath] */;
2187 val* var122 /* : Array[ModulePath] */;
2188 val* var124 /* : Array[ModulePath] */;
2189 var_path = p0;
2190 {
2191 var1 = standard__file___String___file_extension(var_path);
2192 }
2193 if (varonce) {
2194 var2 = varonce;
2195 } else {
2196 var3 = "nit";
2197 var4 = 3;
2198 var5 = standard___standard__NativeString___to_s_with_length(var3, var4);
2199 var2 = var5;
2200 varonce = var2;
2201 }
2202 if (var1 == NULL) {
2203 var6 = 1; /* <var2:String> cannot be null */
2204 } else {
2205 { /* Inline kernel#Object#!= (var1,var2) on <var1:nullable String> */
2206 var_other = var2;
2207 {
2208 var9 = ((short int (*)(val* self, val* p0))(var1->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable String(String)>*/;
2209 }
2210 var10 = !var9;
2211 var7 = var10;
2212 goto RET_LABEL8;
2213 RET_LABEL8:(void)0;
2214 }
2215 var6 = var7;
2216 }
2217 if (var6){
2218 {
2219 var11 = standard__file___String___dirname(var_path);
2220 }
2221 if (varonce12) {
2222 var13 = varonce12;
2223 } else {
2224 var14 = "";
2225 var15 = 0;
2226 var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
2227 var13 = var16;
2228 varonce12 = var13;
2229 }
2230 {
2231 var17 = ((short int (*)(val* self, val* p0))(var11->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var11, var13) /* == on <var11:String>*/;
2232 }
2233 if (var17){
2234 var18 = NULL;
2235 {
2236 { /* Inline loader#ModelBuilder#paths (self) on <self:ModelBuilder> */
2237 var21 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
2238 if (unlikely(var21 == NULL)) {
2239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
2240 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
2241 show_backtrace(1);
2242 }
2243 var19 = var21;
2244 RET_LABEL20:(void)0;
2245 }
2246 }
2247 {
2248 var22 = nit__loader___ModelBuilder___search_module_in_paths(self, var18, var_path, var19);
2249 }
2250 var_res = var22;
2251 var23 = NULL;
2252 if (var_res == NULL) {
2253 var24 = 0; /* is null */
2254 } else {
2255 var24 = 1; /* arg is null and recv is not */
2256 }
2257 if (0) {
2258 { /* Inline kernel#Object#!= (var_res,var23) on <var_res:nullable ModulePath> */
2259 var_other = var23;
2260 {
2261 var27 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable ModulePath(ModulePath)>*/;
2262 }
2263 var28 = !var27;
2264 var25 = var28;
2265 goto RET_LABEL26;
2266 RET_LABEL26:(void)0;
2267 }
2268 var24 = var25;
2269 }
2270 if (var24){
2271 var = var_res;
2272 goto RET_LABEL;
2273 } else {
2274 }
2275 } else {
2276 }
2277 var29 = NULL;
2278 var_candidate = var29;
2279 {
2280 var30 = standard__file___String___file_exists(var_path);
2281 }
2282 if (var30){
2283 {
2284 var31 = nit__loader___ModelBuilder___get_mgroup(self, var_path);
2285 }
2286 var_mgroup = var31;
2287 var32 = NULL;
2288 if (var_mgroup == NULL) {
2289 var33 = 0; /* is null */
2290 } else {
2291 var33 = 1; /* arg is null and recv is not */
2292 }
2293 if (0) {
2294 { /* Inline kernel#Object#!= (var_mgroup,var32) on <var_mgroup:nullable MGroup> */
2295 var_other = var32;
2296 {
2297 var36 = ((short int (*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on <var_mgroup:nullable MGroup(MGroup)>*/;
2298 }
2299 var37 = !var36;
2300 var34 = var37;
2301 goto RET_LABEL35;
2302 RET_LABEL35:(void)0;
2303 }
2304 var33 = var34;
2305 }
2306 if (var33){
2307 {
2308 { /* Inline mproject#MGroup#filepath (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
2309 var40 = var_mgroup->attrs[COLOR_nit__mproject__MGroup___filepath].val; /* _filepath on <var_mgroup:nullable MGroup(MGroup)> */
2310 var38 = var40;
2311 RET_LABEL39:(void)0;
2312 }
2313 }
2314 {
2315 { /* Inline mproject#MGroup#name (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
2316 var43 = var_mgroup->attrs[COLOR_nit__mproject__MGroup___name].val; /* _name on <var_mgroup:nullable MGroup(MGroup)> */
2317 if (unlikely(var43 == NULL)) {
2318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2319 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 65);
2320 show_backtrace(1);
2321 }
2322 var41 = var43;
2323 RET_LABEL42:(void)0;
2324 }
2325 }
2326 if (varonce44) {
2327 var45 = varonce44;
2328 } else {
2329 var46 = ".nit";
2330 var47 = 4;
2331 var48 = standard___standard__NativeString___to_s_with_length(var46, var47);
2332 var45 = var48;
2333 varonce44 = var45;
2334 }
2335 {
2336 var49 = ((val* (*)(val* self, val* p0))(var41->class->vft[COLOR_standard__string__String___43d]))(var41, var45) /* + on <var41:String>*/;
2337 }
2338 if (var38 == NULL) {
2339 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2340 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 291);
2341 show_backtrace(1);
2342 } else {
2343 var50 = standard__file___String___join_path(var38, var49);
2344 }
2345 var_owner_path = var50;
2346 {
2347 var51 = standard__file___String___file_exists(var_owner_path);
2348 }
2349 if (var51){
2350 var_candidate = var_owner_path;
2351 } else {
2352 }
2353 } else {
2354 }
2355 } else {
2356 }
2357 var52 = NULL;
2358 if (var_candidate == NULL) {
2359 var53 = 1; /* is null */
2360 } else {
2361 var53 = 0; /* arg is null but recv is not */
2362 }
2363 if (0) {
2364 var54 = ((short int (*)(val* self, val* p0))(var_candidate->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_candidate, var52) /* == on <var_candidate:nullable Object(nullable String)>*/;
2365 var53 = var54;
2366 }
2367 if (var53){
2368 var55 = NULL;
2369 var = var55;
2370 goto RET_LABEL;
2371 } else {
2372 }
2373 var_path = var_candidate;
2374 } else {
2375 }
2376 if (varonce56) {
2377 var57 = varonce56;
2378 } else {
2379 var58 = ".nit";
2380 var59 = 4;
2381 var60 = standard___standard__NativeString___to_s_with_length(var58, var59);
2382 var57 = var60;
2383 varonce56 = var57;
2384 }
2385 {
2386 var61 = standard__file___String___basename(var_path, var57);
2387 }
2388 var_pn = var61;
2389 {
2390 var62 = nit__loader___ModelBuilder___module_absolute_path(self, var_path);
2391 }
2392 var_rp = var62;
2393 {
2394 { /* Inline loader#ModelBuilder#identified_files_by_path (self) on <self:ModelBuilder> */
2395 var65 = self->attrs[COLOR_nit__loader__ModelBuilder___identified_files_by_path].val; /* _identified_files_by_path on <self:ModelBuilder> */
2396 if (unlikely(var65 == NULL)) {
2397 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files_by_path");
2398 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 265);
2399 show_backtrace(1);
2400 }
2401 var63 = var65;
2402 RET_LABEL64:(void)0;
2403 }
2404 }
2405 {
2406 var66 = standard___standard__MapRead___has_key(var63, var_rp);
2407 }
2408 if (var66){
2409 {
2410 { /* Inline loader#ModelBuilder#identified_files_by_path (self) on <self:ModelBuilder> */
2411 var69 = self->attrs[COLOR_nit__loader__ModelBuilder___identified_files_by_path].val; /* _identified_files_by_path on <self:ModelBuilder> */
2412 if (unlikely(var69 == NULL)) {
2413 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files_by_path");
2414 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 265);
2415 show_backtrace(1);
2416 }
2417 var67 = var69;
2418 RET_LABEL68:(void)0;
2419 }
2420 }
2421 {
2422 var70 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var67, var_rp);
2423 }
2424 var = var70;
2425 goto RET_LABEL;
2426 } else {
2427 }
2428 if (varonce71) {
2429 var72 = varonce71;
2430 } else {
2431 var73 = "..";
2432 var74 = 2;
2433 var75 = standard___standard__NativeString___to_s_with_length(var73, var74);
2434 var72 = var75;
2435 varonce71 = var72;
2436 }
2437 {
2438 var76 = standard__file___String___join_path(var_path, var72);
2439 }
2440 {
2441 var77 = standard__file___String___simplify_path(var76);
2442 }
2443 var_mgrouppath = var77;
2444 {
2445 var78 = nit__loader___ModelBuilder___get_mgroup(self, var_mgrouppath);
2446 }
2447 var_mgroup79 = var78;
2448 var80 = NULL;
2449 if (var_mgroup79 == NULL) {
2450 var81 = 1; /* is null */
2451 } else {
2452 var81 = 0; /* arg is null but recv is not */
2453 }
2454 if (0) {
2455 { /* Inline kernel#Object#== (var_mgroup79,var80) on <var_mgroup79:nullable MGroup> */
2456 var_other84 = var80;
2457 {
2458 { /* Inline kernel#Object#is_same_instance (var_mgroup79,var_other84) on <var_mgroup79:nullable MGroup(MGroup)> */
2459 var87 = var_mgroup79 == var_other84;
2460 var85 = var87;
2461 goto RET_LABEL86;
2462 RET_LABEL86:(void)0;
2463 }
2464 }
2465 var82 = var85;
2466 goto RET_LABEL83;
2467 RET_LABEL83:(void)0;
2468 }
2469 var81 = var82;
2470 }
2471 if (var81){
2472 var88 = NEW_nit__MProject(&type_nit__MProject);
2473 {
2474 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
2475 var91 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
2476 if (unlikely(var91 == NULL)) {
2477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
2478 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
2479 show_backtrace(1);
2480 }
2481 var89 = var91;
2482 RET_LABEL90:(void)0;
2483 }
2484 }
2485 {
2486 ((void (*)(val* self, val* p0))(var88->class->vft[COLOR_nit__mproject__MProject__name_61d]))(var88, var_pn) /* name= on <var88:MProject>*/;
2487 }
2488 {
2489 ((void (*)(val* self, val* p0))(var88->class->vft[COLOR_nit__mproject__MProject__model_61d]))(var88, var89) /* model= on <var88:MProject>*/;
2490 }
2491 {
2492 ((void (*)(val* self))(var88->class->vft[COLOR_standard__kernel__Object__init]))(var88) /* init on <var88:MProject>*/;
2493 }
2494 var_mproject = var88;
2495 var92 = NEW_nit__MGroup(&type_nit__MGroup);
2496 var93 = NULL;
2497 {
2498 ((void (*)(val* self, val* p0))(var92->class->vft[COLOR_nit__mproject__MGroup__name_61d]))(var92, var_pn) /* name= on <var92:MGroup>*/;
2499 }
2500 {
2501 ((void (*)(val* self, val* p0))(var92->class->vft[COLOR_nit__mproject__MGroup__mproject_61d]))(var92, var_mproject) /* mproject= on <var92:MGroup>*/;
2502 }
2503 {
2504 ((void (*)(val* self, val* p0))(var92->class->vft[COLOR_nit__mproject__MGroup__parent_61d]))(var92, var93) /* parent= on <var92:MGroup>*/;
2505 }
2506 {
2507 ((void (*)(val* self))(var92->class->vft[COLOR_standard__kernel__Object__init]))(var92) /* init on <var92:MGroup>*/;
2508 }
2509 var_mgroup79 = var92;
2510 {
2511 { /* Inline mproject#MGroup#filepath= (var_mgroup79,var_path) on <var_mgroup79:nullable MGroup(MGroup)> */
2512 var_mgroup79->attrs[COLOR_nit__mproject__MGroup___filepath].val = var_path; /* _filepath on <var_mgroup79:nullable MGroup(MGroup)> */
2513 RET_LABEL94:(void)0;
2514 }
2515 }
2516 {
2517 { /* Inline mproject#MProject#root= (var_mproject,var_mgroup79) on <var_mproject:MProject> */
2518 var_mproject->attrs[COLOR_nit__mproject__MProject___root].val = var_mgroup79; /* _root on <var_mproject:MProject> */
2519 RET_LABEL95:(void)0;
2520 }
2521 }
2522 {
2523 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
2524 var98 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
2525 if (unlikely(var98 == NULL)) {
2526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2527 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
2528 show_backtrace(1);
2529 }
2530 var96 = var98;
2531 RET_LABEL97:(void)0;
2532 }
2533 }
2534 if (varonce99) {
2535 var100 = varonce99;
2536 } else {
2537 var101 = "found project `";
2538 var102 = 15;
2539 var103 = standard___standard__NativeString___to_s_with_length(var101, var102);
2540 var100 = var103;
2541 varonce99 = var100;
2542 }
2543 if (varonce104) {
2544 var105 = varonce104;
2545 } else {
2546 var106 = "` at ";
2547 var107 = 5;
2548 var108 = standard___standard__NativeString___to_s_with_length(var106, var107);
2549 var105 = var108;
2550 varonce104 = var105;
2551 }
2552 var109 = NEW_standard__Array(&type_standard__Array__standard__Object);
2553 { /* var109 = array_instance Array[Object] */
2554 var110 = 4;
2555 var111 = NEW_standard__NativeArray(var110, &type_standard__NativeArray__standard__Object);
2556 ((struct instance_standard__NativeArray*)var111)->values[0] = (val*) var100;
2557 ((struct instance_standard__NativeArray*)var111)->values[1] = (val*) var_pn;
2558 ((struct instance_standard__NativeArray*)var111)->values[2] = (val*) var105;
2559 ((struct instance_standard__NativeArray*)var111)->values[3] = (val*) var_path;
2560 {
2561 ((void (*)(val* self, val* p0, long p1))(var109->class->vft[COLOR_standard__array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
2562 }
2563 }
2564 {
2565 var112 = ((val* (*)(val* self))(var109->class->vft[COLOR_standard__string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
2566 }
2567 var113 = 2;
2568 {
2569 nit___nit__ToolContext___info(var96, var112, var113); /* Direct call toolcontext#ToolContext#info on <var96:ToolContext>*/
2570 }
2571 } else {
2572 }
2573 var114 = NEW_nit__ModulePath(&type_nit__ModulePath);
2574 {
2575 ((void (*)(val* self, val* p0))(var114->class->vft[COLOR_nit__loader__ModulePath__name_61d]))(var114, var_pn) /* name= on <var114:ModulePath>*/;
2576 }
2577 {
2578 ((void (*)(val* self, val* p0))(var114->class->vft[COLOR_nit__loader__ModulePath__filepath_61d]))(var114, var_path) /* filepath= on <var114:ModulePath>*/;
2579 }
2580 {
2581 ((void (*)(val* self, val* p0))(var114->class->vft[COLOR_nit__loader__ModulePath__mgroup_61d]))(var114, var_mgroup79) /* mgroup= on <var114:ModulePath>*/;
2582 }
2583 {
2584 ((void (*)(val* self))(var114->class->vft[COLOR_standard__kernel__Object__init]))(var114) /* init on <var114:ModulePath>*/;
2585 }
2586 var_res115 = var114;
2587 {
2588 { /* Inline loader#MGroup#module_paths (var_mgroup79) on <var_mgroup79:nullable MGroup(MGroup)> */
2589 var118 = var_mgroup79->attrs[COLOR_nit__loader__MGroup___module_paths].val; /* _module_paths on <var_mgroup79:nullable MGroup(MGroup)> */
2590 if (unlikely(var118 == NULL)) {
2591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _module_paths");
2592 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 675);
2593 show_backtrace(1);
2594 }
2595 var116 = var118;
2596 RET_LABEL117:(void)0;
2597 }
2598 }
2599 {
2600 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var116, var_res115); /* Direct call array#Array#add on <var116:Array[ModulePath]>*/
2601 }
2602 {
2603 { /* Inline loader#ModelBuilder#identified_files_by_path (self) on <self:ModelBuilder> */
2604 var121 = self->attrs[COLOR_nit__loader__ModelBuilder___identified_files_by_path].val; /* _identified_files_by_path on <self:ModelBuilder> */
2605 if (unlikely(var121 == NULL)) {
2606 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files_by_path");
2607 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 265);
2608 show_backtrace(1);
2609 }
2610 var119 = var121;
2611 RET_LABEL120:(void)0;
2612 }
2613 }
2614 {
2615 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var119, var_rp, var_res115); /* Direct call hash_collection#HashMap#[]= on <var119:HashMap[String, nullable ModulePath]>*/
2616 }
2617 {
2618 { /* Inline loader#ModelBuilder#identified_files (self) on <self:ModelBuilder> */
2619 var124 = self->attrs[COLOR_nit__loader__ModelBuilder___identified_files].val; /* _identified_files on <self:ModelBuilder> */
2620 if (unlikely(var124 == NULL)) {
2621 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
2622 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 268);
2623 show_backtrace(1);
2624 }
2625 var122 = var124;
2626 RET_LABEL123:(void)0;
2627 }
2628 }
2629 {
2630 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var122, var_res115); /* Direct call array#Array#add on <var122:Array[ModulePath]>*/
2631 }
2632 var = var_res115;
2633 goto RET_LABEL;
2634 RET_LABEL:;
2635 return var;
2636 }
2637 /* method loader#ModelBuilder#mgroups for (self: ModelBuilder): HashMap[String, nullable MGroup] */
2638 val* nit__loader___ModelBuilder___mgroups(val* self) {
2639 val* var /* : HashMap[String, nullable MGroup] */;
2640 val* var1 /* : HashMap[String, nullable MGroup] */;
2641 var1 = self->attrs[COLOR_nit__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
2642 if (unlikely(var1 == NULL)) {
2643 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
2644 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 328);
2645 show_backtrace(1);
2646 }
2647 var = var1;
2648 RET_LABEL:;
2649 return var;
2650 }
2651 /* method loader#ModelBuilder#get_mgroup for (self: ModelBuilder, String): nullable MGroup */
2652 val* nit__loader___ModelBuilder___get_mgroup(val* self, val* p0) {
2653 val* var /* : nullable MGroup */;
2654 val* var_dirpath /* var dirpath: String */;
2655 short int var1 /* : Bool */;
2656 short int var2 /* : Bool */;
2657 val* var3 /* : Array[String] */;
2658 val* var5 /* : Array[String] */;
2659 val* var_ /* var : Array[String] */;
2660 val* var6 /* : ArrayIterator[nullable Object] */;
2661 val* var_7 /* var : ArrayIterator[String] */;
2662 short int var8 /* : Bool */;
2663 val* var9 /* : nullable Object */;
2664 val* var_p /* var p: String */;
2665 val* var10 /* : String */;
2666 val* var_try /* var try: String */;
2667 short int var11 /* : Bool */;
2668 val* var13 /* : null */;
2669 val* var14 /* : String */;
2670 val* var_rdp /* var rdp: String */;
2671 val* var15 /* : HashMap[String, nullable MGroup] */;
2672 val* var17 /* : HashMap[String, nullable MGroup] */;
2673 short int var18 /* : Bool */;
2674 val* var19 /* : HashMap[String, nullable MGroup] */;
2675 val* var21 /* : HashMap[String, nullable MGroup] */;
2676 val* var22 /* : nullable Object */;
2677 static val* varonce;
2678 val* var23 /* : String */;
2679 char* var24 /* : NativeString */;
2680 long var25 /* : Int */;
2681 val* var26 /* : FlatString */;
2682 val* var27 /* : String */;
2683 val* var_pn /* var pn: String */;
2684 static val* varonce28;
2685 val* var29 /* : String */;
2686 char* var30 /* : NativeString */;
2687 long var31 /* : Int */;
2688 val* var32 /* : FlatString */;
2689 val* var33 /* : String */;
2690 val* var34 /* : String */;
2691 val* var35 /* : String */;
2692 val* var_mp /* var mp: String */;
2693 val* var_dirpath2 /* var dirpath2: String */;
2694 short int var36 /* : Bool */;
2695 short int var37 /* : Bool */;
2696 static val* varonce38;
2697 val* var39 /* : String */;
2698 char* var40 /* : NativeString */;
2699 long var41 /* : Int */;
2700 val* var42 /* : FlatString */;
2701 short int var43 /* : Bool */;
2702 val* var44 /* : String */;
2703 static val* varonce45;
2704 val* var46 /* : String */;
2705 char* var47 /* : NativeString */;
2706 long var48 /* : Int */;
2707 val* var49 /* : FlatString */;
2708 val* var50 /* : String */;
2709 val* var51 /* : null */;
2710 static val* varonce52;
2711 val* var53 /* : String */;
2712 char* var54 /* : NativeString */;
2713 long var55 /* : Int */;
2714 val* var56 /* : FlatString */;
2715 val* var57 /* : String */;
2716 val* var58 /* : String */;
2717 val* var_parentpath /* var parentpath: String */;
2718 val* var59 /* : nullable MGroup */;
2719 val* var_parent /* var parent: nullable MGroup */;
2720 val* var60 /* : null */;
2721 short int var61 /* : Bool */;
2722 short int var62 /* : Bool */;
2723 val* var_other /* var other: nullable Object */;
2724 short int var64 /* : Bool */;
2725 short int var66 /* : Bool */;
2726 val* var67 /* : MProject */;
2727 val* var68 /* : Model */;
2728 val* var70 /* : Model */;
2729 val* var_mproject /* var mproject: MProject */;
2730 val* var71 /* : MGroup */;
2731 val* var72 /* : null */;
2732 val* var_mgroup /* var mgroup: nullable Object */;
2733 val* var74 /* : ToolContext */;
2734 val* var76 /* : ToolContext */;
2735 static val* varonce77;
2736 val* var78 /* : String */;
2737 char* var79 /* : NativeString */;
2738 long var80 /* : Int */;
2739 val* var81 /* : FlatString */;
2740 static val* varonce82;
2741 val* var83 /* : String */;
2742 char* var84 /* : NativeString */;
2743 long var85 /* : Int */;
2744 val* var86 /* : FlatString */;
2745 val* var87 /* : Array[Object] */;
2746 long var88 /* : Int */;
2747 val* var89 /* : NativeArray[Object] */;
2748 val* var90 /* : String */;
2749 long var91 /* : Int */;
2750 val* var92 /* : MGroup */;
2751 val* var93 /* : MProject */;
2752 val* var95 /* : MProject */;
2753 val* var96 /* : ToolContext */;
2754 val* var98 /* : ToolContext */;
2755 static val* varonce99;
2756 val* var100 /* : String */;
2757 char* var101 /* : NativeString */;
2758 long var102 /* : Int */;
2759 val* var103 /* : FlatString */;
2760 val* var104 /* : String */;
2761 static val* varonce105;
2762 val* var106 /* : String */;
2763 char* var107 /* : NativeString */;
2764 long var108 /* : Int */;
2765 val* var109 /* : FlatString */;
2766 val* var110 /* : Array[Object] */;
2767 long var111 /* : Int */;
2768 val* var112 /* : NativeArray[Object] */;
2769 val* var113 /* : String */;
2770 long var114 /* : Int */;
2771 static val* varonce115;
2772 val* var116 /* : String */;
2773 char* var117 /* : NativeString */;
2774 long var118 /* : Int */;
2775 val* var119 /* : FlatString */;
2776 val* var120 /* : String */;
2777 val* var_readme /* var readme: String */;
2778 short int var121 /* : Bool */;
2779 short int var122 /* : Bool */;
2780 static val* varonce123;
2781 val* var124 /* : String */;
2782 char* var125 /* : NativeString */;
2783 long var126 /* : Int */;
2784 val* var127 /* : FlatString */;
2785 val* var128 /* : String */;
2786 short int var129 /* : Bool */;
2787 val* var130 /* : MDoc */;
2788 val* var_mdoc /* var mdoc: MDoc */;
2789 val* var132 /* : IFStream */;
2790 val* var_s /* var s: IFStream */;
2791 short int var133 /* : Bool */;
2792 short int var134 /* : Bool */;
2793 val* var135 /* : Array[String] */;
2794 val* var137 /* : Array[String] */;
2795 val* var138 /* : String */;
2796 val* var143 /* : HashMap[String, nullable MGroup] */;
2797 val* var145 /* : HashMap[String, nullable MGroup] */;
2798 var_dirpath = p0;
2799 {
2800 var1 = standard__file___String___file_exists(var_dirpath);
2801 }
2802 var2 = !var1;
2803 if (var2){
2804 {
2805 { /* Inline loader#ModelBuilder#paths (self) on <self:ModelBuilder> */
2806 var5 = self->attrs[COLOR_nit__loader__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
2807 if (unlikely(var5 == NULL)) {
2808 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
2809 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 146);
2810 show_backtrace(1);
2811 }
2812 var3 = var5;
2813 RET_LABEL4:(void)0;
2814 }
2815 }
2816 var_ = var3;
2817 {
2818 var6 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
2819 }
2820 var_7 = var6;
2821 for(;;) {
2822 {
2823 var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_7);
2824 }
2825 if (var8){
2826 {
2827 var9 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_7);
2828 }
2829 var_p = var9;
2830 {
2831 var10 = standard__file___String____47d(var_p, var_dirpath);
2832 }
2833 var_try = var10;
2834 {
2835 var11 = standard__file___String___file_exists(var_try);
2836 }
2837 if (var11){
2838 var_dirpath = var_try;
2839 goto BREAK_;
2840 } else {
2841 }
2842 {
2843 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_7); /* Direct call array#ArrayIterator#next on <var_7:ArrayIterator[String]>*/
2844 }
2845 } else {
2846 goto BREAK_label;
2847 }
2848 }
2849 BREAK_label: (void)0;
2850 {
2851 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:ArrayIterator[String]> */
2852 RET_LABEL12:(void)0;
2853 }
2854 }
2855 var13 = NULL;
2856 var = var13;
2857 goto RET_LABEL;
2858 BREAK_: (void)0;
2859 } else {
2860 }
2861 {
2862 var14 = nit__loader___ModelBuilder___module_absolute_path(self, var_dirpath);
2863 }
2864 var_rdp = var14;
2865 {
2866 { /* Inline loader#ModelBuilder#mgroups (self) on <self:ModelBuilder> */
2867 var17 = self->attrs[COLOR_nit__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
2868 if (unlikely(var17 == NULL)) {
2869 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
2870 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 328);
2871 show_backtrace(1);
2872 }
2873 var15 = var17;
2874 RET_LABEL16:(void)0;
2875 }
2876 }
2877 {
2878 var18 = standard___standard__MapRead___has_key(var15, var_rdp);
2879 }
2880 if (var18){
2881 {
2882 { /* Inline loader#ModelBuilder#mgroups (self) on <self:ModelBuilder> */
2883 var21 = self->attrs[COLOR_nit__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
2884 if (unlikely(var21 == NULL)) {
2885 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
2886 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 328);
2887 show_backtrace(1);
2888 }
2889 var19 = var21;
2890 RET_LABEL20:(void)0;
2891 }
2892 }
2893 {
2894 var22 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var19, var_rdp);
2895 }
2896 var = var22;
2897 goto RET_LABEL;
2898 } else {
2899 }
2900 if (varonce) {
2901 var23 = varonce;
2902 } else {
2903 var24 = ".nit";
2904 var25 = 4;
2905 var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
2906 var23 = var26;
2907 varonce = var23;
2908 }
2909 {
2910 var27 = standard__file___String___basename(var_rdp, var23);
2911 }
2912 var_pn = var27;
2913 if (varonce28) {
2914 var29 = varonce28;
2915 } else {
2916 var30 = ".nit";
2917 var31 = 4;
2918 var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
2919 var29 = var32;
2920 varonce28 = var29;
2921 }
2922 {
2923 var33 = ((val* (*)(val* self, val* p0))(var_pn->class->vft[COLOR_standard__string__String___43d]))(var_pn, var29) /* + on <var_pn:String>*/;
2924 }
2925 {
2926 var34 = standard__file___String___join_path(var_dirpath, var33);
2927 }
2928 {
2929 var35 = standard__file___String___simplify_path(var34);
2930 }
2931 var_mp = var35;
2932 var_dirpath2 = var_dirpath;
2933 {
2934 var36 = standard__file___String___file_exists(var_mp);
2935 }
2936 var37 = !var36;
2937 if (var37){
2938 if (varonce38) {
2939 var39 = varonce38;
2940 } else {
2941 var40 = "src";
2942 var41 = 3;
2943 var42 = standard___standard__NativeString___to_s_with_length(var40, var41);
2944 var39 = var42;
2945 varonce38 = var39;
2946 }
2947 {
2948 var43 = ((short int (*)(val* self, val* p0))(var_pn->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_pn, var39) /* == on <var_pn:String>*/;
2949 }
2950 if (var43){
2951 {
2952 var44 = standard__file___String___dirname(var_rdp);
2953 }
2954 var_dirpath2 = var44;
2955 if (varonce45) {
2956 var46 = varonce45;
2957 } else {
2958 var47 = "";
2959 var48 = 0;
2960 var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
2961 var46 = var49;
2962 varonce45 = var46;
2963 }
2964 {
2965 var50 = standard__file___String___basename(var_dirpath2, var46);
2966 }
2967 var_pn = var50;
2968 } else {
2969 var51 = NULL;
2970 var = var51;
2971 goto RET_LABEL;
2972 }
2973 } else {
2974 }
2975 if (varonce52) {
2976 var53 = varonce52;
2977 } else {
2978 var54 = "..";
2979 var55 = 2;
2980 var56 = standard___standard__NativeString___to_s_with_length(var54, var55);
2981 var53 = var56;
2982 varonce52 = var53;
2983 }
2984 {
2985 var57 = standard__file___String___join_path(var_dirpath, var53);
2986 }
2987 {
2988 var58 = standard__file___String___simplify_path(var57);
2989 }
2990 var_parentpath = var58;
2991 {
2992 var59 = nit__loader___ModelBuilder___get_mgroup(self, var_parentpath);
2993 }
2994 var_parent = var59;
2995 var60 = NULL;
2996 if (var_parent == NULL) {
2997 var61 = 1; /* is null */
2998 } else {
2999 var61 = 0; /* arg is null but recv is not */
3000 }
3001 if (0) {
3002 { /* Inline kernel#Object#== (var_parent,var60) on <var_parent:nullable MGroup> */
3003 var_other = var60;
3004 {
3005 { /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:nullable MGroup(MGroup)> */
3006 var66 = var_parent == var_other;
3007 var64 = var66;
3008 goto RET_LABEL65;
3009 RET_LABEL65:(void)0;
3010 }
3011 }
3012 var62 = var64;
3013 goto RET_LABEL63;
3014 RET_LABEL63:(void)0;
3015 }
3016 var61 = var62;
3017 }
3018 if (var61){
3019 var67 = NEW_nit__MProject(&type_nit__MProject);
3020 {
3021 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
3022 var70 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
3023 if (unlikely(var70 == NULL)) {
3024 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
3025 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
3026 show_backtrace(1);
3027 }
3028 var68 = var70;
3029 RET_LABEL69:(void)0;
3030 }
3031 }
3032 {
3033 ((void (*)(val* self, val* p0))(var67->class->vft[COLOR_nit__mproject__MProject__name_61d]))(var67, var_pn) /* name= on <var67:MProject>*/;
3034 }
3035 {
3036 ((void (*)(val* self, val* p0))(var67->class->vft[COLOR_nit__mproject__MProject__model_61d]))(var67, var68) /* model= on <var67:MProject>*/;
3037 }
3038 {
3039 ((void (*)(val* self))(var67->class->vft[COLOR_standard__kernel__Object__init]))(var67) /* init on <var67:MProject>*/;
3040 }
3041 var_mproject = var67;
3042 var71 = NEW_nit__MGroup(&type_nit__MGroup);
3043 var72 = NULL;
3044 {
3045 ((void (*)(val* self, val* p0))(var71->class->vft[COLOR_nit__mproject__MGroup__name_61d]))(var71, var_pn) /* name= on <var71:MGroup>*/;
3046 }
3047 {
3048 ((void (*)(val* self, val* p0))(var71->class->vft[COLOR_nit__mproject__MGroup__mproject_61d]))(var71, var_mproject) /* mproject= on <var71:MGroup>*/;
3049 }
3050 {
3051 ((void (*)(val* self, val* p0))(var71->class->vft[COLOR_nit__mproject__MGroup__parent_61d]))(var71, var72) /* parent= on <var71:MGroup>*/;
3052 }
3053 {
3054 ((void (*)(val* self))(var71->class->vft[COLOR_standard__kernel__Object__init]))(var71) /* init on <var71:MGroup>*/;
3055 }
3056 var_mgroup = var71;
3057 {
3058 { /* Inline mproject#MProject#root= (var_mproject,var_mgroup) on <var_mproject:MProject> */
3059 var_mproject->attrs[COLOR_nit__mproject__MProject___root].val = var_mgroup; /* _root on <var_mproject:MProject> */
3060 RET_LABEL73:(void)0;
3061 }
3062 }
3063 {
3064 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3065 var76 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3066 if (unlikely(var76 == NULL)) {
3067 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3068 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3069 show_backtrace(1);
3070 }
3071 var74 = var76;
3072 RET_LABEL75:(void)0;
3073 }
3074 }
3075 if (varonce77) {
3076 var78 = varonce77;
3077 } else {
3078 var79 = "found project `";
3079 var80 = 15;
3080 var81 = standard___standard__NativeString___to_s_with_length(var79, var80);
3081 var78 = var81;
3082 varonce77 = var78;
3083 }
3084 if (varonce82) {
3085 var83 = varonce82;
3086 } else {
3087 var84 = "` at ";
3088 var85 = 5;
3089 var86 = standard___standard__NativeString___to_s_with_length(var84, var85);
3090 var83 = var86;
3091 varonce82 = var83;
3092 }
3093 var87 = NEW_standard__Array(&type_standard__Array__standard__Object);
3094 { /* var87 = array_instance Array[Object] */
3095 var88 = 4;
3096 var89 = NEW_standard__NativeArray(var88, &type_standard__NativeArray__standard__Object);
3097 ((struct instance_standard__NativeArray*)var89)->values[0] = (val*) var78;
3098 ((struct instance_standard__NativeArray*)var89)->values[1] = (val*) var_mproject;
3099 ((struct instance_standard__NativeArray*)var89)->values[2] = (val*) var83;
3100 ((struct instance_standard__NativeArray*)var89)->values[3] = (val*) var_dirpath;
3101 {
3102 ((void (*)(val* self, val* p0, long p1))(var87->class->vft[COLOR_standard__array__Array__with_native]))(var87, var89, var88) /* with_native on <var87:Array[Object]>*/;
3103 }
3104 }
3105 {
3106 var90 = ((val* (*)(val* self))(var87->class->vft[COLOR_standard__string__Object__to_s]))(var87) /* to_s on <var87:Array[Object]>*/;
3107 }
3108 var91 = 2;
3109 {
3110 nit___nit__ToolContext___info(var74, var90, var91); /* Direct call toolcontext#ToolContext#info on <var74:ToolContext>*/
3111 }
3112 } else {
3113 var92 = NEW_nit__MGroup(&type_nit__MGroup);
3114 {
3115 { /* Inline mproject#MGroup#mproject (var_parent) on <var_parent:nullable MGroup(MGroup)> */
3116 var95 = var_parent->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var_parent:nullable MGroup(MGroup)> */
3117 if (unlikely(var95 == NULL)) {
3118 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
3119 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
3120 show_backtrace(1);
3121 }
3122 var93 = var95;
3123 RET_LABEL94:(void)0;
3124 }
3125 }
3126 {
3127 ((void (*)(val* self, val* p0))(var92->class->vft[COLOR_nit__mproject__MGroup__name_61d]))(var92, var_pn) /* name= on <var92:MGroup>*/;
3128 }
3129 {
3130 ((void (*)(val* self, val* p0))(var92->class->vft[COLOR_nit__mproject__MGroup__mproject_61d]))(var92, var93) /* mproject= on <var92:MGroup>*/;
3131 }
3132 {
3133 ((void (*)(val* self, val* p0))(var92->class->vft[COLOR_nit__mproject__MGroup__parent_61d]))(var92, var_parent) /* parent= on <var92:MGroup>*/;
3134 }
3135 {
3136 ((void (*)(val* self))(var92->class->vft[COLOR_standard__kernel__Object__init]))(var92) /* init on <var92:MGroup>*/;
3137 }
3138 var_mgroup = var92;
3139 {
3140 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3141 var98 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3142 if (unlikely(var98 == NULL)) {
3143 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3144 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3145 show_backtrace(1);
3146 }
3147 var96 = var98;
3148 RET_LABEL97:(void)0;
3149 }
3150 }
3151 if (varonce99) {
3152 var100 = varonce99;
3153 } else {
3154 var101 = "found sub group `";
3155 var102 = 17;
3156 var103 = standard___standard__NativeString___to_s_with_length(var101, var102);
3157 var100 = var103;
3158 varonce99 = var100;
3159 }
3160 {
3161 var104 = nit___nit__MGroup___nit__model_base__MEntity__full_name(var_mgroup);
3162 }
3163 if (varonce105) {
3164 var106 = varonce105;
3165 } else {
3166 var107 = "` at ";
3167 var108 = 5;
3168 var109 = standard___standard__NativeString___to_s_with_length(var107, var108);
3169 var106 = var109;
3170 varonce105 = var106;
3171 }
3172 var110 = NEW_standard__Array(&type_standard__Array__standard__Object);
3173 { /* var110 = array_instance Array[Object] */
3174 var111 = 4;
3175 var112 = NEW_standard__NativeArray(var111, &type_standard__NativeArray__standard__Object);
3176 ((struct instance_standard__NativeArray*)var112)->values[0] = (val*) var100;
3177 ((struct instance_standard__NativeArray*)var112)->values[1] = (val*) var104;
3178 ((struct instance_standard__NativeArray*)var112)->values[2] = (val*) var106;
3179 ((struct instance_standard__NativeArray*)var112)->values[3] = (val*) var_dirpath;
3180 {
3181 ((void (*)(val* self, val* p0, long p1))(var110->class->vft[COLOR_standard__array__Array__with_native]))(var110, var112, var111) /* with_native on <var110:Array[Object]>*/;
3182 }
3183 }
3184 {
3185 var113 = ((val* (*)(val* self))(var110->class->vft[COLOR_standard__string__Object__to_s]))(var110) /* to_s on <var110:Array[Object]>*/;
3186 }
3187 var114 = 2;
3188 {
3189 nit___nit__ToolContext___info(var96, var113, var114); /* Direct call toolcontext#ToolContext#info on <var96:ToolContext>*/
3190 }
3191 }
3192 if (varonce115) {
3193 var116 = varonce115;
3194 } else {
3195 var117 = "README.md";
3196 var118 = 9;
3197 var119 = standard___standard__NativeString___to_s_with_length(var117, var118);
3198 var116 = var119;
3199 varonce115 = var116;
3200 }
3201 {
3202 var120 = standard__file___String___join_path(var_dirpath2, var116);
3203 }
3204 var_readme = var120;
3205 {
3206 var121 = standard__file___String___file_exists(var_readme);
3207 }
3208 var122 = !var121;
3209 if (var122){
3210 if (varonce123) {
3211 var124 = varonce123;
3212 } else {
3213 var125 = "README";
3214 var126 = 6;
3215 var127 = standard___standard__NativeString___to_s_with_length(var125, var126);
3216 var124 = var127;
3217 varonce123 = var124;
3218 }
3219 {
3220 var128 = standard__file___String___join_path(var_dirpath2, var124);
3221 }
3222 var_readme = var128;
3223 } else {
3224 }
3225 {
3226 var129 = standard__file___String___file_exists(var_readme);
3227 }
3228 if (var129){
3229 var130 = NEW_nit__MDoc(&type_nit__MDoc);
3230 {
3231 { /* Inline kernel#Object#init (var130) on <var130:MDoc> */
3232 RET_LABEL131:(void)0;
3233 }
3234 }
3235 var_mdoc = var130;
3236 var132 = NEW_standard__IFStream(&type_standard__IFStream);
3237 {
3238 standard___standard__IFStream___open(var132, var_readme); /* Direct call file#IFStream#open on <var132:IFStream>*/
3239 }
3240 var_s = var132;
3241 for(;;) {
3242 {
3243 var133 = standard___standard__BufferedIStream___IStream__eof(var_s);
3244 }
3245 var134 = !var133;
3246 if (var134){
3247 {
3248 { /* Inline mdoc#MDoc#content (var_mdoc) on <var_mdoc:MDoc> */
3249 var137 = var_mdoc->attrs[COLOR_nit__mdoc__MDoc___content].val; /* _content on <var_mdoc:MDoc> */
3250 if (unlikely(var137 == NULL)) {
3251 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
3252 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mdoc, 22);
3253 show_backtrace(1);
3254 }
3255 var135 = var137;
3256 RET_LABEL136:(void)0;
3257 }
3258 }
3259 {
3260 var138 = standard___standard__IStream___read_line(var_s);
3261 }
3262 {
3263 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var135, var138); /* Direct call array#Array#add on <var135:Array[String]>*/
3264 }
3265 } else {
3266 goto BREAK_label139;
3267 }
3268 }
3269 BREAK_label139: (void)0;
3270 {
3271 { /* Inline mdoc#MEntity#mdoc= (var_mgroup,var_mdoc) on <var_mgroup:nullable Object(MGroup)> */
3272 var_mgroup->attrs[COLOR_nit__mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mgroup:nullable Object(MGroup)> */
3273 RET_LABEL140:(void)0;
3274 }
3275 }
3276 {
3277 { /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mgroup) on <var_mdoc:MDoc> */
3278 var_mdoc->attrs[COLOR_nit__mdoc__MDoc___original_mentity].val = var_mgroup; /* _original_mentity on <var_mdoc:MDoc> */
3279 RET_LABEL141:(void)0;
3280 }
3281 }
3282 } else {
3283 }
3284 {
3285 { /* Inline mproject#MGroup#filepath= (var_mgroup,var_dirpath) on <var_mgroup:nullable Object(MGroup)> */
3286 var_mgroup->attrs[COLOR_nit__mproject__MGroup___filepath].val = var_dirpath; /* _filepath on <var_mgroup:nullable Object(MGroup)> */
3287 RET_LABEL142:(void)0;
3288 }
3289 }
3290 {
3291 { /* Inline loader#ModelBuilder#mgroups (self) on <self:ModelBuilder> */
3292 var145 = self->attrs[COLOR_nit__loader__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
3293 if (unlikely(var145 == NULL)) {
3294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
3295 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 328);
3296 show_backtrace(1);
3297 }
3298 var143 = var145;
3299 RET_LABEL144:(void)0;
3300 }
3301 }
3302 {
3303 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var143, var_rdp, var_mgroup); /* Direct call hash_collection#HashMap#[]= on <var143:HashMap[String, nullable MGroup]>*/
3304 }
3305 var = var_mgroup;
3306 goto RET_LABEL;
3307 RET_LABEL:;
3308 return var;
3309 }
3310 /* method loader#ModelBuilder#module_absolute_path for (self: ModelBuilder, String): String */
3311 val* nit__loader___ModelBuilder___module_absolute_path(val* self, val* p0) {
3312 val* var /* : String */;
3313 val* var_path /* var path: String */;
3314 val* var1 /* : String */;
3315 val* var2 /* : String */;
3316 val* var3 /* : String */;
3317 var_path = p0;
3318 {
3319 var1 = standard__file___Object___getcwd(self);
3320 }
3321 {
3322 var2 = standard__file___String___join_path(var1, var_path);
3323 }
3324 {
3325 var3 = standard__file___String___simplify_path(var2);
3326 }
3327 var = var3;
3328 goto RET_LABEL;
3329 RET_LABEL:;
3330 return var;
3331 }
3332 /* method loader#ModelBuilder#load_module_ast for (self: ModelBuilder, String): nullable AModule */
3333 val* nit__loader___ModelBuilder___load_module_ast(val* self, val* p0) {
3334 val* var /* : nullable AModule */;
3335 val* var_filename /* var filename: String */;
3336 val* var1 /* : nullable String */;
3337 static val* varonce;
3338 val* var2 /* : String */;
3339 char* var3 /* : NativeString */;
3340 long var4 /* : Int */;
3341 val* var5 /* : FlatString */;
3342 short int var6 /* : Bool */;
3343 short int var7 /* : Bool */;
3344 val* var_other /* var other: nullable Object */;
3345 short int var9 /* : Bool */;
3346 short int var10 /* : Bool */;
3347 val* var11 /* : ToolContext */;
3348 val* var13 /* : ToolContext */;
3349 val* var14 /* : null */;
3350 static val* varonce15;
3351 val* var16 /* : String */;
3352 char* var17 /* : NativeString */;
3353 long var18 /* : Int */;
3354 val* var19 /* : FlatString */;
3355 static val* varonce20;
3356 val* var21 /* : String */;
3357 char* var22 /* : NativeString */;
3358 long var23 /* : Int */;
3359 val* var24 /* : FlatString */;
3360 val* var25 /* : Array[Object] */;
3361 long var26 /* : Int */;
3362 val* var27 /* : NativeArray[Object] */;
3363 val* var28 /* : String */;
3364 val* var29 /* : null */;
3365 short int var30 /* : Bool */;
3366 short int var31 /* : Bool */;
3367 val* var32 /* : ToolContext */;
3368 val* var34 /* : ToolContext */;
3369 val* var35 /* : null */;
3370 static val* varonce36;
3371 val* var37 /* : String */;
3372 char* var38 /* : NativeString */;
3373 long var39 /* : Int */;
3374 val* var40 /* : FlatString */;
3375 static val* varonce41;
3376 val* var42 /* : String */;
3377 char* var43 /* : NativeString */;
3378 long var44 /* : Int */;
3379 val* var45 /* : FlatString */;
3380 val* var46 /* : Array[Object] */;
3381 long var47 /* : Int */;
3382 val* var48 /* : NativeArray[Object] */;
3383 val* var49 /* : String */;
3384 val* var50 /* : null */;
3385 val* var51 /* : ToolContext */;
3386 val* var53 /* : ToolContext */;
3387 static val* varonce54;
3388 val* var55 /* : String */;
3389 char* var56 /* : NativeString */;
3390 long var57 /* : Int */;
3391 val* var58 /* : FlatString */;
3392 val* var59 /* : Array[Object] */;
3393 long var60 /* : Int */;
3394 val* var61 /* : NativeArray[Object] */;
3395 val* var62 /* : String */;
3396 long var63 /* : Int */;
3397 val* var64 /* : IFStream */;
3398 val* var_file /* var file: IFStream */;
3399 val* var65 /* : Lexer */;
3400 val* var66 /* : SourceFile */;
3401 val* var_lexer /* var lexer: Lexer */;
3402 val* var67 /* : Parser */;
3403 val* var_parser /* var parser: Parser */;
3404 val* var68 /* : Start */;
3405 val* var_tree /* var tree: Start */;
3406 val* var69 /* : nullable AModule */;
3407 val* var71 /* : nullable AModule */;
3408 val* var_nmodule /* var nmodule: nullable AModule */;
3409 val* var72 /* : null */;
3410 short int var73 /* : Bool */;
3411 short int var74 /* : Bool */;
3412 val* var_other76 /* var other: nullable Object */;
3413 short int var77 /* : Bool */;
3414 short int var79 /* : Bool */;
3415 val* var80 /* : EOF */;
3416 val* var82 /* : EOF */;
3417 val* var_neof /* var neof: EOF */;
3418 short int var83 /* : Bool */;
3419 int cltype;
3420 int idtype;
3421 val* var84 /* : String */;
3422 val* var86 /* : String */;
3423 val* var87 /* : null */;
3424 var_filename = p0;
3425 {
3426 var1 = standard__file___String___file_extension(var_filename);
3427 }
3428 if (varonce) {
3429 var2 = varonce;
3430 } else {
3431 var3 = "nit";
3432 var4 = 3;
3433 var5 = standard___standard__NativeString___to_s_with_length(var3, var4);
3434 var2 = var5;
3435 varonce = var2;
3436 }
3437 if (var1 == NULL) {
3438 var6 = 1; /* <var2:String> cannot be null */
3439 } else {
3440 { /* Inline kernel#Object#!= (var1,var2) on <var1:nullable String> */
3441 var_other = var2;
3442 {
3443 var9 = ((short int (*)(val* self, val* p0))(var1->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable String(String)>*/;
3444 }
3445 var10 = !var9;
3446 var7 = var10;
3447 goto RET_LABEL8;
3448 RET_LABEL8:(void)0;
3449 }
3450 var6 = var7;
3451 }
3452 if (var6){
3453 {
3454 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3455 var13 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3456 if (unlikely(var13 == NULL)) {
3457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3458 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3459 show_backtrace(1);
3460 }
3461 var11 = var13;
3462 RET_LABEL12:(void)0;
3463 }
3464 }
3465 var14 = NULL;
3466 if (varonce15) {
3467 var16 = varonce15;
3468 } else {
3469 var17 = "Error: file ";
3470 var18 = 12;
3471 var19 = standard___standard__NativeString___to_s_with_length(var17, var18);
3472 var16 = var19;
3473 varonce15 = var16;
3474 }
3475 if (varonce20) {
3476 var21 = varonce20;
3477 } else {
3478 var22 = " is not a valid nit module.";
3479 var23 = 27;
3480 var24 = standard___standard__NativeString___to_s_with_length(var22, var23);
3481 var21 = var24;
3482 varonce20 = var21;
3483 }
3484 var25 = NEW_standard__Array(&type_standard__Array__standard__Object);
3485 { /* var25 = array_instance Array[Object] */
3486 var26 = 3;
3487 var27 = NEW_standard__NativeArray(var26, &type_standard__NativeArray__standard__Object);
3488 ((struct instance_standard__NativeArray*)var27)->values[0] = (val*) var16;
3489 ((struct instance_standard__NativeArray*)var27)->values[1] = (val*) var_filename;
3490 ((struct instance_standard__NativeArray*)var27)->values[2] = (val*) var21;
3491 {
3492 ((void (*)(val* self, val* p0, long p1))(var25->class->vft[COLOR_standard__array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
3493 }
3494 }
3495 {
3496 var28 = ((val* (*)(val* self))(var25->class->vft[COLOR_standard__string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
3497 }
3498 {
3499 nit___nit__ToolContext___error(var11, var14, var28); /* Direct call toolcontext#ToolContext#error on <var11:ToolContext>*/
3500 }
3501 var29 = NULL;
3502 var = var29;
3503 goto RET_LABEL;
3504 } else {
3505 }
3506 {
3507 var30 = standard__file___String___file_exists(var_filename);
3508 }
3509 var31 = !var30;
3510 if (var31){
3511 {
3512 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3513 var34 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3514 if (unlikely(var34 == NULL)) {
3515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3516 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3517 show_backtrace(1);
3518 }
3519 var32 = var34;
3520 RET_LABEL33:(void)0;
3521 }
3522 }
3523 var35 = NULL;
3524 if (varonce36) {
3525 var37 = varonce36;
3526 } else {
3527 var38 = "Error: file ";
3528 var39 = 12;
3529 var40 = standard___standard__NativeString___to_s_with_length(var38, var39);
3530 var37 = var40;
3531 varonce36 = var37;
3532 }
3533 if (varonce41) {
3534 var42 = varonce41;
3535 } else {
3536 var43 = " not found.";
3537 var44 = 11;
3538 var45 = standard___standard__NativeString___to_s_with_length(var43, var44);
3539 var42 = var45;
3540 varonce41 = var42;
3541 }
3542 var46 = NEW_standard__Array(&type_standard__Array__standard__Object);
3543 { /* var46 = array_instance Array[Object] */
3544 var47 = 3;
3545 var48 = NEW_standard__NativeArray(var47, &type_standard__NativeArray__standard__Object);
3546 ((struct instance_standard__NativeArray*)var48)->values[0] = (val*) var37;
3547 ((struct instance_standard__NativeArray*)var48)->values[1] = (val*) var_filename;
3548 ((struct instance_standard__NativeArray*)var48)->values[2] = (val*) var42;
3549 {
3550 ((void (*)(val* self, val* p0, long p1))(var46->class->vft[COLOR_standard__array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
3551 }
3552 }
3553 {
3554 var49 = ((val* (*)(val* self))(var46->class->vft[COLOR_standard__string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
3555 }
3556 {
3557 nit___nit__ToolContext___error(var32, var35, var49); /* Direct call toolcontext#ToolContext#error on <var32:ToolContext>*/
3558 }
3559 var50 = NULL;
3560 var = var50;
3561 goto RET_LABEL;
3562 } else {
3563 }
3564 {
3565 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3566 var53 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3567 if (unlikely(var53 == NULL)) {
3568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3569 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3570 show_backtrace(1);
3571 }
3572 var51 = var53;
3573 RET_LABEL52:(void)0;
3574 }
3575 }
3576 if (varonce54) {
3577 var55 = varonce54;
3578 } else {
3579 var56 = "load module ";
3580 var57 = 12;
3581 var58 = standard___standard__NativeString___to_s_with_length(var56, var57);
3582 var55 = var58;
3583 varonce54 = var55;
3584 }
3585 var59 = NEW_standard__Array(&type_standard__Array__standard__Object);
3586 { /* var59 = array_instance Array[Object] */
3587 var60 = 2;
3588 var61 = NEW_standard__NativeArray(var60, &type_standard__NativeArray__standard__Object);
3589 ((struct instance_standard__NativeArray*)var61)->values[0] = (val*) var55;
3590 ((struct instance_standard__NativeArray*)var61)->values[1] = (val*) var_filename;
3591 {
3592 ((void (*)(val* self, val* p0, long p1))(var59->class->vft[COLOR_standard__array__Array__with_native]))(var59, var61, var60) /* with_native on <var59:Array[Object]>*/;
3593 }
3594 }
3595 {
3596 var62 = ((val* (*)(val* self))(var59->class->vft[COLOR_standard__string__Object__to_s]))(var59) /* to_s on <var59:Array[Object]>*/;
3597 }
3598 var63 = 2;
3599 {
3600 nit___nit__ToolContext___info(var51, var62, var63); /* Direct call toolcontext#ToolContext#info on <var51:ToolContext>*/
3601 }
3602 var64 = NEW_standard__IFStream(&type_standard__IFStream);
3603 {
3604 standard___standard__IFStream___open(var64, var_filename); /* Direct call file#IFStream#open on <var64:IFStream>*/
3605 }
3606 var_file = var64;
3607 var65 = NEW_nit__Lexer(&type_nit__Lexer);
3608 var66 = NEW_nit__SourceFile(&type_nit__SourceFile);
3609 {
3610 ((void (*)(val* self, val* p0))(var66->class->vft[COLOR_nit__location__SourceFile__filename_61d]))(var66, var_filename) /* filename= on <var66:SourceFile>*/;
3611 }
3612 {
3613 ((void (*)(val* self, val* p0))(var66->class->vft[COLOR_nit__location__SourceFile__stream_61d]))(var66, var_file) /* stream= on <var66:SourceFile>*/;
3614 }
3615 {
3616 ((void (*)(val* self))(var66->class->vft[COLOR_standard__kernel__Object__init]))(var66) /* init on <var66:SourceFile>*/;
3617 }
3618 {
3619 ((void (*)(val* self, val* p0))(var65->class->vft[COLOR_nit__lexer_work__Lexer__file_61d]))(var65, var66) /* file= on <var65:Lexer>*/;
3620 }
3621 {
3622 ((void (*)(val* self))(var65->class->vft[COLOR_standard__kernel__Object__init]))(var65) /* init on <var65:Lexer>*/;
3623 }
3624 var_lexer = var65;
3625 var67 = NEW_nit__Parser(&type_nit__Parser);
3626 {
3627 ((void (*)(val* self, val* p0))(var67->class->vft[COLOR_nit__parser_work__Parser__lexer_61d]))(var67, var_lexer) /* lexer= on <var67:Parser>*/;
3628 }
3629 {
3630 ((void (*)(val* self))(var67->class->vft[COLOR_standard__kernel__Object__init]))(var67) /* init on <var67:Parser>*/;
3631 }
3632 var_parser = var67;
3633 {
3634 var68 = nit___nit__Parser___parse(var_parser);
3635 }
3636 var_tree = var68;
3637 {
3638 standard___standard__IFStream___standard__stream__IOS__close(var_file); /* Direct call file#IFStream#close on <var_file:IFStream>*/
3639 }
3640 {
3641 { /* Inline parser_nodes#Start#n_base (var_tree) on <var_tree:Start> */
3642 var71 = var_tree->attrs[COLOR_nit__parser_nodes__Start___n_base].val; /* _n_base on <var_tree:Start> */
3643 var69 = var71;
3644 RET_LABEL70:(void)0;
3645 }
3646 }
3647 var_nmodule = var69;
3648 var72 = NULL;
3649 if (var_nmodule == NULL) {
3650 var73 = 1; /* is null */
3651 } else {
3652 var73 = 0; /* arg is null but recv is not */
3653 }
3654 if (0) {
3655 { /* Inline kernel#Object#== (var_nmodule,var72) on <var_nmodule:nullable AModule> */
3656 var_other76 = var72;
3657 {
3658 { /* Inline kernel#Object#is_same_instance (var_nmodule,var_other76) on <var_nmodule:nullable AModule(AModule)> */
3659 var79 = var_nmodule == var_other76;
3660 var77 = var79;
3661 goto RET_LABEL78;
3662 RET_LABEL78:(void)0;
3663 }
3664 }
3665 var74 = var77;
3666 goto RET_LABEL75;
3667 RET_LABEL75:(void)0;
3668 }
3669 var73 = var74;
3670 }
3671 if (var73){
3672 {
3673 { /* Inline parser_nodes#Start#n_eof (var_tree) on <var_tree:Start> */
3674 var82 = var_tree->attrs[COLOR_nit__parser_nodes__Start___n_eof].val; /* _n_eof on <var_tree:Start> */
3675 if (unlikely(var82 == NULL)) {
3676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_eof");
3677 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2601);
3678 show_backtrace(1);
3679 }
3680 var80 = var82;
3681 RET_LABEL81:(void)0;
3682 }
3683 }
3684 var_neof = var80;
3685 /* <var_neof:EOF> isa AError */
3686 cltype = type_nit__AError.color;
3687 idtype = type_nit__AError.id;
3688 if(cltype >= var_neof->type->table_size) {
3689 var83 = 0;
3690 } else {
3691 var83 = var_neof->type->type_table[cltype] == idtype;
3692 }
3693 if (unlikely(!var83)) {
3694 PRINT_ERROR("Runtime error: %s", "Assert failed");
3695 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 443);
3696 show_backtrace(1);
3697 }
3698 {
3699 { /* Inline lexer_work#AError#message (var_neof) on <var_neof:EOF(AError)> */
3700 var86 = var_neof->attrs[COLOR_nit__lexer_work__AError___message].val; /* _message on <var_neof:EOF(AError)> */
3701 if (unlikely(var86 == NULL)) {
3702 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message");
3703 PRINT_ERROR(" (%s:%d)\n", FILE_nit__lexer_work, 50);
3704 show_backtrace(1);
3705 }
3706 var84 = var86;
3707 RET_LABEL85:(void)0;
3708 }
3709 }
3710 {
3711 nit___nit__ModelBuilder___error(self, var_neof, var84); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
3712 }
3713 var87 = NULL;
3714 var = var87;
3715 goto RET_LABEL;
3716 } else {
3717 }
3718 var = var_nmodule;
3719 goto RET_LABEL;
3720 RET_LABEL:;
3721 return var;
3722 }
3723 /* method loader#ModelBuilder#load_module for (self: ModelBuilder, String): nullable AModule */
3724 val* nit__loader___ModelBuilder___load_module(val* self, val* p0) {
3725 val* var /* : nullable AModule */;
3726 val* var_filename /* var filename: String */;
3727 val* var1 /* : nullable ModulePath */;
3728 val* var_file /* var file: nullable ModulePath */;
3729 val* var2 /* : null */;
3730 short int var3 /* : Bool */;
3731 short int var4 /* : Bool */;
3732 val* var_other /* var other: nullable Object */;
3733 short int var6 /* : Bool */;
3734 short int var8 /* : Bool */;
3735 val* var9 /* : ToolContext */;
3736 val* var11 /* : ToolContext */;
3737 val* var12 /* : null */;
3738 static val* varonce;
3739 val* var13 /* : String */;
3740 char* var14 /* : NativeString */;
3741 long var15 /* : Int */;
3742 val* var16 /* : FlatString */;
3743 static val* varonce17;
3744 val* var18 /* : String */;
3745 char* var19 /* : NativeString */;
3746 long var20 /* : Int */;
3747 val* var21 /* : FlatString */;
3748 val* var22 /* : Array[Object] */;
3749 long var23 /* : Int */;
3750 val* var24 /* : NativeArray[Object] */;
3751 val* var25 /* : String */;
3752 val* var26 /* : null */;
3753 val* var27 /* : nullable MModule */;
3754 val* var29 /* : nullable MModule */;
3755 val* var_mmodule /* var mmodule: nullable MModule */;
3756 val* var30 /* : null */;
3757 short int var31 /* : Bool */;
3758 short int var32 /* : Bool */;
3759 val* var_other34 /* var other: nullable Object */;
3760 short int var35 /* : Bool */;
3761 short int var36 /* : Bool */;
3762 val* var37 /* : HashMap[MModule, AModule] */;
3763 val* var39 /* : HashMap[MModule, AModule] */;
3764 val* var40 /* : nullable Object */;
3765 val* var41 /* : String */;
3766 val* var43 /* : String */;
3767 val* var44 /* : nullable AModule */;
3768 val* var_nmodule /* var nmodule: nullable AModule */;
3769 val* var45 /* : null */;
3770 short int var46 /* : Bool */;
3771 short int var47 /* : Bool */;
3772 short int var49 /* : Bool */;
3773 short int var51 /* : Bool */;
3774 val* var52 /* : null */;
3775 val* var53 /* : MGroup */;
3776 val* var55 /* : MGroup */;
3777 val* var56 /* : String */;
3778 val* var58 /* : String */;
3779 val* var59 /* : nullable MModule */;
3780 val* var60 /* : null */;
3781 short int var61 /* : Bool */;
3782 short int var62 /* : Bool */;
3783 short int var64 /* : Bool */;
3784 short int var66 /* : Bool */;
3785 val* var67 /* : null */;
3786 var_filename = p0;
3787 {
3788 var1 = nit__loader___ModelBuilder___identify_file(self, var_filename);
3789 }
3790 var_file = var1;
3791 var2 = NULL;
3792 if (var_file == NULL) {
3793 var3 = 1; /* is null */
3794 } else {
3795 var3 = 0; /* arg is null but recv is not */
3796 }
3797 if (0) {
3798 { /* Inline kernel#Object#== (var_file,var2) on <var_file:nullable ModulePath> */
3799 var_other = var2;
3800 {
3801 { /* Inline kernel#Object#is_same_instance (var_file,var_other) on <var_file:nullable ModulePath(ModulePath)> */
3802 var8 = var_file == var_other;
3803 var6 = var8;
3804 goto RET_LABEL7;
3805 RET_LABEL7:(void)0;
3806 }
3807 }
3808 var4 = var6;
3809 goto RET_LABEL5;
3810 RET_LABEL5:(void)0;
3811 }
3812 var3 = var4;
3813 }
3814 if (var3){
3815 {
3816 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
3817 var11 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
3818 if (unlikely(var11 == NULL)) {
3819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3820 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
3821 show_backtrace(1);
3822 }
3823 var9 = var11;
3824 RET_LABEL10:(void)0;
3825 }
3826 }
3827 var12 = NULL;
3828 if (varonce) {
3829 var13 = varonce;
3830 } else {
3831 var14 = "Error: cannot find module `";
3832 var15 = 27;
3833 var16 = standard___standard__NativeString___to_s_with_length(var14, var15);
3834 var13 = var16;
3835 varonce = var13;
3836 }
3837 if (varonce17) {
3838 var18 = varonce17;
3839 } else {
3840 var19 = "`.";
3841 var20 = 2;
3842 var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
3843 var18 = var21;
3844 varonce17 = var18;
3845 }
3846 var22 = NEW_standard__Array(&type_standard__Array__standard__Object);
3847 { /* var22 = array_instance Array[Object] */
3848 var23 = 3;
3849 var24 = NEW_standard__NativeArray(var23, &type_standard__NativeArray__standard__Object);
3850 ((struct instance_standard__NativeArray*)var24)->values[0] = (val*) var13;
3851 ((struct instance_standard__NativeArray*)var24)->values[1] = (val*) var_filename;
3852 ((struct instance_standard__NativeArray*)var24)->values[2] = (val*) var18;
3853 {
3854 ((void (*)(val* self, val* p0, long p1))(var22->class->vft[COLOR_standard__array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
3855 }
3856 }
3857 {
3858 var25 = ((val* (*)(val* self))(var22->class->vft[COLOR_standard__string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
3859 }
3860 {
3861 nit___nit__ToolContext___error(var9, var12, var25); /* Direct call toolcontext#ToolContext#error on <var9:ToolContext>*/
3862 }
3863 var26 = NULL;
3864 var = var26;
3865 goto RET_LABEL;
3866 } else {
3867 }
3868 {
3869 { /* Inline loader#ModulePath#mmodule (var_file) on <var_file:nullable ModulePath(ModulePath)> */
3870 var29 = var_file->attrs[COLOR_nit__loader__ModulePath___mmodule].val; /* _mmodule on <var_file:nullable ModulePath(ModulePath)> */
3871 var27 = var29;
3872 RET_LABEL28:(void)0;
3873 }
3874 }
3875 var_mmodule = var27;
3876 var30 = NULL;
3877 if (var_mmodule == NULL) {
3878 var31 = 0; /* is null */
3879 } else {
3880 var31 = 1; /* arg is null and recv is not */
3881 }
3882 if (0) {
3883 { /* Inline kernel#Object#!= (var_mmodule,var30) on <var_mmodule:nullable MModule> */
3884 var_other34 = var30;
3885 {
3886 var35 = ((short int (*)(val* self, val* p0))(var_mmodule->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mmodule, var_other34) /* == on <var_mmodule:nullable MModule(MModule)>*/;
3887 }
3888 var36 = !var35;
3889 var32 = var36;
3890 goto RET_LABEL33;
3891 RET_LABEL33:(void)0;
3892 }
3893 var31 = var32;
3894 }
3895 if (var31){
3896 {
3897 { /* Inline loader#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
3898 var39 = self->attrs[COLOR_nit__loader__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
3899 if (unlikely(var39 == NULL)) {
3900 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
3901 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 641);
3902 show_backtrace(1);
3903 }
3904 var37 = var39;
3905 RET_LABEL38:(void)0;
3906 }
3907 }
3908 {
3909 var40 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var37, var_mmodule);
3910 }
3911 var = var40;
3912 goto RET_LABEL;
3913 } else {
3914 }
3915 {
3916 { /* Inline loader#ModulePath#filepath (var_file) on <var_file:nullable ModulePath(ModulePath)> */
3917 var43 = var_file->attrs[COLOR_nit__loader__ModulePath___filepath].val; /* _filepath on <var_file:nullable ModulePath(ModulePath)> */
3918 if (unlikely(var43 == NULL)) {
3919 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath");
3920 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 662);
3921 show_backtrace(1);
3922 }
3923 var41 = var43;
3924 RET_LABEL42:(void)0;
3925 }
3926 }
3927 {
3928 var44 = nit__loader___ModelBuilder___load_module_ast(self, var41);
3929 }
3930 var_nmodule = var44;
3931 var45 = NULL;
3932 if (var_nmodule == NULL) {
3933 var46 = 1; /* is null */
3934 } else {
3935 var46 = 0; /* arg is null but recv is not */
3936 }
3937 if (0) {
3938 { /* Inline kernel#Object#== (var_nmodule,var45) on <var_nmodule:nullable AModule> */
3939 var_other = var45;
3940 {
3941 { /* Inline kernel#Object#is_same_instance (var_nmodule,var_other) on <var_nmodule:nullable AModule(AModule)> */
3942 var51 = var_nmodule == var_other;
3943 var49 = var51;
3944 goto RET_LABEL50;
3945 RET_LABEL50:(void)0;
3946 }
3947 }
3948 var47 = var49;
3949 goto RET_LABEL48;
3950 RET_LABEL48:(void)0;
3951 }
3952 var46 = var47;
3953 }
3954 if (var46){
3955 var52 = NULL;
3956 var = var52;
3957 goto RET_LABEL;
3958 } else {
3959 }
3960 {
3961 { /* Inline loader#ModulePath#mgroup (var_file) on <var_file:nullable ModulePath(ModulePath)> */
3962 var55 = var_file->attrs[COLOR_nit__loader__ModulePath___mgroup].val; /* _mgroup on <var_file:nullable ModulePath(ModulePath)> */
3963 if (unlikely(var55 == NULL)) {
3964 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup");
3965 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 665);
3966 show_backtrace(1);
3967 }
3968 var53 = var55;
3969 RET_LABEL54:(void)0;
3970 }
3971 }
3972 {
3973 { /* Inline loader#ModulePath#name (var_file) on <var_file:nullable ModulePath(ModulePath)> */
3974 var58 = var_file->attrs[COLOR_nit__loader__ModulePath___name].val; /* _name on <var_file:nullable ModulePath(ModulePath)> */
3975 if (unlikely(var58 == NULL)) {
3976 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3977 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 658);
3978 show_backtrace(1);
3979 }
3980 var56 = var58;
3981 RET_LABEL57:(void)0;
3982 }
3983 }
3984 {
3985 var59 = nit__loader___ModelBuilder___build_a_mmodule(self, var53, var56, var_nmodule);
3986 }
3987 var_mmodule = var59;
3988 var60 = NULL;
3989 if (var_mmodule == NULL) {
3990 var61 = 1; /* is null */
3991 } else {
3992 var61 = 0; /* arg is null but recv is not */
3993 }
3994 if (0) {
3995 { /* Inline kernel#Object#== (var_mmodule,var60) on <var_mmodule:nullable MModule> */
3996 var_other = var60;
3997 {
3998 { /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
3999 var66 = var_mmodule == var_other;
4000 var64 = var66;
4001 goto RET_LABEL65;
4002 RET_LABEL65:(void)0;
4003 }
4004 }
4005 var62 = var64;
4006 goto RET_LABEL63;
4007 RET_LABEL63:(void)0;
4008 }
4009 var61 = var62;
4010 }
4011 if (var61){
4012 var67 = NULL;
4013 var = var67;
4014 goto RET_LABEL;
4015 } else {
4016 }
4017 {
4018 { /* Inline loader#ModulePath#mmodule= (var_file,var_mmodule) on <var_file:nullable ModulePath(ModulePath)> */
4019 var_file->attrs[COLOR_nit__loader__ModulePath___mmodule].val = var_mmodule; /* _mmodule on <var_file:nullable ModulePath(ModulePath)> */
4020 RET_LABEL68:(void)0;
4021 }
4022 }
4023 var = var_nmodule;
4024 goto RET_LABEL;
4025 RET_LABEL:;
4026 return var;
4027 }
4028 /* method loader#ModelBuilder#build_a_mmodule for (self: ModelBuilder, nullable MGroup, String, AModule): nullable MModule */
4029 val* nit__loader___ModelBuilder___build_a_mmodule(val* self, val* p0, val* p1, val* p2) {
4030 val* var /* : nullable MModule */;
4031 val* var_mgroup /* var mgroup: nullable MGroup */;
4032 val* var_mod_name /* var mod_name: String */;
4033 val* var_nmodule /* var nmodule: AModule */;
4034 val* var1 /* : nullable AModuledecl */;
4035 val* var3 /* : nullable AModuledecl */;
4036 val* var_decl /* var decl: nullable AModuledecl */;
4037 val* var4 /* : null */;
4038 short int var5 /* : Bool */;
4039 short int var6 /* : Bool */;
4040 val* var_other /* var other: nullable Object */;
4041 short int var8 /* : Bool */;
4042 short int var9 /* : Bool */;
4043 val* var10 /* : AModuleName */;
4044 val* var12 /* : AModuleName */;
4045 val* var13 /* : TId */;
4046 val* var15 /* : TId */;
4047 val* var16 /* : String */;
4048 val* var_decl_name /* var decl_name: String */;
4049 short int var17 /* : Bool */;
4050 short int var19 /* : Bool */;
4051 short int var20 /* : Bool */;
4052 val* var21 /* : AModuleName */;
4053 val* var23 /* : AModuleName */;
4054 static val* varonce;
4055 val* var24 /* : String */;
4056 char* var25 /* : NativeString */;
4057 long var26 /* : Int */;
4058 val* var27 /* : FlatString */;
4059 static val* varonce28;
4060 val* var29 /* : String */;
4061 char* var30 /* : NativeString */;
4062 long var31 /* : Int */;
4063 val* var32 /* : FlatString */;
4064 val* var33 /* : Array[Object] */;
4065 long var34 /* : Int */;
4066 val* var35 /* : NativeArray[Object] */;
4067 val* var36 /* : String */;
4068 val* var37 /* : null */;
4069 short int var38 /* : Bool */;
4070 short int var39 /* : Bool */;
4071 short int var41 /* : Bool */;
4072 short int var42 /* : Bool */;
4073 val* var43 /* : Model */;
4074 val* var45 /* : Model */;
4075 val* var46 /* : nullable Array[MModule] */;
4076 val* var_others /* var others: nullable Array[MModule] */;
4077 val* var47 /* : null */;
4078 short int var48 /* : Bool */;
4079 short int var49 /* : Bool */;
4080 short int var51 /* : Bool */;
4081 short int var52 /* : Bool */;
4082 val* var_ /* var : Array[MModule] */;
4083 val* var53 /* : ArrayIterator[nullable Object] */;
4084 val* var_54 /* var : ArrayIterator[MModule] */;
4085 short int var55 /* : Bool */;
4086 val* var56 /* : nullable Object */;
4087 val* var_other57 /* var other: MModule */;
4088 short int var58 /* : Bool */;
4089 val* var59 /* : nullable MGroup */;
4090 val* var61 /* : nullable MGroup */;
4091 val* var62 /* : null */;
4092 short int var63 /* : Bool */;
4093 short int var64 /* : Bool */;
4094 short int var66 /* : Bool */;
4095 short int var67 /* : Bool */;
4096 short int var_68 /* var : Bool */;
4097 val* var69 /* : nullable MGroup */;
4098 val* var71 /* : nullable MGroup */;
4099 val* var72 /* : MProject */;
4100 val* var74 /* : MProject */;
4101 val* var75 /* : MProject */;
4102 val* var77 /* : MProject */;
4103 short int var78 /* : Bool */;
4104 val* var_other80 /* var other: nullable Object */;
4105 short int var81 /* : Bool */;
4106 short int var83 /* : Bool */;
4107 val* var84 /* : null */;
4108 short int var85 /* : Bool */;
4109 short int var86 /* : Bool */;
4110 short int var88 /* : Bool */;
4111 short int var90 /* : Bool */;
4112 val* var_node /* var node: ANode */;
4113 val* var91 /* : AModuleName */;
4114 val* var93 /* : AModuleName */;
4115 static val* varonce94;
4116 val* var95 /* : String */;
4117 char* var96 /* : NativeString */;
4118 long var97 /* : Int */;
4119 val* var98 /* : FlatString */;
4120 val* var99 /* : String */;
4121 static val* varonce100;
4122 val* var101 /* : String */;
4123 char* var102 /* : NativeString */;
4124 long var103 /* : Int */;
4125 val* var104 /* : FlatString */;
4126 val* var105 /* : Location */;
4127 val* var107 /* : Location */;
4128 val* var108 /* : Array[Object] */;
4129 long var109 /* : Int */;
4130 val* var110 /* : NativeArray[Object] */;
4131 val* var111 /* : String */;
4132 val* var113 /* : MModule */;
4133 val* var114 /* : Model */;
4134 val* var116 /* : Model */;
4135 val* var117 /* : Location */;
4136 val* var119 /* : Location */;
4137 val* var_mmodule /* var mmodule: MModule */;
4138 val* var121 /* : Array[AModule] */;
4139 val* var123 /* : Array[AModule] */;
4140 val* var124 /* : HashMap[MModule, AModule] */;
4141 val* var126 /* : HashMap[MModule, AModule] */;
4142 val* var127 /* : Location */;
4143 val* var129 /* : Location */;
4144 val* var130 /* : nullable SourceFile */;
4145 val* var132 /* : nullable SourceFile */;
4146 val* var_source /* var source: nullable SourceFile */;
4147 val* var133 /* : null */;
4148 short int var134 /* : Bool */;
4149 short int var135 /* : Bool */;
4150 short int var137 /* : Bool */;
4151 short int var138 /* : Bool */;
4152 val* var139 /* : nullable MModule */;
4153 val* var141 /* : nullable MModule */;
4154 val* var142 /* : null */;
4155 short int var143 /* : Bool */;
4156 short int var144 /* : Bool */;
4157 short int var146 /* : Bool */;
4158 short int var148 /* : Bool */;
4159 val* var150 /* : null */;
4160 short int var151 /* : Bool */;
4161 short int var152 /* : Bool */;
4162 short int var154 /* : Bool */;
4163 short int var155 /* : Bool */;
4164 val* var156 /* : nullable ADoc */;
4165 val* var158 /* : nullable ADoc */;
4166 val* var_ndoc /* var ndoc: nullable ADoc */;
4167 val* var159 /* : null */;
4168 short int var160 /* : Bool */;
4169 short int var161 /* : Bool */;
4170 short int var163 /* : Bool */;
4171 short int var164 /* : Bool */;
4172 val* var165 /* : MDoc */;
4173 val* var_mdoc /* var mdoc: MDoc */;
4174 static val* varonce168;
4175 val* var169 /* : String */;
4176 char* var170 /* : NativeString */;
4177 long var171 /* : Int */;
4178 val* var172 /* : FlatString */;
4179 static val* varonce173;
4180 val* var174 /* : String */;
4181 char* var175 /* : NativeString */;
4182 long var176 /* : Int */;
4183 val* var177 /* : FlatString */;
4184 static val* varonce178;
4185 val* var179 /* : String */;
4186 char* var180 /* : NativeString */;
4187 long var181 /* : Int */;
4188 val* var182 /* : FlatString */;
4189 val* var183 /* : Array[Object] */;
4190 long var184 /* : Int */;
4191 val* var185 /* : NativeArray[Object] */;
4192 val* var186 /* : String */;
4193 static val* varonce187;
4194 val* var188 /* : String */;
4195 char* var189 /* : NativeString */;
4196 long var190 /* : Int */;
4197 val* var191 /* : FlatString */;
4198 val* var192 /* : Array[AAnnotation] */;
4199 short int var193 /* : Bool */;
4200 short int var194 /* : Bool */;
4201 var_mgroup = p0;
4202 var_mod_name = p1;
4203 var_nmodule = p2;
4204 {
4205 { /* Inline parser_nodes#AModule#n_moduledecl (var_nmodule) on <var_nmodule:AModule> */
4206 var3 = var_nmodule->attrs[COLOR_nit__parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <var_nmodule:AModule> */
4207 var1 = var3;
4208 RET_LABEL2:(void)0;
4209 }
4210 }
4211 var_decl = var1;
4212 var4 = NULL;
4213 if (var_decl == NULL) {
4214 var5 = 0; /* is null */
4215 } else {
4216 var5 = 1; /* arg is null and recv is not */
4217 }
4218 if (0) {
4219 { /* Inline kernel#Object#!= (var_decl,var4) on <var_decl:nullable AModuledecl> */
4220 var_other = var4;
4221 {
4222 var8 = ((short int (*)(val* self, val* p0))(var_decl->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_decl, var_other) /* == on <var_decl:nullable AModuledecl(AModuledecl)>*/;
4223 }
4224 var9 = !var8;
4225 var6 = var9;
4226 goto RET_LABEL7;
4227 RET_LABEL7:(void)0;
4228 }
4229 var5 = var6;
4230 }
4231 if (var5){
4232 {
4233 { /* Inline parser_nodes#AModuledecl#n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
4234 var12 = var_decl->attrs[COLOR_nit__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
4235 if (unlikely(var12 == NULL)) {
4236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
4237 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 943);
4238 show_backtrace(1);
4239 }
4240 var10 = var12;
4241 RET_LABEL11:(void)0;
4242 }
4243 }
4244 {
4245 { /* Inline parser_nodes#AModuleName#n_id (var10) on <var10:AModuleName> */
4246 var15 = var10->attrs[COLOR_nit__parser_nodes__AModuleName___n_id].val; /* _n_id on <var10:AModuleName> */
4247 if (unlikely(var15 == NULL)) {
4248 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
4249 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2470);
4250 show_backtrace(1);
4251 }
4252 var13 = var15;
4253 RET_LABEL14:(void)0;
4254 }
4255 }
4256 {
4257 var16 = nit__lexer_work___Token___text(var13);
4258 }
4259 var_decl_name = var16;
4260 {
4261 { /* Inline kernel#Object#!= (var_decl_name,var_mod_name) on <var_decl_name:String> */
4262 var_other = var_mod_name;
4263 {
4264 var19 = ((short int (*)(val* self, val* p0))(var_decl_name->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_decl_name, var_other) /* == on <var_decl_name:String>*/;
4265 }
4266 var20 = !var19;
4267 var17 = var20;
4268 goto RET_LABEL18;
4269 RET_LABEL18:(void)0;
4270 }
4271 }
4272 if (var17){
4273 {
4274 { /* Inline parser_nodes#AModuledecl#n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
4275 var23 = var_decl->attrs[COLOR_nit__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
4276 if (unlikely(var23 == NULL)) {
4277 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
4278 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 943);
4279 show_backtrace(1);
4280 }
4281 var21 = var23;
4282 RET_LABEL22:(void)0;
4283 }
4284 }
4285 if (varonce) {
4286 var24 = varonce;
4287 } else {
4288 var25 = "Error: module name missmatch; declared ";
4289 var26 = 39;
4290 var27 = standard___standard__NativeString___to_s_with_length(var25, var26);
4291 var24 = var27;
4292 varonce = var24;
4293 }
4294 if (varonce28) {
4295 var29 = varonce28;
4296 } else {
4297 var30 = " file named ";
4298 var31 = 12;
4299 var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
4300 var29 = var32;
4301 varonce28 = var29;
4302 }
4303 var33 = NEW_standard__Array(&type_standard__Array__standard__Object);
4304 { /* var33 = array_instance Array[Object] */
4305 var34 = 4;
4306 var35 = NEW_standard__NativeArray(var34, &type_standard__NativeArray__standard__Object);
4307 ((struct instance_standard__NativeArray*)var35)->values[0] = (val*) var24;
4308 ((struct instance_standard__NativeArray*)var35)->values[1] = (val*) var_decl_name;
4309 ((struct instance_standard__NativeArray*)var35)->values[2] = (val*) var29;
4310 ((struct instance_standard__NativeArray*)var35)->values[3] = (val*) var_mod_name;
4311 {
4312 ((void (*)(val* self, val* p0, long p1))(var33->class->vft[COLOR_standard__array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
4313 }
4314 }
4315 {
4316 var36 = ((val* (*)(val* self))(var33->class->vft[COLOR_standard__string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
4317 }
4318 {
4319 nit___nit__ModelBuilder___error(self, var21, var36); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
4320 }
4321 } else {
4322 }
4323 } else {
4324 }
4325 var37 = NULL;
4326 if (var_mgroup == NULL) {
4327 var38 = 0; /* is null */
4328 } else {
4329 var38 = 1; /* arg is null and recv is not */
4330 }
4331 if (0) {
4332 { /* Inline kernel#Object#!= (var_mgroup,var37) on <var_mgroup:nullable MGroup> */
4333 var_other = var37;
4334 {
4335 var41 = ((short int (*)(val* self, val* p0))(var_mgroup->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on <var_mgroup:nullable MGroup(MGroup)>*/;
4336 }
4337 var42 = !var41;
4338 var39 = var42;
4339 goto RET_LABEL40;
4340 RET_LABEL40:(void)0;
4341 }
4342 var38 = var39;
4343 }
4344 if (var38){
4345 {
4346 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
4347 var45 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
4348 if (unlikely(var45 == NULL)) {
4349 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
4350 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
4351 show_backtrace(1);
4352 }
4353 var43 = var45;
4354 RET_LABEL44:(void)0;
4355 }
4356 }
4357 {
4358 var46 = nit__mmodule___Model___get_mmodules_by_name(var43, var_mod_name);
4359 }
4360 var_others = var46;
4361 var47 = NULL;
4362 if (var_others == NULL) {
4363 var48 = 0; /* is null */
4364 } else {
4365 var48 = 1; /* arg is null and recv is not */
4366 }
4367 if (0) {
4368 { /* Inline kernel#Object#!= (var_others,var47) on <var_others:nullable Array[MModule]> */
4369 var_other = var47;
4370 {
4371 var51 = ((short int (*)(val* self, val* p0))(var_others->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_others, var_other) /* == on <var_others:nullable Array[MModule](Array[MModule])>*/;
4372 }
4373 var52 = !var51;
4374 var49 = var52;
4375 goto RET_LABEL50;
4376 RET_LABEL50:(void)0;
4377 }
4378 var48 = var49;
4379 }
4380 if (var48){
4381 var_ = var_others;
4382 {
4383 var53 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
4384 }
4385 var_54 = var53;
4386 for(;;) {
4387 {
4388 var55 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_54);
4389 }
4390 if (var55){
4391 {
4392 var56 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_54);
4393 }
4394 var_other57 = var56;
4395 {
4396 { /* Inline mmodule#MModule#mgroup (var_other57) on <var_other57:MModule> */
4397 var61 = var_other57->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var_other57:MModule> */
4398 var59 = var61;
4399 RET_LABEL60:(void)0;
4400 }
4401 }
4402 var62 = NULL;
4403 if (var59 == NULL) {
4404 var63 = 0; /* is null */
4405 } else {
4406 var63 = 1; /* arg is null and recv is not */
4407 }
4408 if (0) {
4409 { /* Inline kernel#Object#!= (var59,var62) on <var59:nullable MGroup> */
4410 var_other = var62;
4411 {
4412 var66 = ((short int (*)(val* self, val* p0))(var59->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var59, var_other) /* == on <var59:nullable MGroup(MGroup)>*/;
4413 }
4414 var67 = !var66;
4415 var64 = var67;
4416 goto RET_LABEL65;
4417 RET_LABEL65:(void)0;
4418 }
4419 var63 = var64;
4420 }
4421 var_68 = var63;
4422 if (var63){
4423 {
4424 { /* Inline mmodule#MModule#mgroup (var_other57) on <var_other57:MModule> */
4425 var71 = var_other57->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var_other57:MModule> */
4426 var69 = var71;
4427 RET_LABEL70:(void)0;
4428 }
4429 }
4430 if (var69 == NULL) {
4431 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4432 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 528);
4433 show_backtrace(1);
4434 } else {
4435 { /* Inline mproject#MGroup#mproject (var69) on <var69:nullable MGroup> */
4436 if (unlikely(var69 == NULL)) {
4437 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4438 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
4439 show_backtrace(1);
4440 }
4441 var74 = var69->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var69:nullable MGroup> */
4442 if (unlikely(var74 == NULL)) {
4443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
4444 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
4445 show_backtrace(1);
4446 }
4447 var72 = var74;
4448 RET_LABEL73:(void)0;
4449 }
4450 }
4451 {
4452 { /* Inline mproject#MGroup#mproject (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
4453 var77 = var_mgroup->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var_mgroup:nullable MGroup(MGroup)> */
4454 if (unlikely(var77 == NULL)) {
4455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
4456 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
4457 show_backtrace(1);
4458 }
4459 var75 = var77;
4460 RET_LABEL76:(void)0;
4461 }
4462 }
4463 {
4464 { /* Inline kernel#Object#== (var72,var75) on <var72:MProject> */
4465 var_other80 = var75;
4466 {
4467 { /* Inline kernel#Object#is_same_instance (var72,var_other80) on <var72:MProject> */
4468 var83 = var72 == var_other80;
4469 var81 = var83;
4470 goto RET_LABEL82;
4471 RET_LABEL82:(void)0;
4472 }
4473 }
4474 var78 = var81;
4475 goto RET_LABEL79;
4476 RET_LABEL79:(void)0;
4477 }
4478 }
4479 var58 = var78;
4480 } else {
4481 var58 = var_68;
4482 }
4483 if (var58){
4484 var84 = NULL;
4485 if (var_decl == NULL) {
4486 var85 = 1; /* is null */
4487 } else {
4488 var85 = 0; /* arg is null but recv is not */
4489 }
4490 if (0) {
4491 { /* Inline kernel#Object#== (var_decl,var84) on <var_decl:nullable AModuledecl> */
4492 var_other80 = var84;
4493 {
4494 { /* Inline kernel#Object#is_same_instance (var_decl,var_other80) on <var_decl:nullable AModuledecl(AModuledecl)> */
4495 var90 = var_decl == var_other80;
4496 var88 = var90;
4497 goto RET_LABEL89;
4498 RET_LABEL89:(void)0;
4499 }
4500 }
4501 var86 = var88;
4502 goto RET_LABEL87;
4503 RET_LABEL87:(void)0;
4504 }
4505 var85 = var86;
4506 }
4507 if (var85){
4508 var_node = var_nmodule;
4509 } else {
4510 {
4511 { /* Inline parser_nodes#AModuledecl#n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
4512 var93 = var_decl->attrs[COLOR_nit__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
4513 if (unlikely(var93 == NULL)) {
4514 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
4515 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 943);
4516 show_backtrace(1);
4517 }
4518 var91 = var93;
4519 RET_LABEL92:(void)0;
4520 }
4521 }
4522 var_node = var91;
4523 }
4524 if (varonce94) {
4525 var95 = varonce94;
4526 } else {
4527 var96 = "Error: A module named `";
4528 var97 = 23;
4529 var98 = standard___standard__NativeString___to_s_with_length(var96, var97);
4530 var95 = var98;
4531 varonce94 = var95;
4532 }
4533 {
4534 var99 = nit___nit__MModule___nit__model_base__MEntity__full_name(var_other57);
4535 }
4536 if (varonce100) {
4537 var101 = varonce100;
4538 } else {
4539 var102 = "` already exists at ";
4540 var103 = 20;
4541 var104 = standard___standard__NativeString___to_s_with_length(var102, var103);
4542 var101 = var104;
4543 varonce100 = var101;
4544 }
4545 {
4546 { /* Inline mmodule#MModule#location (var_other57) on <var_other57:MModule> */
4547 var107 = var_other57->attrs[COLOR_nit__mmodule__MModule___location].val; /* _location on <var_other57:MModule> */
4548 if (unlikely(var107 == NULL)) {
4549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
4550 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 90);
4551 show_backtrace(1);
4552 }
4553 var105 = var107;
4554 RET_LABEL106:(void)0;
4555 }
4556 }
4557 var108 = NEW_standard__Array(&type_standard__Array__standard__Object);
4558 { /* var108 = array_instance Array[Object] */
4559 var109 = 4;
4560 var110 = NEW_standard__NativeArray(var109, &type_standard__NativeArray__standard__Object);
4561 ((struct instance_standard__NativeArray*)var110)->values[0] = (val*) var95;
4562 ((struct instance_standard__NativeArray*)var110)->values[1] = (val*) var99;
4563 ((struct instance_standard__NativeArray*)var110)->values[2] = (val*) var101;
4564 ((struct instance_standard__NativeArray*)var110)->values[3] = (val*) var105;
4565 {
4566 ((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]>*/;
4567 }
4568 }
4569 {
4570 var111 = ((val* (*)(val* self))(var108->class->vft[COLOR_standard__string__Object__to_s]))(var108) /* to_s on <var108:Array[Object]>*/;
4571 }
4572 {
4573 nit___nit__ModelBuilder___error(self, var_node, var111); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
4574 }
4575 goto BREAK_label;
4576 } else {
4577 }
4578 {
4579 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_54); /* Direct call array#ArrayIterator#next on <var_54:ArrayIterator[MModule]>*/
4580 }
4581 } else {
4582 goto BREAK_label;
4583 }
4584 }
4585 BREAK_label: (void)0;
4586 {
4587 { /* Inline abstract_collection#Iterator#finish (var_54) on <var_54:ArrayIterator[MModule]> */
4588 RET_LABEL112:(void)0;
4589 }
4590 }
4591 } else {
4592 }
4593 } else {
4594 }
4595 var113 = NEW_nit__MModule(&type_nit__MModule);
4596 {
4597 { /* Inline modelbuilder_base#ModelBuilder#model (self) on <self:ModelBuilder> */
4598 var116 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
4599 if (unlikely(var116 == NULL)) {
4600 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
4601 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
4602 show_backtrace(1);
4603 }
4604 var114 = var116;
4605 RET_LABEL115:(void)0;
4606 }
4607 }
4608 {
4609 { /* Inline parser_nodes#ANode#location (var_nmodule) on <var_nmodule:AModule> */
4610 var119 = var_nmodule->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nmodule:AModule> */
4611 if (unlikely(var119 == NULL)) {
4612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
4613 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
4614 show_backtrace(1);
4615 }
4616 var117 = var119;
4617 RET_LABEL118:(void)0;
4618 }
4619 }
4620 {
4621 ((void (*)(val* self, val* p0))(var113->class->vft[COLOR_nit__mmodule__MModule__model_61d]))(var113, var114) /* model= on <var113:MModule>*/;
4622 }
4623 {
4624 ((void (*)(val* self, val* p0))(var113->class->vft[COLOR_nit__mmodule__MModule__mgroup_61d]))(var113, var_mgroup) /* mgroup= on <var113:MModule>*/;
4625 }
4626 {
4627 ((void (*)(val* self, val* p0))(var113->class->vft[COLOR_nit__mmodule__MModule__name_61d]))(var113, var_mod_name) /* name= on <var113:MModule>*/;
4628 }
4629 {
4630 ((void (*)(val* self, val* p0))(var113->class->vft[COLOR_nit__mmodule__MModule__location_61d]))(var113, var117) /* location= on <var113:MModule>*/;
4631 }
4632 {
4633 ((void (*)(val* self))(var113->class->vft[COLOR_standard__kernel__Object__init]))(var113) /* init on <var113:MModule>*/;
4634 }
4635 var_mmodule = var113;
4636 {
4637 { /* Inline loader#AModule#mmodule= (var_nmodule,var_mmodule) on <var_nmodule:AModule> */
4638 var_nmodule->attrs[COLOR_nit__loader__AModule___mmodule].val = var_mmodule; /* _mmodule on <var_nmodule:AModule> */
4639 RET_LABEL120:(void)0;
4640 }
4641 }
4642 {
4643 { /* Inline loader#ModelBuilder#nmodules (self) on <self:ModelBuilder> */
4644 var123 = self->attrs[COLOR_nit__loader__ModelBuilder___nmodules].val; /* _nmodules on <self:ModelBuilder> */
4645 if (unlikely(var123 == NULL)) {
4646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules");
4647 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 638);
4648 show_backtrace(1);
4649 }
4650 var121 = var123;
4651 RET_LABEL122:(void)0;
4652 }
4653 }
4654 {
4655 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var121, var_nmodule); /* Direct call array#Array#add on <var121:Array[AModule]>*/
4656 }
4657 {
4658 { /* Inline loader#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
4659 var126 = self->attrs[COLOR_nit__loader__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
4660 if (unlikely(var126 == NULL)) {
4661 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
4662 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 641);
4663 show_backtrace(1);
4664 }
4665 var124 = var126;
4666 RET_LABEL125:(void)0;
4667 }
4668 }
4669 {
4670 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var124, var_mmodule, var_nmodule); /* Direct call hash_collection#HashMap#[]= on <var124:HashMap[MModule, AModule]>*/
4671 }
4672 {
4673 { /* Inline parser_nodes#ANode#location (var_nmodule) on <var_nmodule:AModule> */
4674 var129 = var_nmodule->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nmodule:AModule> */
4675 if (unlikely(var129 == NULL)) {
4676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
4677 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
4678 show_backtrace(1);
4679 }
4680 var127 = var129;
4681 RET_LABEL128:(void)0;
4682 }
4683 }
4684 {
4685 { /* Inline location#Location#file (var127) on <var127:Location> */
4686 var132 = var127->attrs[COLOR_nit__location__Location___file].val; /* _file on <var127:Location> */
4687 var130 = var132;
4688 RET_LABEL131:(void)0;
4689 }
4690 }
4691 var_source = var130;
4692 var133 = NULL;
4693 if (var_source == NULL) {
4694 var134 = 0; /* is null */
4695 } else {
4696 var134 = 1; /* arg is null and recv is not */
4697 }
4698 if (0) {
4699 { /* Inline kernel#Object#!= (var_source,var133) on <var_source:nullable SourceFile> */
4700 var_other = var133;
4701 {
4702 var137 = ((short int (*)(val* self, val* p0))(var_source->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_source, var_other) /* == on <var_source:nullable SourceFile(SourceFile)>*/;
4703 }
4704 var138 = !var137;
4705 var135 = var138;
4706 goto RET_LABEL136;
4707 RET_LABEL136:(void)0;
4708 }
4709 var134 = var135;
4710 }
4711 if (var134){
4712 {
4713 { /* Inline loader#SourceFile#mmodule (var_source) on <var_source:nullable SourceFile(SourceFile)> */
4714 var141 = var_source->attrs[COLOR_nit__loader__SourceFile___mmodule].val; /* _mmodule on <var_source:nullable SourceFile(SourceFile)> */
4715 var139 = var141;
4716 RET_LABEL140:(void)0;
4717 }
4718 }
4719 var142 = NULL;
4720 if (var139 == NULL) {
4721 var143 = 1; /* is null */
4722 } else {
4723 var143 = 0; /* arg is null but recv is not */
4724 }
4725 if (0) {
4726 { /* Inline kernel#Object#== (var139,var142) on <var139:nullable MModule> */
4727 var_other80 = var142;
4728 {
4729 { /* Inline kernel#Object#is_same_instance (var139,var_other80) on <var139:nullable MModule(MModule)> */
4730 var148 = var139 == var_other80;
4731 var146 = var148;
4732 goto RET_LABEL147;
4733 RET_LABEL147:(void)0;
4734 }
4735 }
4736 var144 = var146;
4737 goto RET_LABEL145;
4738 RET_LABEL145:(void)0;
4739 }
4740 var143 = var144;
4741 }
4742 if (unlikely(!var143)) {
4743 PRINT_ERROR("Runtime error: %s", "Assert failed");
4744 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 545);
4745 show_backtrace(1);
4746 }
4747 {
4748 { /* Inline loader#SourceFile#mmodule= (var_source,var_mmodule) on <var_source:nullable SourceFile(SourceFile)> */
4749 var_source->attrs[COLOR_nit__loader__SourceFile___mmodule].val = var_mmodule; /* _mmodule on <var_source:nullable SourceFile(SourceFile)> */
4750 RET_LABEL149:(void)0;
4751 }
4752 }
4753 } else {
4754 }
4755 var150 = NULL;
4756 if (var_decl == NULL) {
4757 var151 = 0; /* is null */
4758 } else {
4759 var151 = 1; /* arg is null and recv is not */
4760 }
4761 if (0) {
4762 { /* Inline kernel#Object#!= (var_decl,var150) on <var_decl:nullable AModuledecl> */
4763 var_other = var150;
4764 {
4765 var154 = ((short int (*)(val* self, val* p0))(var_decl->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_decl, var_other) /* == on <var_decl:nullable AModuledecl(AModuledecl)>*/;
4766 }
4767 var155 = !var154;
4768 var152 = var155;
4769 goto RET_LABEL153;
4770 RET_LABEL153:(void)0;
4771 }
4772 var151 = var152;
4773 }
4774 if (var151){
4775 {
4776 { /* Inline parser_nodes#ADefinition#n_doc (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
4777 var158 = var_decl->attrs[COLOR_nit__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <var_decl:nullable AModuledecl(AModuledecl)> */
4778 var156 = var158;
4779 RET_LABEL157:(void)0;
4780 }
4781 }
4782 var_ndoc = var156;
4783 var159 = NULL;
4784 if (var_ndoc == NULL) {
4785 var160 = 0; /* is null */
4786 } else {
4787 var160 = 1; /* arg is null and recv is not */
4788 }
4789 if (0) {
4790 { /* Inline kernel#Object#!= (var_ndoc,var159) on <var_ndoc:nullable ADoc> */
4791 var_other = var159;
4792 {
4793 var163 = ((short int (*)(val* self, val* p0))(var_ndoc->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
4794 }
4795 var164 = !var163;
4796 var161 = var164;
4797 goto RET_LABEL162;
4798 RET_LABEL162:(void)0;
4799 }
4800 var160 = var161;
4801 }
4802 if (var160){
4803 {
4804 var165 = nit__modelbuilder_base___ADoc___to_mdoc(var_ndoc);
4805 }
4806 var_mdoc = var165;
4807 {
4808 { /* Inline mdoc#MEntity#mdoc= (var_mmodule,var_mdoc) on <var_mmodule:MModule> */
4809 var_mmodule->attrs[COLOR_nit__mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mmodule:MModule> */
4810 RET_LABEL166:(void)0;
4811 }
4812 }
4813 {
4814 { /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mmodule) on <var_mdoc:MDoc> */
4815 var_mdoc->attrs[COLOR_nit__mdoc__MDoc___original_mentity].val = var_mmodule; /* _original_mentity on <var_mdoc:MDoc> */
4816 RET_LABEL167:(void)0;
4817 }
4818 }
4819 } else {
4820 if (varonce168) {
4821 var169 = varonce168;
4822 } else {
4823 var170 = "missing-doc";
4824 var171 = 11;
4825 var172 = standard___standard__NativeString___to_s_with_length(var170, var171);
4826 var169 = var172;
4827 varonce168 = var169;
4828 }
4829 if (varonce173) {
4830 var174 = varonce173;
4831 } else {
4832 var175 = "Documentation warning: Undocumented module `";
4833 var176 = 44;
4834 var177 = standard___standard__NativeString___to_s_with_length(var175, var176);
4835 var174 = var177;
4836 varonce173 = var174;
4837 }
4838 if (varonce178) {
4839 var179 = varonce178;
4840 } else {
4841 var180 = "`";
4842 var181 = 1;
4843 var182 = standard___standard__NativeString___to_s_with_length(var180, var181);
4844 var179 = var182;
4845 varonce178 = var179;
4846 }
4847 var183 = NEW_standard__Array(&type_standard__Array__standard__Object);
4848 { /* var183 = array_instance Array[Object] */
4849 var184 = 3;
4850 var185 = NEW_standard__NativeArray(var184, &type_standard__NativeArray__standard__Object);
4851 ((struct instance_standard__NativeArray*)var185)->values[0] = (val*) var174;
4852 ((struct instance_standard__NativeArray*)var185)->values[1] = (val*) var_mmodule;
4853 ((struct instance_standard__NativeArray*)var185)->values[2] = (val*) var179;
4854 {
4855 ((void (*)(val* self, val* p0, long p1))(var183->class->vft[COLOR_standard__array__Array__with_native]))(var183, var185, var184) /* with_native on <var183:Array[Object]>*/;
4856 }
4857 }
4858 {
4859 var186 = ((val* (*)(val* self))(var183->class->vft[COLOR_standard__string__Object__to_s]))(var183) /* to_s on <var183:Array[Object]>*/;
4860 }
4861 {
4862 nit___nit__ModelBuilder___advice(self, var_decl, var169, var186); /* Direct call modelbuilder_base#ModelBuilder#advice on <self:ModelBuilder>*/
4863 }
4864 }
4865 if (varonce187) {
4866 var188 = varonce187;
4867 } else {
4868 var189 = "test_suite";
4869 var190 = 10;
4870 var191 = standard___standard__NativeString___to_s_with_length(var189, var190);
4871 var188 = var191;
4872 varonce187 = var188;
4873 }
4874 {
4875 var192 = nit___nit__Prod___get_annotations(var_decl, var188);
4876 }
4877 {
4878 var193 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var192);
4879 }
4880 var194 = !var193;
4881 {
4882 { /* Inline mmodule#MModule#is_test_suite= (var_mmodule,var194) on <var_mmodule:MModule> */
4883 var_mmodule->attrs[COLOR_nit__mmodule__MModule___is_test_suite].s = var194; /* _is_test_suite on <var_mmodule:MModule> */
4884 RET_LABEL195:(void)0;
4885 }
4886 }
4887 } else {
4888 }
4889 var = var_mmodule;
4890 goto RET_LABEL;
4891 RET_LABEL:;
4892 return var;
4893 }
4894 /* method loader#ModelBuilder#build_module_importation for (self: ModelBuilder, AModule) */
4895 void nit__loader___ModelBuilder___build_module_importation(val* self, val* p0) {
4896 val* var_nmodule /* var nmodule: AModule */;
4897 short int var /* : Bool */;
4898 short int var2 /* : Bool */;
4899 short int var3 /* : Bool */;
4900 val* var5 /* : nullable MModule */;
4901 val* var7 /* : nullable MModule */;
4902 val* var_mmodule /* var mmodule: MModule */;
4903 short int var8 /* : Bool */;
4904 short int var_stdimport /* var stdimport: Bool */;
4905 val* var9 /* : Array[MModule] */;
4906 val* var_imported_modules /* var imported_modules: Array[MModule] */;
4907 val* var10 /* : ANodes[AImport] */;
4908 val* var12 /* : ANodes[AImport] */;
4909 val* var_ /* var : ANodes[AImport] */;
4910 val* var13 /* : Iterator[ANode] */;
4911 val* var_14 /* var : Iterator[AImport] */;
4912 short int var15 /* : Bool */;
4913 val* var16 /* : nullable Object */;
4914 val* var_aimport /* var aimport: AImport */;
4915 short int var17 /* : Bool */;
4916 short int var18 /* : Bool */;
4917 int cltype;
4918 int idtype;
4919 short int var19 /* : Bool */;
4920 val* var20 /* : nullable MGroup */;
4921 val* var22 /* : nullable MGroup */;
4922 val* var_mgroup /* var mgroup: nullable MGroup */;
4923 val* var23 /* : AModuleName */;
4924 val* var25 /* : AModuleName */;
4925 val* var26 /* : nullable TQuad */;
4926 val* var28 /* : nullable TQuad */;
4927 val* var29 /* : null */;
4928 short int var30 /* : Bool */;
4929 short int var31 /* : Bool */;
4930 val* var_other /* var other: nullable Object */;
4931 short int var33 /* : Bool */;
4932 short int var34 /* : Bool */;
4933 val* var35 /* : null */;
4934 val* var36 /* : AModuleName */;
4935 val* var38 /* : AModuleName */;
4936 val* var39 /* : ANodes[TId] */;
4937 val* var41 /* : ANodes[TId] */;
4938 val* var_42 /* var : ANodes[TId] */;
4939 val* var43 /* : Iterator[ANode] */;
4940 val* var_44 /* var : Iterator[TId] */;
4941 short int var45 /* : Bool */;
4942 val* var46 /* : nullable Object */;
4943 val* var_grp /* var grp: TId */;
4944 val* var47 /* : String */;
4945 val* var48 /* : nullable ModulePath */;
4946 val* var_path /* var path: nullable ModulePath */;
4947 val* var49 /* : null */;
4948 short int var50 /* : Bool */;
4949 short int var51 /* : Bool */;
4950 val* var_other53 /* var other: nullable Object */;
4951 short int var54 /* : Bool */;
4952 short int var56 /* : Bool */;
4953 val* var57 /* : MGroup */;
4954 val* var59 /* : MGroup */;
4955 val* var62 /* : AModuleName */;
4956 val* var64 /* : AModuleName */;
4957 val* var65 /* : TId */;
4958 val* var67 /* : TId */;
4959 val* var68 /* : String */;
4960 val* var_mod_name /* var mod_name: String */;
4961 val* var69 /* : AModuleName */;
4962 val* var71 /* : AModuleName */;
4963 val* var72 /* : nullable MModule */;
4964 val* var_sup /* var sup: nullable MModule */;
4965 val* var73 /* : null */;
4966 short int var74 /* : Bool */;
4967 short int var75 /* : Bool */;
4968 short int var77 /* : Bool */;
4969 short int var79 /* : Bool */;
4970 val* var81 /* : AVisibility */;
4971 val* var83 /* : AVisibility */;
4972 val* var84 /* : MVisibility */;
4973 val* var_mvisibility /* var mvisibility: MVisibility */;
4974 val* var85 /* : MVisibility */;
4975 short int var86 /* : Bool */;
4976 short int var88 /* : Bool */;
4977 short int var90 /* : Bool */;
4978 val* var91 /* : AVisibility */;
4979 val* var93 /* : AVisibility */;
4980 static val* varonce;
4981 val* var94 /* : String */;
4982 char* var95 /* : NativeString */;
4983 long var96 /* : Int */;
4984 val* var97 /* : FlatString */;
4985 short int var98 /* : Bool */;
4986 short int var100 /* : Bool */;
4987 short int var102 /* : Bool */;
4988 val* var103 /* : AModuleName */;
4989 val* var105 /* : AModuleName */;
4990 static val* varonce106;
4991 val* var107 /* : String */;
4992 char* var108 /* : NativeString */;
4993 long var109 /* : Int */;
4994 val* var110 /* : FlatString */;
4995 static val* varonce111;
4996 val* var112 /* : String */;
4997 char* var113 /* : NativeString */;
4998 long var114 /* : Int */;
4999 val* var115 /* : FlatString */;
5000 val* var116 /* : Array[Object] */;
5001 long var117 /* : Int */;
5002 val* var118 /* : NativeArray[Object] */;
5003 val* var119 /* : String */;
5004 val* var120 /* : POSetElement[MModule] */;
5005 val* var122 /* : POSetElement[MModule] */;
5006 short int var123 /* : Bool */;
5007 val* var124 /* : AModuleName */;
5008 val* var126 /* : AModuleName */;
5009 static val* varonce127;
5010 val* var128 /* : String */;
5011 char* var129 /* : NativeString */;
5012 long var130 /* : Int */;
5013 val* var131 /* : FlatString */;
5014 static val* varonce132;
5015 val* var133 /* : String */;
5016 char* var134 /* : NativeString */;
5017 long var135 /* : Int */;
5018 val* var136 /* : FlatString */;
5019 static val* varonce137;
5020 val* var138 /* : String */;
5021 char* var139 /* : NativeString */;
5022 long var140 /* : Int */;
5023 val* var141 /* : FlatString */;
5024 val* var142 /* : Array[Object] */;
5025 long var143 /* : Int */;
5026 val* var144 /* : NativeArray[Object] */;
5027 val* var145 /* : String */;
5028 static val* varonce148;
5029 val* var149 /* : String */;
5030 char* var150 /* : NativeString */;
5031 long var151 /* : Int */;
5032 val* var152 /* : FlatString */;
5033 val* var_mod_name153 /* var mod_name: String */;
5034 val* var154 /* : null */;
5035 val* var155 /* : nullable MModule */;
5036 val* var_sup156 /* var sup: nullable MModule */;
5037 val* var157 /* : null */;
5038 short int var158 /* : Bool */;
5039 short int var159 /* : Bool */;
5040 short int var161 /* : Bool */;
5041 short int var162 /* : Bool */;
5042 val* var163 /* : MVisibility */;
5043 val* var164 /* : ToolContext */;
5044 val* var166 /* : ToolContext */;
5045 static val* varonce167;
5046 val* var168 /* : String */;
5047 char* var169 /* : NativeString */;
5048 long var170 /* : Int */;
5049 val* var171 /* : FlatString */;
5050 static val* varonce172;
5051 val* var173 /* : String */;
5052 char* var174 /* : NativeString */;
5053 long var175 /* : Int */;
5054 val* var176 /* : FlatString */;
5055 val* var177 /* : String */;
5056 val* var178 /* : Array[Object] */;
5057 long var179 /* : Int */;
5058 val* var180 /* : NativeArray[Object] */;
5059 val* var181 /* : String */;
5060 long var182 /* : Int */;
5061 val* var183 /* : POSetElement[MModule] */;
5062 val* var185 /* : POSetElement[MModule] */;
5063 val* var186 /* : Collection[nullable Object] */;
5064 val* var_187 /* var : Collection[MModule] */;
5065 val* var188 /* : Iterator[nullable Object] */;
5066 val* var_189 /* var : Iterator[MModule] */;
5067 short int var190 /* : Bool */;
5068 val* var191 /* : nullable Object */;
5069 val* var_sup192 /* var sup: MModule */;
5070 val* var193 /* : String */;
5071 val* var195 /* : String */;
5072 static val* varonce196;
5073 val* var197 /* : String */;
5074 char* var198 /* : NativeString */;
5075 long var199 /* : Int */;
5076 val* var200 /* : FlatString */;
5077 short int var201 /* : Bool */;
5078 val* var202 /* : MVisibility */;
5079 val* var205 /* : POSetElement[MModule] */;
5080 val* var207 /* : POSetElement[MModule] */;
5081 val* var208 /* : Collection[nullable Object] */;
5082 val* var_directs /* var directs: Collection[MModule] */;
5083 val* var209 /* : ANodes[AImport] */;
5084 val* var211 /* : ANodes[AImport] */;
5085 val* var_212 /* var : ANodes[AImport] */;
5086 val* var213 /* : Iterator[ANode] */;
5087 val* var_214 /* var : Iterator[AImport] */;
5088 short int var215 /* : Bool */;
5089 val* var216 /* : nullable Object */;
5090 val* var_nim /* var nim: AImport */;
5091 short int var217 /* : Bool */;
5092 int cltype218;
5093 int idtype219;
5094 short int var220 /* : Bool */;
5095 val* var222 /* : nullable MModule */;
5096 val* var224 /* : nullable MModule */;
5097 val* var_im /* var im: nullable MModule */;
5098 val* var225 /* : null */;
5099 short int var226 /* : Bool */;
5100 short int var227 /* : Bool */;
5101 short int var229 /* : Bool */;
5102 short int var231 /* : Bool */;
5103 short int var232 /* : Bool */;
5104 var_nmodule = p0;
5105 {
5106 { /* Inline loader#AModule#is_importation_done (var_nmodule) on <var_nmodule:AModule> */
5107 var2 = var_nmodule->attrs[COLOR_nit__loader__AModule___is_importation_done].s; /* _is_importation_done on <var_nmodule:AModule> */
5108 var = var2;
5109 RET_LABEL1:(void)0;
5110 }
5111 }
5112 if (var){
5113 goto RET_LABEL;
5114 } else {
5115 }
5116 var3 = 1;
5117 {
5118 { /* Inline loader#AModule#is_importation_done= (var_nmodule,var3) on <var_nmodule:AModule> */
5119 var_nmodule->attrs[COLOR_nit__loader__AModule___is_importation_done].s = var3; /* _is_importation_done on <var_nmodule:AModule> */
5120 RET_LABEL4:(void)0;
5121 }
5122 }
5123 {
5124 { /* Inline loader#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
5125 var7 = var_nmodule->attrs[COLOR_nit__loader__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
5126 var5 = var7;
5127 RET_LABEL6:(void)0;
5128 }
5129 }
5130 if (unlikely(var5 == NULL)) {
5131 PRINT_ERROR("Runtime error: %s", "Cast failed");
5132 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 573);
5133 show_backtrace(1);
5134 }
5135 var_mmodule = var5;
5136 var8 = 1;
5137 var_stdimport = var8;
5138 var9 = NEW_standard__Array(&type_standard__Array__nit__MModule);
5139 {
5140 standard___standard__Array___standard__kernel__Object__init(var9); /* Direct call array#Array#init on <var9:Array[MModule]>*/
5141 }
5142 var_imported_modules = var9;
5143 {
5144 { /* Inline parser_nodes#AModule#n_imports (var_nmodule) on <var_nmodule:AModule> */
5145 var12 = var_nmodule->attrs[COLOR_nit__parser_nodes__AModule___n_imports].val; /* _n_imports on <var_nmodule:AModule> */
5146 if (unlikely(var12 == NULL)) {
5147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
5148 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 913);
5149 show_backtrace(1);
5150 }
5151 var10 = var12;
5152 RET_LABEL11:(void)0;
5153 }
5154 }
5155 var_ = var10;
5156 {
5157 var13 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
5158 }
5159 var_14 = var13;
5160 for(;;) {
5161 {
5162 var15 = ((short int (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:Iterator[AImport]>*/;
5163 }
5164 if (var15){
5165 {
5166 var16 = ((val* (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14) /* item on <var_14:Iterator[AImport]>*/;
5167 }
5168 var_aimport = var16;
5169 var17 = 0;
5170 var_stdimport = var17;
5171 /* <var_aimport:AImport> isa AStdImport */
5172 cltype = type_nit__AStdImport.color;
5173 idtype = type_nit__AStdImport.id;
5174 if(cltype >= var_aimport->type->table_size) {
5175 var18 = 0;
5176 } else {
5177 var18 = var_aimport->type->type_table[cltype] == idtype;
5178 }
5179 var19 = !var18;
5180 if (var19){
5181 goto BREAK_label;
5182 } else {
5183 }
5184 {
5185 { /* Inline mmodule#MModule#mgroup (var_mmodule) on <var_mmodule:MModule> */
5186 var22 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var_mmodule:MModule> */
5187 var20 = var22;
5188 RET_LABEL21:(void)0;
5189 }
5190 }
5191 var_mgroup = var20;
5192 {
5193 { /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
5194 var25 = var_aimport->attrs[COLOR_nit__parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
5195 if (unlikely(var25 == NULL)) {
5196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
5197 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 961);
5198 show_backtrace(1);
5199 }
5200 var23 = var25;
5201 RET_LABEL24:(void)0;
5202 }
5203 }
5204 {
5205 { /* Inline parser_nodes#AModuleName#n_quad (var23) on <var23:AModuleName> */
5206 var28 = var23->attrs[COLOR_nit__parser_nodes__AModuleName___n_quad].val; /* _n_quad on <var23:AModuleName> */
5207 var26 = var28;
5208 RET_LABEL27:(void)0;
5209 }
5210 }
5211 var29 = NULL;
5212 if (var26 == NULL) {
5213 var30 = 0; /* is null */
5214 } else {
5215 var30 = 1; /* arg is null and recv is not */
5216 }
5217 if (0) {
5218 { /* Inline kernel#Object#!= (var26,var29) on <var26:nullable TQuad> */
5219 var_other = var29;
5220 {
5221 var33 = ((short int (*)(val* self, val* p0))(var26->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var26, var_other) /* == on <var26:nullable TQuad(TQuad)>*/;
5222 }
5223 var34 = !var33;
5224 var31 = var34;
5225 goto RET_LABEL32;
5226 RET_LABEL32:(void)0;
5227 }
5228 var30 = var31;
5229 }
5230 if (var30){
5231 var35 = NULL;
5232 var_mgroup = var35;
5233 } else {
5234 }
5235 {
5236 { /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
5237 var38 = var_aimport->attrs[COLOR_nit__parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
5238 if (unlikely(var38 == NULL)) {
5239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
5240 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 961);
5241 show_backtrace(1);
5242 }
5243 var36 = var38;
5244 RET_LABEL37:(void)0;
5245 }
5246 }
5247 {
5248 { /* Inline parser_nodes#AModuleName#n_path (var36) on <var36:AModuleName> */
5249 var41 = var36->attrs[COLOR_nit__parser_nodes__AModuleName___n_path].val; /* _n_path on <var36:AModuleName> */
5250 if (unlikely(var41 == NULL)) {
5251 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_path");
5252 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2467);
5253 show_backtrace(1);
5254 }
5255 var39 = var41;
5256 RET_LABEL40:(void)0;
5257 }
5258 }
5259 var_42 = var39;
5260 {
5261 var43 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_42);
5262 }
5263 var_44 = var43;
5264 for(;;) {
5265 {
5266 var45 = ((short int (*)(val* self))(var_44->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_44) /* is_ok on <var_44:Iterator[TId]>*/;
5267 }
5268 if (var45){
5269 {
5270 var46 = ((val* (*)(val* self))(var_44->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_44) /* item on <var_44:Iterator[TId]>*/;
5271 }
5272 var_grp = var46;
5273 {
5274 var47 = nit__lexer_work___Token___text(var_grp);
5275 }
5276 {
5277 var48 = nit__loader___ModelBuilder___search_mmodule_by_name(self, var_grp, var_mgroup, var47);
5278 }
5279 var_path = var48;
5280 var49 = NULL;
5281 if (var_path == NULL) {
5282 var50 = 1; /* is null */
5283 } else {
5284 var50 = 0; /* arg is null but recv is not */
5285 }
5286 if (0) {
5287 { /* Inline kernel#Object#== (var_path,var49) on <var_path:nullable ModulePath> */
5288 var_other53 = var49;
5289 {
5290 { /* Inline kernel#Object#is_same_instance (var_path,var_other53) on <var_path:nullable ModulePath(ModulePath)> */
5291 var56 = var_path == var_other53;
5292 var54 = var56;
5293 goto RET_LABEL55;
5294 RET_LABEL55:(void)0;
5295 }
5296 }
5297 var51 = var54;
5298 goto RET_LABEL52;
5299 RET_LABEL52:(void)0;
5300 }
5301 var50 = var51;
5302 }
5303 if (var50){
5304 goto RET_LABEL;
5305 } else {
5306 }
5307 {
5308 { /* Inline loader#ModulePath#mgroup (var_path) on <var_path:nullable ModulePath(ModulePath)> */
5309 var59 = var_path->attrs[COLOR_nit__loader__ModulePath___mgroup].val; /* _mgroup on <var_path:nullable ModulePath(ModulePath)> */
5310 if (unlikely(var59 == NULL)) {
5311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup");
5312 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 665);
5313 show_backtrace(1);
5314 }
5315 var57 = var59;
5316 RET_LABEL58:(void)0;
5317 }
5318 }
5319 var_mgroup = var57;
5320 {
5321 ((void (*)(val* self))(var_44->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_44) /* next on <var_44:Iterator[TId]>*/;
5322 }
5323 } else {
5324 goto BREAK_label60;
5325 }
5326 }
5327 BREAK_label60: (void)0;
5328 {
5329 { /* Inline abstract_collection#Iterator#finish (var_44) on <var_44:Iterator[TId]> */
5330 RET_LABEL61:(void)0;
5331 }
5332 }
5333 {
5334 { /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
5335 var64 = var_aimport->attrs[COLOR_nit__parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
5336 if (unlikely(var64 == NULL)) {
5337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
5338 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 961);
5339 show_backtrace(1);
5340 }
5341 var62 = var64;
5342 RET_LABEL63:(void)0;
5343 }
5344 }
5345 {
5346 { /* Inline parser_nodes#AModuleName#n_id (var62) on <var62:AModuleName> */
5347 var67 = var62->attrs[COLOR_nit__parser_nodes__AModuleName___n_id].val; /* _n_id on <var62:AModuleName> */
5348 if (unlikely(var67 == NULL)) {
5349 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
5350 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2470);
5351 show_backtrace(1);
5352 }
5353 var65 = var67;
5354 RET_LABEL66:(void)0;
5355 }
5356 }
5357 {
5358 var68 = nit__lexer_work___Token___text(var65);
5359 }
5360 var_mod_name = var68;
5361 {
5362 { /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
5363 var71 = var_aimport->attrs[COLOR_nit__parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
5364 if (unlikely(var71 == NULL)) {
5365 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
5366 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 961);
5367 show_backtrace(1);
5368 }
5369 var69 = var71;
5370 RET_LABEL70:(void)0;
5371 }
5372 }
5373 {
5374 var72 = nit__loader___ModelBuilder___get_mmodule_by_name(self, var69, var_mgroup, var_mod_name);
5375 }
5376 var_sup = var72;
5377 var73 = NULL;
5378 if (var_sup == NULL) {
5379 var74 = 1; /* is null */
5380 } else {
5381 var74 = 0; /* arg is null but recv is not */
5382 }
5383 if (0) {
5384 { /* Inline kernel#Object#== (var_sup,var73) on <var_sup:nullable MModule> */
5385 var_other53 = var73;
5386 {
5387 { /* Inline kernel#Object#is_same_instance (var_sup,var_other53) on <var_sup:nullable MModule(MModule)> */
5388 var79 = var_sup == var_other53;
5389 var77 = var79;
5390 goto RET_LABEL78;
5391 RET_LABEL78:(void)0;
5392 }
5393 }
5394 var75 = var77;
5395 goto RET_LABEL76;
5396 RET_LABEL76:(void)0;
5397 }
5398 var74 = var75;
5399 }
5400 if (var74){
5401 goto BREAK_label;
5402 } else {
5403 }
5404 {
5405 { /* Inline loader#AStdImport#mmodule= (var_aimport,var_sup) on <var_aimport:AImport(AStdImport)> */
5406 var_aimport->attrs[COLOR_nit__loader__AStdImport___mmodule].val = var_sup; /* _mmodule on <var_aimport:AImport(AStdImport)> */
5407 RET_LABEL80:(void)0;
5408 }
5409 }
5410 {
5411 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_imported_modules, var_sup); /* Direct call array#Array#add on <var_imported_modules:Array[MModule]>*/
5412 }
5413 {
5414 { /* Inline parser_nodes#AImport#n_visibility (var_aimport) on <var_aimport:AImport(AStdImport)> */
5415 var83 = var_aimport->attrs[COLOR_nit__parser_nodes__AImport___n_visibility].val; /* _n_visibility on <var_aimport:AImport(AStdImport)> */
5416 if (unlikely(var83 == NULL)) {
5417 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
5418 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 951);
5419 show_backtrace(1);
5420 }
5421 var81 = var83;
5422 RET_LABEL82:(void)0;
5423 }
5424 }
5425 {
5426 var84 = ((val* (*)(val* self))(var81->class->vft[COLOR_nit__modelbuilder_base__AVisibility__mvisibility]))(var81) /* mvisibility on <var81:AVisibility>*/;
5427 }
5428 var_mvisibility = var84;
5429 {
5430 var85 = nit__model_base___standard__Object___protected_visibility(self);
5431 }
5432 {
5433 { /* Inline kernel#Object#== (var_mvisibility,var85) on <var_mvisibility:MVisibility> */
5434 var_other53 = var85;
5435 {
5436 { /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other53) on <var_mvisibility:MVisibility> */
5437 var90 = var_mvisibility == var_other53;
5438 var88 = var90;
5439 goto RET_LABEL89;
5440 RET_LABEL89:(void)0;
5441 }
5442 }
5443 var86 = var88;
5444 goto RET_LABEL87;
5445 RET_LABEL87:(void)0;
5446 }
5447 }
5448 if (var86){
5449 {
5450 { /* Inline parser_nodes#AImport#n_visibility (var_aimport) on <var_aimport:AImport(AStdImport)> */
5451 var93 = var_aimport->attrs[COLOR_nit__parser_nodes__AImport___n_visibility].val; /* _n_visibility on <var_aimport:AImport(AStdImport)> */
5452 if (unlikely(var93 == NULL)) {
5453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
5454 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 951);
5455 show_backtrace(1);
5456 }
5457 var91 = var93;
5458 RET_LABEL92:(void)0;
5459 }
5460 }
5461 if (varonce) {
5462 var94 = varonce;
5463 } else {
5464 var95 = "Error: only properties can be protected.";
5465 var96 = 40;
5466 var97 = standard___standard__NativeString___to_s_with_length(var95, var96);
5467 var94 = var97;
5468 varonce = var94;
5469 }
5470 {
5471 nit___nit__ModelBuilder___error(self, var91, var94); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
5472 }
5473 goto RET_LABEL;
5474 } else {
5475 }
5476 {
5477 { /* Inline kernel#Object#== (var_sup,var_mmodule) on <var_sup:nullable MModule(MModule)> */
5478 var_other53 = var_mmodule;
5479 {
5480 { /* Inline kernel#Object#is_same_instance (var_sup,var_other53) on <var_sup:nullable MModule(MModule)> */
5481 var102 = var_sup == var_other53;
5482 var100 = var102;
5483 goto RET_LABEL101;
5484 RET_LABEL101:(void)0;
5485 }
5486 }
5487 var98 = var100;
5488 goto RET_LABEL99;
5489 RET_LABEL99:(void)0;
5490 }
5491 }
5492 if (var98){
5493 {
5494 { /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
5495 var105 = var_aimport->attrs[COLOR_nit__parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
5496 if (unlikely(var105 == NULL)) {
5497 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
5498 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 961);
5499 show_backtrace(1);
5500 }
5501 var103 = var105;
5502 RET_LABEL104:(void)0;
5503 }
5504 }
5505 if (varonce106) {
5506 var107 = varonce106;
5507 } else {
5508 var108 = "Error: Dependency loop in module ";
5509 var109 = 33;
5510 var110 = standard___standard__NativeString___to_s_with_length(var108, var109);
5511 var107 = var110;
5512 varonce106 = var107;
5513 }
5514 if (varonce111) {
5515 var112 = varonce111;
5516 } else {
5517 var113 = ".";
5518 var114 = 1;
5519 var115 = standard___standard__NativeString___to_s_with_length(var113, var114);
5520 var112 = var115;
5521 varonce111 = var112;
5522 }
5523 var116 = NEW_standard__Array(&type_standard__Array__standard__Object);
5524 { /* var116 = array_instance Array[Object] */
5525 var117 = 3;
5526 var118 = NEW_standard__NativeArray(var117, &type_standard__NativeArray__standard__Object);
5527 ((struct instance_standard__NativeArray*)var118)->values[0] = (val*) var107;
5528 ((struct instance_standard__NativeArray*)var118)->values[1] = (val*) var_mmodule;
5529 ((struct instance_standard__NativeArray*)var118)->values[2] = (val*) var112;
5530 {
5531 ((void (*)(val* self, val* p0, long p1))(var116->class->vft[COLOR_standard__array__Array__with_native]))(var116, var118, var117) /* with_native on <var116:Array[Object]>*/;
5532 }
5533 }
5534 {
5535 var119 = ((val* (*)(val* self))(var116->class->vft[COLOR_standard__string__Object__to_s]))(var116) /* to_s on <var116:Array[Object]>*/;
5536 }
5537 {
5538 nit___nit__ModelBuilder___error(self, var103, var119); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
5539 }
5540 } else {
5541 }
5542 {
5543 { /* Inline mmodule#MModule#in_importation (var_sup) on <var_sup:nullable MModule(MModule)> */
5544 var122 = var_sup->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_sup:nullable MModule(MModule)> */
5545 if (unlikely(var122 == NULL)) {
5546 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
5547 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
5548 show_backtrace(1);
5549 }
5550 var120 = var122;
5551 RET_LABEL121:(void)0;
5552 }
5553 }
5554 {
5555 var123 = poset___poset__POSetElement____60d(var120, var_mmodule);
5556 }
5557 if (var123){
5558 {
5559 { /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
5560 var126 = var_aimport->attrs[COLOR_nit__parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
5561 if (unlikely(var126 == NULL)) {
5562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
5563 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 961);
5564 show_backtrace(1);
5565 }
5566 var124 = var126;
5567 RET_LABEL125:(void)0;
5568 }
5569 }
5570 if (varonce127) {
5571 var128 = varonce127;
5572 } else {
5573 var129 = "Error: Dependency loop between modules ";
5574 var130 = 39;
5575 var131 = standard___standard__NativeString___to_s_with_length(var129, var130);
5576 var128 = var131;
5577 varonce127 = var128;
5578 }
5579 if (varonce132) {
5580 var133 = varonce132;
5581 } else {
5582 var134 = " and ";
5583 var135 = 5;
5584 var136 = standard___standard__NativeString___to_s_with_length(var134, var135);
5585 var133 = var136;
5586 varonce132 = var133;
5587 }
5588 if (varonce137) {
5589 var138 = varonce137;
5590 } else {
5591 var139 = ".";
5592 var140 = 1;
5593 var141 = standard___standard__NativeString___to_s_with_length(var139, var140);
5594 var138 = var141;
5595 varonce137 = var138;
5596 }
5597 var142 = NEW_standard__Array(&type_standard__Array__standard__Object);
5598 { /* var142 = array_instance Array[Object] */
5599 var143 = 5;
5600 var144 = NEW_standard__NativeArray(var143, &type_standard__NativeArray__standard__Object);
5601 ((struct instance_standard__NativeArray*)var144)->values[0] = (val*) var128;
5602 ((struct instance_standard__NativeArray*)var144)->values[1] = (val*) var_mmodule;
5603 ((struct instance_standard__NativeArray*)var144)->values[2] = (val*) var133;
5604 ((struct instance_standard__NativeArray*)var144)->values[3] = (val*) var_sup;
5605 ((struct instance_standard__NativeArray*)var144)->values[4] = (val*) var138;
5606 {
5607 ((void (*)(val* self, val* p0, long p1))(var142->class->vft[COLOR_standard__array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
5608 }
5609 }
5610 {
5611 var145 = ((val* (*)(val* self))(var142->class->vft[COLOR_standard__string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
5612 }
5613 {
5614 nit___nit__ModelBuilder___error(self, var124, var145); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
5615 }
5616 goto RET_LABEL;
5617 } else {
5618 }
5619 {
5620 nit___nit__MModule___set_visibility_for(var_mmodule, var_sup, var_mvisibility); /* Direct call mmodule#MModule#set_visibility_for on <var_mmodule:MModule>*/
5621 }
5622 BREAK_label: (void)0;
5623 {
5624 ((void (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14) /* next on <var_14:Iterator[AImport]>*/;
5625 }
5626 } else {
5627 goto BREAK_label146;
5628 }
5629 }
5630 BREAK_label146: (void)0;
5631 {
5632 { /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:Iterator[AImport]> */
5633 RET_LABEL147:(void)0;
5634 }
5635 }
5636 if (var_stdimport){
5637 if (varonce148) {
5638 var149 = varonce148;
5639 } else {
5640 var150 = "standard";
5641 var151 = 8;
5642 var152 = standard___standard__NativeString___to_s_with_length(var150, var151);
5643 var149 = var152;
5644 varonce148 = var149;
5645 }
5646 var_mod_name153 = var149;
5647 var154 = NULL;
5648 {
5649 var155 = nit__loader___ModelBuilder___get_mmodule_by_name(self, var_nmodule, var154, var_mod_name153);
5650 }
5651 var_sup156 = var155;
5652 var157 = NULL;
5653 if (var_sup156 == NULL) {
5654 var158 = 0; /* is null */
5655 } else {
5656 var158 = 1; /* arg is null and recv is not */
5657 }
5658 if (0) {
5659 { /* Inline kernel#Object#!= (var_sup156,var157) on <var_sup156:nullable MModule> */
5660 var_other = var157;
5661 {
5662 var161 = ((short int (*)(val* self, val* p0))(var_sup156->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_sup156, var_other) /* == on <var_sup156:nullable MModule(MModule)>*/;
5663 }
5664 var162 = !var161;
5665 var159 = var162;
5666 goto RET_LABEL160;
5667 RET_LABEL160:(void)0;
5668 }
5669 var158 = var159;
5670 }
5671 if (var158){
5672 {
5673 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_imported_modules, var_sup156); /* Direct call array#Array#add on <var_imported_modules:Array[MModule]>*/
5674 }
5675 {
5676 var163 = nit__model_base___standard__Object___public_visibility(self);
5677 }
5678 {
5679 nit___nit__MModule___set_visibility_for(var_mmodule, var_sup156, var163); /* Direct call mmodule#MModule#set_visibility_for on <var_mmodule:MModule>*/
5680 }
5681 } else {
5682 }
5683 } else {
5684 }
5685 {
5686 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
5687 var166 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
5688 if (unlikely(var166 == NULL)) {
5689 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5690 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
5691 show_backtrace(1);
5692 }
5693 var164 = var166;
5694 RET_LABEL165:(void)0;
5695 }
5696 }
5697 if (varonce167) {
5698 var168 = varonce167;
5699 } else {
5700 var169 = " imports ";
5701 var170 = 9;
5702 var171 = standard___standard__NativeString___to_s_with_length(var169, var170);
5703 var168 = var171;
5704 varonce167 = var168;
5705 }
5706 if (varonce172) {
5707 var173 = varonce172;
5708 } else {
5709 var174 = ", ";
5710 var175 = 2;
5711 var176 = standard___standard__NativeString___to_s_with_length(var174, var175);
5712 var173 = var176;
5713 varonce172 = var173;
5714 }
5715 {
5716 var177 = standard__string___Collection___join(var_imported_modules, var173);
5717 }
5718 var178 = NEW_standard__Array(&type_standard__Array__standard__Object);
5719 { /* var178 = array_instance Array[Object] */
5720 var179 = 3;
5721 var180 = NEW_standard__NativeArray(var179, &type_standard__NativeArray__standard__Object);
5722 ((struct instance_standard__NativeArray*)var180)->values[0] = (val*) var_mmodule;
5723 ((struct instance_standard__NativeArray*)var180)->values[1] = (val*) var168;
5724 ((struct instance_standard__NativeArray*)var180)->values[2] = (val*) var177;
5725 {
5726 ((void (*)(val* self, val* p0, long p1))(var178->class->vft[COLOR_standard__array__Array__with_native]))(var178, var180, var179) /* with_native on <var178:Array[Object]>*/;
5727 }
5728 }
5729 {
5730 var181 = ((val* (*)(val* self))(var178->class->vft[COLOR_standard__string__Object__to_s]))(var178) /* to_s on <var178:Array[Object]>*/;
5731 }
5732 var182 = 3;
5733 {
5734 nit___nit__ToolContext___info(var164, var181, var182); /* Direct call toolcontext#ToolContext#info on <var164:ToolContext>*/
5735 }
5736 {
5737 nit___nit__MModule___set_imported_mmodules(var_mmodule, var_imported_modules); /* Direct call mmodule#MModule#set_imported_mmodules on <var_mmodule:MModule>*/
5738 }
5739 {
5740 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
5741 var185 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
5742 if (unlikely(var185 == NULL)) {
5743 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
5744 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
5745 show_backtrace(1);
5746 }
5747 var183 = var185;
5748 RET_LABEL184:(void)0;
5749 }
5750 }
5751 {
5752 var186 = poset___poset__POSetElement___greaters(var183);
5753 }
5754 var_187 = var186;
5755 {
5756 var188 = ((val* (*)(val* self))(var_187->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_187) /* iterator on <var_187:Collection[MModule]>*/;
5757 }
5758 var_189 = var188;
5759 for(;;) {
5760 {
5761 var190 = ((short int (*)(val* self))(var_189->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_189) /* is_ok on <var_189:Iterator[MModule]>*/;
5762 }
5763 if (var190){
5764 {
5765 var191 = ((val* (*)(val* self))(var_189->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_189) /* item on <var_189:Iterator[MModule]>*/;
5766 }
5767 var_sup192 = var191;
5768 {
5769 { /* Inline mmodule#MModule#name (var_sup192) on <var_sup192:MModule> */
5770 var195 = var_sup192->attrs[COLOR_nit__mmodule__MModule___name].val; /* _name on <var_sup192:MModule> */
5771 if (unlikely(var195 == NULL)) {
5772 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5773 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 87);
5774 show_backtrace(1);
5775 }
5776 var193 = var195;
5777 RET_LABEL194:(void)0;
5778 }
5779 }
5780 if (varonce196) {
5781 var197 = varonce196;
5782 } else {
5783 var198 = "standard";
5784 var199 = 8;
5785 var200 = standard___standard__NativeString___to_s_with_length(var198, var199);
5786 var197 = var200;
5787 varonce196 = var197;
5788 }
5789 {
5790 var201 = ((short int (*)(val* self, val* p0))(var193->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var193, var197) /* == on <var193:String>*/;
5791 }
5792 if (var201){
5793 {
5794 var202 = nit__model_base___standard__Object___public_visibility(self);
5795 }
5796 {
5797 nit___nit__MModule___set_visibility_for(var_mmodule, var_sup192, var202); /* Direct call mmodule#MModule#set_visibility_for on <var_mmodule:MModule>*/
5798 }
5799 } else {
5800 }
5801 {
5802 ((void (*)(val* self))(var_189->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_189) /* next on <var_189:Iterator[MModule]>*/;
5803 }
5804 } else {
5805 goto BREAK_label203;
5806 }
5807 }
5808 BREAK_label203: (void)0;
5809 {
5810 { /* Inline abstract_collection#Iterator#finish (var_189) on <var_189:Iterator[MModule]> */
5811 RET_LABEL204:(void)0;
5812 }
5813 }
5814 {
5815 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
5816 var207 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
5817 if (unlikely(var207 == NULL)) {
5818 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
5819 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
5820 show_backtrace(1);
5821 }
5822 var205 = var207;
5823 RET_LABEL206:(void)0;
5824 }
5825 }
5826 {
5827 var208 = poset___poset__POSetElement___direct_greaters(var205);
5828 }
5829 var_directs = var208;
5830 {
5831 { /* Inline parser_nodes#AModule#n_imports (var_nmodule) on <var_nmodule:AModule> */
5832 var211 = var_nmodule->attrs[COLOR_nit__parser_nodes__AModule___n_imports].val; /* _n_imports on <var_nmodule:AModule> */
5833 if (unlikely(var211 == NULL)) {
5834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
5835 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 913);
5836 show_backtrace(1);
5837 }
5838 var209 = var211;
5839 RET_LABEL210:(void)0;
5840 }
5841 }
5842 var_212 = var209;
5843 {
5844 var213 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_212);
5845 }
5846 var_214 = var213;
5847 for(;;) {
5848 {
5849 var215 = ((short int (*)(val* self))(var_214->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_214) /* is_ok on <var_214:Iterator[AImport]>*/;
5850 }
5851 if (var215){
5852 {
5853 var216 = ((val* (*)(val* self))(var_214->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_214) /* item on <var_214:Iterator[AImport]>*/;
5854 }
5855 var_nim = var216;
5856 /* <var_nim:AImport> isa AStdImport */
5857 cltype218 = type_nit__AStdImport.color;
5858 idtype219 = type_nit__AStdImport.id;
5859 if(cltype218 >= var_nim->type->table_size) {
5860 var217 = 0;
5861 } else {
5862 var217 = var_nim->type->type_table[cltype218] == idtype219;
5863 }
5864 var220 = !var217;
5865 if (var220){
5866 goto BREAK_label221;
5867 } else {
5868 }
5869 {
5870 { /* Inline loader#AStdImport#mmodule (var_nim) on <var_nim:AImport(AStdImport)> */
5871 var224 = var_nim->attrs[COLOR_nit__loader__AStdImport___mmodule].val; /* _mmodule on <var_nim:AImport(AStdImport)> */
5872 var222 = var224;
5873 RET_LABEL223:(void)0;
5874 }
5875 }
5876 var_im = var222;
5877 var225 = NULL;
5878 if (var_im == NULL) {
5879 var226 = 1; /* is null */
5880 } else {
5881 var226 = 0; /* arg is null but recv is not */
5882 }
5883 if (0) {
5884 { /* Inline kernel#Object#== (var_im,var225) on <var_im:nullable MModule> */
5885 var_other53 = var225;
5886 {
5887 { /* Inline kernel#Object#is_same_instance (var_im,var_other53) on <var_im:nullable MModule(MModule)> */
5888 var231 = var_im == var_other53;
5889 var229 = var231;
5890 goto RET_LABEL230;
5891 RET_LABEL230:(void)0;
5892 }
5893 }
5894 var227 = var229;
5895 goto RET_LABEL228;
5896 RET_LABEL228:(void)0;
5897 }
5898 var226 = var227;
5899 }
5900 if (var226){
5901 goto BREAK_label221;
5902 } else {
5903 }
5904 {
5905 var232 = ((short int (*)(val* self, val* p0))(var_directs->class->vft[COLOR_standard__abstract_collection__Collection__has]))(var_directs, var_im) /* has on <var_directs:Collection[MModule]>*/;
5906 }
5907 if (var232){
5908 goto BREAK_label221;
5909 } else {
5910 }
5911 BREAK_label221: (void)0;
5912 {
5913 ((void (*)(val* self))(var_214->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_214) /* next on <var_214:Iterator[AImport]>*/;
5914 }
5915 } else {
5916 goto BREAK_label233;
5917 }
5918 }
5919 BREAK_label233: (void)0;
5920 {
5921 { /* Inline abstract_collection#Iterator#finish (var_214) on <var_214:Iterator[AImport]> */
5922 RET_LABEL234:(void)0;
5923 }
5924 }
5925 RET_LABEL:;
5926 }
5927 /* method loader#ModelBuilder#nmodules for (self: ModelBuilder): Array[AModule] */
5928 val* nit__loader___ModelBuilder___nmodules(val* self) {
5929 val* var /* : Array[AModule] */;
5930 val* var1 /* : Array[AModule] */;
5931 var1 = self->attrs[COLOR_nit__loader__ModelBuilder___nmodules].val; /* _nmodules on <self:ModelBuilder> */
5932 if (unlikely(var1 == NULL)) {
5933 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules");
5934 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 638);
5935 show_backtrace(1);
5936 }
5937 var = var1;
5938 RET_LABEL:;
5939 return var;
5940 }
5941 /* method loader#ModelBuilder#mmodule2nmodule for (self: ModelBuilder): HashMap[MModule, AModule] */
5942 val* nit__loader___ModelBuilder___mmodule2nmodule(val* self) {
5943 val* var /* : HashMap[MModule, AModule] */;
5944 val* var1 /* : HashMap[MModule, AModule] */;
5945 var1 = self->attrs[COLOR_nit__loader__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
5946 if (unlikely(var1 == NULL)) {
5947 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
5948 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 641);
5949 show_backtrace(1);
5950 }
5951 var = var1;
5952 RET_LABEL:;
5953 return var;
5954 }
5955 /* method loader#ModelBuilder#mmodule2node for (self: ModelBuilder, MModule): nullable AModule */
5956 val* nit__loader___ModelBuilder___mmodule2node(val* self, val* p0) {
5957 val* var /* : nullable AModule */;
5958 val* var_mmodule /* var mmodule: MModule */;
5959 val* var1 /* : HashMap[MModule, AModule] */;
5960 val* var3 /* : HashMap[MModule, AModule] */;
5961 val* var4 /* : nullable Object */;
5962 var_mmodule = p0;
5963 {
5964 { /* Inline loader#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
5965 var3 = self->attrs[COLOR_nit__loader__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
5966 if (unlikely(var3 == NULL)) {
5967 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
5968 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 641);
5969 show_backtrace(1);
5970 }
5971 var1 = var3;
5972 RET_LABEL2:(void)0;
5973 }
5974 }
5975 {
5976 var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var1, var_mmodule);
5977 }
5978 var = var4;
5979 goto RET_LABEL;
5980 RET_LABEL:;
5981 return var;
5982 }
5983 /* method loader#ModulePath#name for (self: ModulePath): String */
5984 val* nit___nit__ModulePath___name(val* self) {
5985 val* var /* : String */;
5986 val* var1 /* : String */;
5987 var1 = self->attrs[COLOR_nit__loader__ModulePath___name].val; /* _name on <self:ModulePath> */
5988 if (unlikely(var1 == NULL)) {
5989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5990 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 658);
5991 show_backtrace(1);
5992 }
5993 var = var1;
5994 RET_LABEL:;
5995 return var;
5996 }
5997 /* method loader#ModulePath#name= for (self: ModulePath, String) */
5998 void nit___nit__ModulePath___name_61d(val* self, val* p0) {
5999 self->attrs[COLOR_nit__loader__ModulePath___name].val = p0; /* _name on <self:ModulePath> */
6000 RET_LABEL:;
6001 }
6002 /* method loader#ModulePath#filepath for (self: ModulePath): String */
6003 val* nit___nit__ModulePath___filepath(val* self) {
6004 val* var /* : String */;
6005 val* var1 /* : String */;
6006 var1 = self->attrs[COLOR_nit__loader__ModulePath___filepath].val; /* _filepath on <self:ModulePath> */
6007 if (unlikely(var1 == NULL)) {
6008 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath");
6009 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 662);
6010 show_backtrace(1);
6011 }
6012 var = var1;
6013 RET_LABEL:;
6014 return var;
6015 }
6016 /* method loader#ModulePath#filepath= for (self: ModulePath, String) */
6017 void nit___nit__ModulePath___filepath_61d(val* self, val* p0) {
6018 self->attrs[COLOR_nit__loader__ModulePath___filepath].val = p0; /* _filepath on <self:ModulePath> */
6019 RET_LABEL:;
6020 }
6021 /* method loader#ModulePath#mgroup for (self: ModulePath): MGroup */
6022 val* nit___nit__ModulePath___mgroup(val* self) {
6023 val* var /* : MGroup */;
6024 val* var1 /* : MGroup */;
6025 var1 = self->attrs[COLOR_nit__loader__ModulePath___mgroup].val; /* _mgroup on <self:ModulePath> */
6026 if (unlikely(var1 == NULL)) {
6027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup");
6028 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 665);
6029 show_backtrace(1);
6030 }
6031 var = var1;
6032 RET_LABEL:;
6033 return var;
6034 }
6035 /* method loader#ModulePath#mgroup= for (self: ModulePath, MGroup) */
6036 void nit___nit__ModulePath___mgroup_61d(val* self, val* p0) {
6037 self->attrs[COLOR_nit__loader__ModulePath___mgroup].val = p0; /* _mgroup on <self:ModulePath> */
6038 RET_LABEL:;
6039 }
6040 /* method loader#ModulePath#mmodule for (self: ModulePath): nullable MModule */
6041 val* nit___nit__ModulePath___mmodule(val* self) {
6042 val* var /* : nullable MModule */;
6043 val* var1 /* : nullable MModule */;
6044 var1 = self->attrs[COLOR_nit__loader__ModulePath___mmodule].val; /* _mmodule on <self:ModulePath> */
6045 var = var1;
6046 RET_LABEL:;
6047 return var;
6048 }
6049 /* method loader#ModulePath#mmodule= for (self: ModulePath, nullable MModule) */
6050 void nit___nit__ModulePath___mmodule_61d(val* self, val* p0) {
6051 self->attrs[COLOR_nit__loader__ModulePath___mmodule].val = p0; /* _mmodule on <self:ModulePath> */
6052 RET_LABEL:;
6053 }
6054 /* method loader#ModulePath#to_s for (self: ModulePath): String */
6055 val* nit___nit__ModulePath___standard__string__Object__to_s(val* self) {
6056 val* var /* : String */;
6057 val* var1 /* : String */;
6058 val* var3 /* : String */;
6059 {
6060 { /* Inline loader#ModulePath#filepath (self) on <self:ModulePath> */
6061 var3 = self->attrs[COLOR_nit__loader__ModulePath___filepath].val; /* _filepath on <self:ModulePath> */
6062 if (unlikely(var3 == NULL)) {
6063 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath");
6064 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 662);
6065 show_backtrace(1);
6066 }
6067 var1 = var3;
6068 RET_LABEL2:(void)0;
6069 }
6070 }
6071 var = var1;
6072 goto RET_LABEL;
6073 RET_LABEL:;
6074 return var;
6075 }
6076 /* method loader#ModulePath#init for (self: ModulePath) */
6077 void nit___nit__ModulePath___standard__kernel__Object__init(val* self) {
6078 {
6079 ((void (*)(val* self))(self->class->vft[COLOR_nit___nit__ModulePath___standard__kernel__Object__init]))(self) /* init on <self:ModulePath>*/;
6080 }
6081 RET_LABEL:;
6082 }
6083 /* method loader#MGroup#module_paths for (self: MGroup): Array[ModulePath] */
6084 val* nit__loader___MGroup___module_paths(val* self) {
6085 val* var /* : Array[ModulePath] */;
6086 val* var1 /* : Array[ModulePath] */;
6087 var1 = self->attrs[COLOR_nit__loader__MGroup___module_paths].val; /* _module_paths on <self:MGroup> */
6088 if (unlikely(var1 == NULL)) {
6089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _module_paths");
6090 PRINT_ERROR(" (%s:%d)\n", FILE_nit__loader, 675);
6091 show_backtrace(1);
6092 }
6093 var = var1;
6094 RET_LABEL:;
6095 return var;
6096 }
6097 /* method loader#SourceFile#mmodule for (self: SourceFile): nullable MModule */
6098 val* nit__loader___SourceFile___mmodule(val* self) {
6099 val* var /* : nullable MModule */;
6100 val* var1 /* : nullable MModule */;
6101 var1 = self->attrs[COLOR_nit__loader__SourceFile___mmodule].val; /* _mmodule on <self:SourceFile> */
6102 var = var1;
6103 RET_LABEL:;
6104 return var;
6105 }
6106 /* method loader#SourceFile#mmodule= for (self: SourceFile, nullable MModule) */
6107 void nit__loader___SourceFile___mmodule_61d(val* self, val* p0) {
6108 self->attrs[COLOR_nit__loader__SourceFile___mmodule].val = p0; /* _mmodule on <self:SourceFile> */
6109 RET_LABEL:;
6110 }
6111 /* method loader#AStdImport#mmodule for (self: AStdImport): nullable MModule */
6112 val* nit__loader___AStdImport___mmodule(val* self) {
6113 val* var /* : nullable MModule */;
6114 val* var1 /* : nullable MModule */;
6115 var1 = self->attrs[COLOR_nit__loader__AStdImport___mmodule].val; /* _mmodule on <self:AStdImport> */
6116 var = var1;
6117 RET_LABEL:;
6118 return var;
6119 }
6120 /* method loader#AStdImport#mmodule= for (self: AStdImport, nullable MModule) */
6121 void nit__loader___AStdImport___mmodule_61d(val* self, val* p0) {
6122 self->attrs[COLOR_nit__loader__AStdImport___mmodule].val = p0; /* _mmodule on <self:AStdImport> */
6123 RET_LABEL:;
6124 }
6125 /* method loader#AModule#mmodule for (self: AModule): nullable MModule */
6126 val* nit__loader___AModule___mmodule(val* self) {
6127 val* var /* : nullable MModule */;
6128 val* var1 /* : nullable MModule */;
6129 var1 = self->attrs[COLOR_nit__loader__AModule___mmodule].val; /* _mmodule on <self:AModule> */
6130 var = var1;
6131 RET_LABEL:;
6132 return var;
6133 }
6134 /* method loader#AModule#mmodule= for (self: AModule, nullable MModule) */
6135 void nit__loader___AModule___mmodule_61d(val* self, val* p0) {
6136 self->attrs[COLOR_nit__loader__AModule___mmodule].val = p0; /* _mmodule on <self:AModule> */
6137 RET_LABEL:;
6138 }
6139 /* method loader#AModule#is_importation_done for (self: AModule): Bool */
6140 short int nit__loader___AModule___is_importation_done(val* self) {
6141 short int var /* : Bool */;
6142 short int var1 /* : Bool */;
6143 var1 = self->attrs[COLOR_nit__loader__AModule___is_importation_done].s; /* _is_importation_done on <self:AModule> */
6144 var = var1;
6145 RET_LABEL:;
6146 return var;
6147 }
6148 /* method loader#AModule#is_importation_done= for (self: AModule, Bool) */
6149 void nit__loader___AModule___is_importation_done_61d(val* self, short int p0) {
6150 self->attrs[COLOR_nit__loader__AModule___is_importation_done].s = p0; /* _is_importation_done on <self:AModule> */
6151 RET_LABEL:;
6152 }