nitg: move adding gc_chooser out of the makefile generation
[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 exit(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 exit(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 exit(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 CHECK_NEW_array__Array(var4);
124 }
125 ((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var4) /* add_option on <var:OptionContext>*/;
126 RET_LABEL:;
127 }
128 /* method modelbuilder#ToolContext#init for (self: Object) */
129 void VIRTUAL_modelbuilder__ToolContext__init(val* self) {
130 modelbuilder__ToolContext__init(self);
131 RET_LABEL:;
132 }
133 /* method modelbuilder#ToolContext#modelbuilder for (self: ToolContext): ModelBuilder */
134 val* modelbuilder__ToolContext__modelbuilder(val* self) {
135 val* var /* : ModelBuilder */;
136 val* var1 /* : nullable ModelBuilder */;
137 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real]))(self) /* modelbuilder_real on <self:ToolContext>*/;
138 if (var1 == NULL) {
139 fprintf(stderr, "Runtime error: %s", "Cast failed");
140 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 52);
141 exit(1);
142 }
143 var = var1;
144 goto RET_LABEL;
145 RET_LABEL:;
146 return var;
147 }
148 /* method modelbuilder#ToolContext#modelbuilder for (self: Object): ModelBuilder */
149 val* VIRTUAL_modelbuilder__ToolContext__modelbuilder(val* self) {
150 val* var /* : ModelBuilder */;
151 val* var1 /* : ModelBuilder */;
152 var1 = modelbuilder__ToolContext__modelbuilder(self);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method modelbuilder#ToolContext#modelbuilder_real for (self: ToolContext): nullable ModelBuilder */
158 val* modelbuilder__ToolContext__modelbuilder_real(val* self) {
159 val* var /* : nullable ModelBuilder */;
160 val* var1 /* : nullable ModelBuilder */;
161 var1 = self->attrs[COLOR_modelbuilder__ToolContext___64dmodelbuilder_real].val; /* @modelbuilder_real on <self:ToolContext> */
162 var = var1;
163 RET_LABEL:;
164 return var;
165 }
166 /* method modelbuilder#ToolContext#modelbuilder_real for (self: Object): nullable ModelBuilder */
167 val* VIRTUAL_modelbuilder__ToolContext__modelbuilder_real(val* self) {
168 val* var /* : nullable ModelBuilder */;
169 val* var1 /* : nullable ModelBuilder */;
170 var1 = modelbuilder__ToolContext__modelbuilder_real(self);
171 var = var1;
172 RET_LABEL:;
173 return var;
174 }
175 /* method modelbuilder#ToolContext#modelbuilder_real= for (self: ToolContext, nullable ModelBuilder) */
176 void modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0) {
177 self->attrs[COLOR_modelbuilder__ToolContext___64dmodelbuilder_real].val = p0; /* @modelbuilder_real on <self:ToolContext> */
178 RET_LABEL:;
179 }
180 /* method modelbuilder#ToolContext#modelbuilder_real= for (self: Object, nullable ModelBuilder) */
181 void VIRTUAL_modelbuilder__ToolContext__modelbuilder_real_61d(val* self, val* p0) {
182 modelbuilder__ToolContext__modelbuilder_real_61d(self, p0);
183 RET_LABEL:;
184 }
185 /* method modelbuilder#ModelBuilder#model for (self: ModelBuilder): Model */
186 val* modelbuilder__ModelBuilder__model(val* self) {
187 val* var /* : Model */;
188 val* var1 /* : Model */;
189 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmodel].val; /* @model on <self:ModelBuilder> */
190 if (var1 == NULL) {
191 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @model");
192 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 59);
193 exit(1);
194 }
195 var = var1;
196 RET_LABEL:;
197 return var;
198 }
199 /* method modelbuilder#ModelBuilder#model for (self: Object): Model */
200 val* VIRTUAL_modelbuilder__ModelBuilder__model(val* self) {
201 val* var /* : Model */;
202 val* var1 /* : Model */;
203 var1 = modelbuilder__ModelBuilder__model(self);
204 var = var1;
205 RET_LABEL:;
206 return var;
207 }
208 /* method modelbuilder#ModelBuilder#model= for (self: ModelBuilder, Model) */
209 void modelbuilder__ModelBuilder__model_61d(val* self, val* p0) {
210 self->attrs[COLOR_modelbuilder__ModelBuilder___64dmodel].val = p0; /* @model on <self:ModelBuilder> */
211 RET_LABEL:;
212 }
213 /* method modelbuilder#ModelBuilder#model= for (self: Object, Model) */
214 void VIRTUAL_modelbuilder__ModelBuilder__model_61d(val* self, val* p0) {
215 modelbuilder__ModelBuilder__model_61d(self, p0);
216 RET_LABEL:;
217 }
218 /* method modelbuilder#ModelBuilder#toolcontext for (self: ModelBuilder): ToolContext */
219 val* modelbuilder__ModelBuilder__toolcontext(val* self) {
220 val* var /* : ToolContext */;
221 val* var1 /* : ToolContext */;
222 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dtoolcontext].val; /* @toolcontext on <self:ModelBuilder> */
223 if (var1 == NULL) {
224 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
225 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 62);
226 exit(1);
227 }
228 var = var1;
229 RET_LABEL:;
230 return var;
231 }
232 /* method modelbuilder#ModelBuilder#toolcontext for (self: Object): ToolContext */
233 val* VIRTUAL_modelbuilder__ModelBuilder__toolcontext(val* self) {
234 val* var /* : ToolContext */;
235 val* var1 /* : ToolContext */;
236 var1 = modelbuilder__ModelBuilder__toolcontext(self);
237 var = var1;
238 RET_LABEL:;
239 return var;
240 }
241 /* method modelbuilder#ModelBuilder#toolcontext= for (self: ModelBuilder, ToolContext) */
242 void modelbuilder__ModelBuilder__toolcontext_61d(val* self, val* p0) {
243 self->attrs[COLOR_modelbuilder__ModelBuilder___64dtoolcontext].val = p0; /* @toolcontext on <self:ModelBuilder> */
244 RET_LABEL:;
245 }
246 /* method modelbuilder#ModelBuilder#toolcontext= for (self: Object, ToolContext) */
247 void VIRTUAL_modelbuilder__ModelBuilder__toolcontext_61d(val* self, val* p0) {
248 modelbuilder__ModelBuilder__toolcontext_61d(self, p0);
249 RET_LABEL:;
250 }
251 /* method modelbuilder#ModelBuilder#run_phases for (self: ModelBuilder) */
252 void modelbuilder__ModelBuilder__run_phases(val* self) {
253 val* var /* : Model */;
254 val* var1 /* : Array[MModule] */;
255 val* var2 /* : Array[nullable Object] */;
256 val* var_mmodules /* var mmodules: Array[MModule] */;
257 val* var3 /* : Model */;
258 val* var4 /* : POSet[MModule] */;
259 val* var5 /* : Array[AModule] */;
260 val* var_nmodules /* var nmodules: Array[AModule] */;
261 val* var6 /* : Iterator[nullable Object] */;
262 short int var7 /* : Bool */;
263 val* var8 /* : nullable Object */;
264 val* var_mm /* var mm: MModule */;
265 val* var9 /* : HashMap[MModule, AModule] */;
266 val* var10 /* : nullable Object */;
267 val* var11 /* : ToolContext */;
268 val* var12 /* : ToolContext */;
269 val* var13 /* : OptionBool */;
270 val* var14 /* : nullable Object */;
271 short int var15 /* : Bool */;
272 val* var16 /* : ToolContext */;
273 static val* varonce;
274 val* var17 /* : String */;
275 char* var18 /* : NativeString */;
276 long var19 /* : Int */;
277 val* var20 /* : String */;
278 long var21 /* : Int */;
279 long var22 /* : Int */;
280 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
281 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model_base__Model__mmodules]))(var) /* mmodules on <var:Model>*/;
282 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Collection__to_a]))(var1) /* to_a on <var1:Array[MModule]>*/;
283 var_mmodules = var2;
284 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
285 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model_base__Model__mmodule_importation_hierarchy]))(var3) /* mmodule_importation_hierarchy on <var3:Model>*/;
286 ((void (*)(val*, val*))(var4->class->vft[COLOR_sorter__AbstractSorter__sort]))(var4, var_mmodules) /* sort on <var4:POSet[MModule]>*/;
287 var5 = NEW_array__Array(&type_array__Arrayparser_nodes__AModule);
288 ((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[AModule]>*/;
289 CHECK_NEW_array__Array(var5);
290 var_nmodules = var5;
291 var6 = ((val* (*)(val*))(var_mmodules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mmodules) /* iterator on <var_mmodules:Array[MModule]>*/;
292 for(;;) {
293 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
294 if(!var7) break;
295 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
296 var_mm = var8;
297 var9 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
298 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_mm) /* [] on <var9:HashMap[MModule, AModule]>*/;
299 ((void (*)(val*, val*))(var_nmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_nmodules, var10) /* add on <var_nmodules:Array[AModule]>*/;
300 CONTINUE_label: (void)0;
301 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
302 }
303 BREAK_label: (void)0;
304 var11 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
305 ((void (*)(val*, val*))(var11->class->vft[COLOR_phase__ToolContext__run_phases]))(var11, var_nmodules) /* run_phases on <var11:ToolContext>*/;
306 var12 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
307 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ToolContext__opt_only_metamodel]))(var12) /* opt_only_metamodel on <var12:ToolContext>*/;
308 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_opts__Option__value]))(var13) /* value on <var13:OptionBool>*/;
309 var15 = ((struct instance_kernel__Bool*)var14)->value; /* autounbox from nullable Object to Bool */;
310 if (var15){
311 var16 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
312 if (varonce) {
313 var17 = varonce;
314 } else {
315 var18 = "*** ONLY METAMODEL";
316 var19 = 18;
317 var20 = string__NativeString__to_s_with_length(var18, var19);
318 var17 = var20;
319 varonce = var17;
320 }
321 var21 = 1;
322 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_toolcontext__ToolContext__info]))(var16, var17, var21) /* info on <var16:ToolContext>*/;
323 var22 = 0;
324 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var22) /* exit on <self:ModelBuilder>*/;
325 } else {
326 }
327 RET_LABEL:;
328 }
329 /* method modelbuilder#ModelBuilder#run_phases for (self: Object) */
330 void VIRTUAL_modelbuilder__ModelBuilder__run_phases(val* self) {
331 modelbuilder__ModelBuilder__run_phases(self);
332 RET_LABEL:;
333 }
334 /* method modelbuilder#ModelBuilder#init for (self: ModelBuilder, Model, ToolContext) */
335 void modelbuilder__ModelBuilder__init(val* self, val* p0, val* p1) {
336 val* var_model /* var model: Model */;
337 val* var_toolcontext /* var toolcontext: ToolContext */;
338 val* var /* : nullable ModelBuilder */;
339 val* var1 /* : null */;
340 short int var2 /* : Bool */;
341 val* var3 /* : Array[String] */;
342 val* var4 /* : OptionArray */;
343 val* var5 /* : nullable Object */;
344 static val* varonce;
345 val* var6 /* : String */;
346 char* var7 /* : NativeString */;
347 long var8 /* : Int */;
348 val* var9 /* : String */;
349 val* var10 /* : String */;
350 val* var_path_env /* var path_env: String */;
351 short int var11 /* : Bool */;
352 short int var12 /* : Bool */;
353 val* var13 /* : Array[String] */;
354 char var14 /* : Char */;
355 val* var15 /* : Array[String] */;
356 val* var16 /* : Pattern */;
357 static val* varonce17;
358 val* var18 /* : String */;
359 char* var19 /* : NativeString */;
360 long var20 /* : Int */;
361 val* var21 /* : String */;
362 val* var22 /* : String */;
363 short int var23 /* : Bool */;
364 short int var24 /* : Bool */;
365 val* var25 /* : Array[Object] */;
366 long var26 /* : Int */;
367 val* var_ /* var : Array[Object] */;
368 static val* varonce27;
369 val* var28 /* : String */;
370 char* var29 /* : NativeString */;
371 long var30 /* : Int */;
372 val* var31 /* : String */;
373 static val* varonce32;
374 val* var33 /* : String */;
375 char* var34 /* : NativeString */;
376 long var35 /* : Int */;
377 val* var36 /* : String */;
378 val* var37 /* : String */;
379 val* var_libname /* var libname: String */;
380 short int var38 /* : Bool */;
381 val* var39 /* : Array[String] */;
382 val* var40 /* : Array[Object] */;
383 long var41 /* : Int */;
384 val* var_42 /* var : Array[Object] */;
385 static val* varonce43;
386 val* var44 /* : String */;
387 char* var45 /* : NativeString */;
388 long var46 /* : Int */;
389 val* var47 /* : String */;
390 val* var48 /* : Sys */;
391 val* var49 /* : String */;
392 val* var50 /* : String */;
393 static val* varonce51;
394 val* var52 /* : String */;
395 char* var53 /* : NativeString */;
396 long var54 /* : Int */;
397 val* var55 /* : String */;
398 val* var56 /* : String */;
399 val* var_libname57 /* var libname: String */;
400 short int var58 /* : Bool */;
401 val* var59 /* : Array[String] */;
402 val* var60 /* : String */;
403 var_model = p0;
404 var_toolcontext = p1;
405 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model_61d]))(self, var_model) /* model= on <self:ModelBuilder>*/;
406 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext_61d]))(self, var_toolcontext) /* toolcontext= on <self:ModelBuilder>*/;
407 var = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real]))(var_toolcontext) /* modelbuilder_real on <var_toolcontext:ToolContext>*/;
408 var1 = NULL;
409 if (var == NULL) {
410 var2 = 1; /* is null */
411 } else {
412 var2 = 0; /* arg is null but recv is not */
413 }
414 if (!var2) {
415 fprintf(stderr, "Runtime error: %s", "Assert failed");
416 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 88);
417 exit(1);
418 }
419 ((void (*)(val*, val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder_real_61d]))(var_toolcontext, self) /* modelbuilder_real= on <var_toolcontext:ToolContext>*/;
420 var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
421 var4 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_modelbuilder__ToolContext__opt_path]))(var_toolcontext) /* opt_path on <var_toolcontext:ToolContext>*/;
422 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on <var4:OptionArray>*/;
423 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Sequence__append]))(var3, var5) /* append on <var3:Array[String]>*/;
424 if (varonce) {
425 var6 = varonce;
426 } else {
427 var7 = "NIT_PATH";
428 var8 = 8;
429 var9 = string__NativeString__to_s_with_length(var7, var8);
430 var6 = var9;
431 varonce = var6;
432 }
433 var10 = ((val* (*)(val*))(var6->class->vft[COLOR_environ__String__environ]))(var6) /* environ on <var6:String>*/;
434 var_path_env = var10;
435 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>*/;
436 var12 = !var11;
437 if (var12){
438 var13 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
439 var14 = ':';
440 var16 = BOX_kernel__Char(var14); /* autobox from Char to Pattern */
441 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>*/;
442 ((void (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Sequence__append]))(var13, var15) /* append on <var13:Array[String]>*/;
443 } else {
444 }
445 if (varonce17) {
446 var18 = varonce17;
447 } else {
448 var19 = "NIT_DIR";
449 var20 = 7;
450 var21 = string__NativeString__to_s_with_length(var19, var20);
451 var18 = var21;
452 varonce17 = var18;
453 }
454 var22 = ((val* (*)(val*))(var18->class->vft[COLOR_environ__String__environ]))(var18) /* environ on <var18:String>*/;
455 var_path_env = var22;
456 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>*/;
457 var24 = !var23;
458 if (var24){
459 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
460 var26 = 3;
461 ((void (*)(val*, long))(var25->class->vft[COLOR_array__Array__with_capacity]))(var25, var26) /* with_capacity on <var25:Array[Object]>*/;
462 CHECK_NEW_array__Array(var25);
463 var_ = var25;
464 if (varonce27) {
465 var28 = varonce27;
466 } else {
467 var29 = "";
468 var30 = 0;
469 var31 = string__NativeString__to_s_with_length(var29, var30);
470 var28 = var31;
471 varonce27 = var28;
472 }
473 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var28) /* add on <var_:Array[Object]>*/;
474 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path_env) /* add on <var_:Array[Object]>*/;
475 if (varonce32) {
476 var33 = varonce32;
477 } else {
478 var34 = "/lib";
479 var35 = 4;
480 var36 = string__NativeString__to_s_with_length(var34, var35);
481 var33 = var36;
482 varonce32 = var33;
483 }
484 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var33) /* add on <var_:Array[Object]>*/;
485 var37 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
486 var_libname = var37;
487 var38 = ((short int (*)(val*))(var_libname->class->vft[COLOR_file__String__file_exists]))(var_libname) /* file_exists on <var_libname:String>*/;
488 if (var38){
489 var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
490 ((void (*)(val*, val*))(var39->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var39, var_libname) /* add on <var39:Array[String]>*/;
491 } else {
492 }
493 } else {
494 }
495 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
496 var41 = 3;
497 ((void (*)(val*, long))(var40->class->vft[COLOR_array__Array__with_capacity]))(var40, var41) /* with_capacity on <var40:Array[Object]>*/;
498 CHECK_NEW_array__Array(var40);
499 var_42 = var40;
500 if (varonce43) {
501 var44 = varonce43;
502 } else {
503 var45 = "";
504 var46 = 0;
505 var47 = string__NativeString__to_s_with_length(var45, var46);
506 var44 = var47;
507 varonce43 = var44;
508 }
509 ((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var44) /* add on <var_42:Array[Object]>*/;
510 var48 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
511 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Sys__program_name]))(var48) /* program_name on <var48:Sys>*/;
512 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_file__String__dirname]))(var49) /* dirname on <var49:String>*/;
513 ((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var50) /* add on <var_42:Array[Object]>*/;
514 if (varonce51) {
515 var52 = varonce51;
516 } else {
517 var53 = "/../lib";
518 var54 = 7;
519 var55 = string__NativeString__to_s_with_length(var53, var54);
520 var52 = var55;
521 varonce51 = var52;
522 }
523 ((void (*)(val*, val*))(var_42->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_42, var52) /* add on <var_42:Array[Object]>*/;
524 var56 = ((val* (*)(val*))(var_42->class->vft[COLOR_string__Object__to_s]))(var_42) /* to_s on <var_42:Array[Object]>*/;
525 var_libname57 = var56;
526 var58 = ((short int (*)(val*))(var_libname57->class->vft[COLOR_file__String__file_exists]))(var_libname57) /* file_exists on <var_libname57:String>*/;
527 if (var58){
528 var59 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
529 var60 = ((val* (*)(val*))(var_libname57->class->vft[COLOR_file__String__simplify_path]))(var_libname57) /* simplify_path on <var_libname57:String>*/;
530 ((void (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var59, var60) /* add on <var59:Array[String]>*/;
531 } else {
532 }
533 RET_LABEL:;
534 }
535 /* method modelbuilder#ModelBuilder#init for (self: Object, Model, ToolContext) */
536 void VIRTUAL_modelbuilder__ModelBuilder__init(val* self, val* p0, val* p1) {
537 modelbuilder__ModelBuilder__init(self, p0, p1);
538 RET_LABEL:;
539 }
540 /* method modelbuilder#ModelBuilder#parse for (self: ModelBuilder, Sequence[String]): Array[MModule] */
541 val* modelbuilder__ModelBuilder__parse(val* self, val* p0) {
542 val* var /* : Array[MModule] */;
543 val* var_modules /* var modules: Sequence[String] */;
544 long var1 /* : Int */;
545 long var_time0 /* var time0: Int */;
546 val* var2 /* : ToolContext */;
547 static val* varonce;
548 val* var3 /* : String */;
549 char* var4 /* : NativeString */;
550 long var5 /* : Int */;
551 val* var6 /* : String */;
552 long var7 /* : Int */;
553 val* var8 /* : Array[MModule] */;
554 val* var_mmodules /* var mmodules: Array[MModule] */;
555 val* var9 /* : Iterator[nullable Object] */;
556 short int var10 /* : Bool */;
557 val* var11 /* : nullable Object */;
558 val* var_a /* var a: String */;
559 val* var12 /* : null */;
560 val* var13 /* : nullable AModule */;
561 val* var_nmodule /* var nmodule: nullable AModule */;
562 val* var14 /* : null */;
563 short int var15 /* : Bool */;
564 val* var16 /* : nullable MModule */;
565 long var17 /* : Int */;
566 long var_time1 /* var time1: Int */;
567 val* var18 /* : ToolContext */;
568 static val* varonce19;
569 val* var20 /* : String */;
570 char* var21 /* : NativeString */;
571 long var22 /* : Int */;
572 val* var23 /* : String */;
573 long var24 /* : Int */;
574 long var26 /* : Int */;
575 static val* varonce27;
576 val* var28 /* : String */;
577 char* var29 /* : NativeString */;
578 long var30 /* : Int */;
579 val* var31 /* : String */;
580 val* var32 /* : Array[Object] */;
581 long var33 /* : Int */;
582 val* var34 /* : NativeArray[Object] */;
583 val* var35 /* : Object */;
584 val* var36 /* : String */;
585 long var37 /* : Int */;
586 val* var38 /* : ToolContext */;
587 val* var39 /* : ToolContext */;
588 val* var40 /* : OptionBool */;
589 val* var41 /* : nullable Object */;
590 short int var42 /* : Bool */;
591 val* var43 /* : ToolContext */;
592 static val* varonce44;
593 val* var45 /* : String */;
594 char* var46 /* : NativeString */;
595 long var47 /* : Int */;
596 val* var48 /* : String */;
597 long var49 /* : Int */;
598 long var50 /* : Int */;
599 var_modules = p0;
600 var1 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
601 var_time0 = var1;
602 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
603 if (varonce) {
604 var3 = varonce;
605 } else {
606 var4 = "*** PARSE ***";
607 var5 = 13;
608 var6 = string__NativeString__to_s_with_length(var4, var5);
609 var3 = var6;
610 varonce = var3;
611 }
612 var7 = 1;
613 ((void (*)(val*, val*, long))(var2->class->vft[COLOR_toolcontext__ToolContext__info]))(var2, var3, var7) /* info on <var2:ToolContext>*/;
614 var8 = NEW_array__Array(&type_array__Arraymodel_base__MModule);
615 ((void (*)(val*))(var8->class->vft[COLOR_array__Array__init]))(var8) /* init on <var8:Array[MModule]>*/;
616 CHECK_NEW_array__Array(var8);
617 var_mmodules = var8;
618 var9 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on <var_modules:Sequence[String]>*/;
619 for(;;) {
620 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
621 if(!var10) break;
622 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
623 var_a = var11;
624 var12 = NULL;
625 var13 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var12, var_a) /* load_module on <self:ModelBuilder>*/;
626 var_nmodule = var13;
627 var14 = NULL;
628 if (var_nmodule == NULL) {
629 var15 = 1; /* is null */
630 } else {
631 var15 = 0; /* arg is null but recv is not */
632 }
633 if (var15){
634 goto CONTINUE_label;
635 } else {
636 }
637 var16 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:nullable AModule(AModule)>*/;
638 if (var16 == NULL) {
639 fprintf(stderr, "Runtime error: %s", "Cast failed");
640 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 125);
641 exit(1);
642 }
643 ((void (*)(val*, val*))(var_mmodules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mmodules, var16) /* add on <var_mmodules:Array[MModule]>*/;
644 CONTINUE_label: (void)0;
645 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
646 }
647 BREAK_label: (void)0;
648 var17 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
649 var_time1 = var17;
650 var18 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
651 if (varonce19) {
652 var20 = varonce19;
653 } else {
654 var21 = "*** END PARSE: ";
655 var22 = 15;
656 var23 = string__NativeString__to_s_with_length(var21, var22);
657 var20 = var23;
658 varonce19 = var20;
659 }
660 { /* Inline kernel#Int#- (var_time1,var_time0) */
661 var26 = var_time1 - var_time0;
662 var24 = var26;
663 goto RET_LABEL25;
664 RET_LABEL25:(void)0;
665 }
666 if (varonce27) {
667 var28 = varonce27;
668 } else {
669 var29 = " ***";
670 var30 = 4;
671 var31 = string__NativeString__to_s_with_length(var29, var30);
672 var28 = var31;
673 varonce27 = var28;
674 }
675 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
676 { /* var32 = array_instance Array[Object] */
677 var33 = 3;
678 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
679 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var20;
680 var35 = BOX_kernel__Int(var24); /* autobox from Int to Object */
681 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var35;
682 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var28;
683 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
684 CHECK_NEW_array__Array(var32);
685 }
686 var36 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
687 var37 = 2;
688 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_toolcontext__ToolContext__info]))(var18, var36, var37) /* info on <var18:ToolContext>*/;
689 var38 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
690 ((void (*)(val*))(var38->class->vft[COLOR_toolcontext__ToolContext__check_errors]))(var38) /* check_errors on <var38:ToolContext>*/;
691 var39 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
692 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_modelbuilder__ToolContext__opt_only_parse]))(var39) /* opt_only_parse on <var39:ToolContext>*/;
693 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_opts__Option__value]))(var40) /* value on <var40:OptionBool>*/;
694 var42 = ((struct instance_kernel__Bool*)var41)->value; /* autounbox from nullable Object to Bool */;
695 if (var42){
696 var43 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
697 if (varonce44) {
698 var45 = varonce44;
699 } else {
700 var46 = "*** ONLY PARSE...";
701 var47 = 17;
702 var48 = string__NativeString__to_s_with_length(var46, var47);
703 var45 = var48;
704 varonce44 = var45;
705 }
706 var49 = 1;
707 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_toolcontext__ToolContext__info]))(var43, var45, var49) /* info on <var43:ToolContext>*/;
708 var50 = 0;
709 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var50) /* exit on <self:ModelBuilder>*/;
710 } else {
711 }
712 var = var_mmodules;
713 goto RET_LABEL;
714 RET_LABEL:;
715 return var;
716 }
717 /* method modelbuilder#ModelBuilder#parse for (self: Object, Sequence[String]): Array[MModule] */
718 val* VIRTUAL_modelbuilder__ModelBuilder__parse(val* self, val* p0) {
719 val* var /* : Array[MModule] */;
720 val* var1 /* : Array[MModule] */;
721 var1 = modelbuilder__ModelBuilder__parse(self, p0);
722 var = var1;
723 RET_LABEL:;
724 return var;
725 }
726 /* method modelbuilder#ModelBuilder#try_get_mclass_by_name for (self: ModelBuilder, ANode, MModule, String): nullable MClass */
727 val* modelbuilder__ModelBuilder__try_get_mclass_by_name(val* self, val* p0, val* p1, val* p2) {
728 val* var /* : nullable MClass */;
729 val* var_anode /* var anode: ANode */;
730 val* var_mmodule /* var mmodule: MModule */;
731 val* var_name /* var name: String */;
732 val* var1 /* : Model */;
733 val* var2 /* : nullable Array[MClass] */;
734 val* var_classes /* var classes: nullable Array[MClass] */;
735 val* var3 /* : null */;
736 short int var4 /* : Bool */;
737 val* var5 /* : null */;
738 val* var6 /* : null */;
739 val* var_res /* var res: nullable MClass */;
740 val* var7 /* : Iterator[nullable Object] */;
741 short int var8 /* : Bool */;
742 val* var9 /* : nullable Object */;
743 val* var_mclass /* var mclass: MClass */;
744 val* var10 /* : POSetElement[MModule] */;
745 val* var11 /* : MModule */;
746 short int var12 /* : Bool */;
747 short int var13 /* : Bool */;
748 val* var14 /* : MModule */;
749 val* var15 /* : MVisibility */;
750 short int var16 /* : Bool */;
751 short int var17 /* : Bool */;
752 val* var18 /* : null */;
753 short int var19 /* : Bool */;
754 static val* varonce;
755 val* var20 /* : String */;
756 char* var21 /* : NativeString */;
757 long var22 /* : Int */;
758 val* var23 /* : String */;
759 static val* varonce24;
760 val* var25 /* : String */;
761 char* var26 /* : NativeString */;
762 long var27 /* : Int */;
763 val* var28 /* : String */;
764 val* var29 /* : String */;
765 static val* varonce30;
766 val* var31 /* : String */;
767 char* var32 /* : NativeString */;
768 long var33 /* : Int */;
769 val* var34 /* : String */;
770 val* var35 /* : String */;
771 val* var36 /* : Array[Object] */;
772 long var37 /* : Int */;
773 val* var38 /* : NativeArray[Object] */;
774 val* var39 /* : String */;
775 val* var40 /* : null */;
776 var_anode = p0;
777 var_mmodule = p1;
778 var_name = p2;
779 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
780 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var_name) /* get_mclasses_by_name on <var1:Model>*/;
781 var_classes = var2;
782 var3 = NULL;
783 if (var_classes == NULL) {
784 var4 = 1; /* is null */
785 } else {
786 var4 = 0; /* arg is null but recv is not */
787 }
788 if (var4){
789 var5 = NULL;
790 var = var5;
791 goto RET_LABEL;
792 } else {
793 }
794 var6 = NULL;
795 var_res = var6;
796 var7 = ((val* (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_classes) /* iterator on <var_classes:nullable Array[MClass](Array[MClass])>*/;
797 for(;;) {
798 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
799 if(!var8) break;
800 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
801 var_mclass = var9;
802 var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
803 var11 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
804 var12 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var11) /* <= on <var10:POSetElement[MModule]>*/;
805 var13 = !var12;
806 if (var13){
807 goto CONTINUE_label;
808 } else {
809 }
810 var14 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
811 var15 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__visibility]))(var_mclass) /* visibility on <var_mclass:MClass>*/;
812 var16 = ((short int (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model_base__MModule__is_visible]))(var_mmodule, var14, var15) /* is_visible on <var_mmodule:MModule>*/;
813 var17 = !var16;
814 if (var17){
815 goto CONTINUE_label;
816 } else {
817 }
818 var18 = NULL;
819 if (var_res == NULL) {
820 var19 = 1; /* is null */
821 } else {
822 var19 = 0; /* arg is null but recv is not */
823 }
824 if (var19){
825 var_res = var_mclass;
826 } else {
827 if (varonce) {
828 var20 = varonce;
829 } else {
830 var21 = "Ambigous class name \'";
831 var22 = 21;
832 var23 = string__NativeString__to_s_with_length(var21, var22);
833 var20 = var23;
834 varonce = var20;
835 }
836 if (varonce24) {
837 var25 = varonce24;
838 } else {
839 var26 = "\'; conflict between ";
840 var27 = 20;
841 var28 = string__NativeString__to_s_with_length(var26, var27);
842 var25 = var28;
843 varonce24 = var25;
844 }
845 var29 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__full_name]))(var_mclass) /* full_name on <var_mclass:MClass>*/;
846 if (varonce30) {
847 var31 = varonce30;
848 } else {
849 var32 = " and ";
850 var33 = 5;
851 var34 = string__NativeString__to_s_with_length(var32, var33);
852 var31 = var34;
853 varonce30 = var31;
854 }
855 var35 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MClass__full_name]))(var_res) /* full_name on <var_res:nullable MClass(MClass)>*/;
856 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
857 { /* var36 = array_instance Array[Object] */
858 var37 = 6;
859 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
860 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var20;
861 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var_name;
862 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var25;
863 ((struct instance_array__NativeArray*)var38)->values[3] = (val*) var29;
864 ((struct instance_array__NativeArray*)var38)->values[4] = (val*) var31;
865 ((struct instance_array__NativeArray*)var38)->values[5] = (val*) var35;
866 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
867 CHECK_NEW_array__Array(var36);
868 }
869 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
870 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var39) /* error on <self:ModelBuilder>*/;
871 var40 = NULL;
872 var = var40;
873 goto RET_LABEL;
874 }
875 CONTINUE_label: (void)0;
876 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
877 }
878 BREAK_label: (void)0;
879 var = var_res;
880 goto RET_LABEL;
881 RET_LABEL:;
882 return var;
883 }
884 /* method modelbuilder#ModelBuilder#try_get_mclass_by_name for (self: Object, ANode, MModule, String): nullable MClass */
885 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mclass_by_name(val* self, val* p0, val* p1, val* p2) {
886 val* var /* : nullable MClass */;
887 val* var1 /* : nullable MClass */;
888 var1 = modelbuilder__ModelBuilder__try_get_mclass_by_name(self, p0, p1, p2);
889 var = var1;
890 RET_LABEL:;
891 return var;
892 }
893 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2 for (self: ModelBuilder, ANode, MModule, MType, String): nullable MProperty */
894 val* modelbuilder__ModelBuilder__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2, val* p3) {
895 val* var /* : nullable MProperty */;
896 val* var_anode /* var anode: ANode */;
897 val* var_mmodule /* var mmodule: MModule */;
898 val* var_mtype /* var mtype: MType */;
899 val* var_name /* var name: String */;
900 val* var1 /* : Model */;
901 val* var2 /* : nullable Array[MProperty] */;
902 val* var_props /* var props: nullable Array[MProperty] */;
903 val* var3 /* : null */;
904 short int var4 /* : Bool */;
905 val* var5 /* : null */;
906 val* var6 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
907 val* var7 /* : nullable Object */;
908 val* var_cache /* var cache: nullable MProperty */;
909 val* var8 /* : null */;
910 short int var9 /* : Bool */;
911 val* var10 /* : null */;
912 val* var_res /* var res: nullable MProperty */;
913 val* var11 /* : null */;
914 val* var_ress /* var ress: nullable Array[MProperty] */;
915 val* var12 /* : Iterator[nullable Object] */;
916 short int var13 /* : Bool */;
917 val* var14 /* : nullable Object */;
918 val* var_mprop /* var mprop: MProperty */;
919 short int var15 /* : Bool */;
920 short int var16 /* : Bool */;
921 val* var17 /* : MClassDef */;
922 val* var18 /* : MModule */;
923 val* var19 /* : MVisibility */;
924 short int var20 /* : Bool */;
925 short int var21 /* : Bool */;
926 val* var22 /* : null */;
927 short int var23 /* : Bool */;
928 val* var24 /* : MClassDef */;
929 val* var25 /* : MClassType */;
930 val* var_restype /* var restype: MClassType */;
931 val* var26 /* : MClassDef */;
932 val* var27 /* : MClassType */;
933 val* var_mproptype /* var mproptype: MClassType */;
934 val* var28 /* : null */;
935 short int var29 /* : Bool */;
936 val* var30 /* : null */;
937 short int var31 /* : Bool */;
938 val* var32 /* : null */;
939 short int var33 /* : Bool */;
940 val* var34 /* : Array[MProperty] */;
941 val* var35 /* : null */;
942 short int var36 /* : Bool */;
943 val* var37 /* : MClassDef */;
944 val* var38 /* : MClassType */;
945 val* var_restype39 /* var restype: MClassType */;
946 val* var40 /* : Iterator[nullable Object] */;
947 short int var41 /* : Bool */;
948 val* var42 /* : nullable Object */;
949 val* var_mprop43 /* var mprop: MProperty */;
950 val* var44 /* : MClassDef */;
951 val* var45 /* : MClassType */;
952 val* var_mproptype46 /* var mproptype: MClassType */;
953 val* var47 /* : null */;
954 short int var48 /* : Bool */;
955 short int var49 /* : Bool */;
956 static val* varonce;
957 val* var50 /* : String */;
958 char* var51 /* : NativeString */;
959 long var52 /* : Int */;
960 val* var53 /* : String */;
961 static val* varonce54;
962 val* var55 /* : String */;
963 char* var56 /* : NativeString */;
964 long var57 /* : Int */;
965 val* var58 /* : String */;
966 static val* varonce59;
967 val* var60 /* : String */;
968 char* var61 /* : NativeString */;
969 long var62 /* : Int */;
970 val* var63 /* : String */;
971 val* var64 /* : String */;
972 static val* varonce65;
973 val* var66 /* : String */;
974 char* var67 /* : NativeString */;
975 long var68 /* : Int */;
976 val* var69 /* : String */;
977 val* var70 /* : String */;
978 val* var71 /* : Array[Object] */;
979 long var72 /* : Int */;
980 val* var73 /* : NativeArray[Object] */;
981 val* var74 /* : String */;
982 val* var75 /* : null */;
983 val* var77 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
984 var_anode = p0;
985 var_mmodule = p1;
986 var_mtype = p2;
987 var_name = p3;
988 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
989 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mproperties_by_name]))(var1, var_name) /* get_mproperties_by_name on <var1:Model>*/;
990 var_props = var2;
991 var3 = NULL;
992 if (var_props == NULL) {
993 var4 = 1; /* is null */
994 } else {
995 var4 = 0; /* arg is null but recv is not */
996 }
997 if (var4){
998 var5 = NULL;
999 var = var5;
1000 goto RET_LABEL;
1001 } else {
1002 }
1003 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>*/;
1004 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]>*/;
1005 var_cache = var7;
1006 var8 = NULL;
1007 if (var_cache == NULL) {
1008 var9 = 0; /* is null */
1009 } else {
1010 var9 = 1; /* arg is null and recv is not */
1011 }
1012 if (var9){
1013 var = var_cache;
1014 goto RET_LABEL;
1015 } else {
1016 }
1017 var10 = NULL;
1018 var_res = var10;
1019 var11 = NULL;
1020 var_ress = var11;
1021 var12 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:nullable Array[MProperty](Array[MProperty])>*/;
1022 for(;;) {
1023 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
1024 if(!var13) break;
1025 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
1026 var_mprop = var14;
1027 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>*/;
1028 var16 = !var15;
1029 if (var16){
1030 goto CONTINUE_label;
1031 } else {
1032 }
1033 var17 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty>*/;
1034 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MClassDef__mmodule]))(var17) /* mmodule on <var17:MClassDef>*/;
1035 var19 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__visibility]))(var_mprop) /* visibility on <var_mprop:MProperty>*/;
1036 var20 = ((short int (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model_base__MModule__is_visible]))(var_mmodule, var18, var19) /* is_visible on <var_mmodule:MModule>*/;
1037 var21 = !var20;
1038 if (var21){
1039 goto CONTINUE_label;
1040 } else {
1041 }
1042 var22 = NULL;
1043 if (var_res == NULL) {
1044 var23 = 1; /* is null */
1045 } else {
1046 var23 = 0; /* arg is null but recv is not */
1047 }
1048 if (var23){
1049 var_res = var_mprop;
1050 } else {
1051 var24 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on <var_res:nullable MProperty(MProperty)>*/;
1052 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__bound_mtype]))(var24) /* bound_mtype on <var24:MClassDef>*/;
1053 var_restype = var25;
1054 var26 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty>*/;
1055 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClassDef__bound_mtype]))(var26) /* bound_mtype on <var26:MClassDef>*/;
1056 var_mproptype = var27;
1057 var28 = NULL;
1058 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>*/;
1059 if (var29){
1060 } else {
1061 var30 = NULL;
1062 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>*/;
1063 if (var31){
1064 var_res = var_mprop;
1065 } else {
1066 var32 = NULL;
1067 if (var_ress == NULL) {
1068 var33 = 1; /* is null */
1069 } else {
1070 var33 = 0; /* arg is null but recv is not */
1071 }
1072 if (var33){
1073 var34 = NEW_array__Array(&type_array__Arraymodel__MProperty);
1074 ((void (*)(val*))(var34->class->vft[COLOR_array__Array__init]))(var34) /* init on <var34:Array[MProperty]>*/;
1075 CHECK_NEW_array__Array(var34);
1076 var_ress = var34;
1077 } else {
1078 }
1079 ((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])>*/;
1080 }
1081 }
1082 }
1083 CONTINUE_label: (void)0;
1084 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
1085 }
1086 BREAK_label: (void)0;
1087 var35 = NULL;
1088 if (var_ress == NULL) {
1089 var36 = 0; /* is null */
1090 } else {
1091 var36 = 1; /* arg is null and recv is not */
1092 }
1093 if (var36){
1094 if (var_res == NULL) {
1095 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1096 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 203);
1097 exit(1);
1098 } else {
1099 var37 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_res) /* intro_mclassdef on <var_res:nullable MProperty>*/;
1100 }
1101 var38 = ((val* (*)(val*))(var37->class->vft[COLOR_model__MClassDef__bound_mtype]))(var37) /* bound_mtype on <var37:MClassDef>*/;
1102 var_restype39 = var38;
1103 var40 = ((val* (*)(val*))(var_ress->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_ress) /* iterator on <var_ress:nullable Array[MProperty](Array[MProperty])>*/;
1104 for(;;) {
1105 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
1106 if(!var41) break;
1107 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
1108 var_mprop43 = var42;
1109 var44 = ((val* (*)(val*))(var_mprop43->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop43) /* intro_mclassdef on <var_mprop43:MProperty>*/;
1110 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_model__MClassDef__bound_mtype]))(var44) /* bound_mtype on <var44:MClassDef>*/;
1111 var_mproptype46 = var45;
1112 var47 = NULL;
1113 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>*/;
1114 var49 = !var48;
1115 if (var49){
1116 if (varonce) {
1117 var50 = varonce;
1118 } else {
1119 var51 = "Ambigous property name \'";
1120 var52 = 24;
1121 var53 = string__NativeString__to_s_with_length(var51, var52);
1122 var50 = var53;
1123 varonce = var50;
1124 }
1125 if (varonce54) {
1126 var55 = varonce54;
1127 } else {
1128 var56 = "\' for ";
1129 var57 = 6;
1130 var58 = string__NativeString__to_s_with_length(var56, var57);
1131 var55 = var58;
1132 varonce54 = var55;
1133 }
1134 if (varonce59) {
1135 var60 = varonce59;
1136 } else {
1137 var61 = "; conflict between ";
1138 var62 = 19;
1139 var63 = string__NativeString__to_s_with_length(var61, var62);
1140 var60 = var63;
1141 varonce59 = var60;
1142 }
1143 var64 = ((val* (*)(val*))(var_mprop43->class->vft[COLOR_model__MProperty__full_name]))(var_mprop43) /* full_name on <var_mprop43:MProperty>*/;
1144 if (varonce65) {
1145 var66 = varonce65;
1146 } else {
1147 var67 = " and ";
1148 var68 = 5;
1149 var69 = string__NativeString__to_s_with_length(var67, var68);
1150 var66 = var69;
1151 varonce65 = var66;
1152 }
1153 if (var_res == NULL) {
1154 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1155 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 207);
1156 exit(1);
1157 } else {
1158 var70 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__full_name]))(var_res) /* full_name on <var_res:nullable MProperty>*/;
1159 }
1160 var71 = NEW_array__Array(&type_array__Arraykernel__Object);
1161 { /* var71 = array_instance Array[Object] */
1162 var72 = 8;
1163 var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
1164 ((struct instance_array__NativeArray*)var73)->values[0] = (val*) var50;
1165 ((struct instance_array__NativeArray*)var73)->values[1] = (val*) var_name;
1166 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var55;
1167 ((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_mtype;
1168 ((struct instance_array__NativeArray*)var73)->values[4] = (val*) var60;
1169 ((struct instance_array__NativeArray*)var73)->values[5] = (val*) var64;
1170 ((struct instance_array__NativeArray*)var73)->values[6] = (val*) var66;
1171 ((struct instance_array__NativeArray*)var73)->values[7] = (val*) var70;
1172 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
1173 CHECK_NEW_array__Array(var71);
1174 }
1175 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
1176 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var74) /* error on <self:ModelBuilder>*/;
1177 var75 = NULL;
1178 var = var75;
1179 goto RET_LABEL;
1180 } else {
1181 }
1182 CONTINUE_label76: (void)0;
1183 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
1184 }
1185 BREAK_label76: (void)0;
1186 } else {
1187 }
1188 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>*/;
1189 ((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]>*/;
1190 var = var_res;
1191 goto RET_LABEL;
1192 RET_LABEL:;
1193 return var;
1194 }
1195 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2 for (self: Object, ANode, MModule, MType, String): nullable MProperty */
1196 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2, val* p3) {
1197 val* var /* : nullable MProperty */;
1198 val* var1 /* : nullable MProperty */;
1199 var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2(self, p0, p1, p2, p3);
1200 var = var1;
1201 RET_LABEL:;
1202 return var;
1203 }
1204 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache for (self: ModelBuilder): HashMap3[MModule, MType, String, nullable MProperty] */
1205 val* modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(val* self) {
1206 val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1207 val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1208 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dtry_get_mproperty_by_name2_cache].val; /* @try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
1209 if (var1 == NULL) {
1210 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @try_get_mproperty_by_name2_cache");
1211 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 217);
1212 exit(1);
1213 }
1214 var = var1;
1215 RET_LABEL:;
1216 return var;
1217 }
1218 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache for (self: Object): HashMap3[MModule, MType, String, nullable MProperty] */
1219 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(val* self) {
1220 val* var /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1221 val* var1 /* : HashMap3[MModule, MType, String, nullable MProperty] */;
1222 var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache(self);
1223 var = var1;
1224 RET_LABEL:;
1225 return var;
1226 }
1227 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache= for (self: ModelBuilder, HashMap3[MModule, MType, String, nullable MProperty]) */
1228 void modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(val* self, val* p0) {
1229 self->attrs[COLOR_modelbuilder__ModelBuilder___64dtry_get_mproperty_by_name2_cache].val = p0; /* @try_get_mproperty_by_name2_cache on <self:ModelBuilder> */
1230 RET_LABEL:;
1231 }
1232 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name2_cache= for (self: Object, HashMap3[MModule, MType, String, nullable MProperty]) */
1233 void VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(val* self, val* p0) {
1234 modelbuilder__ModelBuilder__try_get_mproperty_by_name2_cache_61d(self, p0);
1235 RET_LABEL:;
1236 }
1237 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name for (self: ModelBuilder, ANode, MClassDef, String): nullable MProperty */
1238 val* modelbuilder__ModelBuilder__try_get_mproperty_by_name(val* self, val* p0, val* p1, val* p2) {
1239 val* var /* : nullable MProperty */;
1240 val* var_anode /* var anode: ANode */;
1241 val* var_mclassdef /* var mclassdef: MClassDef */;
1242 val* var_name /* var name: String */;
1243 val* var1 /* : MModule */;
1244 val* var2 /* : MClassType */;
1245 val* var3 /* : nullable MProperty */;
1246 var_anode = p0;
1247 var_mclassdef = p1;
1248 var_name = p2;
1249 var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
1250 var2 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_mclassdef) /* bound_mtype on <var_mclassdef:MClassDef>*/;
1251 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>*/;
1252 var = var3;
1253 goto RET_LABEL;
1254 RET_LABEL:;
1255 return var;
1256 }
1257 /* method modelbuilder#ModelBuilder#try_get_mproperty_by_name for (self: Object, ANode, MClassDef, String): nullable MProperty */
1258 val* VIRTUAL_modelbuilder__ModelBuilder__try_get_mproperty_by_name(val* self, val* p0, val* p1, val* p2) {
1259 val* var /* : nullable MProperty */;
1260 val* var1 /* : nullable MProperty */;
1261 var1 = modelbuilder__ModelBuilder__try_get_mproperty_by_name(self, p0, p1, p2);
1262 var = var1;
1263 RET_LABEL:;
1264 return var;
1265 }
1266 /* method modelbuilder#ModelBuilder#paths for (self: ModelBuilder): Array[String] */
1267 val* modelbuilder__ModelBuilder__paths(val* self) {
1268 val* var /* : Array[String] */;
1269 val* var1 /* : Array[String] */;
1270 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dpaths].val; /* @paths on <self:ModelBuilder> */
1271 if (var1 == NULL) {
1272 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @paths");
1273 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 226);
1274 exit(1);
1275 }
1276 var = var1;
1277 RET_LABEL:;
1278 return var;
1279 }
1280 /* method modelbuilder#ModelBuilder#paths for (self: Object): Array[String] */
1281 val* VIRTUAL_modelbuilder__ModelBuilder__paths(val* self) {
1282 val* var /* : Array[String] */;
1283 val* var1 /* : Array[String] */;
1284 var1 = modelbuilder__ModelBuilder__paths(self);
1285 var = var1;
1286 RET_LABEL:;
1287 return var;
1288 }
1289 /* method modelbuilder#ModelBuilder#paths= for (self: ModelBuilder, Array[String]) */
1290 void modelbuilder__ModelBuilder__paths_61d(val* self, val* p0) {
1291 self->attrs[COLOR_modelbuilder__ModelBuilder___64dpaths].val = p0; /* @paths on <self:ModelBuilder> */
1292 RET_LABEL:;
1293 }
1294 /* method modelbuilder#ModelBuilder#paths= for (self: Object, Array[String]) */
1295 void VIRTUAL_modelbuilder__ModelBuilder__paths_61d(val* self, val* p0) {
1296 modelbuilder__ModelBuilder__paths_61d(self, p0);
1297 RET_LABEL:;
1298 }
1299 /* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: ModelBuilder, ANode, nullable MModule, String): nullable MModule */
1300 val* modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
1301 val* var /* : nullable MModule */;
1302 val* var_anode /* var anode: ANode */;
1303 val* var_mmodule /* var mmodule: nullable MModule */;
1304 val* var_name /* var name: String */;
1305 val* var_origmmodule /* var origmmodule: nullable MModule */;
1306 val* var1 /* : Model */;
1307 val* var2 /* : nullable Array[MModule] */;
1308 val* var_modules /* var modules: nullable Array[MModule] */;
1309 val* var3 /* : Array[String] */;
1310 val* var_tries /* var tries: Array[String] */;
1311 val* var_lastmodule /* var lastmodule: nullable MModule */;
1312 val* var4 /* : null */;
1313 short int var5 /* : Bool */;
1314 val* var6 /* : Location */;
1315 val* var7 /* : nullable SourceFile */;
1316 val* var8 /* : String */;
1317 val* var9 /* : String */;
1318 val* var_dirname /* var dirname: String */;
1319 static val* varonce;
1320 val* var10 /* : String */;
1321 char* var11 /* : NativeString */;
1322 long var12 /* : Int */;
1323 val* var13 /* : String */;
1324 val* var14 /* : String */;
1325 val* var15 /* : String */;
1326 short int var16 /* : Bool */;
1327 val* var17 /* : nullable MModule */;
1328 val* var_owner /* var owner: nullable MModule */;
1329 val* var18 /* : null */;
1330 short int var19 /* : Bool */;
1331 val* var20 /* : Iterator[nullable Object] */;
1332 short int var21 /* : Bool */;
1333 val* var22 /* : nullable Object */;
1334 val* var_candidate /* var candidate: MModule */;
1335 val* var23 /* : nullable MModule */;
1336 short int var24 /* : Bool */;
1337 static val* varonce25;
1338 val* var26 /* : String */;
1339 char* var27 /* : NativeString */;
1340 long var28 /* : Int */;
1341 val* var29 /* : String */;
1342 val* var30 /* : String */;
1343 val* var31 /* : String */;
1344 static val* varonce32;
1345 val* var33 /* : String */;
1346 char* var34 /* : NativeString */;
1347 long var35 /* : Int */;
1348 val* var36 /* : String */;
1349 val* var37 /* : String */;
1350 val* var_try_file /* var try_file: String */;
1351 short int var38 /* : Bool */;
1352 val* var39 /* : String */;
1353 val* var40 /* : nullable AModule */;
1354 val* var_res /* var res: nullable AModule */;
1355 val* var41 /* : null */;
1356 short int var42 /* : Bool */;
1357 val* var43 /* : null */;
1358 val* var44 /* : nullable MModule */;
1359 static val* varonce45;
1360 val* var46 /* : String */;
1361 char* var47 /* : NativeString */;
1362 long var48 /* : Int */;
1363 val* var49 /* : String */;
1364 val* var50 /* : String */;
1365 val* var51 /* : String */;
1366 static val* varonce52;
1367 val* var53 /* : String */;
1368 char* var54 /* : NativeString */;
1369 long var55 /* : Int */;
1370 val* var56 /* : String */;
1371 val* var57 /* : String */;
1372 val* var58 /* : String */;
1373 static val* varonce59;
1374 val* var60 /* : String */;
1375 char* var61 /* : NativeString */;
1376 long var62 /* : Int */;
1377 val* var63 /* : String */;
1378 val* var64 /* : String */;
1379 short int var65 /* : Bool */;
1380 val* var66 /* : String */;
1381 val* var67 /* : nullable AModule */;
1382 val* var_res68 /* var res: nullable AModule */;
1383 val* var69 /* : null */;
1384 short int var70 /* : Bool */;
1385 val* var71 /* : null */;
1386 val* var72 /* : nullable MModule */;
1387 val* var73 /* : nullable MModule */;
1388 val* var75 /* : null */;
1389 short int var76 /* : Bool */;
1390 val* var77 /* : Iterator[nullable Object] */;
1391 short int var78 /* : Bool */;
1392 val* var79 /* : nullable Object */;
1393 val* var_candidate80 /* var candidate: MModule */;
1394 val* var81 /* : nullable MModule */;
1395 val* var82 /* : null */;
1396 short int var83 /* : Bool */;
1397 val* var85 /* : Array[String] */;
1398 val* var_lookpaths /* var lookpaths: Array[String] */;
1399 val* var86 /* : null */;
1400 short int var87 /* : Bool */;
1401 val* var88 /* : Location */;
1402 val* var89 /* : nullable SourceFile */;
1403 val* var90 /* : String */;
1404 val* var91 /* : String */;
1405 val* var_dirname92 /* var dirname: String */;
1406 static val* varonce93;
1407 val* var94 /* : String */;
1408 char* var95 /* : NativeString */;
1409 long var96 /* : Int */;
1410 val* var97 /* : String */;
1411 val* var98 /* : String */;
1412 val* var99 /* : String */;
1413 short int var100 /* : Bool */;
1414 val* var101 /* : String */;
1415 short int var102 /* : Bool */;
1416 short int var103 /* : Bool */;
1417 val* var104 /* : Array[nullable Object] */;
1418 val* var105 /* : null */;
1419 val* var_candidate106 /* var candidate: nullable String */;
1420 val* var107 /* : Iterator[nullable Object] */;
1421 short int var108 /* : Bool */;
1422 val* var109 /* : nullable Object */;
1423 val* var_dirname110 /* var dirname: String */;
1424 static val* varonce111;
1425 val* var112 /* : String */;
1426 char* var113 /* : NativeString */;
1427 long var114 /* : Int */;
1428 val* var115 /* : String */;
1429 val* var116 /* : String */;
1430 val* var117 /* : String */;
1431 static val* varonce118;
1432 val* var119 /* : String */;
1433 char* var120 /* : NativeString */;
1434 long var121 /* : Int */;
1435 val* var122 /* : String */;
1436 val* var123 /* : String */;
1437 val* var124 /* : String */;
1438 val* var_try_file125 /* var try_file: String */;
1439 short int var126 /* : Bool */;
1440 val* var127 /* : null */;
1441 short int var128 /* : Bool */;
1442 short int var129 /* : Bool */;
1443 val* var130 /* : String */;
1444 val* var_abs_candidate /* var abs_candidate: String */;
1445 val* var131 /* : String */;
1446 val* var_abs_try_file /* var abs_try_file: String */;
1447 short int var132 /* : Bool */;
1448 static val* varonce133;
1449 val* var134 /* : String */;
1450 char* var135 /* : NativeString */;
1451 long var136 /* : Int */;
1452 val* var137 /* : String */;
1453 static val* varonce138;
1454 val* var139 /* : String */;
1455 char* var140 /* : NativeString */;
1456 long var141 /* : Int */;
1457 val* var142 /* : String */;
1458 static val* varonce143;
1459 val* var144 /* : String */;
1460 char* var145 /* : NativeString */;
1461 long var146 /* : Int */;
1462 val* var147 /* : String */;
1463 val* var148 /* : Array[Object] */;
1464 long var149 /* : Int */;
1465 val* var150 /* : NativeArray[Object] */;
1466 val* var151 /* : String */;
1467 static val* varonce152;
1468 val* var153 /* : String */;
1469 char* var154 /* : NativeString */;
1470 long var155 /* : Int */;
1471 val* var156 /* : String */;
1472 val* var157 /* : String */;
1473 val* var158 /* : String */;
1474 static val* varonce159;
1475 val* var160 /* : String */;
1476 char* var161 /* : NativeString */;
1477 long var162 /* : Int */;
1478 val* var163 /* : String */;
1479 val* var164 /* : String */;
1480 val* var165 /* : String */;
1481 static val* varonce166;
1482 val* var167 /* : String */;
1483 char* var168 /* : NativeString */;
1484 long var169 /* : Int */;
1485 val* var170 /* : String */;
1486 val* var171 /* : String */;
1487 val* var172 /* : String */;
1488 short int var173 /* : Bool */;
1489 val* var174 /* : null */;
1490 short int var175 /* : Bool */;
1491 short int var176 /* : Bool */;
1492 val* var177 /* : String */;
1493 val* var_abs_candidate178 /* var abs_candidate: String */;
1494 val* var179 /* : String */;
1495 val* var_abs_try_file180 /* var abs_try_file: String */;
1496 short int var181 /* : Bool */;
1497 static val* varonce182;
1498 val* var183 /* : String */;
1499 char* var184 /* : NativeString */;
1500 long var185 /* : Int */;
1501 val* var186 /* : String */;
1502 static val* varonce187;
1503 val* var188 /* : String */;
1504 char* var189 /* : NativeString */;
1505 long var190 /* : Int */;
1506 val* var191 /* : String */;
1507 static val* varonce192;
1508 val* var193 /* : String */;
1509 char* var194 /* : NativeString */;
1510 long var195 /* : Int */;
1511 val* var196 /* : String */;
1512 val* var197 /* : Array[Object] */;
1513 long var198 /* : Int */;
1514 val* var199 /* : NativeArray[Object] */;
1515 val* var200 /* : String */;
1516 val* var202 /* : null */;
1517 short int var203 /* : Bool */;
1518 val* var204 /* : null */;
1519 short int var205 /* : Bool */;
1520 static val* varonce206;
1521 val* var207 /* : String */;
1522 char* var208 /* : NativeString */;
1523 long var209 /* : Int */;
1524 val* var210 /* : String */;
1525 static val* varonce211;
1526 val* var212 /* : String */;
1527 char* var213 /* : NativeString */;
1528 long var214 /* : Int */;
1529 val* var215 /* : String */;
1530 static val* varonce216;
1531 val* var217 /* : String */;
1532 char* var218 /* : NativeString */;
1533 long var219 /* : Int */;
1534 val* var220 /* : String */;
1535 static val* varonce221;
1536 val* var222 /* : String */;
1537 char* var223 /* : NativeString */;
1538 long var224 /* : Int */;
1539 val* var225 /* : String */;
1540 val* var226 /* : String */;
1541 val* var227 /* : Array[Object] */;
1542 long var228 /* : Int */;
1543 val* var229 /* : NativeArray[Object] */;
1544 val* var230 /* : String */;
1545 static val* varonce231;
1546 val* var232 /* : String */;
1547 char* var233 /* : NativeString */;
1548 long var234 /* : Int */;
1549 val* var235 /* : String */;
1550 static val* varonce236;
1551 val* var237 /* : String */;
1552 char* var238 /* : NativeString */;
1553 long var239 /* : Int */;
1554 val* var240 /* : String */;
1555 static val* varonce241;
1556 val* var242 /* : String */;
1557 char* var243 /* : NativeString */;
1558 long var244 /* : Int */;
1559 val* var245 /* : String */;
1560 val* var246 /* : String */;
1561 val* var247 /* : Array[Object] */;
1562 long var248 /* : Int */;
1563 val* var249 /* : NativeArray[Object] */;
1564 val* var250 /* : String */;
1565 val* var251 /* : null */;
1566 val* var252 /* : nullable AModule */;
1567 val* var_res253 /* var res: nullable AModule */;
1568 val* var254 /* : null */;
1569 short int var255 /* : Bool */;
1570 val* var256 /* : null */;
1571 val* var257 /* : nullable MModule */;
1572 var_anode = p0;
1573 var_mmodule = p1;
1574 var_name = p2;
1575 var_origmmodule = var_mmodule;
1576 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
1577 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model_base__Model__get_mmodules_by_name]))(var1, var_name) /* get_mmodules_by_name on <var1:Model>*/;
1578 var_modules = var2;
1579 var3 = NEW_array__Array(&type_array__Arraystring__String);
1580 ((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[String]>*/;
1581 CHECK_NEW_array__Array(var3);
1582 var_tries = var3;
1583 var_lastmodule = var_mmodule;
1584 for(;;) {
1585 var4 = NULL;
1586 if (var_mmodule == NULL) {
1587 var5 = 0; /* is null */
1588 } else {
1589 var5 = 1; /* arg is null and recv is not */
1590 }
1591 if (!var5) break;
1592 var6 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__location]))(var_mmodule) /* location on <var_mmodule:nullable MModule(MModule)>*/;
1593 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_location__Location__file]))(var6) /* file on <var6:Location>*/;
1594 if (var7 == NULL) {
1595 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1596 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 248);
1597 exit(1);
1598 } else {
1599 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_location__SourceFile__filename]))(var7) /* filename on <var7:nullable SourceFile>*/;
1600 }
1601 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_file__String__dirname]))(var8) /* dirname on <var8:String>*/;
1602 var_dirname = var9;
1603 if (varonce) {
1604 var10 = varonce;
1605 } else {
1606 var11 = "";
1607 var12 = 0;
1608 var13 = string__NativeString__to_s_with_length(var11, var12);
1609 var10 = var13;
1610 varonce = var10;
1611 }
1612 var14 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_file__String__basename]))(var_dirname, var10) /* basename on <var_dirname:String>*/;
1613 var15 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__name]))(var_mmodule) /* name on <var_mmodule:nullable MModule(MModule)>*/;
1614 var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___33d_61d]))(var14, var15) /* != on <var14:String>*/;
1615 if (var16){
1616 var17 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__direct_owner]))(var_mmodule) /* direct_owner on <var_mmodule:nullable MModule(MModule)>*/;
1617 var_owner = var17;
1618 } else {
1619 var_owner = var_mmodule;
1620 }
1621 var18 = NULL;
1622 if (var_modules == NULL) {
1623 var19 = 0; /* is null */
1624 } else {
1625 var19 = 1; /* arg is null and recv is not */
1626 }
1627 if (var19){
1628 var20 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on <var_modules:nullable Array[MModule](Array[MModule])>*/;
1629 for(;;) {
1630 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on <var20:Iterator[nullable Object]>*/;
1631 if(!var21) break;
1632 var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on <var20:Iterator[nullable Object]>*/;
1633 var_candidate = var22;
1634 var23 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model_base__MModule__direct_owner]))(var_candidate) /* direct_owner on <var_candidate:MModule>*/;
1635 if (var23 == NULL) {
1636 var24 = (var_owner == NULL);
1637 } else {
1638 var24 = ((short int (*)(val*, val*))(var23->class->vft[COLOR_kernel__Object___61d_61d]))(var23, var_owner) /* == on <var23:nullable MModule>*/;
1639 }
1640 if (var24){
1641 var = var_candidate;
1642 goto RET_LABEL;
1643 } else {
1644 }
1645 CONTINUE_label: (void)0;
1646 ((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on <var20:Iterator[nullable Object]>*/;
1647 }
1648 BREAK_label: (void)0;
1649 } else {
1650 }
1651 if (varonce25) {
1652 var26 = varonce25;
1653 } else {
1654 var27 = "/";
1655 var28 = 1;
1656 var29 = string__NativeString__to_s_with_length(var27, var28);
1657 var26 = var29;
1658 varonce25 = var26;
1659 }
1660 var30 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var26) /* + on <var_dirname:String>*/;
1661 var31 = ((val* (*)(val*, val*))(var30->class->vft[COLOR_string__String___43d]))(var30, var_name) /* + on <var30:String>*/;
1662 if (varonce32) {
1663 var33 = varonce32;
1664 } else {
1665 var34 = ".nit";
1666 var35 = 4;
1667 var36 = string__NativeString__to_s_with_length(var34, var35);
1668 var33 = var36;
1669 varonce32 = var33;
1670 }
1671 var37 = ((val* (*)(val*, val*))(var31->class->vft[COLOR_string__String___43d]))(var31, var33) /* + on <var31:String>*/;
1672 var_try_file = var37;
1673 ((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file) /* add on <var_tries:Array[String]>*/;
1674 var38 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on <var_try_file:String>*/;
1675 if (var38){
1676 var39 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on <var_try_file:String>*/;
1677 var40 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_owner, var39) /* load_module on <self:ModelBuilder>*/;
1678 var_res = var40;
1679 var41 = NULL;
1680 if (var_res == NULL) {
1681 var42 = 1; /* is null */
1682 } else {
1683 var42 = 0; /* arg is null but recv is not */
1684 }
1685 if (var42){
1686 var43 = NULL;
1687 var = var43;
1688 goto RET_LABEL;
1689 } else {
1690 }
1691 var44 = ((val* (*)(val*))(var_res->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res) /* mmodule on <var_res:nullable AModule(AModule)>*/;
1692 if (var44 == NULL) {
1693 fprintf(stderr, "Runtime error: %s", "Cast failed");
1694 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 273);
1695 exit(1);
1696 }
1697 var = var44;
1698 goto RET_LABEL;
1699 } else {
1700 }
1701 if (varonce45) {
1702 var46 = varonce45;
1703 } else {
1704 var47 = "/";
1705 var48 = 1;
1706 var49 = string__NativeString__to_s_with_length(var47, var48);
1707 var46 = var49;
1708 varonce45 = var46;
1709 }
1710 var50 = ((val* (*)(val*, val*))(var_dirname->class->vft[COLOR_string__String___43d]))(var_dirname, var46) /* + on <var_dirname:String>*/;
1711 var51 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_string__String___43d]))(var50, var_name) /* + on <var50:String>*/;
1712 if (varonce52) {
1713 var53 = varonce52;
1714 } else {
1715 var54 = "/";
1716 var55 = 1;
1717 var56 = string__NativeString__to_s_with_length(var54, var55);
1718 var53 = var56;
1719 varonce52 = var53;
1720 }
1721 var57 = ((val* (*)(val*, val*))(var51->class->vft[COLOR_string__String___43d]))(var51, var53) /* + on <var51:String>*/;
1722 var58 = ((val* (*)(val*, val*))(var57->class->vft[COLOR_string__String___43d]))(var57, var_name) /* + on <var57:String>*/;
1723 if (varonce59) {
1724 var60 = varonce59;
1725 } else {
1726 var61 = ".nit";
1727 var62 = 4;
1728 var63 = string__NativeString__to_s_with_length(var61, var62);
1729 var60 = var63;
1730 varonce59 = var60;
1731 }
1732 var64 = ((val* (*)(val*, val*))(var58->class->vft[COLOR_string__String___43d]))(var58, var60) /* + on <var58:String>*/;
1733 var_try_file = var64;
1734 var65 = ((short int (*)(val*))(var_try_file->class->vft[COLOR_file__String__file_exists]))(var_try_file) /* file_exists on <var_try_file:String>*/;
1735 if (var65){
1736 var66 = ((val* (*)(val*))(var_try_file->class->vft[COLOR_file__String__simplify_path]))(var_try_file) /* simplify_path on <var_try_file:String>*/;
1737 var67 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_owner, var66) /* load_module on <self:ModelBuilder>*/;
1738 var_res68 = var67;
1739 var69 = NULL;
1740 if (var_res68 == NULL) {
1741 var70 = 1; /* is null */
1742 } else {
1743 var70 = 0; /* arg is null but recv is not */
1744 }
1745 if (var70){
1746 var71 = NULL;
1747 var = var71;
1748 goto RET_LABEL;
1749 } else {
1750 }
1751 var72 = ((val* (*)(val*))(var_res68->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res68) /* mmodule on <var_res68:nullable AModule(AModule)>*/;
1752 if (var72 == NULL) {
1753 fprintf(stderr, "Runtime error: %s", "Cast failed");
1754 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 281);
1755 exit(1);
1756 }
1757 var = var72;
1758 goto RET_LABEL;
1759 } else {
1760 }
1761 var_lastmodule = var_mmodule;
1762 var73 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__direct_owner]))(var_mmodule) /* direct_owner on <var_mmodule:nullable MModule(MModule)>*/;
1763 var_mmodule = var73;
1764 CONTINUE_label74: (void)0;
1765 }
1766 BREAK_label74: (void)0;
1767 var75 = NULL;
1768 if (var_modules == NULL) {
1769 var76 = 0; /* is null */
1770 } else {
1771 var76 = 1; /* arg is null and recv is not */
1772 }
1773 if (var76){
1774 var77 = ((val* (*)(val*))(var_modules->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_modules) /* iterator on <var_modules:nullable Array[MModule](Array[MModule])>*/;
1775 for(;;) {
1776 var78 = ((short int (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var77) /* is_ok on <var77:Iterator[nullable Object]>*/;
1777 if(!var78) break;
1778 var79 = ((val* (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__item]))(var77) /* item on <var77:Iterator[nullable Object]>*/;
1779 var_candidate80 = var79;
1780 var81 = ((val* (*)(val*))(var_candidate80->class->vft[COLOR_model_base__MModule__direct_owner]))(var_candidate80) /* direct_owner on <var_candidate80:MModule>*/;
1781 var82 = NULL;
1782 if (var81 == NULL) {
1783 var83 = 1; /* is null */
1784 } else {
1785 var83 = 0; /* arg is null but recv is not */
1786 }
1787 if (var83){
1788 var = var_candidate80;
1789 goto RET_LABEL;
1790 } else {
1791 }
1792 CONTINUE_label84: (void)0;
1793 ((void (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__next]))(var77) /* next on <var77:Iterator[nullable Object]>*/;
1794 }
1795 BREAK_label84: (void)0;
1796 } else {
1797 }
1798 var85 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__paths]))(self) /* paths on <self:ModelBuilder>*/;
1799 var_lookpaths = var85;
1800 var86 = NULL;
1801 if (var_lastmodule == NULL) {
1802 var87 = 0; /* is null */
1803 } else {
1804 var87 = 1; /* arg is null and recv is not */
1805 }
1806 if (var87){
1807 var88 = ((val* (*)(val*))(var_lastmodule->class->vft[COLOR_model_base__MModule__location]))(var_lastmodule) /* location on <var_lastmodule:nullable MModule(MModule)>*/;
1808 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_location__Location__file]))(var88) /* file on <var88:Location>*/;
1809 if (var89 == NULL) {
1810 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1811 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 301);
1812 exit(1);
1813 } else {
1814 var90 = ((val* (*)(val*))(var89->class->vft[COLOR_location__SourceFile__filename]))(var89) /* filename on <var89:nullable SourceFile>*/;
1815 }
1816 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_file__String__dirname]))(var90) /* dirname on <var90:String>*/;
1817 var_dirname92 = var91;
1818 if (varonce93) {
1819 var94 = varonce93;
1820 } else {
1821 var95 = "";
1822 var96 = 0;
1823 var97 = string__NativeString__to_s_with_length(var95, var96);
1824 var94 = var97;
1825 varonce93 = var94;
1826 }
1827 var98 = ((val* (*)(val*, val*))(var_dirname92->class->vft[COLOR_file__String__basename]))(var_dirname92, var94) /* basename on <var_dirname92:String>*/;
1828 var99 = ((val* (*)(val*))(var_lastmodule->class->vft[COLOR_model_base__MModule__name]))(var_lastmodule) /* name on <var_lastmodule:nullable MModule(MModule)>*/;
1829 var100 = ((short int (*)(val*, val*))(var98->class->vft[COLOR_kernel__Object___61d_61d]))(var98, var99) /* == on <var98:String>*/;
1830 if (var100){
1831 var101 = ((val* (*)(val*))(var_dirname92->class->vft[COLOR_file__String__dirname]))(var_dirname92) /* dirname on <var_dirname92:String>*/;
1832 var_dirname92 = var101;
1833 } else {
1834 }
1835 var102 = ((short int (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__has]))(var_lookpaths, var_dirname92) /* has on <var_lookpaths:Array[String]>*/;
1836 var103 = !var102;
1837 if (var103){
1838 var104 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_array__Collection__to_a]))(var_lookpaths) /* to_a on <var_lookpaths:Array[String]>*/;
1839 var_lookpaths = var104;
1840 ((void (*)(val*, val*))(var_lookpaths->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_lookpaths, var_dirname92) /* add on <var_lookpaths:Array[String]>*/;
1841 } else {
1842 }
1843 } else {
1844 }
1845 var105 = NULL;
1846 var_candidate106 = var105;
1847 var107 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lookpaths) /* iterator on <var_lookpaths:Array[String]>*/;
1848 for(;;) {
1849 var108 = ((short int (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var107) /* is_ok on <var107:Iterator[nullable Object]>*/;
1850 if(!var108) break;
1851 var109 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__item]))(var107) /* item on <var107:Iterator[nullable Object]>*/;
1852 var_dirname110 = var109;
1853 if (varonce111) {
1854 var112 = varonce111;
1855 } else {
1856 var113 = "/";
1857 var114 = 1;
1858 var115 = string__NativeString__to_s_with_length(var113, var114);
1859 var112 = var115;
1860 varonce111 = var112;
1861 }
1862 var116 = ((val* (*)(val*, val*))(var_dirname110->class->vft[COLOR_string__String___43d]))(var_dirname110, var112) /* + on <var_dirname110:String>*/;
1863 var117 = ((val* (*)(val*, val*))(var116->class->vft[COLOR_string__String___43d]))(var116, var_name) /* + on <var116:String>*/;
1864 if (varonce118) {
1865 var119 = varonce118;
1866 } else {
1867 var120 = ".nit";
1868 var121 = 4;
1869 var122 = string__NativeString__to_s_with_length(var120, var121);
1870 var119 = var122;
1871 varonce118 = var119;
1872 }
1873 var123 = ((val* (*)(val*, val*))(var117->class->vft[COLOR_string__String___43d]))(var117, var119) /* + on <var117:String>*/;
1874 var124 = ((val* (*)(val*))(var123->class->vft[COLOR_file__String__simplify_path]))(var123) /* simplify_path on <var123:String>*/;
1875 var_try_file125 = var124;
1876 ((void (*)(val*, val*))(var_tries->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tries, var_try_file125) /* add on <var_tries:Array[String]>*/;
1877 var126 = ((short int (*)(val*))(var_try_file125->class->vft[COLOR_file__String__file_exists]))(var_try_file125) /* file_exists on <var_try_file125:String>*/;
1878 if (var126){
1879 var127 = NULL;
1880 if (var_candidate106 == NULL) {
1881 var128 = 1; /* is null */
1882 } else {
1883 var128 = 0; /* arg is null but recv is not */
1884 }
1885 if (var128){
1886 var_candidate106 = var_try_file125;
1887 } else {
1888 var129 = ((short int (*)(val*, val*))(var_candidate106->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate106, var_try_file125) /* != on <var_candidate106:nullable String(String)>*/;
1889 if (var129){
1890 var130 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate106) /* module_absolute_path on <self:ModelBuilder>*/;
1891 var_abs_candidate = var130;
1892 var131 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file125) /* module_absolute_path on <self:ModelBuilder>*/;
1893 var_abs_try_file = var131;
1894 var132 = ((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>*/;
1895 if (var132){
1896 if (varonce133) {
1897 var134 = varonce133;
1898 } else {
1899 var135 = "Error: conflicting module file for ";
1900 var136 = 35;
1901 var137 = string__NativeString__to_s_with_length(var135, var136);
1902 var134 = var137;
1903 varonce133 = var134;
1904 }
1905 if (varonce138) {
1906 var139 = varonce138;
1907 } else {
1908 var140 = ": ";
1909 var141 = 2;
1910 var142 = string__NativeString__to_s_with_length(var140, var141);
1911 var139 = var142;
1912 varonce138 = var139;
1913 }
1914 if (varonce143) {
1915 var144 = varonce143;
1916 } else {
1917 var145 = " ";
1918 var146 = 1;
1919 var147 = string__NativeString__to_s_with_length(var145, var146);
1920 var144 = var147;
1921 varonce143 = var144;
1922 }
1923 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
1924 { /* var148 = array_instance Array[Object] */
1925 var149 = 6;
1926 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
1927 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var134;
1928 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_name;
1929 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var139;
1930 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_candidate106;
1931 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var144;
1932 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var_try_file125;
1933 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
1934 CHECK_NEW_array__Array(var148);
1935 }
1936 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
1937 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var151) /* error on <self:ModelBuilder>*/;
1938 } else {
1939 }
1940 } else {
1941 }
1942 }
1943 } else {
1944 }
1945 if (varonce152) {
1946 var153 = varonce152;
1947 } else {
1948 var154 = "/";
1949 var155 = 1;
1950 var156 = string__NativeString__to_s_with_length(var154, var155);
1951 var153 = var156;
1952 varonce152 = var153;
1953 }
1954 var157 = ((val* (*)(val*, val*))(var_dirname110->class->vft[COLOR_string__String___43d]))(var_dirname110, var153) /* + on <var_dirname110:String>*/;
1955 var158 = ((val* (*)(val*, val*))(var157->class->vft[COLOR_string__String___43d]))(var157, var_name) /* + on <var157:String>*/;
1956 if (varonce159) {
1957 var160 = varonce159;
1958 } else {
1959 var161 = "/";
1960 var162 = 1;
1961 var163 = string__NativeString__to_s_with_length(var161, var162);
1962 var160 = var163;
1963 varonce159 = var160;
1964 }
1965 var164 = ((val* (*)(val*, val*))(var158->class->vft[COLOR_string__String___43d]))(var158, var160) /* + on <var158:String>*/;
1966 var165 = ((val* (*)(val*, val*))(var164->class->vft[COLOR_string__String___43d]))(var164, var_name) /* + on <var164:String>*/;
1967 if (varonce166) {
1968 var167 = varonce166;
1969 } else {
1970 var168 = ".nit";
1971 var169 = 4;
1972 var170 = string__NativeString__to_s_with_length(var168, var169);
1973 var167 = var170;
1974 varonce166 = var167;
1975 }
1976 var171 = ((val* (*)(val*, val*))(var165->class->vft[COLOR_string__String___43d]))(var165, var167) /* + on <var165:String>*/;
1977 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_file__String__simplify_path]))(var171) /* simplify_path on <var171:String>*/;
1978 var_try_file125 = var172;
1979 var173 = ((short int (*)(val*))(var_try_file125->class->vft[COLOR_file__String__file_exists]))(var_try_file125) /* file_exists on <var_try_file125:String>*/;
1980 if (var173){
1981 var174 = NULL;
1982 if (var_candidate106 == NULL) {
1983 var175 = 1; /* is null */
1984 } else {
1985 var175 = 0; /* arg is null but recv is not */
1986 }
1987 if (var175){
1988 var_candidate106 = var_try_file125;
1989 } else {
1990 var176 = ((short int (*)(val*, val*))(var_candidate106->class->vft[COLOR_kernel__Object___33d_61d]))(var_candidate106, var_try_file125) /* != on <var_candidate106:nullable String(String)>*/;
1991 if (var176){
1992 var177 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_candidate106) /* module_absolute_path on <self:ModelBuilder>*/;
1993 var_abs_candidate178 = var177;
1994 var179 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_try_file125) /* module_absolute_path on <self:ModelBuilder>*/;
1995 var_abs_try_file180 = var179;
1996 var181 = ((short int (*)(val*, val*))(var_abs_candidate178->class->vft[COLOR_kernel__Object___33d_61d]))(var_abs_candidate178, var_abs_try_file180) /* != on <var_abs_candidate178:String>*/;
1997 if (var181){
1998 if (varonce182) {
1999 var183 = varonce182;
2000 } else {
2001 var184 = "Error: conflicting module file for ";
2002 var185 = 35;
2003 var186 = string__NativeString__to_s_with_length(var184, var185);
2004 var183 = var186;
2005 varonce182 = var183;
2006 }
2007 if (varonce187) {
2008 var188 = varonce187;
2009 } else {
2010 var189 = ": ";
2011 var190 = 2;
2012 var191 = string__NativeString__to_s_with_length(var189, var190);
2013 var188 = var191;
2014 varonce187 = var188;
2015 }
2016 if (varonce192) {
2017 var193 = varonce192;
2018 } else {
2019 var194 = " ";
2020 var195 = 1;
2021 var196 = string__NativeString__to_s_with_length(var194, var195);
2022 var193 = var196;
2023 varonce192 = var193;
2024 }
2025 var197 = NEW_array__Array(&type_array__Arraykernel__Object);
2026 { /* var197 = array_instance Array[Object] */
2027 var198 = 6;
2028 var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object);
2029 ((struct instance_array__NativeArray*)var199)->values[0] = (val*) var183;
2030 ((struct instance_array__NativeArray*)var199)->values[1] = (val*) var_name;
2031 ((struct instance_array__NativeArray*)var199)->values[2] = (val*) var188;
2032 ((struct instance_array__NativeArray*)var199)->values[3] = (val*) var_candidate106;
2033 ((struct instance_array__NativeArray*)var199)->values[4] = (val*) var193;
2034 ((struct instance_array__NativeArray*)var199)->values[5] = (val*) var_try_file125;
2035 ((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
2036 CHECK_NEW_array__Array(var197);
2037 }
2038 var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
2039 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var200) /* error on <self:ModelBuilder>*/;
2040 } else {
2041 }
2042 } else {
2043 }
2044 }
2045 } else {
2046 }
2047 CONTINUE_label201: (void)0;
2048 ((void (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__next]))(var107) /* next on <var107:Iterator[nullable Object]>*/;
2049 }
2050 BREAK_label201: (void)0;
2051 var202 = NULL;
2052 if (var_candidate106 == NULL) {
2053 var203 = 1; /* is null */
2054 } else {
2055 var203 = 0; /* arg is null but recv is not */
2056 }
2057 if (var203){
2058 var204 = NULL;
2059 if (var_origmmodule == NULL) {
2060 var205 = 0; /* is null */
2061 } else {
2062 var205 = 1; /* arg is null and recv is not */
2063 }
2064 if (var205){
2065 if (varonce206) {
2066 var207 = varonce206;
2067 } else {
2068 var208 = "Error: cannot find module ";
2069 var209 = 26;
2070 var210 = string__NativeString__to_s_with_length(var208, var209);
2071 var207 = var210;
2072 varonce206 = var207;
2073 }
2074 if (varonce211) {
2075 var212 = varonce211;
2076 } else {
2077 var213 = " from ";
2078 var214 = 6;
2079 var215 = string__NativeString__to_s_with_length(var213, var214);
2080 var212 = var215;
2081 varonce211 = var212;
2082 }
2083 if (varonce216) {
2084 var217 = varonce216;
2085 } else {
2086 var218 = ". tried ";
2087 var219 = 8;
2088 var220 = string__NativeString__to_s_with_length(var218, var219);
2089 var217 = var220;
2090 varonce216 = var217;
2091 }
2092 if (varonce221) {
2093 var222 = varonce221;
2094 } else {
2095 var223 = ", ";
2096 var224 = 2;
2097 var225 = string__NativeString__to_s_with_length(var223, var224);
2098 var222 = var225;
2099 varonce221 = var222;
2100 }
2101 var226 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var222) /* join on <var_tries:Array[String]>*/;
2102 var227 = NEW_array__Array(&type_array__Arraykernel__Object);
2103 { /* var227 = array_instance Array[Object] */
2104 var228 = 6;
2105 var229 = NEW_array__NativeArray(var228, &type_array__NativeArraykernel__Object);
2106 ((struct instance_array__NativeArray*)var229)->values[0] = (val*) var207;
2107 ((struct instance_array__NativeArray*)var229)->values[1] = (val*) var_name;
2108 ((struct instance_array__NativeArray*)var229)->values[2] = (val*) var212;
2109 ((struct instance_array__NativeArray*)var229)->values[3] = (val*) var_origmmodule;
2110 ((struct instance_array__NativeArray*)var229)->values[4] = (val*) var217;
2111 ((struct instance_array__NativeArray*)var229)->values[5] = (val*) var226;
2112 ((void (*)(val*, val*, long))(var227->class->vft[COLOR_array__Array__with_native]))(var227, var229, var228) /* with_native on <var227:Array[Object]>*/;
2113 CHECK_NEW_array__Array(var227);
2114 }
2115 var230 = ((val* (*)(val*))(var227->class->vft[COLOR_string__Object__to_s]))(var227) /* to_s on <var227:Array[Object]>*/;
2116 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var230) /* error on <self:ModelBuilder>*/;
2117 } else {
2118 if (varonce231) {
2119 var232 = varonce231;
2120 } else {
2121 var233 = "Error: cannot find module ";
2122 var234 = 26;
2123 var235 = string__NativeString__to_s_with_length(var233, var234);
2124 var232 = var235;
2125 varonce231 = var232;
2126 }
2127 if (varonce236) {
2128 var237 = varonce236;
2129 } else {
2130 var238 = ". tried ";
2131 var239 = 8;
2132 var240 = string__NativeString__to_s_with_length(var238, var239);
2133 var237 = var240;
2134 varonce236 = var237;
2135 }
2136 if (varonce241) {
2137 var242 = varonce241;
2138 } else {
2139 var243 = ", ";
2140 var244 = 2;
2141 var245 = string__NativeString__to_s_with_length(var243, var244);
2142 var242 = var245;
2143 varonce241 = var242;
2144 }
2145 var246 = ((val* (*)(val*, val*))(var_tries->class->vft[COLOR_string__Collection__join]))(var_tries, var242) /* join on <var_tries:Array[String]>*/;
2146 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
2147 { /* var247 = array_instance Array[Object] */
2148 var248 = 4;
2149 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
2150 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var232;
2151 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var_name;
2152 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var237;
2153 ((struct instance_array__NativeArray*)var249)->values[3] = (val*) var246;
2154 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
2155 CHECK_NEW_array__Array(var247);
2156 }
2157 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
2158 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_anode, var250) /* error on <self:ModelBuilder>*/;
2159 }
2160 var251 = NULL;
2161 var = var251;
2162 goto RET_LABEL;
2163 } else {
2164 }
2165 var252 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__load_module]))(self, var_mmodule, var_candidate106) /* load_module on <self:ModelBuilder>*/;
2166 var_res253 = var252;
2167 var254 = NULL;
2168 if (var_res253 == NULL) {
2169 var255 = 1; /* is null */
2170 } else {
2171 var255 = 0; /* arg is null but recv is not */
2172 }
2173 if (var255){
2174 var256 = NULL;
2175 var = var256;
2176 goto RET_LABEL;
2177 } else {
2178 }
2179 var257 = ((val* (*)(val*))(var_res253->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_res253) /* mmodule on <var_res253:nullable AModule(AModule)>*/;
2180 if (var257 == NULL) {
2181 fprintf(stderr, "Runtime error: %s", "Cast failed");
2182 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 351);
2183 exit(1);
2184 }
2185 var = var257;
2186 goto RET_LABEL;
2187 RET_LABEL:;
2188 return var;
2189 }
2190 /* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: Object, ANode, nullable MModule, String): nullable MModule */
2191 val* VIRTUAL_modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
2192 val* var /* : nullable MModule */;
2193 val* var1 /* : nullable MModule */;
2194 var1 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, p0, p1, p2);
2195 var = var1;
2196 RET_LABEL:;
2197 return var;
2198 }
2199 /* method modelbuilder#ModelBuilder#module_absolute_path for (self: ModelBuilder, String): String */
2200 val* modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) {
2201 val* var /* : String */;
2202 val* var_path /* var path: String */;
2203 static val* varonce;
2204 val* var1 /* : String */;
2205 char* var2 /* : NativeString */;
2206 long var3 /* : Int */;
2207 val* var4 /* : String */;
2208 short int var5 /* : Bool */;
2209 val* var6 /* : String */;
2210 val* var7 /* : String */;
2211 val* var8 /* : String */;
2212 var_path = p0;
2213 if (varonce) {
2214 var1 = varonce;
2215 } else {
2216 var2 = "..";
2217 var3 = 2;
2218 var4 = string__NativeString__to_s_with_length(var2, var3);
2219 var1 = var4;
2220 varonce = var1;
2221 }
2222 var5 = ((short int (*)(val*, val*))(var_path->class->vft[COLOR_string__AbstractString__has_prefix]))(var_path, var1) /* has_prefix on <var_path:String>*/;
2223 if (var5){
2224 var6 = ((val* (*)(val*))(self->class->vft[COLOR_file__Object__getcwd]))(self) /* getcwd on <self:ModelBuilder>*/;
2225 var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_file__String__join_path]))(var6, var_path) /* join_path on <var6:String>*/;
2226 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_file__String__simplify_path]))(var7) /* simplify_path on <var7:String>*/;
2227 var = var8;
2228 goto RET_LABEL;
2229 } else {
2230 }
2231 var = var_path;
2232 goto RET_LABEL;
2233 RET_LABEL:;
2234 return var;
2235 }
2236 /* method modelbuilder#ModelBuilder#module_absolute_path for (self: Object, String): String */
2237 val* VIRTUAL_modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) {
2238 val* var /* : String */;
2239 val* var1 /* : String */;
2240 var1 = modelbuilder__ModelBuilder__module_absolute_path(self, p0);
2241 var = var1;
2242 RET_LABEL:;
2243 return var;
2244 }
2245 /* method modelbuilder#ModelBuilder#loaded_nmodules for (self: ModelBuilder): HashMap[String, AModule] */
2246 val* modelbuilder__ModelBuilder__loaded_nmodules(val* self) {
2247 val* var /* : HashMap[String, AModule] */;
2248 val* var1 /* : HashMap[String, AModule] */;
2249 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dloaded_nmodules].val; /* @loaded_nmodules on <self:ModelBuilder> */
2250 if (var1 == NULL) {
2251 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @loaded_nmodules");
2252 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 362);
2253 exit(1);
2254 }
2255 var = var1;
2256 RET_LABEL:;
2257 return var;
2258 }
2259 /* method modelbuilder#ModelBuilder#loaded_nmodules for (self: Object): HashMap[String, AModule] */
2260 val* VIRTUAL_modelbuilder__ModelBuilder__loaded_nmodules(val* self) {
2261 val* var /* : HashMap[String, AModule] */;
2262 val* var1 /* : HashMap[String, AModule] */;
2263 var1 = modelbuilder__ModelBuilder__loaded_nmodules(self);
2264 var = var1;
2265 RET_LABEL:;
2266 return var;
2267 }
2268 /* method modelbuilder#ModelBuilder#loaded_nmodules= for (self: ModelBuilder, HashMap[String, AModule]) */
2269 void modelbuilder__ModelBuilder__loaded_nmodules_61d(val* self, val* p0) {
2270 self->attrs[COLOR_modelbuilder__ModelBuilder___64dloaded_nmodules].val = p0; /* @loaded_nmodules on <self:ModelBuilder> */
2271 RET_LABEL:;
2272 }
2273 /* method modelbuilder#ModelBuilder#loaded_nmodules= for (self: Object, HashMap[String, AModule]) */
2274 void VIRTUAL_modelbuilder__ModelBuilder__loaded_nmodules_61d(val* self, val* p0) {
2275 modelbuilder__ModelBuilder__loaded_nmodules_61d(self, p0);
2276 RET_LABEL:;
2277 }
2278 /* method modelbuilder#ModelBuilder#load_module for (self: ModelBuilder, nullable MModule, String): nullable AModule */
2279 val* modelbuilder__ModelBuilder__load_module(val* self, val* p0, val* p1) {
2280 val* var /* : nullable AModule */;
2281 val* var_owner /* var owner: nullable MModule */;
2282 val* var_filename /* var filename: String */;
2283 val* var1 /* : nullable String */;
2284 static val* varonce;
2285 val* var2 /* : String */;
2286 char* var3 /* : NativeString */;
2287 long var4 /* : Int */;
2288 val* var5 /* : String */;
2289 short int var6 /* : Bool */;
2290 val* var7 /* : ToolContext */;
2291 val* var8 /* : null */;
2292 static val* varonce9;
2293 val* var10 /* : String */;
2294 char* var11 /* : NativeString */;
2295 long var12 /* : Int */;
2296 val* var13 /* : String */;
2297 static val* varonce14;
2298 val* var15 /* : String */;
2299 char* var16 /* : NativeString */;
2300 long var17 /* : Int */;
2301 val* var18 /* : String */;
2302 val* var19 /* : Array[Object] */;
2303 long var20 /* : Int */;
2304 val* var21 /* : NativeArray[Object] */;
2305 val* var22 /* : String */;
2306 val* var23 /* : null */;
2307 short int var24 /* : Bool */;
2308 short int var25 /* : Bool */;
2309 val* var26 /* : ToolContext */;
2310 val* var27 /* : null */;
2311 static val* varonce28;
2312 val* var29 /* : String */;
2313 char* var30 /* : NativeString */;
2314 long var31 /* : Int */;
2315 val* var32 /* : String */;
2316 static val* varonce33;
2317 val* var34 /* : String */;
2318 char* var35 /* : NativeString */;
2319 long var36 /* : Int */;
2320 val* var37 /* : String */;
2321 val* var38 /* : Array[Object] */;
2322 long var39 /* : Int */;
2323 val* var40 /* : NativeArray[Object] */;
2324 val* var41 /* : String */;
2325 val* var42 /* : null */;
2326 val* var43 /* : String */;
2327 val* var_module_path /* var module_path: String */;
2328 val* var44 /* : HashMap[String, AModule] */;
2329 val* var45 /* : Collection[Object] */;
2330 short int var46 /* : Bool */;
2331 val* var47 /* : HashMap[String, AModule] */;
2332 val* var48 /* : nullable Object */;
2333 val* var49 /* : String */;
2334 val* var50 /* : null */;
2335 short int var51 /* : Bool */;
2336 val* var52 /* : String */;
2337 static val* varonce53;
2338 val* var54 /* : String */;
2339 char* var55 /* : NativeString */;
2340 long var56 /* : Int */;
2341 val* var57 /* : String */;
2342 val* var_x /* var x: String */;
2343 val* var58 /* : ToolContext */;
2344 static val* varonce59;
2345 val* var60 /* : String */;
2346 char* var61 /* : NativeString */;
2347 long var62 /* : Int */;
2348 val* var63 /* : String */;
2349 static val* varonce64;
2350 val* var65 /* : String */;
2351 char* var66 /* : NativeString */;
2352 long var67 /* : Int */;
2353 val* var68 /* : String */;
2354 val* var69 /* : Array[Object] */;
2355 long var70 /* : Int */;
2356 val* var71 /* : NativeArray[Object] */;
2357 val* var72 /* : String */;
2358 long var73 /* : Int */;
2359 val* var74 /* : IFStream */;
2360 val* var_file /* var file: IFStream */;
2361 val* var75 /* : Lexer */;
2362 val* var76 /* : SourceFile */;
2363 val* var_lexer /* var lexer: Lexer */;
2364 val* var77 /* : Parser */;
2365 val* var_parser /* var parser: Parser */;
2366 val* var78 /* : Start */;
2367 val* var_tree /* var tree: Start */;
2368 val* var79 /* : nullable AModule */;
2369 val* var_nmodule /* var nmodule: nullable AModule */;
2370 val* var80 /* : null */;
2371 short int var81 /* : Bool */;
2372 val* var82 /* : EOF */;
2373 val* var_neof /* var neof: EOF */;
2374 short int var83 /* : Bool */;
2375 int cltype;
2376 int idtype;
2377 val* var84 /* : String */;
2378 val* var85 /* : null */;
2379 static val* varonce86;
2380 val* var87 /* : String */;
2381 char* var88 /* : NativeString */;
2382 long var89 /* : Int */;
2383 val* var90 /* : String */;
2384 val* var91 /* : String */;
2385 val* var_mod_name /* var mod_name: String */;
2386 val* var92 /* : nullable AModuledecl */;
2387 val* var_decl /* var decl: nullable AModuledecl */;
2388 val* var93 /* : null */;
2389 short int var94 /* : Bool */;
2390 val* var95 /* : AModuleName */;
2391 val* var96 /* : TId */;
2392 val* var97 /* : String */;
2393 val* var_decl_name /* var decl_name: String */;
2394 short int var98 /* : Bool */;
2395 val* var99 /* : AModuleName */;
2396 static val* varonce100;
2397 val* var101 /* : String */;
2398 char* var102 /* : NativeString */;
2399 long var103 /* : Int */;
2400 val* var104 /* : String */;
2401 static val* varonce105;
2402 val* var106 /* : String */;
2403 char* var107 /* : NativeString */;
2404 long var108 /* : Int */;
2405 val* var109 /* : String */;
2406 val* var110 /* : Array[Object] */;
2407 long var111 /* : Int */;
2408 val* var112 /* : NativeArray[Object] */;
2409 val* var113 /* : String */;
2410 val* var114 /* : MModule */;
2411 val* var115 /* : Model */;
2412 val* var116 /* : Location */;
2413 val* var_mmodule /* var mmodule: MModule */;
2414 val* var117 /* : Array[AModule] */;
2415 val* var118 /* : HashMap[MModule, AModule] */;
2416 val* var119 /* : HashMap[String, AModule] */;
2417 var_owner = p0;
2418 var_filename = p1;
2419 var1 = ((val* (*)(val*))(var_filename->class->vft[COLOR_file__String__file_extension]))(var_filename) /* file_extension on <var_filename:String>*/;
2420 if (varonce) {
2421 var2 = varonce;
2422 } else {
2423 var3 = "nit";
2424 var4 = 3;
2425 var5 = string__NativeString__to_s_with_length(var3, var4);
2426 var2 = var5;
2427 varonce = var2;
2428 }
2429 if (var1 == NULL) {
2430 var6 = 1; /* <var2:String> cannot be null */
2431 } else {
2432 var6 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___33d_61d]))(var1, var2) /* != on <var1:nullable String>*/;
2433 }
2434 if (var6){
2435 var7 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2436 var8 = NULL;
2437 if (varonce9) {
2438 var10 = varonce9;
2439 } else {
2440 var11 = "Error: file ";
2441 var12 = 12;
2442 var13 = string__NativeString__to_s_with_length(var11, var12);
2443 var10 = var13;
2444 varonce9 = var10;
2445 }
2446 if (varonce14) {
2447 var15 = varonce14;
2448 } else {
2449 var16 = " is not a valid nit module.";
2450 var17 = 27;
2451 var18 = string__NativeString__to_s_with_length(var16, var17);
2452 var15 = var18;
2453 varonce14 = var15;
2454 }
2455 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
2456 { /* var19 = array_instance Array[Object] */
2457 var20 = 3;
2458 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
2459 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var10;
2460 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var_filename;
2461 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
2462 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
2463 CHECK_NEW_array__Array(var19);
2464 }
2465 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
2466 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_toolcontext__ToolContext__error]))(var7, var8, var22) /* error on <var7:ToolContext>*/;
2467 var23 = NULL;
2468 var = var23;
2469 goto RET_LABEL;
2470 } else {
2471 }
2472 var24 = ((short int (*)(val*))(var_filename->class->vft[COLOR_file__String__file_exists]))(var_filename) /* file_exists on <var_filename:String>*/;
2473 var25 = !var24;
2474 if (var25){
2475 var26 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2476 var27 = NULL;
2477 if (varonce28) {
2478 var29 = varonce28;
2479 } else {
2480 var30 = "Error: file ";
2481 var31 = 12;
2482 var32 = string__NativeString__to_s_with_length(var30, var31);
2483 var29 = var32;
2484 varonce28 = var29;
2485 }
2486 if (varonce33) {
2487 var34 = varonce33;
2488 } else {
2489 var35 = " not found.";
2490 var36 = 11;
2491 var37 = string__NativeString__to_s_with_length(var35, var36);
2492 var34 = var37;
2493 varonce33 = var34;
2494 }
2495 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
2496 { /* var38 = array_instance Array[Object] */
2497 var39 = 3;
2498 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
2499 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var29;
2500 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_filename;
2501 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var34;
2502 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
2503 CHECK_NEW_array__Array(var38);
2504 }
2505 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
2506 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_toolcontext__ToolContext__error]))(var26, var27, var41) /* error on <var26:ToolContext>*/;
2507 var42 = NULL;
2508 var = var42;
2509 goto RET_LABEL;
2510 } else {
2511 }
2512 var43 = ((val* (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__module_absolute_path]))(self, var_filename) /* module_absolute_path on <self:ModelBuilder>*/;
2513 var_module_path = var43;
2514 var44 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__loaded_nmodules]))(self) /* loaded_nmodules on <self:ModelBuilder>*/;
2515 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__MapRead__keys]))(var44) /* keys on <var44:HashMap[String, AModule]>*/;
2516 var46 = ((short int (*)(val*, val*))(var45->class->vft[COLOR_abstract_collection__Collection__has]))(var45, var_module_path) /* has on <var45:Collection[Object](HashMapKeys[String, AModule])>*/;
2517 if (var46){
2518 var47 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__loaded_nmodules]))(self) /* loaded_nmodules on <self:ModelBuilder>*/;
2519 var48 = ((val* (*)(val*, val*))(var47->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var47, var_module_path) /* [] on <var47:HashMap[String, AModule]>*/;
2520 var = var48;
2521 goto RET_LABEL;
2522 } else {
2523 }
2524 var50 = NULL;
2525 if (var_owner == NULL) {
2526 var51 = 0; /* is null */
2527 } else {
2528 var51 = 1; /* arg is null and recv is not */
2529 }
2530 if (var51){
2531 var52 = ((val* (*)(val*))(var_owner->class->vft[COLOR_string__Object__to_s]))(var_owner) /* to_s on <var_owner:nullable MModule(MModule)>*/;
2532 var49 = var52;
2533 } else {
2534 if (varonce53) {
2535 var54 = varonce53;
2536 } else {
2537 var55 = ".";
2538 var56 = 1;
2539 var57 = string__NativeString__to_s_with_length(var55, var56);
2540 var54 = var57;
2541 varonce53 = var54;
2542 }
2543 var49 = var54;
2544 }
2545 var_x = var49;
2546 var58 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2547 if (varonce59) {
2548 var60 = varonce59;
2549 } else {
2550 var61 = "load module ";
2551 var62 = 12;
2552 var63 = string__NativeString__to_s_with_length(var61, var62);
2553 var60 = var63;
2554 varonce59 = var60;
2555 }
2556 if (varonce64) {
2557 var65 = varonce64;
2558 } else {
2559 var66 = " in ";
2560 var67 = 4;
2561 var68 = string__NativeString__to_s_with_length(var66, var67);
2562 var65 = var68;
2563 varonce64 = var65;
2564 }
2565 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
2566 { /* var69 = array_instance Array[Object] */
2567 var70 = 4;
2568 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
2569 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var60;
2570 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var_filename;
2571 ((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65;
2572 ((struct instance_array__NativeArray*)var71)->values[3] = (val*) var_x;
2573 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
2574 CHECK_NEW_array__Array(var69);
2575 }
2576 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
2577 var73 = 2;
2578 ((void (*)(val*, val*, long))(var58->class->vft[COLOR_toolcontext__ToolContext__info]))(var58, var72, var73) /* info on <var58:ToolContext>*/;
2579 var74 = NEW_file__IFStream(&type_file__IFStream);
2580 ((void (*)(val*, val*))(var74->class->vft[COLOR_file__IFStream__open]))(var74, var_filename) /* open on <var74:IFStream>*/;
2581 CHECK_NEW_file__IFStream(var74);
2582 var_file = var74;
2583 var75 = NEW_lexer__Lexer(&type_lexer__Lexer);
2584 var76 = NEW_location__SourceFile(&type_location__SourceFile);
2585 ((void (*)(val*, val*, val*))(var76->class->vft[COLOR_location__SourceFile__init]))(var76, var_filename, var_file) /* init on <var76:SourceFile>*/;
2586 CHECK_NEW_location__SourceFile(var76);
2587 ((void (*)(val*, val*))(var75->class->vft[COLOR_lexer__Lexer__init]))(var75, var76) /* init on <var75:Lexer>*/;
2588 CHECK_NEW_lexer__Lexer(var75);
2589 var_lexer = var75;
2590 var77 = NEW_parser__Parser(&type_parser__Parser);
2591 ((void (*)(val*, val*))(var77->class->vft[COLOR_parser__Parser__init]))(var77, var_lexer) /* init on <var77:Parser>*/;
2592 CHECK_NEW_parser__Parser(var77);
2593 var_parser = var77;
2594 var78 = ((val* (*)(val*))(var_parser->class->vft[COLOR_parser__Parser__parse]))(var_parser) /* parse on <var_parser:Parser>*/;
2595 var_tree = var78;
2596 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:IFStream>*/;
2597 var79 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_base]))(var_tree) /* n_base on <var_tree:Start>*/;
2598 var_nmodule = var79;
2599 var80 = NULL;
2600 if (var_nmodule == NULL) {
2601 var81 = 1; /* is null */
2602 } else {
2603 var81 = 0; /* arg is null but recv is not */
2604 }
2605 if (var81){
2606 var82 = ((val* (*)(val*))(var_tree->class->vft[COLOR_parser_nodes__Start__n_eof]))(var_tree) /* n_eof on <var_tree:Start>*/;
2607 var_neof = var82;
2608 /* <var_neof:EOF> isa AError */
2609 cltype = type_parser_nodes__AError.color;
2610 idtype = type_parser_nodes__AError.id;
2611 if(cltype >= var_neof->type->table_size) {
2612 var83 = 0;
2613 } else {
2614 var83 = var_neof->type->type_table[cltype] == idtype;
2615 }
2616 if (!var83) {
2617 fprintf(stderr, "Runtime error: %s", "Assert failed");
2618 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 398);
2619 exit(1);
2620 }
2621 var84 = ((val* (*)(val*))(var_neof->class->vft[COLOR_lexer__AError__message]))(var_neof) /* message on <var_neof:EOF(AError)>*/;
2622 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_neof, var84) /* error on <self:ModelBuilder>*/;
2623 var85 = NULL;
2624 var = var85;
2625 goto RET_LABEL;
2626 } else {
2627 }
2628 if (varonce86) {
2629 var87 = varonce86;
2630 } else {
2631 var88 = ".nit";
2632 var89 = 4;
2633 var90 = string__NativeString__to_s_with_length(var88, var89);
2634 var87 = var90;
2635 varonce86 = var87;
2636 }
2637 var91 = ((val* (*)(val*, val*))(var_filename->class->vft[COLOR_file__String__basename]))(var_filename, var87) /* basename on <var_filename:String>*/;
2638 var_mod_name = var91;
2639 var92 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_moduledecl]))(var_nmodule) /* n_moduledecl on <var_nmodule:nullable AModule(AModule)>*/;
2640 var_decl = var92;
2641 var93 = NULL;
2642 if (var_decl == NULL) {
2643 var94 = 1; /* is null */
2644 } else {
2645 var94 = 0; /* arg is null but recv is not */
2646 }
2647 if (var94){
2648 } else {
2649 var95 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on <var_decl:nullable AModuledecl(AModuledecl)>*/;
2650 var96 = ((val* (*)(val*))(var95->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var95) /* n_id on <var95:AModuleName>*/;
2651 var97 = ((val* (*)(val*))(var96->class->vft[COLOR_parser_nodes__Token__text]))(var96) /* text on <var96:TId>*/;
2652 var_decl_name = var97;
2653 var98 = ((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>*/;
2654 if (var98){
2655 var99 = ((val* (*)(val*))(var_decl->class->vft[COLOR_parser_nodes__AModuledecl__n_name]))(var_decl) /* n_name on <var_decl:nullable AModuledecl(AModuledecl)>*/;
2656 if (varonce100) {
2657 var101 = varonce100;
2658 } else {
2659 var102 = "Error: module name missmatch; declared ";
2660 var103 = 39;
2661 var104 = string__NativeString__to_s_with_length(var102, var103);
2662 var101 = var104;
2663 varonce100 = var101;
2664 }
2665 if (varonce105) {
2666 var106 = varonce105;
2667 } else {
2668 var107 = " file named ";
2669 var108 = 12;
2670 var109 = string__NativeString__to_s_with_length(var107, var108);
2671 var106 = var109;
2672 varonce105 = var106;
2673 }
2674 var110 = NEW_array__Array(&type_array__Arraykernel__Object);
2675 { /* var110 = array_instance Array[Object] */
2676 var111 = 4;
2677 var112 = NEW_array__NativeArray(var111, &type_array__NativeArraykernel__Object);
2678 ((struct instance_array__NativeArray*)var112)->values[0] = (val*) var101;
2679 ((struct instance_array__NativeArray*)var112)->values[1] = (val*) var_decl_name;
2680 ((struct instance_array__NativeArray*)var112)->values[2] = (val*) var106;
2681 ((struct instance_array__NativeArray*)var112)->values[3] = (val*) var_mod_name;
2682 ((void (*)(val*, val*, long))(var110->class->vft[COLOR_array__Array__with_native]))(var110, var112, var111) /* with_native on <var110:Array[Object]>*/;
2683 CHECK_NEW_array__Array(var110);
2684 }
2685 var113 = ((val* (*)(val*))(var110->class->vft[COLOR_string__Object__to_s]))(var110) /* to_s on <var110:Array[Object]>*/;
2686 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var99, var113) /* error on <self:ModelBuilder>*/;
2687 } else {
2688 }
2689 }
2690 var114 = NEW_model_base__MModule(&type_model_base__MModule);
2691 var115 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(self) /* model on <self:ModelBuilder>*/;
2692 var116 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__ANode__location]))(var_nmodule) /* location on <var_nmodule:nullable AModule(AModule)>*/;
2693 ((void (*)(val*, val*, val*, val*, val*))(var114->class->vft[COLOR_model_base__MModule__init]))(var114, var115, var_owner, var_mod_name, var116) /* init on <var114:MModule>*/;
2694 CHECK_NEW_model_base__MModule(var114);
2695 var_mmodule = var114;
2696 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule_61d]))(var_nmodule, var_mmodule) /* mmodule= on <var_nmodule:nullable AModule(AModule)>*/;
2697 var117 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__nmodules]))(self) /* nmodules on <self:ModelBuilder>*/;
2698 ((void (*)(val*, val*))(var117->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var117, var_nmodule) /* add on <var117:Array[AModule]>*/;
2699 var118 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(self) /* mmodule2nmodule on <self:ModelBuilder>*/;
2700 ((void (*)(val*, val*, val*))(var118->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var118, var_mmodule, var_nmodule) /* []= on <var118:HashMap[MModule, AModule]>*/;
2701 var119 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__loaded_nmodules]))(self) /* loaded_nmodules on <self:ModelBuilder>*/;
2702 ((void (*)(val*, val*, val*))(var119->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var119, var_module_path, var_nmodule) /* []= on <var119:HashMap[String, AModule]>*/;
2703 ((void (*)(val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__build_module_importation]))(self, var_nmodule) /* build_module_importation on <self:ModelBuilder>*/;
2704 var = var_nmodule;
2705 goto RET_LABEL;
2706 RET_LABEL:;
2707 return var;
2708 }
2709 /* method modelbuilder#ModelBuilder#load_module for (self: Object, nullable MModule, String): nullable AModule */
2710 val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0, val* p1) {
2711 val* var /* : nullable AModule */;
2712 val* var1 /* : nullable AModule */;
2713 var1 = modelbuilder__ModelBuilder__load_module(self, p0, p1);
2714 var = var1;
2715 RET_LABEL:;
2716 return var;
2717 }
2718 /* method modelbuilder#ModelBuilder#build_module_importation for (self: ModelBuilder, AModule) */
2719 void modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
2720 val* var_nmodule /* var nmodule: AModule */;
2721 short int var /* : Bool */;
2722 short int var1 /* : Bool */;
2723 val* var2 /* : nullable MModule */;
2724 val* var_mmodule /* var mmodule: MModule */;
2725 short int var3 /* : Bool */;
2726 short int var_stdimport /* var stdimport: Bool */;
2727 val* var4 /* : Array[MModule] */;
2728 val* var_imported_modules /* var imported_modules: Array[MModule] */;
2729 val* var5 /* : ANodes[AImport] */;
2730 val* var6 /* : Iterator[nullable Object] */;
2731 short int var7 /* : Bool */;
2732 val* var8 /* : nullable Object */;
2733 val* var_aimport /* var aimport: AImport */;
2734 short int var9 /* : Bool */;
2735 short int var10 /* : Bool */;
2736 int cltype;
2737 int idtype;
2738 short int var11 /* : Bool */;
2739 val* var12 /* : AModuleName */;
2740 val* var13 /* : TId */;
2741 val* var14 /* : String */;
2742 val* var_mod_name /* var mod_name: String */;
2743 val* var15 /* : AModuleName */;
2744 val* var16 /* : nullable MModule */;
2745 val* var_sup /* var sup: nullable MModule */;
2746 val* var17 /* : null */;
2747 short int var18 /* : Bool */;
2748 val* var19 /* : AVisibility */;
2749 val* var20 /* : MVisibility */;
2750 val* var_mvisibility /* var mvisibility: MVisibility */;
2751 val* var21 /* : MVisibility */;
2752 short int var22 /* : Bool */;
2753 val* var23 /* : AVisibility */;
2754 static val* varonce;
2755 val* var24 /* : String */;
2756 char* var25 /* : NativeString */;
2757 long var26 /* : Int */;
2758 val* var27 /* : String */;
2759 static val* varonce28;
2760 val* var29 /* : String */;
2761 char* var30 /* : NativeString */;
2762 long var31 /* : Int */;
2763 val* var32 /* : String */;
2764 val* var_mod_name33 /* var mod_name: String */;
2765 val* var34 /* : null */;
2766 val* var35 /* : nullable MModule */;
2767 val* var_sup36 /* var sup: nullable MModule */;
2768 val* var37 /* : null */;
2769 short int var38 /* : Bool */;
2770 val* var39 /* : MVisibility */;
2771 val* var40 /* : ToolContext */;
2772 static val* varonce41;
2773 val* var42 /* : String */;
2774 char* var43 /* : NativeString */;
2775 long var44 /* : Int */;
2776 val* var45 /* : String */;
2777 static val* varonce46;
2778 val* var47 /* : String */;
2779 char* var48 /* : NativeString */;
2780 long var49 /* : Int */;
2781 val* var50 /* : String */;
2782 val* var51 /* : String */;
2783 val* var52 /* : Array[Object] */;
2784 long var53 /* : Int */;
2785 val* var54 /* : NativeArray[Object] */;
2786 val* var55 /* : String */;
2787 long var56 /* : Int */;
2788 var_nmodule = p0;
2789 var = ((short int (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__is_importation_done]))(var_nmodule) /* is_importation_done on <var_nmodule:AModule>*/;
2790 if (var){
2791 goto RET_LABEL;
2792 } else {
2793 }
2794 var1 = 1;
2795 ((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>*/;
2796 var2 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
2797 if (var2 == NULL) {
2798 fprintf(stderr, "Runtime error: %s", "Cast failed");
2799 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 432);
2800 exit(1);
2801 }
2802 var_mmodule = var2;
2803 var3 = 1;
2804 var_stdimport = var3;
2805 var4 = NEW_array__Array(&type_array__Arraymodel_base__MModule);
2806 ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MModule]>*/;
2807 CHECK_NEW_array__Array(var4);
2808 var_imported_modules = var4;
2809 var5 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_parser_nodes__AModule__n_imports]))(var_nmodule) /* n_imports on <var_nmodule:AModule>*/;
2810 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:ANodes[AImport]>*/;
2811 for(;;) {
2812 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
2813 if(!var7) break;
2814 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
2815 var_aimport = var8;
2816 var9 = 0;
2817 var_stdimport = var9;
2818 /* <var_aimport:AImport> isa AStdImport */
2819 cltype = type_parser_nodes__AStdImport.color;
2820 idtype = type_parser_nodes__AStdImport.id;
2821 if(cltype >= var_aimport->type->table_size) {
2822 var10 = 0;
2823 } else {
2824 var10 = var_aimport->type->type_table[cltype] == idtype;
2825 }
2826 var11 = !var10;
2827 if (var11){
2828 goto CONTINUE_label;
2829 } else {
2830 }
2831 var12 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
2832 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_parser_nodes__AModuleName__n_id]))(var12) /* n_id on <var12:AModuleName>*/;
2833 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_parser_nodes__Token__text]))(var13) /* text on <var13:TId>*/;
2834 var_mod_name = var14;
2835 var15 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_name]))(var_aimport) /* n_name on <var_aimport:AImport(AStdImport)>*/;
2836 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>*/;
2837 var_sup = var16;
2838 var17 = NULL;
2839 if (var_sup == NULL) {
2840 var18 = 1; /* is null */
2841 } else {
2842 var18 = 0; /* arg is null but recv is not */
2843 }
2844 if (var18){
2845 goto CONTINUE_label;
2846 } else {
2847 }
2848 ((void (*)(val*, val*))(var_aimport->class->vft[COLOR_modelbuilder__AStdImport__mmodule_61d]))(var_aimport, var_sup) /* mmodule= on <var_aimport:AImport(AStdImport)>*/;
2849 ((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]>*/;
2850 var19 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on <var_aimport:AImport(AStdImport)>*/;
2851 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var19) /* mvisibility on <var19:AVisibility>*/;
2852 var_mvisibility = var20;
2853 var21 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:ModelBuilder>*/;
2854 var22 = ((short int (*)(val*, val*))(var_mvisibility->class->vft[COLOR_kernel__Object___61d_61d]))(var_mvisibility, var21) /* == on <var_mvisibility:MVisibility>*/;
2855 if (var22){
2856 var23 = ((val* (*)(val*))(var_aimport->class->vft[COLOR_parser_nodes__AStdImport__n_visibility]))(var_aimport) /* n_visibility on <var_aimport:AImport(AStdImport)>*/;
2857 if (varonce) {
2858 var24 = varonce;
2859 } else {
2860 var25 = "Error: only properties can be protected.";
2861 var26 = 40;
2862 var27 = string__NativeString__to_s_with_length(var25, var26);
2863 var24 = var27;
2864 varonce = var24;
2865 }
2866 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var23, var24) /* error on <self:ModelBuilder>*/;
2867 goto RET_LABEL;
2868 } else {
2869 }
2870 ((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model_base__MModule__set_visibility_for]))(var_mmodule, var_sup, var_mvisibility) /* set_visibility_for on <var_mmodule:MModule>*/;
2871 CONTINUE_label: (void)0;
2872 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
2873 }
2874 BREAK_label: (void)0;
2875 if (var_stdimport){
2876 if (varonce28) {
2877 var29 = varonce28;
2878 } else {
2879 var30 = "standard";
2880 var31 = 8;
2881 var32 = string__NativeString__to_s_with_length(var30, var31);
2882 var29 = var32;
2883 varonce28 = var29;
2884 }
2885 var_mod_name33 = var29;
2886 var34 = NULL;
2887 var35 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__get_mmodule_by_name]))(self, var_nmodule, var34, var_mod_name33) /* get_mmodule_by_name on <self:ModelBuilder>*/;
2888 var_sup36 = var35;
2889 var37 = NULL;
2890 if (var_sup36 == NULL) {
2891 var38 = 0; /* is null */
2892 } else {
2893 var38 = 1; /* arg is null and recv is not */
2894 }
2895 if (var38){
2896 ((void (*)(val*, val*))(var_imported_modules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_imported_modules, var_sup36) /* add on <var_imported_modules:Array[MModule]>*/;
2897 var39 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:ModelBuilder>*/;
2898 ((void (*)(val*, val*, val*))(var_mmodule->class->vft[COLOR_model_base__MModule__set_visibility_for]))(var_mmodule, var_sup36, var39) /* set_visibility_for on <var_mmodule:MModule>*/;
2899 } else {
2900 }
2901 } else {
2902 }
2903 var40 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2904 if (varonce41) {
2905 var42 = varonce41;
2906 } else {
2907 var43 = " imports ";
2908 var44 = 9;
2909 var45 = string__NativeString__to_s_with_length(var43, var44);
2910 var42 = var45;
2911 varonce41 = var42;
2912 }
2913 if (varonce46) {
2914 var47 = varonce46;
2915 } else {
2916 var48 = ", ";
2917 var49 = 2;
2918 var50 = string__NativeString__to_s_with_length(var48, var49);
2919 var47 = var50;
2920 varonce46 = var47;
2921 }
2922 var51 = ((val* (*)(val*, val*))(var_imported_modules->class->vft[COLOR_string__Collection__join]))(var_imported_modules, var47) /* join on <var_imported_modules:Array[MModule]>*/;
2923 var52 = NEW_array__Array(&type_array__Arraykernel__Object);
2924 { /* var52 = array_instance Array[Object] */
2925 var53 = 3;
2926 var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
2927 ((struct instance_array__NativeArray*)var54)->values[0] = (val*) var_mmodule;
2928 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var42;
2929 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var51;
2930 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
2931 CHECK_NEW_array__Array(var52);
2932 }
2933 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
2934 var56 = 3;
2935 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_toolcontext__ToolContext__info]))(var40, var55, var56) /* info on <var40:ToolContext>*/;
2936 ((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_model_base__MModule__set_imported_mmodules]))(var_mmodule, var_imported_modules) /* set_imported_mmodules on <var_mmodule:MModule>*/;
2937 RET_LABEL:;
2938 }
2939 /* method modelbuilder#ModelBuilder#build_module_importation for (self: Object, AModule) */
2940 void VIRTUAL_modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
2941 modelbuilder__ModelBuilder__build_module_importation(self, p0);
2942 RET_LABEL:;
2943 }
2944 /* method modelbuilder#ModelBuilder#nmodules for (self: ModelBuilder): Array[AModule] */
2945 val* modelbuilder__ModelBuilder__nmodules(val* self) {
2946 val* var /* : Array[AModule] */;
2947 val* var1 /* : Array[AModule] */;
2948 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val; /* @nmodules on <self:ModelBuilder> */
2949 if (var1 == NULL) {
2950 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @nmodules");
2951 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 464);
2952 exit(1);
2953 }
2954 var = var1;
2955 RET_LABEL:;
2956 return var;
2957 }
2958 /* method modelbuilder#ModelBuilder#nmodules for (self: Object): Array[AModule] */
2959 val* VIRTUAL_modelbuilder__ModelBuilder__nmodules(val* self) {
2960 val* var /* : Array[AModule] */;
2961 val* var1 /* : Array[AModule] */;
2962 var1 = modelbuilder__ModelBuilder__nmodules(self);
2963 var = var1;
2964 RET_LABEL:;
2965 return var;
2966 }
2967 /* method modelbuilder#ModelBuilder#nmodules= for (self: ModelBuilder, Array[AModule]) */
2968 void modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) {
2969 self->attrs[COLOR_modelbuilder__ModelBuilder___64dnmodules].val = p0; /* @nmodules on <self:ModelBuilder> */
2970 RET_LABEL:;
2971 }
2972 /* method modelbuilder#ModelBuilder#nmodules= for (self: Object, Array[AModule]) */
2973 void VIRTUAL_modelbuilder__ModelBuilder__nmodules_61d(val* self, val* p0) {
2974 modelbuilder__ModelBuilder__nmodules_61d(self, p0);
2975 RET_LABEL:;
2976 }
2977 /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: ModelBuilder): HashMap[MModule, AModule] */
2978 val* modelbuilder__ModelBuilder__mmodule2nmodule(val* self) {
2979 val* var /* : HashMap[MModule, AModule] */;
2980 val* var1 /* : HashMap[MModule, AModule] */;
2981 var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val; /* @mmodule2nmodule on <self:ModelBuilder> */
2982 if (var1 == NULL) {
2983 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule2nmodule");
2984 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 467);
2985 exit(1);
2986 }
2987 var = var1;
2988 RET_LABEL:;
2989 return var;
2990 }
2991 /* method modelbuilder#ModelBuilder#mmodule2nmodule for (self: Object): HashMap[MModule, AModule] */
2992 val* VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule(val* self) {
2993 val* var /* : HashMap[MModule, AModule] */;
2994 val* var1 /* : HashMap[MModule, AModule] */;
2995 var1 = modelbuilder__ModelBuilder__mmodule2nmodule(self);
2996 var = var1;
2997 RET_LABEL:;
2998 return var;
2999 }
3000 /* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: ModelBuilder, HashMap[MModule, AModule]) */
3001 void modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) {
3002 self->attrs[COLOR_modelbuilder__ModelBuilder___64dmmodule2nmodule].val = p0; /* @mmodule2nmodule on <self:ModelBuilder> */
3003 RET_LABEL:;
3004 }
3005 /* method modelbuilder#ModelBuilder#mmodule2nmodule= for (self: Object, HashMap[MModule, AModule]) */
3006 void VIRTUAL_modelbuilder__ModelBuilder__mmodule2nmodule_61d(val* self, val* p0) {
3007 modelbuilder__ModelBuilder__mmodule2nmodule_61d(self, p0);
3008 RET_LABEL:;
3009 }
3010 /* method modelbuilder#ModelBuilder#error for (self: ModelBuilder, ANode, String) */
3011 void modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) {
3012 val* var_n /* var n: ANode */;
3013 val* var_text /* var text: String */;
3014 val* var /* : ToolContext */;
3015 val* var1 /* : Location */;
3016 var_n = p0;
3017 var_text = p1;
3018 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3019 var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3020 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__error]))(var, var1, var_text) /* error on <var:ToolContext>*/;
3021 RET_LABEL:;
3022 }
3023 /* method modelbuilder#ModelBuilder#error for (self: Object, ANode, String) */
3024 void VIRTUAL_modelbuilder__ModelBuilder__error(val* self, val* p0, val* p1) {
3025 modelbuilder__ModelBuilder__error(self, p0, p1);
3026 RET_LABEL:;
3027 }
3028 /* method modelbuilder#ModelBuilder#warning for (self: ModelBuilder, ANode, String) */
3029 void modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) {
3030 val* var_n /* var n: ANode */;
3031 val* var_text /* var text: String */;
3032 val* var /* : ToolContext */;
3033 val* var1 /* : Location */;
3034 var_n = p0;
3035 var_text = p1;
3036 var = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3037 var1 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3038 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_toolcontext__ToolContext__warning]))(var, var1, var_text) /* warning on <var:ToolContext>*/;
3039 RET_LABEL:;
3040 }
3041 /* method modelbuilder#ModelBuilder#warning for (self: Object, ANode, String) */
3042 void VIRTUAL_modelbuilder__ModelBuilder__warning(val* self, val* p0, val* p1) {
3043 modelbuilder__ModelBuilder__warning(self, p0, p1);
3044 RET_LABEL:;
3045 }
3046 /* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: ModelBuilder, ANode, String, MClass, MModule): MMethod */
3047 val* modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
3048 val* var /* : MMethod */;
3049 val* var_n /* var n: ANode */;
3050 val* var_name /* var name: String */;
3051 val* var_recv /* var recv: MClass */;
3052 val* var_mmodule /* var mmodule: MModule */;
3053 val* var1 /* : nullable MMethod */;
3054 val* var_res /* var res: nullable MMethod */;
3055 val* var2 /* : null */;
3056 short int var3 /* : Bool */;
3057 val* var4 /* : ToolContext */;
3058 val* var5 /* : Location */;
3059 static val* varonce;
3060 val* var6 /* : String */;
3061 char* var7 /* : NativeString */;
3062 long var8 /* : Int */;
3063 val* var9 /* : String */;
3064 static val* varonce10;
3065 val* var11 /* : String */;
3066 char* var12 /* : NativeString */;
3067 long var13 /* : Int */;
3068 val* var14 /* : String */;
3069 static val* varonce15;
3070 val* var16 /* : String */;
3071 char* var17 /* : NativeString */;
3072 long var18 /* : Int */;
3073 val* var19 /* : String */;
3074 val* var20 /* : Array[Object] */;
3075 long var21 /* : Int */;
3076 val* var22 /* : NativeArray[Object] */;
3077 val* var23 /* : String */;
3078 var_n = p0;
3079 var_name = p1;
3080 var_recv = p2;
3081 var_mmodule = p3;
3082 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>*/;
3083 var_res = var1;
3084 var2 = NULL;
3085 if (var_res == NULL) {
3086 var3 = 1; /* is null */
3087 } else {
3088 var3 = 0; /* arg is null but recv is not */
3089 }
3090 if (var3){
3091 var4 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3092 var5 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__ANode__hot_location]))(var_n) /* hot_location on <var_n:ANode>*/;
3093 if (varonce) {
3094 var6 = varonce;
3095 } else {
3096 var7 = "Fatal Error: ";
3097 var8 = 13;
3098 var9 = string__NativeString__to_s_with_length(var7, var8);
3099 var6 = var9;
3100 varonce = var6;
3101 }
3102 if (varonce10) {
3103 var11 = varonce10;
3104 } else {
3105 var12 = " must have a property named ";
3106 var13 = 28;
3107 var14 = string__NativeString__to_s_with_length(var12, var13);
3108 var11 = var14;
3109 varonce10 = var11;
3110 }
3111 if (varonce15) {
3112 var16 = varonce15;
3113 } else {
3114 var17 = ".";
3115 var18 = 1;
3116 var19 = string__NativeString__to_s_with_length(var17, var18);
3117 var16 = var19;
3118 varonce15 = var16;
3119 }
3120 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
3121 { /* var20 = array_instance Array[Object] */
3122 var21 = 5;
3123 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
3124 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var6;
3125 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_recv;
3126 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var11;
3127 ((struct instance_array__NativeArray*)var22)->values[3] = (val*) var_name;
3128 ((struct instance_array__NativeArray*)var22)->values[4] = (val*) var16;
3129 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
3130 CHECK_NEW_array__Array(var20);
3131 }
3132 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
3133 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_toolcontext__ToolContext__fatal_error]))(var4, var5, var23) /* fatal_error on <var4:ToolContext>*/;
3134 fprintf(stderr, "Runtime error: %s", "Aborted");
3135 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 491);
3136 exit(1);
3137 } else {
3138 }
3139 var = var_res;
3140 goto RET_LABEL;
3141 RET_LABEL:;
3142 return var;
3143 }
3144 /* method modelbuilder#ModelBuilder#force_get_primitive_method for (self: Object, ANode, String, MClass, MModule): MMethod */
3145 val* VIRTUAL_modelbuilder__ModelBuilder__force_get_primitive_method(val* self, val* p0, val* p1, val* p2, val* p3) {
3146 val* var /* : MMethod */;
3147 val* var1 /* : MMethod */;
3148 var1 = modelbuilder__ModelBuilder__force_get_primitive_method(self, p0, p1, p2, p3);
3149 var = var1;
3150 RET_LABEL:;
3151 return var;
3152 }
3153 /* method modelbuilder#AStdImport#mmodule for (self: AStdImport): nullable MModule */
3154 val* modelbuilder__AStdImport__mmodule(val* self) {
3155 val* var /* : nullable MModule */;
3156 val* var1 /* : nullable MModule */;
3157 var1 = self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val; /* @mmodule on <self:AStdImport> */
3158 var = var1;
3159 RET_LABEL:;
3160 return var;
3161 }
3162 /* method modelbuilder#AStdImport#mmodule for (self: Object): nullable MModule */
3163 val* VIRTUAL_modelbuilder__AStdImport__mmodule(val* self) {
3164 val* var /* : nullable MModule */;
3165 val* var1 /* : nullable MModule */;
3166 var1 = modelbuilder__AStdImport__mmodule(self);
3167 var = var1;
3168 RET_LABEL:;
3169 return var;
3170 }
3171 /* method modelbuilder#AStdImport#mmodule= for (self: AStdImport, nullable MModule) */
3172 void modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) {
3173 self->attrs[COLOR_modelbuilder__AStdImport___64dmmodule].val = p0; /* @mmodule on <self:AStdImport> */
3174 RET_LABEL:;
3175 }
3176 /* method modelbuilder#AStdImport#mmodule= for (self: Object, nullable MModule) */
3177 void VIRTUAL_modelbuilder__AStdImport__mmodule_61d(val* self, val* p0) {
3178 modelbuilder__AStdImport__mmodule_61d(self, p0);
3179 RET_LABEL:;
3180 }
3181 /* method modelbuilder#AModule#mmodule for (self: AModule): nullable MModule */
3182 val* modelbuilder__AModule__mmodule(val* self) {
3183 val* var /* : nullable MModule */;
3184 val* var1 /* : nullable MModule */;
3185 var1 = self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val; /* @mmodule on <self:AModule> */
3186 var = var1;
3187 RET_LABEL:;
3188 return var;
3189 }
3190 /* method modelbuilder#AModule#mmodule for (self: Object): nullable MModule */
3191 val* VIRTUAL_modelbuilder__AModule__mmodule(val* self) {
3192 val* var /* : nullable MModule */;
3193 val* var1 /* : nullable MModule */;
3194 var1 = modelbuilder__AModule__mmodule(self);
3195 var = var1;
3196 RET_LABEL:;
3197 return var;
3198 }
3199 /* method modelbuilder#AModule#mmodule= for (self: AModule, nullable MModule) */
3200 void modelbuilder__AModule__mmodule_61d(val* self, val* p0) {
3201 self->attrs[COLOR_modelbuilder__AModule___64dmmodule].val = p0; /* @mmodule on <self:AModule> */
3202 RET_LABEL:;
3203 }
3204 /* method modelbuilder#AModule#mmodule= for (self: Object, nullable MModule) */
3205 void VIRTUAL_modelbuilder__AModule__mmodule_61d(val* self, val* p0) {
3206 modelbuilder__AModule__mmodule_61d(self, p0);
3207 RET_LABEL:;
3208 }
3209 /* method modelbuilder#AModule#is_importation_done for (self: AModule): Bool */
3210 short int modelbuilder__AModule__is_importation_done(val* self) {
3211 short int var /* : Bool */;
3212 short int var1 /* : Bool */;
3213 var1 = self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s; /* @is_importation_done on <self:AModule> */
3214 var = var1;
3215 RET_LABEL:;
3216 return var;
3217 }
3218 /* method modelbuilder#AModule#is_importation_done for (self: Object): Bool */
3219 short int VIRTUAL_modelbuilder__AModule__is_importation_done(val* self) {
3220 short int var /* : Bool */;
3221 short int var1 /* : Bool */;
3222 var1 = modelbuilder__AModule__is_importation_done(self);
3223 var = var1;
3224 RET_LABEL:;
3225 return var;
3226 }
3227 /* method modelbuilder#AModule#is_importation_done= for (self: AModule, Bool) */
3228 void modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) {
3229 self->attrs[COLOR_modelbuilder__AModule___64dis_importation_done].s = p0; /* @is_importation_done on <self:AModule> */
3230 RET_LABEL:;
3231 }
3232 /* method modelbuilder#AModule#is_importation_done= for (self: Object, Bool) */
3233 void VIRTUAL_modelbuilder__AModule__is_importation_done_61d(val* self, short int p0) {
3234 modelbuilder__AModule__is_importation_done_61d(self, p0);
3235 RET_LABEL:;
3236 }
3237 /* method modelbuilder#AVisibility#mvisibility for (self: AVisibility): MVisibility */
3238 val* modelbuilder__AVisibility__mvisibility(val* self) {
3239 val* var /* : MVisibility */;
3240 const char* var_class_name;
3241 var_class_name = self == NULL ? "null" : self->type->name;
3242 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "mvisibility", var_class_name);
3243 fprintf(stderr, " (%s:%d)\n", "src/modelbuilder.nit", 510);
3244 exit(1);
3245 RET_LABEL:;
3246 return var;
3247 }
3248 /* method modelbuilder#AVisibility#mvisibility for (self: Object): MVisibility */
3249 val* VIRTUAL_modelbuilder__AVisibility__mvisibility(val* self) {
3250 val* var /* : MVisibility */;
3251 val* var1 /* : MVisibility */;
3252 var1 = modelbuilder__AVisibility__mvisibility(self);
3253 var = var1;
3254 RET_LABEL:;
3255 return var;
3256 }
3257 /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: AIntrudeVisibility): MVisibility */
3258 val* modelbuilder__AIntrudeVisibility__mvisibility(val* self) {
3259 val* var /* : MVisibility */;
3260 val* var1 /* : MVisibility */;
3261 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__intrude_visibility]))(self) /* intrude_visibility on <self:AIntrudeVisibility>*/;
3262 var = var1;
3263 goto RET_LABEL;
3264 RET_LABEL:;
3265 return var;
3266 }
3267 /* method modelbuilder#AIntrudeVisibility#mvisibility for (self: Object): MVisibility */
3268 val* VIRTUAL_modelbuilder__AIntrudeVisibility__mvisibility(val* self) {
3269 val* var /* : MVisibility */;
3270 val* var1 /* : MVisibility */;
3271 var1 = modelbuilder__AIntrudeVisibility__mvisibility(self);
3272 var = var1;
3273 RET_LABEL:;
3274 return var;
3275 }
3276 /* method modelbuilder#APublicVisibility#mvisibility for (self: APublicVisibility): MVisibility */
3277 val* modelbuilder__APublicVisibility__mvisibility(val* self) {
3278 val* var /* : MVisibility */;
3279 val* var1 /* : MVisibility */;
3280 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:APublicVisibility>*/;
3281 var = var1;
3282 goto RET_LABEL;
3283 RET_LABEL:;
3284 return var;
3285 }
3286 /* method modelbuilder#APublicVisibility#mvisibility for (self: Object): MVisibility */
3287 val* VIRTUAL_modelbuilder__APublicVisibility__mvisibility(val* self) {
3288 val* var /* : MVisibility */;
3289 val* var1 /* : MVisibility */;
3290 var1 = modelbuilder__APublicVisibility__mvisibility(self);
3291 var = var1;
3292 RET_LABEL:;
3293 return var;
3294 }
3295 /* method modelbuilder#AProtectedVisibility#mvisibility for (self: AProtectedVisibility): MVisibility */
3296 val* modelbuilder__AProtectedVisibility__mvisibility(val* self) {
3297 val* var /* : MVisibility */;
3298 val* var1 /* : MVisibility */;
3299 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__protected_visibility]))(self) /* protected_visibility on <self:AProtectedVisibility>*/;
3300 var = var1;
3301 goto RET_LABEL;
3302 RET_LABEL:;
3303 return var;
3304 }
3305 /* method modelbuilder#AProtectedVisibility#mvisibility for (self: Object): MVisibility */
3306 val* VIRTUAL_modelbuilder__AProtectedVisibility__mvisibility(val* self) {
3307 val* var /* : MVisibility */;
3308 val* var1 /* : MVisibility */;
3309 var1 = modelbuilder__AProtectedVisibility__mvisibility(self);
3310 var = var1;
3311 RET_LABEL:;
3312 return var;
3313 }
3314 /* method modelbuilder#APrivateVisibility#mvisibility for (self: APrivateVisibility): MVisibility */
3315 val* modelbuilder__APrivateVisibility__mvisibility(val* self) {
3316 val* var /* : MVisibility */;
3317 val* var1 /* : MVisibility */;
3318 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:APrivateVisibility>*/;
3319 var = var1;
3320 goto RET_LABEL;
3321 RET_LABEL:;
3322 return var;
3323 }
3324 /* method modelbuilder#APrivateVisibility#mvisibility for (self: Object): MVisibility */
3325 val* VIRTUAL_modelbuilder__APrivateVisibility__mvisibility(val* self) {
3326 val* var /* : MVisibility */;
3327 val* var1 /* : MVisibility */;
3328 var1 = modelbuilder__APrivateVisibility__mvisibility(self);
3329 var = var1;
3330 RET_LABEL:;
3331 return var;
3332 }