model_utils: extract mclasses and mclassdefs from MProject and Mgroup
[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", "Receiver 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", "Receiver 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", "Receiver 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", "Receiver 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 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_module_importation]))(self, var_nmodule) /* build_module_importation on <self:ModelBuilder>*/;
3111 var = var_nmodule;
3112 goto RET_LABEL;
3113 RET_LABEL:;
3114 return var;
3115 }
3116 /* method modelbuilder#ModelBuilder#load_module for (self: Object, String): nullable AModule */
3117 val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0) {
3118 val* var /* : nullable AModule */;
3119 val* var1 /* : nullable AModule */;
3120 var1 = modelbuilder__ModelBuilder__load_module(self, p0);
3121 var = var1;
3122 RET_LABEL:;
3123 return var;
3124 }
3125 /* method modelbuilder#ModelBuilder#load_rt_module for (self: ModelBuilder, MModule, AModule, String): nullable AModule */
3126 val* modelbuilder__ModelBuilder__load_rt_module(val* self, val* p0, val* p1, val* p2) {
3127 val* var /* : nullable AModule */;
3128 val* var_parent /* var parent: MModule */;
3129 val* var_nmodule /* var nmodule: AModule */;
3130 val* var_mod_name /* var mod_name: String */;
3131 val* var1 /* : MModule */;
3132 val* var2 /* : Model */;
3133 val* var3 /* : nullable MGroup */;
3134 val* var4 /* : Location */;
3135 val* var_mmodule /* var mmodule: MModule */;
3136 val* var5 /* : Array[AModule] */;
3137 val* var6 /* : HashMap[MModule, AModule] */;
3138 val* var7 /* : Array[MModule] */;
3139 val* var_imported_modules /* var imported_modules: Array[MModule] */;
3140 val* var8 /* : MVisibility */;
3141 var_parent = p0;
3142 var_nmodule = p1;
3143 var_mod_name = p2;
3144 var1 = NEW_mmodule__MModule(&type_mmodule__MModule);
3145 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
3146 var3 = ((val* (*)(val*))(var_parent->class->vft[COLOR_mmodule__MModule__mgroup]))(var_parent) /* mgroup on <var_parent:MModule>*/;
3147 var4 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on <var_nmodule:AModule>*/;
3148 ((void (*)(val*, val*, val*, val*, val*))(var1->class->vft[COLOR_mmodule__MModule__init]))(var1, var2, var3, var_mod_name, var4) /* init on <var1:MModule>*/;
3149 var_mmodule = var1;
3150 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on <var_nmodule:AModule>*/;
3151 var5 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on <self:ModelBuilder>*/;
3152 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var5, var_nmodule) /* add on <var5:Array[AModule]>*/;
3153 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
3154 ((void (*)(val*, val*, val*))(var6->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var6, var_mmodule, var_nmodule) /* []= on <var6:HashMap[MModule, AModule]>*/;
3155 var7 = NEW_array__Array(&type_array__Arraymmodule__MModule);
3156 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[MModule]>*/;
3157 var_imported_modules = var7;
3158 ((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]>*/;
3159 var8 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:ModelBuilder>*/;
3160 ((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>*/;
3161 ((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>*/;
3162 var = var_nmodule;
3163 goto RET_LABEL;
3164 RET_LABEL:;
3165 return var;
3166 }
3167 /* method modelbuilder#ModelBuilder#load_rt_module for (self: Object, MModule, AModule, String): nullable AModule */
3168 val* VIRTUAL_modelbuilder__ModelBuilder__load_rt_module(val* self, val* p0, val* p1, val* p2) {
3169 val* var /* : nullable AModule */;
3170 val* var1 /* : nullable AModule */;
3171 var1 = modelbuilder__ModelBuilder__load_rt_module(self, p0, p1, p2);
3172 var = var1;
3173 RET_LABEL:;
3174 return var;
3175 }
3176 /* method modelbuilder#ModelBuilder#build_a_mmodule for (self: ModelBuilder, nullable MGroup, String, AModule): nullable MModule */
3177 val* modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) {
3178 val* var /* : nullable MModule */;
3179 val* var_mgroup /* var mgroup: nullable MGroup */;
3180 val* var_mod_name /* var mod_name: String */;
3181 val* var_nmodule /* var nmodule: AModule */;
3182 val* var1 /* : nullable AModuledecl */;
3183 val* var_decl /* var decl: nullable AModuledecl */;
3184 val* var2 /* : null */;
3185 short int var3 /* : Bool */;
3186 val* var4 /* : AModuleName */;
3187 val* var5 /* : TId */;
3188 val* var6 /* : String */;
3189 val* var_decl_name /* var decl_name: String */;
3190 short int var7 /* : Bool */;
3191 val* var8 /* : AModuleName */;
3192 static val* varonce;
3193 val* var9 /* : String */;
3194 char* var10 /* : NativeString */;
3195 long var11 /* : Int */;
3196 val* var12 /* : String */;
3197 static val* varonce13;
3198 val* var14 /* : String */;
3199 char* var15 /* : NativeString */;
3200 long var16 /* : Int */;
3201 val* var17 /* : String */;
3202 val* var18 /* : Array[Object] */;
3203 long var19 /* : Int */;
3204 val* var20 /* : NativeArray[Object] */;
3205 val* var21 /* : String */;
3206 val* var22 /* : MModule */;
3207 val* var23 /* : Model */;
3208 val* var24 /* : Location */;
3209 val* var_mmodule /* var mmodule: MModule */;
3210 val* var25 /* : Array[AModule] */;
3211 val* var26 /* : HashMap[MModule, AModule] */;
3212 var_mgroup = p0;
3213 var_mod_name = p1;
3214 var_nmodule = p2;
3215 var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_moduledecl]))(var_nmodule) /* n_moduledecl on <var_nmodule:AModule>*/;
3216 var_decl = var1;
3217 var2 = NULL;
3218 if (var_decl == NULL) {
3219 var3 = 1; /* is null */
3220 } else {
3221 var3 = 0; /* arg is null but recv is not */
3222 }
3223 if (var3){
3224 } else {
3225 var4 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on <var_decl:nullable AModuledecl(AModuledecl)>*/;
3226 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var4) /* n_id on <var4:AModuleName>*/;
3227 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_parser_nodes__Token__text]))(var5) /* text on <var5:TId>*/;
3228 var_decl_name = var6;
3229 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>*/;
3230 if (var7){
3231 var8 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on <var_decl:nullable AModuledecl(AModuledecl)>*/;
3232 if (varonce) {
3233 var9 = varonce;
3234 } else {
3235 var10 = "Error: module name missmatch; declared ";
3236 var11 = 39;
3237 var12 = string__NativeString__to_s_with_length(var10, var11);
3238 var9 = var12;
3239 varonce = var9;
3240 }
3241 if (varonce13) {
3242 var14 = varonce13;
3243 } else {
3244 var15 = " file named ";
3245 var16 = 12;
3246 var17 = string__NativeString__to_s_with_length(var15, var16);
3247 var14 = var17;
3248 varonce13 = var14;
3249 }
3250 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
3251 { /* var18 = array_instance Array[Object] */
3252 var19 = 4;
3253 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
3254 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var9;
3255 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var_decl_name;
3256 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
3257 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var_mod_name;
3258 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
3259 }
3260 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
3261 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var8, var21) /* error on <self:ModelBuilder>*/;
3262 } else {
3263 }
3264 }
3265 var22 = NEW_mmodule__MModule(&type_mmodule__MModule);
3266 var23 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
3267 var24 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on <var_nmodule:AModule>*/;
3268 ((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>*/;
3269 var_mmodule = var22;
3270 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on <var_nmodule:AModule>*/;
3271 var25 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on <self:ModelBuilder>*/;
3272 ((void (*)(val*, val*))(var25->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var25, var_nmodule) /* add on <var25:Array[AModule]>*/;
3273 var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
3274 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var26, var_mmodule, var_nmodule) /* []= on <var26:HashMap[MModule, AModule]>*/;
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 short int var28 /* : Bool */;
3331 val* var29 /* : AModuleName */;
3332 static val* varonce30;
3333 val* var31 /* : String */;
3334 char* var32 /* : NativeString */;
3335 long var33 /* : Int */;
3336 val* var34 /* : String */;
3337 static val* varonce35;
3338 val* var36 /* : String */;
3339 char* var37 /* : NativeString */;
3340 long var38 /* : Int */;
3341 val* var39 /* : String */;
3342 val* var40 /* : Array[Object] */;
3343 long var41 /* : Int */;
3344 val* var42 /* : NativeArray[Object] */;
3345 val* var43 /* : String */;
3346 val* var44 /* : POSetElement[MModule] */;
3347 short int var45 /* : Bool */;
3348 val* var46 /* : AModuleName */;
3349 static val* varonce47;
3350 val* var48 /* : String */;
3351 char* var49 /* : NativeString */;
3352 long var50 /* : Int */;
3353 val* var51 /* : String */;
3354 static val* varonce52;
3355 val* var53 /* : String */;
3356 char* var54 /* : NativeString */;
3357 long var55 /* : Int */;
3358 val* var56 /* : String */;
3359 static val* varonce57;
3360 val* var58 /* : String */;
3361 char* var59 /* : NativeString */;
3362 long var60 /* : Int */;
3363 val* var61 /* : String */;
3364 val* var62 /* : Array[Object] */;
3365 long var63 /* : Int */;
3366 val* var64 /* : NativeArray[Object] */;
3367 val* var65 /* : String */;
3368 static val* varonce66;
3369 val* var67 /* : String */;
3370 char* var68 /* : NativeString */;
3371 long var69 /* : Int */;
3372 val* var70 /* : String */;
3373 val* var_mod_name71 /* var mod_name: String */;
3374 val* var72 /* : null */;
3375 val* var73 /* : nullable MModule */;
3376 val* var_sup74 /* var sup: nullable MModule */;
3377 val* var75 /* : null */;
3378 short int var76 /* : Bool */;
3379 val* var77 /* : MVisibility */;
3380 val* var78 /* : ToolContext */;
3381 static val* varonce79;
3382 val* var80 /* : String */;
3383 char* var81 /* : NativeString */;
3384 long var82 /* : Int */;
3385 val* var83 /* : String */;
3386 static val* varonce84;
3387 val* var85 /* : String */;
3388 char* var86 /* : NativeString */;
3389 long var87 /* : Int */;
3390 val* var88 /* : String */;
3391 val* var89 /* : String */;
3392 val* var90 /* : Array[Object] */;
3393 long var91 /* : Int */;
3394 val* var92 /* : NativeArray[Object] */;
3395 val* var93 /* : String */;
3396 long var94 /* : Int */;
3397 var_nmodule = p0;
3398 var = ((short int (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__is_importation_done]))(var_nmodule) /* is_importation_done on <var_nmodule:AModule>*/;
3399 if (var){
3400 goto RET_LABEL;
3401 } else {
3402 }
3403 var1 = 1;
3404 ((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>*/;
3405 var2 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
3406 if (var2 == NULL) {
3407 fprintf(stderr, "Runtime error: %s", "Cast failed");
3408 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 540);
3409 show_backtrace(1);
3410 }
3411 var_mmodule = var2;
3412 var3 = 1;
3413 var_stdimport = var3;
3414 var4 = NEW_array__Array(&type_array__Arraymmodule__MModule);
3415 ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MModule]>*/;
3416 var_imported_modules = var4;
3417 var5 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_imports]))(var_nmodule) /* n_imports on <var_nmodule:AModule>*/;
3418 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:ANodes[AImport]>*/;
3419 for(;;) {
3420 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
3421 if(!var7) break;
3422 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
3423 var_aimport = var8;
3424 var9 = 0;
3425 var_stdimport = var9;
3426 /* <var_aimport:AImport> isa AStdImport */
3427 cltype = type_parser_nodes__AStdImport.color;
3428 idtype = type_parser_nodes__AStdImport.id;
3429 if(cltype >= var_aimport->type->table_size) {
3430 var10 = 0;
3431 } else {
3432 var10 = var_aimport->type->type_table[cltype] == idtype;
3433 }
3434 var11 = !var10;
3435 if (var11){
3436 goto CONTINUE_label;
3437 } else {
3438 }
3439 var12 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
3440 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var12) /* n_id on <var12:AModuleName>*/;
3441 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_parser_nodes__Token__text]))(var13) /* text on <var13:TId>*/;
3442 var_mod_name = var14;
3443 var15 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
3444 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>*/;
3445 var_sup = var16;
3446 var17 = NULL;
3447 if (var_sup == NULL) {
3448 var18 = 1; /* is null */
3449 } else {
3450 var18 = 0; /* arg is null but recv is not */
3451 }
3452 if (var18){
3453 goto CONTINUE_label;
3454 } else {
3455 }
3456 ((void (*)(val*, val*))(var_aimport->class->vft[COLOR_modelbuilder__AStdImport__mmodule_61d]))(var_aimport, var_sup) /* mmodule= on <var_aimport:AImport(AStdImport)>*/;
3457 ((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]>*/;
3458 var19 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on <var_aimport:AImport(AStdImport)>*/;
3459 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var19) /* mvisibility on <var19:AVisibility>*/;
3460 var_mvisibility = var20;
3461 var21 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:ModelBuilder>*/;
3462 var22 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var21) /* == on <var_mvisibility:MVisibility>*/;
3463 if (var22){
3464 var23 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on <var_aimport:AImport(AStdImport)>*/;
3465 if (varonce) {
3466 var24 = varonce;
3467 } else {
3468 var25 = "Error: only properties can be protected.";
3469 var26 = 40;
3470 var27 = string__NativeString__to_s_with_length(var25, var26);
3471 var24 = var27;
3472 varonce = var24;
3473 }
3474 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var23, var24) /* error on <self:ModelBuilder>*/;
3475 goto RET_LABEL;
3476 } else {
3477 }
3478 var28 = ((short int (*)(val*, val*))(var_sup->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup, var_mmodule) /* == on <var_sup:nullable MModule(MModule)>*/;
3479 if (var28){
3480 var29 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
3481 if (varonce30) {
3482 var31 = varonce30;
3483 } else {
3484 var32 = "Error: Dependency loop in module ";
3485 var33 = 33;
3486 var34 = string__NativeString__to_s_with_length(var32, var33);
3487 var31 = var34;
3488 varonce30 = var31;
3489 }
3490 if (varonce35) {
3491 var36 = varonce35;
3492 } else {
3493 var37 = ".";
3494 var38 = 1;
3495 var39 = string__NativeString__to_s_with_length(var37, var38);
3496 var36 = var39;
3497 varonce35 = var36;
3498 }
3499 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
3500 { /* var40 = array_instance Array[Object] */
3501 var41 = 3;
3502 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
3503 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var31;
3504 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_mmodule;
3505 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36;
3506 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
3507 }
3508 var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
3509 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var29, var43) /* error on <self:ModelBuilder>*/;
3510 } else {
3511 }
3512 var44 = ((val* (*)(val*))(var_sup->class->vft[COLOR_mmodule__MModule__in_importation]))(var_sup) /* in_importation on <var_sup:nullable MModule(MModule)>*/;
3513 var45 = ((short int (*)(val*, val*))(var44->class->vft[COLOR_poset__POSetElement___60d]))(var44, var_mmodule) /* < on <var44:POSetElement[MModule]>*/;
3514 if (var45){
3515 var46 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
3516 if (varonce47) {
3517 var48 = varonce47;
3518 } else {
3519 var49 = "Error: Dependency loop between modules ";
3520 var50 = 39;
3521 var51 = string__NativeString__to_s_with_length(var49, var50);
3522 var48 = var51;
3523 varonce47 = var48;
3524 }
3525 if (varonce52) {
3526 var53 = varonce52;
3527 } else {
3528 var54 = " and ";
3529 var55 = 5;
3530 var56 = string__NativeString__to_s_with_length(var54, var55);
3531 var53 = var56;
3532 varonce52 = var53;
3533 }
3534 if (varonce57) {
3535 var58 = varonce57;
3536 } else {
3537 var59 = ".";
3538 var60 = 1;
3539 var61 = string__NativeString__to_s_with_length(var59, var60);
3540 var58 = var61;
3541 varonce57 = var58;
3542 }
3543 var62 = NEW_array__Array(&type_array__Arraykernel__Object);
3544 { /* var62 = array_instance Array[Object] */
3545 var63 = 5;
3546 var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object);
3547 ((struct instance_array__NativeArray*)var64)->values[0] = (val*) var48;
3548 ((struct instance_array__NativeArray*)var64)->values[1] = (val*) var_mmodule;
3549 ((struct instance_array__NativeArray*)var64)->values[2] = (val*) var53;
3550 ((struct instance_array__NativeArray*)var64)->values[3] = (val*) var_sup;
3551 ((struct instance_array__NativeArray*)var64)->values[4] = (val*) var58;
3552 ((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on <var62:Array[Object]>*/;
3553 }
3554 var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on <var62:Array[Object]>*/;
3555 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var46, var65) /* error on <self:ModelBuilder>*/;
3556 goto RET_LABEL;
3557 } else {
3558 }
3559 ((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>*/;
3560 CONTINUE_label: (void)0;
3561 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
3562 }
3563 BREAK_label: (void)0;
3564 if (var_stdimport){
3565 if (varonce66) {
3566 var67 = varonce66;
3567 } else {
3568 var68 = "standard";
3569 var69 = 8;
3570 var70 = string__NativeString__to_s_with_length(var68, var69);
3571 var67 = var70;
3572 varonce66 = var67;
3573 }
3574 var_mod_name71 = var67;
3575 var72 = NULL;
3576 var73 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var_nmodule, var72, var_mod_name71) /* get_mmodule_by_name on <self:ModelBuilder>*/;
3577 var_sup74 = var73;
3578 var75 = NULL;
3579 if (var_sup74 == NULL) {
3580 var76 = 0; /* is null */
3581 } else {
3582 var76 = 1; /* arg is null and recv is not */
3583 }
3584 if (var76){
3585 ((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup74) /* add on <var_imported_modules:Array[MModule]>*/;
3586 var77 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:ModelBuilder>*/;
3587 ((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__set_visibility_for]))(var_mmodule, var_sup74, var77) /* set_visibility_for on <var_mmodule:MModule>*/;
3588 } else {
3589 }
3590 } else {
3591 }
3592 var78 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3593 if (varonce79) {
3594 var80 = varonce79;
3595 } else {
3596 var81 = " imports ";
3597 var82 = 9;
3598 var83 = string__NativeString__to_s_with_length(var81, var82);
3599 var80 = var83;
3600 varonce79 = var80;
3601 }
3602 if (varonce84) {
3603 var85 = varonce84;
3604 } else {
3605 var86 = ", ";
3606 var87 = 2;
3607 var88 = string__NativeString__to_s_with_length(var86, var87);
3608 var85 = var88;
3609 varonce84 = var85;
3610 }
3611 var89 = ((val* (*)(val*, val*))(var_imported_modules->class->vft[COLOR_string__Collection__join]))(var_imported_modules, var85) /* join on <var_imported_modules:Array[MModule]>*/;
3612 var90 = NEW_array__Array(&type_array__Arraykernel__Object);
3613 { /* var90 = array_instance Array[Object] */
3614 var91 = 3;
3615 var92 = NEW_array__NativeArray(var91, &type_array__NativeArraykernel__Object);
3616 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_mmodule;
3617 ((struct instance_array__NativeArray*)var92)->values[1] = (val*) var80;
3618 ((struct instance_array__NativeArray*)var92)->values[2] = (val*) var89;
3619 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[Object]>*/;
3620 }
3621 var93 = ((val* (*)(val*))(var90->class->vft[COLOR_string__Object__to_s]))(var90) /* to_s on <var90:Array[Object]>*/;
3622 var94 = 3;
3623 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_toolcontext__ToolContext__info]))(var78, var93, var94) /* info on <var78:ToolContext>*/;
3624 ((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>*/;
3625 RET_LABEL:;
3626 }
3627 /* method modelbuilder#ModelBuilder#build_module_importation for (self: Object, AModule) */
3628 void VIRTUAL_modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
3629 modelbuilder__ModelBuilder__build_module_importation(self, p0);
3630 RET_LABEL:;
3631 }
3632 /* method modelbuilder#ModelBuilder#nmodules for (self: ModelBuilder): Array[AModule] */
3633 val* modelbuilder__ModelBuilder__nmodules(val* self) {
3634 val* var /* : Array[AModule] */;
3635 val* var1 /* : Array[AModule] */;
3636 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val; /* @nmodules on <self:ModelBuilder> */
3637 if (var1 == NULL) {
3638 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nmodules");
3639 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 579);
3640 show_backtrace(1);
3641 }
3642 var = var1;
3643 RET_LABEL:;
3644 return var;
3645 }
3646 /* method modelbuilder#ModelBuilder#nmodules for (self: Object): Array[AModule] */
3647 val* VIRTUAL_modelbuilder__ModelBuilder__nmodules(val* self) {
3648 val* var /* : Array[AModule] */;
3649 val* var1 /* : Array[AModule] */;
3650 var1 = modelbuilder__ModelBuilder__nmodules(self);
3651 var = var1;
3652 RET_LABEL:;
3653 return var;
3654 }
3655 /* method modelbuilder#ModelBuilder#nmodules= for (self: ModelBuilder, Array[AModule]) */
3656 void modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) {
3657 self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val = p0; /* @nmodules on <self:ModelBuilder> */
3658 RET_LABEL:;
3659 }
3660 /* method modelbuilder#ModelBuilder#nmodules= for (self: Object, Array[AModule]) */
3661 void VIRTUAL_modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) {
3662 modelbuilder__ModelBuilder__nmodules_61d(self, p0);
3663 RET_LABEL:;
3664 }
3665 /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: ModelBuilder): HashMap[MModule, AModule] */
3666 val* modelbuilder__ModelBuilder__mmodule2nmodule(val* self) {
3667 val* var /* : HashMap[MModule, AModule] */;
3668 val* var1 /* : HashMap[MModule, AModule] */;
3669 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val; /* @mmodule2nmodule on <self:ModelBuilder> */
3670 if (var1 == NULL) {
3671 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule2nmodule");
3672 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 582);
3673 show_backtrace(1);
3674 }
3675 var = var1;
3676 RET_LABEL:;
3677 return var;
3678 }
3679 /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: Object): HashMap[MModule, AModule] */
3680 val* VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule(val* self) {
3681 val* var /* : HashMap[MModule, AModule] */;
3682 val* var1 /* : HashMap[MModule, AModule] */;
3683 var1 = modelbuilder__ModelBuilder__mmodule2nmodule(self);
3684 var = var1;
3685 RET_LABEL:;
3686 return var;
3687 }
3688 /* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: ModelBuilder, HashMap[MModule, AModule]) */
3689 void modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) {
3690 self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val = p0; /* @mmodule2nmodule on <self:ModelBuilder> */
3691 RET_LABEL:;
3692 }
3693 /* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: Object, HashMap[MModule, AModule]) */
3694 void VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) {
3695 modelbuilder__ModelBuilder__mmodule2nmodule_61d(self, p0);
3696 RET_LABEL:;
3697 }
3698 /* method modelbuilder#ModelBuilder#error for (self: ModelBuilder, ANode, String) */
3699 void modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) {
3700 val* var_n /* var n: ANode */;
3701 val* var_text /* var text: String */;
3702 val* var /* : ToolContext */;
3703 val* var1 /* : Location */;
3704 var_n = p0;
3705 var_text = p1;
3706 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3707 var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3708 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__error]))(var, var1, var_text) /* error on <var:ToolContext>*/;
3709 RET_LABEL:;
3710 }
3711 /* method modelbuilder#ModelBuilder#error for (self: Object, ANode, String) */
3712 void VIRTUAL_modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) {
3713 modelbuilder__ModelBuilder__error(self, p0, p1);
3714 RET_LABEL:;
3715 }
3716 /* method modelbuilder#ModelBuilder#warning for (self: ModelBuilder, ANode, String) */
3717 void modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) {
3718 val* var_n /* var n: ANode */;
3719 val* var_text /* var text: String */;
3720 val* var /* : ToolContext */;
3721 val* var1 /* : Location */;
3722 var_n = p0;
3723 var_text = p1;
3724 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3725 var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3726 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__warning]))(var, var1, var_text) /* warning on <var:ToolContext>*/;
3727 RET_LABEL:;
3728 }
3729 /* method modelbuilder#ModelBuilder#warning for (self: Object, ANode, String) */
3730 void VIRTUAL_modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) {
3731 modelbuilder__ModelBuilder__warning(self, p0, p1);
3732 RET_LABEL:;
3733 }
3734 /* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: ModelBuilder, ANode, String, MClass, MModule): MMethod */
3735 val* modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
3736 val* var /* : MMethod */;
3737 val* var_n /* var n: ANode */;
3738 val* var_name /* var name: String */;
3739 val* var_recv /* var recv: MClass */;
3740 val* var_mmodule /* var mmodule: MModule */;
3741 val* var1 /* : nullable MMethod */;
3742 val* var_res /* var res: nullable MMethod */;
3743 val* var2 /* : null */;
3744 short int var3 /* : Bool */;
3745 val* var4 /* : ToolContext */;
3746 val* var5 /* : Location */;
3747 static val* varonce;
3748 val* var6 /* : String */;
3749 char* var7 /* : NativeString */;
3750 long var8 /* : Int */;
3751 val* var9 /* : String */;
3752 static val* varonce10;
3753 val* var11 /* : String */;
3754 char* var12 /* : NativeString */;
3755 long var13 /* : Int */;
3756 val* var14 /* : String */;
3757 static val* varonce15;
3758 val* var16 /* : String */;
3759 char* var17 /* : NativeString */;
3760 long var18 /* : Int */;
3761 val* var19 /* : String */;
3762 val* var20 /* : Array[Object] */;
3763 long var21 /* : Int */;
3764 val* var22 /* : NativeArray[Object] */;
3765 val* var23 /* : String */;
3766 var_n = p0;
3767 var_name = p1;
3768 var_recv = p2;
3769 var_mmodule = p3;
3770 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>*/;
3771 var_res = var1;
3772 var2 = NULL;
3773 if (var_res == NULL) {
3774 var3 = 1; /* is null */
3775 } else {
3776 var3 = 0; /* arg is null but recv is not */
3777 }
3778 if (var3){
3779 var4 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3780 var5 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3781 if (varonce) {
3782 var6 = varonce;
3783 } else {
3784 var7 = "Fatal Error: ";
3785 var8 = 13;
3786 var9 = string__NativeString__to_s_with_length(var7, var8);
3787 var6 = var9;
3788 varonce = var6;
3789 }
3790 if (varonce10) {
3791 var11 = varonce10;
3792 } else {
3793 var12 = " must have a property named ";
3794 var13 = 28;
3795 var14 = string__NativeString__to_s_with_length(var12, var13);
3796 var11 = var14;
3797 varonce10 = var11;
3798 }
3799 if (varonce15) {
3800 var16 = varonce15;
3801 } else {
3802 var17 = ".";
3803 var18 = 1;
3804 var19 = string__NativeString__to_s_with_length(var17, var18);
3805 var16 = var19;
3806 varonce15 = var16;
3807 }
3808 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
3809 { /* var20 = array_instance Array[Object] */
3810 var21 = 5;
3811 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
3812 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var6;
3813 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_recv;
3814 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var11;
3815 ((struct instance_array__NativeArray*)var22)->values[3] = (val*) var_name;
3816 ((struct instance_array__NativeArray*)var22)->values[4] = (val*) var16;
3817 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
3818 }
3819 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
3820 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_toolcontext__ToolContext__fatal_error]))(var4, var5, var23) /* fatal_error on <var4:ToolContext>*/;
3821 fprintf(stderr, "Runtime error: %s", "Aborted");
3822 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 606);
3823 show_backtrace(1);
3824 } else {
3825 }
3826 var = var_res;
3827 goto RET_LABEL;
3828 RET_LABEL:;
3829 return var;
3830 }
3831 /* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: Object, ANode, String, MClass, MModule): MMethod */
3832 val* VIRTUAL_modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
3833 val* var /* : MMethod */;
3834 val* var1 /* : MMethod */;
3835 var1 = modelbuilder__ModelBuilder__force_get_primitive_method(self, p0, p1, p2, p3);
3836 var = var1;
3837 RET_LABEL:;
3838 return var;
3839 }
3840 /* method modelbuilder#ModulePath#name for (self: ModulePath): String */
3841 val* modelbuilder__ModulePath__name(val* self) {
3842 val* var /* : String */;
3843 val* var1 /* : String */;
3844 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dname].val; /* @name on <self:ModulePath> */
3845 if (var1 == NULL) {
3846 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
3847 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 614);
3848 show_backtrace(1);
3849 }
3850 var = var1;
3851 RET_LABEL:;
3852 return var;
3853 }
3854 /* method modelbuilder#ModulePath#name for (self: Object): String */
3855 val* VIRTUAL_modelbuilder__ModulePath__name(val* self) {
3856 val* var /* : String */;
3857 val* var1 /* : String */;
3858 var1 = modelbuilder__ModulePath__name(self);
3859 var = var1;
3860 RET_LABEL:;
3861 return var;
3862 }
3863 /* method modelbuilder#ModulePath#name= for (self: ModulePath, String) */
3864 void modelbuilder__ModulePath__name_61d(val* self, val* p0) {
3865 self->attrs[COLOR_modelbuilder__ModulePath___64dname].val = p0; /* @name on <self:ModulePath> */
3866 RET_LABEL:;
3867 }
3868 /* method modelbuilder#ModulePath#name= for (self: Object, String) */
3869 void VIRTUAL_modelbuilder__ModulePath__name_61d(val* self, val* p0) {
3870 modelbuilder__ModulePath__name_61d(self, p0);
3871 RET_LABEL:;
3872 }
3873 /* method modelbuilder#ModulePath#filepath for (self: ModulePath): String */
3874 val* modelbuilder__ModulePath__filepath(val* self) {
3875 val* var /* : String */;
3876 val* var1 /* : String */;
3877 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val; /* @filepath on <self:ModulePath> */
3878 if (var1 == NULL) {
3879 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @filepath");
3880 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 618);
3881 show_backtrace(1);
3882 }
3883 var = var1;
3884 RET_LABEL:;
3885 return var;
3886 }
3887 /* method modelbuilder#ModulePath#filepath for (self: Object): String */
3888 val* VIRTUAL_modelbuilder__ModulePath__filepath(val* self) {
3889 val* var /* : String */;
3890 val* var1 /* : String */;
3891 var1 = modelbuilder__ModulePath__filepath(self);
3892 var = var1;
3893 RET_LABEL:;
3894 return var;
3895 }
3896 /* method modelbuilder#ModulePath#filepath= for (self: ModulePath, String) */
3897 void modelbuilder__ModulePath__filepath_61d(val* self, val* p0) {
3898 self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val = p0; /* @filepath on <self:ModulePath> */
3899 RET_LABEL:;
3900 }
3901 /* method modelbuilder#ModulePath#filepath= for (self: Object, String) */
3902 void VIRTUAL_modelbuilder__ModulePath__filepath_61d(val* self, val* p0) {
3903 modelbuilder__ModulePath__filepath_61d(self, p0);
3904 RET_LABEL:;
3905 }
3906 /* method modelbuilder#ModulePath#mgroup for (self: ModulePath): MGroup */
3907 val* modelbuilder__ModulePath__mgroup(val* self) {
3908 val* var /* : MGroup */;
3909 val* var1 /* : MGroup */;
3910 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val; /* @mgroup on <self:ModulePath> */
3911 if (var1 == NULL) {
3912 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mgroup");
3913 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 621);
3914 show_backtrace(1);
3915 }
3916 var = var1;
3917 RET_LABEL:;
3918 return var;
3919 }
3920 /* method modelbuilder#ModulePath#mgroup for (self: Object): MGroup */
3921 val* VIRTUAL_modelbuilder__ModulePath__mgroup(val* self) {
3922 val* var /* : MGroup */;
3923 val* var1 /* : MGroup */;
3924 var1 = modelbuilder__ModulePath__mgroup(self);
3925 var = var1;
3926 RET_LABEL:;
3927 return var;
3928 }
3929 /* method modelbuilder#ModulePath#mgroup= for (self: ModulePath, MGroup) */
3930 void modelbuilder__ModulePath__mgroup_61d(val* self, val* p0) {
3931 self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val = p0; /* @mgroup on <self:ModulePath> */
3932 RET_LABEL:;
3933 }
3934 /* method modelbuilder#ModulePath#mgroup= for (self: Object, MGroup) */
3935 void VIRTUAL_modelbuilder__ModulePath__mgroup_61d(val* self, val* p0) {
3936 modelbuilder__ModulePath__mgroup_61d(self, p0);
3937 RET_LABEL:;
3938 }
3939 /* method modelbuilder#ModulePath#mmodule for (self: ModulePath): nullable MModule */
3940 val* modelbuilder__ModulePath__mmodule(val* self) {
3941 val* var /* : nullable MModule */;
3942 val* var1 /* : nullable MModule */;
3943 var1 = self->attrs[COLOR_modelbuilder__ModulePath___64dmmodule].val; /* @mmodule on <self:ModulePath> */
3944 var = var1;
3945 RET_LABEL:;
3946 return var;
3947 }
3948 /* method modelbuilder#ModulePath#mmodule for (self: Object): nullable MModule */
3949 val* VIRTUAL_modelbuilder__ModulePath__mmodule(val* self) {
3950 val* var /* : nullable MModule */;
3951 val* var1 /* : nullable MModule */;
3952 var1 = modelbuilder__ModulePath__mmodule(self);
3953 var = var1;
3954 RET_LABEL:;
3955 return var;
3956 }
3957 /* method modelbuilder#ModulePath#mmodule= for (self: ModulePath, nullable MModule) */
3958 void modelbuilder__ModulePath__mmodule_61d(val* self, val* p0) {
3959 self->attrs[COLOR_modelbuilder__ModulePath___64dmmodule].val = p0; /* @mmodule on <self:ModulePath> */
3960 RET_LABEL:;
3961 }
3962 /* method modelbuilder#ModulePath#mmodule= for (self: Object, nullable MModule) */
3963 void VIRTUAL_modelbuilder__ModulePath__mmodule_61d(val* self, val* p0) {
3964 modelbuilder__ModulePath__mmodule_61d(self, p0);
3965 RET_LABEL:;
3966 }
3967 /* method modelbuilder#ModulePath#to_s for (self: ModulePath): String */
3968 val* modelbuilder__ModulePath__to_s(val* self) {
3969 val* var /* : String */;
3970 val* var1 /* : String */;
3971 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModulePath__filepath]))(self) /* filepath on <self:ModulePath>*/;
3972 var = var1;
3973 goto RET_LABEL;
3974 RET_LABEL:;
3975 return var;
3976 }
3977 /* method modelbuilder#ModulePath#to_s for (self: Object): String */
3978 val* VIRTUAL_modelbuilder__ModulePath__to_s(val* self) {
3979 val* var /* : String */;
3980 val* var1 /* : String */;
3981 var1 = modelbuilder__ModulePath__to_s(self);
3982 var = var1;
3983 RET_LABEL:;
3984 return var;
3985 }
3986 /* method modelbuilder#ModulePath#init for (self: ModulePath, String, String, MGroup) */
3987 void modelbuilder__ModulePath__init(val* self, val* p0, val* p1, val* p2) {
3988 self->attrs[COLOR_modelbuilder__ModulePath___64dname].val = p0; /* @name on <self:ModulePath> */
3989 self->attrs[COLOR_modelbuilder__ModulePath___64dfilepath].val = p1; /* @filepath on <self:ModulePath> */
3990 self->attrs[COLOR_modelbuilder__ModulePath___64dmgroup].val = p2; /* @mgroup on <self:ModulePath> */
3991 RET_LABEL:;
3992 }
3993 /* method modelbuilder#ModulePath#init for (self: Object, String, String, MGroup) */
3994 void VIRTUAL_modelbuilder__ModulePath__init(val* self, val* p0, val* p1, val* p2) {
3995 modelbuilder__ModulePath__init(self, p0, p1, p2);
3996 RET_LABEL:;
3997 }
3998 /* method modelbuilder#AStdImport#mmodule for (self: AStdImport): nullable MModule */
3999 val* modelbuilder__AStdImport__mmodule(val* self) {
4000 val* var /* : nullable MModule */;
4001 val* var1 /* : nullable MModule */;
4002 var1 = self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val; /* @mmodule on <self:AStdImport> */
4003 var = var1;
4004 RET_LABEL:;
4005 return var;
4006 }
4007 /* method modelbuilder#AStdImport#mmodule for (self: Object): nullable MModule */
4008 val* VIRTUAL_modelbuilder__AStdImport__mmodule(val* self) {
4009 val* var /* : nullable MModule */;
4010 val* var1 /* : nullable MModule */;
4011 var1 = modelbuilder__AStdImport__mmodule(self);
4012 var = var1;
4013 RET_LABEL:;
4014 return var;
4015 }
4016 /* method modelbuilder#AStdImport#mmodule= for (self: AStdImport, nullable MModule) */
4017 void modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) {
4018 self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val = p0; /* @mmodule on <self:AStdImport> */
4019 RET_LABEL:;
4020 }
4021 /* method modelbuilder#AStdImport#mmodule= for (self: Object, nullable MModule) */
4022 void VIRTUAL_modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) {
4023 modelbuilder__AStdImport__mmodule_61d(self, p0);
4024 RET_LABEL:;
4025 }
4026 /* method modelbuilder#AModule#mmodule for (self: AModule): nullable MModule */
4027 val* modelbuilder__AModule__mmodule(val* self) {
4028 val* var /* : nullable MModule */;
4029 val* var1 /* : nullable MModule */;
4030 var1 = self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val; /* @mmodule on <self:AModule> */
4031 var = var1;
4032 RET_LABEL:;
4033 return var;
4034 }
4035 /* method modelbuilder#AModule#mmodule for (self: Object): nullable MModule */
4036 val* VIRTUAL_modelbuilder__AModule__mmodule(val* self) {
4037 val* var /* : nullable MModule */;
4038 val* var1 /* : nullable MModule */;
4039 var1 = modelbuilder__AModule__mmodule(self);
4040 var = var1;
4041 RET_LABEL:;
4042 return var;
4043 }
4044 /* method modelbuilder#AModule#mmodule= for (self: AModule, nullable MModule) */
4045 void modelbuilder__AModule__mmodule_61d(val* self, val* p0) {
4046 self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val = p0; /* @mmodule on <self:AModule> */
4047 RET_LABEL:;
4048 }
4049 /* method modelbuilder#AModule#mmodule= for (self: Object, nullable MModule) */
4050 void VIRTUAL_modelbuilder__AModule__mmodule_61d(val* self, val* p0) {
4051 modelbuilder__AModule__mmodule_61d(self, p0);
4052 RET_LABEL:;
4053 }
4054 /* method modelbuilder#AModule#is_importation_done for (self: AModule): Bool */
4055 short int modelbuilder__AModule__is_importation_done(val* self) {
4056 short int var /* : Bool */;
4057 short int var1 /* : Bool */;
4058 var1 = self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s; /* @is_importation_done on <self:AModule> */
4059 var = var1;
4060 RET_LABEL:;
4061 return var;
4062 }
4063 /* method modelbuilder#AModule#is_importation_done for (self: Object): Bool */
4064 short int VIRTUAL_modelbuilder__AModule__is_importation_done(val* self) {
4065 short int var /* : Bool */;
4066 short int var1 /* : Bool */;
4067 var1 = modelbuilder__AModule__is_importation_done(self);
4068 var = var1;
4069 RET_LABEL:;
4070 return var;
4071 }
4072 /* method modelbuilder#AModule#is_importation_done= for (self: AModule, Bool) */
4073 void modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) {
4074 self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s = p0; /* @is_importation_done on <self:AModule> */
4075 RET_LABEL:;
4076 }
4077 /* method modelbuilder#AModule#is_importation_done= for (self: Object, Bool) */
4078 void VIRTUAL_modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) {
4079 modelbuilder__AModule__is_importation_done_61d(self, p0);
4080 RET_LABEL:;
4081 }
4082 /* method modelbuilder#AVisibility#mvisibility for (self: AVisibility): MVisibility */
4083 val* modelbuilder__AVisibility__mvisibility(val* self) {
4084 val* var /* : MVisibility */;
4085 const char* var_class_name;
4086 var_class_name = self == NULL ? "null" : self->type->name;
4087 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "mvisibility", var_class_name);
4088 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 644);
4089 show_backtrace(1);
4090 RET_LABEL:;
4091 return var;
4092 }
4093 /* method modelbuilder#AVisibility#mvisibility for (self: Object): MVisibility */
4094 val* VIRTUAL_modelbuilder__AVisibility__mvisibility(val* self) {
4095 val* var /* : MVisibility */;
4096 val* var1 /* : MVisibility */;
4097 var1 = modelbuilder__AVisibility__mvisibility(self);
4098 var = var1;
4099 RET_LABEL:;
4100 return var;
4101 }
4102 /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: AIntrudeVisibility): MVisibility */
4103 val* modelbuilder__AIntrudeVisibility__mvisibility(val* self) {
4104 val* var /* : MVisibility */;
4105 val* var1 /* : MVisibility */;
4106 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:AIntrudeVisibility>*/;
4107 var = var1;
4108 goto RET_LABEL;
4109 RET_LABEL:;
4110 return var;
4111 }
4112 /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: Object): MVisibility */
4113 val* VIRTUAL_modelbuilder__AIntrudeVisibility__mvisibility(val* self) {
4114 val* var /* : MVisibility */;
4115 val* var1 /* : MVisibility */;
4116 var1 = modelbuilder__AIntrudeVisibility__mvisibility(self);
4117 var = var1;
4118 RET_LABEL:;
4119 return var;
4120 }
4121 /* method modelbuilder#APublicVisibility#mvisibility for (self: APublicVisibility): MVisibility */
4122 val* modelbuilder__APublicVisibility__mvisibility(val* self) {
4123 val* var /* : MVisibility */;
4124 val* var1 /* : MVisibility */;
4125 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:APublicVisibility>*/;
4126 var = var1;
4127 goto RET_LABEL;
4128 RET_LABEL:;
4129 return var;
4130 }
4131 /* method modelbuilder#APublicVisibility#mvisibility for (self: Object): MVisibility */
4132 val* VIRTUAL_modelbuilder__APublicVisibility__mvisibility(val* self) {
4133 val* var /* : MVisibility */;
4134 val* var1 /* : MVisibility */;
4135 var1 = modelbuilder__APublicVisibility__mvisibility(self);
4136 var = var1;
4137 RET_LABEL:;
4138 return var;
4139 }
4140 /* method modelbuilder#AProtectedVisibility#mvisibility for (self: AProtectedVisibility): MVisibility */
4141 val* modelbuilder__AProtectedVisibility__mvisibility(val* self) {
4142 val* var /* : MVisibility */;
4143 val* var1 /* : MVisibility */;
4144 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:AProtectedVisibility>*/;
4145 var = var1;
4146 goto RET_LABEL;
4147 RET_LABEL:;
4148 return var;
4149 }
4150 /* method modelbuilder#AProtectedVisibility#mvisibility for (self: Object): MVisibility */
4151 val* VIRTUAL_modelbuilder__AProtectedVisibility__mvisibility(val* self) {
4152 val* var /* : MVisibility */;
4153 val* var1 /* : MVisibility */;
4154 var1 = modelbuilder__AProtectedVisibility__mvisibility(self);
4155 var = var1;
4156 RET_LABEL:;
4157 return var;
4158 }
4159 /* method modelbuilder#APrivateVisibility#mvisibility for (self: APrivateVisibility): MVisibility */
4160 val* modelbuilder__APrivateVisibility__mvisibility(val* self) {
4161 val* var /* : MVisibility */;
4162 val* var1 /* : MVisibility */;
4163 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:APrivateVisibility>*/;
4164 var = var1;
4165 goto RET_LABEL;
4166 RET_LABEL:;
4167 return var;
4168 }
4169 /* method modelbuilder#APrivateVisibility#mvisibility for (self: Object): MVisibility */
4170 val* VIRTUAL_modelbuilder__APrivateVisibility__mvisibility(val* self) {
4171 val* var /* : MVisibility */;
4172 val* var1 /* : MVisibility */;
4173 var1 = modelbuilder__APrivateVisibility__mvisibility(self);
4174 var = var1;
4175 RET_LABEL:;
4176 return var;
4177 }