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