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