Merge branch 'super_init_call'
[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___64dopt_path].val; /* @opt_path on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_path");
9 fprintf(stderr, " (%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 var1 = modelbuilder__ToolContext__opt_path(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method modelbuilder#ToolContext#opt_path= for (self: ToolContext, OptionArray) */
26 void modelbuilder__ToolContext__opt_path_61d(val* self, val* p0) {
27 self->attrs[COLOR_modelbuilder__ToolContext___64dopt_path].val = p0; /* @opt_path on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method modelbuilder#ToolContext#opt_path= for (self: Object, OptionArray) */
31 void VIRTUAL_modelbuilder__ToolContext__opt_path_61d(val* self, val* p0) {
32 modelbuilder__ToolContext__opt_path_61d(self, p0);
33 RET_LABEL:;
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___64dopt_only_metamodel].val; /* @opt_only_metamodel on <self:ToolContext> */
40 if (var1 == NULL) {
41 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_only_metamodel");
42 fprintf(stderr, " (%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 var1 = modelbuilder__ToolContext__opt_only_metamodel(self);
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method modelbuilder#ToolContext#opt_only_metamodel= for (self: ToolContext, OptionBool) */
59 void modelbuilder__ToolContext__opt_only_metamodel_61d(val* self, val* p0) {
60 self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_metamodel].val = p0; /* @opt_only_metamodel on <self:ToolContext> */
61 RET_LABEL:;
62 }
63 /* method modelbuilder#ToolContext#opt_only_metamodel= for (self: Object, OptionBool) */
64 void VIRTUAL_modelbuilder__ToolContext__opt_only_metamodel_61d(val* self, val* p0) {
65 modelbuilder__ToolContext__opt_only_metamodel_61d(self, p0);
66 RET_LABEL:;
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___64dopt_only_parse].val; /* @opt_only_parse on <self:ToolContext> */
73 if (var1 == NULL) {
74 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_only_parse");
75 fprintf(stderr, " (%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 var1 = modelbuilder__ToolContext__opt_only_parse(self);
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method modelbuilder#ToolContext#opt_only_parse= for (self: ToolContext, OptionBool) */
92 void modelbuilder__ToolContext__opt_only_parse_61d(val* self, val* p0) {
93 self->attrs[COLOR_modelbuilder__ToolContext___64dopt_only_parse].val = p0; /* @opt_only_parse on <self:ToolContext> */
94 RET_LABEL:;
95 }
96 /* method modelbuilder#ToolContext#opt_only_parse= for (self: Object, OptionBool) */
97 void VIRTUAL_modelbuilder__ToolContext__opt_only_parse_61d(val* self, val* p0) {
98 modelbuilder__ToolContext__opt_only_parse_61d(self, p0);
99 RET_LABEL:;
100 }
101 /* method modelbuilder#ToolContext#init for (self: ToolContext) */
102 void modelbuilder__ToolContext__init(val* self) {
103 val* var /* : OptionContext */;
104 val* var1 /* : OptionArray */;
105 val* var2 /* : OptionBool */;
106 val* var3 /* : OptionBool */;
107 val* var4 /* : Array[Option] */;
108 long var5 /* : Int */;
109 val* var6 /* : NativeArray[Option] */;
110 ((void (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__init]))(self) /* init on <self:ToolContext>*/;
111 var = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
112 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__opt_path]))(self) /* opt_path on <self:ToolContext>*/;
113 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__opt_only_parse]))(self) /* opt_only_parse on <self:ToolContext>*/;
114 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__opt_only_metamodel]))(self) /* opt_only_metamodel on <self:ToolContext>*/;
115 var4 = NEW_array__Array(&type_array__Arrayopts__Option);
116 { /* var4 = array_instance Array[Option] */
117 var5 = 3;
118 var6 = NEW_array__NativeArray(var5, &type_array__NativeArrayopts__Option);
119 ((struct instance_array__NativeArray*)var6)->values[0] = (val*) var1;
120 ((struct instance_array__NativeArray*)var6)->values[1] = (val*) var2;
121 ((struct instance_array__NativeArray*)var6)->values[2] = (val*) var3;
122 ((void (*)(val*, val*, long))(var4->class->vft[COLOR_array__Array__with_native]))(var4, var6, var5) /* with_native on <var4:Array[Option]>*/;
123 }
124 ((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var4) /* add_option on <var:OptionContext>*/;
125 RET_LABEL:;
126 }
127 /* method modelbuilder#ToolContext#init for (self: Object) */
128 void VIRTUAL_modelbuilder__ToolContext__init(val* self) {
129 modelbuilder__ToolContext__init(self);
130 RET_LABEL:;
131 }
132 /* method modelbuilder#ToolContext#modelbuilder for (self: ToolContext): ModelBuilder */
133 val* modelbuilder__ToolContext__modelbuilder(val* self) {
134 val* var /* : ModelBuilder */;
135 val* var1 /* : nullable ModelBuilder */;
136 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real]))(self) /* modelbuilder_real on <self:ToolContext>*/;
137 if (var1 == NULL) {
138 fprintf(stderr, "Runtime error: %s", "Cast failed");
139 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 52);
140 show_backtrace(1);
141 }
142 var = var1;
143 goto RET_LABEL;
144 RET_LABEL:;
145 return var;
146 }
147 /* method modelbuilder#ToolContext#modelbuilder for (self: Object): ModelBuilder */
148 val* VIRTUAL_modelbuilder__ToolContext__modelbuilder(val* self) {
149 val* var /* : ModelBuilder */;
150 val* var1 /* : ModelBuilder */;
151 var1 = modelbuilder__ToolContext__modelbuilder(self);
152 var = var1;
153 RET_LABEL:;
154 return var;
155 }
156 /* method modelbuilder#ToolContext#modelbuilder_real for (self: ToolContext): nullable ModelBuilder */
157 val* modelbuilder__ToolContext__modelbuilder_real(val* self) {
158 val* var /* : nullable ModelBuilder */;
159 val* var1 /* : nullable ModelBuilder */;
160 var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dmodelbuilder_real].val; /* @modelbuilder_real on <self:ToolContext> */
161 var = var1;
162 RET_LABEL:;
163 return var;
164 }
165 /* method modelbuilder#ToolContext#modelbuilder_real for (self: Object): nullable ModelBuilder */
166 val* VIRTUAL_modelbuilder__ToolContext__modelbuilder_real(val* self) {
167 val* var /* : nullable ModelBuilder */;
168 val* var1 /* : nullable ModelBuilder */;
169 var1 = modelbuilder__ToolContext__modelbuilder_real(self);
170 var = var1;
171 RET_LABEL:;
172 return var;
173 }
174 /* method modelbuilder#ToolContext#modelbuilder_real= for (self: ToolContext, nullable ModelBuilder) */
175 void modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0) {
176 self->attrs[COLOR_modelbuilder__ToolContext___64dmodelbuilder_real].val = p0; /* @modelbuilder_real on <self:ToolContext> */
177 RET_LABEL:;
178 }
179 /* method modelbuilder#ToolContext#modelbuilder_real= for (self: Object, nullable ModelBuilder) */
180 void VIRTUAL_modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0) {
181 modelbuilder__ToolContext__modelbuilder_real_61d(self, p0);
182 RET_LABEL:;
183 }
184 /* method modelbuilder#ToolContext#run_global_phases for (self: ToolContext, MModule) */
185 void modelbuilder__ToolContext__run_global_phases(val* self, val* p0) {
186 val* var_mainmodule /* var mainmodule: MModule */;
187 val* var /* : Sequence[Phase] */;
188 val* var1 /* : Iterator[nullable Object] */;
189 short int var2 /* : Bool */;
190 val* var3 /* : nullable Object */;
191 val* var_phase /* var phase: Phase */;
192 var_mainmodule = p0;
193 var = ((val* (*)(val*))(self->class->vft[COLOR_phase__ToolContext__phases_list]))(self) /* phases_list on <self:ToolContext>*/;
194 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:Sequence[Phase]>*/;
195 for(;;) {
196 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
197 if(!var2) break;
198 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
199 var_phase = var3;
200 ((void (*)(val*, val*))(var_phase->class->vft[COLOR_modelbuilder__Phase__process_mainmodule]))(var_phase, var_mainmodule) /* process_mainmodule on <var_phase:Phase>*/;
201 CONTINUE_label: (void)0;
202 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
203 }
204 BREAK_label: (void)0;
205 RET_LABEL:;
206 }
207 /* method modelbuilder#ToolContext#run_global_phases for (self: Object, MModule) */
208 void VIRTUAL_modelbuilder__ToolContext__run_global_phases(val* self, val* p0) {
209 modelbuilder__ToolContext__run_global_phases(self, p0);
210 RET_LABEL:;
211 }
212 /* method modelbuilder#Phase#process_mainmodule for (self: Phase, MModule) */
213 void modelbuilder__Phase__process_mainmodule(val* self, val* p0) {
214 val* var_mainmodule /* var mainmodule: MModule */;
215 var_mainmodule = p0;
216 RET_LABEL:;
217 }
218 /* method modelbuilder#Phase#process_mainmodule for (self: Object, MModule) */
219 void VIRTUAL_modelbuilder__Phase__process_mainmodule(val* self, val* p0) {
220 modelbuilder__Phase__process_mainmodule(self, p0);
221 RET_LABEL:;
222 }
223 /* method modelbuilder#ModelBuilder#model for (self: ModelBuilder): Model */
224 val* modelbuilder__ModelBuilder__model(val* self) {
225 val* var /* : Model */;
226 val* var1 /* : Model */;
227 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmodel].val; /* @model on <self:ModelBuilder> */
228 if (var1 == NULL) {
229 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @model");
230 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 73);
231 show_backtrace(1);
232 }
233 var = var1;
234 RET_LABEL:;
235 return var;
236 }
237 /* method modelbuilder#ModelBuilder#model for (self: Object): Model */
238 val* VIRTUAL_modelbuilder__ModelBuilder__model(val* self) {
239 val* var /* : Model */;
240 val* var1 /* : Model */;
241 var1 = modelbuilder__ModelBuilder__model(self);
242 var = var1;
243 RET_LABEL:;
244 return var;
245 }
246 /* method modelbuilder#ModelBuilder#model= for (self: ModelBuilder, Model) */
247 void modelbuilder__ModelBuilder__model_61d(val* self, val* p0) {
248 self->attrs[COLOR_modelbuilder__ModelBuilder___64dmodel].val = p0; /* @model on <self:ModelBuilder> */
249 RET_LABEL:;
250 }
251 /* method modelbuilder#ModelBuilder#model= for (self: Object, Model) */
252 void VIRTUAL_modelbuilder__ModelBuilder__model_61d(val* self, val* p0) {
253 modelbuilder__ModelBuilder__model_61d(self, p0);
254 RET_LABEL:;
255 }
256 /* method modelbuilder#ModelBuilder#toolcontext for (self: ModelBuilder): ToolContext */
257 val* modelbuilder__ModelBuilder__toolcontext(val* self) {
258 val* var /* : ToolContext */;
259 val* var1 /* : ToolContext */;
260 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dtoolcontext].val; /* @toolcontext on <self:ModelBuilder> */
261 if (var1 == NULL) {
262 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
263 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 76);
264 show_backtrace(1);
265 }
266 var = var1;
267 RET_LABEL:;
268 return var;
269 }
270 /* method modelbuilder#ModelBuilder#toolcontext for (self: Object): ToolContext */
271 val* VIRTUAL_modelbuilder__ModelBuilder__toolcontext(val* self) {
272 val* var /* : ToolContext */;
273 val* var1 /* : ToolContext */;
274 var1 = modelbuilder__ModelBuilder__toolcontext(self);
275 var = var1;
276 RET_LABEL:;
277 return var;
278 }
279 /* method modelbuilder#ModelBuilder#toolcontext= for (self: ModelBuilder, ToolContext) */
280 void modelbuilder__ModelBuilder__toolcontext_61d(val* self, val* p0) {
281 self->attrs[COLOR_modelbuilder__ModelBuilder___64dtoolcontext].val = p0; /* @toolcontext on <self:ModelBuilder> */
282 RET_LABEL:;
283 }
284 /* method modelbuilder#ModelBuilder#toolcontext= for (self: Object, ToolContext) */
285 void VIRTUAL_modelbuilder__ModelBuilder__toolcontext_61d(val* self, val* p0) {
286 modelbuilder__ModelBuilder__toolcontext_61d(self, p0);
287 RET_LABEL:;
288 }
289 /* method modelbuilder#ModelBuilder#run_phases for (self: ModelBuilder) */
290 void modelbuilder__ModelBuilder__run_phases(val* self) {
291 val* var /* : Model */;
292 val* var1 /* : Array[MModule] */;
293 val* var2 /* : Array[nullable Object] */;
294 val* var_mmodules /* var mmodules: Array[MModule] */;
295 val* var3 /* : Model */;
296 val* var4 /* : POSet[MModule] */;
297 val* var5 /* : Array[AModule] */;
298 val* var_nmodules /* var nmodules: Array[AModule] */;
299 val* var6 /* : Iterator[nullable Object] */;
300 short int var7 /* : Bool */;
301 val* var8 /* : nullable Object */;
302 val* var_mm /* var mm: MModule */;
303 val* var9 /* : HashMap[MModule, AModule] */;
304 val* var10 /* : nullable Object */;
305 val* var11 /* : ToolContext */;
306 val* var12 /* : ToolContext */;
307 val* var13 /* : OptionBool */;
308 val* var14 /* : nullable Object */;
309 short int var15 /* : Bool */;
310 val* var16 /* : ToolContext */;
311 static val* varonce;
312 val* var17 /* : String */;
313 char* var18 /* : NativeString */;
314 long var19 /* : Int */;
315 val* var20 /* : String */;
316 long var21 /* : Int */;
317 long var22 /* : Int */;
318 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
319 var1 = ((val* (*)(val*))(var->class->vft[COLOR_mmodule__Model__mmodules]))(var) /* mmodules on <var:Model>*/;
320 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:Array[MModule]>*/;
321 var_mmodules = var2;
322 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
323 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_mmodule__Model__mmodule_importation_hierarchy]))(var3) /* mmodule_importation_hierarchy on <var3:Model>*/;
324 ((void (*)(val*, val*))(var4->class->vft[COLOR_sorter__AbstractSorter__sort]))(var4, var_mmodules) /* sort on <var4:POSet[MModule]>*/;
325 var5 = NEW_array__Array(&type_array__Arrayparser_nodes__AModule);
326 ((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[AModule]>*/;
327 var_nmodules = var5;
328 var6 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mmodules) /* iterator on <var_mmodules:Array[MModule]>*/;
329 for(;;) {
330 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
331 if(!var7) break;
332 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
333 var_mm = var8;
334 var9 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
335 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_mm) /* [] on <var9:HashMap[MModule, AModule]>*/;
336 ((void (*)(val*, val*))(var_nmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_nmodules, var10) /* add on <var_nmodules:Array[AModule]>*/;
337 CONTINUE_label: (void)0;
338 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
339 }
340 BREAK_label: (void)0;
341 var11 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
342 ((void (*)(val*, val*))(var11->class->vft[COLOR_phase__ToolContext__run_phases]))(var11, var_nmodules) /* run_phases on <var11:ToolContext>*/;
343 var12 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
344 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ToolContext__opt_only_metamodel]))(var12) /* opt_only_metamodel on <var12:ToolContext>*/;
345 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_opts__Option__value]))(var13) /* value on <var13:OptionBool>*/;
346 var15 = ((struct instance_kernel__Bool*)var14)->value; /* autounbox from nullable Object to Bool */;
347 if (var15){
348 var16 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
349 if (varonce) {
350 var17 = varonce;
351 } else {
352 var18 = "*** ONLY METAMODEL";
353 var19 = 18;
354 var20 = string__NativeString__to_s_with_length(var18, var19);
355 var17 = var20;
356 varonce = var17;
357 }
358 var21 = 1;
359 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_toolcontext__ToolContext__info]))(var16, var17, var21) /* info on <var16:ToolContext>*/;
360 var22 = 0;
361 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var22) /* exit on <self:ModelBuilder>*/;
362 } else {
363 }
364 RET_LABEL:;
365 }
366 /* method modelbuilder#ModelBuilder#run_phases for (self: Object) */
367 void VIRTUAL_modelbuilder__ModelBuilder__run_phases(val* self) {
368 modelbuilder__ModelBuilder__run_phases(self);
369 RET_LABEL:;
370 }
371 /* method modelbuilder#ModelBuilder#init for (self: ModelBuilder, Model, ToolContext) */
372 void modelbuilder__ModelBuilder__init(val* self, val* p0, val* p1) {
373 val* var_model /* var model: Model */;
374 val* var_toolcontext /* var toolcontext: ToolContext */;
375 val* var /* : nullable ModelBuilder */;
376 val* var1 /* : null */;
377 short int var2 /* : Bool */;
378 val* var3 /* : Array[String] */;
379 val* var4 /* : OptionArray */;
380 val* var5 /* : nullable Object */;
381 static val* varonce;
382 val* var6 /* : String */;
383 char* var7 /* : NativeString */;
384 long var8 /* : Int */;
385 val* var9 /* : String */;
386 val* var10 /* : String */;
387 val* var_path_env /* var path_env: String */;
388 short int var11 /* : Bool */;
389 short int var12 /* : Bool */;
390 val* var13 /* : Array[String] */;
391 char var14 /* : Char */;
392 val* var15 /* : Array[String] */;
393 val* var16 /* : Pattern */;
394 static val* varonce17;
395 val* var18 /* : String */;
396 char* var19 /* : NativeString */;
397 long var20 /* : Int */;
398 val* var21 /* : String */;
399 val* var22 /* : String */;
400 short int var23 /* : Bool */;
401 short int var24 /* : Bool */;
402 val* var25 /* : Array[Object] */;
403 long var26 /* : Int */;
404 val* var_ /* var : Array[Object] */;
405 static val* varonce27;
406 val* var28 /* : String */;
407 char* var29 /* : NativeString */;
408 long var30 /* : Int */;
409 val* var31 /* : String */;
410 static val* varonce32;
411 val* var33 /* : String */;
412 char* var34 /* : NativeString */;
413 long var35 /* : Int */;
414 val* var36 /* : String */;
415 val* var37 /* : String */;
416 val* var_libname /* var libname: String */;
417 short int var38 /* : Bool */;
418 val* var39 /* : Array[String] */;
419 val* var40 /* : Array[Object] */;
420 long var41 /* : Int */;
421 val* var_42 /* var : Array[Object] */;
422 static val* varonce43;
423 val* var44 /* : String */;
424 char* var45 /* : NativeString */;
425 long var46 /* : Int */;
426 val* var47 /* : String */;
427 val* var48 /* : Sys */;
428 val* var49 /* : String */;
429 val* var50 /* : String */;
430 static val* varonce51;
431 val* var52 /* : String */;
432 char* var53 /* : NativeString */;
433 long var54 /* : Int */;
434 val* var55 /* : String */;
435 val* var56 /* : String */;
436 val* var_libname57 /* var libname: String */;
437 short int var58 /* : Bool */;
438 val* var59 /* : Array[String] */;
439 val* var60 /* : String */;
440 var_model = p0;
441 var_toolcontext = p1;
442 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model_61d]))(self, var_model) /* model= on <self:ModelBuilder>*/;
443 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:ModelBuilder>*/;
444 var = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real]))(var_toolcontext) /* modelbuilder_real on <var_toolcontext:ToolContext>*/;
445 var1 = NULL;
446 if (var == NULL) {
447 var2 = 1; /* is null */
448 } else {
449 var2 = 0; /* arg is null but recv is not */
450 }
451 if (!var2) {
452 fprintf(stderr, "Runtime error: %s", "Assert failed");
453 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 102);
454 show_backtrace(1);
455 }
456 ((void (*)(val*, val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real_61d]))(var_toolcontext, self) /* modelbuilder_real= on <var_toolcontext:ToolContext>*/;
457 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
458 var4 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__opt_path]))(var_toolcontext) /* opt_path on <var_toolcontext:ToolContext>*/;
459 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on <var4:OptionArray>*/;
460 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Sequence__append]))(var3, var5) /* append on <var3:Array[String]>*/;
461 if (varonce) {
462 var6 = varonce;
463 } else {
464 var7 = "NIT_PATH";
465 var8 = 8;
466 var9 = string__NativeString__to_s_with_length(var7, var8);
467 var6 = var9;
468 varonce = var6;
469 }
470 var10 = ((val* (*)(val*))(var6->class->vft[COLOR_environ__String__environ]))(var6) /* environ on <var6:String>*/;
471 var_path_env = var10;
472 var11 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on <var_path_env:String>*/;
473 var12 = !var11;
474 if (var12){
475 var13 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
476 var14 = ':';
477 var16 = BOX_kernel__Char(var14); /* autobox from Char to Pattern */
478 var15 = ((val* (*)(val*, val*))(var_path_env->class->vft[COLOR_string_search__String__split_with]))(var_path_env, var16) /* split_with on <var_path_env:String>*/;
479 ((void (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Sequence__append]))(var13, var15) /* append on <var13:Array[String]>*/;
480 } else {
481 }
482 if (varonce17) {
483 var18 = varonce17;
484 } else {
485 var19 = "NIT_DIR";
486 var20 = 7;
487 var21 = string__NativeString__to_s_with_length(var19, var20);
488 var18 = var21;
489 varonce17 = var18;
490 }
491 var22 = ((val* (*)(val*))(var18->class->vft[COLOR_environ__String__environ]))(var18) /* environ on <var18:String>*/;
492 var_path_env = var22;
493 var23 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on <var_path_env:String>*/;
494 var24 = !var23;
495 if (var24){
496 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
497 var26 = 3;
498 ((void (*)(val*, long))(var25->class->vft[COLOR_array__Array__with_capacity]))(var25, var26) /* with_capacity on <var25:Array[Object]>*/;
499 var_ = var25;
500 if (varonce27) {
501 var28 = varonce27;
502 } else {
503 var29 = "";
504 var30 = 0;
505 var31 = string__NativeString__to_s_with_length(var29, var30);
506 var28 = var31;
507 varonce27 = var28;
508 }
509 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var28) /* add on <var_:Array[Object]>*/;
510 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path_env) /* add on <var_:Array[Object]>*/;
511 if (varonce32) {
512 var33 = varonce32;
513 } else {
514 var34 = "/lib";
515 var35 = 4;
516 var36 = string__NativeString__to_s_with_length(var34, var35);
517 var33 = var36;
518 varonce32 = var33;
519 }
520 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var33) /* add on <var_:Array[Object]>*/;
521 var37 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
522 var_libname = var37;
523 var38 = ((short int (*)(val*))(var_libname->class->vft[COLOR_file__String__file_exists]))(var_libname) /* file_exists on <var_libname:String>*/;
524 if (var38){
525 var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
526 ((void (*)(val*, val*))(var39->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var39, var_libname) /* add on <var39:Array[String]>*/;
527 } else {
528 }
529 } else {
530 }
531 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
532 var41 = 3;
533 ((void (*)(val*, long))(var40->class->vft[COLOR_array__Array__with_capacity]))(var40, var41) /* with_capacity on <var40:Array[Object]>*/;
534 var_42 = var40;
535 if (varonce43) {
536 var44 = varonce43;
537 } else {
538 var45 = "";
539 var46 = 0;
540 var47 = string__NativeString__to_s_with_length(var45, var46);
541 var44 = var47;
542 varonce43 = var44;
543 }
544 ((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var44) /* add on <var_42:Array[Object]>*/;
545 var48 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
546 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Sys__program_name]))(var48) /* program_name on <var48:Sys>*/;
547 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_file__String__dirname]))(var49) /* dirname on <var49:String>*/;
548 ((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var50) /* add on <var_42:Array[Object]>*/;
549 if (varonce51) {
550 var52 = varonce51;
551 } else {
552 var53 = "/../lib";
553 var54 = 7;
554 var55 = string__NativeString__to_s_with_length(var53, var54);
555 var52 = var55;
556 varonce51 = var52;
557 }
558 ((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var52) /* add on <var_42:Array[Object]>*/;
559 var56 = ((val* (*)(val*))(var_42->class->vft[COLOR_string__Object__to_s]))(var_42) /* to_s on <var_42:Array[Object]>*/;
560 var_libname57 = var56;
561 var58 = ((short int (*)(val*))(var_libname57->class->vft[COLOR_file__String__file_exists]))(var_libname57) /* file_exists on <var_libname57:String>*/;
562 if (var58){
563 var59 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
564 var60 = ((val* (*)(val*))(var_libname57->class->vft[COLOR_file__String__simplify_path]))(var_libname57) /* simplify_path on <var_libname57:String>*/;
565 ((void (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var59, var60) /* add on <var59:Array[String]>*/;
566 } else {
567 }
568 RET_LABEL:;
569 }
570 /* method modelbuilder#ModelBuilder#init for (self: Object, Model, ToolContext) */
571 void VIRTUAL_modelbuilder__ModelBuilder__init(val* self, val* p0, val* p1) {
572 modelbuilder__ModelBuilder__init(self, p0, p1);
573 RET_LABEL:;
574 }
575 /* method modelbuilder#ModelBuilder#parse for (self: ModelBuilder, Sequence[String]): Array[MModule] */
576 val* modelbuilder__ModelBuilder__parse(val* self, val* p0) {
577 val* var /* : Array[MModule] */;
578 val* var_modules /* var modules: Sequence[String] */;
579 long var1 /* : Int */;
580 long var_time0 /* var time0: Int */;
581 val* var2 /* : ToolContext */;
582 static val* varonce;
583 val* var3 /* : String */;
584 char* var4 /* : NativeString */;
585 long var5 /* : Int */;
586 val* var6 /* : String */;
587 long var7 /* : Int */;
588 val* var8 /* : ArraySet[MModule] */;
589 val* var_mmodules /* var mmodules: ArraySet[MModule] */;
590 val* var9 /* : Iterator[nullable Object] */;
591 short int var10 /* : Bool */;
592 val* var11 /* : nullable Object */;
593 val* var_a /* var a: String */;
594 val* var12 /* : nullable AModule */;
595 val* var_nmodule /* var nmodule: nullable AModule */;
596 val* var13 /* : null */;
597 short int var14 /* : Bool */;
598 val* var15 /* : nullable MModule */;
599 long var16 /* : Int */;
600 long var_time1 /* var time1: Int */;
601 val* var17 /* : ToolContext */;
602 static val* varonce18;
603 val* var19 /* : String */;
604 char* var20 /* : NativeString */;
605 long var21 /* : Int */;
606 val* var22 /* : String */;
607 long var23 /* : Int */;
608 long var25 /* : Int */;
609 static val* varonce26;
610 val* var27 /* : String */;
611 char* var28 /* : NativeString */;
612 long var29 /* : Int */;
613 val* var30 /* : String */;
614 val* var31 /* : Array[Object] */;
615 long var32 /* : Int */;
616 val* var33 /* : NativeArray[Object] */;
617 val* var34 /* : Object */;
618 val* var35 /* : String */;
619 long var36 /* : Int */;
620 val* var37 /* : ToolContext */;
621 val* var38 /* : ToolContext */;
622 val* var39 /* : OptionBool */;
623 val* var40 /* : nullable Object */;
624 short int var41 /* : Bool */;
625 val* var42 /* : ToolContext */;
626 static val* varonce43;
627 val* var44 /* : String */;
628 char* var45 /* : NativeString */;
629 long var46 /* : Int */;
630 val* var47 /* : String */;
631 long var48 /* : Int */;
632 long var49 /* : Int */;
633 val* var50 /* : Array[nullable Object] */;
634 var_modules = p0;
635 var1 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
636 var_time0 = var1;
637 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
638 if (varonce) {
639 var3 = varonce;
640 } else {
641 var4 = "*** PARSE ***";
642 var5 = 13;
643 var6 = string__NativeString__to_s_with_length(var4, var5);
644 var3 = var6;
645 varonce = var3;
646 }
647 var7 = 1;
648 ((void (*)(val*, val*, long))(var2->class->vft[COLOR_toolcontext__ToolContext__info]))(var2, var3, var7) /* info on <var2:ToolContext>*/;
649 var8 = NEW_array__ArraySet(&type_array__ArraySetmmodule__MModule);
650 ((void (*)(val*))(var8->class->vft[COLOR_array__ArraySet__init]))(var8) /* init on <var8:ArraySet[MModule]>*/;
651 var_mmodules = var8;
652 var9 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on <var_modules:Sequence[String]>*/;
653 for(;;) {
654 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
655 if(!var10) break;
656 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
657 var_a = var11;
658 var12 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_a) /* load_module on <self:ModelBuilder>*/;
659 var_nmodule = var12;
660 var13 = NULL;
661 if (var_nmodule == NULL) {
662 var14 = 1; /* is null */
663 } else {
664 var14 = 0; /* arg is null but recv is not */
665 }
666 if (var14){
667 goto CONTINUE_label;
668 } else {
669 }
670 var15 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:nullable AModule(AModule)>*/;
671 if (var15 == NULL) {
672 fprintf(stderr, "Runtime error: %s", "Cast failed");
673 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 139);
674 show_backtrace(1);
675 }
676 ((void (*)(val*, val*))(var_mmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mmodules, var15) /* add on <var_mmodules:ArraySet[MModule]>*/;
677 CONTINUE_label: (void)0;
678 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
679 }
680 BREAK_label: (void)0;
681 var16 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
682 var_time1 = var16;
683 var17 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
684 if (varonce18) {
685 var19 = varonce18;
686 } else {
687 var20 = "*** END PARSE: ";
688 var21 = 15;
689 var22 = string__NativeString__to_s_with_length(var20, var21);
690 var19 = var22;
691 varonce18 = var19;
692 }
693 { /* Inline kernel#Int#- (var_time1,var_time0) */
694 var25 = var_time1 - var_time0;
695 var23 = var25;
696 goto RET_LABEL24;
697 RET_LABEL24:(void)0;
698 }
699 if (varonce26) {
700 var27 = varonce26;
701 } else {
702 var28 = " ***";
703 var29 = 4;
704 var30 = string__NativeString__to_s_with_length(var28, var29);
705 var27 = var30;
706 varonce26 = var27;
707 }
708 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
709 { /* var31 = array_instance Array[Object] */
710 var32 = 3;
711 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
712 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var19;
713 var34 = BOX_kernel__Int(var23); /* autobox from Int to Object */
714 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var34;
715 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var27;
716 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
717 }
718 var35 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
719 var36 = 2;
720 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_toolcontext__ToolContext__info]))(var17, var35, var36) /* info on <var17:ToolContext>*/;
721 var37 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
722 ((void (*)(val*))(var37->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(var37) /* check_errors on <var37:ToolContext>*/;
723 var38 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
724 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_modelbuilder__ToolContext__opt_only_parse]))(var38) /* opt_only_parse on <var38:ToolContext>*/;
725 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_opts__Option__value]))(var39) /* value on <var39:OptionBool>*/;
726 var41 = ((struct instance_kernel__Bool*)var40)->value; /* autounbox from nullable Object to Bool */;
727 if (var41){
728 var42 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
729 if (varonce43) {
730 var44 = varonce43;
731 } else {
732 var45 = "*** ONLY PARSE...";
733 var46 = 17;
734 var47 = string__NativeString__to_s_with_length(var45, var46);
735 var44 = var47;
736 varonce43 = var44;
737 }
738 var48 = 1;
739 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_toolcontext__ToolContext__info]))(var42, var44, var48) /* info on <var42:ToolContext>*/;
740 var49 = 0;
741 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var49) /* exit on <self:ModelBuilder>*/;
742 } else {
743 }
744 var50 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_array__Collection__to_a]))(var_mmodules) /* to_a on <var_mmodules:ArraySet[MModule]>*/;
745 var = var50;
746 goto RET_LABEL;
747 RET_LABEL:;
748 return var;
749 }
750 /* method modelbuilder#ModelBuilder#parse for (self: Object, Sequence[String]): Array[MModule] */
751 val* VIRTUAL_modelbuilder__ModelBuilder__parse(val* self, val* p0) {
752 val* var /* : Array[MModule] */;
753 val* var1 /* : Array[MModule] */;
754 var1 = modelbuilder__ModelBuilder__parse(self, p0);
755 var = var1;
756 RET_LABEL:;
757 return var;
758 }
759 /* method modelbuilder#ModelBuilder#try_get_mclass_by_name for (self: ModelBuilder, ANode, MModule, String): nullable MClass */
760 val* modelbuilder__ModelBuilder__try_get_mclass_by_name(val* self, val* p0, val* p1, val* p2) {
761 val* var /* : nullable MClass */;
762 val* var_anode /* var anode: ANode */;
763 val* var_mmodule /* var mmodule: MModule */;
764 val* var_name /* var name: String */;
765 val* var1 /* : Model */;
766 val* var2 /* : nullable Array[MClass] */;
767 val* var_classes /* var classes: nullable Array[MClass] */;
768 val* var3 /* : null */;
769 short int var4 /* : Bool */;
770 val* var5 /* : null */;
771 val* var6 /* : null */;
772 val* var_res /* var res: nullable MClass */;
773 val* var7 /* : Iterator[nullable Object] */;
774 short int var8 /* : Bool */;
775 val* var9 /* : nullable Object */;
776 val* var_mclass /* var mclass: MClass */;
777 val* var10 /* : POSetElement[MModule] */;
778 val* var11 /* : MModule */;
779 short int var12 /* : Bool */;
780 short int var13 /* : Bool */;
781 val* var14 /* : MModule */;
782 val* var15 /* : MVisibility */;
783 short int var16 /* : Bool */;
784 short int var17 /* : Bool */;
785 val* var18 /* : null */;
786 short int var19 /* : Bool */;
787 static val* varonce;
788 val* var20 /* : String */;
789 char* var21 /* : NativeString */;
790 long var22 /* : Int */;
791 val* var23 /* : String */;
792 static val* varonce24;
793 val* var25 /* : String */;
794 char* var26 /* : NativeString */;
795 long var27 /* : Int */;
796 val* var28 /* : String */;
797 val* var29 /* : String */;
798 static val* varonce30;
799 val* var31 /* : String */;
800 char* var32 /* : NativeString */;
801 long var33 /* : Int */;
802 val* var34 /* : String */;
803 val* var35 /* : String */;
804 val* var36 /* : Array[Object] */;
805 long var37 /* : Int */;
806 val* var38 /* : NativeArray[Object] */;
807 val* var39 /* : String */;
808 val* var40 /* : null */;
809 var_anode = p0;
810 var_mmodule = p1;
811 var_name = p2;
812 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
813 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var_name) /* get_mclasses_by_name on <var1:Model>*/;
814 var_classes = var2;
815 var3 = NULL;
816 if (var_classes == NULL) {
817 var4 = 1; /* is null */
818 } else {
819 var4 = 0; /* arg is null but recv is not */
820 }
821 if (var4){
822 var5 = NULL;
823 var = var5;
824 goto RET_LABEL;
825 } else {
826 }
827 var6 = NULL;
828 var_res = var6;
829 var7 = ((val* (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_classes) /* iterator on <var_classes:nullable Array[MClass](Array[MClass])>*/;
830 for(;;) {
831 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
832 if(!var8) break;
833 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
834 var_mclass = var9;
835 var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
836 var11 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
837 var12 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var11) /* <= on <var10:POSetElement[MModule]>*/;
838 var13 = !var12;
839 if (var13){
840 goto CONTINUE_label;
841 } else {
842 }
843 var14 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
844 var15 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__visibility]))(var_mclass) /* visibility on <var_mclass:MClass>*/;
845 var16 = ((short int (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__is_visible]))(var_mmodule, var14, var15) /* is_visible on <var_mmodule:MModule>*/;
846 var17 = !var16;
847 if (var17){
848 goto CONTINUE_label;
849 } else {
850 }
851 var18 = NULL;
852 if (var_res == NULL) {
853 var19 = 1; /* is null */
854 } else {
855 var19 = 0; /* arg is null but recv is not */
856 }
857 if (var19){
858 var_res = var_mclass;
859 } else {
860 if (varonce) {
861 var20 = varonce;
862 } else {
863 var21 = "Ambigous class name \'";
864 var22 = 21;
865 var23 = string__NativeString__to_s_with_length(var21, var22);
866 var20 = var23;
867 varonce = var20;
868 }
869 if (varonce24) {
870 var25 = varonce24;
871 } else {
872 var26 = "\'; conflict between ";
873 var27 = 20;
874 var28 = string__NativeString__to_s_with_length(var26, var27);
875 var25 = var28;
876 varonce24 = var25;
877 }
878 var29 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__full_name]))(var_mclass) /* full_name on <var_mclass:MClass>*/;
879 if (varonce30) {
880 var31 = varonce30;
881 } else {
882 var32 = " and ";
883 var33 = 5;
884 var34 = string__NativeString__to_s_with_length(var32, var33);
885 var31 = var34;
886 varonce30 = var31;
887 }
888 var35 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MClass__full_name]))(var_res) /* full_name on <var_res:nullable MClass(MClass)>*/;
889 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
890 { /* var36 = array_instance Array[Object] */
891 var37 = 6;
892 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
893 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var20;
894 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
895 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var25;
896 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var29;
897 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var31;
898 ((struct instance_array__NativeArray*)var38)->values[5] = (val*) var35;
899 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
900 }
901 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
902 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var39) /* error on <self:ModelBuilder>*/;
903 var40 = NULL;
904 var = var40;
905 goto RET_LABEL;
906 }
907 CONTINUE_label: (void)0;
908 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
909 }
910 BREAK_label: (void)0;
911 var = var_res;
912 goto RET_LABEL;
913 RET_LABEL:;
914 return var;
915 }
916 /* method modelbuilder#ModelBuilder#try_get_mclass_by_name for (self: Object, ANode, MModule, String): nullable MClass */
917 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mclass_by_name(val* self, val* p0, val* p1, val* p2) {
918 val* var /* : nullable MClass */;
919 val* var1 /* : nullable MClass */;
920 var1 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, p0, p1, p2);
921 var = var1;
922 RET_LABEL:;
923 return var;
924 }
925 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2 for (self: ModelBuilder, ANode, MModule, MType, String): nullable MProperty */
926 val* modelbuilder__ModelBuilder__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2, val* p3) {
927 val* var /* : nullable MProperty */;
928 val* var_anode /* var anode: ANode */;
929 val* var_mmodule /* var mmodule: MModule */;
930 val* var_mtype /* var mtype: MType */;
931 val* var_name /* var name: String */;
932 val* var1 /* : Model */;
933 val* var2 /* : nullable Array[MProperty] */;
934 val* var_props /* var props: nullable Array[MProperty] */;
935 val* var3 /* : null */;
936 short int var4 /* : Bool */;
937 val* var5 /* : null */;
938 val* var6 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
939 val* var7 /* : nullable Object */;
940 val* var_cache /* var cache: nullable MProperty */;
941 val* var8 /* : null */;
942 short int var9 /* : Bool */;
943 val* var10 /* : null */;
944 val* var_res /* var res: nullable MProperty */;
945 val* var11 /* : null */;
946 val* var_ress /* var ress: nullable Array[MProperty] */;
947 val* var12 /* : Iterator[nullable Object] */;
948 short int var13 /* : Bool */;
949 val* var14 /* : nullable Object */;
950 val* var_mprop /* var mprop: MProperty */;
951 short int var15 /* : Bool */;
952 short int var16 /* : Bool */;
953 val* var17 /* : MClassDef */;
954 val* var18 /* : MModule */;
955 val* var19 /* : MVisibility */;
956 short int var20 /* : Bool */;
957 short int var21 /* : Bool */;
958 val* var22 /* : null */;
959 short int var23 /* : Bool */;
960 val* var24 /* : MClassDef */;
961 val* var25 /* : MClassType */;
962 val* var_restype /* var restype: MClassType */;
963 val* var26 /* : MClassDef */;
964 val* var27 /* : MClassType */;
965 val* var_mproptype /* var mproptype: MClassType */;
966 val* var28 /* : null */;
967 short int var29 /* : Bool */;
968 val* var30 /* : null */;
969 short int var31 /* : Bool */;
970 val* var32 /* : null */;
971 short int var33 /* : Bool */;
972 val* var34 /* : Array[MProperty] */;
973 val* var35 /* : null */;
974 short int var36 /* : Bool */;
975 val* var37 /* : MClassDef */;
976 val* var38 /* : MClassType */;
977 val* var_restype39 /* var restype: MClassType */;
978 val* var40 /* : Iterator[nullable Object] */;
979 short int var41 /* : Bool */;
980 val* var42 /* : nullable Object */;
981 val* var_mprop43 /* var mprop: MProperty */;
982 val* var44 /* : MClassDef */;
983 val* var45 /* : MClassType */;
984 val* var_mproptype46 /* var mproptype: MClassType */;
985 val* var47 /* : null */;
986 short int var48 /* : Bool */;
987 short int var49 /* : Bool */;
988 static val* varonce;
989 val* var50 /* : String */;
990 char* var51 /* : NativeString */;
991 long var52 /* : Int */;
992 val* var53 /* : String */;
993 static val* varonce54;
994 val* var55 /* : String */;
995 char* var56 /* : NativeString */;
996 long var57 /* : Int */;
997 val* var58 /* : String */;
998 static val* varonce59;
999 val* var60 /* : String */;
1000 char* var61 /* : NativeString */;
1001 long var62 /* : Int */;
1002 val* var63 /* : String */;
1003 val* var64 /* : String */;
1004 static val* varonce65;
1005 val* var66 /* : String */;
1006 char* var67 /* : NativeString */;
1007 long var68 /* : Int */;
1008 val* var69 /* : String */;
1009 val* var70 /* : String */;
1010 val* var71 /* : Array[Object] */;
1011 long var72 /* : Int */;
1012 val* var73 /* : NativeArray[Object] */;
1013 val* var74 /* : String */;
1014 val* var75 /* : null */;
1015 val* var77 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1016 var_anode = p0;
1017 var_mmodule = p1;
1018 var_mtype = p2;
1019 var_name = p3;
1020 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
1021 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mproperties_by_name]))(var1, var_name) /* get_mproperties_by_name on <var1:Model>*/;
1022 var_props = var2;
1023 var3 = NULL;
1024 if (var_props == NULL) {
1025 var4 = 1; /* is null */
1026 } else {
1027 var4 = 0; /* arg is null but recv is not */
1028 }
1029 if (var4){
1030 var5 = NULL;
1031 var = var5;
1032 goto RET_LABEL;
1033 } else {
1034 }
1035 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache]))(self) /* try_get_mproperty_by_name2_cache on <self:ModelBuilder>*/;
1036 var7 = ((val* (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_more_collections__HashMap3___91d_93d]))(var6, var_mmodule, var_mtype, var_name) /* [] on <var6:HashMap3[MModule, MType, String, nullable MProperty]>*/;
1037 var_cache = var7;
1038 var8 = NULL;
1039 if (var_cache == NULL) {
1040 var9 = 0; /* is null */
1041 } else {
1042 var9 = 1; /* arg is null and recv is not */
1043 }
1044 if (var9){
1045 var = var_cache;
1046 goto RET_LABEL;
1047 } else {
1048 }
1049 var10 = NULL;
1050 var_res = var10;
1051 var11 = NULL;
1052 var_ress = var11;
1053 var12 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:nullable Array[MProperty](Array[MProperty])>*/;
1054 for(;;) {
1055 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
1056 if(!var13) break;
1057 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
1058 var_mprop = var14;
1059 var15 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, var_mprop) /* has_mproperty on <var_mtype:MType>*/;
1060 var16 = !var15;
1061 if (var16){
1062 goto CONTINUE_label;
1063 } else {
1064 }
1065 var17 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty>*/;
1066 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MClassDef__mmodule]))(var17) /* mmodule on <var17:MClassDef>*/;
1067 var19 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__visibility]))(var_mprop) /* visibility on <var_mprop:MProperty>*/;
1068 var20 = ((short int (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__is_visible]))(var_mmodule, var18, var19) /* is_visible on <var_mmodule:MModule>*/;
1069 var21 = !var20;
1070 if (var21){
1071 goto CONTINUE_label;
1072 } else {
1073 }
1074 var22 = NULL;
1075 if (var_res == NULL) {
1076 var23 = 1; /* is null */
1077 } else {
1078 var23 = 0; /* arg is null but recv is not */
1079 }
1080 if (var23){
1081 var_res = var_mprop;
1082 } else {
1083 var24 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on <var_res:nullable MProperty(MProperty)>*/;
1084 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__bound_mtype]))(var24) /* bound_mtype on <var24:MClassDef>*/;
1085 var_restype = var25;
1086 var26 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty>*/;
1087 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClassDef__bound_mtype]))(var26) /* bound_mtype on <var26:MClassDef>*/;
1088 var_mproptype = var27;
1089 var28 = NULL;
1090 var29 = ((short int (*)(val*, val*, val*, val*))(var_restype->class->vft[COLOR_model__MType__is_subtype]))(var_restype, var_mmodule, var28, var_mproptype) /* is_subtype on <var_restype:MClassType>*/;
1091 if (var29){
1092 } else {
1093 var30 = NULL;
1094 var31 = ((short int (*)(val*, val*, val*, val*))(var_mproptype->class->vft[COLOR_model__MType__is_subtype]))(var_mproptype, var_mmodule, var30, var_restype) /* is_subtype on <var_mproptype:MClassType>*/;
1095 if (var31){
1096 var_res = var_mprop;
1097 } else {
1098 var32 = NULL;
1099 if (var_ress == NULL) {
1100 var33 = 1; /* is null */
1101 } else {
1102 var33 = 0; /* arg is null but recv is not */
1103 }
1104 if (var33){
1105 var34 = NEW_array__Array(&type_array__Arraymodel__MProperty);
1106 ((void (*)(val*))(var34->class->vft[COLOR_array__Array__init]))(var34) /* init on <var34:Array[MProperty]>*/;
1107 var_ress = var34;
1108 } else {
1109 }
1110 ((void (*)(val*, val*))(var_ress->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ress, var_mprop) /* add on <var_ress:nullable Array[MProperty](Array[MProperty])>*/;
1111 }
1112 }
1113 }
1114 CONTINUE_label: (void)0;
1115 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
1116 }
1117 BREAK_label: (void)0;
1118 var35 = NULL;
1119 if (var_ress == NULL) {
1120 var36 = 0; /* is null */
1121 } else {
1122 var36 = 1; /* arg is null and recv is not */
1123 }
1124 if (var36){
1125 if (var_res == NULL) {
1126 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1127 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 217);
1128 show_backtrace(1);
1129 } else {
1130 var37 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on <var_res:nullable MProperty>*/;
1131 }
1132 var38 = ((val* (*)(val*))(var37->class->vft[COLOR_model__MClassDef__bound_mtype]))(var37) /* bound_mtype on <var37:MClassDef>*/;
1133 var_restype39 = var38;
1134 var40 = ((val* (*)(val*))(var_ress->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_ress) /* iterator on <var_ress:nullable Array[MProperty](Array[MProperty])>*/;
1135 for(;;) {
1136 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
1137 if(!var41) break;
1138 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
1139 var_mprop43 = var42;
1140 var44 = ((val* (*)(val*))(var_mprop43->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop43) /* intro_mclassdef on <var_mprop43:MProperty>*/;
1141 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_model__MClassDef__bound_mtype]))(var44) /* bound_mtype on <var44:MClassDef>*/;
1142 var_mproptype46 = var45;
1143 var47 = NULL;
1144 var48 = ((short int (*)(val*, val*, val*, val*))(var_restype39->class->vft[COLOR_model__MType__is_subtype]))(var_restype39, var_mmodule, var47, var_mproptype46) /* is_subtype on <var_restype39:MClassType>*/;
1145 var49 = !var48;
1146 if (var49){
1147 if (varonce) {
1148 var50 = varonce;
1149 } else {
1150 var51 = "Ambigous property name \'";
1151 var52 = 24;
1152 var53 = string__NativeString__to_s_with_length(var51, var52);
1153 var50 = var53;
1154 varonce = var50;
1155 }
1156 if (varonce54) {
1157 var55 = varonce54;
1158 } else {
1159 var56 = "\' for ";
1160 var57 = 6;
1161 var58 = string__NativeString__to_s_with_length(var56, var57);
1162 var55 = var58;
1163 varonce54 = var55;
1164 }
1165 if (varonce59) {
1166 var60 = varonce59;
1167 } else {
1168 var61 = "; conflict between ";
1169 var62 = 19;
1170 var63 = string__NativeString__to_s_with_length(var61, var62);
1171 var60 = var63;
1172 varonce59 = var60;
1173 }
1174 var64 = ((val* (*)(val*))(var_mprop43->class->vft[COLOR_model__MProperty__full_name]))(var_mprop43) /* full_name on <var_mprop43:MProperty>*/;
1175 if (varonce65) {
1176 var66 = varonce65;
1177 } else {
1178 var67 = " and ";
1179 var68 = 5;
1180 var69 = string__NativeString__to_s_with_length(var67, var68);
1181 var66 = var69;
1182 varonce65 = var66;
1183 }
1184 if (var_res == NULL) {
1185 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1186 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 221);
1187 show_backtrace(1);
1188 } else {
1189 var70 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__full_name]))(var_res) /* full_name on <var_res:nullable MProperty>*/;
1190 }
1191 var71 = NEW_array__Array(&type_array__Arraykernel__Object);
1192 { /* var71 = array_instance Array[Object] */
1193 var72 = 8;
1194 var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
1195 ((struct instance_array__NativeArray*)var73)->values[0] = (val*) var50;
1196 ((struct instance_array__NativeArray*)var73)->values[1] = (val*) var_name;
1197 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var55;
1198 ((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_mtype;
1199 ((struct instance_array__NativeArray*)var73)->values[4] = (val*) var60;
1200 ((struct instance_array__NativeArray*)var73)->values[5] = (val*) var64;
1201 ((struct instance_array__NativeArray*)var73)->values[6] = (val*) var66;
1202 ((struct instance_array__NativeArray*)var73)->values[7] = (val*) var70;
1203 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
1204 }
1205 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
1206 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var74) /* error on <self:ModelBuilder>*/;
1207 var75 = NULL;
1208 var = var75;
1209 goto RET_LABEL;
1210 } else {
1211 }
1212 CONTINUE_label76: (void)0;
1213 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
1214 }
1215 BREAK_label76: (void)0;
1216 } else {
1217 }
1218 var77 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache]))(self) /* try_get_mproperty_by_name2_cache on <self:ModelBuilder>*/;
1219 ((void (*)(val*, val*, val*, val*, val*))(var77->class->vft[COLOR_more_collections__HashMap3___91d_93d_61d]))(var77, var_mmodule, var_mtype, var_name, var_res) /* []= on <var77:HashMap3[MModule, MType, String, nullable MProperty]>*/;
1220 var = var_res;
1221 goto RET_LABEL;
1222 RET_LABEL:;
1223 return var;
1224 }
1225 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2 for (self: Object, ANode, MModule, MType, String): nullable MProperty */
1226 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2, val* p3) {
1227 val* var /* : nullable MProperty */;
1228 val* var1 /* : nullable MProperty */;
1229 var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2(self, p0, p1, p2, p3);
1230 var = var1;
1231 RET_LABEL:;
1232 return var;
1233 }
1234 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache for (self: ModelBuilder): HashMap3[MModule, MType, String, nullable MProperty] */
1235 val* modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(val* self) {
1236 val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1237 val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1238 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dtry_get_mproperty_by_name2_cache].val; /* @try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
1239 if (var1 == NULL) {
1240 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @try_get_mproperty_by_name2_cache");
1241 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 231);
1242 show_backtrace(1);
1243 }
1244 var = var1;
1245 RET_LABEL:;
1246 return var;
1247 }
1248 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache for (self: Object): HashMap3[MModule, MType, String, nullable MProperty] */
1249 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(val* self) {
1250 val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1251 val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1252 var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(self);
1253 var = var1;
1254 RET_LABEL:;
1255 return var;
1256 }
1257 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache= for (self: ModelBuilder, HashMap3[MModule, MType, String, nullable MProperty]) */
1258 void modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(val* self, val* p0) {
1259 self->attrs[COLOR_modelbuilder__ModelBuilder___64dtry_get_mproperty_by_name2_cache].val = p0; /* @try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
1260 RET_LABEL:;
1261 }
1262 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache= for (self: Object, HashMap3[MModule, MType, String, nullable MProperty]) */
1263 void VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(val* self, val* p0) {
1264 modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(self, p0);
1265 RET_LABEL:;
1266 }
1267 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name for (self: ModelBuilder, ANode, MClassDef, String): nullable MProperty */
1268 val* modelbuilder__ModelBuilder__try_get_mproperty_by_name(val* self, val* p0, val* p1, val* p2) {
1269 val* var /* : nullable MProperty */;
1270 val* var_anode /* var anode: ANode */;
1271 val* var_mclassdef /* var mclassdef: MClassDef */;
1272 val* var_name /* var name: String */;
1273 val* var1 /* : MModule */;
1274 val* var2 /* : MClassType */;
1275 val* var3 /* : nullable MProperty */;
1276 var_anode = p0;
1277 var_mclassdef = p1;
1278 var_name = p2;
1279 var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
1280 var2 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef) /* bound_mtype on <var_mclassdef:MClassDef>*/;
1281 var3 = ((val* (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name2]))(self, var_anode, var1, var2, var_name) /* try_get_mproperty_by_name2 on <self:ModelBuilder>*/;
1282 var = var3;
1283 goto RET_LABEL;
1284 RET_LABEL:;
1285 return var;
1286 }
1287 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name for (self: Object, ANode, MClassDef, String): nullable MProperty */
1288 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name(val* self, val* p0, val* p1, val* p2) {
1289 val* var /* : nullable MProperty */;
1290 val* var1 /* : nullable MProperty */;
1291 var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name(self, p0, p1, p2);
1292 var = var1;
1293 RET_LABEL:;
1294 return var;
1295 }
1296 /* method modelbuilder#ModelBuilder#paths for (self: ModelBuilder): Array[String] */
1297 val* modelbuilder__ModelBuilder__paths(val* self) {
1298 val* var /* : Array[String] */;
1299 val* var1 /* : Array[String] */;
1300 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dpaths].val; /* @paths on <self:ModelBuilder> */
1301 if (var1 == NULL) {
1302 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @paths");
1303 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 240);
1304 show_backtrace(1);
1305 }
1306 var = var1;
1307 RET_LABEL:;
1308 return var;
1309 }
1310 /* method modelbuilder#ModelBuilder#paths for (self: Object): Array[String] */
1311 val* VIRTUAL_modelbuilder__ModelBuilder__paths(val* self) {
1312 val* var /* : Array[String] */;
1313 val* var1 /* : Array[String] */;
1314 var1 = modelbuilder__ModelBuilder__paths(self);
1315 var = var1;
1316 RET_LABEL:;
1317 return var;
1318 }
1319 /* method modelbuilder#ModelBuilder#paths= for (self: ModelBuilder, Array[String]) */
1320 void modelbuilder__ModelBuilder__paths_61d(val* self, val* p0) {
1321 self->attrs[COLOR_modelbuilder__ModelBuilder___64dpaths].val = p0; /* @paths on <self:ModelBuilder> */
1322 RET_LABEL:;
1323 }
1324 /* method modelbuilder#ModelBuilder#paths= for (self: Object, Array[String]) */
1325 void VIRTUAL_modelbuilder__ModelBuilder__paths_61d(val* self, val* p0) {
1326 modelbuilder__ModelBuilder__paths_61d(self, p0);
1327 RET_LABEL:;
1328 }
1329 /* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: ModelBuilder, ANode, nullable MModule, String): nullable MModule */
1330 val* modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
1331 val* var /* : nullable MModule */;
1332 val* var_anode /* var anode: ANode */;
1333 val* var_mmodule /* var mmodule: nullable MModule */;
1334 val* var_name /* var name: String */;
1335 val* var1 /* : Array[String] */;
1336 val* var_tries /* var tries: Array[String] */;
1337 val* var2 /* : null */;
1338 short int var3 /* : Bool */;
1339 val* var4 /* : nullable MGroup */;
1340 val* var_mgroup /* var mgroup: nullable MGroup */;
1341 val* var5 /* : null */;
1342 short int var6 /* : Bool */;
1343 val* var7 /* : nullable String */;
1344 val* var_dirname /* var dirname: nullable String */;
1345 val* var8 /* : null */;
1346 short int var9 /* : Bool */;
1347 static val* varonce;
1348 val* var10 /* : String */;
1349 char* var11 /* : NativeString */;
1350 long var12 /* : Int */;
1351 val* var13 /* : String */;
1352 short int var14 /* : Bool */;
1353 static val* varonce15;
1354 val* var16 /* : String */;
1355 char* var17 /* : NativeString */;
1356 long var18 /* : Int */;
1357 val* var19 /* : String */;
1358 val* var20 /* : String */;
1359 val* var21 /* : String */;
1360 static val* varonce22;
1361 val* var23 /* : String */;
1362 char* var24 /* : NativeString */;
1363 long var25 /* : Int */;
1364 val* var26 /* : String */;
1365 val* var27 /* : String */;
1366 val* var_try_file /* var try_file: String */;
1367 short int var28 /* : Bool */;
1368 val* var29 /* : String */;
1369 val* var30 /* : nullable AModule */;
1370 val* var_res /* var res: nullable AModule */;
1371 val* var31 /* : null */;
1372 short int var32 /* : Bool */;
1373 val* var33 /* : null */;
1374 val* var34 /* : nullable MModule */;
1375 static val* varonce35;
1376 val* var36 /* : String */;
1377 char* var37 /* : NativeString */;
1378 long var38 /* : Int */;
1379 val* var39 /* : String */;
1380 val* var40 /* : String */;
1381 val* var41 /* : String */;
1382 static val* varonce42;
1383 val* var43 /* : String */;
1384 char* var44 /* : NativeString */;
1385 long var45 /* : Int */;
1386 val* var46 /* : String */;
1387 val* var47 /* : String */;
1388 val* var48 /* : String */;
1389 static val* varonce49;
1390 val* var50 /* : String */;
1391 char* var51 /* : NativeString */;
1392 long var52 /* : Int */;
1393 val* var53 /* : String */;
1394 val* var54 /* : String */;
1395 short int var55 /* : Bool */;
1396 static val* varonce56;
1397 val* var57 /* : String */;
1398 char* var58 /* : NativeString */;
1399 long var59 /* : Int */;
1400 val* var60 /* : String */;
1401 val* var61 /* : String */;
1402 val* var62 /* : String */;
1403 val* var63 /* : nullable MGroup */;
1404 val* var64 /* : String */;
1405 val* var65 /* : nullable AModule */;
1406 val* var_res66 /* var res: nullable AModule */;
1407 val* var67 /* : null */;
1408 short int var68 /* : Bool */;
1409 val* var69 /* : null */;
1410 val* var70 /* : nullable MModule */;
1411 val* var71 /* : nullable MGroup */;
1412 val* var72 /* : Array[String] */;
1413 val* var_lookpaths /* var lookpaths: Array[String] */;
1414 short int var73 /* : Bool */;
1415 val* var74 /* : null */;
1416 short int var75 /* : Bool */;
1417 short int var_ /* var : Bool */;
1418 val* var76 /* : nullable MGroup */;
1419 val* var77 /* : null */;
1420 short int var78 /* : Bool */;
1421 val* var79 /* : nullable MGroup */;
1422 val* var80 /* : MProject */;
1423 val* var81 /* : nullable MGroup */;
1424 val* var82 /* : nullable String */;
1425 val* var_dirname83 /* var dirname: nullable String */;
1426 val* var84 /* : null */;
1427 short int var85 /* : Bool */;
1428 static val* varonce86;
1429 val* var87 /* : String */;
1430 char* var88 /* : NativeString */;
1431 long var89 /* : Int */;
1432 val* var90 /* : String */;
1433 val* var91 /* : String */;
1434 val* var92 /* : String */;
1435 short int var93 /* : Bool */;
1436 short int var94 /* : Bool */;
1437 short int var95 /* : Bool */;
1438 short int var_96 /* var : Bool */;
1439 short int var97 /* : Bool */;
1440 val* var98 /* : Array[nullable Object] */;
1441 val* var99 /* : null */;
1442 val* var_candidate /* var candidate: nullable String */;
1443 val* var100 /* : Iterator[nullable Object] */;
1444 short int var101 /* : Bool */;
1445 val* var102 /* : nullable Object */;
1446 val* var_dirname103 /* var dirname: String */;
1447 static val* varonce104;
1448 val* var105 /* : String */;
1449 char* var106 /* : NativeString */;
1450 long var107 /* : Int */;
1451 val* var108 /* : String */;
1452 val* var109 /* : String */;
1453 val* var110 /* : String */;
1454 static val* varonce111;
1455 val* var112 /* : String */;
1456 char* var113 /* : NativeString */;
1457 long var114 /* : Int */;
1458 val* var115 /* : String */;
1459 val* var116 /* : String */;
1460 val* var117 /* : String */;
1461 val* var_try_file118 /* var try_file: String */;
1462 short int var119 /* : Bool */;
1463 val* var120 /* : null */;
1464 short int var121 /* : Bool */;
1465 short int var122 /* : Bool */;
1466 val* var123 /* : String */;
1467 val* var_abs_candidate /* var abs_candidate: String */;
1468 val* var124 /* : String */;
1469 val* var_abs_try_file /* var abs_try_file: String */;
1470 short int var125 /* : Bool */;
1471 static val* varonce126;
1472 val* var127 /* : String */;
1473 char* var128 /* : NativeString */;
1474 long var129 /* : Int */;
1475 val* var130 /* : String */;
1476 static val* varonce131;
1477 val* var132 /* : String */;
1478 char* var133 /* : NativeString */;
1479 long var134 /* : Int */;
1480 val* var135 /* : String */;
1481 static val* varonce136;
1482 val* var137 /* : String */;
1483 char* var138 /* : NativeString */;
1484 long var139 /* : Int */;
1485 val* var140 /* : String */;
1486 val* var141 /* : Array[Object] */;
1487 long var142 /* : Int */;
1488 val* var143 /* : NativeArray[Object] */;
1489 val* var144 /* : String */;
1490 static val* varonce145;
1491 val* var146 /* : String */;
1492 char* var147 /* : NativeString */;
1493 long var148 /* : Int */;
1494 val* var149 /* : String */;
1495 val* var150 /* : String */;
1496 val* var151 /* : String */;
1497 static val* varonce152;
1498 val* var153 /* : String */;
1499 char* var154 /* : NativeString */;
1500 long var155 /* : Int */;
1501 val* var156 /* : String */;
1502 val* var157 /* : String */;
1503 val* var158 /* : String */;
1504 static val* varonce159;
1505 val* var160 /* : String */;
1506 char* var161 /* : NativeString */;
1507 long var162 /* : Int */;
1508 val* var163 /* : String */;
1509 val* var164 /* : String */;
1510 val* var165 /* : String */;
1511 short int var166 /* : Bool */;
1512 val* var167 /* : null */;
1513 short int var168 /* : Bool */;
1514 short int var169 /* : Bool */;
1515 val* var170 /* : String */;
1516 val* var_abs_candidate171 /* var abs_candidate: String */;
1517 val* var172 /* : String */;
1518 val* var_abs_try_file173 /* var abs_try_file: String */;
1519 short int var174 /* : Bool */;
1520 static val* varonce175;
1521 val* var176 /* : String */;
1522 char* var177 /* : NativeString */;
1523 long var178 /* : Int */;
1524 val* var179 /* : String */;
1525 static val* varonce180;
1526 val* var181 /* : String */;
1527 char* var182 /* : NativeString */;
1528 long var183 /* : Int */;
1529 val* var184 /* : String */;
1530 static val* varonce185;
1531 val* var186 /* : String */;
1532 char* var187 /* : NativeString */;
1533 long var188 /* : Int */;
1534 val* var189 /* : String */;
1535 val* var190 /* : Array[Object] */;
1536 long var191 /* : Int */;
1537 val* var192 /* : NativeArray[Object] */;
1538 val* var193 /* : String */;
1539 val* var195 /* : null */;
1540 short int var196 /* : Bool */;
1541 val* var197 /* : null */;
1542 short int var198 /* : Bool */;
1543 static val* varonce199;
1544 val* var200 /* : String */;
1545 char* var201 /* : NativeString */;
1546 long var202 /* : Int */;
1547 val* var203 /* : String */;
1548 static val* varonce204;
1549 val* var205 /* : String */;
1550 char* var206 /* : NativeString */;
1551 long var207 /* : Int */;
1552 val* var208 /* : String */;
1553 static val* varonce209;
1554 val* var210 /* : String */;
1555 char* var211 /* : NativeString */;
1556 long var212 /* : Int */;
1557 val* var213 /* : String */;
1558 static val* varonce214;
1559 val* var215 /* : String */;
1560 char* var216 /* : NativeString */;
1561 long var217 /* : Int */;
1562 val* var218 /* : String */;
1563 val* var219 /* : String */;
1564 val* var220 /* : Array[Object] */;
1565 long var221 /* : Int */;
1566 val* var222 /* : NativeArray[Object] */;
1567 val* var223 /* : String */;
1568 static val* varonce224;
1569 val* var225 /* : String */;
1570 char* var226 /* : NativeString */;
1571 long var227 /* : Int */;
1572 val* var228 /* : String */;
1573 static val* varonce229;
1574 val* var230 /* : String */;
1575 char* var231 /* : NativeString */;
1576 long var232 /* : Int */;
1577 val* var233 /* : String */;
1578 static val* varonce234;
1579 val* var235 /* : String */;
1580 char* var236 /* : NativeString */;
1581 long var237 /* : Int */;
1582 val* var238 /* : String */;
1583 val* var239 /* : String */;
1584 val* var240 /* : Array[Object] */;
1585 long var241 /* : Int */;
1586 val* var242 /* : NativeArray[Object] */;
1587 val* var243 /* : String */;
1588 val* var244 /* : null */;
1589 val* var245 /* : nullable AModule */;
1590 val* var_res246 /* var res: nullable AModule */;
1591 val* var247 /* : null */;
1592 short int var248 /* : Bool */;
1593 val* var249 /* : null */;
1594 val* var250 /* : nullable MModule */;
1595 var_anode = p0;
1596 var_mmodule = p1;
1597 var_name = p2;
1598 var1 = NEW_array__Array(&type_array__Arraystring__String);
1599 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[String]>*/;
1600 var_tries = var1;
1601 var2 = NULL;
1602 if (var_mmodule == NULL) {
1603 var3 = 0; /* is null */
1604 } else {
1605 var3 = 1; /* arg is null and recv is not */
1606 }
1607 if (var3){
1608 var4 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__mgroup]))(var_mmodule) /* mgroup on <var_mmodule:nullable MModule(MModule)>*/;
1609 var_mgroup = var4;
1610 for(;;) {
1611 var5 = NULL;
1612 if (var_mgroup == NULL) {
1613 var6 = 0; /* is null */
1614 } else {
1615 var6 = 1; /* arg is null and recv is not */
1616 }
1617 if (!var6) break;
1618 var7 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__filepath]))(var_mgroup) /* filepath on <var_mgroup:nullable MGroup(MGroup)>*/;
1619 var_dirname = var7;
1620 var8 = NULL;
1621 if (var_dirname == NULL) {
1622 var9 = 1; /* is null */
1623 } else {
1624 var9 = 0; /* arg is null but recv is not */
1625 }
1626 if (var9){
1627 goto BREAK_label;
1628 } else {
1629 }
1630 if (varonce) {
1631 var10 = varonce;
1632 } else {
1633 var11 = ".nit";
1634 var12 = 4;
1635 var13 = string__NativeString__to_s_with_length(var11, var12);
1636 var10 = var13;
1637 varonce = var10;
1638 }
1639 var14 = ((short int (*)(val*, val*))(var_dirname->class->vft[COLOR_string__AbstractString__has_suffix]))(var_dirname, var10) /* has_suffix on <var_dirname:nullable String(String)>*/;
1640 if (var14){
1641 goto BREAK_label;
1642 } else {
1643 }
1644 if (varonce15) {
1645 var16 = varonce15;
1646 } else {
1647 var17 = "/";
1648 var18 = 1;
1649 var19 = string__NativeString__to_s_with_length(var17, var18);
1650 var16 = var19;
1651 varonce15 = var16;
1652 }
1653 var20 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var16) /* + on <var_dirname:nullable String(String)>*/;
1654 var21 = ((val* (*)(val*, val*))(var20->class->vft[COLOR_string__String___43d]))(var20, var_name) /* + on <var20:String>*/;
1655 if (varonce22) {
1656 var23 = varonce22;
1657 } else {
1658 var24 = ".nit";
1659 var25 = 4;
1660 var26 = string__NativeString__to_s_with_length(var24, var25);
1661 var23 = var26;
1662 varonce22 = var23;
1663 }
1664 var27 = ((val* (*)(val*, val*))(var21->class->vft[COLOR_string__String___43d]))(var21, var23) /* + on <var21:String>*/;
1665 var_try_file = var27;
1666 ((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file) /* add on <var_tries:Array[String]>*/;
1667 var28 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on <var_try_file:String>*/;
1668 if (var28){
1669 var29 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on <var_try_file:String>*/;
1670 var30 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var29) /* load_module on <self:ModelBuilder>*/;
1671 var_res = var30;
1672 var31 = NULL;
1673 if (var_res == NULL) {
1674 var32 = 1; /* is null */
1675 } else {
1676 var32 = 0; /* arg is null but recv is not */
1677 }
1678 if (var32){
1679 var33 = NULL;
1680 var = var33;
1681 goto RET_LABEL;
1682 } else {
1683 }
1684 var34 = ((val* (*)(val*))(var_res->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res) /* mmodule on <var_res:nullable AModule(AModule)>*/;
1685 if (var34 == NULL) {
1686 fprintf(stderr, "Runtime error: %s", "Cast failed");
1687 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 272);
1688 show_backtrace(1);
1689 }
1690 var = var34;
1691 goto RET_LABEL;
1692 } else {
1693 }
1694 if (varonce35) {
1695 var36 = varonce35;
1696 } else {
1697 var37 = "/";
1698 var38 = 1;
1699 var39 = string__NativeString__to_s_with_length(var37, var38);
1700 var36 = var39;
1701 varonce35 = var36;
1702 }
1703 var40 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var36) /* + on <var_dirname:nullable String(String)>*/;
1704 var41 = ((val* (*)(val*, val*))(var40->class->vft[COLOR_string__String___43d]))(var40, var_name) /* + on <var40:String>*/;
1705 if (varonce42) {
1706 var43 = varonce42;
1707 } else {
1708 var44 = "/";
1709 var45 = 1;
1710 var46 = string__NativeString__to_s_with_length(var44, var45);
1711 var43 = var46;
1712 varonce42 = var43;
1713 }
1714 var47 = ((val* (*)(val*, val*))(var41->class->vft[COLOR_string__String___43d]))(var41, var43) /* + on <var41:String>*/;
1715 var48 = ((val* (*)(val*, val*))(var47->class->vft[COLOR_string__String___43d]))(var47, var_name) /* + on <var47:String>*/;
1716 if (varonce49) {
1717 var50 = varonce49;
1718 } else {
1719 var51 = ".nit";
1720 var52 = 4;
1721 var53 = string__NativeString__to_s_with_length(var51, var52);
1722 var50 = var53;
1723 varonce49 = var50;
1724 }
1725 var54 = ((val* (*)(val*, val*))(var48->class->vft[COLOR_string__String___43d]))(var48, var50) /* + on <var48:String>*/;
1726 var_try_file = var54;
1727 var55 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on <var_try_file:String>*/;
1728 if (var55){
1729 if (varonce56) {
1730 var57 = varonce56;
1731 } else {
1732 var58 = "/";
1733 var59 = 1;
1734 var60 = string__NativeString__to_s_with_length(var58, var59);
1735 var57 = var60;
1736 varonce56 = var57;
1737 }
1738 var61 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var57) /* + on <var_dirname:nullable String(String)>*/;
1739 var62 = ((val* (*)(val*, val*))(var61->class->vft[COLOR_string__String___43d]))(var61, var_name) /* + on <var61:String>*/;
1740 var63 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mgroup]))(self, var62) /* get_mgroup on <self:ModelBuilder>*/;
1741 var_mgroup = var63;
1742 var64 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on <var_try_file:String>*/;
1743 var65 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var64) /* load_module on <self:ModelBuilder>*/;
1744 var_res66 = var65;
1745 var67 = NULL;
1746 if (var_res66 == NULL) {
1747 var68 = 1; /* is null */
1748 } else {
1749 var68 = 0; /* arg is null but recv is not */
1750 }
1751 if (var68){
1752 var69 = NULL;
1753 var = var69;
1754 goto RET_LABEL;
1755 } else {
1756 }
1757 var70 = ((val* (*)(val*))(var_res66->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res66) /* mmodule on <var_res66:nullable AModule(AModule)>*/;
1758 if (var70 == NULL) {
1759 fprintf(stderr, "Runtime error: %s", "Cast failed");
1760 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 281);
1761 show_backtrace(1);
1762 }
1763 var = var70;
1764 goto RET_LABEL;
1765 } else {
1766 }
1767 var71 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__parent]))(var_mgroup) /* parent on <var_mgroup:nullable MGroup(MGroup)>*/;
1768 var_mgroup = var71;
1769 CONTINUE_label: (void)0;
1770 }
1771 BREAK_label: (void)0;
1772 } else {
1773 }
1774 var72 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
1775 var_lookpaths = var72;
1776 var74 = NULL;
1777 if (var_mmodule == NULL) {
1778 var75 = 0; /* is null */
1779 } else {
1780 var75 = 1; /* arg is null and recv is not */
1781 }
1782 var_ = var75;
1783 if (var75){
1784 var76 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__mgroup]))(var_mmodule) /* mgroup on <var_mmodule:nullable MModule(MModule)>*/;
1785 var77 = NULL;
1786 if (var76 == NULL) {
1787 var78 = 0; /* is null */
1788 } else {
1789 var78 = 1; /* arg is null and recv is not */
1790 }
1791 var73 = var78;
1792 } else {
1793 var73 = var_;
1794 }
1795 if (var73){
1796 var79 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__mgroup]))(var_mmodule) /* mgroup on <var_mmodule:nullable MModule(MModule)>*/;
1797 if (var79 == NULL) {
1798 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1799 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 294);
1800 show_backtrace(1);
1801 } else {
1802 var80 = ((val* (*)(val*))(var79->class->vft[COLOR_mproject__MGroup__mproject]))(var79) /* mproject on <var79:nullable MGroup>*/;
1803 }
1804 var81 = ((val* (*)(val*))(var80->class->vft[COLOR_mproject__MProject__root]))(var80) /* root on <var80:MProject>*/;
1805 if (var81 == NULL) {
1806 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1807 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 294);
1808 show_backtrace(1);
1809 } else {
1810 var82 = ((val* (*)(val*))(var81->class->vft[COLOR_mproject__MGroup__filepath]))(var81) /* filepath on <var81:nullable MGroup>*/;
1811 }
1812 var_dirname83 = var82;
1813 var84 = NULL;
1814 if (var_dirname83 == NULL) {
1815 var85 = 0; /* is null */
1816 } else {
1817 var85 = 1; /* arg is null and recv is not */
1818 }
1819 if (var85){
1820 if (varonce86) {
1821 var87 = varonce86;
1822 } else {
1823 var88 = "..";
1824 var89 = 2;
1825 var90 = string__NativeString__to_s_with_length(var88, var89);
1826 var87 = var90;
1827 varonce86 = var87;
1828 }
1829 var91 = ((val* (*)(val*, val*))(var_dirname83->class->vft[COLOR_file__String__join_path]))(var_dirname83, var87) /* join_path on <var_dirname83:nullable String(String)>*/;
1830 var92 = ((val* (*)(val*))(var91->class->vft[COLOR_file__String__simplify_path]))(var91) /* simplify_path on <var91:String>*/;
1831 var_dirname83 = var92;
1832 var94 = ((short int (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__has]))(var_lookpaths, var_dirname83) /* has on <var_lookpaths:Array[String]>*/;
1833 var95 = !var94;
1834 var_96 = var95;
1835 if (var95){
1836 var97 = ((short int (*)(val*))(var_dirname83->class->vft[COLOR_file__String__file_exists]))(var_dirname83) /* file_exists on <var_dirname83:nullable String(String)>*/;
1837 var93 = var97;
1838 } else {
1839 var93 = var_96;
1840 }
1841 if (var93){
1842 var98 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_array__Collection__to_a]))(var_lookpaths) /* to_a on <var_lookpaths:Array[String]>*/;
1843 var_lookpaths = var98;
1844 ((void (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_lookpaths, var_dirname83) /* add on <var_lookpaths:Array[String]>*/;
1845 } else {
1846 }
1847 } else {
1848 }
1849 } else {
1850 }
1851 var99 = NULL;
1852 var_candidate = var99;
1853 var100 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lookpaths) /* iterator on <var_lookpaths:Array[String]>*/;
1854 for(;;) {
1855 var101 = ((short int (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var100) /* is_ok on <var100:Iterator[nullable Object]>*/;
1856 if(!var101) break;
1857 var102 = ((val* (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__item]))(var100) /* item on <var100:Iterator[nullable Object]>*/;
1858 var_dirname103 = var102;
1859 if (varonce104) {
1860 var105 = varonce104;
1861 } else {
1862 var106 = "/";
1863 var107 = 1;
1864 var108 = string__NativeString__to_s_with_length(var106, var107);
1865 var105 = var108;
1866 varonce104 = var105;
1867 }
1868 var109 = ((val* (*)(val*, val*))(var_dirname103->class->vft[COLOR_string__String___43d]))(var_dirname103, var105) /* + on <var_dirname103:String>*/;
1869 var110 = ((val* (*)(val*, val*))(var109->class->vft[COLOR_string__String___43d]))(var109, var_name) /* + on <var109:String>*/;
1870 if (varonce111) {
1871 var112 = varonce111;
1872 } else {
1873 var113 = ".nit";
1874 var114 = 4;
1875 var115 = string__NativeString__to_s_with_length(var113, var114);
1876 var112 = var115;
1877 varonce111 = var112;
1878 }
1879 var116 = ((val* (*)(val*, val*))(var110->class->vft[COLOR_string__String___43d]))(var110, var112) /* + on <var110:String>*/;
1880 var117 = ((val* (*)(val*))(var116->class->vft[COLOR_file__String__simplify_path]))(var116) /* simplify_path on <var116:String>*/;
1881 var_try_file118 = var117;
1882 ((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file118) /* add on <var_tries:Array[String]>*/;
1883 var119 = ((short int (*)(val*))(var_try_file118->class->vft[COLOR_file__String__file_exists]))(var_try_file118) /* file_exists on <var_try_file118:String>*/;
1884 if (var119){
1885 var120 = NULL;
1886 if (var_candidate == NULL) {
1887 var121 = 1; /* is null */
1888 } else {
1889 var121 = 0; /* arg is null but recv is not */
1890 }
1891 if (var121){
1892 var_candidate = var_try_file118;
1893 } else {
1894 var122 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate, var_try_file118) /* != on <var_candidate:nullable String(String)>*/;
1895 if (var122){
1896 var123 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate) /* module_absolute_path on <self:ModelBuilder>*/;
1897 var_abs_candidate = var123;
1898 var124 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file118) /* module_absolute_path on <self:ModelBuilder>*/;
1899 var_abs_try_file = var124;
1900 var125 = ((short int (*)(val*, val*))(var_abs_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate, var_abs_try_file) /* != on <var_abs_candidate:String>*/;
1901 if (var125){
1902 if (varonce126) {
1903 var127 = varonce126;
1904 } else {
1905 var128 = "Error: conflicting module file for ";
1906 var129 = 35;
1907 var130 = string__NativeString__to_s_with_length(var128, var129);
1908 var127 = var130;
1909 varonce126 = var127;
1910 }
1911 if (varonce131) {
1912 var132 = varonce131;
1913 } else {
1914 var133 = ": ";
1915 var134 = 2;
1916 var135 = string__NativeString__to_s_with_length(var133, var134);
1917 var132 = var135;
1918 varonce131 = var132;
1919 }
1920 if (varonce136) {
1921 var137 = varonce136;
1922 } else {
1923 var138 = " ";
1924 var139 = 1;
1925 var140 = string__NativeString__to_s_with_length(var138, var139);
1926 var137 = var140;
1927 varonce136 = var137;
1928 }
1929 var141 = NEW_array__Array(&type_array__Arraykernel__Object);
1930 { /* var141 = array_instance Array[Object] */
1931 var142 = 6;
1932 var143 = NEW_array__NativeArray(var142, &type_array__NativeArraykernel__Object);
1933 ((struct instance_array__NativeArray*)var143)->values[0] = (val*) var127;
1934 ((struct instance_array__NativeArray*)var143)->values[1] = (val*) var_name;
1935 ((struct instance_array__NativeArray*)var143)->values[2] = (val*) var132;
1936 ((struct instance_array__NativeArray*)var143)->values[3] = (val*) var_candidate;
1937 ((struct instance_array__NativeArray*)var143)->values[4] = (val*) var137;
1938 ((struct instance_array__NativeArray*)var143)->values[5] = (val*) var_try_file118;
1939 ((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on <var141:Array[Object]>*/;
1940 }
1941 var144 = ((val* (*)(val*))(var141->class->vft[COLOR_string__Object__to_s]))(var141) /* to_s on <var141:Array[Object]>*/;
1942 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var144) /* error on <self:ModelBuilder>*/;
1943 } else {
1944 }
1945 } else {
1946 }
1947 }
1948 } else {
1949 }
1950 if (varonce145) {
1951 var146 = varonce145;
1952 } else {
1953 var147 = "/";
1954 var148 = 1;
1955 var149 = string__NativeString__to_s_with_length(var147, var148);
1956 var146 = var149;
1957 varonce145 = var146;
1958 }
1959 var150 = ((val* (*)(val*, val*))(var_dirname103->class->vft[COLOR_string__String___43d]))(var_dirname103, var146) /* + on <var_dirname103:String>*/;
1960 var151 = ((val* (*)(val*, val*))(var150->class->vft[COLOR_string__String___43d]))(var150, var_name) /* + on <var150:String>*/;
1961 if (varonce152) {
1962 var153 = varonce152;
1963 } else {
1964 var154 = "/";
1965 var155 = 1;
1966 var156 = string__NativeString__to_s_with_length(var154, var155);
1967 var153 = var156;
1968 varonce152 = var153;
1969 }
1970 var157 = ((val* (*)(val*, val*))(var151->class->vft[COLOR_string__String___43d]))(var151, var153) /* + on <var151:String>*/;
1971 var158 = ((val* (*)(val*, val*))(var157->class->vft[COLOR_string__String___43d]))(var157, var_name) /* + on <var157:String>*/;
1972 if (varonce159) {
1973 var160 = varonce159;
1974 } else {
1975 var161 = ".nit";
1976 var162 = 4;
1977 var163 = string__NativeString__to_s_with_length(var161, var162);
1978 var160 = var163;
1979 varonce159 = var160;
1980 }
1981 var164 = ((val* (*)(val*, val*))(var158->class->vft[COLOR_string__String___43d]))(var158, var160) /* + on <var158:String>*/;
1982 var165 = ((val* (*)(val*))(var164->class->vft[COLOR_file__String__simplify_path]))(var164) /* simplify_path on <var164:String>*/;
1983 var_try_file118 = var165;
1984 var166 = ((short int (*)(val*))(var_try_file118->class->vft[COLOR_file__String__file_exists]))(var_try_file118) /* file_exists on <var_try_file118:String>*/;
1985 if (var166){
1986 var167 = NULL;
1987 if (var_candidate == NULL) {
1988 var168 = 1; /* is null */
1989 } else {
1990 var168 = 0; /* arg is null but recv is not */
1991 }
1992 if (var168){
1993 var_candidate = var_try_file118;
1994 } else {
1995 var169 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate, var_try_file118) /* != on <var_candidate:nullable String(String)>*/;
1996 if (var169){
1997 var170 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate) /* module_absolute_path on <self:ModelBuilder>*/;
1998 var_abs_candidate171 = var170;
1999 var172 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file118) /* module_absolute_path on <self:ModelBuilder>*/;
2000 var_abs_try_file173 = var172;
2001 var174 = ((short int (*)(val*, val*))(var_abs_candidate171->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate171, var_abs_try_file173) /* != on <var_abs_candidate171:String>*/;
2002 if (var174){
2003 if (varonce175) {
2004 var176 = varonce175;
2005 } else {
2006 var177 = "Error: conflicting module file for ";
2007 var178 = 35;
2008 var179 = string__NativeString__to_s_with_length(var177, var178);
2009 var176 = var179;
2010 varonce175 = var176;
2011 }
2012 if (varonce180) {
2013 var181 = varonce180;
2014 } else {
2015 var182 = ": ";
2016 var183 = 2;
2017 var184 = string__NativeString__to_s_with_length(var182, var183);
2018 var181 = var184;
2019 varonce180 = var181;
2020 }
2021 if (varonce185) {
2022 var186 = varonce185;
2023 } else {
2024 var187 = " ";
2025 var188 = 1;
2026 var189 = string__NativeString__to_s_with_length(var187, var188);
2027 var186 = var189;
2028 varonce185 = var186;
2029 }
2030 var190 = NEW_array__Array(&type_array__Arraykernel__Object);
2031 { /* var190 = array_instance Array[Object] */
2032 var191 = 6;
2033 var192 = NEW_array__NativeArray(var191, &type_array__NativeArraykernel__Object);
2034 ((struct instance_array__NativeArray*)var192)->values[0] = (val*) var176;
2035 ((struct instance_array__NativeArray*)var192)->values[1] = (val*) var_name;
2036 ((struct instance_array__NativeArray*)var192)->values[2] = (val*) var181;
2037 ((struct instance_array__NativeArray*)var192)->values[3] = (val*) var_candidate;
2038 ((struct instance_array__NativeArray*)var192)->values[4] = (val*) var186;
2039 ((struct instance_array__NativeArray*)var192)->values[5] = (val*) var_try_file118;
2040 ((void (*)(val*, val*, long))(var190->class->vft[COLOR_array__Array__with_native]))(var190, var192, var191) /* with_native on <var190:Array[Object]>*/;
2041 }
2042 var193 = ((val* (*)(val*))(var190->class->vft[COLOR_string__Object__to_s]))(var190) /* to_s on <var190:Array[Object]>*/;
2043 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var193) /* error on <self:ModelBuilder>*/;
2044 } else {
2045 }
2046 } else {
2047 }
2048 }
2049 } else {
2050 }
2051 CONTINUE_label194: (void)0;
2052 ((void (*)(val*))(var100->class->vft[COLOR_abstract_collection__Iterator__next]))(var100) /* next on <var100:Iterator[nullable Object]>*/;
2053 }
2054 BREAK_label194: (void)0;
2055 var195 = NULL;
2056 if (var_candidate == NULL) {
2057 var196 = 1; /* is null */
2058 } else {
2059 var196 = 0; /* arg is null but recv is not */
2060 }
2061 if (var196){
2062 var197 = NULL;
2063 if (var_mmodule == NULL) {
2064 var198 = 0; /* is null */
2065 } else {
2066 var198 = 1; /* arg is null and recv is not */
2067 }
2068 if (var198){
2069 if (varonce199) {
2070 var200 = varonce199;
2071 } else {
2072 var201 = "Error: cannot find module ";
2073 var202 = 26;
2074 var203 = string__NativeString__to_s_with_length(var201, var202);
2075 var200 = var203;
2076 varonce199 = var200;
2077 }
2078 if (varonce204) {
2079 var205 = varonce204;
2080 } else {
2081 var206 = " from ";
2082 var207 = 6;
2083 var208 = string__NativeString__to_s_with_length(var206, var207);
2084 var205 = var208;
2085 varonce204 = var205;
2086 }
2087 if (varonce209) {
2088 var210 = varonce209;
2089 } else {
2090 var211 = ". tried ";
2091 var212 = 8;
2092 var213 = string__NativeString__to_s_with_length(var211, var212);
2093 var210 = var213;
2094 varonce209 = var210;
2095 }
2096 if (varonce214) {
2097 var215 = varonce214;
2098 } else {
2099 var216 = ", ";
2100 var217 = 2;
2101 var218 = string__NativeString__to_s_with_length(var216, var217);
2102 var215 = var218;
2103 varonce214 = var215;
2104 }
2105 var219 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var215) /* join on <var_tries:Array[String]>*/;
2106 var220 = NEW_array__Array(&type_array__Arraykernel__Object);
2107 { /* var220 = array_instance Array[Object] */
2108 var221 = 6;
2109 var222 = NEW_array__NativeArray(var221, &type_array__NativeArraykernel__Object);
2110 ((struct instance_array__NativeArray*)var222)->values[0] = (val*) var200;
2111 ((struct instance_array__NativeArray*)var222)->values[1] = (val*) var_name;
2112 ((struct instance_array__NativeArray*)var222)->values[2] = (val*) var205;
2113 ((struct instance_array__NativeArray*)var222)->values[3] = (val*) var_mmodule;
2114 ((struct instance_array__NativeArray*)var222)->values[4] = (val*) var210;
2115 ((struct instance_array__NativeArray*)var222)->values[5] = (val*) var219;
2116 ((void (*)(val*, val*, long))(var220->class->vft[COLOR_array__Array__with_native]))(var220, var222, var221) /* with_native on <var220:Array[Object]>*/;
2117 }
2118 var223 = ((val* (*)(val*))(var220->class->vft[COLOR_string__Object__to_s]))(var220) /* to_s on <var220:Array[Object]>*/;
2119 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var223) /* error on <self:ModelBuilder>*/;
2120 } else {
2121 if (varonce224) {
2122 var225 = varonce224;
2123 } else {
2124 var226 = "Error: cannot find module ";
2125 var227 = 26;
2126 var228 = string__NativeString__to_s_with_length(var226, var227);
2127 var225 = var228;
2128 varonce224 = var225;
2129 }
2130 if (varonce229) {
2131 var230 = varonce229;
2132 } else {
2133 var231 = ". tried ";
2134 var232 = 8;
2135 var233 = string__NativeString__to_s_with_length(var231, var232);
2136 var230 = var233;
2137 varonce229 = var230;
2138 }
2139 if (varonce234) {
2140 var235 = varonce234;
2141 } else {
2142 var236 = ", ";
2143 var237 = 2;
2144 var238 = string__NativeString__to_s_with_length(var236, var237);
2145 var235 = var238;
2146 varonce234 = var235;
2147 }
2148 var239 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var235) /* join on <var_tries:Array[String]>*/;
2149 var240 = NEW_array__Array(&type_array__Arraykernel__Object);
2150 { /* var240 = array_instance Array[Object] */
2151 var241 = 4;
2152 var242 = NEW_array__NativeArray(var241, &type_array__NativeArraykernel__Object);
2153 ((struct instance_array__NativeArray*)var242)->values[0] = (val*) var225;
2154 ((struct instance_array__NativeArray*)var242)->values[1] = (val*) var_name;
2155 ((struct instance_array__NativeArray*)var242)->values[2] = (val*) var230;
2156 ((struct instance_array__NativeArray*)var242)->values[3] = (val*) var239;
2157 ((void (*)(val*, val*, long))(var240->class->vft[COLOR_array__Array__with_native]))(var240, var242, var241) /* with_native on <var240:Array[Object]>*/;
2158 }
2159 var243 = ((val* (*)(val*))(var240->class->vft[COLOR_string__Object__to_s]))(var240) /* to_s on <var240:Array[Object]>*/;
2160 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var243) /* error on <self:ModelBuilder>*/;
2161 }
2162 var244 = NULL;
2163 var = var244;
2164 goto RET_LABEL;
2165 } else {
2166 }
2167 var245 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_candidate) /* load_module on <self:ModelBuilder>*/;
2168 var_res246 = var245;
2169 var247 = NULL;
2170 if (var_res246 == NULL) {
2171 var248 = 1; /* is null */
2172 } else {
2173 var248 = 0; /* arg is null but recv is not */
2174 }
2175 if (var248){
2176 var249 = NULL;
2177 var = var249;
2178 goto RET_LABEL;
2179 } else {
2180 }
2181 var250 = ((val* (*)(val*))(var_res246->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res246) /* mmodule on <var_res246:nullable AModule(AModule)>*/;
2182 if (var250 == NULL) {
2183 fprintf(stderr, "Runtime error: %s", "Cast failed");
2184 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 344);
2185 show_backtrace(1);
2186 }
2187 var = var250;
2188 goto RET_LABEL;
2189 RET_LABEL:;
2190 return var;
2191 }
2192 /* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: Object, ANode, nullable MModule, String): nullable MModule */
2193 val* VIRTUAL_modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
2194 val* var /* : nullable MModule */;
2195 val* var1 /* : nullable MModule */;
2196 var1 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, p0, p1, p2);
2197 var = var1;
2198 RET_LABEL:;
2199 return var;
2200 }
2201 /* method modelbuilder#ModelBuilder#identified_files for (self: ModelBuilder): HashMap[String, nullable ModulePath] */
2202 val* modelbuilder__ModelBuilder__identified_files(val* self) {
2203 val* var /* : HashMap[String, nullable ModulePath] */;
2204 val* var1 /* : HashMap[String, nullable ModulePath] */;
2205 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64didentified_files].val; /* @identified_files on <self:ModelBuilder> */
2206 if (var1 == NULL) {
2207 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @identified_files");
2208 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 347);
2209 show_backtrace(1);
2210 }
2211 var = var1;
2212 RET_LABEL:;
2213 return var;
2214 }
2215 /* method modelbuilder#ModelBuilder#identified_files for (self: Object): HashMap[String, nullable ModulePath] */
2216 val* VIRTUAL_modelbuilder__ModelBuilder__identified_files(val* self) {
2217 val* var /* : HashMap[String, nullable ModulePath] */;
2218 val* var1 /* : HashMap[String, nullable ModulePath] */;
2219 var1 = modelbuilder__ModelBuilder__identified_files(self);
2220 var = var1;
2221 RET_LABEL:;
2222 return var;
2223 }
2224 /* method modelbuilder#ModelBuilder#identified_files= for (self: ModelBuilder, HashMap[String, nullable ModulePath]) */
2225 void modelbuilder__ModelBuilder__identified_files_61d(val* self, val* p0) {
2226 self->attrs[COLOR_modelbuilder__ModelBuilder___64didentified_files].val = p0; /* @identified_files on <self:ModelBuilder> */
2227 RET_LABEL:;
2228 }
2229 /* method modelbuilder#ModelBuilder#identified_files= for (self: Object, HashMap[String, nullable ModulePath]) */
2230 void VIRTUAL_modelbuilder__ModelBuilder__identified_files_61d(val* self, val* p0) {
2231 modelbuilder__ModelBuilder__identified_files_61d(self, p0);
2232 RET_LABEL:;
2233 }
2234 /* method modelbuilder#ModelBuilder#identify_file for (self: ModelBuilder, String): nullable ModulePath */
2235 val* modelbuilder__ModelBuilder__identify_file(val* self, val* p0) {
2236 val* var /* : nullable ModulePath */;
2237 val* var_path /* var path: String */;
2238 short int var1 /* : Bool */;
2239 short int var2 /* : Bool */;
2240 val* var3 /* : ToolContext */;
2241 val* var4 /* : null */;
2242 static val* varonce;
2243 val* var5 /* : String */;
2244 char* var6 /* : NativeString */;
2245 long var7 /* : Int */;
2246 val* var8 /* : String */;
2247 static val* varonce9;
2248 val* var10 /* : String */;
2249 char* var11 /* : NativeString */;
2250 long var12 /* : Int */;
2251 val* var13 /* : String */;
2252 val* var14 /* : Array[Object] */;
2253 long var15 /* : Int */;
2254 val* var16 /* : NativeArray[Object] */;
2255 val* var17 /* : String */;
2256 val* var18 /* : null */;
2257 static val* varonce19;
2258 val* var20 /* : String */;
2259 char* var21 /* : NativeString */;
2260 long var22 /* : Int */;
2261 val* var23 /* : String */;
2262 val* var24 /* : String */;
2263 val* var_pn /* var pn: String */;
2264 val* var25 /* : String */;
2265 val* var_rp /* var rp: String */;
2266 val* var26 /* : HashMap[String, nullable ModulePath] */;
2267 short int var27 /* : Bool */;
2268 val* var28 /* : HashMap[String, nullable ModulePath] */;
2269 val* var29 /* : nullable Object */;
2270 static val* varonce30;
2271 val* var31 /* : String */;
2272 char* var32 /* : NativeString */;
2273 long var33 /* : Int */;
2274 val* var34 /* : String */;
2275 val* var35 /* : String */;
2276 val* var36 /* : String */;
2277 val* var_mgrouppath /* var mgrouppath: String */;
2278 val* var37 /* : nullable MGroup */;
2279 val* var_mgroup /* var mgroup: nullable MGroup */;
2280 val* var38 /* : null */;
2281 short int var39 /* : Bool */;
2282 val* var40 /* : MProject */;
2283 val* var41 /* : Model */;
2284 val* var_mproject /* var mproject: MProject */;
2285 val* var42 /* : MGroup */;
2286 val* var43 /* : null */;
2287 val* var44 /* : ToolContext */;
2288 static val* varonce45;
2289 val* var46 /* : String */;
2290 char* var47 /* : NativeString */;
2291 long var48 /* : Int */;
2292 val* var49 /* : String */;
2293 static val* varonce50;
2294 val* var51 /* : String */;
2295 char* var52 /* : NativeString */;
2296 long var53 /* : Int */;
2297 val* var54 /* : String */;
2298 val* var55 /* : Array[Object] */;
2299 long var56 /* : Int */;
2300 val* var57 /* : NativeArray[Object] */;
2301 val* var58 /* : String */;
2302 long var59 /* : Int */;
2303 val* var60 /* : ModulePath */;
2304 val* var_res /* var res: ModulePath */;
2305 val* var61 /* : HashMap[String, nullable ModulePath] */;
2306 var_path = p0;
2307 var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_file__String__file_exists]))(var_path) /* file_exists on <var_path:String>*/;
2308 var2 = !var1;
2309 if (var2){
2310 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2311 var4 = NULL;
2312 if (varonce) {
2313 var5 = varonce;
2314 } else {
2315 var6 = "Error: `";
2316 var7 = 8;
2317 var8 = string__NativeString__to_s_with_length(var6, var7);
2318 var5 = var8;
2319 varonce = var5;
2320 }
2321 if (varonce9) {
2322 var10 = varonce9;
2323 } else {
2324 var11 = "` does not exists";
2325 var12 = 17;
2326 var13 = string__NativeString__to_s_with_length(var11, var12);
2327 var10 = var13;
2328 varonce9 = var10;
2329 }
2330 var14 = NEW_array__Array(&type_array__Arraykernel__Object);
2331 { /* var14 = array_instance Array[Object] */
2332 var15 = 3;
2333 var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
2334 ((struct instance_array__NativeArray*)var16)->values[0] = (val*) var5;
2335 ((struct instance_array__NativeArray*)var16)->values[1] = (val*) var_path;
2336 ((struct instance_array__NativeArray*)var16)->values[2] = (val*) var10;
2337 ((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
2338 }
2339 var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
2340 ((void (*)(val*, val*, val*))(var3->class->vft[COLOR_toolcontext__ToolContext__error]))(var3, var4, var17) /* error on <var3:ToolContext>*/;
2341 var18 = NULL;
2342 var = var18;
2343 goto RET_LABEL;
2344 } else {
2345 }
2346 if (varonce19) {
2347 var20 = varonce19;
2348 } else {
2349 var21 = ".nit";
2350 var22 = 4;
2351 var23 = string__NativeString__to_s_with_length(var21, var22);
2352 var20 = var23;
2353 varonce19 = var20;
2354 }
2355 var24 = ((val* (*)(val*, val*))(var_path->class->vft[COLOR_file__String__basename]))(var_path, var20) /* basename on <var_path:String>*/;
2356 var_pn = var24;
2357 var25 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_path) /* module_absolute_path on <self:ModelBuilder>*/;
2358 var_rp = var25;
2359 var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identified_files]))(self) /* identified_files on <self:ModelBuilder>*/;
2360 var27 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var26, var_rp) /* has_key on <var26:HashMap[String, nullable ModulePath]>*/;
2361 if (var27){
2362 var28 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identified_files]))(self) /* identified_files on <self:ModelBuilder>*/;
2363 var29 = ((val* (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var28, var_rp) /* [] on <var28:HashMap[String, nullable ModulePath]>*/;
2364 var = var29;
2365 goto RET_LABEL;
2366 } else {
2367 }
2368 if (varonce30) {
2369 var31 = varonce30;
2370 } else {
2371 var32 = "..";
2372 var33 = 2;
2373 var34 = string__NativeString__to_s_with_length(var32, var33);
2374 var31 = var34;
2375 varonce30 = var31;
2376 }
2377 var35 = ((val* (*)(val*, val*))(var_path->class->vft[COLOR_file__String__join_path]))(var_path, var31) /* join_path on <var_path:String>*/;
2378 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_file__String__simplify_path]))(var35) /* simplify_path on <var35:String>*/;
2379 var_mgrouppath = var36;
2380 var37 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mgroup]))(self, var_mgrouppath) /* get_mgroup on <self:ModelBuilder>*/;
2381 var_mgroup = var37;
2382 var38 = NULL;
2383 if (var_mgroup == NULL) {
2384 var39 = 1; /* is null */
2385 } else {
2386 var39 = 0; /* arg is null but recv is not */
2387 }
2388 if (var39){
2389 var40 = NEW_mproject__MProject(&type_mproject__MProject);
2390 var41 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
2391 ((void (*)(val*, val*, val*))(var40->class->vft[COLOR_mproject__MProject__init]))(var40, var_pn, var41) /* init on <var40:MProject>*/;
2392 var_mproject = var40;
2393 var42 = NEW_mproject__MGroup(&type_mproject__MGroup);
2394 var43 = NULL;
2395 ((void (*)(val*, val*, val*, val*))(var42->class->vft[COLOR_mproject__MGroup__init]))(var42, var_pn, var_mproject, var43) /* init on <var42:MGroup>*/;
2396 var_mgroup = var42;
2397 ((void (*)(val*, val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__filepath_61d]))(var_mgroup, var_path) /* filepath= on <var_mgroup:nullable MGroup(MGroup)>*/;
2398 ((void (*)(val*, val*))(var_mproject->class->vft[COLOR_mproject__MProject__root_61d]))(var_mproject, var_mgroup) /* root= on <var_mproject:MProject>*/;
2399 var44 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2400 if (varonce45) {
2401 var46 = varonce45;
2402 } else {
2403 var47 = "found project `";
2404 var48 = 15;
2405 var49 = string__NativeString__to_s_with_length(var47, var48);
2406 var46 = var49;
2407 varonce45 = var46;
2408 }
2409 if (varonce50) {
2410 var51 = varonce50;
2411 } else {
2412 var52 = "` at ";
2413 var53 = 5;
2414 var54 = string__NativeString__to_s_with_length(var52, var53);
2415 var51 = var54;
2416 varonce50 = var51;
2417 }
2418 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
2419 { /* var55 = array_instance Array[Object] */
2420 var56 = 4;
2421 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
2422 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var46;
2423 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_pn;
2424 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51;
2425 ((struct instance_array__NativeArray*)var57)->values[3] = (val*) var_path;
2426 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
2427 }
2428 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
2429 var59 = 2;
2430 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_toolcontext__ToolContext__info]))(var44, var58, var59) /* info on <var44:ToolContext>*/;
2431 } else {
2432 }
2433 var60 = NEW_modelbuilder__ModulePath(&type_modelbuilder__ModulePath);
2434 ((void (*)(val*, val*, val*, val*))(var60->class->vft[COLOR_modelbuilder__ModulePath__init]))(var60, var_pn, var_path, var_mgroup) /* init on <var60:ModulePath>*/;
2435 var_res = var60;
2436 var61 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identified_files]))(self) /* identified_files on <self:ModelBuilder>*/;
2437 ((void (*)(val*, val*, val*))(var61->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var61, var_rp, var_res) /* []= on <var61:HashMap[String, nullable ModulePath]>*/;
2438 var = var_res;
2439 goto RET_LABEL;
2440 RET_LABEL:;
2441 return var;
2442 }
2443 /* method modelbuilder#ModelBuilder#identify_file for (self: Object, String): nullable ModulePath */
2444 val* VIRTUAL_modelbuilder__ModelBuilder__identify_file(val* self, val* p0) {
2445 val* var /* : nullable ModulePath */;
2446 val* var1 /* : nullable ModulePath */;
2447 var1 = modelbuilder__ModelBuilder__identify_file(self, p0);
2448 var = var1;
2449 RET_LABEL:;
2450 return var;
2451 }
2452 /* method modelbuilder#ModelBuilder#mgroups for (self: ModelBuilder): HashMap[String, nullable MGroup] */
2453 val* modelbuilder__ModelBuilder__mgroups(val* self) {
2454 val* var /* : HashMap[String, nullable MGroup] */;
2455 val* var1 /* : HashMap[String, nullable MGroup] */;
2456 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmgroups].val; /* @mgroups on <self:ModelBuilder> */
2457 if (var1 == NULL) {
2458 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mgroups");
2459 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 383);
2460 show_backtrace(1);
2461 }
2462 var = var1;
2463 RET_LABEL:;
2464 return var;
2465 }
2466 /* method modelbuilder#ModelBuilder#mgroups for (self: Object): HashMap[String, nullable MGroup] */
2467 val* VIRTUAL_modelbuilder__ModelBuilder__mgroups(val* self) {
2468 val* var /* : HashMap[String, nullable MGroup] */;
2469 val* var1 /* : HashMap[String, nullable MGroup] */;
2470 var1 = modelbuilder__ModelBuilder__mgroups(self);
2471 var = var1;
2472 RET_LABEL:;
2473 return var;
2474 }
2475 /* method modelbuilder#ModelBuilder#mgroups= for (self: ModelBuilder, HashMap[String, nullable MGroup]) */
2476 void modelbuilder__ModelBuilder__mgroups_61d(val* self, val* p0) {
2477 self->attrs[COLOR_modelbuilder__ModelBuilder___64dmgroups].val = p0; /* @mgroups on <self:ModelBuilder> */
2478 RET_LABEL:;
2479 }
2480 /* method modelbuilder#ModelBuilder#mgroups= for (self: Object, HashMap[String, nullable MGroup]) */
2481 void VIRTUAL_modelbuilder__ModelBuilder__mgroups_61d(val* self, val* p0) {
2482 modelbuilder__ModelBuilder__mgroups_61d(self, p0);
2483 RET_LABEL:;
2484 }
2485 /* method modelbuilder#ModelBuilder#get_mgroup for (self: ModelBuilder, String): nullable MGroup */
2486 val* modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) {
2487 val* var /* : nullable MGroup */;
2488 val* var_dirpath /* var dirpath: String */;
2489 val* var1 /* : String */;
2490 val* var_rdp /* var rdp: String */;
2491 val* var2 /* : HashMap[String, nullable MGroup] */;
2492 short int var3 /* : Bool */;
2493 val* var4 /* : HashMap[String, nullable MGroup] */;
2494 val* var5 /* : nullable Object */;
2495 static val* varonce;
2496 val* var6 /* : String */;
2497 char* var7 /* : NativeString */;
2498 long var8 /* : Int */;
2499 val* var9 /* : String */;
2500 val* var10 /* : String */;
2501 val* var_pn /* var pn: String */;
2502 static val* varonce11;
2503 val* var12 /* : String */;
2504 char* var13 /* : NativeString */;
2505 long var14 /* : Int */;
2506 val* var15 /* : String */;
2507 val* var16 /* : String */;
2508 val* var17 /* : String */;
2509 val* var18 /* : String */;
2510 val* var_mp /* var mp: String */;
2511 short int var19 /* : Bool */;
2512 short int var20 /* : Bool */;
2513 val* var21 /* : null */;
2514 static val* varonce22;
2515 val* var23 /* : String */;
2516 char* var24 /* : NativeString */;
2517 long var25 /* : Int */;
2518 val* var26 /* : String */;
2519 val* var27 /* : String */;
2520 val* var28 /* : String */;
2521 val* var_parentpath /* var parentpath: String */;
2522 val* var29 /* : nullable MGroup */;
2523 val* var_parent /* var parent: nullable MGroup */;
2524 val* var30 /* : null */;
2525 short int var31 /* : Bool */;
2526 val* var32 /* : MProject */;
2527 val* var33 /* : Model */;
2528 val* var_mproject /* var mproject: MProject */;
2529 val* var34 /* : MGroup */;
2530 val* var35 /* : null */;
2531 val* var_mgroup /* var mgroup: nullable Object */;
2532 val* var36 /* : ToolContext */;
2533 static val* varonce37;
2534 val* var38 /* : String */;
2535 char* var39 /* : NativeString */;
2536 long var40 /* : Int */;
2537 val* var41 /* : String */;
2538 static val* varonce42;
2539 val* var43 /* : String */;
2540 char* var44 /* : NativeString */;
2541 long var45 /* : Int */;
2542 val* var46 /* : String */;
2543 val* var47 /* : Array[Object] */;
2544 long var48 /* : Int */;
2545 val* var49 /* : NativeArray[Object] */;
2546 val* var50 /* : String */;
2547 long var51 /* : Int */;
2548 val* var52 /* : MGroup */;
2549 val* var53 /* : MProject */;
2550 val* var54 /* : ToolContext */;
2551 static val* varonce55;
2552 val* var56 /* : String */;
2553 char* var57 /* : NativeString */;
2554 long var58 /* : Int */;
2555 val* var59 /* : String */;
2556 val* var60 /* : String */;
2557 static val* varonce61;
2558 val* var62 /* : String */;
2559 char* var63 /* : NativeString */;
2560 long var64 /* : Int */;
2561 val* var65 /* : String */;
2562 val* var66 /* : Array[Object] */;
2563 long var67 /* : Int */;
2564 val* var68 /* : NativeArray[Object] */;
2565 val* var69 /* : String */;
2566 long var70 /* : Int */;
2567 val* var71 /* : HashMap[String, nullable MGroup] */;
2568 var_dirpath = p0;
2569 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_dirpath) /* module_absolute_path on <self:ModelBuilder>*/;
2570 var_rdp = var1;
2571 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mgroups]))(self) /* mgroups on <self:ModelBuilder>*/;
2572 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var_rdp) /* has_key on <var2:HashMap[String, nullable MGroup]>*/;
2573 if (var3){
2574 var4 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mgroups]))(self) /* mgroups on <self:ModelBuilder>*/;
2575 var5 = ((val* (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var4, var_rdp) /* [] on <var4:HashMap[String, nullable MGroup]>*/;
2576 var = var5;
2577 goto RET_LABEL;
2578 } else {
2579 }
2580 if (varonce) {
2581 var6 = varonce;
2582 } else {
2583 var7 = ".nit";
2584 var8 = 4;
2585 var9 = string__NativeString__to_s_with_length(var7, var8);
2586 var6 = var9;
2587 varonce = var6;
2588 }
2589 var10 = ((val* (*)(val*, val*))(var_rdp->class->vft[COLOR_file__String__basename]))(var_rdp, var6) /* basename on <var_rdp:String>*/;
2590 var_pn = var10;
2591 if (varonce11) {
2592 var12 = varonce11;
2593 } else {
2594 var13 = ".nit";
2595 var14 = 4;
2596 var15 = string__NativeString__to_s_with_length(var13, var14);
2597 var12 = var15;
2598 varonce11 = var12;
2599 }
2600 var16 = ((val* (*)(val*, val*))(var_pn->class->vft[COLOR_string__String___43d]))(var_pn, var12) /* + on <var_pn:String>*/;
2601 var17 = ((val* (*)(val*, val*))(var_dirpath->class->vft[COLOR_file__String__join_path]))(var_dirpath, var16) /* join_path on <var_dirpath:String>*/;
2602 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_file__String__simplify_path]))(var17) /* simplify_path on <var17:String>*/;
2603 var_mp = var18;
2604 var19 = ((short int (*)(val*))(var_mp->class->vft[COLOR_file__String__file_exists]))(var_mp) /* file_exists on <var_mp:String>*/;
2605 var20 = !var19;
2606 if (var20){
2607 var21 = NULL;
2608 var = var21;
2609 goto RET_LABEL;
2610 } else {
2611 }
2612 if (varonce22) {
2613 var23 = varonce22;
2614 } else {
2615 var24 = "..";
2616 var25 = 2;
2617 var26 = string__NativeString__to_s_with_length(var24, var25);
2618 var23 = var26;
2619 varonce22 = var23;
2620 }
2621 var27 = ((val* (*)(val*, val*))(var_dirpath->class->vft[COLOR_file__String__join_path]))(var_dirpath, var23) /* join_path on <var_dirpath:String>*/;
2622 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_file__String__simplify_path]))(var27) /* simplify_path on <var27:String>*/;
2623 var_parentpath = var28;
2624 var29 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mgroup]))(self, var_parentpath) /* get_mgroup on <self:ModelBuilder>*/;
2625 var_parent = var29;
2626 var30 = NULL;
2627 if (var_parent == NULL) {
2628 var31 = 1; /* is null */
2629 } else {
2630 var31 = 0; /* arg is null but recv is not */
2631 }
2632 if (var31){
2633 var32 = NEW_mproject__MProject(&type_mproject__MProject);
2634 var33 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
2635 ((void (*)(val*, val*, val*))(var32->class->vft[COLOR_mproject__MProject__init]))(var32, var_pn, var33) /* init on <var32:MProject>*/;
2636 var_mproject = var32;
2637 var34 = NEW_mproject__MGroup(&type_mproject__MGroup);
2638 var35 = NULL;
2639 ((void (*)(val*, val*, val*, val*))(var34->class->vft[COLOR_mproject__MGroup__init]))(var34, var_pn, var_mproject, var35) /* init on <var34:MGroup>*/;
2640 var_mgroup = var34;
2641 ((void (*)(val*, val*))(var_mproject->class->vft[COLOR_mproject__MProject__root_61d]))(var_mproject, var_mgroup) /* root= on <var_mproject:MProject>*/;
2642 var36 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2643 if (varonce37) {
2644 var38 = varonce37;
2645 } else {
2646 var39 = "found project `";
2647 var40 = 15;
2648 var41 = string__NativeString__to_s_with_length(var39, var40);
2649 var38 = var41;
2650 varonce37 = var38;
2651 }
2652 if (varonce42) {
2653 var43 = varonce42;
2654 } else {
2655 var44 = "` at ";
2656 var45 = 5;
2657 var46 = string__NativeString__to_s_with_length(var44, var45);
2658 var43 = var46;
2659 varonce42 = var43;
2660 }
2661 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
2662 { /* var47 = array_instance Array[Object] */
2663 var48 = 4;
2664 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
2665 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var38;
2666 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var_mproject;
2667 ((struct instance_array__NativeArray*)var49)->values[2] = (val*) var43;
2668 ((struct instance_array__NativeArray*)var49)->values[3] = (val*) var_dirpath;
2669 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
2670 }
2671 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
2672 var51 = 2;
2673 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_toolcontext__ToolContext__info]))(var36, var50, var51) /* info on <var36:ToolContext>*/;
2674 } else {
2675 var52 = NEW_mproject__MGroup(&type_mproject__MGroup);
2676 var53 = ((val* (*)(val*))(var_parent->class->vft[COLOR_mproject__MGroup__mproject]))(var_parent) /* mproject on <var_parent:nullable MGroup(MGroup)>*/;
2677 ((void (*)(val*, val*, val*, val*))(var52->class->vft[COLOR_mproject__MGroup__init]))(var52, var_pn, var53, var_parent) /* init on <var52:MGroup>*/;
2678 var_mgroup = var52;
2679 var54 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2680 if (varonce55) {
2681 var56 = varonce55;
2682 } else {
2683 var57 = "found sub group `";
2684 var58 = 17;
2685 var59 = string__NativeString__to_s_with_length(var57, var58);
2686 var56 = var59;
2687 varonce55 = var56;
2688 }
2689 var60 = ((val* (*)(val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__full_name]))(var_mgroup) /* full_name on <var_mgroup:nullable Object(MGroup)>*/;
2690 if (varonce61) {
2691 var62 = varonce61;
2692 } else {
2693 var63 = "` at ";
2694 var64 = 5;
2695 var65 = string__NativeString__to_s_with_length(var63, var64);
2696 var62 = var65;
2697 varonce61 = var62;
2698 }
2699 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
2700 { /* var66 = array_instance Array[Object] */
2701 var67 = 4;
2702 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
2703 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var56;
2704 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var60;
2705 ((struct instance_array__NativeArray*)var68)->values[2] = (val*) var62;
2706 ((struct instance_array__NativeArray*)var68)->values[3] = (val*) var_dirpath;
2707 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
2708 }
2709 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
2710 var70 = 2;
2711 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_toolcontext__ToolContext__info]))(var54, var69, var70) /* info on <var54:ToolContext>*/;
2712 }
2713 ((void (*)(val*, val*))(var_mgroup->class->vft[COLOR_mproject__MGroup__filepath_61d]))(var_mgroup, var_dirpath) /* filepath= on <var_mgroup:nullable Object(MGroup)>*/;
2714 var71 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mgroups]))(self) /* mgroups on <self:ModelBuilder>*/;
2715 ((void (*)(val*, val*, val*))(var71->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var71, var_rdp, var_mgroup) /* []= on <var71:HashMap[String, nullable MGroup]>*/;
2716 var = var_mgroup;
2717 goto RET_LABEL;
2718 RET_LABEL:;
2719 return var;
2720 }
2721 /* method modelbuilder#ModelBuilder#get_mgroup for (self: Object, String): nullable MGroup */
2722 val* VIRTUAL_modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) {
2723 val* var /* : nullable MGroup */;
2724 val* var1 /* : nullable MGroup */;
2725 var1 = modelbuilder__ModelBuilder__get_mgroup(self, p0);
2726 var = var1;
2727 RET_LABEL:;
2728 return var;
2729 }
2730 /* method modelbuilder#ModelBuilder#module_absolute_path for (self: ModelBuilder, String): String */
2731 val* modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) {
2732 val* var /* : String */;
2733 val* var_path /* var path: String */;
2734 val* var1 /* : String */;
2735 val* var2 /* : String */;
2736 val* var3 /* : String */;
2737 var_path = p0;
2738 var1 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__getcwd]))(self) /* getcwd on <self:ModelBuilder>*/;
2739 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_file__String__join_path]))(var1, var_path) /* join_path on <var1:String>*/;
2740 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_file__String__simplify_path]))(var2) /* simplify_path on <var2:String>*/;
2741 var = var3;
2742 goto RET_LABEL;
2743 RET_LABEL:;
2744 return var;
2745 }
2746 /* method modelbuilder#ModelBuilder#module_absolute_path for (self: Object, String): String */
2747 val* VIRTUAL_modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) {
2748 val* var /* : String */;
2749 val* var1 /* : String */;
2750 var1 = modelbuilder__ModelBuilder__module_absolute_path(self, p0);
2751 var = var1;
2752 RET_LABEL:;
2753 return var;
2754 }
2755 /* method modelbuilder#ModelBuilder#load_module_ast for (self: ModelBuilder, String): nullable AModule */
2756 val* modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) {
2757 val* var /* : nullable AModule */;
2758 val* var_filename /* var filename: String */;
2759 val* var1 /* : nullable String */;
2760 static val* varonce;
2761 val* var2 /* : String */;
2762 char* var3 /* : NativeString */;
2763 long var4 /* : Int */;
2764 val* var5 /* : String */;
2765 short int var6 /* : Bool */;
2766 val* var7 /* : ToolContext */;
2767 val* var8 /* : null */;
2768 static val* varonce9;
2769 val* var10 /* : String */;
2770 char* var11 /* : NativeString */;
2771 long var12 /* : Int */;
2772 val* var13 /* : String */;
2773 static val* varonce14;
2774 val* var15 /* : String */;
2775 char* var16 /* : NativeString */;
2776 long var17 /* : Int */;
2777 val* var18 /* : String */;
2778 val* var19 /* : Array[Object] */;
2779 long var20 /* : Int */;
2780 val* var21 /* : NativeArray[Object] */;
2781 val* var22 /* : String */;
2782 val* var23 /* : null */;
2783 short int var24 /* : Bool */;
2784 short int var25 /* : Bool */;
2785 val* var26 /* : ToolContext */;
2786 val* var27 /* : null */;
2787 static val* varonce28;
2788 val* var29 /* : String */;
2789 char* var30 /* : NativeString */;
2790 long var31 /* : Int */;
2791 val* var32 /* : String */;
2792 static val* varonce33;
2793 val* var34 /* : String */;
2794 char* var35 /* : NativeString */;
2795 long var36 /* : Int */;
2796 val* var37 /* : String */;
2797 val* var38 /* : Array[Object] */;
2798 long var39 /* : Int */;
2799 val* var40 /* : NativeArray[Object] */;
2800 val* var41 /* : String */;
2801 val* var42 /* : null */;
2802 val* var43 /* : ToolContext */;
2803 static val* varonce44;
2804 val* var45 /* : String */;
2805 char* var46 /* : NativeString */;
2806 long var47 /* : Int */;
2807 val* var48 /* : String */;
2808 val* var49 /* : Array[Object] */;
2809 long var50 /* : Int */;
2810 val* var51 /* : NativeArray[Object] */;
2811 val* var52 /* : String */;
2812 long var53 /* : Int */;
2813 val* var54 /* : IFStream */;
2814 val* var_file /* var file: IFStream */;
2815 val* var55 /* : Lexer */;
2816 val* var56 /* : SourceFile */;
2817 val* var_lexer /* var lexer: Lexer */;
2818 val* var57 /* : Parser */;
2819 val* var_parser /* var parser: Parser */;
2820 val* var58 /* : Start */;
2821 val* var_tree /* var tree: Start */;
2822 static val* varonce59;
2823 val* var60 /* : String */;
2824 char* var61 /* : NativeString */;
2825 long var62 /* : Int */;
2826 val* var63 /* : String */;
2827 val* var64 /* : String */;
2828 val* var_mod_name /* var mod_name: String */;
2829 val* var65 /* : nullable AModule */;
2830 val* var_nmodule /* var nmodule: nullable AModule */;
2831 val* var66 /* : null */;
2832 short int var67 /* : Bool */;
2833 val* var68 /* : EOF */;
2834 val* var_neof /* var neof: EOF */;
2835 short int var69 /* : Bool */;
2836 int cltype;
2837 int idtype;
2838 val* var70 /* : String */;
2839 val* var71 /* : null */;
2840 var_filename = p0;
2841 var1 = ((val* (*)(val*))(var_filename->class->vft[COLOR_file__String__file_extension]))(var_filename) /* file_extension on <var_filename:String>*/;
2842 if (varonce) {
2843 var2 = varonce;
2844 } else {
2845 var3 = "nit";
2846 var4 = 3;
2847 var5 = string__NativeString__to_s_with_length(var3, var4);
2848 var2 = var5;
2849 varonce = var2;
2850 }
2851 if (var1 == NULL) {
2852 var6 = 1; /* <var2:String> cannot be null */
2853 } else {
2854 var6 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___33d_61d]))(var1, var2) /* != on <var1:nullable String>*/;
2855 }
2856 if (var6){
2857 var7 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2858 var8 = NULL;
2859 if (varonce9) {
2860 var10 = varonce9;
2861 } else {
2862 var11 = "Error: file ";
2863 var12 = 12;
2864 var13 = string__NativeString__to_s_with_length(var11, var12);
2865 var10 = var13;
2866 varonce9 = var10;
2867 }
2868 if (varonce14) {
2869 var15 = varonce14;
2870 } else {
2871 var16 = " is not a valid nit module.";
2872 var17 = 27;
2873 var18 = string__NativeString__to_s_with_length(var16, var17);
2874 var15 = var18;
2875 varonce14 = var15;
2876 }
2877 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
2878 { /* var19 = array_instance Array[Object] */
2879 var20 = 3;
2880 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
2881 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var10;
2882 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_filename;
2883 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
2884 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
2885 }
2886 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
2887 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error]))(var7, var8, var22) /* error on <var7:ToolContext>*/;
2888 var23 = NULL;
2889 var = var23;
2890 goto RET_LABEL;
2891 } else {
2892 }
2893 var24 = ((short int (*)(val*))(var_filename->class->vft[COLOR_file__String__file_exists]))(var_filename) /* file_exists on <var_filename:String>*/;
2894 var25 = !var24;
2895 if (var25){
2896 var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2897 var27 = NULL;
2898 if (varonce28) {
2899 var29 = varonce28;
2900 } else {
2901 var30 = "Error: file ";
2902 var31 = 12;
2903 var32 = string__NativeString__to_s_with_length(var30, var31);
2904 var29 = var32;
2905 varonce28 = var29;
2906 }
2907 if (varonce33) {
2908 var34 = varonce33;
2909 } else {
2910 var35 = " not found.";
2911 var36 = 11;
2912 var37 = string__NativeString__to_s_with_length(var35, var36);
2913 var34 = var37;
2914 varonce33 = var34;
2915 }
2916 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
2917 { /* var38 = array_instance Array[Object] */
2918 var39 = 3;
2919 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
2920 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var29;
2921 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_filename;
2922 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34;
2923 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
2924 }
2925 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
2926 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_toolcontext__ToolContext__error]))(var26, var27, var41) /* error on <var26:ToolContext>*/;
2927 var42 = NULL;
2928 var = var42;
2929 goto RET_LABEL;
2930 } else {
2931 }
2932 var43 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2933 if (varonce44) {
2934 var45 = varonce44;
2935 } else {
2936 var46 = "load module ";
2937 var47 = 12;
2938 var48 = string__NativeString__to_s_with_length(var46, var47);
2939 var45 = var48;
2940 varonce44 = var45;
2941 }
2942 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
2943 { /* var49 = array_instance Array[Object] */
2944 var50 = 2;
2945 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
2946 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var45;
2947 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var_filename;
2948 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
2949 }
2950 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
2951 var53 = 2;
2952 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_toolcontext__ToolContext__info]))(var43, var52, var53) /* info on <var43:ToolContext>*/;
2953 var54 = NEW_file__IFStream(&type_file__IFStream);
2954 ((void (*)(val*, val*))(var54->class->vft[COLOR_file__IFStream__open]))(var54, var_filename) /* open on <var54:IFStream>*/;
2955 var_file = var54;
2956 var55 = NEW_lexer__Lexer(&type_lexer__Lexer);
2957 var56 = NEW_location__SourceFile(&type_location__SourceFile);
2958 ((void (*)(val*, val*, val*))(var56->class->vft[COLOR_location__SourceFile__init]))(var56, var_filename, var_file) /* init on <var56:SourceFile>*/;
2959 ((void (*)(val*, val*))(var55->class->vft[COLOR_lexer__Lexer__init]))(var55, var56) /* init on <var55:Lexer>*/;
2960 var_lexer = var55;
2961 var57 = NEW_parser__Parser(&type_parser__Parser);
2962 ((void (*)(val*, val*))(var57->class->vft[COLOR_parser__Parser__init]))(var57, var_lexer) /* init on <var57:Parser>*/;
2963 var_parser = var57;
2964 var58 = ((val* (*)(val*))(var_parser->class->vft[COLOR_parser__Parser__parse]))(var_parser) /* parse on <var_parser:Parser>*/;
2965 var_tree = var58;
2966 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:IFStream>*/;
2967 if (varonce59) {
2968 var60 = varonce59;
2969 } else {
2970 var61 = ".nit";
2971 var62 = 4;
2972 var63 = string__NativeString__to_s_with_length(var61, var62);
2973 var60 = var63;
2974 varonce59 = var60;
2975 }
2976 var64 = ((val* (*)(val*, val*))(var_filename->class->vft[COLOR_file__String__basename]))(var_filename, var60) /* basename on <var_filename:String>*/;
2977 var_mod_name = var64;
2978 var65 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_base]))(var_tree) /* n_base on <var_tree:Start>*/;
2979 var_nmodule = var65;
2980 var66 = NULL;
2981 if (var_nmodule == NULL) {
2982 var67 = 1; /* is null */
2983 } else {
2984 var67 = 0; /* arg is null but recv is not */
2985 }
2986 if (var67){
2987 var68 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_eof]))(var_tree) /* n_eof on <var_tree:Start>*/;
2988 var_neof = var68;
2989 /* <var_neof:EOF> isa AError */
2990 cltype = type_parser_nodes__AError.color;
2991 idtype = type_parser_nodes__AError.id;
2992 if(cltype >= var_neof->type->table_size) {
2993 var69 = 0;
2994 } else {
2995 var69 = var_neof->type->type_table[cltype] == idtype;
2996 }
2997 if (!var69) {
2998 fprintf(stderr, "Runtime error: %s", "Assert failed");
2999 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 453);
3000 show_backtrace(1);
3001 }
3002 var70 = ((val* (*)(val*))(var_neof->class->vft[COLOR_lexer__AError__message]))(var_neof) /* message on <var_neof:EOF(AError)>*/;
3003 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_neof, var70) /* error on <self:ModelBuilder>*/;
3004 var71 = NULL;
3005 var = var71;
3006 goto RET_LABEL;
3007 } else {
3008 }
3009 var = var_nmodule;
3010 goto RET_LABEL;
3011 RET_LABEL:;
3012 return var;
3013 }
3014 /* method modelbuilder#ModelBuilder#load_module_ast for (self: Object, String): nullable AModule */
3015 val* VIRTUAL_modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) {
3016 val* var /* : nullable AModule */;
3017 val* var1 /* : nullable AModule */;
3018 var1 = modelbuilder__ModelBuilder__load_module_ast(self, p0);
3019 var = var1;
3020 RET_LABEL:;
3021 return var;
3022 }
3023 /* method modelbuilder#ModelBuilder#load_module for (self: ModelBuilder, String): nullable AModule */
3024 val* modelbuilder__ModelBuilder__load_module(val* self, val* p0) {
3025 val* var /* : nullable AModule */;
3026 val* var_filename /* var filename: String */;
3027 val* var1 /* : nullable ModulePath */;
3028 val* var_file /* var file: nullable ModulePath */;
3029 val* var2 /* : null */;
3030 short int var3 /* : Bool */;
3031 val* var4 /* : null */;
3032 val* var5 /* : nullable MModule */;
3033 val* var_mmodule /* var mmodule: nullable MModule */;
3034 val* var6 /* : null */;
3035 short int var7 /* : Bool */;
3036 val* var8 /* : HashMap[MModule, AModule] */;
3037 val* var9 /* : nullable Object */;
3038 val* var10 /* : nullable AModule */;
3039 val* var_nmodule /* var nmodule: nullable AModule */;
3040 val* var11 /* : null */;
3041 short int var12 /* : Bool */;
3042 val* var13 /* : null */;
3043 val* var14 /* : MGroup */;
3044 val* var15 /* : String */;
3045 val* var16 /* : nullable MModule */;
3046 val* var17 /* : null */;
3047 short int var18 /* : Bool */;
3048 val* var19 /* : null */;
3049 var_filename = p0;
3050 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__identify_file]))(self, var_filename) /* identify_file on <self:ModelBuilder>*/;
3051 var_file = var1;
3052 var2 = NULL;
3053 if (var_file == NULL) {
3054 var3 = 1; /* is null */
3055 } else {
3056 var3 = 0; /* arg is null but recv is not */
3057 }
3058 if (var3){
3059 var4 = NULL;
3060 var = var4;
3061 goto RET_LABEL;
3062 } else {
3063 }
3064 var5 = ((val* (*)(val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mmodule]))(var_file) /* mmodule on <var_file:nullable ModulePath(ModulePath)>*/;
3065 var_mmodule = var5;
3066 var6 = NULL;
3067 if (var_mmodule == NULL) {
3068 var7 = 0; /* is null */
3069 } else {
3070 var7 = 1; /* arg is null and recv is not */
3071 }
3072 if (var7){
3073 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
3074 var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_mmodule) /* [] on <var8:HashMap[MModule, AModule]>*/;
3075 var = var9;
3076 goto RET_LABEL;
3077 } else {
3078 }
3079 var10 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module_ast]))(self, var_filename) /* load_module_ast on <self:ModelBuilder>*/;
3080 var_nmodule = var10;
3081 var11 = NULL;
3082 if (var_nmodule == NULL) {
3083 var12 = 1; /* is null */
3084 } else {
3085 var12 = 0; /* arg is null but recv is not */
3086 }
3087 if (var12){
3088 var13 = NULL;
3089 var = var13;
3090 goto RET_LABEL;
3091 } else {
3092 }
3093 var14 = ((val* (*)(val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mgroup]))(var_file) /* mgroup on <var_file:nullable ModulePath(ModulePath)>*/;
3094 var15 = ((val* (*)(val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__name]))(var_file) /* name on <var_file:nullable ModulePath(ModulePath)>*/;
3095 var16 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_a_mmodule]))(self, var14, var15, var_nmodule) /* build_a_mmodule on <self:ModelBuilder>*/;
3096 var_mmodule = var16;
3097 var17 = NULL;
3098 if (var_mmodule == NULL) {
3099 var18 = 1; /* is null */
3100 } else {
3101 var18 = 0; /* arg is null but recv is not */
3102 }
3103 if (var18){
3104 var19 = NULL;
3105 var = var19;
3106 goto RET_LABEL;
3107 } else {
3108 }
3109 ((void (*)(val*, val*))(var_file->class->vft[COLOR_modelbuilder__ModulePath__mmodule_61d]))(var_file, var_mmodule) /* mmodule= on <var_file:nullable ModulePath(ModulePath)>*/;
3110 var = var_nmodule;
3111 goto RET_LABEL;
3112 RET_LABEL:;
3113 return var;
3114 }
3115 /* method modelbuilder#ModelBuilder#load_module for (self: Object, String): nullable AModule */
3116 val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0) {
3117 val* var /* : nullable AModule */;
3118 val* var1 /* : nullable AModule */;
3119 var1 = modelbuilder__ModelBuilder__load_module(self, p0);
3120 var = var1;
3121 RET_LABEL:;
3122 return var;
3123 }
3124 /* method modelbuilder#ModelBuilder#load_rt_module for (self: ModelBuilder, MModule, AModule, String): nullable AModule */
3125 val* modelbuilder__ModelBuilder__load_rt_module(val* self, val* p0, val* p1, val* p2) {
3126 val* var /* : nullable AModule */;
3127 val* var_parent /* var parent: MModule */;
3128 val* var_nmodule /* var nmodule: AModule */;
3129 val* var_mod_name /* var mod_name: String */;
3130 val* var1 /* : MModule */;
3131 val* var2 /* : Model */;
3132 val* var3 /* : nullable MGroup */;
3133 val* var4 /* : Location */;
3134 val* var_mmodule /* var mmodule: MModule */;
3135 val* var5 /* : Array[AModule] */;
3136 val* var6 /* : HashMap[MModule, AModule] */;
3137 val* var7 /* : Array[MModule] */;
3138 val* var_imported_modules /* var imported_modules: Array[MModule] */;
3139 val* var8 /* : MVisibility */;
3140 var_parent = p0;
3141 var_nmodule = p1;
3142 var_mod_name = p2;
3143 var1 = NEW_mmodule__MModule(&type_mmodule__MModule);
3144 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
3145 var3 = ((val* (*)(val*))(var_parent->class->vft[COLOR_mmodule__MModule__mgroup]))(var_parent) /* mgroup on <var_parent:MModule>*/;
3146 var4 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on <var_nmodule:AModule>*/;
3147 ((void (*)(val*, val*, val*, val*, val*))(var1->class->vft[COLOR_mmodule__MModule__init]))(var1, var2, var3, var_mod_name, var4) /* init on <var1:MModule>*/;
3148 var_mmodule = var1;
3149 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on <var_nmodule:AModule>*/;
3150 var5 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on <self:ModelBuilder>*/;
3151 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var5, var_nmodule) /* add on <var5:Array[AModule]>*/;
3152 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
3153 ((void (*)(val*, val*, val*))(var6->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var6, var_mmodule, var_nmodule) /* []= on <var6:HashMap[MModule, AModule]>*/;
3154 var7 = NEW_array__Array(&type_array__Arraymmodule__MModule);
3155 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[MModule]>*/;
3156 var_imported_modules = var7;
3157 ((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_parent) /* add on <var_imported_modules:Array[MModule]>*/;
3158 var8 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:ModelBuilder>*/;
3159 ((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_parent, var8) /* set_visibility_for on <var_mmodule:MModule>*/;
3160 ((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_imported_mmodules]))(var_mmodule, var_imported_modules) /* set_imported_mmodules on <var_mmodule:MModule>*/;
3161 var = var_nmodule;
3162 goto RET_LABEL;
3163 RET_LABEL:;
3164 return var;
3165 }
3166 /* method modelbuilder#ModelBuilder#load_rt_module for (self: Object, MModule, AModule, String): nullable AModule */
3167 val* VIRTUAL_modelbuilder__ModelBuilder__load_rt_module(val* self, val* p0, val* p1, val* p2) {
3168 val* var /* : nullable AModule */;
3169 val* var1 /* : nullable AModule */;
3170 var1 = modelbuilder__ModelBuilder__load_rt_module(self, p0, p1, p2);
3171 var = var1;
3172 RET_LABEL:;
3173 return var;
3174 }
3175 /* method modelbuilder#ModelBuilder#build_a_mmodule for (self: ModelBuilder, nullable MGroup, String, AModule): nullable MModule */
3176 val* modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) {
3177 val* var /* : nullable MModule */;
3178 val* var_mgroup /* var mgroup: nullable MGroup */;
3179 val* var_mod_name /* var mod_name: String */;
3180 val* var_nmodule /* var nmodule: AModule */;
3181 val* var1 /* : nullable AModuledecl */;
3182 val* var_decl /* var decl: nullable AModuledecl */;
3183 val* var2 /* : null */;
3184 short int var3 /* : Bool */;
3185 val* var4 /* : AModuleName */;
3186 val* var5 /* : TId */;
3187 val* var6 /* : String */;
3188 val* var_decl_name /* var decl_name: String */;
3189 short int var7 /* : Bool */;
3190 val* var8 /* : AModuleName */;
3191 static val* varonce;
3192 val* var9 /* : String */;
3193 char* var10 /* : NativeString */;
3194 long var11 /* : Int */;
3195 val* var12 /* : String */;
3196 static val* varonce13;
3197 val* var14 /* : String */;
3198 char* var15 /* : NativeString */;
3199 long var16 /* : Int */;
3200 val* var17 /* : String */;
3201 val* var18 /* : Array[Object] */;
3202 long var19 /* : Int */;
3203 val* var20 /* : NativeArray[Object] */;
3204 val* var21 /* : String */;
3205 val* var22 /* : MModule */;
3206 val* var23 /* : Model */;
3207 val* var24 /* : Location */;
3208 val* var_mmodule /* var mmodule: MModule */;
3209 val* var25 /* : Array[AModule] */;
3210 val* var26 /* : HashMap[MModule, AModule] */;
3211 var_mgroup = p0;
3212 var_mod_name = p1;
3213 var_nmodule = p2;
3214 var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_moduledecl]))(var_nmodule) /* n_moduledecl on <var_nmodule:AModule>*/;
3215 var_decl = var1;
3216 var2 = NULL;
3217 if (var_decl == NULL) {
3218 var3 = 1; /* is null */
3219 } else {
3220 var3 = 0; /* arg is null but recv is not */
3221 }
3222 if (var3){
3223 } else {
3224 var4 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on <var_decl:nullable AModuledecl(AModuledecl)>*/;
3225 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var4) /* n_id on <var4:AModuleName>*/;
3226 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_parser_nodes__Token__text]))(var5) /* text on <var5:TId>*/;
3227 var_decl_name = var6;
3228 var7 = ((short int (*)(val*, val*))(var_decl_name->class->vft[COLOR_kernel__Object___33d_61d]))(var_decl_name, var_mod_name) /* != on <var_decl_name:String>*/;
3229 if (var7){
3230 var8 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on <var_decl:nullable AModuledecl(AModuledecl)>*/;
3231 if (varonce) {
3232 var9 = varonce;
3233 } else {
3234 var10 = "Error: module name missmatch; declared ";
3235 var11 = 39;
3236 var12 = string__NativeString__to_s_with_length(var10, var11);
3237 var9 = var12;
3238 varonce = var9;
3239 }
3240 if (varonce13) {
3241 var14 = varonce13;
3242 } else {
3243 var15 = " file named ";
3244 var16 = 12;
3245 var17 = string__NativeString__to_s_with_length(var15, var16);
3246 var14 = var17;
3247 varonce13 = var14;
3248 }
3249 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
3250 { /* var18 = array_instance Array[Object] */
3251 var19 = 4;
3252 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
3253 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
3254 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_decl_name;
3255 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
3256 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var_mod_name;
3257 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
3258 }
3259 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
3260 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var8, var21) /* error on <self:ModelBuilder>*/;
3261 } else {
3262 }
3263 }
3264 var22 = NEW_mmodule__MModule(&type_mmodule__MModule);
3265 var23 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
3266 var24 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on <var_nmodule:AModule>*/;
3267 ((void (*)(val*, val*, val*, val*, val*))(var22->class->vft[COLOR_mmodule__MModule__init]))(var22, var23, var_mgroup, var_mod_name, var24) /* init on <var22:MModule>*/;
3268 var_mmodule = var22;
3269 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on <var_nmodule:AModule>*/;
3270 var25 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on <self:ModelBuilder>*/;
3271 ((void (*)(val*, val*))(var25->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var25, var_nmodule) /* add on <var25:Array[AModule]>*/;
3272 var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
3273 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var26, var_mmodule, var_nmodule) /* []= on <var26:HashMap[MModule, AModule]>*/;
3274 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_module_importation]))(self, var_nmodule) /* build_module_importation on <self:ModelBuilder>*/;
3275 var = var_mmodule;
3276 goto RET_LABEL;
3277 RET_LABEL:;
3278 return var;
3279 }
3280 /* method modelbuilder#ModelBuilder#build_a_mmodule for (self: Object, nullable MGroup, String, AModule): nullable MModule */
3281 val* VIRTUAL_modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) {
3282 val* var /* : nullable MModule */;
3283 val* var1 /* : nullable MModule */;
3284 var1 = modelbuilder__ModelBuilder__build_a_mmodule(self, p0, p1, p2);
3285 var = var1;
3286 RET_LABEL:;
3287 return var;
3288 }
3289 /* method modelbuilder#ModelBuilder#build_module_importation for (self: ModelBuilder, AModule) */
3290 void modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
3291 val* var_nmodule /* var nmodule: AModule */;
3292 short int var /* : Bool */;
3293 short int var1 /* : Bool */;
3294 val* var2 /* : nullable MModule */;
3295 val* var_mmodule /* var mmodule: MModule */;
3296 short int var3 /* : Bool */;
3297 short int var_stdimport /* var stdimport: Bool */;
3298 val* var4 /* : Array[MModule] */;
3299 val* var_imported_modules /* var imported_modules: Array[MModule] */;
3300 val* var5 /* : ANodes[AImport] */;
3301 val* var6 /* : Iterator[nullable Object] */;
3302 short int var7 /* : Bool */;
3303 val* var8 /* : nullable Object */;
3304 val* var_aimport /* var aimport: AImport */;
3305 short int var9 /* : Bool */;
3306 short int var10 /* : Bool */;
3307 int cltype;
3308 int idtype;
3309 short int var11 /* : Bool */;
3310 val* var12 /* : AModuleName */;
3311 val* var13 /* : TId */;
3312 val* var14 /* : String */;
3313 val* var_mod_name /* var mod_name: String */;
3314 val* var15 /* : AModuleName */;
3315 val* var16 /* : nullable MModule */;
3316 val* var_sup /* var sup: nullable MModule */;
3317 val* var17 /* : null */;
3318 short int var18 /* : Bool */;
3319 val* var19 /* : AVisibility */;
3320 val* var20 /* : MVisibility */;
3321 val* var_mvisibility /* var mvisibility: MVisibility */;
3322 val* var21 /* : MVisibility */;
3323 short int var22 /* : Bool */;
3324 val* var23 /* : AVisibility */;
3325 static val* varonce;
3326 val* var24 /* : String */;
3327 char* var25 /* : NativeString */;
3328 long var26 /* : Int */;
3329 val* var27 /* : String */;
3330 static val* varonce28;
3331 val* var29 /* : String */;
3332 char* var30 /* : NativeString */;
3333 long var31 /* : Int */;
3334 val* var32 /* : String */;
3335 val* var_mod_name33 /* var mod_name: String */;
3336 val* var34 /* : null */;
3337 val* var35 /* : nullable MModule */;
3338 val* var_sup36 /* var sup: nullable MModule */;
3339 val* var37 /* : null */;
3340 short int var38 /* : Bool */;
3341 val* var39 /* : MVisibility */;
3342 val* var40 /* : ToolContext */;
3343 static val* varonce41;
3344 val* var42 /* : String */;
3345 char* var43 /* : NativeString */;
3346 long var44 /* : Int */;
3347 val* var45 /* : String */;
3348 static val* varonce46;
3349 val* var47 /* : String */;
3350 char* var48 /* : NativeString */;
3351 long var49 /* : Int */;
3352 val* var50 /* : String */;
3353 val* var51 /* : String */;
3354 val* var52 /* : Array[Object] */;
3355 long var53 /* : Int */;
3356 val* var54 /* : NativeArray[Object] */;
3357 val* var55 /* : String */;
3358 long var56 /* : Int */;
3359 var_nmodule = p0;
3360 var = ((short int (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__is_importation_done]))(var_nmodule) /* is_importation_done on <var_nmodule:AModule>*/;
3361 if (var){
3362 goto RET_LABEL;
3363 } else {
3364 }
3365 var1 = 1;
3366 ((void (*)(val*, short int))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__is_importation_done_61d]))(var_nmodule, var1) /* is_importation_done= on <var_nmodule:AModule>*/;
3367 var2 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
3368 if (var2 == NULL) {
3369 fprintf(stderr, "Runtime error: %s", "Cast failed");
3370 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 540);
3371 show_backtrace(1);
3372 }
3373 var_mmodule = var2;
3374 var3 = 1;
3375 var_stdimport = var3;
3376 var4 = NEW_array__Array(&type_array__Arraymmodule__MModule);
3377 ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MModule]>*/;
3378 var_imported_modules = var4;
3379 var5 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_imports]))(var_nmodule) /* n_imports on <var_nmodule:AModule>*/;
3380 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:ANodes[AImport]>*/;
3381 for(;;) {
3382 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
3383 if(!var7) break;
3384 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
3385 var_aimport = var8;
3386 var9 = 0;
3387 var_stdimport = var9;
3388 /* <var_aimport:AImport> isa AStdImport */
3389 cltype = type_parser_nodes__AStdImport.color;
3390 idtype = type_parser_nodes__AStdImport.id;
3391 if(cltype >= var_aimport->type->table_size) {
3392 var10 = 0;
3393 } else {
3394 var10 = var_aimport->type->type_table[cltype] == idtype;
3395 }
3396 var11 = !var10;
3397 if (var11){
3398 goto CONTINUE_label;
3399 } else {
3400 }
3401 var12 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
3402 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var12) /* n_id on <var12:AModuleName>*/;
3403 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_parser_nodes__Token__text]))(var13) /* text on <var13:TId>*/;
3404 var_mod_name = var14;
3405 var15 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
3406 var16 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var15, var_mmodule, var_mod_name) /* get_mmodule_by_name on <self:ModelBuilder>*/;
3407 var_sup = var16;
3408 var17 = NULL;
3409 if (var_sup == NULL) {
3410 var18 = 1; /* is null */
3411 } else {
3412 var18 = 0; /* arg is null but recv is not */
3413 }
3414 if (var18){
3415 goto CONTINUE_label;
3416 } else {
3417 }
3418 ((void (*)(val*, val*))(var_aimport->class->vft[COLOR_modelbuilder__AStdImport__mmodule_61d]))(var_aimport, var_sup) /* mmodule= on <var_aimport:AImport(AStdImport)>*/;
3419 ((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup) /* add on <var_imported_modules:Array[MModule]>*/;
3420 var19 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on <var_aimport:AImport(AStdImport)>*/;
3421 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var19) /* mvisibility on <var19:AVisibility>*/;
3422 var_mvisibility = var20;
3423 var21 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:ModelBuilder>*/;
3424 var22 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var21) /* == on <var_mvisibility:MVisibility>*/;
3425 if (var22){
3426 var23 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on <var_aimport:AImport(AStdImport)>*/;
3427 if (varonce) {
3428 var24 = varonce;
3429 } else {
3430 var25 = "Error: only properties can be protected.";
3431 var26 = 40;
3432 var27 = string__NativeString__to_s_with_length(var25, var26);
3433 var24 = var27;
3434 varonce = var24;
3435 }
3436 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var23, var24) /* error on <self:ModelBuilder>*/;
3437 goto RET_LABEL;
3438 } else {
3439 }
3440 ((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_sup, var_mvisibility) /* set_visibility_for on <var_mmodule:MModule>*/;
3441 CONTINUE_label: (void)0;
3442 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
3443 }
3444 BREAK_label: (void)0;
3445 if (var_stdimport){
3446 if (varonce28) {
3447 var29 = varonce28;
3448 } else {
3449 var30 = "standard";
3450 var31 = 8;
3451 var32 = string__NativeString__to_s_with_length(var30, var31);
3452 var29 = var32;
3453 varonce28 = var29;
3454 }
3455 var_mod_name33 = var29;
3456 var34 = NULL;
3457 var35 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var_nmodule, var34, var_mod_name33) /* get_mmodule_by_name on <self:ModelBuilder>*/;
3458 var_sup36 = var35;
3459 var37 = NULL;
3460 if (var_sup36 == NULL) {
3461 var38 = 0; /* is null */
3462 } else {
3463 var38 = 1; /* arg is null and recv is not */
3464 }
3465 if (var38){
3466 ((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup36) /* add on <var_imported_modules:Array[MModule]>*/;
3467 var39 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:ModelBuilder>*/;
3468 ((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_sup36, var39) /* set_visibility_for on <var_mmodule:MModule>*/;
3469 } else {
3470 }
3471 } else {
3472 }
3473 var40 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3474 if (varonce41) {
3475 var42 = varonce41;
3476 } else {
3477 var43 = " imports ";
3478 var44 = 9;
3479 var45 = string__NativeString__to_s_with_length(var43, var44);
3480 var42 = var45;
3481 varonce41 = var42;
3482 }
3483 if (varonce46) {
3484 var47 = varonce46;
3485 } else {
3486 var48 = ", ";
3487 var49 = 2;
3488 var50 = string__NativeString__to_s_with_length(var48, var49);
3489 var47 = var50;
3490 varonce46 = var47;
3491 }
3492 var51 = ((val* (*)(val*, val*))(var_imported_modules->class->vft[COLOR_string__Collection__join]))(var_imported_modules, var47) /* join on <var_imported_modules:Array[MModule]>*/;
3493 var52 = NEW_array__Array(&type_array__Arraykernel__Object);
3494 { /* var52 = array_instance Array[Object] */
3495 var53 = 3;
3496 var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
3497 ((struct instance_array__NativeArray*)var54)->values[0] = (val*) var_mmodule;
3498 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var42;
3499 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var51;
3500 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
3501 }
3502 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
3503 var56 = 3;
3504 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_toolcontext__ToolContext__info]))(var40, var55, var56) /* info on <var40:ToolContext>*/;
3505 ((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_imported_mmodules]))(var_mmodule, var_imported_modules) /* set_imported_mmodules on <var_mmodule:MModule>*/;
3506 RET_LABEL:;
3507 }
3508 /* method modelbuilder#ModelBuilder#build_module_importation for (self: Object, AModule) */
3509 void VIRTUAL_modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
3510 modelbuilder__ModelBuilder__build_module_importation(self, p0);
3511 RET_LABEL:;
3512 }
3513 /* method modelbuilder#ModelBuilder#nmodules for (self: ModelBuilder): Array[AModule] */
3514 val* modelbuilder__ModelBuilder__nmodules(val* self) {
3515 val* var /* : Array[AModule] */;
3516 val* var1 /* : Array[AModule] */;
3517 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val; /* @nmodules on <self:ModelBuilder> */
3518 if (var1 == NULL) {
3519 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nmodules");
3520 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 572);
3521 show_backtrace(1);
3522 }
3523 var = var1;
3524 RET_LABEL:;
3525 return var;
3526 }
3527 /* method modelbuilder#ModelBuilder#nmodules for (self: Object): Array[AModule] */
3528 val* VIRTUAL_modelbuilder__ModelBuilder__nmodules(val* self) {
3529 val* var /* : Array[AModule] */;
3530 val* var1 /* : Array[AModule] */;
3531 var1 = modelbuilder__ModelBuilder__nmodules(self);
3532 var = var1;
3533 RET_LABEL:;
3534 return var;
3535 }
3536 /* method modelbuilder#ModelBuilder#nmodules= for (self: ModelBuilder, Array[AModule]) */
3537 void modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) {
3538 self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val = p0; /* @nmodules on <self:ModelBuilder> */
3539 RET_LABEL:;
3540 }
3541 /* method modelbuilder#ModelBuilder#nmodules= for (self: Object, Array[AModule]) */
3542 void VIRTUAL_modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) {
3543 modelbuilder__ModelBuilder__nmodules_61d(self, p0);
3544 RET_LABEL:;
3545 }
3546 /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: ModelBuilder): HashMap[MModule, AModule] */
3547 val* modelbuilder__ModelBuilder__mmodule2nmodule(val* self) {
3548 val* var /* : HashMap[MModule, AModule] */;
3549 val* var1 /* : HashMap[MModule, AModule] */;
3550 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val; /* @mmodule2nmodule on <self:ModelBuilder> */
3551 if (var1 == NULL) {
3552 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule2nmodule");
3553 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 575);
3554 show_backtrace(1);
3555 }
3556 var = var1;
3557 RET_LABEL:;
3558 return var;
3559 }
3560 /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: Object): HashMap[MModule, AModule] */
3561 val* VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule(val* self) {
3562 val* var /* : HashMap[MModule, AModule] */;
3563 val* var1 /* : HashMap[MModule, AModule] */;
3564 var1 = modelbuilder__ModelBuilder__mmodule2nmodule(self);
3565 var = var1;
3566 RET_LABEL:;
3567 return var;
3568 }
3569 /* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: ModelBuilder, HashMap[MModule, AModule]) */
3570 void modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) {
3571 self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val = p0; /* @mmodule2nmodule on <self:ModelBuilder> */
3572 RET_LABEL:;
3573 }
3574 /* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: Object, HashMap[MModule, AModule]) */
3575 void VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) {
3576 modelbuilder__ModelBuilder__mmodule2nmodule_61d(self, p0);
3577 RET_LABEL:;
3578 }
3579 /* method modelbuilder#ModelBuilder#error for (self: ModelBuilder, ANode, String) */
3580 void modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) {
3581 val* var_n /* var n: ANode */;
3582 val* var_text /* var text: String */;
3583 val* var /* : ToolContext */;
3584 val* var1 /* : Location */;
3585 var_n = p0;
3586 var_text = p1;
3587 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3588 var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3589 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__error]))(var, var1, var_text) /* error on <var:ToolContext>*/;
3590 RET_LABEL:;
3591 }
3592 /* method modelbuilder#ModelBuilder#error for (self: Object, ANode, String) */
3593 void VIRTUAL_modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) {
3594 modelbuilder__ModelBuilder__error(self, p0, p1);
3595 RET_LABEL:;
3596 }
3597 /* method modelbuilder#ModelBuilder#warning for (self: ModelBuilder, ANode, String) */
3598 void modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) {
3599 val* var_n /* var n: ANode */;
3600 val* var_text /* var text: String */;
3601 val* var /* : ToolContext */;
3602 val* var1 /* : Location */;
3603 var_n = p0;
3604 var_text = p1;
3605 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3606 var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3607 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__warning]))(var, var1, var_text) /* warning on <var:ToolContext>*/;
3608 RET_LABEL:;
3609 }
3610 /* method modelbuilder#ModelBuilder#warning for (self: Object, ANode, String) */
3611 void VIRTUAL_modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) {
3612 modelbuilder__ModelBuilder__warning(self, p0, p1);
3613 RET_LABEL:;
3614 }
3615 /* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: ModelBuilder, ANode, String, MClass, MModule): MMethod */
3616 val* modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
3617 val* var /* : MMethod */;
3618 val* var_n /* var n: ANode */;
3619 val* var_name /* var name: String */;
3620 val* var_recv /* var recv: MClass */;
3621 val* var_mmodule /* var mmodule: MModule */;
3622 val* var1 /* : nullable MMethod */;
3623 val* var_res /* var res: nullable MMethod */;
3624 val* var2 /* : null */;
3625 short int var3 /* : Bool */;
3626 val* var4 /* : ToolContext */;
3627 val* var5 /* : Location */;
3628 static val* varonce;
3629 val* var6 /* : String */;
3630 char* var7 /* : NativeString */;
3631 long var8 /* : Int */;
3632 val* var9 /* : String */;
3633 static val* varonce10;
3634 val* var11 /* : String */;
3635 char* var12 /* : NativeString */;
3636 long var13 /* : Int */;
3637 val* var14 /* : String */;
3638 static val* varonce15;
3639 val* var16 /* : String */;
3640 char* var17 /* : NativeString */;
3641 long var18 /* : Int */;
3642 val* var19 /* : String */;
3643 val* var20 /* : Array[Object] */;
3644 long var21 /* : Int */;
3645 val* var22 /* : NativeArray[Object] */;
3646 val* var23 /* : String */;
3647 var_n = p0;
3648 var_name = p1;
3649 var_recv = p2;
3650 var_mmodule = p3;
3651 var1 = ((val* (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mmodule, var_name, var_recv) /* try_get_primitive_method on <var_mmodule:MModule>*/;
3652 var_res = var1;
3653 var2 = NULL;
3654 if (var_res == NULL) {
3655 var3 = 1; /* is null */
3656 } else {
3657 var3 = 0; /* arg is null but recv is not */
3658 }
3659 if (var3){
3660 var4 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3661 var5 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3662 if (varonce) {
3663 var6 = varonce;
3664 } else {
3665 var7 = "Fatal Error: ";
3666 var8 = 13;
3667 var9 = string__NativeString__to_s_with_length(var7, var8);
3668 var6 = var9;
3669 varonce = var6;
3670 }
3671 if (varonce10) {
3672 var11 = varonce10;
3673 } else {
3674 var12 = " must have a property named ";
3675 var13 = 28;
3676 var14 = string__NativeString__to_s_with_length(var12, var13);
3677 var11 = var14;
3678 varonce10 = var11;
3679 }
3680 if (varonce15) {
3681 var16 = varonce15;
3682 } else {
3683 var17 = ".";
3684 var18 = 1;
3685 var19 = string__NativeString__to_s_with_length(var17, var18);
3686 var16 = var19;
3687 varonce15 = var16;
3688 }
3689 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
3690 { /* var20 = array_instance Array[Object] */
3691 var21 = 5;
3692 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
3693 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var6;
3694 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_recv;
3695 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var11;
3696 ((struct instance_array__NativeArray*)var22)->values[3] = (val*) var_name;
3697 ((struct instance_array__NativeArray*)var22)->values[4] = (val*) var16;
3698 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
3699 }
3700 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
3701 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_toolcontext__ToolContext__fatal_error]))(var4, var5, var23) /* fatal_error on <var4:ToolContext>*/;
3702 fprintf(stderr, "Runtime error: %s", "Aborted");
3703 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 599);
3704 show_backtrace(1);
3705 } else {
3706 }
3707 var = var_res;
3708 goto RET_LABEL;
3709 RET_LABEL:;
3710 return var;
3711 }
3712 /* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: Object, ANode, String, MClass, MModule): MMethod */
3713 val* VIRTUAL_modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
3714 val* var /* : MMethod */;
3715 val* var1 /* : MMethod */;
3716 var1 = modelbuilder__ModelBuilder__force_get_primitive_method(self, p0, p1, p2, p3);
3717 var = var1;
3718 RET_LABEL:;
3719 return var;
3720 }
3721 /* method modelbuilder#ModulePath#name for (self: ModulePath): String */
3722 val* modelbuilder__ModulePath__name(val* self) {
3723 val* var /* : String */;
3724 val* var1 /* : String */;
3725 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dname].val; /* @name on <self:ModulePath> */
3726 if (var1 == NULL) {
3727 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
3728 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 607);
3729 show_backtrace(1);
3730 }
3731 var = var1;
3732 RET_LABEL:;
3733 return var;
3734 }
3735 /* method modelbuilder#ModulePath#name for (self: Object): String */
3736 val* VIRTUAL_modelbuilder__ModulePath__name(val* self) {
3737 val* var /* : String */;
3738 val* var1 /* : String */;
3739 var1 = modelbuilder__ModulePath__name(self);
3740 var = var1;
3741 RET_LABEL:;
3742 return var;
3743 }
3744 /* method modelbuilder#ModulePath#name= for (self: ModulePath, String) */
3745 void modelbuilder__ModulePath__name_61d(val* self, val* p0) {
3746 self->attrs[COLOR_modelbuilder__ModulePath___64dname].val = p0; /* @name on <self:ModulePath> */
3747 RET_LABEL:;
3748 }
3749 /* method modelbuilder#ModulePath#name= for (self: Object, String) */
3750 void VIRTUAL_modelbuilder__ModulePath__name_61d(val* self, val* p0) {
3751 modelbuilder__ModulePath__name_61d(self, p0);
3752 RET_LABEL:;
3753 }
3754 /* method modelbuilder#ModulePath#filepath for (self: ModulePath): String */
3755 val* modelbuilder__ModulePath__filepath(val* self) {
3756 val* var /* : String */;
3757 val* var1 /* : String */;
3758 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val; /* @filepath on <self:ModulePath> */
3759 if (var1 == NULL) {
3760 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @filepath");
3761 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 611);
3762 show_backtrace(1);
3763 }
3764 var = var1;
3765 RET_LABEL:;
3766 return var;
3767 }
3768 /* method modelbuilder#ModulePath#filepath for (self: Object): String */
3769 val* VIRTUAL_modelbuilder__ModulePath__filepath(val* self) {
3770 val* var /* : String */;
3771 val* var1 /* : String */;
3772 var1 = modelbuilder__ModulePath__filepath(self);
3773 var = var1;
3774 RET_LABEL:;
3775 return var;
3776 }
3777 /* method modelbuilder#ModulePath#filepath= for (self: ModulePath, String) */
3778 void modelbuilder__ModulePath__filepath_61d(val* self, val* p0) {
3779 self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val = p0; /* @filepath on <self:ModulePath> */
3780 RET_LABEL:;
3781 }
3782 /* method modelbuilder#ModulePath#filepath= for (self: Object, String) */
3783 void VIRTUAL_modelbuilder__ModulePath__filepath_61d(val* self, val* p0) {
3784 modelbuilder__ModulePath__filepath_61d(self, p0);
3785 RET_LABEL:;
3786 }
3787 /* method modelbuilder#ModulePath#mgroup for (self: ModulePath): MGroup */
3788 val* modelbuilder__ModulePath__mgroup(val* self) {
3789 val* var /* : MGroup */;
3790 val* var1 /* : MGroup */;
3791 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val; /* @mgroup on <self:ModulePath> */
3792 if (var1 == NULL) {
3793 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mgroup");
3794 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 614);
3795 show_backtrace(1);
3796 }
3797 var = var1;
3798 RET_LABEL:;
3799 return var;
3800 }
3801 /* method modelbuilder#ModulePath#mgroup for (self: Object): MGroup */
3802 val* VIRTUAL_modelbuilder__ModulePath__mgroup(val* self) {
3803 val* var /* : MGroup */;
3804 val* var1 /* : MGroup */;
3805 var1 = modelbuilder__ModulePath__mgroup(self);
3806 var = var1;
3807 RET_LABEL:;
3808 return var;
3809 }
3810 /* method modelbuilder#ModulePath#mgroup= for (self: ModulePath, MGroup) */
3811 void modelbuilder__ModulePath__mgroup_61d(val* self, val* p0) {
3812 self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val = p0; /* @mgroup on <self:ModulePath> */
3813 RET_LABEL:;
3814 }
3815 /* method modelbuilder#ModulePath#mgroup= for (self: Object, MGroup) */
3816 void VIRTUAL_modelbuilder__ModulePath__mgroup_61d(val* self, val* p0) {
3817 modelbuilder__ModulePath__mgroup_61d(self, p0);
3818 RET_LABEL:;
3819 }
3820 /* method modelbuilder#ModulePath#mmodule for (self: ModulePath): nullable MModule */
3821 val* modelbuilder__ModulePath__mmodule(val* self) {
3822 val* var /* : nullable MModule */;
3823 val* var1 /* : nullable MModule */;
3824 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dmmodule].val; /* @mmodule on <self:ModulePath> */
3825 var = var1;
3826 RET_LABEL:;
3827 return var;
3828 }
3829 /* method modelbuilder#ModulePath#mmodule for (self: Object): nullable MModule */
3830 val* VIRTUAL_modelbuilder__ModulePath__mmodule(val* self) {
3831 val* var /* : nullable MModule */;
3832 val* var1 /* : nullable MModule */;
3833 var1 = modelbuilder__ModulePath__mmodule(self);
3834 var = var1;
3835 RET_LABEL:;
3836 return var;
3837 }
3838 /* method modelbuilder#ModulePath#mmodule= for (self: ModulePath, nullable MModule) */
3839 void modelbuilder__ModulePath__mmodule_61d(val* self, val* p0) {
3840 self->attrs[COLOR_modelbuilder__ModulePath___64dmmodule].val = p0; /* @mmodule on <self:ModulePath> */
3841 RET_LABEL:;
3842 }
3843 /* method modelbuilder#ModulePath#mmodule= for (self: Object, nullable MModule) */
3844 void VIRTUAL_modelbuilder__ModulePath__mmodule_61d(val* self, val* p0) {
3845 modelbuilder__ModulePath__mmodule_61d(self, p0);
3846 RET_LABEL:;
3847 }
3848 /* method modelbuilder#ModulePath#to_s for (self: ModulePath): String */
3849 val* modelbuilder__ModulePath__to_s(val* self) {
3850 val* var /* : String */;
3851 val* var1 /* : String */;
3852 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModulePath__filepath]))(self) /* filepath on <self:ModulePath>*/;
3853 var = var1;
3854 goto RET_LABEL;
3855 RET_LABEL:;
3856 return var;
3857 }
3858 /* method modelbuilder#ModulePath#to_s for (self: Object): String */
3859 val* VIRTUAL_modelbuilder__ModulePath__to_s(val* self) {
3860 val* var /* : String */;
3861 val* var1 /* : String */;
3862 var1 = modelbuilder__ModulePath__to_s(self);
3863 var = var1;
3864 RET_LABEL:;
3865 return var;
3866 }
3867 /* method modelbuilder#ModulePath#init for (self: ModulePath, String, String, MGroup) */
3868 void modelbuilder__ModulePath__init(val* self, val* p0, val* p1, val* p2) {
3869 self->attrs[COLOR_modelbuilder__ModulePath___64dname].val = p0; /* @name on <self:ModulePath> */
3870 self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val = p1; /* @filepath on <self:ModulePath> */
3871 self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val = p2; /* @mgroup on <self:ModulePath> */
3872 RET_LABEL:;
3873 }
3874 /* method modelbuilder#ModulePath#init for (self: Object, String, String, MGroup) */
3875 void VIRTUAL_modelbuilder__ModulePath__init(val* self, val* p0, val* p1, val* p2) {
3876 modelbuilder__ModulePath__init(self, p0, p1, p2);
3877 RET_LABEL:;
3878 }
3879 /* method modelbuilder#AStdImport#mmodule for (self: AStdImport): nullable MModule */
3880 val* modelbuilder__AStdImport__mmodule(val* self) {
3881 val* var /* : nullable MModule */;
3882 val* var1 /* : nullable MModule */;
3883 var1 = self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val; /* @mmodule on <self:AStdImport> */
3884 var = var1;
3885 RET_LABEL:;
3886 return var;
3887 }
3888 /* method modelbuilder#AStdImport#mmodule for (self: Object): nullable MModule */
3889 val* VIRTUAL_modelbuilder__AStdImport__mmodule(val* self) {
3890 val* var /* : nullable MModule */;
3891 val* var1 /* : nullable MModule */;
3892 var1 = modelbuilder__AStdImport__mmodule(self);
3893 var = var1;
3894 RET_LABEL:;
3895 return var;
3896 }
3897 /* method modelbuilder#AStdImport#mmodule= for (self: AStdImport, nullable MModule) */
3898 void modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) {
3899 self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val = p0; /* @mmodule on <self:AStdImport> */
3900 RET_LABEL:;
3901 }
3902 /* method modelbuilder#AStdImport#mmodule= for (self: Object, nullable MModule) */
3903 void VIRTUAL_modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) {
3904 modelbuilder__AStdImport__mmodule_61d(self, p0);
3905 RET_LABEL:;
3906 }
3907 /* method modelbuilder#AModule#mmodule for (self: AModule): nullable MModule */
3908 val* modelbuilder__AModule__mmodule(val* self) {
3909 val* var /* : nullable MModule */;
3910 val* var1 /* : nullable MModule */;
3911 var1 = self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val; /* @mmodule on <self:AModule> */
3912 var = var1;
3913 RET_LABEL:;
3914 return var;
3915 }
3916 /* method modelbuilder#AModule#mmodule for (self: Object): nullable MModule */
3917 val* VIRTUAL_modelbuilder__AModule__mmodule(val* self) {
3918 val* var /* : nullable MModule */;
3919 val* var1 /* : nullable MModule */;
3920 var1 = modelbuilder__AModule__mmodule(self);
3921 var = var1;
3922 RET_LABEL:;
3923 return var;
3924 }
3925 /* method modelbuilder#AModule#mmodule= for (self: AModule, nullable MModule) */
3926 void modelbuilder__AModule__mmodule_61d(val* self, val* p0) {
3927 self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val = p0; /* @mmodule on <self:AModule> */
3928 RET_LABEL:;
3929 }
3930 /* method modelbuilder#AModule#mmodule= for (self: Object, nullable MModule) */
3931 void VIRTUAL_modelbuilder__AModule__mmodule_61d(val* self, val* p0) {
3932 modelbuilder__AModule__mmodule_61d(self, p0);
3933 RET_LABEL:;
3934 }
3935 /* method modelbuilder#AModule#is_importation_done for (self: AModule): Bool */
3936 short int modelbuilder__AModule__is_importation_done(val* self) {
3937 short int var /* : Bool */;
3938 short int var1 /* : Bool */;
3939 var1 = self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s; /* @is_importation_done on <self:AModule> */
3940 var = var1;
3941 RET_LABEL:;
3942 return var;
3943 }
3944 /* method modelbuilder#AModule#is_importation_done for (self: Object): Bool */
3945 short int VIRTUAL_modelbuilder__AModule__is_importation_done(val* self) {
3946 short int var /* : Bool */;
3947 short int var1 /* : Bool */;
3948 var1 = modelbuilder__AModule__is_importation_done(self);
3949 var = var1;
3950 RET_LABEL:;
3951 return var;
3952 }
3953 /* method modelbuilder#AModule#is_importation_done= for (self: AModule, Bool) */
3954 void modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) {
3955 self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s = p0; /* @is_importation_done on <self:AModule> */
3956 RET_LABEL:;
3957 }
3958 /* method modelbuilder#AModule#is_importation_done= for (self: Object, Bool) */
3959 void VIRTUAL_modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) {
3960 modelbuilder__AModule__is_importation_done_61d(self, p0);
3961 RET_LABEL:;
3962 }
3963 /* method modelbuilder#AVisibility#mvisibility for (self: AVisibility): MVisibility */
3964 val* modelbuilder__AVisibility__mvisibility(val* self) {
3965 val* var /* : MVisibility */;
3966 const char* var_class_name;
3967 var_class_name = self == NULL ? "null" : self->type->name;
3968 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "mvisibility", var_class_name);
3969 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 637);
3970 show_backtrace(1);
3971 RET_LABEL:;
3972 return var;
3973 }
3974 /* method modelbuilder#AVisibility#mvisibility for (self: Object): MVisibility */
3975 val* VIRTUAL_modelbuilder__AVisibility__mvisibility(val* self) {
3976 val* var /* : MVisibility */;
3977 val* var1 /* : MVisibility */;
3978 var1 = modelbuilder__AVisibility__mvisibility(self);
3979 var = var1;
3980 RET_LABEL:;
3981 return var;
3982 }
3983 /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: AIntrudeVisibility): MVisibility */
3984 val* modelbuilder__AIntrudeVisibility__mvisibility(val* self) {
3985 val* var /* : MVisibility */;
3986 val* var1 /* : MVisibility */;
3987 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:AIntrudeVisibility>*/;
3988 var = var1;
3989 goto RET_LABEL;
3990 RET_LABEL:;
3991 return var;
3992 }
3993 /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: Object): MVisibility */
3994 val* VIRTUAL_modelbuilder__AIntrudeVisibility__mvisibility(val* self) {
3995 val* var /* : MVisibility */;
3996 val* var1 /* : MVisibility */;
3997 var1 = modelbuilder__AIntrudeVisibility__mvisibility(self);
3998 var = var1;
3999 RET_LABEL:;
4000 return var;
4001 }
4002 /* method modelbuilder#APublicVisibility#mvisibility for (self: APublicVisibility): MVisibility */
4003 val* modelbuilder__APublicVisibility__mvisibility(val* self) {
4004 val* var /* : MVisibility */;
4005 val* var1 /* : MVisibility */;
4006 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:APublicVisibility>*/;
4007 var = var1;
4008 goto RET_LABEL;
4009 RET_LABEL:;
4010 return var;
4011 }
4012 /* method modelbuilder#APublicVisibility#mvisibility for (self: Object): MVisibility */
4013 val* VIRTUAL_modelbuilder__APublicVisibility__mvisibility(val* self) {
4014 val* var /* : MVisibility */;
4015 val* var1 /* : MVisibility */;
4016 var1 = modelbuilder__APublicVisibility__mvisibility(self);
4017 var = var1;
4018 RET_LABEL:;
4019 return var;
4020 }
4021 /* method modelbuilder#AProtectedVisibility#mvisibility for (self: AProtectedVisibility): MVisibility */
4022 val* modelbuilder__AProtectedVisibility__mvisibility(val* self) {
4023 val* var /* : MVisibility */;
4024 val* var1 /* : MVisibility */;
4025 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:AProtectedVisibility>*/;
4026 var = var1;
4027 goto RET_LABEL;
4028 RET_LABEL:;
4029 return var;
4030 }
4031 /* method modelbuilder#AProtectedVisibility#mvisibility for (self: Object): MVisibility */
4032 val* VIRTUAL_modelbuilder__AProtectedVisibility__mvisibility(val* self) {
4033 val* var /* : MVisibility */;
4034 val* var1 /* : MVisibility */;
4035 var1 = modelbuilder__AProtectedVisibility__mvisibility(self);
4036 var = var1;
4037 RET_LABEL:;
4038 return var;
4039 }
4040 /* method modelbuilder#APrivateVisibility#mvisibility for (self: APrivateVisibility): MVisibility */
4041 val* modelbuilder__APrivateVisibility__mvisibility(val* self) {
4042 val* var /* : MVisibility */;
4043 val* var1 /* : MVisibility */;
4044 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:APrivateVisibility>*/;
4045 var = var1;
4046 goto RET_LABEL;
4047 RET_LABEL:;
4048 return var;
4049 }
4050 /* method modelbuilder#APrivateVisibility#mvisibility for (self: Object): MVisibility */
4051 val* VIRTUAL_modelbuilder__APrivateVisibility__mvisibility(val* self) {
4052 val* var /* : MVisibility */;
4053 val* var1 /* : MVisibility */;
4054 var1 = modelbuilder__APrivateVisibility__mvisibility(self);
4055 var = var1;
4056 RET_LABEL:;
4057 return var;
4058 }