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